ares v134 released
2023-11-22 11:25:00

ares v134 has now been released.

If you wish to see the full changelog in a per-commit format along with their authors, similarly to how previous release notes were written, you can do so on GitHub here.

Since v133, a total of 17 contributors have created 220 commits to the ares codebase.

New System: Arcade

We have added support for Sega SG-1000 based arcade hardware; hopefully the first of many arcade cores within ares (well, technically second because we had the Neo Geo, but that was focused on the console variant, the AES).

Due to the nature of arcade boards, Arcade cores use MAME format roms, and a game list rather than traditional rom files. You can set a path for arcade roms in "Settings -> Paths".

Arcade games will be grouped under one "Arcade" system, regardless of what system the Arcade hardware may be based on.

Please note that ares does not currently resolve parent-child relationships, so arcade rom zip files must contain every file required for that game; in MAME terminology, this is usually referred to as a "Non-Merged" set.

User Interface

A homebrew mode has been added to the settings panel; this is intended to enable features that are useful to homebrew devs but would harm performance for general gameplay. This setting is currently only used in the Nintendo 64 core; more information on this later.

  • Auto save settings when closing the settings dialog.
  • Add hot keys for volume control and mute
  • Refactor the log system to allow more control over log output
  • Restore the ability to hide cores from the menu
  • Add a "Scan" button to firmware settings; this autodetects supported firmware from a configured Firmware directory
  • Update the "Color Bleed" option to work for all non-HD cores, rather than just the SNES
  • Correct the description of Weave Deinterlacing (horizontal -> vertical)
  • Improve auto-detection of CD-ROM based games, drag/drop and command line loading are now more reliable

Debugging

  • Added support for debugging emulated systems via GDB, currently only the Nintendo 64 core supports this, but this will be expanded in future releases.

Atari - Atari 2600

  • Improve CPU timing in relation to WSYNC
  • Improve TIA timing, although still far from perfect
  • Implement latching of the current playfield pixel
  • Include "current cycle on this scanline" in CPU trace output to aid debugging
  • Improve RESMP behaviour and implement NUSIZ for missiles
  • Improve HMOVE object positioning
  • Fix RIOT timer and timer interrupt bit
  • Improve detection of PAL roms by looking for the (PAL) string as well as the (Europe) string in the rom filename
  • Support loading .bin format roms instead of just .a26

Bandai - WonderSwan / WonderSwan Color

  • Properly implement INT_BASE port
  • Implement sound DMA hold
  • Fix sound DMA readout values when disabled
  • Fix sound DMA source/length shadowing
  • Fix loading of trimmed roms
  • Fix ENTER/PREPARE opcode implementation and timing
  • Fix interrupt return address on division by zero
  • Improve ROM/SRAM bus timings

Microsoft - MSX / MSX2

  • Fix conflicts between ROM space and SCC with the KonamiSCC mapper
  • Allow loading of .rom format roms, rather than only .msx/.msx2

NEC - PC Engine

  • Add support for "color emulation" (non-linear RGB)

Nintendo - NES / Famicom

  • Lowered colour saturation to 1.5 to match most other emulators
  • Implement UNROM-512 mapper
  • Implement Action53 mapper
  • Implement mappers 31 and 218 (inl-nsf, magicfloor)
  • Fix MMC5 program mode 1
  • Fix support for NES2.0 extended PRG/CHR size variables
  • Implement self-flashing support to UNROM-512 and GTROM
  • Remove "GAMMA" adjustment when "Color Emulation" is enabled
  • Implement PPU open bus behaviour
  • Serialize controller state in save states: fixes input glitches when using run ahead
  • Support more variants of the Famicom Disk System Bios
  • Preliminary support for the EPSM expansion module

Nintendo - Game Boy

  • Fix MBC3 RTC Overflow/Register handling
  • Fix MBC3 RAMbank register width

Nintendo - SNES / Super Famicom

  • Fix support for the PAL Super GameBoy
  • Separate black level crush from color emulation, it's now exposed as "Deep Black Boost"
  • Fix PLB wrapping in emulation mode (based on hardware testing, all emulators seem to have gotten this wrong)

Nintendo - Nintendo 64 / 64DD

  • Implement RSP VU pipeline timings
  • Fix some incorrect game database entries (Beetle Adventure Racing (J), Chameleon Twist 2, J.League Live 64 Quake 64, Star Fox 64)
  • Implement RSP duel-issue restrictions for CFC2/CTC2
  • Fix RSP zero register locking
  • Clamp the analog stick range to an octagon shape
  • Implement RDP clock counter
  • Fix VI line interrupt to trigger post-increment
  • Fix an issue where instructions in icache would consume two cycles rather than one
  • Fix an off-by-one error in mul/div instruction timing
  • Preliminary implementation of FPU delays
  • Improve idle loop detection in the recompiler
  • Fix an issue where the recompiler would only advance the physical address and not the virtual address
  • Added support for the Nintendo 64 Transfer Pak
  • Fix a regression in the n64-systemtest relating to the TLB
  • Add support for "Homebrew Mode": this enables ISViewer debug output, and a cache coherency check to aid homebrew developers.
  • Add support for .D64 disk images
  • Add support for 64DD disk swapping
  • Implement the "Controller Config" portion of the Advanced Homebrew Rom Header
  • Clamp X/Y values from the N64 Mouse (prevents jittery input)
  • Fix broken RTC emulation for the 64DD
  • Fix broken RTC emulation for Doubutsu No Mori (Animal Forest)
  • Improve CIC detection algorithm to not rely on a database, allowing support for custom/homebrew IPL3

Sega - Master System / Game Gear

  • Added support for the Pak4 mapper
  • Added support for the Hicom mapper
  • Added support for the Hap2000 mapper
  • Added support for the K118in1 mapper
  • Rename MSX mapper to Zemina mapper to properly represent its origin/purpose
  • Add support for "color emulation": non-linear blue bias
  • Improve detection for Japanese roms (Games not containing "TMR SEGA" are only compatible with Japanese systems)
  • Force ".sms" extension roms to run in Master System Mode when loaded on the Game Gear core

Sega - Mega Drive / CD / 32X

  • Add support for runtime disc swapping, allowing multi-disc games to be played
  • Add support for the Mega Mouse when running Mega CD titles
  • Synchronize on every cycle when the 32X is not in use
  • Maintain 32X code cache allocation across resets
  • Fix audio overflow when titles restart the YM2612 (Fixes audio issues in Shining Force)
  • More performance tuning to the 32X core
  • Improve CDC emulation (ares now passes the CDC REGS test in mcd-verificator)
  • Fix a hang in "The Terminator (USA)"
  • Immediately update YM2612 key on/key-off on write, fixes Puyo Puyo Tsuu music
  • Update YM2612 key state on phase tick
  • Add 32X framebuffer mirror emulation, fixes SoulStar X
  • Tighten synchronisation between audio components
  • Improve bus-arbiter delays for z80->m68k communication (fixes audio in Overdrive 2)
  • Improve refresh and bus timings

SNK - Neo Geo

  • Use YMFM for YM2610 emulation, fixes audio issues in many titles

Sony - Playstation

  • Implement GTE interrupt bug (if an interrupt is triggered when a GTE instruction is next, the GTE instruction is erroneously executed), fixes spiky polygons in many titles.
  • Fix an issue where the CD-ROM SetLoc command was erroneously resetting the 'reading' flag
  • Fix an issue where the Digital Pad would not de-assert /ACK on an invalid command
  • Improve /ACK timing and behaviour, fixes broken input in many (but not all) games
  • Implement Dual Shock controllers, required for Ape Escape
  • Add support for runtime disc swapping, allowing multi-disc games to be played
  • Add support for half-speed XA-ACPDM, fixes high-pitched audio in many titles
  • Update ADSR envelopes immediately on write, fixes alert sounds in Metal Gear Solid
  • Implement muting of data tracks when played as CD-DA
  • Perform color modulation in RGB555 space, fixes Silent Hill's loading screen
  • Fix an issue where fast-load hooks would trigger at runtime, causing some games to crash at boot
  • Simulate an infinitely long cpu write fifo: fixes an issue where many games ran too slow.
  • Various timing tweaks to improve overall accuracy
  • Fix an issue where timers would update too slowly when using the recompiler

MOS 6502

  • Implement support for more undocumented opcodes

Other

  • Fix system-wide installations on Linux, this fixes database and shaders not loading.
  • Add support for SDL2 as an input driver on all platforms.
  • Allocate code cache at early startup for the recompiler: boosts performance on macOS, roughly doubling performance on M1 in some cases
  • Added support for SDL2 as an audio driver
  • Use DwmFlush on Windows for vsync, bypassing OpenGL driver bugs
  • Fix relative time in CD-ROM pregap Q subchannel
  • Move CD-ROM loading to a separate thread to speed up loading CD-ROM content
  • Avoid allocation of code buffers in the recompiler
  • More robust code cache allocation in the recompiler
  • Added "Games" category to macOS app bundle to allow Sonoma's Game Mode to function with ares
  • Added support for the risc-v architecture
  • Added preliminary emulation of the Intel 8080 cpu: not currently used but for future expansion
  • Fix an issue where the WASAPI driver would cause sync issues when fast-forwarding