This guide outlines the game environment software setup suitable for use in custom arcade cabinets. Plug it in, watch it boot, then jump and run!
Why use Linux and older AdvanceMAME software?
When it comes to MAME, the Multiple Arcade Machine Emulator, there are many different versions including the official MAME, XMAME, SDLMAME and AdvanceMAME. AdvanceMAME is an older project no longer actively developed, but don't let its age fool you. It is as classic as the games it plays. AdvanceMAME features include a menu system, jukebox audio player, support for arcade monitors, support for screen rotation, and cool sound effects.
As an alternative to AdvanceMAME, a combination of SDLMAME and WAHcade could also be used in game cabinets. WAHcade is a menu system for Linux that allows custom themes with nice backgrounds and fonts. Since SDLMAME and WAHcade are newer packages, they may be easier to install on newer Linux distributions.
Feature tests with the AdvanceMAME project slightly beat the SDLMAME/WAHcade combination. AdvanceMAME with the AdvanceMENU component provides a nice look with great sound effects. SDLMAME/WAHcade came in a close second with a nicer theme solution for its menu.
Regarding the base operating system, Ubuntu Linux is preferred over Microsoft Windows due to the ease of installation, lack of serial keys, fewer driver issues, lower cost, ease of customization, better preloaded software, better documentation and a generally more open philosophy. There are many flavors of Linux that will run AdvanceMAME but sticking with standard Ubuntu Linux on standard hardware makes this setup fast and easy. Debian, Fedora and Gentoo would be other suitable and recommended Linux choices.
There is one point in MS Windows' favor. Arcade setups can easily be done on MS Windows. In fact you'll probably have better luck with Windows if you want to run current releases of the official MAME branch. Newer MAME versions are Windows only.
Running older software often requires the need to stay backwards compatible. Ubuntu 8.10 intrepid, which is not the latest version of Ubuntu, is being used to maintain this compatibility. Issues with newer versions of the GCC compiler and the X windows system may be encountered when compiling and running the older AdvanceMAME on recent Ubuntu versions.
Hardware choices, how low can you go?
Common brand, inexpensive, older hardware purchased off craigslist or eBay should be enough horsepower for AdvanceMAME. Trash picking someone's older junk PC would probably be enough too for a classic game cabinet. Running 1980's software on post Y2K hardware works great. Just remember that fans and hard drives have moving parts which wear out, replace these components with newer parts if possible.
This guide was tested on a Compaq Evo D310 Tower w/P4 - 2.40GHz / 1GB / 40GB. At the time of this writing, these were available from multiple online locations for well under $150.
Ubuntu is simple to setup.
You’ll need to download and burn to disk the Ubuntu Intrepid 8.10 CD for x86 processors. This disk should boot and your PC BIOS boot order should be set with the CD drive as the first boot device.
This guide assumes you have a live network running with DHCP connected via Ethernet to your hardware. Once Ubuntu is loaded, all administration can be done from another machine over the network. Setting up the machine through a remote SSH connection allows the machine to run without a keyboard, which is desired. This configuration should allow the machine to boot with no user intervention and shutdown via network commands. A single Joystick with 4-6 arcade buttons are planned as the only user interface for this machine, no keyboard. A hidden arcade button can be linked to a shutdown command for turning off the machine
General Ubuntu Install Recommendations / Fast and Simple.
Use the whole disk for Ubuntu and your data files. No need for a Windows dual boot setup or other partitions. Be prepared to lose all data on your disk. The setup Wizard makes the disk partition steps painless.
Create a user called "mame", set this user's password to "mame" and use the workstation name "mame". This approach is insecure but its easy to remember, security on this machine is not a design factor.
On the user creation page, make sure you set the "Log in automatically" radio check box during setup.
1.) Booting the Ubuntu 8.10 setup disk on standard hardware.
2.) Languages selection screen, not a lot to see here.
3.) Live Boot Options
4.) Boot Progress Bar
5.) Welcome Screen
6.) Where Are You?
7.) Keyboard Layout
8.) Partion Drive Entire Disk
9.) Who Are You?
10.) Please Wait
11.) Migrate Documents
12.) Ready to Install
13.) Installing System
14.) Reboot Computer
Setup arcade PC for remote access.
# Install the SSH server:
mame@mame:~$ sudo apt-get install ssh
# Start SSH server:
mame@mame:~$ sudo /etc/init.d/ssh start
# Check current IP address
mame@mame:~$ sudo ifconfig
Look for your current IP address in the output of the ifconfig command. With this address you can now connect to the arcade machine in your work area from a couch based laptop. From a Windows machine use Putty for SSH terminal access and WinSCP for file management.
Prerequisite Software Setup
# Make arcade folder in your home directory.
mame@mame:~$ cd ~
mame@mame:~$ mkdir arcade
mame@mame:~$ cd arcade/
You can prevent the need to enter passwords by adding the "mame" user to the sudoers file. This generally is a bad idea and not recommended unless your arcade PC is in a closed environment.
mame@mame:~$ sudo nano /etc/sudoers
# Add the following line:
mame ALL = NOPASSWD: ALL
# Add the mame user to the shutdown group
mame@mame:~$ sudo nano /etc/group
# Modify your group file, append user info as necessary
shutdown:x:1001:mame
mame@mame:~$ sudo visudo
# Add the following to allow permissions to the shutdown group
%shutdown ALL=(root) NOPASSWD: /sbin/reboot
%shutdown ALL=(root) NOPASSWD: /sbin/halt
%shutdown ALL=(root) NOPASSWD: /sbin/shutdown
# Create a shutdown script
mame@mame:~$ nano /home/mame/arcade/halt.sh
# Add the following text, with # mark to your script:
#! /bin/sh
sudo /sbin/halt $*
# Make your script executable:
mame@mame:~$ chmod +x /home/mame/arcade/shutdown
When connecting from Linux you can easily run X windows graphical applications like synaptic over the network. Use the -X switch when you're connecting if you want to run remote windows applications.
mame@mame:~$ ssh -lmame -X 192.168.1.45
Synaptic is a GUI application for installing software, as opposed to running apt-get from the command line.
Unzip and build AdvanceMame
mame@mame:~/arcade$ tar xvfz advancemame-0.106.1.tar.gz
mame@mame:~/arcade$ cd advancemame-0.106.1/
mame@mame:~/arcade/advancemame-0.106.1$ ./configure
mame@mame:~/arcade/advancemame-0.106.1$ make
mame@mame:~/arcade/advancemame-0.106.1$ sudo make install
mame@mame:~/arcade/advancemame-0.106.1$ cd ..
Unzip and build AdvanceMenu
mame@mame:~/arcade$ tar xvfz advancemenu-2.5.0.tar.gz
mame@mame:~/arcade$ cd advancemenu-2.5.0/
mame@mame:~/arcade/advancemenu-2.5.0$ ./configure
Unzip and build AdvanceMESS
mame@mame:~/arcade$ tar xvfz advancemess-0.102.0.1.tar.gz
mame@mame:~/arcade$ cd advancemess-0.102.0.1/
mame@mame:~/arcade/advancemess-0.102.0.1$ ./configure
mame@mame:~/arcade/advancemess-0.102.0.1$ make
mame@mame:~/arcade/advancemess-0.102.0.1$ sudo make install
mame@mame:~/arcade/advancemess-0.102.0.1$ cd /home/mame/.advance
mame@mame:~/.advance$ mkdir image/nes
mame@mame:~/.advance$ advmess -default