Star on GitHubStar1.1k stars

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.

Targets
Game
Category
Independent reconstruction cases
Relationship
Independent reconstruction project
Sources reviewed

Requirements & limits

  • Prerequisites: 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.
  • Prerequisites: 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.
  • Scope: 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.
  • Testing evidence: 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. The mutable status page reports all six versions complete/matching.
  • License: 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.

About this entry

The description was reviewed against primary sources.

Report an outdated entry Suggest a translation fix

Discussed in the survey

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/-/tree/46d3393bed1a3d5fbefbdba6df7237579b5c66e0

More in Games

All 318 entries in GamesGames case studies (239)

↑↓ move↵ open⌘↵ new tab