diff options
| author | bigbass1997 <bigbass1997.website@gmail.com> | 2025-02-01 23:40:31 -0600 |
|---|---|---|
| committer | bigbass1997 <bigbass1997.website@gmail.com> | 2025-02-01 23:40:31 -0600 |
| commit | e3147fb48be4f55b2688e664bb66be5143eda2d1 (patch) | |
| tree | 89f8ecde1f2a4044bcfed2c6a1ddc9bc31807b5c | |
| parent | a6902c42f284f41672ea85a1ff54437009f563e2 (diff) | |
| download | tasd-e3147fb48be4f55b2688e664bb66be5143eda2d1.tar.gz tasd-e3147fb48be4f55b2688e664bb66be5143eda2d1.zip | |
Changed Genesis controller input format. Further clarified INPUT_CHUNK usage.
| -rw-r--r-- | CHANGELOG.md | 1 | ||||
| -rw-r--r-- | docs/latest/draft-tasd-spec.html | 42 | ||||
| -rw-r--r-- | docs/latest/draft-tasd-spec.txt | 49 | ||||
| -rw-r--r-- | docs/tasd-spec-0001/draft-tasd-spec-0001.html | 42 | ||||
| -rw-r--r-- | docs/tasd-spec-0001/draft-tasd-spec-0001.txt | 49 | ||||
| -rw-r--r-- | src/docs/draft-tasd-spec-0001.xml | 44 |
6 files changed, 123 insertions, 104 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index a9ebec3..77464b3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Changed - Intended formatting and usage of INPUT_CHUNK and INPUT_MOMENT packets - Clarified that INPUT_CHUNK Indexes in TRANSITION packets should be *byte* indexes +- Genesis controller input formats to better reflect the bit ordering seen during replay ### Added - A new "Hold" option to INPUT_MOMENT packets diff --git a/docs/latest/draft-tasd-spec.html b/docs/latest/draft-tasd-spec.html index 79efc1e..a216583 100644 --- a/docs/latest/draft-tasd-spec.html +++ b/docs/latest/draft-tasd-spec.html @@ -3363,7 +3363,7 @@ li > p:last-of-type:only-child { </dl> <p id="section-4.3.5.1-4">All INPUT_CHUNK packets with corresponding Port values in the <strong>TASD</strong> file <span class="bcp14">MUST</span> be in chronological order, where earlier inputs in the TAS movie console replay are earlier in the <strong>TASD</strong> file and later inputs in the TAS movie console replay are later in the <strong>TASD</strong> file. If there are more than one INPUT_CHUNK packets for a specific Port, the input data <span class="bcp14">MUST</span> be interpreted as if all their contents were concatenated into a single INPUT_CHUNK packet. As such, a single INPUT_CHUNK packet <span class="bcp14">MAY</span> contain up to every input of a TAS movie console replay and <span class="bcp14">MAY</span> contain fewer than every input of a TAS movie console replay.<a href="#section-4.3.5.1-4" class="pilcrow">¶</a></p> <p id="section-4.3.5.1-5">The input data contained in <strong>Inputs</strong> is divided up based on the PORT_CONTROLLER type corresponding to the <strong>Port</strong> number. Refer to <a href="#controller_inputs" class="auto internal xref">Section 5</a> for each available type and the number of bytes used for each instance of controller input. The PORT_CONTROLLER type <span class="bcp14">MAY</span> be changed using TRANSITION packets, which <span class="bcp14">MAY</span> change the interpretation of the input data until either the end of the replay or until the next PORT_CONTROLLER transition.<a href="#section-4.3.5.1-5" class="pilcrow">¶</a></p> -<p id="section-4.3.5.1-6"></p> +<p id="section-4.3.5.1-6">Each instance of controller input <strong>SHOULD</strong> remain held until the input has been used according to the current replay configuration. By default, this means each instance of controller input corresponds to a single input "latch" or polling sequence by the console. However, some packet types <strong>MAY</strong> alter how inputs are used during replay. For example, the NES has the NES_LATCH_FILTER packet available. When NES_LATCH_FILTER is active, each instance of controller input <strong>MUST</strong> remain held until the end of the filter period.<a href="#section-4.3.5.1-6" class="pilcrow">¶</a></p> </section> </div> <div id="input_moment"> @@ -5075,35 +5075,35 @@ li > p:last-of-type:only-child { <p id="section-5.8.1-2"><strong>Octet 0</strong><a href="#section-5.8.1-2" class="pilcrow">¶</a></p> <span class="break"></span><dl class="dlCompact dlParallel" id="section-5.8.1-3"> <dt id="section-5.8.1-3.1">Bit 7:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.1-3.2">/Up<a href="#section-5.8.1-3.2" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.1-3.2">/C<a href="#section-5.8.1-3.2" class="pilcrow">¶</a> </dd> <dd class="break"></dd> <dt id="section-5.8.1-3.3">Bit 6:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.1-3.4">/Down<a href="#section-5.8.1-3.4" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.1-3.4">/B<a href="#section-5.8.1-3.4" class="pilcrow">¶</a> </dd> <dd class="break"></dd> <dt id="section-5.8.1-3.5">Bit 5:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.1-3.6">/Left<a href="#section-5.8.1-3.6" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.1-3.6">/Right<a href="#section-5.8.1-3.6" class="pilcrow">¶</a> </dd> <dd class="break"></dd> <dt id="section-5.8.1-3.7">Bit 4:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.1-3.8">/Right<a href="#section-5.8.1-3.8" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.1-3.8">/Left<a href="#section-5.8.1-3.8" class="pilcrow">¶</a> </dd> <dd class="break"></dd> <dt id="section-5.8.1-3.9">Bit 3:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.1-3.10">/B<a href="#section-5.8.1-3.10" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.1-3.10">/Down<a href="#section-5.8.1-3.10" class="pilcrow">¶</a> </dd> <dd class="break"></dd> <dt id="section-5.8.1-3.11">Bit 2:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.1-3.12">/C<a href="#section-5.8.1-3.12" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.1-3.12">/Up<a href="#section-5.8.1-3.12" class="pilcrow">¶</a> </dd> <dd class="break"></dd> <dt id="section-5.8.1-3.13">Bit 1:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.1-3.14">/A<a href="#section-5.8.1-3.14" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.1-3.14">/Start<a href="#section-5.8.1-3.14" class="pilcrow">¶</a> </dd> <dd class="break"></dd> <dt id="section-5.8.1-3.15">Bit 0:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.1-3.16">/Start<a href="#section-5.8.1-3.16" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.1-3.16">/A<a href="#section-5.8.1-3.16" class="pilcrow">¶</a> </dd> <dd class="break"></dd> </dl> @@ -5116,54 +5116,54 @@ li > p:last-of-type:only-child { <p id="section-5.8.2-2"><strong>Octet 0</strong><a href="#section-5.8.2-2" class="pilcrow">¶</a></p> <span class="break"></span><dl class="dlCompact dlParallel" id="section-5.8.2-3"> <dt id="section-5.8.2-3.1">Bit 7:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.2-3.2">/Up<a href="#section-5.8.2-3.2" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.2-3.2">/C<a href="#section-5.8.2-3.2" class="pilcrow">¶</a> </dd> <dd class="break"></dd> <dt id="section-5.8.2-3.3">Bit 6:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.2-3.4">/Down<a href="#section-5.8.2-3.4" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.2-3.4">/B<a href="#section-5.8.2-3.4" class="pilcrow">¶</a> </dd> <dd class="break"></dd> <dt id="section-5.8.2-3.5">Bit 5:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.2-3.6">/Left<a href="#section-5.8.2-3.6" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.2-3.6">/Right<a href="#section-5.8.2-3.6" class="pilcrow">¶</a> </dd> <dd class="break"></dd> <dt id="section-5.8.2-3.7">Bit 4:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.2-3.8">/Right<a href="#section-5.8.2-3.8" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.2-3.8">/Left<a href="#section-5.8.2-3.8" class="pilcrow">¶</a> </dd> <dd class="break"></dd> <dt id="section-5.8.2-3.9">Bit 3:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.2-3.10">/B<a href="#section-5.8.2-3.10" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.2-3.10">/Down<a href="#section-5.8.2-3.10" class="pilcrow">¶</a> </dd> <dd class="break"></dd> <dt id="section-5.8.2-3.11">Bit 2:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.2-3.12">/C<a href="#section-5.8.2-3.12" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.2-3.12">/Up<a href="#section-5.8.2-3.12" class="pilcrow">¶</a> </dd> <dd class="break"></dd> <dt id="section-5.8.2-3.13">Bit 1:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.2-3.14">/A<a href="#section-5.8.2-3.14" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.2-3.14">/Start<a href="#section-5.8.2-3.14" class="pilcrow">¶</a> </dd> <dd class="break"></dd> <dt id="section-5.8.2-3.15">Bit 0:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.2-3.16">/Start<a href="#section-5.8.2-3.16" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.2-3.16">/A<a href="#section-5.8.2-3.16" class="pilcrow">¶</a> </dd> <dd class="break"></dd> </dl> <p id="section-5.8.2-4"><strong>Octet 1</strong><a href="#section-5.8.2-4" class="pilcrow">¶</a></p> <span class="break"></span><dl class="dlCompact dlParallel" id="section-5.8.2-5"> <dt id="section-5.8.2-5.1">Bit 7:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.2-5.2">/Z<a href="#section-5.8.2-5.2" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.2-5.2">/Mode<a href="#section-5.8.2-5.2" class="pilcrow">¶</a> </dd> <dd class="break"></dd> <dt id="section-5.8.2-5.3">Bit 6:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.2-5.4">/Y<a href="#section-5.8.2-5.4" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.2-5.4">/X<a href="#section-5.8.2-5.4" class="pilcrow">¶</a> </dd> <dd class="break"></dd> <dt id="section-5.8.2-5.5">Bit 5:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.2-5.6">/X<a href="#section-5.8.2-5.6" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.2-5.6">/Y<a href="#section-5.8.2-5.6" class="pilcrow">¶</a> </dd> <dd class="break"></dd> <dt id="section-5.8.2-5.7">Bit 4:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.2-5.8">/Mode<a href="#section-5.8.2-5.8" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.2-5.8">/Z<a href="#section-5.8.2-5.8" class="pilcrow">¶</a> </dd> <dd class="break"></dd> <dt id="section-5.8.2-5.9">Bit 3:</dt> diff --git a/docs/latest/draft-tasd-spec.txt b/docs/latest/draft-tasd-spec.txt index ba5b0b9..6903ec8 100644 --- a/docs/latest/draft-tasd-spec.txt +++ b/docs/latest/draft-tasd-spec.txt @@ -1439,6 +1439,15 @@ Table of Contents of the input data until either the end of the replay or until the next PORT_CONTROLLER transition. + Each instance of controller input *SHOULD* remain held until the + input has been used according to the current replay configuration. + By default, this means each instance of controller input corresponds + to a single input "latch" or polling sequence by the console. + However, some packet types *MAY* alter how inputs are used during + replay. For example, the NES has the NES_LATCH_FILTER packet + available. When NES_LATCH_FILTER is active, each instance of + controller input *MUST* remain held until the end of the filter + period. 4.3.5.2. INPUT_MOMENT Packet @@ -2212,14 +2221,14 @@ Table of Contents *Octet 0* - Bit 7: /Up - Bit 6: /Down - Bit 5: /Left - Bit 4: /Right - Bit 3: /B - Bit 2: /C - Bit 1: /A - Bit 0: /Start + Bit 7: /C + Bit 6: /B + Bit 5: /Right + Bit 4: /Left + Bit 3: /Down + Bit 2: /Up + Bit 1: /Start + Bit 0: /A 5.8.2. Genesis (Mega Drive) 6-Button @@ -2227,21 +2236,21 @@ Table of Contents *Octet 0* - Bit 7: /Up - Bit 6: /Down - Bit 5: /Left - Bit 4: /Right - Bit 3: /B - Bit 2: /C - Bit 1: /A - Bit 0: /Start + Bit 7: /C + Bit 6: /B + Bit 5: /Right + Bit 4: /Left + Bit 3: /Down + Bit 2: /Up + Bit 1: /Start + Bit 0: /A *Octet 1* - Bit 7: /Z - Bit 6: /Y - Bit 5: /X - Bit 4: /Mode + Bit 7: /Mode + Bit 6: /X + Bit 5: /Y + Bit 4: /Z Bit 3: 1 Bit 2: 1 Bit 1: 1 diff --git a/docs/tasd-spec-0001/draft-tasd-spec-0001.html b/docs/tasd-spec-0001/draft-tasd-spec-0001.html index 79efc1e..a216583 100644 --- a/docs/tasd-spec-0001/draft-tasd-spec-0001.html +++ b/docs/tasd-spec-0001/draft-tasd-spec-0001.html @@ -3363,7 +3363,7 @@ li > p:last-of-type:only-child { </dl> <p id="section-4.3.5.1-4">All INPUT_CHUNK packets with corresponding Port values in the <strong>TASD</strong> file <span class="bcp14">MUST</span> be in chronological order, where earlier inputs in the TAS movie console replay are earlier in the <strong>TASD</strong> file and later inputs in the TAS movie console replay are later in the <strong>TASD</strong> file. If there are more than one INPUT_CHUNK packets for a specific Port, the input data <span class="bcp14">MUST</span> be interpreted as if all their contents were concatenated into a single INPUT_CHUNK packet. As such, a single INPUT_CHUNK packet <span class="bcp14">MAY</span> contain up to every input of a TAS movie console replay and <span class="bcp14">MAY</span> contain fewer than every input of a TAS movie console replay.<a href="#section-4.3.5.1-4" class="pilcrow">¶</a></p> <p id="section-4.3.5.1-5">The input data contained in <strong>Inputs</strong> is divided up based on the PORT_CONTROLLER type corresponding to the <strong>Port</strong> number. Refer to <a href="#controller_inputs" class="auto internal xref">Section 5</a> for each available type and the number of bytes used for each instance of controller input. The PORT_CONTROLLER type <span class="bcp14">MAY</span> be changed using TRANSITION packets, which <span class="bcp14">MAY</span> change the interpretation of the input data until either the end of the replay or until the next PORT_CONTROLLER transition.<a href="#section-4.3.5.1-5" class="pilcrow">¶</a></p> -<p id="section-4.3.5.1-6"></p> +<p id="section-4.3.5.1-6">Each instance of controller input <strong>SHOULD</strong> remain held until the input has been used according to the current replay configuration. By default, this means each instance of controller input corresponds to a single input "latch" or polling sequence by the console. However, some packet types <strong>MAY</strong> alter how inputs are used during replay. For example, the NES has the NES_LATCH_FILTER packet available. When NES_LATCH_FILTER is active, each instance of controller input <strong>MUST</strong> remain held until the end of the filter period.<a href="#section-4.3.5.1-6" class="pilcrow">¶</a></p> </section> </div> <div id="input_moment"> @@ -5075,35 +5075,35 @@ li > p:last-of-type:only-child { <p id="section-5.8.1-2"><strong>Octet 0</strong><a href="#section-5.8.1-2" class="pilcrow">¶</a></p> <span class="break"></span><dl class="dlCompact dlParallel" id="section-5.8.1-3"> <dt id="section-5.8.1-3.1">Bit 7:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.1-3.2">/Up<a href="#section-5.8.1-3.2" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.1-3.2">/C<a href="#section-5.8.1-3.2" class="pilcrow">¶</a> </dd> <dd class="break"></dd> <dt id="section-5.8.1-3.3">Bit 6:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.1-3.4">/Down<a href="#section-5.8.1-3.4" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.1-3.4">/B<a href="#section-5.8.1-3.4" class="pilcrow">¶</a> </dd> <dd class="break"></dd> <dt id="section-5.8.1-3.5">Bit 5:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.1-3.6">/Left<a href="#section-5.8.1-3.6" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.1-3.6">/Right<a href="#section-5.8.1-3.6" class="pilcrow">¶</a> </dd> <dd class="break"></dd> <dt id="section-5.8.1-3.7">Bit 4:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.1-3.8">/Right<a href="#section-5.8.1-3.8" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.1-3.8">/Left<a href="#section-5.8.1-3.8" class="pilcrow">¶</a> </dd> <dd class="break"></dd> <dt id="section-5.8.1-3.9">Bit 3:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.1-3.10">/B<a href="#section-5.8.1-3.10" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.1-3.10">/Down<a href="#section-5.8.1-3.10" class="pilcrow">¶</a> </dd> <dd class="break"></dd> <dt id="section-5.8.1-3.11">Bit 2:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.1-3.12">/C<a href="#section-5.8.1-3.12" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.1-3.12">/Up<a href="#section-5.8.1-3.12" class="pilcrow">¶</a> </dd> <dd class="break"></dd> <dt id="section-5.8.1-3.13">Bit 1:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.1-3.14">/A<a href="#section-5.8.1-3.14" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.1-3.14">/Start<a href="#section-5.8.1-3.14" class="pilcrow">¶</a> </dd> <dd class="break"></dd> <dt id="section-5.8.1-3.15">Bit 0:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.1-3.16">/Start<a href="#section-5.8.1-3.16" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.1-3.16">/A<a href="#section-5.8.1-3.16" class="pilcrow">¶</a> </dd> <dd class="break"></dd> </dl> @@ -5116,54 +5116,54 @@ li > p:last-of-type:only-child { <p id="section-5.8.2-2"><strong>Octet 0</strong><a href="#section-5.8.2-2" class="pilcrow">¶</a></p> <span class="break"></span><dl class="dlCompact dlParallel" id="section-5.8.2-3"> <dt id="section-5.8.2-3.1">Bit 7:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.2-3.2">/Up<a href="#section-5.8.2-3.2" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.2-3.2">/C<a href="#section-5.8.2-3.2" class="pilcrow">¶</a> </dd> <dd class="break"></dd> <dt id="section-5.8.2-3.3">Bit 6:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.2-3.4">/Down<a href="#section-5.8.2-3.4" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.2-3.4">/B<a href="#section-5.8.2-3.4" class="pilcrow">¶</a> </dd> <dd class="break"></dd> <dt id="section-5.8.2-3.5">Bit 5:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.2-3.6">/Left<a href="#section-5.8.2-3.6" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.2-3.6">/Right<a href="#section-5.8.2-3.6" class="pilcrow">¶</a> </dd> <dd class="break"></dd> <dt id="section-5.8.2-3.7">Bit 4:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.2-3.8">/Right<a href="#section-5.8.2-3.8" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.2-3.8">/Left<a href="#section-5.8.2-3.8" class="pilcrow">¶</a> </dd> <dd class="break"></dd> <dt id="section-5.8.2-3.9">Bit 3:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.2-3.10">/B<a href="#section-5.8.2-3.10" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.2-3.10">/Down<a href="#section-5.8.2-3.10" class="pilcrow">¶</a> </dd> <dd class="break"></dd> <dt id="section-5.8.2-3.11">Bit 2:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.2-3.12">/C<a href="#section-5.8.2-3.12" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.2-3.12">/Up<a href="#section-5.8.2-3.12" class="pilcrow">¶</a> </dd> <dd class="break"></dd> <dt id="section-5.8.2-3.13">Bit 1:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.2-3.14">/A<a href="#section-5.8.2-3.14" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.2-3.14">/Start<a href="#section-5.8.2-3.14" class="pilcrow">¶</a> </dd> <dd class="break"></dd> <dt id="section-5.8.2-3.15">Bit 0:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.2-3.16">/Start<a href="#section-5.8.2-3.16" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.2-3.16">/A<a href="#section-5.8.2-3.16" class="pilcrow">¶</a> </dd> <dd class="break"></dd> </dl> <p id="section-5.8.2-4"><strong>Octet 1</strong><a href="#section-5.8.2-4" class="pilcrow">¶</a></p> <span class="break"></span><dl class="dlCompact dlParallel" id="section-5.8.2-5"> <dt id="section-5.8.2-5.1">Bit 7:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.2-5.2">/Z<a href="#section-5.8.2-5.2" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.2-5.2">/Mode<a href="#section-5.8.2-5.2" class="pilcrow">¶</a> </dd> <dd class="break"></dd> <dt id="section-5.8.2-5.3">Bit 6:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.2-5.4">/Y<a href="#section-5.8.2-5.4" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.2-5.4">/X<a href="#section-5.8.2-5.4" class="pilcrow">¶</a> </dd> <dd class="break"></dd> <dt id="section-5.8.2-5.5">Bit 5:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.2-5.6">/X<a href="#section-5.8.2-5.6" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.2-5.6">/Y<a href="#section-5.8.2-5.6" class="pilcrow">¶</a> </dd> <dd class="break"></dd> <dt id="section-5.8.2-5.7">Bit 4:</dt> - <dd style="margin-left: 1.5em" id="section-5.8.2-5.8">/Mode<a href="#section-5.8.2-5.8" class="pilcrow">¶</a> + <dd style="margin-left: 1.5em" id="section-5.8.2-5.8">/Z<a href="#section-5.8.2-5.8" class="pilcrow">¶</a> </dd> <dd class="break"></dd> <dt id="section-5.8.2-5.9">Bit 3:</dt> diff --git a/docs/tasd-spec-0001/draft-tasd-spec-0001.txt b/docs/tasd-spec-0001/draft-tasd-spec-0001.txt index ba5b0b9..6903ec8 100644 --- a/docs/tasd-spec-0001/draft-tasd-spec-0001.txt +++ b/docs/tasd-spec-0001/draft-tasd-spec-0001.txt @@ -1439,6 +1439,15 @@ Table of Contents of the input data until either the end of the replay or until the next PORT_CONTROLLER transition. + Each instance of controller input *SHOULD* remain held until the + input has been used according to the current replay configuration. + By default, this means each instance of controller input corresponds + to a single input "latch" or polling sequence by the console. + However, some packet types *MAY* alter how inputs are used during + replay. For example, the NES has the NES_LATCH_FILTER packet + available. When NES_LATCH_FILTER is active, each instance of + controller input *MUST* remain held until the end of the filter + period. 4.3.5.2. INPUT_MOMENT Packet @@ -2212,14 +2221,14 @@ Table of Contents *Octet 0* - Bit 7: /Up - Bit 6: /Down - Bit 5: /Left - Bit 4: /Right - Bit 3: /B - Bit 2: /C - Bit 1: /A - Bit 0: /Start + Bit 7: /C + Bit 6: /B + Bit 5: /Right + Bit 4: /Left + Bit 3: /Down + Bit 2: /Up + Bit 1: /Start + Bit 0: /A 5.8.2. Genesis (Mega Drive) 6-Button @@ -2227,21 +2236,21 @@ Table of Contents *Octet 0* - Bit 7: /Up - Bit 6: /Down - Bit 5: /Left - Bit 4: /Right - Bit 3: /B - Bit 2: /C - Bit 1: /A - Bit 0: /Start + Bit 7: /C + Bit 6: /B + Bit 5: /Right + Bit 4: /Left + Bit 3: /Down + Bit 2: /Up + Bit 1: /Start + Bit 0: /A *Octet 1* - Bit 7: /Z - Bit 6: /Y - Bit 5: /X - Bit 4: /Mode + Bit 7: /Mode + Bit 6: /X + Bit 5: /Y + Bit 4: /Z Bit 3: 1 Bit 2: 1 Bit 1: 1 diff --git a/src/docs/draft-tasd-spec-0001.xml b/src/docs/draft-tasd-spec-0001.xml index 16fa4a7..5c8036e 100644 --- a/src/docs/draft-tasd-spec-0001.xml +++ b/src/docs/draft-tasd-spec-0001.xml @@ -1110,7 +1110,7 @@ </dl> <t>All INPUT_CHUNK packets with corresponding Port values in the <strong>TASD</strong> file <bcp14>MUST</bcp14> be in chronological order, where earlier inputs in the TAS movie console replay are earlier in the <strong>TASD</strong> file and later inputs in the TAS movie console replay are later in the <strong>TASD</strong> file. If there are more than one INPUT_CHUNK packets for a specific Port, the input data <bcp14>MUST</bcp14> be interpreted as if all their contents were concatenated into a single INPUT_CHUNK packet. As such, a single INPUT_CHUNK packet <bcp14>MAY</bcp14> contain up to every input of a TAS movie console replay and <bcp14>MAY</bcp14> contain fewer than every input of a TAS movie console replay.</t> <t>The input data contained in <strong>Inputs</strong> is divided up based on the PORT_CONTROLLER type corresponding to the <strong>Port</strong> number. Refer to <xref target="controller_inputs"/> for each available type and the number of bytes used for each instance of controller input. The PORT_CONTROLLER type <bcp14>MAY</bcp14> be changed using TRANSITION packets, which <bcp14>MAY</bcp14> change the interpretation of the input data until either the end of the replay or until the next PORT_CONTROLLER transition.</t> - <t></t> + <t>Each instance of controller input <strong>SHOULD</strong> remain held until the input has been used according to the current replay configuration. By default, this means each instance of controller input corresponds to a single input "latch" or polling sequence by the console. However, some packet types <strong>MAY</strong> alter how inputs are used during replay. For example, the NES has the NES_LATCH_FILTER packet available. When NES_LATCH_FILTER is active, each instance of controller input <strong>MUST</strong> remain held until the end of the filter period.</t> </section> <section numbered="true" toc="default" anchor="input_moment"> <name>INPUT_MOMENT Packet</name> @@ -1834,14 +1834,14 @@ <t>Single Input Length: 1 Octet</t> <t><strong>Octet 0</strong></t> <dl spacing="compact"> - <dt>Bit 7:</dt><dd>/Up</dd> - <dt>Bit 6:</dt><dd>/Down</dd> - <dt>Bit 5:</dt><dd>/Left</dd> - <dt>Bit 4:</dt><dd>/Right</dd> - <dt>Bit 3:</dt><dd>/B</dd> - <dt>Bit 2:</dt><dd>/C</dd> - <dt>Bit 1:</dt><dd>/A</dd> - <dt>Bit 0:</dt><dd>/Start</dd> + <dt>Bit 7:</dt><dd>/C</dd> + <dt>Bit 6:</dt><dd>/B</dd> + <dt>Bit 5:</dt><dd>/Right</dd> + <dt>Bit 4:</dt><dd>/Left</dd> + <dt>Bit 3:</dt><dd>/Down</dd> + <dt>Bit 2:</dt><dd>/Up</dd> + <dt>Bit 1:</dt><dd>/Start</dd> + <dt>Bit 0:</dt><dd>/A</dd> </dl> </section> <section numbered="true" toc="default"> @@ -1849,21 +1849,21 @@ <t>Single Input Length: 2 Octets</t> <t><strong>Octet 0</strong></t> <dl spacing="compact"> - <dt>Bit 7:</dt><dd>/Up</dd> - <dt>Bit 6:</dt><dd>/Down</dd> - <dt>Bit 5:</dt><dd>/Left</dd> - <dt>Bit 4:</dt><dd>/Right</dd> - <dt>Bit 3:</dt><dd>/B</dd> - <dt>Bit 2:</dt><dd>/C</dd> - <dt>Bit 1:</dt><dd>/A</dd> - <dt>Bit 0:</dt><dd>/Start</dd> + <dt>Bit 7:</dt><dd>/C</dd> + <dt>Bit 6:</dt><dd>/B</dd> + <dt>Bit 5:</dt><dd>/Right</dd> + <dt>Bit 4:</dt><dd>/Left</dd> + <dt>Bit 3:</dt><dd>/Down</dd> + <dt>Bit 2:</dt><dd>/Up</dd> + <dt>Bit 1:</dt><dd>/Start</dd> + <dt>Bit 0:</dt><dd>/A</dd> </dl> <t><strong>Octet 1</strong></t> <dl spacing="compact"> - <dt>Bit 7:</dt><dd>/Z</dd> - <dt>Bit 6:</dt><dd>/Y</dd> - <dt>Bit 5:</dt><dd>/X</dd> - <dt>Bit 4:</dt><dd>/Mode</dd> + <dt>Bit 7:</dt><dd>/Mode</dd> + <dt>Bit 6:</dt><dd>/X</dd> + <dt>Bit 5:</dt><dd>/Y</dd> + <dt>Bit 4:</dt><dd>/Z</dd> <dt>Bit 3:</dt><dd>1</dd> <dt>Bit 2:</dt><dd>1</dd> <dt>Bit 1:</dt><dd>1</dd> @@ -1928,7 +1928,7 @@ <t>THIS DOCUMENTATION IS PROVIDED BY THE AUTHOR(S) "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</t> </section> <!-- Change Log -draft 16 - 2025-02-01 Bigbass Revised "Introduction" paragraphs. Clarified NUL characters in strings. Clarified header version should increase in future versions. Clarified INPUT_MOMENT packets contain only a single instance of input data. Clarified how multiple INPUT_CHUNK packets must be interpreted. Clarified INPUT_CHUNK indexes in TRANSITION packets refer to an individual byte (changed index type name.) Added a "Hold" option to INPUT_MOMENT packets to clarify how long the INPUT_MOMENT should be active for (useful for GB/C/A replays which expect the value to be held until the input changes.) +draft 16 - 2025-02-01 Bigbass Revised "Introduction" paragraphs. Clarified NUL characters in strings. Clarified header version should increase in future versions. Clarified INPUT_MOMENT packets contain only a single instance of input data. Clarified how multiple INPUT_CHUNK packets must be interpreted. Clarified INPUT_CHUNK indexes in TRANSITION packets refer to an individual byte (changed index type name.) Added a "Hold" option to INPUT_MOMENT packets to clarify how long the INPUT_MOMENT should be active for (useful for GB/C/A replays which expect the value to be held until the input changes.) Changed Genesis controller input formats. draft 15 - 2023-10-15 Bigbass Reordered SNES controller types |
