SAT-R/sa2
GitHub: SAT-R/sa2
GBA 游戏《索尼克进化2》的完整反编译项目,支持重建多地区原版 ROM 并移植到 PC 和主机平台。
Stars: 575 | Forks: 50
Sonic Advance 2
这是一个正在进行中的 Sonic Advance 2 配套反编译项目
它构建以下 ROM:
* [**sa2.gba**](https://datomatic.no-intro.org/index.php?page=show_record&s=23&n=0890) `sha1: 7bcd6a07af7c894746fa28073fe0c0e34408022d` (USA) (En,Ja,Fr,De,Es,It)
* [**sa2_europe.gba**](https://datomatic.no-intro.org/index.php?page=show_record&s=23&n=0900) `sha1: b0f64bdca097f2de8f05ac4c8caea2b80c5faeb1` (Europe) (En,Ja,Fr,De,Es,It)
* [**sa2_japan.gba**](https://datomatic.no-intro.org/index.php?page=show_record&s=23&n=0799) `sha1: dffd0188fc78154b42b401398a224ae0713edf23` (Japan) (En,Ja,Fr,De,Es,It)
* [**sa2_japan_vc.gba**](https://datomatic.no-intro.org/index.php?page=show_record&s=23&n=x380) `sha1: 2aa6ee2cf2b0ebfafbea6d6d24165b252a7e329e` (Japan) (En,Ja,Fr,De,Es,It) (Virtual Console)
* [**sa2_beta.gba**](https://datomatic.no-intro.org/index.php?page=show_record&s=23&n=x149) `sha1: 3368642fc4157824af63367e2a685b7d6ee9b09d` (USA) (Beta) (2002-10-25)
它还可以构建:
* **sa2.sdl** `make sdl` (Linux/MacOS SDL 64bit 移植版)
* **sa2.sdl_win32.exe** `make sdl_win32` (Windows SDL 64bit 移植版)
* :construction: **sa2.win32.exe** `make win32` (Win32 OpenGL 移植版,不可用)
* **sa2.ps2.iso** `make ps2` (PlayStation 2 移植版,需要 [PS2DEV](https://github.com/ps2dev/ps2dev))
* **EBOOT.PBP** `make sdl_psp` (PlayStation Portable SDL 移植版,需要 [PSPDEV](https://github.com/pspdev/pspdev))
## 当前状态
- :tada: 构建已 100% 来自 C 文件,[目前仅有约 60 个函数不匹配](./asm/non_matching)
- 所有汇编代码均已提取、反汇编,并经手工反编译为其 C 语言等效代码
- 所有歌曲均已提取,并整理为 [匹配的 MIDI 文件](./sound/songs/midi)
- 所有精灵动画帧均已 [提取为 PNG,并用于构建匹配的 ROM](./graphics/obj_tiles)
- 所有图块地图(背景)均已记录,并 [提取了其图块](./data/tilemaps)
- 核心游戏玩法的大部分内容已有文档记录,但仍有 >600 个函数未命名
- 游戏可编译为适用于多个平台的宽屏移植版 (*426x240*)
## 子游戏
在 Sonic Advance 2 的 ROM 中有一些“子游戏”,我们已开始在本项目中对其进行反编译。这些子游戏会在主构建过程中自动编译和打包,因为它们是创建匹配二进制文件所必需的。
| Multiboot rom | Decompilation |
| --- | --- |
| [**mb_chao_garden.gba**](./chao_garden) |  |
| [**collect_rings.gba**](./multi_boot/roms/collect_rings/) |  |
## 设置仓库
请参阅[这些说明](./INSTALL.md)
## 屏幕截图
## 备注
- [Kirby & The Amazing Mirror](https://github.com/jiangzhengwenjz/katam/) 的反编译项目使用了非常相似的代码库,因为它是由同一开发团队 编写的
- https://decomp.me 是一个帮助创建匹配函数的极佳资源
- `ldscript.txt` 告诉链接器文件链接的顺序
- 欲了解更多信息,请参阅 TMC 的 [常见问题解答部分](https://zelda64.dev/games/tmc)
## 致谢
- [JaceCear](https://github.com/JaceCear) 致力于理解图形引擎的内部原理,编写了[提取该数据的工具](https://github.com/JaceCear/SA-Trilogy-Animation-Exporter),并为反编译过程做出了巨大贡献,*以及*搭建了 PC 移植版
- 感谢 [@froggestspirit](https://github.com/froggestspirit) 发起了本项目
- 特别感谢 [@normmatt](https://github.com/normmatt) 进行了初始仓库设置和声音反汇编
- [Pokemon Reverse Engineering Tools](https://github.com/pret) 社区为项目提供的帮助,以及 GBA 反编译的工具
- [Kermalis](https://github.com/Kermalis) 提供了用于转储游戏 MIDI 的[工具](https://github.com/Kermalis/VGMusicStudio)
- [琪姬](https://github.com/laqieer) 完成了记录所有匹配 MIDI 细节的出色[文档工作](https://github.com/FireEmblemUniverse/fireemblem8u/pull/137)
标签:Decompilation, GameBoy Advance, GBA, ROM 构建工具, Sonic Advance 2, 云安全监控, 代码移植, 客户端加密, 开源游戏, 游戏开发, 游戏逆向工程, 索尼克, 软件 archaeology, 逆向, 逆向工具, 静态分析