Dreamcast Controller PinOut
The Dreamcast Controller (HKT-7700) has five buttons, one directional pad, one analogue joystick, and two analogue triggers. In order to be able to provide feedback for all these actuators, the controller speaks with the Dreamcast unit using a serial protocol. The serial connection is bi-directional, which allows the Dreamcast to upload data into docked VMS units.
All the logic of the controller is contained in a single chip (IC1) which is labeled as follows:
Male connector pinout:
The plate on top of the connector is for the cable shield. It is internally connected to pin 3 (GND).
Internal connector inside controller pinout:
GamePad Condition Structure
The current state of a gamepad is queried with the Get condition request. The condition stucture for the Controller function code ($001) is as follows:
int16 buttons ; digital buttons bitfield (little endian)
int8 rtrigger ; right analogue trigger (0-255)
int8 ltrigger ; left analogue trigger (0-255)
int8 joyx ; analogue joystick X (0-255)
int8 joyy ; analogue joystick Y (0-255)
int8 joyx2 ; second analogue joystick X (0-255)
int8 joyy2 ; second analogue joystick Y (0-255)
The buttons bitfield contains zeroes for pressed buttons, and ones for unpressed buttons.
GamePad function data bitfield
The function_data for the Controller function code is a bitfield describing which controls are present on the particular device (zero = not present, one = present):