3DO joypad - retronicdesign/USBJoystickAdapter_v3.2 GitHub Wiki

image

3DO joypad pinout

image

PIN FUNCTION  
1 Gnd  
2 +5V  
3 Audio Right  
4 Audio Left  
5 +5V  
6 Data Out  
7 CLK  
8 Gnd  
9 Data In  

Theory of operation

Panasonic 3DO is a 3rd generation console that uses more evoluated peripherials. The joystick port included a stereo audio output for earphones and the capability of running 8 different controllers from a single port!

image

These joypad controllers uses a serial protocol with addressing that minimize the need of wires. It can be seen as a serial bus, like SPI. In fact, the low level protocol is pretty much like SPI mode 3. You got the CLK, a data output and a data input. The big difference with SPI is that there is no chip select signal. Frame start is signaled by holding the CLK line high for 500 us.

image

Data from daisy-chained peripherals are simply appended to the transmission back to back, first controller transmitted first. 3DO BIOS and some games will always query for 200 bytes of data. Some games only query what they need. Extra read data is always 0xFF.

image

Reading a single joypad controller would return 16 bits of data like this:

Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Function 1 0 0 D U R L A B C P X RT LT 0 0

Where:

  • 1 or 0 are fixed bits.
  • D = Down
  • U = Up
  • R = Right
  • L = Left
  • A,B,C are corresponding buttons
  • P = Play/Pause
  • X = Stop
  • RT = Right Shoulder
  • LT = Left Shoulder

Note that there are other peripherials like a mouse and a flight stick but they were not implemented in out firmware.