Il developer wavemotion-dave, già conosciuto per il suo lavoro su emulatori Atari per Nintendo DS, ha dimostrato ancora una volta le sue capacità con il rilascio di GimliDS, un emulatore del Commodore 64 per console DS, DSi e varianti come XL/LL.
Questo progetto, basato sul precedente FrodoDS, porta il classico computer 8-bit degli anni ’80 sul piccolo schermo del handheld Nintendo, un’impresa non da poco considerando i limiti hardware della console.
GimliDS è stato rilasciato in diverse versioni nel corso degli ultimi giorni, con l’ultima, la 1.1, annunciata proprio oggi. Il progetto è iniziato con la versione 0.8 lo scorso 27 aprile, e in poco tempo wavemotion-dave ha introdotto aggiornamenti significativi, arrivando alla 0.9c, 0.9d e poi alla 1.0 tra il 5 e il 9 maggio, prima dell’ultimo update.
File BIOS
Per poter eseguire correttamente questo emulatore, è necessario disporre dei file BIOS originali del Commodore. Questi file dovranno essere inseriti nelle cartelle /roms/bios
oppure /roms/c64
e rinominati esattamente come segue:
KERNAL.ROM
8K con CRC32=dbe3e7c7
(901227-03)BASIC.ROM
8K con CRC32=f833d117
(901226-01)CHAR.ROM
4K con CRC32=ec4272ee
(901225-01)1541.ROM
16K con CRC32=899fa3c5
(251968-03)
Controlli
+
– Ridimensiona lo schermo nelle direzioni X e Y.
+
– Sposta lo schermo nelle direzioni X e Y.
– Invia il celebre comando
LOAD "*",8,1
(assicurarsi che l’emulatore si trovi al prompt READY).– Cambia tra porta 1 e porta 2 del joystick.
– Direzioni del joystick.
è normalmente associato al FUOCO ma può essere rimappato nelle impostazioni.
è normalmente associato allo SPAZIO ma può essere rimappato.
è normalmente associato al tasto INVIO ma può essere rimappato.
è normalmente associato a “Joy Up” per facilitare i salti nei giochi, ma può anch’esso essere rimappato.
Utilizzo dell’emulatore
Per utilizzare GimliDS, è sufficiente avviare il file GimliDS.NDS
sulla console Nintendo DS, DSi, XL o LL. Si noti che, se l’emulatore viene eseguito da una flashcard R4 (o simile), verrà attivata la modalità di compatibilità, che limita la CPU a 67 MHz.
In questo caso, GimliDS sarà comunque funzionante, ma sarà necessario un leggero frameskip per garantire una velocità di gioco accettabile.
Al contrario, se l’emulatore viene avviato da scheda SD su DSi/XL/LL tramite Twilight Menu++ o Unlaunch, la CPU lavorerà a 134 MHz, permettendo di giocare senza frameskip e con un audio notevolmente migliorato.
All’avvio dell’emulatore (purché i file BIOS siano nella posizione corretta), verrà mostrata l’interfaccia del CBM BASIC con il celebre prompt READY.
Da qui, si può utilizzare l’icona del disco per caricare un gioco in formato .d64
. Una volta montata l’immagine, si torna alla schermata principale dell’emulazione (uscendo dal menu) e si preme il tasto per digitare automaticamente il comando:
LOAD "*",8,1
e avviare il gioco con RUN
.
Il tasto C= (in basso a destra) consente di configurare il gioco, salvare o caricare stati di gioco e altro.
Importante familiarizzare anche con il tasto , che permette di scambiare le porte del joystick. Questa funzione sarà usata frequentemente, poiché molti giochi utilizzano porte diverse (e a volte anche i loader o i cracker le cambiano).
Dato che la risoluzione dello schermo del DS (256×192) non corrisponde a quella del Commodore 64 (320×200 più bordi), sarà necessario utilizzare i tasti e
insieme a
per regolare scala e posizione dell’immagine. Una volta trovata la configurazione ideale, sarà salvata automaticamente per quel gioco.
Si consiglia inoltre di rimappare un tasto del DS su “PAN UP” o “PAN DOWN”, per spostare temporaneamente lo schermo di 16 pixel e visualizzare elementi come punteggi o indicatori, senza sacrificare la risoluzione durante il gioco.
Disponibile anche una funzione di zoom temporaneo 1:1: assegnando un tasto alla voce “TOGGLE ZOOM” nelle impostazioni, sarà possibile attivare/disattivare lo zoom per facilitare la lettura dei testi.
In modalità zoom, parte dello schermo potrà risultare tagliata, ma è possibile spostarsi lateralmente con i tasti e
. Premendo nuovamente il tasto assegnato, si tornerà alla visualizzazione precedente.
Infine, alcuni giochi utilizzano loader personalizzati che richiedono l’attivazione della modalità True Drive. Attenzione: in questa modalità il caricamento dei dischi avviene alla velocità reale del Commodore 1541, ovvero molto lentamente (anche 2-5 minuti).
Se il gioco la richiede, è l’unico modo per farlo funzionare. Si consiglia di creare uno stato di salvataggio una volta caricato il gioco, per evitare attese future.
Supporto per Cartucce
Pur essendo un emulatore orientato principalmente ai giochi su disco, GimliDS supporta anche le cartucce più comuni, fino a una dimensione massima di 1MB. I tipi di cartucce compatibili includono:
- Standard 8K
- Standard 16K
- Super Game Carts fino a 64K
- Dinamic fino a 128K
- C64 Games System fino a 512K
- Ocean fino a 512K
- Magic Desk fino a 1MB
- Easy Flash fino a 1MB, con 256 byte di RAM
Questo garantisce la compatibilità con un’ampia varietà di giochi su cartuccia. Si consiglia di esplorare l’archivio OneLoad64, che raccoglie molte di queste versioni in formato pronto all’uso.
fedeltà dell’emulazione
L’emulatore non è perfetto. GimliDS utilizza una tecnica chiamata emulazione per linea, che consiste nell’eseguire una linea alla volta di CPU, grafica VIC, audio SID, e così via. Nel formato PAL, ci sono 312 scanline, di cui poco più di 200 sono effettivamente visibili sullo schermo.
Questo approccio è piuttosto comune tra molti emulatori (inclusi quelli dello stesso autore), ma non garantisce un’accuratezza assoluta, in quanto alcuni effetti del C64 dipendono da modifiche che avvengono all’interno di una singola scanline.
Molti giochi non sfruttano questi effetti avanzati, e di conseguenza funzionano quasi perfettamente su GimliDS.
Tuttavia, alcuni giochi fanno un uso parziale o esteso di questi “trucchi” temporali, il che può causare piccoli glitch grafici (come sfarfallii o righe instabili in alto o in basso allo schermo), problemi visivi più gravi o audio/musica compromessi.
In attesa di miglioramenti futuri dell’emulatore (senza però arrivare a una ciclo-accuratezza totale, che comprometterebbe la velocità) si possono sfruttare alcune soluzioni, tra cui l’opzione “CPU Adjustment” nelle impostazioni, configurabile per singolo gioco.
Particolarmente utile è l’impostazione CPU CYCLES adjustment, che permette di variare il numero di cicli CPU disponibili per ogni scanline, da -9 a +9, con il valore predefinito su 0 (nessuna modifica).
Questo aiuta a riequilibrare il sincronismo tra CPU, VIC e SID, che possono andare leggermente fuori fase man mano che il raggio di scansione percorre lo schermo.
Va usata con cautela: un valore troppo alto o troppo basso può causare instabilità o crash del gioco.
In pratica, se un gioco non mostra glitch grafici, non è necessario intervenire. Ma, ad esempio, nel caso di Gauntlet, dove la “G” del secondo giocatore in basso a sinistra lampeggia, si può ridurre il problema impostando CPU CYCLES a +2 o +3.
Con +5 il difetto scompare del tutto e l’immagine risulta stabile. La regola è: modificare solo quanto basta per eliminare l’anomalia, senza esagerare.
In generale:
- Se il problema grafico è in alto nello schermo, provare con valori negativi.
- Se il problema è in basso, provare con valori positivi.
Modifiche specifiche per alcuni giochi
Per ottenere le migliori prestazioni possibili di alcuni giochi popolari sul buon vecchio Nintendo DS, si consiglia di applicare i seguenti accorgimenti:
- Gauntlet – impostare CPU CYCLES a +5 per eliminare i glitch grafici sulla lettera “G”.
- Bruce Lee – impostare CPU CYCLES a +4 per ridurre i difetti grafici legati alle scanline.
- Turrican I – impostare BAD CYCLES a -6. Ci saranno alcune corruzioni grafiche nella schermata del titolo, ma il gioco si presenterà e funzionerà correttamente (e soprattutto sarà possibile avviarlo!).
- Turrican II – richiede True Drive attivato (oppure va caricato da cartuccia).
- Lode Runner – richiede True Drive attivato (oppure va caricato da cartuccia).
- LED Storm – impostare CPU CYCLES a +4 per eliminare un difetto grafico nella parte alta dello schermo.
Changelog
- Corretto l’inizializzazione delle variabili CIA, permettendo l’avvio corretto di giochi come Chuckie Egg.
- Corretto il funzionamento dei contatori dell’orologio TOD (nelle versioni precedenti non funzionavano affatto; correzione utile principalmente per alcune utility).
- Migliorata la gestione della REU (RAM Expansion Unit), con un incremento della velocità di 1-2 frame nei giochi che la utilizzano.
- Ottimizzata la gestione del chip VIC, con un miglioramento generale delle prestazioni pari a 1-2 frame in tutti i giochi.
Download: GimliDS v1.1
Download: Source code GimliDS v1.1
Fonte: gbatemp.net