# Orion Drift Legacy Launcher

Run old versions of Orion Drift

## Dependencies
- Python 3

## Get started

<details>
   <summary>Windows instructions:</summary>

   <br>
   
**Install:**

1. Install pipx

   `pip install --user pipx`

2. Add pipx to PATH

   `py -m pipx ensurepath`

3. Reopen command prompt

4. Install legacy launcher

   `pipx install a2-legacy-launcher`

5. Provide a CL, Build number or Version code to install

   Example: `a2ll 5491`

   All old versions can be found here: https://dl.obelous.dev/public/A2-archive/
   
   Or by running `a2ll -ls`
</details>

<details>
   <summary>Debian instructions:</summary>
   
   <br>
   
   **Install:**

1. Insall pipx

   `sudo apt install pipx`

2. Add pipx to PATH

   `pipx ensurepath`

3. Install java

   `sudo apt install openjdk-21-jdk`

4. Install legacy launcher

   `pipx install a2-legacy-launcher`

5. Provide a CL, Build number or Version code to install

   Example: `a2ll 5491`

   All old versions can be found here: https://dl.obelous.dev/public/A2-archive/
   
   Or by running `a2ll -ls`

</details>

<details>
   <summary>Quest instructions</summary>
   
   <br>
   
   **Install:**

1. Connect to a computer or [android phone](https://sisik.eu/bugjaeger)

   Run `adb tcpip 5555`

3. Install termux

   [Termux APK](https://github.com/termux/termux-app/releases/download/v0.118.3/termux-app_v0.118.3+github-debug_arm64-v8a.apk)

4. Run the helper script in termux

   ```
   curl -L https://obelous.dev/a2ll.sh | bash
   ```

</details>

## Usage

```
usage: a2ll [-h] [-v] [-a APK] [-o OBB] [-i INI] [-c COMMANDLINE] [-so SO] [-rn] [-p] [-rm] [-l] [-ls] [-op] [-sp] [-sk] [-cc] [download]

A2 Legacy Launcher 1.1.0

positional arguments:
  download              Build version to download and install -

options:
  -h, --help            show this help message and exit
  -v, --version         show program's version number and exit
  -a APK, --apk APK     Path/URL to an APK file
  -o OBB, --obb OBB     Path/URL to an OBB file
  -i INI, --ini INI     Path/URL/Preset for Engine.ini
                        Presets: Engine.ini, EngineVegas.ini, Engine4v4.ini, EngineNetworked.ini, EnginePlayerstart.ini
  -c COMMANDLINE, --commandline COMMANDLINE
                        Launch arguments for A2
  -so SO, --so SO       Inject a custom .so file
  -rn, --rename         Rename the package for parallel installs
  -p, --patch           Remove entitlement check from libUnreal.so
  -rm, --remove         Uninstall all versions
  -l, --logs            Pull game logs from the headset
  -ls, --list           List available versions
  -op, --open           Launch the game once finished
  -sp, --strip          Strip permissions to skip pompts on first launch
  -sk, --skipdecompile  Reuse previously decompiled files
  -cc, --clearcache     Delete cached downloads
```

#### Extra context:

- `--clearcache` When providing a URL to the APK OBB or INI argument the script downloads and caches the file, to free up storage and delete cached downloads run the script with this argument.

- `--skipdecompile` When iterating on a single version you may wish to skip the decopilation step to save time by using the previously decompiled files, this also allows for manual modification of game files.

- `--rename` This renames the package to com.LegacyLauncher.A2 to allow for multiple versions to be installed at once, but it must be used in conjunction with `-c="-useinsecure"` on a version where this argument exists.

   > If a renamed version is installed the `--log` argument can be used with `--rename` to pull the logs of the renamed app.

- `--commandline` Various features can be unlocked through the use of commandline options, for example: `-c="-loadreplay=../../../A2/Content/Replays/Quests/1DE99EFE4BF8C9948F487DA231824A75.a2replay` or `-c="-nullrhi"`

- `--ini` Supports local path, url and these presets `-i Engine.ini`, `-i EngineVegas.ini`, `-i Engine4V4.ini`, `-i EngineNetworked.ini` however nearly all builds use Engine.ini

   > --ini is unique because it can be ran on its own without rebuilding or reinstalling to almost instantly swap out an ini file

## Comaptibility:

**ALL** Known versions can be made to run

However: Versions **11235 - 23189** cannot be renamed

For newer versions renaming relies on byte-pattern matching, so each new release requires addition of a corresponding pattern to this script.
