ddgo-controller-docs/models/usb/index.html
2022-04-04 22:52:35 +00:00

8 lines
No EOL
36 KiB
HTML

<!doctype html><html lang=en><head><meta charset=utf-8><meta name=viewport content="height=device-height,width=device-width,initial-scale=1,minimum-scale=1"><meta name=generator content="Hugo 0.96.0"><meta name=generator content="Relearn 3.4.1+tip"><meta name=description content><title>USB :: Densha de GO! controller documentation</title><link rel=alternate type=application/rss+xml href=/ddgo-controller-docs/models/usb/index.xml title="Densha de GO! controller documentation"><link href=/ddgo-controller-docs/css/nucleus.css?1649112754 rel=stylesheet><link href=/ddgo-controller-docs/css/fontawesome-all.min.css?1649112754 rel=stylesheet><link href=/ddgo-controller-docs/css/featherlight.min.css?1649112754 rel=stylesheet><link href=/ddgo-controller-docs/css/perfect-scrollbar.min.css?1649112754 rel=stylesheet><link href=/ddgo-controller-docs/css/auto-complete.css?1649112754 rel=stylesheet><link href=/ddgo-controller-docs/css/theme.css?1649112754 rel=stylesheet><link href=/ddgo-controller-docs/css/theme-relearn-light.css?1649112754 rel=stylesheet id=variant-style><link href=/ddgo-controller-docs/css/variant.css?1649112754 rel=stylesheet><link href=/ddgo-controller-docs/css/print.css?1649112754 rel=stylesheet media=print><script src=/ddgo-controller-docs/js/variant.js?1649112754></script>
<script>var index_url="/ddgo-controller-docs/index.json",baseUriFull,root_url="/",baseUri=root_url.replace(/\/$/,'');window.T_Copy_to_clipboard="Copy to clipboard",window.T_Copied_to_clipboard="Copied to clipboard!",window.T_Copy_link_to_clipboard="Copy link to clipboard",window.T_Link_copied_to_clipboard="Copied link to clipboard!",baseUriFull="https://marcriera.github.io/ddgo-controller-docs/",variants.init(["relearn-light","relearn-dark"])</script><script src=/ddgo-controller-docs/js/jquery.min.js?1649112754></script></head><body class=mobile-support data-url=/ddgo-controller-docs/models/usb/><div id=body class=default-animation><div id=sidebar-overlay></div><div id=toc-overlay></div><nav id=topbar class=highlightable><div><div class=navigation><a class="nav nav-next" href=/ddgo-controller-docs/models/wii/ title="Nintendo Wii"><i class="fas fa-chevron-right fa-fw"></i></a></div><div class=navigation><a class="nav nav-prev" href=/ddgo-controller-docs/models/serial/ title="Serial port"><i class="fas fa-chevron-left fa-fw"></i></a></div><div id=breadcrumbs><span id=sidebar-toggle-span><a href=# id=sidebar-toggle title=Menu><i class="fas fa-bars fa-fw"></i></a></span>
<span id=toc-menu title="Table of Contents"><i class="fas fa-list-alt fa-fw"></i></span><ol class=links itemscope itemtype=http://schema.org/BreadcrumbList><meta itemprop=itemListOrder content="Descending"><li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="3"><a itemprop=item href=/ddgo-controller-docs/><span itemprop=name>Densha de GO! controller documentation</span></a> ></li><li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="2"><a itemprop=item href=/ddgo-controller-docs/models/><span itemprop=name>Models</span></a> ></li><li itemscope itemtype=https://schema.org/ListItem itemprop=itemListElement><meta itemprop=position content="1"><a itemprop=item href=/ddgo-controller-docs/models/usb/ aria-disabled=true><span itemprop=name>USB</span></a></li></ol></div><div class="default-animation progress"><div class=wrapper><nav id=TableOfContents><ul><li><ul><li><a href=#dgc-255>DGC-255</a></li><li><a href=#dgoc-44u>DGOC-44U</a></li><li><a href=#drc-184dyc-288>DRC-184/DYC-288</a></li><li><a href=#tcpp-20009tcpp-20012>TCPP-20009/TCPP-20012</a></li><li><a href=#tcpp-20011>TCPP-20011</a></li><li><a href=#tcpp-20014>TCPP-20014</a></li><li><a href=#mtc>MTC</a></li><li><a href=#zkns-001>ZKNS-001</a></li></ul></li></ul></nav></div></div></div></nav><main id=body-inner class=highlightable><div class=flex-block-wrapper><div id=head-tags></div><article><h1>USB</h1><p>The information in this section applies to the following controllers:</p><ul><li><strong>DGC-255:</strong> one-handle controller (Microsoft Windows)</li><li><strong>DGOC-44U:</strong> two-handle controller (Microsoft Windows)</li><li><strong>DRC-184/DYC-288:</strong> Ryojōhen controller (Microsoft Windows)</li><li><strong>TCPP-20009:</strong> two-handle controller &ldquo;Type 2&rdquo; (Sony PlayStation 2)</li><li><strong>TCPP-20011:</strong> Shinkansen controller (Sony PlayStation 2)</li><li><strong>TCPP-20012:</strong> two-handle controller &ldquo;Type 2&rdquo;, purple skeleton (Sony PlayStation 2)</li><li><strong>TCPP-20014:</strong> Ryojōhen controller (Sony PlayStation 2)</li><li><strong>MTC:</strong> Multi Train Controller (Sony PlayStation 2)</li><li><strong>ZKNS-001:</strong> one-handle controller (Nintendo Switch)</li></ul><h3 id=dgc-255>DGC-255</h3><p>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).</p><p>Internally, it is a HID-compliant joystick with two axes, 6 buttons and a PoV hat switch (the handle positions are reported via axes).</p><p>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.</p><h3 id=dgoc-44u>DGOC-44U</h3><p>This controller has two handles (5 power notches and 8+emergency brake notches) and 6 buttons (Select, Start, A, B, C, D).</p><p>Internally, it is a HID-compliant joystick with two axes and 6 buttons (the handle positions are reported via axes).</p><table><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Product name</strong></td><td>電車でGO! コントローラ USB版</td></tr><tr><td><strong>Manufacturer</strong></td><td>TAITO</td></tr><tr><td><strong>Vendor ID</strong></td><td>0x0AE4</td></tr><tr><td><strong>Product ID</strong></td><td>0x0003</td></tr><tr><td><strong>Serial number</strong></td><td>TCPP20009</td></tr><tr><td><strong>USB standard descriptor</strong></td><td>Unavailable</td></tr><tr><td><strong>HID report descriptor</strong></td><td><a href=descriptors/dgoc44u_hid-report-descriptor.txt>Link</a></td></tr></tbody></table><p>The controller sends reports to the host (PC) formed by 6 bytes:</p><table><thead><tr><th style=text-align:center>Byte 1</th><th style=text-align:center>Byte 2</th><th style=text-align:center>Byte 3</th><th style=text-align:center>Byte 4</th><th style=text-align:center>Byte 5</th><th style=text-align:center>Byte 6</th></tr></thead><tbody><tr><td style=text-align:center>Brake</td><td style=text-align:center>Power</td><td style=text-align:center>Null</td><td style=text-align:center>Buttons</td><td style=text-align:center>Null</td><td style=text-align:center>Null</td></tr></tbody></table><p>The values for the brake notch byte are the following. There are 5 unmarked positions between <strong>B8</strong> and <strong>Emergency</strong>, but unlike classic controllers, they are all report the value for <strong>Emergency</strong>.</p><table><thead><tr><th style=text-align:center>Released</th><th style=text-align:center>B1</th><th style=text-align:center>B2</th><th style=text-align:center>B3</th><th style=text-align:center>B4</th><th style=text-align:center>B5</th><th style=text-align:center>B6</th><th style=text-align:center>B7</th><th style=text-align:center>B8</th><th style=text-align:center>Emergency</th><th style=text-align:center>Transition</th></tr></thead><tbody><tr><td style=text-align:center>0x79</td><td style=text-align:center>0x8A</td><td style=text-align:center>0x94</td><td style=text-align:center>0x9A</td><td style=text-align:center>0xA2</td><td style=text-align:center>0xA8</td><td style=text-align:center>0xAF</td><td style=text-align:center>0xB2</td><td style=text-align:center>0xB5</td><td style=text-align:center>0xB9</td><td style=text-align:center>0xFF</td></tr></tbody></table><p>The values for the power notch byte are listed below.</p><table><thead><tr><th style=text-align:center>N</th><th style=text-align:center>P1</th><th style=text-align:center>P2</th><th style=text-align:center>P3</th><th style=text-align:center>P4</th><th style=text-align:center>P5</th><th style=text-align:center>Transition</th></tr></thead><tbody><tr><td style=text-align:center>0x81</td><td style=text-align:center>0x6D</td><td style=text-align:center>0x54</td><td style=text-align:center>0x3F</td><td style=text-align:center>0x21</td><td style=text-align:center>0x00</td><td style=text-align:center>0xFF</td></tr></tbody></table><p>The button byte uses six bits to represent the state of the physical buttons. <strong>0</strong> means that the button is released and <strong>1</strong> that it is pressed.</p><table><thead><tr><th style=text-align:center>Button 1</th><th style=text-align:center>Button 2</th><th style=text-align:center>Button 3</th><th style=text-align:center>Button 4</th><th style=text-align:center>Button 5</th><th style=text-align:center>Button 6</th></tr></thead><tbody><tr><td style=text-align:center>B</td><td style=text-align:center>A</td><td style=text-align:center>C</td><td style=text-align:center>D</td><td style=text-align:center>SELECT</td><td style=text-align:center>START</td></tr></tbody></table><h3 id=drc-184dyc-288>DRC-184/DYC-288</h3><p>No details are available regarding internal functioning.</p><h3 id=tcpp-20009tcpp-20012>TCPP-20009/TCPP-20012</h3><p>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.</p><p>Internally, it is a HID device with a vendor-specific class.</p><table><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Product name</strong></td><td>TAITO_DENSYA_CON_T01</td></tr><tr><td><strong>Manufacturer</strong></td><td>TAITO</td></tr><tr><td><strong>Vendor ID</strong></td><td>0x0AE4</td></tr><tr><td><strong>Product ID</strong></td><td>0x0004</td></tr><tr><td><strong>Serial number</strong></td><td>TCPP20010</td></tr><tr><td><strong>USB standard descriptor</strong></td><td><a href=descriptors/tcpp20009_standard-descriptor.txt>Link</a></td></tr><tr><td><strong>HID report descriptor</strong></td><td>Unavailable</td></tr></tbody></table><h4 id=input>Input</h4><p>The controller sends reports to the host (PS2) formed by 6 bytes:</p><table><thead><tr><th style=text-align:center>Byte 1</th><th style=text-align:center>Byte 2</th><th style=text-align:center>Byte 3</th><th style=text-align:center>Byte 4</th><th style=text-align:center>Byte 5</th><th style=text-align:center>Byte 6</th></tr></thead><tbody><tr><td style=text-align:center>0x01</td><td style=text-align:center>Brake</td><td style=text-align:center>Power</td><td style=text-align:center>Pedal</td><td style=text-align:center>D-Pad</td><td style=text-align:center>Buttons</td></tr></tbody></table><p>The values for the brake notch byte are the following.</p><table><thead><tr><th style=text-align:center>Released</th><th style=text-align:center>B1</th><th style=text-align:center>B2</th><th style=text-align:center>B3</th><th style=text-align:center>B4</th><th style=text-align:center>B5</th><th style=text-align:center>B6</th><th style=text-align:center>B7</th><th style=text-align:center>B8</th><th style=text-align:center>Emergency</th><th style=text-align:center>Transition</th></tr></thead><tbody><tr><td style=text-align:center>0x79</td><td style=text-align:center>0x8A</td><td style=text-align:center>0x94</td><td style=text-align:center>0x9A</td><td style=text-align:center>0xA2</td><td style=text-align:center>0xA8</td><td style=text-align:center>0xAF</td><td style=text-align:center>0xB2</td><td style=text-align:center>0xB5</td><td style=text-align:center>0xB9</td><td style=text-align:center>0xFF</td></tr></tbody></table><p>The values for the power notch byte are listed below.</p><table><thead><tr><th style=text-align:center>N</th><th style=text-align:center>P1</th><th style=text-align:center>P2</th><th style=text-align:center>P3</th><th style=text-align:center>P4</th><th style=text-align:center>P5</th><th style=text-align:center>Transition</th></tr></thead><tbody><tr><td style=text-align:center>0x81</td><td style=text-align:center>0x6D</td><td style=text-align:center>0x54</td><td style=text-align:center>0x3F</td><td style=text-align:center>0x21</td><td style=text-align:center>0x00</td><td style=text-align:center>0xFF</td></tr></tbody></table><p>The pedal byte has two possible values depending on the state of the pedal.</p><table><thead><tr><th style=text-align:center>Released</th><th style=text-align:center>Pressed</th></tr></thead><tbody><tr><td style=text-align:center>0xFF</td><td style=text-align:center>0x00</td></tr></tbody></table><p>The D-pad byte represents the state of the arrow buttons. If two opposite directions are pressed simultaneously, the result is <strong>Center</strong> unless a third button is pressed.</p><table><thead><tr><th style=text-align:center>N</th><th style=text-align:center>NE</th><th style=text-align:center>E</th><th style=text-align:center>SE</th><th style=text-align:center>S</th><th style=text-align:center>SW</th><th style=text-align:center>W</th><th style=text-align:center>NW</th><th style=text-align:center>None/Center</th></tr></thead><tbody><tr><td style=text-align:center>0x00</td><td style=text-align:center>0x01</td><td style=text-align:center>0x02</td><td style=text-align:center>0x03</td><td style=text-align:center>0x04</td><td style=text-align:center>0x05</td><td style=text-align:center>0x06</td><td style=text-align:center>0x07</td><td style=text-align:center>0x08</td></tr></tbody></table><p>The button byte uses six bits to represent the state of the physical buttons. <strong>0</strong> means that the button is released and <strong>1</strong> that it is pressed. A bitmask can be used to retrieve the buttons.</p><table><thead><tr><th style=text-align:center>Button 1</th><th style=text-align:center>Button 2</th><th style=text-align:center>Button 3</th><th style=text-align:center>Button 4</th><th style=text-align:center>Button 5</th><th style=text-align:center>Button 6</th></tr></thead><tbody><tr><td style=text-align:center>B</td><td style=text-align:center>A</td><td style=text-align:center>C</td><td style=text-align:center>D</td><td style=text-align:center>SELECT</td><td style=text-align:center>START</td></tr></tbody></table><h4 id=output>Output</h4><p>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:</p><table><thead><tr><th style=text-align:center>bmRequestType</th><th style=text-align:center>bRequest</th><th style=text-align:center>wValue</th><th style=text-align:center>wIndex</th><th style=text-align:center>wLength</th></tr></thead><tbody><tr><td style=text-align:center>0x40</td><td style=text-align:center>0x09</td><td style=text-align:center>0x0301</td><td style=text-align:center>0x0000</td><td style=text-align:center>0x0002</td></tr></tbody></table><p>The data sent to the controller follows the structure below.</p><table><thead><tr><th style=text-align:center>Byte 1</th><th style=text-align:center>Byte 2</th></tr></thead><tbody><tr><td style=text-align:center>Status</td><td style=text-align:center>Function</td></tr></tbody></table><ul><li><strong>Status:</strong> defines whether the function specified in byte 2 is <strong>Off</strong> (<strong>0x00</strong>) or <strong>On</strong> (<strong>0x01</strong>).</li><li><strong>Function:</strong> <strong>0x01</strong> is <strong>Left rumble</strong>, <strong>0x02</strong> is <strong>Right rumble</strong>, <strong>0x03</strong> is <strong>Door lamp</strong>.</li></ul><h3 id=tcpp-20011>TCPP-20011</h3><p>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.</p><p>Internally, it is a HID device with a vendor-specific class.</p><table><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Product name</strong></td><td>TAITO_DENSYA_CON_T02</td></tr><tr><td><strong>Manufacturer</strong></td><td>TAITO</td></tr><tr><td><strong>Vendor ID</strong></td><td>0x0AE4</td></tr><tr><td><strong>Product ID</strong></td><td>0x0005</td></tr><tr><td><strong>Serial number</strong></td><td>TCPP20011</td></tr><tr><td><strong>USB standard descriptor</strong></td><td><a href=descriptors/tcpp20011_standard-descriptor.txt>Link</a></td></tr><tr><td><strong>HID report descriptor</strong></td><td>Unavailable</td></tr></tbody></table><h4 id=input-1>Input</h4><p>The controller sends reports to the host (PS2) formed by 6 bytes:</p><table><thead><tr><th style=text-align:center>Byte 1</th><th style=text-align:center>Byte 2</th><th style=text-align:center>Byte 3</th><th style=text-align:center>Byte 4</th><th style=text-align:center>Byte 5</th><th style=text-align:center>Byte 6</th></tr></thead><tbody><tr><td style=text-align:center>Brake</td><td style=text-align:center>Power</td><td style=text-align:center>Pedal</td><td style=text-align:center>D-Pad</td><td style=text-align:center>Buttons</td><td style=text-align:center>Null</td></tr></tbody></table><p>The values for the brake notch byte are the following.</p><table><thead><tr><th style=text-align:center>Released</th><th style=text-align:center>B1</th><th style=text-align:center>B2</th><th style=text-align:center>B3</th><th style=text-align:center>B4</th><th style=text-align:center>B5</th><th style=text-align:center>B6</th><th style=text-align:center>B7</th><th style=text-align:center>Emergency</th><th style=text-align:center>Transition</th></tr></thead><tbody><tr><td style=text-align:center>0x1C</td><td style=text-align:center>0x38</td><td style=text-align:center>0x54</td><td style=text-align:center>0x70</td><td style=text-align:center>0x8B</td><td style=text-align:center>0xA7</td><td style=text-align:center>0xC3</td><td style=text-align:center>0xDF</td><td style=text-align:center>0xFB</td><td style=text-align:center>0xFF</td></tr></tbody></table><p>The values for the power notch byte are listed below.</p><table><thead><tr><th style=text-align:center>N</th><th style=text-align:center>P1</th><th style=text-align:center>P2</th><th style=text-align:center>P3</th><th style=text-align:center>P4</th><th style=text-align:center>P5</th><th style=text-align:center>P6</th><th style=text-align:center>P7</th><th style=text-align:center>P8</th><th style=text-align:center>P9</th><th style=text-align:center>P10</th><th style=text-align:center>P11</th><th style=text-align:center>P12</th><th style=text-align:center>P13</th><th style=text-align:center>Transition</th></tr></thead><tbody><tr><td style=text-align:center>0x12</td><td style=text-align:center>0x24</td><td style=text-align:center>0x36</td><td style=text-align:center>0x48</td><td style=text-align:center>0x5A</td><td style=text-align:center>0x6C</td><td style=text-align:center>0x7E</td><td style=text-align:center>0x90</td><td style=text-align:center>0xA2</td><td style=text-align:center>0xB4</td><td style=text-align:center>0xC6</td><td style=text-align:center>0xD7</td><td style=text-align:center>0xE9</td><td style=text-align:center>0xFB</td><td style=text-align:center>0xFF</td></tr></tbody></table><p>The pedal byte has two possible values depending on the state of the pedal.</p><table><thead><tr><th style=text-align:center>Released</th><th style=text-align:center>Pressed</th></tr></thead><tbody><tr><td style=text-align:center>0xFF</td><td style=text-align:center>0x00</td></tr></tbody></table><p>The D-pad byte represents the state of the arrow buttons. If two opposite directions are pressed simultaneously, the result is <strong>Center</strong> unless a third button is pressed.</p><table><thead><tr><th style=text-align:center>N</th><th style=text-align:center>NE</th><th style=text-align:center>E</th><th style=text-align:center>SE</th><th style=text-align:center>S</th><th style=text-align:center>SW</th><th style=text-align:center>W</th><th style=text-align:center>NW</th><th style=text-align:center>None/Center</th></tr></thead><tbody><tr><td style=text-align:center>0x00</td><td style=text-align:center>0x01</td><td style=text-align:center>0x02</td><td style=text-align:center>0x03</td><td style=text-align:center>0x04</td><td style=text-align:center>0x05</td><td style=text-align:center>0x06</td><td style=text-align:center>0x07</td><td style=text-align:center>0x08</td></tr></tbody></table><p>The button byte uses six bits to represent the state of the physical buttons. <strong>0</strong> means that the button is released and <strong>1</strong> that it is pressed. A bitmask can be used to retrieve the buttons.</p><table><thead><tr><th style=text-align:center>Button 1</th><th style=text-align:center>Button 2</th><th style=text-align:center>Button 3</th><th style=text-align:center>Button 4</th><th style=text-align:center>Button 5</th><th style=text-align:center>Button 6</th></tr></thead><tbody><tr><td style=text-align:center>D</td><td style=text-align:center>C</td><td style=text-align:center>B</td><td style=text-align:center>A</td><td style=text-align:center>SELECT</td><td style=text-align:center>START</td></tr></tbody></table><h4 id=output-1>Output</h4><p>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:</p><table><thead><tr><th style=text-align:center>bmRequestType</th><th style=text-align:center>bRequest</th><th style=text-align:center>wValue</th><th style=text-align:center>wIndex</th><th style=text-align:center>wLength</th></tr></thead><tbody><tr><td style=text-align:center>0x40</td><td style=text-align:center>0x09</td><td style=text-align:center>0x0301</td><td style=text-align:center>0x0000</td><td style=text-align:center>0x0008</td></tr></tbody></table><p>The data sent to the controller follows the structure below.</p><table><thead><tr><th style=text-align:center>Byte 1</th><th style=text-align:center>Byte 2</th><th style=text-align:center>Byte 3</th><th style=text-align:center>Byte 4</th><th style=text-align:center>Bytes 5-6</th><th style=text-align:center>Bytes 7-8</th></tr></thead><tbody><tr><td style=text-align:center>Left rumble</td><td style=text-align:center>Right rumble</td><td style=text-align:center>Door lamp + Limit approach</td><td style=text-align:center>Speed gauge</td><td style=text-align:center>Speedometer</td><td style=text-align:center>ATC limit</td></tr></tbody></table><ul><li><strong>Left/right rumble:</strong> <strong>0x00</strong> is <strong>Off</strong>, <strong>0x01</strong> is <strong>On</strong>.</li><li><strong>Door lamp:</strong> <strong>0x0?</strong> is <strong>Off</strong>, <strong>0x8?</strong> is <strong>On</strong>.</li><li><strong>Limit approach:</strong> values between <strong>0x?0</strong> and <strong>0x?A</strong> representing the number of LEDs lit above the speedometer. In-game, these mark the 10 km/h right below the speed limit.</li><li><strong>Speed gauge:</strong> values between <strong>0x00</strong> and <strong>0x16</strong> 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.</li><li><strong>Speedometer:</strong> values between <strong>0x0000</strong> and <strong>0x0999</strong> representing the current speed. Values are encoded with <strong>BCD 8421</strong> (i.e. <strong>120 km/h</strong> should be represented as <strong>0x0120</strong>, NOT <strong>0x0078</strong>).</li><li><strong>ATC limit:</strong> values between <strong>0x0000</strong> and <strong>0x0999</strong> representing the ATC speed limit. Values are encoded with <strong>BCD 8421</strong> (i.e. <strong>120 km/h</strong> should be represented as <strong>0x0120</strong>, NOT <strong>0x0078</strong>).</li></ul><p>Multi-byte values should be stored in <strong>Little Endian</strong>.</p><h3 id=tcpp-20014>TCPP-20014</h3><p>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.</p><p>Internally, it is a HID device with a vendor-specific class.</p><table><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Product name</strong></td><td>TAITO_DENSYA_CON_T03</td></tr><tr><td><strong>Manufacturer</strong></td><td>TAITO</td></tr><tr><td><strong>Vendor ID</strong></td><td>0x0AE4</td></tr><tr><td><strong>Product ID</strong></td><td>0x0007</td></tr><tr><td><strong>Serial number</strong></td><td>TCPP20014</td></tr><tr><td><strong>USB standard descriptor</strong></td><td><a href=descriptors/tcpp20014_standard-descriptor.txt>Link</a></td></tr><tr><td><strong>HID report descriptor</strong></td><td>Unavailable</td></tr></tbody></table><h4 id=input-2>Input</h4><p>The controller sends reports to the host (PS2) formed by 8 bytes:</p><table><thead><tr><th style=text-align:center>Byte 1</th><th style=text-align:center>Byte 2</th><th style=text-align:center>Byte 3</th><th style=text-align:center>Byte 4</th><th style=text-align:center>Byte 5</th><th style=text-align:center>Bytes 6-8</th></tr></thead><tbody><tr><td style=text-align:center>Brake</td><td style=text-align:center>Power</td><td style=text-align:center>Pedal</td><td style=text-align:center>D-Pad</td><td style=text-align:center>Buttons</td><td style=text-align:center>Unused</td></tr></tbody></table><p>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.</p><table><thead><tr><th style=text-align:center>Reduce pressure</th><th style=text-align:center>Keep pressure</th><th style=text-align:center>Increase pressure</th><th style=text-align:center>Emergency</th></tr></thead><tbody><tr><td style=text-align:center>0x23-0x64</td><td style=text-align:center>0x65-0x89</td><td style=text-align:center>0x8A-0xD6</td><td style=text-align:center>0xD7</td></tr></tbody></table><p>When using the controller with <strong>Densha de GO! Professional 2</strong> or <strong>Densha de GO! Final</strong>, the brake handle is interpreted as having 6 brake notches + emergency. The aproximate byte range for each notch is listed below (taken from <strong>Densha de GO! Professional 2</strong>).</p><table><thead><tr><th style=text-align:center>Released</th><th style=text-align:center>B1</th><th style=text-align:center>B2</th><th style=text-align:center>B3</th><th style=text-align:center>B4</th><th style=text-align:center>B5</th><th style=text-align:center>B6</th><th style=text-align:center>Emergency</th></tr></thead><tbody><tr><td style=text-align:center>0x23-0x2A</td><td style=text-align:center>0x2B-0x3C</td><td style=text-align:center>0x3D-0x4E</td><td style=text-align:center>0x4F-0x63</td><td style=text-align:center>0x64-0x8A</td><td style=text-align:center>0x8B-0xB0</td><td style=text-align:center>0xB1-0xD6</td><td style=text-align:center>0xD7</td></tr></tbody></table><p>The values for the power notch byte are listed below.</p><table><thead><tr><th style=text-align:center>N</th><th style=text-align:center>P1</th><th style=text-align:center>P2</th><th style=text-align:center>P3</th><th style=text-align:center>P4</th><th style=text-align:center>Transition</th></tr></thead><tbody><tr><td style=text-align:center>0x00</td><td style=text-align:center>0x3C</td><td style=text-align:center>0x78</td><td style=text-align:center>0xB4</td><td style=text-align:center>0xF0</td><td style=text-align:center>0xFF</td></tr></tbody></table><p>The pedal byte has two possible values depending on the state of the pedal.</p><table><thead><tr><th style=text-align:center>Released</th><th style=text-align:center>Pressed</th></tr></thead><tbody><tr><td style=text-align:center>0xFF</td><td style=text-align:center>0x00</td></tr></tbody></table><p>The D-pad byte represents the state of the arrow buttons. If two opposite directions are pressed simultaneously, the result is <strong>Center</strong> unless a third button is pressed.</p><table><thead><tr><th style=text-align:center>N</th><th style=text-align:center>NE</th><th style=text-align:center>E</th><th style=text-align:center>SE</th><th style=text-align:center>S</th><th style=text-align:center>SW</th><th style=text-align:center>W</th><th style=text-align:center>NW</th><th style=text-align:center>None/Center</th></tr></thead><tbody><tr><td style=text-align:center>0x00</td><td style=text-align:center>0x01</td><td style=text-align:center>0x02</td><td style=text-align:center>0x03</td><td style=text-align:center>0x04</td><td style=text-align:center>0x05</td><td style=text-align:center>0x06</td><td style=text-align:center>0x07</td><td style=text-align:center>0x08</td></tr></tbody></table><p>The button byte uses seven bits to represent the state of the physical buttons. <strong>0</strong> means that the button is released and <strong>1</strong> that it is pressed. A bitmask can be used to retrieve the buttons.</p><table><thead><tr><th style=text-align:center>Button 1</th><th style=text-align:center>Button 2</th><th style=text-align:center>Button 3</th><th style=text-align:center>Button 4</th><th style=text-align:center>Button 5</th><th style=text-align:center>Button 6</th><th style=text-align:center>Button 7</th></tr></thead><tbody><tr><td style=text-align:center>Horn</td><td style=text-align:center>Announce</td><td style=text-align:center>Camera</td><td style=text-align:center>Right doors</td><td style=text-align:center>Left doors</td><td style=text-align:center>SELECT</td><td style=text-align:center>START</td></tr></tbody></table><h3 id=mtc>MTC</h3><p>No details are available regarding internal functioning.</p><h3 id=zkns-001>ZKNS-001</h3><p>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).</p><p>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.</p><table><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Product name</strong></td><td>One Handle MasCon for Nintendo Switch</td></tr><tr><td><strong>Manufacturer</strong></td><td><em>None</em></td></tr><tr><td><strong>Vendor ID</strong></td><td>0x0F0D</td></tr><tr><td><strong>Product ID</strong></td><td>0x00C1</td></tr><tr><td><strong>Serial number</strong></td><td><em>None</em></td></tr><tr><td><strong>USB standard descriptor</strong></td><td><a href=descriptors/zkns001_standard-descriptor.txt>Link</a></td></tr><tr><td><strong>HID report descriptor</strong></td><td><a href=descriptors/zkns001_hid-report-descriptor.txt>Link</a></td></tr></tbody></table><p>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 <strong>Emergency</strong>, <strong>ZL</strong> is pressed.</p><table><thead><tr><th style=text-align:center>Emergency</th><th style=text-align:center>B8</th><th style=text-align:center>B7</th><th style=text-align:center>B6</th><th style=text-align:center>B5</th><th style=text-align:center>B4</th><th style=text-align:center>B3</th><th style=text-align:center>B2</th><th style=text-align:center>B1</th><th style=text-align:center>N</th><th style=text-align:center>P1</th><th style=text-align:center>P2</th><th style=text-align:center>P3</th><th style=text-align:center>P4</th><th style=text-align:center>P5</th></tr></thead><tbody><tr><td style=text-align:center>0x00</td><td style=text-align:center>0x05</td><td style=text-align:center>0x13</td><td style=text-align:center>0x20</td><td style=text-align:center>0x2E</td><td style=text-align:center>0x3C</td><td style=text-align:center>0x49</td><td style=text-align:center>0x57</td><td style=text-align:center>0x65</td><td style=text-align:center>0x80</td><td style=text-align:center>0x9F</td><td style=text-align:center>0xB7</td><td style=text-align:center>0xCE</td><td style=text-align:center>0xE6</td><td style=text-align:center>0xFF</td></tr></tbody></table><footer class=footline></footer></article></div></main></div><aside id=sidebar class=default-animation><div id=header-wrapper class=default-animation><div id=header class=default-animation><style>a#logo{color:#282828;color:var(--MENU-SECTIONS-BG-color);font-family:work sans,helvetica,tahoma,geneva,arial,sans-serif;font-size:20px;font-weight:400;max-width:60%;text-transform:uppercase;width:60%;margin-left:-10px}a#logo:hover{color:#282828;color:var(--MENU-SECTIONS-BG-color)}@media only all and (max-width:59.938em){a#logo{font-size:15px;margin-top:-3px}}@media all and (-ms-high-contrast:none){a#logo{margin-top:-58px}}</style><a id=logo href=/ddgo-controller-docs/><img src=/ddgo-controller-docs/images/logo_big.png><br>controller documentation</a></div></div><div id=content-wrapper class=highlightable><ul class="topics collapsible-menu"><li data-nav-id=/ddgo-controller-docs/models/ title=Models class="dd-item parent"><input type=checkbox id=section-98b2523c1b6ac5b855a407580b6830bd class=toggle checked><label for=section-98b2523c1b6ac5b855a407580b6830bd></label><a href=/ddgo-controller-docs/models/>Models</a><ul><li data-nav-id=/ddgo-controller-docs/models/classic/ title="Classic consoles" class=dd-item><a href=/ddgo-controller-docs/models/classic/>Classic consoles</a></li><li data-nav-id=/ddgo-controller-docs/models/serial/ title="Serial port" class=dd-item><a href=/ddgo-controller-docs/models/serial/>Serial port</a></li><li data-nav-id=/ddgo-controller-docs/models/usb/ title=USB class="dd-item active"><a href=/ddgo-controller-docs/models/usb/>USB</a></li><li data-nav-id=/ddgo-controller-docs/models/wii/ title="Nintendo Wii" class=dd-item><a href=/ddgo-controller-docs/models/wii/>Nintendo Wii</a></li><li data-nav-id=/ddgo-controller-docs/models/standalone/ title=Standalone class=dd-item><a href=/ddgo-controller-docs/models/standalone/>Standalone</a></li></ul></li><li data-nav-id=/ddgo-controller-docs/compatibility/ title="Software compatibility (WIP)" class=dd-item><a href=/ddgo-controller-docs/compatibility/>Software compatibility (WIP)</a></li><li data-nav-id=/ddgo-controller-docs/adapters/ title="Adapters and hacks" class=dd-item><a href=/ddgo-controller-docs/adapters/>Adapters and hacks</a></li><li data-nav-id=/ddgo-controller-docs/acknowledgements/ title=Acknowledgements class=dd-item><a href=/ddgo-controller-docs/acknowledgements/>Acknowledgements</a></li><li data-nav-id=/ddgo-controller-docs/references/ title=References class=dd-item><a href=/ddgo-controller-docs/references/>References</a></li></ul><div id=shortcuts><div class=nav-title></div><ul><li><a class=padding href=https://github.com/MarcRiera/ddgo-controller-docs><i class="fab fa-fw fa-github"></i> GitHub repo</a></li></ul></div><div class="footermargin footerLangSwitch footerVariantSwitch footerVisitedLinks footerFooter showVariantSwitch showFooter"></div><hr class="default-animation footerLangSwitch footerVariantSwitch footerVisitedLinks footerFooter showVariantSwitch showFooter"><div id=prefooter class="footerLangSwitch footerVariantSwitch footerVisitedLinks showVariantSwitch"><ul><li id=select-language-container class=footerLangSwitch><a class="padding select-container"><i class="fas fa-language fa-fw"></i>
<span>&nbsp;</span><div class=select-style><select id=select-language onchange="location=baseUri+this.value"></select></div><div class=select-clear></div></a></li><li id=select-variant-container class="footerVariantSwitch showVariantSwitch"><a class="padding select-container"><i class="fas fa-paint-brush fa-fw"></i>
<span>&nbsp;</span><div class=select-style><select id=select-variant onchange=variants.changeVariant(this.value)><option id=relearn-light value=relearn-light selected>Relearn Light</option><option id=relearn-dark value=relearn-dark>Relearn Dark</option></select></div><div class=select-clear></div></a><script>variants.markSelectedVariant()</script></li><li class=footerVisitedLinks><a class=padding href=# data-clear-history-toggle><i class="fas fa-history fa-fw"></i> Clear History</a></li></ul></div><div id=footer class="footerFooter showFooter"><p>Built with <a href=https://github.com/McShelby/hugo-theme-relearn><i class="fas fa-heart"></i></a> by <a href=https://gohugo.io/>Hugo</a></p></div></div></aside><script src=/ddgo-controller-docs/js/clipboard.min.js?1649112754></script>
<script src=/ddgo-controller-docs/js/perfect-scrollbar.min.js?1649112754></script>
<script src=/ddgo-controller-docs/js/featherlight.min.js?1649112754></script>
<script src=/ddgo-controller-docs/js/theme.js?1649112754></script></body></html>