它構建了以下 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 和您選擇的發行版。注意: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