This project aims to support all controller devices for the PlayStation 1 or 2 consoles via an SPI port on any platform which support's Rust's embedded-hal abstraction layer. The main system this library is tested on is a Raspberry Pi 3.
So far quite a few devices are supported! Here's the current list:
- Controller
- Analog Joystick
- DualShock
- DualShock 2
- JogCon
- GunCon
- NegCon
- Mouse
- Multitap
- Maestromusic baton *
- Guitar Hero controller *
*=Most PlayStation games can assume the type of controller which is plugged in, but there are only 16 possible identifiers that can be used. In pracice there is overlap and old devices do not contain advanced polling respones so the devices marked above need to be manually requested.
This project is immediately usable today, but work needs to be done to increase
error detection and allow better of un-detectable controllers. There are
examples to go on to learn how to use this library and you can use the
research
folder's documents to discover some secrets of the PlayStation
controllers you might own, though the bibliography below is also a good
jumping-off point.
If you want to contribute new controller info or are having trouble wiring up your devices, open an issue and we can help you out.
- psxpad.html - Wiring, testing and bootstrapping game pad on Linux with SPI
- ps_eng.txt - Controller / Memory Card Protocols (pre-DualShock)
- Playstation 2 (Dual Shock) controller protocol notes - Command protocols
- psxpblib - Interfacing PlayStation controllers via the parallel port
- Simulated PS2 Controller for Autonomously playing Guitar Hero - SPI protocol captures