# Multi Train Controller (Sony PlayStation 2)

## Overview

| Name | Multi Train Controller (Sony PlayStation 2)
Release date | December 18, 2003
Serial code | SOTP-031201
Notes | Released with 4 cassettes: P4-B7, P4-B7 (without B1), P5-B5 and P5-B8. Additional cassettes sold separately: P5-B7 and P13-B7.

## Supported software (WIP)

Software | Support | Notes
--- | --- | ---
BVE Trainsim (PC) | Native | Supported via input plugin.
Densha de GO! 3 Tsūkin-hen (Sony PlayStation 2) | Native | P5/B8 cartridge.
Densha de GO! Final (Sony PlayStation 2) | Native | P5/B8 cartridge.
Densha de GO! Professional 2 (Sony PlayStation 2) | Native | P5/B8 cartridge.
Densha de GO! Ryojōhen (Sony PlayStation 2) | Native | P5/B8 cartridge.
Densha de GO! Shinkansen San'yō Shinkansen-hen (Sony PlayStation 2) | Native | P5/B8 cartridge.
OpenBVE (PC) | Partial | Only P5/B8 cartridge. Supported via input plugin.
Railfan: Chicago Transit Authority Brown Line (Sony PlayStation 3) | Native | P5/B8 cartridge.
Train Simulator + Densha de GO!: Tokyu Line (Sony PlayStation 2) | Native | P4/B7, P5-B5 cartridges.
Train Simulator Real: THE Keihin Electric Express Railway (Sony PlayStation 2) | Native | P5/B5 cartridge.
Train Simulator Real: THE Yamanote Line (Sony PlayStation 2) | Native | P5/B8 cartridge.
Train Simulator: Keisei, Toei Asakusa, Keikyu Lines (Sony PlayStation 2) | Native | P5/B5, P13-B7 cartridges.
Train Simulator: Kyūshū Shinkansen (Sony PlayStation 2) | Native | P5/B7, P13-B7 cartridges.
Train Simulator: Midosuji Line (Sony PlayStation 2) | Native | P4/B2-B7, P5-B5 cartridges.

## Technical details

This controller has one handle with variable notches, a D-Pad and 7 buttons (Select, Start, A, B, C, D, ATS). The A button can distinguish between “soft” and “hard” presses. In addition, the controller has four lamps.

Internally, it is a HID device with a vendor-specific class. The reported data depends on the notch cartridge inserted.

Product name | None
Manufacturer | None
Vendor ID | 0x0AE4 0x1C06 (P5/B5)
Product ID | 0x0101 0x77A7 (P5/B5) 0x0004 (P5/B8)
Serial number | None
USB standard descriptor | P4/B7 P4/B7 (without B1) P5/B5 P5/B7 P5/B8 P13/B7
HID report descriptor | Not provided

### P5/B5 cartridge

When this cartridge is inserted, the controller emulates the Train Mascon. The buttons are mapped 1:1 except the D button, which is mapped to the Close (閉) button.

The lamps are used as follows, from top to bottom: doors, ATS, 45 and 15.

### P5/B8 cartridge

When this cartridge is inserted, the controller emulates the Two handle controller “Type 2”. The buttons are mapped 1:1 and ATS is mapped to START. The reverser is mapped to the D-pad UP and DOWN buttons.

Only the top lamp is used, for the doors.

### P4/B7, P4/B2-B7, P5/B7, P13/B7 cartridges

When any of these cartridges is inserted, the controller functions similarly to the P5/B5 mode and data changes depending on the amount of notches. The specific cartridge in use can be detected by looking at the bcdDevice value from the standard USB descriptor:

P4/B7 | P4/B2-B7 | P5/B7 | P13/B7
--- | --- | --- | ---
0x0300 | 0x0400 | 0x0800 | 0x0A00

#### Input

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

Byte 1 | Byte 2 | Byte 3 | Byte 4
--- | --- | --- | ---
0x01 | Reverser+handle | Buttons 1 | Buttons 2

The reverser+handle byte combines two values representing the state of the reverser and the power/brake handle. The handle notch is represented sequentially starting from 0x1 (Emergency), brake notches from highest to lowest, N and power notches from lowest to highest.

Forward | Neutral | Backwards
--- | --- | ---
0x8X | 0x0X | 0x4X

Note: the P5/B7 and P13/B7 cartridges do not make use of the reverser and use both nibbles for the handle notch.

The first 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
--- | --- | --- | --- | --- | ---
ATS | D | A (soft) | A (hard) | B | C

The second button byte also uses six bits to represent the state of the physical buttons.

Button 1 | Button 2 | Button 3 | Button 4 | Button 5 | Button 6
--- | --- | --- | --- | --- | ---
START | SELECT | UP | DOWN | LEFT | RIGHT

#### Output

No details are known regarding internal functioning.