{
  "added_at": "2026-10-19",
  "additional_evidence_urls": [
    "https://github.com/MonsterDruide1/OdysseyDecomp/blob/696db2ff5ed558b053c753de420504b8682f24b0/Contributing.md",
    "https://github.com/MonsterDruide1/OdysseyDecomp/blob/696db2ff5ed558b053c753de420504b8682f24b0/tools/setup.py",
    "https://github.com/MonsterDruide1/OdysseyDecomp/blob/696db2ff5ed558b053c753de420504b8682f24b0/tools/cache-version.json",
    "https://github.com/MonsterDruide1/OdysseyDecomp/blob/696db2ff5ed558b053c753de420504b8682f24b0/CMakeLists.txt",
    "https://github.com/MonsterDruide1/OdysseyDecomp/blob/696db2ff5ed558b053c753de420504b8682f24b0/.gitmodules",
    "https://github.com/MonsterDruide1/OdysseyDecomp/blob/696db2ff5ed558b053c753de420504b8682f24b0/.github/workflows/compile-check.yml",
    "https://github.com/MonsterDruide1/OdysseyDecomp/blob/696db2ff5ed558b053c753de420504b8682f24b0/.github/workflows/test-compile.yml",
    "https://github.com/MonsterDruide1/OdysseyDecomp/blob/696db2ff5ed558b053c753de420504b8682f24b0/.github/workflows/pr-label-ai.yml",
    "https://decomp.dev/MonsterDruide1/OdysseyDecomp",
    "https://github.com/MonsterDruide1/OdysseyDecomp/blob/696db2ff5ed558b053c753de420504b8682f24b0/data/file_list.yml",
    "https://web.archive.org/web/20261020041937/https://decomp.dev/MonsterDruide1/OdysseyDecomp/1.0/696db2ff5ed558b053c753de420504b8682f24b0.json"
  ],
  "category": "reconstruction-cases",
  "description_en": "Reconstructs C++ source for Super Mario Odyssey’s Switch 1.0 main executable and checks each function against the original AArch64 machine code with the shared nx-decomp-tools checker. At the pinned commit its function list marks 18,996 of 74,171 functions matching. The README warns that the build is not a playable game, the repository ships no game assets, and Nintendo libraries such as sead and agl come from open-ead’s separate reconstructions.",
  "description_zh": "为《超级马力欧 奥德赛》Switch 1.0 版主程序重建 C++ 源码，并用共享的 nx-decomp-tools 检查器逐个函数与原始 AArch64 机器码比对。在所审固定提交中，其函数清单将 74,171 个函数中的 18,996 个标为一致。README 提醒构建结果不是可游玩的游戏；仓库不含游戏素材，sead、agl 等任天堂库则来自 open-ead 另行维护的重建项目。",
  "entry_url": "https://awesomerea.org/resources/odyssey-decomp-case/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/odyssey-decomp-case/",
  "evidence_url": "https://github.com/MonsterDruide1/OdysseyDecomp/blob/696db2ff5ed558b053c753de420504b8682f24b0/README.md",
  "group": "cases",
  "id": "odyssey-decomp-case",
  "json_url": "https://awesomerea.org/resources/odyssey-decomp-case/record.json",
  "kind": "case-study",
  "markdown_url": "https://awesomerea.org/resources/odyssey-decomp-case/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/odyssey-decomp-case/index.md",
  "name": "Super Mario Odyssey: per-function matching decompilation of the Switch executable",
  "name_zh": "《超级马力欧 奥德赛》：Switch 主程序的逐函数一致性反编译",
  "reconstruction_method": "matching-decompilation",
  "record_type": "resource",
  "relationship": "independent-reconstruction",
  "requirement_facets": [
    "scope",
    "prerequisites",
    "prerequisites",
    "testing",
    "license"
  ],
  "requirements": [
    "The reviewed master pin is dated 2026-09-29. README describes a work-in-progress decompilation of Super Mario Odyssey 1.0.0 that recreates a source base from scratch and warns that it will not produce a playable game. The GitHub description says all versions, but setup.py builds only 1.0 and skips 1.0.1, 1.1, 1.2 and 1.3 as a to-do, and README lists cross-version comparison and 1.3.0’s different optimisation as open work. Functions are matched individually.",
    "Setup needs the user’s own original 1.0 main NSO executable, compressed or not; setup.py accepts only two SHA-256 hashes, converts it to an ELF and checks that result’s hash too. Only the ExeFS is needed, though README notes that RomFS files help cross-reference names. The repository holds no game assets, while data/ carries the function list and address, symbol and string-literal tables for the 1.0 executable; contributors work from Hex-Rays or Ghidra output.",
    "The documented setup is Linux, WSL or macOS, with a VS Code dev container and a Nix flake as alternatives; it needs Python 3.6+, Ninja, CMake 3.13+, ccache, llvm-objdump, a Rust toolchain and the listed Python modules. setup.py downloads prebuilt clang, ld.lld and the viking checker from the project’s tools-cache release v1.2.6, or builds them from source, and fetches LLVM 3.9.1 libc++ headers. Submodules supply open-ead’s sead, agl, eui, NintendoSDK and NEX headers, a musl build and nx-decomp-tools.",
    "tools/check compares every function marked in data/file_list.yml with the original executable. At the pin the list marks 18,996 functions matching, 47 with minor and 252 with major differences and 54,876 not decompiled, and decomp.dev’s report for the commit gives the same 25.61% of functions, or 15.77% of code bytes. CI fetches the executable through a repository secret, builds and requires the check to pass, and separately checks that every header compiles on its own.",
    "GitHub detects no license and the pinned root has no license file, so no reuse terms are stated; submodules and Nintendo content keep their own terms. A workflow adds an ai label to new pull requests from authors who, in its own words, usually use AI."
  ],
  "requirements_zh": [
    "所审阅的 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 标签。"
  ],
  "targets": [
    "game"
  ],
  "url": "https://github.com/MonsterDruide1/OdysseyDecomp",
  "verification": "source-reviewed",
  "verified_at": "2026-10-19"
}
