Disponibile un nuovo aggiornamento per ares, l’emulatore multisistema discendente di higan e bsnes si concentra principalmente sull’accuratezza e la conservazione.
Questa nuova versione apporta una serie di modifiche importanti, come l’aggiunta dell’emulazione Nintendo 64DD e il supporto per Parallel-RDP su macOS.
I binari universali sono disponibili anche per gli utenti macOS, quindi gli utenti di Apple Silicon non devono più eseguire la compilazione automatica per ottenere prestazioni ottimali. Molti dei core presenti nell’emulatore hanno inoltre avuto miglioramenti significativi.
Il programma 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
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 [MacOS]
Download: Ares v130 [Windows]
Download: Source code Ares v130
Fonte: ares-emulator.github.io