Home Homebrew Super Smash Bros. arriva su PC: Il porting nativo creato al 100%...

Super Smash Bros. arriva su PC: Il porting nativo creato al 100% con la IA in appena 25 giorni

219
0

Super Smash Bros. arriva su PC con il progetto “BattleShip”, un porting nativo che non si limita a replicare l’esperienza originale ma rappresenta anche un caso concreto di evoluzione tecnologica nello sviluppo software.

A differenza dell’emulazione, per anni unica alternativa per giocare ai titoli Nintendo su hardware diverso da quello originale, questo progetto permette di eseguire il gioco direttamente su computer, sfruttando un’architettura moderna in grado di migliorare prestazioni, compatibilità e possibilità di espansione.

BattleShip è costruito su una decompilazione del gioco originale e utilizza tecnologie come libultraship per il rendering, l’audio e gli input nativi su PC, insieme a strumenti dedicati all’estrazione delle risorse dalla ROM durante la fase di compilazione.

Il risultato è un’applicazione compatibile con macOS (anche su Apple Silicon), Linux e Windows, che non include alcun asset proprietario: tutti i dati appartenenti a Nintendo vengono estratti localmente dall’utente a partire da una ROM specifica, la versione NTSC-U v1.0.

Senza una copia originale del gioco, il progetto non può essere compilato né eseguito, mantenendo così un approccio più corretto dal punto di vista legale.

Uno degli aspetti più sorprendenti è che il porting è stato realizzato interamente con il supporto dell’intelligenza artificiale.

Lo sviluppatore JRickey ha spiegato che il progetto ha richiesto poco più di 25 giorni di lavoro, durante i quali agenti AI hanno generato, testato e migliorato gran parte del codice in autonomia.

Il ruolo umano si è concentrato principalmente sulla supervisione, sull’organizzazione e sulla gestione del flusso di sviluppo.

Questo approccio dimostra come strumenti avanzati possano accelerare enormemente processi complessi, pur basandosi su fondamenta costruite negli anni dalla community, come la decompilazione, il motore grafico e l’estrazione degli asset.

Dal punto di vista tecnico, il progetto è strutturato su tre livelli distinti: il codice originale decompilato, che mantiene la logica del gioco; un livello intermedio che adatta le funzionalità dell’hardware Nintendo 64 agli standard moderni; e infine un runtime nativo per PC che gestisce rendering, audio e input.

Le risorse del gioco non vengono lette direttamente dalla ROM durante l’esecuzione, ma vengono convertite in un formato ottimizzato durante la build e poi caricate dinamicamente, migliorando l’efficienza generale.

Il processo di sviluppo si è basato fortemente su strumenti automatizzati di debugging e confronto con emulatori, permettendo di individuare e correggere errori complessi come problemi di endianness, gestione dei puntatori e differenze tra compilatori moderni e quelli originali dell’epoca Nintendo 64. Questo metodo ha reso possibile un avanzamento rapido anche senza l’uso di debugger tradizionali.

BattleShip non è solo un porting, ma anche una dimostrazione pratica del potenziale dell’AI nello sviluppo software.

L’obiettivo dello sviluppatore era duplice: imparare concretamente la programmazione in C/C++ e dimostrare che progetti di questa portata possono essere affrontati con strumenti moderni, riducendo drasticamente le barriere di accesso.

Il risultato è un progetto indipendente, non affiliato né supportato da Nintendo, pensato come esperimento tecnico e iniziativa di preservazione.

Guida

È necessaria una copia legale della ROM di Super Smash Bros. versione NTSC-U 1.0:

  • SHA-1: e2929e10fccc0aa84e5776227e798abc07cedabf
  • MD5: f7c52568a31aadf26e14dc2b6416b2ed

Al primo avvio, la procedura guidata integrata nell’app chiederà di trascinare la ROM in formato .z64 / .v64 / .n64. Le risorse verranno estratte una sola volta e salvate localmente nella cache, quindi non sarà necessario fornire nuovamente la ROM in seguito.

Nessun dato di proprietà Nintendo è inclusa o distribuita con questa versione. Se non si possiede la ROM, questo software non può essere utilizzato.

Changelog

Patch rilasciata sopra la v0.5-beta — risolve il problema #43: il file .dmg macOS della v0.5-beta andava in crash all’avvio su qualsiasi Mac che non avesse esattamente la stessa configurazione Homebrew dello sviluppatore, perché package-macos.sh distribuiva il binario con percorsi assoluti alle librerie dylib (/opt/homebrew/...) incorporati nei comandi di caricamento.

Ora lo script di packaging include le dylib di Homebrew dentro Contents/Frameworks/ tramite dylibbundler e riscrive gli install_names in @executable_path/../Frameworks/ (694e3cf). Le build Linux e Windows restano invariate rispetto alla v0.5-beta.

Grande rilascio con ottime PR e contributi da parte di @Jameriquiah, @the-outcaster e @Kriix08.

  • Sistema di build più robusto basato su CMake, che dovrebbe aiutare chi aveva problemi con lo script PowerShell originale.
  • Nuovo menu più allineato a SoH.
  • Ora è possibile disattivare il Tap Jump nel nuovo menu!
  • Nuove risorse per sostituire quelle scadenti.

Novità: menu ESC in gioco + modernizzazione del sistema di costruzione (PR #37)

@Jameriquiah ha portato il menu ESC di SoH/2S2H e ha riscritto il sistema di build basandolo sui target di CMake. Premere ESC durante il gioco per aprire il nuovo menu: controlli, impostazioni e miglioramenti del gameplay sono tutti lì ora. I vecchi wrapper build.sh / build.ps1 sono stati ritirati a favore di cmake --build build --target ….

  • Inclusi i font Montserrat e Inconsolata per il menu, così da avere una tipografia corretta già al primo avvio. (2a4b61c)
  • Cinque correzioni successive alla revisione del merge: errore di build su macOS dovuto a narrowing-cast, mismatch dei controlli BeginChild/EndChild, modale ImGui per la conferma della ri-estrazione, pulizia dei commenti nella documentazione e negli script. (a7e1eb7)

Novità: Primo miglioramento del gameplay specifico per port — Disabilita Tap Jump per porta (PR #39)

@the-outcaster ha contribuito aggiungendo un’opzione per disabilitare il tap-jump per singola porta del controller. L’opzione può essere trovata in ESC → Gameplay.

Definito anche un approccio, con un commit successivo, per mantenere questo tipo di modifiche fuori dal codice decompilato quando possibile. Il modello è il seguente: (CVar registrata in port/enhancements/, accessor richiamato da un unico blocco #ifdef PORT nel file decompilato). (5c3e6bf, 7d8e203)

Illustrazione corretta: il logo BATTLESHIP di Kriix08 (#25)

  • L’icona provvisoria e il banner DMG di scarsa qualità sono stati rimossi. Il nuovo splendido logo realizzato da @Kriix08 ora viene utilizzato per l’icona dell’app (PNG/ICNS/ICO) e per il banner dell’installer DMG su macOS. (62105cc)

Audio

Per Claude:

  • Il suono Star-KO non produce più quel fastidioso rumore (#38). fgm_unk veniva interpretato con una struttura errata, quindi i valori float del decadimento dell’inviluppo venivano letti come ~0 → ampiezza costante. È stato sostituito con un parser a stride fisso di 16 byte con corretta conversione dei float da BE a LE. La maggior parte degli effetti sonori era troppo breve per notarlo; il sustain di 150 frame del suono Star-KO lo rendeva invece evidente. (8b76629)
  • Questo corregge anche il suono errato delle rotolate dei personaggi e una serie di altri problemi audio non tracciati. Il gioco ora dovrebbe suonare molto meglio. Se senti ancora qualche rumore strano o fastidioso, segnala pure un nuovo problema.

Logica di gioco / combattenti

Per Claude:

  • Il flash della texture della F-Smash di Pikachu funziona di nuovo (#30). Il primo tentativo di correzione è stato annullato: eseguiva un byte-swap di 8 byte direttamente nel file, corrompendo i token di rilocazione adiacenti nei personaggi in cui il padding finale non era zero (il CSS andava in crash per tutti tranne Pikachu). La correzione finale restituisce un buffer statico di 8 byte con i 6 byte corretti e non modifica mai la memoria del file. (945889e, 1f2b694, 435c944)
  • Risolto anche il problema di “leak” nella macchina a stati della schermata risultati BTT/BTP (#27). Quattro variabili globali di avanzamento (CommonAdvanceTic, BonusShowNextTic, BonusAdvanceTic, BonusNum) venivano ereditate dallo stage 1P precedente nella schermata risultati BTT — su N64 ogni rientro nella scena azzera la BSS dell’overlay tramite DMA, mentre su PC gli overlay sono linkati staticamente. Sintomo: schermata risultati bloccata con audio in loop. Ora vengono resettate sotto #ifdef PORT in sc1PStageClearInitVars. (6746f3d)

Build / packaging

Per Claude:

Il nuovo flusso di build ha fatto emergere una serie di problemi specifici per piattaforma. Tutte e tre le piattaforme sono state verificate completamente end-to-end prima del rilascio.

Windows

  • Errore di parsing di build.ps1 su PowerShell 5.1 (#28). I caratteri non ASCII nello script venivano interpretati come Windows-1252 su installazioni standard di Windows 10/11. Il file è stato ripulito rendendolo ASCII e aggiunto #Requires -Version 5.1 per evitare regressioni. Inoltre sono stati rafforzati diversi aspetti: rilevamento degli stub di WindowsApps sia per python.exe che per py.exe, modifica di ErrorActionPreference per evitare che la redirezione dello stderr nativo sopprima messaggi di errore dettagliati, e risolte varie particolarità di PowerShell 5.1. (bec6baa)
  • RealAppBundlePath ora è implementato su Windows tramite GetModuleFileNameW, così che lo zip portatile, estratto in qualsiasi posizione, riesca a risolvere correttamente font e ROM. (6a9197d)
  • Impostato CMAKE_INSTALL_PREFIX=BattleShip, così le righe di log mostrano AppBundlePath = BattleShip invece di C:/Program Files (x86)/ssb64. (ce162df)

Linux / AppImage

  • Risoluzione dei percorsi AppImage: è stato spostato RealAppBundlePath fuori da first_run.cpp, così il menu ESC riesce a trovare i font inclusi nel layout di mount di AppImage. (8e622c7)
  • Le AppImage compilate localmente su distribuzioni della serie DT_RELR (Fedora 38+, Ubuntu 23.10+, Arch, Steam Deck Holo) non vanno più in SIGSEGV durante _dl_init. Il patchelf 0.15 incluso in linuxdeploy e il binutils 2.34 per lo stripping sono più vecchi delle relocation relative compatte e corrompono .relr.dyn. Ora il sistema rileva l’host e usa il patchelf di sistema con linuxdeploy, saltando il pass di stripping difettoso. La CI (jammy, glibc 2.35) non è interessata. (08972c2)

macOS

  • Il file .dmg non va più in crash all’avvio su Mac senza la stessa configurazione Homebrew dello sviluppatore (#43). package-macos.sh distribuiva il binario con comandi di caricamento che puntavano a percorsi assoluti tipo /opt/homebrew/opt/sdl2/lib/libSDL2-2.0.0.dylib (ecc.), che dyld non riesce a risolvere su macchine prive di quel prefisso. Ora vengono incluse direttamente nel bundle SDL2 / GLEW / libzip / tinyxml2 / spdlog / fmt e le loro dipendenze transitive dentro Contents/Frameworks/ tramite dylibbundler, gli install_name vengono riscritti in @executable_path/../Frameworks/, e il bundle viene firmato come unità. Aggiunto anche un controllo in fase di build che fallisce esplicitamente se rimane qualsiasi riferimento a /opt/homebrew. Linux e Windows erano già coperti (linuxdeploy / copia DLL vcpkg), macOS era l’eccezione. (694e3cf)
  • Fix packaging .app: il path del sidecar torch era relativo dentro la struttura Contents/MacOS del bundle, quindi l’estrazione silenziosa si interrompeva con exit 127 prima dell’esecuzione di torch. Ora è stato reso un path assoluto. (0ed1ba8)
  • I font del menu sono stati inclusi nel bundle e copiati in Contents/Resources/assets/custom/fonts/, così il menu ESC ha finalmente una tipografia corretta. (0ed1ba8)

Cross-platform

  • Il path del log per l’estrazione degli asset è stato reso assoluto — il pattern shell cd workingDir && torch ... > logPath si rompeva quando logPath era relativo. (8e622c7)
  • Audit del packaging Linux + Windows: entrambi gli script ora includono assets/custom/fonts/, in linea con la correzione fatta per macOS. (6a9197d)

Chiusi

#25#27#28#30#37#38#39#43

Download: Battleship v0.5.1-beta (Windows)

Download: Battleship v0.5.1-beta (Linux AppImage)

Download: Battleship v0.5.1-beta (macOS)

Download: Source code Battleship v0.5.1-beta

Alcune parti di questo articolo sono state generate con l’aiuto dell’intelligenza artificiale.

🔥 Prodotti in promozione e articoli più venduti: Xbox Series

Vedi altri prodotti Xbox Series

Questo articolo contiene link affiliati a Amazon. Se acquisti tramite questi link, potrei guadagnare una commissione senza costi aggiuntivi per te.

Ultimo aggiornamento 2026-05-18 / Link di affiliazione / Immagini da Amazon Product Advertising API

LASCIA UN COMMENTO

Per favore inserisci il tuo commento!
Per favore inserisci il tuo nome qui
Captcha verification failed!
Punteggio utente captcha non riuscito. Ci contatti per favore!

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.