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:
,_____ leave red(vcc),black(gnd); | lift the others v __----__________________________----__ / 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 +----------+ IC1 +---+--+---+ 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 +----------+ IC2 psx_but1-------------player1_B (gen) switch 1 ()---- player1_C (gen) normal use / psx_but2----' ()---- 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.