SeekyCt/spm-decomp
GitHub: SeekyCt/spm-decomp
Wii 平台《超级纸片马力欧》的 1:1 反编译项目,将游戏二进制代码还原为可读源码以支持逆向分析与模组开发。
Stars: 89 | Forks: 10
# spm-decomp
# [![代码进度]][progress] [![数据进度]][progress] [![Discord 徽章]][discord]
《超级纸片马力欧》的逆向工程。主要针对的是该游戏的两个 PAL 版本(两者之间的符号和拆分地址完全一致)。虽然也为该游戏的 NTSC-U 0 号修订版提供了支持,但移植的地址较少(建议在创建某种自动化移植方案之前,不要在此版本上投入精力)。
这永远不会是完整游戏的逆向工程,只会针对一些有用或有趣的部分,而且肯定不会导致向任何其他平台的移植。理论上,该代码库是可偏移的(即可以编辑 configure.py 中标记为 `Matching` 的文件来改变游戏行为),但这并未经过全面测试。SDK、NW4R 和 MSL 库超出了本项目的范围,不会被逆向工程(尽管需要它们的部分头文件才能对其他代码进行逆向工程)。
其他文档请参见 https://github.com/SeekyCt/spm-docs。
## 依赖安装
### Windows
在 Windows 上,**强烈建议**使用原生工具。**不**需要 WSL 或 msys2。
在 WSL 下运行时,objdiff 无法获取文件系统通知以进行自动重新构建。
- 安装 [Python](https://www.python.org/downloads/) 并将其添加到 `%PATH%` 中。
- 也可以从 [Windows 应用商店](https://apps.microsoft.com/store/detail/python-311/9NRWMJP3717K)获取。
- 下载 [ninja](https://github.com/ninja-build/ninja/releases) 并将其添加到 `%PATH%` 中。
- 通过 pip 快速安装:`pip install ninja`
### macOS
- 安装 [ninja](https://github.com/ninja-build/ninja/wiki/Pre-built-Ninja-packages):
brew install ninja
[wibo](https://github.com/decompals/wibo) 是一个最小化的 32 位 Windows 二进制包装器,它会被自动下载并使用。
### Linux
- 安装 [ninja](https://github.com/ninja-build/ninja/wiki/Pre-built-Ninja-packages)。
[wibo](https://github.com/decompals/wibo) 是一个最小化的 32 位 Windows 二进制包装器,它会被自动下载并使用。
## 构建
- 将你的游戏光盘镜像复制到 `orig` 下对应你版本的子文件夹中
- 支持的版本:
- EU0:PAL 0 号修订版
- EU1:PAL 1 号修订版
- JP0:NTSC-J 0 号修订版
- KR0:NTSC-K 0 号修订版
- 支持的格式:ISO (GCM)、RVZ、WIA、WBFS、CISO、NFS、GCZ、TGC
- 首次构建完成后,可以删除光盘镜像以节省空间。
- 运行 configure.py
- 对于 EU0,不需要额外的参数
- 对于任何其他版本,使用 `--version RGX`,其中 `RGX` 是你版本的地区和修订号
- 运行 ninja
## 模组开发
就目前的状态而言,该代码库并不适合直接编辑,但可以将函数复制到 [REL 模组](https://github.com/SeekyCt/spm-rel-loader)中并在那里进行编辑,而且相关文档依然有用。
## 鸣谢
- PistonMiner、Zephiles、Jdaster64、Jasper、NWPlayer123、Malleo、SolidifiedGaming 和 Diagamma 感谢他们提供的 TTYD 文档
- 所有 [PM64 decomp](https://github.com/ethteck/papermario) 的贡献者
- 所有 [asm-differ](https://github.com/simonlindholm/asm-differ) 的贡献者
- 所有 [decomp-toolkit](https://github.com/encounter/decomp-toolkit) 和 [dtk-template](https://github.com/encounter/dtk-template/) 的贡献者
标签:C/C++, UML, URL提取, Wii, 事务性I/O, 云资产清单, 反编译, 客户端加密, 游戏, 超级纸片人马里奥, 逆向工具, 逆向工程