Releases: snes9xgit/snes9x
Snes9x 1.63
Mainly a bug-fix release.
Changes:
Snes9x 1.63
General:
- Added a shortcut to change the backdrop color for sprite extraction.
- Fixed QuickSave 0-9 slot shortcuts not working.
- Allow "Address:byte" form for cheat inputs.
- Fixed ZIP files not being closed after patch search.
- Various memmap fixes to allow unofficial mappings.
- Added usage of ImGui to draw things on top of the screen instead of inside.
Win32:
- Fixed AVI not recording audio.
- Fixed framerate throttling in turbo mode (now works during AVI recording).
- Fixed interlaced output speed being double.
- Fixed command line arguments not working.
- Fixed WaveOut device name display for names longer than 31 characters.
- Fixed Bank+/- hotkey saving.
- Added hotkeys for aspect ratio, cheat edit/search.
- Added multiselect for cheat edit dialog.
Gtk:
- Fixed config file location to never put files directly in $HOME and obey
$XDG_CONFIG_HOME.
- Updated translations from JakeSmarter and StanleyKid-22.
Mac:
- Added a new cheat finder.
- Added MultiCart support back.
- Create a blank window when starting the program, so the global menu change
doesn't go unnoticed.
Snes9x 1.62.3
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
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
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
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
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
Hopefully this fixes everything. We've had good luck with the .2 releases in the past.
Snes9x 1.59
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:
- Change to the gtk port directory:
cd gtk
- Run meson:
meson builddir --prefix=/usr --buildtype=release
- Change to the build directory and run ninja:
cd builddir; ninja
- Install if you wish:
meson install
orsudo meson install
A full list of options is in meson_options.txt.
- Change to the gtk port directory:
-
.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 runninggit 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
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
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)