MAMEMenu

MAMEMenu

A Frontend for M.A.M.E.

by Ed Salisbury / website

Latest Version: 2.0 -- released 11/26/2000

Introduction:

   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 mamemenu@edsfamily.com, or leave a comment on the User Comments page.

Features:

Installation:
  1. Download the archive
  2. Unzip the contents of mm_2_bin.zip to your MAME directory.
  3. Run mamemenu.exe to create the config file (mamemenu.ini).
  4. Edit mamemenu.ini, and make sure that the mame= line points to the mame executable you're using.
  5. Run mamemenu.exe -newroms, which will build mm_games.ini. (where all of the game entries are stored)
  6. Edit mame.cfg, and make sure that your soundcard is set to something other than -1 (so that it doesn't prompt you when you run MAME) You will most likely set this to 1.
  7. Run mamemenu.exe.

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:
  1. mamemenu.cfg has been renamed to mm_games.ini - file format is still the same
  2. A lot more things have been added to mamemenu.cfg, and it is automatically created
  3. Menu graphic filenames have been changed to have "cat_" as a prefix (to distinguish it from games)
  4. Keyboard entry is a bit different now, due to the way the scrolling titles work.

Configuration:

   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 lineDescription
# comment lineComment line, doesn't get interpreted by MAMEMenu
[mame]
mame = mame.exeSpecifies the filename of the MAME executable
options = [options]Specifies any default options you want for all games in the menu
[config]
resolution = 3Specifies the resolution for MAMEMenu to run in -- 1=640x480, 2=800x600, 3=1024x768, 4=1280x1024, and 5=1600x1200. The default is 1024x768 (3).
bkg = blumarbl.pngbackground picture, found in the bkg directory. Must be 1024x768. A template is included for making your own background pics (bkg/template.png) Also, you can download some ready-made background pics on the Background Pics page.
gamecolor = 0,0,25524-bit RGB color code for the games on the menu (default is blue)
selectcolor = 255,0,024-bit RGB color code for the selected item on the menu (default is red)
menucolor = 130,58,19424-bit RGB color code for the menus (default is purple)
uppercase_title = 1Specifies if you want the game titles to be uppercased or not (default is 1)
uppercase_menu = 1Specifies if you want the menu titles to be uppercased or not (default is 1)
font = mamemenu.ttfSpecifies the True-type font to use for the menu
font_smoothing = 2Font 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 = 15Specifies the font size that will be used in MAMEMenu
random = 1Turns the random game feature off or on
randomstring = RANDOMSpecifies the string to use for the random game title
backstring = BACKSpecifies 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 = UPThe key(s) to be used for the up direction
down = DOWNThe key(s) to be used for the down direction
pageup = PGUPThe key(s) to be used to go up a page in the menu
pagedown = PGDNThe key(s) to be used to go down a page in the menu
select = SPACEThe key(s) to be used to select a game or menu
top = LEFTThe key(s) to be used to go to the top of the list
bottom = RIGHTThe key(s) to be used to go to the bottom of the list
quit = ESCThe key(s) to be used to quit MAMEMenu
screenshot = F12The key(s) to be used to grab a screenshot
key_sensitivity = 7Specifies 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)



Other Stuff:

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 the Menu Pics page.

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:
KeyString to useKeyString to use
A-ZA-Z- (by 0 key)MINUS
0-90-9= (by minus)EQUALS
F1-F12F1-F12(backspace)BACKSPACE
NumPad Keys 0-90_PAD - 9_PAD(tab)TAB
{OPENBRACE}CLOSEBRACE
(enter)ENTER:COLON
'QUOTE\BACKSLASH
,COMMA/SLASH
InsertINSERTDeleteDEL
HomeHOMEEndEND
Page UpPGUPPage DownPGDN
Left ArrowLEFTRight ArrowRIGHT
Up ArrowUPDown ArrowDOWN
/ (on numpad)SLASH_PAD* (on numpad)ASTERISK
- (on numpad)MINUS_PAD+ (on numpad)PLUS_PAD
. or Del (on numpad)DEL_PADEnter (on numpad)ENTER_PAD
PrintScreenPRTSCRPausePAUSE
LeftShiftLSHIFTRightShiftRSHIFT
LeftControlLCONTROLRightControlRCONTROL
AltALTWinMenuMENU
LeftWinLWINRightWinRWIN
ScrollLockSCRLOCKNumLockNUMLOCK
CapsLockCAPSLOCK~TILDE
EscESC
Also, you can specify more than one key for a particular function in mamemenu.ini, i.e.:
select = SPACE ENTER


Source Code:
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.

License:

Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify and/or distribute this package, provided that:
Permission is hereby also granted, without written agreement and without license or royalty fees, to distribute binary programs which depend on this package, provided that:

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.


Acknowledgements: