Player (80)
Joined: 3/11/2005
Posts: 352
Location: Oregon
I got tired of using wine to do recording with Gens on Linux, so I got into the source and ported most of Nitsuja and Jyzero's relevant changes. I also dropped the Glade stuff, made some other UI improvements, added a ram search/display and made all the buttons in the config file human-readable. I'm calling these changes Gens w/ Rerecording and Ram search for Linux (aka grrl, since I'm feeling goofy). I'll keep this post updated with the latest version. The code includes Bisqwit's AVI recording patch (Gens212a-moviepatch-jyzero,bisqwit), but I haven't tested it. It's also very Linux-centric and a little rough around the edges. Edit: I've set up a page on the wiki that will contain anything of interest.
ideamagnate| .seen aqfaq <nothing happens> DK64_MASTER| .seen nesvideoagent * DK64_MASTER slaps forehead
SXL
Joined: 2/7/2005
Posts: 571
if you have actually such knowledge, which impresses me a lot, would you be able to take on the (whole) development of the gens with rerecording/savestates project ? I'm guessing you lack free time to work on such a large project, but since all coders that were on it seem to have given up (nitsuja, jyzero, our heroes, namely), it'd be great if someone was still willing to take care of it. I know nothing about gens coding, but since you're able to import the tas features to the original gens sources, even if it's on linux, maybe you could try to do the same to gens+ v.961 ? the main interest would be sms/gg emulation, which we desperately need ;_; (if possible under windows...) anyway, kudos on your work, it's nice to see that there are still dedicated coders on such emulators :)
I never sleep, 'cause sleep is the cousin of death - NAS
Player (80)
Joined: 3/11/2005
Posts: 352
Location: Oregon
I know next to nothing about win32 coding and don't have a personal windows box to work with, so I can't help beyond Linux. Gens+ is nice, but I don't have the time to port it and I don't have the knowledge or tools to add rerecording to the win32 version. For now, I can only say that I'll keep this code working.
ideamagnate| .seen aqfaq <nothing happens> DK64_MASTER| .seen nesvideoagent * DK64_MASTER slaps forehead
SXL
Joined: 2/7/2005
Posts: 571
thanks anyway, and keep up the good work ! cheers.
I never sleep, 'cause sleep is the cousin of death - NAS
Editor, Reviewer, Experienced player (968)
Joined: 4/17/2004
Posts: 3107
Location: Sweden
Did I understand correctly if this version is Linux only? It would be really nice with a Gens for Windows that could handle both rerecording and RAM search/display. Currently I have to use two different versions for that. Plus some other changes I'd like to see made but haven't got the skill to implement.
Former player
Joined: 3/23/2006
Posts: 211
fantastic :) thanks IdeaMagnate I couldn't work out how to turn frameskip off - so I ended up editing the source code :P Who needs command line options!
do not forget to *ENJOY THE SAUCE*
Player (80)
Joined: 3/11/2005
Posts: 352
Location: Oregon
Truncated wrote:
Did I understand correctly if this version is Linux only? It would be really nice with a Gens for Windows that could handle both rerecording and RAM search/display. Currently I have to use two different versions for that. Plus some other changes I'd like to see made but haven't got the skill to implement.
Yeah, it's Linux-only. SDL can be used under windows so I could theoretically port it, but I'd need to get a windows box first.
ideamagnate| .seen aqfaq <nothing happens> DK64_MASTER| .seen nesvideoagent * DK64_MASTER slaps forehead
Player (70)
Joined: 8/24/2004
Posts: 2562
Location: Sweden
AWESOME!!! Thanks alot for this port man! No more wine as you said! :D Also BIG thanks for the RAM reading feature. You really deserv a new rang as a coder now! Edit: Is there any GUI attached to this? I could only get it to work with command line. Also I would appreciate to get a tutorial on how the RAM watcher works. For example if one wants to find out how to find the RAM where a game stores boss health and stuff like that. Cheers!
Player (80)
Joined: 3/11/2005
Posts: 352
Location: Oregon
I disabled the gui code because it was slower than using the keyboard, harder to extend and not compiling reliably. Using the keyboard is faster, and it's all configurable. More info on that and the ram search are in the file grrl_info, which is included with the source.
ideamagnate| .seen aqfaq <nothing happens> DK64_MASTER| .seen nesvideoagent * DK64_MASTER slaps forehead
Post subject: Re: grrl: no more wine-ing
upthorn
He/Him
Emulator Coder, Active player (388)
Joined: 3/24/2006
Posts: 1802
IdeaMagnate wrote:
* ram search and onscreen display (won't work with 32x or SegaCD for now, see grrl_info for details)
Can I get a heads up on where you put those ram search functions, those sound really useful, it'd be nice to have them working in windows. Plus, I can probably help with 32X and SegaCD support.
How fleeting are all human passions compared with the massive continuity of ducks.
dtm
Joined: 3/11/2006
Posts: 43
Good job. Love the name.
Post subject: Re: grrl: no more wine-ing
Player (80)
Joined: 3/11/2005
Posts: 352
Location: Oregon
upthorn wrote:
IdeaMagnate wrote:
* ram search and onscreen display (won't work with 32x or SegaCD for now, see grrl_info for details)
Can I get a heads up on where you put those ram search functions, those sound really useful, it'd be nice to have them working in windows. Plus, I can probably help with 32X and SegaCD support.
The ram search will probably need some modification for a windows environment. It's all in ram_search.cpp and .h . RAM_Search_Menu is called from g_main_dummy.cpp and drops the user to the CLI, so you'll probably need to mess with it to make it guier. As for 32X and SegaCD support, they'll be simple to get working. I just need to fix the code to work well with more than one possible ram size.
ideamagnate| .seen aqfaq <nothing happens> DK64_MASTER| .seen nesvideoagent * DK64_MASTER slaps forehead
Player (80)
Joined: 3/11/2005
Posts: 352
Location: Oregon
I've got a Subversion repository for this now. The adventurous among you can get it by doing the following: svn co svn://anonymous@mksig.org/repos/gens_grrl/trunk/gens_linux
ideamagnate| .seen aqfaq <nothing happens> DK64_MASTER| .seen nesvideoagent * DK64_MASTER slaps forehead
Player (70)
Joined: 8/24/2004
Posts: 2562
Location: Sweden
Any news on this? Is work still being done?
Player (80)
Joined: 3/11/2005
Posts: 352
Location: Oregon
This isn't dead, although I've been offline for the past couple weeks. I've tried to port upthorn's SegaCD changes, but they cause a segfault with SDL when playing SonicCD, which means there'll probably be lots of debugging to figure out what's broken. I'm also working on a few other Gens-related things, which will eventually include upthorn's other changes, where relevant.
ideamagnate| .seen aqfaq <nothing happens> DK64_MASTER| .seen nesvideoagent * DK64_MASTER slaps forehead
Player (70)
Joined: 8/24/2004
Posts: 2562
Location: Sweden
Sounds great. Keep it up mano!
Player (70)
Joined: 8/24/2004
Posts: 2562
Location: Sweden
Um... How do I build the source that comes out of the SVN?
Player (80)
Joined: 3/11/2005
Posts: 352
Location: Oregon
Make a directory somewhere and run the following:
svn co svn://anonymous@mksig.org/repos/gens_grrl/trunk/gens_linux
cd gens_linux/gens
make
I've been doing this to test if my commits work, so everything should compile, at the very least. I make no guarantees about what will work, though.
ideamagnate| .seen aqfaq <nothing happens> DK64_MASTER| .seen nesvideoagent * DK64_MASTER slaps forehead
Player (70)
Joined: 8/24/2004
Posts: 2562
Location: Sweden
Getting errors still when trying to compile it. make gcc -Wall -Wextra -g -D__PORT__ -O0 `sdl-config --cflags` -c -o base64.o base64.c cc1: error: unrecognized option `-Wextra' make: *** [base64.o] Error 1
Player (80)
Joined: 3/11/2005
Posts: 352
Location: Oregon
Sounds like you may be using gcc-3.3 or earlier, which doesn't know about -Wextra. I only have it in there to make bugs a little easier to find, so you can safely edit Makefile and take it out.
ideamagnate| .seen aqfaq <nothing happens> DK64_MASTER| .seen nesvideoagent * DK64_MASTER slaps forehead
Joined: 2/15/2005
Posts: 246
Location: Torquay, England
First off, I thank you for making this, since wine'ing Gens never did work for me. However, is there meant to be no menu? There seems to be a lot of code in the source that was designed for Windows, and just hasn't been removed. Now, unfortunately for me, the source code makes hardly any sense (except for the obvious bits), and I need to know how the GYM format works. If you know, could you tell me?
Player (80)
Joined: 3/11/2005
Posts: 352
Location: Oregon
This might be of interest, although it indicates that understanding the format means also understanding the YM2612. This may help you there.
ideamagnate| .seen aqfaq <nothing happens> DK64_MASTER| .seen nesvideoagent * DK64_MASTER slaps forehead
Active player (410)
Joined: 3/16/2004
Posts: 2623
Location: America, Québec
When compiling, I got an error
gens.h:3:31: error: readline/readline.h: Aucun fichier ou répertoire de ce type
cd_aspi.cpp:496: warning: unused parameter ‘format’
cd_aspi.cpp:872: warning: unused parameter ‘flag’
cd_aspi.cpp:947: warning: unused parameter ‘flag’
cd_aspi.cpp:1016: warning: unused parameter ‘flag’
cd_aspi.cpp:1108: warning: unused parameter ‘flag’
cd_aspi.cpp: In function ‘int ASPI_Mechanism_State_COMP(SRB_ExecSCSICmd*)’:
cd_aspi.cpp:1399: warning: passing NULL to non-pointer argument 1 of ‘void MessageBox(int, const char*, const char*, int)’
cd_aspi.cpp:1408: warning: passing NULL to non-pointer argument 1 of ‘void MessageBox(int, const char*, const char*, int)’
cd_aspi.cpp: At global scope:
cd_aspi.cpp:1510: warning: unused parameter ‘s’
cd_aspi.cpp:1649: warning: unused parameter ‘s’
cd_aspi.cpp:1925: warning: unused parameter ‘s’
cd_aspi.cpp:1938: warning: unused parameter ‘s’
make: *** [cd_aspi.o] Erreur 1
and gcc version 4.1.2
Player (70)
Joined: 8/24/2004
Posts: 2562
Location: Sweden
I also get some errors, about the same problem, I think. :D
make
g++ -Wall -Wextra -g -D__PORT__ -O0 `sdl-config --cflags`    -c -o cd_aspi.o cd_aspi.cpp
/bin/sh: sdl-config: command not found
In file included from g_main.h:4,
                 from cd_aspi.cpp:10:
gens.h:1:17: error: SDL.h: No such file or directory
gens.h:3:31: error: readline/readline.h: No such file or directory
g_main.h:58: error: 'SDL_keysym' does not name a type
g_main.h:59: error: 'SDL_keysym' does not name a type
g_main.h:60: error: 'SDL_keysym' does not name a type
g_main.h:61: error: 'SDL_keysym' does not name a type
g_main.h:62: error: 'SDL_keysym' does not name a type
g_main.h:63: error: 'SDL_keysym' does not name a type
g_main.h:64: error: 'SDL_keysym' does not name a type
g_main.h:65: error: 'SDL_keysym' does not name a type
g_main.h:66: error: 'SDL_keysym' does not name a type
g_main.h:67: error: 'SDL_keysym' does not name a type
g_main.h:68: error: 'SDL_keysym' does not name a type
g_main.h:69: error: 'SDL_keysym' does not name a type
g_main.h:70: error: 'SDL_keysym' does not name a type
g_main.h:71: error: 'SDL_keysym' does not name a type
g_main.h:72: error: 'SDL_keysym' does not name a type
g_main.h:73: error: 'SDL_keysym' does not name a type
g_main.h:74: error: 'SDL_keysym' does not name a type
g_main.h:75: error: 'SDL_keysym' does not name a type
g_main.h:76: error: 'SDL_keysym' does not name a type
g_main.h:77: error: 'SDL_keysym' does not name a type
g_main.h:78: error: 'SDL_keysym' does not name a type
g_main.h:79: error: 'SDL_keysym' does not name a type
g_main.h:80: error: 'SDL_keysym' does not name a type
g_main.h:81: error: 'SDL_keysym' does not name a type
g_main.h:82: error: 'SDL_keysym' does not name a type
g_main.h:83: error: 'SDL_keysym' does not name a type
g_main.h:84: error: 'SDL_keysym' does not name a type
g_main.h:85: error: 'SDL_keysym' does not name a type
g_main.h:86: error: 'SDL_keysym' does not name a type
g_main.h:87: error: 'SDL_keysym' does not name a type
g_main.h:88: error: 'SDL_keysym' does not name a type
g_main.h:89: error: 'SDL_keysym' does not name a type
g_main.h:90: error: 'SDL_keysym' does not name a type
g_main.h:91: error: 'SDL_keysym' does not name a type
g_main.h:92: error: 'SDL_keysym' does not name a type
g_main.h:93: error: 'SDL_keysym' does not name a type
g_main.h:94: error: 'SDL_keysym' does not name a type
g_main.h:95: error: 'SDL_keysym' does not name a type
g_main.h:96: error: 'SDL_keysym' does not name a type
g_main.h:97: error: 'SDL_keysym' does not name a type
g_main.h:98: error: 'SDL_keysym' does not name a type
g_main.h:99: error: 'SDL_keysym' does not name a type
g_main.h:100: error: 'SDL_keysym' does not name a type
g_main.h:101: error: 'SDL_keysym' does not name a type
g_main.h:102: error: 'SDL_keysym' does not name a type
g_main.h:103: error: 'SDL_keysym' does not name a type
g_main.h:104: error: 'SDL_keysym' does not name a type
g_main.h:105: error: 'SDL_keysym' does not name a type
g_main.h:106: error: 'SDL_keysym' does not name a type
g_main.h:107: error: 'SDL_keysym' does not name a type
g_main.h:108: error: 'SDL_keysym' does not name a type
g_main.h:109: error: 'SDL_keysym' does not name a type
g_main.h:110: error: 'SDL_keysym' does not name a type
g_main.h:111: error: 'SDL_keysym' does not name a type
g_main.h:112: error: 'SDL_keysym' does not name a type
g_main.h:113: error: 'SDL_keysym' does not name a type
g_main.h:114: error: 'SDL_keysym' does not name a type
g_main.h:115: error: 'SDL_keysym' does not name a type
g_main.h:116: error: 'SDL_keysym' does not name a type
g_main.h:117: error: 'SDL_keysym' does not name a type
g_main.h:118: error: 'SDL_keysym' does not name a type
g_main.h:119: error: 'SDL_keysym' does not name a type
g_main.h:120: error: 'SDL_keysym' does not name a type
g_main.h:121: error: 'SDL_keysym' does not name a type
g_main.h:122: error: 'SDL_keysym' does not name a type
g_main.h:123: error: 'SDL_keysym' does not name a type
g_main.h:124: error: 'SDL_keysym' does not name a type
g_main.h:125: error: 'SDL_keysym' does not name a type
g_main.h:126: error: 'SDL_keysym' does not name a type
g_main.h:127: error: 'SDL_keysym' does not name a type
g_main.h:128: error: 'SDL_keysym' does not name a type
g_main.h:129: error: 'SDL_keysym' does not name a type
g_main.h:130: error: 'SDL_keysym' does not name a type
g_main.h:131: error: 'SDL_keysym' does not name a type
g_main.h:132: error: 'SDL_keysym' does not name a type
g_main.h:133: error: 'SDL_keysym' does not name a type
g_main.h:134: error: 'SDL_keysym' does not name a type
g_main.h:135: error: 'SDL_keysym' does not name a type
g_main.h:136: error: 'SDL_keysym' does not name a type
g_main.h:137: error: 'SDL_keysym' does not name a type
g_main.h:138: error: 'SDL_keysym' does not name a type
g_main.h:139: error: 'SDL_keysym' does not name a type
g_main.h:140: error: 'SDL_keysym' does not name a type
g_main.h:141: error: 'SDL_keysym' does not name a type
g_main.h:142: error: 'SDL_keysym' does not name a type
g_main.h:143: error: 'SDL_keysym' does not name a type
g_main.h:163: error: 'SDL_keysym' was not declared in this scope
g_main.h:163: error: 'ks' was not declared in this scope
cd_aspi.cpp:496: warning: unused parameter 'format'
cd_aspi.cpp:872: warning: unused parameter 'flag'
cd_aspi.cpp:947: warning: unused parameter 'flag'
cd_aspi.cpp:1016: warning: unused parameter 'flag'
cd_aspi.cpp:1108: warning: unused parameter 'flag'
cd_aspi.cpp: In function 'int ASPI_Mechanism_State_COMP(SRB_ExecSCSICmd*)':
cd_aspi.cpp:1399: warning: passing NULL to non-pointer argument 1 of 'void MessageBox(int, const char*, const char*, int)'
cd_aspi.cpp:1408: warning: passing NULL to non-pointer argument 1 of 'void MessageBox(int, const char*, const char*, int)'
cd_aspi.cpp: At global scope:
cd_aspi.cpp:1510: warning: unused parameter 's'
cd_aspi.cpp:1649: warning: unused parameter 's'
cd_aspi.cpp:1925: warning: unused parameter 's'
cd_aspi.cpp:1938: warning: unused parameter 's'
make: *** [cd_aspi.o] Error 1
 g++ --version
g++ (GCC) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21) 
Player (80)
Joined: 3/11/2005
Posts: 352
Location: Oregon
I somehow missed your post, Phil. Sorry. You need to install the sdl and readline headers. In Debian the packages are libsdl1.2-dev and libreadline5-dev, iirc. If you're using the Subversion code, get the latest version. It's got some Pulseman-specific stuff if'd out, since it won't be useful unless you're doing that game.
ideamagnate| .seen aqfaq <nothing happens> DK64_MASTER| .seen nesvideoagent * DK64_MASTER slaps forehead