docs/templates/pages/sega/software/comio.html
2022-04-24 23:35:53 +01:00

292 lines
8.1 KiB
HTML

{% extends "sega.html" %}
{% block title %}JVS{% endblock %}
{% block body %}
<h1>JAMMA Video Standard - Alternative version</h1>
<p><b>Note:</b> This page assumes you have read the documentation regarding <a href="./jvs.html">the JAMMA video
standard</a>. If you have not, it is recommended to read that first.</p>
<h2 id="frame">Packet framing</h2>
<figure>
<figcaption>Request packet (master->slave)</figcaption>
<table>
<tr>
<td>E0<sub>h</sub></td>
<td>n</td>
<td>Dest</td>
<td>Seq</td>
<td><mark>CMD</mark></td>
<td><mark>D</mark><sub>0</sub></td>
<td><mark>D</mark><sub>1</sub></td>
<td><mark>D</mark><sub>2</sub></td>
<td>...</td>
<td><mark>D</mark><sub>n-5</sub></td>
<td><mark>SUM</mark></td>
</tr>
</table>
</figure>
<figure>
<figcaption>Response packet (slave->master)</figcaption>
<table>
<tr>
<td>E0<sub>h</sub></td>
<td><mark>n</mark></td>
<td>Src</td>
<td>Seq</td>
<td>Status</td>
<td><mark>CMD</mark></td>
<td>Report</td>
<td><mark>D</mark><sub>0</sub></td>
<td><mark>D</mark><sub>1</sub></td>
<td><mark>D</mark><sub>2</sub></td>
<td>...</td>
<td><mark>D</mark><sub>n-7</sub></td>
<td><mark>SUM</mark></td>
</tr>
</table>
</figure>
<h2 id="body">Commands and responses</h2>
<p>Response packets of this format include a source address, which should match the destination in the request. The
sequence number of both the request and response should be the same (? todo: verify this), and should be modulo 32
(20<sub>h</sub>).</p>
<p>While the packet format would suggest it supports multiple commands, I have never observed more than a single command
per packet. Response packets include the command number between their packet status and report status bytes.
</p>
<h2 id="commands">Individual commands</h2>
<p>The following is a reference table for communication with an {{ part("838-14971")|safe }}. Endpoints required for
MIFARE cards are marked with <mark>M</mark>, FeliCa <mark>F</mark>, and LEDs <mark>L</mark>.</p>
<table style="width: 100%">
<thead>
<tr>
<td>Req</td>
<td>Name</td>
<td>Code</td>
<td>Description</td>
<td>Request Size</td>
<td>Response Size</td>
</tr>
</thead>
<tbody>
<tr>
<td><mark>MF</mark></td>
<td>Get Firmware Version</td>
<td><code>30</code></td>
<td>Retrive the firmware version string</td>
<td>0</td>
<td>1+</td>
</tr>
<tr>
<td><mark>MF</mark></td>
<td>Get Hardware Version</td>
<td><code>32</code></td>
<td>Retrive the hardware version string</td>
<td>0</td>
<td>1+</td>
</tr>
<tr>
<td><mark>MF</mark></td>
<td>Radio On</td>
<td><code>40</code></td>
<td>Enable the NFC radio</td>
<td>2</td>
<td>0</td>
</tr>
<tr>
<td><mark>MF</mark></td>
<td>Radio Off</td>
<td><code>41</code></td>
<td>Disable the NFC radio</td>
<td></td>
<td>0</td>
</tr>
<tr>
<td><mark>MF</mark></td>
<td>Poll</td>
<td><code>42</code></td>
<td>Retreive a list of NFC devices</td>
<td>0</td>
<td>3+</td>
</tr>
<tr>
<td><mark>M</mark></td>
<td>Select MIFARE tag</td>
<td><code>43</code></td>
<td></td>
<td>1+</td>
<td>0</td>
</tr>
<tr>
<td></td>
<td></td>
<td><code>44</code></td>
<td></td>
<td>1+</td>
<td></td>
</tr>
<tr>
<td><mark>MF</mark></td>
<td>Set MIFARE Classic key</td>
<td><code>50</code></td>
<td>Provide the key used for MIFARE decryption</td>
<td>1+</td>
<td>0</td>
</tr>
<tr>
<td></td>
<td></td>
<td><code>51</code></td>
<td></td>
<td>1+</td>
<td></td>
</tr>
<tr>
<td><mark>M</mark></td>
<td>Read MIFARE block</td>
<td><code>52</code></td>
<td>Read a secified block from a MIFARE Classic device</td>
<td></td>
<td></td>
</tr>
<tr>
<td><mark>MF</mark></td>
<td>Set Aime key??</td>
<td><code>54</code></td>
<td>/shrug</td>
<td>1+</td>
<td>0</td>
</tr>
<tr>
<td></td>
<td></td>
<td><code>55</code></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td><code>60</code></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td><code>61</code></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td><mark>MFL</mark></td>
<td>Reset</td>
<td><code>62</code></td>
<td>Reset the device to an initial state</td>
<td></td>
<td>0</td>
</tr>
<tr>
<td></td>
<td></td>
<td><code>70</code></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td><mark>F</mark></td>
<td>FeliCa communication</td>
<td><code>72</code></td>
<td>Proxy the enframed command to a present FeliCa device</td>
<td>Variable</td>
<td>Variable</td>
</tr>
<tr>
<td colspan="6">LED commands (address <code>08</code>)</td>
</tr>
<tr>
<td><mark>L</mark></td>
<td>Reset</td>
<td><code>10</code></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td>Set timeout</td>
<td><code>11</code></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td>Set timeout response</td>
<td><code>14</code></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td><mark>L</mark></td>
<td>Set LED colour</td>
<td><code>82</code></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td>Set LED count</td>
<td><code>86</code></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td><mark>L</mark></td>
<td>Get board info</td>
<td><code>f0</code></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td>Get board status</td>
<td><code>f1</code></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td>Get firmware sum</td>
<td><code>f2</code></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td>Get protocol version</td>
<td><code>f3</code></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td>Bootloader</td>
<td><code>fd</code></td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
{% endblock %}