案例

Project Arwing:由一致性反汇编重编译的 Star Fox

依据运行覆盖率和递归下降反汇编 Star Fox 的 65816 与 SuperFX 代码,重新汇编出与原 ROM 一致的文件,再静态翻译为 C,运行于从零编写的 SNES 运行时,支持 Windows、macOS 和 Linux。录制会话中未执行到的代码,以及与 ROM 不再一致的 RAM 代码,回退到解释器执行;README 报告两条路径的逐帧哈希一致。生成的 C 是机械翻译而非手工反编译的源码,结果仍为项目报告。

使用条件与局限

  • README 报告重新汇编的 ROM 逐字节一致,含 34,472 条 65816 指令和 14,577 条 SuperFX 指令;在 2 万帧游戏过程中,99.4% 的 CPU 分派和 100% 的 SuperFX 分派以重编译代码执行。README 列出可游玩的部分为开场、标题、训练、Corneria 及随机游玩到达的其他关卡。标签均为自动生成,未执行到的代码仍作为数据由解释器运行,音频仅经过间接检查,未与实机对照。
  • 需自备 Star Fox (USA) (Rev 2) ROM,并与 README 给出的 SHA-1 一致;其他修订版和地区版本未经测试。构建时从该 ROM 提取图形、模型与音乐。源码构建需要无文件头的映像,安装程序则会去除 512 字节的拷贝机文件头。仓库不含任何游戏数据。
  • 发布版面向 Windows x64、macOS 11+(未经公证)及 Linux x86_64/ARM64 AppImage。源码构建需要 Python(Windows 上为 3.10+),并分别搭配 Visual Studio 2022 Build Tools、Xcode 命令行工具与 SDL2,或 gcc、SDL2、FreeType 与 DejaVu 字体;tools/build.py 依次执行提取、汇编、重编译和编译。
  • tools/build.py 会比较重新汇编 ROM 的 SHA-1,但不一致时只发出警告。文档中的贡献者检查会比对重编译运行与 --interp 运行的 --hashlog 输出。CI 在没有 ROM 的情况下以零填充数据完成汇编和重编译,因此既不能确认一致性,也不能确认游戏行为;本合集未重跑任何检查。
  • MIT 覆盖 tools/、src/、installer/、res/ 及构建脚本;LICENSE 排除 asm/(Nintendo Star Fox 代码的反汇编)及任何从 ROM 提取的内容。这是与 Nintendo 无关的非官方爱好者项目。所审阅仓库未作任何 AI 或 REA 归因,因此流传帖文所称 Opus 5.5 加单一提示完成的说法在此未获证实。

关于此条目

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

来源复核于

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

一手来源

  1. README.md GitHub · carlosrmz009/arwing · 修订 d8fe7aa
  2. LICENSE GitHub · carlosrmz009/arwing · 修订 d8fe7aa
  3. tools/build.py GitHub · carlosrmz009/arwing · 修订 d8fe7aa
  4. tools/recomp.py GitHub · carlosrmz009/arwing · 修订 d8fe7aa
  5. .github/workflows/build.yml GitHub · carlosrmz009/arwing · 修订 d8fe7aa