案例

《天空之剑》:以哈希校验重新链接的 Wii 版反编译

以使用者自备的 NTSC-U 1.0(SOUE01)光盘文件为起点,为《塞尔达传说 天空之剑》Wii 版的 main.dol 和 REL 模块重建 C++ 源码。标为一致的对象由源码编译,再与从原文件拆分出的其余对象链接,并以 SHA-1 哈希校验结果;仓库不含素材或汇编,也不是移植。

使用条件与局限

  • README 称其为进行中的 Wii 版反编译,目前唯一支持的版本是 SOUE01(NTSC-U 1.0);configure.py 还列出 SOUP01,但固定版本中只有 SOUE01 的配置。产物是 Wii 用的重建 main.dol 和 REL 组,不是 PC 可执行文件或移植。
  • 构建需要使用者自己的 SOUE01 游戏:README 指明只需其数据分区中的 sys/main.dol 和 files/rels.arc。仓库不含游戏素材或汇编;decomp-toolkit 依据 config/SOUE01 中的输入哈希和拆分表,在本地将使用者的文件拆分为对象。
  • 在 Windows 上可直接用 Python 与 ninja 构建;Linux/macOS 需 ninja,并会自动下载 wibo 包装器。configure.py 固定 decomp-toolkit v1.7.1、objdiff v3.4.1、binutils 2.42-1 及 20250812 编译器包,大部分代码选用 Metrowerks Wii/1.5,大部分 NW4R 代码选用 Wii/1.3;开发时用 objdiff 逐个对象比对。
  • 默认 ninja 目标只对标为 Matching 的单元(configure.py 中有 493 个,另有 536 个仍为 NonMatching)链接由源码编译的对象,其余单元使用从原文件提取的对象,再按 build.sha1 校验 main.dol 和 636 个 REL。因此校验通过表示输出一致,并不代表反编译已完成。decomp.dev 针对该固定提交的报告显示,27.89% 的代码字节及 76,968 个函数中的 33,940 个已匹配;CI 使用存放游戏文件的私有容器,本合集两者均未运行。
  • 仓库采用 CC0-1.0;该声明不涵盖任天堂的游戏及其文件,也不涵盖下载的编译器。所审来源未确立 REA 或编码代理的参与。

关于此条目

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

来源复核于

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

一手来源

  1. README.md GitHub · zeldaret/ss · 修订 d3d8e3c
  2. configure.py GitHub · zeldaret/ss · 修订 d3d8e3c
  3. tools/project.py GitHub · zeldaret/ss · 修订 d3d8e3c
  4. config/SOUE01/config.yml GitHub · zeldaret/ss · 修订 d3d8e3c
  5. config/SOUE01/build.sha1 GitHub · zeldaret/ss · 修订 d3d8e3c
  6. LICENSE GitHub · zeldaret/ss · 修订 d3d8e3c
  7. .github/workflows/build.yml GitHub · zeldaret/ss · 修订 d3d8e3c
  8. https://decomp.dev/zeldaret/ss