案例

sead:Nintendo 第一方 C++ 标准库的反编译重建

反编译 sead,即 Nintendo 静态链接进其第一方游戏的 C++ 标准库,涵盖容器、堆、字符串、数学、文件设备、线程、游戏框架和图形等模块。编译期预设针对《旷野之息》《超级马力欧 奥德赛》《斯普拉遁 3》《王国之泪》和《超级马力欧兄弟 惊奇》所用的较新版本,《旷野之息》等游戏反编译项目以子模块方式引入它。命名来自零售游戏中的调试符号和断言,README 也提醒许多内联与模板函数的名称只是猜测。

使用条件与局限

  • 所审阅的 master 提交(2026-10-11,无发行版)源自 aboood40091/sead,但针对更新的 sead 版本。README 称若干模块目前无法为 Switch 构建,进度请见 GitHub 项目页面;seadVersion.h 在 README 所列之外还加入了《超级马力欧创作家 2》预设和自定义特性组合。
  • 构建本身不需要任何游戏文件。要核对准确性则需要原始 sead,而它只以静态链接的形式随游戏发布:README 建议合法拥有一款带调试符号的较新第一方游戏,并举出《超级马力欧 奥德赛》1.0.0、《斯普拉遁 2》3.1.0 及以下版本,以及 Nintendo Labo 的试点构建。
  • README 要求使用部分支持 C++17 的编译器(如 Clang 3.9 及以上)和 CMake 3.10 及以上版本。CMakeLists 只为 nin(nnSdk,即 Switch)平台构建对象库,并链接宿主项目提供的 NintendoSDK 头文件;根据一个迁移选项,使用 open-ead 的旧版或新版头文件仓库。README 还介绍了 Wii U(cafe)源码,并说明不支持其他平台。
  • README 要求贡献者将非内联函数与原始汇编比对并使其一致,仅容许寄存器分配或明显无害的指令重排差异,并须以 NOT_MATCHING 注释标明;还要借助试点构建和断言信息还原内联。MATCHING_HACK_NX_CLANG 用于包裹影响代码生成的技巧。仓库本身没有检查器或进度数据,CI 只运行 clang-format,因此一致性在使用它的项目中检查。本次审阅未运行任何程序。
  • 仓库没有许可证文件,GitHub 也未识别出许可证;README 称除 Nintendo 外无人拥有 sead 源码。res/ 目录包含反编译的图元渲染器着色器源码,以及随之一同更新的 2 KB 已编译 Wii U 着色器二进制文件。Nintendo 游戏仍受其自身权利约束,所审来源未确立 AI 或 REA 的使用。

关于此条目

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

来源复核于

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

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

一手来源

  1. README.md GitHub · open-ead/sead · 修订 f4178a2
  2. CMakeLists.txt GitHub · open-ead/sead · 修订 f4178a2
  3. include/seadVersion.h GitHub · open-ead/sead · 修订 f4178a2
  4. .github/workflows/lint_pr.yml GitHub · open-ead/sead · 修订 f4178a2
  5. res GitHub · open-ead/sead · 修订 f4178a2
  6. modules/src/gfx/cafe/seadPrimitiveRendererCafe.cpp GitHub · open-ead/sead · 修订 f4178a2
  7. .gitmodules GitHub · zeldaret/botw · 修订 e78c024
  8. https://github.com/aboood40091/sead

同分区更多条目:游戏

游戏分区全部 231 项资源游戏案例(189)