案例
《纸片马力欧 RPG》:早期阶段的 GameCube 一致性反编译
《纸片马力欧 RPG》(Paper Mario: The Thousand-Year Door)的进行中一致性反编译,目标为日版 Rev 0 GameCube 版本(G8MJ01):用原版 Metrowerks 编译器重建 MarioSt.dol 和 31 个 REL 模块,并逐一与仓库保存的 SHA-1 比对。构建从使用者自备的光盘镜像中拆分这些二进制,开发时用 objdiff 比对目标文件。decomp.dev 报告所审提交有 12.10% 的代码已匹配。
使用条件与局限
- README 只列出一个支持版本 G8MJ01(Rev 0,日版);configure.py 未定义其他版本,CI 也只构建 G8MJ01。README 仍留有模板残余:徽章指向另一个项目,克隆命令写的是 NWPlayer123/G8MJ01-dtk,另有一行把 G8MJ01 称为美版。产物是 GameCube DOL 和 REL 组,不是 PC 移植。
- 需将自己的 G8MJ01 光盘镜像复制到 orig/G8MJ01,可接受 ISO(GCM)、RVZ、WIA、WBFS、CISO、NFS、GCZ 和 TGC 格式。README 称仓库不含任何游戏素材或汇编:decomp-toolkit 依据仓库提交的符号表和拆分表拆分 main.dol 与各 REL,并从 DOL 中把记忆卡图标和横幅纹理提取为本地头文件。src/pmario_sound.c 等反编译源文件中也包含以 C 重建的游戏数据表。
- 构建需要 Python 与 ninja,可在 Windows(推荐原生工具)、macOS(需 wine-crossover)或 Linux(x86 上自动下载 wibo,其他架构用 Wine)上进行。configure.py 固定 decomp-toolkit v1.8.3、objdiff v3.7.1、binutils 2.42-2、sjiswrap v1.2.2、wibo 1.1.0 及 20260305 编译器包;游戏和 REL 代码使用 Metrowerks GC/2.6,Dolphin SDK 使用 GC/1.2.5n。tools/ttydasm 是一个 Rust 辅助工具,可从 build/G8MJ01 中链接好的 DOL 或 REL 产物里解码指定的事件脚本。
- 标为 Matching 的目标文件(configure.py 中 547 个里有 100 个)由源码编译,其余取自拆分出的原始文件;默认 ninja 目标会先按 config/G8MJ01/build.sha1 校验 DOL 和全部 REL,再报告进度。CI 在提供光盘文件和编译器的容器中构建 G8MJ01,并上传进度报告。decomp.dev 针对该固定提交的报告显示,3,784,980 个代码字节中有 457,800 个(12.10%)、9,770 个函数中有 2,029 个已匹配,1,239 个单元中有 100 个已完成;本合集未运行构建。
- 仓库采用 MIT 许可证(版权归 NWPlayer123),libs/musyx 另有其 MIT 许可证;两者都不涵盖任天堂的游戏、光盘内容或下载的编译器。所审来源未确立 AI 或 REA 使用,也不主张运行复现。
关于此条目
- 类型
- 案例
- 类别
- 独立重建案例
- 关联
- 独立重建项目
- 目标
- 游戏
来源复核于
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · doldecomp/ttyd · 修订 62131fc
- configure.py GitHub · doldecomp/ttyd · 修订 62131fc
- config/G8MJ01/config.yml GitHub · doldecomp/ttyd · 修订 62131fc
- config/G8MJ01/build.sha1 GitHub · doldecomp/ttyd · 修订 62131fc
- tools/project.py GitHub · doldecomp/ttyd · 修订 62131fc
- src/pmario_sound.c GitHub · doldecomp/ttyd · 修订 62131fc
- tools/ttydasm/src/cli.rs GitHub · doldecomp/ttyd · 修订 62131fc
- .github/workflows/build.yml GitHub · doldecomp/ttyd · 修订 62131fc
- LICENSE GitHub · doldecomp/ttyd · 修订 62131fc
- https://decomp.dev/doldecomp/ttyd