Super Mario Sunshine arriva nativamente su iPhone, iPad e Mac grazie alla static recompilation, segnando una delle dimostrazioni più interessanti del 2026 per quanto riguarda il porting di titoli GameCube sui dispositivi Apple.

Il progetto non utilizza infatti la classica emulazione GameCube: il codice PowerPC originale viene ricompilato staticamente in anticipo in codice ARM64 nativo, mentre il rendering viene gestito attraverso Metal.
Super Mario Sunshine, running natively on macOS, iOS, and iPadOS for the first time.
This is static recompilation, not a GameCube emulator. Sunshine’s PowerPC code is recompiled ahead of time into native ARM64 code. It runs locally and renders through Metal. No streaming from a… pic.twitter.com/uzVrVEmOiq
— Kahris (@chrissotraidis) August 10, 2026
Il risultato è un’esperienza completamente locale, senza la necessità di collegarsi a un PC per lo streaming. L’iniziativa è stata portata avanti da Kahris, che ha riunito diverse componenti tecnologiche già disponibili nella scena.
ExpansionPak ha sviluppato DolRecomp e ModernGekko, Dolphin mette a disposizione il runtime di compatibilità e il backend Metal, mentre Kahris ha realizzato SunPad, l’integrazione specificamente pensata per trasformare il progetto in un’applicazione adatta a iPhone, iPad e Mac.
Su iPhone e iPad il porting offre controlli touch completi, sviluppati e modificati attraverso diverse revisioni per ottenere un’esperienza il più possibile naturale.
Inoltre, è possibile utilizzare controller fisici, scegliere una risoluzione interna compresa tra 1× e 4× e sperimentare il formato widescreen. Il progetto permette anche di importare localmente il gioco e gestire i salvataggi direttamente sul dispositivo.
Sul fronte delle prestazioni, i risultati migliori vengono ottenuti sugli iPad Pro con chip M2 e successivi e sui Mac dotati di Apple Silicon. Per iPhone viene invece consigliato almeno un iPhone 15 Pro, mentre il lavoro di ottimizzazione per i dispositivi mobili continua.
Lo sviluppo non è stato privo di difficoltà, soprattutto per quanto riguarda l’audio. Uno dei problemi più complessi era legato al timing del codice ricompilato: durante determinati burst di codice nativo, l’orologio del gioco arrivava a funzionare fino a dodici volte più velocemente del previsto, per poi tornare indietro ai confini delle sezioni di codice.
Questo comportamento comprometteva il funzionamento del sistema audio JAudio, causando la scomparsa della musica e dei dialoghi.
Una volta individuata la causa, il problema è stato corretto e l’audio è diventato stabile. Anche il sistema di controllo touch ha richiesto diverse iterazioni prima di raggiungere un livello di usabilità soddisfacente.
Il progetto è inoltre open source e mette a disposizione il codice sorgente, le istruzioni necessarie per la compilazione e un file IPA precompilato destinato al sideload.
Per utilizzare il porting è necessario possedere un dump legale della versione USA Rev 0 di Super Mario Sunshine: il progetto non distribuisce alcun dato proprietario di Nintendo.
La vera novità, però, risiede nella tecnologia utilizzata. La static recompilation permette di trasformare preventivamente il codice originale del gioco in codice nativo per la piattaforma di destinazione, riducendo la necessità di tradurre le istruzioni durante l’esecuzione come avviene nell’emulazione tradizionale.
Applicare questa tecnica a un titolo completo come Super Mario Sunshine, aggiungendo controlli touch nativi e rendering tramite Metal, rappresenta quindi una dimostrazione significativa delle possibilità offerte dall’architettura Apple Silicon e dai moderni strumenti di sviluppo.
Il progetto mostra soprattutto come i dispositivi Apple possano eseguire giochi originariamente progettati per GameCube attraverso un approccio molto più vicino a un vero porting nativo rispetto alla semplice emulazione.
Con strumenti come DolRecomp sempre più maturi e un crescente interesse verso la ricompilazione statica, potrebbero arrivare in futuro altri porting di classici Nintendo e di altri sistemi.
Stato attuale
| Area | Risultato attuale |
|---|---|
| Applicazione nativa | Target universale arm64 per iPhone/iPad e pacchetto locale SunPad.app per Apple Silicon |
| Rendering | Il backend Metal di Dolphin raggiunge la sequenza iniziale e consente di giocare a Delfino Plaza |
| Configurazione del gioco | Verifica esatta di GMSE01 USA Rev 0, importazione privata temporanea, attivazione atomica e rimozione effettiva |
| Touch | Stick di movimento, C-stick, D-pad, A/B/X/Y/Z, L/R, Start e menu delle impostazioni persistente |
| Controller | Touch e GameController iOS su dispositivi mobili; tastiera o controller collegato su macOS |
| Impostazioni | Scala di rendering da 1× a 4× modificabile in tempo reale, formato originale 4:3 e modalità sperimentali widescreen/fill screen, oltre alle impostazioni del layout touch |
| Audio | Corretto il problema relativo alla base temporale del gioco; verificato l’audio continuo su desktop e Simulator. Rimane da completare la verifica dell’audio sui dispositivi fisici |
| Distribuzione | IPA non firmato destinato agli sviluppatori per la firma lato utente; nessuna immagine del gioco, salvataggi, materiale per la firma, TestFlight o distribuzione sull’App Store |
Primo avvio su iPhone o iPad
Nota: SunPad non scarica e non include dati del gioco.
- Dopo aver avviato l’applicazione, bisogna aprire il menu •••, scegliere Game Data & Saves → Change or Reimport e selezionare tramite File la propria immagine ISO/GCM supportata.
- SunPad rimane aperto mentre verifica ed estrae localmente l’immagine. Una volta completato l’avvio del gioco, è possibile iniziare a giocare.
- L’applicazione verifica la dimensione esatta dell’immagine, il magic number GameCube, il codice di gioco
GMSE01, il numero del disco 0 e la revisione 0. L’immagine viene copiata ed estratta all’interno di una directory temporanea dedicata, viene verificata la struttura necessaria e soltanto dopo l’operazione viene attivata l’importazione completata. - Se la nuova importazione fallisce, i dati precedentemente funzionanti rimangono intatti. L’opzione Remove Stored Game Data elimina, dopo una conferma, sia l’immagine conservata sia l’albero dei dati estratti. I salvataggi vengono invece mantenuti separatamente.
Primo avvio su Mac
È sufficiente aprire il SunPad.app compilato localmente, selezionare la propria immagine del disco supportata e scegliere Extract and Play.
Il launcher utilizza Metal e offre opzioni per la risoluzione interna e la modalità a schermo intero. I controlli iniziali utilizzano la tastiera: WASD per il movimento, i tasti freccia per la telecamera, J/K/U/I/O per A/B/X/Y/Z, Q/E per L/R e Return per Start.
È possibile collegare un controller e selezionarlo dal launcher per sostituire il profilo della tastiera. I dati di gioco, le configurazioni e i salvataggi su Mac vengono conservati in ~/Library/Application Support/SunPad
Controlli touch
SunPad utilizza un layout orizzontale progettato separatamente per gli iPhone più compatti e per gli iPad di dimensioni maggiori.
Sul lato sinistro sono presenti lo stick di movimento, il D-pad e il pulsante L, tutti facilmente raggiungibili con il pollice. Sul lato destro troviamo invece lo stick della telecamera, i pulsanti A/B/X/Y, Z, R e Start.
Il pulsante persistente ••• apre il menu dal quale è possibile modificare risoluzione del rendering, formato dello schermo, controlli, dati di gioco, salvataggi e log diagnostici. Il formato originale 4:3 è quello predefinito, mentre 16:9 e Fill Screen sono indicati come modalità sperimentali.
La modalità Customize permette di trascinare i controlli e salvare le posizioni normalizzate in base alla categoria del dispositivo. L’opzione Reset consente invece di tornare al layout predefinito.
Quando viene collegato un controller fisico, il sistema può nascondere automaticamente i controlli touch.
Gli input touch e GameController vengono gestiti attraverso lo stesso stato GameCube thread-safe. Le pressioni dei pulsanti vengono registrate anche come eventi, viene utilizzato l’input più forte dello stick e i grilletti analogici mantengono il controllo della pressione del FLUDD.
Condivisione del log diagnostico
In caso di crash o mancato avvio di SunPad, è possibile riaprire l’applicazione e scegliere ••• → Share Diagnostic Log….
Prima di creare il log, SunPad richiede una conferma e mostra quali informazioni possono essere incluse, tra cui versione del sistema operativo e dell’app, dettagli del display e del controller, nome del file dell’immagine del gioco, errori del runtime e percorsi diagnostici.
I prefissi relativi al container dell’applicazione e alle directory temporanee vengono oscurati nei nuovi messaggi. Il log non contiene l’immagine del gioco, i dati estratti o i salvataggi.
Dopo aver controllato la destinazione tramite il menu di condivisione standard di iOS, è possibile inviare il file .log insieme a una breve descrizione del problema.
Se SunPad non riesce a riavviarsi, è possibile utilizzare Impostazioni → Privacy e sicurezza → Analisi e miglioramenti → Dati analisi, selezionare l’elemento più recente che inizia con SunPad e condividere il relativo report di crash di sistema.
Immagini
Le schermate disponibili provengono dalla build di sviluppo attualmente eseguita su un iPad fisico e utilizzano dati del gioco forniti localmente dal proprietario del dispositivo. Nessun dato del gioco o salvataggio è incluso nel repository.
Dati di gioco supportati
Al momento il progetto supporta ufficialmente:
| ID gioco | Regione | Revisione | Stato |
|---|---|---|---|
GMSE01 |
USA | 0 | Primo target supportato |
Sono riconosciute le immagini ISO/GCM non compresse. Il supporto alle immagini compresse e il riconoscimento automatico dei moduli sono ancora oggetto di sviluppo.
L’hash SHA-256 della versione utilizzata per lo sviluppo è riportato nella documentazione relativa agli aspetti legali e alla provenienza, esclusivamente per consentirne l’identificazione. L’immagine del gioco non viene mai inserita nel repository o distribuita.
Come funziona la pipeline locale
Il processo parte dall’immagine GMSE01 dell’utente presente sul Mac. Da questa vengono generati tramite DolRecomp il modulo ARM64 e gli elementi necessari al runtime ModernGekko/Dolphin. Il risultato viene quindi integrato nell’app SunPad firmata per lo sviluppo.
Dopo l’installazione, l’utente seleziona la propria immagine GMSE01 tramite File. L’immagine viene estratta privatamente sul dispositivo e il gioco viene quindi eseguito utilizzando il rendering Metal, con salvataggi e dati mantenuti localmente.
La fase di compilazione e quella di importazione del gioco sono volutamente separate. La compilazione dell’applicazione non aggiunge al pacchetto l’immagine commerciale del disco, i file estratti del gioco o i salvataggi dell’utente.
Domande frequenti
Domanda: La repository contiene Super Mario Sunshine?
Risposta: No. È necessario fornire una propria immagine GameCube supportata e ottenuta legalmente. Il progetto non fornisce dati del gioco né link per scaricarli.
Domanda: SunPad è un emulatore GameCube?
Risposta: No. SunPad è un’integrazione specifica per ricompilazione statica. Combina un modulo GMSE01 generato localmente con un runtime di compatibilità derivato da Dolphin. Non è quindi un loader generico per altri giochi GameCube.
Domanda: Utilizza un JIT su iPhone o iPad?
Risposta: No. Non viene utilizzato un JIT PowerPC durante l’esecuzione. Il codice PowerPC del gioco supportato viene ricompilato ahead-of-time in ARM64, mentre l’interprete del runtime gestisce le eventuali regioni non ricompilate.
Domanda: È possibile scaricare un IPA?
Risposta: Sì. È disponibile un IPA non firmato, SunPad 0.1.0 Preview 1, nella sezione Releases di GitHub, che deve essere successivamente firmato utilizzando la propria identità Apple.
L’IPA include il modulo eseguibile GMSE01 ricompilato ahead-of-time necessario, ma non contiene l’immagine del disco, gli asset di gioco estratti, i salvataggi, le impostazioni, i certificati o il provisioning profile.
Domanda: I salvataggi rimangono dopo un aggiornamento dell’app?
Risposta: Un’installazione di sviluppo effettuata senza rimuovere la precedente applicazione mantiene il container dell’app e quindi i relativi dati. Una disinstallazione completa, un cambiamento dell’identificatore del bundle o alcune modifiche alla firma possono invece eliminare o rendere inaccessibili i dati locali.
È quindi consigliabile eseguire un backup prima di modificare questi elementi. Nessun salvataggio deve essere inserito nel repository o negli artefatti di release.
Domanda: Il progetto è terminato?
Risposta: No. La build attuale è giocabile e già utile per i test di sviluppo, ma rimangono diverse attività da completare. Tra queste figurano una nuova verifica dell’audio sui dispositivi fisici, il miglioramento delle prestazioni su iPhone, una copertura hardware più ampia, il consolidamento della gestione del ciclo di vita e dei salvataggi, il supporto alle immagini compresse, il packaging per la distribuzione e ulteriori test di gioco su macOS.
Download: SunPad v0.1.0 preview.1-unsigned
Download: Source code SunPad v0.1.0 preview.1-unsigned
Alcune parti di questo articolo sono state generate con l’aiuto dell’intelligenza artificiale. Questo articolo contiene link affiliati a Amazon. Se acquisti tramite questi link, potrei guadagnare una commissione senza costi aggiuntivi per te.🔥 Prodotti in promozione e articoli più venduti: Xbox Series
Vedi altri prodotti Xbox Series
Ultimo aggiornamento 2026-09-04 / Link di affiliazione / Immagini da Amazon Product Advertising API





