zeldaret/tp
GitHub: zeldaret/tp
《塞尔达传说:黄昏公主》的游戏二进制反编译项目,旨在从原版游戏镜像重建可编译的完整源代码。
Stars: 1611 | Forks: 163
# 塞尔达传说:黄昏公主
[![Build Status]][actions] [![Discord Badge]][discord] [![GZ2E01]][progress] [![GZ2P01]][progress] [![GZ2J01]][progress] [![ShieldD]][progress]
[
][Progress]
本项目可以针对以下支持的版本:
- **`GZ2E01`**: GameCube - 北美
- **`GZ2P01`**: GameCube - 欧洲/澳大利亚
- **`GZ2J01`**: GameCube - 日本
- `RZDE01_00`: Wii - 北美 (Rev 0)
- `RZDE01_02`: Wii - 北美 (Rev 2)
- `RZDP01`: Wii - 欧洲/澳大利亚
- `RZDJ01`: Wii - 日本
- `DZDE01`: Wii - 北美 (体验版 Demo)
- `Shield`: Nvidia Shield - 中国
- `ShieldD`: Nvidia Shield - 中国 (调试版本)
关于本项目的更多信息可在以下地址找到:
- [进度](https://zsrtp.link/progress)
- [依赖项](#dependencies)
- [构建](#building)
- [差异对比](#diffing)
- [贡献](#contributing)
- [常见问题](https://zsrtp.link/about)
## 依赖项
你需要以下依赖项:
- git
- ninja
- python3
- clang-format (可选)
### Windows
在 Windows 上,**强烈建议**使用原生工具链。**不需要**使用 WSL 或 msys2。
在 WSL 下运行时,[objdiff](#diffing) 无法获取文件系统通知以进行自动重建。
- 安装 [Python](https://www.python.org/downloads/) 并将其添加到 `%PATH%`。
- 也可以从 [Windows Store](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 二进制包装器,将被自动下载并使用。
## 构建
- 克隆仓库:
git clone https://github.com/zeldaret/tp.git
- 将你的游戏光盘镜像复制到 `orig/GZ2E01`。
- 支持的格式:ISO (GCM), RVZ, WIA, WBFS, CISO, NFS, GCZ, TGC。
- 初次构建完成后,可以删除光盘镜像以节省空间。
- 配置:
python configure.py
若要使用 `GZ2E01` (GCN 美国) 以外的版本,请使用 `--version` 指定。
- 构建:
ninja
## 差异对比
一旦初始构建成功,项目根目录下应存在一个 `objdiff.json` 文件。
从 [encounter/objdiff](https://github.com/encounter/objdiff) 下载最新版本。在项目设置中,设置 `Project directory`。配置应会自动加载。
从左侧边栏选择一个对象以开始差异对比。项目的更改将自动触发重建:包括对源文件、头文件、`configure.py`、`splits.txt` 或 `symbols.txt` 的修改。

## 贡献
如果你已设置好所有要求并希望了解如何为反编译工作做出贡献,请加入我们的 [Discord server][discord] 并查看我们的[贡献指南](https://zsrtp.link/contribute)。
标签:C++, DNS解析, GameCube, GZ2E01, Ninja, Python, UML, URL提取, VPS部署, Wii, zeldaret, 二进制分析, 云安全运维, 云资产清单, 代码重构, 任天堂, 反编译, 塞尔达传说:黄昏公主, 开源项目, 怀旧游戏, 数据擦除, 无后门, 游戏开发, 游戏源码, 网络安全研究, 软件分析, 逆向工具, 逆向工程