Latest Version: 2.01 — released 08/05/2001
I wrote MAMEMenu because I built a cabinet for running MAME games, and none of the frontends that I could find were appropriate for the box. I wanted something simple but yet functional, and I didn’t want to be windows-driven, because the box doesn’t have a mouse. I wrote the program mainly for my uses, but I thought that there might be a couple of people out there in the emulation community that might like it as well, so I decided to release it to the public. If you like the program and would like to see improvements, or just to say hi, drop me a line at ed {at} edsalisbury {dot} net.
Differences from 1.1 to 2.0:
Since 2.0 is a complete rewrite, there have been many changes, some of which will affect current MAMEMenu users:
Older Versions:
There are two configuration files, mamemenu.ini and mm_games.ini. The first one (mamemenu.ini) is where global configuration variables are set, such as the MAME executable name, default command-line options, fonts, key configs, colors and background pictures. The second file (mm_games.ini) is where all of the game entries are stored, with the menus that the games belong in.
MAMEMENU.INI:
| Config line | Description |
|---|---|
| # comment line | Comment line, doesn’t get interpreted by MAMEMenu |
| [mame] | |
| mame = mame.exe | Specifies the filename of the MAME executable |
| options = [options] | Specifies any default options you want for all games in the menu |
| [config] | |
| resolution = 3 | Specifies the resolution for MAMEMenu to run in — 1=640×480, 2=800×600, 3=1024×768, 4=1280×1024, and 5=1600×1200. The default is 1024×768 (3). |
| bkg = blumarbl.png | background picture, found in the bkg directory. Must be 1024×768. A template is included for making your own background pics (bkg/template.png) Also, you can download some ready-made background pics here. |
| gamecolor = 0,0,255 | 24-bit RGB color code for the games on the menu (default is blue) |
| selectcolor = 255,0,0 | 24-bit RGB color code for the selected item on the menu (default is red) |
| menucolor = 130,58,194 | 24-bit RGB color code for the menus (default is purple) |
| uppercase_title = 1 | Specifies if you want the game titles to be uppercased or not (default is 1) |
| uppercase_menu = 1 | Specifies if you want the menu titles to be uppercased or not (default is 1) |
| font = mamemenu.ttf | Specifies the True-type font to use for the menu |
| font_smoothing = 2 | Font smoothing can make fonts look better, especially in higher resolutions. The range is 0=no smoothing, 1=smoothing level #1, 2=smoothing level #2 |
| fontsize = 15 | Specifies the font size that will be used in MAMEMenu |
| random = 1 | Turns the random game feature off or on |
| randomstring = RANDOM | Specifies the string to use for the random game title |
| backstring = BACK | Specifies the string to display when you want to go back from a menu |
| loadingstring = LOADING… | Specifies the string that is to be displayed when loading a game (make sure this isn’t too long, or it may cause unexpected results) |
| [control] | |
| up = UP | The key(s) to be used for the up direction |
| down = DOWN | The key(s) to be used for the down direction |
| pageup = PGUP | The key(s) to be used to go up a page in the menu |
| pagedown = PGDN | The key(s) to be used to go down a page in the menu |
| select = SPACE | The key(s) to be used to select a game or menu |
| top = LEFT | The key(s) to be used to go to the top of the list |
| bottom = RIGHT | The key(s) to be used to go to the bottom of the list |
| quit = ESC | The key(s) to be used to quit MAMEMenu |
| screenshot = F12 | The key(s) to be used to grab a screenshot |
| key_sensitivity = 7 | Specifies how fast you want the keyboard to be read – Use caution, as messing with this could have unexpected results! |
MM_GAMES.INI:
MM_GAMES.INI is set up like this:
Game Name|mamename|mame options|menu1,menu2, etc.
Game Name: How you want the game to appear in the list
Mame Name: What filename to pass to mame
Mame Options: What options to pass to mame (-flipy for Pac-Land, for example)
Menus work like this — when the program runs, it looks at the entire mm_games.ini file, and builds menus based on what you put in the last column. You can have entries that are in multiple menus as well.
To add non-MAME games to the menu:
Make the options field start with a “!” character, i.e.:
Doom 2|doom2|!c:\games\doom2\doom2.exe -q|idgames
The 2nd field is still used for the screenshot, so if you want one, make sure to put it in the screenshot directory. (specified in mame.cfg, and make sure it’s a .PNG file)
Adding more games:
If you add more games to the rom directory, and want to add them to MAMEMenu, simply run mamemenu.exe -newroms, which will go out and find them (and also add them to a menu called “new” so that they are easy to find). You can also edit mm_games.ini to add the games to menus or change the options for a particular game. If you don’t want a game to appear, simply put a “#” in front of the line.
Screenshots:
By default, MAME does screenshots kinda funky. It names the first one you take [mamename].png, but then subsequent shots get named [mame000x].png. This kinda bites, since you want to be able to change the screenshots automatically. I have hacked MAME so that it doesn’t do versioning, which fixes the problem. (No, I’m not going to send it to you!) Also, if you want to do pictures for the menus, simply put a picture in png format in the snap directory (or wherever mame.cfg points to) called cat_[menuname].png, and it will automatically load it. You can download some ready-made menu pics from here.
Keyboard configuration:
Most of the keys are pretty easy to specify in the config file (‘A’ for the A-key, etc, but the special keys need to be specified correctly. Here is the list of keys and how to specify them:
| Key | String to use | Key | String to use |
|---|---|---|---|
| A-Z | A-Z | - (by 0 key) | MINUS |
| 0-9 | 0-9 | = (by minus) | EQUALS |
| F1-F12 | F1-F12 | (backspace) | BACKSPACE |
| NumPad Keys 0-9 | 0_PAD – 9_PAD | (tab) | TAB |
| { | OPENBRACE | } | CLOSEBRACE |
| (enter) | ENTER | : | COLON |
| ‘ | QUOTE | \ | BACKSLASH |
| , | COMMA | / | SLASH |
| Insert | INSERT | Delete | DEL |
| Home | HOME | End | END |
| Page Up | PGUP | Page Down | PGDN |
| Left Arrow | LEFT | Right Arrow | RIGHT |
| Up Arrow | UP | Down Arrow | DOWN |
| / (on numpad) | SLASH_PAD | * (on numpad) | ASTERISK |
| - (on numpad) | MINUS_PAD | + (on numpad) | PLUS_PAD |
| . or Del (on numpad) | DEL_PAD | Enter (on numpad) | ENTER_PAD |
| PrintScreen | PRTSCR | Pause | PAUSE |
| LeftShift | LSHIFT | RightShift | RSHIFT |
| LeftControl | LCONTROL | RightControl | RCONTROL |
| Alt | ALT | WinMenu | MENU |
| LeftWin | LWIN | RightWin | RWIN |
| ScrollLock | SCRLOCK | NumLock | NUMLOCK |
| CapsLock | CAPSLOCK | ~ | TILDE |
| Esc | ESC |
Also, you can specify more than one key for a particular function in mamemenu.ini, i.e.:
select = SPACE ENTER
If you’re interested in taking a look at the code, it can be downloaded from here. If you are interested in compiling it, here’s what you need:
After all of the above has been installed correctly, you should be able to type make, and it will make the program for you.
Except where otherwise noted, this work is licensed under Creative Commons Attribution ShareAlike 3.0.
You are free:
Under the following conditions:
THIS PACKAGE IS PROVIDED “AS IS” AND WITHOUT WARRANTY. ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE TO ANY PARTY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THIS PACKAGE.
BlueGrade by Chris Pugh |
Bruised by Chris Pugh |
RainbowSherbet by Chris Pugh |
PurpleHaze by Chris Pugh |
Rock by Steve |
Wood by Steve |
Blue by Steve |
Massive by Zakk @ Massive MAME |
![]() Ace |
![]() Ace |
![]() Blizzard |
![]() |
![]() PearlFX |
![]() Tim |
![]() Tim |
![]() Inspector Vector |
![]() Zakk at Massive MAME |
![]() Zakk at Massive MAME |
These screenshots were taken using different background pictures found on this site. If you have a cool screenshot that you want to share with the world, send it to ed {at} edsalisbury {dot} net.
![]() |
![]() |
![]() |
![]() |
![]() |