Hardware

The hardware used in ElLa Project are a 700Mhz AMD Duron based PC with a 3dfx Voodoo 3 3500 TV out card, a 19 inch color CRT monitor, and an I-Pac controller board. The PC is an old discarded computer, which stopped working for Larry's mother. The computer's hard drive was dead, and its CPU fan was exceptionally loud. The machine also only had 128Mb of memory, and since it was running Windows XP, probably caused the death of the hard disk and slowness report by Larry's mother (with all the caching out to the hard drive XP does with that little memory.) An old 20Gb hard drive was installed, and a spare, less noisy, CPU fan replaced the old one.

Additionally, the Voodoo 3 drivers did not support rotating the X display. Since the monitor will be mounted vertically, it would be convenient for the display to be rotated clockwise. A spare GeForce4 MX 440 replaced the Voodoo 3, because the nvidia drivers were known to support screen rotation. The GeForce4 card is PCI, while the Voodoo 3 is AGP. However, the GeForce4 has 64Mb of video RAM, while the Voodoo 3 has only 16Mb, and should still be an upgrade.

With the software choosen to emulate the acrade hardware, the video card is only used for vector games (like Asteroids and Star Wars) and scaling the screen. Raster games (like Pac-Man and Donkey Kong) are rendered completely in software. This make the choice of video card only important for a handful of games, but the main processor speed very important. The 700Mhz Duron was replaced with an Athlon Thunderbird 1400, because a few games were running slowly on the Duron. Pressing F11 while a game is running in MAME, will display the relative speed and framerate. The Athlon and PCI GeForce4 combination runs all the old (pre-90's) raster based games without dropping frames, and only runs into issues with vector and post-90's raster games. However, the vector games are still very playable and several of the post-90's games run well too.

The monitor was purchased on the cheap at Computer Works. Computer Works is a Goodwill store, located in Austin, that only carries electronics and computer parts. It is a great place to pick up replacement parts and old hardware. They even have a Computer Museum.

The I-Pac controller board is a piece of hardware that connects the arcade controls to the computer. Ultimarc, based in England, sells I-Pacs (along with other arcade machine hardware.) The I-Pac connects to the computer via either a PS/2 keyboard or USB port, and includes a PS/2 keyboard pass-thru port. The USB version is exactly the same as the PS/2 version, the only difference being the cable that comes with USB version is a PS/2 to USB cable instead of a PS/2 to PS/2 cable. Which version used is purely up to preference, ElLa Project opted for the USB.

The I-Pac works by connecting the various arcade controls to connectors on the I-Pac board. For instance, if connecting the "fire" button, one of the button's terminals is connected to one of the I-Pac's "GND" screw terminal and the other terminal is connected to the I-Pac's "1SW1". When the player presses the "fire" button, the circuit for the I-Pac's "1SW1" is complete, and it sends a "key press" of "Left Control" to the computer. "Left Control" is MAME's default key mapping for the first button (or switch) of player one (player 1 SWitch 1.) There is also a configuration utility for the I-Pac board that allows for changing the key mappings.

MAME

MAME stands for "Multiple Arcade Machine Emulator" and allows for the playing of arcade games on a personal computer. It works by reading copies of an arcade machine's ROMs into memory, then emulating the hardware the ROMs would be plugged into. Since MAME was written for the PC, it accepts keyboard, mouse, and game port inputs. However, as mentioned above with the I-Pac, arcade controls can be attached to the computer so that MAME can read them as inputs.

MAME runs under Windows, Mac, and Linux. The ROM files used are the same for all versions. The nice thing about MAME is that it uses the original game software, so the games are the original games and not conversions. MAME is also able to play the games in fullscreen mode and has various scaling options, including rotating the screen so it can be played on a vertically mounted monitor and flipping the screen between player turns like in a cocktail cabinet. These options make MAME ideal for completing that arcade experience, which PC conversions of the games can't quite accomplish.

Another interesting aspect of MAME is that it has key mappings for "Coin Drops." Since the games are the original arcade versions, the game software requires a signal that money has been deposited into the machine before it will allow a player to play. I-Pac allows you to connect buttons/switches to act as these inputs, push the button/flip the switch, and MAME tells the game software a credit was put into the coin slot. This is interesting, because you can get "Coin Doors" with coin mechanisms that act as that switch. So, you can set up a cabinet that requires the player to insert a coin to be able to play, just like an original arcade cabinet. If done right, a complete recreation of an arcade machine can be built, where the only way to tell the difference between the clone and original is to open the cabinet and look inside.

The version of MAME currently being used is xmame. This version is design to work in the X Windows environment on *nix machines. More about the operating system choice later.

Finally, there is also AdvanceMAME, which is able to program the video board to always get a video mode with the correct resolution and, depending on the monitor, frequency. However, most of the features appear to already be in xmame, which is the version of MAME currently being used.

Operating System

Since MAME was chosen as the software to run the arcade games, either Windows, Mac, or Linux could have been used for the computer's operating system. Linux was ultimately selected due to it's stability, size, flexibility, and cost.

The Mac was not selected due to the costs associated with acquiring one. However, if a spare Mac running OS X is available, it is a viable option. There are versions of MAME for older Macs, but development has stopped and USB will be needed for the I-Pac.

The most stable version of Windows available for this project is XP Home, which does not include a web server. Although a web server isn't needed, it would be nice to have as an interface to the arcade cabinet. XP Professional does include IIS, but even if it was available at a reasonable cost, the target machines specifications are not up to running Windows XP. Windows XP Home is suspected in the death of the machine's last hard drive, due to constent caching out with only 128Mb of RAM. Hardware-wise, the best fit for Windows would be 98se, which when compared to Fedora Core 5, is severely lacking in stability and flexibility.

With FC5, a very minimal install can be selected, with only the needed features. It is also much more memory efficient than Windows, and does not need to cache from memory to hard drive very often. It will also allow for extras like network accessible shares and web interfaces for transfering ROMs, as well as remote access for diagnosing problems. Plus, it is free.

The Fedora Core 5 install DVD was having issues with only 128Mb of RAM. It is suppose to enable the swap space early, but seems to lock up while doing so. 256Mb of additional RAM was added, however another problem with the FC5 install DVD was discovered. When the mounts are formatted, it is unable to find the install files. So, the installer needs to be run twice. During the second run, only assign the already created partitions and do not format them. Suposedly, the install CDs do not suffer from this issue.

Frontends

Once the OS is loaded, and MAME is ready to run, something needs to be used to select which game to play. Normally, MAME is ran from the command line. However, that would harm the arcade experience, if the command line was used to launch each game. The OS could be set up to immediately run MAME with a preselected game, but then switching between games would still require a keyboard. So, software is needed to select and launch the various MAME ROMs, without requiring the keyboard and command line. Fortunately, there is already software that does this. The frontend chosen for this project was Wah!Cade, for it's simplicity and configurability. Wah!Cade is a Linux port of MameWAH, written in Python. Using the layout configuration tool of MameWAH, a 480x640 layout was created and a background added. Then, the mame.ini file for Wah!Cade was edited to fit the FC5 install.

The MameWAH configuration tool only runs under Windows, so the Windows path to the background image will need to be changed in the generated layout.lay file, for use under Linux. The layout files are not easy to read, but finding the correct line to change for the background is a matter of searching for the filename and changing that line. Also, the layout file stores information about the screensaver as well, and the configuration tool allows for changing the screensaver layout. This was important for the vertical layout of ElLa project, because the default screensaver layout is horizonal. This caused the screensaver to place images in an off centered spot, and cropping the right side of the images. Once the screensaver layout was modifed to fit a vertical screen, this issue was fixed.

Wah!Cade uses the default MAME key layout to control selecting and launching a game. Also, hiting the ESC key will exit. Unfortunately, it's exceptionally easy to accidently hit the I-Pac shift-key sequence for ESC twice while exitting game. This will cause Wah!Cade to exit, as it receives the additional ESC key presses. The exit key can be changed to something other than the ESC key for Wah!Cade, and there still exists an exit method in the menu. However, since the sole purpose of this machine is to play arcade games, a quick Perl script was written to relaunch Wah!Cade if it isn't running.

This script is also taking advantage of a patch made to Wah!Cade to allow the fullscreen option to be specified in the wahcade.ini file and specifing an "ignore" file for the emulators. The ignore file is nice to have, to prevent "base" roms (roms without a game, but roms used by other games) and unplayable parent roms from displaying in the menu. The ignore file format is a text file with the name of the roms, one rom per line, without the file extention, case is also ignored. To apply the patch, copy it to the Wah!Cade directory, then run 'patch -p0 -i ElLa.patch'.

Other frontends exist for xmame, as well as for other systems.

I-Pac Configuration

Ultimarc has an I-Pac configuration tool available for download. There is a GUI version for Windows, but only a command line verion for Linux. There are also Mac and DOS GUI versions, as well. However, once the I-Pac is configured, it will remember its settings reguardless of which OS it is plugged into. So, the Windows or Mac GUI version can be used for major changes, and then the I-Pac installed into a Linux powered cabinet. Where the command line version can be used for minor changes.

The configuration tool is able to change the key mappings for the I-Pac. However, the I-Pac already comes preconfigured for MAME. The only real need is if the shift button needs to be removed or changed. The shift button allows for extra key mappings to be sent to the computer, so MAME's menu or the game exit key can be press using just the arcade game controls. One such extra key mapping is a shift key combination to simulate a coin drop. The shift key may need to be disabled or changed to a hidden button, if the arcade cabinet is going to be used where the player needs to deposit a credit before play. Otherwise, the player could fake a coin drop using the arcade controls.

A faulty I-Pac board was initially received, which made the joysticks unusable and the buttons unreliable. However, Andy at Ultimarc was exceptionally helpful, and is sending a replacement board.