Orta Recompiled - Android
Orta Recompiled Android is an experimental port of Panzer Dragoon Orta that compiles the game on your device with touch controls or a gamepad.
- Type: PC port
- Game: Panzer Dragoon Orta
- Runs on Android
- By almost-drowned-rat
- Latest release v0.1.1, 2026-11-13
- Source: https://github.com/almost-drowned-rat/Orta-Recompiled-Android
README
Orta Recompiled - Android
An experimental Android port of Orta Recompiled, the static recompilation of Panzer Dragoon Orta (Xbox, Europe / PAL). One app: you pick your own disc image, the game is translated and compiled on your device once, and then it plays - with touch controls or a gamepad.
This project contains no game data, no game code and no keys. You need your own copy of the game (PAL disc image). The app never contains any of the game's code: it is built on your device from your own disc.
AI disclosure: AI assistance yes (Claude Code by Anthropic).
Just a small experiment. This port was a small experiment to see how - and whether at all - the game would run on Android. It is not a finished release and it is not supported the way the PC version is.
I am sorry for everyone whose device has no Vulkan 1.3 and cannot use a Turnip driver either: the game needs one of the two, and on those devices it will not run. There is nothing I can do about that from the app's side.
A Turnip driver is required. Use the app with a Turnip driver (Mesa's open Vulkan driver for Adreno GPUs), not with the phone's own driver: the system drivers showed graphics glitches or were too old. Tested with purple-turnip T30 -
turnip_mrpurple_T30-toasted.adpkg.zip(Mesa Turnip 26.3.0, Vulkan 1.4.359, by MrPurple666). Download that file to your device and choose it in the app (see How it works). The driver is not part of the app.
Only tested on Snapdragon. I only have Android devices with a Snapdragon 8 Gen 1 and a Snapdragon 8 Gen 2 (Adreno 730 / 740), so I cannot test any other chip (Exynos, Tensor, MediaTek / Mali, older Snapdragons). And since this is just a small experiment, I will probably not put as much work into it as into the other ports.
Status
v0.1.1 (experimental) - based on v1.1.1 of the Windows / Linux port (Orta-Recompiled). The Android port has its own version numbers. Download the APK from Releases and install it (Android 10+, arm64). It is signed with the project's own key - every later update installs over it.
Tested on:
| Device | Chip / GPU | Driver | Result |
|---|---|---|---|
| AYN Odin 2 Portal | Snapdragon 8 Gen 2 / Adreno 740 | purple-turnip T30 | runs, borderless, built-in controls work (the system driver, Vulkan 1.3.128 on Android 13: graphics glitches) |
| Samsung Galaxy Tab S8 | Snapdragon 8 Gen 1 / Adreno 730 | purple-turnip T30 | v0.1.1: runs, 60 fps with MSAA 4x and bloom in the title's real-time demo (the system driver offers only Vulkan 1.1) |
| Samsung Galaxy S23 | Snapdragon 8 Gen 2 / Adreno 740 | system driver (Vulkan 1.3) | ran in the first tests, ~60 fps; use Turnip T30 here too |
Requirements
- Android 10 or newer, arm64 (64-bit ARM)
- An Adreno GPU and a Turnip driver package (
.adpkg.zip) - required; tested with purple-turnip T30 (link above). Without Turnip the game needs a system driver with Vulkan 1.3, and even then it may show graphics glitches. No driver is shipped with the app. - Your own Panzer Dragoon Orta (Europe) disc image (
.iso) - Free storage: about 7 GB during the first start (the image is copied in and extracted), about 3.5 GB after it
How it works
- Install the app and start it.
- Choose the Turnip driver package (
turnip_mrpurple_T30-toasted.adpkg.zipfrom your Download folder - with adb:adb push turnip_mrpurple_T30-toasted.adpkg.zip /sdcard/Download/): the app asks for it on devices whose own driver is too old; on all others open BACK > Graphics driver > Change driver once the game runs. The app restarts with Turnip. BACK > Graphics driver > System driver goes back at any time. - Choose your disc image in the system file picker. It is copied into the app and extracted (the copy is deleted afterwards; your own file stays where it is).
- The game's code is translated and compiled on the device - once, about 8-10 minutes. Keep the screen on.
- The game starts. Every later start goes straight into the game.
Frame rate at first: while you play, the frame rate drops now and then at the beginning and gets better the longer you play. That is the shader compilation: every new effect, scene or menu needs its shaders built once on the device, and they are cached for the next time. After a while (and on every later start) it runs much smoother.
Your files - saves and media: they live in the app's folder in shared storage, reachable with adb or a file
manager (one that shows Android/data):
/storage/emulated/0/Android/data/io.github.almostdrownedrat.orta/files/
saves/ your saves + settings.ini
media/ boot.mpg (your own boot animation)
Back up your saves with adb pull /sdcard/Android/data/io.github.almostdrownedrat.orta/files/saves.
Uninstalling the app deletes this folder too - back up first. The game itself (translated and compiled from your
disc) stays in the app's internal storage.
Boot animation (optional): your own boot.mpg (MPEG-1 video + MP2 audio, like the PC port) plays before the
title. Either BACK > Boot animation > Import file..., or copy it with adb:
adb push boot.mpg /sdcard/Android/data/io.github.almostdrownedrat.orta/files/media/. Turn it on / off in the game:
OPTIONS > RECOMP OPTIONS > BOOT ANIMATION. BACK > Boot animation > None removes it again.
Controls
- Touch: a floating stick on the left, A B X Y, WHITE / BLACK, LT / RT and START. BACK, L3 / R3, the D-pad and a right stick exist too, hidden by default.
- Gamepads work out of the box. With the touch buttons on Automatic they hide while a gamepad is used. Every controller plays as player 1 (the game is single-player), so a handheld's own controls, a touch pad and an external pad all work at the same time.
- BACK opens a menu that slides in from the left (the game keeps running behind it):
- Controls - touch buttons on / off / automatic, the connected controllers, move and resize the touch buttons, button size, hide single buttons, opacity, stick sensitivity, reset the layout
- Graphics driver - the system driver, or change to a Turnip package; switch at any time
- Boot animation - none, or import your boot.mpg
- About and licences
Building
The APK is built on Linux with tools/build_android.sh (Android SDK 36, NDK r30, JDK 21, Gradle 9.9.1; the script
lists every path it reads as environment variables). It needs the toolkit,
xboxrecomp-option-c v1.1.1 (the
exact toolkit source inside the app), and its Android runtime SDK and on-device compiler, made by the toolkit's
tools/android scripts (Linux and Android changes: its docs/option_c.md, section 7). The release APK is signed with
the project's own release key; tools/build_android.sh --release expects it outside the repository.
Licence
GPL-3.0-or-later (see LICENSE). Third-party parts the app uses: SDL3 (zlib), CPython (PSF), capstone (BSD-3),
libadrenotools (BSD-2), LLVM / clang / lld (Apache-2.0 with LLVM exception), the xboxrecomp toolkit (MIT, with
LGPL-2.1 parts from xemu); origins in docs/sources.md. A Turnip driver (Mesa, MIT) is never shipped - you choose it.
Panzer Dragoon Orta is a trademark of SEGA. This project is not affiliated with or endorsed by SEGA or Microsoft.