The stuff about keyboard matrices is kinda wrong. I wrote this long before I actually did a keyboard hack. Keyboard matrices can be and often are different from keyboard to keyboard.
This write-up is divided into two main parts. The first deals with Mac specific concerns about building arcade devices. The second part describes the procedures I took to build my first joystick. With that said, enjoy!
As a Mac user, trying to find information about Mac-specific joystick projects is kind of hard. By far the two most popular Mac projects are EV's and Tobias Jachmann's. I also came across this page while I was searching for info. But other than those, information is rather scarce.
Luckily, building joysticks for Macs and PCs is pretty much the same. There are only two main differences. This first being the input device interface. 'Legacy' Macs all use ADB (Advanced Desktop Bus) ports for input from keyboards, mice, gamepads, etc. Where as PCs use game ports, keyboard ports, etc. But now with the introduction of USB, both Macs and PCs can use a USB device. (Mac users, get USB Overdrive if a USB device does not have a Mac driver yet.)
The second issue is building Mac joysticks out of hacked up keyboards. The Mac keyboard matrix is different from PC's. This was posted on the Build You Own Acade Controls forum a while back and shows what the matrix looks like. This page also shows how to make a joystick out of a hacked up Mac keyboard. I don't have any experience with this so I can't be of much help.
Other than these two things, making a basic joystick is fairly straight forward for both Macs and PCs.
After visiting Build Your Own Arcade Controls FAQ and Arcade@Home I was determined to build my own arcade joystick to use with MacMAME. After a little investigating I came across EV's page which let me know for sure that it could be done with a Mac.
At first I didn't know exactally what kind of controller I wanted. I did a little thinking and came to the conclusion that I should make it similar to the Mortal Kombat series layouts. Mortal Komat II and UMK3 are two of my all time favorite fighting games. Since I knew what I was shooting for, I started thinking about the number of buttons I needed. On EV's page, he used 2 Gravis GamePads and a MouseStick II. Being that this was just a one player controller I thought I would just use one GamePad and a MouseStick II. This gave me a total of 9 buttons to use.
I started the project by first buying a Mortal Kombat I manual off of eBay. (Side note: if you're into arcade machines, check out eBay's Coin - Operated Listings. Even if you don't have the money to buy anything, it's still fun to see what's out there.) I bought the manual for around $5. Inside the manual there was a layout for all of the buttons and the joystick. I scanned the diagram and have it here:
I also was unsure about which color buttons I wanted to get. Being that Happ offers a wide variety of colors, I thought I would see what was used with the Mortal Kombat cabinets. On the same page as the hole layouts, there is a suggested sticker layout diagram. The diagram also states which buttons are what color. I have also scanned that diagram and have it here: Suggested Layout.
As much as I like Mortal Kombat, I've always wished Midway would have used the Street Fighter II sytle layout. The 2 rows of 3 buttons is, IMHO, the best layout for most games. So I modified the MK layout by moving the middle button up to be in line with the other two side ones and then just added another button to the bottom row.
While I was doing this, I was also bidding on 2 GamePads and a MouseStick II on eBay. I paid $30 for all three used controllers. Not to bad considering at the time of writing they still cost $30 each new from MacWarehouse.
Around the same time I also placed an order with Happ for my joystick and buttons. I ordered the following off of their web site:
I placed the order on a Tuesday and I recieved a package the following Monday. The first package only contained half of the things I ordered, the rest were on backorder. I thought this was a little strange since the buttons that were on backorder were probably the most common ones sold: red and blue. To my surprise though, I received the rest of my order by Friday.
Originaly I had planned on using just plain press wood for the housing. But after talking to a guy I know, he said he could get me some 'scrap' 3/8" plexi glass. The plexi glass he got me wasn't just the ordinary stuff either. He got me the stuff that could be heated and bent without it turning milky white. He ended up making the housing for me too. He later told me that bending just one side of the housing took 30 minutes.
Once I had everything together and the housing was basically done, I started to drill the holes. Plexi glass is great to work with. Drilling through it is like cutting butter! For the buttons I used a 1 1/8" hole saw and for the joystick I used a 15/16" hole saw. Since this was my first project, I was making things up as I went. After I started, I decided to make the mounts for the GamePad and MouseStick II PCB's out of plexi glass as well since I had a peice of scrap. I also used the cut outs from the buttons as a kind of wire tie down.
The one fairly unique thing about this joystick is the red, square button in the upper right corner. On the back of the joystick there is a small red toggle switch. Pressing the switch turns on the light in the square button. The reason I did this was do try and get more of an arcade feel. Since the insert coin button on an arcade machine glows and I needed an insert coin button on the joystick, I thought this would be cool. Had I known how much of a pain it was going to be to add this to the joystick, however, I would have skipped it.
In order to get the light to glow it needs power (duh). Put once I took apart the two controllers I realized there isn't enough power going to either one of them to light up the bulb. So I had to rely on batteries to get the juice I needed. One of the first things people say about the joystick is why do I need 6 AA batteries to power such a small bulb. How should I know, I just know that's what it takes :P
The next problem was making the button activate the micro switch when it was pressed. There are basically two main parts to the button. There first part is the outer housing and the button. The second holds the micro switch and bulb. When I first got the button, if I pressed it, this would cause the micro switch to move out of the housing and not activate. So to keep it from doing this I had to rig a spring to the micro switch and to the houseing to keep them together. This was a lot easier said than done. Hopefully I'll get a picture taken of this some time. Update: While looking through a Happ catalog I finally figured out how to keep the button together. It DOES snap in place. Here's a scan of the directions.
The rest went pretty good. Wiring and soldering was a lot easier then I expected. If you look at the PCB's you'll see there are two circuits going to each button. One is specific to that button. The other is the common/ground and also goes to all of the buttons. Then all you need to do is solder the appropriate wire to the correct solder point on the board and you're ready to go.
Now that it's done and over with, there are some things I would change. As mentioned earlier, the button with the light would go. It's a cool addition, but the added cost and frustration weren't worth it. Next, as cool as plexi glass is, I have no plans on making another joystick with it. Becuase I used plexi glass, I wanted all of the wires to look good inside. Again, this added a lot of frustration. Also, I can't take the cover off easily becuase the wires are connected to the buttons and then are held down to the base, basically holding the top and bottom together.
Another small detail thing that you might notice is the buttons aren't in the right order color wise. I wasn't paying attention when I put then in last time and they aren't in order. They should be red, white, blue. And because it's such a pain to get inside the housing, it will probably be a while before I change this.
In the end the joystick turned out ok. I learned a lot of interesting stuff and know what NOT to do next time I build a joystick. The total cost for the project was about $100. But a lot of the supplies (wire, solder, etc.) I bought can be used for my next project. Right now I'm thinking about building either a NeoGeo joystick, a 2 button joystick for older games, or some sort of joystick for use with Ikari III (this requires a dial-joystick combo).
|Picture 2||Picture 3||Picture 4||Picture 5|