← all projects
gba-recomp
RustC11ARM/ThumbZero-interpreter static recompiler and runtime for Game Boy Advance
A Rust toolkit that translates GBA cartridges ahead of time into native executables. A custom ARMv4T/Thumb decoder lifts every reachable block to IR and emits C11, backed by a complete hardware model — PPU, APU, DMA, timers, saves — with no JIT anywhere.
~27k LOC
Rust
10 crates
Workspace
~170k
Functions mapped
Highlights
- 01Solves static-recompilation's undecidable control-flow problem with a per-game function map: ~170,000 functions mapped in four days by an automated Ghidra + LLM pipeline, each verified by reassembly.
- 02Dual-ISA lifting — ARM and Thumb into one IR — with runtime-resolved indirect branches and RAM-resident code capture for hot IWRAM routines.
- 03First-principles color science: CIE colorimetry from real-panel measurements reproduces each hardware revision's screen, down to an analytic subpixel grid.
- 04Shadow-mixer audio engines identify the game's audio middleware by byte signature and re-render per-voice in float, continuously cross-checked against the real mixer.
- 05Cycle-accurate scheduling with AOT-summed cycles per basic block; enhancements are opt-in and output is bit-exact to hardware with them off.
- 06Polished egui launcher with drag-and-drop, gamepad hot-plug, and one-click packaging of games into standalone native executables.



