它构建了以下 ROM:
sha1: 8a20a5c83d6ceb0f0506cfc9fa20d8f438cafe51
sha1: 9bef1128717f958171a4afac3ed78ee2bb4e86ce
sha1: 4ac5721683d0e0b6bbb561b58a71740845dceea9
sha1: 3f319ae697533a255a1003d09202379d78d5a2e0
sha1: 2e1db2780985a1f068077dc0444b685f39cd90ec
此存储库不包括编译 ROM 所需的所有资源。需要游戏的先前副本才能提取资产。
sudo apt install -y binutils-mips-linux-gnu build-essential git pkgconf python3
git clone https://github.com/n64decomp/sm64.git
baserom.<VERSION>.z64
Super Mario 64 ROM 放入项目文件夹中进行资产提取,其中VERSION
可以是jp
、 us
、 eu
、 sh
或cn
。make
来构建。通过make VERSION=<VERSION>
指定版本。添加-j4
以提高构建速度(取决于硬件)。确保存储库路径长度不超过 255 个字符。长路径名会导致构建错误。
按照适用于 Windows 10 的 Windows Subsystem for Linux Installation Guide 安装 WSL 和您选择的发行版。我们建议在 WSL 下安装 Debian 或 Ubuntu 18.04 Linux 发行版。注意:WSL1 目前不支持 Ubuntu 20.04。
接下来,从 Linux shell 中克隆 SM64 存储库: git clone https://github.com/n64decomp/sm64.git
然后继续按照下面的 Linux 安装部分中的说明进行操作。
设置工作版本需要 3 个步骤。
构建系统具有以下包要求:
下面提供了常见 Linux 发行版的依赖项安装说明:
要安装构建依赖项:
sudo apt install -y binutils-mips-linux-gnu build-essential git pkgconf python3
要安装构建依赖项:
sudo pacman -S base-devel python
安装以下 AUR 软件包:
大多数现代 Linux 发行版应该具有与上面列出的其他两个版本等效的软件包。您可能必须使用不同版本的 GNU binutils。下面列出了在 makefile 中提供支持的完全兼容的 binutils 发行版,以及提供它们的发行版示例:
mips64-elf-
(Arch AUR)mips-linux-gnu-
(Ubuntu 和其他基于 Debian 的发行版)mips64-linux-gnu-
(RHEL/CentOS/Fedora)您还可以使用 Docker 来处理安装具有最小依赖性的映像。
对于要为其构建 ROM 的每个版本 (jp/us/eu/sh/cn),请将现有 ROM 放在./baserom.<VERSION>.z64
中以进行资产提取。
运行make
来构建 ROM(默认为VERSION=us
)。其他例子:
make VERSION=jp -j4 # build (J) version instead with 4 jobs
make VERSION=eu COMPARE=0 # build (EU) version but do not compare ROM hashes
生成的工件可以在build
目录中找到。
下面列出了可配置变量的完整列表,默认值是第一个列出的:
VERSION
: jp
、 us
、 eu
、 sh
、 cn
GRUCODE
: f3d_old
、 f3d_new
、 f3dex
、 f3dex2
、 f3dzex
COMPARE
: 1
(比较 ROM 哈希), 0
(不比较 ROM 哈希)NON_MATCHING
:对不匹配使用功能等效的 C 实现。还将避免未定义行为的实例。CROSS
:交叉编译器工具前缀(例如: mips64-elf-
)。对于 macOS,您可以使用 Homebrew 或 Docker。
安装 Homebrew 和以下依赖项:
brew update
brew install coreutils make pkg-config tehzz/n64-dev/mips64-elf-binutils
对于要为其构建 ROM 的每个版本 (jp/us/eu/sh/cn),请将现有 ROM 放在./baserom.<VERSION>.z64
中以进行资产提取。
使用 Homebrew 的 GNU make,因为 macOS 附带的版本太旧。
gmake VERSION=jp -j4 # build (J) version instead with 4 jobs
安装并启动 Docker 后,创建 docker 镜像。这只需要完成一次。
docker build -t sm64 .
要构建,请将本地文件系统挂载到 Docker 容器中,并使用docker run sm64 make
构建 ROM。
docker run --rm --mount type=bind,source="$(pwd)",destination=/sm64 sm64 make VERSION=us -j4
对于 Linux 主机,需要指示 Docker 哪个用户应该拥有输出文件:
docker run --rm --mount type=bind,source="$(pwd)",destination=/sm64 --user $UID:$GID sm64 make VERSION=us -j4
生成的工件可以在build
目录中找到。
sm64
├── actors: object behaviors, geo layout, and display lists
├── asm: handwritten assembly code, rom header
│ └── non_matchings: asm for non-matching sections
├── assets: animation and demo data
│ ├── anims: animation data
│ └── demos: demo data
├── bin: C files for ordering display lists and textures
├── build: output directory
├── data: behavior scripts, misc. data
├── doxygen: documentation infrastructure
├── enhancements: example source modifications
├── include: header files
├── levels: level scripts, geo layout, and display lists
├── lib: SDK library code
├── rsp: audio and Fast3D RSP assembly code
├── sound: sequences, sound samples, and sound banks
├── src: C source code for game
│ ├── audio: audio code
│ ├── buffers: stacks, heaps, and task buffers
│ ├── engine: script processing engines and utils
│ ├── game: behaviors and rest of game source
│ ├── goddard: Mario intro screen
│ └── menu: title screen and file, act, and debug level selection menus
├── text: dialog, level names, act names
├── textures: skybox and generic texture data
└── tools: build tools
欢迎请求请求。对于重大更改,请先打开一个问题来讨论您想要更改的内容。
在您的代码上运行clang-format
以确保其符合项目的编码标准。
官方 Discord:discord.gg/DuYH3Fh