Modder punta alla modernizzazione dei giochi per Nintendo 64 grazie a N64 Recomp: cambierà il mondo dell’emulazione?

Un modder, con il suo strumento N64 Recomp, sta modernizzando The Legend of Zelda: Majora’s Mask per Nintendo 64.

Condividi l'articolo

N64Recomp, nuovo e innovativo software per l’emulazione

Un modder conosciuto come Mr-Wiseguy ha rilasciato un progetto, chiamato N64:Recomp, che consente di giocare ai titoli del Nintendo 64 emulandoli con una serie di funzionalità aggiornate.

Queste includono il supporto per il salvataggio automatico, risoluzioni ultrawide, framerate elevati, mira giroscopica, texture personalizzate e molto altro.

Segue una descrizione dettagliata del processo:

“Il ricompilatore funziona accettando una lista di simboli e metadati insieme al binario.

L’obiettivo è dividere il binario in ingresso in funzioni che vengono ricompilate individualmente in una funzione C, nominata in base ai metadati.

Le istruzioni vengono elaborate una alla volta e il codice C corrispondente viene emesso man mano che ciascuna istruzione viene elaborata.

Questa traduzione è molto letterale per mantenere la complessità bassa.

Ad esempio, l’istruzione addiu $r4, $r4, 0x20, che aggiunge 0x20 al valore a 32 bit nei byte bassi del registro $r4 e memorizza il risultato a 64 bit con segno esteso in $r4, viene ricompilata in ctx->r4 = ADD32(ctx->r4, 0X20);

L’istruzione jal (jump-and-link) viene ricompilata direttamente in una chiamata di funzione, e anche le istruzioni j o b (salti e rami incondizionati) che possono essere identificate come ottimizzazioni tail-call vengono ricompilate in chiamate di funzione.

I ritardi di diramazione vengono gestiti duplicando le istruzioni, se necessario.

Ci sono altri comportamenti specifici per alcune istruzioni, come il tentativo del ricompilatore di trasformare un’istruzione jr in un’istruzione switch-case se riesce a capire che viene usata con una tabella di salto.

Il ricompilatore è stato testato principalmente su binari costruiti con i vecchi compilatori MIPS (ad esempio mips gcc 2.7.2 e IDO) e con i moderni clang che puntano ai mips.

Il moderno mips gcc può far inciampare il ricompilatore a causa di alcune ottimizzazioni che può fare, ma questi casi possono probabilmente essere evitati impostando flag di compilazione specifici.

Ogni funzione di output creata dal ricompilatore viene attualmente emessa in un proprio file.

In futuro potrebbe essere fornita un’opzione per raggruppare le funzioni in file di output, che dovrebbe aiutare a migliorare i tempi di compilazione dell’output del ricompilatore, riducendo l’I/O dei file nel processo di compilazione.

L’output del ricompilatore può essere compilato con qualsiasi compilatore C (testato con msvc, gcc e clang).

L’output dovrebbe essere usato con un runtime in grado di fornire le funzionalità e le implementazioni di macro necessarie per eseguirlo.

Un esempio della maggior parte delle implementazioni delle macro richieste si trova nel progetto Zelda 64: Recompiled, che contiene anche il codice di accompagnamento per l’implementazione del resto del runtime richiesto.”

Inoltre, è stato pubblicato un video collaborativo tra Mr-Wiseguy e lo YouTuber Narrel, che approfondisce le spiegazioni tecniche sul funzionamento dello strumento e sulle sue capacità.

Utilizzando N64 Recomp, il modder è stato in grado di creare “ricompilazioni” di giochi Nintendo 64 che non hanno decompilazioni, come Rocket Robot on Wheels, Banjo-Kazooie e Superman 64. Ma ancor più di spicco è il progetto Zelda 64: Recompiled, che proverà a modernizzare i classici della Saga Leggendaria con le nuove feature del tool.

Zelda 64: Recompiled supporta attualmente The Legend of Zelda: Majora’s Mask, con l’intenzione di supportare presto anche The Legend of Zelda: Ocarina of Time.

Potrebbero interessarti