I'm putting up 3 different files, each in various stages of compilation. I'd suggest building it all the way from patch form if you can, as it saves on limited bandwidth, and will be most compatible with your system.
Note: For version 57 and greater, the patching/building process has changed slightly. See below for the revised instructions.
Update:
Changes for version Snes9x 1.53 (GTK+ port revision 81)
- * Snes9x 1.53 has been released. See the changes in the official announcement.


Built and tested on bleeding-edge Gentoo


Note: If you downloaded this, and experience crashes, redownload the file (and reapply/rebuild if source) and delete your $HOME/.snes9x/snes9x.xml file.
Dependencies
GTK 2.10 or greater with all dependencies
One of OSS, ALSA, PulseAudio, SDL or PortAudio 1.9+.
For Joystick support, you'll need
SDL 1.2.12 or greater (only needed for Joystick support)
Obviously, building from source requires headers and development packages if you're on a binary-based distribution or OS.
Building Instructions:
Run the configure script from the snes9x-1.52-src/gtk/ directory. If you want OpenGL support, also add the --with-opengl flag. For example:
Code: Select all
snes9x-1.52-src/gtk$ ./configure --prefix=/usr --with-opengl
Depending on where your OS puts certain things, and if you've built some dependencies from source, you may need to specify some pkg-config paths. If you experience errors, use a configure command like this instead:
Code: Select all
snes9x-1.51-src/gtk$ PKG_CONFIG_PATH="/usr/lib/pkgconfig:/usr/local/lib/pkgconfig" ./configure --with-opengl
Code: Select all
snes9x-1.51-src/gtk$ make
Code: Select all
snes9x-1.51-src/gtk# make install
Generally, it works like Snes9x does. If you can't find an option in the relatively simple GUI, you can use the same command-line arguments as you normally would in, for example, the unix port.
OSS/ALSA issue with PortAudio
If PortAudio is built with ALSA support, ALSA will need to be installed to function. If you use OSS only and have removed some ALSA packages from your system, you will need to make sure PortAudio isn't compiled with ALSA support. See http://www.snes9x.com/phpbb2/viewtopic. ... &start=141.
Joystick Support
Previously, this port used libjsw for joystick support. As it turns out, libjsw supports very few operating systems, so I switched to SDL. libjsw will mess with your kernel joystick calibration on Linux, so you'll probably need to restart if you've calibrated on your current boot.
Compiz
The latest version of Compiz fixes all known issues. If you're having trouble, upgrade Compiz.
Missing Features/Bugs
The GUI is fairly sparse and condensed for simplicity. If there's a function missing that is a must-have or you find any bugs, just mention them, and I'll try to get them in eventually.
Obligatory Screenshots


Translating
In order to generate a translation file, you'll need to follow these steps:
1. Install intltool
Intltool is provided in the repositories for your operating system.
2. Generate a template
Change to the gtk/po directory inside the base source directory, and run intltool-update -p
Code: Select all
snes9x-1.51-src/gtk/po$ intltool-update -p
Code: Select all
snes9x-1.51-src/gtk/po$ cp snes9x-gtk.pot en_GB.po
Editing the .po file is fairly straightforward. Just fill in the blank lines below the default strings with the translated versions. More info (non-snes9x specific) on this process and programs to help can be found at http://www.wesnoth.org/wiki/GettextForTranslators.
When you're done, either post the file here, or send the file to me. Be sure to include the name under which you want to be credited.
Changelog
Changes for version 79
- * Now included in Snes9x 1.52. See the Snes9x 1.52 changelog for details.
* Added PulseAudio and ALSA sound-drivers and adapted existing drivers to the new sound core.
* Added a Serbian translation from Milan Kostic.
* Added lower-resolution icons.
* Added more configuration for the NTSC and EPX filters.
* Several bug-fixes.
- * Fixed an issue where, after failing to load a ROM, the emulator would be paused forever.
* Added a toggle to joypad configuration to allow or disallow direct use of modifier keys.
* Changed the option to disable screensaver so that it uses XResetScreenSaver and xdg-screensaver due to XTestFakeKeyEvent being removed in the latest X.org release.
- * Added pt_BR translation. [Tiberio Vitor]
* Fixed a bug where the sound driver would switch from SDL in the Preferences dialog if one of OSS or PortAudio was not installed.
- * Fixed a bug where the fullscreen window would lose focus.
* Updated fr_FR translation [Tukuyomi]
* Added es_VE translation [inukaze]
- * Fixed screensaver disable option so it doesn't send a fake keypress when Snes9x isn't focused.
* Changed resolution setting to store width and height instead of a screen's mode index.
* Fixed a bug where the PortAudio driver wouldn't output sound at 44100hz.
* Allowed changing the behavior of the ESC key so it exits Snes9x.
- * Fixed a couple thread deadlocking problems in the audio mixer that could result in no sound.
* Removed the powerof2 function to fix compile problems on OpenBSD.
* Changed fullscreen mode to issue a raise signal to the window manager after remapping.
- * Fixed a compile error when XRandR support isn't being built.
* Included Tukuyomi's updated French localization.
- * Added a new regular-interval audio mixer to significantly improve sound quality.
* Added a new SDL audio output driver.
- * Refactored video driver initialization code.
* Removed dependency on gtkglext for OpenGL output.
* Allowed theme icon to be used for window mini-icon.
- * Changed screensaver disable code again.
* Fixed compilation with --with-debugger.
* Fixed pane colors in preferences.
* Updated French locale. (tukuyomi)
- * Allow compilation of OSS sound driver on *BSD.
* Avoid extra round-trips to X server to disable the screensaver.
- * Fixed shared memory leak when using XVideo driver. (kernigh)
* Fixed compilation with the --with-debugger flag.
* Added a 4:3 aspect ratio option for Maintain Aspect Ratio.
* Added several new automatic sizing options to the View menu.
* Added an OSS sound driver, and configuration to select which sound drivers to compile in, and which to use from those built in.
- * Modified the screensaver disable to only operate when the game is running. Prevents bizarre keycodes from showing up in preferences.
* Added SPC7110 pack directory support.
- * Added a hack to prevent SuperFX snapshot loads from crashing when pointer size isn't 4 bytes.
* Changed to string literals in some vararg functions to fix strict compiler errors. (Mandriva PLF)
* Changed the --with-debug flag to not strip necessary debugging information.
* Readded the patch to the delta file so it can still be used with other Snes9x-based projects.
- * Fixed more paths in configure.
* Changed the screensaver disabling code to work with more screensavers/power managers (courtesy of byuu).
* Added a hack to check for SiliconMotion drivers reporting invalid masks in Xv.
- * Added a few build fixes for OpenBSD courtesy of Kernigh.
- * Added Tukuyomi's French localization.
* Relicensed to LGPL, and added Snes9x license exceptions. See gtk/doc/LICENSE.
- * Added axis emulation for joystick hats.
- * Fixed a build-system regression that caused NetPlay failure.
- * Removed option for multitap adapter in controller port 1. The port 2 multitap should now work as expected.
* Optimized the new scanlines filter.
- * Changed the configure script to output more information about optional features.
* Added reset and swap functions for configuring joypad buttons, and made available a shortcut key to swap the first and second joypad bindings.
* Added a new gamma-correct "Scanlines" filter. The NTSC filter scanlines still do not use gamma correction.
- * Fixed build process when Xv is not found or is disabled.
- * Switch to a separate, different building process.
* Added translation support.
* Added stock icons to preferences.
- * Added an option to configure scanline intensity for the NTSC filter.
* Fixed a bug where the saved window size would be pulled from the maximized state.
- * Synced sound buffer sizes between Snes9x and PortAudio and changed PortAudio backend to reflect selected buffer size.
* Set default sound buffer size to 32ms (2 frames) instead of 16ms (1 frame).
- * Set max for Blargg's NTSC adjustments to 1.0 instead of instead of 1.01
- * Default to LSB ordering on big-endian with Xv.
* Changed defaults on a number of sound options to help prevent save state glitches.
* Other small changes.
- * Added the option for allowing opposite d-pad directions to preferences, and disabled it by default.
* Fixed an issue where joystick events wouldn't be sent to the preferences window.
- * Set DisableInvalidVRAMAccess to TRUE by default again, and add an option for configuring it.
- * Force a clear of joystick init events when a rom is loaded on start.
* Allow joystick shortcuts to be used when a rom is not loaded.
* Require a full down+up keystroke when exiting the emulator.
- * Added back the frames-behind code in NetPlay.
* Removed the APU hack from NetPlay. Use the "sync using reset" option until the snapshot properly saves the APU state or live with no sound.
* Revised the cheat window to be cleaner and smaller, and to allow cheat descriptions.
* Changed the behavior of the key-binding boxes. The next entry will be selected automatically after entering a binding. Escape will tab between entries without changing the binding, and Shift-Escape will clear the current entry.
- * Fixed the ntsc filter scanlines to use the correct color format.
- * OpenGL: Made several changes to the driver to improve performance.
* OpenGL: Added a new (often faster) PBO format that uses 16-bit transfers.
* Removed the ports packaged with Snes9x from the pre-patched tarball to reduce download size.
- * Changed the default generated color byte-order to 1555.
* Xv: Fixed a NULL dereference in the initialization code.
* Xv: Changed byte-ordering to map to provided masks, instead of just the common arrangements.
* Xv: Added an option to invert the byte order when it is reported incorrectly.
- * Fixed a rather serious buffer overflow in the config system.
- * Added an option to Preferences->Emulation to prevent the screensaver completely while Snes9x is open.
- * Joystick events now prevent screensavers from starting.
* Disabled NetPlay's "pause when X frames behind." A working option will be in a future release.
- * Xv: Removed the X sync immediately after the image is displayed to avoid a spinlock with vsync.
- * Re-added auto-painting to the Xv driver. It will now only be used if the driver advertises it.
- * Removed colorkey auto-painting from Xv driver. This isn't needed, since the key is already drawn when exposed.
* Added more verbosity to sound initialization.
* 'clean' target will now clear port-specific files, too.
- * Fixed possible null dereferences in sound initialization.
* Added command-line option -mutesound for disabling sound.
- * Fixed a regression that caused sound driver callbacks to occur too often.
* Added a setting to adjust the sound buffer size.
- * Fixed a spurious edit that made the last release pointless.
- * Properly enumerate all available sound APIs for initialization instead of trying only the PortAudio default.
- * Added a toggle box for the status bar to the View menu.
* Fixed several fullscreen issues.
- * Fixed possible shared memory violation when switching to the Xv driver.
* Added a splash to the background instead of using the default window color.
* Allow persistence of the game image when switching video drivers.
* Allow access to the GUI in fullscreen mode. To enable this, one must uncheck the box for the old escape behavior in the Emulation tab of Preferences.
* Changed key-binding buttons into entries.
- * OpenGL: Fix issue with no display when turning NPOT texture support off.
* OpenGL: Fix very specific case where the NTSC filter won't work with NPOT textures and GL_RGB PBOs enabled.
- * OpenGL: Added option to turn on non-power-of-two/rectangle textures instead of automatically activating them. This option is off by default.
- * Fixed memory leak in Xv driver.
* Xv driver now prefers adaptors more formats. Fixes a regression that causes use of lossy modes when lossless are available.
* Fixed a few small bugs.
- * Add a key binding for exiting Snes9x to the bindings in the emulator tab.
* 30(a): Snes9x now properly leaves fullscreen mode on exiting.
- * Adjusted display pane in preferences to be cleaner. Preferences will also remember its size.
* Artifacts around edges in the Xv driver are fixed by changing the stored image size.
* Disabling sound emulation is no longer possible. Instead, a mute option is included. Sound emulation is needed to run many games, so the ability to disable it was a bad idea in the first place.
* Fixed an issue with no sound in NetPlay when not using the Sync by Reset option.
* When another player pauses in NetPlay, the status bar will now properly show the paused state.
- * Added a setting to pause the emulator when the focus switches away.
* The Xv driver will now choose the first (default) output port, instead of the last.
* Added netplay support.
* The status bar is now less verbose.
* Xv output can now be compiled out.
* XRandR support will now fail cleanly if the server doesn't support it. It can also be compiled out.
* OpenGL support no longer compiles binaries that only work on the build system's GLX version.
* The OpenGL output will resize textures on NPOT systems to avoid darker and miscolored right and bottom edges.
* The multithreaded scaler and filter option now allows the user to specify a number of threads up to 8.
- * Fixed install target if directories don't already exist.
* Fixed OpenGL BGRA format on little-endian to correctly use the fast upload path.
* Miscellaneous other fixes.
- * Added complete support for different byte-orders in Xv.
* Changed Xv to select 16 bit RGB modes first to possibly improve data transfers.
* Fixed an issue with compiling on non-standard platforms.
* Fixed inconsistencies with "Maintain Aspect Ratio" in Xv and GTK drivers.
* Attempted to fix issue where key-binding buttons wouldn't stay clicked.
- * Added lossless RGB format detection for Xv output.
* Stopped hiding new windows on creation. Should fix http://ubuntuforums.org/showpost.php?p= ... stcount=40.
* Refactored some things.
- * Appended Xrandr library in case it isn't indirectly linked in.
* Fixed a couple of issues with fullscreen.
- * Removed Complex2x filter and instead supplied a "Force Hires Output" option.
* Attempted to resolve stall when leaving fullscreen with resolution changing enabled.
* Changed "Maintain aspect ratio" to use 8:7 instead of basing it on whatever the pixel size of the given image is.
- * Fixed nasty fullscreen problems introduced in v22a.
- * Added pixel-doubling Complex2x filter.
* Further refined fix for colored border issue in Xv.
- * Attempted to fix colored border issue in Xv again.
* Prevented -filter command-line parameter from skipping the next parameter.
- * Attempted fix of colored border filtering issue in Xv.
* Attempted fix of event loss in Xv.
* Added a -filter command-line parameter.
- * Added XVideo output.
* Adjusted NTSC filter options to be offsets with respect to the output format.
* Set Auto-Frameskip on by default instead of a fixed 0-frameskip.
* Set use pixel buffer objects by default in OpenGL.
- * Added NTSC filter.
* Fixed bug with install target not defining a default prefix.
* Refactored several things.
- * Fixed regression where OpenGL must be available when running application if support is compiled in.
* Improved race condition on leaving fullscreen mode with a resolution change.
* Fixed some HIG problems.
- * Disabled automatic use of texture rectangle extension in OpenGL.
- * Added new targets to make for compatibility.
- * Fixed a divide-by-zero in the mouse motion handler.
* Adjusted configure script to more accurately report missing dependencies.
* Added an install target to make, along with a .desktop file and icon.
- * Fixed the problem where individual thresholds for joystick axes weren't used at all.
- * Fixed a bug where the threshold for a joystick axis binding could use the threshold from another joystick with the same axis bound.
- * Allow individual thresholds for joystick axis bindings. New joystick mappings are set with the value in the Joystick Options pane. You will need to reassign any existing axis bindings.
* Allow simple calibration for joysticks. This is primarily for fixing centering issues on control sticks and analog triggers/buttons.
* Fixed several minor bugs/issues.
- * Use unwrapped glXGetProcAddress to retrieve OpenGL extension functions.
- * Hack to work around gtkglext bug.
* More robust OpenGL pixel buffer compatibility.
- * Made custom folder selection box use selected folder, not current folder.
- * Fixed some crashes in the cheat dialog.
- * Made PBO external format configurable.
* Implemented custom folder support for SRAM saving.
* Added a basic cheat entry dialog.
- * With OpenGL Pixel-Buffer Objects enabled, do pixel swizzling prior to upload. Can improve OpenGL speed ~50%.
- * Preliminary movie support.
* Preliminary support for OpenGL Pixel-Buffer Objects for texture uploading.
* Many small enhancements.
- * Changed joystick support to allow large numbers of axes instead of 3, i.e. for analog triggers, multiple control sticks, and so on.
* Some refactoring.
- * Altered auto-framerate method to be less sensitive to CPU usage changes.
* OpenGL driver now stores textures in 32-bit RGBA format to avoid hitting software paths on some cards.
* Implemented multithreaded filters and scaling.
- * Changed joystick numbering scheme. (1st joystick is #1 instead of #0)
* Fixed hqxx filtering bug. (http://www.snes9x.com/phpbb2/viewtopic.php?t=3775)
* Fixed issue with joysticks where every joystick's events were sent to the first one.
* Implemented saved window size.
- * Added .zip to filters for file chooser.
* Simplified OpenGL texture uploading code--decreases CPU usage.
- * Added .jma to filters for file chooser.
* Save last directory when choosing roms.
- * Fixed missed joystick event when axis changes too quickly.
- * Fixed issue with joysticks causing crashes.
* Now uses SDL for joystick support instead of libjsw for more compatibility. Restarting your joystick driver/OS may be necessary to reset and undo calibration.
* Refactored the graphics code.
* Partially reverted OpenGL bilinear fix, as it causes issues with 512 pixel width games.
- * Joystick support is now optional. Use the --with-joystick configure flag to build with joystick support.
* Fixed bug with crashing when Preferences are opened.
* Possibly fixed issue with libjsw. Older libjsw versions have a bug that causes crashes on JSClose--please upgrade to libjsw 1.5.6, if possible.
* Fixed issue with edge artifacts after changing scaling modes when using OpenGL bilinear filtering.