So you have a rom set containing nearly 40,000 Games, while just scrolling endlessly through the games may be cool way to impress friends and family unfamiliar with the MAME, It’s really not all that practical when it comes time to play. The latest MAME set simply has alot of roms, and these include multiple versions dumps, bad dumps, bootlegs, games that can’t even be emulated, and even video slot machines and mahjong.
The amount of roms the normal individual might ever desire or even consider playing is a small fraction of the total size, leaving us in somewhat of a predicament. You See MAME rom sets aren’t named in such a fashion we could simply scroll down and grab the title we recognize or those that even sound fun, but rather short abbreviations that sometimes make sense and many times make absolutely no sense. This is why dealing with such a large Rom set can be time consuming and frustrating to say the least.
So with that being said before we dig into manual sorting, I would like to point out there are a couple of simple solutions to the problem that could save you allot of time.
Alternative Options To Sorting.
The first option if using a frontend such as HyperSpin or others, they typically have built in filters allowing you to simply eliminate what you don’t want displayed with a click of a button, why wouldn’t we do that in the first place? Well this requires you to have the entire rom set loaded on the drive, and if 600GB means when 560+GB of that is roms you will never play then it would be a good choice in respects to time and convenience.
The Second option is finding custom XML files. These custom XML files filter out Mahjong and Mature content at the least, getting even more customized to including the top 100 Arcade Games ever etc. The important thing to keep in mind is ensuring the Rom set you currently have is “Exact” version of the XML list, and that the Rom set you are about to break up is “Split” and not “Merged”. Unlike the previously mentioned method this doesn’t require you to store the entire MAME set but rather what roms you choose to filter out. Also, when you see a list that says the “Top X Arcade Games” or the “The Best Arcade Fighters” etc. This list was put together by another individual who’s tastes my greatly differ from yours in respects to what types of games.
So to move on, if you don’t mind quickly breaking that 40k set down to about 1500 in a matter of a few minutes and carefully breaking that set down even further based on your own personal interests then continue reading as this is the method I prefer and will be outlining in this article. 🙂
The first thing we will need is a Rom set that is “Split” (if Merged, you will need to split it with clrMamePro) I also suggest you pick up a MAME set that is a few versions back from the current, these are released nearly bi-Monthly and if wanting to use other peoples XML lists, or Current HyperBase’s etc. MAME updates quicker than people generating those lists.
Now that we have everything, ensure that you have Installed MAME vx.xx, Opened the Settings and have it pointed to the Correct roms Directory; (CHD’s Should be in the Same Directory but Sub-folder.) The .ini, .xml files have been extracted, and Rom Lister & HyperRom2XML have been extracted as well.
Lets go ahead and open RomLister & Click on Settings and Tools (Top Right Corner)
Look towards the middle for Merge Utility
Lets go ahead and set the following up beginning with MAME ListXML by clicking on “Browse” and directing it to your Mame.exe file, The rest should point to the files we downloaded earlier. when all 4 files have been pointed to, click on “Merge“, save it someplace as RLMasterDB and give it some time!, once this finished, make a copy of the file somewhere you won’t lose it as we don’t want to go through all that again.
Back in Settings and Tools, under “Input XML File” Ensure it is pointed to the new file you created, otherwise click on Browse and select this new file, then click on “Set“
So we are Now ready to get started, close the settings, and back on the main screen clear the search bottom at the bottom (delete everything in there) and paste the following:
(!cloneof & !emulation=preliminary) & !(isbios=yes) & driver_status=imperfect !(’ Mature’ | PlayChoice | ‘Mega Play’ | ‘Nintendo Super System’ | ‘SNES bootleg’ | Megadrive | huc6260 | (n2a03 & Vs.))
So it should looks something like this:
With the cursor still in the box press “enter” and a window looking similar should pop up:
Now lets take a Moment to explain this, First I would like to give credit to Alexandra who curated this search string and others you can find here. I would also like to explain what we just did so you know what you have, and where this will be great but can also become a bit of a headache, please read thorough now or I’m sure you will be returning later to read when stuck; Lets break down the terms:
- !cloneof Means No clones, typically a good thing while there are a few good clones out there you can manually add them if you would like them at the end.
- !emulation=preliminary This means the Rom is considered 100% emulated and working! While that might sound like exactly what we want, this leaves out several games that work fine that most would not be able to tell the difference, “Galaga” for example doesn’t have 100% match of the original sound, therefore is not included in the search you just pulled, but many might want that game.
- !(isbios=yes) These are Bios Files, not helpful when looking for games, but needed later.
- !(’ Mature’ | PlayChoice | ‘Mega Play’ | ‘Nintendo Super System’ | ‘SNES bootleg’ | Megadrive | huc6260 | (n2a03 & Vs.) As you can guess this removes the “Naughty” games, and the console games, including the PlayersChoice Machine.
So now that you have a clear understanding of what your searching, lets now go back to the !emulation=preliminary topic. As I mentioned before using this particular modifier for a search is a double-edged sword with more positives than negatives. Though moving forward, I would like to continue using it as it will help us immensely, but I know several titles may be excluded that I may be interested in playing. So, the best option I have come up with is clearing the search box, and searching the following:
!emulation=preliminary & !('BIOS') & driver_status=imperfect
This will give us a list of Games That work but are “Imperfect” Like Galaga, Virtua Fighter, Ms. Pac-Man etc. My guess in most cases you won’t even be able to determine exactly what is “Imperfect” even if you were looking for it. So, let’s keep this search in mind for the end when we are finalizing our Rom Set, in the meantime going forth we will be excluding them from our searches.
Now let’s edit the rlmacros.txt file located in the ROMLister directory, we want to add the following line:
@X = (!cloneof & !emulation=preliminary) & !(isbios=yes) & !(’ Mature’ | PlayChoice | ‘Mega Play’ | ‘Nintendo Super System’ | ‘SNES bootleg’ | Megadrive | huc6260 | (n2a03 & Vs.))
We are going to add an additional string to filter out games we don’t have the ability to play based on their controls, these include Dual Joysticks, Trigger Sticks, Spinners, & Trackballs. You will insert the following below the last line:
@C = !('doublejoy8way' | 'doublejoy4way' | 'vdoublejoy2way' | 'doublejoy' | 'Spinner' | 'Triggerstick' | 'Trackball')
Though if you do in fact have a Spinner or Trackball etc. Simply remove the controls from the list, make sure there is only 1 “|” between each item when your done editing.
Go ahead and save that File Assuming you have already closed RomLister, go ahead and reopen it, in the Search box clear out everything again and go ahead and search:
@X & @C
Notice how that list with a little over 5K has now popped up? Good, now we don’t have to input all that every time. With this macro in place we are going to move on to narrowing down the searches to what we are looking for quickly.
Every game has a Category it belongs too, and there are Several categories, a ridiculous number of categories to choose from. Though to save space and time of reading mindless stuff lets just get you acquainted with the Main categories you will most likely be looking for.
Platform / Run Jump
Includes Donkey Kong, Bubble Bobble, Burger Time, Q Bert, Mario Bros., Mappy etc.
Platform / Fighter Scrolling
Ghost ‘n Goblins, Altered Beast, Ninja Gaiden, Blues Journey etc.
Platform / Shooter Scrolling
Metal Slug, Contra, Robocop, Bionic Commando etc.
Fighter / Versus
Street Fighter, Mortal Kombat, The King of Fighters, Fatal Fury, Samuari Showdown etc.
Fighter / 2.5D
Double Dragon, X Men, Teenage Mutant Ninja Turtles, The Simpsons etc.
Puzzle / Drop
Tetris, Puyo Pop, Columns, Dr. Mario
Maze / Ball Guide
Maze / Shooter Large
Gauntlet, Alien Syndrome
Maze / Cross
Maze / Digging
Boulder Dash, Mr. Do!, Dig Dug, Neo Mr. Do!
Maze / Collect
Ms. Pac-Man, Dig Dug II, Bomber Man etc.
Shooter / Walking
Bucky O’Hare, The Real Ghostbusters, Ikari Warriors etc.
Shooter / Gallery
Centipede, Galaga, Galaxia, Space Invaders, Tempest etc.
Shooter / Flying Vertical
194X, Aero Fighters, Raiden, Twin Eagle etc.
Shooter / Flying Horizontal
Fantasy Zone, R-Type, Gradius, Cotton etc.
Shooter / Field
Asteroids, Robotron, Time Pilot etc. (1489)
Most big titles you have heard of will be in one of those categories, excluding Sports as I simply don’t play Sports Games but if you would like to add them they are titled in categories as you may have guessed: Sports / Soccer, Sports / Football, Sports / Basketball, Sports / Baseball
There are Several Other Games Like Arknoid, Area 51, Carnevil, Jurassic Park Etc. That Require a Spinner or a light gun that mostly fall into these 2 categories:
Ball & Paddle / Breakout
Shooter / Gun
If you don’t have a gun or Spinner there is no point in adding these roms to our completed set hence I left them out. If you by chance have a light gun or spinner be sure to search each category (Also for spinner you have to remove it from the macro we created earlier if you haven’t already) you can search each category simply from the App with the following line:
@X & ('Shooter / Gun')
So, Lets go ahead and begin the process of Manually sorting this Rom Set out. Lets create a directory on the Same Drive in which our Rom Set is on titled “Sorted” Let’s Say for Example C:\Sorted
Now In the “Sorted” Directory we will create 6 more Directories respectfully titled “BIOS“, “Platform” , “Fighter“, “Puzzle“, “Maze“, & “Shooter“
These will be where we move the roms we want too, and to split them up in chunks will help us a little later on before we merge them all together.
Now with the directories created, lets close RomLister (If Open) and go back to our rlmacros.txt and add the following lines:
@P = (Platform / Shooter Scrolling | Platform / Fighter Scrolling | Platform / Run Jump)
@F = (Fighter / Versus | Fighter / 2.5D)
@Z = (Puzzle / Drop)
@M = (Maze / Ball Guide | Maze / Shooter Large | Maze / Cross | Maze / Digging | Maze / Collect)
@S = (Shooter / Walking | Shooter / Gallery | Shooter / Flying Vertical | Shooter / Flying Horizontal | Shooter / Field)
@B = (isbios=yes)
Creating Batch Files for Sorting
Now let’s Save that File, and open RomLister back up and we are going to begin creating batch files to do the work for us. Clear the search box once again and type the following:
@X & @C & @P
We will now have a list containing 3 Categories of Platform Games. Look towards the bottom and click on the Drop-down box, select batch file, then click “Save File”, Title the File “001Platform” and save it anywhere you like. A Batch File Creation Dialog box will now pop up that will require us to edit it. As mentioned before for our example we used the Directory C:\Sorted and We have a Sub-folder called Platform, so we should edit the box, so it looks like:
copy "%ROM%.zip" "c:\Sorted\Platform" (Be sure to add “” or you may get Syntax Errors)
Click on “OK” and the bath file will be created
You will now close this list and repeat the process over for the other 4 Macros we inputted so you should be searching:
@X & @C & @F Save as 002Fighter.bat
@X & @C & @Z Save as 003Puzzle.bat
@X & @C & @M Save as 004Maze.bat
Now after creating the batch files for our “roms” lets create one last batch file, and save it as 000Bios.bat by querying Romlister with just:
With all of Our Batch files created, lets move them into the directory where your roms currently reside (examp c:\MAME\roms) with the batch files moved, double click on them 1 at a time and wait for them to finish there job. If done correctly all corresponding roms should be located in the 6 sub directories of “Sorted” This now leaves us with around ~1500 Roms! Not bad huh?
Ok with ~1500 Roms you are free to stop and skip forward to the XML Creation portion if you are happy with that number, but if you feel like you want to keep chipping away at it continue reading.
Manual Removal & Selection
So the final part is more manual intensive than previously, though instead of where we started we are left with ~1500 or less roms which is by far more manageable, and on top of that I broke these into smaller groups so we can take our time getting rid of what we don’t want, without forgetting where we left off.
Lets start out with opening our “Platform” directory ensuring that it is displaying in list mode “Alphabetically” now in RomLister lets query “
@X & @C & @P” When that has pulled up we can resize and place both windows next to each other, in the Rom Lister Window click on “roms” so the rom Name is listed Alphabetically now we can simply scroll through the roms 1 by 1 and delete what we don’t want and as they are next to each other we can see the zip file name and quickly delete it from our “Platform” Folder.
You will need to repeat this process for all additional folders, this is a bit intensive and took me roughly about two hours, but without using some other curated .XML there is no other way of getting rid of what we don’t want. In the end I was left with a little over 1200 roms in total. So Many of you might be thinking thats still a bit ridiculous and I guess that’s personal preference, I still wanted to shorten that list down a bit more.
Remember this search string from previously?
!emulation=preliminary & !('BIOS') & driver_status=imperfect
Go ahead and search through that again, its only 2600 Roms and easy enough to scroll through with your mouse and quickly pick out anything that your recognize that you may have missed, scrolling through and copying the roms I wanted over, took me less than 10 minutes.
You might also take note with roms separated as they are You can easily Generate “Playlists” that will contain much more sizable Genera lists.
Explanation of CHD Roms
Now Let’s Talk CHD’s Shall We? I hadn’t forgotten them by any means, but now is the time where we should be discussing them. If you have the complete CHD set, you may have noticed it’s nearly 500GB and contains over 1000 Games. Sounds really daunting huh? Well in case you’re not aware, here’s the kicker! Only about ~60 of those games in that set work! I’m Serious! So how do we go about it? Simple! Check out the Image below it contains the Games that Actually work, Green Dot next to working perfectly, Yellow Dot Represents working with some sort of Errors!
It Shouldn’t Take you more than 2 Minutes to look through that list and identify Games you have already previously added to your folders (You will need the CHD for dependency) or in other cases Games you might want to add. Their file name is on their copy them into a new Directory titled CHD in your “Sorted” folder.
If you followed along you will need the following CHD Directories: cliffhgr, gauntdl, gauntleg, jojo, kinst, kinst2, lacrazyc, mace, primrag2, redearth, sfii2, sfii3, sfii, wargods
XML File Generation
At this point we now have everything we need, with very little work left to do too generate our XML list(s) for use in our frontend! So, lets now open up that HyperRom2XML.exe we downloaded earlier. This little utility is going to create a file that we can use for our frontend. All we need to do is Move the files from our 5 Directories (Platform, Fighter, Puzzle, Maze, Shooter) into a single common directory such as roms. After you have completed this move the CHD directory intact as is into that “roms” directory”
With the Utility Open under “Rom Directory” Locate your newly created “roms” directory”, Then Choose a path and name for us to be created XML file, lastly point the utility to the mame64.exe and then click Go!
Note: If you are wanting to break the roms into genre, you can use HyperRom2XML on the individual directories, creating categorical xml files for use in HyperSpin etc.
After generating your XML lists, ensure you move all roms into a collective directory including CHD folders, you will now add those bios files into the directory, as well you will want to download the zip file located here
This archive contains several mandatory rom files needed in supporting the game roms in your XML and more than 100 games will not run without these files, simply extract the archive into your new roms folder.
After getting the XML list and roms setup in HyperSpin and the media art downloaded, i began to notice many of the Games missing videos/art/themes. I ultimately decided that if the Game didn’t have a Theme, then chances are it wasn’t all that “great” of a game and removed them. This left me with 812 Games on my XML, file that you can download it: MAMEXML if you so choose. (Just keep in mind, I used the .206 Split Set to generate this XML )
Congratulations, you have now curated a huge rom set, and created an XML File for your frontend. You should have that 600GB Rom set down to 12GB or Less at this point.