Il construit les ROM suivantes :
sha1: 8a20a5c83d6ceb0f0506cfc9fa20d8f438cafe51
sha1: 9bef1128717f958171a4afac3ed78ee2bb4e86ce
sha1: 4ac5721683d0e0b6bbb561b58a71740845dceea9
sha1: 3f319ae697533a255a1003d09202379d78d5a2e0
sha1: 2e1db2780985a1f068077dc0444b685f39cd90ec
Ce référentiel n'inclut pas tous les actifs nécessaires à la compilation des ROM. Une copie préalable du jeu est nécessaire pour extraire les actifs.
sudo apt install -y binutils-mips-linux-gnu build-essential git pkgconf python3
git clone https://github.com/n64decomp/sm64.git
baserom.<VERSION>.z64
dans le dossier du projet pour l'extraction des ressources, où VERSION
peut être jp
, us
, eu
, sh
ou cn
.make
pour construire. Spécifiez la version via make VERSION=<VERSION>
. Ajoutez -j4
pour améliorer la vitesse de construction (en fonction du matériel).Assurez-vous que la longueur du chemin du dépôt ne dépasse pas 255 caractères. Les noms de chemin longs entraînent des erreurs de construction.
Installez WSL et une distribution de votre choix en suivant le guide d'installation du sous-système Windows pour Linux pour Windows 10. Nous recommandons les distributions Linux Debian ou Ubuntu 18.04 sous WSL. Remarque : WSL1 ne prend actuellement pas en charge Ubuntu 20.04.
Ensuite, clonez le dépôt SM64 depuis le shell Linux : git clone https://github.com/n64decomp/sm64.git
Continuez ensuite à suivre les instructions de la section d'installation de Linux ci-dessous.
Il y a 3 étapes pour configurer une version fonctionnelle.
Le système de build a les exigences de package suivantes :
Les instructions d'installation des dépendances pour les distributions Linux courantes sont fournies ci-dessous :
Pour installer les dépendances de build :
sudo apt install -y binutils-mips-linux-gnu build-essential git pkgconf python3
Pour installer les dépendances de build :
sudo pacman -S base-devel python
Installez les packages AUR suivants :
La plupart des distributions Linux modernes devraient avoir des packages équivalents aux deux autres répertoriés ci-dessus. Vous devrez peut-être utiliser une version différente de GNU binutils. Vous trouverez ci-dessous les distributions binutils entièrement compatibles avec prise en charge dans le makefile, ainsi que des exemples de distributions qui les proposent :
mips64-elf-
(Arch AUR)mips-linux-gnu-
(Ubuntu et autres distributions basées sur Debian)mips64-linux-gnu-
(RHEL/CentOS/Fedora)Vous pouvez également utiliser Docker pour gérer l'installation d'une image avec un minimum de dépendances.
Pour chaque version (jp/us/eu/sh/cn) pour laquelle vous souhaitez créer une ROM, placez une ROM existante dans ./baserom.<VERSION>.z64
pour l'extraction des actifs.
Exécutez make
pour construire la ROM (par défaut VERSION=us
). Autres exemples :
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
Les artefacts résultants peuvent être trouvés dans le répertoire build
.
La liste complète des variables configurables est répertoriée ci-dessous, la valeur par défaut étant la première répertoriée :
VERSION
: jp
, us
, eu
, sh
, cn
GRUCODE
: f3d_old
, f3d_new
, f3dex
, f3dex2
, f3dzex
COMPARE
: 1
(comparer le hachage ROM), 0
(ne pas comparer le hachage ROM)NON_MATCHING
: utilisez des implémentations C fonctionnellement équivalentes pour les non-correspondances. Cela évitera également les cas de comportement indéfini.CROSS
: Préfixe de l'outil de compilation croisée (Exemple : mips64-elf-
).Avec macOS, vous pouvez utiliser Homebrew ou Docker.
Installez Homebrew et les dépendances suivantes :
brew update
brew install coreutils make pkg-config tehzz/n64-dev/mips64-elf-binutils
Pour chaque version (jp/us/eu/sh/cn) pour laquelle vous souhaitez créer une ROM, placez une ROM existante dans ./baserom.<VERSION>.z64
pour l'extraction des actifs.
Utilisez la marque GNU de Homebrew car la version incluse avec macOS est trop ancienne.
gmake VERSION=jp -j4 # build (J) version instead with 4 jobs
Après avoir installé et démarré Docker, créez l'image Docker. Cela ne doit être fait qu’une seule fois.
docker build -t sm64 .
Pour construire, montez le système de fichiers local dans le conteneur Docker et construisez la ROM avec docker run sm64 make
.
docker run --rm --mount type=bind,source="$(pwd)",destination=/sm64 sm64 make VERSION=us -j4
Pour un hôte Linux, Docker doit savoir quel utilisateur doit posséder les fichiers de sortie :
docker run --rm --mount type=bind,source="$(pwd)",destination=/sm64 --user $UID:$GID sm64 make VERSION=us -j4
Les artefacts résultants peuvent être trouvés dans le répertoire 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
Les demandes de tirage sont les bienvenues. Pour les changements majeurs, veuillez d'abord ouvrir un ticket pour discuter de ce que vous souhaitez changer.
Exécutez clang-format
sur votre code pour vous assurer qu'il répond aux normes de codage du projet.
Discorde officielle : discord.gg/DuYH3Fh