案例

《风之杖 HD》反编译:与重编译的 Wii U 版逐函数比对验证

将 Wii U 美版《塞尔达传说 风之杖 HD》逐个函数反编译为 zeldaret/tww 风格的可读 C++,并让每个函数与由使用者自有副本静态重编译得到的原版函数并排运行,在生成输入和录制输入上比较返回值、内存写入和函数调用,同时检查覆盖率并进行变异测试。README 报告游戏 39,713 个函数中已有 28,244 个通过验证,其中来自 GameCube 版的 22,215 个函数里有 22,068 个。代码通过地址调用尚未反编译的函数,因此只能在 ZeldaWWHDRecomp 移植中运行,不能单独构建成游戏。

使用条件与局限

  • README 称这是针对 cking.rpx(美版,版本 0)的混合式反编译:已反编译的函数通过原始地址调用其他函数,因此该源码树本身构建不出游戏,只能与移植项目的重编译代码一起运行。据其报告,HD 界面已完成反编译,而约 11,400 个通用库函数(sead、agl、NW4F、JSystem 的大部分、Cafe SDK 及 C 运行时)暂不计划处理。名称与结构以 zeldaret/tww 为参照,文档还记录了与 GameCube 版比较的 838 个单元中 HD 版的差异。
  • 构建或验证都需要使用者自己合法取得的游戏,用移植项目的工具从附有光盘密钥和 Wii U 通用密钥的光盘镜像中提取。README 声明仓库不含机器码、重编译代码、游戏素材或密钥;代码本身使用的小型数据表包含在内,而模型数据、RPX 镜像、重编译输出、源自游戏的函数名和录制输入均在本地生成,并被 git 忽略。推荐启用的 GameCube 签名检查还需使用以使用者自己的 GameCube 光盘构建的 zeldaret/tww。
  • 验证工具须在 ZeldaWWHDRecomp 的指定测试提交 df2cf51b(v0.2.3)的检出中运行,并替换该移植中较旧的 tools/verify。需要 Python 3、支持 C++20 的 clang/clang++,以及移植项目提取游戏所需的条件;只有录制输入时才需要构建移植本身。完整运行 verify_all.py 耗时很长,部分单元需要数十 GB 内存。
  • 每个函数在两个随机种子上各运行 10,000 组生成输入,须覆盖原函数几乎所有基本块,并经过变异测试;README 报告 2026 年 10 月可读性重写后已对整个源码树重新验证。tools/verify/README.md 说明,等价性是相对于重编译代码对 Espresso CPU 的模拟,而非主机本身,且不检查时序、线程和精确的栈帧布局。游戏内替换测试所用的构建不在发布内容中,仓库没有 CI 工作流,本合集也未运行任何内容。
  • CC0 1.0 适用于反编译源码、工具和文档;游戏本身、任天堂的数据及移植运行时保留各自条款。README 称其为非官方、非商业的粉丝项目,不接受捐助,也没有付费构建。tools/verify/README.md 报告了一个智能体使用这些工具时的试点耗时,以及由并行智能体编写的两个函数;所审来源未确立 REA 的使用。

关于此条目

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

来源复核于

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

报告条目过时 建议修正翻译

一手来源

  1. README.md GitHub · ZeldaWWHDDecomp/wwhd · 修订 b2811a3
  2. tools/verify/README.md GitHub · ZeldaWWHDDecomp/wwhd · 修订 b2811a3
  3. docs/review-notes.md GitHub · ZeldaWWHDDecomp/wwhd · 修订 b2811a3
  4. docs/hd-vs-gc-summary.md GitHub · ZeldaWWHDDecomp/wwhd · 修订 b2811a3
  5. docs/decomp-notes.md GitHub · ZeldaWWHDDecomp/wwhd · 修订 b2811a3
  6. tools/verify/assets.py GitHub · ZeldaWWHDDecomp/wwhd · 修订 b2811a3
  7. LICENSE GitHub · ZeldaWWHDDecomp/wwhd · 修订 b2811a3
  8. https://github.com/ZeldaWWHDRecomp/ZeldaWWHDRecomp/tree/df2cf51bd6d02e0b310d46a5da062693bac7314f

同分区更多条目:游戏

游戏分区全部 236 项资源游戏案例(194)