GTK/X11 Port (aka Linux/UNIX GUI)

This is for people involved in the developement of Snes9x, or SNES emulators in general.
BUG REPORTS BELONG IN TECH SUPPORT/BUG TRACKING!
Post Reply
User avatar
BearOso
Official GTK/Linux Porter/Dev
Posts: 460
Joined: Tue Oct 02, 2007 12:50 am

GTK/X11 Port (aka Linux/UNIX GUI)

Post by BearOso »

Hi all. I've been working on a GTK port of Snes9x in my free time, and it's at the point where it does pretty much everything I'd want it to do now. So, I figured I'd release it in case someone wants it.

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.
Older changes are further below.

:arrow: Download a Precompiled Binary (linux-i386, GTK, Xv, OpenGL, NetPlay, Joystick support)
:arrow: Download a Precompiled Binary (linux-x86-64, GTK, Xv, OpenGL, NetPlay, Joystick support)
Built and tested on bleeding-edge Gentoo

:arrow: Download Snes9x 1.53 sources

:arrow: Download .deb (Ubuntu and Debian) Packages and Get Info About Apt Source Trees

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
You can also add whatever other flags you like. Run ./configure --help to see potential options.

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
Then run 'make'

Code: Select all

 snes9x-1.51-src/gtk$ make
This'll produce a snes9x-gtk executable file in the current directory. Copy it, run it, whatever. If you want to install everything, execute the following with super-user privileges:

Code: Select all

 snes9x-1.51-src/gtk# make install
Notes:
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
Image Image

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
Then copy the snes9x-gtk.pot file to a file called lang_CODE.po where lang_CODE is the code for the language you're translating to. I.e. if you're translating to English, then you'll do:

Code: Select all

snes9x-1.51-src/gtk/po$ cp snes9x-gtk.pot en_GB.po
3. Edit the file, then send it in
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.
Changes for version 78
  • * 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.
Changes for version 77
  • * 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.
Changes for version 76
  • * Fixed a bug where the fullscreen window would lose focus.
    * Updated fr_FR translation [Tukuyomi]
    * Added es_VE translation [inukaze]
Changes for version 75
  • * 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.
Changes for version 74
  • * 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.
Changes for version 73
  • * Fixed a compile error when XRandR support isn't being built.
    * Included Tukuyomi's updated French localization.
Changes for version 72
  • * Added a new regular-interval audio mixer to significantly improve sound quality.
    * Added a new SDL audio output driver.
Changes for version 71
  • * Refactored video driver initialization code.
    * Removed dependency on gtkglext for OpenGL output.
    * Allowed theme icon to be used for window mini-icon.
Changes for version 70
  • * Changed screensaver disable code again.
    * Fixed compilation with --with-debugger.
    * Fixed pane colors in preferences.
    * Updated French locale. (tukuyomi)
Changes for version 69
  • * Allow compilation of OSS sound driver on *BSD.
    * Avoid extra round-trips to X server to disable the screensaver.
Changes for version 68
  • * 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.
Changes for version 67
  • * 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.
Changes for version 66
  • * 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.
Changes for version 65
  • * 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.
Changes for version 64
  • * Added a few build fixes for OpenBSD courtesy of Kernigh.
Changes for version 63
  • * Added Tukuyomi's French localization.
    * Relicensed to LGPL, and added Snes9x license exceptions. See gtk/doc/LICENSE.
Changes for version 62
  • * Added axis emulation for joystick hats.
Changes for version 61
  • * Fixed a build-system regression that caused NetPlay failure.
Changes for version 60
  • * Removed option for multitap adapter in controller port 1. The port 2 multitap should now work as expected.
    * Optimized the new scanlines filter.
Changes for version 59
  • * 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.
Changes for version 58
  • * Fixed build process when Xv is not found or is disabled.
Changes for version 57
  • * Switch to a separate, different building process.
    * Added translation support.
    * Added stock icons to preferences.
Changes for version 56
  • * 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.
Changes for version 55
  • * 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).
Changes for version 54
  • * Set max for Blargg's NTSC adjustments to 1.0 instead of instead of 1.01
Changes for version 53
  • * 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.
Changes for version 52
  • * 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.
Changes for version 51
  • * Set DisableInvalidVRAMAccess to TRUE by default again, and add an option for configuring it.
Changes for version 50
  • * 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.
Changes for version 49
  • * 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.
Changes for version 48
  • * Fixed the ntsc filter scanlines to use the correct color format.
Changes for version 47
  • * 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.
Changes for version 46
  • * 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.
Changes for version 45
  • * Fixed a rather serious buffer overflow in the config system.
Changes for version 44
  • * Added an option to Preferences->Emulation to prevent the screensaver completely while Snes9x is open.
Changes for version 43
  • * Joystick events now prevent screensavers from starting.
    * Disabled NetPlay's "pause when X frames behind." A working option will be in a future release.
Changes for version 42
  • * Xv: Removed the X sync immediately after the image is displayed to avoid a spinlock with vsync.
Changes for version 41
  • * Re-added auto-painting to the Xv driver. It will now only be used if the driver advertises it.
Changes for version 40
  • * 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.
Changes for version 39
  • * Fixed possible null dereferences in sound initialization.
    * Added command-line option -mutesound for disabling sound.
Changes for version 38
  • * Fixed a regression that caused sound driver callbacks to occur too often.
    * Added a setting to adjust the sound buffer size.
Changes for version 37
  • * Fixed a spurious edit that made the last release pointless.
Changes for version 36
  • * Properly enumerate all available sound APIs for initialization instead of trying only the PortAudio default.
Changes for version 35
  • * Added a toggle box for the status bar to the View menu.
    * Fixed several fullscreen issues.
Changes for version 34
  • * 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.
Changes for version 33
  • * 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.
Changes for version 32
  • * OpenGL: Added option to turn on non-power-of-two/rectangle textures instead of automatically activating them. This option is off by default.
Changes for version 31
  • * 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.
Changes for version 30a
  • * Add a key binding for exiting Snes9x to the bindings in the emulator tab.
    * 30(a): Snes9x now properly leaves fullscreen mode on exiting.
Changes for version 29
  • * 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.
Changes for version 28
  • * 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.
Changes for version 27
  • * 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.
Changes for version 26
  • * 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.
Changes for version 25 Changes for version 24
  • * Appended Xrandr library in case it isn't indirectly linked in.
    * Fixed a couple of issues with fullscreen.
Changes for version 23
  • * 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.
Changes for version 22b
  • * Fixed nasty fullscreen problems introduced in v22a.
Changes for version 22a
  • * Added pixel-doubling Complex2x filter.
    * Further refined fix for colored border issue in Xv.
Changes for version 22
  • * Attempted to fix colored border issue in Xv again.
    * Prevented -filter command-line parameter from skipping the next parameter.
Changes for version 21
  • * Attempted fix of colored border filtering issue in Xv.
    * Attempted fix of event loss in Xv.
    * Added a -filter command-line parameter.
Changes for version 20
  • * 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.
Changes for version 19
  • * Added NTSC filter.
    * Fixed bug with install target not defining a default prefix.
    * Refactored several things.
Changes for version 18
  • * 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.
Changes for Version 17
  • * Disabled automatic use of texture rectangle extension in OpenGL.
Changes for Version 16
  • * Added new targets to make for compatibility.
Changes for Version 15
  • * 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.
Changes for Version 14
  • * Fixed the problem where individual thresholds for joystick axes weren't used at all.
Changes for Version 13
  • * Fixed a bug where the threshold for a joystick axis binding could use the threshold from another joystick with the same axis bound.
Changes for Version 12
  • * 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.
Changes for Version 11
  • * Use unwrapped glXGetProcAddress to retrieve OpenGL extension functions.
Changes for Version 10c/d
  • * Hack to work around gtkglext bug.
    * More robust OpenGL pixel buffer compatibility.
Changes for Version 10b
  • * Made custom folder selection box use selected folder, not current folder.
Changes for Version 10a
  • * Fixed some crashes in the cheat dialog.
Changes for Version 10
  • * Made PBO external format configurable.
    * Implemented custom folder support for SRAM saving.
    * Added a basic cheat entry dialog.
Changes for Version 9a
  • * With OpenGL Pixel-Buffer Objects enabled, do pixel swizzling prior to upload. Can improve OpenGL speed ~50%.
Changes for Version 9
  • * Preliminary movie support.
    * Preliminary support for OpenGL Pixel-Buffer Objects for texture uploading.
    * Many small enhancements.
Changes for Version 8
  • * 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.
Changes for Version 7
  • * 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.
Changes for Version 6
  • * 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.
Changes for Version 5
  • * Added .zip to filters for file chooser.
    * Simplified OpenGL texture uploading code--decreases CPU usage.
Changes for Version 4
  • * Added .jma to filters for file chooser.
    * Save last directory when choosing roms.
Changes for version 3a
  • * Fixed missed joystick event when axis changes too quickly.
Changes for version 3
  • * 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.
Changes for version 2
  • * 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.
Last edited by BearOso on Tue Apr 26, 2011 1:13 am, edited 118 times in total.
adventure_of_link
Hero of Hyrule | Official Port Recruiter
Posts: 2588
Joined: Mon May 24, 2004 5:06 pm
Location: 255.255.255.255

Post by adventure_of_link »

Looks pretty good, I'll have to give this a whirl on my Linux machine. :)
Image

Unofficial Test Monkey For:
* Snes9X GX (Wii)
* Snes9X EX (Android)
* Snes9X 64-bits (PC/Mac)

ZSNES|Ben Heck|NSRT|Bob Smiley
Screwtape
Snes9x White Belt
Posts: 49
Joined: Thu May 26, 2005 12:59 pm

Re: GTK/X11 Port

Post by Screwtape »

BearOso wrote:Hi all. I've been working on a GTK port of Snes9x in my free time, and it's at the point where it does pretty much everything I'd want it to do now.
Yay, awesome!

I... uh, don't actually have a suitable Linux system to hand, but I have friends who do, and I shall tell them about it!
BearOso wrote:Image
The OS/2-style sideways tabs look a little... awkward.
GNOME HIG v2.0 wrote:If you have more than about six tabs in a notebook, use a list control instead of tabs to switch between the pages of controls.
User avatar
BearOso
Official GTK/Linux Porter/Dev
Posts: 460
Joined: Tue Oct 02, 2007 12:50 am

Re: GTK/X11 Port

Post by BearOso »

Screwtape wrote: The OS/2-style sideways tabs look a little... awkward.
GNOME HIG v2.0 wrote:If you have more than about six tabs in a notebook, use a list control instead of tabs to switch between the pages of controls.
I'm surprised to see someone here who's actually read the GNOME HIG. If you'll look, however, that page was written before GTK had side-tabs. :-) The original intent was to avoid hyperextending the window horizontally.

Personally, I think the dialog looks just a little weird, but not bad. If you really think it would look much better with a list control, I can change it. Either way it presents the same UI to the end user in the same manner. Both are "Click this to change page" type structures in the same location, just with different styles.
Screwtape
Snes9x White Belt
Posts: 49
Joined: Thu May 26, 2005 12:59 pm

Re: GTK/X11 Port

Post by Screwtape »

BearOso wrote:I'm surprised to see someone here who's actually read the GNOME HIG. If you'll look, however, that page was written before GTK had side-tabs. :-) The original intent was to avoid hyperextending the window horizontally.
To be honest, I haven't read it extensively - I just saw sideways tabs and though "Why have I never seen any other GTK+ app use sideways tabs except for the widget demo? Hmm... maybe it's in the HIG".
BearOso wrote:Personally, I think the dialog looks just a little weird, but not bad. If you really think it would look much better with a list control, I can change it. Either way it presents the same UI to the end user in the same manner. Both are "Click this to change page" type structures in the same location, just with different styles.
I think a list control would be better, if only because list controls are fairly common while sideways tabs are not. If you moved "Version Info" to Help -> About, you'd have six tabs and could fit them horizontally fairly easily (You might want to change "SNES Controllers" to "Controllers" to save horizontal space - it's not like SNES9x deals with many other kinds of controller :)

Hmm... I tried building your pre-patched source on OS X, but it seems that MacPorts doesn't mention what version of PortAudio they package (it's listed as "19.061121"), and they don't package libjsw at all... in fact, trying to download the libjsw source gives me a "Permission Denied" error, and there's hardly any documentation on the site so I don't know if it's been ported to OS X at all.

Hopefully some Linux user will come along to give you feedback!
charclo
Snes9x White Belt
Posts: 1
Joined: Sun Oct 21, 2007 1:24 pm

Post by charclo »

Hey,

this looks great but I've run into a little problem.
I'm running Ubuntu feisty and installed the dependencies like this:
sudo apt-get install libportaudio2 libjsw libgtkglext1
these all installed fine but when I try to run the program (precompiled binary) now i get this

michael@michael-super:~/roms/snes9x-1.51$ ./snes9x-gtk
Reading config file /etc/snes9x/snes9x.conf
Cannot map InvalidControlID
Cannot map InvalidControlID
Cannot map InvalidControlID
Map_HiROMMap
Segmentatiefout (core dumped)

it can load a rom but as soon as I open the preferences it gives this error so I can't configure my controller.
User avatar
BearOso
Official GTK/Linux Porter/Dev
Posts: 460
Joined: Tue Oct 02, 2007 12:50 am

Post by BearOso »

charclo wrote:Hey,

this looks great but I've run into a little problem.
I'm running Ubuntu feisty and installed the dependencies like this:
sudo apt-get install libportaudio2 libjsw libgtkglext1
these all installed fine but when I try to run the program (precompiled binary) now i get this

michael@michael-super:~/roms/snes9x-1.51$ ./snes9x-gtk
Reading config file /etc/snes9x/snes9x.conf
Cannot map InvalidControlID
Cannot map InvalidControlID
Cannot map InvalidControlID
Map_HiROMMap
Segmentatiefout (core dumped)

it can load a rom but as soon as I open the preferences it gives this error so I can't configure my controller.
I've seen this error before. I thought I had it completely fixed, but I guess not. It stems from a Glade API issue.

I'll try to get a fix for this out in the next few days when I have time.

*edit*

It wasn't the Glade issue.

I've put up an updated tarball of the prebuilt version, so download it again. The problem's isolated, but you'll need to delete your existing ~/.snes9x/snes9x.xml file. I'll upload a new version and source with this issue fixed better, and some other bug fixes in a couple days.

If you're curious, the issue was experienced because you don't have a sanitizing glibc, and all the systems I tested on do.
User avatar
BearOso
Official GTK/Linux Porter/Dev
Posts: 460
Joined: Tue Oct 02, 2007 12:50 am

Post by BearOso »

A new version is up. This should fix the most common problems. Info is in the original post.
Juan
Snes9x White Belt
Posts: 1
Joined: Sun Oct 28, 2007 5:47 pm

Post by Juan »

Awesome! Will keep an eye on this and spread the news :wink:

Quick q: is it just me or the options saved in the prefs menu aren't properly shown when running the program for the second time? (as if the defaults are showing, but when running a game they work as I set them in the first occasion). Hopefully you'll understand what I mean.

Edit: deleted the xml config file and now they seem to work properly.
User avatar
BearOso
Official GTK/Linux Porter/Dev
Posts: 460
Joined: Tue Oct 02, 2007 12:50 am

Post by BearOso »

Put up a new version. It fixes a severe joystick crash issue that I somehow missed, and reverts some code I put in to fix the edges in OpenGL bilinear filtering. There'll be a better filtering fix into the next version.
jippen
Snes9x White Belt
Posts: 2
Joined: Fri Nov 23, 2007 6:28 am

Post by jippen »

Minor bug:
In the file listing, you don't list the NSRT compressed format that snes9x supports. Its extension is .jma
Using "All files" I can see and use them just fine. Seems like it would be a simple bug to fix, and is a bit of an annoyance.

EDIT: Another annoyance: doesn't save the last used directory. Kinda annoying. :/
User avatar
BearOso
Official GTK/Linux Porter/Dev
Posts: 460
Joined: Tue Oct 02, 2007 12:50 am

Post by BearOso »

jippen wrote:Minor bug:
In the file listing, you don't list the NSRT compressed format that snes9x supports. Its extension is .jma
Using "All files" I can see and use them just fine. Seems like it would be a simple bug to fix, and is a bit of an annoyance.

EDIT: Another annoyance: doesn't save the last used directory. Kinda annoying. :/
Thanks. These'll go onto my TODO list. I was already planning on fixing the second one.
User avatar
BearOso
Official GTK/Linux Porter/Dev
Posts: 460
Joined: Tue Oct 02, 2007 12:50 am

Post by BearOso »

I've posted a new version. This fixes jippen's issues.

Features I'm working on are threaded graphics for the next version, and NetPlay sometime later.
indarios
Snes9x White Belt
Posts: 4
Joined: Mon Nov 26, 2007 7:50 am

Post by indarios »

Really good work on this GTK frontend! I was curious though I just grabbed your new patch and compiled it an all but it says its GTK Port Version 2 in the version info tab.. not sure if I have the wrong version of that patch or not.

The reason I ask this is because when using OpenGL it slows snes9x down to around 20 fps where as having it off runs at 60, this is while im just staying still. I do have a OpenGL working systems as well and im using the trusty intel 915* video card.

Other then that its been working wonderfully, thanks again.

Edit: noticed that its still not remembering the last used directory, again maybe i have the wrong version? Also its not automatically reading ROMs compressed in the zip format in the ROM selection window.
Deathlike2
Snes9x Brown Belt
Posts: 1158
Joined: Mon Jan 10, 2005 6:34 am

Post by Deathlike2 »

It is just possible that the OpenGL client used for the Intel video card stinks? I'm just saying.
User avatar
BearOso
Official GTK/Linux Porter/Dev
Posts: 460
Joined: Tue Oct 02, 2007 12:50 am

Post by BearOso »

indarios wrote:Really good work on this GTK frontend! I was curious though I just grabbed your new patch and compiled it an all but it says its GTK Port Version 2 in the version info tab.. not sure if I have the wrong version of that patch or not.

The reason I ask this is because when using OpenGL it slows snes9x down to around 20 fps where as having it off runs at 60, this is while im just staying still. I do have a OpenGL working systems as well and im using the trusty intel 915* video card.

Other then that its been working wonderfully, thanks again.

Edit: noticed that its still not remembering the last used directory, again maybe i have the wrong version? Also its not automatically reading ROMs compressed in the zip format in the ROM selection window.
Oops. I forgot to update the links here to point to the new version. Version 3 still reports version 2, so that's what you've probably got. Try downloading again to get the latest.

As Deathlike2 says, OpenGL might be slow because of your graphics chipset. Texture upload speed is the primary performance factor, but there still might be alternatives I can try to optimize it. Have you been able to get better OpenGL performance out of ZSnes or other emulators with OpenGL support?

Also, make sure you're not using filters with OpenGL on that i915. They're currently implemented in software, and the texture upload size will make weak cards choke.
op89x
Snes9x Yellow Belt
Posts: 199
Joined: Thu Dec 14, 2006 1:58 am

Post by op89x »

This looks great, Bear. If I had any idea how to install things that I can't find in SPA, I'd check it out. But my Linux computer is so poor it probably wouldn't be able to run the app anyway.

Just curious...do you plan on bringing Netplay back with this branch?
User avatar
BearOso
Official GTK/Linux Porter/Dev
Posts: 460
Joined: Tue Oct 02, 2007 12:50 am

Post by BearOso »

op89x wrote:This looks great, Bear. If I had any idea how to install things that I can't find in SPA, I'd check it out. But my Linux computer is so poor it probably wouldn't be able to run the app anyway.
The prebuilt version is self-contained. If you've got the dependencies installed, it's just extract-and-run.
Just curious...do you plan on bringing Netplay back with this branch?
At first I wasn't considering it because I never use it. I've looked at the NetPlay code in the other ports, however, and it doesn't look overly difficult for me to implement. After I get things stabilized I'll try to get it in.
User avatar
BearOso
Official GTK/Linux Porter/Dev
Posts: 460
Joined: Tue Oct 02, 2007 12:50 am

Post by BearOso »

I've uploaded a new version. A couple minor updates again.
indarios
Snes9x White Belt
Posts: 4
Joined: Mon Nov 26, 2007 7:50 am

Post by indarios »

BearOso wrote: Oops. I forgot to update the links here to point to the new version. Version 3 still reports version 2, so that's what you've probably got. Try downloading again to get the latest.

As Deathlike2 says, OpenGL might be slow because of your graphics chipset. Texture upload speed is the primary performance factor, but there still might be alternatives I can try to optimize it. Have you been able to get better OpenGL performance out of ZSnes or other emulators with OpenGL support?

Also, make sure you're not using filters with OpenGL on that i915. They're currently implemented in software, and the texture upload size will make weak cards choke.
This seems to be the problem, my graphics card isn't up to the task. I tried out version 5 and while using OpenGL i get 55-60 FPS (now with my filter off) but is around 20% more CPU intensive then when OpenGL i off and it is much worse with filters on.

I check out Zsnes but i never found anything for OpenGL only saw an option for GFX.
Post Reply