A matching decompilation/build of Mario Golf 64 (N64, North America — NMFE, rev 0). The build
reproduces the original ROM byte-for-byte: undecompiled code is re-assembled from baserom-extracted
assembly, and decompiled libraries are compiled from C/asm in src/. Libraries land on master one
commit at a time.
Requirements
- The original ROM at
baserom.z64in the project root (SHA-1e2c4e7a905b29529b49a1619a401fe699224829b). It is gitignored and never committed. mips-linux-gnubinutils (suppliescpp,as,ld,objcopy,strip).python3withvenv.wget(to download the KMC GCC 2.7.2 + binutils 2.6 toolchain during setup).
Build
make setup # create venv (splat) + download the KMC toolchain into tools/cc
make extract # split the baserom into asm/ + scaffold with splat
make # build build/mariogolf64.z64 and verify it matches the baserom
tools/verify-rom.sh runs make and asserts the OK line before trusting the ROM SHA-1 (the
build's stale-ROM guard). CI (.github/workflows/build.yml) runs the same setup -> extract -> verify
flow in the container defined under docker/.
Layout
mariogolf64.yaml— splat configuration (ROM layout + per-file subsegments).src/— decompiled C and vendored hand-asm.include/— headers.mk/— per-tree compile rules included by the topMakefile.symbol_addrs.txt,reloc_addrs.txt,hardware_regs.txt,extern_syms.txt— splat/link inputs.