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.
Other
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.
Changelog:
desktop-ui
- 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]
gb
- tweak display timing; fixes dmg-acid2 and cgb-acid2 [LukeUsher]
gba
- slightly reduce red tint, to bring the display closer to my GBA SP [LukeUsher]
md
- 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]
msx
- 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]
n64
- 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]
pce
- initialise bram for cd-rom system [LukeUsher]
sfc
- 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]
m68000
- adjust interrupt/exception timing [TascoDLX]
- fixed group 2 exception prefetch (CHK, DIV by zero) [TascoDLX]
- omit illegal addressing modes for CMPA & TST [TascoDLX]
tms9918
- implement text mode [LukeUsher]
hiro
- fix menubar visibility with gtk3 [AmatCoder]
nall
- 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]
mia
- support for loading CHD compressed CD-ROM images [LukeUsher]
- update out of date resources [invertego]
- update sfc board database & heuristics [LukeUsher]
ruby
- pulseaudio shouldn't block for events [AmatCoder]
other
- 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]