Releases: alondero/automobililamborghini-recomp
Release list
Automobili Lamborghini Recompiled v0.6.2
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
Note: see the v0.6.0 release notes
for full information on what's in this release line — the new launcher, chase-camera
controls, FOV boost, and analogue throttle/brake. Those features are unchanged here.
This is a small follow-up to v0.6.1
with two changes: the window came up oversized on Windows machines running with display
scaling (the 175% panel-scaling case in particular), and Alt+F4 could hang the game
on shutdown. Both are fixed here — if 0.6.0 or 0.6.1 wouldn't start, or wouldn't quit
cleanly, 0.6.2 should. There's still glitches so please report issues you find.
Closed since v0.6.1:
Stability / Windows compatibility
- #161 / PR #162 — The game window now opens at the correct size on Windows machines
running with display scaling. The process had no DPI-awareness declaration anywhere
(no manifest, noSetProcessDpiAwareness*call), so DWM bitmap-stretched the
windowed-mode window by the system scale factor — at 175% scaling the default
1600×900 window rendered at ~2800×1575 physical pixels and overflowed a 1080p
display; onlyAlt+Enter(fullscreen-desktop) recovered. The build now embeds an
application manifest declaring PerMonitorV2 DPI awareness (with the legacy
True/PMfallback for pre-Win10-1703), wired in viasrc/app.manifest,
src/lambo_manifest.rc, and a Windows-onlywindresstep inCMakeLists.txt.
No code changes; non-Windows builds are untouched. Empirically verified via
GetWindowDpiAwarenessContext— awareness level now reads2 = PerMonitorV2
(was0 = Unawarebefore this change).
Stability / shutdown
- #163 / PR #164 —
Alt+F4(and the window-close button) now shut the game down
cleanly. The previous path tore down RmlUi from the SDL quit handler while RT64
could still render it, producing the freeze seen in #163. The shutdown order is
now sequenced so the UI bridge is dropped before the SDL quit handler runs, and
immediate process termination is retained for the live runtime thread model. A
regression guard (tests/test_quit_path.py) exercises both the SDL quit and
window-close routes and is wired into the CI test set.
Automobili Lamborghini v0.6.1
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
Note see the v0.6.0 release notes for more details on this release.
This is a small follow-up to v0.6.0 with two changes: v0.6.0 failed to start on some
Windows machines, and that's fixed here — if 0.6 wouldn't launch for you, 0.6.1 should.
The other change is quality-of-life: Player 1's name now persists across launches.
There's still glitches so please report issues you find.
Closed since v0.6.0:
Stability / Windows compatibility
- #158 / PR #159 — Fixes the "Failed to allocate memory!" startup crash reported on
Windows (v0.6.0 only; v0.5 was unaffected). The runtime asked Windows for the full 4 GiB
guest address range withMEM_COMMIT | MEM_RESERVE, which consumes pagefile commit budget
even though only 512 MiB is ever touched — machines with ample RAM but a constrained
commit limit failed at launch. The range is now reserved without eager commitment, and
only the accessible prefix is committed. A regression test runs under a 1 GiB process
commit limit as part of the Windows release build flow.
Quality of life
- PR #160 — Player 1's confirmed name from the name-entry screen is now saved to
player.jsonand re-seeded when the name editor opens next launch, instead of starting
blank every run. Covered by focused save/reload tests hooked in at the verified
name-editor seams.
Automobili Lamborghini Recompiled v0.6.0
What's in this release
This release focused on some quality of life improvements.
Menu and Configuration Overlay
Configuration options can now be modified from the menu bar directly, or pressing the 'Options'/'Select' button on a game controller brings you into a (very basic!) controller controlled config overlay. Most options will take effect immediately
New Chase Cam view
The original game had a poor feeling of speed, some new configuration options introduced in this version allow you to modify the position of the camera and increase the Field of View to show a wider perspective. Together this should make a big difference to your adrenaline!
| After (v0.6.0 enhancements) | Before (stock ROM) |
|---|---|
![]() |
![]() |
Reduced Pop-In
There was occasional pop-in and in previous versions caused by an increase of view cone generally from widescreen. This should now be fixed. Feel free to try out the 'increased draw distance' and 'track draw' options - these do introduce scenery that wasn't intended by the developers to be seen however.
Analogue Acceleration and Braking
Configurable through the controls overlay you can turn on analogue acceleration and braking by mapping this to controller axes.
Stability and quality of life around the existing systems:
- PR #146 closes #145 — Championship season-end save was looping on "Controller Pak changed" because the SI bridge was forcing the guest Rumble Pak-present flag on every frame while also presenting a valid Controller Pak. The flag is now kept truthful; rumble runs through native overrides of the game's own request path, so the save flow completes and in-game rumble still works.
There are still glitches (some are listed under "What's not done yet" below)
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
Game is playable, with upscaled resolution, high FPS, widescreen (including HUD) support
across all race modes, N64 Rumble Pak support, and the in-game configuration overlay.
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.
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).
For v0.6.0's new knobs: press the controller Menu / Back / Guide button, or
Esc / F1 on the keyboard, to open the in-game configuration overlay and try the
Visual Enhancements presets:
- Chase camera distance (default 1.0; suggested 0.65 – 0.75)
- Chase camera height (default 1.0; suggested 0.66)
- Field of view boost (default 0°; suggested +10°)
Suggested starting point (matches what this release was tested against):
distance 0.7, height 0.66, fov_add +10. The same knobs live under
graphics.json (camera_distance_scale, camera_height_scale,
camera_fov_add) and accept env-var overrides (LAMBO_CAMERA_DISTANCE_SCALE,
LAMBO_CAMERA_HEIGHT_SCALE, LAMBO_CAMERA_FOV_ADD).
The v0.5.0 pop-in knobs (draw_distance, draw_distance_circuit[6],
no_lod_circuit[6], fog_scale, fog_scale_circuit) are still there — turn
fog_scale up to match a wider FOV if the periphery starts to dissolve.
Build provenance
- Commit:
487d545(main, 2026-08-24) - Workflow run: see this release's commit status (CI dispatched from this SHA)
- Toolchain: Linux build on
ubuntu-latestwith gcc / cmake / ninja /
libsdl2-dev/libvulkan-dev/libfreetype-dev. Windows build on
windows-latestwith 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.
Automobili Lamborghini Recompiled v0.5.0
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
Game is playable, with upscaled resolution, high FPS, and widescreen (including HUD)
support across all race modes, plus N64 Rumble Pak support. The headline of this release
is distance pop-in is gone: a four-PR series (#119 → #122 → #123 → #124) traced the
remaining world pop-in to two mechanisms the earlier audits missed — the per-circuit
N64 fill-rate radius cull (worst on the city track: a whole city block popping in at the
35000-unit edge) and a camera-segment visibility list that silently dropped entries
past the first -1 hole. New graphics.json knobs let you tune the radius (draw_distance,
default 1.5× authored; draw_distance_circuit[6] per-track multiplier), the per-track
synth (no_lod_circuit[6], with pro tracks shipping off by default to preserve the
N64-authored look), and fog density (fog_scale, fog_scale_circuit). There's still
glitches so please report issues you find.
Closed since v0.4.2:
Distance pop-in (no_lod series)
- #87 follow-up / PR #119 — The remaining city-track distance pop-in is fixed. The
scene builderfunc_8000A6C0was distance-culling every PVS entry against a
per-circuit radius table at0x80088FD0— the city track's 35000-unit budget was
authored shortest, so segment 31 sat ~51k units down a long street and popped in at
the edge. A per-frame[[patches.hook]]on0x8000CD3Crewrites the 30 radii to
1e9 (per-frame because savestate restore brings the ROM values back). Authored
visibility lists are untouched — segments the game already streamed just stop being
hidden. New offline audit:tools/pvs_distance_audit.py(replays the builder's exact
test arithmetic from aLAMBO_RACE_DL_DUMPsnapshot). - PR #122 — Even with the radii lifted, segments not in the camera's authored
10-slot visibility row never drew. Two data-model fixes: PVS rows are 10 fixed slots
with-1holes (not terminators), and the segment count is(header+0x8 − header+0x4) / 20— circuit 5 has 55 segments, not 42. Threepatches.hooks widen
the existing walk to synthesise an all-segments row (authored entries first). New
fog_scale/fog_scale_circuitride the existing #83 fog DL-walker to scale fog
alpha without moving its authored onset distance. - PR #123 —
draw_distancebecomes a dial, not a switch. Default is 1.5× the
authored per-circuit radii (the worst measured pop needs ≥1.46×);0reverts to
the old unlimited behaviour,1.0reproduces N64 distances. Per-circuit
draw_distance_circuit[6]multiplies with the global. Multiplier-not-absolute
preserves the authored per-mode budget ratios (1P radii stay longer than 2-4P).
LAMBO_DRAW_DISTANCEenv override for capture. - PR #124 — Ship-safe default:
no_lod_circuit[6]adds a per-circuit PVS-synth
gate. Pro tracks (3-5) ship with the synth off to preserve N64-authored back-
of-buildings / floating geometry the radius cull was hiding; basic tracks (0-2)
ship with the modern pop-in fix. Radius cull and 2P+ scenery sub-DL stay gated on
the globalno_lod()so distance culling and 2P scenery work on all 6 tracks.
Newdocs/TRACK_INDEX.mdis the authoritative 0-based / 1-based / F-key / basic-
pro map.
Stability
- PR #118 — Pit-stop flicker is fixed, and so is the related cold-load crash from
LAMBO_STATE_LOADstraight into a pit-stop savestate. The widescreen HUD bracket
reset hooks sat on recompiled branch labels that run on every incoming path;
the pit-stop screenbnes straight past the draw and its pin, so every pit frame
emitted an unpairedG_EX_POPSCISSOR(scissor-stack corruption) and ran the matrix
walker over a stale span (needle/arrow shift toggled shifted/unshifted per frame —
the flicker). Cold-load withbracket_start=0crashedpatch_load_mtx_dx8/8.
One module-wide bracket flag now arms on every pin and disarms on every reset; the
quad-text bracket pair (pin_left→quad_text_end) keeps its existing pairing.
Covered bytests/test_hud_bracket_pairing.c(cold-start reset no-op, paired
needle shift still exact, pit-path unpaired resets leave scene matrices untouched). - #116 / PR #117 — The Championship-standings "Done" button and the second
button of the pak/records confirm dialogs are no longer dead. The menu system
dispatches per-screen actions via function pointers in static per-screen element
tables (0x801EB320, handler at record+0x4); because they're neverjal'd, splat
truncations produced silent no-ops instead of build errors. Whole-ROM sweep for
data pointers landing on empty-bodied recompiled functions found exactly these
two — the class is now closed. StandardSPLIT_MERGES + UNSTUBfix (func_80041538
andfunc_8004EF0C); absorbed tails have zero independent jal/data callers. PR
also fixed a generator-sync drift: PATCH_BLOCKS and NATIVE_OVERRIDES now carry the
hand-edits tolamborghini.us.tomlso regeneration is byte-clean (the #78 quad-
HUD hooks + the PR #108 rumble ignored entries).
Developer tooling
- PR #120 — Default boot is silent. The same lines that used to print one per
VI heartbeat (and several on each transition) now only emit when the binary is
started with--lambo-debug. 99fprintfsites converted across 7 files behind
alambo_log_enabledbool insrc/lambo_log.h; the[rt64]and[gfx]
heartbeats wrap their wholeif-blocks so the VI-reg read +interpolatedMutex
lock also short-circuit on a default boot (not just the innerfprintf). Crash
dumps ([crash]tag) and the opt-in env-var features (LAMBO_PAK_TRACE,
LAMBO_DL_INSPECT, ...) are NOT routed through the gate — they were already
opt-in via env var or only fire on actual signal/SEH. In a 1800-VI headless run:
default boot = 2 lines,--lambo-debug= 69 lines.main.cppskips argv entries
starting with-when finding the ROM path solamborghini_modern --lambo-debug path/to/rom.z64works. - PR #115 — A new
/releaseslash command (.claude/skills/release/)
captures the tag → dispatch → wait → verify → ship-notes flow with five
deterministic bash scripts (list-changes, tag-and-dispatch, wait-for-build,
verify-release, update-notes) and three reference docs (gotchas, prior-release-
format, release-notes-template).disable-model-invocation: truekeeps the agent
from auto-triggering — releases stay deliberate.
CI / build
- PR #121 — Fresh CMake configures were failing during the
directx-headers
FetchContent step (git.exe: add_item failed, errno 1;Git_VERSION=''). Root
cause: devkitPro's MSYS2git.exesat ahead of Git for Windows on PATH and its
Cygwin heap can fatal outside its own shell.build.ps1's toolchain-PATH step
now auto-discovers native Git for Windows and prepends it; verifiesgit.exe
in the[tools]check and warns ifgitstill resolves to MSYS/Cygwin.
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 follow-ups carried over from prior releases:
- #26 epic / Widescreen HUD residual gaps — quad-mode skybox / fog / minimap
pinning is solid in 2P-4P; a few residual cases (the needle/arrow scale keyed off
the effective rect-pin aspect can over-scale at extreme ultrawide) are tracked. - #88 / #91 — lights-match in 3P+ viewports still open from the no_lod audit;
pop-in is gone but 3P+ scene lighting doesn't always match the 1P baseline. - Texture tooling PRs (#99, #66) still open — xBRZ HD-pack batch tooling and
font upscale / vector re-render tools are staged but not yet merged.
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).
For the new pop-in / fog knobs: edit graphics.json (created on first run) and look
for draw_distance, draw_distance_circuit, no_lod_circuit, fog_scale,
fog_scale_circuit. The shipped defaults match what...
Automobili Lamborghini Recompiled v0.4.2
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
Game is playable, with upscaled resolution, high FPS, and widescreen (including HUD)
support across all race modes, plus N64 Rumble Pak support. This is a small follow-up
to the v0.4.1 Intel driver advisory (#110): where v0.4.1 shipped a manual escape hatch
that required editing graphics.json, v0.4.2 makes the fix automatic for modern
Intel — affected users no longer need to take any action. There's still glitches so
please report issues you find.
Closed since v0.4.1:
Stability / driver compatibility
-
#109 follow-up / PR #113 — Modern Intel GPUs (Iris Xe / Arc) now stay on D3D12
automatically — nographics.jsonedit needed. v0.4.1's patch 0010 only worked
when the user manually set"api_option": "D3D12"; two more users hit the silent
black-screen wall before finding the workaround, so this makes it the default. The
Intel force-Vulkan fallback in RT64 was originally written for 6th-gen HD Graphics
(which device-remove on D3D12), but it was wrongly catching Gen12 Xe / Arc
(where D3D12 works fine and it's Vulkan that loses the device). Patch 0010 is
narrowed to exclude any device whose name containsXeorArc— they now keep
D3D12 by default. Genuine 6th-gen parts still get the Vulkan fallback so there's
no regression. Two smaller companion changes:- Setup-retry: if the renderer was started with an explicit
api_optionand
that backend fails to initialise, RT64 now tries the other Windows backend
once before giving up (it already self-retried forAuto). - Name-aware advisory severity: the GPU advisory popup is now device-name
aware. Modern Intel stuck on Vulkan raises the SEVERE popup (the #109 black
screen); a 6th-gen part correctly on Vulkan is INFO — no scary popup for a
case that's actually working.
LAMBO_FAKE_GPUstill works for end-to-end testing without an Intel box.
README troubleshooting reflects the new automatic behaviour. - Setup-retry: if the renderer was started with an explicit
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 follow-up: a user who explicitly sets "api_option":"Vulkan" on an
old-driver Iris Xe still hits runtime device-loss (setup succeeds, then
vkQueueSubmit fails mid-render). The default-config path is fully covered by the
narrowing, and that explicit-Vulkan combo still gets the SEVERE advisory popup
instead of a silent black screen — but a full fix needs deeper RT64
present-queue surgery. Tracked in #114.
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).
Build provenance
- Commit:
03e533a(main, 2026-07-12) - Workflow run: #29203966918 (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.
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.
Automobili Lamborghini Recompiled v0.4.1
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
Game is playable, with upscaled resolution, high FPS, and widescreen (including HUD)
support across all race modes. The headline of this release is N64 Rumble Pak
support: the ROM's per-frame PWM rumble engine now drives SDL pad rumble at the
moments ares rumbles (with the Controller Pak save flow intact in the same session).
Two follow-up fixes round out this release — an outdated Intel GPU driver guard
that turns a silent black screen into a popup with the exact fix, and a 3P
multiplayer pop-in fix that draws the per-segment far-scenery layer in 2P-4P the
way 1P already did. There's still glitches so please report issues you find.
Closed since v0.4.0:
Rumble
- #101 / PR #108 — N64 Rumble Pak now rumbles the SDL controller in a real race.
The ROM issues raw SI motor frames through a custom start/stop pair (audit in
#102 / PR #107 — the ROM carries a complete per-frame PWM engine with per-channel
intensity, every link in the chain is emitted and reachable). The port now forces
the rumble-present flag and runs nativeosMotorStart/osMotorStopstubs that
catch the writes and drive SDL directly — Controller Pak saving continues to
work in the same session with no user pak-prompt interaction required.
LAMBO_PAK_TRACE=1logs[pak] MOTOR START/STOP ch=Nfor end-to-end verification
(a 1P arcade run logged 79 motor-start / 2395 motor-stop events on ch0 alongside
26 controller-pak write frames and a 32 KB .mpk flush). See
docs/rumble-triggers.md for the trigger map.
Stability / driver compatibility
- #109 / PR #110 — Outdated Intel GPU drivers no longer black-screen silently.
On Intel Iris Xe at or below RT64's known-broken driver threshold (31.0.101.2115)
running on Vulkan, RT64's old-Intel workaround was forcing the renderer onto a
Vulkan path that immediately lost the device (VK_ERROR_DEVICE_LOST) — leaving
the user staring at a black window with a console full ofvkQueueSubmit failed.
v0.4.1 reads the live device description at startup and, if it sees the broken
combo, raises an SDL popup naming the exact driver version (decoded from the
packed value) and showing both fixes: update the driver, or set
"api_option": "D3D12"ingraphics.json(full path shown). An accompanying
patch (0010) makes the escape hatch real — RT64's Intel workaround was
unconditional and was overriding an explicitapi_option: "D3D12", so even
users who tried the fix got the same black screen. The workaround is now gated
on the API choice being automatic (same pattern RT64 already uses for its
NVIDIA and AMD RDNA3 workarounds).LAMBO_FAKE_GPU="8086,1e00000065057c"
replays a reported machine's device on any box for testing.
Widescreen / multiplayer
- #87, #91 / PR #112 — 3P multiplayer pop-in / short draw distance is fixed.
The scene DL builder draws each track segment as up to three sub-DLs (road,
walls, far scenery — distant canyon relief, trees, trackside structures); a
players < 2gate in the segment loop and the camera's own segment was
silently skipping the scenery emit in 2P-4P. With the v0.4.0 fog-match widening
the near-black variant-2 fog, the missing distance became visible as the
scenery simply never drawing. v0.4.1 adds agraphics.jsonkeyno_lod
(default true,LAMBO_NO_LOD=0/1env override) and two[[patches.hook]]
branch guards that route the gate through a native helper so every mode takes
the branch the way 1P does.LAMBO_NO_LOD=0produces a frame pixel-identical
to the v0.4.0 binary (clean off-switch, and proves the hook is the only
behavioural change). 4P warp-race shows scenery in all quadrants with no DL
corruption.docs/no_lod_audit.mdaddendum records the audit's corrected
classification of the builder.
Developer tooling
- #87 follow-up —
LAMBO_RACE_DL_DUMP_AT="n1,n2,..."dumps the walked frame DL- RDRAM at exact send_dl counts (pairs with
LAMBO_STATE_LOADfor deterministic
around-the-pop diffs). This is what surfaced the missing scenery DLs in the
first place.
- RDRAM at exact send_dl counts (pairs with
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.
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).
Build provenance
- Commit:
1f489fb(main, 2026-07-11) - Workflow run: #29198294316 (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.
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.
Automobili Lamborghini Recompiled v0.4.0
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
Game is playable, with upscaled resolution, high FPS, and widescreen (including HUD)
support. The headline of this release is 3- and 4-player split-screen: the 2×2
quadrant views used to be pillarboxed with dark side bars, and now each quarter fills
its slice of a wide monitor — with the per-quadrant HUD text, minimap, fog, and sky all
tracking the wide frame. This release also fixes a boot crash that stopped the game
launching at all on some machines (see #80 below). There's still glitches so please
report issues you find.
Closed since v0.3.0:
Widescreen — 3P/4P split screen
- PR #79 — 3P/4P multiplayer split now renders as full-width quadrant viewports.
RT64's Expand only widens a viewport that spans the whole framebuffer, so each
quarter previously stayed 4:3 and the composite was pillarboxed with dark side bars;
the quadrants are now tagged so each fills its output quarter with a Hor+ widened FOV. - #78 / PR #94 — Per-quadrant HUD text (position, lap, time, rank, etc.) is now
pinned inside its own quarter instead of drifting toward the screen centre. - #84 / PR #89 — The sky panorama is now drawn in 3P/4P (the quadrants were
rendering a flat dark sky instead of the backdrop). - #83 / PR #86 — The dense fog band at the 3P/4P split edges is widened to match
the 1P window and colour.
Widescreen — skybox
- #3 / PR #77 — Renderer-side rewrite of the widescreen skybox: parallax-free
backdrops now stretch to fill the wide frame on every presented frame, fixing a hard
black gap visible at 21:9 when the race is paused. This supersedes the v0.3.0 ROM-hook
approach, which only ran while the game's frame loop was running (so a frozen/paused
frame left the sky at 4:3).
Stability
- #80 / PR #82 — Boot no longer dies on benign exceptions. The native crash handler
was intercepting harmless first-chance C++ throws and guard-page hits raised by some
NVIDIA / XInput driver DLLs and force-exiting before the window even appeared. It now
acts only on genuine fatal CPU faults. If an earlier build refused to launch on your
machine, try this one.
Release packaging / CI
- #81 / PR #81 — Release zips now ship
lamborghini.syms.toml, so when the crash
handler catches a fault the report resolves guest addresses to function names instead
of raw N64 PCs. The Windows packaging step also now fails the build loudly if a
required runtime DLL (SDL2.dll,dxcompiler.dll,dxil.dll) is missing, instead of
shipping a zip that crashes on the user's machine at startup.
Project / developer docs
- PR #76 — Added
CONTRIBUTING.mdplus issue and pull-request templates. - #88 / PR #90 — Developer no-LOD audit documenting which level-of-detail mechanisms
actually exist in the race scenes (developer-facing; no runtime change).
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.
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).
Build provenance
- Commit:
5e07da1(main, 2026-07-10) - Workflow run: #29082039804 (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.
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.
Automobili Lamborghini Recompiled v0.3.0
Pre-release. 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
Game is playable, with upscaled resolution, high FPS, and widescreen (including HUD)
support. Since v0.1.0 the widescreen treatment has been extended across all race
modes (1P arcade, 2P split-screen, time trial, alt-dial style), and the skybox,
lens flare, and HUD geometry now track the wide frame across every height-ratio
option (Clamp16x9, Full, Original). There's still glitches so please report
issues you find.
Closed since v0.1.0:
Widescreen graphics
- #3 / PR #53 — Skybox background frustum now rebuilds its aspect ratio per
frame (it was hardcoded to 4:3, leaving gaps at the wide edges under
ar_option: Expand). - #40 / PR #65 — Sun lens flare stretches across the full widened frame
instead of being cropped at the 4:3 boundary. - #42 / PR #55 — HUD edge-pinning extended to 2P split-screen (per half),
time trial, and the alternate dial style. - #56 / PR #75 — 2P minimap pinned to each half's left edge under
widescreen. - #67 / PR #70 — HUD geometry (rev needle, minimap player arrow, minimap
track outline) now tracks the effective rect-pin aspect, so it stays glued
to the rect pins acrossClamp16x9/Full/Originalheight-ratio options
(the previous hardcoded 16:9 magnitudes detached from the rects on ultrawide
monitors).
Developer tooling (now ships in the binary)
- #12 / PR #48 — Developer warp menu: F1–F6 jumps to circuits 1–6 from
anywhere after boot (attract, title, menu, mid-race);LAMBO_WARP= circuit[:laps[:car[:players]]]does the same on cold boot, reaching a race
in ~2.5 s instead of ~37 s through the attract cycle. These are debug keys —
ignore them unless you're reproducing a track-specific issue. - #22 / PR #59 — Developer save-state: F7 saves / F8 loads a snapshot of
guest RDRAM for deterministic debug repros (LAMBO_STATE_LOAD=<file>on
cold boot lands on the exact spot). Heads-up: park and wait for the scene to
fully load before F7 — a snapshot taken while the asset thread is still
streaming restores RAM under it mid-job and can crash on load. The normal
Controller Pak save system is unchanged.
CI / build
- #61 / PRs #62, #63, #64 —
patches/0007(savestate thread-context relink,
required by the save-state above) is now wired into both CI build jobs;
build.sh/build.ps1are the single source of truth for the build
sequence, eliminating drift between local and CI builds.
Texture tooling (developer-facing)
- #50 / PR #57 —
tools/decode_dump.py: CI4/CI8 textures now decode with
correct colours and no shear. Root cause was a TLUT byte-order bug — RT64
stores 32-bit words byte-swapped in RDRAM (A ^ 3), which the decoder now
honours.
What's not done yet
This is a pre-release — plenty of force_stub.txt still includes real game
primitives rather than no-ops. The tracker is the canonical "what's next" list.
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).
Build provenance
- Commit:
9bef7dc(main, 2026-07-09) - Workflow run: #28996890290 (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.
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.
Automobili Lamborghini Recompiled v0.1.0
Pre-release. 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
Game is playable, with upscaled resolution, high FPS, and widescreen (including HUD) support. There's still glitches so please report issues you find.
Closed since the last release:
- #30 / PR #34 — Wheels no longer ghost / jump forward under RT64 frame
interpolation in the face-on replay view. - #35 / PR #37 — Controller Pak save records now actually issues a write
(the wholeosPfsfile-op layer was force-stubbed; eleven functions un-stubbed). - #31 / PR #36 — Controller Pak no longer reports corrupted in-game.
- #2 / PR #39 — Per-element widescreen HUD pinning (via
gEXSetRectAlign). - #41 / PR #43 — Minimap (outline, dots, arrow, P1 marker) pinned to the left
edge in 16:9 instead of being squeezed offscreen. - #32 / PR #44 — Menu cursor ring and left/right selection arrows restored on
the car-select screen. - #4 / PR #38 — Texture LOD NOP instruction landed, removing a stub that
crashed on certain surfaces. - #46 / PR #46 — Build tolerates submodule CRLF and Linux build no longer
attempts to compile the Win32-only path. - #47 / PR #47 — Hardcoded alt-stack size (glibc
SIGSTKSZis non-constant
on some distributions; this keeps the crash handler's stack-overflow recovery
working).
What's not done yet
This is a pre-release — plenty of force_stub.txt still includes real game
primitives rather than no-ops. The tracker is the canonical "what's next" list.
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).
Build provenance
- Commit:
6f3e7d9(main, 2026-07-06) - Workflow run: #28778465982 (Build & Release, dispatch #4 for 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.
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.

