Automated Game ROM Recompiler

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.

4 ISAs
ARM7TDMI · Thumb · MIPS · 65816
ROM → C
Inspect the generated source
240 × 160
Native GBA framebuffer snapshot
100%
Legal Reference ROM Included

🧭 Interactive Control Flow Graph & Lifter Inspector

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…

GBA ARM7TDMI Machine Code INPUT
Emitted C99 Architectural Block OUTPUT

⚡ In-Browser Hex-to-C Micro-Lifter

Interactive Client-Side Engine

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.

Quick Presets:
Disassembled Assembly & Opcode ARMv4T
mov r0, #3
Immediate ALU transfer: writes constant 0x00000003 into register r0.
Emitted C99 Context Code Emitted C
ctx->r[0] = 0x00000003;
Target Context: ArmCpuContext* ctx

📊 Live Client-Side ROM & Entropy Inspector

Client-Side Only (No files uploaded)

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.

📁
Drop a ROM file here or click to browse

Supports .gba, .z64, .v64, .sfc, .smc, .bin (Processed 100% locally in browser memory)

Detected Console-
ROM File Size-
Endianness / Layout-
Calculated Shannon Entropy-

Native homebrew result

Reproduce this snapshot

The bundled GBA program initializes Mode 3 and writes 2,400 pixels. This is the framebuffer captured after native execution.

240 by 160 GBA homebrew framebuffer captured from the generated native executable

⚡ 60-Second Terminal Quickstart

Zero Proprietary ROMs Required
# 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