world leader in high performance signal processing
Trace: » xmame

XMame

mamedev.org_mamelogotmsmall.jpg 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.

xmame pacman screenshot  You can see a screenshot of it running on the LCD on the left.

XMame on Linux

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.

Display Devices

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.

Running Mame

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 coin
  • 1 - one player
  • arrow 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

Controlling XMame with USB Gamepads/Joysticks

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

Where can I find ROMs?

(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/.

Adding more games in Mame

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: user/games/xmame/xmame-0.106/src/tiny.mak

scm failed with exit code 1:
file does not exist in git

Edit the file (there is much more to it than those 7 lines), and recompile.

Other Pointers