I already put JMA support back in a while ago. And I'm also already using Nach's new JMA code in this version. (I knew I was forgetting to mention something!)
The diff between v6 and v7 is up. It's at
http://nvdata.pilif.ch/snes9x-imp-v6v7.diff.zip
Only thing missing from that should be the new icon file, and that I updated my version of zLib.
Is this new to just this version? (I doubt it... it's probably safe to assume Nach's JMA update didn't break JMA support.) I haven't changed any of the JMA or ROM-loading code myself, and I'm compiling with JMA_SUPPORT defined, so I'm not sure what could be causing it to not work.
What do you mean by "cannot load"? Does it give an error message or crash or something? The only other possibility that occurs to me is that it's just not letting you choose JMA files from the ROM dialog, which could be because the ROM dialog was changed slightly by the MinGW patch, although I don't see any indication of such an oversight in that code.
$ cd snes9x-improvement6-src/snes9x
$ dos2unix configure Makefile.in `find -iname \*.cpp -o -iname \*.h`
$ sh configure
...
$ make -k
....
gfx.cpp: In function `void S9xDisplayPressedKeys()':
gfx.cpp:3468: error: `Joypad' undeclared (first use this function)
unix.cpp: In function `int main(int, char**)':
unix.cpp:646: error: `S9xProcessEvents' undeclared (first use this function)
unix.cpp: In function `void S9xSyncSpeed()':
unix.cpp:1301: error: `S9xProcessEvents' undeclared (first use this function)
unzip/explode.c:1072:19: crc32.c: No such file or directory
unix/x11.cpp: In function `void S9xProcessEvents(bool8)':
unix/x11.cpp:1742: error: invalid conversion from `wchar_t*' to `uint8'
movie.h:136: error: too few arguments to function `int S9xMovieCreate(const char*, uint8, uint8, uint8, const wchar_t*, int)'
unix/x11.cpp:1742: error: at this point in file
So it comes down to some header file errors, something funny with the unzip code, and changing the parameters of S9xMovieCreate. I had to do some ripping, but I got it.
I'm not going to put per-frame data on the image (ie Frame counter); I'm sending it to stdout instead. That chunk of your patch I'm removing.
And now the problems from v7's source:
snapshot.cpp:602: error: `FREEZE_ERR_WRONG_VERSION' undeclared (first use this function)
(And a whole lot like it.)
i386/cpuexec.o(.text+0x45e): In function `.noOAMreset':
: undefined reference to `S9xUpdateJoypads'
First of all, I'm not aware of any changes I made that would benefit the Unix version, they're mostly Windows-specific, except the desync fixes which I haven't added commandline switches for yet. At the very least I can try to keep the Unix code compiling with the rest of it, though.
These are mostly problems with me not realizing there was unix-specific code (which I can't test) that calls any functions I changed. Shouldn't be hard to fix... What do you think are "header file errors", though (and which header files)?
(About the unzip code, the file it was looking for is zLib\crc32.c, I don't know why it didn't find it for you. But then again, I think you shouldn't need to include that file, but for some reason I need to for it to compile (otherwise it says crc32() is undefined).)
The frame counter already output per-frame data on the image even before I changed it...
This is defined in language.h. It's included by snapshot.cpp (snapshot.cpp->movie.h->snes9x.h->language.h), so I don't know why it isn't being included for you.
This looks like a regular out-of-date-header problem. It's defined in snes9x\i386\sa1struc.h for me, what other file are you using instead of that?
Okay, I botched up applying the patch from v6 to v7. I did it again more carefully and it worked better this time. Sorry, that was my fault and not yours.
But the v6 stuff still holds.
Actually, this is probably a stupid question, but how do you apply these patches? I assume there's a program that can apply them that I just haven't found, but if it has to be done manually, maybe I should just put up the full source since that's a lot of changes to be applying manually...
Okay, here's my unix version from v7.
Most of the new options are available by command-line. Notable entries are -upanddown, -wip and -fakemute.
Specify -keypress to have the frame display (and frame counter, which is only accurate during movie playback) sent to stderr.
I also added frame advance. It's bound to backslash and the [ square bracket ] keys for those keyboards that suck. Keys can't be dynamically bound right now.
http://dehacked.2y.net/snes9x-improvement7-unix.tar.bz2 There's a little bit of cruft left over from the patch, and maybe some stuff from my own compiling.
Joined: 3/9/2004
Posts: 4588
Location: In his lab studying psychology to find new ways to torture TASers and forumers
I recommend not touching that, I found the gnuwin32 packages to always be buggy.
Get the packages from here instead: http://unxutils.sourceforge.net/
Warning: Opinions expressed by Nach or others in this post do not necessarily reflect the views, opinions, or position of Nach himself on the matter(s) being discussed therein.
I have never had problem configurating control to joypad, but this new version, but in this version 7, im having trouble adding joypad control. (I dont know when was introducted, i was jumped from version 4 to 7)
I dont know how to explain it, but it's doing weird screw up. It's not joypad problem (other emu doing fine).
From 4 to 7 I think includes the leap from 1.43 WIP to 1.43 Final, so my guess is your problem has to do with this thread. (EDIT: or maybe it was one of those other threads, I know some of them are about other people experiencing problems configuring their joypad.)
Could you try explaining it even though it's hard to explain? It might help.
Whoa, that's pretty weird/funny. Have you tried setting the buttons one at a time, starting from the right side then the left side, going from bottom to top, and hitting OK after each one is set?
Actually, here's a better workaround for now: Set up your joypad in an older version of Snes9x where it works. Then you can open up the newer version and those settings will be imported.
I figured out what the problem with jma files not working. They actually do load correctly, but they do not show up in the "Open ROM" dialog. You just have to drag the jma file open the snes9x executable and it will load the game propertly.
It should only take 15 seconds to solve the problem; just get the load file dialog to look for .jma as well as the other file extensions it already does.
Joined: 3/9/2004
Posts: 4588
Location: In his lab studying psychology to find new ways to torture TASers and forumers
To make the dialog menu find extensions, edit your valid.ext file and add it.
Warning: Opinions expressed by Nach or others in this post do not necessarily reflect the views, opinions, or position of Nach himself on the matter(s) being discussed therein.
Sorry, I'm still having some problems running snes9x. >.>
[michael@ishmael snes9x]$ osnes9x /home/michael/Sparkster\ \(U\).zip
Rate: 22050, Buffer size: 2048, 16-bit: yes, Stereo: yes, Encoded: no
No ROM file header found.
"SPARKSTER" [checksum ok] LoROM, 8Mbits, Type: ROM only, Mode: 20, TV: NTSC, S-RAM: 0KB, ROMId: ???? Company: A4 CRC32: 40D11C94
joystick: No joystick found.
X Error of failed request: BadMatch (invalid parameter attributes)
Major opcode of failed request: 1 (X_CreateWindow)
Serial number of failed request: 26
Current serial number in output stream: 27
Compiled with:
./configure --with-opengl
make depend
make install
Running Fedora Core 2, Kernel version 2.6.10
Build a man a fire, warm him for a day,
Set a man on fire, warm him for the rest of his life.
That's an error from the X11 library.
I tested the OpenGL code and I give it a "works for me", though I have seen errors like that before when using SSH. I don't know what causes them though.