Jason's Classic Arcade, old fashioned gaming hardware and software

Monday, May 03, 2004

Front End - Tron Style

When I splurged and added a complete set of ROMs (for all the games I own) my Authorware interface wasn't going to cut it anymore, particularly since it took about 30 seconds to read in the data for about 100 games.

I wrote version 2 of the Arcade MAME Front End in Visual Basic and it supports 4000+ games now. It utilized the Catlist classifications via their INI file, and all their official Genres and Categories are implemented. However, I hide the Uplayable, Mature, and Rhythm categories. (The Rhythm category because my machine bogs down on all those chd-supporting games, plus I lack the DDR pad) If you need a breakdown of all these games by genre/category, don't manually classify 4000+ games! Get them from

In addition, I have an ini file to support my "KLOV Top 100" game category. It contains the ROMs and Titles of the games I support from KLOV's voted 100 arcade games list.

The Killer List of Videogames Top 100

The corresponding INI File (.txt so my web server knows it's not binary)

These ini files were gold on my xp machine, I used GetPrivateProfileString calls to categorize everything with an array of these bad boys:

Type GameDataType
   iIndex As Integer
   sROM As String
   sTitle As String
   sGenre As String
   sCategory As String
   sYear As String * 4
   sManufacturer As String
   bTop100 As Boolean
   bHide As Boolean
   iCloneCount As Integer
   arrClones(1 To MAX_CLONES) As Integer
   iCloneOf As Integer
End Type

I harness the clone information so I can indent the clones in the list underneath their parent ROM.

But when I ran this on the Win98SE machine in the arcade cabinet, I quickly learned GetPrivateProfileString only works on ini files up to 64K on Win98! So I had to store things in my own all-inclusive data file. But now instead of taking 25 seconds to read and sort everything, it takes 1 second.

An unfortunate side effect of that is that I used to show a Dave Dries MAME intro video on a splash screen while it was reading in the ROMs for 25 seconds. But now the category menu comes up right away, there's no time!

This look and feel is inspired by Tron, I use some Tron 2.0 (PC) screen captures as backgrounds, and Tron sound effects for cursor movement and category/game selection. Here are the two backgrounds I use:

Background for the game selection screen.
Background for the category selection screen.
(These actually might have come from IGN rather than from in-game)

The TRON sound effects were from a Windows Tron Theme I downloaded, by Sylvain De Chantal. I use the disc deflection, de-rez, and transport sounds.

Once again I have photos of myself to represent the categories:

Ball & Paddle




Here are final screen caps in action:

Main category selection - If the category contains sub-categories, a second list appears on the right, otherwise it just goes to the game selection screen. If a genre has an associated photo, that is displayed.
Sub-category selection

Game Selection - List of games on the left, marquee and screen capture on the right. The images on the right are a fixed width and position themselves dynamically based on how high each image ended up. With so many games, I used a real listbox to get built-in scrolling functionality without having to repeatedly hit down on the joystick. Left and right will go up and down a page at a time. 1st arcade button selects and launches the game.

The clones are indented beneath their parent ROMs.

The emulator I'm using this time in AdvanceMame, I like the option of confirming exit. One unfortunate night during a marathon Snow Brothers session, two friends of mine simultaneously died and hit Player 1 Start & Player 2 Start respectively, which as you know by default acts as the exit key combo. But a combination of the proper event.dat and misc_safequit setting will hopefully prevent that from happening again!

Another feature I thought about for this menu system is showing another information page, perhaps with the game history data and images for the flyer, control panel, cabinet, and title screen. I would rarely use these though, but since the graphics and data are all there I may as well make them available next version right? On the game selection screen, maybe buttons 3-6 will bring up these additional screens.

Like my Authorware front end, let me know if you want the source code. It's not going to be something I want to support but it may be useful if you want to figure out the things I don't want to document! The world might not need another arcade front end but with enough interest I could make a setup program for this and add some documentation.


Post a Comment

<< Home