案例

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

为 Game Boy Advance 版《宝可梦 绿宝石》重建可构建的 C 源码,游戏脚本和数据以汇编指令形式保存。默认的 agbcc 构建生成 pokeemerald.gba,make compare 将其与英文原版 ROM 的 SHA-1 比对;可选的现代 GCC 构建不做哈希校验。图像和音频源文件已提交在仓库中,因此文档所述的构建流程不读取原 ROM。

使用条件与局限

  • README 将其描述为《宝可梦 绿宝石》的反编译项目,构建单一 ROM:pokeemerald.gba;Makefile 设定游戏代码 BPEE、修订版 0,CI 构建英文版。大部分游戏代码为 C,启动代码、m4a 音频库的一部分及 GameCube 多重启动库仍为汇编文件,三个多重启动程序(树果修复、Colosseum、e-Reader)以预编译 .gba 二进制形式收录。产物是 GBA ROM,不是原生 PC 移植。
  • 文档所述的构建不读取原 ROM:图像、音频采样和地图数据以 PNG、WAV/AIF 和 JSON 文件提交在仓库中,由附带工具转换。rom.sha1 记录目标英文版的 SHA-1 为 f3ae088181bf583e55daf962a92bb46f4f1d07b7,README 链接该 ROM 的 No-Intro 条目。
  • INSTALL.md 涵盖 Windows(推荐 WSL1,也可用 msys2 或 Cygwin)、macOS 和 Linux。在 Debian/Ubuntu 上需 build-essential、binutils-arm-none-eabi、git 和 libpng-dev;一致性构建还需先构建 pret/agbcc 并安装到仓库中。make modern 则改用 devkitARM 的 arm-none-eabi-gcc,输出 pokeemerald_modern.gba。
  • make compare 将构建出的 ROM 与 rom.sha1 做 SHA-1 校验,匹配时报告 pokeemerald.gba: OK;Makefile 注明比对只适用于非现代编译器构建。CI 以 COMPARE=1 构建,并另外构建现代目标。这些检查确认该单一版本的字节一致性,不覆盖游戏行为路径;本合集未自行构建 ROM。
  • 仓库没有顶层许可证文件,GitHub 也未识别出许可证;许可证文件只覆盖部分附带工具,agbcc 的 GCC 源码附 GPL v2。原游戏的代码、图像和音频仍受其权利人约束。所审来源未确立 AI 或 REA 使用,也不主张运行复现。

关于此条目

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

来源复核于

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

一手来源

  1. README.md GitHub · pret/pokeemerald · 修订 731ad5b
  2. INSTALL.md GitHub · pret/pokeemerald · 修订 731ad5b
  3. Makefile GitHub · pret/pokeemerald · 修订 731ad5b
  4. rom.sha1 GitHub · pret/pokeemerald · 修订 731ad5b
  5. .github/workflows/build.yml GitHub · pret/pokeemerald · 修订 731ad5b
  6. tools GitHub · pret/pokeemerald · 修订 731ad5b
  7. gcc/COPYING GitHub · pret/agbcc · 修订 da598c1