12 Things You Didnt Know You
Could Do With MAME
Aaron Giles
What is MAME?
Never heard of it? See http://mamedev.org
MAME = Multiple Arcade Machine Emulator
Emulates most arcade hardware in software
Simulates the CPUs, sound chips, and video h/w
Uses original ROMs and discs
Developer-focused (not super user friendly)
Really two projects in one:
Reverse engineering arcade hardware
Designing a software architecture for emulation
What Can You Do With MAME?
Most people tend to think of MAME as a
means of running games
Developers think in terms of using it as a tool
to reverse engineer games
BUT
Theres more to MAME thank you might think
Plus, some people are really creative!
Look at the Source Code
(Yes, even if youre not a programmer!)
http://mamedev.org/source/mame/drivers
Key things to look for:
Comments (in bright red at the link above)
ADDRESS_MAP (describe memory layouts)
ROM_LOAD (describes ROMs needed)
Look at the Source Code
Look at the Source Code
Look at the Source Code
Identify Your PCBs
(Yes, without dumping the whole thing!)
MAMEs romident option is your friend:
Simply dump 1 or more ROMs
More than 1? Place them in a directory or ZIP file
From the command line run:
mame romident <file|directory|zipfile>
This will compare your ROMs against every ROM
known to MAME (and thats a lot these days)
Identify Your PCBs
Identify Your PCBs
romcmp (included with MAME) also helpful:
romcmp <directory|zipfile> [<dir2|zipfile2>]
Backup & Repair Your Hard Disks
(Yes, you can recover your arcade hard disks!)
MAMEs CHD format designed for hard disks
chdman utility is included with MAME
Easy to find USB-to-IDE adapters
To create a hard disk image in Windows (CHD):
chdman createhd \\.\physicaldriveX filename.chd
To put a CHD back onto a hard disk:
chdman extract filename.chd \\.\physicaldriveX
Move to solid state (CF) via an IDE adapter
Backup & Repair Your Hard Disks
Cheat!
(Yes, you can beat the game with brute force!)
http://cheat.retrogames.com/
The MAME Cheat Engine:
Need to be explicitly enabled (via cheat option)
Was recently rewritten and modernized
Now supports cheats in XML format
Now better integrated with the debugger
Has a large group of people finding new cheats
Cheat
Cheat
Fix Bugs in Old Games
(Yes, because theyre just not hard enough!)
http://donhodges.com/
Using only MAMEs built-in debugger, reverse
engineering, and logic, Don has fixed:
Kill screens in Donkey Kong, Dig-Dug, and more
Pac-Man split screen (level 256)
Galaga playable demo
Even created cheats for some of them.
Fix Bugs in Old Games
Record and Play Back Your Game
(Yes, you can show off your moves!)
http://replay.marpirc.net
MAME supports built in input recording
To record from the command line:
mame <game> record <filename>.inp
And to play it back:
mame playback <filename>.inp
Key to remember:
Emulation must not have changed timings or input
Format changed a little while back (built-in compression)
Not sufficient for Twin Galaxies
Record and Play Back Your Game
(But wait, theres more!)
MAME also supports recording in several formats
To record an AVI/MNG/WAV:
mame <game> aviwrite <filename>.avi
mame <game> -mngwrite <filename>.mng
mame <game> -wavwrite <filename>.wav
To take an in-game snapshot press F12 (configurable)
You can control the size of snapshots and movies via the
snapsize and snapview options.
By default, it is the native screen size
Record and Play Back Your Game
(But wait, theres more!)
Keys to remember about making movies:
AVIs are uncompressed, huge, and slow to create
You will need to post-process them for compression
Tip: record to an INP, then make AVI from playback
MNGs are compressed, a bit less huge, but no sound
If your game changes resolutions, specify a snapsize
Ditch Your Front-End
(Yes, slightly more user-friendly!)
In the old days, MAME would just error if you
double-clicked it or specified no game to run
Today, you actually get a mini front-end
Picks random list by default
As you type, recomputes list of best matches
When you quit, you can select a new game
Ditch Your Front-End
Ditch Your Front-End
Create a Database
(Yes, MAME is a database of arcade history!)
http://maws.mameworld.info/maws
Internally MAME has standard information about:
ROMs and other media
CPUs, sound chips, and clock speeds
Controls, inputs, and DIP switches
Video displays
Game manufacturers and years
All accessible via the listxml option
Drive Real Arcade Hardware
(Yes, you can make it real!)
http://www.byoac.com
MAME can be made to work in a real cabinet:
Not an official goal of the project, however!
Can wire up real arcade controls
Can connect real arcade monitors
Can put it all in a real wood box
Several companies produce the necessary adapters
But dont abuse this remember this is just for fun!
Incorporate Game Art
(Yes, the artwork was part of the allure!)
http://mrdo.mameworld.info/mame_artwork.html
MAME supports bezels, overlays, and backdrops
All are optional, and individually selectable
High-quality scaling to your screen resolution
Community-wide effort to get nice, high resolution
scans (see above link)
All artwork is stored losslessly
No cabinet or marquee art yet (3D models anyone?)
Incorporate Game Art
Incorporate Game Art
Turn Your LCD into a CRT
(Yes, you can sort of simulate old school!)
MAMEs artwork system supports overlays
Small repeated patterns overlaid on screen areas
Relies on high-res LCD versus low-res game
Lowers the overall brightness a bit
Several good ones included with MAME
Try this at home:
mame <game> effect aperture1x2rb
mame <game> -effect aperture2x4rb
(for low res displays)
(for high res displays)
Turn Your LCD into a CRT
Turn Your LCD into a CRT
Turn Your LCD into a CRT
Play Free Games
(Yes, I know we said that wasnt the goal)
http://mamedev.org/roms
Some companies have done the right thing!
Many early Exidy ROMs available
Several developers who own the rights have
given us permission to redistribute their games
Gaelco released World Rally for free
http://www.gaelco.com/english/pages/hablando/frhablan.htm
The 12 Things You Now Know
1.
2.
3.
4.
5.
6.
Look at the source
Identify your PCBs
Repair your hard disks
Cheat!
Fix original bugs
Record & play back
7. Ditch your front-end
8. Create a database
9. Drive real hardware
10. Incorporate game art
11. Simulate an old CRT
12. Play free games
Some Additional Things You Can Do
Run MAME on almost any platform (SDLMAME)
Fast-forward through the boring parts (Ins key)
Use nicer fonts in the MAME UI
http://mrdo.mameworld.info/mame_artwork_supp.html
Choose your own crosshairs for gun games
Same site
Save/restore in some games (automatically)
Q&A