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

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

201
0

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

Questa nuova versione si concentra soprattutto sulla correzione di bug, con qualche miglioramento di qualità della vita, nuovi strumenti di debug e piccoli accorgimenti distribuiti in vari ambiti, senza però introdurre nuove funzionalità di grande rilievo.

La novità più importante riguarda l’arrivo delle build ufficiali per Windows ARM e per FreeBSD, rese possibili rispettivamente da @tordona e @bsdcode.

Probabilmente si tratta dell’ultimo rilascio della serie 0.1.x, poiché lo sviluppatore ha annunciato di voler riscrivere da zero i moduli CD Block e SMPC, da sempre i punti più deboli dell’emulazione di Ymir e causa di numerosi crash, freeze e incompatibilità.

Questa riscrittura, prevista per la versione 0.2.0, potrebbe richiedere più tempo e portare a cambiamenti tali da compromettere la compatibilità con i salvataggi delle versioni precedenti, anche se si cercherà di evitarlo.

Sul fronte della compatibilità, grazie al lavoro di @GoodWall533, @thelastangryman1907 e jabeck1, la lista dei giochi supportati ha superato il 50% del totale segnalato, con un tasso di compatibilità di circa l’85%.

Sono stati corretti numerosi problemi: il caricamento dei file CHD ora funziona correttamente con Last Bronx, il parser CUE è stato riscritto per gestire meglio le tracce audio e i nomi con caratteri Unicode, e l’applicazione supporta ora pienamente UTF-8.

Sono stati introdotti miglioramenti anche per l’uso delle cartucce di Backup RAM, che vengono inserite automaticamente in giochi come Dezaemon 2 e Sega Ages – Galaxy Force II.

Dal punto di vista tecnico, ci sono state correzioni importanti per i processori SH-2, SCU e soprattutto SCSP, che hanno portato a una migliore gestione di grafica e audio in diverse raccolte, tra cui quella di Phantasy Star, e alla risoluzione di numerosi bug che compromettevano musiche, effetti sonori o doppiaggi.

Anche il rendering grafico è stato notevolmente affinato: il VDP1 è ora “pixel-perfect” grazie a Lordus, con ottimizzazioni che risolvono problemi come i sottotitoli lampeggianti di Panzer Dragoon o i rallentamenti nelle sequenze video di Baroque.

Per il VDP2 invece sono stati migliorati i tempi di sincronizzazione NTSC/PAL, risolvendo glitch storici come gli errori grafici nello Stage 2C di Radiant Silvergun.

Sul piano dell’interfaccia, Ymir fornisce ora messaggi di errore più chiari quando un’immagine disco non può essere caricata, e segnala anche eventuali mancanze di ROM cartridge richieste da alcuni titoli.

Inoltre, su macOS è stato introdotto un gestore globale delle eccezioni, già disponibile su Windows e Linux. Sono stati aggiunti miglioramenti al supporto per i controller tramite database esterni, mentre su Windows 11 le finestre hanno ora angoli squadrati.

Infine, sono stati sviluppati nuovi strumenti di debug, tra cui la possibilità di impostare watchpoint sugli SH-2, un visualizzatore e un oscilloscopio per l’SCSP, una nuova finestra con i parametri principali dei layer del VDP2 e la possibilità di esportare e salvare i log di debug.

Tutti questi strumenti risultano preziosi sia per chi sviluppa homebrew, sia per chi vuole contribuire a rendere più stabile e accurata l’emulazione.

Nel complesso, questa versione di Ymir rappresenta un passo di consolidamento, con centinaia di fix e ottimizzazioni che rendono l’emulatore sempre più compatibile e preciso.

La vera svolta arriverà con la futura 0.2.0, che promette una riscrittura profonda dei moduli più problematici e potenzialmente un deciso balzo in avanti nell’accuratezza complessiva.

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: Disabilitati gli angoli arrotondati delle finestre su Windows 11.
  • App: Implementato un gestore delle eccezioni per macOS. (#460; @Wunkolo)
  • App: Fornire feedback all’utente se una parte dell’inizializzazione dell’app fallisce.
  • App: Mostrare un avviso se all’utente mancano le immagini ROM cartridge richieste dai giochi.
  • Backup RAM: I nomi dei file di backup RAM interni per gioco sono cambiati da bup-int-[<game code>] <title>.bin a bup-int-<title> [<game code>].bin per permettere l’ordinamento alfabetico nei file browser. I file esistenti saranno rinominati automaticamente al caricamento.
  • Build: Supporto ARM64 per Windows. (#483; @tordona)
  • Build: Supporto FreeBSD per sistemi ARM64. (#421; @bsdcode)
  • Cart: Inserimento automatico delle cartucce Backup RAM per i giochi che ne richiedono l’uso, come Dezaemon 2 e Sega Ages – Galaxy Force II. (#356)
  • Cart: Aggiunta del demo di Vampire Savior – The Lord of Vampire nel database interno dei giochi che necessitano di una cartuccia DRAM.
  • CD Block: Consentire query dei file a indirizzi frame specifici e mostrare il file in lettura nella finestra System State.
  • Debug: Permettere l’esportazione dei log di debug su file.
  • Debug: Spostare le scritture sulla porta di debug in un callback e rimuoverle dallo SCU tracer, eliminando la necessità del debug tracing per usare il metodo di output di Mednafen.
  • Debugger: Implementati watchpoint per SH-2. (#22)
  • Input: Supporto per il caricamento di database esterni di controller e inclusione di un database della community nelle build.
  • Input: Aggiunta combinazione di tasti rapida per uscire dall’applicazione, richiedendo almeno un modificatore (Ctrl, Alt, Shift, Option, ecc.) e un altro tasto (es. Ctrl+Shift+Q). (#160)
  • Media: Cache dei blocchi CHD per migliorare le prestazioni a costo di maggiore utilizzo di RAM.
  • Media: Fornire feedback di errore basilare quando si tenta di caricare immagini disco danneggiate, corrotte o troncate.
  • SCSP: Visualizzazione base dei registri di tutti gli slot e di alcuni stati.
  • SCSP: Visualizzazione dell’oscilloscopio dell’output finale.
  • VDP1: Ottimizzazione del plotting delle linee saltando quelle completamente fuori dall’area di clipping del sistema.
  • VDP1: Ottimizzazione dei poligoni mesh limitando gli aggiornamenti all’area di clipping del sistema.
  • VDP1: Semplificazione del codice di rendering delle mesh per migliorare leggermente le prestazioni.
  • VDP1: Varie micro-ottimizzazioni delle prestazioni.
  • VDP2: Visualizzazione base dei parametri NBG0-3 e RBG0-1.

Correzioni

  • App: Imposta la locale en-US UTF-8 globalmente. Risolve il problema del CHD loader che non riusciva a caricare file con caratteri Unicode nei nomi.
  • CD Block: Previene crash quando si tenta di impostare trasferimenti di subcode senza traccia attiva.
  • CD Block: Correzioni per il soft reset. (grazie a @celeriyacon)
  • CD Block: Usa i rapporti di clock del CD Block invece di quelli dello SCSP per gli eventi di aggiornamento dello stato del drive.
  • CD Block: Varie sfumature di transizione di stato e playback. (grazie a @celeriyacon)
  • CD Block: Varie sfumature su Put/Get/Delete Sector Data. (grazie a @celeriyacon)
  • Input: Resetta gli input quando si scollegano o disassociano i gamepad.
  • Media: Regola gli offset dei settori quando si leggono immagini CHD con più tracce. Risolve alcuni CHD di Last Bronx (USA) che non si avviavano. (#238)
  • Media: Corretto il trattamento dei caratteri Unicode durante il caricamento o il salvataggio della lista recenti dischi.
  • Media: Ignora i percorsi assoluti quando si caricano immagini da file CUE; carica dalla stessa cartella del file CUE.
  • Media: Gestione corretta dei file CUE codificati in UTF-8 che fanno riferimento ad altri file con caratteri Unicode.
  • Media: Riscrittura del parser CUE per risolvere problemi di saltelli audio.
  • SCSP: Permetti a M68K di prelevare istruzioni dai registri SCSP. Risolve la riproduzione audio di CroNSF.
  • SCSP: Corregge il controllo del bug “attack stuck” quando KRS=0xF. Risolve problemi in più giochi:
    • Voce dell’annunciatore in DonPachi ora riproducibile consistentemente (#475).
    • I giochi Sega Ages – I Love Mickey Mouse & I Love Donald Duck ora riproducono correttamente le loro canzoni (#498).
    • Tutti i giochi nella Sega Ages: Phantasy Star Collection ora riproducono correttamente le loro canzoni (#499).
    • Linea vocale “Xing” in Arcade Gears Vol.2 – Gun Frontier all’avvio (#467).
    • Linee vocali dei personaggi in Langrisser III (#426).
    • Linee vocali dei personaggi in AnEarth Fantasy Stories – The First Volume (#358).
    • Linee vocali durante intro e gioco in Rapyulus Panic (#338).
  • SCSP: Non usare SBCTL sugli slot che riproducono campioni dalla Sound RAM quando EG raggiunge la soglia di silenzio. Risolve audio rotto in Guardian Heroes e Elevator Action^2 (#155).
  • SCSP: Silenzia audio quando MVOL=0. Risolve problemi di suoni persistenti in Sega Ages – Galaxy Force II (#427).
  • SCU: Gestione corretta delle scritture a 8-bit e 16-bit nei registri. Risolve grafica di Phantasy Star IV in Phantasy Star Collection (#499).
  • SCU: Timer 1 non veniva attivato quando configurato su Timer 0 match di 0x000.
  • SH2: Correzione dell’ordine dei byte per accessi diretti alla cache. (grazie a @celeriyacon)
  • SH2: Correzione offset MOVA in delay slot. (grazie a @celeriyacon)
  • SH2: Scambia l’ordine di lettura della memoria per gli operandi MAC.W e MAC.L. (grazie a @celeriyacon)
  • SMPC: Resetta SF (con delay) alla ricezione di una richiesta INTBACK. Risolve blocchi della Phantasy Star Collection su schermo nero.
  • SMPC: Correzione letture/scritture registri. (grazie a @celeriyacon)
  • SMPC: Flag INTBACK ottimizzato invertito. (grazie a @celeriyacon)
  • SMPC: Timeout per INTBACK in sospeso a VBlank IN se non vengono ricevute richieste Continue o Break. Risolve input in entrambe le versioni di Discworld (#245; grazie a @celeriyacon).
  • SMPC, VDP: Trigger INTBACK ottimizzato più consistente, circa 1ms prima di VBlank IN a seconda della risoluzione verticale.
  • System: Reset della velocità di clock al soft reset del sistema.
  • VDP1: Azzera il layer mesh trasparente a 0 invece del valore di erase write. Risolve livelli di Rayman con luminosità dimezzata usando l’enhancement dei mesh trasparenti.
  • VDP1: Conteggio cicli del processo di erase VBlank. Risolve sottotitoli lampeggianti in Panzer Dragoon FMVs e freeze in Parodius/Sexy Parodius (#201).
  • VDP1: Non scambiare valori Gouraud quando flip orizzontale/verticale attivo su poligoni non testurizzati. Risolve shading errato in Croc – Legend of the Gobbos (#543).
  • VDP1: Allinea forzatamente l’indirizzo dei dati sprite a 16 byte in modalità colore RGB 5:5:5. Risolve loghi di squadra disallineati in All-Star Baseball ’97 Featuring Frank Thomas (#546).
  • VDP1: Miglioramento prestazioni evitando doppia scrittura dei pixel nei processi di erase a bassa risoluzione; corregge conteggio cicli ad alta risoluzione.
  • VDP1: Aumento padding per ottimizzazione rendering clip system. Risolve pixel bianchi sparsi su Mahjong Yon Shimai – Wakakusa Monogatari e Croc (#527, #543).
  • VDP1: Rendering pixel-perfect. (grazie a Lordus)
  • VDP1: Ritardo inizio disegno PTM=1 per evitare problemi di timing. Risolve frammenti di vetro lampeggianti in Fighter’s History Dynamite (#503).
  • VDP1: Conteggio cicli primitivi per giochi che abusano del VDP1 come Baroque, Dark Seed II e Funky Fantasy (#311, #316, #364).
  • VDP1: Rimosso write penalty hack introdotto per Mega Man X3. Risolve problemi di sprite mancanti o lampeggianti in vari giochi.
  • VDP1: Rielaborazione rendering sprite scalati per gestire correttamente zoom point non documentati.
  • VDP1: Rielaborazione tempi erase/swap. Risolve numerosi problemi di lampeggiamento e grafica mancante in vari giochi.
  • VDP2: Regolazione larghezza linea per inserimento colori RBG. Risolve metà campo non colorato in World League Soccer ’98 (#517).
  • VDP2: Leggi sempre dati scroll line anche per NBG disabilitati. Risolve offset di un frame su schermata settings e GUI Deep Fear.
  • VDP2: Non disegnare aree fuori dal layer sprite quando ruotato. Risolve glitch in Sega Ages – Power Drift (#492).
  • VDP2: Non usare dati supplementari per caratteri in VRAM inaccessibili. Risolve colonne di “A” in Darklight Conflict (#545).
  • VDP2: Doppia coordinata verticale finestra in modalità interlacciata single-density. Risolve metà schermo mancante in Pro-Pinball: The Web (#371).
  • VDP2: Correzione bit indirizzo CRAM. Risolve grafica in Saturn Bomberman (#434).
  • VDP2: Correzione indirizzo CRAM per colori linea RBG. Risolve colori errati in World League Soccer ’98 (#517).
  • VDP2: Correzione tempi monitor esclusivi, risoluzioni e letture fuori tabella. (grazie a @celeriyacon)
  • VDP2: Correzione tempi modalità interlacciata. (grazie a @celeriyacon)
  • VDP2: Correzione off-by-one coordinate X finestra. Risolve glitch di un pixel in Albert Odyssey.
  • VDP2: Correzione blending mesh trasparente con layer VDP2 (es. Bulk Slash).
  • VDP2: Correzione calcolo indirizzo dati colore linea per rotazione.
  • VDP2: Correzione calcolo finestra con coordinate verticali illegali. Risolve glitch sfondo in Radiant Silvergun Stage 2C.
  • VDP2: Fetch forzato primo carattere di ogni scanline. Risolve tile spazzatura in Athlete Kings (#515).
  • VDP2: Gestione giochi che attivano solo RBG1. Risolve sfondi mancanti in Houkago Ren’ai Club – Koi no Etude (#551).
  • VDP2: Gestione manuale finestra sprite layer. Risolve effetti grafici in Metal Black (#404).
  • VDP2: Onora registro modalità parametro rotazione per colori linee. Risolve cielo in Panzer Dragoon II Zwei e Savaki (#570).
  • VDP2: Inversione bit TVSTAT.ODD in modalità interlacciata single-density. Risolve campi interlacciati invertiti in Pro-Pinball: The Web e Shienryuu (#447).
  • VDP2: Implementazione VCNT skip come fase verticale dedicata. (grazie a @celeriyacon)
  • VDP2: Latch TVMD.DISP e TVMD.BDCLMD all’inizio del frame. Risolve:
    • Grafica spazzatura dopo loading screen in Samurai Spirits – Zankurou Musouken (#472)
    • Glitch di un frame in Ayakashi Ninden Kunoichiban Plus e Ninpen Manmaru (#478, #569)
  • VDP2: Sposta aggiornamento VCNT nella fase orizzontale left border dove HBLANK passa a zero. (grazie a @celeriyacon)
  • VDP2: Precalcolo flag coefficiente rotazione per dot invece di derivarlo due volte per scanline.
  • VDP2: Leggi solo all’inizio del frame il colore di sfondo per linee/screen. Risolve schermo rosso dopo logo SEGA in Ayakashi Ninden Kunoichiban Plus (#478).
  • VDP2: Ricalcolo indirizzi base pagine RBG0/1 quando cambiati a metà frame. Risolve terreno rotto in NiGHTS into Dreams boss fights (#423).
  • VDP2: Riduce precisione calcolo parametro rotazione per avvicinarsi al sistema reale.
  • VDP2: Render mesh trasparenti su layer separato invece che fonderli subito con layer sprite. Risolve problemi di priorità in Akumajou Dracula X (#484).
  • VDP2: Rielabora delay bitmap dovuti a cattiva configurazione cicli VRAM. Risolve grafica spostata in Baroque Report – CD Data File (#524).
  • VDP2: Memorizza dati colore linea RBG separatamente. Risolve problemi sky box in Sonic Jam – Sonic World (#83).
  • VDP2: Usa tempi NTSC/PAL più accurati per sincronizzazione video. Elimina stutter con refresh rate leggermente non multiplo perfetto.
  • VDP2: Usa character fetcher corretto per scroll RBG. Risolve glitch di sfondo in Battle Monsters (#340).

Quale versione scaricare

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