Saturday, March 13, 2010

Arcade Controller Project [Part 1]

I have embarked on a new construction project. The plan is to build a 4-player arcade controller to use with MAME on a PC/laptop. If that didn't make any sense to you, perhaps this photo will :) ->

This is more or less what the finished product will look like (provided I don't screw it up too much...).

One of the things I'd like to focus on in this little write-up is the wiring process - my blueprint only came into focus after a lot of research into the inner-workings of the various pieces of hardware being used. Most of the descriptions I came across for this process were a bit vague on the details, so I'll aim to shed a bit more light on it.

Most of my inspiration was found in examples like the one above from arcadecontrols.com - there are some amazing builds showcased there. Now, on with the project!

In the planning stage, I decided to go with the keyboard hack method described here and apply the best practices I could find in other designs. I picked up 2 identical USB keyboards for free (one extra in case I royally screw up), pulled one apart and then spent a couple hours on the tedious task of mapping the keyboard's buttons.

Sidenote - How a keyboard works:
A keyboard is relatively simple in design. Underneath each button is 2 pieces of flimsy plastic film that have circuits traced on them. These 2 circuits form a matrix with x and y coordinates (dust off the high school math skills!). So, when you press a key, it creates a contact at point (x,y) which a small controller in the keyboard interprets and sends to the computer. This is particularly handy because:
1) Arcade controls work the same way, electrically speaking.
2) MAME (the program I'm using for the arcade games) is set up to use the keyboard as the default controller.

So when I said "mapping the buttons" I was recording the matrix points for each button - I'll need this info for the wiring. Each direction on a joystick and each button will need to have its own key on the keyboard. My particular keyboard has an 18 x 8 matrix - I've labeled them 1-18 and A-H. For example, the coordinates for the letter 'Y' on the keyboard are 7D.

Now I just have to translate it into wires...

**[NOTE: If you've been following this already and think that this post looks different, you're right. I've tried to restructure this into a more logical process so that it can be used as a guide for those that want to try the same thing.]**

No comments: