Pubblicato un nuovo aggiornamento per ares, l’emulatore multisistema discendente di higan e bsnes si concentra principalmente sull’accuratezza e la conservazione.
Dalla precedente versione 140, ben 13 contributori hanno creato ben 52 commit nel codice di base dell’emulatore ares.
L’aggiornamento apporta importanti miglioramenti per diversi sistemi, tra cui SNES/Super Famicom, dove sono stati risolti problemi con la rilevazione delle cartucce Sufami Turbo e la compatibilità con PowerFest ’94.
Inoltre, è stato aggiunto il supporto per giochi con 256KB di SRAM, il che è utile anche per alcune ROM hack, e migliorato il funzionamento del chip SA-1.
Per il Game Boy Advance, l’aggiornamento ha perfezionato l’emulazione della modalità stop, ottimizzato i tempi degli interrupt e migliorato la gestione del PPU con sincronizzazioni più accurate.
Aggiunto inoltre un toggle per la precisione dei pixel, che permette di ottenere un notevole aumento delle prestazioni disattivandolo.
Sul fronte Nintendo 64, è stato rimosso un sistema di ottimizzazione che comprometteva l’accuratezza, aggiunto il supporto per giochi aftermarket come 40 Winks e Xeno Crisis, e introdotte nuove funzionalità di debug con miglioramenti per la gestione delle eccezioni e del GDB debugger.
Inoltre, l’aggiornamento apporta modifiche al sistema Sega Mega Drive/Genesis/32X/CD, risolvendo un problema di sincronizzazione che aveva compromesso il funzionamento di Knuckles Chaotix nella versione precedente. Introdotta anche un’opzione per visualizzare la schermata TMSS.
Altri miglioramenti includono la gestione più semplice di risorse su Linux, fix per vari crash su macOS e l’aggiornamento dell’integrazione con librashader per supportare le nuove versioni ABI, oltre a correggere problemi di compatibilità con versioni più vecchie di macOS.
Changelog
Sistemi
Nintendo – SNES / Super Famicom
- Corretta la rilevazione della cartuccia base Sufami Turbo (evitando conflitti di seriale con Sailor Moon SuperS – Fuwafuwa Panic).
- Corretti i problemi con PowerFest ’94 e Campus Challenge ’92.
- Aggiunto il supporto per giochi con 256KB di SRAM (utilizzato in particolare nelle ROM hack, ma queste funzionano anche sull’hardware reale).
- Aggiunto il supporto per la tastiera NTT Data.
- Corretto il DMA del chip SA-1 per le banche BWRAM da 0x41 in poi.
Nintendo – Game Boy Advance
- Migliorata l’emulazione della modalità di arresto, assicurando che esca solo una volta che l’input richiesto è registrato.
- Raffinati i tempi delle interruzioni (blocca IE e IF per un ciclo).
- Aggiunto latch per abilitare lo sfondo, gli oggetti e il forzato blanking su DISPCNT; ora questi hanno effetto corretto dopo 3 linee di scansione.
- Ottimizzata la gestione dei registri SIO.
- Corretto un errore off-by-one nella gestione del mosaico di BG.
- Corretto un problema nel mosaico OBJ a x=0. Migliorata la temporizzazione degli OBJ: ora vengono resi correttamente una linea di scansione in anticipo, con tempi di accesso alla PRAM degli OBJ più vicini all’hardware.
- Aggiunto un sincronizzatore a 2 cicli e migliorati i tempi della CPU in modalità arresto.
- Sincronizza selettivamente CPU e APU, consentendo la rimozione del profilo ‘PERFORMANCE’ in fase di compilazione. (Maggiore accuratezza nelle build di rilascio senza sacrificare le prestazioni).
- Piccoli miglioramenti ai tempi della PPU.
- Aggiunto supporto per l’opzione di precisione dei pixel; significativo aumento delle prestazioni quando la precisione dei pixel è disabilitata.
Nintendo – Nintendo 64
- Rimossa l’ottimizzazione delle prestazioni devertualizeFast dalle ricerche dei blocchi di codice, poiché si è dimostrato che compromette la correttezza/accuratezza.
- Ristruttura devirtualize per restituire un contesto aggiuntivo per l’accesso alla memoria, riducendo la duplicazione del codice nelle operazioni in memoria.
- Utilizza la compilazione JIT solo quando si esegue codice dalla cache delle istruzioni (i-cache).
- Aggiunto il supporto per 40 Winks (Aftermarket).
- Aggiunto il supporto per Xeno Crisis (World) (Aftermarket).
- Permetti lo scambio di Pak sulla porta Controller 1 (ora puoi passare da Controller Pak, Transfer Pak e Rumble Pack durante l’esecuzione).
- Corretto il tracciamento delle istruzioni per il debugging quando si utilizza il ricompilatore.
- Aggiunto il supporto per scritture multi-byte nel debugger GDB.
- Utilizza segnali GDB differenti per i vari tipi di eccezione.
- Permetti scritture arbitrarie e potenzialmente non allineate nella memoria RDRAM tramite GDB.
- Aggiunto un avviso insolito quando il software utilizza CACHE su indirizzi non cache.
- Ristrutturata la JIT per rimuovere una chiamata extra alla funzione instructionEpilogue per ogni istruzione.
Sega – Mega Drive / Genesis / 32X / CD
- Sincronizza i componenti più regolarmente durante l’emulazione del 32X; questo corregge un problema di regressione che causava malfunzionamenti di Knuckles Chaotix nella versione 140 di ares.
- Aggiunta un’opzione per abilitare la schermata TMSS “Produced by or under license from…”.
Altro
- Inserite le risorse nella directory di output su Linux, permettendo di eseguire build auto-compilate senza dover eseguire ‘make install’ prima.
- Corretti alcuni possibili utilizzi di variabili non inizializzate.
- Abilitato il caricamento delle cartelle ROM in stile higan quando si utilizza la riga di comando.
- Aggiornata l’integrazione di librashader per librashader ABI 2.
Correzioni per MacOS
- Visualizza gli errori del caricatore degli shader in Metal, semplificando il debug di librashader.
- Aggiunto il controllo dei limiti per i menu contestuali nella visualizzazione a tabella; corregge un crash che si verificava facendo clic con il tasto destro al di fuori delle righe definite.
- Corretto un problema che impediva il funzionamento di librashader su macOS versioni precedenti alla 12 (Monterey) quando compilato dal CI.
Download: Ares v141 [MacOS Universal 10.13+] [MacOS Universal 10.9+]
Download: Ares v141 [Windows] [Windows ARM64]
Download: Source code Ares v141
Fonte: ares-emulator.github.io