ares v136 released
2024-02-23 15:30:00

ares v136 has now been released.

Since v135, a total of 5 contributors have created 31 commits to the ares codebase.

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.

Border/Overscan overhaul

When ares was initially designed, it was geared primarily towards SNES emulation, and as such the "Overscan" option in video settings behaved like the overscan feature of the SNES: showing or hiding the lower 16 lines of display. This behavior is not how most end users expect overscan to function.

For ares v136, we have overhauled how borders and overscan is handled across all cores in ares.

The overscan option has been reworked to show or hide all non-desirable edges of the screen (in most cases this is blank borders, but it can include areas that commonly just contain garbage pixels).

Additionally, we have updated most of the emulator cores in ares to have hardware accurate border and aspect ratio when overscan is visible: this also includes PAL, so PAL games are finally rendered at the correct aspect ratio to real hardware when 'aspect ratio correction' is enabled.

NOTE: The border regions for All TMS9918 VDP based consoles are thought to be be correct, as are Master System, Mega Drive, and NES, while SNES and PC-Engine are (educated) estimates. Hiding the overscan area is not yet implemented for Atari 2600, PC-Engine, Nintendo 64 or PlayStation as more hardware verification is required.

Cheat Support

A popular request: ares finally has support for cheat codes, as well as a cheat editor. You can access the cheat editor by going to Tools -> Cheats while a game is loaded.

Cheats are currently implemented for all cores, except for Nintendo 64 and PlayStation: support for these requires larger changes to ares that did not make the cut for this release.

The cheat code format is a simple patch code format XXXXXXXX:YY where X is an address, and Y is the data to write; most emulators support this format so it shouldn't be difficult to port cheats between them.

It is possible to chain multiple codes into a single cheat entry by separating the codes with a + symbol; this is useful if a single cheat requires multiple code to work.

Cheats are saved in a cheat database file alongside the rom: for example, Game.sfc will create a cheat file titled Game.cheats.bml.

Nintendo - Game Boy Advance

  • Implement prefetch buffer reset on ROM accesses from the CPU.
  • Implement that timer 0 count-up bit cannot be set.

Nintendo - Super Famicom / SNES

  • Fix an issue where the Super Gameboy 2 was running at the incorrect clock frequency.

Nintendo - Nintendo 64

  • Implement newly discovered PI DMA behavior when crossing RDRAM row boundaries.
  • Fix a corner face in FPU exception handling

Sega - Mega Drive/Genesis, Mega CD, 32x

  • Add the Mega CD's PC RAM to the debugger memory viewer.
  • Implement subchannel processing for Mega CD (Allows the playback of CD+G/karaoke discs provided a valid .sub file is provided)

Sony - PlayStation

  • Improvements to the handling of the GPUSTAT register.

Other

  • Switched back to wglSwapInterval for VSync on OpenGL for Windows; the DwmFlush approach caused worse tearing for most users.
  • Fixed an issue where the SDL input driver considered all controllers to be the same device.
  • Fixed an issue where rumble events could be missed causing rumble issues in many games.
  • Improved VSync stability with the DirectX video driver.