案例

Perfect Dark:生成一致 ROM 的 Nintendo 64 反编译重建

重建 Perfect Dark 的 Nintendo 64 代码,并提供生成一致 ROM 的构建流程。项目将重建源码与使用者自备原 ROM 中的素材结合,再检查各版本产物的哈希。这是可复现构建研究案例,与独立的原生 PC 移植不同;此处的一致性结果仍为项目报告。

使用条件与局限

  • 所审阅的 GitHub 仓库是 Ryan Dwyer 的 GitLab 项目的镜像。README 将其描述为完整的一致性反编译重建;六个构建目标涵盖 NTSC 测试版、NTSC 1.0/最终版、PAL 测试版/最终版及日版最终版,默认 ntsc-final。产物为 N64 ROM,不是 Windows/Linux/macOS 游戏可执行文件,也不是独立的 Perfect Dark PC 移植。
  • 需自行取得获授权的原始 ROM,采用未交换字节序的 .z64 格式,文件头为 0x80371240,并按所选 ROMID 命名。make extract 从该 ROM 读取素材及用于比较的代码段;最终构建也复用提取的启动代码。已有提取文件不会被覆盖,因此修改后的输入可能破坏一致性结果。
  • 文档说明的构建宿主为 Linux:需 GNU Make、宿主 C/C++ 工具、Python 3、MIPS binutils/GCC、armips、Capstone 开发文件及列明的 32 位 libc 头文件。还需初始化固定版本的 ido-static-recomp 子模块。一致性模式使用其中的 IRIX 输入重建 IDO 5.3 和 7.1 编译器工具;可选 GCC 构建不保证匹配,且仅支持 ntsc-1.0/ntsc-final。
  • 构建后,make test 依据所选版本的校验清单,静默执行 MD5 校验,覆盖最终 ROM 及中间产物。README 也说明如何比较原 ROM 与构建 ROM 的哈希。这些检查针对所供版本的输出一致性,不覆盖游戏行为路径或性能。可变的项目状态页报告六个版本均已完成且匹配;本合集未重跑这些检查。
  • 仓库声明源码采用 MIT;原 ROM 和提取的游戏素材仍有各自权利约束。编译器组件另有条款,包括子模块为 IDO 5.3 附带的 SGI 声明,项目的 MIT 声明不能替代这些条款。所审来源未确立 AI 或 REA 使用归因,也不主张运行复现。

关于此条目

类型
案例
类别
独立重建案例
关联
独立重建项目
目标
游戏

来源复核于

说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。

一手来源

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