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!
strangeryf
Snes9x White Belt
Posts: 3
Joined: Wed Nov 12, 2008 1:41 pm

Post by strangeryf »

Sorry. I forgot to add my configuration:

$ uname -a
Linux tinaco 2.6.27-8-generic #1 SMP Thu Nov 6 17:38:14 UTC 2008 x86_64 GNU/Linux

$gcc --version
gcc (Ubuntu 4.3.2-1ubuntu11) 4.3.2
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
User avatar
BearOso
Official GTK/Linux Porter/Dev
Posts: 460
Joined: Tue Oct 02, 2007 12:50 am

Re: GTK/X11 Port (aka Linux/UNIX GUI)

Post by BearOso »

strangeryf wrote:Hi BearOso,

I downloaded the Nov. 11 2008 build, and successfully built it in my Kubuntu 8.10 amd64 PC. Thanks a lot for your great work!! It's much more convenient than snes9express.

I followed the instruction "./configure --with-opengl" and "make". In addition to the dependencies you listed, I had to install "intltool" and "libxv-dev". At the end of building, I have to manually add -lXv to get the snes9x-gtk binary. Guess this may only apply to Kubuntu 8.10. The configure file is too difficult for me to decode, but I did find the lines to check libxv, so I am wondering why the automake failed to add -lxv in the final linking.
Thanks for the report. I must not have gotten all the XV configurability transferred over. I suspect if you try again from a clean build after installing libxv-dev you shouldn't have to add the -lXv flag, but you did indirectly hit a bug. This should be fixed in the next revision.
*edit* Said fix is posted.
uncholowapo
Snes9x White Belt
Posts: 7
Joined: Thu Oct 16, 2008 1:05 am

Post by uncholowapo »

Hey when I try and compile the new 58 release on Fedora 9 for x86 I get an error as follows:

Code: Select all

[Juan@localhost snes9x-1.51-src]$ ./configure --with-gtk --with-opengl --with-netplay --prefix=/usr
......(compiling with a lot of warnings).......
make: *** No rule to make target `unix/unix.o', needed by `osnes9x'.  Stop.
The same thing appears when I try and compile without opengl or without assembler but instead of osnes9x it says snes9x.
User avatar
BearOso
Official GTK/Linux Porter/Dev
Posts: 460
Joined: Tue Oct 02, 2007 12:50 am

Post by BearOso »

uncholowapo wrote:Hey when I try and compile the new 58 release on Fedora 9 for x86 I get an error as follows:

Code: Select all

[Juan@localhost snes9x-1.51-src]$ ./configure --with-gtk --with-opengl --with-netplay --prefix=/usr
......(compiling with a lot of warnings).......
make: *** No rule to make target `unix/unix.o', needed by `osnes9x'.  Stop.
The same thing appears when I try and compile without opengl or without assembler but instead of osnes9x it says snes9x.
You need to cd to the gtk directory and run the configure script that's located inside that directory instead. That should be the only change you'll need to compile with the new build scripts.
strangeryf
Snes9x White Belt
Posts: 3
Joined: Wed Nov 12, 2008 1:41 pm

Re: GTK/X11 Port (aka Linux/UNIX GUI)

Post by strangeryf »

BearOso wrote:
strangeryf wrote:Hi BearOso,

I downloaded the Nov. 11 2008 build, and successfully built it in my Kubuntu 8.10 amd64 PC. Thanks a lot for your great work!! It's much more convenient than snes9express.

I followed the instruction "./configure --with-opengl" and "make". In addition to the dependencies you listed, I had to install "intltool" and "libxv-dev". At the end of building, I have to manually add -lXv to get the snes9x-gtk binary. Guess this may only apply to Kubuntu 8.10. The configure file is too difficult for me to decode, but I did find the lines to check libxv, so I am wondering why the automake failed to add -lxv in the final linking.
Thanks for the report. I must not have gotten all the XV configurability transferred over. I suspect if you try again from a clean build after installing libxv-dev you shouldn't have to add the -lXv flag, but you did indirectly hit a bug. This should be fixed in the next revision.
*edit* Said fix is posted.
As you predicted, I configured with "./configure --with-gtk --with-opengl --with-netplay", cleaned the old objects, and rebuilt version 57. It compiles well.

I tried version 58. There is no problem found :D
uncholowapo
Snes9x White Belt
Posts: 7
Joined: Thu Oct 16, 2008 1:05 am

Post by uncholowapo »

You need to cd to the gtk directory and run the configure script that's located inside that directory instead. That should be the only change you'll need to compile with the new build scripts.
Cool thanks for the tip. Had to remodify my spec file a little bit to get used to the new location :D I made an rpm for Fedora 9 . 8)
Ikki
Snes9x White Belt
Posts: 2
Joined: Sat Nov 22, 2008 6:34 pm

Post by Ikki »

Hi BearOso,

I've just installed your awesome port on my Ubuntu Hardy machine (.deb source - version 58, I couldn't build it from patch). Everything works fine except the analog controls / joypad. I can't use the direction buttons or gamepad's joystick at all.

Any clues? :(
User avatar
BearOso
Official GTK/Linux Porter/Dev
Posts: 460
Joined: Tue Oct 02, 2007 12:50 am

Post by BearOso »

Ikki wrote:Hi BearOso,

I've just installed your awesome port on my Ubuntu Hardy machine (.deb source - version 58, I couldn't build it from patch). Everything works fine except the analog controls / joypad. I can't use the direction buttons or gamepad's joystick at all.

Any clues? :(
There's many things you can try for that.

First, make sure you don't use jscalibrator or Ubuntu's joystick calibrator. These will mess up the kernel calibration for the joystick. If you have a .joystick file in your home directory, delete it and reboot your system.

Second, you can run the calibrator built into Snes9x. You can find it at Preferences->SNES Joypads->Joystick Options. This will measure the maximum values of the directional axes, so if they're lower than usual, it can accommodate.

Third, lower the joystick threshold in Preferences->SNES Joypads->Joystick Options and hit apply. This will make Snes9x more sensitive to directional axis motion.

If none of these fix your problem, and the joystick works fine in other apps, post your gamepad model and your ~/.snes9x/snes9x.xml file after you've run a calibration, and I'll see what I can do.
uncholowapo
Snes9x White Belt
Posts: 7
Joined: Thu Oct 16, 2008 1:05 am

Post by uncholowapo »

Updated my rpm for Fedora 10. Here it is.
Ikki
Snes9x White Belt
Posts: 2
Joined: Sat Nov 22, 2008 6:34 pm

Post by Ikki »

BearOso wrote:
Ikki wrote:Hi BearOso,

I've just installed your awesome port on my Ubuntu Hardy machine (.deb source - version 58, I couldn't build it from patch). Everything works fine except the analog controls / joypad. I can't use the direction buttons or gamepad's joystick at all.

Any clues? :(
There's many things you can try for that.

First, make sure you don't use jscalibrator or Ubuntu's joystick calibrator. These will mess up the kernel calibration for the joystick. If you have a .joystick file in your home directory, delete it and reboot your system.

Second, you can run the calibrator built into Snes9x. You can find it at Preferences->SNES Joypads->Joystick Options. This will measure the maximum values of the directional axes, so if they're lower than usual, it can accommodate.

Third, lower the joystick threshold in Preferences->SNES Joypads->Joystick Options and hit apply. This will make Snes9x more sensitive to directional axis motion.

If none of these fix your problem, and the joystick works fine in other apps, post your gamepad model and your ~/.snes9x/snes9x.xml file after you've run a calibration, and I'll see what I can do.
Finally got it working! You were right, jscalibrator messed up everything. Now things are working just nice.

You should advise people not to use it on your OP. Just a suggestion.

Thanks!
Fnor
Snes9x White Belt
Posts: 4
Joined: Tue Dec 09, 2008 12:28 am

Post by Fnor »

Is snes9x-gtk set up to take joystick input from /dev/js0? I know a lot of distros use /dev/input/js0 nowadays, and I don't see any preferences to specify joystick device.

Anyway, I haven't used jscalibrator to my knowledge (no .joystick). My gamepad responds fine, however (I get output for all the buttons when running jstest --event /dev/js0), and is set up correctly. I'm using a Gravis gamepad pro USB.

I don't get any response from the gamepad when I try to set buttons for it through the GUI. Here's my conf:

Code: Select all

<snes9x>
-
<preferences>
<option name="full_screen_on_open" value="0"/>
<option name="change_display_resolution" value="0"/>
<option name="video_mode" value="0"/>
<option name="scale_to_fit" value="1"/>
<option name="maintain_aspect_ratio" value="0"/>
<option name="scale_method" value="0"/>
<option name="overscan" value="0"/>
<option name="force_hires" value="0"/>
<option name="force_inverted_byte_order" value="0"/>
<option name="data_location" value="0"/>
<option name="multithreading" value="0"/>
<option name="last_directory" value="/home/fnor/ROMs/SNES"/>
<option name="custom_sram_directory" value=""/>
<option name="window_width" value="512"/>
<option name="window_height" value="494"/>
<option name="preferences_width" value="507"/>
<option name="preferences_height" value="480"/>
<option name="pause_emulation_on_switch" value="0"/>
<option name="num_threads" value="2"/>
<option name="default_esc_behavior" value="1"/>
<option name="prevent_screensaver" value="0"/>
<option name="fullscreen" value="0"/>
<option name="ui_visible" value="1"/>
<option name="statusbar_visible" value="1"/>
<option name="ntsc_format" value="1"/>
<option name="ntsc_hue" value="0.000000"/>
<option name="ntsc_saturation" value="0.000000"/>
<option name="ntsc_contrast" value="0.000000"/>
<option name="ntsc_brightness" value="0.000000"/>
<option name="ntsc_sharpness" value="0.000000"/>
<option name="ntsc_warping" value="0.000000"/>
<option name="ntsc_scanline_intensity" value="1"/>
<option name="hw_accel" value="1"/>
<option name="bilinear_filter" value="0"/>
<option name="sync_to_vblank" value="1"/>
<option name="use_pbos" value="1"/>
<option name="pbo_format" value="0"/>
<option name="npot_textures" value="0"/>
<option name="netplay_is_server" value="1"/>
<option name="netplay_sync_reset" value="0"/>
<option name="netplay_send_rom" value="1"/>
<option name="netplay_default_port" value="6096"/>
<option name="netplay_max_frame_loss" value="60"/>
<option name="netplay_last_port" value="6096"/>
<option name="netplay_last_rom" value="/home/fnor/ROMs/SNES/Street Fighter 2 Turbo.smc"/>
<option name="netplay_last_host" value="99.246.206.2"/>
<option name="mute_sound" value="0"/>
<option name="sound_buffer_size" value="32"/>
<option name="transparency" value="1"/>
<option name="show_frame_rate" value="0"/>
<option name="frameskip" value="200"/>
<option name="save_sram_after_secs" value="0"/>
<option name="16bit_sound" value="1"/>
<option name="stereo" value="1"/>
<option name="reverse_stereo" value="0"/>
<option name="gaussian_interpolation" value="1"/>
<option name="envelope_reading" value="0"/>
<option name="sound_echo" value="1"/>
<option name="master_volume" value="0"/>
<option name="playback_rate" value="5"/>
<option name="sound_decoder" value="0"/>
<option name="speedhacks" value="0"/>
<option name="hdma" value="1"/>
<option name="block_invalid_vram_access" value="1"/>
<option name="upanddown" value="0"/>
</preferences>
-
<controls>
-
<joypad number="0">
<binding name="Up" binding="268500818"/>
<binding name="Down" binding="268500820"/>
<binding name="Left" binding="268500817"/>
<binding name="Right" binding="268500819"/>
<binding name="Start" binding="268500749"/>
<binding name="Select" binding="268435548"/>
<binding name="A" binding="268435576"/>
<binding name="B" binding="268435578"/>
<binding name="X" binding="268435571"/>
<binding name="Y" binding="268435553"/>
<binding name="L" binding="268435569"/>
<binding name="R" binding="268435575"/>
<binding name="Turbo A" binding="0"/>
<binding name="Turbo B" binding="0"/>
<binding name="Turbo X" binding="0"/>
<binding name="Turbo Y" binding="0"/>
<binding name="Turbo L" binding="0"/>
<binding name="Turbo R" binding="0"/>
<binding name="Sticky A" binding="0"/>
<binding name="Sticky B" binding="0"/>
<binding name="Sticky X" binding="0"/>
<binding name="Sticky Y" binding="0"/>
<binding name="Sticky L" binding="0"/>
<binding name="Sticky R" binding="0"/>
</joypad>
-
<joypad number="1">
<binding name="Up" binding="0"/>
<binding name="Down" binding="0"/>
<binding name="Left" binding="0"/>
<binding name="Right" binding="0"/>
<binding name="Start" binding="0"/>
<binding name="Select" binding="0"/>
<binding name="A" binding="0"/>
<binding name="B" binding="0"/>
<binding name="X" binding="0"/>
<binding name="Y" binding="0"/>
<binding name="L" binding="0"/>
<binding name="R" binding="0"/>
<binding name="Turbo A" binding="0"/>
<binding name="Turbo B" binding="0"/>
<binding name="Turbo X" binding="0"/>
<binding name="Turbo Y" binding="0"/>
<binding name="Turbo L" binding="0"/>
<binding name="Turbo R" binding="0"/>
<binding name="Sticky A" binding="0"/>
<binding name="Sticky B" binding="0"/>
<binding name="Sticky X" binding="0"/>
<binding name="Sticky Y" binding="0"/>
<binding name="Sticky L" binding="0"/>
<binding name="Sticky R" binding="0"/>
</joypad>
-
<joypad number="2">
<binding name="Up" binding="0"/>
<binding name="Down" binding="0"/>
<binding name="Left" binding="0"/>
<binding name="Right" binding="0"/>
<binding name="Start" binding="0"/>
<binding name="Select" binding="0"/>
<binding name="A" binding="0"/>
<binding name="B" binding="0"/>
<binding name="X" binding="0"/>
<binding name="Y" binding="0"/>
<binding name="L" binding="0"/>
<binding name="R" binding="0"/>
<binding name="Turbo A" binding="0"/>
<binding name="Turbo B" binding="0"/>
<binding name="Turbo X" binding="0"/>
<binding name="Turbo Y" binding="0"/>
<binding name="Turbo L" binding="0"/>
<binding name="Turbo R" binding="0"/>
<binding name="Sticky A" binding="0"/>
<binding name="Sticky B" binding="0"/>
<binding name="Sticky X" binding="0"/>
<binding name="Sticky Y" binding="0"/>
<binding name="Sticky L" binding="0"/>
<binding name="Sticky R" binding="0"/>
</joypad>
-
<joypad number="3">
<binding name="Up" binding="0"/>
<binding name="Down" binding="0"/>
<binding name="Left" binding="0"/>
<binding name="Right" binding="0"/>
<binding name="Start" binding="0"/>
<binding name="Select" binding="0"/>
<binding name="A" binding="0"/>
<binding name="B" binding="0"/>
<binding name="X" binding="0"/>
<binding name="Y" binding="0"/>
<binding name="L" binding="0"/>
<binding name="R" binding="0"/>
<binding name="Turbo A" binding="0"/>
<binding name="Turbo B" binding="0"/>
<binding name="Turbo X" binding="0"/>
<binding name="Turbo Y" binding="0"/>
<binding name="Turbo L" binding="0"/>
<binding name="Turbo R" binding="0"/>
<binding name="Sticky A" binding="0"/>
<binding name="Sticky B" binding="0"/>
<binding name="Sticky X" binding="0"/>
<binding name="Sticky Y" binding="0"/>
<binding name="Sticky L" binding="0"/>
<binding name="Sticky R" binding="0"/>
</joypad>
-
<joypad number="4">
<binding name="Up" binding="0"/>
<binding name="Down" binding="0"/>
<binding name="Left" binding="0"/>
<binding name="Right" binding="0"/>
<binding name="Start" binding="0"/>
<binding name="Select" binding="0"/>
<binding name="A" binding="0"/>
<binding name="B" binding="0"/>
<binding name="X" binding="0"/>
<binding name="Y" binding="0"/>
<binding name="L" binding="0"/>
<binding name="R" binding="0"/>
<binding name="Turbo A" binding="0"/>
<binding name="Turbo B" binding="0"/>
<binding name="Turbo X" binding="0"/>
<binding name="Turbo Y" binding="0"/>
<binding name="Turbo L" binding="0"/>
<binding name="Turbo R" binding="0"/>
<binding name="Sticky A" binding="0"/>
<binding name="Sticky B" binding="0"/>
<binding name="Sticky X" binding="0"/>
<binding name="Sticky Y" binding="0"/>
<binding name="Sticky L" binding="0"/>
<binding name="Sticky R" binding="0"/>
</joypad>
-
<joypad number="5">
<binding name="Up" binding="0"/>
<binding name="Down" binding="0"/>
<binding name="Left" binding="0"/>
<binding name="Right" binding="0"/>
<binding name="Start" binding="0"/>
<binding name="Select" binding="0"/>
<binding name="A" binding="0"/>
<binding name="B" binding="0"/>
<binding name="X" binding="0"/>
<binding name="Y" binding="0"/>
<binding name="L" binding="0"/>
<binding name="R" binding="0"/>
<binding name="Turbo A" binding="0"/>
<binding name="Turbo B" binding="0"/>
<binding name="Turbo X" binding="0"/>
<binding name="Turbo Y" binding="0"/>
<binding name="Turbo L" binding="0"/>
<binding name="Turbo R" binding="0"/>
<binding name="Sticky A" binding="0"/>
<binding name="Sticky B" binding="0"/>
<binding name="Sticky X" binding="0"/>
<binding name="Sticky Y" binding="0"/>
<binding name="Sticky L" binding="0"/>
<binding name="Sticky R" binding="0"/>
</joypad>
-
<joypad number="6">
<binding name="Up" binding="0"/>
<binding name="Down" binding="0"/>
<binding name="Left" binding="0"/>
<binding name="Right" binding="0"/>
<binding name="Start" binding="0"/>
<binding name="Select" binding="0"/>
<binding name="A" binding="0"/>
<binding name="B" binding="0"/>
<binding name="X" binding="0"/>
<binding name="Y" binding="0"/>
<binding name="L" binding="0"/>
<binding name="R" binding="0"/>
<binding name="Turbo A" binding="0"/>
<binding name="Turbo B" binding="0"/>
<binding name="Turbo X" binding="0"/>
<binding name="Turbo Y" binding="0"/>
<binding name="Turbo L" binding="0"/>
<binding name="Turbo R" binding="0"/>
<binding name="Sticky A" binding="0"/>
<binding name="Sticky B" binding="0"/>
<binding name="Sticky X" binding="0"/>
<binding name="Sticky Y" binding="0"/>
<binding name="Sticky L" binding="0"/>
<binding name="Sticky R" binding="0"/>
</joypad>
-
<joypad number="7">
<binding name="Up" binding="0"/>
<binding name="Down" binding="0"/>
<binding name="Left" binding="0"/>
<binding name="Right" binding="0"/>
<binding name="Start" binding="0"/>
<binding name="Select" binding="0"/>
<binding name="A" binding="0"/>
<binding name="B" binding="0"/>
<binding name="X" binding="0"/>
<binding name="Y" binding="0"/>
<binding name="L" binding="0"/>
<binding name="R" binding="0"/>
<binding name="Turbo A" binding="0"/>
<binding name="Turbo B" binding="0"/>
<binding name="Turbo X" binding="0"/>
<binding name="Turbo Y" binding="0"/>
<binding name="Turbo L" binding="0"/>
<binding name="Turbo R" binding="0"/>
<binding name="Sticky A" binding="0"/>
<binding name="Sticky B" binding="0"/>
<binding name="Sticky X" binding="0"/>
<binding name="Sticky Y" binding="0"/>
<binding name="Sticky L" binding="0"/>
<binding name="Sticky R" binding="0"/>
</joypad>
<binding name="GTK_open_rom" binding="0"/>
<binding name="EmuTurbo" binding="0"/>
<binding name="ToggleEmuTurbo" binding="0"/>
<binding name="GTK_pause" binding="268435568"/>
<binding name="DecFrameRate" binding="0"/>
<binding name="IncFrameRate" binding="0"/>
<binding name="DecFrameTime" binding="0"/>
<binding name="IncFrameTime" binding="0"/>
<binding name="Reset" binding="0"/>
<binding name="SoftReset" binding="0"/>
<binding name="GTK_quit" binding="0"/>
<binding name="ToggleBG0" binding="0"/>
<binding name="ToggleBG1" binding="0"/>
<binding name="ToggleBG2" binding="0"/>
<binding name="ToggleBG3" binding="0"/>
<binding name="ToggleSprites" binding="0"/>
<binding name="BGLayeringHack" binding="0"/>
<binding name="Screenshot" binding="0"/>
<binding name="GTK_fullscreen" binding="0"/>
<binding name="QuickSave000" binding="0"/>
<binding name="QuickSave001" binding="0"/>
<binding name="QuickSave002" binding="0"/>
<binding name="QuickSave003" binding="0"/>
<binding name="QuickSave004" binding="0"/>
<binding name="QuickSave005" binding="0"/>
<binding name="QuickSave006" binding="0"/>
<binding name="QuickSave007" binding="0"/>
<binding name="QuickSave008" binding="0"/>
<binding name="QuickLoad000" binding="0"/>
<binding name="QuickLoad001" binding="0"/>
<binding name="QuickLoad002" binding="0"/>
<binding name="QuickLoad003" binding="0"/>
<binding name="QuickLoad004" binding="0"/>
<binding name="QuickLoad005" binding="0"/>
<binding name="QuickLoad006" binding="0"/>
<binding name="QuickLoad007" binding="0"/>
<binding name="QuickLoad008" binding="0"/>
<binding name="SoundChannel0" binding="0"/>
<binding name="SoundChannel1" binding="0"/>
<binding name="SoundChannel2" binding="0"/>
<binding name="SoundChannel3" binding="0"/>
<binding name="SoundChannel4" binding="0"/>
<binding name="SoundChannel5" binding="0"/>
<binding name="SoundChannel6" binding="0"/>
<binding name="SoundChannel7" binding="0"/>
<binding name="SoundChannelsOn" binding="0"/>
<binding name="InterpolateSound" binding="0"/>
<binding name="GTK_save_spc" binding="0"/>
<binding name="BeginRecordingMovie" binding="0"/>
<binding name="EndRecordingMovie" binding="0"/>
<binding name="LoadMovie" binding="0"/>
<binding name="GTK_seek_to_frame" binding="0"/>
</controls>
</snes9x>
User avatar
BearOso
Official GTK/Linux Porter/Dev
Posts: 460
Joined: Tue Oct 02, 2007 12:50 am

Post by BearOso »

Fnor wrote:Is snes9x-gtk set up to take joystick input from /dev/js0? I know a lot of distros use /dev/input/js0 nowadays, and I don't see any preferences to specify joystick device.

Anyway, I haven't used jscalibrator to my knowledge (no .joystick). My gamepad responds fine, however (I get output for all the buttons when running jstest --event /dev/js0), and is set up correctly. I'm using a Gravis gamepad pro USB.

I don't get any response from the gamepad when I try to set buttons for it through the GUI. Here's my conf:
The Gamepad Pro USB is one of the controllers I tested on, so it should work. Both /dev/js* and /dev/input/js* are checked, so that's not the problem.

Are you sure your Snes9x build is compiled with joystick support? See Preferences->Version Info, and look for "Joystick" in the "Features enabled" tag. If you built it yourself, you need to make sure you have SDL and it's development libraries available when building joystick support.
Fnor
Snes9x White Belt
Posts: 4
Joined: Tue Dec 09, 2008 12:28 am

Post by Fnor »

Thanks, BearOso. I recompiled and it worked. You might want to check the default configure, though. ./configure --help says that joystick is configured by default, so when I did my first compile I left out --with-joystick because I thought it was enabled by default.

But it works now! Thanks so much. Would clip my previous post, but there doesn't seem to be an edit function. C'est la vie.
User avatar
BearOso
Official GTK/Linux Porter/Dev
Posts: 460
Joined: Tue Oct 02, 2007 12:50 am

Post by BearOso »

Fnor wrote:Thanks, BearOso. I recompiled and it worked. You might want to check the default configure, though. ./configure --help says that joystick is configured by default, so when I did my first compile I left out --with-joystick because I thought it was enabled by default.

But it works now! Thanks so much. Would clip my previous post, but there doesn't seem to be an edit function. C'est la vie.
I've checked, and the default is indeed with joystick support. But the message when it is automatically disabled because it can't find dependencies is subtle and easily might have scrolled past you during configure. I'll try to make it more noticeable for future releases.
User avatar
BearOso
Official GTK/Linux Porter/Dev
Posts: 460
Joined: Tue Oct 02, 2007 12:50 am

Revision 59

Post by BearOso »

A new version is posted. It will notify at the end of configure if any of the default or selected optional features couldn't be enabled. It also contains functions to swap and reset whole controller button sets in preferences.

There's also a new scanlines filter that doesn't darken the image. I may or may not apply this feature to the NTSC scanline code, because it's slightly more CPU intensive, and the NTSC filter already has manual gamma controls that can alleviate the darkening effect.
Fnor
Snes9x White Belt
Posts: 4
Joined: Tue Dec 09, 2008 12:28 am

Post by Fnor »

Thanks again for all your great work. One observation and one question:

Obeservation: the binary will not function as a server unless "send ROM image to client" is checked. Connections will simply be refused without this option, instead of requesting the remote client to locate a file with the same header (the windows behavior). I suspect something might be mixed up in the frontend code that silently screws up to make the server unreachable.

Question: Your frontend changes the input menu from the windows layout. In particular, you have two controller ports with options for input devices, like the multitap. Earlier, I started as a server, started the ROM, tried every combination of joypad/multitaps between the two console ports (resetting the system after each change). No matter what I did, the third remote client had no control. FFVI, which had multitap support, only showed 2 controllers rather than the 4 it should have recognized if the multitap was recognized.

So my questions is, how do we get multitaps to work, and if they do work, is it only local, or can they work over the network/

Thanks again. Going to try working on an OS X build of this excellent program tomorrow (to allow OS X users to run compatable netcode).
User avatar
BearOso
Official GTK/Linux Porter/Dev
Posts: 460
Joined: Tue Oct 02, 2007 12:50 am

Post by BearOso »

Fnor wrote:Thanks again for all your great work. One observation and one question:

Obeservation: the binary will not function as a server unless "send ROM image to client" is checked. Connections will simply be refused without this option, instead of requesting the remote client to locate a file with the same header (the windows behavior). I suspect something might be mixed up in the frontend code that silently screws up to make the server unreachable.
The ROM's header isn't properly included in the netplay header. If you check, the Windows version asks you to load a ROM afterward, no matter the case, because the checksum never matches. I haven't investigated yet to figure out why, but it's in the core's netplay code. If you're not using "Send ROM image to client", just make sure you've got the right rom in the netplay dialog box.
Question: Your frontend changes the input menu from the windows layout. In particular, you have two controller ports with options for input devices, like the multitap. Earlier, I started as a server, started the ROM, tried every combination of joypad/multitaps between the two console ports (resetting the system after each change). No matter what I did, the third remote client had no control. FFVI, which had multitap support, only showed 2 controllers rather than the 4 it should have recognized if the multitap was recognized.

So my questions is, how do we get multitaps to work, and if they do work, is it only local, or can they work over the network/
I know that's probably screwed up on my part. The only feasible multitap configuration on a real snes was a real controller in port 1 (0), multitap in port 2 (1 2 3 4), and my code sets the multitap for port 2 incorrectly (4 5 6 7). I'll try to fix this later today.

*edit* I've posted a new revision. Try using controller in port 1 and multitap in port 2.

*edit again* And it seems I've also broken something with NetPlay hosting without "Send ROM image to client" enabled in recent releases. So I see what you mean now. Without this box, the server seems to be neglecting to enter NetPlay mode at all, let alone accepting client connections. I'll try to get this fixed, too.

*edit yet again* Ok. I know what's going wrong. In revision 57, I started using a new build system without a patch, and this left out my fix to the core's netplay to prevent the never-succeeding checksum from killing the connection. Revision 61 should fix this.
Fnor
Snes9x White Belt
Posts: 4
Joined: Tue Dec 09, 2008 12:28 am

Post by Fnor »

Thanks for the extremely quick fix. The server now starts properly without having to send the ROM image every time.

*edit* Nevermind, figured it out. Nothing to see here! :)
Deathlike2
Snes9x Brown Belt
Posts: 1158
Joined: Mon Jan 10, 2005 6:34 am

Post by Deathlike2 »

Fnor wrote:Question: Your frontend changes the input menu from the windows layout. In particular, you have two controller ports with options for input devices, like the multitap. Earlier, I started as a server, started the ROM, tried every combination of joypad/multitaps between the two console ports (resetting the system after each change). No matter what I did, the third remote client had no control. FFVI, which had multitap support, only showed 2 controllers rather than the 4 it should have recognized if the multitap was recognized.
FFVI does not have multitap support. It can do 2-players (but it is a weak attempt at best).
uncholowapo
Snes9x White Belt
Posts: 7
Joined: Thu Oct 16, 2008 1:05 am

Post by uncholowapo »

Hey I am having a problem compiling the latest release ()1.51.61) on PPC. I know it's an arch issue because it compiles cleanly on my laptop. Anyways I disable opengl and don't use the assembler because it is on linux on my PS3 and it doesn't have access to the GPU. Here is the error message when I compile:

Code: Select all

/usr/include/X11/extensions/Xrandr.h:88: error: 'Connection' does not name a type
/usr/include/X11/extensions/Xrandr.h:251: error: 'Connection' does not name a type
/usr/include/X11/extensions/Xrandr.h:88: error: 'Connection' does not name a type
/usr/include/X11/extensions/Xrandr.h:251: error: 'Connection' does not name a type
make[1]: *** [snes9x_gtk-gtk_binding.o] Error 1
make[1]: *** Waiting for unfinished jobs....
src/gtk_cheat.cpp:197: warning: unused parameter 'button'
src/gtk_cheat.cpp:203: warning: unused parameter 'button'
src/gtk_cheat.cpp:211: warning: unused parameter 'cell_renderer'
make[1]: *** [snes9x_gtk-gtk_cheat.o] Error 1
dxmv -f .deps/snes9x_gtk-filter_hq2x.Tpo .deps/snes9x_gtk-filter_hq2x.Po
make[1]: Leaving directory `/home/Juan/rpmbuild/BUILD/snes9x-1.51-src/gtk'
make: *** [all-recursive] Error 1
And I use this for the configure process:

Code: Select all

./configure --with-netplay --with-gtk --without-opengl --without-assembler
Post Reply