案例

《超级马力欧 奥德赛》:Switch 主程序的逐函数一致性反编译

为《超级马力欧 奥德赛》Switch 1.0 版主程序重建 C++ 源码,并用共享的 nx-decomp-tools 检查器逐个函数与原始 AArch64 机器码比对。在所审固定提交中,其函数清单将 74,171 个函数中的 18,996 个标为一致。README 提醒构建结果不是可游玩的游戏;仓库不含游戏素材,sead、agl 等任天堂库则来自 open-ead 另行维护的重建项目。

使用条件与局限

  • 所审阅的 master 固定版本日期为 2026 年 9 月 29 日。README 将其描述为进行中的《超级马力欧 奥德赛》1.0.0 反编译,目标是从零重建一套源码,并提醒构建结果无法作为游戏游玩。GitHub 简介称覆盖所有版本,但 setup.py 只构建 1.0,1.0.1、1.1、1.2 与 1.3 均作为待办跳过;README 也把跨版本比对和 1.3.0 不同的优化方式列为未完成工作。函数逐个匹配,并非整份可执行文件一致,也不是移植。
  • 初始化需要使用者自备原始 1.0 版 main NSO 可执行文件(压缩或未压缩均可);setup.py 只接受两个指定的 SHA-256 哈希,将其转换为 ELF 后也会校验结果的哈希。只需 ExeFS,不过 README 指出 RomFS 文件有助于对照名称。仓库不含游戏素材,data/ 中存放函数清单以及 1.0 可执行文件的地址、符号和字符串字面量表;贡献者依据 Hex-Rays 或 Ghidra 的输出工作。
  • 文档说明的环境是 Linux、WSL 或 macOS,也可使用 VS Code 开发容器或 Nix flake;需要 Python 3.6+、Ninja、CMake 3.13+、ccache、llvm-objdump、Rust 工具链及列明的 Python 模块。setup.py 从项目工具缓存的 v1.2.6 发布下载预编译的 clang、ld.lld 与 viking 检查器(也可从源码构建),并获取 LLVM 3.9.1 的 libc++ 头文件。子模块提供 open-ead 维护的 sead、agl、eui、NintendoSDK 与 NEX 头文件、一份 musl 构建以及 nx-decomp-tools。
  • tools/check 会把 data/file_list.yml 中登记的每个函数与原始可执行文件比对。在固定版本中,该清单标记 18,996 个函数一致、47 个有细微差异、252 个有较大差异、54,876 个尚未反编译;decomp.dev 针对该提交的报告同样给出 25.61% 的函数一致率,按代码字节计为 15.77%。CI 通过仓库密钥获取可执行文件,构建后要求检查通过,另行检查每个头文件都能单独编译;本合集均未运行。
  • GitHub 未识别出许可证,固定版本根目录也没有许可证文件,因此未声明任何复用条款;子模块与任天堂的内容仍受各自条款约束。有一个工作流会给按其说法“通常使用 AI”的作者新开的拉取请求加上 ai 标签,但所审文件既未量化 AI 的使用程度,也未将重建归功于 REA。

关于此条目

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

来源复核于

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

一手来源

  1. README.md GitHub · MonsterDruide1/OdysseyDecomp · 修订 696db2f
  2. Contributing.md GitHub · MonsterDruide1/OdysseyDecomp · 修订 696db2f
  3. tools/setup.py GitHub · MonsterDruide1/OdysseyDecomp · 修订 696db2f
  4. tools/cache-version.json GitHub · MonsterDruide1/OdysseyDecomp · 修订 696db2f
  5. CMakeLists.txt GitHub · MonsterDruide1/OdysseyDecomp · 修订 696db2f
  6. .gitmodules GitHub · MonsterDruide1/OdysseyDecomp · 修订 696db2f
  7. .github/workflows/compile-check.yml GitHub · MonsterDruide1/OdysseyDecomp · 修订 696db2f
  8. .github/workflows/test-compile.yml GitHub · MonsterDruide1/OdysseyDecomp · 修订 696db2f
  9. .github/workflows/pr-label-ai.yml GitHub · MonsterDruide1/OdysseyDecomp · 修订 696db2f
  10. https://decomp.dev/MonsterDruide1/OdysseyDecomp