Con l’arrivo di una “versione” di Super Mario 64 per PC e con la conseguente azione legale di Nintendo che ha, ovviamente, deciso di far rimuovere questa particolare build dalla rete è arrivato il momento per noi di discuterne un po’ anche se quello che vi state apprestando a leggere è più un approfondimento tecnico, quanto basta, su questa “magica” versione del gioco che un commento sulla vicenda sulla quale non c’è, obbiettivamente, niente da dire.

Ci soffermeremo solo qualche riga sul gioco in sé sottolineando come questa “versione PC” di Super Mario 64 non abbia niente di particolare al suo interno: è il gioco originale nudo e crudo, così come mamma lo ha fatto, con l’unica differenza che “gira nativamente” su PC, supporta pienamente i controller di ultima generazione e può raggiungere una risoluzione di 4k (sempre che questa vi piaccia piacere visti i poligoni originali del gioco).

Messa da parte quindi questa piccola questione sulla qualità del gioco su PC (che è nettamente inferiore a qualsiasi versione emulata con un buon numero di filtri applicati) , discutiamo un po’ di quello che è questa versione di gioco, come è nata e a cosa serve, in effetti, avere in mano un “porting” per PC di un gioco del Nintendo 64 (perché, che ci crediate o meno, ha un senso per moltissimi che va al di là della semplice pirateria).

Iniziamo dal principio: spesso capita che i collezionisti non vogliano utilizzare le proprie cartucce (o dischi) di gioco per evitare che questi si rovinino con l’utilizzo o più semplicemente per evitare di aprire una preziosissima scatola che perderebbe un po’ di valore. Succede quindi che approfittano di quei “loschi figuri” che prendono i dati da un dispositivo di archiviazioni e li schiaffano su un PC. Questi dati, la cui proprietà intellettuale è dell’azienda produttrice (nel caso di Super Mario 64 tutto il codice sorgente è di proprietà di Nintendo), possono essere utilizzati per emulare il gioco o farci altro che fa dalla semplice lettura alla più complessa modifica.

Fin quando quei sorgenti te li tieni tu sul tuo dispositivo, non li distribuisci a nessuno, poco importa: puoi giocare (se possibile) al tuo gioco senza usare la cartuccia originale e sono tutti contenti. Però la community di programmatori e videogiocatori curiosi di tutto il mondo non la fa così semplice: ho per le mani i dati di un gioco e me li tengo tutti per me senza condividere con nessuno le mie scoperte? Certo che no, anche perché senza questo tipo di condivisione non sarebbero nate certe finezze nelle emulazioni e tante altre cose molto interessanti per il mercato (pensate un po’).

Come nasce Super Mario 64 su PC?

Quello che è successo con Super Mario 64 è piuttosto semplice: qualcuno ha fatto un dump (questo è il termine per indicare la magia) della cartuccia averno in mano quindi la ROM originale del gioco. Con questa ROM e basta per le mani però non ci puoi fare molto, quindi avviene una cosa interessante che è il processo di decompilazione, ovvero prendi la rom e la dividi in tanti piccoli file (o uno solo) che rappresenta il codice sorgente: puoi, insomma, osservare l’interno del gioco e scoprirne un po’ tutti i suoi segreti.

Quello che succede è che, solitamente, i file decompilati di queste ROM sono scritti in un linguaggio poco carino per gli esseri umani, l’assembler, che è un insieme di istruzioni in esadecimale che scrivono, leggono e fanno cosine zozze con i registri della ROM. Vedetela così: una ROM è formata da tanti piccoli cassettini (i registri) in cui sono contenute informazioni. Abbiamo, ad esempio, il cassettino in cui c’è scritta dentro la posizione della camera: ecco, l’assembler non fa altro che dire “prendi il registro 0xABCD e scrivi dentro il byte 0xA”, spiegando quindi alla camera come deve muoversi.

Ecco, non si tratta proprio di un linguaggio comprensibilissimo (anche se in tanti ci sguazzano dentro che è un piacere) quindi c’è chi, avendo in mano questi file decompilati fa un ulteriore passaggio e li traduce in una lingua molto più simile alla nostra: il C. La scelta è dovuta al fatto che fra tutti i linguaggi presenti il C è molto vicino a quelli di basso livello ma allo stesso tempo è abbastanza astratto da essere facilmente interpretabile da un essere umano normale.

E che ci facciamo con questi sorgenti scritti in C? Essenzialmente niente: li possiamo leggere, possiamo modificarli e possiamo ricompilarli ottenendo una ROM come se fosse nuova. In soldoni abbiamo aperto una porta d’accesso verso la magia dietro un videogioco: possiamo scoprire perché esistono determinati comportanti, come mai ci sono certi glitch e così via. Una fonte di informazioni interessantissima per tre community in particolare: quelle che si occupano di emulazione, quelle che si occupano di modding e quelle che si occupano di TAS.

Chi ha giocherellato con un emulatore almeno una volta nella vita sa bene che è possibile “personalizzare” il sistema in modo tale che abbia determinate performace con certi giochi (alcuni giochi, in soldoni, girano meglio di altri con certe impostazioni e certi altri giochi girano proprio male). Come è possibile? Beh ecco, studiando a fondo le ROM dei vari giochi è possibile emularli al meglio grazie a tutta una serie di informazioni che possono rendere l’emulatore più performante con quel tipo di gioco in pasto.

Le "magie" del codice sorgente

Ma non solo, possono essere applicati filtri e può essere migliorata sensibilmente la qualità del gioco in generale (paradossalmente titoli come The Legend of Zelda Wind Waker o comunque tutta la libreria del GameCube gira meglio sul Dolphin, l’emulatore della piattaforma, che sulla console originale), e questo è possibile solo ed esclusivamente grazie a questi preziosissimi file che nascono dalla decompilazione di un gioco.

Chi si occupa di modding, inutile dirlo, va a nozze con i file decompilati di un gioco: è possibile letteralmente fare di tutto con il gioco grazie al codice sorgente “liberamente” modificabile e ricompilabile in una “nuova” ROM: se in una prima istanza si agiva così, con gli anni si è arrivati a creare veri e proprio strumenti per far fronte all’esigenza di modificare un gioco dando vita a un undergound di ROM “tarocche” incredibile che spesso e volentieri cela al suo interno anche piccoli capolavori (vedasi tutte le versioni difficili su Super Mario Wolrd).

Infine abbiamo la community che si occupa di TAS. Di cosa si tratta? TAS è un acronimo per Tool Assisted Speedrun, ovvero tutte quelle speedrun di un gioco che fanno uso di emulatori e strumenti per compiere determinate azioni (ad esempio routine programmate per premere N volte lo stesso tasto in rapida sequenza con tempi che un umano non potrebbe sostenere). Ecco, anche questo “piccolo” mondo ha bisogno di questi file decompilati per poter progredire al meglio ma anche per scoprire cosa c’è dietro il correre addosso ad un blocco, premere due bottoni e fare salti incredibili.

Se doveste essere interessati a questo interessantissimo mondo esiste un ragazzo, Scott Buchanan conosciuto su internet con il nickname di pannenkoek2012, che si occupa in modo molto tecnico di TAS su Super Mario 64, uno dei titoli che nascone più segreti per quanto concerne questo tipo di speedrun (e pensate che solo qualche anno fa è stata scoperta una stanza segreta nel gioco). Sul suo canale ne parla in modo dettagliato e spiega tutti i trucchetti del mestiere e quello che c’è dietro determinate azioni: un must per tutti coloro che apprezzano il genere o che vogliono approcciarsi.

Capite dunque che avere in mano i file sorgente, decompilati, di un gioco porta a grandissimi vantaggi in questo o in quel campo, tutti utili, in qualche modo, anche a voi nonostante potreste non accorgervi propriamente della cosa. Ma cosa c’entra la versione di Super Mario 64 per PC con tutto questo? Beh, il processo creativo alla base è lo stesso: qualcuno, nel lontano 2016, riuscì a decompilare il gioco rendendo disponibile il codice sorgente (in C) a chiunque.

...

Oggi, nel 2020, qualcuno si è chiesto “ma cosa succederebbe se io ricompilassi questi file in un’app nativa per Windows (che sono scritte anche in C) invece che in una ROM?”. Ecco, abbiamo scoperto che funziona e che viene fuori un eseguibile perfettamente funzionante del gioco senza bisogno di un emulatore alle spalle e questo, che ci crediate o meno, è un passo importantissimo per tutte quelle community e per tutti gli appassionati, almeno fino a quando Nintendo glielo lascerà fare.