USB

The information in this section applies to the following controllers:

  • DGC-255: one-handle controller (Microsoft Windows)
  • DGOC-44U: two-handle controller (Microsoft Windows)
  • DRC-184/DYC-288: Ryojōhen controller (Microsoft Windows)
  • TCPP-20009: two-handle controller “Type 2” (Sony PlayStation 2)
  • TCPP-20011: Shinkansen controller (Sony PlayStation 2)
  • TCPP-20012: two-handle controller “Type 2”, purple skeleton (Sony PlayStation 2)
  • TCPP-20014: Ryojōhen controller (Sony PlayStation 2)
  • MTC: Multi Train Controller (Sony PlayStation 2)
  • ZKNS-001: one-handle controller (Nintendo Switch)

DGC-255

This controller has one handle (5 power notches and 8+emergency brake notches), a D-Pad and 6 buttons (Select, Start, A, B, C, D).

Internally, it is a HID-compliant joystick with two axes, 6 buttons and a PoV hat switch (the handle positions are reported via axes).

Besides the PoV hat switch, it reports the same data as a DGOC-44U controller. The games check if the controller has a PoV hat switch to distinguish between a DGC-255 and a DGOC-44U.

DGOC-44U

This controller has two handles (5 power notches and 8+emergency brake notches) and 6 buttons (Select, Start, A, B, C, D).

Internally, it is a HID-compliant joystick with two axes and 6 buttons (the handle positions are reported via axes).

Product name電車でGO! コントローラ USB版
ManufacturerTAITO
Vendor ID0x0AE4
Product ID0x0003
Serial numberTCPP20009
USB standard descriptorUnavailable
HID report descriptorLink

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

Byte 1Byte 2Byte 3Byte 4Byte 5Byte 6
BrakePowerNullButtonsNullNull

The values for the brake notch byte are the following. There are 5 unmarked positions between B8 and Emergency, but unlike classic controllers, they are all report the value for Emergency.

ReleasedB1B2B3B4B5B6B7B8EmergencyTransition
0x790x8A0x940x9A0xA20xA80xAF0xB20xB50xB90xFF

The values for the power notch byte are listed below.

NP1P2P3P4P5Transition
0x810x6D0x540x3F0x210x000xFF

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.

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

DRC-184/DYC-288

No details are available regarding internal functioning.

TCPP-20009/TCPP-20012

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 descriptorUnavailable

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
0x400x090x03010x00000x0002

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.

TCPP-20011

This controller has two handles (13 power notches and 7+emergency brake notches), a D-Pad and 6 buttons (Select, Start, A, B, C, D). In addition, it provides a simple display, 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_T02
ManufacturerTAITO
Vendor ID0x0AE4
Product ID0x0005
Serial numberTCPP20011
USB standard descriptorLink
HID report descriptorUnavailable

Input

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

Byte 1Byte 2Byte 3Byte 4Byte 5Byte 6
BrakePowerPedalD-PadButtonsNull

The values for the brake notch byte are the following.

ReleasedB1B2B3B4B5B6B7EmergencyTransition
0x1C0x380x540x700x8B0xA70xC30xDF0xFB0xFF

The values for the power notch byte are listed below.

NP1P2P3P4P5P6P7P8P9P10P11P12P13Transition
0x120x240x360x480x5A0x6C0x7E0x900xA20xB40xC60xD70xE90xFB0xFF

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
DCBASELECTSTART

Output

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

bmRequestTypebRequestwValuewIndexwLength
0x400x090x03010x00000x0008

The data sent to the controller follows the structure below.

Byte 1Byte 2Byte 3Byte 4Bytes 5-6Bytes 7-8
Left rumbleRight rumbleDoor lamp + Limit approachSpeed gaugeSpeedometerATC limit
  • Left/right rumble: 0x00 is Off, 0x01 is On.
  • Door lamp: 0x0? is Off, 0x8? is On.
  • Limit approach: values between 0x?0 and 0x?A representing the number of LEDs lit above the speedometer. In-game, these mark the 10 km/h right below the speed limit.
  • Speed gauge: values between 0x00 and 0x16 representing the number of LEDs lit on the speed gauge. LED #23 cannot be lit. In-game, these mark 15 km/h increments in the current speed, with one lit when speed is 1-15 km/h, two when 16-30 km/h, etc.
  • Speedometer: values between 0x0000 and 0x0999 representing the current speed. Values are encoded with BCD 8421 (i.e. 120 km/h should be represented as 0x0120, NOT 0x0078).
  • ATC limit: values between 0x0000 and 0x0999 representing the ATC speed limit. Values are encoded with BCD 8421 (i.e. 120 km/h should be represented as 0x0120, NOT 0x0078).

Multi-byte values should be stored in Little Endian.

TCPP-20014

This controller has two handles (4 power notches and an analogue brake handle with three areas), a D-Pad and 7 buttons (Select, Start, Horn, Announce, Camera, Left doors, Right doors). In addition, it provides a 3.5 mm jack connector to plug a horn pedal.

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

Product nameTAITO_DENSYA_CON_T03
ManufacturerTAITO
Vendor ID0x0AE4
Product ID0x0007
Serial numberTCPP20014
USB standard descriptorLink
HID report descriptorUnavailable

Input

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

Byte 1Byte 2Byte 3Byte 4Byte 5Bytes 6-8
BrakePowerPedalD-PadButtonsUnused

Unlike traditional controllers, the brake handle is analogue and the brake byte reflects the position of the handle precisely. There are three areas with the ranges listed below, plus the emergency notch.

Reduce pressureKeep pressureIncrease pressureEmergency
0x23-0x640x65-0x890x8A-0xD60xD7

When using the controller with Densha de GO! Professional 2 or Densha de GO! Final, the brake handle is interpreted as having 6 brake notches + emergency. The aproximate byte range for each notch is listed below (taken from Densha de GO! Professional 2).

ReleasedB1B2B3B4B5B6Emergency
0x23-0x2A0x2B-0x3C0x3D-0x4E0x4F-0x630x64-0x8A0x8B-0xB00xB1-0xD60xD7

The values for the power notch byte are listed below.

NP1P2P3P4Transition
0x000x3C0x780xB40xF00xFF

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 seven 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 6Button 7
HornAnnounceCameraRight doorsLeft doorsSELECTSTART

MTC

No details are available regarding internal functioning.

ZKNS-001

This controller has one handle (5 power notches and 8+emergency brake notches) and 16 buttons (the same as a Nintendo Switch Pro Controller, except the stick buttons).

Internally, it is a HID-compliant joystick mimicking a Nintendo Switch Pro Controller. The stick buttons and the right stick are unused, and only the Y axis of the left stick is used.

Product nameOne Handle MasCon for Nintendo Switch
ManufacturerNone
Vendor ID0x0F0D
Product ID0x00C1
Serial numberNone
USB standard descriptorLink
HID report descriptorLink

The power/brake handle notches are reported in the Y axis of the left stick. There are no transition values between notches. In addition, when the handle is set to Emergency, ZL is pressed.

EmergencyB8B7B6B5B4B3B2B1NP1P2P3P4P5
0x000x050x130x200x2E0x3C0x490x570x650x800x9F0xB70xCE0xE60xFF