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 (WIP)

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

Technical details

This controller has two 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 two rumble motors, one in each handle.

Internally, it is a HID device with a vendor-specific class.

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

Input

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

Byte 1Byte 2Byte 3Byte 4Byte 5Byte 6
0x01BrakePowerPedalD-PadButtons

The values for the brake notch byte are the following.

ReleasedB1B2B3B4B5B6B7B8EmergencyTransition
0x790x8A0x940x9A0xA20xA80xAF0xB20xB50xB90xFF

The values for the power notch byte are listed below.

NP1P2P3P4P5Transition
0x810x6D0x540x3F0x210x000xFF

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

ReleasedPressed
0xFF0x00

The D-pad byte represents the state of the arrow buttons. If two opposite directions are pressed simultaneously, the result is Center unless a third button is pressed.

NNEESESSWWNWNone/Center
0x000x010x020x030x040x050x060x070x08

The button byte uses six bits to represent the state of the physical buttons. 0 means that the button is released and 1 that it is pressed. A bitmask can be used to retrieve the buttons.

Button 1Button 2Button 3Button 4Button 5Button 6
BACDSELECTSTART

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:

bmRequestTypebRequestwValuewIndexwLength
0x410x090x02010x00000x0002

The data sent to the controller follows the structure below.

Byte 1Byte 2
StatusFunction
  • 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.