Pubblicato un rapido aggiornamento hotfix per ares, l’emulatore multisistema discendente di higan e bsnes si concentra principalmente sull’accuratezza e la conservazione.
Questo nuovo aggiornamento si rivolge principalmente agli utenti macOS e Linux per correggere gli arresti anomali per Nintendo 64, PS1 e 32X sui Mac Intel che eseguono versioni di macOS più recenti di Catalina.
Su Linux, mancavano invece alcune opzioni del driver Audio/Video/Input, a causa della risoluzione delle dipendenze interrotta. Gli utenti macOS su piattaforme Apple Silicon/ARM64 e gli utenti Windows possono saltare in sicurezza questo aggiornamento se lo desiderano.
L’emulatore ares attualmente emula ben 27 dispositivi hardware:
- Famicom + Famicom Disk System.
- Super Famicom + Super Game Boy.
- Nintendo 64 (in fase di sviluppo).
- Game Boy + Game Boy Color.
- Game Boy Advance + Game Boy Player.
- SG-1000 + SC-3000.
- Master System + Game Gear.
- Mega Drive + Mega CD.
- PC Engine + PC Engine CD + SuperGrafx.
- MSX + MSX2.
- ColecoVision.
- Neo Geo Pocket + Neo Geo Pocket Color.
- WonderSwan + WonderSwan Color + SwanCrystal + Pocket Challenge V2.
Pixel Accuracy Mode
Allo stato attuale ares contiene due implementazioni di alcuni degli hardware emulati; uno ottimizzato per le prestazioni e un altro ottimizzato per la precisione.
Higan ha sempre utilizzato i profili “accurate”, con ares che ha sempre optato per i profili “performance”; qualsiasi utente che desideri modificare questo sarebbe tenuto a compilare ares dal codice sorgente.
Ora è presente anche una nuova opzione nelle impostazioni dell’emulatore conosciuto come “Pixel Accuracy” che se abilitato andrà ad utilizzare tale modalità all’interno dei core supportati.
Per il 99% dei giochi, i profili veloci predefiniti saranno più che sufficienti, ma abilitare “Pixel Accuracy” consente ai giochi che richiedono effetti di scansione media, come il famigerato “Air Strike Patrol” di funzionare correttamente.
I seguenti sistemi supportano attualmente l’impostazione Pixel Accuracy:
- NEC – PC-Engine / TurboGrafx.
- Nintendo – Super Famicom / SNES.
Changelog v130.1
Questa è una versione hotfix di emergenza per utenti macOS e Linux che corregge i seguenti problemi:
- L’emulazione N64, PS1 e 32X si arresta in modo anomalo sui Mac Intel che eseguono versioni di macOS più recenti di Catalina. Sfortunatamente questo è scivolato attraverso la rete perché era funzionale su Catalina, che ho, e l’ultimo macOS su M1, che ha Rasky.
- Per gli utenti Linux, mancavano alcune opzioni del driver Audio/Video/Input, a causa della risoluzione delle dipendenze interrotta.
Inoltre, una piccola correzione dell’emulazione è stata unita: la schermata del copyright su Perfect Dark ora viene visualizzata utilizzando MAME RDP (questo non è stato ancora risolto quando si utilizza Parallel-RDP, poiché stiamo ancora lavorando per risolverlo a monte).
Sistema di costruzione
- Corretto il problema con il rilevamento di pacchetti danneggiati dopo il passaggio a pkg-config [LukeUsher].
Nall (libreria standard)
- Corretto il recompiler/JIT su piattaforme Intel macOS più recenti di Catalina [LukeUsher].
Nintendo 64
- Gestire il wrapping delle coordinate vstart/vend RDP quando si utilizza MAME RDP [Rasky].
Changelog v130
Interfaccia utente
- Semplificata la base di codice rimuovendo la possibilità di disabilitare i core di emulazione o separarli dalla GUI [Luke Usher].
- Registrati i messaggi di stato sulla console oltre alla barra di stato [Rasky].
- Ordinati i sistemi nell’elenco dei sistemi in ordine alfabetico per fornitore [Luke Usher].
- Opzioni della riga di comando del documento tramite il parametro
--help
[Raphnet]. - Rinominato “Vulkan” in “Accelerazione GPU” [Rasky].
- Consentito l’utilizzo dei tasti di scelta rapida anche quando la finestra non è focalizzata, a condizione che “consenti input quando si perde la messa a fuoco” è abilitato [Luke Usher].
- Aggiunti diritti per consentire JIT durante l’esecuzione come applicazione firmata su macOS [Rasky].
- Bundle libMoldenVK su macOS [Rasky].
- Corretto il problema con il rilevamento automatico dei giochi Famicom Disk System durante il trascinamento/rilascio [remutro].
- Impedisce il polling dell’input dell’host a intervalli troppo alti, riduce il ritardo quando i giochi interrogano rapidamente i registri degli input [Luke Usher].
Sistema di costruzione
- Rileva versioni gcc incompatibili e obsolete [Rasky].
- Abilitata l’ottimizzazione del tempo di collegamento per impostazione predefinita, aumentando le prestazioni per la maggior parte degli utenti [Luke Usher].
- Crea come applicazione universale su macOS, consentendo allo stesso binario di essere eseguito in modo nativo su Intel e Apple Silicon [Rasky].
- Rileva quando gcc è in realtà un alias per clang [Invertego].
- Corretti gli avvisi del compilatore con le versioni più recenti di clang [Invertego].
- Usa pkg-config per rilevare le dipendenze di Ruby [Tobias Jakobi].
- Passa esclusivamente al clang per le versioni di Windows e le build notturne [Luke Usher].
- Consenti la compilazione incrociata su macOS [Rasky].
- Aggiunto il supporto per la compilazione utilizzando
ccache
[Luke Usher].
Nall (libreria standard / runtime)
- Migliorato
make_string
per passare per riferimento [Invertego] - Corretti i problemi di memoria negli operatori di assegnazione per tutti i tipi [Invertego].
- Correzione new//delete per la mancata corrispondenza nell’hashset [Invertego].
- Realizzata l’implementazione Posix di
thread::join idempotent
[Invertego].
Ruby (livello driver video/audio/input)
- Rimosso il backend di rendering DirectDraw, questo è stato deprecato da DirectX 7 [Luke Usher].
- Corretto l’intervallo di scambio sui sistemi che richiedono l’uso di
glXSwapIntervalEXT
[Luke Usher]. - Soluzione agli eventi con doppio mouse con xlib [Raphnet].
Atari 2600
- Corretto un problema di arresto anomalo del buffer overflow [Invertego].
- Aumentato il fattore di scala per la coerenza delle dimensioni dello schermo con altri core [Luke Usher].
Sega Master System / Game Gear
- Aggiunto il supporto per i controller Sega Mega Drive (Mega Mouse, Sports Pad, 3 pulsanti/6 pulsanti) [Raphnet].
- Aggiunto il supporto per il controller Sports Pad [Raphnet].
- Aggiunto il supporto per il controller Paddle [Raphnet].
- Esporre i segnali di uscita alla porta del controller [Raphnet].
- Impedisci che Game Gear funzioni in modalità 50 Hz poiché un Game Gear a 50 Hz non è mai stato prodotto [Luke Usher].
- Aggiunto il supporto per l’esecuzione del BIOS del Game Gear (opzionale) [Luke Usher].
- Correzione delle scritture sulla porta del controller 2 [Raphnet].
- Corretto il problema con l’operazione di port $ 3e e $ 3f su Game Gear [Luke Usher].
- Implementato il supporto per i modelli di Game Gear NTSC-U e NTSC-J [Luke Usher].
- Inizializza ram a zero (corregge i titoli che si rompono quando un BIOS non viene caricato) [Luke Usher].
- Correzione del calcolo errato del contatore [Luke Usher].
- Vari miglioramenti minori dell’emulazione VDP [Luke Usher].
- Corretto un crash durante l’esecuzione del Game Gear in modalità Master System [Luke Usher].
- Corretti altri due giochi Game Gear che richiedono la modalità Master System: Taito Chase HQ (Giappone) e Chase HQ (USA) [Luke Usher].
Sega Mega Drive
- Aggiunto supporto eeprom per Wonder Boy V (J) [TascoDLX].
- Corretto il problema con il supporto SRAM per Psy-O-Blade [FitzRoyX].
- Aggiunto il supporto per il Mega Mouse [Raphnet].
- Correzione delle proporzioni errate (32:35) [Luke Usher].
- Semplifica l’emulazione della cartuccia combinando mappatori standard e banked [TascoDLX].
- Latch Z80 bus-richiesta al reset [Invertego].
- Conserva registro bank Z80 al ripristino [Invertego].
- Implementati mappatori personalizzati per Triple Play 96 e Triple Play Gold [TascoDLX].
Sega 32X
- Implementato il supporto per il mapper SEGA/SSF2 standard [Ralakimus].
- Corretto il problema con il supporto eeprom [Invertego].
- Assicura che i bit inutilizzati del registro di controllo dell’adattatore siano impostati su zzero [TascoDLX].
- Esponi la SRAM della cartuccia attraverso l’intervallo 0x900000 [Invertego].
- Migliorata la sincronizzazione tra i processori SH-2 principali/secondari [Invertego].
- Unifica i tempi di sincronizzazione tra interprete e il ricompilatore [Invertego].
- Assicura che i bit superiori del registro di controllo degli interrupt restituiscano zero [Luke Usher].
- Corretto un problema per cui i giochi rendevano spazzatura le aree di confine superiore/inferiore [Luke Usher].
- Corretto un problema che impediva ai giochi Sega CD32X di rilevare il componente aggiuntivo 32X [Invertego].
- Implementato il corretto comportamento di ripristino 32x [Luke Usher].
Nintendo NES/Famicom
- Implementato il supporto (parziale) per le rom in formato iNES 2.0 [Luke Usher].
- Corretto un problema per cui GTROM aveva 8k CHR-RAM invece dei 16k corretti [Luke Usher].
Nintendo SNES / Super Famicom
- Corretto un problema con la selezione delle performance-ppu [Intertego].
- Corretto un errore di battitura che causava la rottura del livello di sfondo 4 in modalità Pixel Accuracy [FitzRoyX].
- Corretto il problema con il rilevamento automatico dei giochi MSU-1 [Luke Usher].
Nintendo Game Boy / Game Boy Color
- Consenti al Game Boy Color di funzionare in modalità DMG [Luke Usher].
- Disabilitata la visualizzazione dell’attrezzo quando è fermo [Luke Usher].
- Impedisci l’incremento del contatore DIV quando è fermo [Luke Usher].
- Corretto un problema minore in
KEY0
[Luke Usher]. - Corretto il valore iniziale DIV [Luke Usher].
- Varie correzioni al mappatore MBC2 [Luke Usher].
- Implementato
bgEnable
con differenze tra DMG e CGB [Luke Usher]
Nintendo Game Boy Advance
- Corretti i giochi utilizzando il salvataggio EEPROM [Luke Usher].
Nintendo 64
- Implementata l’emulazione Nintendo 64DD [Luigiblood].
- Usa MoltenVK per supportare Parallel-RDP su macOS tramite Metal [Rasky].
- Usa sse2neon per abilitare la vettorizzazione su Apple Silicon, aumentando le prestazioni [Rasky].
- Usa XXH3 invece di crc32 per la cache del ricompilatore RSP, migliorando le prestazioni [Luke Usher].
- Implementate le eccezioni di overflow in TRUNC [Rasky].
- Aggiunta l’impostazione per disabilitare la post-elaborazione/sfocatura del VI [Parashoe].
- Aggiunte variabili mancanti alla serializzazione RDP [sp1187].
- Implementato il supporto per arresti anomali RDP [Rasky].
- Migliorato il supporto per le eccezioni FPU [Rasky].
- Migliorate le eccezioni di istruzioni non valide COP1/COP2 [Rasky].
- Dividi la cache del ricompilatore RSP in blocchi da 256 byte, migliorando le prestazioni [Luke Usher].
- Riscritto il ridimensionamento della risoluzione VI [Rasky].
- Usa un tipo di dati nativo (u16) per RSP Program Counter, migliorando le prestazioni [Luke Usher].
- Corretto il problema con AI DMA abilita la gestione dei bit [Rasky].
- Correzione dell’IRQ AI [Rasky].
- Corretto un problema per cui il ricompilatore invalidava gli intervalli errati [Luke Usher].
- Corretti gli overflow del buffer in MAME RDP [Rasky].
- Corretto il problema con il ridimensionamento della zona morta di Control Stick [kev4cards].
- Corretta l’instabilità numerica nella logica di lettura del gamepad [Invertego].
- Correzione del supporto per risoluzioni interlacciate [Rasky].
- Lascia la RAM PIF così com’è quando non sono stati ricevuti dati [Raphnet].
- Corretto il problema quando “Niente” è selezionato come tipo di controller [Raphnet].
- Implementata l’invalidazione precisa del blocco RDP [Invertego].
- Emulazione AI di refactoring per restituire sempre campioni audio [Rasky].
- Corretto un bug nell’aggiornamento di DP_START durante un trasferimento DMA RDP [Rasky].
Microsoft MSX
- Implementato il controller paddle Arkanoid Vaus [Raphnet].
- Implementata la seconda porta del controller [Raphnet].
- Corretto il rilevamento del mapper ROM ASC16 specifico per R-Type rispetto a quello generico [Luke Usher].
- Aggiunta voce al database per Batman (Giappone) [Luke Usher].
SNK Neo Geo
- Migliorate le prestazioni riducendo la sincronizzazione non necessaria [Luke Usher].
- Corretto un arresto anomalo causato dalla mancata cancellazione del thread dello schermo allo scarico [Invertego].
- Corretti i problemi di rendering del bordo esterno ritagliando l’overscan [Luke Usher].
- Corretto il problema con il pkayback dell’audio FM/SSG [Luke Usher].
- Corretto il problema con il supporto per i giochi con CROM non power-of-two [Luke Usher].
- Corretto il problema con il caricamento di rom che utilizzano rom di programma
.ep
invece di rom di programma.p
[Luke Usher]. - Correzione dell’offset dello sprite errato: sono relativi al bordo superiore anziché alla riga 0 [Luke Usher].
- Implementato il supporto preliminare per l’audio ADPCM-A [Luke Usher].
- Implementato il supporto preliminare per l’audio ADPCM-B [Luke Usher].
Sony PlayStation
- Aumentata la precisione dell’ingresso del volume durante l’amplificazione [Luke Usher].
- Aggiunto un semplice rilevamento del ciclo inattivo, un leggero aumento delle prestazioni [Luke Usher].
- Clamp f32->u8 conversioni colore [Invertego].
- Corretto un arresto anomalo durante il rendering utilizzando le coordinate vram fuori gamma [Luke Usher].
- Corretto il problema con l’input interrotto nella maggior parte (ma non in tutti) i giochi [Luke Usher].
- Implementato il comando del disco GetParam [remutro].
Miglioramenti ai componenti
Le modifiche a questi componenti non sono specifiche dei core/sistemi, ma hanno un impatto su tutti i sistemi che utilizzano il componente aggiornato.
CPU: MOS 6502
- Aggiunto il supporto per molte altre istruzioni non ufficiali/non documentate, tuttavia, ci mancano ancora alcune di quelle meno utilizzate [Luke Usher].
CPU: Motorola 68000
- Corretto il problema con il flag negativo divs/divu [Invertego].
- Correzione dell’ordine di lettura della memoria per A/SBCD e ADD/SUBX [Invertego].
CPU: Hitachi SH-2
- Correzione della comunicazione seriale [TascoDLX].
- Sincronizza su scritture non memorizzate nella cache [Invertego].
- Corretto il problema con l’output di debug di istruzioni illegali non funzionante [Luke Usher].
- Correzione dell’indirizzamento relativo al PC negli slot di ritardo del ramo [Invertego].
- Aggiunta l’emulazione preliminare del bus interno SH6704 [Invertego].
- Corretto un problema per cui l’indirizzo di ritorno errato veniva memorizzato in un frame di eccezione [Invertego].
CPU: Nec V30MZ
- Correzione del comportamento del cambio [Invertego].
CPU: Zilog Z80
- Corretti i tempi per
RET
,LD (IX+d)
,n
eLD (IY+d),n
[TascoDLX]. - Correzione dei tempi e del comportamento delle istruzioni estese/prefissate [TascoDLX].
- Correttii IM0 e semplificata l’implementazione dell’IRQ [Luke Usher].
- Corretti vari altri tempi di istruzione [TascoDLX].
- Correzione della logica di ripristino [TascoDLX].
Audio: YM2612
- Corretto il problema con l’effetto vibrato pm [TascoDLX].
- Correzione della logica di aggiornamento della busta [TascoDLX].
- Corretto il volume floor [TascoDLX].
- Vari altri miglioramenti e correzioni [TascoDLX].
Audio: AY38910
- Conserva una copia degli ultimi dati scritti sulle porte IO [Raphnet].
Audio: SN76489
- Corretto il problema con la scrittura di dati aggiuntivi sul canale del rumore [Luke Usher].
Download: Ares v130.1 [MacOS]
Download: Ares v130.1 [Windows]
Download: Source code Ares v130.1
Fonte: ares-emulator.github.io