github alondero/automobililamborghini-recomp v0.7.2
Automobili Lamborghini Recompiled v0.7.2

4 hours ago

Pre-release quality. Built from main for 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:

  1. Extract the archive for your platform into its own folder.
  2. Drop Automobili Lamborghini (USA).z64 into that folder.
  3. 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.ps1 generates a persistent release keystore, encrypts a DPAPI backup of its password, and sets all four ANDROID_* repository secrets via gh secret set; -ConfigureSecretsOnly re-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 #217android-actions/setup-android@v3 no longer fails on the deprecated tools sdkmanager package: the workflow installs only platform-tools (all scripts/build_android.py --install needs), since cmdline-tools ships with the action itself.

Android integration build

  • PR #218recompui now links the SDL2 target on Android so it compiles against the generated <SDL2/...> header tree, which the flat source include/ 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's nfd target and its link (patch 0013); the port now guards recompui'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-*.txt dump 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_modern

Requires 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-latest with gcc / cmake / ninja /
    libsdl2-dev / libvulkan-dev. Windows build on windows-latest with
    MinGW-w64 GCC + Ninja (PowerShell, not MSYS bash) per the project's toolchain
    notes. Android target on ubuntu-latest with 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.

Don't miss a new automobililamborghini-recomp release

NewReleases is sending notifications on new releases.