Pre-release quality. Built from
mainfor early testing and feedback. Expect rough
edges — crashes, audio glitches, and missing native translations are still the rule, not
the exception. Please open issues rather than running off the latest commit silently.
⚠️ You must supply your own ROM
This release contains no game assets or code from the original cartridge. It ships
only the recompiled executable. To play, you must obtain a legal copy of
Automobili Lamborghini (USA).z64 (the North American release is the only one
supported) and place it next to the executable before launching. See BUILDING.md
for the full instructions; in brief:
- Extract the archive for your platform into its own folder.
- Drop
Automobili Lamborghini (USA).z64into that folder. - Launch the binary.
Game saves go alongside the ROM (or under %LOCALAPPDATA%\LamborghiniRecomp on
Windows / ~/.config/LamborghiniRecomp elsewhere — see README.md).
What's working
This release's headline is the first published Android ARM64 APK. v0.7.0 shipped the
Android port code but no APK: the Build & Release workflow's Android job was gated on four
ANDROID_* signing secrets that were never configured, so it skipped the APK path and
published the desktop archives only. Those secrets are now set — the keystore lives under
%LOCALAPPDATA%\LamborghiniRecomp\Signing\lamborghini-release.jks with a DPAPI-encrypted
password backup beside it — and the Android job is now required: a missing secret
blocks the whole release instead of silently shipping without the APK, matching the model
aerogauge-recomp adopted. See docs/ANDROID.md for the one-time setup and the
re-deployable -ConfigureSecretsOnly recovery path.
Getting the APK to actually build took four integration-build fixes, each one exposed by
the fix before it. Per-PR CI never compiles Android, so these only surfaced in dispatch
runs: the workflow now overrides android-actions/setup-android@v3's deprecated tools
package (PR #217), recompui resolves SDL2 through the installed <SDL2/...> header tree
(PR #218), the Android platform is pinned to API 28 so the NDK declares aligned_alloc
(PR #221), and recompui's file dialogs no longer reference Native File Dialog Extended on
Android (PR #222 — the fix in this build). None of it touches game behavior: the Linux and
Windows binaries are the same as v0.7.0.
There's still glitches so please report issues you find.
Closed since v0.7.0:
Release packaging / CI
- PR #216 — Android signing is now required for a release.
scripts/setup_android_signing.ps1generates a persistent release keystore, encrypts a DPAPI backup of its password, and sets all fourANDROID_*repository secrets viagh secret set;-ConfigureSecretsOnlyre-uploads them from the backup without regenerating keys, and a failed run leaves a clean directory. The workflow validates all six release prerequisites (four signing secrets plus both ROM-asset secrets) in its first step, fails fast on missing config, never substitutes a debug key, and materialises the keystore on disk only immediately before the APK build. - PR #217 —
android-actions/setup-android@v3no longer fails on the deprecatedtoolssdkmanager package: the workflow installs onlyplatform-tools(allscripts/build_android.py --installneeds), sincecmdline-toolsships with the action itself.
Android integration build
- PR #218 —
recompuinow links the SDL2 target on Android so it compiles against the generated<SDL2/...>header tree, which the flat sourceinclude/directory cannot satisfy (docs/ANDROID.md). - PR #221 — The Android platform target is raised to API 28 so the NDK declares
aligned_alloc; the port also documents Android 9 as the minimum in docs/ANDROID.md. - PR #222 — The Android link no longer fails on undefined
NFD_OpenDialogN/NFD_FreePathN/NFD_PathSet_*symbols. Native File Dialog Extended has no Android backend, and the Android build already drops rt64'snfdtarget and its link (patch 0013); the port now guardsrecompui's own NFD-backed dialogs too and reports a cancelled selection on Android. The Activity imports the ROM and GPU driver through the Storage Access Framework picker, so the in-app dialogs are not reachable there (patches/README.md).
What's not done yet
This is still pre-1.0 — plenty of force_stub.txt still includes real game primitives
rather than no-ops. The tracker is the canonical "what's next" list.
- Android device coverage — only Qualcomm Adreno with an AdrenoTools-compatible Mesa Turnip driver has been exercised; Mali and other GPUs remain explicitly out of scope. The recompui file dialogs are unavailable on Android by design — the Activity owns ROM and GPU-driver import.
If you find a crash, please open an issue with lamborghini_crash style notes:
- Output window text (or the
crash-*.txtdump if the native handler caught it) - Commit / build provenance (below)
- Approximate in-game location (title screen / car-select / race lap 2 / etc.)
How to run
Linux
unzip lamborghini-recomp-linux-x64.zip -d lamborghini-recomp
cp "Automobili Lamborghini (USA).z64" lamborghini-recomp/
./lamborghini-recomp/lamborghini_modernRequires libsdl2-2.0-0 and a Vulkan-capable GPU + driver at runtime. Most
desktop distros ship these already.
Windows
Extract lamborghini-recomp-windows-x64.zip anywhere, drop your ROM in the same
folder, and double-click lamborghini_modern.exe. The bundled SDL2.dll,
dxcompiler.dll, and dxil.dll must stay alongside the EXE.
F11 / Alt+Enter toggles fullscreen (and remembers the choice next launch).
Android
lamborghini-recomp-android-arm64.apk — install it, then import your USA ROM through the
launcher's file picker (no broad storage permission is needed). The APK contains no ROM;
the complete cartridge is validated before it replaces an existing import, and importing
a ROM does not replace your saves. Vulkan on Qualcomm Adreno uses Mesa Turnip when the
system driver lacks the required features (see docs/ANDROID.md for the Turnip
ZIP import path). Minimum OS: Android 9. The GPU driver must support Vulkan 1.1,
descriptor indexing, and scalar block layout — a Vulkan version number alone does not
guarantee compatibility.
Build provenance
- Commit:
73e391c(main, 2026-09-21) - Workflow run: #35596143180 (Build & Release, dispatch from this SHA)
- Toolchain: Linux build on
ubuntu-latestwith gcc / cmake / ninja /
libsdl2-dev/libvulkan-dev. Windows build onwindows-latestwith
MinGW-w64 GCC + Ninja (PowerShell, not MSYS bash) per the project's toolchain
notes. Android target onubuntu-latestwith the Android NDK + Gradle.
If you'd rather build it yourself from source instead of running a pre-built
binary, see BUILDING.md. For graphics settings, see README.md.