mirror of
https://github.com/marcriera/ddgo-controller-docs.git
synced 2025-05-02 06:37:05 +02:00
Page refactor
This commit is contained in:
parent
a9470ab54c
commit
807790af8a
122 changed files with 2074 additions and 491 deletions
|
@ -1,5 +1,10 @@
|
|||
---
|
||||
title: "Controllers"
|
||||
weight: 1
|
||||
alwaysopen: true
|
||||
chapter: true
|
||||
---
|
||||
|
||||
# Controllers
|
||||
|
||||
This section lists all the controllers compatible with software in the *Densha de GO!* series or other software. The controllers are grouped by type. You will also find technical details, if they are known.
|
||||
|
||||
|
|
|
@ -1,80 +1,10 @@
|
|||
---
|
||||
title: "Classic consoles"
|
||||
weight: 1
|
||||
alwaysopen: false
|
||||
chapter: true
|
||||
---
|
||||
|
||||
The information in this section applies to the following controllers:
|
||||
# Classic console controllers
|
||||
|
||||
- **SLPH-00051:** two-handle controller (Sony PlayStation)
|
||||
- **TC-5175290:** two-handle controller (Sega Saturn)
|
||||
- **TCPP-20001:** single-handle controller (Sony PlayStation)
|
||||
- **TCPP-20002:** gamepad controller (Sony PlayStation)
|
||||
- **TCPP-20003:** two-handle controller (Nintendo 64)
|
||||
- **TCPP-20004:** two-handle controller (Sega Dreamcast)
|
||||
- **TCPP-20008:** two-handle controller, golden (Sony PlayStation)
|
||||
|
||||
These controllers all have five physical buttons (**SELECT**, **START**, **A**, **B**, **C**) and two handles (with the TCPP-20001 combining them into one). Internally, they use the same protocol as a standard controller for the corresponding console and input is reported in the data bytes corresponding to buttons (where each bit reports the state of a single button). Only the regular physical buttons have dedicated bits for them; the handles combine three and four bits for the power notches and brake notches, respectively (you can find an example with the Nintendo 64 [here](https://sites.google.com/site/consoleprotocols/home/nintendo-joy-bus-documentation/n64-specific/train-controller)).
|
||||
|
||||
## Power handle bit usage
|
||||
|
||||
The power handle uses a combination of three bits (buttons) to represent each notch. When using the TCPP-20001 controller, the equivalent of **N** is reported for power whenever a brake notch is applied.
|
||||
|
||||
| Position | POWER 1 | POWER 2 | POWER 3 |
|
||||
|:----------:|:-------:|:-------:|:-------:|
|
||||
| N | - | X | X |
|
||||
| P1 | X | - | X |
|
||||
| P2 | - | - | X |
|
||||
| P3 | X | X | - |
|
||||
| P4 | - | X | - |
|
||||
| P5 | X | - | - |
|
||||
| Transition | - | - | - |
|
||||
|
||||
## Brake handle bit usage
|
||||
|
||||
The brake handle uses a combination of four bits (buttons) to represent each notch. When using the TCPP-20001 controller, the equivalent of **Released** is reported for brake whenever a power notch is applied.
|
||||
|
||||
| Position | BRAKE 1 | BRAKE 2 | BRAKE 3 | BRAKE 4 |
|
||||
|:----------:|:-------:|:-------:|:-------:|:-------:|
|
||||
| Released | - | X | X | X |
|
||||
| B1 | X | - | X | X |
|
||||
| B2 | - | - | X | X |
|
||||
| B3 | X | X | - | X |
|
||||
| B4 | - | X | - | X |
|
||||
| B5 | X | - | - | X |
|
||||
| B6 | - | - | - | X |
|
||||
| B7 | X | X | X | - |
|
||||
| B8 | - | X | X | - |
|
||||
| Unmarked 1 | X | - | X | - |
|
||||
| Unmarked 2 | - | - | X | - |
|
||||
| Unmarked 3 | X | X | - | - |
|
||||
| Unmarked 4 | - | X | - | - |
|
||||
| Unmarked 5 | X | - | - | - |
|
||||
| Emergency | - | - | - | - |
|
||||
| Transition | X | X | X | X |
|
||||
|
||||
The unmarked positions can be found between **B8** and **Emergency** and produce no click when moving the handle. When using the TCPP-20001 or the TCPP-20002, only the first and fourth unmarked positions are available.
|
||||
|
||||
## Button mapping to a standard controller
|
||||
|
||||
Because they use the same data bytes, the input between a Densha de GO! controller and a standard controller for each console can be matched as follows:
|
||||
|
||||
| Densha de GO! | Nintendo 64 | Sony PlayStation 1 | Sega Dreamcast | Sega Saturn |
|
||||
|:-------------:|:-----------:|:------------------:|:--------------:|:-----------:|
|
||||
| SELECT | R | SELECT | D | ?? |
|
||||
| START | START | START | START | START |
|
||||
| A | B | SQUARE | A | A |
|
||||
| B | A | CROSS | ?? | B |
|
||||
| C | L | CIRCLE | C | C |
|
||||
| POWER 1 | RIGHT | TRIANGLE | Z | X |
|
||||
| POWER 2 | UP | LEFT | Y | Y |
|
||||
| POWER 3 | Z | RIGHT | X | Z |
|
||||
| BRAKE 1 | C RIGHT | L1 | UP | L |
|
||||
| BRAKE 2 | C LEFT | L2 | DOWN | R |
|
||||
| BRAKE 3 | C DOWN | R1 | LEFT | DOWN |
|
||||
| BRAKE 4 | C UP | R2 | RIGHT | LEFT |
|
||||
|
||||
This is useful when using a USB adapter to read the controller input from a PC.
|
||||
|
||||
## PlayStation-specific information
|
||||
|
||||
The controllers report the same data amount and structure as a standard digital PlayStation controller. UP and DOWN are pressed permanently. The games detect the controllers with these two buttons, as it is an impossible combination with a standard digital controller.
|
||||
This section includes controllers for consoles which use a non-USB connector and usually pose as standard controllers from their corresponding console.
|
||||
|
|
9
content/controllers/classic/slph00051/_index.md
Normal file
9
content/controllers/classic/slph00051/_index.md
Normal file
|
@ -0,0 +1,9 @@
|
|||
---
|
||||
title: "Two handle controller (Sony PlayStation)"
|
||||
---
|
||||
|
||||
{{% controller-page "slph00051" %}}
|
||||
|
||||
The controller follows the same standard [internal operation](../tech) as other classic controllers.
|
||||
|
||||
To allow PlayStation software to distinguish the controller from a standard controller, **UP** and **DOWN** on the D-pad are pressed permanently. This combination is impossible on an unmodified digital gamepad or Dualshock.
|
7
content/controllers/classic/tc5175290/_index.md
Normal file
7
content/controllers/classic/tc5175290/_index.md
Normal file
|
@ -0,0 +1,7 @@
|
|||
---
|
||||
title: "Two handle controller (Sega Saturn)"
|
||||
---
|
||||
|
||||
{{% controller-page "tc5175290" %}}
|
||||
|
||||
The controller follows the same standard [internal operation](../tech) as other classic controllers.
|
9
content/controllers/classic/tcpp20001/_index.md
Normal file
9
content/controllers/classic/tcpp20001/_index.md
Normal file
|
@ -0,0 +1,9 @@
|
|||
---
|
||||
title: "One handle controller (Sony PlayStation)"
|
||||
---
|
||||
|
||||
{{% controller-page "tcpp20001" %}}
|
||||
|
||||
The controller follows the same standard [internal operation](../tech) as other classic controllers. As the controller only has one handle, brake and power cannot be set separately. In addition, only the first and fourth unmarked positions are available.
|
||||
|
||||
To allow PlayStation software to distinguish the controller from a standard controller, **UP** and **DOWN** on the D-pad are pressed permanently. This combination is impossible on an unmodified digital gamepad or Dualshock.
|
9
content/controllers/classic/tcpp20002/_index.md
Normal file
9
content/controllers/classic/tcpp20002/_index.md
Normal file
|
@ -0,0 +1,9 @@
|
|||
---
|
||||
title: "Mamecon (Sony PlayStation)"
|
||||
---
|
||||
|
||||
{{% controller-page "tcpp20002" %}}
|
||||
|
||||
The controller follows the same standard [internal operation](../tech) as other classic controllers. In addition, only the first and fourth unmarked positions are available.
|
||||
|
||||
To allow PlayStation software to distinguish the controller from a standard controller, **UP** and **DOWN** on the D-pad are pressed permanently. This combination is impossible on an unmodified digital gamepad or Dualshock.
|
7
content/controllers/classic/tcpp20003/_index.md
Normal file
7
content/controllers/classic/tcpp20003/_index.md
Normal file
|
@ -0,0 +1,7 @@
|
|||
---
|
||||
title: "Two handle controller (Nintendo 64)"
|
||||
---
|
||||
|
||||
{{% controller-page "tcpp20003" %}}
|
||||
|
||||
The controller follows the same standard [internal operation](../tech) as other classic controllers.
|
7
content/controllers/classic/tcpp20004/_index.md
Normal file
7
content/controllers/classic/tcpp20004/_index.md
Normal file
|
@ -0,0 +1,7 @@
|
|||
---
|
||||
title: "Two handle controller (Sega Dreamcast)"
|
||||
---
|
||||
|
||||
{{% controller-page "tcpp20004" %}}
|
||||
|
||||
The controller follows the same standard [internal operation](../tech) as other classic controllers.
|
67
content/controllers/classic/tech.md
Normal file
67
content/controllers/classic/tech.md
Normal file
|
@ -0,0 +1,67 @@
|
|||
---
|
||||
title: "Classic controllers - Technical details"
|
||||
weight: 1
|
||||
hidden: true
|
||||
---
|
||||
|
||||
Internally, these controllers use the same protocol as a standard controller for the corresponding console and input is reported in the data bytes corresponding to buttons (where each bit reports the state of a single button). Only the regular physical buttons have dedicated bits for them; the handles combine three and four bits for the power notches and brake notches, respectively (you can find an example with the Nintendo 64 [here](https://sites.google.com/site/consoleprotocols/home/nintendo-joy-bus-documentation/n64-specific/train-controller)).
|
||||
|
||||
## Power handle bit usage
|
||||
|
||||
The power handle uses a combination of three bits (buttons) to represent each notch.
|
||||
|
||||
| Position | POWER 1 | POWER 2 | POWER 3 |
|
||||
|:----------:|:-------:|:-------:|:-------:|
|
||||
| N | - | X | X |
|
||||
| P1 | X | - | X |
|
||||
| P2 | - | - | X |
|
||||
| P3 | X | X | - |
|
||||
| P4 | - | X | - |
|
||||
| P5 | X | - | - |
|
||||
| Transition | - | - | - |
|
||||
|
||||
## Brake handle bit usage
|
||||
|
||||
The brake handle uses a combination of four bits (buttons) to represent each notch.
|
||||
|
||||
| Position | BRAKE 1 | BRAKE 2 | BRAKE 3 | BRAKE 4 |
|
||||
|:----------:|:-------:|:-------:|:-------:|:-------:|
|
||||
| Released | - | X | X | X |
|
||||
| B1 | X | - | X | X |
|
||||
| B2 | - | - | X | X |
|
||||
| B3 | X | X | - | X |
|
||||
| B4 | - | X | - | X |
|
||||
| B5 | X | - | - | X |
|
||||
| B6 | - | - | - | X |
|
||||
| B7 | X | X | X | - |
|
||||
| B8 | - | X | X | - |
|
||||
| Unmarked 1 | X | - | X | - |
|
||||
| Unmarked 2 | - | - | X | - |
|
||||
| Unmarked 3 | X | X | - | - |
|
||||
| Unmarked 4 | - | X | - | - |
|
||||
| Unmarked 5 | X | - | - | - |
|
||||
| Emergency | - | - | - | - |
|
||||
| Transition | X | X | X | X |
|
||||
|
||||
The unmarked positions can be found between **B8** and **Emergency** and produce no click when moving the handle.
|
||||
|
||||
## Button mapping to a standard controller
|
||||
|
||||
Because they use the same data bytes, the input between a Densha de GO! controller and a standard controller for each console can be matched as follows:
|
||||
|
||||
| Densha de GO! | Nintendo 64 | Sony PlayStation 1 | Sega Dreamcast | Sega Saturn |
|
||||
|:-------------:|:-----------:|:------------------:|:--------------:|:-----------:|
|
||||
| SELECT | R | SELECT | D | ?? |
|
||||
| START | START | START | START | START |
|
||||
| A | B | SQUARE | A | A |
|
||||
| B | A | CROSS | ?? | B |
|
||||
| C | L | CIRCLE | C | C |
|
||||
| POWER 1 | RIGHT | TRIANGLE | Z | X |
|
||||
| POWER 2 | UP | LEFT | Y | Y |
|
||||
| POWER 3 | Z | RIGHT | X | Z |
|
||||
| BRAKE 1 | C RIGHT | L1 | UP | L |
|
||||
| BRAKE 2 | C LEFT | L2 | DOWN | R |
|
||||
| BRAKE 3 | C DOWN | R1 | LEFT | DOWN |
|
||||
| BRAKE 4 | C UP | R2 | RIGHT | LEFT |
|
||||
|
||||
This can be used with a USB adapter to read the controller input from a PC.
|
10
content/controllers/gameport/_index.md
Normal file
10
content/controllers/gameport/_index.md
Normal file
|
@ -0,0 +1,10 @@
|
|||
---
|
||||
title: "Game port"
|
||||
weight: 2
|
||||
alwaysopen: false
|
||||
chapter: true
|
||||
---
|
||||
|
||||
# Game port controllers
|
||||
|
||||
This section includes controllers for Microsoft Windows which use a [game port](https://en.wikipedia.org/wiki/Game_port).
|
22
content/controllers/gameport/dgoc44/_index.md
Normal file
22
content/controllers/gameport/dgoc44/_index.md
Normal file
|
@ -0,0 +1,22 @@
|
|||
---
|
||||
title: "Two handle controller, game port (PC)"
|
||||
---
|
||||
|
||||
{{% controller-page "dgoc44" %}}
|
||||
|
||||
This is the original controller for the Microsoft Windows releases. This controller has two handles (5 power notches and 8+emergency brake notches) and 3 buttons (A, B, C).
|
||||
|
||||
The buttons and handles are mapped to game port buttons and axes, respectively, as follows:
|
||||
|
||||
| Game port | Controller |
|
||||
|-------------|------------|
|
||||
| B1 | B |
|
||||
| B2 | A |
|
||||
| B3 | *Unused* |
|
||||
| B4 | C |
|
||||
| X1 | Brake |
|
||||
| Y1 | Power |
|
||||
| X2 | *Unused* |
|
||||
| Y2 | *Unused* |
|
||||
|
||||
The controller needs to be calibrated before it can be used.
|
|
@ -1,10 +0,0 @@
|
|||
---
|
||||
title: "Serial port"
|
||||
weight: 2
|
||||
---
|
||||
|
||||
The information in this section applies to the following controllers:
|
||||
|
||||
- **DGOC-44:** two-handle controller (Microsoft Windows)
|
||||
|
||||
This is the original controller for the Microsoft Windows releases. No details are available regarding internal functioning.
|
|
@ -1,14 +1,10 @@
|
|||
---
|
||||
title: "Standalone"
|
||||
weight: 5
|
||||
alwaysopen: false
|
||||
chapter: true
|
||||
---
|
||||
|
||||
The information in this section applies to the following controllers:
|
||||
# Standalone controllers
|
||||
|
||||
- **Densha de GO! Plug and Play**
|
||||
|
||||
This controller is different from traditional controllers in the sense that it contains the game (an improved version of *Densha de GO! Final*) and does not connect to a PC or console. Externally, it looks similar to a TCPP-20009, except it does not include a pedal connection. Internally, it contains an ARM board running Linux. It requires a micro USB cable for power and a HDMI cable for video output.
|
||||
|
||||
The micro USB port supports USB OTG with a powered adapter and is used by Taito to install software updates.
|
||||
|
||||
It is possible to update the Linux kernel on the board to enable USB gadget mode and emulate traditional controllers, such as the [DGOC-44U](/models/usb/#dgoc-44u). This makes it possible to control other software. You can find more information [here](https://github.com/GMMan/dengo-plug-and-play-controller).
|
||||
This section includes self-contained controllers with software included in them. Instead of connecting to a PC or console, they can be connected directly to a TV via HDMI.
|
||||
|
|
12
content/controllers/standalone/pnp/_index.md
Normal file
12
content/controllers/standalone/pnp/_index.md
Normal file
|
@ -0,0 +1,12 @@
|
|||
---
|
||||
title: "Densha de GO! Plug and Play"
|
||||
weight: 1
|
||||
---
|
||||
|
||||
{{% standalone_controller-page "pnp" %}}
|
||||
|
||||
This controller is different from traditional controllers in the sense that it contains the game (an improved version of *Densha de GO! Final*) and does not connect to a PC or console. Externally, it looks similar to a TCPP-20009, except it does not include a pedal connection. Internally, it contains an ARM board running Linux. It requires a micro USB cable for power and a HDMI cable for video output.
|
||||
|
||||
The micro USB port supports USB OTG with a powered adapter and is used by Taito to install software updates.
|
||||
|
||||
It is possible to update the Linux kernel on the board to enable USB gadget mode and emulate traditional controllers, such as the [DGOC-44U](/controllers/usb/dgoc44u). This makes it possible to control other software. You can find more information [here](https://github.com/GMMan/dengo-plug-and-play-controller).
|
|
@ -1,302 +1,10 @@
|
|||
---
|
||||
title: "USB"
|
||||
weight: 3
|
||||
alwaysopen: false
|
||||
chapter: true
|
||||
---
|
||||
|
||||
The information in this section applies to the following controllers:
|
||||
# USB 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版 |
|
||||
| **Manufacturer** | TAITO |
|
||||
| **Vendor ID** | 0x0AE4 |
|
||||
| **Product ID** | 0x0003 |
|
||||
| **Serial number** | TCPP20009 |
|
||||
| **USB standard descriptor** | Unavailable |
|
||||
| **HID report descriptor** | [Link](descriptors/dgoc44u_hid-report-descriptor.txt) |
|
||||
|
||||
The controller sends reports to the host (PC) formed by 6 bytes:
|
||||
|
||||
| Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 |
|
||||
|:------:|:------:|:------:|:-------:|:------:|:------:|
|
||||
| Brake | Power | Null | Buttons | Null | Null |
|
||||
|
||||
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**.
|
||||
|
||||
| Released | B1 | B2 | B3 | B4 | B5 | B6 | B7 | B8 | Emergency | Transition |
|
||||
|:--------:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:---------:|:----------:|
|
||||
| 0x79 | 0x8A | 0x94 | 0x9A | 0xA2 | 0xA8 | 0xAF | 0xB2 | 0xB5 | 0xB9 | 0xFF |
|
||||
|
||||
The values for the power notch byte are listed below.
|
||||
|
||||
| N | P1 | P2 | P3 | P4 | P5 | Transition |
|
||||
|:----:|:----:|:----:|:----:|:----:|:----:|:----------:|
|
||||
| 0x81 | 0x6D | 0x54 | 0x3F | 0x21 | 0x00 | 0xFF |
|
||||
|
||||
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 1 | Button 2 | Button 3 | Button 4 | Button 5 | Button 6 |
|
||||
|:--------:|:--------:|:--------:|:--------:|:--------:|:--------:|
|
||||
| B | A | C | D | SELECT | START |
|
||||
|
||||
### 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 name** | TAITO_DENSYA_CON_T01 |
|
||||
| **Manufacturer** | TAITO |
|
||||
| **Vendor ID** | 0x0AE4 |
|
||||
| **Product ID** | 0x0004 |
|
||||
| **Serial number** | TCPP20010 |
|
||||
| **USB standard descriptor** | [Link](descriptors/tcpp20009_standard-descriptor.txt) |
|
||||
| **HID report descriptor** | Unavailable |
|
||||
|
||||
#### Input
|
||||
|
||||
The controller sends reports to the host (PS2) formed by 6 bytes:
|
||||
|
||||
| Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 |
|
||||
|:------:|:------:|:------:|:------:|:------:|:-------:|
|
||||
| 0x01 | Brake | Power | Pedal | D-Pad | Buttons |
|
||||
|
||||
The values for the brake notch byte are the following.
|
||||
|
||||
| Released | B1 | B2 | B3 | B4 | B5 | B6 | B7 | B8 | Emergency | Transition |
|
||||
|:--------:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:---------:|:----------:|
|
||||
| 0x79 | 0x8A | 0x94 | 0x9A | 0xA2 | 0xA8 | 0xAF | 0xB2 | 0xB5 | 0xB9 | 0xFF |
|
||||
|
||||
The values for the power notch byte are listed below.
|
||||
|
||||
| N | P1 | P2 | P3 | P4 | P5 | Transition |
|
||||
|:----:|:----:|:----:|:----:|:----:|:----:|:----------:|
|
||||
| 0x81 | 0x6D | 0x54 | 0x3F | 0x21 | 0x00 | 0xFF |
|
||||
|
||||
The pedal byte has two possible values depending on the state of the pedal.
|
||||
|
||||
| Released | Pressed |
|
||||
|:--------:|:-------:|
|
||||
| 0xFF | 0x00 |
|
||||
|
||||
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.
|
||||
|
||||
| N | NE | E | SE | S | SW | W | NW | None/Center |
|
||||
|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:-----------:|
|
||||
| 0x00 | 0x01 | 0x02 | 0x03 | 0x04 | 0x05 | 0x06 | 0x07 | 0x08 |
|
||||
|
||||
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 1 | Button 2 | Button 3 | Button 4 | Button 5 | Button 6 |
|
||||
|:--------:|:--------:|:--------:|:--------:|:--------:|:--------:|
|
||||
| B | A | C | D | SELECT | START |
|
||||
|
||||
#### 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:
|
||||
|
||||
| bmRequestType | bRequest | wValue | wIndex | wLength |
|
||||
|:-------------:|:--------:|:------:|:------:|:-------:|
|
||||
| 0x40 | 0x09 | 0x0301 | 0x0000 | 0x0002 |
|
||||
|
||||
The data sent to the controller follows the structure below.
|
||||
|
||||
| Byte 1 | Byte 2 |
|
||||
|:------:|:--------:|
|
||||
| Status | Function |
|
||||
|
||||
* **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 name** | TAITO_DENSYA_CON_T02 |
|
||||
| **Manufacturer** | TAITO |
|
||||
| **Vendor ID** | 0x0AE4 |
|
||||
| **Product ID** | 0x0005 |
|
||||
| **Serial number** | TCPP20011 |
|
||||
| **USB standard descriptor** | [Link](descriptors/tcpp20011_standard-descriptor.txt) |
|
||||
| **HID report descriptor** | Unavailable |
|
||||
|
||||
#### Input
|
||||
|
||||
The controller sends reports to the host (PS2) formed by 6 bytes:
|
||||
|
||||
| Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 |
|
||||
|:------:|:------:|:------:|:------:|:-------:|:------:|
|
||||
| Brake | Power | Pedal | D-Pad | Buttons | Null |
|
||||
|
||||
The values for the brake notch byte are the following.
|
||||
|
||||
| Released | B1 | B2 | B3 | B4 | B5 | B6 | B7 | Emergency | Transition |
|
||||
|:--------:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:---------:|:----------:|
|
||||
| 0x1C | 0x38 | 0x54 | 0x70 | 0x8B | 0xA7 | 0xC3 | 0xDF | 0xFB | 0xFF |
|
||||
|
||||
The values for the power notch byte are listed below.
|
||||
|
||||
| N | P1 | P2 | P3 | P4 | P5 | P6 | P7 | P8 | P9 | P10 | P11 | P12 | P13 | Transition |
|
||||
|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----------:|
|
||||
| 0x12 | 0x24 | 0x36 | 0x48 | 0x5A | 0x6C | 0x7E | 0x90 | 0xA2 | 0xB4 | 0xC6 | 0xD7 | 0xE9 | 0xFB | 0xFF |
|
||||
|
||||
The pedal byte has two possible values depending on the state of the pedal.
|
||||
|
||||
| Released | Pressed |
|
||||
|:--------:|:-------:|
|
||||
| 0xFF | 0x00 |
|
||||
|
||||
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.
|
||||
|
||||
| N | NE | E | SE | S | SW | W | NW | None/Center |
|
||||
|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:-----------:|
|
||||
| 0x00 | 0x01 | 0x02 | 0x03 | 0x04 | 0x05 | 0x06 | 0x07 | 0x08 |
|
||||
|
||||
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 1 | Button 2 | Button 3 | Button 4 | Button 5 | Button 6 |
|
||||
|:--------:|:--------:|:--------:|:--------:|:--------:|:--------:|
|
||||
| D | C | B | A | SELECT | START |
|
||||
|
||||
#### 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:
|
||||
|
||||
| bmRequestType | bRequest | wValue | wIndex | wLength |
|
||||
|:-------------:|:--------:|:------:|:------:|:-------:|
|
||||
| 0x40 | 0x09 | 0x0301 | 0x0000 | 0x0008 |
|
||||
|
||||
The data sent to the controller follows the structure below.
|
||||
|
||||
| Byte 1 | Byte 2 | Byte 3 | Byte 4 | Bytes 5-6 | Bytes 7-8 |
|
||||
|:-----------:|:-----------:|:--------------------------:|:-----------:|:-----------:|:---------:|
|
||||
| Left rumble | Right rumble| Door lamp + Limit approach | Speed gauge | Speedometer | ATC 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 name** | TAITO_DENSYA_CON_T03 |
|
||||
| **Manufacturer** | TAITO |
|
||||
| **Vendor ID** | 0x0AE4 |
|
||||
| **Product ID** | 0x0007 |
|
||||
| **Serial number** | TCPP20014 |
|
||||
| **USB standard descriptor** | [Link](descriptors/tcpp20014_standard-descriptor.txt) |
|
||||
| **HID report descriptor** | Unavailable |
|
||||
|
||||
#### Input
|
||||
|
||||
The controller sends reports to the host (PS2) formed by 8 bytes:
|
||||
|
||||
| Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Bytes 6-8 |
|
||||
|:------:|:------:|:------:|:------:|:-------:|:---------:|
|
||||
| Brake | Power | Pedal | D-Pad | Buttons | Unused |
|
||||
|
||||
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 pressure | Keep pressure | Increase pressure | Emergency |
|
||||
|:---------------:|:-------------:|:-----------------:|:---------:|
|
||||
| 0x23-0x64 | 0x65-0x89 | 0x8A-0xD6 | 0xD7 |
|
||||
|
||||
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**).
|
||||
|
||||
| Released | B1 | B2 | B3 | B4 | B5 | B6 | Emergency |
|
||||
|:---------:|:---------:|:---------:|:---------:|:---------:|:---------:|:---------:|:---------:|
|
||||
| 0x23-0x2A | 0x2B-0x3C | 0x3D-0x4E | 0x4F-0x63 | 0x64-0x8A | 0x8B-0xB0 | 0xB1-0xD6 | 0xD7 |
|
||||
|
||||
The values for the power notch byte are listed below.
|
||||
|
||||
| N | P1 | P2 | P3 | P4 | Transition |
|
||||
|:----:|:----:|:----:|:----:|:----:|:----------:|
|
||||
| 0x00 | 0x3C | 0x78 | 0xB4 | 0xF0 | 0xFF |
|
||||
|
||||
The pedal byte has two possible values depending on the state of the pedal.
|
||||
|
||||
| Released | Pressed |
|
||||
|:--------:|:-------:|
|
||||
| 0xFF | 0x00 |
|
||||
|
||||
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.
|
||||
|
||||
| N | NE | E | SE | S | SW | W | NW | None/Center |
|
||||
|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:-----------:|
|
||||
| 0x00 | 0x01 | 0x02 | 0x03 | 0x04 | 0x05 | 0x06 | 0x07 | 0x08 |
|
||||
|
||||
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 1 | Button 2 | Button 3 | Button 4 | Button 5 | Button 6 | Button 7 |
|
||||
|:--------:|:--------:|:--------:|:-----------:|:----------:|:--------:|:--------:|
|
||||
| Horn | Announce | Camera | Right doors | Left doors | SELECT | START |
|
||||
|
||||
### 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 name** | One Handle MasCon for Nintendo Switch |
|
||||
| **Manufacturer** | *None* |
|
||||
| **Vendor ID** | 0x0F0D |
|
||||
| **Product ID** | 0x00C1 |
|
||||
| **Serial number** | *None* |
|
||||
| **USB standard descriptor** | [Link](descriptors/zkns001_standard-descriptor.txt) |
|
||||
| **HID report descriptor** | [Link](descriptors/zkns001_hid-report-descriptor.txt) |
|
||||
|
||||
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.
|
||||
|
||||
| Emergency | B8 | B7 | B6 | B5 | B4 | B3 | B2 | B1 | N | P1 | P2 | P3 | P4 | P5 |
|
||||
|:---------:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|
|
||||
| 0x00 | 0x05 | 0x13 | 0x20 | 0x2E | 0x3C | 0x49 | 0x57 | 0x65 | 0x80 | 0x9F | 0xB7 | 0xCE | 0xE6 | 0xFF |
|
||||
This section includes controllers for Microsoft Windows and consoles which use a USB-A connector.
|
||||
|
|
7
content/controllers/usb/cotm02001/_index.md
Normal file
7
content/controllers/usb/cotm02001/_index.md
Normal file
|
@ -0,0 +1,7 @@
|
|||
---
|
||||
title: "Train Mascon (Sony PlayStation 2)"
|
||||
---
|
||||
|
||||
{{% controller-page "cotm02001" %}}
|
||||
|
||||
No details are available regarding internal functioning.
|
11
content/controllers/usb/dgc255/_index.md
Normal file
11
content/controllers/usb/dgc255/_index.md
Normal file
|
@ -0,0 +1,11 @@
|
|||
---
|
||||
title: "One handle controller (PC)"
|
||||
---
|
||||
|
||||
{{% controller-page "dgc255" %}}
|
||||
|
||||
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.
|
43
content/controllers/usb/dgoc44u/_index.md
Normal file
43
content/controllers/usb/dgoc44u/_index.md
Normal file
|
@ -0,0 +1,43 @@
|
|||
---
|
||||
title: "Two handle controller (PC)"
|
||||
---
|
||||
|
||||
{{% controller-page "dgoc44u" %}}
|
||||
|
||||
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版 |
|
||||
| **Manufacturer** | TAITO |
|
||||
| **Vendor ID** | 0x0AE4 |
|
||||
| **Product ID** | 0x0003 |
|
||||
| **Serial number** | TCPP20009 |
|
||||
| **USB standard descriptor** | Unavailable |
|
||||
| **HID report descriptor** | [Link](/controllers/usb/descriptors/dgoc44u_hid-report-descriptor.txt) |
|
||||
|
||||
The controller sends reports to the host (PC) formed by 6 bytes:
|
||||
|
||||
| Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 |
|
||||
|:------:|:------:|:------:|:-------:|:------:|:------:|
|
||||
| Brake | Power | Null | Buttons | Null | Null |
|
||||
|
||||
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**.
|
||||
|
||||
| Released | B1 | B2 | B3 | B4 | B5 | B6 | B7 | B8 | Emergency | Transition |
|
||||
|:--------:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:---------:|:----------:|
|
||||
| 0x79 | 0x8A | 0x94 | 0x9A | 0xA2 | 0xA8 | 0xAF | 0xB2 | 0xB5 | 0xB9 | 0xFF |
|
||||
|
||||
The values for the power notch byte are listed below.
|
||||
|
||||
| N | P1 | P2 | P3 | P4 | P5 | Transition |
|
||||
|:----:|:----:|:----:|:----:|:----:|:----:|:----------:|
|
||||
| 0x81 | 0x6D | 0x54 | 0x3F | 0x21 | 0x00 | 0xFF |
|
||||
|
||||
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 1 | Button 2 | Button 3 | Button 4 | Button 5 | Button 6 |
|
||||
|:--------:|:--------:|:--------:|:--------:|:--------:|:--------:|
|
||||
| B | A | C | D | SELECT | START |
|
7
content/controllers/usb/dyc288/_index.md
Normal file
7
content/controllers/usb/dyc288/_index.md
Normal file
|
@ -0,0 +1,7 @@
|
|||
---
|
||||
title: "Ryojōhen controller (PC)"
|
||||
---
|
||||
|
||||
{{% controller-page "dyc288" %}}
|
||||
|
||||
No details are available regarding internal functioning.
|
7
content/controllers/usb/ohcpc01/_index.md
Normal file
7
content/controllers/usb/ohcpc01/_index.md
Normal file
|
@ -0,0 +1,7 @@
|
|||
---
|
||||
title: "Sangying one handle controller (PC)"
|
||||
---
|
||||
|
||||
{{% controller-page "ohcpc01" %}}
|
||||
|
||||
No details are available regarding internal functioning.
|
7
content/controllers/usb/sotp031201/_index.md
Normal file
7
content/controllers/usb/sotp031201/_index.md
Normal file
|
@ -0,0 +1,7 @@
|
|||
---
|
||||
title: "Multi Train Controller (Sony PlayStation 2)"
|
||||
---
|
||||
|
||||
{{% controller-page "sotp031201" %}}
|
||||
|
||||
No details are available regarding internal functioning.
|
74
content/controllers/usb/tcpp20009/_index.md
Normal file
74
content/controllers/usb/tcpp20009/_index.md
Normal file
|
@ -0,0 +1,74 @@
|
|||
---
|
||||
title: 'Two handle controller "Type 2" (Sony PlayStation 2)'
|
||||
---
|
||||
|
||||
{{% controller-page "tcpp20009" %}}
|
||||
|
||||
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 name** | TAITO_DENSYA_CON_T01 |
|
||||
| **Manufacturer** | TAITO |
|
||||
| **Vendor ID** | 0x0AE4 |
|
||||
| **Product ID** | 0x0004 |
|
||||
| **Serial number** | TCPP20010 |
|
||||
| **USB standard descriptor** | [Link](/controllers/usb/descriptors/tcpp20009_standard-descriptor.txt) |
|
||||
| **HID report descriptor** | Unavailable |
|
||||
|
||||
### Input
|
||||
|
||||
The controller sends reports to the host (PS2) formed by 6 bytes:
|
||||
|
||||
| Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 |
|
||||
|:------:|:------:|:------:|:------:|:------:|:-------:|
|
||||
| 0x01 | Brake | Power | Pedal | D-Pad | Buttons |
|
||||
|
||||
The values for the brake notch byte are the following.
|
||||
|
||||
| Released | B1 | B2 | B3 | B4 | B5 | B6 | B7 | B8 | Emergency | Transition |
|
||||
|:--------:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:---------:|:----------:|
|
||||
| 0x79 | 0x8A | 0x94 | 0x9A | 0xA2 | 0xA8 | 0xAF | 0xB2 | 0xB5 | 0xB9 | 0xFF |
|
||||
|
||||
The values for the power notch byte are listed below.
|
||||
|
||||
| N | P1 | P2 | P3 | P4 | P5 | Transition |
|
||||
|:----:|:----:|:----:|:----:|:----:|:----:|:----------:|
|
||||
| 0x81 | 0x6D | 0x54 | 0x3F | 0x21 | 0x00 | 0xFF |
|
||||
|
||||
The pedal byte has two possible values depending on the state of the pedal.
|
||||
|
||||
| Released | Pressed |
|
||||
|:--------:|:-------:|
|
||||
| 0xFF | 0x00 |
|
||||
|
||||
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.
|
||||
|
||||
| N | NE | E | SE | S | SW | W | NW | None/Center |
|
||||
|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:-----------:|
|
||||
| 0x00 | 0x01 | 0x02 | 0x03 | 0x04 | 0x05 | 0x06 | 0x07 | 0x08 |
|
||||
|
||||
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 1 | Button 2 | Button 3 | Button 4 | Button 5 | Button 6 |
|
||||
|:--------:|:--------:|:--------:|:--------:|:--------:|:--------:|
|
||||
| B | A | C | D | SELECT | START |
|
||||
|
||||
### 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:
|
||||
|
||||
| bmRequestType | bRequest | wValue | wIndex | wLength |
|
||||
|:-------------:|:--------:|:------:|:------:|:-------:|
|
||||
| 0x40 | 0x09 | 0x0301 | 0x0000 | 0x0002 |
|
||||
|
||||
The data sent to the controller follows the structure below.
|
||||
|
||||
| Byte 1 | Byte 2 |
|
||||
|:------:|:--------:|
|
||||
| Status | Function |
|
||||
|
||||
* **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**.
|
80
content/controllers/usb/tcpp20011/_index.md
Normal file
80
content/controllers/usb/tcpp20011/_index.md
Normal file
|
@ -0,0 +1,80 @@
|
|||
---
|
||||
title: "Shinkansen controller (Sony PlayStation 2)"
|
||||
---
|
||||
|
||||
{{% controller-page "tcpp20011" %}}
|
||||
|
||||
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 name** | TAITO_DENSYA_CON_T02 |
|
||||
| **Manufacturer** | TAITO |
|
||||
| **Vendor ID** | 0x0AE4 |
|
||||
| **Product ID** | 0x0005 |
|
||||
| **Serial number** | TCPP20011 |
|
||||
| **USB standard descriptor** | [Link](/controllers/usb/descriptors/tcpp20011_standard-descriptor.txt) |
|
||||
| **HID report descriptor** | Unavailable |
|
||||
|
||||
### Input
|
||||
|
||||
The controller sends reports to the host (PS2) formed by 6 bytes:
|
||||
|
||||
| Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 |
|
||||
|:------:|:------:|:------:|:------:|:-------:|:------:|
|
||||
| Brake | Power | Pedal | D-Pad | Buttons | Null |
|
||||
|
||||
The values for the brake notch byte are the following.
|
||||
|
||||
| Released | B1 | B2 | B3 | B4 | B5 | B6 | B7 | Emergency | Transition |
|
||||
|:--------:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:---------:|:----------:|
|
||||
| 0x1C | 0x38 | 0x54 | 0x70 | 0x8B | 0xA7 | 0xC3 | 0xDF | 0xFB | 0xFF |
|
||||
|
||||
The values for the power notch byte are listed below.
|
||||
|
||||
| N | P1 | P2 | P3 | P4 | P5 | P6 | P7 | P8 | P9 | P10 | P11 | P12 | P13 | Transition |
|
||||
|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----------:|
|
||||
| 0x12 | 0x24 | 0x36 | 0x48 | 0x5A | 0x6C | 0x7E | 0x90 | 0xA2 | 0xB4 | 0xC6 | 0xD7 | 0xE9 | 0xFB | 0xFF |
|
||||
|
||||
The pedal byte has two possible values depending on the state of the pedal.
|
||||
|
||||
| Released | Pressed |
|
||||
|:--------:|:-------:|
|
||||
| 0xFF | 0x00 |
|
||||
|
||||
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.
|
||||
|
||||
| N | NE | E | SE | S | SW | W | NW | None/Center |
|
||||
|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:-----------:|
|
||||
| 0x00 | 0x01 | 0x02 | 0x03 | 0x04 | 0x05 | 0x06 | 0x07 | 0x08 |
|
||||
|
||||
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 1 | Button 2 | Button 3 | Button 4 | Button 5 | Button 6 |
|
||||
|:--------:|:--------:|:--------:|:--------:|:--------:|:--------:|
|
||||
| D | C | B | A | SELECT | START |
|
||||
|
||||
### 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:
|
||||
|
||||
| bmRequestType | bRequest | wValue | wIndex | wLength |
|
||||
|:-------------:|:--------:|:------:|:------:|:-------:|
|
||||
| 0x40 | 0x09 | 0x0301 | 0x0000 | 0x0008 |
|
||||
|
||||
The data sent to the controller follows the structure below.
|
||||
|
||||
| Byte 1 | Byte 2 | Byte 3 | Byte 4 | Bytes 5-6 | Bytes 7-8 |
|
||||
|:-----------:|:-----------:|:--------------------------:|:-----------:|:-----------:|:---------:|
|
||||
| Left rumble | Right rumble| Door lamp + Limit approach | Speed gauge | Speedometer | ATC 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**.
|
63
content/controllers/usb/tcpp20014/_index.md
Normal file
63
content/controllers/usb/tcpp20014/_index.md
Normal file
|
@ -0,0 +1,63 @@
|
|||
---
|
||||
title: "Ryojōhen controller (Sony PlayStation 2)"
|
||||
---
|
||||
|
||||
{{% controller-page "tcpp20014" %}}
|
||||
|
||||
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 name** | TAITO_DENSYA_CON_T03 |
|
||||
| **Manufacturer** | TAITO |
|
||||
| **Vendor ID** | 0x0AE4 |
|
||||
| **Product ID** | 0x0007 |
|
||||
| **Serial number** | TCPP20014 |
|
||||
| **USB standard descriptor** | [Link](/controllers/usb/descriptors/tcpp20014_standard-descriptor.txt) |
|
||||
| **HID report descriptor** | Unavailable |
|
||||
|
||||
### Input
|
||||
|
||||
The controller sends reports to the host (PS2) formed by 8 bytes:
|
||||
|
||||
| Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Bytes 6-8 |
|
||||
|:------:|:------:|:------:|:------:|:-------:|:---------:|
|
||||
| Brake | Power | Pedal | D-Pad | Buttons | Unused |
|
||||
|
||||
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 pressure | Keep pressure | Increase pressure | Emergency |
|
||||
|:---------------:|:-------------:|:-----------------:|:---------:|
|
||||
| 0x23-0x64 | 0x65-0x89 | 0x8A-0xD6 | 0xD7 |
|
||||
|
||||
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**).
|
||||
|
||||
| Released | B1 | B2 | B3 | B4 | B5 | B6 | Emergency |
|
||||
|:---------:|:---------:|:---------:|:---------:|:---------:|:---------:|:---------:|:---------:|
|
||||
| 0x23-0x2A | 0x2B-0x3C | 0x3D-0x4E | 0x4F-0x63 | 0x64-0x8A | 0x8B-0xB0 | 0xB1-0xD6 | 0xD7 |
|
||||
|
||||
The values for the power notch byte are listed below.
|
||||
|
||||
| N | P1 | P2 | P3 | P4 | Transition |
|
||||
|:----:|:----:|:----:|:----:|:----:|:----------:|
|
||||
| 0x00 | 0x3C | 0x78 | 0xB4 | 0xF0 | 0xFF |
|
||||
|
||||
The pedal byte has two possible values depending on the state of the pedal.
|
||||
|
||||
| Released | Pressed |
|
||||
|:--------:|:-------:|
|
||||
| 0xFF | 0x00 |
|
||||
|
||||
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.
|
||||
|
||||
| N | NE | E | SE | S | SW | W | NW | None/Center |
|
||||
|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:-----------:|
|
||||
| 0x00 | 0x01 | 0x02 | 0x03 | 0x04 | 0x05 | 0x06 | 0x07 | 0x08 |
|
||||
|
||||
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 1 | Button 2 | Button 3 | Button 4 | Button 5 | Button 6 | Button 7 |
|
||||
|:--------:|:--------:|:--------:|:-----------:|:----------:|:--------:|:--------:|
|
||||
| Horn | Announce | Camera | Right doors | Left doors | SELECT | START |
|
23
content/controllers/usb/zkns001/_index.md
Normal file
23
content/controllers/usb/zkns001/_index.md
Normal file
|
@ -0,0 +1,23 @@
|
|||
---
|
||||
title: "One handle controller (Nintendo Switch)"
|
||||
---
|
||||
|
||||
{{% controller-page "zkns001" %}}
|
||||
|
||||
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 name** | One Handle MasCon for Nintendo Switch |
|
||||
| **Manufacturer** | *None* |
|
||||
| **Vendor ID** | 0x0F0D |
|
||||
| **Product ID** | 0x00C1 |
|
||||
| **Serial number** | *None* |
|
||||
| **USB standard descriptor** | [Link](/controllers/usb/descriptors/zkns001_standard-descriptor.txt) |
|
||||
| **HID report descriptor** | [Link](/controllers/usb/descriptors/zkns001_hid-report-descriptor.txt) |
|
||||
|
||||
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.
|
||||
|
||||
| Emergency | B8 | B7 | B6 | B5 | B4 | B3 | B2 | B1 | N | P1 | P2 | P3 | P4 | P5 |
|
||||
|:---------:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|
|
||||
| 0x00 | 0x05 | 0x13 | 0x20 | 0x2E | 0x3C | 0x49 | 0x57 | 0x65 | 0x80 | 0x9F | 0xB7 | 0xCE | 0xE6 | 0xFF |
|
|
@ -1,10 +1,10 @@
|
|||
---
|
||||
title: "Nintendo Wii"
|
||||
weight: 4
|
||||
alwaysopen: false
|
||||
chapter: true
|
||||
---
|
||||
|
||||
The information in this section applies to the following controllers:
|
||||
# Wii controllers
|
||||
|
||||
- **TCPP-20017:** Shinkansen controller
|
||||
|
||||
This controller is similar externally to the PlayStation 2 version of the Shinkansen controller. However, the screen has been replaced by a sticker and there is no pedal, so the only functioning parts are the handles, the buttons and the door lamp. In addition, instead of USB, it connects to a Wiimote using its extension port, like other accessories made for the console. No details are available regarding internal functioning.
|
||||
This section includes controllers for the Nintendo Wii which use a Wii expansion cable and connect to a [Wiimote's extension port](https://wiibrew.org/wiki/Wiimote/Extension_Controllers).
|
||||
|
|
8
content/controllers/wii/tcpp20017/_index.md
Normal file
8
content/controllers/wii/tcpp20017/_index.md
Normal file
|
@ -0,0 +1,8 @@
|
|||
---
|
||||
title: "Shinkansen controller"
|
||||
weight: 1
|
||||
---
|
||||
|
||||
{{% controller-page "tcpp20017" %}}
|
||||
|
||||
This controller is similar externally to the PlayStation 2 version of the Shinkansen controller. However, the screen has been replaced by a sticker and there is no pedal, so the only functioning parts are the handles, the buttons and the door lamp. In addition, instead of USB, it connects to a Wiimote using its extension port, like other accessories made for the console. No details are available regarding internal functioning.
|
Loading…
Add table
Add a link
Reference in a new issue