Repository navigation
Releases: apexJCL/burnout3-recomp
Release list
v2026.11.2
The menu is readable on the Deck.
- A menu sized for your screen. On the Steam Deck the menu is now
large enough to read, and on a high-DPI desktop it follows your scale.
Render scale and shaders no longer change its size, the Size setting
applies at once, and taps reach every button at render scale 2 and 3.
For developers
- Pins: xboxrecomp-cli v0.21.0 and toolkit blinx2-v0.14.0, up from
v0.20.0 and blinx2-v0.13.0. - New in the CLI:
saves listandsaves import,[system] languagesfor the toolkit'ssystem.language, and the release gate
([xbe] region,version,title). - New in the toolkit: mod API 8 (a 3D debug draw at the flip),
RECOMP_DEBUG=tex_dump=<dir>for texture packs, and groundwork for an
in-window game reset, off by default.
v2026.11.1
The Windows build wizard works again, and your saves can travel.
2026.11.0's wizard could stop partway on Windows; this patch fixes it
and brings a mouse-friendly menu along.
- Windows wizard fixed. Builds on a Windows PC with Git's default
settings finish again: the toolkit's shader files stay LF, so the
package step no longer refusesshaders/param-kinds.toml, text is
written as UTF-8 whatever the system code page, and Retry works after
a failed step. - Move your saves. The menu's new Saves page exports your saves to a
zip and imports one on another PC. Your current saves are backed up
first, and the game closes so its next start loads the imported ones. - Share your settings. The Files page exports your settings or a
shader profile and imports one back, with a file browser in the menu. - The menu takes the mouse. Hover, click, drag sliders and scroll;
an on-screen keyboard pops up for renames on a touch screen. - A tidier menu. Compact and expanded sizes (R3), a toolbar that
folds to icons and button glyphs in the footer.
For developers
- Pins: xboxrecomp-cli v0.20.0 and toolkit blinx2-v0.13.0, up from
v0.19.0 and blinx2-v0.12.0, the same as BLiNX 2's 2026.11.1. The CLI
writes every text file as UTF-8, clones the toolkit with
core.autocrlf=falseand heals an older CRLF clone; the toolkit's
.gitattributeskeeps packaged text LF. The bootstrapburnout3.pyis the
CLI's refreshed template. - Why a patch release: the fix lives in the CLI and the toolkit, and
the wizard runs the pinned CLI, so the pins had to move before players
could build again. The toolkit's menu changes come along. - Mod API 7 (
glyph_name, the{ctl:}token, a per-mod status
panel) and deterministic mode (RECOMP_DEBUG=deterministic, off: a
virtual clock, a fixed thread order and OHCI pads on that clock, so a
pad replay repeats on one host) are in the toolkit; stock runs read
the clock as before.
v2026.11.0
The fork's first full release: the console's own sound mix, less disk wear,
and a game that no longer holds a CPU core. Heads-up: custom key and pad
bindings need their new names (see below).
Changed
- The cache partition lives in memory (
storage.ram_cache = true, the
toolkit's new default for every game): what the game writes to its
scratch cache drive while it plays stays in RAM, up to the console's
750 MB, instead of being rewritten on your disk. The game sees the same
files.ram_cache = falseunder[storage]inconfig/config.toml
puts them back on the disk. - The real audio DSP, on by default. The game's own sound programs now
run on the emulated Xbox audio DSP (reverb, effect sends, the game's own
mix) instead of a plain stereo fold.RECOMP_APU_DSP=0in
config/launch.envbrings the old sound back. - Breaking: new names for controls and keys in
[input.bindings]and
[input.actions]ofconfig/config.toml. The toolkit now uses upstream
xboxrecomp's names and no longer reads the old ones, so rewrite any line
of yours that uses them:ltriggerrtriggerlthumbrthumbbecome
left_triggerright_triggerleft_thumbright_thumb;lstick_*
andrstick_*becomeleft_stick_*andright_stick_*;KP0..KP9
becomeNumpad0..Numpad9;KPEnterKPPlusKPMinusKPMultiply
KPDivideKPPeriodbecomeNumpadEnterNumpadAddNumpadSubtract
NumpadMultiplyNumpadDivideNumpadDecimal;LBracketRBracket
becomeLeftBracketRightBracket;MouseLeftMouseRight
MouseMiddlebecomeMouse1Mouse2Mouse3. An old name logs an
unknown control,unknown inputorunknown nameline: an old control
name is ignored and that control keeps its default; an old key name is
skipped but the rest of the line still applies, so a line left with no
valid entries unbinds that control (start = "KPEnter"leaves Start with
no key); an action line keeps only its valid entries.
The game's defaults bind nothing by name, so a file without such lines
needs no change. - The build pins xboxrecomp-cli v0.19.0 (was v0.7.7) and the toolkit fork
atblinx2-v0.12.0(wasblinx2-v0.4.0), which merges upstream
xboxrecomp v0.14.0 through v0.16.0 and moves the
macOS and Linux hosts from SDL2 to SDL3. The lifted code honours the
SSE rounding mode (MXCSR) the game sets. The disassembler refuses a
function start that falls inside an instruction of the body before it,
and keeps tail blocks inside the function that jumps to them instead of
splitting them off, so the game now lifts as 23,652 functions, not
24,000. File handles are checked before use (a bad handle is an error,
not a crash), and the title cache (E:\CACHE) gets its ownTitleCache
folder in the save folder instead of sharingCachewith the cache
partitions. present.pacingdefaults tosleepinconfig.default.toml, as in the
toolkit (wasspin): the game's lowered spin waits sleep until the kernel
signals, so the game no longer holds a CPU core.spin, the
console-original timing, is still an option, and the
race gate still pins it. The file also listspresent.surface.
Fixed
- The lifter keeps narrow
mul,imul,divandidivon their 8- and
16-bit registers instead of widening them, so a build from your dump
computes those the way the console does. - When a write needs room past the RAM cache's 750 MB cap, the cache drops
data the game never opened, oldest first, instead of filling up.
v2026.10.0-rc.2
A fix for the Steam Deck: the game starts again under Proton.
Fixed
- Steam Deck and Linux PC bundles pin their Proton: the installer fetches
GE-Proton11-7 (checked against its sha256) and the launcher runs it, so
no launch follows the newest GE-Proton. GE-Proton11-9 starts no game on a
Deck since the October 2026 Steam Linux Runtime update, and lost the pads
before that. The launcher also refuses a second launch while the game
starts or runs. These come from xboxrecomp-cli v0.7.7, which the build now
pins; the shared launcher defaults no longer set PROTONPATH=GE-Proton.
Changed
- The release workflow leaves a release made by hand, or already published,
as it is: it edits only a draft it made itself, and attaches the wizard
assets to any other release only when it has none of them.
v2026.10.0-rc.1
The fork's first release: the build wizard for players, one window on
Windows and the Steam Deck, and the macOS build, on the xboxrecomp fork's
Direct3D 11 and Metal renderers.
The project now runs on the shared xboxrecomp runtime instead of its own fork,
and the title boots and plays through its own code. It builds on the
xboxrecomp fork (apexJCL/xboxrecomp blinx2/portability, tag
blinx2-v0.4.0), which carries upstream xboxrecomp #138-#156: the
vertex-program interpreter, register combiners,
x87 precision control, SSE compare predicates, multi-pad USB, the DPC queue lock
and per-flip frame dumps.
Added
- Every game mode plays: Race, Time Attack, Road Rage and Crash for one player;
Race, Road Rage, Double Impact and Team Crush in two-player split-screen; and
Party Crash. - Two controllers connected by default (
RECOMP_USB_PADS=2); pad 2 is XInput
pad 2 orp2-pad-script steps. --headless,--record out.mp4and--seconds N: run with no window, and
encode every presented frame with ffmpeg when the run ends.- A window by default, titled with the XBE title, fps and draw count.
Setup.cmd/tools/setup.ps1: one-click setup from a clean machine. It
checks and offers to install the tools, fetches the toolkit, unpacks your disc
image, regenerates, builds and leaves a launcher.regen.sh: the toolkit pipeline in order.config/seed_functions.json:
function entries only a run can find.- Hang watchdog and a NaN trap (
BO3_TRAP_NAN) inmain.cfor debugging. - Docs:
architecture.md,running.md, andboot.md, which records each fix
between the entry point and a playable race. - CONTRIBUTING, CONTRIBUTORS, ROADMAP, this changelog, and the MIT LICENSE file.
- Options files, from the toolkit's enhancements layer:
config.default.toml
beside the game lists every option at its stock value, and
config/config.tomlholds the ones the player changes. Render scale
([render] scale = 2, orRECOMP_RENDER_SCALE=2) draws at two to four
times 640x480 on Metal and Direct3D 11. Anisotropic filtering
([render] aniso = 2..16), the present filter, fullscreen at start and
spin-wait pacing are options too. Every option is stock unless
set, and the race gate pins them stock (race_gate.py --stock-env). - The build wizard: a small program for Windows, macOS and Linux (Steam Deck
included), attached to every release, that builds and installs the game
from your own disc image. It asks for the render scale and whether to start
fullscreen. - Releases on GitHub, with these notes and the wizard downloads;
-rc.
tags are pre-releases. -DBO3_CONSOLE=ONbuilds the console program, which prints to the
terminal, for debugging from a command line.- A dialog says what failed when the game cannot boot (no game files, a
wrong path).
Changed
- The build links the xboxrecomp runtime libraries (
../xboxrecomp) instead of
in-tree copies. - One window on Windows and under Proton: the game window, titled
"Burnout 3: Takedown". It opened up to three (a console, a blank
framebuffer window and the game). The exe is now a Windows GUI program. - Fullscreen is off by default. On a Steam Deck, start the game from Steam
with the Gamepad template (see the bundle's README). - Format and engine research notes moved to
docs/research/.
Removed
- The in-tree runtime fork (
src/kernel,src/d3d,src/audio,src/apu,
src/input,src/nv2a,src/platform) and the hand-written game layer
(fe_menu,rw_renderer,rw_bridge, the pseudo-3D road, fake physics,
loaders). The title draws its own menus and races now. src/nv2a's captured pushbuffer and font data, which came from the game, and
its xemu-derived code.- The old Python tools (
tools/); the toolkit's versions replace them. CLAUDE.mdfrom tracking.- Stale docs describing the fork (
d3d8ltcg_device_context.md,
docs/technical/,kernel-imports.md), andrenderware_layouts.md, which was
taken from RenderWare SDK headers.
Fixed
- The README described a build that did not run (sp00nznet#1, reported by
@VincxBlox). - The picture flickered and changed height at the start of a race.
- The game no longer writes the Xbox cache files (
CACHE/) into your game
files folder; they go with the saves. - Sound effects (menu select, turbo, engines) played as fizz and noise. The
game loads them into its heap, whose physical addresses are also handed out
as contiguous memory, and the APU read the contiguous copy. The toolkit's APU
now reads RAM for any heap page the game named through MmGetPhysicalAddress.