// the find
andrewrk/jamulator
(unmaintained) recompiling NES roms into native executables
An abandoned 2013 experiment by Andrew Kelley (later the creator of Zig) that statically recompiles 6502 NES ROM code into native executables via LLVM, rather than emulating it. It's for people curious about static binary translation and retro ISA reverse engineering, not for anyone wanting a working NES emulator.
Static recompilation (translate once to LLVM IR, then let LLVM's optimizer and native codegen do the work) is a genuinely different approach from the cycle-stepping interpreters most emulators use, and the writeup linked in the README explains the tradeoffs well. The 6502 assembler/disassembler is a clean, self-contained piece you could lift independently of the recompilation machinery. It ships actual test fixtures (asm source plus reference binaries) rather than just claiming correctness.
Only one game is confirmed to work (Super Mario Bros. 1) — this was never a general-purpose NES recompiler, it's a proof of concept that happened to run one ROM. It pins to LLVM 3.1/3.2 and gollvm bindings from 2012; getting this to even compile on a current machine means hunting down a 13-year-old LLVM toolchain, not a quick `go build`. No CI, no activity since 2013, and the author has said outright it's discontinued — any bugs you hit are yours to fix alone.