ares v141 released
2024-11-04 11:30:00

ares v141 has now been released.

Since v140, 13 contributors have created 52 commits to the ares codebase.

As always, if you wish to see the full changelog in a per-commit format along with their authors, you can do so on GitHub here.

Systems

Nintendo - SNES / Super Famicom

  • Fix detection of the Sufami Turbo base cartridge (Avoiding serial conflict with Sailor Moon SuperS - Fuwafuwa Panic).
  • Fix PowerFest '94 and Campus Challenge '92.
  • Add support for games with 256KB of SRAM (Notably used in rom hacks, but these hacks also work on real hardware).
  • Add support for the NTT Data Keypad
  • Fix SA-1 DMA to BWRAM banks 0x41 and above.

Nintendo - Game Boy Advance

  • Improve stop mode emulation, ensuring it only exits once the requested input is registered.
  • Improve interrupt timings (latch IE and IF for 1 cycle).
  • Add latches to DISPCNT background enable, object enable and force blank; these now correctly take effect after 3 scanlines.
  • Improve SIO register handling.
  • Fix an off-by-one error with BG mosaic handling.
  • Fix an oversight in OBJ mosaic at x=0. Improve OBJ timing: OBJs are now correctly rendered one scanline in advance, and OBJ PRAM access timings are closer to hardware.
  • Add a 2-cycle synchronizer and improve halted CPU timings
  • Selectively synchronize CPU and APU, allowing for the removal of the compile time 'PERFORMANCE' profile. (Greater accuracy in Release builds with no performance downsides).
  • Small improvements to PPU timing.
  • Added support for the Pixel Accuracy toggle; significant performance increase when pixel accuracy is disabled.

Nintendo - Nintendo 64

  • Remove the 'devertualizeFast' performance optimisation from code block lookups: this was proven to compromise correctness/accuracy.
  • Refactor devirtualize to return additional context for memory access, reducing code duplication in-memory operations.
  • Use JIT only when running code from i-cache.
  • Add support for 40 Winks (Aftermarket).
  • Add support for Xeno Crisis (World) (Aftermarket)
  • Allow for Pak swapping on Controller Port 1 (You can now change between Controller Pak/Transfer Pak/Rumble Pack at runtime).
  • Fix instruction trace debugging when using the recompiler.
  • Add support for multi-byte writes to the GDB debugger.
  • Use different GDB signals for the various exception types.
  • Allow arbitrary and possibly unaligned writes to RDRAM through GDB.
  • Add unusual warning when software uses CACHE on uncached addresses
  • Refactor JIT to remove an extra function call (instructionEpilogue) per instruction.

Sega - Mega Drive / Genesis / 32X / CD

  • Synchronize components more regularly when emulating 32X; this fixes a regression that caused 'Knuckles Chaotix' to be broken in ares v140.
  • Add an option to enable the TMSS "Produced by or under license from..." screen.

Other

  • Stage resources into the output directory on Linux; allowing running self-compiled builds without running 'make install' first.
  • Address some possible uses of uninitialized variables.
  • Enable the use of loading higan-style rom folders when using the command line
  • Update librashader integration for librashader ABI 2

MacOS fixes

  • Display errors from the shader loader in metal, easing debugging of librashader.
  • Add bounds checking for table view context menus; fixes a crash when right-clicking beyond the bounds of defined rows in a table.
  • Fix an issue where librashader did not function on macOS versions lower than 12 (Monterey) when compiled by CI