案例
《天空之剑》:以哈希校验重新链接的 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 或编码代理的参与。
关于此条目
- 类型
- 案例
- 类别
- 独立重建案例
- 关联
- 独立重建项目
- 目标
- 游戏
来源复核于
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · zeldaret/ss · 修订 d3d8e3c
- configure.py GitHub · zeldaret/ss · 修订 d3d8e3c
- tools/project.py GitHub · zeldaret/ss · 修订 d3d8e3c
- config/SOUE01/config.yml GitHub · zeldaret/ss · 修订 d3d8e3c
- config/SOUE01/build.sha1 GitHub · zeldaret/ss · 修订 d3d8e3c
- LICENSE GitHub · zeldaret/ss · 修订 d3d8e3c
- .github/workflows/build.yml GitHub · zeldaret/ss · 修订 d3d8e3c
- https://decomp.dev/zeldaret/ss