[Kevin] just finished a project for someone who lives in his apartment complex. This resident loves the game Pop ‘n Music – a Guitar Hero sort of game for the original Playstation and PS2 that uses nine colored buttons instead of five buttons along a fingerboard. His original idea was to wire up a few arcade buttons to a Playstation controller but this plan fell through, forcing [Kevin] to figure out the PSX bus all by his lonesome.
The initial code began with simply bit-banging the PSX controller interface with an AVR. This had a few problems, namely speed, forcing [Kevin] to move onto assembly programming to squeeze every last bit of performance out of a microcontroller.
The assembly route failed as well, dropping some transactions Looking at the problem again, [Kevin] realized the PSX controller bus looked a little like an SPI bus. There were a few changes required – reversing the order of the bits, and using the MISO line to drive a transistor – but this method worked almost perfectly on the first try.
Now, [Kevin]’s building mate has a custom Playstation controller for his favorite game. Of course all the code is up on github for all your PSX controller emulation needs, but be sure to check out this completely unrelated Pop ‘N Music video from someone who desperately needs a piano.
i’d like to see a hack like this for the wii version – translate button presses to the motion controls that are used in that game
Shift registers could also be used instead of a microcontroller (parallel in – serial out), with several chained together. One (or two, I forgot) used for the header of the PS* controller, with the others used for the buttons. I know there was a picture/schematic of such a configuration about 5 or 6 years ago, when I was doing my own reading of a PS* controller with an AVR (made a PS* to USB adapter, with support for two controllers and dance pad support)
I actually had looked at using the shift registers as described on that one site (the one that’s like 15 years old), but the cost of was actually slightly cheaper to use the microcontroller (the difference was around 10-25 cents). The particular microcontroller I used was $1.75 and the shift registers were about $0.50 apiece and I needed 4 of them along with the two inverter chips that schematic required. That plus the additional discrete components and that design’s use of an R/C circuit (which I see as unreliable) to make the ACK pulse convinced me to go the microcontroller route.
I meant tri-state buffers, not inverters. (they actually might have been tri-state inverters, but I don’t have the schematic up in from of me right now)
Here is the version with shift registers. Was actually done about 15 years ago not 5 :)
He did this work for less than minimum wage. The original controller costs 100$. It took him 16 hours to build this controller. In California he could have made 128$ in that time. Don’t get me wrong. I do this crap too. It’s just interesting to think about every once in a while.