案例
pw:Pokéwalker 固件的一致性反编译重建
以 C 语言重建 Pokéwalker 的固件。Pokéwalker 是《宝可梦 心金/魂银》配套的计步器配件,采用 Renesas H8/38606 微控制器。README 报告,使用从使用者自备的零售固件镜像中取得的美术素材及受支持的 Renesas 编译器套件,可重新构建出逐字节相同的 48 KiB 镜像;没有该镜像时,项目原创的占位美术只能生成不一致的参考构建。作者称其结合已公开的硬件研究,对零售二进制文件、心金/魂银 ROM 及候选编译器进行了反汇编和反编译。
使用条件与局限
- 所审阅的 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 均无关联;所审来源未确立 AI 或 REA 的使用。
关于此条目
- 类型
- 案例
- 类别
- 独立重建案例
- 关联
- 独立重建项目
- 目标
- 固件 · 游戏
来源复核于
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · lumirth/pw · 修订 6dc7bc0
- docs/build.md GitHub · lumirth/pw · 修订 6dc7bc0
- docs/source.md GitHub · lumirth/pw · 修订 6dc7bc0
- docs/references.md GitHub · lumirth/pw · 修订 6dc7bc0
- docs/third-party.md GitHub · lumirth/pw · 修订 6dc7bc0
- assets/README.md GitHub · lumirth/pw · 修订 6dc7bc0
- assets/placeholders/LICENSE.md GitHub · lumirth/pw · 修订 6dc7bc0
- config/toolchains.json GitHub · lumirth/pw · 修订 6dc7bc0
- LICENSE GitHub · lumirth/pw · 修订 6dc7bc0