案例
Super Smash Bros. Melee:可移位构建的 GameCube 一致性反编译
Super Smash Bros. Melee 美版 1.02(GALE01)的一致性反编译:使用原版 Metrowerks 编译器从 C 代码重建 main.dol,并与零售版的 SHA-1 比对。decomp.dev 报告所审提交的代码已完全反编译并链接,README 称目前工作主要是命名与清理。由于构建可以移位,另有非一致性模式,供模组作者加入代码,再配合自己转储的光盘运行生成的 DOL。
使用条件与局限
- README 将其描述为一致性反编译,构建美版 1.02 的 main.dol(游戏 ID GALE01),SHA-1 为 08e0bf20134dfcb260699671004527b2d6bb1a45,即 config/GALE01/build.sha1 校验的摘要。decomp.dev 报告此提交 100.00% 已反编译、100.00% 已完全链接,README 称目前主要精力在命名与清理。产物是 GameCube DOL,不是 PC 可执行文件;CI 另外构建的 CMake 库与 DWARF 软件包并未被记载为可游玩的移植,此处也不作此主张。
- 需从自己的 GALE01 光盘取得 main.dol;仓库中的 orig/GALE01 目录只有占位文件。README 的模组流程需把整张光盘转储到文件夹,启用 configure.py --non-matching 并将新对象标为 Equivalent,再在 Dolphin 中运行重建的 DOL。这类修改后的构建与零售版并非逐字节相同,不属于一致性结果。
- 宿主工具为 Python 与 ninja,可在 Windows(推荐原生工具)、macOS(以 Game Porting Toolkit 运行 Windows 编译器)或 Linux(x86 上用 WiBo,其他架构用 Wine)上使用。configure.py 配置 decomp-toolkit、sjiswrap 以及 Metrowerks GC/1.2.5 与 GC/1.1p1 编译器和 GC/1.3.2 链接器;objdiff 用于逐对象比较,tools/decomp.py 借助 m2c 生成函数草稿。CI 在提供原始文件的构建容器中构建 link、test 和 debug 三种模式,并另做一次基于 Nix 的一致性构建。
- 一致性依据链接后 DOL 的 SHA-1 与 objdiff 的逐单元报告;CI 的 check_complete.py 会在某单元已完全匹配但尚未标记完成时发出警告。100% 数据为 decomp.dev 对此提交的报告;本合集未构建 DOL,也未重跑任何比较。
- 所审提交没有仓库级许可文件,GitHub 也未识别出许可;tools/ 下随附的工具各有许可,游戏本身、其 DOL 与素材仍受权利人条款约束。CONTRIBUTING.md 说明用 AI 匹配函数是可接受且常见的做法,但要求贡献者不要让 AI 命名结构体字段或全局标识符,也不要让其尝试匹配数据段。未记录 REA 使用,也不主张运行复现。
关于此条目
- 类型
- 案例
- 类别
- 独立重建案例
- 关联
- 独立重建项目
- 目标
- 游戏
来源复核于
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- .github/README.md GitHub · doldecomp/melee · 修订 f0cdbb0
- config/GALE01/build.sha1 GitHub · doldecomp/melee · 修订 f0cdbb0
- configure.py GitHub · doldecomp/melee · 修订 f0cdbb0
- .github/CONTRIBUTING.md GitHub · doldecomp/melee · 修订 f0cdbb0
- .github/workflows/build.yml GitHub · doldecomp/melee · 修订 f0cdbb0
- .github/scripts/check_complete.py GitHub · doldecomp/melee · 修订 f0cdbb0
- CMakeLists.txt GitHub · doldecomp/melee · 修订 f0cdbb0
- https://decomp.dev/doldecomp/melee