Scritto da: Faradise
Tradotto da: Boogaboom
Fonte: [CRASHY NEWS] Special Interview with Niko: The CTR Decompilation Project Leader
Traduzione approvata da Motwera e Faradise
Si ringrazia MVSidereus per la revisione linguistica tecnica

“Niko” è un membro del team CTR-Tools, a capo di un progetto di ricerca collaborativo sul classico gioco di corse Crash Team Racing. Da marzo 2020 dirige il progetto di decompilazione del codice sorgente di CTR. La scorsa settimana è stato caricato un video che mostra al pubblico lo stato attuale dei lavori.

Faradise: Ciao, sono qui per l’intervista. Ti ringrazio per il tempo che ci hai concesso. Come va?

Niko: Sono di buon umore. Il progetto di CTR sta procedendo bene e ho appena ottenuto un nuovo lavoro come programmatore. Imparo cose nuove ogni giorno.

Mi fa piacere. Partiamo con una domanda semplice: perché proprio CTR? Cos’è che ti ha suscitato tanto interesse per questo gioco in particolare?

Ho sempre amato CTR. È il primo videogioco a cui abbia mai giocato, a parte forse un giochino di Elmo di Sesame Street. Giocavo in multiplayer con le mie sorelle e mio padre e ci divertivamo un sacco.

Che bella cosa. Ma c’è qualcosa che non ti piace del gioco? Magari qualcosa che vorresti correggere o eliminare, se potessi?

Non mi è mai piaciuto il fatto che N. Oxide non fosse giocabile, ma abbiamo risolto questa mancanza. Un altro problema è che Stazione Oxide non è giocabile in multiplayer, ma stiamo sistemando anche questo.

Non vedo l’ora. Ma sono curioso, come ti è venuta questa idea? Ti è stata proposta da qualcuno?

Quando è stato decompilato Super Mario 64, volevamo che CTR ricevesse lo stesso trattamento; ma nessuno prendeva l’iniziativa, perché nessuno di noi sapeva da dove cominciare. Per 6 mesi siamo andati avanti a dirci “Hey, dovremmo fare questa cosa, ma non voglio farla io”. L’idea su come procede è venuta da Mister, che aveva una build prototipo di CTR risalente al 5 agosto 1999. Ci disse che dovevamo iniziare da lì, e ci suggerì di usare Ghidra per fare il reverse engineering. Al tempo, nessuno di noi conosceva Ghidra, quindi quello fu un punto di partenza. Eravamo in marzo del 2020.

Ho sentito che il team a un certo punto ha incontrato dei problemi che hanno bloccato lo sviluppo delle mod per il gioco. È per questo che avete deciso che il gioco andava decompilato?

No. Non è per problemi con il modding di CTR che abbiamo avviato il progetto. Abbiamo iniziato questa decompilazione perché era marzo del 2020, era appena iniziata la pandemia, eravamo tutti chiusi in casa. Così ho deciso di mettermi a fare questa cosa perché mi annoiavo a morte e non avevo altro da fare. Presto si è unita altra gente. Ciò detto, allora stavamo già lavorando a OnlineCTR e tenevamo già in considerazione che decompilare il gioco avrebbe effettivamente aiutato a risolvere alcuni problemi che avevamo incontrato sviluppando OnlineCTR, oltre che ad agevolare lo sviluppo di qualsiasi altra mod, potenzialmente. Ma è stato il tedio da lockdown il motivo principale per cui ho voluto iniziare questo progetto, oltre all’idea che mi sarebbe servito per imparare a il linguaggio assembly e a usare Ghidra.

Hai menzionato il progetto di decompilazione di Super Mario 64, che a quanto mi risulta è pubblico su Github. Il vostro lavoro, tuttavia, non si trova in nessuna repository pubblica, ma può essere soltanto scaricato tramite la descrizione dei video su YouTube. Come mai?

La nostra repository non è pubblica perché spesso e volentieri quando programmiamo procediamo a tentoni. Non vogliamo che chi viene a leggere il nostro codice prenda per affidabile qualcosa che magari non lo è, quindi pubblichiamo soltanto ciò di cui ci sentiamo sicuri. Nei video a tema “ModSDK” si poteva trovare gran parte del codice sorgente, ma pare che non molti ci facessero caso. È ancora lì, nelle descrizioni dei video. A distanza di un anno abbiamo pubblicato un video intitolato Crash Team Racing Decompile, in cui andiamo dritti al punto e diciamo subito di aver già decompilato il 90% del gioco. Anche il codice sorgente di tutte le nostre mod è pubblico. Non è che nella nostra repository ci sia chissacché, c’è solo roba fatta a metà di cui ci sentiamo un po’ incerti.

Il vostro progetto è qualcosa di unico e speciale, perché a quanto ne so sono ben poche le decompilazioni esistenti di giochi PS1. Pare che sia un lavoro complicato e cui c’è ancora poca esperienza. Tu cosa ne pensi?

Gli strumenti per la decompilazione di codice PS1 non sono assolutamente al livello di quelli per N64, ma la situazione sta migliorando. Grazie ai recenti sviluppi, ora Ghidra è in grado di riconoscere e produrre istruzioni del GTE in linguaggio C. È una cosa che ci avrebbe sicuramente fatto comodo due anni fa; ma meglio tardi che mai, noi siamo contenti. Anche gli emulatori e gli strumenti di debug sono in continuo miglioramento (NdT: il GTE è il Geometry Transformation Engine, coprocessore interno alla CPU di PSX che calcola geometrie 3D, illuminazione, etc.).

Credo che dopo questo progetto molta gente si aspetterà un port per PC in futuro. Vorreste occuparvene voi o preferireste lasciarlo fare a qualcun altro a partire dal vostro codice?

Noi vogliamo farlo, un port di CTR su PC. Alcuni programmatori stanno cercando di creare una riproduzione il più fedele possibile di CTR in Unity; ma, non essendo un port del codice sorgente originale, non può essere portato su PS2, GameCube o MS-DOS. Invece noi vorremmo fare una cosa del genere. Ma anche se abbiamo completato il 90% del lavoro, abbiamo ancora molto da fare.

Si può tranquillamente dire che per te e il tuo team questo sia il più grande traguardo raggiunto finora. Ma c’è qualche altro progetto di cui vai fiero e di cui non si parla? O c’è qualcosa a cui sogni di lavorare in futuro?

È questo il mio sogno, moddare e decompilare CTR, e lo sto vivendo. Questo, e poi realizzare port del gioco. Un’altra cosa di cui vado fiero è un engine che ho creato prima della pandemia, che gira su Playstation 4, Xbox One, Switch e PC. Grazie a quello ho imparato a lavorare con tutte le API grafiche esistenti. Ma, grafica a parte, il codice sorgente era una vera schifezza. Non c’era threading, non c’era instancing, non c’erano criteri di allocazione personalizzati, tutte cose che rendono CTR il bel lavoro che è. Adesso quando programmo prendo sempre ispirazione in qualche misura dal codice di CTR. Non che mi metta a fare copia-incolla, ma spesso nei miei lavori personali e professionali mi baso sul threading e sui sistemi di allocazione che abbiamo implementato nel codice di CTR.

Congratulazioni per avere realizzato questo sogno. Ve lo meritate. Quali sono le vostre aspirazioni per il progetto e per la community?

Spero che questo progetto riuscirà a richiamare altri appassionati di CTR e di modding. Cerchiamo sempre altri collaboratori per migliorare il nostro lavoro. C’è ancora molta ricerca da fare prima di potere implementare livelli e personaggi custom (con texture e animazioni), ma sono certo che sia fattibile. Così non solo avremo un port, ma riusciremo anche ad ampliarlo.

Spero proprio che ci riusciate. Sono certo che andrà sempre meglio. Oh, questa domanda non volevo fartela… Ma devo chiedertelo. Quand’è che sarà completo?

In teoria, non sarà mai veramente completo. Continueremo sempre ad apportare miglioramenti e rifiniture. Ma se più persone si uniranno a noi saremo in grado di lavorare molto più in fretta. La porta è aperta per tutti. A chi non ha esperienza con il linguaggio C o con l’architettura MIPS possiamo fornire risorse per imparare le basi. Alcuni dei nostri collaboratori attivi hanno iniziato a programmare apposta per contribuire al progetto.

Va bene, credo che possiamo fermarci qui. Grazie per la chiacchierata. Faccio tanti auguri a te e al tuo team, ché questo progetto riservi un futuro brillante per CTR.