KartPad è uno dei progetti più interessanti emersi nel panorama della ricompilazione nativa dei giochi Nintendo su dispositivi Apple. L’obiettivo è ambizioso: portare Mario Kart Wii su Mac con chip Apple Silicon, iPhone e iPad senza ricorrere a un emulatore tradizionale.

Il progetto, sviluppato da Chris Sotraidis, sfrutta la ricompilazione statica per trasformare in anticipo il codice PowerPC originale in codice ARM64 nativo, permettendo al gioco di girare direttamente sull’hardware Apple e di utilizzare Metal per il rendering.
KartPad contains no Mario Kart Wii data, Nintendo assets, generated game code, saves, signing material, or playable app.
Bring your own legally obtained supported PAL RMCP01 WBFS/ISO and follow the full build-and-run guide for Mac, iPhone, or iPad:https://t.co/cSY0rJUzc4
— Kahris (@chrissotraidis) August 31, 2026
La base tecnologica arriva dal lavoro di WiiCompiled e dal runtime di compatibilità Aurora/Dawn. La repository di KartPad contiene esclusivamente il codice necessario all’integrazione con le piattaforme Apple, le patch, i test, la documentazione e gli elementi grafici originali.
Non vengono invece distribuiti il gioco, l’immagine del disco, gli asset di Nintendo o i salvataggi: per utilizzare il progetto è quindi necessario fornire una propria copia legale di Mario Kart Wii.
Su macOS il porting ha già raggiunto un livello particolarmente interessante. Sono funzionanti i menu, le gare, i salvataggi, i ghost, la modalità Battaglia e lo split-screen, mentre tutti i 32 tracciati presenti nella versione retail sono stati completati con successo.
Questo rende KartPad molto più di una semplice dimostrazione tecnica, anche se il progetto non può ancora essere considerato completamente ottimizzato.
La situazione su iPhone e iPad è invece ancora in fase di sviluppo, ma i risultati sono promettenti. Le build attuali riescono ad avviare il gioco, eseguire le gare, importare i dati WBFS e gestire i salvataggi.
Il progetto funziona anche nel Simulator di Apple, mentre continuano i test sui dispositivi fisici e il lavoro sull’ottimizzazione delle prestazioni.
KartPad richiede nello specifico la versione PAL europea RMCP01, revisione 0 di Mario Kart Wii. Le altre regioni e revisioni vengono rifiutate.
Su iPhone e iPad, al primo avvio, l’applicazione può importare un’immagine WBFS o ISO oppure una cartella DATA già estratta, verificando e preparando i dati direttamente sul dispositivo.
Anche il sistema di controllo è stato adattato alle diverse piattaforme. Su Mac è possibile utilizzare la tastiera oppure fino a quattro controller Classic indipendenti.
Su iPhone e iPad sono disponibili controlli touch completi in modalità orizzontale, con layout distinti e personalizzabili per smartphone e tablet. È inoltre previsto il supporto ai controller fisici e al motion steering opzionale.
Il principale limite attuale rimane però rappresentato dalle prestazioni. KartPad è già giocabile, ma gli sviluppatori non lo considerano ancora pronto dal punto di vista del frame pacing.
Durante il primo avvio, la compilazione degli shader può provocare rallentamenti estremamente marcati, arrivando in alcuni casi a meno di 2 FPS sui tracciati più pesanti, come Moonview Highway.
Una volta completato il processo di riscaldamento degli shader la situazione migliora sensibilmente, ma la fluidità non è ancora abbastanza stabile da poter considerare il progetto definitivamente ottimizzato.
Stato attuale
| Area | Risultato attuale |
|---|---|
| macOS runtime | Titolo nativo arm64, menu, gare, salvataggi, ghost, Battaglia e gameplay split-screen tramite Metal |
| Copertura tracciati | Tutti i 32 tracciati retail hanno una verifica completa dell’esecuzione nativa |
| Correttezza | I controlli Darwin per memoria, scheduler, ABI, interi, scalar-FP e paired-single superano i rispettivi oracle definiti |
| Input | Tastiera più quattro slot indipendenti per controller Classic; la verifica completa di una gara a due giocatori è superata |
| Audio | Riproduzione host non silenziosa, pausa/ripresa, migrazione live del dispositivo di output e un test di continuità rappresentativo di due ore superano i rispettivi sottocasi strumentati; l’ascolto soggettivo e il test di stress di otto ore sono ancora aperti |
| Prestazioni | Le scene semplici a caldo possono raggiungere 60 FPS; la compilazione iniziale degli shader e alcuni tracciati possono scendere molto al di sotto del tempo reale. Il frame pacing stabile non è ancora accettato |
| Pacchettizzazione | L’icona originale e il pacchetto esatto brandizzato da 80 MiB superano i controlli di audit, spazio di archiviazione installato, gameplay configurato, conservazione dei salvataggi e chiusura normale; il shell nativo di primo avvio/impostazioni/gestione dati rimane aperto |
| iPhone/iPad | L’intera app retail arm64 da 29.065 funzioni si avvia, raggiunge le gare in tempo reale, importa direttamente un WBFS privato supportato, conserva i salvataggi e riprende nel Simulator; la build completa non firmata per dispositivi è pronta per l’accettazione su iPad e successivamente iPhone con passaggio nativo ai controller |
| Distribuzione | Solo codice sorgente di sviluppo; nessun dato di gioco e nessun release candidate |
Il registro delle verifiche, le attività ancora aperte e i rischi noti sono disponibili in docs/STATUS.md. La matrice di rilascio composta da 67 righe si trova in docs/PRD.md; una compilazione riuscita o uno screenshot non vengono mai considerati, da soli, una prova di accettazione del gameplay.
Dati di gioco
KartPad non scarica né include mai dati di Nintendo. Lo sviluppo utilizza un’immagine PAL RMCP01 revisione 0 posseduta localmente, che viene verificata, mantenuta in sola lettura ed esclusa da Git.
I file estratti, le traduzioni, le cache, i salvataggi, i log e le acquisizioni private rimangono in directory locali escluse dal repository.
Su iPhone e iPad, il primo avvio si interrompe prima dell’emulazione e accetta l’immagine WBFS/ISO privata RMCP01 supportata oppure una cartella DATA estratta.
KartPad apre l’immagine con un importer DiscIO nativo ristretto, verifica l’identità e la revisione del gioco, estrae i file runtime sul dispositivo, convalida il DOL critico e attiva atomicamente l’albero privato protetto.
Le importazioni interrotte vengono recuperate o annullate; la sostituzione non elimina mai silenziosamente l’ultima copia valida. La rimozione è esplicita, annullabile fino al riavvio, e avviene prima dell’emulazione preservando i salvataggi.
Il grafo ARM64 tradotto viene compilato e firmato sul Mac. L’app mobile importa esclusivamente dati di gioco non eseguibili; non contiene alcun JIT PowerPC, compilatore runtime o download di codice eseguibile.
| ID gioco | Regione | Revisione | Input accettato |
|---|---|---|---|
RMCP01 |
PAL / Europa | 0 | Un unico contenitore WBFS esatto e fissato per l’attuale profilo di sviluppo |
Altre regioni, revisioni, dump e hash dei contenitori vengono rifiutati anche quando l’estensione del nome del file è riconosciuta. Il digest previsto è registrato negli script di compilazione per l’identificazione; nessun contenuto del disco viene tracciato o distribuito.
Primo avvio su iPhone o iPad
KartPad non include Mario Kart Wii e non può compilare codice di gioco sul dispositivo. Per una build locale di sviluppo:
- Compilare e firmare localmente KartPad sul Mac utilizzando il grafo
RMCP01privato tradotto. - Inserire in Files il proprio WBFS/ISO
RMCP01revisione 0 supportato. Una cartellaDATAgià estratta rimane disponibile come alternativa. - Avviare KartPad e selezionare l’immagine del disco o la cartella estratta quando richiesto.
- Lasciare l’app aperta mentre estrae o copia, verifica, protegge, prepara e attiva i dati. Una prima importazione completata prosegue nella stessa sessione direttamente nel gioco.
- Successivamente utilizzare ••• → Game Data & Saves per reimportare i dati o programmarne la rimozione.
La procedura esatta di accettazione pratica su iPad e successivamente iPhone è disponibile in docs/PHYSICAL-ACCEPTANCE.md.
I salvataggi risiedono separatamente dall’albero dei dati di gioco estratti. La reimportazione e la rimozione li conservano; la disinstallazione dell’app rimuove comunque l’intero contenitore Apple.
Primo avvio su Mac
La compilazione con un solo comando ha già preparato l’albero dei dati privati supportati. Aprire il file KartPad-self-built.app; se l’app richiede i dati di gioco, seleziona la cartella RMCP01 estratta contenente sys/ e files/.
KartPad verifica l’identità prima di avviare il runtime e conserva l’impostazione valida precedente se una sostituzione viene rifiutata.
Il menu dell’applicazione KartPad fornisce Choose Game Data…, Show Game Data, Show Cache, Save Diagnostics Report…, Controller Settings…, Controls… e le normali azioni Settings… e Quit.
Le impostazioni espongono i controlli supportati per display, audio e contatore FPS. I salvataggi permanenti e la configurazione risiedono in ~/Library/Application Support/KartPad; i dati grafici rigenerabili si trovano in ~/Library/Caches/KartPad.
Controlli e direzione mobile
Il bridge della tastiera macOS associa WASD allo sterzo, U/Return ad A/accelerazione/conferma, M/Delete a B/freno/retromarcia/indietro, E a R/derapata, Left Shift a L/oggetto, le frecce al D-pad/trick, Space a Start/pausa e Tab a Select/minus.
Il pannello nativo Controls… (Command-/) mantiene visibile nell’app l’intera mappatura. Il rilevamento nativo dei controller, la rimappatura e quattro slot locali stabili sono implementati separatamente dal fallback della tastiera.
L’app per iPhone/iPad compila direttamente uno snapshot fissato e byte-identico del componente di controllo touch GPLv3 di SunPad e del menu persistente •••.
Mantiene i layout modificabili separatamente per telefono/tablet, la gestione della safe area, il multitouch, le etichette di accessibilità, le impostazioni, la diagnostica e il comportamento di passaggio al controller del componente.
Un adapter separato e testato fornisce l’ABI del Classic Controller di Mario Kart Wii senza modificare la base copiata.
La superficie touch in modalità orizzontale mantiene disponibili tutte le azioni del Wii Classic Controller senza un controller separato:
- Sinistra: Stick di sterzo, D-pad, L, Start e Select a portata del pollice.
- Destra: Pulsanti d’azione, R/ZL/ZR e un secondo stick per l’input compatibile con i menu.
- Pulsanti dorsali di Mario Kart: R è un controllo digitale compatto corrispondente a L, anziché il trigger con pressione analogica specifico di Sunshine utilizzato da SunPad.
- Accelerazione mantenuta: A rimane attivo per tutta la durata del tocco. Dopo un secondo ininterrotto diventa ciano e aggiunge un leggero feedback aptico, quindi torna verde e rilascia l’accelerazione quando il dito viene sollevato.
- Personalizzazione: Sposta e ridimensiona i controlli in modo indipendente, salva configurazioni separate per telefono e tablet oppure ripristina il layout predefinito esatto.
- Passaggio al controller: Il primo controller esteso prende il controllo del Giocatore 1, cancella l’input touch mantenuto e nasconde i controlli touch per impostazione predefinita. Scollegandolo, il touch viene ripristinato; i controller aggiuntivi mantengono gli slot stabili dal Giocatore 2 al 4.
- Menu: Il persistente ••• apre display, controlli, dati di gioco, diagnostica, accesso al multiplayer e sterzo tramite movimento.
Il livello proprietario di KartPad aggiunge due azioni prima del menu SunPad invariato:
- Multiplayer… mostra i controller collegati, l’assegnazione stabile dei Giocatori 1-4 e apre le indicazioni per la configurazione dei controller. Il primo controller prende il controllo del Giocatore 1 dal touch; i Giocatori 2-4 pubblicano canali KPAD retail indipendenti.
- Motion Steering… è disattivato per impostazione predefinita e fornisce ricentramento, inversione e sensibilità 0,5×/1×/2×. Il touch può sovrascriverlo, i controller fisici hanno la priorità e il passaggio in background cancella lo stato di movimento attivo.
L’intero grafo retail si avvia su iPhone 17 Pro e iPad Pro da 13 pollici Simulator, raggiunge il titolo/menu e una gara reale a Luigi Circuit, sopravvive al passaggio in background/foreground e mantiene gli hash esatti dei salvataggi tra un riavvio e l’altro.
Il catalogo delle icone originali, il manifest della privacy, le bande di output adattate opache, il confine del pacchetto e la build completa non firmata da 29.065 funzioni per dispositivi fisici superano i controlli.
I sensori di movimento del Simulator non sono disponibili per progettazione; la sensazione fisica del movimento, le gare complete con touch/movimento, la presa e il ripristino del controller fisico e le prestazioni/audio sui dispositivi fisici rappresentano i prossimi controlli pratici di accettazione.
Diagnostica e privacy
Su Mac, selezionare KartPad → Save Diagnostics Report… dopo un errore o una sessione lenta. Il report di schema 3 contiene identificativi limitati della build/runtime, impostazioni sicure selezionate, stato dello spazio di archiviazione, stato di chiusura corretta o non corretta e porzioni limitate dei log attuali e precedenti.
I prefissi delle directory utente e i nomi utente vengono oscurati. Il report esclude l’immagine del disco, i file estratti, il modulo di gioco generato, i salvataggi e i contenuti dei file.
Su iPhone o iPad, utilizza ••• → Report a Problem… per creare il report ereditato nel formato limitato di SunPad e controllarlo prima della condivisione. Non allegare mai dati di gioco, moduli generati, salvataggi, materiale di firma o un intero contenitore dell’app a un report pubblico.
Download: Source code KartPad v0.1.0
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: PS5
Vedi altri prodotti PS5
Ultimo aggiornamento 2026-09-09 / Link di affiliazione / Immagini da Amazon Product Advertising API





