From 1f73bd13fcd3e0c4c69e0d16934a8b3f769caffc Mon Sep 17 00:00:00 2001 From: Vi Grey Date: Mon, 3 Jul 2023 18:11:57 -0500 Subject: Add SNES_LATCH_TRAIN and remove PDF outputs --- docs/latest/draft-tasd-spec.html | 727 ++-- docs/latest/draft-tasd-spec.pdf | 8669 -------------------------------------- docs/latest/draft-tasd-spec.txt | 65 +- 3 files changed, 425 insertions(+), 9036 deletions(-) delete mode 100644 docs/latest/draft-tasd-spec.pdf (limited to 'docs/latest') diff --git a/docs/latest/draft-tasd-spec.html b/docs/latest/draft-tasd-spec.html index 875a892..60a7a65 100644 --- a/docs/latest/draft-tasd-spec.html +++ b/docs/latest/draft-tasd-spec.html @@ -11,28 +11,25 @@ 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"> - + - + + @@ -1189,7 +1203,7 @@ li > p:last-of-type { TASD File Format Specification -September 2022 +July 2023 Grey & Bigbass @@ -1204,7 +1218,7 @@ li > p:last-of-type {
Independent TAS Console Replay Research Group
Published:
- +
Authors:
@@ -1226,230 +1240,230 @@ li > p:last-of-type {
- â–²

-Table of Contents + â–²

+Table of Contents

@@ -1581,20 +1595,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 Assited 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.¶

-

-1.1.1. Notation and Vocabulary +

+1.1.1. Notation and Vocabulary

Data Types:¶

    @@ -1607,6 +1621,8 @@ li > p:last-of-type {
  • (N) = Unsigned Integer¶
  • (B) = Boolean¶ +
  • +
  • ([]N) = List of Unsigned Integers¶

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

@@ -1716,8 +1732,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:¶

    @@ -1732,8 +1748,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.¶

@@ -1742,8 +1758,8 @@ li > p:last-of-type {
-

-2. Header +

+2. Header

TASD files MUST include a header, which MUST be in the following format:¶

@@ -1774,8 +1790,8 @@ li > p:last-of-type {
-

-3. Packets +

+3. Packets

Packets MUST be in the following format:¶

@@ -1814,12 +1830,12 @@ li > p:last-of-type {

All packets are OPTIONAL.¶

-

-3.1. Assigned Packet Keys Without Descriptions +

+3.1. Assigned Packet Keys Without Descriptions

-

-3.1.1. General Keys +

+3.1.1. General Keys

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

-3.1.2. NES Specific Keys +

+3.1.2. NES Specific Keys

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

-3.1.3. SNES Specific Keys +

+3.1.3. SNES Specific Keys

[02 02]
@@ -1953,14 +1969,14 @@ li > p:last-of-type {
[02 05]
-
SNES_LATCH_TRAIN (RESERVED)¶ +
SNES_LATCH_TRAIN¶
-

-3.1.4. Genesis Specific Keys +

+3.1.4. Genesis Specific Keys

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

-3.1.5. Input Frame/Timing Keys +

+3.1.5. Input Frame/Timing Keys

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

-3.1.6. Extraneous Keys +

+3.1.6. Extraneous Keys

[FF 01]
@@ -2018,12 +2034,12 @@ li > p:last-of-type {
-

-3.2. Assigned Packet Keys With Descriptions +

+3.2. Assigned Packet Keys With Descriptions

-

-3.2.1. General Key Descriptions +

+3.2.1. General Key Descriptions

@@ -2139,8 +2155,8 @@ li > p:last-of-type {
-

-3.2.2. NES Specific Key Descriptions +

+3.2.2. NES Specific Key Descriptions

@@ -2166,35 +2182,35 @@ li > p:last-of-type {
-

-3.2.3. SNES Specific Key Descriptions +

+3.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 long how to wait after a clock pulse before 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 3.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 3.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 3.3.3.2).¶ +[01 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 3.3.3.2).¶
-[02 04] - SNES_GAME_GENIE_CODE
+[01 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 3.3.3.3).¶
-[02 05] - SNES_LATCH_TRAIN (RESERVED)
-
This packet type is not yet designed and is intended to be described in the future. Discussed in (Section 3.3.3.4).¶ +[01 04] - 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 3.3.3.4).¶
-

-3.2.4. Genesis Specific Key Descriptions +

+3.2.4. Genesis Specific Key Descriptions

@@ -2205,8 +2221,8 @@ li > p:last-of-type {
-

-3.2.5. Input Frame/Timing Key Descriptions +

+3.2.5. Input Frame/Timing Key Descriptions

@@ -2237,8 +2253,8 @@ li > p:last-of-type {
-

-3.2.6. Extraneous Key Descriptions +

+3.2.6. Extraneous Key Descriptions

@@ -2248,7 +2264,7 @@ li > p:last-of-type {
[FF FE] - EXPERIMENTAL
-
TASD file is using experimental packets. This packet type is OPTIONAL and a TASD file SHOULD NOT contain more than 1 of this packet type. Discussed in (Section 3.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 3.3.6.2).¶
@@ -2261,17 +2277,17 @@ li > p:last-of-type {
-

-3.3. Packet Payload Formats +

+3.3. Packet Payload Formats

-

-3.3.1. General Key Payload Formats +

+3.3.1. General Key Payload Formats

-
-3.3.1.1. CONSOLE_TYPE Packet +
+3.3.1.1. CONSOLE_TYPE Packet

CONSOLE_TYPE packets MUST be in the following format:¶

@@ -2313,8 +2329,8 @@ li > p:last-of-type {
-
-3.3.1.2. CONSOLE_REGION Packet +
+3.3.1.2. CONSOLE_REGION Packet

CONSOLE_REGION packets MUST be in the following format:¶

@@ -2340,8 +2356,8 @@ li > p:last-of-type {
-
-3.3.1.3. GAME_TITLE Packet +
+3.3.1.3. GAME_TITLE Packet

GAME_TITLE packets MUST be in the following format:¶

@@ -2368,8 +2384,8 @@ li > p:last-of-type {
-
-3.3.1.4. ROM_NAME Packet +
+3.3.1.4. ROM_NAME Packet

ROM_NAME packets MUST be in the following format:¶

@@ -2396,8 +2412,8 @@ li > p:last-of-type {
-
-3.3.1.5. ATTRIBUTION Packet +
+3.3.1.5. ATTRIBUTION Packet

ATTRIBUTION packets MUST be in the following format:¶

@@ -2434,8 +2450,8 @@ li > p:last-of-type {
-
-3.3.1.6. CATEGORY Packet +
+3.3.1.6. CATEGORY Packet

CATEGORY packets MUST be in the following format:¶

@@ -2462,8 +2478,8 @@ li > p:last-of-type {
-
-3.3.1.7. EMULATOR_NAME Packet +
+3.3.1.7. EMULATOR_NAME Packet

EMULATOR_NAME packets MUST be in the following format:¶

@@ -2490,8 +2506,8 @@ li > p:last-of-type {
-
-3.3.1.8. EMULATOR_VERSION Packet +
+3.3.1.8. EMULATOR_VERSION Packet

EMULATOR_VERSION packets MUST be in the following format:¶

@@ -2518,8 +2534,8 @@ li > p:last-of-type {
-
-3.3.1.9. EMULATOR_CORE Packet +
+3.3.1.9. EMULATOR_CORE Packet

EMULATOR_CORE packets MUST be in the following format:¶

@@ -2546,8 +2562,8 @@ li > p:last-of-type {
-
-3.3.1.10. TAS_LAST_MODIFIED Packet +
+3.3.1.10. TAS_LAST_MODIFIED Packet

TAS_LAST_MODIFIED packets MUST be in the following format:¶

@@ -2570,8 +2586,8 @@ li > p:last-of-type {
-
-3.3.1.11. DUMP_CREATED Packet +
+3.3.1.11. DUMP_CREATED Packet

DUMP_CREATED packets MUST be in the following format:¶

@@ -2594,8 +2610,8 @@ li > p:last-of-type {
-
-3.3.1.12. DUMP_LAST_MODIFIED Packet +
+3.3.1.12. DUMP_LAST_MODIFIED Packet

DUMP_LAST_MODIFIED packets MUST be in the following format:¶

@@ -2618,8 +2634,8 @@ li > p:last-of-type {
-
-3.3.1.13. TOTAL_FRAMES Packet +
+3.3.1.13. TOTAL_FRAMES Packet

TOTAL_FRAMES packets MUST be in the following format:¶

@@ -2642,8 +2658,8 @@ li > p:last-of-type {
-
-3.3.1.14. RERECORDS Packet +
+3.3.1.14. RERECORDS Packet

RERECORDS packets MUST be in the following format:¶

@@ -2666,8 +2682,8 @@ li > p:last-of-type {