{
  "added_at": "2026-10-18",
  "additional_evidence_urls": [
    "https://github.com/doldecomp/sms/blob/b2350a119b0e113e6cebc389fda9af00328ee85e/AGENTS.md",
    "https://github.com/doldecomp/sms/blob/b2350a119b0e113e6cebc389fda9af00328ee85e/configure.py",
    "https://github.com/doldecomp/sms/blob/b2350a119b0e113e6cebc389fda9af00328ee85e/config/GMSJ01/config.yml",
    "https://github.com/doldecomp/sms/blob/b2350a119b0e113e6cebc389fda9af00328ee85e/config/GMSJ01/build.sha1",
    "https://github.com/doldecomp/sms/blob/b2350a119b0e113e6cebc389fda9af00328ee85e/.github/workflows/build.yml",
    "https://github.com/doldecomp/sms/blob/b2350a119b0e113e6cebc389fda9af00328ee85e/docs/AGENT_MATCHING_TIPS.md",
    "https://github.com/doldecomp/sms/blob/b2350a119b0e113e6cebc389fda9af00328ee85e/LICENSE",
    "https://decomp.dev/doldecomp/sms",
    "https://web.archive.org/web/20261020041309/https://decomp.dev/doldecomp/sms/GMSJ01/b2350a119b0e113e6cebc389fda9af00328ee85e.json"
  ],
  "category": "reconstruction-cases",
  "description_en": "Reconstructs Super Mario Sunshine’s C++ source so that the original Metrowerks compiler reproduces byte-identical object files for four GameCube releases and the Switch 3D All-Stars build. The target binary comes from the user’s own disc image, and objdiff compares rebuilt objects function by function. The work is incomplete, and the repository publishes contribution rules for AI agents alongside its human workflow.",
  "description_zh": "重建 Super Mario Sunshine 的 C++ 源码，目标是让原版 Metrowerks 编译器为四个 GameCube 发行版本及 Switch 版 3D All-Stars 生成逐字节一致的目标文件。目标二进制取自使用者自备的光盘镜像，objdiff 按函数比对重建出的目标文件。工作尚未完成，仓库在人工流程之外还发布了面向 AI 智能体的贡献规则。",
  "entry_url": "https://awesomerea.org/resources/sms-matching-decomp-case/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/sms-matching-decomp-case/",
  "evidence_url": "https://github.com/doldecomp/sms/blob/b2350a119b0e113e6cebc389fda9af00328ee85e/README.md",
  "group": "cases",
  "id": "sms-matching-decomp-case",
  "json_url": "https://awesomerea.org/resources/sms-matching-decomp-case/record.json",
  "kind": "case-study",
  "markdown_url": "https://awesomerea.org/resources/sms-matching-decomp-case/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/sms-matching-decomp-case/index.md",
  "name": "Super Mario Sunshine: an in-progress matching GameCube decompilation",
  "name_zh": "Super Mario Sunshine：仍在推进的 GameCube 一致性反编译重建",
  "reconstruction_method": "matching-decompilation",
  "record_type": "resource",
  "relationship": "independent-reconstruction",
  "requirement_facets": [
    "scope",
    "prerequisites",
    "prerequisites",
    "testing",
    "attribution"
  ],
  "requirements": [
    "The README calls this a work-in-progress decompilation. configure.py defaults to GMSJ01 (JPN Rev 0) and also targets GMSP01, GMSE01, GMSJ01 Rev 1 and the GMSP01_NX build from Super Mario 3D All-Stars. Only objects marked Matching are linked by default; --non-matching links equivalent or modded objects. For GMSJ01 at the reviewed commit, decomp.dev reported 49.51% of code decompiled and 18.42% fully linked.",
    "Copy your own disc image for each version into orig/<version>. ISO (GCM), RVZ, WIA, WBFS, CISO, NFS, GCZ and TGC images are accepted, and the repository says it contains no game assets or assembly. The GMSJ01 symbol configuration is generated from the mario.MAP linker map found on that disc; the CI workflow notes that GMSE01 has no MAP file and skips symbol-order checks for it.",
    "Builds need Python and Ninja on Windows, macOS or Linux; the build fetches decomp-toolkit, binutils and retro Metrowerks compilers (GC 1.2.5 for most code), and runs them through the wibo wrapper on macOS and Linux. objdiff compares rebuilt objects with those extracted from the original DOL, and each version’s build.sha1 records the target DOL hash.",
    "AGENTS.md requires ninja baseline and changes_all regression reports for all five versions, each still reporting its DOL as OK. CI builds every version in a build container that supplies the original files and checks symbol order for changed units. These are project-reported checks and progress figures.",
    "AGENTS.md, symlinked as CLAUDE.md and GEMINI.md, sets workflows for AI agents. It bars unsupervised agents from MSL, MetroTRK, THPPlayer, Dolphin SDK and JSystem code and defers hard judgment calls to humans, but it does not quantify agent-written code. The repository declares CC0-1.0; Nintendo’s game, disc contents and the downloaded compilers keep separate rights."
  ],
  "requirements_zh": [
    "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；任天堂的游戏、光盘内容及下载的编译器另有权利约束。"
  ],
  "targets": [
    "game"
  ],
  "url": "https://github.com/doldecomp/sms",
  "verification": "source-reviewed",
  "verified_at": "2026-10-18"
}
