MAME Logo

Control Panel

 
Introduction
Computer
Cabinet
Monitor
Control Panel
Finishing Touches
Final Product
Costs
Credit & Thanks
Useful Links
Future Enhancements
Questions? Feel free to e-mail me.
This is the section that everyone seems to spend the most time on, so I'm going to make mine as easy as complete as possible, in hopes that you'll understand exactly how I designed this, and why I made all the decisions that I did. If you still have questions, please feel free to e-mail me and I'll answer them as best I can.

Decision #1: How to interface the controls. The most popular methods out there include hacking a keyboard, hacking a joystick, or purchasing a "keyboard encoder". Although the keyboard encoder is by far the most expensive option, this is certainly the easiest solution in my opinion, and the one I decided to go with. I didn't want to have to solder 50 individual wires to the back of a hacked up keyboard, only to have one or two wires break off after a few plays. I also wanted to eliminate any chance of ghosting, and having discrete inputs certainly prevent this from happening. Also, if any of the inputs in MAME get switched in a future release, these are completely programmable and can be changed to accommodate this. For example, just recently the credit button was changed from the 3 key to the 5/6 keys for 1 & 2 player games. Changing this with a keyboard hack would have been a minor pain. But changing it with an encoder is simply a matter of loading a new configuration into the EPROM memory with the supplied utility. I purchased the KE24 from Hagstrom Electronics. If you haven't already read about them, they really are very pleasant and helpful, and I would highly recommend purchasing an encoder from them. So, what exactly does an encoder do? It emulates keyboard strokes, and you can hook buttons and other devices up to the inputs.

Decision #2: Layout of the control panel. This was by FAR the most time consuming aspect of the entire project. All I knew was that I wanted 2 joysticks with 6 buttons each, a trackball, and the appropriate maintenance switches. I decided up-front that including a spinner would be too expensive, and clutter up the panel too much. Maybe on my next machine, with the larger control panel! When I first started, I thought I would have 30" width to work with. But after I got my cabinet, I found that I was limited to 24". I didn't want to expand the keyboard out beyond the sides of the cabinet, so I decided to alter the layout to fit into this width and keep the game looking as close to original as possible. After toying around with many different layouts, here is the one I decided on:

cp_layout.JPG (64271 bytes)

The main buttons are 1.75" apart (center to center) and were drilled with a 1 1/8" spade bit. I would have made them 2" apart, but due to lack of "real estate", I settled for the smaller distance (which has actually worked out for the best!). I wanted to be sure the main fire button for player one did not interfere at all with the player 2 joystick. Actually, this spacing is perfect for the buttons…I'd recommend it!

There are two types of buttons and joysticks: "Leaf" and "Switch".  

 

button_leaf.jpg (64206 bytes)

In the picture above, you'll see an example of a leaf style button.  A "leaf" style joystick (or button) makes a connection when two long metal strips contact each other.  You have to look around to find leaf style buttons and joysticks, but they're out there.  The benefit is that they're really quiet when making contacts.  The downside is that they need to be "adjusted" from time to time.

button_switch.jpg (45370 bytes)

In the picture above is an example of a switch style button.  A "switch" joystick (or button) forms a contact when a small button on top of the switch itself is depressed. The actual switch is the white rectangle on the bottom of the picture.  If you look at the right hand side of the switch, you'll see a small red button.  When this is depressed (by moving a joystick or pressing the arcade button), the connection is made!  These are extremely reliable, but tend to make a lot of noise (especially the joysticks).  Even still, they seem to be the most popular way to go when building your own cabinet.

Decision #3: Joysticks / Buttons to use. Originally, I had purchased an 8-way leaf style joystick from Wico, and a bunch of buttons. The leaf joystick has the original round handle top which is what I really wanted, but it had a really stiff feel to it in many games.  At that point, I decided to go with the Happs Ultimate 8-way switch joysticks, and ordered some extra buttons (there' s a minimum $25 order). One complaint on the 8-way joystick is that it's pretty difficult to play some of the old classics like Pac-Man. If you're off even just a little bit, you'll find yourself moving in a different direction than you anticipated.  First off, the buttons I received from Happs were far superior to those I got from Wico. The ones from Wico were different lengths, the switches were different sizes and manufacturers, and were really difficult to trip in some cases. Also, there was often a lot of play between the button and the switch. The Happs buttons had a solid feel to them, and didn't give any resistance when pushed. Bottom line: order from Happs. You'll be glad you did.

Update 8/20/2000: I've changed my mind and installed the Leaf style joystick into player 1...it's awesome!  Now I can play the old 4-way games without the troubles the switched 8-way was giving me.

As I mentioned earlier, I purchased a Hagstrom KE24 keyboard encoder to map all the keystrokes from the joysticks and switches.  Since interfacing a real Happs trackball (not to mention the actual cost of the ball itself) was too much at the time, I decided to go for the $10 CompUSA trackball. It's a heavy 2 1/4" ball and works incredibly well. As far as installation of the trackball went, I didn't do any special mounting. I was originally planning on installing two arcade buttons for the mouse button, but after MAME stopped using the mouse buttons for playing games, the only thing they would have been used for was for Windows, so I just omitted them. The one nice thing about this trackball is that it's not actually bolted to the control panel in any way and is yet incredibly secure. I did this by cutting a 4 5/8 by 4 1/4 hole in the control panel and just dropping the trackball in there…that's it! Of course I painted the cover to match the rest of the control panel since I didn't care for the lame beige color. Best part is if this trackball ever dies, all I have to do is buy a new one and drop it in!  Here's a view of the back side of the control panel (work in progress) with the hole for the trackball cut out:

cp_wip.JPG (136183 bytes)

Wiring the control panel is always the area that can cause the most confusion. I will go into as much detail about wiring the joysticks and buttons, and then interfacing with the KE24 as possible. If you still have further questions after reading this thoroughly, just e-mail me and I'll see if I can't help you out! First of all, you'll need some sort of a "Header" to attach to the KE24. There are two rows of 26 pins on the KE24, so an internal SCSI ribbon worked really well for me, and it was cheap (free!!!). The SCSI ribbon has two rows of 25 pinholes (50 total), so when attached to the KE24 there are two end pins that are not connected to anything which is no big deal since each set of end pins are "ground".  This next part is the biggest pain...stripping those tiny little SCSI wires and connecting them.  I decided to attach them to a 25-Pin SubD connector so I could easily swap control panels in and out (if I ever decided to do that in the future).  Here is a picture of the KE24 as well as the completed connector:

ke24.jpg (39563 bytes)

encoder_wiring.jpg (165524 bytes)

 

If you look closely, you'll see a little black box to the left of the KE24 wiring picture.  I installed two switches in there which allow me to turn on/off the free credits on the off chance that I'd want to charge quarters to play.  Yes, I hooked up the credits.  It was something I wanted to do and figured it would be easier to do now than later on.  The coin box that came with my machine already had switches installed, so all I did was make sure this circuit was always open, allowing coins to always give a credit.  The switches above will "shut off" the connection to the Green credit buttons on my panel if I so desire.  Below is a picture of the wiring in the coin door, and a picture of the switches that were installed:

credit_wiring.jpg (100004 bytes)

Originally I was planning on using discrete inputs for my joysticks and main buttons, and then use a 4x4 matrix for the remainder of switches. After checking how others had configured their encoders, I decided to do a full matrix with almost NO chance of ghosting. What's ghosting, you ask? If you've ever pressed a bunch of buttons on your keyboard at the same time and had other buttons not work or produce incorrect results (i.e. press the "a" and result in a "g" being entered), then you've experience ghosting! The only way ghosting can occur is when you press the two buttons in the same COLUMN at the same time. Well, this had better not happen. If it does, then you're doing something you shouldn't be doing!!! The way I've got it configured, the only chance of ghosting will occur if you press up/down at the same time (which you can't), or by pressing a combination such as P1/P2 Start, Config/P2 Credit, L-Flip/Quit or R-Flip/Reset.

Here's the mapping I used for the KE24 (it's in two tables so it would fit on one page):

2x24 Matrix:

 

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

A

P1
Up

P1 Lt

P1
B1

P1
B2

P1
B3

P1
B4

P1
B5

P1
B6

P2
Up

P2
Lt

P2
B1

P2
B2

P2
B3

P2
B4

P2
B5

P2
B6

B

P1
Dn

P1
Rt

           

P2
Dn

P2
Rt

           

 

S

T

U

V

W

X

A

Pause Left
Flip
Right
Flip
P1
Start
P1
Cr
Config

B

  Quit Reset P2
Start
  P2
Cr

How the matrix works: If you make a connection between the "A" and "E" pins, you would produce the keystroke for Player 1 Button 1.  Since there are 22 connections going to the "A" pin, you may be wondering how I hooked them all together.  I have seen many different ways of doing this, but I decided to just daisy chain the wires from button to button on the "Com" circuit of each switch.  So, the wire goes directly from P1Up -> .... P1B1 -> P2Up -> P2B2 -> ... -> Pause, and so forth.  This way there is only one wire which needs to go to the header.  This has worked beautifully for me, and I didn't need to go and purchase any terminal blocks.  The same logic was used for the "B" row.  The same logic was ALSO used for those cases where two buttons were in a column, but they were hooked up through the "Normally Open" circuit of each switch.  If you look closely at the picture of the backside of my control panel above, you can make out where these wires are connected.