summaryrefslogtreecommitdiff
path: root/src/docs
diff options
context:
space:
mode:
Diffstat (limited to 'src/docs')
-rw-r--r--src/docs/draft-tasd-spec-0001.xml50
1 files changed, 32 insertions, 18 deletions
diff --git a/src/docs/draft-tasd-spec-0001.xml b/src/docs/draft-tasd-spec-0001.xml
index 102a028..4f15d29 100644
--- a/src/docs/draft-tasd-spec-0001.xml
+++ b/src/docs/draft-tasd-spec-0001.xml
@@ -1,6 +1,4 @@
<?xml version='1.0' encoding='utf-8'?>
-<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
-<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<rfc
xmlns:xi="http://www.w3.org/2001/XInclude"
category="info"
@@ -30,7 +28,7 @@
<uri>https://github.com/bigbass1997</uri>
</address>
</author>
- <date year="2022"/>
+ <date year="2023"/>
<area>General</area>
<workgroup>Independent TAS Console Replay Research Group</workgroup>
<abstract>
@@ -47,7 +45,6 @@
<section numbered="true" toc="default">
<name>Overview and Preliminaries</name>
<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>
-
<section numbered="true" toc="default">
<name>Notation and Vocabulary</name>
<t>Data Types:</t>
@@ -57,6 +54,7 @@
<li>(I) = Signed Integer</li>
<li>(N) = Unsigned Integer</li>
<li>(B) = Boolean</li>
+ <li>([]N) = List of Unsigned Integers</li>
</ul>
<t>We use the terms <strong>byte</strong> and <strong>octet</strong> interchangeably in this document.</t>
<t>Unless specified otherwise, all multi-octet integers are big-endian.</t>
@@ -132,7 +130,6 @@
</ul>
</section>
</section>
-
<section numbered="true" toc="default">
<name>Motivations</name>
<t>This file format's primary goal is to provide a comprehensive and replay device agnostic TAS movie controller input dump format that is usable for any console. Additional goals include:</t>
@@ -153,7 +150,6 @@
<section numbered="true" toc="default">
<name>Header</name>
<t><strong>TASD</strong> files <bcp14>MUST</bcp14> include a header, which <bcp14>MUST</bcp14> be in the following format:</t>
-
<artwork><![CDATA[
0 1 2 3 4 5 6
+----+----+----+----+------+------+--------------+
@@ -173,6 +169,7 @@
<dd>Global length of <strong>Key</strong> values of packets. G_KEYLEN currently <bcp14>MUST</bcp14> be a value of 2.</dd>
</dl>
</section>
+
<section numbered="true" toc="default">
<name>Packets</name>
<t>Packets <bcp14>MUST</bcp14> be in the following format:</t>
@@ -243,7 +240,7 @@
<dt><tt>[02 02]</tt></dt> <dd>SNES_CLOCK_FILTER</dd>
<dt><tt>[02 03]</tt></dt> <dd>SNES_OVERREAD</dd>
<dt><tt>[02 04]</tt></dt> <dd>SNES_GAME_GENIE_CODE</dd>
- <dt><tt>[02 05]</tt></dt> <dd>SNES_LATCH_TRAIN (RESERVED)</dd>
+ <dt><tt>[02 05]</tt></dt> <dd>SNES_LATCH_TRAIN</dd>
</dl>
</section>
<section numbered="true" toc="default">
@@ -339,13 +336,13 @@
<name>SNES Specific Key Descriptions</name>
<dl newline="true">
<dt><tt>[02 02]</tt> - SNES_CLOCK_FILTER</dt>
- <dd>Specifies a clock filter time in tenths of a microsecond (0.1 microseconds or 100 nanoseconds) for long how to wait after a clock pulse before new clock pulses <bcp14>SHOULD</bcp14> be accepted by the replay device. This packet type is <bcp14>OPTIONAL</bcp14> and a <strong>TASD</strong> file <bcp14>SHOULD NOT</bcp14> contain more than 1 of this packet type in direct form. Discussed in (<xref target="nes_clock_filter"/>).</dd>
- <dt><tt>[02 03]</tt> - SNES_OVERREAD</dt>
- <dd>Specifies whether a high or low signal <bcp14>SHOULD</bcp14> be sent to the SNES console if the console clocks the replay device for more input buttons than are expected for the latch. This packet type is <bcp14>OPTIONAL</bcp14> and a <strong>TASD</strong> file <bcp14>SHOULD NOT</bcp14> contain more than 1 of this packet type in direct form. Discussed in (<xref target="snes_overread"/>).</dd>
- <dt><tt>[02 04]</tt> - SNES_GAME_GENIE_CODE</dt>
+ <dd>Specifies a clock filter time in tenths of a microsecond (0.1 microseconds or 100 nanoseconds) for how long to wait after a clock pulse until new clock pulses <bcp14>SHOULD</bcp14> be accepted by the replay device. This packet type is <bcp14>OPTIONAL</bcp14> and a <strong>TASD</strong> file <bcp14>SHOULD NOT</bcp14> contain more than 1 of this packet type in direct form. Discussed in (<xref target="snes_clock_filter"/>).</dd>
+ <dt><tt>[01 03]</tt> - SNES_OVERREAD</dt>
+ <dd>Specifies whether a high or low signal <bcp14>SHOULD</bcp14> be sent to the SNES console if the console clocks the replay device for more input buttons than are expected for the latch. This packet type is <bcp14>OPTIONAL</bcp14> and a <strong>TASD</strong> file <bcp14>SHOULD NOT</bcp14> contain more than 1 of this packet type in direct form. Discussed in (<xref target="snes_overread"/>).</dd>
+ <dt><tt>[01 04]</tt> - SNES_GAME_GENIE_CODE</dt>
<dd>Specifies a Game Genie code for the TAS. This packet type is <bcp14>OPTIONAL</bcp14> and a <strong>TASD</strong> file <bcp14>MAY</bcp14> contain more than 1 of this packet type. Discussed in (<xref target="snes_game_genie_code"/>).</dd>
- <dt><tt>[02 05]</tt> - SNES_LATCH_TRAIN (RESERVED)</dt>
- <dd>This packet type is not yet designed and is intended to be described in the future. Discussed in (<xref target="snes_latch_train"/>).</dd>
+ <dt><tt>[01 04]</tt> - SNES_LATCH_TRAIN</dt>
+ <dd>Specifies Latch Trains for TAS. This packet type is <bcp14>OPTIONAL</bcp14> and a <strong>TASD</strong> file <bcp14>MAY</bcp14> contain more than 1 of this packet type. Discussed in (<xref target="snes_latch_train"/>).</dd>
</dl>
</section>
<section numbered="true" toc="default">
@@ -708,7 +705,7 @@
+---------------+------+------+--------------+
| Data Type (A) | Device (A) | Required (B) | ...
+---------------+------+------+--------------+
- 4 5... 6...
+ 4 5... 5+NLEN...
+----------+==========+==========+
| NLEN (N) | Name (S) | Data (A) |
+----------+==========+==========+
@@ -740,7 +737,7 @@
NLEN (Unsigned Integer) [1 octet]
Name (String) [NLEN octets]
Data (Binary Data) [PLEN - NLEN -
- 4 octets]]]>
+ 5 octets]]]>
</artwork>
<dl newline="true">
<dt><strong>Data Type</strong></dt>
@@ -834,7 +831,7 @@
+----------+==========+=============+
NLEN (Unsigned Integer) [1 octet]
- Name (String) [NLEN + 1 octets]
+ Name (String) [NLEN octets]
Data (Binary Data) [PLEN - NLEN -
1 octets]]]>
</artwork>
@@ -1019,8 +1016,23 @@
</dl>
</section>
<section numbered="true" toc="default" anchor="snes_latch_train">
- <name>SNES_LATCH_TRAIN Packet (RESERVED)</name>
- <t>This packet type is not yet designed and is intended to be described in the future.</t>
+ <name>SNES_LATCH_TRAIN Packet</name>
+ <t>SNES_LATCH_TRAIN packets <bcp14>MUST</bcp14> be in the following format:</t>
+ <artwork><![CDATA[
+ 0...
+ +==========================+
+ | Latch Train Points ([]N) |
+ +==========================+
+
+ Latch Train Points (List of Unsigned Integers) [PLEN octets]]]>
+ </artwork>
+ <dl newline="true">
+ <dt><strong>Latch Train Points</strong></dt>
+ <dd>List of 64-bit unsigned integers of the Latch Train points. <bcp14>MUST</bcp14> be a multiple of 8 octets in size</dd>
+ <dt><strong>PLEN</strong></dt>
+ <dd>Length of the packet payload.</dd>
+ </dl>
+ <t>A single SNES_LATCH_TRAIN packet <bcp14>MAY</bcp14> contain up to every Latch Train point of a SNES TAS movie console replay and <bcp14>MAY</bcp14> contain fewer than every Latch Train point of a SNES TAS movie console replay. There <bcp14>MAY</bcp14> be more than 1 SNES_LATCH_TRAIN packet.</t>
</section>
</section>
<section numbered="true" toc="default">
@@ -1817,6 +1829,8 @@
</section>
<!-- Change Log
+draft 02 - 2023-07-03 VG Add SNES_LATCH_TRAIN packet description and add []N data type
+
draft 01 - 2022-09-26 VG Add FALSE state description for EXPERIMENTAL packet and mention draft/experimental packets rather than just experimental packets
draft 00 - 2022-09-24 VG Initial draft