ares v128 released
2022-05-17 19:00:00

Ares v128 has now been released, notable changes include:

Improved Nintendo 64 Emulation

Rasky has been working hard on improving the n64 emulation; making sure we pass as many test cases in the new n64-systemtest rom as possible; after much hard work, we now pass almost every test; more than any other currently existing Nintendo 64 emulator.

Test Results for n64-systemtest as of 08/05/2022

Finished in 0.76s. Tests: 563. Failed: 3. Success rate: 99%. Skipped 5 tests.

Although compatibility isn't as high as some other emulators, most games do work and I believe it's safe to say that ares is the most accurate Nintendo 64 emulator at the time of publication; based on these test results as well as gameplay.

Improved MSX Emulation

With support for the MSX keyboard (finally!), and many more rom mappers, we have a dramatic increase in compatibility with MSX1 software. Support for Text Mode was also implemented, meaning text-based games (and MSX-Basic) are now able to be enjoyed. Note that we now require an MSX1 bios to be provided; previously we utilised C-BIOS, but due to technical limitations, this was unable to run much of the game library, so we feel like it is best to require a proper bios.

Note that MSX2 support is still barebones; and will still use C-BIOS for the time being; the current MSX2 emulation is so preliminary that the 'real' bios images do not even boot.

Portable Mode

A much requested feature: on Windows, ares is now 'portable' by default; storing it's settings and metadata in the application directory, rather than AppData. An existing installation can be converted to a portable one by copying the settings.bml and support folders from AppData\ares.

CHD Support

Another much requested feature: The few CD-ROM based systems that ares supports are now able to load CHD compressed disc images. There is currently a limitation where CHDs created from .bin/cue work, but CHDs created from .iso files do not; this will be addressed in future but is considered low-priority as ares was never able to load .iso files.


There have been many other changes/improvements, to the desktop-ui and also to the GameBoy, MegaDrive, SNES and PC-Engine cores. See the changelog for further details.



  • add hotkey to toggle fast forward [LukeUsher]
  • add support for using Supergrafx and CD together [LukeUsher]
  • default filter/shader to "None" rather than "Blur" [LukeUsher]
  • ensure ares is 'portable' on Windows [LukeUsher]
  • fix an issue where System directories were created incorrectly [LukeUsher]
  • remap all inputs based on physical controller layouts [LukeUsher]
  • implement keyboard capture for msx [LukeUsher]


  • tweak display timing; fixes dmg-acid2 and cgb-acid2 [LukeUsher]


  • slightly reduce red tint, to bring the display closer to my GBA SP [LukeUsher]


  • add missing initialization during power-on [invertego]
  • readjust cpu sync after recent changes (Kolibri fix) [TascoDLX]
  • reimplement refresh timings [TascoDLX]
  • vdp dma transfer is delayed after bus is acquired [TascoDLX]
  • vdp timing tweaks for accuracy [TascoDLX]
  • vdp vscroll bug implemented [TascoDLX]


  • connect/fix up keyboard emulation [LukeUsher]
  • fix a number of memory layout issues [LukeUsher]
  • fix linear cartridge rom mapping [LukeUsher]
  • improve rom type detection and add more board types [LukeUsher]
  • require a proper bios rom for msx1 [LukeUsher]


  • activate address errors by default [rasky]
  • add address error for invalid 64bit address in 32bit mode [rasky]
  • add missing file for mame RDP SSE2 implementation [rasky]
  • add separate CIC 7102 detection [bigbass1997]
  • add support for homebrew-specific special header flag [rasky]
  • fix (again) TLB logic in case of invalid TLBs [rasky]
  • fix 64-bit pc calculation in J opcode [rasky]
  • fix a few memory access opcodes that were using a 32-bit address [rasky]
  • fix behavior of conflicting bits in writes to SP_STATUS [rasky]
  • fix BGEZAL/BGEZALL opcodes when testing RA [rasky]
  • fix cache to use physical addresses [rasky]
  • fix controller input after PIF refactoring [rasky]
  • fix COP0 config initial status [rasky]
  • fix cop0 LL write mask [rasky]
  • fix CPU core to correctly handle 64-bit PC [rasky]
  • fix Dual accesses on MMIO regs [rasky]
  • fix exception kind in case of TLB invalid page and with nonmatching asid [rasky]
  • fix handling of invalid pagemasks [rasky]
  • fix JALR when jumping to RA [rasky]
  • fix LL / SC / LLD / SCD opcodes [rasky]
  • fix masking of COP0 context / xcontext [rasky]
  • fix RSP BGEZAL/BLTZAL when RA is being tested [rasky]
  • fix RSP DMA wraparound [rasky]
  • fix RSP DMEM/IMEM accesses with all access sizes [rasky]
  • fix RSP LTV opcode in its corner cases [rasky]
  • Fix RSP MTC2 and LFV opcodes [rasky]
  • fix RSP PC to stay within 12 bits in all cases [rasky]
  • fix SIGILL at startup when SSE4.2 is not supported [rasky]
  • fix TLB logic for non-global entries [rasky]
  • fix TLB random register when wired > 31 [rasky]
  • implement buggy byte/half reads from cartridge space [rasky]
  • implement exceptions in non-taken delay slots [rasky]
  • implement LWU opcode in RSP [rasky]
  • implement proper PI bus writes with IO busy bit [rasky]
  • implement undocumented broken RSP opcodes [rasky]
  • improve address exceptions with correct COP0 status [rasky]
  • improve emulation of vector load opcodes in side cases [rasky]
  • improve TLB register masking [rasky]
  • increase a little the PI DMA timing. [rasky]
  • internal mask of physicalAddress register in TLB entries [rasky]
  • make sure TLB entries are correctly initialized at power [rasky]
  • map domain 1 address 3 zone into main memory map [rasky]
  • refactor PIF chip into its own class [rasky]
  • implement correct behaviours of jumps within delay slots [rasky]
  • small accuracy tweak to the RSP semaphore register [rasky]
  • Change inner dead-zone size and geometry [kev4cards]


  • initialise bram for cd-rom system [LukeUsher]


  • Add database entry for the "Super FX voxel demo" to specify a RAM size of 64k instead of 32k [jbo-85]
  • Support ROM/RAM addressing for Super FX ROMs that are not a power of 2 [jbo-85]
  • fix a hang when loading Satallaview content [LukeUsher]
  • pad bsx flash to minimum size of a memory cart [LukeUsher]


  • adjust interrupt/exception timing [TascoDLX]
  • fixed group 2 exception prefetch (CHK, DIV by zero) [TascoDLX]
  • omit illegal addressing modes for CMPA & TST [TascoDLX]


  • implement text mode [LukeUsher]


  • fix menubar visibility with gtk3 [AmatCoder]


  • determine desktop path based on environment [LukeUsher]
  • handle CHD paths with non-ASCII chars on Windows [invertego]
  • optimize priority_queue remove function [rasky]
  • prevent chd memory leaks + don't allow unsupported track types [LukeUsher]
  • remove hardcoding of lto=true [LukeUsher]


  • support for loading CHD compressed CD-ROM images [LukeUsher]
  • update out of date resources [invertego]
  • update sfc board database & heuristics [LukeUsher]


  • pulseaudio shouldn't block for events [AmatCoder]


  • Add top-level Makefile [rasky]
  • fix building from Windows command prompt [invertego]
  • fix clean targets on Windows [invertego]
  • fix zlib include path [invertego]
  • codesign binary after build on macOS [rasky]