Itu membangun ROM berikut:
sha1: 8a20a5c83d6ceb0f0506cfc9fa20d8f438cafe51
sha1: 9bef1128717f958171a4afac3ed78ee2bb4e86ce
sha1: 4ac5721683d0e0b6bbb561b58a71740845dceea9
sha1: 3f319ae697533a255a1003d09202379d78d5a2e0
sha1: 2e1db2780985a1f068077dc0444b685f39cd90ec
Repo ini tidak mencakup semua aset yang diperlukan untuk mengkompilasi ROM. Salinan game sebelumnya diperlukan untuk mengekstrak aset.
sudo apt install -y binutils-mips-linux-gnu build-essential git pkgconf python3
git clone https://github.com/n64decomp/sm64.git
baserom.<VERSION>.z64
ke dalam folder proyek untuk ekstraksi aset, dengan VERSION
dapat berupa jp
, us
, eu
, sh
, atau cn
.make
untuk membangun. Tentukan versi melalui make VERSION=<VERSION>
. Tambahkan -j4
untuk meningkatkan kecepatan build (tergantung perangkat keras).Pastikan panjang jalur repo tidak melebihi 255 karakter. Nama jalur yang panjang menyebabkan kesalahan build.
Instal WSL dan distro pilihan Anda dengan mengikuti Panduan Instalasi Subsistem Windows untuk Linux untuk Windows 10. Kami merekomendasikan distribusi Linux Debian atau Ubuntu 18.04 di bawah WSL. Catatan: WSL1 saat ini tidak mendukung Ubuntu 20.04.
Selanjutnya, kloning repo SM64 dari dalam shell Linux: git clone https://github.com/n64decomp/sm64.git
Kemudian lanjutkan mengikuti petunjuk pada bagian instalasi Linux di bawah ini.
Ada 3 langkah untuk menyiapkan build yang berfungsi.
Sistem build memiliki persyaratan paket berikut:
Petunjuk instalasi ketergantungan untuk distro Linux umum disediakan di bawah ini:
Untuk menginstal dependensi build:
sudo apt install -y binutils-mips-linux-gnu build-essential git pkgconf python3
Untuk menginstal dependensi build:
sudo pacman -S base-devel python
Instal paket AUR berikut:
Kebanyakan distribusi Linux modern harus memiliki paket yang setara dengan dua lainnya yang tercantum di atas. Anda mungkin harus menggunakan versi binutils GNU yang berbeda. Di bawah ini tercantum distribusi binutils yang sepenuhnya kompatibel dengan dukungan di makefile, dan contoh distro yang menawarkannya:
mips64-elf-
(AUR Lengkungan)mips-linux-gnu-
(Ubuntu dan distro berbasis Debian lainnya)mips64-linux-gnu-
(RHEL/CentOS/Fedora)Anda juga dapat menggunakan Docker untuk menangani penginstalan image dengan ketergantungan minimal.
Untuk setiap versi (jp/us/eu/sh/cn) yang ROM-nya ingin Anda buat, letakkan ROM yang sudah ada di ./baserom.<VERSION>.z64
untuk ekstraksi aset.
Jalankan make
untuk membuat ROM (defaultnya adalah VERSION=us
). Contoh lain:
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
Artefak yang dihasilkan dapat ditemukan di direktori build
.
Daftar lengkap variabel yang dapat dikonfigurasi tercantum di bawah ini, dengan nilai defaultnya adalah yang pertama tercantum:
VERSION
: jp
, us
, eu
, sh
, cn
GRUCODE
: f3d_old
, f3d_new
, f3dex
, f3dex2
, f3dzex
COMPARE
: 1
(bandingkan hash ROM), 0
(jangan bandingkan hash ROM)NON_MATCHING
: Gunakan implementasi C yang setara secara fungsional untuk non-pencocokan. Juga akan menghindari contoh perilaku tidak terdefinisi.CROSS
: Awalan alat kompiler silang (Contoh: mips64-elf-
).Dengan macOS, Anda dapat menggunakan Homebrew atau Docker.
Instal Homebrew dan dependensi berikut:
brew update
brew install coreutils make pkg-config tehzz/n64-dev/mips64-elf-binutils
Untuk setiap versi (jp/us/eu/sh/cn) yang ROM-nya ingin Anda buat, letakkan ROM yang sudah ada di ./baserom.<VERSION>.z64
untuk ekstraksi aset.
Gunakan GNU buatan Homebrew karena versi yang disertakan dengan macOS terlalu lama.
gmake VERSION=jp -j4 # build (J) version instead with 4 jobs
Setelah menginstal dan memulai Docker, buat image buruh pelabuhan. Ini hanya perlu dilakukan sekali.
docker build -t sm64 .
Untuk membangun, pasang sistem file lokal ke dalam wadah Docker dan buat ROM dengan docker run sm64 make
.
docker run --rm --mount type=bind,source="$(pwd)",destination=/sm64 sm64 make VERSION=us -j4
Untuk host Linux, Docker perlu diberi instruksi pengguna mana yang harus memiliki file keluaran:
docker run --rm --mount type=bind,source="$(pwd)",destination=/sm64 --user $UID:$GID sm64 make VERSION=us -j4
Artefak yang dihasilkan dapat ditemukan di direktori 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
Permintaan tarik dipersilakan. Untuk perubahan besar, silakan buka terbitan terlebih dahulu untuk mendiskusikan apa yang ingin Anda ubah.
Jalankan clang-format
pada kode Anda untuk memastikan kode tersebut memenuhi standar pengkodean proyek.
Perselisihan Resmi: discord.gg/DuYH3Fh