One of the best SNES emulators, Snesx, got updated with emulation accuracy and performance improvements


There are currently three major emulators for Nintendo’s classic 16-bit console, the Super Nintendo Entertainment System – also known as SNES – and these are: Snesx, ZSNES and BSNES/Higan. And the team behind Snesx has released a brand new version of it, bringing emulation accuracy and performance improvements.

According to the release notes, Snesx 1.56 increases the speed of SA1 emulation to match hardware more closely, attaches APU instruction tracer and made some additions to debugging output, fixes line doubling in interlaced mode, updates xBRZ to version 1.6, fixes the interlace fields being swapped after skipping frames, adds a SuperFX clock modifier variable, advances the VRAM pointer even if VRAM writes at the time are invalid and updates HDMA to not update indirect addresses until after transfers are completed.

This new version of Snesx also comes with some specific game fixes. Snes 1.56 does no spuriously update register 14 when running SuperFX (which fixes some glitches in Doom), writes CPU MDR during some DMA and HDMA transfers (which fixes Speedy Gonzales and Funaki Masakatsu Hybrid Wrestler), resets a pending NMI on vblank end (which fixes Super Punch-Out), redoes NMI timing (which fixes the PAL version of Secret of Evermore) and tests for transparency before dithering on SuperFX (which fixes some graphical artifacts in Star Fox).

Those interested can download Snesx 1.56 from here, and below you can find its complete changelog.

Snes 1.56 Release Notes

  • Increased the speed of SA1 emulation to match hardware more closely.
  • Fixed negative SA1 division
  • Changed the location where we poll input to potentially reduce lag.
  • Fixed the interlace fields being swapped after skipping frames.
  • More updates for BS-X support.
  • Updated xBRZ to version 1.6.
  • Added a DMA timing hack for rpgone’s Koryu no Mimi translation.
  • Updated HDMA to not update indirect addresses until after transfers are completed.
  • Improved cheats support. This stores cheats in a human-readable and editable format as gamename.cht. Cheats are converted from the old format on load. They can be added in many different formats, but they will convert to the simple address=condition?byte format.
    Also, now included is mightymo’s cheat database, and the ability to match a game and automatically load cheats from it.
  • Don’t reset a pending NMI on vblank end. Fixes Super Punch-Out.
  • Redo NMI timing. Fixes Secret of Evermore (PAL).
  • Test for transparency before dithering on SuperFX. This fixes some graphical artifacts in Star Fox.
  • Change some of the SDD1 guesswork mapping. Fixes a Tales of Phantasia hack.
  • Return PPU1 MDR for reads of $2137 instead of CPU MDR. Fixes Mario’s Time Machine graphical glitch.
  • Memset less memory for sprite calculations.
  • Don’t spuriously update register 14 when running SuperFX. Fixes graphical glitches in Doom.
  • Added a SuperFX clock modifier variable.
  • Write CPU MDR during some DMA and HDMA transfers. Fixes Speedy Gonzales and Funaki Masakatsu Hybrid Wrestler.
  • Calculate next IRQ time in advance instead of continously checking for it.
  • Added some IRQ timing quirks. Fixes at least Marko’s Magic Football.
  • Fixed wrong tile selection in offset-per-tile mode.
  • Advance the VRAM pointer even if VRAM writes at the time are invalid.
  • Return 0x80 instead of 0xff in DSP1 simulation. Fixes Powerfest ’94 Mario Kart.
  • Initialize controllers on reset. Fixes Looney Tunes B-Ball multitap.
  • Attached APU instruction tracer and made some additions to debugging output.
  • Fix line doubling in interlaced mode.
  • Added support for M.A.C.S. rifle peripheral.
  • Fixed a bug where the MSU1 channels were reversed.
  • Win32: Added dynamic rate control support for XAudio2
  • Win32: Added different volume level configuration for regular and turbo speed.
  • Win32: Added option to disable EPX scaling for messages
  • Win32: Improve multi-rom loading.
  • Win32: Add libpng and zlib dependencies as submodules for easier compiling from source.
  • Win32: Fixed icon registration.
  • Win32: Better support for running while unfocused.
  • Win32: Changed icon.
  • Win32: Report hidpi support.
  • Win32: Added mute hotkey and hotkeys for saving/loading from file.
  • Win32: Disabled hotplugging in favor of a menu option to reconfigure joysticks.
  • Win32: Added a reduce input lag option.
  • Win32: Added ability to use GLSLP shaders with OpenGL, including a dialog to tweak custom parameters.
  • GTK+: Added dynamic rate control support for audio to reduce buffer overflows and underflows.
  • GTK+: Increased SDL requirement to version 2.0. This improves joystick compatibility.
  • GTK+: Improved GTK+ 3.0 support and made it the default.
  • GTK+: Added ability to start from a snapshot on the command line.
  • GTK+: Added automatic input rate handling.
  • GTK+: Use 16-bit 5-6-5 pixel format for better colors.
  • GTK+: Now disables the compositor in fullscreen mode.
  • GTK+: Changed icon.
  • GTK+: Require libepoxy for OpenGL support.
  • GTK+: Add full compatibility with GLSLP shaders, with a parameters dialog to configure them.
  • Unix: Add xinerama support and window position hints.