{
  "added_at": "2026-10-27",
  "additional_evidence_urls": [
    "https://github.com/vabold/Kinoko/blob/550c97a299c4de4a9f7cb90bc79cf8c7c768557c/STATUS.md",
    "https://github.com/vabold/Kinoko/blob/550c97a299c4de4a9f7cb90bc79cf8c7c768557c/docs/KRKG.md",
    "https://github.com/vabold/Kinoko/blob/550c97a299c4de4a9f7cb90bc79cf8c7c768557c/docs/TestCase.md",
    "https://github.com/vabold/Kinoko/blob/550c97a299c4de4a9f7cb90bc79cf8c7c768557c/source/host/KTestSystem.cc",
    "https://github.com/vabold/Kinoko/blob/550c97a299c4de4a9f7cb90bc79cf8c7c768557c/source/game/system/ResourceManager.cc",
    "https://github.com/vabold/Kinoko/blob/550c97a299c4de4a9f7cb90bc79cf8c7c768557c/configure.py",
    "https://github.com/vabold/Kinoko/blob/550c97a299c4de4a9f7cb90bc79cf8c7c768557c/CMakeLists.txt",
    "https://github.com/vabold/Kinoko/blob/550c97a299c4de4a9f7cb90bc79cf8c7c768557c/.github/workflows/build.yml",
    "https://github.com/vabold/Kinoko/blob/550c97a299c4de4a9f7cb90bc79cf8c7c768557c/tools/status_check.py",
    "https://github.com/vabold/Kinoko/blob/550c97a299c4de4a9f7cb90bc79cf8c7c768557c/LICENSE",
    "https://github.com/vabold/Kinoko/releases/tag/0.6"
  ],
  "category": "reconstruction-cases",
  "description_en": "Re-implements Mario Kart Wii’s physics engine in C++ as a command-line simulator, continuing stblr/Hanachan’s goal of perfectly accurate time-trial ghost replay. Each test case replays a recorded ghost through the engine and compares kart position, rotation, velocities, speed and checkpoint state frame by frame with a trace captured from the original game. It is a behavioural reimplementation of the physics only, not a matching decompilation, and has no graphical frontend.",
  "description_zh": "以 C++ 将 Mario Kart Wii 的物理引擎重新实现为命令行模拟器，延续 stblr/Hanachan 的目标：完全准确地回放计时赛幽灵记录。每个测试用例让引擎重放一条幽灵记录，并逐帧将赛车的位置、旋转、速度向量、速率和检查点状态与从原版游戏采集的轨迹比较。它只在行为层面重新实现物理部分，并非一致性反编译，也没有图形前端。",
  "entry_url": "https://awesomerea.org/resources/kinoko-mkwii-physics-reimplementation-case/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/kinoko-mkwii-physics-reimplementation-case/",
  "evidence_url": "https://github.com/vabold/Kinoko/blob/550c97a299c4de4a9f7cb90bc79cf8c7c768557c/README.md",
  "group": "cases",
  "id": "kinoko-mkwii-physics-reimplementation-case",
  "json_url": "https://awesomerea.org/resources/kinoko-mkwii-physics-reimplementation-case/record.json",
  "kind": "case-study",
  "markdown_url": "https://awesomerea.org/resources/kinoko-mkwii-physics-reimplementation-case/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/kinoko-mkwii-physics-reimplementation-case/index.md",
  "name": "Kinoko: reimplementing Mario Kart Wii’s physics engine for exact ghost replay",
  "name_zh": "Kinoko：为精确回放幽灵记录而重新实现 Mario Kart Wii 物理引擎",
  "reconstruction_method": "engine-reimplementation",
  "record_type": "resource",
  "relationship": "independent-reconstruction",
  "requirements": [
    "README describes a C++ reimplementation of Mario Kart Wii’s physics engine aiming at perfectly accurate ghost replay. At the reviewed commit STATUS.md lists 55 time-trial ghost test cases, each marked synchronized for every frame; the latest GitHub release, 0.6 (2025-09-04), adds x86-64 Linux, macOS and Windows binaries of the simulator. Source comments name addresses in the original game, but nothing rebuilds its executable; README points to the separate riidefi/mkw matching decompilation for that.",
    "Running needs the Race folder (the Common and course archives) from your own Mario Kart Wii disc, placed relative to the executable; the repository ships no game files, and README requires any contributed frontend not to distribute in-game assets. The committed samples are time-trial ghost files (.rkg) with per-frame .krkg reference traces that README says come from a custom vabold/mkw-sp build running the PAL release; such traces are verification data captured from the game, as is common for reconstruction projects.",
    "README lists g++ 13.1 with C++23, ninja 1.3 and Python 3.6; configure.py generates the ninja build and compiles testCases.json into the binary suite file. CMakeLists.txt also exposes a libkinoko library target for embedding the engine in other C++23 projects. CI builds with GCC 14 on Ubuntu; the program is a command-line host with test and replay modes, and README says no GUI is planned.",
    "kinoko test compares position, rotation, internal and external velocity, speed, acceleration, soft speed limit, race completion and checkpoint values with every .krkg frame by exact equality and reports the first desynchronized frame; kinoko replay checks whether a ghost finishes with the time in its .rkg header. CI runs the suite with runtime files fetched from a secret-configured URL and checks that STATUS.md is current. These are project-reported results.",
    "LICENSE applies MIT (copyright vabold, 2022–2026) to the project; Mario Kart Wii and its game data keep Nintendo’s rights, and the bundled doxygen-awesome-css theme has its own license file."
  ],
  "requirements_zh": [
    "README 介绍项目是 Mario Kart Wii 物理引擎的 C++ 重新实现，目标是完全准确地回放幽灵记录。所审提交中，STATUS.md 列出 55 个计时赛幽灵测试用例，全部标为逐帧同步；最新 GitHub 发布版 0.6（2025-09-04）附有模拟器的 x86-64 Linux、macOS 和 Windows 二进制文件。源码注释标明了原版游戏中的地址，但项目不会重新构建游戏可执行文件；README 将这一方向指向独立的 riidefi/mkw 一致性反编译项目。",
    "运行时需要使用者自备 Mario Kart Wii 光盘中的 Race 文件夹（Common 与赛道归档），并按相对可执行文件的路径放置；仓库不附带任何游戏文件，README 也要求贡献的前端不得分发游戏内素材。仓库中的样例是计时赛幽灵文件（.rkg）及逐帧 .krkg 参照轨迹；README 称后者由运行 PAL 版游戏的定制 vabold/mkw-sp 构建生成。这类轨迹是从游戏中采集的验证数据，在重建项目中很常见。",
    "README 列出 g++ 13.1（C++23）、ninja 1.3 和 Python 3.6；configure.py 生成 ninja 构建，并把 testCases.json 编译为二进制测试套件文件。CMakeLists.txt 还提供 libkinoko 库目标，可将引擎嵌入其他 C++23 项目。CI 在 Ubuntu 上使用 GCC 14 构建；程序是带测试与回放模式的命令行宿主，README 表示暂无 GUI 计划。",
    "kinoko test 以精确相等的方式，将位置、旋转、内部与外部速度、速率、加速度、软速度上限、比赛完成度和检查点数值与每一帧 .krkg 数据比较，并报告第一个失去同步的帧；kinoko replay 检查幽灵记录完赛时间是否与 .rkg 文件头中的时间一致。CI 使用从机密配置 URL 获取的运行文件执行测试套件，并检查 STATUS.md 是否为最新。这些都是项目报告的结果。",
    "LICENSE 对项目采用 MIT（版权归 vabold，2022–2026）；Mario Kart Wii 及其游戏数据仍归 Nintendo 所有，随附的 doxygen-awesome-css 主题另有许可证文件。"
  ],
  "targets": [
    "game"
  ],
  "url": "https://github.com/vabold/Kinoko",
  "verification": "source-reviewed",
  "verified_at": "2026-10-19"
}
