Dopo diversi anni di silenzio, NO$GBA torna con un nuovo e significativo aggiornamento che arricchisce ulteriormente uno degli emulatori più longevi e rispettati per Game Boy Advance, Nintendo DS e, in parte, Nintendo DSi.
Nato nel 2001 come emulatore per GBA, NO$GBA ha rappresentato una pietra miliare nel mondo dell’emulazione, diventando nel 2006 il primo programma capace di far girare correttamente giochi commerciali per Nintendo DS.
Da allora, ha continuato ad espandere il proprio ambito con supporti parziali al DSi nel 2013 e, nel 2019, anche a certe funzioni sperimentali del 3DS.
Un momento chiave nella sua evoluzione è arrivato nel 2014, quando la versione con debugger, un tempo disponibile solo a pagamento, è stata resa freeware, mettendo così a disposizione di tutti sia la versione standard che quella avanzata.
Questo nuovo aggiornamento include correzioni tecniche, miglioramenti della GUI e tante nuove funzionalità dedicate a sviluppatori, ricercatori e appassionati.
Migliorata la gestione del BIOS GBA per tenere conto del comportamento della CpuFastSet
in modalità sola lettura.
La mappatura della memoria BG0-3 ora viene correttamente visualizzata in modalità GBA, e la finestra di aiuto appare nella parte superiore della schermata di gioco, rendendo l’interfaccia più chiara.
Sul fronte dei controlli, è stato introdotto il riconoscimento del doppio clic del mouse e un’opzione per rilevare lo stato degli stick analogici a ogni frame, utile ma potenzialmente lenta su alcune porte.
Il visualizzatore del file system ha ricevuto grandi migliorie: ora può mostrare anteprime di texture e icone da giochi NDS, DSi e 3DS, supporta diversi formati grafici comuni, e gestisce anche archivi compressi come GFC/GOB. Anche la velocità di ordinamento delle cartelle è stata ottimizzata.
Sul lato tecnico, sono stati aggiunti numerosi dettagli alla documentazione interna. Ci sono nuove sezioni sui registri del DSi, miglioramenti alle specifiche di file audio e video per Nintendo DS, note sulla compatibilità GBA in modalità CGB, e persino una sezione completa sulle texture 3DS e i formati delle icone.
Le specifiche hardware per il 3DS includono ora dettagli su checksum, chiavi di sicurezza, e gestione del suono in modalità GBA. Per il DSi sono stati documentati i pinout delle schede madri e aggiunti dettagli sui segnali ausiliari.
Notevoli anche le modifiche all’assembler integrato (a22i): ora supporta pienamente la sintassi UAL per ARM/THUMB, con nuove direttive, alias per istruzioni, gestione di macro, e correzioni sintattiche varie.
La disassemblazione del chip BPTWL per il DSi è stata migliorata e documentata con un file specifico.
Caratteristiche
- Compatibilità: No$GBA supporta la maggior parte delle ROM GBA e DS, sia homebrew che commerciali, con un’elevata compatibilità per i giochi DS rispetto ad altri emulatori dell’epoca. Giochi come Pokémon Diamante funzionano a piena velocità senza glitch grafici significativi. Tuttavia, alcuni titoli DS più complessi, come Spider-Man: Shattered Dimensions, possono presentare problemi di rendering 3D o compatibilità.
- Prestazioni: È estremamente leggero e ottimizzato, in grado di eseguire giochi GBA a velocità reale su hardware datato (es. Intel Pentium) e DS su PC di fascia media. Utilizza OpenGL per migliorare il rendering 3D dalla versione 2.6 (2007).
- Multiplayer: È stato il primo emulatore GBA a supportare il multiplayer sullo stesso PC e offre funzionalità di collegamento per giochi GBA. Tuttavia, il multiplayer DS è limitato: non supporta funzionalità come la Connessione Wi-Fi Nintendo o il PictoChat.
- DSi e Wi-Fi: Dalla versione 2.7a, include supporto sperimentale per DSi, con emulazione di firmware, SD card e crittografia WPA/WPA2 (versione 2.9c). L’emulazione Wi-Fi DS è parziale, con scambio di pacchetti possibile ma non completamente funzionale per giochi commerciali.
- Opzioni di Salvataggio: Supporta diversi tipi di salvataggio (es. EEPROM, SRAM) e snapshot per GBA, ma il salvataggio istantaneo in modalità DS può causare errori. Gli utenti devono configurare il tipo di salvataggio corretto tramite il menu Opzioni per evitare problemi.
- Controlli e personalizzazione: I controlli sono configurabili tramite tastiera, mouse (per il touch screen DS) o gamepad compatibili con Windows. Include opzioni per regolare grafica, audio e scaling dello schermo (con add-on come NO$Zoomer per il pieno schermo).
- Cheat e Debugger: Supporta codici Action Replay e Codebreaker. La versione debugger, pensata per sviluppatori, consente di testare e debuggare ROM con analisi del codice sorgente, utile per romhacker e programmatori.
- Altre Funzionalità: Emula la PocketStation (console basata su processore ARM) e supporta i Dotcodes del Nintendo e-Reader. Offre anche la possibilità di catturare screenshot (F12) e registrare video tramite VFW.
Limitazioni
- Emulazione DSi: Sebbene avanzata, l’emulazione DSi è incompleta (circa il 50% nella versione 2.8) e richiede file di sistema specifici (es. NAND, BIOS), spesso difficili da ottenere legalmente. Alcuni giochi DSi presentano problemi gravi.
- Problemi Grafici e Audio: Alcuni giochi DS con grafica 3D complessa possono soffrire di lag o glitch su PC meno potenti. L’audio può essere disattivato per migliorare le prestazioni in caso di crash.
- Compatibilità limitata per accessori: Non supporta accessori DS come slot GBA per giochi DS o periferiche specifiche.
- Wi-Fi e Multiplayer DS: Le funzionalità Wi-Fi e il multiplayer DS online non sono pienamente supportati, limitando l’esperienza per giochi che richiedono connettività.
- BIOS DSi: L’emulazione DSi richiede file BIOS completi, ma il dumping legale è complicato (solo la metà inferiore del BIOS è estraibile con strumenti come fwtool), portando molti utenti a ricorrere a fonti non ufficiali.
Requisiti di sistema e installazione
No$GBA è portatile, non richiede installazione: basta estrarre il file .exe
da un archivio ZIP e avviarlo. Funziona su sistemi operativi datati (Windows XP, Vista, 7, fino a Windows 10) e persino su MS-DOS.
Per l’emulazione DS, è consigliabile un PC con processore di fascia media per evitare lag nei giochi 3D. Per DSi, è necessario configurare un’immagine NAND virtuale e file SD tramite strumenti come OSFMount, HiyaCFW o TWiLight Menu++.
Changelog
- gba/bios/clone: Ignora
CpuFastSet
quando scrive nell’area BIOS di sola lettura (grazie a denim). - iomap: Corretta la visualizzazione di BG0-3 in modalità GBA (senza palette estesa, a differenza di NDS/DSi).
- gui: Corretta la finestra di aiuto della versione di gioco (ora appare sopra alla finestra di gioco).
- controlli/touchscreen: Rileva il secondo clic del mouse (tramite
WM_LBUTTONDBLCLK
). - controlli/configurazione: Aggiunta un’opzione per interrogare gli stick analogici a ogni frame (lenta su gameport).
- Visualizzatore file system: Anteprima di icone/texture per NDS, DSi e 3DS.
- Visualizzatore file system: Anteprima di dump HEX, file TXT ASCII e immagini GIF/JPG/BMP/TGA/PNG.
- Visualizzatore file system: Supporto per archivi GFC/GOB e strutture ad albero (Dict-tree) nei video 3D NDS.
- Visualizzatore file system: Ordinamento più veloce di grandi cartelle (usando
TVI_FIRST
eTVM_SORT
). - raw-dos: A20 viene abilitato una sola volta all’avvio (per evitare conflitti con tastiere USB).
- dsi/aiuto: Aggiunti dettagli sullo scopo di vari registri BPTWL.
- cpu/aiuto: Aggiunto capitolo sulla nuova sintassi assembler UAL per codice ARM/THUMB.
- nds/aiuto: Specifiche migliorate per i formati video 3D
.nsbxx
(grazie a scurest). - nds/aiuto: Specifiche per file audio HWAS (Multiblock Sound Wave Data).
- nds/aiuto: Specifiche per archivi GFC/GOB Vicarious Visions con compressione zlib.
- nds/aiuto: Il NDS può accedere alle EEPROM GBA, vedi tempi EEPROM GBA (grazie pk11).
- cgb/aiuto: Aggiunte note sulla modalità CGB in retrocompatibilità con GBA.
- 3ds/aiuto: Aggiunti formati texture della GPU 3DS (ordine dei bit e formato ETC1).
- 3ds/aiuto: Aggiunte specifiche molto incomplete su esportazioni DSiWare e reset parentale.
- 3ds/aiuto: Specifiche hwcal per numeri d’invecchiamento, checksum xor, crc16, chiave sha256hmac.
- 3ds/aiuto: Reverse engineering del formato icona 3DS (ordine pixel/tile).
- 3ds/aiuto:
CODEC_SNDEXCNT.bit30
deve essere impostato in modalità GBA (altrimenti suono dissonante). - 3ds/aiuto: Il livello di bias della porta GBA
4000088h
non ha effetto su 3DS in modalità GBA. - 3ds/aiuto: Aggiunta nota di cautela sui valori filtro TSC con byte invertiti in HWCAL e configurazione.
- 3ds/aiuto: Avvisi su
MCU[3Fh]
che non si azzerano al riavvio/spegnimento. - 3ds/mcu/aiuto: Corretto simbolo del transistor BC547 nel flasher MCU (da BCE a CBE).
- dsi/aiuto: Aggiunto capitolo su segnali AUX/punti di test del DSi.
- dsi/aiuto: Aggiunti pinout dei connettori P16/P24 del DSi XL (grazie poro).
- dsi/disass/a22i/aiuto: Aggiunte specifiche asm/disasm per opcode/SFR del chip 78k0 BPTWL.
- dsi/web: Aggiornata la scheda madre DSi annotata → link all’immagine
- a22i: Le direttive
.include
e.import
supportano nomi di file tra virgolette con spazi. - a22i: Le direttive
.ual
e.pre_ual
impongono l’uso della sintassi UAL o quella precedente. - a22i: Supporta sintassi UAL con condizione alla fine (es.
ldrh{cond}
invece dildr{cond}h
). - a22i: Supporta
neg
come alias stile THUMB/UAL perrsb,0
- a22i: Consente
ldm/stm
senza{amod}
, con incremento post come default (stile UAL). - a22i: Consente
ldrd/strd
conrd1,rd2
(stile UAL) e verifica cherd1
sia pari erd2 = rd1+1
- a22i: La sintassi UAL richiede
{S}
per tutte le istruzioni THUMB che modificano i flag. - a22i: Varianti MOV/ADD/SUB in THUMB UAL con/senza modifica flag.
- a22i: Correzione bug: richiesto uno spazio tra
ldrex/strex
erd
- a22i:
label equ xx
non elimina le etichette locali (sololabel:
lo fa). - a22i/aiuto: Aggiunte descrizioni per
.macro
,.rept
,.endm
,.undef
- dsi/disass: Disassemblaggio chip BPTWL → link al file
Download: No$gba v3.0.6
Fonte: reddit.com