Build Your Own Arcade Controls Forum
Main => Software Forum => Topic started by: screaming on April 22, 2005, 11:30:22 am
-
Hello all,
I worked on ListGen.NET a lot today while I wait for more info from Buddabing on CPMaker.. and I'm happy to say it's functional! I've used it a bunch of times and generated valid MAMEWAH gamelists, but I'm still releasing it as "beta".
You can get it here: ListGen.NET (http://www.bluecamel.org/software/listgen.net/listgen.net.zip)
It requires the .NET Framework from Microsoft (http://msdn.microsoft.com/netframework/downloads/framework1_1/) (sorry).
It's basically a Windows version of Buddabing's ListGen, and it is to him that all credit for this program should go. He had the great idea and motivation originally and none of this would have happened without him! Eventually it will be a complete replacement for ListGen with commandline options and useable from scripts and such, but for now it's just a GUI that lets you run queries.
Right now you can do basic stuff like run controlled queries, run arbitrary queries, and generate MAMEWAH lists. New formats are easily added without re-downloading the exe, in fact, the one of the first things that you will probably want to do is make a batch-file format.
BUT the very first thing you'll want to do after extracting the .ZIP is to populate the database. To do that, go open up ListGen.NET and go to File -> Import gamedata from -> (select your format). Fill out the following form and click Import. This takes about a minute or so and it might look like it's hung, but I assure you it's not. Just give it a minute (about 30 seconds on my Centrino laptop for .92 MAME).
After that, you can run controlled queries by filling out the main form. If you select some fields and add some criteria, you can save the query by entering a name in the "Save output format" textbox and clicking the Save button.
For those of you who like to make batch files that move ROMs, here's a short tutorial:
1) Open ListGen and populate the database.
2) Select --- Default --- for the Output format
3) Click the ellipses button next to the Fields textbox.
4) In the textbox, type 'move <rom folder>', like 'move c:\mame\roms\', and click Add.
5) In the drop down menu, select romname and click Add
6) In the drop down menu, select --- Advanced ---
7) In the textbox type '.<rom extension> <destination folder>', like '.zip c:\mame\old_roms\', and click Add.
8) Click Save.
9) Back in the main window, make sure the Separator is blank.
10) Enter your criteria by clicking on the New button and filling out the Add criteria form. To filter out mature games, select 'catver_category' then 'LIKE' and then type '%mature%' in the textbox. Click Add.
11) In the Output type section, select Save As, then click the Ellipses button to choose a file to save to. Select a file, or type a new name in the File name textbox. Make sure it has a '.bat' extension, otherwise you won't be able to use it as a batch file. Click Save.
12) If you want to save this to generate a batch file using the same path information specified above, Enter a name in the Save output format: textbox, like "Move ROMs Batch", then click the Save button.
13) Click Run. Wait for the 'Done' message. If this is a batch file, you can click 'Yes' to run it automatically. USE THIS FEATURE AT YOUR OWN RISK!!! If ListGen.NET somehow messes up and wrecks your ROM folder because you ran the resulting batch file I AM NOT RESPONSIBLE!!!
Here's a quick TODO list:
- Add command line options compatible with Buddabing's ListGen, to be used in scripts.
- Add built in gamelist support for any frontend that wants it
- Refine the GUI: add tooltips, more warnings and more intelligent error handling
Like I said, it's still BETA but it's functional. Any help debugging would be most appreciated!
Please post here if you have any questions.
-sab
-
Took a quick look, haven't tried it out yet but I'm extremely dissappointed that there's no flashy 'About' screen in it. :(
-
haha! I'll add that to my todo list ;)
-sab
-
- Add built in gamelist support for any frontend that wants it
Don't forget support for MAME Movie Maker (-frontend moviebatch)
Nice job!
What info did you need on CPMaker?
-
Don't forget support for MAME Movie Maker (-frontend moviebatch)
The format of moviebatch is
@call batch <romname> <height>x<width> <movieloops> <moviestartframe> <movieendframe>
right?
What info did you need on CPMaker?
"pseudo-keycodes" for joystick and mouse inputs... Unless you PMed/emailed them to me and I missed it?
-sab
-
-
- Add built in gamelist support for any frontend that wants it
Don't forget support for MAME Movie Maker (-frontend moviebatch)
Done, and uploaded the new version with this default. The new version also fixes a couple bugs, one of which will cause a problem if you try and make the batch file without updating listgen (and re-populating the db).
Who knew that 'runable' was spelled 'runnable' in MAME? :)
-sab
-
Maybe I did, I don't remember. I'm in the middle of changing a few things around in preparation for supporting my LED controller. I'll try to update the documentation for you.
Yeah, I figured you were busy doing that stuff.. Whenever you can do it, that would be great. No rush!
-sab
-
Who knew that 'runable' was spelled 'runnable' in MAME? :)
Hmm.. When I try to create a db I get "Error (SQLite.NET.SQLiteException: table gamedata has no column named runnable"
-
nm. Deleting the db from the old version fixed it.
-
This is totally cool! I was Googling trying to find a utility to give me a list of all mame games, with their width and height, and stumbled across this program (listgen.net). It does what I need and so much more (I can get just about any list I need)! Nice work!
Kook
-
This is totally cool! I was Googling trying to find a utility to give me a list of all mame games, with their width and height, and stumbled across this program (listgen.net). It does what I need and so much more (I can get just about any list I need)! Nice work!
Hey, thanks! There's a new version coming out soon that will add a couple things.. Check back soon!
-sab
-
I'll second that. This rocks! Bye bye non working, mature, mahjong - great stuff
-
I noticed a field called "isclone" is always blank. Is that normal? I'm generating the list from an XML file (plus catver.ini, nplayers.ini, and gameplay.ini).
Kook
-
I noticed a field called "isclone" is always blank. Is that normal? I'm generating the list from an XML file (plus catver.ini, nplayers.ini, and gameplay.ini).
Hmm.. Good catch! isclone must have been something that Buddabing added to his Listgen (and I just copied off of). I'll fix it in the source, but to get all the clones, use
cloneof <> ''
(that's two single-quotes, not one double-quote).
...or to specify NO clones:
cloneof = ''
-sab
-
I keep getting a "Index was outside the bounds of array @" error when I try to import a .dat or straight from the EXE. I'm using MAME 0.59.
Edit: Hmm, I got it working. It seems it was erroring out on the ssf.txt. Wrong format maybe?
I attached my ssf.txt below.
-
EndTwist,
Great troubleshooting, as always! I've been using the ssf.txt from Buddabing's Listgen distro and it seems that's in a completely different format! I've never used the -ssf feature. Which format is the one it uses?
Skip Startup Frames (-ssf) by Alan (SA Dev)
===========================================
1943, frames to skip 70
720, frames to skip 135
....
vs.
1943,70,3000
720,135,3000
-sab
-
I think the 2nd one is the latest format. Thats how it is in the latest version of listgen that I got anyhow.
-
EndTwist,
-
Silver and I created the new ssf.txt file because the old one doesn't contain the ending frame of the attract mode, only the beginning. As such it is useless for generating movies. The gory details are buried somewhere in the MAME Movie Maker thread. Silver is hosting the new ssf.txt file.
So MMM and BuddaMAME are the only programs that use the new format while everything else (is there anything else?) uses the "old" format?
-sab
-
Silver and I created the new ssf.txt file because the old one doesn't contain the ending frame of the attract mode, only the beginning. As such it is useless for generating movies. The gory details are buried somewhere in the MAME Movie Maker thread. Silver is hosting the new ssf.txt file.
-
Yes. But as far as I am concerned there is no "everything else." :)
ha! Works for me! 8)
-sab
-
Screaming could you walk me thru on how to create a batch file that will copy only the roms from my rom folder that are vertical games with joy4way and joy8way control and are fully working?
Thanks
-
Sure! The secret to coming up with the query is to break it down and make it as simple as possible, then take one piece at a time.
Using ListGen.NET, you would:
1) Set your output format to -- Default --
2) Click the ellipses next to Fields
3) In the new window
a) Type 'copy <source folder>\', like 'copy c:\mame\roms\' (don't forget the backslash at the end!), then click Add.
b) Select romname from the dropdown list, then click Add.
c) Type '.zip <destination folder>', like '.zip c:\mame\oldroms\' (don't forget the period (.) in the beginning!), then click Add.
4) Click Save.
5) Leave the Separator blank, and Headers unchecked.
So far we set up the output. With everything set as it is so far, if you were to click Run you'd end up with a batch file that would copy EVERYTHING. Your batchfile would have lines like: copy c:\mame\roms\puckman.zip c:\mame\oldroms\.
Now we need to specify the criteria. Assuming that you already imported your MAME ROMs through File->Import game data from->-listxml and specified a valid catver.ini, this should work to help narrow down what your looking for:
Since your query is a little complicated (in SQL terms), you'll need to do some grouping. ListGen.NET's interface can't do this yet, but you could certainly still use ListGen.NET:
1) Click the Expert button
2) In the Criteria box, copy-and-paste this:
orientation='vertical'
AND NOT catver_category LIKE '%Unplayable%'
AND (control = 'joy8way' OR control = 'joy4way')
3) Since there's a bug in ListGen.NET, you have to click the Expert button again.
Now click Run!
I did this and got 1333 games back.
I hope this helps!
-sab
-
Thanks screaming! Works like a charm. Great interface by the way.
-
Can I have ListGen put quotes around a particular field. I want ListGen to create a map file for game launcher for zinc.
Latter I might have ListGen create map files for specific categories for mame.
-
This program works great and I'm impressed.
-
jhuie,
Just to repeat here what I sent you a PM about in case someone else has the same problem:
--------
Okay I have 2x good news and 1x bad news:
Good news: I just took a look and I was able to reproduce it using the version you downloaded from the thread you posted in.
Bad news: I never backed up that version of the source so I'm unable to fix it for you and have you stay on that version.
More good news: Version 2.0 (http://forum.arcadecontrols.com/index.php?topic=36762.0) outputs the correct games (I'm pretty sure..) and includes a bunch of new fancy features.
Download version 2 and re-import your ROM info and let me know if you still have the same problem.
Let me know!
--Steve
-
Can I have ListGen put quotes around a particular field. I want ListGen to create a map file for game launcher for zinc.
Latter I might have ListGen create map files for specific categories for mame.
Yeah, that's no problem. Just put '"' as a field. You can seperate your fields with two pipes ( || ) to avoid the field seperator, if you need to.
--Steve
-
jhuie,
Just to repeat here what I sent you a PM about in case someone else has the same problem:
--------
Okay I have 2x good news and 1x bad news:
Good news: I just took a look and I was able to reproduce it using the version you downloaded from the thread you posted in.
Bad news: I never backed up that version of the source so I'm unable to fix it for you and have you stay on that version.
More good news: Version 2.0 (http://forum.arcadecontrols.com/index.php?topic=36762.0) outputs the correct games (I'm pretty sure..) and includes a bunch of new fancy features.
Download version 2 and re-import your ROM info and let me know if you still have the same problem.
Let me know!
--Steve
Was there a bug on my end?
-
Another question. I take it the GUI is just creating a SQL statement for SQLLite. Can I pu tan order by clause in there?
-
Another question.
-
I mean do I type it in the expert box?
Also, what does listgen use for an xml parser?
-
I mean do I type it in the expert box?
I don't know. Possibly. Try "order by year". You should be able to see something different. I personally don't use the .net version.
Also, what does listgen use for an xml parser?
I wrote it myself using flex and bison. Much smaller and faster than using the expat library.
-
ok, then my questions are going to be specific to the .net version. Does those libraries get built into the exe since I don;t see any dlls for xml.
-
I mean do I type it in the expert box?
I don't know. Possibly. Try "order by year". You should be able to see something different. I personally don't use the .net version.
Errr, not working.
-
I just realized I am not using 2.0. Is there a listgen website?
-
I wrote it myself using flex and bison. Much smaller and faster than using the expat library.
Any good links on how to use them with C#?
-
bump, I would like to know how oyu implemented such a fast xml parser in c#
-
Was this question directed at me?
Dedicated parsers will, in general, be faster than a general parser.
So, my flex/bison parser, written in plain C, no sharp, will be faster than any expat-based parser.
It is possible to get flex/bison to output C++ code. It may be possible to for it to output C# code also. Personally, I do not code in C++ or C# at all if it can be helped.
HTH
-
Hey Screaming, I read through this post and searched but I cannot get this program to work right for me, keeping in mind I have the skills of a 6 year old raised in a third world country when it comes to computers and programing etc :P
I'm trying to make a list that includes all games except driving games that required a steering wheel and games that don't work. Also I'd like to have the most relevant copy, I'm still not sure what the 42 different versions of galaga are for so I really only need the one. Any help would be appreciated.
Also, would it be possible to get a list that separates them? IE... one list for lightgun games, one for trackball, spinner, 4 players, 4 way joysticks etc?!? I know this is allot to ask and I understand if you don't have time, I would be just as happy if you could try and point me at a tutorial on using these kind of general commands? Or is it mainly you have to know how to program to understand why you need commands like %4p% in a certain spot , that truly means as much sense to me as Russian.