[EMU] Ymir v0.2.0: L’emulatore Sega Saturn si evolve con l’emulazione low-level del CD Block

La nuova versione dello sviluppo di Ymir, la v0.2.0, è ora disponibile, portando con sé un miglioramento fondamentale per l’accuratezza dell’emulazione: l’emulazione low-level (LLE) del CD Block. Questa versione introduce anche un semplice sistema di controllo automatico degli aggiornamenti, miglioramenti alla temporizzazione di SH-2, M68000 e SCU DMA, e le consuete correzioni di bug.

Miglioramenti Architetturali e Sistema di Build

Il sistema di build è stato aggiornato per supportare librerie più complesse come curl e OpenSSL. Queste librerie abilitano le richieste HTTP, permettendo a Ymir di controllare direttamente la disponibilità di nuovi aggiornamenti dalle release di GitHub. A causa di questi cambiamenti, la build per macOS è stata separata in versioni x86_64 e ARM64, anziché in un unico pacchetto universale.

Questa versione risolve anche un problema noto della v0.1.8 relativo al rewind buffer.

L’Emulazione Low-Level del CD Block: Un Cambiamento Epocale

La funzionalità principale di questa release è l’introduzione di un’opzione di emulazione low-level per il CD Block. Questo modifica fondamentalmente il modo in cui viene simulato il lettore CD del Saturn, migliorando notevolmente l’accuratezza.

Attenzione: L’attivazione o disattivazione di questa opzione forza un reset completo dell’emulazione, poiché è quasi impossibile riconciliare lo stato tra la modalità HLE (High-Level Emulation) e LLE.

Nota importante sugli Stati di Salvataggio:

  • Gli stati di salvataggio creati in modalità LLE richiedono che l’utente possieda la ROM del CD Block originale, utilizzata per creare lo stato, per poterlo caricare.

  • Gli stati di salvataggio creati in modalità HLE non richiedono ROM aggiuntive.

  • Il caricamento di uno stato di salvataggio regolerà automaticamente la modalità CD Block LLE e tenterà di caricare la ROM corrispondente, se disponibile. Se la ROM non viene trovata, lo stato di salvataggio non verrà caricato.

È importante sottolineare che la struttura dei file degli stati di salvataggio non ha subito modifiche che li rendano incompatibili: la v0.2.0 è ancora compatibile con gli stati di salvataggio delle versioni 0.1.x.

Miglioramenti alla Compatibilità

Grazie al lavoro della community, la lista di compatibilità è ora completamente popolata. Ymir vanta ora una compatibilità superiore al 90% con l’intera collezione di giochi per Saturn, con la maggior parte dei titoli che funzionano perfettamente o con problemi minori.

Tre fattori chiave hanno migliorato significativamente la compatibilità rispetto alla v0.1.x:

  1. La nuova opzione di emulazione low-level del CD Block.

  2. Miglioramenti alla temporizzazione del bus SH-2 e M68EC000.

  3. Miglioramenti alla temporizzazione e ai bus stall di SCU DMA, SCU DSP DMA e SH-2 DMAC.

La modalità LLE del CD Block richiede una ROM valida del CD Block per funzionare. Dai test interni e della community, almeno 23 giochi sono ora in grado di avviarsi o hanno risolto problemi gravi quando questa opzione è abilitata. Alcuni titoli, come GrandiaMahjong Hyper Reaction R e *LifeScape – Seimei 40 Okunen Haruka na Tabi*, potrebbero presentare nuovi problemi con l’opzione attiva.

Performance e Considerazioni

L’emulazione low-level del CD Block riduce le performance di circa il 15-20% a causa dell’emulazione di una CPU aggiuntiva (l’SH-1). La vecchia modalità HLE non verrà rimossa, in quanto offre performance migliori e maggiore flessibilità (ad esempio, permette di cambiare la velocità di lettura del CD).

Altri Miglioramenti Tecnic

  • Il parser per i file CUE è stato completamente rivisto, risolvendo quasi tutti i problemi di disallineamento delle tracce audio.

  • Ymir ora carica correttamente i cue sheet che referenziano file .wav (purché in formato PCM raw 44100 Hz, stereo, 16-bit).

  • Sono stati apportati piccoli fix ai loader CHD e ISO per migliorare la compatibilità con dump non-Redump.

  • Sono stati risolti numerosi problemi minori per VDP1 e VDP2.

  • È stata aggiunta una nuova opzione per la cartuccia di sviluppo DRAM da 6 MiB, richiesta dal prototipo di Heart of Darkness.

Controllo Automatico degli Aggiornamenti

Ymir v0.2.0 introduce un sistema di controllo automatico degli aggiornamenti. Al primo avvio, una schermata di onboarding chiederà se si desidera attivare questa funzionalità. Quando una nuova versione (stabile o nightly) sarà disponibile, Ymir mostrerà un popup con i link alle note di rilascio e al download.

Le opzioni per configurare l’update checker si trovano in Impostazioni > Generale. È anche possibile controllare manualmente gli aggiornamenti dal menu Aiuto.

Nuove Funzionalità nel Debugger

Il debugger si arricchisce di nuovi strumenti:

  • La traccia dei comandi del CD Block ora utilizza un codice colore per tipo di comando e stato della risposta.

  • Sono state aggiunte nuove finestre di debug per tracciare le comunicazioni del drive CD in modalità LLE.

  • Sono state aggiunte nuove finestre per VDP2: un visualizzatore della palette CRAM e un overlay personalizzabile che permette di visualizzare i layer renderizzati, lo stato delle finestre, i parametri di rotazione di RBG0 e l’uso dei calcoli colore/ombre.

Elenco Completo delle Modifiche

Nuove funzionalità e miglioramenti:

  • App: Aggiunta opzione per controllare gli aggiornamenti all’avvio. Aggiunta anche azione di controllo manuale.

  • Build: Creazione del bundle app per macOS.

  • Cartuccia: Aggiunta cartuccia di sviluppo DRAM da 6 MiB, richiesta dal prototipo di Heart of Darkness.

  • CD Block: Implementata modalità di emulazione low-level opzionale. Richiede ROM valide del CD Block e ha un costo prestazionale considerevole, ma risolve numerosi problemi quando abilitata:

    • La musica di Gunbird non si interrompe più quando si mette in pausa e si riprende il gioco

    • Mr. Bones è ora stabile al 100%

    • Audio e video di Pocket Fighter sono ora sincronizzati

    • X-Men: Children of the Atom non si blocca più nella schermata di caricamento

    • …e molti altri.

  • CD Block: Rivista la temporizzazione dei trasferimenti DMA del CD Block.

  • CD Block: Aggiunte nuove finestre di debug per il CD Block LLE.

  • Core: Migliorata l’accuratezza della temporizzazione degli accessi al bus SH-2.

  • Core: Migliorata l’accuratezza della temporizzazione degli accessi al bus M68EC000.

  • Core: Migliorata l’accuratezza della temporizzazione dei trasferimenti DMA della SCU e degli stalli del bus.

  • Core: Migliorata l’accuratezza della temporizzazione dei trasferimenti DMA dello SH-2 DMAC.

  • Debugger: Aggiunto overlay di debug per VDP2.

  • Debugger: Aggiunto visualizzatore palette CRAM per VDP2.

  • Debugger: I log dei comandi del CD Block ora utilizzano codici colore.

  • GUI: Aggiunta schermata di onboarding per il controllo degli aggiornamenti.

  • SMPC: Piccola modifica per permettere al BIOS del dev kit di riprodurre la sua animazione (anche se non va ancora oltre il logo Saturn).

Correzioni di bug:

  • App: Corretto un problema per cui il buffer di rewinding poteva corrompersi dopo il salvataggio di uno stato.

  • CD Block: Risolto un problema per cui il comando “Get CD Status” non segnalava correttamente lo stato di apertura/chiusura del tray.

  • CD Block: Corretto un problema di audio shifting nell’overload del parser CUE.

  • CD Block: Il parser CUE ora supporta i file WAV (deve essere 44100 Hz, stereo, 16-bit PCM).

  • CD Block: Corretti problemi minori nei loader CHD e ISO.

  • VDP1: Corretta una condizione di race in un banco di registri.

  • VDP1: Corretta l’elaborazione del comando Polygon quando il bit ECD è impostato.

  • VDP2: Corretta l’applicazione della sfumatura color calculation sui background NBG0/1 quando il registro corrispondente è impostato su 0x40.

  • VDP2: Corretta la priorità dei sprite rispetto agli sfondi RBG0/1 quando il bit PRIS è impostato.

  • VDP2: Corretta la riproduzione di un frame duplicato nei video FMV di The Mansion of Hidden Souls.

  • VDP2: Corretta la visualizzazione della linea di vblank nella raster line.

Download

Scarica Ymir v0.2.0 e scopri di più ai seguenti link:

Nota sullo Sviluppo Futuro

A partire da questa versione, è probabile che i prossimi aggiornamenti arrivino con un ritmo leggermente più lento e/o con un elenco di cambiamenti più contenuto, poiché lo sviluppatore dividerà la sua attenzione con altri progetti.

Buon divertimento con l’emulazione del Sega Saturn!

Da FRANCESCO

Sviluppatore a tempo perso nato negli anni 80, amante delle console e delle retro console.Il mio motto è quello di aiutare il prossimo senza avere rimorsi di cio' che hai fatto.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

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