案例

《旷野之息》:Switch 主程序的逐函数一致性反编译

以 C++ 重新实现《塞尔达传说 旷野之息》Switch v1.5.0 主程序的部分代码,并逐个函数与原始机器码比对。项目自称是反编译与重新实现的混合体:不含游戏素材,生成的 ELF 仅包含已重新实现的函数、无法运行游戏,移植到其他平台也明确不是目标。

使用条件与局限

  • README 称其为 Switch v1.5.0 的实验性、进行中的反编译。About 页面将范围限定为主程序(游戏代码及大部分静态链接库),不包括 RomFS 素材、动态链接的 SDK 库、libcurl、NEX 及 Havok 的大部分代码。函数逐个匹配,不放回原始地址,因此这不是整个可执行文件一致的构建,也不是可游玩的游戏或移植。
  • 设置时需要使用者自己的 Switch 版 main NSO 可执行文件。固定版本的安装脚本会校验其哈希:1.5.0 直接使用,列明的 1.6.0 或 1.9.0 可执行文件则借助项目托管的补丁转换为 1.5.0;不使用 RomFS 或其他游戏内容。About 页面指出,本项目对未拥有该游戏的人毫无用处。
  • 安装指南假定使用 Linux(原生或 WSL)或 macOS,列出 Python 3、Ninja、CMake、ccache、xdelta3、Clang 和 Rust 工具链;固定版本的 CMakeLists 要求 CMake 3.30。安装脚本为游戏代码获取 Clang 4.0.1,并安装 tools/check。子模块提供 sead、agl、EventFlow、NintendoSDK 头文件及共用的 nx-decomp-tools;反编译指南以 Hex-Rays 或 Ghidra 的输出为起点。
  • tools/check 将每个列出的函数与原可执行文件逐一比对,data/uking_functions.csv 记录各函数状态。在固定提交中,该列表的 113,490 个函数里,32,079 个标为一致,514 个不一致,7,601 个进行中,6,270 个为库函数,67,026 个尚未反编译;审阅时可变的 botw.link 徽章显示按大小计 17.493%、按函数数计 30.398%。本合集未运行该检查工具。
  • 固定版本的仓库根目录没有许可证文件,GitHub 也未识别出许可证,因此未声明复用许可;子模块和任天堂内容各有其条款,About 页面也称这项工作处于法律灰色地带。AGENTS.md 为 AI 辅助贡献规定了披露和人工审核要求,但所审文件既未将重建归因于 REA,也未量化 AI 的使用。

关于此条目

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

来源复核于

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

一手来源

  1. README.md GitHub · zeldaret/botw · 修订 e78c024
  2. tools/setup.py GitHub · zeldaret/botw · 修订 e78c024
  3. CMakeLists.txt GitHub · zeldaret/botw · 修订 e78c024
  4. .gitmodules GitHub · zeldaret/botw · 修订 e78c024
  5. tools/config.toml GitHub · zeldaret/botw · 修订 e78c024
  6. data/uking_functions.csv GitHub · zeldaret/botw · 修订 e78c024
  7. AGENTS.md GitHub · zeldaret/botw · 修订 e78c024
  8. docs/about.mdx GitHub · open-ead/botw-decomp-www · 修订 bafa219
  9. docs/contribute/installation.mdx GitHub · open-ead/botw-decomp-www · 修订 bafa219
  10. docs/contribute/how-to-decompile.mdx GitHub · open-ead/botw-decomp-www · 修订 bafa219
  11. viking/src/functions.rs GitHub · open-ead/nx-decomp-tools · 修订 e0eae2f
  12. https://botw.link/progress