ListGen came about as a program to generate game lists for front end applications. Here are some of the reasons I created it.
If filtering is used, most front ends require many lists which the user must toggle between.
I do not want umpteen-zillion copies of every single version of Pac-Man.
One one copy. It's surprisingly difficult to have one game list with Pac-Man in it that doesn't have a gazillion Pac-Man games in it.
| -output <string> | output filename | |
| -secondary_output <string> | secondary output filename | |
| -filter <string> | filter.sql | filter SQL filename |
| -frontend <string> | moviebatch | frontend name |
| -[no]verbose | 0 | verbose screen output |
| -[no]strip_description | 0 | Strip extra text from game descriptions |
| -us_version_priority <int> | 0 | set priority of US versions |
| -world_version_priority <int> | 0 | set priority of World versions |
| -japan_version_priority <int> | 0 | set priority of Japan versions |
| -euro_version_priority <int> | 0 | set priority of Euro versions |
| -[no]silent | <0> | no screen output at all |
| -[no]reuse_mame_data | 0 | Reuse MAME-generated data files each time program is run |
| -[no]use_clones | 0 | Include clones in list |
| -[no]unique | 0 | Include only unique games |
| -[no]audit_roms | 0 | remove game with roms not in rom path |
| -rompath <string> | . | set ROM path |
| -mamepath <string> | . | set MAME path |
| -mamename <string> | mame.exe | set MAME executable name |
| -catverpath <string> | . | Set path for catver.ini |
| -gameplaypath <string> | . | Set path for gameplay.ini |
| -nplayerspath <string> | . | Set path for nplayers.ini |
| -input <string> | input filename (for listfilt) | |
| -showusage / -su | Show options | |
| -version | show version number | |
| -boundary_path <string> | . | path to file of start and end frames |
| -boundary_file <string> | filename of start and end frames | |
| -[no]force_uppercase_romnames | 0 | force rom names in output to be upper case |
| -[no]force_lowercase_romnames | 0 | force rom names in output to be lower case |
| -[no]skip_final_step | 0 | use SQL result file as final output |
catver.ini
The catver.ini file contains category information about all games in MAME.
Link to catver.ini website
Here's a short excerpt from catver.ini:
19xxj=Shooter / Flying Vertical 19xxjr1=Shooter / Flying Vertical 2020bb=Sports / Baseball 2020bba=Sports / Baseball 2020bbh=Sports / Baseball 280zzzap=Driving / 1st Person 3countb=Wrestling 3in1semi=Multiplay 3kokushi=Puzzle / Match *Mature* 3stooges=Shooter / Field 3wonders=Multiplay 3wonderu=Multiplay 40love=Sports / Tennis 47pie2=Tabletop / Mahjong *Mature* 47pie2o=Tabletop / Mahjong *Mature* 4dwarrio=Shooter / Flying Horizontal 4enraya=Tabletop 4in1=Multiplay 4in1boot=Multiplay 4psimasy=Tabletop / Mahjong *Mature*
Catver.ini contains the necessary information if you want to filter out certain categories, such as all mahjong games, or all mature-themed games, or all trackball games, and so on.
nplayers.ini
Here's what the authors of nplayers.ini had to say about their file:
"NPlayers.ini fills the "Players" column of your favourite MAME frontend letting you know how many players the game supports and if it's simultaneous play or not. You'll find more info in the text file included in the zip archive."
Here's an excerpt from nplayers.ini:
2020bb=2P sim 2020bba=2P sim 2020bbh=2P sim 280zzzap=1P 3countb=2P sim 3in1semi=??? 3kokushi=2P sim 3stooges=3P sim 3wonders=2P sim 3wonderu=2P sim 40love=2P alt 47pie2=1P 47pie2o=1P 4dwarrio=2P alt 4enraya=2P sim 4in1=2P alt 4in1boot=2P sim 4psimasy=1P 600=2P alt 64streej=2P sim 64street=2P sim 720=2P alt 720g=2P alt
As you can see, the rom name is followed by a description of how many players can play, and whether gameplay is simultaneous (sim) or alternating (alt).
gameplay.ini
Gameplay.ini is distributed with the Kymaera front end application.
Here's what PacManFan, the maintainer of gameplay.ini, has to say:
"This file can be used by many MAME frontends to help in generating game
lists based on :
MNOP <- Max Number Of Players
NOSP <- Number Of Simultaneous Players
GamePlay <- One of several types
ControlLayout <- Basic Control Panel Layout
For the latest version of Gameplay.ini, go to: Kymaera home page"
Here's a short excerpt from gameplay.ini:
[puckman] NOSP=1 MNOP=2 GamePlay=Alternating ControlLayout=Single Player [puckmana] NOSP=1 MNOP=2 GamePlay=Alternating ControlLayout=Single Player [pacman] NOSP=1 MNOP=2 GamePlay=Alternating ControlLayout=Single Player [puckmod] NOSP=1 MNOP=2 GamePlay=Alternating ControlLayout=Single Player [pacmod] NOSP=1 MNOP=2 GamePlay=Alternating ControlLayout=Single Player [hangly] NOSP=1 MNOP=2 GamePlay=Alternating ControlLayout=Single Player
As you can see, this file has more complete information on it than the nplayers.ini does.
ssf.txt
The SSF initials in the ssf.txt file stand for Skip Startup Frames.
boundary.txt
The boundary.txt file is maintained by a BYOAC member named Silver, and is used by MAME Movie Maker. Although MAME Movie Maker creates accurate attract mode loops for a great majority of games within MAME, some games could use a little tweaking. This file contains a list of rom names, each with a starting frame number and ending frame number. When fed into MAME Movie Maker, a movie will be created between those two specified frame numbers.
gamelist.txt
listfull.txt
MAMEWah