01 · Overview
F-Zero X on a New 3DS, at 60, in 3D, in 24 days
A post-mortem of porting G-Diffuser, the F-Zero X decompilation on the libultraship runtime, to the New Nintendo 3DS. One person directed; one long-lived Claude session orchestrated; 147 subagents built. The console went from a black screen to a native-60 stereoscopic racer between 2026-08-11 and 2026-09-03.
On hardware
What was built
A New 3DS build of G-Diffuser that boots from the HOME menu (.cia) or the homebrew launcher (.3dsx), reads prebaked asset archives from the SD card (no ROM ever touches the console), and plays the whole game: Grand Prix, Time Trial, Practice, Death Race, the machine editor screens, with music and effects on the real DSP, stereoscopic 3D on the slider, a touch menu on the bottom screen with live performance levers and a log viewer, and clean HOME suspend, resume, close, lid sleep and power-off. Frame pacing is native 60 Hz, not 30 Hz with interpolation.
The stack
- decomp: the F-Zero X decompilation (inspectredc/fzerox), untouched, plus 10 patches.
- libultraship: the N64 runtime (Kenix3), untouched, plus 38 patches, including a 13-line newlib fix that lets it build on devkitARM.
- port/3ds: 15,039 lines of new code: a citro3d rendering backend, stereo, audio, input, menu, lifecycle, render thread, profilers, packaging.
The headline numbers on hardware
| When | Median | p10 | At cap |
|---|---|---|---|
| 08-14 first race (emulator) | 12–20 | – | – |
| 08-21 first hardware run | 48–50 | – | – |
| 08-28 release-grade build | ~51 | ~40 (crowds, MINIMAL) | – |
| 09-02 Round 1: Mainline before the campaign | 51.3 | 39.2 | 9% |
| 09-02 Round 2: Bridge memos (brfast) | 57.2 | 46.6 | 29% |
| 09-02 Round 3: HUD atlas · triangle memo · TMEM · audio | 56.0 | 48.0 | 32% |
| 09-02 Round 4: Render thread on core 2 (pipe) | 57.6 | 44.6 | 14% |
| 09-03 Round 5: Ahead mode · bridge on main · auto rival detail | 59.6 | 51.4 | 53% |
The arc in five lines
- 08-11 → 08-14: from research to a race. Feasibility dossier, plan for a team of agents, five parallel foundation streams, six boot bugs, first race at 12–20 fps in the emulator.
- 08-20 → 08-22: from pink to playable, then to a real console. Fog, HUD, livery, shadow, sky fixed; the loadblock discovery took menus from 27 to 60 fps; first hardware run 08-21 ("wow it runs amazing"); audio the same evening.
- 08-27 → 08-28: product grade. Five-agent fleet drop, stereo armed, touch menu, rival detail, GPU vertex-transform moonshot built and shelved, README with legal notice, release package.
- 09-01 → 09-02: lifecycle and the last big lever. HOME crash and close-from-HOME hang fixed; bridge output cache proven a NO-GO and pivoted into brfast; LOCKED-60 campaign launched with four parallel levers.
- 09-02 → 09-03: multi-core. Render thread on core 2, one-frame-ahead mode, bridge on main, auto LOD; median 59.6 with 53% of frames at cap; crash fixed; viewport placement fixed; stereo markers anchored.
Read on
- Author's notes: The one page written by a human.
- Every step: The 24-day chronology.
- Road to 60: The performance campaign, round by round.
- Difficulties: What fought back, and how it was beaten.
- Frontier: Why this is innovative, bold, and new.
- Agentic workflow: How the fleet was run, and how the ship was steered.
- Cost: Tokens, dollars, subagents.
docs/research/, the hardware logs, or the session transcripts on this machine. Where a value is an estimate (the dollar figures, which apply published API list prices to exact token counts), the assumption is stated next to it.


