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

3 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 and optional replacement artwork. 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

The headline of this release is Android stability on Adreno tablets: a Samsung
Galaxy Tab S5e (Adreno 615) now reaches an attract race with the default graphics
settings instead of losing the device during startup, the Vulkan validation errors on
that driver are gone, and the attract race runs at 29 to 30 fps instead of 20. Seven
pull requests have landed on main since v0.10.0: four Android fixes, one Android
performance fix, a redesigned touch overlay and one mod-loader fix.

There's still glitches so please report issues you find.

Closed since v0.10.0:

Android — startup and driver faults

  • PR #346 — a descriptor-pool exhaustion during startup now recovers instead of crashing. The diagnostic exports in #329 show three vkAllocateDescriptorSets failures with VK_ERROR_OUT_OF_POOL_MEMORY followed by a native crash, because some Adreno drivers charge a variable binding's layout capacity against a pool sized for the requested count. Patch 0041 keeps the small pool on the first attempt and, only on that error with a count below the layout capacity, recreates the pool at the layout capacity and retries the same allocation once. A persistent failure now stops immediately with a flushed diagnostic instead of continuing with a failed descriptor set.
  • #345 / PR #352 — the Adreno 615 system driver no longer loses the device during startup. Automatic resolution is now capped at 2x on that exact driver (vendor 0x5143, version 0x801f6000, name Adreno (TM) 615), where the window-sized scale previously killed the device; the tested tablet now reaches an attract race with the default graphics settings. Patch 0042 applies the limit only to that measured driver, so Turnip and manually chosen resolutions keep their existing behaviour. This is a measured workaround: the driver's internal fault is still unverified.
  • #350 / PR #354 — the remaining Vulkan validation errors on the Adreno system driver are cleared. Three were left: clear rectangles one pixel wider than the render target (patch 0043), non-uniform texture indexing declared on drivers without descriptor indexing (patch 0044), and the settings overlay using BGRA instead of the Android swap-chain format (patch 0045). The previous debug APK reported 102, 51, 2 and 2065 validation messages of these kinds; the patched APK reported none. The shader change is safe for this game because it never enables N64 texture LOD, so every pixel of a draw uses the same texture index.
  • #351 / PR #353 — preparing the Android sources twice in a row works again. The shared CMake patches change the RT64 script prefix's context, so a second preparation rejected the already-composed patch series. Preparation now validates composed prefixes in a temporary Git index and applies only the missing Android-owned patches, leaving your working tree and index untouched.

Android — performance

  • PR #348 — the attract race on a Galaxy Tab S5e presents 29 to 30 fps instead of 20. The bottleneck was frame pacing, not the GPU: RDP completion was reported at the first VI after the display list was sent, and the tablet's roughly 21 ms submission always missed the next retrace, so every frame waited for a third. The new completion pacer signals within about 1 ms of the renderer finishing once that retrace has passed, and the main loop waits up to 1 ms for an external message when the retrace and controller queues are empty, which cut the involuntary core pre-emptions per frame from 14 to 1 and raised the frames completed in two VIs from 1 of 105 to 156 of 157. Desktop pacing is unchanged: a fast renderer still completes at the next retrace. See the performance notes.

Android — touch controls

  • PR #347 — the touch controls are redrawn. The row of small buttons is replaced by a virtual steering stick with a radial 30% dead zone, large round A and B buttons, a small C pad for the camera, a pill-shaped Start button and an outline Menu button in the top-right corner. Every control is a real multi-touch target: each finger owns one control, sliding off releases it, and a thumb can roll from B to A. The layout respects the system bar and display cutout insets. Z is not shown, because A already covers it.

Mods

  • PR #349 — a mod that imports the frontend guest API now starts. Startup never registered the guest exports, so an import of recompui_context_root failed before gameplay with zero guest threads. The exports are registered, and the smoke package now calls a UI export and reads default and saved per-mod enum values. The accompanying audit compares the Banjo and Zelda APIs and checks the prerequisites for #339 and #340; named lifecycle events, game-data and object-extension APIs are still unfinished, so #19 stays open. See the modding guide and the mod loader audit.

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 issue tracker is the canonical "what's next" list.

  • Android black-screen reports are not fully fixed. #329 stays open. The descriptor-pool exhaustion that precedes the crash now retries with a larger pool (patch 0041), but the Xiaomi still needs a system-driver retest, and the separate Turnip and gralloc ANR is not fixed.
  • The Adreno 615 startup fix is a measured workaround. The driver's internal GPU fault is unverified, and only that exact driver was measured; other driver versions, higher manual scales and long sessions are untested.
  • The new touch overlay has not been checked on a device. Its sizes and positions come from the old button coordinates and a layout mock-up.
  • The mod API is still incomplete. Named lifecycle events, game-data and container APIs and object extensions are unfinished; see #19.
  • Ray-traced sun shadows remain pre-alpha and opt-in. The per-car GPU parity matrix, and multiplayer and attract coverage, are still outstanding; see #281 and #282.

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

Install lamborghini-recomp-android-arm64.apk, open the app and import your USA
ROM. Android remains experimental; see the Android guide.

Build provenance

  • Commit: 07714c5 (main, 2026-10-26)
  • Workflow run: #40407285650 (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.
  • Texture packs: unchanged from v0.10.0. The optional packs are published by the
    texture pack project, and version 0.3.0 still applies.

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.