24 February 2015

Replacing a Mad Catz SF4 PS3 Fight Stick's PCB with an Arduino Uno

If you're anything like me, you have one of the Mad Catz Street Fighter 4 arcade sticks for PS3 sitting around gathering dust. It's not that it's a bad stick - it's at least decent for an entry-level setup. However, thanks to a strange hardware allergy to what seems to be Nvidia cards (though I'm not even sure of that), the stick isn't usable in a PC the same way most PS3 controllers are, which limits its use to PS3 games. That's not awful, but I'd really like to use it as a PC stick. Unfortunately, most of the tutorials I've found online for modding this specific controller involve swapping out the buttons and physical stick, not for making it compatible with other systems.

The good news: it's not hard to mod the controller for PC or other platforms just by busting it open and connecting a new PCB, just like any other fight stick. The controller is fairly standard wiring and not too hard to work with, even with no prior experience. Though I've messed around with wiring on arcade machines once or twice before, this was my first serious project.

Before starting, there's a few questions to answer: What systems do you want the controller to work with? How much are you willing to spend? How much programming are you willing to do? These will weigh into which PCB you want to use - some are fairly basic and easy to use, like the Cerberus or Ipac, while others are much more customizable but come with the drawback that you may have to manually write or modify your controller's programming, as is the case with an Arduino board (which is what I ended up using for cost reasons). Hit your favorite arcade parts or electronic hobbiest retailer and see what they have to offer. (I use Focus Attack and Micro Center, but it's really a matter of personal preference. Focus Attack is a specific online retailer for arcade stick parts, while Micro Center is a general computer parts retail chain that happens to have a brick-and-mortar a few miles from me.)

Initially, I found something called UnoJoy, a piece of software that claimed to turn an Arduino Uno into a USB joystick that was also compatible for PS3, so I'd be getting a stick that I could use on the PC while not losing anything in the process. I hit Micro Center and picked up the board, a baggie of 6" Male to Male jumper wires, and a USB Male A to USB Male B cable. (Amazon has a ten foot cable for cheap, with free Prime shipping, which is nice if you.) After that, I set to work.

This is what the Arduino board looked like after I finished stuffing wires into it. I ran out of digital inputs, so I overflowed into the analogs. I don't do smart things like properly read documentation, so all of the connected pins there are a result of guess-and-test, or connecting a button to an input and pressing it to see what result came up on the software display, then connecting the button that SHOULD be connected to that input. Blue wires are connected to buttons (8 total), grey connected to joystick directions (4 of these), reds connected to Start and Select, and the two black wires are grounds. The big thing on the left is the USB input, which supplies both power and connection. The LEDs on the board are status indicators.


The metal pegs in the white containers are the original connectors for the buttons. If you look closely next to it, you can see symbols that show which button each was connected to. The original connectors were held in place mostly by this gummy glue stuff. You can see a lot of it still left over. The red spots are a weak glue holding the screws in place.


This is how I connected my wires (the black pieces connected to the colored strands) to the old connectors (the white pieces). This is as ugly as it looks, and is really not a good way to do it, but I was looking for quick-and-dirty, not clean-and-professional. I can't suggest doing things like this.


As far as the directional stick itself goes, unlike the buttons, I ended up pulling off the white connector and sticking the wires directly into the black connectors. The issue with this is if the metal pieces touch each other, the signal can go from one direction to another - the controller will read that you're pressing two directions at once, even when you're not. (If it crosses with the ground, it will read you're ALWAYS pressing one direction.) Electrical tape around the exposed metal will prevent this.


The inside of the board, with as many of the wires removed as I could. The buttons are center left, the joystick is center right, the old PCB is upper right, and you can barely see the start and select buttons toward the upper left under some of the wiring.


With everything stuffed inside, there's not a lot of room. The large black twist-tied wire is the original USB cable for the old PCB, where the new one is the one connected to the Arduino in the upper right.

Though I had to fight with the software quite a bit, the new internals work very well on both the PS3 and my PC. The only downside is the original PCB had some autofire and turbo features that aren't present on the new board. While I don't use these features anyway, there's now several switches on the face of the controller for these features that don't do anything. More importantly, the PS3 Home button, which is important for bringing up the system menu on the PS3, is connected directly to the old PCB. The Arduino supports a Home button, and it may be possible to connect it, but I haven't gotten around to trying it yet. The good news is if I ever want to go back to the controller's original hardware, all I have to do is take out what I added and reconnect the old pieces, and it'll work just as it did before. However, I'm really satisfied with how this is working out, so I don't think I'll be reverting it anytime soon.

Any questions or comments? Let me know. Thanks for reading!

10 February 2015

What To Expect: A Glimpse At Future Content

I've liked video arcade games and arcades for quite a while. There's something about a big dark room full of illuminated monitors and marquees blaring loud synthesized music or computerized sound effects mixed with the occasional slapping of buttons and coins falling into the dish of a change machine. A handful of quarters was a handful of possibilities, to be carefully distributed to causes of setting new high scores, defeating random strangers, or teaming up with those same random strangers to defeat the computer. Good times, good times.

This blog, over the next several weeks and potentially the foreseeable future, will be dedicated to the arcade experience, from individual game information and backgrounds to pictures and visits to existing arcades to information about building and maintaining the machines themselves.

Some specific things I'll be covering:

  • Basic business models of arcades, past and present - how the modern arcade has changed
  • Vintage vs Modern Games - how the hardware, software, and overall experience evolved
  • Photo galleries and information from visits to current arcades
  • How-to projects for home, such as making your own arcade stick for a home setup
  • Maintenance and upkeep information, including (hopefully!) the restoration of a machine
My goal is both to revisit past nostalgic experiences and also to discuss current trends in arcade gaming, including conventions, tournaments, the community, and things to look forward to. There's a lot of ground to cover here, and hopefully we'll be off and running shortly.

Questions and other inquiries welcome!