案例
pokeruby:一致构建的《精灵宝可梦 红宝石/蓝宝石》反编译
以 C 源码重建 Game Boy Advance 游戏《精灵宝可梦 红宝石/蓝宝石》,使用 pret 的 agbcc 编译器构建,并附有汇编数据脚本和可编辑图像。一致构建涵盖英文版 1.0、1.1、1.2 修订版、调试构建以及德文初版,并逐一与保存的 SHA-1 比对。另有使用现代 GCC 的构建目标,不以一致为目标。
使用条件与局限
- README 仍称该项目为反汇编,并列出英文版 pokeruby.gba 和 pokesapphire.gba 的哈希;INSTALL.md 另列 1.1/1.2 修订版目标、仅支持 1.0 的调试目标及德文初版构建,仓库中共有 14 个 SHA-1 文件。所审版本已没有 asm/ 目录:游戏代码均为 src/ 下的 C 源码,仅手写的启动与库汇编以及标为 NONMATCHING 的函数除外,后者在一致构建中仍使用内联汇编。贡献指南仍描述早期从汇编逐步转为 C 的流程。
- 构建不读取任何原版 ROM:代码、脚本、文本、图像和音频源文件都在仓库中,因此仓库本身以源文件形式包含游戏内容。德文构建需先运行设置脚本再编译,并在构建任何英文版之前运行还原脚本。
- INSTALL.md 列出 Linux、需 Xcode Command Line Tools 的 macOS,以及通过 WSL 或 devkitPro MSYS2 环境的 Windows,并要求 build-essential、git、libpng 和 devkitARM。需克隆、构建 pret 的 agbcc 并安装到仓库中;make modern 则改用 devkitARM 的 arm-none-eabi-gcc,也可通过 TOOLCHAIN 指定其他工具链。
- 设置 COMPARE=1 时,Makefile 会用对应的 SHA-1 文件检查所选构建。GitHub Actions 工作流比对英文版 1.0/1.1/1.2 的红宝石和蓝宝石构建及德文初版各变体,随后编译 NONMATCHING 源码和 modern 目标但不作比对;README 的构建徽章仍指向 Travis CI。哈希一致说明 ROM 字节相同,并不说明 NONMATCHING C 代码或 modern 构建的行为相同。本合集未构建这些 ROM。
- 仓库没有许可证文件,复用条款未作说明;原游戏内容仍归其权利人所有,agbcc 和 devkitPro 组件各自适用其条款。所审来源未确立 AI 或 REA 使用归因。
关于此条目
- 类型
- 案例
- 类别
- 独立重建案例
- 关联
- 独立重建项目
- 目标
- 游戏
来源复核于
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · pret/pokeruby · 修订 5784633
- INSTALL.md GitHub · pret/pokeruby · 修订 5784633
- CONTRIBUTING.md GitHub · pret/pokeruby · 修订 5784633
- Makefile GitHub · pret/pokeruby · 修订 5784633
- config.mk GitHub · pret/pokeruby · 修订 5784633
- ruby.sha1 GitHub · pret/pokeruby · 修订 5784633
- sapphire.sha1 GitHub · pret/pokeruby · 修订 5784633
- .github/workflows/build.yml GitHub · pret/pokeruby · 修订 5784633
- src/money.c GitHub · pret/pokeruby · 修订 5784633