Two handle controller "Type 2" (Sony PlayStation 2)

Overview

NameTwo handle controller "Type 2" (Sony PlayStation 2)
Release dateMarch 15, 2001
Serial codeTCPP-20009
NotesAlso available in purple skeleton colour (TCPP-20012).

Supported software

SoftwareNotes
BVE Trainsim (PC - Windows)Supported via input plugin.
Densha de GO! 3 Tsūkin-hen (Sony PlayStation 2)
Densha de GO! Final (Sony PlayStation 2)
Densha de GO! Professional 2 (Sony PlayStation 2)
Densha de GO! Ryojōhen (Sony PlayStation 2)
Densha de GO! Shinkansen San'yō Shinkansen-hen (Sony PlayStation 2)
OpenBVE (PC - Multiplatform)Supported via input plugin.
Railfan: Chicago Transit Authority Brown Line (Sony PlayStation 3)
Train Simulator Real: THE Yamanote Line (Sony PlayStation 2)

Technical details

This controller has 2 handles (5 power notches and 8+emergency brake notches), a D-Pad and 6 buttons (Select, Start, A, B, C, D). In addition, it provides a door lamp and a 3.5 mm jack connector to plug a horn pedal. There are 2 rumble motors, one in each handle.

Internally, it is a vendor-specific class device. The input data is compatible with HID, but the device does not provide a HID descriptor.

Product nameTAITO_DENSYA_CON_T01
ManufacturerTAITO
Vendor ID0x0AE4
Product ID0x0004
Serial numberTCPP20010
USB standard descriptorDownload
HID report descriptorDownload (recreated, not provided by actual device)

Input

The controller sends reports to the host (PS2) formed by 6 bytes:

Byte #Data
10x01 (fixed)
2Brake
3Power
4Pedal
5D-Pad
6Buttons

The values for the brake notch byte are the following. Between notches, a transition value of 0xFF is reported.

NotchValue
Emergency0xB9
B80xB5
B70xB2
B60xAF
B50xA8
B40xA2
B30x9A
B20x94
B10x8A
Released0x79

The values for the power notch byte are the following. Between notches, a transition value of 0xFF is reported.

NotchValue
N0x81
P10x6D
P20x54
P30x3F
P40x21
P50x00

The pedal byte has two possible values depending on the state of the pedal.

StateValue
Released0xFF
Pressed0x00

The D-pad byte represents the input from the Up, Down, Left and Right physical buttons. If two opposite directions are pressed simultaneously, the result is None unless a third button is pressed.

ButtonValue
Up0x00
Up+Right0x01
Right0x02
Down+Right0x03
Down0x04
Down+Left0x05
Left0x06
Up+Left0x07
None0x08

The button byte uses bits to represent the state of the physical buttons. 0 means that the button is released and 1 that it is pressed.

BitPhysical Button
1B
2A
3C
4D
5Select
6Start
7Unused
8Unused

Output

The controller supports receiving data via a control transfer to turn on/off the door lamp and provide rumble. The setup packet is as follows:

DataValue
bmRequestType0x41
bRequest0x09
wValue0x0201
wIndex0x0
wLength0x2

The data sent to the controller follows the structure below.

Byte #Value
1Status
2Function
  • Status: defines whether the function specified in byte 2 is Off (0x00) or On (0x01).
  • Function: 0x01 is Left rumble, 0x02 is Right rumble, 0x03 is Door lamp.