Home Emulatori Rilasciato Ymir v0.1.6: L’emulatore che riaccende la magia del SEGA Saturn su...

Rilasciato Ymir v0.1.6: L’emulatore che riaccende la magia del SEGA Saturn su PC Windows, MacOS e Linux

147
0

Pubblicato un rapido aggiornamento per Ymir, l’emulatore work in progress del SEGA Saturn disponibile per PC Windows, macOS e Linux.

Questa nuova versione, la più corposa finora con oltre 80 voci nel changelog, introduce numerose correzioni di compatibilità, miglioramenti delle prestazioni e alcune nuove funzionalità.

Tra queste spiccano la modalità di visualizzazione verticale (TATE), un sistema di notifiche di base, una maggiore stabilità nel frame pacing in modalità a schermo intero e il controllo della velocità di emulazione.

Un’importante novità riguarda invece la creazione di una lista ufficiale di compatibilità, ancora in fase di completamento, che invita gli utenti a testare giochi e segnalarne i risultati.

Attualmente, oltre il 60% dei titoli testati è completamente giocabile, mentre un ulteriore 20% riesce almeno ad avviarsi, un risultato notevole per un emulatore che ha meno di un anno di vita.

Tuttavia, solo il 6% della libreria totale del SEGA Saturn è stato testato, quindi c’è ancora molto da fare. Tra i miglioramenti di compatibilità, giochi come WipEout sono ora giocabili e i problemi grafici di Rayman, incluso il famoso glitch del boss finale, sono stati in gran parte risolti.

Particolare attenzione è stata dedicata ai componenti SCU e VDP2, con numerose correzioni che hanno eliminato bug in titoli già funzionanti e permesso ad altri di superare il logo SEGA o schermate nere.

Anche l’emulazione della cache SH-2 è stata perfezionata, risolvendo problemi in filmati di giochi come Dark Savior, dove ora è abilitata di default per una maggiore compatibilità.

Il VDP1 e VDP2 hanno ricevuto molte correzioni, risolvendo glitch grafici segnalati dagli utenti, come il problema nelle gallerie d’arte di Capcom Generation – Dai-5-shuu Kakutouka-tachi, dove le immagini risultavano tagliate e spostate.

Grazie a un miglioramento nella gestione dei cicli di accesso alla VRAM, Ymir ora visualizza correttamente queste immagini, un risultato che poche altre emulazioni, eccetto il core MiSTer Saturn, riescono a ottenere.

Aggiunta anche una finestra di debug per monitorare i ritardi di accesso alla VRAM, utile per gli utenti più tecnici. Sul fronte audio e CD, il parser CUE è stato migliorato per correggere disallineamenti delle tracce audio e consentire il caricamento di giochi estratti con strumenti non conformi a Redump, purché le tracce siano in formato raw/binario.

Piccole correzioni al CD Block, SCSP e SMPC hanno risolto problemi come la ripresa delle tracce audio in X-Men: Children of the Atom, effetti sonori troncati in giochi come Sonic R e Akumajou Dracula X, e l’avvio di titoli come Quake (versione europea).

La modalità TATE, ideale per gli sparatutto che richiedono uno schermo ruotato di 90°, è una delle novità più interessanti, con opzioni per ruotare il display in qualsiasi direzione e nuove proporzioni dello schermo (3:2 e 16:10).

Aggiunto anche un sistema per salvare la posizione e le dimensioni della finestra dell’emulatore, rendendo l’esperienza più fluida.

Le prestazioni sono state ottimizzate in diversi componenti: l’emulazione della cache SH-2 è più efficiente, i controlli degli interrupt SH-2 sono stati semplificati, e il SCSP ha ricevuto micro-ottimizzazioni.

Inoltre, l’introduzione di un thread dedicato per il deinterlacing riduce l’impatto sulle prestazioni di questa funzione, portando perdite di performance inferiori al 10% in molti casi, rispetto al 37-43% delle versioni precedenti.

Complessivamente, le ottimizzazioni hanno migliorato le prestazioni del 5-10%, con picchi fino al 25% in alcuni giochi.

Il controllo della velocità di emulazione è un’altra aggiunta significativa, con opzioni per regolare la velocità da 10% a 500% e tasti rapidi per passare tra velocità normale, lenta e veloce.

Anche l’interfaccia utente è stata arricchita con un sistema di notifiche, un contatore FPS opzionale e indicatori per velocità modificate.

Il Backup Memory Manager ora consente di ordinare i file, esporta i salvataggi in formato BUP standard e mostra informazioni più dettagliate sui blocchi di memoria.

Caratteristiche

  • Caricamento dei giochi da file BIN+CUE, IMG+CCD, MDF+MDS o ISO.
  • Rilevamento automatico della ROM IPL (BIOS).
  • Cambio automatico della regione.
  • Supporto fino a due giocatori con controller standard su entrambe le porte (altre opzioni in arrivo).
  • Mappatura dei tasti completamente personalizzabile.
  • Supporto per cartucce RAM di backup e DRAM (altre in arrivo).
  • Gestore integrato della memoria di backup per importare ed esportare salvataggi e trasferirli tra RAM interna e cartuccia.
  • Stati di salvataggio.
  • Riavvolgimento (fino a un minuto a 60 fps), velocità turbo, avanzamento fotogramma per fotogramma (in avanti e indietro).
  • Modalità a schermo intero con supporto VRR e bassa latenza di input.
  • Debugger ricco di funzionalità in fase di sviluppo.

Guida all’utilizzo

Ymir non richiede installazione, è sufficiente scaricare il file eseguibile in una qualsiasi cartella ed eseguirlo. Su PC Windows, potrebbe essere necessario installare il pacchetto più recente di Microsoft Visual C++ Redistributable (versione x86_64).

Il programma accetta parametri da linea di comando. Per visualizzare le opzioni disponibili, digirare il comando ymir-sdl3 --help:

Ecco le opzioni principali:

Ymir - Sega Saturn emulator
Usage:
  Ymir [OPTION...] positional parameters

  -p, --profile arg  Path to profile directory
  -h, --help         Display help text
  -f, --fullscreen   Start in fullscreen mode

Con l’opzione -p <percorso-profilo> è possibile specificare un set separato di file di configurazione e salvataggio, utile se si intende utilizzare profili utente diversi (da qui il nome “profile”).

Nota: La versione Win32 di Ymir non produce output nella console, ma rispetta comunque i parametri da riga di comando.

Requisiti BIOS

Per funzionare correttamente, Ymir richiede una ROM IPL (BIOS), le ROM devono essere posizionate nella cartella roms, che viene creata accanto all’eseguibile al primo avvio.

L’emulatore rileverà e selezionerà automaticamente la ROM IPL compatibile con il disco caricato. Se non viene caricato alcun disco, Ymir utilizzerà una ROM corrispondente alla prima regione preferita.

In assenza di corrispondenze, selezionerà qualsiasi ROM disponibile, è comunque possibile forzare la selezione manualmente in Settings > IPL.

Formati supportati

Ymir è in grado di caricare immagini disco di giochi nei formati BIN+CUE, IMG+CCD, MDF+MDS e ISO. Al momento non supporta i file CHD di MAME né il caricamento diretto di file .elf.

Changelog

Nuove funzionalità e miglioramenti

  • App: Aggiunte opzioni di rotazione dello schermo per i giochi in modalità TATE. (#256)
  • App: Aggiunta visualizzazione dell’OSD del framerate con scorciatoie per attivarlo/disattivarlo e cambiarne la posizione.
  • App: Aggiunte azioni nel menu per ridimensionare la finestra a scale specifiche.
  • App: Aggiunte nuove opzioni di aspect ratio forzato: 3:2 e 16:10.
  • App: Aggiunta opzione per ricordare posizione e dimensioni della finestra. (#4)
  • App: Aggiunti salvataggi di stato al menu File.
  • App: Introdotto un sistema semplice di overlay messaggi per notifiche base. (#288)
  • App: Mostrata la velocità di emulazione nella barra del titolo e sotto l’indicatore di velocità, con un nuovo indicatore per la modalità rallentata. (#16)
  • App: Migliorato il pacing dei frame a schermo intero con attesa attiva fino a 1 ms prima della presentazione del frame.
  • App: Aggiunto timestamp ai salvataggi di stato.
  • App: Notifiche per caricamento/salvataggio degli stati e cambio slot.
  • App: Migliorata regolazione degli intervalli dei frame a schermo intero.
  • Backup Manager: Esportazione predefinita dei file BUP tipo “Vmem”.
  • Backup Manager: Tutte le colonne ora sono ordinabili.
  • Backup Manager: Mostrato l’utilizzo logico dei blocchi + blocchi header. (#294)
  • Debugger: Aggiunta finestra base per ispezione dei registri VDP1.
  • Input: Aggiunte nuove scorciatoie per controllo del framerate: aumento/diminuzione velocità, cambio tra velocità primaria/alternativa, reset velocità. (#16)
  • Input: Cambiate scorciatoie predefinite per Pausa/Riprendi da “Pausa, Ctrl+P” a “Pausa, Barra spaziatrice”.
  • Input: Rimosso il tasto Invio dalle impostazioni predefinite per il tasto Start del Port 1 (evita conflitti con Alt+Invio).
  • SCSP: Ottimizzazioni varie a livello micro.
  • Impostazioni: Aggiunto pulsante “Cancella tutto” nella configurazione controller. (#288)
  • Impostazioni: Creazione o suggerimento automatica di file RAM di backup se nessun percorso è specificato per la cartuccia.
  • SH2: Migliorate le prestazioni della cache evitando lo swapping di byte.
  • SH2: Migliorate le performance semplificando i controlli degli interrupt.
  • Sistema: Mappata l’area di memoria 030'0000-03F'FFFF.
  • Sistema: Mappati array semplici direttamente come puntatori nella struttura del Bus, migliorando le prestazioni generali.
  • VDP2: Aggiunto thread dedicato per rendering deinterlacciato, riducendo notevolmente l’impatto prestazionale su CPU quad-core o superiori.
  • Video: Implementato limitatore di framerate. (#16)

Correzioni

  • App: Disattivata la sincronizzazione tra thread di emulatore e GUI fuori dallo schermo intero. Risolve il rallentamento su display con refresh sotto i 60 Hz.
  • App: Corretto il pacing dei frame e il limitatore di velocità su display a 50 e 60 Hz.
  • CD Block: Corretto il parametro “no change” in PlayDisc. Risolve l’audio CDDA che non riprendeva in X-Men: Children of the Atom. (#274)
  • Debugger: Le tracce dei DMA SCU indiretti usavano l’indirizzo della tabella aggiornato.
  • Input: Risolto problema con le combinazioni di tasti non legabili.
  • Input: I tasti modificatori ora funzionano correttamente come input controller e non interferiscono più con altri comandi. (#282)
  • Media: Supporto ai file CUE con PREGAP e INDEX 00 nello stesso TRACK.
  • Media: Ignorato il rilevamento del silenzio nell’area di pregap; ci si fida del CUE.
  • Media: Saltate le righe vuote nei file CUE.
  • Salvataggi di stato: Aggiunta lettura/scrittura di un campo mancante di SCSP. Risolto crash sporadico con rewind buffer attivo.
  • SCSP: Usato livello EG invece di totale per letture MSLC. Risolve effetti sonori assenti/troncati in Sonic R, Akumajou Dracula X e Daytona USA CCE.
  • SCU: Permessa lettura/scrittura della RAM DSP anche quando il programma è in pausa (@celeriyacon).
  • SCU: Le letture della RAM DSP restituiscono 0xFFFFFFFF se il programma è in esecuzione (@celeriyacon).
  • SCU: I DMA HBlank IN non devono dipendere dai timer. Risolto sfondo statico in Shinobi-X. (#193)
  • SCU: Migliorata la gestione degli interrupt HBlank IN, VBlank IN e OUT.
  • SCU: Incrementato l’indirizzo sorgente DMA di 4 dopo trasferimenti senza incremento. Risolti problemi di priorità sfondi in Street Fighter – Real Battle on Film. (#168)
  • SCU: I trasferimenti DSP DMA non devono scrivere in RAM programma o accedere al CT DMA (@celeriyacon).
  • SCU: Ristrutturati i trasferimenti DMA. Risolti tile spostati in Steam-Heart’s. (#278)
  • SCU: Eseguiti tutti i DMA in sospeso e non solo quello con priorità più alta.
  • SCU: Separata la gestione degli interrupt tra MSH2/SSH2.
  • SCU: Corrette varie anomalie nei trasferimenti DMA verso RAM programma DSP. (@celeriyacon)
  • Impostazioni: Invertito l’ordine di ordinamento della colonna IPL.
  • SH2: Corretta la maschera di aggiornamento cache LRU. Risolti glitch FMV in giochi Capcom, WipEout, Mr. Bones. (#202, #247, #270)
  • SH2: Le letture TAS.B devono bypassare la cache.
  • SH2: Il pin nIVECF è disconnesso: niente fetch di interrupt esterni.
  • SMPC: Ritardati i comandi per permettere a Quake (EU) di avviarsi a 2x.
  • SMPC: Migliorato il passaggio PAL/NTSC per abbinarsi al codice area.
  • Sistema: Effettuato reset hardware solo se il codice area SMPC cambia.
  • Sistema: Migliorata sincronizzazione tra SCU e CPU SH-2. Migliora la stabilità su WipEout (USA). (#202)
  • VDP1: Raddoppiata l’area di cancellazione orizzontale per sprite a bassa risoluzione con dati a 8 bit. Risolto problema menu opzioni in Resident Evil. (#180)
  • VDP1: Esteso il clipping delle linee ai bordi sinistro e superiore.
  • VDP1: Corretto il codice finale per sprite a 64 e 128 colori. Risolto contorno bianco in Scud e sprite rotti in Primal Rage. (#268, #280)
  • VDP1: Introdotto ritardo nel comando VDP1 su scritture VRAM. Risolti sprite difettosi in Mega Man X3. (#244)
  • VDP1: In modalità mezza luminosità, incluso il bit MSB del colore. Risolto sfondo FMV in Crows – The Battle Action. (#107)
  • VDP1: Mascherati i bit 0..3 di CMDCOLR in modalità sprite 4bpp. Risolti problemi di palette in Steam-Heart’s, Dragon Ball Z – Shinbutouden. (#69, #278)
  • VDP1: Corretta gestione di DIE/DIL in modalità interlacciata. Risolto testo raddoppiato in Resident Evil. (#180)
  • VDP2: Corretto offset dati carattere in formato RGB 8:8:8. Risolto FMV in Crusader – No Remorse. (#108)
  • VDP2: Ritardo pattern nome calcolato solo sul primo accesso. Risolto UI spostata in Battle Arena Toshinden Remix. (#306)
  • VDP2: Applicati calcoli speciali per colore su BG bitmap. Risolta UI traslucida in The Story of Thor. (#152)
  • VDP2: Evitati aggiornamenti di parametri video quando lo schermo è disattivato. Risolto schermo nero in Sega Rally.
  • VDP2: Corretta funzione di priorità speciale per pixel. Risolto problema di priorità BG in Waku Waku Puyo Puyo Dungeon.
  • VDP2: Corretta modalità interlacciata single-density.
  • VDP2: Corretto layer sprite in rotazione. Risolto scorrimento errato in Hang-On GP, Highway 2000. (#167, #208, #277)
  • VDP2: Corretta gestione trasparenza dati colore VDP1. Risolti problemi grafici in Rayman, Bubble Bobble. (#262)
  • VDP2: Corretta logica di interruzione finestre. Risolti problemi in Final Fight Revenge, Sakura Taisen. (#104, #253)
  • VDP2: Dimezzata larghezza layer sprite per modalità VDP2 bassa risoluzione. (#180)
  • VDP2: Gestione parametri errati in Snatcher (“Act 1”). (#259)
  • VDP2: Rispettato TVMD.BDCLMD quando il display è spento. Risolti effetti di transizione in Sega Rally.
  • VDP2: Ignorate letture scroll verticali su NBG disabilitati. Risolto effetto onde in Cotton 2. (#255)
  • VDP2: Ritardo VRAM bitmap implementato. Risolte immagini tagliate in Capcom Generation. (#254)
  • VDP2: Registri scroll BG aggiornati prima (VBlank OUT). Corretta offset verticale in Shinobi-X. (#193)
  • VDP2: Corretta lettura primo valore scroll verticale su BG bitmap. Risolto offset in Street Fighter – Real Battle on Film. (#291)
  • VDP2: Primo valore letto non cambia indirizzo. Corretto offset in Rayman (primo boss).
  • VDP2: Aggiornato indirizzo scroll lineare a Y=0. Risolti glitch grafici in Rayman, Sonic Jam.
  • VDP2: Offsets scroll lineare aggiornati solo ai limiti. Migliorata performance e corretta visualizzazione in Sega Rally.
  • VDP2: Scroll verticale aggiornato ogni 8 cell dots in caso di zoom.
  • VDP2: Registri scroll verticale aggiornati correttamente. Risolto effetto distorsione BG in Marvel vs. Street Fighter. (#72)
  • VDP: Corretta gestione del flag thread VDP1 quando threading VDP2 è disabilitato.
  • ymdasm: Corretto decoding operand DMA immediati/in RAM.
  • ymdasm: Mascherati e tradotti correttamente vari immediati DSP SCU.

Per i sistemi x86_64, la versione AVX2 offre prestazioni leggermente migliori, ma richiede un processore compatibile con tale set di istruzioni. In pratica, qualsiasi CPU Intel Core o AMD prodotta dal 2011 in poi (e i Pentium/Celeron dal 2020) dovrebbe supportarlo.

Se non si sa se il processore è compatibile o non si ha idea di cosa significhi, è generalmente sicuro scaricare la versione AVX2, a meno che non si stia utilizzando un PC molto vecchio o economico. Se si riscontrano crash casuali, provare la versione SSE2.

AArch64 è anche noto come ARM64. Ogni build per ARM include il supporto per le istruzioni NEON.

Per le versioni Windows, potreste dover installare l’ultima versione del pacchetto Microsoft Visual C++ Redistributable (è disponibile sia per x86_64 che per AArch64/ARM64). Ymir richiede Windows 10 o successivo.

Le versioni macOS sono disponibili sia per sistemi Apple Silicon (ARM – AArch64) sia per Intel (x86_64). Ymir richiede macOS 13 Ventura o successivo.

Linux

MacOS

Windows

Codice sorgente

Fonte: github.com