案例

game-and-watch-patch:任天堂 Game & Watch 自定义固件

面向马里奥和塞尔达两款 Game & Watch 掌机的自定义固件:把新编写的 C 代码修补进使用者自己的原厂固件备份,使原厂固件可与 retro-go 模拟器并存。Python 补丁工具会挂接原厂函数调用,重新定位原厂代码与数据并以 LZMA 压缩以腾出闪存,还能把两款机型的固件合并为一个镜像。仓库提交的符号表、交叉引用分析脚本和分析用 ELF 生成器支撑逆向工作,另有一份日志记录作者首次修补固件的过程。

目标
固件 · 游戏
类别
独立重建案例
关联
独立重建项目
来源复核于

使用条件与局限

  • 所审阅的 main 提交(2026-10-19)比最后一个标签 v0.12(2025-02-25)多 111 个提交,各版本均未附带二进制文件;代码重定位、合并镜像、分析工具和大部分测试都是在该标签之后加入的。README 列出的马里奥版功能(整个固件放入内部闪存、可移除歌曲彩蛋和睡眠插图、超时设置、时钟图形修改)多于塞尔达版,并称塞尔达版节省外部闪存的功能尚待实现。
  • 需要使用者自己马里奥或塞尔达机型的内部与外部闪存备份,命名为 internal_flash_backup_<device>.bin 和 flash_backup_<device>.bin 放入仓库;补丁工具会拒绝 SHA-1 与原厂固件不符的镜像。仓库未提交任何固件、ROM 或密钥:tools/re/README.md 说明 .syms 文件只含项目自己的注释,并要求绝不提交由任天堂固件派生的 ELF;docs/mario.md 也说明仓库不托管任何 ROM 或 ROM 修改补丁。
  • 目标硬件是掌机所用的 STM32H7B0 微控制器。构建需要 GNU Make、arm-none-eabi GCC 工具链和 Python 3.6+,以及 Pillow、NumPy、pycryptodome、pyelftools、capstone 和 colorama;烧录使用 gnwmanager,马里奥版的仅内部闪存模式还需要打过补丁的 OpenOCD,以使用未公开的额外 128 KB 内部闪存。基于 Ubuntu 22.04 的 Dockerfile 会为 x86-64 Linux 主机安装 gnwmanager 提供的 OpenOCD 和 Arm 工具链。
  • tests/test_golden.py 按固定选项组合重新构建,并将输出的 SHA-1 与 tests/golden.json 比对;这些哈希针对 Arm GNU Toolchain 15.2.Rel1 记录,缺少原厂备份或 GCC 版本不同时会跳过。其他单元测试涵盖重定位、Thumb 汇编、布局和符号,tools/emu 则在 GWemu 模拟器中对修补后的镜像运行菜单测试。CI 只运行 pre-commit 代码检查并构建 Docker 镜像;本次未运行任何内容。
  • COPYING 为 BSD-3-Clause(2020,Konrad Beckmann、Thomas Roth、STMicroelectronics);随仓库提供的 ST CMSIS 与 HAL 源码保留各自声明,原厂固件和游戏仍归任天堂所有。仓库中的 CLAUDE.md 是写给 Claude Code 的指引,但不能据此认定由 AI 编写;所审阅的来源未表明使用 REA。

关于此条目

说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。

报告条目过时 建议修正翻译

一手来源

  1. README.md GitHub · BrianPugh/game-and-watch-patch · 修订 857bb80
  2. COPYING GitHub · BrianPugh/game-and-watch-patch · 修订 857bb80
  3. Makefile GitHub · BrianPugh/game-and-watch-patch · 修订 857bb80
  4. requirements.txt GitHub · BrianPugh/game-and-watch-patch · 修订 857bb80
  5. docker/Dockerfile GitHub · BrianPugh/game-and-watch-patch · 修订 857bb80
  6. patches/firmware.py GitHub · BrianPugh/game-and-watch-patch · 修订 857bb80
  7. patches/amalgam.py GitHub · BrianPugh/game-and-watch-patch · 修订 857bb80
  8. tools/re/README.md GitHub · BrianPugh/game-and-watch-patch · 修订 857bb80
  9. tools/emu/README.md GitHub · BrianPugh/game-and-watch-patch · 修订 857bb80
  10. tests/test_golden.py GitHub · BrianPugh/game-and-watch-patch · 修订 857bb80
  11. tests/golden.json GitHub · BrianPugh/game-and-watch-patch · 修订 857bb80
  12. docs/journal.md GitHub · BrianPugh/game-and-watch-patch · 修订 857bb80
  13. docs/mario.md GitHub · BrianPugh/game-and-watch-patch · 修订 857bb80
  14. .pre-commit-config.yaml GitHub · BrianPugh/game-and-watch-patch · 修订 857bb80
  15. CLAUDE.md GitHub · BrianPugh/game-and-watch-patch · 修订 857bb80
  16. https://github.com/BrianPugh/game-and-watch-patch/releases/tag/v0.12

同分区更多条目:游戏

游戏分区全部 243 项资源游戏案例(201)