Engine ports
Milo engine — native + WebGPU port
Extracted a shared C++17/WebGPU runtime from one decompiled game and re-linked it into a second from a different console, so reverse-engineered code runs natively on x86_64 and in a browser.
C++17 · WebGPU · WebAssembly · Reverse engineering · Emscripten
- Real songs parsed
- 138 / 138
- In-engine tests green
- 195 / 195
- Commits in 48 days
- 238
- Engine source files
- 76
Most game-decompilation projects end when the reconstructed source matches the original assembly. This project starts there: it is a shared, game-agnostic C++17 runtime — WebGPU graphics, real-time audio, input, file I/O, and a POSIX platform layer — extracted from one decompiled game (Dance Central 3, Xbox 360) and re-linked into a second (Rock Band 3, Wii) from a different console entirely. The result is that clean-room reverse-engineered engine code actually runs on modern x86_64 machines and, via WebAssembly, in a browser tab — a preservation endpoint for a family of decompilation projects that otherwise only verify the past.
The central architectural idea is a consumer-injected build: the engine deliberately cannot compile standalone. Each consuming decompilation project supplies its own headers and compatibility flags, so the same engine source compiles differently inside each game’s context while the original byte-for-byte assembly verification stays intact. Refactors that touch verified code land as provably byte-identical moves, and per-game rendering behavior is isolated behind a game-agnostic render-hook interface rather than leaking into shared code.
The hardest problems were faithful graphics and audio. Rendering fixes ranged from big-endian float truncation in compressed vertices to reimplementing the Wii GPU’s point-light falloff in WGSL shaders. On the audio side, hitting a rhythm game’s latency budget inside a browser required off-main-thread stem mixing over SharedArrayBuffer, an adaptive output-latency controller tuned against underruns, and sample-rate-correct resampling.
Equally novel is the governance process: a 418-row generated registry classifies every compatibility workaround as probe, workaround, feature, or performance fix, and a fix only ships default-on when quantified on-vs-off evidence earns it — 15 flags cleared that bar. The final flip in the current campaign moved one instrument track’s parse failures from 843 to 0, with the receipts in the commit message.
Concrete outcomes so far: two test gates held green throughout the extraction (371/371 in the donor project’s suite, 195/195 in-engine), 76 engine source files, 138/138 real songs parsed by a headless data-format parser, and 60/60 sampled scene files loading crash-free. Delivered at 238 commits in 48 days as a single author directing a multi-agent workflow. The work is active and honest about status: the second game boots headless and dumps scene trees; full rendering parity is the ongoing campaign, not a finished claim.
Screenshots
The Milo engine scene viewer rendering a character on the DC Live TV-studio stage at 1440p via WebGPU