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

6 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

The headline of this release is the paddock-split main menu: every launch now opens
on a logo/status rail beside Start Engine, Settings, Mods & texture packs, Controls &
players, and Quit, instead of the old window. Alongside it, Android now runs on stock
Vulkan drivers
— the Adreno in a normal phone no longer needs a custom Turnip build —
and two new opt-in steering options land on the Driving tab. Nine pull requests merged, adding three new
dependency patches (0031/0032 RecompFrontend, 0033 RT64). There's still glitches so
please report issues you find.

Closed since v0.8.0:

Launcher / main menu

  • #288 / PR #289 — the paddock-split launcher is now the startup screen. A logo and
    status rail sits beside the menu; Start Engine routes through the startup gate and
    only hides the launcher on success, Settings opens the current settings page, Mods
    opens the Mods tab, Controls routes to Controls → Assign players, and Quit issues
    SDL_QUIT. Redundant promotional copy is gone, the wordmark stays in the logo, and
    the version is shown once.
    Patch 0031 also fixes Windows document-source URLs, which removes the RmlUi error
    that showed a red debugger beacon without suppressing debugger errors. Layouts checked
    at 2560x1440, 1600x900, 800x600 and 600x900 (wrapped rows scroll Quit into view);
    captures are in docs/recompfrontend.md. #288 stays open pending
    physical-controller acceptance.

Android / driver compatibility

  • PR #294 — Android boots on drivers without VK_EXT_descriptor_indexing, which is
    every stock 2020-era Adreno driver. The port previously refused to start unless Turnip
    was installed. Patch 0033 gives RT64's texture table a fixed 8192-slot mode when the
    device lacks descriptor indexing: empty, released and last frame's slots point at a
    cleared 1x1 placeholder, and one usesBoundlessRange helper keeps the live set and
    both pipeline-layout sites in agreement so the layouts always match what is bound.
    Patch 0013 now only requires scalar block layout, which RT64's shared buffer layouts
    genuinely need. Verified on a Redmi K30 Pro / POCO F2 Pro (Snapdragon 865) with its
    stock driver 4783c89 (Vulkan 1.1.128) — title screen and attract races on three
    tracks, ~24-30 fps, with no texture descriptor set errors under the Khronos validation
    layer. Turnip still works and is now optional. Details in docs/ANDROID.md and
    patches/README.md.

Steering

  • #147 (guest side) / PR #295 — two new Driving-tab options, both defaulting to the
    game's own behaviour: a configurable game steering deadzone and a direct steering
    response
    . Two hooks in the steering updater func_80019D20 replace the ROM's fixed
    4-unit trim (deadzone) and its per-difficulty slew limits (direct). With the defaults,
    the car trace is
    byte-identical to a build without the hooks; with direct mode on it differs in 207 of
    591 player-one updates at deadzone 4. Settings are in driving-controls.json, not
    graphics.json, and LAMBO_STEERING_DIRECT, LAMBO_STEERING_DEADZONE and
    LAMBO_STEERING_TRACE support headless runs. Player one only. #147 stays open for the
    host-side follow-ons in #140 / #141. Full chain, limits and evidence in
    docs/steering.md.

Settings / frontend fixes

  • #256 / PR #292 — the settings overlay's Quit and Close buttons are clickable
    again
    . When tab labels were wider than the modal, the header laid the right side past
    the modal edge and those buttons could not be reached at all. RecompFrontend patch
    0032 gives the tab side flex 1 1 0 with min-width 0, keeps the right side at
    flex-shrink 0, and lets tab labels wrap onto further rows. Focus order and tab
    switching still follow the tab list, not its rows.

Developer tooling (now ships in the binary)

  • #280 / PR #293 — lambo_frontend_settings no longer fails when a physical gamepad
    is plugged in. The fixture assigned the real pad to player one before attaching its
    virtual controllers. Isolation is now set inside the test process before SDL_Init
    (HIDAPI, RawInput, XInput and DirectInput disabled, plus
    SDL_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT for backends with no disable hint), using
    SDL_HINT_OVERRIDE so a developer's own SDL variables cannot re-admit a pad. Game runs
    are unaffected; docs/testing.md no longer asks for manual PowerShell setup.
  • #155 / PR #308 — the vendored zstd benchmark and fuzz tests no longer land in a
    default ctest run, where four of them timed out. ZSTD_BUILD_TESTS now defaults to
    OFF before configuring RT64, with an explicit opt-in still adding exactly those four
    tests and reconfiguration preserving the choice.
  • #228, #229 / PR #309 — the mod smoke checker now accepts --texture-package and
    validates an RTZ texture pack before launch: it stages the container's bytes
    unchanged in an isolated profile and requires the exact mod-load message plus guest
    startup. Previously an unregistered texture-pack container could go unnoticed while the
    game still booted. The docs now record filename-derived metadata, loose-directory game
    IDs, and the difference between direct RT64 loading and mod loading — including that a
    readable stored or deflated embedded manifest is parsed, while a zstd-compressed
    manifest cannot be extracted by the mod loader and falls back to generated metadata.

Project / developer docs

  • #307 / PR #310 — added .recomp.json, the machine-readable project
    description from the recomp.board specification. Lists of recomps read this file
    instead of inferring the project from a README, which is how the board row ended up
    with an unknown status and no toolchain. Status is released; the pre-1.0 state, the
    experimental Android target and the USA-only ROM are recorded in notes.
  • #311 / PR #312 — CONTRIBUTING.md now says that a change which moves a public
    claim (a release target, a support limit, the project status) updates .recomp.json
    in the same change. The specification holds that a stale file is worse than none,
    since it speaks with the project's own authority.

Contributors

This release is the first to include work from a new contributor, and it is most of it.

  • @grahamf-c — five merged pull requests, all in this release: the settings-modal
    layout fix (#292), the physical-controller test isolation (#293), the steering deadzone
    and direct-response options (#295), the zstd test exclusion from default runs (#308),
    and the RTZ texture-pack coverage in the mod checker (#309). Each came with a measured
    claim and the commands to reproduce it, and #295's numbers — a byte-identical car trace
    at default settings, 207 of 591 updates differing with direct mode on — are the kind of
    evidence that makes the next change easier to trust. They also maintain a fork of the
    project. Welcome, and thank you.

  • @alondero — the paddock-split launcher, the Android descriptor-indexing fallback,
    .recomp.json, and the contributor rule above.

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.

Known gaps that this release does not close:

  • #140 / #141 — the steering work here is the guest side only. Host-side stick
    shaping and smoothing are deliberately left out, and they raise an open design
    question: whether these settings belong per controller profile or globally for player
    one. Direct mode keeps the game's own curve, so full lock is still 25 (Novice) or 35
    (Expert) — the car turns sooner, not harder.
  • #282 — ray-traced sun shadows are still validated on a narrow slice of the car and
    circuit grid; validating cars 1-23 across circuits 2-6 is open. #281 tracks the wider
    map and #283 tracks telling the player when the shadows are enabled but inactive.
  • #291 — the RmlUi debugger beacon is still not gated behind a developer option.
    Patch 0031 removes the error that triggered it, but the gate itself is open.
  • #288 — launcher physical-controller acceptance is still outstanding; the host tests
    cover virtual controller and menu bindings, which does not substitute for a physical
    pad check. #290 (making the paddock launcher Android's default start screen) is
    also still open.

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).

Build provenance

  • Commit: cefbde5 (main, 2026-10-13)
  • Workflow run: #38451923452 (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.

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.