For decades, preserving and playing retro video games on PC has followed an unchanging ritual: install an emulator, configure core plugins, fiddle with directory structures, download BIOS dumps, map inputs through labyrinthine menus, and point the application at raw ROM archives. But what if your retro game library didn’t require an emulator at all? What if every cartridge in your collection was simply a standalone, double-clickable native Windows executable?
That is the audacious vision behind RetroRecomp, an open-source toolchain developed by Arthur Reboul-Salze. Currently reaching v0.18.0, RetroRecomp bridges the gap between raw ROM dumps and native PC software. By integrating ahead-of-time (AOT) static CPU recompilers across six iconic console architectures—Sega Master System, Game Gear, Nintendo Game Boy, NES, Mega Drive, and Super Nintendo—RetroRecomp compiles game logic directly into host C and emits self-contained Windows x64 binaries. No Python environment, no separate ROM files, and no external SDL2 DLLs required.
Its guiding philosophy is etched into its banner: "Less emulation. No FPGA. As native as possible."

The Death of the Emulator Wrapper: Why Static Recompilation Changes Everything
To understand why RetroRecomp represents such a monumental leap forward for game preservation, one must look at how traditional emulators operate. A conventional software emulator (or dynamic recompiler like RPCS3 or PCSX2) acts as a virtual machine running alongside your operating system. Every single clock cycle, the emulator must read foreign machine instructions from an external ROM, decode opcodes in software, translate them into host x86-64 instructions on the fly (JIT compilation), and simulate timing quirks.
While JIT emulation is remarkably flexible, it comes with unavoidable penalties: frame-pacing stutters as new instruction blocks are compiled, significant CPU cache churn, and an inevitable layer of input latency.
Static recompilation inverts this entire workflow:
- Ahead-of-Time (AOT) Code Generation: Rather than translating code while you are trying to dodge fireballs, RetroRecomp disassembles the target ROM during the conversion pass. Z80, SM83, 6502, 68000, and 65816 instructions are transformed into optimized C functions before you ever launch the game.
- Embedded Hardware Runtime: The resulting C code is compiled and linked against a lightweight, statically embedded hardware runtime. Memory maps, video display processors (VDP/PPU), sound synthesis (PSG/APU), and interrupt controllers are baked directly into the executable alongside the original cartridge data.
- Instant Native Execution: When you double-click the game, Windows launches it like any standard PC application. Startup is instantaneous, input polling connects directly to the host OS, and CPU overhead drops to near-zero.
The Six Console Profiles: From 8-Bit Mastery to 16-Bit Frontiers
Version 0.18.0 of RetroRecomp organizes its recompilation pipeline across six distinct console profiles, ranging from rock-solid everyday drivers to cutting-edge experimental 16-bit proof-of-concepts:

1. Sega Master System (SMS) — Everyday Play Ready
The Master System backend is fully matured for daily gaming. Powered by an ahead-of-time Z80 compiler, it handles standard Sega-mapper ROMs with complete native CPU coverage. Features include:
- Two-player gamepad support with customizable mappings.
- Selectable PAL (50 Hz) and NTSC (60 Hz) hardware timings.
- F8/F9 instant state serialization.
- Integrated mouse support for the Sega Light Phaser gun, allowing shooting classics like Wanted, Rescue Mission, and Operation Wolf to be played with precision mouse aiming.
2. Sega Game Gear (GG) — Native LCD Authenticity
Sharing the high-speed Sega Z80 compilation core, the Game Gear profile faithfully respects the portable handheld's unique hardware idiosyncrasies. It enforces the canonical 160 × 144 LCD resolution, preserves authentic 12-bit master color palettes, maps the dedicated Start button, and delivers native stereo sound output without artificially expanding the display.
3. Nintendo Game Boy (DMG) — Deep Verification
Targeting the original 1989 monochrome Game Boy, this profile integrates a specialized compiler pinned to arcanite24/gb-recompiled. It translates the Nintendo SM83 CPU instructions across all ROM banks into native C. The compiler employs short branch discovery and multi-pass conversion probes to eliminate interpreter fallback:
- Includes Deep Game Boy validation by default, comparing generated executions against reference CPU test fixtures.
- Verified zero interpreter fallback on foundational titles like Tetris and Super Mario Land.
- Offers both high-contrast black-and-white and iconic pea-green dot-matrix DMG color palettes.
4. Nintendo NES — Bank-Switched 6502 Native Coverage
Derived from mstan/nesrecomp, RetroRecomp’s NES backend tackles the notorious complexity of Nintendo's memory management controllers (MMCs). Rather than restricting compilation to basic NROM games, v0.18.0 compiles every physical PRG ROM entry across bank-switched mappers (MMC1, MMC3, UxROM, CNROM):
- Passed an exhaustive test suite of 332,800 instruction test cases across both NTSC and PAL timing standards.
- Zero interpreter fallback verified on 1,800-frame gameplay paths across Super Mario Bros. 3, Mega Man, and Mega Man 2.
- Full mouse NES Zapper light-gun support with an authentic, configurable red crosshair for shooting gallery games like Duck Hunt.
5. Sega Mega Drive / Genesis — The 68000 Breakthrough (Experimental)
The crowning achievement of RetroRecomp v0.18.0 is the addition of 16-bit Motorola 68000 recompilation. Previous 16-bit ports often struggled with stack-frame corruption during indirect jumps. RetroRecomp introduces a novel instruction-level AOT adapter that strictly tracks the real 68000 program counter, hardware stack, and interrupt frames:
- Qualified NTSC revisions include Sonic the Hedgehog, Columns, Golden Axe, and Castle of Illusion.
- On Columns, Golden Axe, and Castle of Illusion, the two-pass conversion reached zero interpreted 68000 opcodes across 3,600-frame scripted gameplay benchmarks!
- Accurately toggles VDP horizontal resolutions between H32 (256 pixels) and H40 (320 pixels).
6. Super Nintendo (SNES) — 65816 Rust Compilation (Experimental)
The SNES profile harnesses a cutting-edge 65816 compiler built with the modern Rust toolchain (Rust >= 1.85). Currently qualified on the USA release of Super Mario World, it translates core game routines into native C code while running the Sony SPC700 audio DSP in an isolated, synchronized thread.
Your ROM Folder Becomes an Interactive Steam-Style Library
Where RetroRecomp truly wins the hearts of PC gamers is in its sheer desktop elegance. When you run batch conversions on your ROM directory, the output folder doesn't spit out messy build scripts or cryptic hex caches. It produces a pristine Windows directory filled with authentic 3D game executables:

Every generated game executable features:
- Authentic 3D Box-Art Icons: Integrated scrapers connect to ScreenScraper, TheGamesDB, and IGDB (with local Libretro fallback), automatically rendering complete 9-size Windows
.icofiles up to 256 × 256. Clamshell cases, cartridges, and jewel cases appear with realistic perspective. - Contextual Badges: Light gun shooting games automatically receive an overlaid red target badge, making arcade favorites instantly identifiable at a glance.
- Zero External Dependencies: Each game is a compact, self-contained binary (typically between 2 MB and 6 MB) with all assets, runtime code, and game data embedded directly into the PE image. You can copy a game to a USB flash drive or another PC, and it simply runs.
In-Game Interface: Modern Quality-of-Life Without the Bloat
Once inside a game, RetroRecomp provides a unified, distraction-free SDL overlay accessible via intuitive global hotkeys:
RETRORECOMP // UNIFIED HOTKEY REFERENCE
[FUNCTION] [ACTION]
F1 Instant Game Restart
F2 Interactive Controller / Keyboard Remap (Auto QWERTY & AZERTY)
F3 Display Filters: Sharp Pixels • Bilinear • Scale2x • CRT Scanlines
F4 Fullscreen Modes: Windowed • Integer Aspect • Stretch-to-Fit
F5 Color Palette Toggle (DMG Monochrome vs Classic Pea Green)
F6 Turbo / Autofire Toggle for Face Buttons
F7 Interface Language Switch (English / Français)
F8 / F9 Instant Quick-State Save • Instant Quick-State Load
P Instant Pause
H Help OverlayCrucially, RetroRecomp maintains complete technical honesty. The top title bar of every running window displays real-time execution telemetry: showing "Native code" when executing precompiled routines, and clearly alerting the user if uncompiled instructions fall back to the reference interpreter. Players and preservationists never have to guess whether a game is truly running native code.
The Native Revolution Is Here
RetroRecomp proves that static recompilation is no longer just a bespoke technique reserved for massive solo reverse-engineering feats like Super Mario 64, Zelda: Ocarina of Time, or Jak and Daxter. By building automated, multi-console toolchains, developers like Arthur Reboul-Salze are laying the foundation for a world where our favorite childhood cartridges can live forever as first-class citizens of the modern personal computer.
You can download the standalone Windows x64 release of Retro-Recomp.exe directly from the project's official GitHub releases page, or compile from source to test your own cartridge backups today.