{
  "added_at": "2026-10-28",
  "additional_evidence_urls": [
    "https://github.com/snailspeed3/mkw/blob/78572c95c41dbf6cbb7dd251a567e538560ce1d8/configure.py",
    "https://github.com/snailspeed3/mkw/blob/78572c95c41dbf6cbb7dd251a567e538560ce1d8/config/RMCP01/config.yml",
    "https://github.com/snailspeed3/mkw/blob/78572c95c41dbf6cbb7dd251a567e538560ce1d8/config/RMCP01/build.sha1",
    "https://github.com/snailspeed3/mkw/blob/78572c95c41dbf6cbb7dd251a567e538560ce1d8/tools/project.py",
    "https://github.com/snailspeed3/mkw/blob/78572c95c41dbf6cbb7dd251a567e538560ce1d8/CONTRIBUTING.md",
    "https://github.com/snailspeed3/mkw/blob/78572c95c41dbf6cbb7dd251a567e538560ce1d8/HACK.md",
    "https://github.com/snailspeed3/mkw/blob/78572c95c41dbf6cbb7dd251a567e538560ce1d8/.github/workflows/build.yml",
    "https://github.com/snailspeed3/mkw/blob/78572c95c41dbf6cbb7dd251a567e538560ce1d8/LICENSE",
    "https://github.com/snailspeed3/mkw/blob/78572c95c41dbf6cbb7dd251a567e538560ce1d8/lib/gamespy/license.txt"
  ],
  "category": "reconstruction-cases",
  "description_en": "A work-in-progress matching decompilation of Mario Kart Wii that targets the PAL release (RMCP01), rebuilding main.dol and the StaticR.rel module from C and C++ with Metrowerks compilers and checking both against stored SHA-1 values. The build splits these binaries from a user-supplied disc image, and objdiff compares objects during development. The README’s progress badges point to a decomp.dev page that did not resolve at review, and the default branch was last updated in September 2025.",
  "description_zh": "《马力欧卡丁车 Wii》的进行中一致性反编译，目标为 PAL 版（RMCP01）：用 Metrowerks 编译器从 C 与 C++ 源码重建 main.dol 和 StaticR.rel 模块，并与仓库保存的 SHA-1 比对。构建从使用者自备的光盘镜像中拆分这些二进制，开发时用 objdiff 比对目标文件。README 的进度徽章指向的 decomp.dev 页面在审阅时无法访问，默认分支最后更新于 2025 年 9 月。",
  "entry_url": "https://awesomerea.org/resources/mario-kart-wii-decomp-case/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/mario-kart-wii-decomp-case/",
  "evidence_url": "https://github.com/snailspeed3/mkw/blob/78572c95c41dbf6cbb7dd251a567e538560ce1d8/README.md",
  "group": "cases",
  "id": "mario-kart-wii-decomp-case",
  "json_url": "https://awesomerea.org/resources/mario-kart-wii-decomp-case/record.json",
  "kind": "case-study",
  "markdown_url": "https://awesomerea.org/resources/mario-kart-wii-decomp-case/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/mario-kart-wii-decomp-case/index.md",
  "name": "Mario Kart Wii: an in-progress matching decompilation of the PAL release",
  "name_zh": "《马力欧卡丁车 Wii》：进行中的 PAL 版一致性反编译",
  "reconstruction_method": "matching-decompilation",
  "record_type": "resource",
  "relationship": "independent-reconstruction",
  "requirements": [
    "README lists one supported version, RMCP01 (PAL); configure.py defines no other and CI builds only RMCP01. The repository was renamed from riidefi/mkw, which README’s badges and clone command still use, and CONTRIBUTING.md and HACK.md still describe an earlier mkwutil and ppcdis build layout that the pinned tree no longer contains. The output is a Wii main.dol and StaticR.rel, not a PC port.",
    "Copy your own RMCP01 disc image to orig/RMCP01; ISO (GCM), RVZ, WIA, WBFS, CISO, NFS, GCZ and TGC images are accepted, and config.yml records the expected SHA-1 of both binaries. README says the repository contains no game assets or assembly; decomp-toolkit splits main.dol and StaticR.rel locally using the committed, game-derived symbol and split tables.",
    "Builds need Python and ninja on Windows (native tooling recommended), macOS (with wine-crossover) or Linux (an automatically downloaded wibo on x86, Wine elsewhere). configure.py pins decomp-toolkit v1.3.0, objdiff v2.4.0, binutils 2.42-1, sjiswrap v1.2.0, wibo 0.6.16 and the 20240706 compiler bundle, using Metrowerks Wii/0x4201_127 for the game, NW4R, EGG, RFL and MSL code and as the linker, and GC/3.0a5.2 for the Revolution SDK, TRK, DWC and GameSpy libraries.",
    "Objects marked Matching (106 of the 213 listed in configure.py; 105 NonMatching, 2 Equivalent) are compiled from source and the rest of each binary comes from the split originals; the default ninja target checks main.dol and StaticR.rel against config/RMCP01/build.sha1 before reporting progress. CI builds RMCP01 in a private container holding the original files and uploads a progress report. decomp.dev had no report for the repository under either name at review.",
    "The repository carries CC0-1.0; lib/gamespy keeps the GameSpy SDK’s own BSD-style license from IGN Entertainment, and Nintendo’s game, disc contents and the downloaded compilers keep their own rights."
  ],
  "requirements_zh": [
    "README 只列出一个支持版本 RMCP01（PAL 版）；configure.py 未定义其他版本，CI 也只构建 RMCP01。仓库由 riidefi/mkw 更名而来，README 的徽章和克隆命令仍使用旧名；CONTRIBUTING.md 和 HACK.md 仍描述早先基于 mkwutil 与 ppcdis 的构建结构，而固定提交中已不含这些内容。产物是 Wii 的 main.dol 和 StaticR.rel，不是 PC 移植。",
    "需将自己的 RMCP01 光盘镜像复制到 orig/RMCP01，可接受 ISO（GCM）、RVZ、WIA、WBFS、CISO、NFS、GCZ 和 TGC 格式，config.yml 记录了两个二进制的预期 SHA-1。README 称仓库不含任何游戏素材或汇编；decomp-toolkit 依据仓库提交的、源自游戏的符号表和拆分表，在本地拆分 main.dol 与 StaticR.rel。",
    "构建需要 Python 与 ninja，可在 Windows（推荐原生工具）、macOS（需 wine-crossover）或 Linux（x86 上自动下载 wibo，其他架构用 Wine）上进行。configure.py 固定 decomp-toolkit v1.3.0、objdiff v2.4.0、binutils 2.42-1、sjiswrap v1.2.0、wibo 0.6.16 及 20240706 编译器包；游戏、NW4R、EGG、RFL 和 MSL 代码及链接器使用 Metrowerks Wii/0x4201_127，Revolution SDK、TRK、DWC 和 GameSpy 库使用 GC/3.0a5.2。",
    "标为 Matching 的目标文件（configure.py 所列 213 个中有 106 个；105 个为 NonMatching，2 个为 Equivalent）由源码编译，各二进制的其余部分取自拆分出的原始文件；默认 ninja 目标会先按 config/RMCP01/build.sha1 校验 main.dol 和 StaticR.rel，再报告进度。CI 在存放原始文件的私有容器中构建 RMCP01，并上传进度报告。审阅时 decomp.dev 在新旧仓库名下均无报告。",
    "仓库采用 CC0-1.0；lib/gamespy 沿用 IGN Entertainment 为 GameSpy SDK 提供的 BSD 式许可证，任天堂的游戏、光盘内容和下载的编译器各自保留权利。"
  ],
  "targets": [
    "game"
  ],
  "url": "https://github.com/snailspeed3/mkw",
  "verification": "source-reviewed",
  "verified_at": "2026-10-19"
}
