[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f2ac6fe90pwxs2":3},{"code":4,"message":5,"data":6,"timestamp":26},10000,"success",{"full_name":7,"position":8,"description":9,"language":10,"stars":11,"forks":12,"stars_gained":13,"age_days":14,"hn_threads":15,"one_liner":16,"summary_md":17,"topic":18,"github_topics":21,"license":22,"homepage":23,"updated_at":24,"history":25},"zeldaret\u002Ftww",16,"Decompilation of The Legend of Zelda: The Wind Waker","C++",1129,174,155,1142,[],"把《塞尔达传说：风之杖》的 GameCube 机器码逆向还原成可编译的 C++ 源码，供研究与修改。","如果你手上有一份受支持版本的《风之杖》光盘镜像，并且想从可读的 C++ 源码重新构建游戏，这个项目瞄准的正是这件事。但它是进行中的反编译工程，不是拿来就能用的成品源码或非官方移植，更适合当作参与贡献的项目看待。\n\n## 解决什么问题\n\n你想在源码层面研究或修改《风之杖》，可游戏只以 PowerPC 机器码的形式封装在 GameCube 镜像里。传统改 ROM 的做法只能在十六进制编辑器里按地址打补丁，得不到函数名、结构清晰的源码工程，也没法把修改编译回原始二进制。反编译改变的是这一步：你先写 C++ 匹配某个函数，再用工具确认编译器产出的机器码与原始版本一致。\n\n仓库本身不包含任何游戏资源或汇编代码，因此现有的游戏副本是搭建流程的一部分。构建会用到这张镜像；按 README 说明，首次构建成功后可以删掉镜像以节省空间，见[项目说明](https:\u002F\u002Fgithub.com\u002Fzeldaret\u002Ftww\u002Fblob\u002Fmain\u002FREADME.md)。\n\n## 有什么不同\n\n核心机制是“逐函数匹配”的工作流。首次构建成功后会生成 `objdiff.json`，用 objdiff 打开即可把 C++ 编译出的汇编与原始目标文件对照[对照说明](https:\u002F\u002Fgithub.com\u002Fzeldaret\u002Ftww\u002Fblob\u002Fmain\u002FREADME.md)。这让贡献者有一个明确的目标：函数要么匹配、要么不匹配，源文件改动还会触发自动重建。进度按主程序和可重定位模块分开统计，因此能分别看出各部分的完成情况[进度页面](https:\u002F\u002Fzeldaret.github.io\u002Ftww)。\n\n共享的 Ghidra 环境是另一块实用设施。贡献者可以申请远程访问，在已准备好的工程里浏览，再复制一份到本地修改；项目还建议参考《黄昏公主》的反编译工程，因为两者共享大量引擎代码，而且其调试版本的函数更容易读[Ghidra 环境](https:\u002F\u002Fgithub.com\u002Fzeldaret\u002Ftww\u002Fblob\u002Fmain\u002FREADME.md)。代价是它并非一条命令就能完成转换：README 明确说 Ghidra 的输出不够准确，不能直接粘贴进项目，真正的工作量在于理解并重写函数。项目也明确表示不接受主要由 AI 生成或直接从反编译器复制粘贴的提交，想靠自动化推进的人需要调整预期。\n\n## 谁值得试\n\n适合对逆向工程有耐心、愿意反复对照编译器输出的人，尤其是持有受支持 GameCube 版本、想参与长期保存工作的开发者。项目支持美版、欧版、日版、韩版以及日版 kiosk 演示镜像，持有不同区域版本的玩家可以选择自己的构建目标[版本说明](https:\u002F\u002Fgithub.com\u002Fzeldaret\u002Ftww\u002Fblob\u002Fmain\u002FREADME.md)。\n\n不适合只想找可玩 PC 移植的玩家、需要稳定资源管线的 Mod 作者，以及期待拿到源码就能直接编译、不愿比对汇编的初学者。主要想提交生成代码的人同样不合适，因为贡献规则明确拒绝这类改动。\n\n## 使用条件与边界\n\n环境配置按平台区分，但不算轻松。Windows 上 README 推荐用原生工具链而非 WSL 或 msys2，原因是 WSL 下 objdiff 收不到文件系统通知，无法自动重建；还需要把 Python 和 ninja 加入 `%PATH%`。macOS 和 Linux 上主要安装 ninja，`wibo` 会自动下载，用来运行面向 Windows 的工具链[平台配置](https:\u002F\u002Fgithub.com\u002Fzeldaret\u002Ftww\u002Fblob\u002Fmain\u002FREADME.md)。此外你需要一份受支持版本的光盘镜像，并留出把它复制到 `orig\u002F` 的磁盘空间用于首次构建。\n\n真正的门槛在日常维护。匹配上的代码只有保持可读、能稳定构建才有价值，因此编码规范与匹配结果同样重要[贡献指南](https:\u002F\u002Fgithub.com\u002Fzeldaret\u002Ftww\u002Fblob\u002Fmain\u002Fdocs\u002Fdecompiling.md)。现有材料没有说明反编译的整体完成度，所以在假定某部分已完成之前，应先查看进度徽章。\n\n## HotRepo 点评\n\nHotRepo 在 2026-10-25 的 C++ 月榜上记录到该项目排第 16，当月新增 155 星[月榜记录](https:\u002F\u002Fgithub.com\u002Fzeldaret\u002Ftww)。这只是单日的一次观察，没有可比的日榜历史，无法据此判断热度能否持续。投入时间之前，先看当前按主程序和模块拆分的进度：真正该问的不是项目是否存在，而是你关心的部分是否已经有匹配且可读的源码。",{"slug":19,"name":20},"developer-tools","开发工具",[],"CC0-1.0","https:\u002F\u002Fzeldaret.github.io\u002Ftww","2026-10-25T12:17:47Z",[],1792969074]