Jump to content

PlayStation 1 (PSX) Controller Schematic - Help Needed


Recommended Posts

2 hours ago, emerson said:

Try putting jumper wires where I put the purple ones here.





Thank you so much for that tip. I just ran through an entire game of TM2 with 0 problems. (BTW: a Happ bat top stick feels really good with that game.)


OshPark, here I come. 


~ Fin. ~

Link to comment
Share on other sites

  • 4 months later...
On 7/11/2019 at 5:53 AM, emerson said:

Good, I'm glad everything works now. It's good practice to just leave those "purple jumpers" installed. It's easy to forget those power busses aren't connected in the middle.

Resurrecting this because I'm having an issue that I completely brain-farted on until now. I've had this circuit fabbed at Osh Park some time ago, assembled everything. Works! ...Yay. Can't read memory cards from the same slot. ...Booo.


I read up a little bit so far on this issue with 3rd-party controllers; something about sending an 0x81 signal to ATT. Anyone know anything about this, and how I'd go about working through/around this?

Link to comment
Share on other sites


The original PlayStation is a bit different, however, as rather than having a separate ATT pin for each device (four in total for two controllers and two memory cards) it only has two - one for controller+memory card 1 and another for controller+memory card 2. The difference here is that when the console addresses a controller the first byte it sends is 0x01, but when it addresses a memory card the first byte it sends is 0x81. A device therefore can't rely on just checking the ATT pin, it needs to also check the first byte that is sent to it and only respond if the byte sent (0x01 or 0x81) matches the type of device that it is (controller or memory card, respectively).


The above excerpt from the link you posted explains exactly what needs to be done. Here is one approach. It may not be totally correct but somewhere to start none the less...


Use a serial to parallel shift register (74xx164) to monitor the first byte of data, presumably on the 'command' line of the controller port. Use a binary counter (74xx90) to disable both the '164 shifting and '90 counting on the 8th clock pulse. This allows the '164 to hold the command byte. We know that the controller should only be enabled when this data byte is 0x01. We also know that the '240 only outputs signals when /1OE and /2OE are asserted low. Design a decoder circuit that enables the '240 when the '164 parallel output is 0x01 and disables the '240 with any other output. Use the 'att' line to reset the '164 and '90 for the next controller port command.

Edited by emerson
  • Thanks 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Create New...