.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:
- 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.
- 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`
- Change to the build directory and run ninja: `cd builddir; ninja`
- 4. Install if you wish: `meson install` or `sudo meson install`
- .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.
Code: Select all
- 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.