projectPiki/pikmin2
GitHub: projectPiki/pikmin2
一个由粉丝驱动的 GameCube 游戏《皮克敏2》反编译项目,将原始 ROM 逆向还原为可编译的源代码并支持 Mod 开发。
Stars: 352 | Forks: 37
# Pikmin 2
[![Build Status]][actions] [![Code Progress]][progress] [![Data Progress]][progress] [![Linked Progress]][progress] [![Discord Badge]][discord]
正在进行中的 Pikmin 2 反编译项目。
支持的版本:
- `GPVE01`: 美国零售版
- `GPVE01_D17`: 美国试玩版 17
## 目录
- [依赖项](#dependencies)
- [Windows](#windows)
- [macOS](#macos)
- [Linux](#linux)
- [构建](#building)
- [差异比对](#diffing)
- [Mod 开发](#modding)
## 依赖项
### 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
- 安装 [wine-crossover](https://github.com/Gcenx/homebrew-wine):
brew install --cask --no-quarantine gcenx/wine/wine-crossover
在操作系统升级后,如果 macOS 提示 `Wine Crossover.app` 未经验证,你可以使用以下命令解除隔离:
```
sudo xattr -rd com.apple.quarantine '/Applications/Wine Crossover.app'
```
### Linux
- 安装 [ninja](https://github.com/ninja-build/ninja/wiki/Pre-built-Ninja-packages)。
- 对于非 x86(_64) 平台:请从你的包管理器安装 wine。
- 对于 x86(_64) 平台,[wibo](https://github.com/decompals/wibo)(一个最小化的 32 位 Windows 二进制包装器)将被自动下载并使用。
## 构建
- 克隆仓库:
git clone https://github.com/projectPiki/pikmin2.git
- 使用 [Dolphin Emulator](https://dolphin-emu.org/),将你的游戏系统数据解压到 `orig/GPVE01`。(如果是试玩版,则解压到 `orig/GPVE01_D17`)
- 在 Dolphin 的游戏列表中右键点击游戏并选择 `Properties`。
- 转到 `Filesystem` 标签页,右键点击 `Disc` -> `Extract System Data`。

- 解压完成后,应存在以下文件:`orig/GPVE01/sys/main.dol`。
- 配置:
python configure.py
要使用试玩版,请添加 `--version GPVE01_D17`。添加 `--help` 可查看所有可用选项。
- 构建:
ninja
## 差异比对
初始构建成功后,项目根目录下应存在一个 `objdiff.json`。
从 [encounter/objdiff](https://github.com/encounter/objdiff) 下载最新版本。在项目设置中,设置 `Project directory`。配置文件应会自动加载。
从左侧边栏选择一个对象以开始差异比对。项目的更改将自动重新构建:包括对源文件、头文件、`configure.py`、`splits.txt` 或 `symbols.txt` 的更改。

## Mod 开发
要启用 Mod 开发,请使用 `--non-matching` 标志运行 `configure.py`:
```
python configure.py --non-matching
```
此操作会:
- 禁用最终哈希验证。
- 构建 `asm` 中的所有汇编文件。
- 构建 `configure.py` 中标记为 `Matching` 和 `Equivalent` 的所有源文件。
要向 DOL 添加新的源文件:
- 取消注释 `configure.py` 中最后的 `"lib": "moddingU"` 括号 - 将名称更改为你喜欢的任何名称,并可以以此作为模板自由添加多个新库。
- 在指定位置添加任何新文件及其路径,格式为 `Object(Matching, folder/file.cpp)`。
- 在对象配置下方的 `link_order_callback` 函数中,取消注释并添加 `src` 中的每个新文件及其路径,如提示所示。
使用 `ninja` 构建完成后,新的 DOL 将位于 `build/GPVE01/main.dol`。
标签:C++, GameCube, Mod, UML, URL提取, Wii, 云资产清单, 反编译, 安全报告生成, 数据擦除, 游戏, 逆向工具, 逆向工程