Cominciamo a raccogliere i primi frutti dovuti alla fuga di materiale contenente codice sorgente e repository di sviluppo appartenenti a Nintendo, tramite questi file un developer ha sviluppato un primo porting di Super Mario 64 per console Wii U.
Il README attualmente non include alcuna istruzione su come ottenere le dipendenze per la compilazione di Super Mario 64 per console Wii U, i più talentuosi possono comunque seguire il tutorial ProgrammingOnTheU (e in particolare la sezione WUT).
Guida
[stextbox id=’info’]Nota: Su Windows, bisogna utilizzare principalmente MSYS2.[/stextbox]
- Installare
git
,make
,python3
eSDL2
utilizzando pacman:(dkp-)pacman -S git make python3 wiiu-sdl2
. - Clonare la repository:
git clone https://github.com/aboood40091/sm64-port.git
. Questo comando andrà a creare una nuova directorysm64-port
, entrate al suo interno digitando il comandocd sm64-port
. Assicuratevi cheTARGET_WII_U
sia impostato su 1 nel Makefile. (TARGET_WII_U? = 1
) - Posizionare la ROM di Super Mario 64 rinominata in
baserom.<VERSION>.z64
nella directory principale della repository per l’estrazione degli asset, doveVERSION
può essereus
,jp
oeu
. - Digitare il comando
make
per compilare. Qualifica la versione tramitemake VERSION=<VERSION>
. Aggiungere-j4
per migliorare la velocità di compilazione (dipende dall’hardware in base alla quantità di core CPU disponibili). - Il file binario eseguibile si troverà in
build/<VERSION>_wiiu/sm64.<VERSION>.f3dex2e.rpx
. - Potrete quindi procedere con l’installazione del file RPX nel menu principale o come app nell’Homebrew Launcher.
Linux
- Prerequisiti di installazione (Ubuntu):
sudo apt install -y git build-essential pkg-config libusb-1.0-0-dev libsdl2-dev
. - Clonare la repository:
git clone https://github.com/aboood40091/sm64-port.git
. Questo comando andrà a creare una nuova directorysm64-port
, entrate al suo interno digitando il comandocd sm64-port
. Assicuratevi cheTARGET_WII_U
sia impostato su 1 nel Makefile. (TARGET_WII_U? = 1
) - Posizionare la ROM di Super Mario 64 rinominata in
baserom.<VERSION>.z64
nella directory principale della repository per l’estrazione degli asset, doveVERSION
può essereus
,jp
oeu
. - Digitare il comando
make
per compilare. Qualifica la versione tramitemake VERSION=<VERSION>
. Aggiungere-j4
per migliorare la velocità di compilazione (dipende dall’hardware in base alla quantità di core CPU disponibili). - Il file binario eseguibile si troverà in
build/<VERSION>_pc/sm64.<VERSION>.f3dex2e
.
Windows
- Installare e aggiornare MSYS2, seguendo tutte le indicazioni elencate sul sito: https://www.msys2.org/.
- Dal menu di avvio, eseguire MSYS2 MinGW e installare i pacchetti richiesti a seconda del computer (NON avviare “MSYS2 MSYS”):
- 64 bit: Avviare “MSYS2 MinGW 64 bit” e installare:
pacman -S git make python3 mingw-w64-x86_64-gcc
- 32 bit (funziona anche su macchine a 64 bit): Avviare “MSYS2 MinGW 32 bit” e installare:
pacman -S git make python3 mingw-w64-i686-gcc
- NON installare per errore il pacchetto chiamato semplicemente
gcc
.
- 64 bit: Avviare “MSYS2 MinGW 64 bit” e installare:
- Il terminale MSYS2 ha una directory di lavoro corrente che inizialmente è
C:\msys64\home\<username>
(home directory). Al prompt, vedrete la directory di lavoro corrente in giallo.~
è un alias per la directory home, è possibile modificare la directory di lavoro corrente in MyDocuments
inserendocd/c/Users/<username>/Documents
. - Clonare la repository:
git clone https://github.com/aboood40091/sm64-port.git
. Questo comando andrà a creare una nuova directorysm64-port
, entrate al suo interno digitando il comandocd sm64-port
. Assicuratevi cheTARGET_WII_U
sia impostato su 1 nel Makefile. (TARGET_WII_U? = 1
). - Posizionare la ROM di Super Mario 64 rinominata in
baserom.<VERSION>.z64
nella directory principale della repository per l’estrazione degli asset, doveVERSION
può essereus
,jp
oeu
. - Digitare il comando
make
per compilare. Qualifica la versione tramitemake VERSION=<VERSION>
. Aggiungere-j4
per migliorare la velocità di compilazione (dipende dall’hardware in base alla quantità di core CPU disponibili). - Il file binario eseguibile si troverà in
build/<VERSION>_pc/sm64.<VERSION>.f3dex2e.exe
all’interno della repository.
Risoluzione dei problemi
- Se si ottiene
make: gcc: command not found
omake: gcc: No such file or directory
di questo tipo sebbene i pacchetti siano stati installati correttamente, probabilmente hai lanciato una versione errata di MSYS2. Leggere di nuovo le istruzioni. Il prompt del terminale dovrebbe contenere “MINGW32” o “MINGW64” in testo viola e NON “MSYS”. - Se si ottiene
Failed to open baserom.us.z64!
probabilmente non si è riusciti a posizionare il baserom nella repository. Puoi scriverels
per elencare i file nella directory di lavoro corrente. Se ti trovi nella directorysm64-port
, assicurati di vederlo qui. - Se si ottiene
make: *** No targets specified and no makefile found. Stop.
, significa che non ci si trova nella directory corretta. Assicuratevi che il testo giallo nel terminale termini consm64-port
. Utilizzarecd <dir>
per entrare nella directory corretta. Se scrivils
dovresti vedere tutti i file del progetto, inclusoMakefile
se tutto è corretto. - Se si verifica un errore, assicuratevi che i pacchetti MSYS2 siano aggiornati eseguendo
pacman -Syu
epacman -Su
. Se la finestra MSYS2 si chiude immediatamente dopo averla aperta, riavviare il computer. - Quando si esegue
gcc -v
, assicuratevi di vedereTarget: i686-w64-mingw32
oTarget: x86_64-w64-mingw32
. Se appareTarget: x86_64-pc-msys
, significa che avete aperto la voce del menu di avvio di MSYS errata o hai installato il pacchetto gcc non corretto.
Per assistenza con la creazione della versione Wii U, non esitare a unirti al server Discord ForTheUsers collegato di seguito.
Debug
Il codice può essere sottoposto a debug utilizzando gdb
. Su Linux installare il pacchetto gdb
ed eseguire gdb <eseguibile>
. Su MSYS2 installare eseguendo pacman -S winpty gdb
ed eseguire winpty gdb <eseguibile>
.
Il programma winpty
si assicura che la tastiera funzioni correttamente nel terminale. Considerare di cambiare anche il flag -mwindows
compilato in -mconsole
per poter vedere stdout/stderr e per poter premere Ctrl + C per interrompere il programma.
Nel Makefile, assicuratevi di compilare i sorgenti utilizzando -g
invece di -O2
per includere i simboli di debug. Guarda qualsiasi tutorial online su come usare gdb. Per la porta Wii U, puoi accedere utilizzando WHB, che accederà sia all’OSReport nativo della console che a Udp.
Costruzione della ROM
Volendo è possibile creare anche la ROM N64 con questa repository. Consultare: https://github.com/n64decomp/sm64 per le istruzioni.
Struttura del progetto
sm64
├── actors: comportamenti degli oggetti, layout geografico e elenchi di visualizzazione
├── asm: codice assembly scritto a mano, intestazione rom
│ └── non_matchings: asm per le sezioni non corrispondenti
├── assets: animazione e dati demo
│ ├── anims: dati di animazione
│ └── demos: dati demo
├── bin: file C per ordinare gli elenchi di visualizzazione e le texture
├── build: directory di output
├── data: script di comportamento, misc. dati
├── doxygen: infrastruttura di documentazione
├── enhancements: esempi di modifiche alla sorgente
├── include: file di intestazione
├── levels: script di livello, layout geografico ed elenchi di visualizzazione
├── lib: codice libreria SDK
├── rsp: audio e codice assembly Fast3D RSP
├── sound: sequenze, campioni di suoni e banchi di suoni
├── src: codice sorgente C per il gioco
│ ├── audio: codice audio
│ ├── buffers: stack, heap e buffer delle attività
│ ├── engine: motori di elaborazione degli script e utilità
│ ├── game: comportamenti e resto della fonte del gioco
│ ├── goddard: schermata introduttiva di Mario
│ ├── menu: schermata del titolo e menu di selezione dei livelli di file, azione e debug
│ └── pc: codice porta, renderer audio e video
├── text: dialoghi, nomi dei livelli, nomi degli atti
├── textures: skybox e dati di texture generici
└── tools: costrutto degli strumenti
Download: Source code Super Mario 64
Fonte: gbatemp.net
Disponibile una nuova porta? Qui urge una correzione ahahaha