Tuesday, March 09, 2010 ..:: Reference » Building an Arcade Machine ::.. Register  Login
   Building an Arcade Machine Minimize

Birth (and Re-birth) of a Vidiot

Final Product (almost)

 

It started out innocently enough (as all good stories do). There was an article in an issue of Popular Science that talked about making your own arcade machine. It looked pretty interesting, so I left it out on the couch to finish reading later. Daniel noticed the article and picked that time to read one of my magazines. He was instantly obsessed with the idea. Having spent a lot of hours and dollars in arcades in my teens, I was easily convinced to look into it.

 

Levels of Involvement

There are basically 3 levels of getting into this that I've found. Level 1 is downloading the MAME (Multi Arcade Machine Emulator) program, getting the ROMs you want, and simply running the program on a normal computer system setup. Hint: This is a really good place to stop if you want to control the amount of time and/or money you spend on this project. I'm including a link to a zip of what I have in place that should make the download and install take substantially less than the 20 - 40 hours indicated in the article. Just unzip this to c:\arcade and you should be ready to roll. But, as Daniel liked to quote from the Pop-Sci article "a keyboard is a poor replacement for a joystick". So, we must move on to Level 2. I really wanted an arcade cabinet and arcade controls to work with. I picked up an arcade cabinet with controls and Daniel and I descended on a poor, unsuspecting keyboard to wire up the controls. This part was probably the most educational, if you are going to make the stretch and try and use that justification with the spousal unit. We had to gut the keyboard to get the 'matrix' out of, then solder wires in and test each combination to know what key it represented. I'll go into more details later. At the end of this step, we had some arcade controls with a keyboard plug at the other end. But, we had this wimpy little 17" computer monitor sitting beside the arcade cabinet, which had a nice 25" monitor sitting idle, and only around 4 of the the 20-40 hours invested so far. Descend to Level 3. The trickiest part of getting an arcade monitor working with a computer video card is handling the fundamental differences in refresh rates. Arcade monitors use 15.75 Khz for their refresh rate. Computer monitors start at 60 and go up from there. More about that later...the easier part is to cross wire the video card to the arcade monitor inputs. You need to know the pinouts of both end, and you'll spend some quality time getting to know about horizontal versus vertical syncs along way. This part of the project has been the most time consuming. I've worked with a number of different variations of MAME (AdvanceMAME being predominant), as well as front ends, video cards, and a lot of trying to fine tune the vertical hold (which was due to a cabling problem).

There are a few other common threads, regardless of how deep you go into arcade emulation. First, you need to find ROMs. These are the actual dumps of the hardware chips that contained the arcade programs. There are a few different approaches. You can send somebody money and get a few CDs or DVDs containing the thousands of games that are available. My preference is to use some sites that allow one at a time downloading. Since I want to chose the games I have available, this works out great. Every time I think of another game I used to play, it's like getting a new toy. Here's a link to the list of supported games: http://www.mame.net/gamelist.html.

The next common theme is using a frontend. The Mame variations are command line driven. So, beyond the first couple times being able to run true arcade games, it gets old bringing up a command prompt, typing in the command and options, etc. These front ends will present you with a list of the games you have available and you can chose from that menu. I've landed on 3 different first choices of front end for each of the different levels of involvement. I'll include the links in the various level specific sections. Another question that is certain to come up, with an answer that doesn't depend on the level of involvement is how much computer you need. We had a spare 300Mhz Celeron laying around that we started with. It did great on the games I wanted from my teenage years. We started running into limits when we got to Pacmania, which is late 80s / early 90s vintage, but with fairly impressive 3D rendering for the time. The game play was so poor, it was unusable. We swapped out for a PIII 500 Mhz. The game play is good, but sounds are poor. As with most computer projects, the more, the better, but we don't see a need to buy a state of the art machine for this project.  

I wanted to cover the different levels of involvement at a pretty cursory glance so you have a better idea of how deep you want to read into this. From here, I'll structure the info so you can stop at whichever level you chose.

Level 1

To be able to run arcade games on a standard PC, you need the emulator, some ROMs, and I'd recommend a frontend. There are both DOS and Windows versions of the emulator, but I'll assume anybody reading this is using some version of Windows. The most recent release can be downloaded here: http://www.mame.net/downmain.html. Note that this only comes with 3 cheesy games so you can verify it works. To get real arcade games, http://www.retroroms.com is my first choice (you need to register to login, but it's free), http://www.romnation.net (if you are tolerant of R rated ads), or you can search Kazaa for "mame rom" for collections, just beware of viruses. In terms of a frontend for keyboard and computer monitor use, I like  arcade.exe.

Since this is enough to get up and running, the next hurdle is knowing which keys to use. Once you launch a game, hitting Tab will give you a menu where you can map your own keys (along with the other config changes). However, most games follow a convention. To insert a coin, it's 5 for player 1 and 6 for player 2. To start a 1 player game, the key is 1. 2 player start is 2. Player 1 direction keys are the 4 arrows. Button 1 for player 1 is left Control, Button 2 for player 1 is left Alt. Esc will exit the game. Those are the ones I know off the top of my head (and use occasionally with my main system). If you are playing 2 player or need more than 2 buttons, you are bordering on wanting to move to Level 2.

Level 2

The basic idea was that I wanted to find a cheap dead cabinet that had controls we could use. After calling around to the local Amusement Devices places, I only was able to reach one guy who had a dead machine in his mom's garage. It was $300, which was more than I wanted to spend, but the state of the machine was that it only had a problem with the motherboard. Other than that, the controls, monitor, coin mechs, speakers all worked. Given the possibility of having a 25" arcade monitor to work with (and the price included delivery), I decided to go for it. It's worth noting that this was the first time I had spent any money for this project. I was able to find some good sites about doing the keyboard hack http://dragonsden.emuunlim.com/ddkeytutl.htm. The key addition (pun intended) I'd make to the instructions is to use a terminal strip. My keyboard board has 25 pins, so I picked up a pair of 12 position terminal strips at Radio Shack (http://www.radioshack.com/product.asp?catalog%5Fname=CTLG&product%5Fid=274-679). This was the second time I needed to spend money on this project (a whopping $7 this time). I soldered about 1 foot wires onto the pins of the keyboard breadboard, and attached the other end to my terminal strips. That made it easy to keep things organized and allows attachment of more than 1 arcade control wire to a single keyboard pin. Mapping the matrix wasn't too bad, since we used a keyboard scanner http://www.rabidsquirrel.net/squirrelcade/KeyScan.exe to tell us which key was being pressed when we joined each pair of wires. The matrix we mapped was 8 x 15 because that was the split the 2 layers of mylar used.  

Now that I have a virtual keyboard ending in terminal strips, the fun part of hooking up buttons comes. Instead of hooking everything up at once, we enjoyed making incremental progress. First was hooking up the start and player 1 directional keys. Next came the buttons for player 1. Then, the same for player 2. At this point, we have the coin mechanism hooked to inserting quarters, the game select button hooked to esc to exit, etc. There is nothing we've run into that doesn't have a control. A few of the games that use both joysticks (Crazy Climber for example), had different mappings, so we had to configure the keys according to our hookups.

For this setup, I like Game Launcher http://www.dribin.org/dave/game_launcher/ for a frontend. It has keys setup to allow use of the arcade controls. By contrast, arcade.exe, mentioned above requires use of enter or a mouse click. We don't have those available through the arcade controls. So, we're in pretty good shape now, we have the system booting into Win98se and running GameLauncher at startup, so we go straight into the menu of available games that we can select and play with the joysticks and buttons on the arcade cabinet. The only problem is this little 17 inch monitor that's floating in this huge game cabinet. We cut and painted a nice hardboard bezel, so you don't see all the open space around it, but it's really a small portion of the area the arcade monitor occupied. It's just wrong...which takes us to level 3.

Level 3

I'm not going to say this is the ultimate level of arcade simulation, but it's far enough along that the result is basically indistinguishable from the arcade equivalent of the games we play, except that we have the key to get our quarters back. Working with the monitor has been by far the most time consuming portion of the project. First of all, we needed the physical connection from computer to arcade monitor http://dragonsden.emuunlim.com/ddvgatutl.htm. I had a VGA entension cable laying around, so I didn't need to buy anything to wire it in. I just clipped the monitor end off the cable, got wiring diagrams for standard VGA pinout and my Wells Gardner 25K7191 arcade monitor (trust me, if you are heading down this road, you will know your monitor very well - frequencies, model number, wiring diagrams, etc.), and cross wired a cable. Not being particularly patient when it comes to such things, I went ahead and hooked it up to test. There were readable characters, although there was a kind of flickery side-by-side dual image thing going on. This is representative of the different frequencies between standard VGA and the Arcade monitor. So, with the hardware hooked up, it was time to go into the software side of the world. (Note: If I had done more research about cabling the monitor, I would have saved a lot of time and a couple trips to the arcade doctor. I used the wiring that was originally hooked up to the JAMMA harness. Unfortunately, that system fed a composite sync signal into the negative h-sync pin. I tried feeding hsync alone and composite (twisted together) into this pin, but neither resolved my vertical hold problem. Now, I have additional pins wired and have the video card vsync feeding into the monitors negative v-sync. That turned out to be the magic step to make my monitor really work. Since I believed my monitor was at fault, I took it to Game Exchange of Colorado. They charged $77 (third outlay of money), but it turned out that the monitor was not at fault. It was the cabling problem on my side.) Here's a good general reference for the software http://easymamecab.mameworld.net/html/win9815k.htm. I'll go into more details about the specific path I went down.

To run the arcade games on an arcade monitor, you need software and a video card that drive 15.75 Khz. There are lists of suitable video cards available http://advancemame.sourceforge.net/doc-carddos.html, and one or 2 made specifically for this situation http://www.ultimarc.com/avgainf.html. The basic criteria is that the card needs to allow true programming of the registers and what frequency to use. In the 300Mhz system, I was using an old Trident PCI card. There is a branch off of MAME called AdvanceMame, that has this frequency support as part of the software. However, unlike windows or DOS mame, you spend a lot of time configuring it instead of just firing it up. This is a time to say goodbye to Windows. You will be driving AdvanceMame from DOS instead. I used the method of turning off the 98 GUI. This lets me simply type Win if I wanted to get back to Windows. (http://www.mameworld.net/dosmame/setup.php) You need the DOS driver for your sound card, and some knowledge about config.sys and autoexec.bat (more  nostalgia, if you want a positive spin). The advcfg program is the 'simple' version of configuration, advv gets into more advanced modes for video settings. If you have a well known arcade monitor, you'll be able to select it from a list and test different video resolutions. There's a lot of working with the computer montitor, switching to arcade monitor to test a mode, switch back to computer monitor, and repeat. So, you want to have the equipment co-located to make it as painless as possible. After going through the configuration and running AdvanceMame and seeing an 80s vintage game running on a nice big 25" monitor, it's worth the effort !

Getting a reliable hands-off system is another matter. At this point, I had to boot up with a computer monitor (and keyboard), then start up a game in AdvanceMame, then switch the monitor over to the arcade monitor and the keyboard over to the arcade controls. Knowing that I was going to have 4th graders as my main users, this wouldn't work. So, I looked into frontends that could drive an arcade monitor. I settled on ArcadeOS. However, somewhere between the BIOS and video card, my arcade monitor wouldn't display content unless I started with the computer monitor and switched over at the right time. I tried waiting until the frontend was loaded (which had sound to let you know), and attaching arcade monitor at that point, but that didn't work for me (it has for others). When I switched out machines to the 500 Mhz system, it has an ATI Xprt 98 AGP card that behaves much better in terms of startup and non-15.75 switching. I can have the monitor on while it boots, then when the frontend launches, it becomes 15.75 and things are cool.

I'm still working on getting more resolutions to work. I'm happy with the bahavior of all horizontal oriented games. I had to use the , and . while playing to go through some video variations in a couple. Some of the vertical ones (galaga, mappy, etc.) are still troublesome (out of sync vertically). I'm getting ready to work through advv to establish as many modes as possible and hope that will do the trick.

One of the side-effects of using a spin-off of Mame is that some games that work in Mame don't work in AdvanceMame. I had a bunch of games that had me worried. When a new version of AdvanceMame came out, I switched to it. It plays more of the games I was having trouble with, but something about the listing of games is not playing nice with ArcadeOS. So, I've switched frontends to AdvanceMenu. This is a partner program using the same underlying 15.75 Khz support as AdvanceMame. Last time I tried, I couldn't get it working. This time, I spent more time with it (my main issue was video_mode = 1024 that the deafult put in) and now it's working.

Easy Way Out

There is an easy way to get to a powerful end result. You can buy a complete MAME arcade cabinet. These generally run around $1200 and include a good sized monitor, controls, cabinet, beefy PC, etc. If your interest in the end goal and not the journey and you have the money, this isn't a bad way to go. I'll admit there were points along the way where I got pretty frustrated...never enough frustration to warrant presenting a business case to the CFO, though.

Next Steps

This isn't necessarily meant to be more levels of complexity, but simply the things that might be worth looking into. The only shortcoming is for games that need different types of controls. For example, I have Tempest, but it doesn't cut it with joystick and button interaction. It really needs a spinner. Similarly, Marble Madness and Missle Command really need a trackball. Driving games really need steeing and pedals. The ideal situation would probably be to have a cabinet dedicated to each style, but I'm not feeling the desire to head that direction in the immediate future.

Various Other Useful Notes

Saving high scores. Some of the games manage to save some high scores, but not all. This site has a hiscore.dat file that allows more to save scores.

Best Quotes along the way

"You are finally putting your geek-dom to good use !" - sister Michelle (Tempest)

"All this because your wife won't let you have an X-Box ?" - Dan (Crazy Climber)

"I hate you ! I was up till 2 am playing Galaga" - Eric (Galaga)

    

Copyright 2009 by DotNetNuke Corporation   Terms Of Use  Privacy Statement
DotNetNuke® is copyright 2002-2010 by DotNetNuke Corporation