PSX Controller Adapter

home icon

psx adapter
click for oversize 104kb image of innards

I recently looked into a PSX controller and found that both of the analog pads act like simple voltage dividers in two dimensions, going from 0v to about 3.7v with a 2.0v centerpoint. This got me interested in using them for 2600,5200, and 7800 dual joystick games. Also wanted it to have full genesis support for all my other systems that have genesis/2600 adapters: INTV,CV,02,TI,C64 and XEGS.

The easiest way turned out to be starting with a genesis Quickshot dual player joystick controller which already had cables for player-1 and 2. Then made an adapter board that used two LM339 quad comparator chips and two potentiometers to drive the eight genesis directional signals based on the four (2 horizontal and 2 vertical) analog inputs from the psx pads.

Kept the standard psx cable and connected the red and black wires to 5v and ground in the genesis ctrl, but added a diode to drop the 5v down to 4.2 or so (closer to what a psx ctrl normally sees). Pulled the other six wires up and connected them at the four analog and two button signals at the psx ctrl.

Got the player one stuff working first, quite fun. Then for player-2, I lifted the wires off the genesis ctrl board because they didn't seem completely independent from player-1 (maybe mine was broken).

After it was all done, verified the dual joystick action on 7800 Robotron as well as 5200 Robotron and Space Dungeon (through two masterplay-type circuits). Worked great and those games are even more fun to play now.

Assembly Notes:
  1. Pots and 339 ICs found at Radio Shack
  2. Pot values don't matter: 5k, 10k, 20k all good. You could even use resistors, but that's not as fun.
  3. Dial pot A for 1.2v, pot B for 3.0v. Make small adjustments according to taste (more or less thumb movement triggering controller)
  4. The four analog pad access points are marked at A,B,C, and D on ascii graphic below.
  5. The psx ctrl board had pads for the buttons on the front side, so I soldered into those. Used 30-guage wire so it wouldn't lift up the rubber base thingee.
  6. Added a switch for the second psx button so it could connect to the genesis player-2 fire button for 2600 mode (Stargate, Raiders of Lost Ark, and Spy Hunter) or normal mode, the genesis player-1 C button.
  7. Added a second switch because an Atari and Genesis have their 5v supplies on different pins. Refer to Deathskull Labs Archive as needed for controller pinouts.

Future Additions:

  1. Want to add turbo and autofire circuits, the Quickshot turbo won't work with the psx buttons, it's on the wrong side of things.
  2. Want to add a switch to swap the analog pads between player 1 and 2. This would be good for one-player games where the player-2 port is used instead of player-1. Examples are Wizard of Wor on Ataris, some O2 carts, and half of the friggin C64 games.

Final Thoughts:

  1. Could switch the PSX cable for a dsub-15 one and wire up even more buttons.
  2. This project has since led to two spinoffs:
    PSX to Vectrex Adapter and PSX Analog Pad Adapter

                          ,_____ leave red(vcc),black(gnd);
                          |      lift the others
       /               xxxxxxxx               \
      /                                        \
     /                                          \                                           
     |                                          |
     |                                          |
     |      Right stick       Left stick        |
     |           x                x             |
    /          x   C            x   B            \
    |            D                A              |
   /        _____________________________         \
  (        /                             \         )
  \       /                               \       /
   \_____/                                 \_____/
          NOTE: back-side of controller board

       5v                 5v
       |                  |
       |                  |
       /                  /
       \___pot_a          \___pot_b
       /    1.2v          /    3.0v
       \                  \
       |                  |
       |                  |
      gnd                gnd

      p1_east__1OUT |1  +--+ 14| 3OUT______p1_north
      p1_west__2OUT |2       13| 4OUT______p1_south
      5v________VCC |3       12| GND_______gnd
      1.2v_____-2In |4 LM339 11| +4In______3.0v
      psx_A____+2In |5       10| -4In______psx_B
      psx_A____-1In |6        9| +3In______psx_B
      3.0v_____+1In |7        8| -3In______1.2v

      p2_south_1OUT |1  +--+ 14| 3OUT______p2_west
      p2_north_2OUT |2       13| 4OUT______p2_east
      5v________VCC |3       12| GND_______gnd
      1.2v_____-2In |4 LM339 11| +4In______3.0v
      psx_C____+2In |5       10| -4In______psx_D
      psx_C____-1In |6        9| +3In______psx_D
      3.0v_____+1In |7        8| -3In______1.2v

     psx_but1-------------player1_B  (gen)

          switch 1 ()---- player1_C  (gen)  normal use
                   ()---- player2_B  (gen)  for 2600 dual joystick games

          switch 2 ()---- player1 genesis pin 7  (when plugged into an Atari) 
   5V supply ----'
                   ()---- player1 genesis pin 5  (when plugged into a Genesis)

   How it Works:
     The player pushes the playstation left knob all the way right (east)
     The psx_A voltages rises from 2.0v to 3.7v.
     Once the psx_A voltage is greater than 3v, comparator #1 turns on 
     The 1OUT pins changes from high impedance to grounded
     The voltage at the genesis controller east line is 0v
     The console reads the genesis low voltage as someone pushing east.
back icon