MAME, which stands for Multiple Arcade Machine Emulator, will more or less faithfully reproduce older arcade games (when used in conjunction with that arcade game's data files (ROMs)). The mainline version of MAME can currently emulate over 3000 unique (and over 5400 in total) classic arcade video games from the three decades of video games - '70s, '80s and '90s, and even some from the current millennium.
The ROM images that MAME utilizes are “dumped” from arcade games' original circuit-board ROM chips. MAME becomes the “hardware” for the games, taking the place of their original CPUs and support chips. Therefore, these games are NOT simulations, but the actual, original games that appeared in arcades.
MAME's purpose is to preserve these decades of video-game history. As gaming technology continues to rush forward, MAME prevents these important “vintage” games from being lost and forgotten. This is achieved by documenting the hardware and how it functions, thanks to the talent of programmers from the MAME team and from other contributors. Being able to play the games is just a nice side-effect, which doesn't happen all the time. MAME strives for emulating the games faithfully.
Xmame is a ports of MAME, the Multiple Arcade Machine Emulator, running primarily on Linux and various flavors of UNIX.
You can see a screenshot of it running on the LCD on the left.
SDL and XMame has been integrated into the uClinux distribution. To enable, it just select it under the vendor/user settings.
Games ---> [*] xmame
The default configuration is to support just pacman. If you want to support other games, you'll need to modify the build system as outlined on the xmame homepage.
Once you've built up everything like normal, you'll be left with a xtiny.SDL program in the romfs image.
XMame uses a framebuffer device (/dev/fb0), so if the hardware provides a framebuffer, it will work with XMame.
For more information, the framebuffer page covers different daughter cards which you may use with the BF537 Stamp Board.
To execute xmame with the keyboard (USB on tty0) input, all that is necessary is to run is to:
root:~> xtiny.SDL -nodoublebuf -autorol romname
And then control the game with it's default key bindings. For example, pacman's keybindings are:
5 - insert coin1 - one playerarrow keys - move
To list the games that are currently supported, use the -list option
root:~> xtiny.SDL -list warning: no mixer plugimunmap of non-mmaped memory by process 442 (xtiny.SDL) ns available info: trying to parse: /usr/share/xtiny/xtinyrc info: trying to parse: //.xtiny/xtinyrc info: trying to parse: /usr/share/xtiny/xtiny-SDLrc info: trying to parse: //.xtiny/xtiny-SDLrc xtiny currently supports: robby gridlee polyplay alienar puckman mspacman pacman Total Supported: 7
Enable USB Host Side Support - for more details see here: usb_ez-extender
Enable USB Human Interface Device Support
--- USB Input Devices <*> USB Human Interface Device (full HID) support [*] HID input layer support
Enable Input Device Support
<*> Generic input layer (needed for keyboard, mouse, ...) --- Userland interfaces <*> Mouse interface [*] Provide legacy /dev/psaux device (1024) Horizontal screen resolution (768) Vertical screen resolution <*> Joystick interface < > Touchscreen interface < > Event interface < > Event debugging --- Input Device Drivers [*] Keyboards ---> [*] Mouse ---> [*] Joysticks ---> [ ] Touchscreens ---> [ ] Miscellaneous devices ---> Hardware I/O ports --->
Enable your Joystick/Gamepad
--- Joysticks <*> Logitech ADI digital joysticks and gamepads
Make sure that your device_table.txt in vendors/your_vendor/your_board contains the device node for /dev/js0
/dev/input/js c 664 0 0 13 0 0 1 1
Start Xmame with -jt5 option
root:/var> ./xtiny.SDL -nodoublebuf -jt 5 ./gamename
Xmame start-up messages should then contain following lines:
SDL: joystick interface initialization... SDL: 1 joysticks found. SDL: The names of the joysticks : Logitech Logitech(R) Precision(TM) Gamepad OSD: Info: Joystick 0, 2 axis, 10 buttons
(from MAME.TXT):
ROM, CD, and hard disk images are all copyrighted material. They cannot be distributed without the explicit permission of the copyright owner. They are not “abandonware”, nor have any of the games supported by MAME passed out of copyright.
MAME is not intended to be used as a tool for mass copyright infringement. Therefore, it is strongly against the authors' wishes to sell, advertise, or link to resources that provide illegal copies of ROM, CD, or hard disk images.
Also, check out the MAME FAQ.
Some free roms for non-commercial can be found on the MAME homepage. Just place them into /usr/share/xtiny/roms/.
I obtained some ROMS, but xtiny.SDL says it doesn't support them.
root:/usr/bin> ./xtiny.SDL carpolo warning: no mixer plugins available info: trying to parse: /usr/share/xtiny/xtinyrc info: trying to parse: /root/.xtiny/xtinyrc info: trying to parse: /usr/share/xtiny/xtiny-SDLrc info: trying to parse: /root/.xtiny/xtiny-SDLrc "carpolo" approximately matches the following supported games (best match first): robby Robby Roto gridlee Gridlee polyplay Poly-Play alienar Alien Arena puckman PuckMan (Japan set 1, Probably Bootleg) mspacman Ms. Pac-Man pacman Pac-Man (Midway)
This is because mame is a emulation engine, and every old console out there had specialized video, audio, and input hardware which must be emulated. To keep things tiny, xtiny.SDL does not include many default games.
The tiny.mak file is the magic where everything happens:
file: trunk/user/games/xmame/xmame-0.106/src/tiny.mak:0-7
########################################################################### # # tiny.mak # # Small driver-specific example makefile # Use make TARGET=tiny to build #
Edit the file (there is much more to it than those 7 lines), and recompile.