Case study
Perfect Dark: matching Nintendo 64 decompilation
Reconstructs Perfect Dark’s Nintendo 64 code with a documented matching-ROM build. The project combines reconstructed source with assets from a user-supplied original ROM, then checks version-specific artifact hashes. It is a reproducible-build research case, distinct from the separate native PC port; matching results remain project-reported here.
Requirements and limitations
- The reviewed GitHub repository mirrors Ryan Dwyer’s GitLab project. README describes a complete matching decompilation; six build targets cover NTSC beta, NTSC 1.0/final, PAL beta/final and Japanese final, with ntsc-final as default. This reconstructs an N64 ROM, not a Windows/Linux/macOS game executable or the separate Perfect Dark PC port.
- Supply an independently authorized original ROM in non-byteswapped .z64 form, with header 0x80371240, named for the selected ROMID. make extract reads assets and comparison segments from that ROM; final builds also reuse extracted boot code. Existing extracted files are not overwritten, so modified inputs can invalidate matching results.
- The documented host setup is Linux: GNU Make, host C/C++ tools, Python 3, MIPS binutils/GCC, armips, Capstone development files and the listed 32-bit libc headers. Initialize the pinned ido-static-recomp submodule. Matching mode reconstructs IDO 5.3 and 7.1 compiler tools from its IRIX inputs; optional GCC builds are nonmatching and limited to ntsc-1.0/ntsc-final.
- After building, make test runs quiet MD5 verification against the selected version’s checksum manifest, including the final ROM and intermediate artifacts. The README also documents comparing base/built ROM hashes. These check output identity for the supplied version, not gameplay-path coverage or performance. The mutable status page reports all six versions complete/matching; this collection did not rerun those checks.
- The repository declares MIT for source; original ROMs and extracted game assets retain separate rights. Compiler components have their own terms, including the submodule’s SGI notice for IDO 5.3; the project’s MIT declaration does not replace them. The reviewed sources establish no AI or REA attribution, and no runtime reproduction is claimed.
About this entry
- Type
- Case study
- Category
- Independent reconstruction cases
- Relationship
- Independent reconstruction project
- Targets
- Game
Sources reviewed
The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.
Primary sources
- README.md GitHub · n64decomp/perfect_dark · Revision 169ed48
- Makefile GitHub · n64decomp/perfect_dark · Revision 169ed48
- LICENSE GitHub · n64decomp/perfect_dark · Revision 169ed48
- .gitmodules GitHub · n64decomp/perfect_dark · Revision 169ed48
- tools/extract GitHub · n64decomp/perfect_dark · Revision 169ed48
- checksums.ntsc-final.md5 GitHub · n64decomp/perfect_dark · Revision 169ed48
- checksums.ntsc-beta.md5 GitHub · n64decomp/perfect_dark · Revision 169ed48
- checksums.ntsc-1.0.md5 GitHub · n64decomp/perfect_dark · Revision 169ed48
- checksums.pal-beta.md5 GitHub · n64decomp/perfect_dark · Revision 169ed48
- checksums.pal-final.md5 GitHub · n64decomp/perfect_dark · Revision 169ed48
- checksums.jpn-final.md5 GitHub · n64decomp/perfect_dark · Revision 169ed48
- README.md GitHub · Emill/ido-static-recomp · Revision 421e546
- ido/5.3/LICENSE.md GitHub · Emill/ido-static-recomp · Revision 421e546
- https://ryandwyer.gitlab.io/pdstatus/
- https://gitlab.com/ryandwyer/perfect-dark