Thought I'd talk about the trick I did for my console roms. When it comes to console rom sets on a Mame cab, you have a few different ways of doing it. The issue is that there’s so many copies of roms in each set, and not just roms from different countries, but bad dumps, over dumps, hacks and translations. Many people just toss the US versions of the roms on there and be done with it, while others toss the whole set in there, so you end up with a billion roms to sort through.
Goodmerge is a nice program that takes all of your clone roms, and puts them together in one solid archive, so you have just one single file for all roms, and reduced the total space used for rom sets tremendously (Like 1 gig down to 250 megs).
The problem with goodmerge is that almost nothing uses it natively, even less so when using 7z. I needed the front end to “unmerge” the roms for me, and give me a menu for the games. So I made a program to do just that:

How the program works is you place the application in the emulator’s folder, and point the front end at the application. The application has three other files with it, a copy os the command line version of 7z, an ini file that tells it the path to the emulator and if it should pass the full path or not, and a third file that you place the types of roms to look for, such as *.bin and *.smc. I separated these two ini files just to make it simpler to use for looking for more roms. When you pick the game from the front end, it copies the .7z file to a temp directory, un-7z’s it, and list all roms matching the pre-defined filters for that instance, for example *.smc. Once you pick the rom, it sends it to the emulator, so in a sense it’s a front end inside a front end. One thing I want to add is a “Last-5″ and “Most used” option. While most roms un-7z quick, some, such as N64, are a bit slower to decompress. I also used to have the roms on a network share, so it had to copy the 7z file over the network, decompress it, then show the list. The last 5 option would be, rather than delete the uncompressed roms, rename the folder Last-1. If there already was a Last-1, rename it Last-2, and if there was a Last-2, name it Last-3, repeating up to Last-5, where you delete the old Last-5 and change Last-4 to Last-5. It uses up some more space, but for some systems it can speed up reloading games. Same with most used, it needs an ini of how many times each rom set was used, and keep a copy of the top 5 or 10 or so.
Visually the program is basic. It’s a maximized form with a black background, alpha-blended with a value of 0 set on a timer. Soon as it’s called it raises the value of the alpha-blend slowly up to about 240, for a fade in look. I used to have “drop shadows” on the text, first write it with one color, then write the text over top it again in a different, with a slightly off-set x\y value. This just made it harder to read, so I dropped it.
One thing I wanted this front end to do, hide the “crap” roms. Sure, I could go in, and remove all the crap roms from my sets to begin with, but that means, un7z all roms, delete the Bs and Os and Translations to languages other than English, then goodmerge them all over again, a lot of time spent and no HDD space saved. Might as well filter them at the front-end level, so I did. By default it hides bad and over dump roms, and has a clean up button, button 3 on the joystick. Pressing button three causes a lot more roms to be hid, such as hacks and translations, so you should only have a few options, the best ones, yet if you wanted to play a hacked rom, say the Zelda hack Outlands, you can.

Input is quick and dirty on the program, and one of the reasons I’ve not “released” it yet, since not every setup could use it right now. The joystick up\down moves through the list of games, button 1 selects the game, button 2 exits the menu (returns to the front end). Button 3 is the clean up button to drop the hacks and translations. If I get to a point where it’s usable to the masses and not so cryptic that only I can use it, I’ll upload it to my site with a link. I also want to work on modifying the program so it forces the emulator to be top window and active, every now and then the emulators will "stick" and not show up. This is normally caused by issues in mamewah though, I think I need to tweak the timing on my video thumbs.
And all the current info for my project is over at
http://rhwiii.info/blog/category/mame-cab/