Explore experimental static recompilation from console ROMs to native C. Start with selected instruction examples, then run the bundled GBA homebrew on your PC.
Prototype: CPU and hardware coverage are partial. Commercial game playability, accurate graphics, and host audio remain on the roadmap.
The GBA tab loads the control flow graph and C blocks generated from the bundled homebrew. Other console tabs show illustrative instruction examples.
Loading generated GBA control flow graph…
Try selected hexadecimal instruction examples for each architecture. This small JavaScript teaching demo illustrates disassembly and C lowering; the Python lifters in the repository provide the full recompilation pipeline.
mov r0, #3
ctx->r[0] = 0x00000003;
ArmCpuContext* ctx
Drag & drop a console ROM (.gba, .z64, .v64, .sfc, .bin) into your browser to inspect its header and Shannon entropy. Entropy describes byte distribution and can help identify regions for further inspection.
Supports .gba, .z64, .v64, .sfc, .smc, .bin (Processed 100% locally in browser memory)
| Detected Console | - |
|---|---|
| ROM File Size | - |
| Endianness / Layout | - |
| Calculated Shannon Entropy | - |
The bundled GBA program initializes Mode 3 and writes 2,400 pixels. This is the framebuffer captured after native execution.
# 1. Clone repository
git clone https://github.com/yefan911/automated-recompilers.git
cd automated-recompilers
# Requires Python 3.10–3.13 and MSVC, Clang, or GCC.
# 2. Recompile included homebrew ROM to native .exe
python recompile.py roms/test/hello_gba.gba
# 3. Launch native presentation window on Windows
.\build\hello_gba.exe --window
# Linux: ./build/hello_gba.exe --headless --framebuffer build/hello_gba.ppm
# 4. Or launch the dark-mode desktop GUI
python recompile.py --ui