From 78d50d4227d1414bcb27317f328fbdc029bfa092 Mon Sep 17 00:00:00 2001 From: Vi Grey Date: Mon, 18 Sep 2023 16:31:02 +0000 Subject: Specify that PEXP MUST be greater than 0 --- docs/latest/draft-tasd-spec.html | 780 ++++++++++++++++++++------------------- 1 file changed, 401 insertions(+), 379 deletions(-) (limited to 'docs/latest/draft-tasd-spec.html') diff --git a/docs/latest/draft-tasd-spec.html b/docs/latest/draft-tasd-spec.html index 8c621f1..5a35421 100644 --- a/docs/latest/draft-tasd-spec.html +++ b/docs/latest/draft-tasd-spec.html @@ -12,14 +12,13 @@ The TASD file format is used for storing "Tool Assisted Speedrun" or "Tool Assisted Superplay" (TAS) data for TAS replay devices to replay on physical video game console hardware. The format is defined to be expandable for future needs. The format is also defined to be parsable by programs that do not understand portions of the format, whether that is due to incomplete support of the format specification or due to new features being added to later versions of the specification at a later date. This document defines the file format specification for TASD files. ' name="description"> - + - + - + @@ -1187,6 +1205,10 @@ li > p:last-of-type {
Workgroup:
Independent TAS Console Replay Research Group
+
Published:
+
+ +
Authors:
@@ -1209,233 +1231,233 @@ li > p:last-of-type {
- ▲

-Table of Contents + ▲

+Table of Contents

@@ -1570,20 +1592,20 @@ li > p:last-of-type {
-

-1. Introduction +

+1. Introduction

The Tool Assisted Speedrun Dump (TASD) interchange format is a file format for storing data to allow "Tool Assisted Speedruns" or "Tool Assisted Superplays" to be played on physical video game console hardware using TAS replay devices. Created to be hardware and software agnostic, the TASD interchange format uses a key-based, binary, packet format to break up pieces of information into easily-parsable and forward-compatible chunks. The format is extensible by simply defining additional keys or value types as necessary. When parsing the file, software can skip any packets whose key is unknown or unsupported.

Keys can be used multiple times or completely omitted as needed. This reusability eliminates the need of a predefined delimiter to separate pieces of data such as a list of TAS authors.

While files generated by emulator dump scripts should provide as much information as possible, because keys are optional, the file can be expanded later with any additional data as desired. No intermediary file format is necessary.

-

-1.1. Overview and Preliminaries +

+1.1. Overview and Preliminaries

-

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

+

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

-

-1.1.1. Notation and Vocabulary +

+1.1.1. Notation and Vocabulary

Data Types:

    @@ -1603,7 +1625,7 @@ li > p:last-of-type {

    We use the terms byte and octet interchangeably in this document.

    Unless specified otherwise, all multi-octet integers are big-endian.

    We use the terms Tool Assisted Speedrun, Tool Assisted Superplay and TAS interchangeably in this document.

    -

    In subsections of (Section 4.2), the term "in direct form" is used. That term is defined to mean a packet in a TASD file directly (first order packet) rather than a packet inside a TRANSITION or MOVIE_TRANSITION packet (second order packet).

    +

    In subsections of (Section 4.2), the term "in direct form" is used. That term is defined to mean a packet in a TASD file directly (first order packet) rather than a packet inside a TRANSITION or MOVIE_TRANSITION packet (second order packet).

    String values MUST use UTF-8 encoding. If an example of a string value is given, the example will be between quotation marks. The quotation marks are not included in the string. Not all content between quotations will be string value examples, so be aware of that when continuing through this document.

    Unsigned and signed integers can have different bit widths. For instance, an 8-bit integer can be used in one part of the specification and a 64-bit integer can be used in another part of the specification.

    Boolean values MUST be a single octet with the value of 0 for FALSE or 1 for TRUE.

    @@ -1707,8 +1729,8 @@ li > p:last-of-type {
-

-1.2. Motivations +

+1.2. Motivations

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:

    @@ -1723,8 +1745,8 @@ li > p:last-of-type {

Consideration was also given to how usable the format would be for the software that interacts with replay devices (examples: methods of ingestion/parsing, ease of ingestion/parsing in various languages).

-

-1.2.1. Problems With Existing Formats +

+1.2.1. Problems With Existing Formats

Most existing formats are either incomplete for some verification needs or don't exist at all for some consoles. A format commonly used for NES console verifications (r08) only encodes 2 standard controllers worth of sequential data and a format commonly used for SNES console verifications (r16m) only encodes up to 8 standard controllers worth of sequential data. There is no built in way to store RESET press timing information or indicate additional settings/information. Non-standard controllers are also not supported in commonly used formats.

For consoles not as popular as the NES and SNES, controller input formats would frequently be written in a way that is meant only to work and not in a "standard" way. While that process works, it's less than ideal for redistribution of console replays so that others (especially with differing TAS replay devices) can also verify the same TAS.

@@ -1733,8 +1755,8 @@ li > p:last-of-type {
-

-2. Structure +

+2. Structure

TASD files MUST begin with a header. The header MUST be followed by 0 or more packets.

@@ -1750,19 +1772,19 @@ li > p:last-of-type {
Header
-
7 octet header as defined in Section 3. +
7 octet header as defined in Section 3.
Packets
-
List of 0 or more packets. Refer to Section 4 for packet definitions. +
List of 0 or more packets. Refer to Section 4 for packet definitions.
PEXP
-
Length of PLEN. +
Length of PLEN. PEXP MUST be a value greater than 0.
PLEN
@@ -1835,12 +1857,12 @@ li > p:last-of-type {

All packets are OPTIONAL.

-

-4.1. Assigned Packet Keys Without Descriptions +

+4.1. Assigned Packet Keys Without Descriptions

-

-4.1.1. General Keys +

+4.1.1. General Keys

[00 01]
@@ -1934,8 +1956,8 @@ li > p:last-of-type {
-

-4.1.2. NES Specific Keys +

+4.1.2. NES Specific Keys

[01 01]
@@ -1957,8 +1979,8 @@ li > p:last-of-type {
-

-4.1.3. SNES Specific Keys +

+4.1.3. SNES Specific Keys

[02 02]
@@ -1980,8 +2002,8 @@ li > p:last-of-type {
-

-4.1.4. Genesis Specific Keys +

+4.1.4. Genesis Specific Keys

[08 04]
@@ -1991,8 +2013,8 @@ li > p:last-of-type {
-

-4.1.5. Input Frame/Timing Keys +

+4.1.5. Input Frame/Timing Keys

[FE 01]
@@ -2018,8 +2040,8 @@ li > p:last-of-type {
-

-4.1.6. Extraneous Keys +

+4.1.6. Extraneous Keys

[FF 01]
@@ -2039,242 +2061,242 @@ li > p:last-of-type {
-

-4.2. Assigned Packet Keys With Descriptions +

+4.2. Assigned Packet Keys With Descriptions

-

-4.2.1. General Key Descriptions +

+4.2.1. General Key Descriptions

[00 01] - CONSOLE_TYPE
-
Specifies console used on emulator when dumping the TAS controller inputs. This packet type is OPTIONAL but SHOULD be included in a TASD file and a TASD file SHOULD NOT contain more than 1 of this packet type in direct form. Discussed in (Section 4.3.1.1). +
Specifies console used on emulator when dumping the TAS controller inputs. This packet type is OPTIONAL but SHOULD be included in a TASD file and a TASD file SHOULD NOT contain more than 1 of this packet type in direct form. Discussed in (Section 4.3.1.1).
[00 02] - CONSOLE_REGION
-
Specifies video region of console used for the TAS. This packet type is OPTIONAL and a TASD file MAY contain more than 1 of this packet type. Discussed in (Section 4.3.1.2). +
Specifies video region of console used for the TAS. This packet type is OPTIONAL and a TASD file MAY contain more than 1 of this packet type. Discussed in (Section 4.3.1.2).
[00 03] - GAME_TITLE
-
Specifies the name of the game the TAS is written for. This packet type is OPTIONAL and a TASD file MAY contain more than 1 of this packet type. Discussed in (Section 4.3.1.3). +
Specifies the name of the game the TAS is written for. This packet type is OPTIONAL and a TASD file MAY contain more than 1 of this packet type. Discussed in (Section 4.3.1.3).
[00 04] - ROM_NAME
-
Specifies the name of the specific ROM file used for the TAS. This packet type is OPTIONAL and a TASD file MAY contain more than 1 of this packet type. Discussed in (Section 4.3.1.4). +
Specifies the name of the specific ROM file used for the TAS. This packet type is OPTIONAL and a TASD file MAY contain more than 1 of this packet type. Discussed in (Section 4.3.1.4).
[00 05] - ATTRIBUTION
-
Specifies the name of someone involved in the TAS or the creation or management of the TASD file in order to provide proper attribution for work done. This packet type is OPTIONAL and a TASD file MAY contain more than 1 of this packet type. Discussed in (Section 4.3.1.5). +
Specifies the name of someone involved in the TAS or the creation or management of the TASD file in order to provide proper attribution for work done. This packet type is OPTIONAL and a TASD file MAY contain more than 1 of this packet type. Discussed in (Section 4.3.1.5).
[00 06] - CATEGORY
-
Specifies the run category of the TAS. This packet type is OPTIONAL and a TASD file SHOULD NOT contain more than 1 of this packet type in direct form. Discussed in (Section 4.3.1.6). +
Specifies the run category of the TAS. This packet type is OPTIONAL and a TASD file SHOULD NOT contain more than 1 of this packet type in direct form. Discussed in (Section 4.3.1.6).
[00 07] - EMULATOR_NAME
-
Specifies the emulator used while dumping TAS controller inputs. This packet type is OPTIONAL and a TASD file SHOULD NOT contain more than 1 of this packet type in direct form. Discussed in (Section 4.3.1.7). +
Specifies the emulator used while dumping TAS controller inputs. This packet type is OPTIONAL and a TASD file SHOULD NOT contain more than 1 of this packet type in direct form. Discussed in (Section 4.3.1.7).
[00 08] - EMULATOR_VERSION
-
Specifies the version of the emulator used while dump the TAS controller inputs. This packet type is OPTIONAL and a TASD file SHOULD NOT contain more than 1 of this packet type in direct form. Discussed in (Section 4.3.1.8). +
Specifies the version of the emulator used while dump the TAS controller inputs. This packet type is OPTIONAL and a TASD file SHOULD NOT contain more than 1 of this packet type in direct form. Discussed in (Section 4.3.1.8).
[00 09] - EMULATOR_CORE
-
Specifies the core of the emulator used while dumping the TAS controller inputs. This packet type is OPTIONAL and a TASD file SHOULD NOT contain more than 1 of this packet type in direct form. Discussed in (Section 4.3.1.9). +
Specifies the core of the emulator used while dumping the TAS controller inputs. This packet type is OPTIONAL and a TASD file SHOULD NOT contain more than 1 of this packet type in direct form. Discussed in (Section 4.3.1.9).
[00 0A] - TAS_LAST_MODIFIED
-
Specifies when the TAS was last modified. Frequently used to specify the date and time when the TAS was published. This packet type is OPTIONAL and a TASD file SHOULD NOT contain more than 1 of this packet type in direct form. Discussed in (Section 4.3.1.10). +
Specifies when the TAS was last modified. Frequently used to specify the date and time when the TAS was published. This packet type is OPTIONAL and a TASD file SHOULD NOT contain more than 1 of this packet type in direct form. Discussed in (Section 4.3.1.10).
[00 0B] - DUMP_CREATED
-
Specifies when the TASD file was first created. This packet is OPTIONAL but SHOULD be included in a TASD file and a TASD file SHOULD NOT contain more than 1 of this packet type. Discussed in (Section 4.3.1.11). +
Specifies when the TASD file was first created. This packet is OPTIONAL but SHOULD be included in a TASD file and a TASD file SHOULD NOT contain more than 1 of this packet type. Discussed in (Section 4.3.1.11).
[00 0C] - DUMP_LAST_MODIFIED
-
Specifies when the TASD file was last modified. This packet is OPTIONAL but SHOULD be included in a TASD file and a TASD file SHOULD NOT contain more than 1 of this packet type. Discussed in (Section 4.3.1.12). +
Specifies when the TASD file was last modified. This packet is OPTIONAL but SHOULD be included in a TASD file and a TASD file SHOULD NOT contain more than 1 of this packet type. Discussed in (Section 4.3.1.12).
[00 0D] - TOTAL_FRAMES
-
Specifies the total number of frames in the TAS. This packet type is OPTIONAL and a TASD file SHOULD NOT contain more than 1 of this packet type in direct form. Discussed in (Section 4.3.1.13). +
Specifies the total number of frames in the TAS. This packet type is OPTIONAL and a TASD file SHOULD NOT contain more than 1 of this packet type in direct form. Discussed in (Section 4.3.1.13).
[00 0E] - RERECORDS
-
Specifies the total number of rerecords of the TAS. This packet type is OPTIONAL and a TASD file SHOULD NOT contain more than 1 of this packet type in direct form. Discussed in (Section 4.3.1.14). +
Specifies the total number of rerecords of the TAS. This packet type is OPTIONAL and a TASD file SHOULD NOT contain more than 1 of this packet type in direct form. Discussed in (Section 4.3.1.14).
[00 0F] - SOURCE_LINK
-
Specifies the source link for the TAS. This packet type is OPTIONAL and a TASD file SHOULD NOT contain more than 1 of this packet type. Discussed in (Section 4.3.1.15). +
Specifies the source link for the TAS. This packet type is OPTIONAL and a TASD file SHOULD NOT contain more than 1 of this packet type. Discussed in (Section 4.3.1.15).
[00 10] - BLANK_FRAMES
-
Specifies the number of blank controller inputs or frames to prepend to the inputs of the TAS when played on hardware. This packet type is OPTIONAL and a TASD file SHOULD NOT contain more than 1 of this packet type in direct form. Discussed in (Section 4.3.1.16). +
Specifies the number of blank controller inputs or frames to prepend to the inputs of the TAS when played on hardware. This packet type is OPTIONAL and a TASD file SHOULD NOT contain more than 1 of this packet type in direct form. Discussed in (Section 4.3.1.16).
[00 11] - VERIFIED
-
Specifies whether the TAS is verified to run on hardware, also known as "console verified", using the TASD file. This packet type is OPTIONAL and a TASD file SHOULD NOT contain more than 1 of this packet type in direct form. Discussed in (Section 4.3.1.17). +
Specifies whether the TAS is verified to run on hardware, also known as "console verified", using the TASD file. This packet type is OPTIONAL and a TASD file SHOULD NOT contain more than 1 of this packet type in direct form. Discussed in (Section 4.3.1.17).
[00 12] - MEMORY_INIT
-
Specifies initial memory values used for the TAS. This packet type is OPTIONAL and a TASD file MAY contain more than 1 of this packet type. Discussed in (Section 4.3.1.18). +
Specifies initial memory values used for the TAS. This packet type is OPTIONAL and a TASD file MAY contain more than 1 of this packet type. Discussed in (Section 4.3.1.18).
[00 13] - GAME_IDENTIFIER
-
Specifies an identifier for the game the TAS is written for. This can be checksums, hashes, or other identifying data. This packet type is OPTIONAL and a TASD file MAY contain more than 1 of this packet type. Discussed in (Section 4.3.1.19). +
Specifies an identifier for the game the TAS is written for. This can be checksums, hashes, or other identifying data. This packet type is OPTIONAL and a TASD file MAY contain more than 1 of this packet type. Discussed in (Section 4.3.1.19).
[00 14] - MOVIE_LICENSE
-
Specifies a copyright license for the TAS. This packet type is OPTIONAL and a TASD file MAY contain more than 1 of this packet type. Discussed in (Section 4.3.1.20). +
Specifies a copyright license for the TAS. This packet type is OPTIONAL and a TASD file MAY contain more than 1 of this packet type. Discussed in (Section 4.3.1.20).
[00 15] - MOVIE_FILE
-
Specifies the TAS movie data. This packet type is OPTIONAL and a TASD file SHOULD NOT contain more than 1 of this packet type. Discussed in (Section 4.3.1.21). +
Specifies the TAS movie data. This packet type is OPTIONAL and a TASD file SHOULD NOT contain more than 1 of this packet type. Discussed in (Section 4.3.1.21).
[00 F0] - PORT_CONTROLLER
-
Specifies the controller type in specific console controller ports for the TAS when played on hardware. This packet type is OPTIONAL and a TASD file SHOULD NOT contain more than 1 of this packet type in direct form. Discussed in (Section 4.3.1.22). +
Specifies the controller type in specific console controller ports for the TAS when played on hardware. This packet type is OPTIONAL and a TASD file SHOULD NOT contain more than 1 of this packet type in direct form. Discussed in (Section 4.3.1.22).
-

-4.2.2. NES Specific Key Descriptions +

+4.2.2. NES Specific Key Descriptions

[01 01] - NES_LATCH_FILTER
-
Specifies a latch filter time in microseconds for how long how long to wait after a latch signal until new latch signals SHOULD be accepted by the replay device. This packet type is OPTIONAL and a TASD file SHOULD NOT contain more than 1 of this packet type in direct form. Discussed in (Section 4.3.2.1). +
Specifies a latch filter time in microseconds for how long how long to wait after a latch signal until new latch signals SHOULD be accepted by the replay device. This packet type is OPTIONAL and a TASD file SHOULD NOT contain more than 1 of this packet type in direct form. Discussed in (Section 4.3.2.1).
[01 02] - NES_CLOCK_FILTER
-
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 SHOULD be accepted by the replay device. This packet type is OPTIONAL and a TASD file SHOULD NOT contain more than 1 of this packet type in direct form. Discussed in (Section 4.3.2.2). +
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 SHOULD be accepted by the replay device. This packet type is OPTIONAL and a TASD file SHOULD NOT contain more than 1 of this packet type in direct form. Discussed in (Section 4.3.2.2).
[01 03] - NES_OVERREAD
-
Specifies whether a high or low signal SHOULD be sent to the NES console if the console clocks the replay device for more input buttons than are expected for the latch. This packet type is OPTIONAL and a TASD file SHOULD NOT contain more than 1 of this packet type in direct form. Discussed in (Section 4.3.2.3). +
Specifies whether a high or low signal SHOULD be sent to the NES console if the console clocks the replay device for more input buttons than are expected for the latch. This packet type is OPTIONAL and a TASD file SHOULD NOT contain more than 1 of this packet type in direct form. Discussed in (Section 4.3.2.3).
[01 04] - NES_GAME_GENIE_CODE
-
Specifies a Game Genie code for the TAS. This packet type is OPTIONAL and a TASD file MAY contain more than 1 of this packet type. Discussed in (Section 4.3.2.4). +
Specifies a Game Genie code for the TAS. This packet type is OPTIONAL and a TASD file MAY contain more than 1 of this packet type. Discussed in (Section 4.3.2.4).
-

-4.2.3. SNES Specific Key Descriptions +

+4.2.3. SNES Specific Key Descriptions

[02 02] - SNES_CLOCK_FILTER
-
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 SHOULD be accepted by the replay device. This packet type is OPTIONAL and a TASD file SHOULD NOT contain more than 1 of this packet type in direct form. Discussed in (Section 4.3.3.1). +
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 SHOULD be accepted by the replay device. This packet type is OPTIONAL and a TASD file SHOULD NOT contain more than 1 of this packet type in direct form. Discussed in (Section 4.3.3.1).
[02 03] - SNES_OVERREAD
-
Specifies whether a high or low signal SHOULD 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 OPTIONAL and a TASD file SHOULD NOT contain more than 1 of this packet type in direct form. Discussed in (Section 4.3.3.2). +
Specifies whether a high or low signal SHOULD 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 OPTIONAL and a TASD file SHOULD NOT contain more than 1 of this packet type in direct form. Discussed in (Section 4.3.3.2).
[02 04] - SNES_GAME_GENIE_CODE
-
Specifies a Game Genie code for the TAS. This packet type is OPTIONAL and a TASD file MAY contain more than 1 of this packet type. Discussed in (Section 4.3.3.3). +
Specifies a Game Genie code for the TAS. This packet type is OPTIONAL and a TASD file MAY contain more than 1 of this packet type. Discussed in (Section 4.3.3.3).
[02 05] - SNES_LATCH_TRAIN
-
Specifies Latch Trains for TAS. This packet type is OPTIONAL and a TASD file MAY contain more than 1 of this packet type. Discussed in (Section 4.3.3.4). +
Specifies Latch Trains for TAS. This packet type is OPTIONAL and a TASD file MAY contain more than 1 of this packet type. Discussed in (Section 4.3.3.4).
-

-4.2.4. Genesis Specific Key Descriptions +

+4.2.4. Genesis Specific Key Descriptions

[08 04] - GENESIS_GAME_GENIE_CODE
-
Specifies a Game Genie code for the TAS. This packet type is OPTIONAL and a TASD file MAY contain more than 1 of this packet type. Discussed in (Section 4.3.4.1). +
Specifies a Game Genie code for the TAS. This packet type is OPTIONAL and a TASD file MAY contain more than 1 of this packet type. Discussed in (Section 4.3.4.1).
-

-4.2.5. Input Frame/Timing Key Descriptions +

+4.2.5. Input Frame/Timing Key Descriptions

[FE 01] - INPUT_CHUNK
-
Specifies a chunk of input data for the TAS when played on hardware. All data from INPUT_CHUNK packets are concatenated together in order of appearance in the TASD file. If the INPUT_CHUNK packet type is used, the PORT_CONTROLLER packet type MUST be used. If the INPUT_CHUNK packet type is used, the INPUT_MOMENT packet type SHOULD NOT be used. This packet type is OPTIONAL and a TASD file MAY contain more than 1 of this packet type. Discussed in (Section 4.3.5.1). +
Specifies a chunk of input data for the TAS when played on hardware. All data from INPUT_CHUNK packets are concatenated together in order of appearance in the TASD file. If the INPUT_CHUNK packet type is used, the PORT_CONTROLLER packet type MUST be used. If the INPUT_CHUNK packet type is used, the INPUT_MOMENT packet type SHOULD NOT be used. This packet type is OPTIONAL and a TASD file MAY contain more than 1 of this packet type. Discussed in (Section 4.3.5.1).
[FE 02] - INPUT_MOMENT
-
Specifies input data that is sent from the replay device to the console with specific timing. If the INPUT_MOMENT packet type is used, the PORT_CONTROLLER packet type MUST be used. If the INPUT_MOMENT packet type is used, the INPUT_CHUNK packet type SHOULD NOT be used. This packet type is OPTIONAL and a TASD file MAY contain more than 1 of this packet type. Discussed in (Section 4.3.5.2). +
Specifies input data that is sent from the replay device to the console with specific timing. If the INPUT_MOMENT packet type is used, the PORT_CONTROLLER packet type MUST be used. If the INPUT_MOMENT packet type is used, the INPUT_CHUNK packet type SHOULD NOT be used. This packet type is OPTIONAL and a TASD file MAY contain more than 1 of this packet type. Discussed in (Section 4.3.5.2).
[FE 03] - TRANSITION
-
Specifies when a transition or change occurs during a TAS replay (example: console reset or changing of controller types). This packet type is OPTIONAL and a TASD file MAY contain more than 1 of this packet type. Discussed in (Section 4.3.5.3). +
Specifies when a transition or change occurs during a TAS replay (example: console reset or changing of controller types). This packet type is OPTIONAL and a TASD file MAY contain more than 1 of this packet type. Discussed in (Section 4.3.5.3).
[FE 04] - LAG_FRAME_CHUNK
-
Specifies a chunk of lag frames in a TAS based on the original TAS movie. This packet type is OPTIONAL and a TASD file MAY contain more than 1 of this packet type. Discussed in (Section 4.3.5.4). +
Specifies a chunk of lag frames in a TAS based on the original TAS movie. This packet type is OPTIONAL and a TASD file MAY contain more than 1 of this packet type. Discussed in (Section 4.3.5.4).
[FE 05] - MOVIE_TRANSITION
-
Specifies when a transition or change occurs in the original TAS movie (example: console reset or changing of controller types). This packet type is OPTIONAL and a TASD file MAY contain more than 1 of this packet type. Discussed in (Section 4.3.5.5). +
Specifies when a transition or change occurs in the original TAS movie (example: console reset or changing of controller types). This packet type is OPTIONAL and a TASD file MAY contain more than 1 of this packet type. Discussed in (Section 4.3.5.5).
-

-4.2.6. Extraneous Key Descriptions +

+4.2.6. Extraneous Key Descriptions

[FF 01] - COMMENT
-
Comment data. This packet type is OPTIONAL and a TASD file MAY contain more than 1 of this packet type. Discussed in (Section 4.3.6.1). +
Comment data. This packet type is OPTIONAL and a TASD file MAY contain more than 1 of this packet type. Discussed in (Section 4.3.6.1).
[FF FE] - EXPERIMENTAL
-
TASD file is using draft/experimental packets. This packet type is OPTIONAL and a TASD file SHOULD NOT contain more than 1 of this packet type. Discussed in (Section 4.3.6.2). +
TASD file is using draft/experimental packets. This packet type is OPTIONAL and a TASD file SHOULD NOT contain more than 1 of this packet type. Discussed in (Section 4.3.6.2).
[FF FF] - UNSPECIFIED
-
Unspecified packet data. Can contain any arbitrary data. This packet type is OPTIONAL and a TASD file MAY contain more than 1 of this packet type. Discussed in (Section 4.3.6.3). +
Unspecified packet data. Can contain any arbitrary data. This packet type is OPTIONAL and a TASD file MAY contain more than 1 of this packet type. Discussed in (Section 4.3.6.3).
@@ -2282,17 +2304,17 @@ li > p:last-of-type {
-

-4.3. Packet Payload Formats +

+4.3. Packet Payload Formats

-

-4.3.1. General Key Payload Formats +

+4.3.1. General Key Payload Formats

-
-4.3.1.1. CONSOLE_TYPE Packet +
+4.3.1.1. CONSOLE_TYPE Packet

CONSOLE_TYPE packets MUST be in the following format:

@@ -2334,8 +2356,8 @@ li > p:last-of-type {
-
-4.3.1.2. CONSOLE_REGION Packet +
+4.3.1.2. CONSOLE_REGION Packet

CONSOLE_REGION packets MUST be in the following format:

@@ -2361,8 +2383,8 @@ li > p:last-of-type {
-
-4.3.1.3. GAME_TITLE Packet +
+4.3.1.3. GAME_TITLE Packet

GAME_TITLE packets MUST be in the following format:

@@ -2389,8 +2411,8 @@ li > p:last-of-type {
-
-4.3.1.4. ROM_NAME Packet +
+4.3.1.4. ROM_NAME Packet

ROM_NAME packets MUST be in the following format:

@@ -2417,8 +2439,8 @@ li > p:last-of-type {
-
-4.3.1.5. ATTRIBUTION Packet +
+4.3.1.5. ATTRIBUTION Packet

ATTRIBUTION packets MUST be in the following format:

@@ -2455,8 +2477,8 @@ li > p:last-of-type {
-
-4.3.1.6. CATEGORY Packet +
+4.3.1.6. CATEGORY Packet

CATEGORY packets MUST be in the following format:

@@ -2483,8 +2505,8 @@ li > p:last-of-type {
-
-4.3.1.7. EMULATOR_NAME Packet +
+4.3.1.7. EMULATOR_NAME Packet

EMULATOR_NAME packets MUST be in the following format:

@@ -2511,8 +2533,8 @@ li > p:last-of-type {
-
-4.3.1.8. EMULATOR_VERSION Packet +
+4.3.1.8. EMULATOR_VERSION Packet

EMULATOR_VERSION packets MUST be in the following format:

@@ -2539,8 +2561,8 @@ li > p:last-of-type {
-
-4.3.1.9. EMULATOR_CORE Packet +
+4.3.1.9. EMULATOR_CORE Packet

EMULATOR_CORE packets MUST be in the following format:

@@ -2567,8 +2589,8 @@ li > p:last-of-type {
-
-4.3.1.10. TAS_LAST_MODIFIED Packet +
+4.3.1.10. TAS_LAST_MODIFIED Packet

TAS_LAST_MODIFIED packets MUST be in the following format:

@@ -2591,8 +2613,8 @@ li > p:last-of-type {
-
-4.3.1.11. DUMP_CREATED Packet +
+4.3.1.11. DUMP_CREATED Packet

DUMP_CREATED packets MUST be in the following format:

@@ -2615,8 +2637,8 @@ li > p:last-of-type {
-
-4.3.1.12. DUMP_LAST_MODIFIED Packet +
+4.3.1.12. DUMP_LAST_MODIFIED Packet

DUMP_LAST_MODIFIED packets MUST be in the following format:

@@ -2639,8 +2661,8 @@ li > p:last-of-type {
-
-4.3.1.13. TOTAL_FRAMES Packet +
+4.3.1.13. TOTAL_FRAMES Packet

TOTAL_FRAMES packets MUST be in the following format:

@@ -2663,8 +2685,8 @@ li > p:last-of-type {
-
-4.3.1.14. RERECORDS Packet +
+4.3.1.14. RERECORDS Packet

RERECORDS packets MUST be in the following format:

@@ -2687,8 +2709,8 @@ li > p:last-of-type {