BUILDING A CLEAN EMULATION CABINET INTERFACEI am a purist. When I see keyboards, mice, and pullout trays built into a cabinet for either machine maintenance or interface operation, I am a bit unnerved. Power buttons are also disappointing, or worse, opening up the cabinet to start the computer. All of these are unnecessary. Using free utilities and minimal hardware purchases, you can have a seamless arcade interface – your friends will not even know there is a computer in there.
This article is divided into the following sections:
I – POWERING UP AND HARDWARE
II – WINDOWS XP SYSTEM CHANGES
III – REMOTE CONNECTIVITY
IV – THE EMULATOR
V – THE LOADER/FRONTEND
For each section, there is a list of mentioned hardware purchases and software downloads.
I – POWERING UP AND HARDWARERecommendations:
- Motherboard with power-on by keyboard feature [< $120]
- Smart Strip [$30]
- I-PAC or equivalent [$40]
When I was looking at cabinets for an emulator conversion, an arcade repair techie showed me a beast of a machine. He was quick to point out that the front kickboard swung out. “What would I need that for?” was my confused response. “Well,” he replied, “how else are you going to turn on the computer?” Coming from a techie, I expected a bit more. Even a button on the side of the cabinet would be better than diving into the guts each time you wanted to play Street Fighter. The solution: a good BIOS.
My motherboard is a modest
ASUS A8V-MX. Although unassuming, its BIOS has a very useful function: Power-On by Password (actually inappropriately defined in the manual as Wake-Up Key). When the computer is powered off by software (S5), entry of a specified sequence of keystrokes will turn on the computer.
Note: Your power supply (and all modern ones do) needs to supply at least 1A on the +5VSB lead. You may also need to set a jumper on your motherboard (e.g. KBPWR for the A8V-MX). Check the motherboard manual before purchase for these considerations.
With an
I-PAC or similar interface controller, your pushbutton presses are converted into keystrokes. If you set your BIOS power-on password to a combination of pushbutton strokes, you need only your control panel to power on the computer! My power-on sequence is as follows (Street Fighter button configuration): P2-Strong Kick, P2-Strong Punch, P1-Start.
A
Smart Strip from BITS Ltd. combined with this is very cool. Not only will a pushbutton combination start your computer, if your computer is the ‘control’ device on the Smart Strip power bar, it will also power on your monitor, speakers, lights, etc.
Getting a motherboard with a simple power-on key/password and a $30 Smart Strip will save you from having to wire up a power button, and is also the cleanest possible way to startup your cabinet.
II – WINDOWS XP SYSTEM CHANGESRecommendations:
There has been a lot of experimentation with MAMEd Windows loading screens. I find the transitional resolution switches annoying, as is the lack of anything above 16-bit colour. I would rather disable the loading screen altogether. This can be accomplished by going to
Start >
Run >
msconfig.exe. Under the
BOOT.INI tab, check the
/NOGUIBOOT option. You will now have a black screen while Windows loads – much cleaner.
To increase performance, go to
Start >
Settings >
Control Panel >
System. Under the
Advanced tab, click
Settings under
Performance and then click
Adjust for best performance. This will remove all the Windows theme stuff and free up some RAM.
Using
TweakUI, I also hide all the icons on the desktop and set an Autologon for an account. You can also disable the Welcome screen under
Start >
Settings >
Control Panel >
User Accounts >
Change the way users log on or off. I also auto-hide the taskbar. To do this, right-click the taskbar and go to
Properties and click
Auto-hide the taskbar.
Be sure to place a shortcut to your frontend/loader in
Start >
Programs >
Startup.
You now have a startup procedure that goes from the BIOS screen, to a black screen, then directly to a completely clean Windows desktop with no icons, themes, or taskbar – wide open for any cool wallpaper of your choice to be displayed just before your frontend loads.
III – REMOTE CONNECTIVITYRecommendations:
This section should be front and center, but for flow, I have placed it here. Simply put, throw away that keyboard and say hello to
RealVNC.
RealVNC is a cross-platform, free utility that allows you to control a remote computer. You can move the mouse cursor and type on the keyboard of your emulation cabinet over a network connection. You can even control your Windows XP environment from your Mac. All you need is a network card in your cabinet PC. Personally, I prefer wireless.
Install RealVNC Server on the cabinet PC and the RealVNC Client on any other computer you have in your house (you can actually use a web-based client as well, but I have had little experience with this). Call up the Client on your ‘desktop’ computer, type in the IP address of the cabinet PC, and you can control your cabinet as if you were right in front of it.
One thing that RealVNC cannot do is any sort of file transfer to and from computers. What I do is use
FileZilla FTP. The server can be installed on the cabinet PC, but to save resources, I run only the client on the cabinet PC and FileZilla FTP Server runs on my desktop. Using RealVNC to connect to the cabinet, I call up the FileZilla Client, and connect to my desktop’s FileZilla FTP server. It is an extra step to go through RealVNC (instead of using the FileZilla client directly from the desktop), but it is one less service that needs to run on the cabinet. Besides, how often does one perform any maintenance on a cabinet?
IV – THE EMULATORRecommendations:
In keeping with saving all of your machine’s resources for the emulation itself, do not use any GUI frontends to emulators that have command line versions. For example, do not use MAME32 when better alternatives are out there. I prefer
MAME Plus! as it has one key feature missing from MAME: confirmation upon exiting a game. If you have ever accidentally hit P1-Start and P2-Start at the same time in a game only to have it quit on you, you will be very impressed.
V – THE LOADER/FRONTENDRecommendations:
The loader is by far the most important piece of software on your rig next to the emulator itself.
AdvanceMENU is my current favourite as it offers complete customization and leaves a very small footprint. Here are some screenshots of my configuration:
MAME games (MAME Plus!)

SNES games (zsnes)

Laserdisc games (Daphne)

Attached is my customization of advmenu.rc. Many additional emulators are setup here and I have changed the button configurations to match those of my control panel.
emulator "MAME" mame "c:\mame\mamep.exe"
emulator "zsnes" generic "-c:\zsnesw\zsnesw.exe" "-e -m roms\%f"
emulator_roms "zsnes" "c:\zsnesw\roms"
emulator_altss "zsnes" "c:\zsnesw\snapshots"
emulator_roms_filter "zsnes" "*.zip"
emulator "gens" generic "-c:\gens\gens.exe" "roms\%f"
emulator_roms "gens" "c:\gens\roms"
emulator_altss "gens" "c:\gens\snap"
emulator_roms_filter "gens" "*.zip;*.iso;*.bin"
emulator "daphne" generic "-c:\daphne\daphne.exe" "%s vldp -framefile %s.txt -fullscreen -x 640 -y 480 -noserversend"
emulator_roms "daphne" "c:\daphne\roms"
emulator_altss "daphne" "c:\daphne\snap"
emulator_roms_filter "daphne" "*.zip"
emulator "epsxe" generic "-c:\epsxe\epsxe.exe" "-nogui -loadiso roms\%f"
emulator_roms "epsxe" "c:\epsxe\roms"
emulator_altss "epsxe" "c:\epsxe\snap"
emulator_roms_filter "epsxe" "*.iso;*.bin;*.img"
emulator "stella" generic "-c:\stella\stella.exe" "roms\%f"
emulator_roms "stella" "c:\stella\roms"
emulator_altss "stella" "c:\stella\snap"
emulator_roms_filter "stella" "*.bin;*.a26"
config save_at_exit
device_color_bgr15 yes
device_color_bgr16 yes
device_color_bgr24 yes
device_color_bgr32 yes
device_color_bgr8 yes
device_color_palette8 yes
device_color_yuy2 yes
device_joystick auto
device_keyboard auto
device_lgrawinput_calibration auto
device_mouse none
device_sdl_samples 2048
device_sound auto
device_svgawin_divideclock no
device_svgawin_skipboard 0
device_svgawin_stub fullscreen
device_video auto
device_video_cursor off
device_video_doublescan yes
device_video_fastchange no
device_video_interlace yes
device_video_output fullscreen
device_video_overlaysize 1024
device_video_singlescan yes
device_video_clock 5-100 / 15.75 / 60 ; 5-100 / 25 / 60 ; 5-100 / 31.1 / 60
difficulty none
display_brightness 1
display_gamma 1
display_orientation
display_restoreatexit yes
display_restoreatgame yes
display_size 1024
event_alpha no
event_assign up up or 8_pad
event_assign down down or 2_pad
event_assign left left or 4_pad
event_assign right right or 6_pad
event_assign enter enter or enter_pad or a or 1
event_assign esc f12
event_assign space space
event_assign home home or o
event_assign end end or l
event_assign pgup pgup or t
event_assign pgdn pgdn or g
event_assign del del
event_assign ins insert
event_assign shutdown 5
event_assign help f1
event_assign group f2
event_assign type f3
event_assign exclude f4
event_assign sort f5
event_assign setgroup f9
event_assign settype f10
event_assign runclone s
event_assign command f8
event_assign menu backquote or backslash
event_assign emulator f6 or d
event_assign rotate 0_pad
event_assign lock scrlock
event_assign preview p
event_assign mute period_pad
event_mode fast
event_repeat 500 50
icon_space 43
idle_screensaver 0 0
idle_screensaver_preview snap
idle_start 0 0
include
input_hotkey no
lock no
menu_base 115
menu_rel 8
merge differential
misc_exit all
misc_quiet yes
mode list
mode_skip full full_mixed list list_mixed tile_small tile_big tile_enormous tile_giant tile_icon tile_marquee
mouse_delta 100
preview snap
preview_default none
preview_default_cabinet none
preview_default_flyer none
preview_default_icon none
preview_default_marquee none
preview_default_snap none
preview_default_title none
preview_expand 1.15
sort parent
sound_background_begin none
sound_background_end none
sound_background_loop "sonic-starlight-zone.mp3"
sound_background_loop_dir "mp3"
sound_background_start none
sound_background_stop none
sound_buffer 0.1
sound_foreground_begin none
sound_foreground_end none
sound_foreground_key "wav\Click16a.wav"
sound_foreground_start "wav\SFXCA.wav"
sound_foreground_stop none
sound_latency 0.1
sound_samplerate 44100
sound_volume -3
ui_background "background\wallpaper_invader1024x768.png"
ui_bottombar no
ui_clip single
ui_color help ffffff 000000
ui_color help_tag ffffff 000000
ui_color submenu_bar ffffff 000000
ui_color submenu_item ffffff 000000
ui_color submenu_item_select ffffff 247ef0
ui_color submenu_hidden ffffff 000000
ui_color submenu_hidden_select ffffff 000000
ui_color menu_item ffffff 000000
ui_color menu_hidden 808080 ffffff
ui_color menu_tag ffffff 000000
ui_color menu_item_select ffffff 247ef0
ui_color menu_hidden_select ffffff 247ef0
ui_color menu_tag_select ffffff 247ef0
ui_color bar fff300 000000
ui_color bar_tag fff300 000000
ui_color bar_hidden fff300 000000
ui_color grid 000000 000000
ui_color backdrop 000000 000000
ui_color icon ffffff ffffff
ui_color cursor fff300 ffffff
ui_command_error Error running the command
ui_command_menu Command...
ui_console no
ui_exit none
ui_font "contrib\ttffonts\vrinda.ttf"
ui_fontsize auto
ui_game snap
ui_gamemsg "Loading..."
ui_help none
ui_menukey no
ui_skipbottom 0
ui_skipleft 0
ui_skipright 0
ui_skiptop 0
ui_startup none
ui_topbar no
ui_translucency 0.6
mame/mode tile_normal
mame/preview snap
zsnes/mode tile_normal
zsnes/preview snap
daphne/mode tile_normal
gens/mode tile_normal
epsxe/mode tile_normal
stella/mode tile_normal
mame/sort parent
group_include "<undefined>"
type_include "<undefined>"
mame/group_include "Good"
mame/type_include "<undefined>"
emulator_include "MAME"
group "<undefined>"
group "Good"
type "<undefined>"
Note that ‘5’ is set to shutdown the computer. It is always fun to watch my friends’ faces when I put in a quarter and the Mario ‘death’ music plays as the whole arcade machine powers off.
VI – CONCLUSIONI hope this article has been helpful. You can save yourself considerable headache in your design if you use remote connection software and have a software power-on procedure. Front ends are getting flashier by the release, but have something fast, customizable, and most important:
clean.
Oh, and for those interested, you can see my project
here.
UPDATEI've posted a video on YouTube of the startup process for my cab using all of the suggestions listed here. You can view it at