Il porting PC di Sonic Unleashed è stato realizzato attraverso lo strumento XenonRecomp, progettato per convertire gli eseguibili della Xbox 360 in codice C++ ricompilabile.
Questo innovativo tool consente di tradurre le istruzioni PowerPC (PPC) della console in codice C++ eseguibile su altre architetture, aprendo nuove possibilità per il porting e l’ottimizzazione dei giochi Xbox 360.
Attualmente, il supporto è limitato alle piattaforme x86, poiché XenonRecomp sfrutta istruzioni specifiche di questa architettura, ma gli sviluppatori stanno valutando soluzioni per ampliarne la compatibilità.
Il progetto si ispira a N64: Recomp, uno strumento che permette la ricompilazione degli eseguibili del Nintendo 64.
XenonRecomp segue un principio simile, convertendo le istruzioni PPC in codice C++ compilabile, sebbene il codice generato non sia ottimizzato per la leggibilità umana, poiché la conversione avviene senza una ristrutturazione significativa.
Il funzionamento dello strumento si basa sulla trasmissione dello stato della CPU, inclusi i registri PPC, come argomenti alle funzioni ricompilate.
Tuttavia, poiché la console Xbox 360 utilizza un’architettura big-endian mentre XenonRecomp opera in little-endian, è necessario un adattamento per la gestione della memoria e per i registri vettoriali, che presentano un ordine invertito rispetto alla console originale.
Le istruzioni vettoriali VMX sono attualmente implementate per x86, ma si sta valutando l’integrazione di librerie come SIMD Everywhere per migliorare la compatibilità tra architetture.
Alcune funzioni legate all’hardware, come la decodifica XMA tramite MMIO (Memory-Mapped I/O), non sono ancora implementate, rappresentando una delle principali sfide per lo sviluppo futuro.
Per ottimizzare le prestazioni, XenonRecomp utilizza una tabella hash perfetta per la risoluzione delle chiamate di funzioni virtuali, riducendo il consumo di memoria rispetto ai metodi tradizionali.
Le tabelle di salto vengono gestite attraverso schemi di assemblaggio prevedibili, anche se nei giochi più recenti sono richiesti adattamenti specifici a causa delle evoluzioni del compilatore Xbox 360.
Il software supporta inoltre l’analisi automatica dei confini delle funzioni, con la possibilità di definirli manualmente tramite file di configurazione TOML.
XenonRecomp implementa diverse ottimizzazioni per migliorare le prestazioni, tra cui la rimozione di chiamate di registro non necessarie e la conversione di alcuni registri in variabili locali, contribuendo a ridurre le dimensioni degli eseguibili e a migliorare i tempi di esecuzione.
Inoltre, lo strumento permette di applicare patch alle funzioni PPC, consentendo di sostituire specifiche routine con implementazioni personalizzate senza perdere l’accesso alle funzioni originali.
Nonostante gli sviluppi promettenti, XenonRecomp non supporta ancora le eccezioni, poiché la gestione del registro di collegamento e la natura dinamica dei gestori di eccezioni della Xbox 360 rappresentano sfide tecniche significative.
Inoltre, alcune istruzioni PPC legate alle operazioni Direct3D non sono completamente implementate.
Il progetto Unleashed Recompiled rappresenta un primo esempio di utilizzo pratico di XenonRecomp, dimostrando le potenzialità dello strumento per il porting dei giochi Xbox 360.
Lo sviluppatore principale, blueskythlikesclouds, ha reso disponibili alcune build sperimentali per chi volesse provare il progetto e contribuire al suo sviluppo.
Download: Source code XenonRecomp
Fonte: x.com