diff --git a/content/controllers/usb/cotm02001/_index.md b/content/controllers/usb/cotm02001/_index.md
index 0f24e7b..aae054d 100644
--- a/content/controllers/usb/cotm02001/_index.md
+++ b/content/controllers/usb/cotm02001/_index.md
@@ -4,4 +4,48 @@ title: "Train Mascon (Sony PlayStation 2)"
{{% controller-page "cotm02001" %}}
-No details are available regarding internal functioning.
+This controller has one handle (5 power notches and 8+emergency brake notches), a D-Pad and 7 buttons (Select, Start, A, B, C, Close, ATS). The A button can distinguish between "soft" and "hard" presses. In addition, the controller has four lamps: doors, ATS, 45 and 15.
+
+Internally, it is a HID device with a vendor-specific class. The reported data depends on the notch cartridge inserted.
+
+| | |
+|-----------------------------|-------------------------------------------|
+| **Product name** | *Unavailable* |
+| **Manufacturer** | *Unavailable* |
+| **Vendor ID** | 0x1C06 |
+| **Product ID** | 0x77A7 |
+| **Serial number** | *Unavailable* |
+| **USB standard descriptor** | *Unavailable* |
+| **HID report descriptor** | Not provided |
+
+### 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 |
+|:-------:|:-------:|:---------:|
+| 0x2X | 0x0X | 0x1X |
+
+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 | Close | 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.
+
+
diff --git a/content/controllers/usb/sotp031201/_index.md b/content/controllers/usb/sotp031201/_index.md
index ac1621a..20eec39 100644
--- a/content/controllers/usb/sotp031201/_index.md
+++ b/content/controllers/usb/sotp031201/_index.md
@@ -4,4 +4,68 @@ title: "Multi Train Controller (Sony PlayStation 2)"
{{% controller-page "sotp031201" %}}
-No details are available regarding internal functioning.
+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](/controllers/usb/descriptors/sotp031201-P4B7_standard-descriptor.txt)
[P4/B7 (without B1)](/controllers/usb/descriptors/sotp031201-P4B1B7_standard-descriptor.txt)
[P5/B5](/controllers/usb/descriptors/sotp031201-P5B5_standard-descriptor.txt)
[P5/B7](/controllers/usb/descriptors/sotp031201-P5B7_standard-descriptor.txt)
[P5/B8](/controllers/usb/descriptors/sotp031201-P5B8_standard-descriptor.txt)
[P13/B7](/controllers/usb/descriptors/sotp031201-P13B7_standard-descriptor.txt) |
+| **HID report descriptor** | Not provided |
+
+### P5/B5 cartridge
+
+When this cartridge is inserted, the controller emulates the [Train Mascon](/controllers/usb/cotm02001). 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"](/controllers/usb/tcpp20009). 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.
diff --git a/content/controllers/usb/tcpp20011/_index.md b/content/controllers/usb/tcpp20011/_index.md
index 32e5654..2146fb1 100644
--- a/content/controllers/usb/tcpp20011/_index.md
+++ b/content/controllers/usb/tcpp20011/_index.md
@@ -22,9 +22,9 @@ Internally, it is a HID device with a vendor-specific class.
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 |
+| Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 |
+|:------:|:------:|:------:|:------:|:-------:|:--------:|
+| Brake | Power | Pedal | D-Pad | Buttons | *Unused* |
The values for the brake notch byte are the following.
@@ -71,8 +71,8 @@ The data sent to the controller follows the structure below.
| 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.
+* **Door lamp:** **0x0X** is **Off**, **0x8X** is **On**.
+* **Limit approach:** values between **0xX0** and **0xXA** 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**).