Copy Link
Add to Bookmark
Report

The analyze infomation of PAD-controler and Memery I/O in PlayStation

PS_2's profile picture
Published in 
Playstation
 · 24 Nov 2019

 
The analyze infomation of PAD-controler and Memery I/O in PlayStation
95/ 4/17 T.Fujita
96/1/4 translated by H.Kashima

CAUTION: No warranty in this infomation.

1. pin assign

memory card
_______________________________
| |
| O O O O O O O O | (front view PSX)
|_______________________________|

pin 9 7 6 5 4 3 2 1

PS PAD connecter
=============================
| O O O| O O O| O O O | (front view PSX)
\________|________|_________/

pin 9 8 7 6 5 4 3 2 1

Pin signal dir active description
--------------------------------------------------------------------
1. dat in pos data from pad or memory-card
2. cmd out pos command data to pad or memory-card
3. +7V -- -- +7.6V power source for CD-ROM drive
4. gnd -- --
5. +3V -- -- +3.6V power source for system
6. sel out neg select pad or memory-card
7. clk out -- data shift clock
8. -- -- -- N.A.
9. ack in neg acknowladge signal from pad or memory-card
--------------------------------------------------------------------

*1) direction(in/out) is based from PSX

*2) metal edge in pad connecter is connected pin 4 and sheald calbe.

*3) signal SEL in PAD1, PAD2 is separated.


2. Comminucation timing chart

Timing is compatibled in PAD, Memory-card.


Overview
____ _____
SEL- |____________________________________________________________|
______ ____ ____ ____ ____ _________
CLK |||||||| |||||||| |||||||| |||||||| ||||||||
_______________________________________________________________________
CMD X 01h XXXX 42h XXXX 00h XXXX 00h XXXX 00h XXXX
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
_____________________________________________________________
DAT -----XXXXXXXXXXXXX ID XXXX 5Ah XXXX key1 XXXX key2 XXXX-----
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

ACK- ---------------|_|---------|_|---------|_|---------|_|-----------------


top command. first comminucation(device check?)
____
SEL- |__________________________________________________________________
______ _ _ _ _ _ _ _ __________________ _ _ _ _
CLK |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_| |_|
__________ ___
CMD |________________________________________________| |_______
____
DAT -----XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX |___________

ACK- ----------------------------------------------|___|--------------------

X = none, - = Hi-Z

0x81 is memory-card, 0x01 is standard-pad at top command.

serial data transfer is LSB-First format.

data is down edged output, PSX is read at up edge in shift clock.

PSX expects No-connection if not returned Acknoledge less than 100 usec.

clock pluse is 250KHz.

no need Acknoledge at last data.

Acknoledge signal width is more than 2 usec.

time is 16msec between SEL from previous SEL.

SEL- for memory card in PAD access.


3. example schematic chart of interface(5 volte to 3.3 volte convertion)

example in PAD

PAD PS system
/| P R,200ohm P=pullup(no need?)
PAD SEL ---- O< |--+--\/\/\/-- PS SEL-
\|
HC14
/| P R,200ohm
PAD CMD- ---- O< |--+--\/\/\/-- PS CMD
\|
HC14
/| P R,200ohm
PAD CLK- ---- O< |--+--\/\/\/-- PS CLK
\|
HC14
PAD DAT _________
|
|\O
----| > ------------- PS DAT
| |/
V HC125
PAD ACK- _________
|
|\O
----| > ------------- PS ACK-
| |/
V HC125


example in PSX

PSX PAD

SEL- _________
|
|\O P P=pullup
----| >--+---------- PAD SEL-
| |/
V HC125
CLK _________
|
|\O P
----| >--+---------- PAD CLK
| |/
V HC125
CMD _________
|
|\O P
----| >--+---------- PAD CMD
| |/
V HC125

/| P R,200ohm
DAT- ----O< |--+--\/\/\/-- PAD DAT
\|
HC14

/| P R,200ohm
ACK- ----O< |--+--\/\/\/-- PAD ACK-
\|
HC14


4. communication format in PAD

must be start translation, after command expected "0x01h" from PS-system.
PAD has 1-byte ID. pad is send a 2 byte of key-code + extend code after
PAD ID 'Z'(5Ah).

normal pad timing flow ->

10000000 01000010 01011010 01234567 01234567
|--------|--------|--------|--------|--------|
CMD | 01h | 42h | 00h | 00h | 00h |
|--------|--------|--------|--------|--------|
xxxxxxxx 10000010 10100101 01234567 01234567
|--------|--------|--------|--------|--------|
DAT | ---- | 41h | 5ah | SW.1 | SW.2 |
|--------|--------|--------|--------|--------|
device ID 'Z'

data contents of normal PAD.(push low)
+----------+----+----+----+----+----+----+----+----+
| byte | b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 |
+==========+====+====+====+====+====+====+====+====+
| +0 | ----- | N.A.
+----------+---------------------------------------+
| +1 | 0x41 | 'A'
+----------+---------------------------------------+
| +2 | 0x5a | 'Z'
+----------+----+----+----+----+----+----+----+----+
| +3 |LEFT|DOWN|RGHT| UP | STA| 1 | 1 | SEL|
+----------+----+----+----+----+----+----+----+----+
| +4 | [] | X | O | /\ | R1 | L1 | R2 | L2 |
+----------+----+----+----+----+----+----+----+----+

data contents NEGCON(NAMCO analog controler, push low)
+----------+----+----+----+----+----+----+----+----+
| byte | b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 |
+==========+====+====+====+====+====+====+====+====+
| +0 | ----- | N.A.
+----------+---------------------------------------+
| +1 | 0x23 |
+----------+---------------------------------------+
| +2 | 0x5a | 'Z'
+----------+----+----+----+----+----+----+----+----+
| +3 |LEFT|DOWN|RGHT| UP | STA| 1 | 1 | 1 |
+----------+----+----+----+----+----+----+----+----+
| +4 | 1 | 1 | A | B | R | 1 | 1 | 1 |
+----------+----+----+----+----+----+----+----+----+
| +5 | handle data right:0x00, center:0x80 |
+----------+---------------------------------------+
| +6 | I button ADC data (7bit unsigned) | 00h to 7Fh?
+----------+---------------------------------------+
| +7 | II button ADC data | 00h to 7Fh?
+----------+---------------------------------------+
| +8 | L button ADC data | 00h to 7Fh?
+----------+---------------------------------------+
unknown data bit length in +6 to +8 ADC datas. (7 or 8 may be)

mouse data contents(push low)
+----------+----+----+----+----+----+----+----+----+
| byte | b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 |
+==========+====+====+====+====+====+====+====+====+
| +0 | ----- | N.A.
+----------+---------------------------------------+
| +1 | 0x12 |
+----------+---------------------------------------+
| +2 | 0x5a | 'Z'
+----------+----+----+----+----+----+----+----+----+
| +3 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
+----------+----+----+----+----+----+----+----+----+
| +4 | 1 | 1 | 1 | 1 |LEFT|RGHT| 0 | 0 |
+----------+----+----+----+----+----+----+----+----+
| +5 | V moves 8bitSigned up:+,dwn:-,stay:00 |
+----------+---------------------------------------+
| +6 | H moves 8bitSigned up:+,dwn:-,stay:00 |
+----------+---------------------------------------+


4. communicaion format in memory-card

memory-card starts data transfer after received command '0x81'
communication system uses 128-byte per one frame.

WRITE command

section size description
-------------------------------------------------------------------------
command header 4 memory write command(see figure)
address set 2 set a address for write(frames)
data block 128 write data for memory
XOR flag 1 exclusive-or code for data check
end status 2 result status from write command
end flag 1 end flag
-------------------------------------------------------------------------
total 138

command header address pointer
|--------|--------|--------|--------| |--------|--------|
CMD | 81h | 57h 'W'| 00h | 00h | | addr.H | addr.L |
|--------|--------|--------|--------| |--------|--------|
DAT | ---- | 00h | 5Ah 'Z'| 5Dh ']'| | 00h | addr.H |
|--------|--------|--------|--------| |--------|--------|

data block XOR flag
|--------|--------|--------|--------|--------| |--------|
CMD | dt 1 | dt 2 | .... | dt 127 | dt 128 | | xor |
|--------|--------|--------|--------|--------| |--------|
DAT | addr.L | dt 1 | .... | dt 126 | dt 127 | | dt 128 |
|--------|--------|--------|--------|--------| |--------|

end status end flag end flag(in case of error)
|--------|--------| |--------| |--------|
CMD | 00h | 00h | | 00h | | 00h |
|--------|--------| |--------| |--------|
DAT | 5Ch '\'| 5Dh ']'| | 47h 'G'| | 4Eh 'N'|
|--------|--------| |--------| |--------|

XOR flag = XOR datas in address pointer area and data block area statistics.

*) if case of error in write command(end flag = 'N'), never write.

example of write data(namco ridge racer)

output data from PlayStation
+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F ASCII
+00 81 57 00 00 00 80 53 43 11 01 82 71 82 68 82 63 .W....SC..RID
+10 82 66 82 64 81 40 82 71 82 60 82 62 82 64 82 71 GE RACER
+20 81 40 83 5E 83 43 83 80 83 65 81 5B 83 75 83 8B  タイムテーブル
+30 00 CD 7B 7B 77 7B FB C7 FB D7 FB DB FB DB DD DB .ヘ{{w{........ンロ
+40 DB DB DB DB 7D C7 CB CD FD FD FF FC B7 CC FD DC ロロロロ}ヌヒヘ.....フ.ワ
+50 FF DE FF FC FF FC DB FF DD FD DD FD FD DF C7 77 .゙......ン.ン..゚ヌw
+60 C7 77 B7 77 B7 77 BC F7 7A EF 38 EB F5 E2 B3 DE ヌwキwキwシ...8..箋゙
+70 71 D6 4F D2 EC C5 8A B9 48 AD E6 A0 DD D2 5D C6 qヨOメ..柑Hュ譬ンメ]ニ
+80 FE B9 7C AD 1A A1 1A 00 00 00 .ケ|ュ.。....

output data from memory-card
+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F ASCII
+00 01 00 5A 5D 00 00 80 53 43 11 01 82 71 82 68 82 ..Z]...SC..RID
+10 63 82 66 82 64 81 40 82 71 82 60 82 62 82 64 82 GE RACER
+20 71 81 40 83 5E 83 43 83 80 83 65 81 5B 83 75 83  タイムテーブル
+30 8B 00 CD 7B 7B 77 7B FB C7 FB D7 FB DB FB DB DD .ヘ{{w{........ン
+40 DB DB DB DB DB 7D C7 CB CD FD FD FF FC B7 CC FD ロロロロロ}ヌヒヘ.....フ.
+50 DC FF DE FF FC FF FC DB FF DD FD DD FD FD DF C7 ワ.゙......ン.ン..゚ヌ
+60 77 C7 77 B7 77 B7 77 BC F7 7A EF 38 EB F5 E2 B3 wヌwキwキwシ...8..箋
+70 DE 71 D6 4F D2 EC C5 8A B9 48 AD E6 A0 DD D2 5D ゙qヨOメ..柑Hュ譬ンメ]
+80 C6 FE B9 7C AD 1A A1 5C 5D 47 ニ.ケ|ュ.。\]G



read command

section byte description
-------------------------------------------------------------------------
command header 4 memory read command(see figure)
address pointer 4 address pointer for read(frame)
command reaction 1 received acknowlegde from memory.
data header 1 data header from memory.
data address 2 address of read data
data block 128 read data from memory-card
XOR flag 1 excrusive-or code for data check
end flag 1 end flag
-------------------------------------------------------------------------
total 140

command header address pointer command responce
|--------|--------|--------|--------| |--------|--------| |--------|
CMD | 81h | 52h 'R'| 00h | 00h | | addr.H | addr.L | | 00h |
|--------|--------|--------|--------| |--------|--------| |--------|
DAT | ---- | 00h | 5Ah 'Z'| 5Dh ']'| | 00h | 00h | | 5Ch '\'|
|--------|--------|--------|--------| |--------|--------| |--------|

data header data address
|--------| |--------|--------|
CMD | 00h | | 00h | 00h |
|--------| |--------|--------|
DAT | 5Dh ']'| | Addr.H | Addr.L |
|--------| |--------|--------|

data block XOR flag END flag
|--------|--------|--------|--------|--------| |--------| |--------|
CMD | 00h | 00h | .... | 00h | 00h | | 00h | | 00h |
|--------|--------|--------|--------|--------| |--------| |--------|
DAT | dt 1 | dt 2 | .... | dt 127 | dt 128 | | xor | | 47h 'G'|
|--------|--------|--------|--------|--------| |--------| |--------|


example of read data(namco ridge racer)

output data from PSX
+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F ASCII
+00 81 52 00 00 00 80 00 00 00 00 00 00 00 00 00 00 .R..............
+10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
+20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
+30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
+40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
+50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
+60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
+70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
+80 00 00 00 00 00 00 00 00 00 00 00 00 ............

output data from memory-card
+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F ASCII
+00 01 00 5A 5D 00 00 5C 5D 00 80 53 43 11 01 82 71 ..Z]..\]..SC..R
+10 82 68 82 63 82 66 82 64 81 40 82 71 82 60 82 62 IDGE RAC
+20 82 64 82 71 81 40 83 5E 83 43 83 80 83 65 81 5B ER タイムテー
+30 83 75 83 8B 00 CD 7B 7B 77 7B FB C7 FB D7 FB DB ブル.ヘ{{w{......
+40 FB DB DD DB DB DB DB DB 7D C7 CB CD FD FD FF FC ..ンロロロロロ}ヌヒヘ....
+50 B7 CC FD DC FF DE FF FC FF FC DB FF DD FD DD FD .フ.ワ.゙......ン.ン.
+60 FD DF C7 77 C7 77 B7 77 B7 77 BC F7 7A EF 38 EB .゚ヌwヌwキwキwシ...8.
+70 F5 E2 B3 DE 71 D6 4F D2 EC C5 8A B9 48 AD E6 A0 .箋゙qヨOメ..柑Hュ譬
+80 DD D2 5D C6 FE B9 7C AD 1A A1 1A 47 ンメ]ニ.ケ|ュ.。.G



5. format in memory-card

(about format in 15 block's memory-card)
* blocked memory operate. 8Kbyte per block in 128KByte.
* top block is block allocation table.

list of block contents

block# name description
0 block allocation card ID, directory information
1 data block 1 data area
2 data block
| |
14 data block 14 data area
15 data block 15 data area

* 1 block is 64 separated frame. 128 byte par frame.

control block

frame# description
0 memory card ID
1-15 directory of data block 1 to 15(product #, flag information)
16-35 directory of data block(reserved)
36-62 N.A.
63 write test frame(used by card-menu)

*) control block has XOR-code in last data(+7Fh)
*) Memory card ID is maked 'MC.....'

frame contents in data block

frame description
+0 title(used by card-menu)
+1 character data(used by card-menu)
+2 character data(in case of take an animation in card-menu)
+2,+3.. saved data

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT