案例

《宝可梦 火红/叶绿》:生成一致 ROM 的 Game Boy Advance 反编译重建

为 Game Boy Advance 英文版《宝可梦 火红/叶绿》重建可构建的 C 源码,游戏脚本和数据以汇编指令形式保存。默认的 agbcc 构建可生成六个 ROM 镜像,涵盖两款游戏的 1.0 与 1.1 版本及两个标为 switch 的变体,并分别按各自的 SHA-1 清单校验。图像和音频源文件已提交在仓库中,因此文档所述的构建流程不读取原 ROM。

使用条件与局限

  • README 将其描述为英文版火红与叶绿的反编译项目,可构建六个 ROM 镜像:两款游戏的原版与 rev1 版,以及名为 _switch 的变体(config.mk 以修订版 10 构建)。INSTALL.md 说明 make、make leafgreen 及 rev1 目标;Makefile 另有 _switch 目标。大部分代码为 C,启动代码、m4a 音频库的一部分及 GameCube 多重启动库仍为汇编,三个多重启动程序以预编译 .gba 二进制形式收录。产物是 GBA ROM,不是原生 PC 移植。
  • 文档所述的构建不读取原 ROM:图像、音频采样和地图数据以 PNG、WAV/AIF 和 JSON 文件提交在仓库中,由附带工具转换。六份 .sha1 清单列出目标镜像(例如 pokefirered.gba 的 SHA-1 为 41cb23d8dccc8ebd7c649cd8fbb58eeace6e2fdc),README 链接各镜像的 No-Intro 条目。贡献者辅助脚本 compare.sh 只在存在 baserom.gba 时对其与产物做十六进制差异比较。
  • INSTALL.md 涵盖 Windows(推荐 WSL1,也可用 msys2 或 Cygwin)、macOS 和 Linux。在 Debian/Ubuntu 上需 build-essential、binutils-arm-none-eabi、git 和 libpng-dev;一致性构建还需先构建 pret/agbcc 并安装到仓库中。make modern 及对应的 *_modern 目标使用 devkitARM 的 arm-none-eabi-gcc,TOOLCHAIN 变量可指定其他 ARM 工具链。
  • make compare 及各 compare_* 目标将构建出的镜像与对应 .sha1 清单比对;config.mk 注明比对只适用于非现代编译器构建。CI 比对全部六个镜像,并另外构建现代目标。docs/bugs_and_glitches.md 列出原游戏中的缺陷,可选的 BUGFIX 和 UBFIX 定义会修改这些行为,因此此类构建有意偏离原版。这些检查确认所列镜像的字节一致性,不覆盖游戏行为路径;本合集未自行构建 ROM。
  • 仓库没有顶层许可证文件,GitHub 也未识别出许可证;许可证文件只覆盖部分附带工具,agbcc 的 GCC 源码附 GPL v2。原游戏的代码、图像和音频仍受其权利人约束。所审来源未确立 AI 或 REA 使用,也不主张运行复现。

关于此条目

类型
案例
类别
独立重建案例
关联
独立重建项目
目标
游戏

来源复核于

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

一手来源

  1. README.md GitHub · pret/pokefirered · 修订 037335f
  2. INSTALL.md GitHub · pret/pokefirered · 修订 037335f
  3. config.mk GitHub · pret/pokefirered · 修订 037335f
  4. Makefile GitHub · pret/pokefirered · 修订 037335f
  5. firered.sha1 GitHub · pret/pokefirered · 修订 037335f
  6. leafgreen.sha1 GitHub · pret/pokefirered · 修订 037335f
  7. firered_rev1.sha1 GitHub · pret/pokefirered · 修订 037335f
  8. leafgreen_rev1.sha1 GitHub · pret/pokefirered · 修订 037335f
  9. firered_switch.sha1 GitHub · pret/pokefirered · 修订 037335f
  10. leafgreen_switch.sha1 GitHub · pret/pokefirered · 修订 037335f
  11. compare.sh GitHub · pret/pokefirered · 修订 037335f
  12. .github/workflows/build.yml GitHub · pret/pokefirered · 修订 037335f
  13. docs/bugs_and_glitches.md GitHub · pret/pokefirered · 修订 037335f
  14. tools GitHub · pret/pokefirered · 修订 037335f
  15. gcc/COPYING GitHub · pret/agbcc · 修订 da598c1