案例
《索尼克 Advance》1 与 2:一致性 GBA 反编译及宽屏移植
将 Game Boy Advance 版《索尼克 Advance》和《索尼克 Advance 2》重建为 C 源码,借助 SAT-R 的 agbcc 分支重新构建六个列有哈希值的 ROM,同一套代码还可编译为面向 Linux、macOS 和 Windows 的宽屏 SDL 移植版,以及 PSP 和 PS2 版本。README 报告《索尼克 Advance 2》已全部由 C 构建,仍有约 60 个函数不一致。提取出的图像、音乐和数据都提交在仓库中,因此构建时不读取原 ROM。
使用条件与局限
- README 标明项目尚未完成、仍在积极开发。它列出六个附 SHA-1 的 ROM 目标:《索尼克 Advance》(欧版),以及《索尼克 Advance 2》的美版、欧版、日版、日本 Virtual Console 版和 2002-10-25 的美版测试版。README 报告 SA2 已 100% 由 C 构建,约 60 个不一致函数从 asm/non_matching 引入汇编;在所审提交中,该目录有 SA2 文件 64 个、SA1 文件 99 个、共享文件 17 个、引擎文件 8 个,另有 600 多个 SA2 函数尚未命名。Tiny Chao Garden 和 Collect Rings 这两个多重启动子游戏为构建一致 ROM 而一并编译,只完成了部分反编译。
- 文档所述的构建不读取原 ROM。仓库提交了 12,000 多个 PNG 精灵帧和图块、474 首 MIDI 乐曲、瓦片地图及其他原始数据,其中包括一个 191 KB、分段并入 Tiny Chao Garden 多重启动 ROM 的数据文件。移植版的 CI 任务仍从私有存储下载一个基础 ROM,但 Makefile 并不引用它。
- INSTALL.md 面向 Linux(Windows 用户使用 WSL)和 macOS:需 ARM GCC 与 binutils、libpng、SDL2 和 MinGW-w64,构建 PS2 版另需 mkisofs 或 cdrtools。一致的 GBA 构建需将 SAT-R 的 agbcc 分支编译并安装到仓库中。移植版分别用 make sdl(Linux/macOS)、sdl_win32(Windows)、sdl_psp(PSPDEV)和 ps2(PS2DEV)构建,分辨率为 426×240 宽屏;README 标注 Win32 OpenGL 目标不可用,GitHub 上也没有发布版。
- 在 GBA 平台上,make 会按所列哈希值对构建出的 ROM 做 SHA-1 校验。CI 检查代码格式,构建并校验 SA2 美版、SA1 欧版及另外四个 SA2 版本;还在 Ubuntu 和 macOS 上为两款游戏构建 SDL、Win32、PSP 和 PS2 移植目标,并用无界面的 SDL 构建回放仓库中的一段 any% 速通输入录制。一致性只针对 GBA ROM,不适用于宽屏移植版;本合集未自行构建。
- 仓库没有许可证文件,GitHub 也未识别出许可证。提取出的图像、音乐和数据,以及在 libagbsyscall、m4a 和 agb_flash 中重建的 Nintendo SDK 库,仍受其权利人条款约束。README 规定对议题和拉取请求严格禁止使用 LLM/AI;所审来源未确立 AI 或 REA 使用,也不主张运行复现。
关于此条目
- 类型
- 案例
- 类别
- 独立重建案例
- 关联
- 独立重建项目
- 目标
- 游戏
来源复核于
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · SAT-R/sa2 · 修订 393357f
- INSTALL.md GitHub · SAT-R/sa2 · 修订 393357f
- Makefile GitHub · SAT-R/sa2 · 修订 393357f
- config.mk GitHub · SAT-R/sa2 · 修订 393357f
- sa2.sha1 GitHub · SAT-R/sa2 · 修订 393357f
- sa1.sha1 GitHub · SAT-R/sa2 · 修订 393357f
- .github/workflows/build.yml GitHub · SAT-R/sa2 · 修订 393357f
- asm/non_matching GitHub · SAT-R/sa2 · 修订 393357f
- graphics GitHub · SAT-R/sa2 · 修订 393357f
- sound GitHub · SAT-R/sa2 · 修订 393357f
- chao_garden/data/data.s GitHub · SAT-R/sa2 · 修订 393357f
- src/data/sa2/recordings.c GitHub · SAT-R/sa2 · 修订 393357f
- libagbsyscall GitHub · SAT-R/sa2 · 修订 393357f