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

  1. README.md GitHub · n64decomp/perfect_dark · Revision 169ed48
  2. Makefile GitHub · n64decomp/perfect_dark · Revision 169ed48
  3. LICENSE GitHub · n64decomp/perfect_dark · Revision 169ed48
  4. .gitmodules GitHub · n64decomp/perfect_dark · Revision 169ed48
  5. tools/extract GitHub · n64decomp/perfect_dark · Revision 169ed48
  6. checksums.ntsc-final.md5 GitHub · n64decomp/perfect_dark · Revision 169ed48
  7. checksums.ntsc-beta.md5 GitHub · n64decomp/perfect_dark · Revision 169ed48
  8. checksums.ntsc-1.0.md5 GitHub · n64decomp/perfect_dark · Revision 169ed48
  9. checksums.pal-beta.md5 GitHub · n64decomp/perfect_dark · Revision 169ed48
  10. checksums.pal-final.md5 GitHub · n64decomp/perfect_dark · Revision 169ed48
  11. checksums.jpn-final.md5 GitHub · n64decomp/perfect_dark · Revision 169ed48
  12. README.md GitHub · Emill/ido-static-recomp · Revision 421e546
  13. ido/5.3/LICENSE.md GitHub · Emill/ido-static-recomp · Revision 421e546
  14. https://ryandwyer.gitlab.io/pdstatus/
  15. https://gitlab.com/ryandwyer/perfect-dark