MAME Project: Final Assembly

My chosen computer for this project was a Dell Optiplex SX260, model DCT.  I chose this because it was one of the surplus computers I had in the garage, and also it’s very tiny, which is helpful for the cramped real estate in the back of this bar top cabinet.  It has a clip-on stand, so I drilled 4 holes in the stand and screwed it to the base.  I mounted it at a slight angle so that cords have room behind it and if I decide to make a back cover, the cords won’t be in the way.  The adapter for the video cable takes up quite a bit of room, so that was the largest connecter I had to allow for.  Here is a top view (click to zoom):


I had two power supplies, one for the computer and the other for the monitor.  Once again, cable ties are your friend!  I used a few of those nifty square plastic cable tie mounts, stuck them in place with their peel-off backing, then drove a 1” drywall screw down through the middle for good measure.  Wrapping cable ties through these and around the power supplies (it took 2 together) secured them nicely.


I threaded an extension chord through the old power-switch hole at the bottom right, and cable-tied it down securely.  Both power supplies plug into this as you can see above.  This gives me a really long power cord for the unit which will be handy as the dry-bar I want to put this on doesn’t have very convenient power outlets.

DSCN3215 DSCN3209

The last part was the top.  It had rusty crews on one half and rusty rivets on the other half.  I removed the screws and drilled out the rivets.  After a bit of cleaning, I installed all new nuts, bolts, and washers.  Now the top has a uniform appearance.  The top is held in place by clips underneath; easy to remove for any kind of servicing.


After a bit of testing, I determined that the potentiometer for the volume control has too much resistance.  It’s a 25K ohm.  I’m thinking that a 10 or 5K would be better.  The trouble is, the volume from the speaker is too low to be heard until you get 3/4 of max volume, then it quickly gets louder.  So, there isn’t much granularity.

Also, in updating some of the ROM files on the hard disk, I ran out of space.  Clearly the 20G hard disk in the box just isn’t big enough for Windows XP, MAME software, Hyperspin software, and lots of ROM files.  I wanted to put video previews of the games on there too, and they aren’t small.  So, I’ll have to either upgrade the internal disk or add an external USB drive.  Since I have room in the back, either one would work, so I suspect cost/availability will be the deciding factor.

I took the lazy susan off the bottom and added some felt-bottom furniture glides instead.  Nothing kills a good high-score attempt on Robotron like having the cabinet spin when you are trying to execute a precise maneuver!

Next up: Making it user friendly

By Tim Posted in MAME Tagged

MAME Project: mounting the monitor

I tried to re-use the original mounting bezel but the wood had become wet at some point in this poor beleaguered console’s life, and as it was pressboard, it was fragile, swollen, and crumbly.  So, new wood was procured, and with my friend Randy’s help, we crafted a new slide-in mounting panel.

I removed the monitor from it’s yellowing plastic case, and it turns out it was quite easy to mount.  A square cut-out was made, large enough for the monitor to slip into.  Some mounting pads were needed on the back to make the face of the monitor flush with the face of the new bezel.  There is a border around the LCD panel which does not need to be visible (read: would be ugly).  So we cut out another piece of plywood with a hole exactly the right size for the visible part of the LCD screen.  This is what’s known as a “Jig”.  You get extra points for using a jig when doing projects, as every do-it-yourselfer knows.  Of course, if you use a Jig to make a Jig, why then you get double-bonus points!  In this case though, we just made the one Jig.

Laminate material was clamped to the jig, then with a router and a laminate trimmer bit (really, these are amazing, don’t try to cheese out and use some other kind of router bit), the square was cut nicely with smooth edges and straight lines.

Everything was then disassembled, and we laminated newly-cut material on to the front of our bezel.  The laminate lip was covered with felt to cover up any fit imperfections, and help keep dust out.  The monitor was then screwed into place, with the ugly bits hidden behind the felt and laminate lip.  It worked very nicely. 

The original monitor bezel was mounted to the left, and there was a section on the right with a cheap piece of plastic and a button mounted on it.  We replaced both of these parts with a single bezel that spans the width of the console, providing a much more uniform look.

It was most convenient to put the 1 and 2 player start buttons on the left because of the monitor controls which are on the right (you can see them as a vertical row of little black buttons below).  You may remember that I had these wired for right-hand mounting, of course.  More wire hacking ensued.  On the right hand side, I mounted a pushbutton toward the top, and a potentiometer toward the bottom (for a volume control).  Click on these to zoom:

DSCN3204 DSCN3205

The pushbutton was originally intended to be a power switch for the monitor.  However, I found that the monitor “remembers” it’s last state.  If it was on when it lost power, then it will be on when the power is restored.  That was very convenient for me as I just had to turn it on with the little pushbuttons (see the back to the left) and leave it on.  If the unit gets unplugged, then the monitor will turn itself back on when it is plugged in again, so no external switch is needed.

The computer, though, is another story.  I had originally intended to set the BIOS settings so that the computer would turn on whenever power was restored.  However, since I had an extra pushbutton, and since it’s generally not recommended to turn a computer off by yanking the power, I decided to use it as a computer power button.

Next up: Final assembly

By Tim Posted in MAME Tagged

MAME Project: extending the harness

As I mentioned, the wires on the provided harness are nowhere near long enough to reach the interface board when mounted in any spot other than just behind the keyboard (and that’s where the monitor needs to live).  So, I had to extend them.  This involved 22 gage wire, shrink-wrap tubing, and 22 gage female spade-lug connectors (red plastic sleeves, blue are 14 gage).


This was very tedious, but worthwhile, as now I can mount the board in a more convenient location.  Also, I can now wire up both of the pinball “flipper” buttons which are on the front of the control panel.

I extended the harness by cutting off the molex connectors on the PCB end with small pigtails of wire left on them, then spliced in longer wire.  If I could have found a convenient source for those particular molex connectors, it would have been quicker to just make all new harnesses.


To make these splices, strip the wires, and don’t forget to slip a piece of shrink-wrap tubing over the longer wire.  Slide this down away from where you are soldering as it’s easy to accidentally heat it and have it shrink where you don’t want it shrunk!  Twist the wires together and solder them, then fold the joint flush against the wire.  Slide the shrink wrap tube up the wire and over the splice then heat the tube to shrink it:

2011-04-16_13-57-54_138 2011-04-16_14-02-56_205

Here’s a close-up of the panel.  You can see in this shot what I was talking about with separating the common wire for a group of switches for ease of routing:

With the panel mounted back in place with a couple of screws to temporarily hold it, I was able to neaten up the cable harness (cable ties are your friend, remember!)  To the right you can see the Player 1 / Player 2 start buttons.

When rewiring this whole mess to extend the harness, I decided to put Player 1 on the left and Player 2 on the right, rather than my swapped setup.  It really wasn’t much different for single player use, and for games like Robotron, the controls are backwards which is really a mind-trip.  So, enough of my cleverness, we’ll go back to a conventional layout.

Here is a close-up of the interface board with the spliced wiring:

I popped the monitor in place to test, and everything worked fine.  I did have to take the panel off one more time to tweak one of the micro switches on the left (Player 1) joystick as it would not switch off with the stick centered.

Next up: Mounting the monitor

By Tim Posted in MAME Tagged

MAME Project: Software

Once I was satisfied that the hardware was all basically working the way I wanted it to, I decided to take a break from construction and delve into the software.  My goal was to get the software to work with my jury-rigged control panel and prove to myself that I could create a machine which doesn’t take a computer-literate person to operate, and can be controlled without a keyboard/mouse.

First, I downloaded the latest emulator from – seemed like an obvious thing to do.  This worked, but had some issues with being controlled exclusively from the control panel.  I still had to keep hitting the ESC key on the keyboard, and that just wouldn’t do.

So, I went to the support section on and they have an article on there entitled “Configuring MAME for X-Arcade use – The Easy Way”.  Now that sounded good!  They recommend using a slightly different version of the emulator called “Mame Plus!” – no problem, I downloaded and installed it and it worked just fine, following their simple directions.  I did of course have to put some ROMS into the mame/roms directory (more about this later).

The nice thing about using this version, and the associated control files that come with it, is it’s set up nicely for the joystick/button setup that I have (same layout as the xarcade device).  When you run a game, it comes up with a warning screen telling you that you need to own the ROM files because of copyright issues.  Then, it makes you type OK on the keyboard to proceed.  With this emulator version & associated control files though, you also have the option of moving player 1 joystick left then right (it says on the screen to do this) instead of using the keyboard.

Another important thing is exiting the game.  To do this, you hit the ESC key.  Fortunately, with this software setup you can hold the “2 player start” button and push the right pinball flipper simultaneously to exit also.  Voilla!  Keyboard has now been rendered totally unnecessary for game play.  I decided that was an odd key combination, and I changed mine so that you press “1 player start” and “2 player start” simultaneously to exit.  I may decide that’s a bad idea at some point, but it seems good for now (besides, if you read the bit about the wiring harness, you might remember that my right hand fllipper button is not hooked up because the wire is too short, and I was too lazy to extend it).  I also went into the mame.ini file and manually disabled the game info screen that comes up when you first launch a game (after you say OK to the ROM police).  To do that, I changed “skip_gameinfo 0” to “skip_gameinfo 1”.

Here’s a useful article which lists all the options in the mame.ini file, and what they do: CLICK HERE

If you really want to use the latest version, instead of the “Mame Plus!” version from xgaming, then edit the mame.ini file and in the “core input options” section, make sure you have “ctrlr xarcade” in there.  That should do all the control tweaking for you.

While the mame/mame+ user interface (UI) is workable, it’s not very pretty, and not very kid-friendly (or grandma friendly).  So, I looked around for other front-end programs.  There are quite a lot of them out there.  The one I decided to download and try was Hyperspin.  I’m not totally crazy about this front-end, but it does give me the ability to prevent users from bailing out and ending up with a windows desktop.  Also, it makes the game selection process more game-like than the mame UI.  I learned quite a bit about managing it and getting the menu selection pared down to a usable list (instead of 6000+ games in alphabetical order).  I’ll share that stuff later on.  For now, I’m satisfied that I can make this thing turnkey and it’s back to the hardware!

Next up: Extending the wire harness

By Tim Posted in MAME Tagged

MAME Project: – Wiring the panel

The next step was to wire the panel.

Here’s a link to the button/joystick kit I used: CLICK HERE
Here’s a link to the keyboard encoder: CLICK HERE

The XARCADE keyboard encoder came with a wiring harness, so it should be fairly simple, right?  The wires are labeled next to the small connector which plugs into the circuit board, and also they are labeled on the ends where they push on to the micro switches.  Each switch has 2 wires which go to the “COM” (common) and “NO” (normally open) connectors.  The “NC” (normally closed) lug is not used on any of the switches.  It doesn’t matter which wire you connect to COM and NO, as switches don’t have polarity.  It’s not physically possible to hook all the wires up as-is because of the way they are joined together with the labels.  They use common wires with multiple connectors on them, and all the commons are the same, so I took the labels off the switch end of the wires, and re-applied them just to the non-common wires, like this: 


This enabled me to attach the wires to the switches easily, and then I took the common wires and wired them in whatever order was convenient.  For the joysticks, this meant running the common in a circle from one switch to the other until all 4 were connected.  You can zoom in on these pictures by clicking on them:

DSCN3157 DSCN3158

I didn’t try very hard to route the wires neatly, as I know I’m going to have to take all this off again in order to fill the holes in the panel and I’ll probably cover it with laminate or something.  What I did discover is that the wiring harness is really short!  This was a bit of a surprise as this is a small enclosure, so the buttons & joysticks are closer together than you’d probably want for a 2 player stand-up system.  I asked the manufacturer if they sold longer harnesses or harness extensions and was told that no, they don’t.  So, I’m going to have to cut into the harnesses and extend the wires myself – a mind-numbing task which I will probably not enjoy much.  For now, though, I wanted to find out if it’d work.  You know, proof-of-concept (aka: instant gratification)

I brought the case inside the house (it’s winter and my garage has no heat), and set it up on my desk.  To the right you can see the diminutive Dell Optiplex I’m using as the CPU, and it’s power supply on the desk next to it.  I set a 15” flat screen monitor inside the box to get an idea for sizing and how it will all work.  They keyboard/mouse will not be present when the unit is completed, but they are pretty important for development.


If you look down into the enclosure, you’ll see the keyboard enclosure PC board right behind the control panel.  Unfortunately, that’s where the monitor bezel needs to go.  You can see where the bezel slides in vertically by the guides on the sides.  The two white switches to the left of the PC card are the “1 player” and “2 player” start buttons.  I haven’t decided where I’ll put those, but I suspect to the right of the monitor.

I wired the right hand joystick/button cluster as “Player 1” as I figured that would be most comfortable for right-handed people like me.  For two-player mode, “Player 2” is on the left, and you’ll have to be bumping shoulders.  After fiddling with this for a while, I’m not convinced that the right hand cluster is most comfortable as I’d thought for single player use.  I’ll wait until I’ve got the monitor mounted properly to make that decision as the monitor will not be in the center of the box as it is now, it’ll probably be to the left (that was the original configuration of the box, and it seems like an OK one, though I suppose I could have the monitor more towards the right hand side.  Trail and error!)


Clearly, I’m going to have to extend the harness – Grr!

On the bright side, there seems to be plenty of room in the enclosure for the CPU and for the monitor.  I have a few of these flat-screen monitors I picked up surplus a couple of years ago, so my plan is to take one apart and mount the LCD to the front bezel.  I might have to re-make the bezel to fit the monitor screen, I haven’t measured that yet as I don’t know what the LCD panel is going to look like once I take it out of it’s aging yellowed plastic case.  Also, the power supplies attached to the walls of the enclosure are going to go away – I don’t need them.

I plugged the keyboard into the PC board, and plugged the wire from that board into the back of the Dell.  When I powered it up, everything worked fine and the system booted normally.  I’d installed a fresh copy of Windows XP and had installed all the Microsoft patches already.  I fired up Notepad and pressed each button in turn to make sure it “typed” the correct key.  All was fine except the right “flipper” button on the front – the wiring harness wouldn’t reach that, so I don’t have it hooked up.  Also, 2 of the switches on the joysticks needed a little adjustment to make them “release” properly when you let go of the joystick and it springs back to the center position.  To accomplish this, I just bent the trigger bars on the micro switches a bit with needle nose pliers.  Xgaming has a special “tester” program, but I didn’t bother to download it, as Notepad was quite sufficient to let me see what was going on.  The only keys that are difficult to test are the ones that generate Shift, Ctl and Alt.

I left the “mode” switch in “mode 1” (switch all the way at one end, nearest the yellow wire – finding that gem of info in the documentation took a while, and the switch is not labeled).  Mode 1 is the “factory” programming layout.  I don’t have any need to program it differently, so that works fine for me.

Next up: Software!

By Tim Posted in MAME Tagged

MAME Project: Hacking the control panel

Once I had the old console disassembled and cleaned up a bit, I needed to figure out a new layout for the controls.  The old console had a single joystick and a couple of buttons (no idea what game it used to play), but I wanted MORE.  I decided to go ahead and put two joysticks and button panels so that two player games could be played, as well as single player games.  Admittedly, you’d probably have to be pretty close friends with the person you are playing 2-up games with, but hey, that’s all part of the fun!

I also decided that I’d make the right hand player “Player 1” and the left hand player “Player 2” because when you are in single player mode, the right hand controls are more convenient for a right-handed person.  Coincidentally, I am right handed.  Imagine that.

First step was to apply some self-stick white “contact paper” to the panel so that I could draw my new design on it and measure out where the holes need to be drilled


This panel is steel, not aluminum so while it’s nice and rigid for game play, it’s a real pain to work.  Drilling it requires decent (read: expensive) drill bits, Oil, the slowest setting possible on my drill press, and lots of patience.  First I drilled pilot holes for all the buttons and the mounting screw holes for the joysticks (same size drill bit).  The somewhat round circles at the bottom of the picture outline existing holes that I’ll re-use.  The other existing holes in the panel will be ignored for awhile.  They don’t exist.  Work with me on this.

DSCN3135 DSCN3136

Once the pilot holes were drilled, I enlarged the holes so the bolt from my chassis punch would fit.  Note that I drilled two holes on the front of the panel for the “Pinball flipper” buttons which are used in some games.  Notably, the pinball games.  Believe it or not.


A Chassis punch is absolutely the only way to go for creating large holes in sheet steel like this.  You apply muscle power to it and it bites through leaving a very nice neat hole.  This is a 1 1/8” hole, and it was a bit of a challenge to find a chassis punch that size.  I ended up getting a Greenlee punch for about $50

DSCN3138 DSCN3139

After I was all done punching, I took off the contact paper and washed the whole thing in the sink.  My wife was very understanding and never even gave me a sideways look.  Here’s what the final result looks like.  Again, ignore the extra holes.  I’ll get around to dealing with them later.  Right now, it’s proof-of-concept time.

DSCN3140  DSCN3142

After a lot of fiddly screwing and tweaking, I got all my new parts installed on the panel:


Unfortunately, even though I tried to leave room on the sides, I was not able to leave enough room, and the nifty clips that held the front panel on just wouldn’t work.  Sigh… oh well, they are history.  I’ll just hold the panel in place with good old fashioned screws.  After all, how often am I going to need to remove the panel and fiddle around underneath?  Probably not all that often.

DSCN3144 DSCN3145

Behind the panel goes this support which the screen bezel sits on.  It’s very tight up against the back of the panel, and my joystick connectors stick out a bit, so I had to notch out a bit of wood to allow for that.  On the right you can see a close up of the piece installed, and the joystick terminals peeking out.

DSCN3146 DSCN3147

Next up: Wiring the panel

MAME Project: bar-top video game console

I started a fun project, so I thought I’d share the pain here! The goal is to create a bar-top video game console which runs the MAME emulator and plays thousands of classic video games (like Pac Man, Robotron, Major Havoc, Galaxaga, etc).

A few years ago, I picked up a full-size arcade machine (Solitare actually, but I planned to gut it so I didn’t care what it was), and the guy threw in a small bar-top “shell” with no guts to speak of.  Recently, this project has been bouncing around in my noggin and I decided to do the small one first, as I had an old very small form factor DELL computer which I could hopefully use for the project.

Here are some pictures of the cabinet after cleaning most of the crud off it:


It’s mainly pressboard laminate construction, and some of the pressboard has been damaged by water, so it’s swollen and brittle.  I’ll have to replace those parts, but I want to do a “proof of concept” and make sure everything fits in here that I want to put in, and that it’s usable for friends and family without a degree in computer science.

The top unclips and lifts off, and then the monitor bezel and the piece beside it with the blue “mystery button” on it just lift out.


I removed the control panel. It’s held in place with these nifty clips so it just pops out easily.  I am not sure I’ll have room for those clips in my new unit, but we’ll see.


There are a couple of power supplies which I’ll leave for now (probably won’t need them, and I’ll remove them later)

 DSCN3101 DSCN3102

I removed all the old controls from the steel panel, and to the right you see my collection of NEW XArcade parts.

 DSCN3103 DSCN3104

To the right, you can see I am fiddling around with control layouts using a piece of cardboard for my doodling. 

Next up: Carving up the old panel to fit my new layout