Playstation 2 Dual Shock protocol, revisited

Last summer I did some hard-core reverse engineering of the Playstation 2 Dual Shock controller protocol, so I could build a fully-featured Playstation controller emulator/extender device. I wrote up a fairly minimal protocol document, and published source code (navi-misc/unicone2/psx-base/psx_controller_emulator.spin) for an emulator that could impersonate a Dual Shock 2 controller well enough to fool every game in Paul’s comprehensive library 😉

Anyway, this device has been working really well for Paul and I, and we’ve made good use of it. I wasn’t sure if anyone else had noticed my docs and code, though, or found them useful.

Well, recently I heard from Julian Bleecker, who is using my emulator for a pretty nifty project. He also pointed out a very well-organized guide to the Playstation controller protocol, which prominently sites my reverse-engineering work. Cool.

If you’re interested in interfacing anything with a Playstation or a Playstation controller, I highly recommend this guide. It includes information about all of the advanced configuration commands I reverse-engineered, plus it includes all of the basic electrical information that my little document totally glossed over. It sites multiple sources, and they have independently verified everything and provided their own protocol traces.