Controllers

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 labled as follows:

+--------------+
| SEGA         |
| E2 MAPLE BUS |
| 315-6125-AB  |
| 841A2A20     |
+--------------+

Male connector pinout:
[5 3 1][4 2]
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:
[1 2 3 4 5]

1 red serial data
2 blue +5V
3 black GND
4 green sense (connected to GND inside controller/keyboard)
5 white serial data

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.
BitButton
0 C
1 B
2 A
3 START
4 UP
5 DOWN
6 LEFT
7 RIGHT
8 Z
9 Y
10 X
11 D
12 UP2
13 DOWN2
14 LEFT2
15 RIGHT2

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):
BitControl
0 C
1 B
2 A
3 START
4 UP
5 DOWN
6 LEFT
7 RIGHT
8 Z
9 Y
10 X
11 D
12 UP2
13 DOWN2
14 LEFT2
15 RIGHT2
16 Analogue R trigger
17 Analogue L trigger
18 Analogue horizontal
19 Analogue vertical
20 Analogue horizontal 2
21 Analogue vertical 2


Powered by RoxenDreamcast Programming by Marcus Comstedt
Last modified: Sat Aug 26 16:15:12 MEST 2000