Markdown (GitHub flavored):
# 说明
这些说明解释了如何设置构建 **pokeemerald** 所需的工具,该工具将源文件组装成 ROM。
这些说明附带了可以通过点击 "<i>注意...</i>" 文本展开的注释。一般来说,除非遇到错误或需要额外的说明,否则不需要打开这些注释。
## Windows
Windows 有三种可能的终端构建说明,提供了三种不同的选项,以防用户遇到意外错误。
- [Windows 10/11 (WSL1)](#windows-1011-wsl1)(**最快,强烈推荐**,仅限 Windows 10 和 11)
- [Windows (msys2)](#windows-msys2)(第二快)
- [Windows (Cygwin)](#windows-cygwin)(最慢)
非科学基准测试表明 **msys2 比 WSL1 慢 2 倍**,而 **Cygwin 比 WSL1 慢 5-6 倍**。
<details>
<summary><i>高级用户注意:<b>WSL2</b>...</i></summary>
> <b>WSL2</b> 是一个选项,如果文件存储在 WSL2 文件系统上,它甚至比 <b>WSL1</b> 更快,但某些工具可能无法通过网络驱动器与 WSL2 文件系统交互。例如,使用 5.15.2 之前版本的 Qt 的工具(如 <a href="https://github.com/huderlem/porymap">porymap</a>)可能会 <a href="https://bugreports.qt.io/browse/QTBUG-86277">解析 <code>\\wsl$</code> 网络驱动器路径时遇到问题</a>。
</details>
所有 Windows 说明都假设默认驱动器是 C:\\。如果与实际驱动器字母不同,请在阅读说明时将 C 替换为正确的驱动器字母。
**注意**:由于 Windows 7 和 Windows 8 已被微软正式不支持,一些维护者不愿意维护 Windows 7/8 的说明。因此,这些说明可能会在未来中断,修复时间可能比 Windows 10/11 的修复时间更长。
## Windows 10/11 (WSL1)
WSL1 是构建 **pokeemerald** 的首选终端。以下说明将解释如何安装 WSL1(交替称为 WSL)。
- 如果 WSL(Debian 或 Ubuntu)**未安装**,请转到 [安装 WSL1](#安装-wsl1)。
- 否则,如果 WSL 已安装,但**未为其他反编译项目设置**,请转到 [设置 WSL1](#设置-wsl1)。
- 否则,**打开 WSL** 并转到 [选择存储 pokeemerald 的位置(WSL1)](#选择存储-pokeemerald-的位置-wsl1)。
### 安装 WSL1
1. 以管理员身份打开 [Windows Powershell](https://i.imgur.com/QKmVbP9.png),并运行以下命令(在 Powershell 中右键或 Shift+Insert 是粘贴)。
```powershell
wsl --install -d Ubuntu --enable-wsl1
```
2. 过程完成后,重新启动计算机。
3. 重新以管理员身份打开 Windows Powershell(重启后),并运行以下命令以将 Ubuntu 配置为使用 WSL1。
```powershell
wsl --set-version Ubuntu 1
```
<details>
<summary><i>注意...</i></summary>
> 重启后 WSL 可能会自动打开,但现在可以忽略它。
>
</details>
### 设置 WSL1
在继续之前的一些提示:
- 在 WSL 中,复制和粘贴可以通过以下方式完成:
- **右键单击**(选择 + 右键单击复制,未选择时右键单击粘贴)
- **Ctrl+Shift+C/Ctrl+Shift+V**(通过右键单击标题栏,转到属性,然后选中“使用 Ctrl+Shift+C/V 作为复制/粘贴”旁边的复选框来启用)。
- 你将运行的一些命令会要求输入你的 WSL 密码和/或确认执行所述操作。这是预期的,只需在必要时输入你的 WSL 密码和/或 yes 操作。
1. 打开 **Ubuntu**(例如使用搜索)。
2. WSL/Ubuntu 在第一次运行时会设置自己的安装。一旦 WSL/Ubuntu 完成安装,它将要求输入用户名和密码。
<details>
<summary><i>注意...</i></summary>
> 输入密码时不会有可见响应,但终端仍会读取输入。
>
</details>
3. 在继续之前更新 WSL/Ubuntu。通过运行以下命令来执行此操作。这些命令可能需要很长时间才能完成:
```bash
sudo apt update && sudo apt upgrade
```
> 注意:如果你计划构建的存储库有一个**[旧版本的 INSTALL.md](https://github.com/pret/pokeemerald/blob/571c598/INSTALL.md)**,请从这里按照 [旧版 WSL1 说明](docs/legacy_WSL1_INSTALL.md) 进行操作。
4. 构建 pokeemerald 需要某些软件包。通过运行以下命令安装这些软件包:
```bash
sudo apt install build-essential binutils-arm-none-eabi git libpng-dev
```
<details>
<summary><i>注意...</i></summary>
> 如果上述命令不起作用,请尝试将 `apt` 替换为 `apt-get`。
>
</details>
### 选择存储 pokeemerald 的位置(WSL1)
WSL 有自己的文件系统,Windows 无法本地访问,但 Windows 文件*可以*从 WSL 访问。因此,你需要将 pokeemerald 存储在 Windows 中。
例如,假设你想将 pokeemerald(和 agbcc)存储在 **C:\Users\\_\<user>_\Desktop\decomps** 中。首先,确保该文件夹已经存在。然后,输入此命令以**更改目录**到该文件夹,其中 *\<user>* 是你的 **Windows** 用户名:
```bash
cd /mnt/c/Users/<user>/Desktop/decomps
```
<details>
<summary><i>注意...</i></summary>
> 注意 1:Windows C:\ 驱动器在 WSL 中称为 /mnt/c/。
> 注意 2:如果路径中有空格,则路径必须用引号括起来,例如 `cd "/mnt/c/users/<user>/Desktop/decomp folder"`。
> 注意 3:Windows 路径名不区分大小写,因此不需要遵守大小写规则。
</details>
如果这有效,请继续 [安装](#安装)。
否则,请在 Discord 或 IRC 上寻求帮助(参见 [README.md](README.md)),或继续阅读下面的 [使用 msys2 的 Windows 说明](#windows-msys2)。
## Windows (msys2)
- 如果 devkitARM **未安装**,请转到 [安装 devkitARM](#安装-devkitarm)。
- 如果 devkitARM 已安装,但 msys2 **未为其他反编译项目设置**,请转到 [设置 msys2](#设置-msys2)。
- 否则,**打开 msys2** 并转到 [选择存储 pokeemerald 的位置(msys2)](#选择存储-pokeemerald-的位置-msys2)。
### 安装 devkitARM
1. 在 [这里](https://github.com/devkitPro/installer/releases) 下载 devkitPro 安装程序。
2. 运行 devkitPro 安装程序。在“选择组件”屏幕中,取消选中除 GBA Development 之外的所有选项,除非你计划为其他目的安装其他 devkitPro 组件。将安装位置保持为 C:\devkitPro 并保持开始菜单选项不变。
### 设置 msys2
请注意,在 msys2 中,复制是 Ctrl+Insert,粘贴是 Shift+Insert。
1. 在 C:\devkitPro\msys2\msys2_shell.bat 打开 msys2。
2. 构建 pokeemerald 需要某些软件包。通过运行以下两个命令安装这些软件包:
```bash
pacman -Sy msys2-keyring
pacman -S make gcc zlib-devel git
```
<details>
<summary><i>注意...</i></summary>
> 这些命令会要求确认,只需在提示时输入 yes 操作。
>
</details>
3. 下载 [libpng](https://sourceforge.net/projects/libpng/files/libpng16/1.6.37/libpng-1.6.37.tar.xz/download)。
4. 更改目录到 libpng 下载的位置。默认情况下,msys2 将在当前用户的配置文件文件夹中启动,位于 **C:\Users\\_\<user>_**,其中 *\<user>* 是你的 Windows 用户名。在大多数情况下,libpng 应该保存在配置文件文件夹的子文件夹中。例如,如果 libpng 保存在 **C:\Users\\_\<user>_\Downloads**(大多数用户的下载位置),请输入以下命令:
```bash
cd Downloads
```
<details>
<summary><i>注意...</i></summary>
> 注意 1:虽然未显示,但 msys 使用正斜杠 `/` 而不是反斜杠 `\` 作为目录分隔符。
> 注意 2:如果路径中有空格,则路径必须用引号括起来,例如 `cd "Downloads/My Downloads"`。
> 注意 3:Windows 路径名不区分大小写,因此不需要遵守大小写规则。
> 注意 4:如果 libpng 保存在其他位置,则需要指定 libpng 下载位置的完整路径,例如 `cd c:/devkitpro/msys2` 如果它保存在那里。
>
</details>
5. 运行以下命令解压并安装 libpng。
```bash
tar xf libpng-1.6.37.tar.xz
cd libpng-1.6.37
./configure --prefix=/usr
make check
make install
```
6. 最后,运行以下命令更改回用户配置文件文件夹。
```bash
cd
```
### 选择存储 pokeemerald 的位置(msys2)
此时,你可以选择一个文件夹来存储 pokeemerald。如果你愿意将 pokeemerald 存储在用户配置文件文件夹中,请继续 [安装](#安装)。否则,你需要考虑更改目录到 pokeemerald 文件夹时 pokeemerald 的存储位置。
例如,如果你想将 pokeemerald(和 agbcc)存储在 **C:\Users\\_\<user>_\Desktop\decomps** 中(其中 *\<user>* 是你的 **Windows** 用户名),请输入以下命令:
```bash
cd Desktop/decomps
```
如果这有效,请继续 [安装](#安装)。
否则,请在 Discord 或 IRC 上寻求帮助(参见 [README.md](README.md)),或继续阅读下面的 [使用 Cygwin 的 Windows 说明](#windows-cygwin)。
## Windows (Cygwin)
1. 如果 devkitARM **未安装**,请按照 msys2 设置中用于 [安装 devkitARM](#安装-devkitarm) 的说明进行操作。*记住不要错误地继续遵循 msys2 说明!*
2. - 如果 Cygwin **未安装**,或未安装所有必需的软件包,请转到 [安装 Cygwin](#安装-cygwin)。
- 如果 Cygwin 已安装,但**未配置为与 devkitARM 一起工作**,请转到 [为 Cygwin 配置 devkitARM](#为-cygwin-配置-devkitarm)。
- 否则,**打开 Cygwin** 并转到 [选择存储 pokeemerald 的位置(Cygwin)](#选择存储-pokeemerald-的位置-cygwin)
### 安装 Cygwin
1. 下载 [Cygwin](https://cygwin.com/install.html):64 位 Windows 使用 setup-x86_64.exe,32 位使用 setup-x86.exe。
2. 运行 Cygwin 安装程序。在 Cygwin 安装程序中,保持默认设置,直到“选择下载站点”屏幕。
3. 在“选择下载站点”中,从可用下载站点中选择任何镜像。
4. 在“选择软件包”中,将视图设置为“完整”(左上角),并搜索以下软件包:
- `make`
- `git`
- `gcc-core`
- `gcc-g++`
- `libpng-devel`
要快速找到这些,请使用搜索栏并输入每个软件包的名称。确保所选软件包名称与要下载的软件包名称**完全相同**,例如 `cmake` **不是** `make`。
5. 对于每个软件包,双击每个软件包旁边的“**跳过**”文本以选择要安装的最新版本。如果文本显示为“**跳过**”以外的任何内容(例如保持或版本号),则该软件包已安装或将被安装,你无需执行任何操作。
6. 选择所有必需的软件包后,完成安装。
### 为 Cygwin 配置 devkitARM
请注意,在 Cygwin 中,复制是 Ctrl+Insert,粘贴是 Shift+Insert。
1. 打开 **Cygwin**。
2. 运行以下命令以配置 devkitPro 以与 Cygwin 一起工作。
```bash
export DEVKITPRO=/cygdrive/c/devkitpro
echo export DEVKITPRO=$DEVKITPRO >> ~/.bashrc
export DEVKITARM=$DEVKITPRO/devkitARM
echo export DEVKITARM=$DEVKITARM >> ~/.bashrc
```
<details>
<summary><i>注意...</i></summary>
> 如果驱动器字母不是 c,请将驱动器字母 c 替换为实际的驱动器字母。
>
</details>
### 选择存储 pokeemerald 的位置(Cygwin)
Cygwin 有自己的文件系统,位于 Windows 中,位于 **C:\cygwin64\home\\_\<user>_**。如果你不想将 pokeemerald 存储在那里,则需要考虑更改目录到 pokeemerald 文件夹时 pokeemerald 的存储位置。
例如,如果你想将 pokeemerald(和 agbcc)存储在 **C:\Users\\_\<user>_\Desktop\decomps** 中,请输入以下命令,其中 *\<user>* 是你的 **Windows** 用户名:
```bash
cd c:/Users/<user>/Desktop/decomps
```
请注意,目录**必须存在**于 Windows 中。如果你想将 pokeemerald 存储在一个不存在的专用文件夹中(例如上面提供的示例),请在执行 `cd` 命令之前创建该文件夹(例如使用 Windows 资源管理器)。
<details>
<summary><i>注意...</i></summary>
> 注意 1:如果路径中有空格,则路径必须用引号括起来,例如 `cd "c:/users/<user>/Desktop/decomp folder"`。
> 注意 2:Windows 路径名不区分大小写,因此不需要遵守大小写规则。
</details>
如果这有效,请继续 [安装](#安装)。否则,请在 Discord 或 IRC 上寻求帮助(参见 [README.md](README.md))。
## macOS
1. 如果未安装 Xcode 命令行工具,请在 [这里](https://developer.apple.com/xcode/resources/) 下载工具,打开终端,并运行以下命令:
```bash
xcode-select --install
```
2. - 如果 libpng **未安装**,请转到 [安装 libpng(macOS)](#安装-libpng-macos)。
- 如果 devkitARM **未安装**,请转到 [安装 devkitARM(macOS)](#安装-devkitarm-macos)。
- 否则,**打开终端**并转到 [选择存储 pokeemerald 的位置(macOS)](#选择存储-pokeemerald-的位置-macos)
### 安装 libpng(macOS)
<details>
<summary><i>高级用户注意...</i></summary>
> 本指南通过 Homebrew 安装 libpng,因为这是最简单的方法,但高级用户可以通过其他方式安装 libpng,如果他们愿意的话。
</details>
1. 打开终端。
2. 如果未安装 Homebrew,请按照网站上的说明安装 [Homebrew](https://brew.sh/)。
3. 运行以下命令安装 libpng。
```bash
brew install libpng
```
libpng 现已安装。
如果 **devkitARM 未安装**,请继续 [安装 devkitARM(macOS)](#安装-devkitarm-macos),否则,请转到 [选择存储 pokeemerald 的位置(macOS)](#选择存储-pokeemerald-的位置-macos)。
### 安装 devkitARM(macOS)
1. 从 [这里](https://github.com/devkitPro/pacman/releases) 下载 `devkitpro-pacman-installer.pkg` 包。
2. 打开包以安装 devkitPro pacman。
3. 在终端中,运行以下命令安装 devkitARM:
```bash
sudo dkp-pacman -Sy
sudo dkp-pacman -S gba-dev
sudo dkp-pacman -S devkitarm-rules
```
带有 gba-dev 的命令将要求选择要安装的软件包。只需按 Enter 安装所有软件包,然后输入 Y 继续安装。
4. 工具安装完成后,必须使 devkitARM 可由系统从任何位置访问。为此,运行以下命令:
```bash
export DEVKITPRO=/opt/devkitpro
echo "export DEVKITPRO=$DEVKITPRO" >> ~/.bashrc
export DEVKITARM=$DEVKITPRO/devkitARM
echo "export DEVKITARM=$DEVKITARM" >> ~/.bashrc
echo "if [ -f ~/.bashrc ]; then . ~/.bashrc; fi" >> ~/.bash_profile
```
### 选择存储 pokeemerald 的位置(macOS)
此时,你可以选择一个文件夹来存储 pokeemerald。如果你愿意将 pokeemerald 存储在用户文件夹中,请继续 [安装](#安装)。否则,你需要考虑更改目录到 pokeemerald 文件夹时 pokeemerald 的存储位置。
例如,如果你想将 pokeemerald(和 agbcc)存储在 **~/Desktop/decomps** 中,请输入此命令以**更改目录**到所需文件夹:
```bash
cd Desktop/decomps
```
请注意,目录**必须存在**于文件夹系统中。如果你想将 pokeemerald 存储在一个不存在的专用文件夹中(例如上面提供的示例),请在执行 `cd` 命令之前创建该文件夹(例如使用 Finder)。
<details>
<summary><i>注意...</i></summary>
> 注意:如果路径中有空格,则路径必须用引号括起来,例如 `cd "Desktop/decomp folder"`
</details>
如果这有效,请继续 [安装](#安装)。否则,请在 Discord 或 IRC 上寻求帮助(参见 [README.md](README.md))。
## Linux
打开终端并输入以下命令,具体取决于你使用的发行版。
### 基于 Debian/Ubuntu 的发行版
运行以下命令安装所需的软件包:
```bash
sudo apt install build-essential binutils-arm-none-eabi git libpng-dev
```
然后继续 [选择存储 pokeemerald 的位置(Linux)](#选择存储-pokeemerald-的位置-linux)。
<details>
<summary><i>旧版存储库注意...</i></summary>
> 如果你计划构建的存储库有一个**[旧版本的 INSTALL.md](https://github.com/pret/pokeemerald/blob/571c598/INSTALL.md)**,
> 那么你将不得不安装 devkitARM。安装上述所有软件包,除了 binutils-arm-none-eabi,并按照说明
> [在基于 Debian/Ubuntu 的发行版上安装 devkitARM](#在基于-debianubuntu-的发行版上安装-devkitarm)。
</details>
### Arch Linux
以 root 身份运行此命令以安装所需的软件包:
```bash
pacman -S base-devel arm-none-eabi-binutils git libpng
```
然后继续 [选择存储 pokeemerald 的位置(Linux)](#选择存储-pokeemerald-的位置-linux)。
<details>
<summary><i>旧版存储库注意...</i></summary>
> 如果你计划构建的存储库有一个**[旧版本的 INSTALL.md](https://github.com/pret/pokeemerald/blob/571c598/INSTALL.md)**,
> 那么你将不得不安装 devkitARM。安装上述所有软件包,除了 binutils-arm-none-eabi,并按照说明
> [在 Arch Linux 上安装 devkitARM](#在-arch-linux-上安装-devkitarm)。
</details>
### NixOS
运行以下命令以启动具有所需软件包的交互式 shell:
```bash
nix-shell -p pkgsCross.arm-embedded.stdenv.cc git pkg-config libpng
```
然后继续 [选择存储 pokeemerald 的位置(Linux)](#选择存储-pokeemerald-的位置-linux)。
### 其他发行版
_(非常感谢其他发行版的具体说明!)_
1. 尝试在其存储库中找到所需的软件:
- `gcc`
- `g++`
- `make`
- `git`
- `libpng-dev`
2. 按照 [此处](https://devkitpro.org/wiki/devkitPro_pacman) 的说明安装 devkitPro pacman。提醒一下,目标是配置现有的 pacman 安装以识别 devkitPro 的存储库。
3. 一旦配置了 devkitPro pacman,运行以下命令:
```bash
sudo pacman -Sy
sudo pacman -S gba-dev
```
最后一个命令将要求选择要安装的软件包。只需按 Enter 安装所有软件包,然后输入 Y 继续安装。
### 选择存储 pokeemerald 的位置(Linux)
此时,你可以选择一个文件夹来存储 pokeemerald(和 agbcc)。如果是这样,你将不得不考虑更改目录到 pokeemerald 文件夹时修改后的文件夹路径。
如果这有效,请继续 [安装](#安装)。否则,请在 Discord 或 IRC 上寻求帮助(参见 [README.md](README.md))。
## 安装
<details>
<summary><i>Windows 用户注意...</i></summary>
> 考虑使用 [这些说明](https://support.microsoft.com/help/4028485) 在 Windows 安全性中为 `pokeemerald` 和/或 `decomps` 文件夹添加例外。这可以防止 Microsoft Defender 扫描它们,从而可能提高构建时的性能。
</details>
1. 如果尚未下载 pokeemerald(某些用户可能更喜欢通过 git 客户端(如 GitHub Desktop)下载 pokeemerald),请运行:
```bash
git clone https://github.com/pret/pokeemerald
```
<details>
<summary><i>WSL1 注意...</i></summary>
> 如果你收到错误消息 `fatal: could not set 'core.filemode' to 'false'`,请运行以下命令:
>
> ```bash
> cd
> sudo umount /mnt/c
> sudo mount -t drvfs C: /mnt/c -o metadata,noatime
> cd <存储 pokeemerald 的文件夹>
> ```
>
> 其中 *\<存储 pokeemerald 的文件夹>* 是 [你选择存储 pokeemerald 的位置](#选择存储-pokeemerald-的位置-wsl1) 的路径。然后再次运行 `git clone` 命令。
>
</details>
2. 将 agbcc 安装到 pokeemerald 中。运行的命令取决于某些条件。**你应该只遵循列出的一个说明**:
- 如果 agbcc **未在你选择存储 pokeemerald 的文件夹中构建过**,请运行以下命令以构建并安装到 pokeemerald 中:
```bash
git clone https://github.com/pret/agbcc
cd agbcc
./build.sh
./install.sh ../pokeemerald
```
- **否则**,如果 agbcc 已构建过(例如,如果上述 git clone 失败),但**最后一次构建是在与当前使用的终端不同的终端上**(仅适用于 Windows,例如从 msys2 切换到 WSL1),请运行以下命令以构建并安装到 pokeemerald 中:
```bash
cd agbcc
git clean -fX
./build.sh
./install.sh ../pokeemerald
```
- **否则**,如果 agbcc 已在同一终端上构建过,请运行以下命令将 agbcc 安装到 pokeemerald 中:
```bash
cd agbcc
./install.sh ../pokeemerald
```
<details>
<summary><i>注意...</i></summary>
> 如果构建 agbcc 或 pokeemerald 结果出错,请尝试删除 agbcc 文件夹并重新安装 agbcc,就像它从未构建过一样。
</details>
3. 一旦安装了 agbcc,请更改目录回到存储 pokeemerald 和 agbcc 的基本目录:
```bash
cd ..
```
现在你已经准备好 [构建 **pokeemerald**](#构建-pokeemerald)
## 构建 pokeemerald
如果你还不在 pokeemerald 目录中,请**更改目录**到 pokeemerald 文件夹:
```bash
cd pokeemerald
```
要构建 **pokeemerald.gba**(注意:要加快构建速度,请参见 [并行构建](#并行构建)):
```bash
make
```
如果构建成功,你将在项目文件夹中获得输出文件 **pokeemerald.gba**。
<details>
<summary>Windows 注意...</summary>
> 如果你自上次构建以来切换了终端(例如从 msys2 切换到 WSL1),你必须在任何后续 `make` 命令之前运行 `make clean-tools` 一次。
</details>
# 构建指南
## 并行构建
有关更多信息,请参见 [GNU 文档](https://www.gnu.org/software/make/manual/html_node/Parallel.html) 和 [此 Stack Exchange 线程](https://unix.stackexchange.com/questions/208568)。
要加快构建速度,首先通过运行以下命令获取 `nproc` 的值:
```bash
nproc
```
然后通过运行以下命令加快构建速度:
```bash
make -j<output of nproc>
```
将 `<output of nproc>` 替换为 `nproc` 命令返回的数字。
`nproc` 在 macOS 上不可用。替代方法是 `sysctl -n hw.ncpu`([相关 Stack Overflow 线程](https://stackoverflow.com/questions/1715580))。
## 将 ROM 与原版进行比较
为了贡献,或者如果你只是想验证你的 ROM 是否与原版游戏相同,请运行:
```bash
make compare
```
如果匹配,你将在输出的末尾看到以下内容:
```bash
pokeemerald.gba: OK
```
如果与原版游戏有任何更改,你将看到:
```bash
pokeemerald.gba: FAILED
shasum: WARNING: 1 computed checksum did NOT match
```
## devkitARM 的 C 编译器
该项目支持 devkitARM 附带的 `arm-none-eabi-gcc` 编译器。如果 devkitARM(即 gba-dev)已作为特定平台说明的一部分安装,只需运行:
```bash
make modern
```
否则,请按照以下说明安装 devkitARM。
### 在 WSL1 上安装 devkitARM
1. 必须先安装 `gdebi-core` 以便安装 devkitPro pacman(它有助于安装 devkitARM)。通过运行以下命令安装它:
```bash
sudo apt install gdebi-core
```
<details>
<summary><i>注意...</i></summary>
> 如果上述命令不起作用,请尝试将 `apt` 替换为 `apt-get`。
>
</details>
2. 一旦 `gdebi-core` 安装完成,从 [这里](https://github.com/devkitPro/pacman/releases) 下载 devkitPro pacman 包。要下载的文件是 `devkitpro-pacman.amd64.deb`。
3. 更改目录到包下载的位置。例如,如果包文件保存在 **C:\Users\\_\<user>_\Downloads**(大多数用户的下载位置),请输入此命令,其中 *\<user>* 是你的 **Windows** 用户名:
```bash
cd /mnt/c/Users/<user>/Downloads
```
4. 一旦目录更改为包含 devkitPro pacman 包的文件夹,运行以下命令安装 devkitARM。
```bash
sudo gdebi devkitpro-pacman.amd64.deb
sudo dkp-pacman -Sy
sudo dkp-pacman -S gba-dev
```
最后一个命令将要求选择要安装的软件包。只需按 Enter 安装所有软件包,然后输入 Y 继续安装。
<details>
<summary><i>注意...</i></summary>
> 注意:`devkitpro-pacman.amd64.deb` 是下载的 devkitPro 包的预期文件名(用于第一个命令)。如果下载的包文件名不同,请使用该文件名。
>
</details>
5. 运行以下命令设置与 devkitPro 相关的环境变量(或者,关闭并重新打开 WSL):
```bash
source /etc/profile.d/devkit-env.sh
```
devkitARM 现已安装。
### 在基于 Debian/Ubuntu 的发行版上安装 devkitARM
1. 如果未安装 `gdebi-core`,请运行以下命令:
```bash
sudo apt install gdebi-core
```
2. 从 [这里](https://github.com/devkitPro/pacman/releases) 下载 devkitPro pacman 包。要下载的文件是 `devkitpro-pacman.amd64.deb`。
3. 更改目录到包下载的位置。然后,运行以下命令安装 devkitARM:
```bash
sudo gdebi devkitpro-pacman.amd64.deb
sudo dkp-pacman -Sy
sudo dkp-pacman -S gba-dev
```
最后一个命令将要求选择要安装的软件包。只需按 Enter 安装所有软件包,然后输入 Y 继续安装。
> 注意:`devkitpro-pacman.amd64.deb` 是下载的 devkitPro 包的预期文件名(用于第一个命令)。如果下载的包文件名不同,请使用该文件名。
>
4. 运行以下命令设置与 devkitPro 相关的环境变量(或者,关闭并重新打开终端):
```bash
source /etc/profile.d/devkit-env.sh
```
devkitARM 现已安装。
### 在 Arch Linux 上安装 devkitARM
1. 按照 [devkitPro 的说明](https://devkitpro.org/wiki/devkitPro_pacman#Customising_Existing_Pacman_Install) 配置 `pacman` 以下载 devkitPro 软件包。
2. 安装 `gba-dev`:以 root 身份运行以下命令。
```console
pacman -S gba-dev
```
这将要求选择要安装的软件包。只需按 Enter 安装所有软件包,然后输入 Y 继续安装。
3. 运行以下命令设置与 devkitPro 相关的环境变量(或者,关闭并重新打开终端):
```bash
source /etc/profile.d/devkit-env.sh
```
devkitARM 现已安装。
### 其他工具链
要使用 devkitARM 以外的工具链进行构建,请使用包含 `bin` 子目录的工具链路径覆盖 `TOOLCHAIN` 环境变量。
```bash
make TOOLCHAIN="/path/to/toolchain/here"
```
以下是一个示例:
```bash
make TOOLCHAIN="/usr/local/arm-none-eabi"
```
要使用此工具链编译 `modern` 目标,必须存在 `lib`、`include` 和 `arm-none-eabi` 子目录。
### 使用现代工具链构建带有调试信息的
要使用现代工具链构建带有调试符号的 **pokeemerald.elf**:
```bash
make modern DINFO=1
```
请注意,这对于非现代构建不是必需的,因为这些构建默认带有调试符号。
# 有用的附加工具
* [porymap](https://github.com/huderlem/porymap) 用于查看和编辑地图
* [poryscript](https://github.com/huderlem/poryscript) 用于脚本编写([VS Code 扩展](https://marketplace.visualstudio.com/items?itemName=karathan.poryscript))
* [Tilemap Studio](https://github.com/Rangi42/tilemap-studio) 用于查看和编辑 tilemaps