{
  "added_at": "2026-10-27",
  "additional_evidence_urls": [
    "https://github.com/lumirth/pw/blob/6dc7bc09950078fa3fe0dffa4dae34e9549a99da/docs/build.md",
    "https://github.com/lumirth/pw/blob/6dc7bc09950078fa3fe0dffa4dae34e9549a99da/docs/source.md",
    "https://github.com/lumirth/pw/blob/6dc7bc09950078fa3fe0dffa4dae34e9549a99da/docs/references.md",
    "https://github.com/lumirth/pw/blob/6dc7bc09950078fa3fe0dffa4dae34e9549a99da/docs/third-party.md",
    "https://github.com/lumirth/pw/blob/6dc7bc09950078fa3fe0dffa4dae34e9549a99da/assets/README.md",
    "https://github.com/lumirth/pw/blob/6dc7bc09950078fa3fe0dffa4dae34e9549a99da/assets/placeholders/LICENSE.md",
    "https://github.com/lumirth/pw/blob/6dc7bc09950078fa3fe0dffa4dae34e9549a99da/config/toolchains.json",
    "https://github.com/lumirth/pw/blob/6dc7bc09950078fa3fe0dffa4dae34e9549a99da/LICENSE"
  ],
  "category": "reconstruction-cases",
  "description_en": "Reconstructs as C the firmware of the Pokéwalker, the pedometer accessory for Pokémon HeartGold and SoulSilver, for its Renesas H8/38606 microcontroller. With artwork from the user’s retail firmware image and a supported Renesas compiler suite, the README reports a byte-identical rebuild of the 48 KiB image; without that image, original placeholder art gives a non-matching reference build. The author describes disassembling and decompiling the retail binary, the HeartGold/SoulSilver ROMs and the candidate compilers, alongside published hardware research.",
  "description_zh": "以 C 语言重建 Pokéwalker 的固件。Pokéwalker 是《宝可梦 心金／魂银》配套的计步器配件，采用 Renesas H8/38606 微控制器。README 报告，使用从使用者自备的零售固件镜像中取得的美术素材及受支持的 Renesas 编译器套件，可重新构建出逐字节相同的 48 KiB 镜像；没有该镜像时，项目原创的占位美术只能生成不一致的参考构建。作者称其结合已公开的硬件研究，对零售二进制文件、心金／魂银 ROM 及候选编译器进行了反汇编和反编译。",
  "entry_url": "https://awesomerea.org/resources/pokewalker-matching-decomp-case/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/pokewalker-matching-decomp-case/",
  "evidence_url": "https://github.com/lumirth/pw/blob/6dc7bc09950078fa3fe0dffa4dae34e9549a99da/README.md",
  "group": "cases",
  "id": "pokewalker-matching-decomp-case",
  "json_url": "https://awesomerea.org/resources/pokewalker-matching-decomp-case/record.json",
  "kind": "case-study",
  "markdown_url": "https://awesomerea.org/resources/pokewalker-matching-decomp-case/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/pokewalker-matching-decomp-case/index.md",
  "name": "pw: a matching decompilation of the Pokéwalker firmware",
  "name_zh": "pw：Pokéwalker 固件的一致性反编译重建",
  "reconstruction_method": "matching-decompilation",
  "record_type": "resource",
  "relationship": "independent-reconstruction",
  "requirements": [
    "The reviewed main branch is a single initial-release commit of 2026-09-14 with no tags or releases. The README calls the matching reconstruction complete for one image, 49,152 bytes with SHA-256 f9e210a3…d15607, and assumes it is the only Pokéwalker firmware. The source keeps 40 C90 modules whose file names encode the observed link order, and changes must preserve matching.",
    "Users supply a lawfully obtained Pokéwalker firmware image, used only for artwork, and the Renesas H8, H8S, H8SX family C compiler package; neither is distributed, and the README withholds acquisition instructions. Only suites 6.02.01 and 6.02.02 are reported to reproduce the image. Missing artwork falls back to the bundled placeholders, which normally changes the output hash.",
    "Builds are reported on macOS Arm64, where the 32-bit Windows compiler runs through Wibo and Rosetta, and natively on Windows x86_64; other hosts are unverified. uv supplies Python 3.11+ (3.12 by default), Ninja and Pillow from uv.lock, configure.py generates build.ninja, and macOS configuration downloads and validates the recorded Wibo release.",
    "ninja verify requires the retail size and SHA-256 and writes verified.json; the build guide asks for that check under both compiler suites and records per-module input and output hashes to catch stale objects. Host unit tests cover the build utilities, a development check adds clang-format, Ruff and Cppcheck, and there is no CI workflow. Matching is author-reported.",
    "Original project material is dedicated to the public domain under CC0 1.0, and the placeholder artwork carries its own CC0 notice; retail firmware and extracted artwork keep their rights. include/startup/iodefine.h is a retained Renesas HEW device header outside the CC0 dedication with no license grant, and the compiler-archive reader credits MIT-licensed ISx and Unshield. The project states no affiliation with Nintendo, The Pokémon Company, GAME FREAK or Renesas."
  ],
  "requirements_zh": [
    "所审阅的 main 分支只有 2026-09-14 的一次初始发布提交，没有标签或发行版。README 称针对单一镜像的一致性重建已经完成；该镜像大小为 49,152 字节，SHA-256 为 f9e210a3…d15607，项目假定它是唯一的 Pokéwalker 固件。源码保留为 40 个 C90 模块，文件名体现观察到的链接顺序，任何修改都必须保持一致。",
    "使用者需自备合法取得的 Pokéwalker 固件镜像（只用于美术素材），以及 Renesas H8、H8S、H8SX 系列 C 编译器套件；仓库不分发两者，README 也不提供获取方法。据报告只有 6.02.01 和 6.02.02 两个套件能重现该镜像。缺少美术素材时会改用随附的占位素材，通常会使输出哈希不同。",
    "据报告已在 macOS Arm64（32 位 Windows 编译器经 Wibo 和 Rosetta 运行）及 Windows x86_64（原生运行）上构建成功，其他宿主未经验证。uv 依 uv.lock 提供 Python 3.11 及以上版本（默认 3.12）、Ninja 和 Pillow，configure.py 生成 build.ninja；在 macOS 上，配置步骤会下载并校验记录在案的 Wibo 版本。",
    "ninja verify 要求与零售镜像的大小及 SHA-256 一致，并写出 verified.json；构建指南要求在两个编译器套件下都完成这项检查，并记录每个模块的输入和输出哈希以发现过期的目标文件。宿主单元测试覆盖构建工具，开发检查另加 clang-format、Ruff 和 Cppcheck，项目没有 CI 工作流。一致性结果为作者报告。",
    "项目原创内容以 CC0 1.0 贡献至公有领域，占位美术另附 CC0 声明；零售固件及提取的美术素材仍受各自权利约束。include/startup/iodefine.h 是保留的 Renesas HEW 器件头文件，不在 CC0 贡献范围内，也没有许可授权；编译器归档读取器注明借鉴采用 MIT 许可的 ISx 和 Unshield。项目声明与 Nintendo、The Pokémon Company、GAME FREAK 及 Renesas 均无关联。"
  ],
  "targets": [
    "firmware",
    "game"
  ],
  "url": "https://github.com/lumirth/pw",
  "verification": "source-reviewed",
  "verified_at": "2026-10-19"
}
