Skip to content

Releases: snes9xgit/snes9x

Snes9x 1.62.3

30 Mar 16:59
Compare
Choose a tag to compare

This fixes the backward-compatibility with save states from before 1.62. It also fixes issues with the libretro core mishandling our new filesystem functions.

Snes9x 1.62.2

27 Mar 22:38
Compare
Choose a tag to compare

Version 1.62.1 had a bug that would erase games' SRAM if save states were loaded. We have better luck with these .2 releases.

Snes9x 1.62

23 Mar 20:51
Compare
Choose a tag to compare

Another release containing a bunch of small things. There are a few game fixes and some UI tweaks, as well as some reorganization in the backend. The biggest front-facing feature is a Vulkan output for the Windows and Gtk ports. Like OpenGL, Vulkan can use the slang shaders in the libretro repository.

Snes9x 1.62
- Fixed SA1 division with negative dividend again. (Atari2)
- Fixed timing on several instructions. (pi1541)
- MSU1 audio with no loop point will not repeat from start.
- Modernized some old memory-related code.
- Fixed a desynchronization in interlaced modes and reporting.
- Remove SA1 access to WRAM.
- Added second set of registers between S-DSP and S-SMP. Fixes
  PAL version of Virtual Bart.

Gtk + Windows:
- Added a Vulkan graphics output method. Similar to OpenGL, this
  can use libretro's slang shaders.
- Changed the automatic frame skip throttle to take place immediately
  before showing the frame, making VRR work better.
- Add menu item to clear recent files entries.
- Add fixed window size changes up to 10x.

Windows:
- Improved the shader parameters dialog with sliders and resize.
- Allow disabling adding registry entries. Deletes any existing
  entries when the option is disabled.

Gtk:
- Switched to CMake for build system. Removed meson.
- Fixed some keys not working with modifiers. (Gutawer)
- Removed graphics options most people won't understand or need.
- Improved wayland support. Handle fractional DPI properly.

Snes9x 1.61

05 Mar 00:45
7e97bb5
Compare
Choose a tag to compare

This is a small release for a bunch of little things that have accumulated. Big changes behind the hood are a change to the tile renderer so that it builds much quicker, and a swap of the Gtk port to C++ bindings, both of which should be unnoticeable. Michael Buckley also wrote a completely new macOS port, due to the complete deprecation of the classic APIs the old port used.

- Restructured tile.cpp tile renderer from heavy macros into C++
  templates, significantly lowering compile time. (yoffy)
- MichaelBuckley provided a brand new MacOS port that is completely
  rewritten based on newer, supported APIs.
- Fixed an out-of-bound memory access in sound DSP. (Sour, byuu)
- Revert default SFX2 clock speed increase.
- Added a render position hack. Fixes glitches in several games.
- Allow an SRAM mapping up to 128KB.

Win32:
- Apply turbo mode volume when rewinding.
- Added menu entry to load oops files, and an option to confirm before
  saving or loading states.
- Fixed sound volume resetting when sound reinitializes.
- Added a save-state preview dialog.
- Added save banks for up to 100 states
- Added support for relative-style save slots
- Fixed blargg rf filter.
- Show command line options on -h and /?

Gtk:
- Added an option to show time. (taimoorgit)
- Use a submodule for glslang, because it doesn't guarantee API stability.
- Switched to GTK's C++ interface, gtkmm3. This effectively drops
  GTK+ 2.0 support.
- Joysticks can now be hotplugged. (jraby)

Unix:
- Added audio output threading. (yoffy)
- Added screensaver prevention on joystick use. (greg-kennedy)
- Fix YUY2 conversion. (greg-kennedy)
- Add alsa output support. (cjacker)
- Add I420 conversion. (cjacker)

Snes9x 1.60

23 Apr 19:20
Compare
Choose a tag to compare

The biggest changes in this release are some reversions which fix a couple games, some accuracy improvements which fix a couple more games, and some optimizations that speed things up a bit.

The Windows port now has an extra "Hacks" settings dialog that allows enabling some settings to allow older ROM hacks to work. The GTK port's hack settings are still hidden behind the -Ddangerous-hacks=true compile flag. The libretro port has had the remaining hack added. Use with caution and don't submit bug reports associated with enabling these hacks.

- Fixed subscreen blending with master brightness < 100%.
- Fixed NMI timing when toggling enable bit. Fixes Chou Aniki--hack removed.
- Reverted an IPL map optimization that misses a weird edge case that caused
  The Great Battle III to lock up.
- Clamp MSU1 addition to max amplitude instead of wrapping. Proper MSU1 tracks
  will not be affected by this.
- Save mipmap_input parameter with customized GLSL and slang shaders.
- Actually use mipmap_input parameter.
- Optimized subscreen math with help from Dwedit.
- Revert to measured APU clock speed instead of nominal speed. Fixes An
  American Tail.
- Fixed broken BPS patch support. (ArtiiP)
- Fixed MSU1 track restarting on load state.

Win32:
- Changed window flags to allow NVIDIA cards to auto-enable exclusive
  fullscreen mode in OpenGL.
- Added a hidden option "DWMSync" that allows OpenGL to sync to the window
  manager while in windowed or borderless windowed mode.
- The automatic frame skip option no longer limits to 59.94Hz.
- Fixed bad icon scaling.
- Added a hacks dialog to enable settings for older hacks to run.

libretro:
- Added ability to use Satellaview data in same directory as ROM.
- Fixed deviation from proper libretro spec.
- Added option to use the software NTSC filter. (stellarporter)

GTK:
- Added icons to the entries to clear binding assignments.
- Fixed overlap in xBRZ multithreading.
- Changed glFenceSync option to an OML_sync option that works better.
- Fixed accumulation of partial pixel data on mouse motion when we update the
  mouse position more than once per frame.
- Allow one key to be bound to many controller buttons on the same controller.
- Force menu and button icons.
- Add the view menu to right-click when SNES mouse isn't used.
- Remove unused status bar option.
- Startup background can be changed in snes9x.conf.
- Improved PortAudio driver.

Unix:
- Fixed sound output that broke with APU refactor.

Snes9x 1.59.2

28 Feb 02:41
Compare
Choose a tag to compare

Hopefully this fixes everything. We've had good luck with the .2 releases in the past.

Snes9x 1.59

27 Feb 20:51
Compare
Choose a tag to compare

Warning: Please don't use. Use the 1.59.2 release

Many things changed in this release. The largest change is a refactoring of the sound handling, which means sound should work better than before and consume less CPU time.

Important Notes:

.slang shader support

We have added support for libretro .slangp presets and .slang shaders. These can currently only be used with OpenGL on the Windows and GTK versions. A large set of shaders can be downloaded from:
https://github.com/libretro/slang-shaders

Win32

  • The DirectSound driver has been glitch-prone for a while, so it has removed and replaced with a WaveOut driver. WaveOut is the most basic Windows method for outputting sound, and has used the same output path as DirectSound since Windows Vista. There are only small differences between the two, but the main one is that WaveOut doesn't loop by default, which means we can use a push API and have Dynamic Rate Control. XAudio2 is still available and recommended if your system supports it.

  • More git subprojects have been added, so without git it will be more difficult to compile. See how2compile.txt in the win32/docs directory for details.

GTK

  • The build system has been switched to Meson. Packagers will need to adapt, but most operating systems already have Meson available and being used in packages. The procedure to build is fairly simple:

    1. Change to the gtk port directory: cd gtk
    2. Run meson: meson builddir --prefix=/usr --buildtype=release
    3. Change to the build directory and run ninja: cd builddir; ninja
    4. Install if you wish: meson install or sudo meson install
      A full list of options is in meson_options.txt.
  • .slang support requires SPIRV-Cross, which is a git submodule of Snes9x. git can retrieve this with:
    git submodule update --init shaders/SPIRV-Cross
    If a source archive is used, .slang support will be disabled unless you download the submodule. This can be done by extracting an archive from https://github.com/KhronosGroup/SPIRV-Cross/release to that directory, or by creating a temporary git repository in the extracted Snes9x source by running git init and using the above command.

Changes:

- Count clock cycles to synchronize SA1 with S-CPU properly. Based mostly on
  work by Vitor Vilela.
- Only allow instant IRQ when toggling IRQ. Fixes WWF - Wrestlemania.
- Refactored APU output code to buffer less on the client side. Removed 8-bit,
  Mono, and Reverse Stereo options.
- Consistently handle interlacing when we skip frames.
- Changed APU clock to reflect nominal values for original hardware.
- Fix C4 square instruction regression.

Win32:
- Don't display Joypad 2 pressed keys if disabled.
- Add support for libretro ".slang" shaders to OpenGL driver.
- Removed glitch-prone DirectSound audio driver in favor of a generic Wave Out
  driver.
- Moved sound sync to drivers to be more reactive. This makes sound sync and
  dynamic resampling work more reliably.
- Cleaned up dialog boxes to be more consistently spaced.
- Fixed TVMode filter in Direct3D and OpenGL modes.
- Fixed an interaction slowdown with OpenGL and Blargg NTSC filters.

libretro:
- Fix multiline cheats.

GTK+:
- Switch from autotools to Meson build system.
- Readd glFinish option as alternative to glFenceSync.
- Fix size fallthrough with xBRZ filter.
- Fix loading of key bindings with spaces in them and modifier keys used alone.
- Add support for libretro ".slang" shaders to OpenGL driver.
- Use a cleaner onscreen font.
- Trap errors to allow OpenGL <= 2.1 to run again.
- Break display settings up to make it easier to access hardware accel section.

Snes9x 1.58

16 Dec 17:20
Compare
Choose a tag to compare

This is a small, but important, bugfix release. Movie support, which was broken in 1.56 has been fixed. The GTK+ port will be able to save config files again while using non-latin languages. Aside from that, there have been some cleanups and a bit of UI refinement. The only emulation change is an adjustment to a timing hack.

Changes:

Snes9x 1.58
- Move the LICENSE file to the base directory and use a stub
  in all the source files referring to it. 
- Adjust Chou Aniki timing hack.
- Use 1-based numbering when displaying pressed keys.
- Hide controller port if disabled when displaying keys.
- Fix movie playback.

 libretro:
- Fix interlaced modes when overscan crop is enabled.
- Allow overriding -flto. (orbea)

 GTK+:
- Use shared snes_ntsc implementation.
- Remove extra LGPL licensing to avoid confusion.
- Don't translate config file entries. Fixes breakage on
  non-C languages.
- Fix issue where config file doesn't contain all configurable
  entries.
- Remove config options for Netplay, Joystick, and JMA. SDL 2.0
  is now mandatory.
- Updated gettext and removed intltool. update-po should now catch
  all translatable strings.
- If available, reduce input lag option will now use fences instead
  of glFinish to prevent hogging the CPU.
- Onscreen text can be variable width and will show up in some more
  cases now.

 Win32:
- Add audio device selection (XAudio2 only)

Snes9x 1.57

10 Nov 01:24
Compare
Choose a tag to compare

Snes9x 1.57 has been released. Changes include a big update to the libretro port, several accuracy fixes, a few new features, and some deprecations.

Support for xml HLSL shaders in the Windows port and xml GLSL shaders in the GTK+ port has been removed. We recommend downloading and using shaders from the libretro repository at https://github.com/libretro/glsl-shaders instead.

For those packaging the GTK+ port, note that building with GTK+ 3 is now highly recommended over GTK+ 2 and should have no regressions. Also note that Wayland compatibility is implemented, which, if enabled, also requires GTK+ to have been compiled with Wayland support. The configuration file format for this port has changed to a simple .ini-style that can be edited by hand and is saved as snes9x.conf, keeping with the other ports' convention, in the user's config directory. This will cause any changes to settings made with previous versions to be reset to default. Frame-skipping options have also been simplified to remove never-used "fixed" rate settings and to simplify interaction with dynamic rate control and sound sync.

Changes:

Snes9x 1.57
- Various seta010 emulation fixes.                          (kps501)
- Pass blargg OAM tests with proper write behavior.         (BearOso)
- Prevent interlacing in BG modes 1-4.                      (BearOso)
- Corrected IRQ and NMI emulation to allow more games to
  work properly.                                            (BearOso, OV2)
- Use 1 instead of 0 for initial PPU left window coordinate,
  fixing garbage in left column of pixels in some games.    (turhope)
- Added interpolation option hack for DSP.                  (kps501, mudlord,
                                                            BearOso)
- Added sprite-tile limit disabling hack.                   (Tatsuya79)
- Added libretro's fast snapshot support.                   (OV2)
- Add overclocking hack that increases IPC                  (retrotalker)
- Fix controller initialization issues preventing some games
  from using multitap.                                      (retrotalker)
- Proper write behavior for register $2122.                 (BearOso)
- Fix transparency issue with Star Fox asteroids.           (redguy, BearOso)
- Increase SuperFX speed to more accurately represent
  hardware, and fix bugs with Stunt Race FX and Yoshi's
  Island.                                                   (BearOso)
- Resize viewport on state load.                            (retrotalker)
- Many fixes to variables not saved or saved incorrectly in
  save states.                                              (Dwedit)
- Pass decimal tests in blargg's math test ROMs.            (BearOso)
- Remove memory leak in loadzip.cpp.                        (bonimy)
- Fix screen size not reverting when overscan is turned on
  then off mid-frame.                                       (BearOso)

 Win32:
- Include DirectDraw libraries and compile with DirectDraw
  support by default.                                       (OV2)
- Add a link to DirectX installer in error message displayed
  when the needed DirectX libraries can't be found.         (OV2)
- Save window position when exiting via menu                (OV2)
- Make custom ROM dialog resizable.                         (OV2)
- Fix various cheat dialog issues.                          (OV2)
- Remove d3d9x DLL dependency by using DirectXMath.         (OV2)
- Remove rarely-used HLSL shader option.                    (OV2)
- Add InitialSnapshotFilename support.                      (BearOso)
- Disable BG toggle keys by default.                        (BearOso)
- Proper centering and cropping for overscanned and
  regular height modes.                                     (OV2)
- Remove ability to disable the SNES's hires modes.         (OV2)
- Added a Super Famicom-style icon resource to the EXE.     (BearOso)

 MacOS:
- Partial support for new cheats format.                    (OV2)
- Fix MacOS build.                                          (marconett)
- Set default for new config options.                       (tmkk)
- Fix compilation on Mac OS Mojave                          (meepingsnesroms)

 libretro:
- Massive update of libretro code to latest downstream.     (fr500, kps501,
                                                            OV2, twinaphex,
                                                            BearOso,
                                                            hiddenasbestos,
                                                            m4xw, kxyxz,
                                                            claudiuslollarius)

 GTK+:
- Use datarootdir instead of datadir on install.            (orbea)
- Fix --with-system-zip configure flag.                     (BearOso)
- Draw interlaced fields when ready.                        (BearOso)
- Initial Wayland support.                                  (remicalixte)
- Allow XV only in X11.                                     (BearOso)
- Add Wayland support via EGL.                              (BearOso)
- Significant rewrite of OpenGL driver to support newer
  standards. This won't work on cards < OpenGL ~1.5.        (BearOso)
- Changed frameskip option to speed throttling option with
  simpler, but more relevant methods of speed control.      (BearOso)
- Add support for relative-style save slots.                (ichigo-0, BearOso)
- Remove XML config file format in favor of one more like
  Win32. Make joystick bindings and more options human-
  readable and editable.                                    (BearOso)
- Try more device nodes when initializing OSS.              (BearOso)

1.56.2

21 Jun 21:42
Compare
Choose a tag to compare

This is a another small bug fix and minor feature release.

  • Fixed IRQ corner case that caused Umihara Kawase's water
    to cover the whole screen. (BearOso)
  • Adjusted IRQ timing slightly. Fixes Dragon Ball Z - Super
    Butouden 2. (BearOso)
  • Clear WAI when IRQLine is active. Fixes Top Gear 3000. (BearOso)
  • Fix reading the wrong tile data in mosaic drawing. Gets
    rid of glitch at top of FF6 battle transitions. (BearOso)
  • Break a specific opcode into cycles. Fixes Little Magic. (BearOso)
  • Win32: Don't mix garbage into the last line with NTSC
    filter. (OV2)
  • Win32: Allow disabling scanlines in NTSC filter. (BearOso)
  • GTK+: Added an undo load state option. (BearOso)
  • GTK+: Fixed compilation on big-endian systems. (OV2)
  • Win32, GTK+: Added integer scaling option. (BearOso)
  • GTK+, Unix: Preserve current joypad state when rewinding. (BearOso)