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!
I was doing the same with a broken sf4 controller.. i can get all the buttons to work.. but and the stick too..but somewhere in the code the "analog stick" is pressed up making all stuff unplayable
ReplyDeleteHmmm, this is cool. Will this work just as well on an arduino nano? And did you have to modify the sketch in any sort of way?
ReplyDelete