ares v130 released
2022-09-30 16:25:00
ares v130 has now been released.
The most notable changes to this build are the addition of Nintendo 64DD emulation and support for Parallel-RDP on macOS.
Universal Binaries are now available to macOS users, so Apple Silicon users no longer need to self-compile for best performance.
Many emulator cores have also had significant improvement, please see the changelog for full details.
User Interface
- Simplify the codebase by removing the ability to disable emulation cores or ungroup them from the gui [Luke Usher]
- Log status messages to console in addition to the status bar [Rasky]
- Sort systems in the system list alphabetically by vendor [Luke Usher]
- Document command line options via --help parameter [Raphnet]
- Rename "Vulkan" to "GPU acceleration" [Rasky]
- Allow hotkeys to be used even when the window is unfocused,provided "allow input when focus is lost" is enabled [Luke Usher]
- Added entitlements to allow JIT when running as a signed application on macOS [Rasky]
- Bundle libMoldenVK on macOS [Rasky]
- Fix auto-detection of Famicom Disk System games when dragging/dropping [remutro]
- Prevent polling host input at too-high intervals, reduces lag when games rapidly poll input registers [Luke Usher]
Build System
- Detect incompatibile, outdated gcc versions [Rasky]
- Enable link-time optimization by default, giving a performance boost for most users [Luke Usher]
- Build as a Universal Application on macOS, allowing the same binary to run native on Intel and Apple Silicon [Rasky]
- Detect when gcc is actually an alias for clang [Invertego]
- Fix compiler warnings with newer versions of clang [Invertego]
- Use pkg-config to detect dependencies of Ruby [Tobias Jakobi]
- Switch exclusively to clang for Windows releases and nightly builds [Luke Usher]
- Allow cross-compilation on macOS [Rasky]
- Add support for compiling using ccache [Luke Usher]
Nall (Standard Library / Runtime)
- Improve make_string to pass by reference [Invertego]
- Fix memory issues in assignment operators for nall types [Invertego]
- Fix new//delete mismatch in hashset [Invertego]
- Make the Posix implementation of thread::join idempotent [Invertego]
Ruby (Video / Audio / Input driver layer)
- Remove DirectDraw rendering backend, this has been deprecated since DirectX 7 [Luke Usher]
- Fix swap interval on systems that require the use of glXSwapIntervalEXT [Luke Usher]
- Workaround double-mouse events with xlib [Raphnet]
Atari 2600
- Fix a buffer-overflow crash condition [Invertego]
- Increase scale factor for screen size consistency with other cores [Luke Usher]
Sega Master System / Game Gear
- Add support for Sega Mega Drive controllers (Mega Mouse, Sports Pad, 3-button/6-button) [Raphnet]
- Add support for the Sports Pad controller [Raphnet]
- Add support for the Paddle controller [Raphnet]
- Expose output signals to controller port [Raphnet]
- Prevent Game Gear running in 50hz mode as a 50hz Game Gear was never manufactured [Luke Usher]
- Add support for running the Game Gear bios (Optional) [Luke Usher]
- Fix writes to controller port 2 [Raphnet]
- Fix port $3e and $3f operation on Game Gear [Luke Usher]
- Implement support for NTSC-U and NTSC-J Game Gear models [Luke Usher]
- Initialize ram to zero (fixes titles that break when a bios is not loaded) [Luke Usher]
- Fix incorrect hcounter calculation [Luke Usher]
- Various minor VDP emulation improvements [Luke Usher]
- Fix a crash when running the Game Gear in Master System Mode [Luke Usher]
- Fix two more Game Gear games that require Master System Mode: Taito Chase H.Q (Japan) and Chase H.Q (USA) [Luke Usher]
Sega Mega Drive
- Add eeprom support for Wonder Boy V (J) [TascoDLX]
- Fix SRAM support for Psy-O-Blade [FitzRoyX]
- Add support for the Mega Mouse [Raphnet]
- Fix incorrect aspect ratio (32:35) [Luke Usher]
- Simplify cartridge emulation by combining standard and banked mappers [TascoDLX]
- Latch Z80 bus-request on reset [Invertego]
- Preserve Z80 bank register on reset [Invertego]
- Implement custom mappers for Triple Play 96 & Triple Play Gold [TascoDLX]
Sega 32X
- Implement support for the standard SEGA/SSF2 mapper [Ralakimus]
- Fix eeprom support [Invertego]
- Ensure unused bits of the adapter control register are set to zzero [TascoDLX]
- Expose cartidge SRAM through the 0x900000 range [Invertego]
- Improve synchronization between the main/sub SH-2 processors [Invertego]
- Unify sync timing between interpreter and recompiler [Invertego]
- Ensure upper bits of the interrupt control register return zero [Luke Usher]
- Fix an issue where games would render garbage to the top/bottom border areas [Luke Usher]
- Fix an issue that prevented Sega CD32X games from detecting the 32X add-on [Invertego]
- Implement proper 32x reset behavior [Luke Usher]
Nintendo NES / Famicom
- Implement (partial) support for iNES 2.0 format roms [Luke Usher]
- Fix an issue where GTROM had 8k CHR-RAM instead of the correct 16k [Luke Usher]
Nintendo SNES / Super Famicom
- Fix an issue with performance-ppu selection [Intertego]
- Fix a typo that lead to broken background layer 4 in Pixel Accuracy mode [FitzRoyX]
- Fix auto-detection of MSU-1 games [Luke Usher]
Nintendo Game Boy / Game Boy Color
- Allow Game Boy Color to run in DMG mode [Luke Usher]
- Implement display disable while stopped [Luke Usher]
- Prevent incrementing DIV counter when stopped [Luke Usher]
- Fix a minor 'oops' in KEY0 [Luke Usher]
- Fix DIV initial value [Luke Usher]
- Various fixes to MBC2 mapper [Luke Usher]
- Implement bgEnable differences between DMG and CGB [Luke Usher]
Nintendo Game Boy Advance
- Fix games using EEPROM saving [Luke Usher]
Nintendo 64
- Implement Nintendo 64DD emulation [Luigiblood]
- Use MoltenVK to support Parallel-RDP on macOS via Metal [Rasky]
- Use sse2neon to enable vectorization on Apple Silicon, boosting performance [Rasky]
- Use XXH3 instead of crc32 for RSP recompiler cache, boosting performance [Luke Usher]
- Implement overflow exceptions in TRUNC [Rasky]
- Add setting to disable VI post-processing/blur [Parashoe]
- Add missing variables to RDP serialization [sp1187]
- Implement support for RDP crashes [Rasky]
- Improve support for FPU exceptions [Rasky]
- Improve COP1/COP2 invalid instruction exceptions [Rasky]
- Split the RSP recompiler cache into 256-byte chunks, improving performance [Luke Usher]
- Rewrite VI resolution scaling [Rasky]
- Use a native data type (u16) for RSP Program Counter, improving performance [Luke Usher]
- Fix AI DMA enable bit handling [Rasky]
- Fix AI IRQ [Rasky]
- Fix an issue where the recompiler would invalidate incorrect ranges [Luke Usher]
- Fix buffer overflows in MAME RDP [Rasky]
- Fix Control Stick dead zone scaling [kev4cards]
- Fix numerical instability in Gamepad reading logic [Invertego]
- Fix support for interlaced resolutions [Rasky]
- Leave PIF RAM as-is when no data was received [Raphnet]
- Fix when "Nothing" is selected as a controller type [Raphnet]
- Implement precise RDP block invalidation [Invertego]
- Refactor AI emulation to always return audio samples [Rasky]
- Fix a bug in update of DP_START during a RDP DMA transfer [Rasky]
Microsoft MSX
- Implement the Arkanoid Vaus paddle controller [Raphnet]
- Implement controller port 2 [Raphnet]
- Fix detection of the R-Type specific vs generic ASC16 ROM mapper [Luke Usher]
- Add database entry for Batman (Japan) [Luke Usher]
SNK Neo Geo
- Improve performance by reducing unnecessary synchronization [Luke Usher]
- Fix a crash caused by not clearing the screen thread on unload [Invertego]
- Fix outer-edge rendering issues by clipping overscan [Luke Usher]
- Fix FM/SSG audio pkayback [Luke Usher]
- Fix support for games with non-power-of-two sized CROMs [Luke Usher]
- Fix loading of roms that use .ep program roms instead of .p program roms [Luke Usher]
- Fix incorrect sprite offset: they are relative to top-border rather than line 0 [Luke Usher]
- Implement preliminary support for ADPCM-A audio [Luke Usher]
- Implement preliminary support for ADPCM-B audio [Luke Usher]
Sony PlayStation
- Increase precision fo volume input during amplification [Luke Usher]
- Add simple idle loop detection, slight performance boost [Luke Usher]
- Clamp f32->u8 colour conversions [Invertego]
- Fix a crash when rendering using out-of-range vram co-ordinates [Luke Usher]
- Fix broken input in most (but not all) games [Luke Usher]
- Implement disc command GetParam [remutro]
Component Improvements
Changes to these components are not specific to cores/systems, but rather they impact all systems that use the updated component.
CPU: MOS 6502
- Add support for many more unofficial/undocumented instructions, however, we are still missing some of the lesser used ones [Luke Usher]
CPU: Motorola 68000
- Fix divs/divu negative flag [Invertego]
- Fix memory read order for A/SBCD and ADD/SUBX [Invertego]
CPU: Hitatchi SH-2
- Fix serial communication [TascoDLX]
- Synchronize on uncached writes [Invertego]
- Fix broken Illegal Instruction debug output [Luke Usher]
- Fix PC-relative addressing in branch delay slots [Invertego]
- Add preliminary emulation of the SH6704 internal bus [Invertego]
- Fix an issue where the incorrect return address was stored in an exception frame [Invertego]
CPU: Nec V30MZ
- Fix shift behavior [Invertego]
CPU: Zilog Z80
- Fix timings for RET, LD (IX+d),n & LD (IY+d),n [TascoDLX]
- Fix extended/prefixed instruction timing and behavior [TascoDLX]
- Fix IM0 and simplify IRQ implementation [Luke Usher]
- Fix various other instruction timings [TascoDLX]
- Fix reset logic [TascoDLX]
Audio: YM2612
- Fix pm vibrato effect [TascoDLX]
- Fix envelope update logic [TascoDLX]
- Fix volume floor [TascoDLX]
- Various other improvements and fixes [TascoDLX]
Audio: AY38910
- Keep a copy of the last data written to IO ports [Raphnet]
Audio: SN76489
- Fix additional data writes to noise channel [Luke Usher]