
CODE-DMG è un emulatore Gameboy capace di far girare alcuni dei migliori giochi mai rilasciati per la console portatile di Nintendo. Questo progetto, sviluppato da BotRandomness, nasce dalla passione per lo sviluppo low-level e l’emulazione, dopo aver completato altri progetti come un emulatore CHIP-8 e uno per l’Intel 8080 (GO-8080). L’idea di creare un emulatore Gameboy è nata come una sfida personale per approfondire la conoscenza di un sistema più complesso ma familiare, dato che molti di noi hanno avuto esperienze dirette con questa iconica console.
Un po’ di storia sul Gameboy
Il Gameboy, progettato da Gunpei Yokoi e lanciato da Nintendo nel 1989, è stato una rivoluzione nel mondo dei videogiochi portatili. Nonostante l’hardware relativamente semplice, è stato utilizzato in modi complessi dai giochi, diventando uno dei dispositivi di gioco più amati di sempre. Il Gameboy è dotato di una CPU a 8-bit, il Sharp LR35902 (noto anche come DMG-CPU), con una frequenza di clock di circa 4.19 MHz, 8 KB di RAM interna, 8 KB di VRAM e un bus di indirizzi a 16-bit. Le cartucce dei giochi spesso includono chip MBC (Memory Bank Controller) che permettono di gestire ROM più grandi e memoria aggiuntiva.
Il Gameboy è anche equipaggiato con una PPU (Picture Processing Unit), responsabile del rendering su uno schermo LCD da 160×144 pixel con 4 tonalità di verde. Il nome in codice del Gameboy era “DMG”, che sta per “Dot Matrix Game”, da cui deriva il nome di questo progetto.
Perché C# e Raylib?
Una delle domande più frequenti è: “Perché usare C# e non un linguaggio come C o C++?” La risposta è semplice: C# è uno dei miei linguaggi preferiti, e volevo realizzare il mio progetto preferito utilizzando lo strumento che più mi piace. Per quanto riguarda Raylib-cs, invece di utilizzare soluzioni come WinForms, ho scelto Raylib per la sua semplicità nel rendering grafico, il basso overhead e, soprattutto, perché è divertente da usare!
Come Iniziare
CODE-DMG è disponibile in due versioni: Core e GUI. La versione Core si concentra esclusivamente sull’emulazione, mentre la versione GUI aggiunge un’interfaccia utente grafica per una migliore esperienza d’uso, strumenti di debug e per testare la flessibilità del Core. L’ultima versione rilasciata è la 1.0.0, disponibile per il download sulla pagina delle release di GitHub.
Download e Installazione
Versione GUI:
- Scarica l’emulatore dalla pagina delle release (disponibile per win-x64, win-x86, osx-x64, osx-arm64, linux-x64).
- Estrai la cartella.
- Avvia l’eseguibile.
- Su macOS, potrebbe apparire un messaggio di avviso “Apple non può verificare l’app”. Fai clic destro sull’app, seleziona “Apri” e conferma. Puoi anche abilitare l’esecuzione nelle Impostazioni di Sistema > Sicurezza.
- Se necessario, abilita i permessi di esecuzione su sistemi Unix-like.
- Sei pronto per partire!
Versione Core:
- Scarica l’emulatore dalla pagina delle release.
- Estrai la cartella.
- Apri il terminale nella posizione di download.
- (Opzionale) Posiziona il file bootrom (dmg_boot.bin) accanto all’eseguibile.
- Avvia l’emulatore con il comando:
- Windows:
CODE-DMG --dmg <percorso_rom>
- Unix-like:
./CODE-DMG --dmg <percorso_rom>
- Windows:
- Sei pronto per partire!
Controlli
- A: Z
- B: X
- START: Invio
- SELECT: Maiusc Destro
- D-Pad: Frecce Direzionali
Utilizzo
Versione GUI:
Dopo aver avviato l’eseguibile, puoi caricare una ROM tramite File -> Open ROM
. Passa alla modalità di gioco (senza strumenti di debug) tramite View -> Game
.
Versione Core:
Per un utilizzo di base, avvia l’emulatore con il comando CODE-DMG --dmg <percorso_rom>
. I salvataggi sono supportati (sperimentale) e verranno generati file .sav
nella stessa posizione della ROM. Attualmente, CODE-DMG supporta ROM con MBC0/ROM Only, MBC1, MBC3 (senza RTC) e MBC5 (senza vibrazione).
Bootrom
Il bootrom del Gameboy è il primo programma eseguito all’avvio della console, che inizializza i registri e la memoria, oltre a eseguire un controllo di validità sulla ROM. Sebbene opzionale, è consigliato fornire un bootrom (dmg_boot.bin) per un’esperienza più autentica. Nella versione GUI, puoi selezionare il bootrom tramite File -> Select BOOTROM
.
ROM di Fallback
La ROM di fallback, fall_back.gb
, è una ROM personalizzata creata in assembly GBZ80. Viene utilizzata come alternativa quando non viene fornita una ROM valida. Se viene fornito un bootrom, questa ROM simula ciò che accade quando si accende un Gameboy senza un gioco inserito.
Flag di Avvio
Ecco alcuni flag utili per personalizzare l’esecuzione di CODE-DMG:
--dmg <percorso_rom>
: Avvia l’emulatore con una ROM specificata.--bootrom <percorso_bootrom>
: Carica un bootrom personalizzato.--scale <fattore>
: Ridimensiona la finestra.--fps
: Abilita il contatore FPS.--palette <nome>
: Cambia la palette dei colori.--about
: Mostra informazioni sul progetto.--version
: Mostra la versione.--help
: Mostra la schermata di aiuto.
Conclusione
CODE-DMG, sviluppato da BotRandomness, è un progetto nato dalla passione per l’emulazione e lo sviluppo low-level. Con questo emulatore, ho voluto rendere omaggio a una delle console più iconiche della storia dei videogiochi, offrendo agli utenti la possibilità di rivivere i classici del Gameboy in modo semplice e divertente. Che tu sia un nostalgico o un curioso, CODE-DMG è qui per farti vivere (o rivivere) la magia del Gameboy! Scarica l’ultima versione 1.0.0 dalla pagina delle release e inizia a giocare!