PlayStation Protocol
The PlayStation controller-console communication relies on a five byte
transmission using four lines. These lines are described in the
table found below.
Name
|
Wire
Color
|
Description
|
DATA
|
White
|
This is the
signal from controller to console. It is an 8-bit serial
transmission synchronous to the falling edge of the clock.
|
CMD
|
Orange
|
This is the
signal from the console to the controller. Again, it is an 8-bit
serial transmission on the falling edge of the clock.
|
GND
|
Black
|
Ground
|
VCC
|
Red
|
Variable
power from 5 V down to 3V.
|
ATT
|
Yellow
|
This signal
is used to get the attention of the controller. This signal will
go low for the duration of a transmission.
|
CLK
|
Blue
|
This is the
clock signal from the console to the controller at a frequency of 250
khz.
|
ACK
|
Green
|
This is the
acknowledge signal from the controller to the console. This
signal is low for at least one clock period after each 8 bits are sent
and ATT is still low.
|
* This web-site
is a good resource.
The first three bytes of the transmission are used for a handshake
protocol. The last two bytes of the transmission are used to
transmit the data representing the button presses. The table
found below outlines an example transmission of the "Circle" button.
CMD
|
DATA
|
0x80
|
0xFF
|
0x42
|
0x82
|
0x00
|
0x5A
|
0x00
|
0xFF*
|
0x00
|
0xFB**
|
* These values represent the directional, select, and start
buttons.
** These values represent the circle, square, triangle, x, L1, L2, R1,
and R2 buttons.
Each code has a zero in a unique bit position and, therefore, can be
AND-ed together to form a single byte for transmission of multiple
button presses. The table found below outlines all of the data
codes for single button presses.
Button
|
Data
Code
|
R1
|
0xEF
|
R2
|
0xBF |
L1
|
0xDF |
L2
|
0x7F |
Triangle
|
0xF7 |
Square
|
0xFE |
Circle
|
0xFB |
X
|
0xFD |
Start
|
0xEF |
Select
|
0x7F |
Up
|
0xF7 |
Down
|
0xFD |
Left
|
0xFE |
Right
|
0xFB |
The screen shot found below, captured from the Tektronix TLA704 Logic
Analyzer, depicts a single byte transfer of the data code for the
circle button. Note that attention is held low throughout the
tranmission and the low pulse on ACK is from the tranmssion of the
previous byte.