案例

Super Mario Sunshine:仍在推进的 GameCube 一致性反编译重建

重建 Super Mario Sunshine 的 C++ 源码,目标是让原版 Metrowerks 编译器为四个 GameCube 发行版本及 Switch 版 3D All-Stars 生成逐字节一致的目标文件。目标二进制取自使用者自备的光盘镜像,objdiff 按函数比对重建出的目标文件。工作尚未完成,仓库在人工流程之外还发布了面向 AI 智能体的贡献规则。

使用条件与局限

  • README 称该项目为仍在进行中的反编译工程。configure.py 默认目标为 GMSJ01(日版 Rev 0),另支持 GMSP01、GMSE01、GMSJ01 Rev 1,以及 Super Mario 3D All-Stars 中的 GMSP01_NX。默认只链接标记为 Matching 的目标文件;--non-matching 会链接等价或经修改的目标文件。在所审阅的提交上,decomp.dev 报告 GMSJ01 已反编译 49.51% 的代码、完全链接 18.42%;本合集未重新计算这些数字。
  • 需将各版本自备的光盘镜像放入 orig/<version>。支持 ISO(GCM)、RVZ、WIA、WBFS、CISO、NFS、GCZ 和 TGC 格式,仓库声明不包含任何游戏素材或汇编。GMSJ01 的符号配置由该光盘中的 mario.MAP 链接映射生成;CI 工作流注明 GMSE01 没有 MAP 文件,因此跳过其符号顺序检查。
  • 构建需在 Windows、macOS 或 Linux 上安装 Python 和 Ninja;构建过程会获取 decomp-toolkit、binutils 和旧版 Metrowerks 编译器(大部分代码使用 GC 1.2.5),在 macOS 和 Linux 上通过 wibo 包装器运行。objdiff 将重建的目标文件与从原 DOL 中提取的目标文件比对,各版本的 build.sha1 记录目标 DOL 的哈希。
  • AGENTS.md 要求对全部五个版本运行 ninja baseline 与 changes_all 生成回归报告,且每个版本的 DOL 仍须显示 OK。CI 在提供原始文件的构建容器中构建所有版本,并对改动的单元检查符号顺序。这些都是项目自报的检查与进度数据,不能证明已重建出完整或可游玩的游戏;本合集未运行任何构建。
  • AGENTS.md(CLAUDE.md 与 GEMINI.md 均为指向它的符号链接)规定了 AI 智能体的工作流程:禁止无人监督的智能体处理 MSL、MetroTRK、THPPlayer、Dolphin SDK 和 JSystem 代码,并把难以判断的决定交给人类,但没有量化智能体编写的代码比例。仓库声明采用 CC0-1.0;任天堂的游戏、光盘内容及下载的编译器另有权利约束。未确立 REA 的使用。

关于此条目

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

来源复核于

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

一手来源

  1. README.md GitHub · doldecomp/sms · 修订 b2350a1
  2. AGENTS.md GitHub · doldecomp/sms · 修订 b2350a1
  3. configure.py GitHub · doldecomp/sms · 修订 b2350a1
  4. config/GMSJ01/config.yml GitHub · doldecomp/sms · 修订 b2350a1
  5. config/GMSJ01/build.sha1 GitHub · doldecomp/sms · 修订 b2350a1
  6. .github/workflows/build.yml GitHub · doldecomp/sms · 修订 b2350a1
  7. docs/AGENT_MATCHING_TIPS.md GitHub · doldecomp/sms · 修订 b2350a1
  8. LICENSE GitHub · doldecomp/sms · 修订 b2350a1
  9. https://decomp.dev/doldecomp/sms