summaryrefslogtreecommitdiff
path: root/docs/tasd-spec-0001/draft-tasd-spec-0001.txt
diff options
context:
space:
mode:
authorbigbass1997 <bigbass1997.website@gmail.com>2023-09-17 19:51:02 -0500
committerbigbass1997 <bigbass1997.website@gmail.com>2023-09-17 19:51:02 -0500
commit993ef75a0410c4850322c1033a066b360f62c14a (patch)
tree1e0402d5c963866c350171581a865532f0203fbf /docs/tasd-spec-0001/draft-tasd-spec-0001.txt
parenta668f8772fd00a380ae2ec5ed19c36cd3dd0999d (diff)
downloadtasd-993ef75a0410c4850322c1033a066b360f62c14a.tar.gz
tasd-993ef75a0410c4850322c1033a066b360f62c14a.zip
Added a new "Structure" section to the spec
Diffstat (limited to 'docs/tasd-spec-0001/draft-tasd-spec-0001.txt')
-rw-r--r--docs/tasd-spec-0001/draft-tasd-spec-0001.txt488
1 files changed, 254 insertions, 234 deletions
diff --git a/docs/tasd-spec-0001/draft-tasd-spec-0001.txt b/docs/tasd-spec-0001/draft-tasd-spec-0001.txt
index 0a9abf8..8288fc9 100644
--- a/docs/tasd-spec-0001/draft-tasd-spec-0001.txt
+++ b/docs/tasd-spec-0001/draft-tasd-spec-0001.txt
@@ -7,7 +7,7 @@ Independent TAS Console Replay Research Group V. Grey
Bigbass
rasteri
- 14 September 2023
+ 17 September 2023
TASD File Format Specification Version 1
@@ -33,99 +33,100 @@ Table of Contents
1.1.1. Notation and Vocabulary
1.2. Motivations
1.2.1. Problems With Existing Formats
- 2. Header
- 3. Packets
- 3.1. Assigned Packet Keys Without Descriptions
- 3.1.1. General Keys
- 3.1.2. NES Specific Keys
- 3.1.3. SNES Specific Keys
- 3.1.4. Genesis Specific Keys
- 3.1.5. Input Frame/Timing Keys
- 3.1.6. Extraneous Keys
- 3.2. Assigned Packet Keys With Descriptions
- 3.2.1. General Key Descriptions
- 3.2.2. NES Specific Key Descriptions
- 3.2.3. SNES Specific Key Descriptions
- 3.2.4. Genesis Specific Key Descriptions
- 3.2.5. Input Frame/Timing Key Descriptions
- 3.2.6. Extraneous Key Descriptions
- 3.3. Packet Payload Formats
- 3.3.1. General Key Payload Formats
- 3.3.1.1. CONSOLE_TYPE Packet
- 3.3.1.2. CONSOLE_REGION Packet
- 3.3.1.3. GAME_TITLE Packet
- 3.3.1.4. ROM_NAME Packet
- 3.3.1.5. ATTRIBUTION Packet
- 3.3.1.6. CATEGORY Packet
- 3.3.1.7. EMULATOR_NAME Packet
- 3.3.1.8. EMULATOR_VERSION Packet
- 3.3.1.9. EMULATOR_CORE Packet
- 3.3.1.10. TAS_LAST_MODIFIED Packet
- 3.3.1.11. DUMP_CREATED Packet
- 3.3.1.12. DUMP_LAST_MODIFIED Packet
- 3.3.1.13. TOTAL_FRAMES Packet
- 3.3.1.14. RERECORDS Packet
- 3.3.1.15. SOURCE_LINK Packet
- 3.3.1.16. BLANK_FRAMES Packet
- 3.3.1.17. VERIFIED Packet
- 3.3.1.18. MEMORY_INIT Packet
- 3.3.1.19. GAME_IDENTIFIER Packet
- 3.3.1.20. MOVIE_LICENSE Packet
- 3.3.1.21. MOVIE_FILE Packet
- 3.3.1.22. PORT_CONTROLLER Packet
- 3.3.2. NES Specific Key Payload Formats
- 3.3.2.1. NES_LATCH_FILTER Packet
- 3.3.2.2. NES_CLOCK_FILTER Packet
- 3.3.2.3. NES_OVERREAD Packet
- 3.3.2.4. NES_GAME_GENIE_CODE Packet
- 3.3.3. SNES Specific Key Payload Formats
- 3.3.3.1. SNES_CLOCK_FILTER Packet
- 3.3.3.2. SNES_OVERREAD Packet
- 3.3.3.3. SNES_GAME_GENIE_CODE Packet
- 3.3.3.4. SNES_LATCH_TRAIN Packet
- 3.3.4. Genesis Specific Key Payload Formats
- 3.3.4.1. GENESIS_GAME_GENIE_CODE Packet
- 3.3.5. Input Frame/Timing Key Payload Formats
- 3.3.5.1. INPUT_CHUNK Packet
- 3.3.5.2. INPUT_MOMENT Packet
- 3.3.5.3. TRANSITION Packet
- 3.3.5.4. LAG_FRAME_CHUNK Packet
- 3.3.5.5. MOVIE_TRANSITION
- 3.3.6. Extraneous Key Payload Formats
- 3.3.6.1. COMMENT Packet
- 3.3.6.2. EXPERIMENTAL Packet
- 3.3.6.3. UNSPECIFIED Packet
- 4. Controller Input Formats
- 4.1. NES/Famicom Controller Types
- 4.1.1. NES Standard Controller
- 4.1.2. NES Four Score
- 4.2. SNES Controller Types
- 4.2.1. SNES Standard Controller
- 4.2.2. SNES Mouse
- 4.2.3. SNES Super Multitap
- 4.3. N64 Controller Types
- 4.3.1. N64 Standard Controller
- 4.3.2. N64 Standard Controller with Rumble
- 4.3.3. N64 Standard Controller with Controller Pak
- 4.3.4. N64 Standard Controller with Transfer Pak
- 4.3.5. N64 Mouse
- 4.3.6. N64 Densha de Go
- 4.4. GameCube Controller Types
- 4.4.1. GameCube Standard Controller
- 4.5. Game Boy Controller Types
- 4.5.1. GB Standard Controller
- 4.6. Game Boy Color Controller Types
- 4.6.1. GBC Standard Controller
- 4.7. Game Boy Advance Controller Types
- 4.7.1. GBA Standard Controller
- 4.8. Genesis Controller Types
- 4.8.1. Genesis (Mega Drive) 3-Button
- 4.8.2. Genesis (Mega Drive) 6-Button
- 4.9. Atari 2600 Controller Types
- 4.9.1. A2600 Joystick
- 4.9.2. A2600 Keyboard Controller
- 5. References
- 5.1. Normative References
+ 2. Structure
+ 3. Header
+ 4. Packets
+ 4.1. Assigned Packet Keys Without Descriptions
+ 4.1.1. General Keys
+ 4.1.2. NES Specific Keys
+ 4.1.3. SNES Specific Keys
+ 4.1.4. Genesis Specific Keys
+ 4.1.5. Input Frame/Timing Keys
+ 4.1.6. Extraneous Keys
+ 4.2. Assigned Packet Keys With Descriptions
+ 4.2.1. General Key Descriptions
+ 4.2.2. NES Specific Key Descriptions
+ 4.2.3. SNES Specific Key Descriptions
+ 4.2.4. Genesis Specific Key Descriptions
+ 4.2.5. Input Frame/Timing Key Descriptions
+ 4.2.6. Extraneous Key Descriptions
+ 4.3. Packet Payload Formats
+ 4.3.1. General Key Payload Formats
+ 4.3.1.1. CONSOLE_TYPE Packet
+ 4.3.1.2. CONSOLE_REGION Packet
+ 4.3.1.3. GAME_TITLE Packet
+ 4.3.1.4. ROM_NAME Packet
+ 4.3.1.5. ATTRIBUTION Packet
+ 4.3.1.6. CATEGORY Packet
+ 4.3.1.7. EMULATOR_NAME Packet
+ 4.3.1.8. EMULATOR_VERSION Packet
+ 4.3.1.9. EMULATOR_CORE Packet
+ 4.3.1.10. TAS_LAST_MODIFIED Packet
+ 4.3.1.11. DUMP_CREATED Packet
+ 4.3.1.12. DUMP_LAST_MODIFIED Packet
+ 4.3.1.13. TOTAL_FRAMES Packet
+ 4.3.1.14. RERECORDS Packet
+ 4.3.1.15. SOURCE_LINK Packet
+ 4.3.1.16. BLANK_FRAMES Packet
+ 4.3.1.17. VERIFIED Packet
+ 4.3.1.18. MEMORY_INIT Packet
+ 4.3.1.19. GAME_IDENTIFIER Packet
+ 4.3.1.20. MOVIE_LICENSE Packet
+ 4.3.1.21. MOVIE_FILE Packet
+ 4.3.1.22. PORT_CONTROLLER Packet
+ 4.3.2. NES Specific Key Payload Formats
+ 4.3.2.1. NES_LATCH_FILTER Packet
+ 4.3.2.2. NES_CLOCK_FILTER Packet
+ 4.3.2.3. NES_OVERREAD Packet
+ 4.3.2.4. NES_GAME_GENIE_CODE Packet
+ 4.3.3. SNES Specific Key Payload Formats
+ 4.3.3.1. SNES_CLOCK_FILTER Packet
+ 4.3.3.2. SNES_OVERREAD Packet
+ 4.3.3.3. SNES_GAME_GENIE_CODE Packet
+ 4.3.3.4. SNES_LATCH_TRAIN Packet
+ 4.3.4. Genesis Specific Key Payload Formats
+ 4.3.4.1. GENESIS_GAME_GENIE_CODE Packet
+ 4.3.5. Input Frame/Timing Key Payload Formats
+ 4.3.5.1. INPUT_CHUNK Packet
+ 4.3.5.2. INPUT_MOMENT Packet
+ 4.3.5.3. TRANSITION Packet
+ 4.3.5.4. LAG_FRAME_CHUNK Packet
+ 4.3.5.5. MOVIE_TRANSITION
+ 4.3.6. Extraneous Key Payload Formats
+ 4.3.6.1. COMMENT Packet
+ 4.3.6.2. EXPERIMENTAL Packet
+ 4.3.6.3. UNSPECIFIED Packet
+ 5. Controller Input Formats
+ 5.1. NES/Famicom Controller Types
+ 5.1.1. NES Standard Controller
+ 5.1.2. NES Four Score
+ 5.2. SNES Controller Types
+ 5.2.1. SNES Standard Controller
+ 5.2.2. SNES Mouse
+ 5.2.3. SNES Super Multitap
+ 5.3. N64 Controller Types
+ 5.3.1. N64 Standard Controller
+ 5.3.2. N64 Standard Controller with Rumble
+ 5.3.3. N64 Standard Controller with Controller Pak
+ 5.3.4. N64 Standard Controller with Transfer Pak
+ 5.3.5. N64 Mouse
+ 5.3.6. N64 Densha de Go
+ 5.4. GameCube Controller Types
+ 5.4.1. GameCube Standard Controller
+ 5.5. Game Boy Controller Types
+ 5.5.1. GB Standard Controller
+ 5.6. Game Boy Color Controller Types
+ 5.6.1. GBC Standard Controller
+ 5.7. Game Boy Advance Controller Types
+ 5.7.1. GBA Standard Controller
+ 5.8. Genesis Controller Types
+ 5.8.1. Genesis (Mega Drive) 3-Button
+ 5.8.2. Genesis (Mega Drive) 6-Button
+ 5.9. Atari 2600 Controller Types
+ 5.9.1. A2600 Joystick
+ 5.9.2. A2600 Keyboard Controller
+ 6. References
+ 6.1. Normative References
Copyright Notice
Authors' Addresses
@@ -177,7 +178,7 @@ Table of Contents
We use the terms *Tool Assisted Speedrun*, *Tool Assisted Superplay*
and *TAS* interchangeably in this document.
- In subsections of (Section 3.2), the term "in direct form" is used.
+ 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).
@@ -304,10 +305,29 @@ Table of Contents
(especially with differing TAS replay devices) can also verify the
same TAS.
-2. Header
+2. Structure
- *TASD* files MUST include a header, which MUST be in the following
- format:
+ *TASD* files MUST begin with a header. The header MUST be followed
+ by *0 or more* packets.
+
+ 0 1 2 3 4 5 6 7...
+ +-+-+-+-+-+-+-+=============+
+ | Header (A) | Packets (A) |
+ +-+-+-+-+-+-+-+=============+
+
+ Header (Binary Data) [7 octets]
+ Packets (Binary Data) [? octets]
+
+ *Header*
+ 7 octet header as defined in Section 3.
+
+ *Packets*
+ List of 0 or more packets. Refer to Section 4 for packet
+ definitions.
+
+3. Header
+
+ The *TASD* file header MUST be in the following format:
0 1 2 3 4 5 6
+----+----+----+----+------+------+--------------+
@@ -329,9 +349,9 @@ Table of Contents
Global length of *Key* values of packets. G_KEYLEN currently MUST
be a value of 2.
-3. Packets
+4. Packets
- Packets MUST be in the following format:
+ Each packet MUST be in the following format:
+=========+----------+==========+=============+
| Key (A) | PEXP (N) | PLEN (N) | Payload (A) |
@@ -355,14 +375,14 @@ Table of Contents
Payload/Content of the packet.
*G_KEYLEN*
- Length of *Key* in packets and is specified in the *TASD* file
+ Length of *Key* in each packet and is specified in the *TASD* file
header.
All packets are OPTIONAL.
-3.1. Assigned Packet Keys Without Descriptions
+4.1. Assigned Packet Keys Without Descriptions
-3.1.1. General Keys
+4.1.1. General Keys
[00 01] CONSOLE_TYPE
[00 02] CONSOLE_REGION
@@ -387,25 +407,25 @@ Table of Contents
[00 15] MOVIE_FILE
[00 F0] PORT_CONTROLLER
-3.1.2. NES Specific Keys
+4.1.2. NES Specific Keys
[01 01] NES_LATCH_FILTER
[01 02] NES_CLOCK_FILTER
[01 03] NES_OVERREAD
[01 04] NES_GAME_GENIE_CODE
-3.1.3. SNES Specific Keys
+4.1.3. SNES Specific Keys
[02 02] SNES_CLOCK_FILTER
[02 03] SNES_OVERREAD
[02 04] SNES_GAME_GENIE_CODE
[02 05] SNES_LATCH_TRAIN
-3.1.4. Genesis Specific Keys
+4.1.4. Genesis Specific Keys
[08 04] GENESIS_GAME_GENIE_CODE
-3.1.5. Input Frame/Timing Keys
+4.1.5. Input Frame/Timing Keys
[FE 01] INPUT_CHUNK
[FE 02] INPUT_MOMENT
@@ -413,151 +433,151 @@ Table of Contents
[FE 04] LAG_FRAME_CHUNK
[FE 05] MOVIE_TRANSITION
-3.1.6. Extraneous Keys
+4.1.6. Extraneous Keys
[FF 01] COMMENT
[FF FE] EXPERIMENTAL
[FF FF] UNSPECIFIED
-3.2. Assigned Packet Keys With Descriptions
+4.2. Assigned Packet Keys With Descriptions
-3.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 3.3.1.1).
+ 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 3.3.1.2).
+ 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 3.3.1.3).
+ 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 3.3.1.4).
+ 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 3.3.1.5).
+ 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 3.3.1.6).
+ 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 3.3.1.7).
+ (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 3.3.1.8).
+ 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 3.3.1.9).
+ 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 3.3.1.10).
+ (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 3.3.1.11).
+ (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 3.3.1.12).
+ (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 3.3.1.13).
+ 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 3.3.1.14).
+ (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 3.3.1.15).
+ 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 3.3.1.16).
+ (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 3.3.1.17).
+ (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 3.3.1.18).
+ 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 3.3.1.19).
+ 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 3.3.1.20).
+ 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 3.3.1.21).
+ 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 3.3.1.22).
+ type in direct form. Discussed in (Section 4.3.1.22).
-3.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 3.3.2.1).
+ 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
@@ -565,21 +585,21 @@ Table of Contents
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.2.2).
+ 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 3.3.2.3).
+ 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 3.3.2.4).
+ type. Discussed in (Section 4.3.2.4).
-3.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
@@ -587,33 +607,33 @@ Table of Contents
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).
+ 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 3.3.3.2).
+ 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 3.3.3.3).
+ 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 3.3.3.4).
+ Discussed in (Section 4.3.3.4).
-3.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 3.3.4.1).
+ type. Discussed in (Section 4.3.4.1).
-3.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
@@ -623,7 +643,7 @@ Table of Contents
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 3.3.5.1).
+ type. Discussed in (Section 4.3.5.1).
[FE 02] - INPUT_MOMENT
Specifies input data that is sent from the replay device to the
@@ -632,47 +652,47 @@ Table of Contents
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 3.3.5.2).
+ (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 3.3.5.3).
+ 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 3.3.5.4).
+ 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 3.3.5.5).
+ than 1 of this packet type. Discussed in (Section 4.3.5.5).
-3.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 3.3.6.1).
+ (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 3.3.6.2).
+ 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 3.3.6.3).
+ of this packet type. Discussed in (Section 4.3.6.3).
-3.3. Packet Payload Formats
+4.3. Packet Payload Formats
-3.3.1. General Key Payload Formats
+4.3.1. General Key Payload Formats
-3.3.1.1. CONSOLE_TYPE Packet
+4.3.1.1. CONSOLE_TYPE Packet
CONSOLE_TYPE packets MUST be in the following format:
@@ -706,7 +726,7 @@ Table of Contents
*PLEN*
Length of the packet payload.
-3.3.1.2. CONSOLE_REGION Packet
+4.3.1.2. CONSOLE_REGION Packet
CONSOLE_REGION packets MUST be in the following format:
@@ -724,7 +744,7 @@ Table of Contents
Specifies the video signal of the game console being emulated
while dumping the TAS movie controller inputs.
-3.3.1.3. GAME_TITLE Packet
+4.3.1.3. GAME_TITLE Packet
GAME_TITLE packets MUST be in the following format:
@@ -741,7 +761,7 @@ Table of Contents
*PLEN*
Length of the packet payload.
-3.3.1.4. ROM_NAME Packet
+4.3.1.4. ROM_NAME Packet
ROM_NAME packets MUST be in the following format:
@@ -759,7 +779,7 @@ Table of Contents
*PLEN*
Length of the packet payload.
-3.3.1.5. ATTRIBUTION Packet
+4.3.1.5. ATTRIBUTION Packet
ATTRIBUTION packets MUST be in the following format:
@@ -792,7 +812,7 @@ Table of Contents
*PLEN*
Length of the packet payload.
-3.3.1.6. CATEGORY Packet
+4.3.1.6. CATEGORY Packet
CATEGORY packets MUST be in the following format:
@@ -810,7 +830,7 @@ Table of Contents
*PLEN*
Length of the packet payload.
-3.3.1.7. EMULATOR_NAME Packet
+4.3.1.7. EMULATOR_NAME Packet
EMULATOR_NAME packets MUST be in the following format:
@@ -828,7 +848,7 @@ Table of Contents
*PLEN*
Length of the packet payload.
-3.3.1.8. EMULATOR_VERSION Packet
+4.3.1.8. EMULATOR_VERSION Packet
EMULATOR_VERSION packets MUST be in the following format:
@@ -846,7 +866,7 @@ Table of Contents
*PLEN*
Length of the packet payload.
-3.3.1.9. EMULATOR_CORE Packet
+4.3.1.9. EMULATOR_CORE Packet
EMULATOR_CORE packets MUST be in the following format:
@@ -864,7 +884,7 @@ Table of Contents
*PLEN*
Length of the packet payload
-3.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:
@@ -878,7 +898,7 @@ Table of Contents
*Unix Timestamp*
64-bit Unix timestamp of when the TAS movie was last modified.
-3.3.1.11. DUMP_CREATED Packet
+4.3.1.11. DUMP_CREATED Packet
DUMP_CREATED packets MUST be in the following format:
@@ -892,7 +912,7 @@ Table of Contents
*Unix Timestamp*
64-bit Unix timestamp of when the *TASD* file was created.
-3.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:
@@ -906,7 +926,7 @@ Table of Contents
*Unix Timestamp*
64-bit Unix timestamp of when the *TASD* file was last modified.
-3.3.1.13. TOTAL_FRAMES Packet
+4.3.1.13. TOTAL_FRAMES Packet
TOTAL_FRAMES packets MUST be in the following format:
@@ -920,7 +940,7 @@ Table of Contents
*Frames*
Total number of frames of the TAS movie.
-3.3.1.14. RERECORDS Packet
+4.3.1.14. RERECORDS Packet
RERECORDS packets MUST be in the following format:
@@ -934,7 +954,7 @@ Table of Contents
*Rerecords*
Total number of rerecords of the TAS movie.
-3.3.1.15. SOURCE_LINK Packet
+4.3.1.15. SOURCE_LINK Packet
SOURCE_LINK packets MUST be in the following format:
@@ -952,7 +972,7 @@ Table of Contents
*PLEN*
Length of the packet payload.
-3.3.1.16. BLANK_FRAMES Packet
+4.3.1.16. BLANK_FRAMES Packet
BLANK_FRAMES packets MUST be in the following format:
@@ -970,7 +990,7 @@ Table of Contents
inputs of the TAS console replay of the TAS movie should be
removed.
-3.3.1.17. VERIFIED Packet
+4.3.1.17. VERIFIED Packet
VERIFIED packets MUST be in the following format:
@@ -986,7 +1006,7 @@ Table of Contents
successfully console verified and *FALSE* if it has not been
verified.
-3.3.1.18. MEMORY_INIT Packet
+4.3.1.18. MEMORY_INIT Packet
MEMORY_INIT packets MUST be in the following format:
@@ -1055,7 +1075,7 @@ Table of Contents
*PLEN*
Length of the packet payload.
-3.3.1.19. GAME_IDENTIFIER Packet
+4.3.1.19. GAME_IDENTIFIER Packet
GAME_IDENTIFIER packets MUST be in the following format:
@@ -1103,7 +1123,7 @@ Table of Contents
*PLEN*
Length of the packet payload
-3.3.1.20. MOVIE_LICENSE Packet
+4.3.1.20. MOVIE_LICENSE Packet
MOVIE_LICENSE packets MUST be in the following format:
@@ -1121,7 +1141,7 @@ Table of Contents
*PLEN*
Length of the packet payload.
-3.3.1.21. MOVIE_FILE Packet
+4.3.1.21. MOVIE_FILE Packet
MOVIE_FILE packets MUST be in the following format:
@@ -1148,7 +1168,7 @@ Table of Contents
*PLEN*
Length of the packet payload.
-3.3.1.22. PORT_CONTROLLER Packet
+4.3.1.22. PORT_CONTROLLER Packet
PORT_CONTROLLER packets MUST be in the following format:
@@ -1196,11 +1216,11 @@ Table of Contents
*(RESERVED)* specifies that the controller type is not described
in this document, but the byte values are reserved for a later
version of the *TASD* file format protocol. Input formats for
- specific controller types are described in (Section 4).
+ specific controller types are described in (Section 5).
-3.3.2. NES Specific Key Payload Formats
+4.3.2. NES Specific Key Payload Formats
-3.3.2.1. NES_LATCH_FILTER Packet
+4.3.2.1. NES_LATCH_FILTER Packet
NES_LATCH_FILTER packets MUST be in the following format:
@@ -1214,7 +1234,7 @@ Table of Contents
*Time*
Latch filter length of time in microseconds.
-3.3.2.2. NES_CLOCK_FILTER Packet
+4.3.2.2. NES_CLOCK_FILTER Packet
NES_CLOCK_FILTER packets MUST be in the following format:
@@ -1229,7 +1249,7 @@ Table of Contents
Clock filter length of time in tenths of a microsecond (units of
0.1 microseconds or 100 nanoseconds).
-3.3.2.3. NES_OVERREAD Packet
+4.3.2.3. NES_OVERREAD Packet
NES_OVERREAD packets MUST be in the following format:
@@ -1244,7 +1264,7 @@ Table of Contents
Boolean value that is *TRUE* if overread bits are set to high and
*FALSE* if overread bits are set to low.
-3.3.2.4. NES_GAME_GENIE_CODE Packet
+4.3.2.4. NES_GAME_GENIE_CODE Packet
NES_GAME_GENIE_CODE packets MUST be in the following format:
@@ -1261,9 +1281,9 @@ Table of Contents
*PLEN*
Length of the packet payload.
-3.3.3. SNES Specific Key Payload Formats
+4.3.3. SNES Specific Key Payload Formats
-3.3.3.1. SNES_CLOCK_FILTER Packet
+4.3.3.1. SNES_CLOCK_FILTER Packet
SNES_CLOCK_FILTER packets MUST be in the following format:
@@ -1278,7 +1298,7 @@ Table of Contents
Clock filter length of time in tenths of a microsecond (units of
0.1 microseconds or 100 nanoseconds).
-3.3.3.2. SNES_OVERREAD Packet
+4.3.3.2. SNES_OVERREAD Packet
SNES_OVERREAD packets MUST be in the following format:
@@ -1293,7 +1313,7 @@ Table of Contents
Boolean value that is *TRUE* if overread bits are set to high and
*FALSE* if overread bits are set to low.
-3.3.3.3. SNES_GAME_GENIE_CODE Packet
+4.3.3.3. SNES_GAME_GENIE_CODE Packet
SNES_GAME_GENIE_CODE packets MUST be in the following format:
@@ -1310,7 +1330,7 @@ Table of Contents
*PLEN*
Length of the packet payload.
-3.3.3.4. SNES_LATCH_TRAIN Packet
+4.3.3.4. SNES_LATCH_TRAIN Packet
SNES_LATCH_TRAIN packets MUST be in the following format:
@@ -1333,9 +1353,9 @@ Table of Contents
Latch Train of a SNES TAS movie console replay. There MAY be more
than 1 SNES_LATCH_TRAIN packet.
-3.3.4. Genesis Specific Key Payload Formats
+4.3.4. Genesis Specific Key Payload Formats
-3.3.4.1. GENESIS_GAME_GENIE_CODE Packet
+4.3.4.1. GENESIS_GAME_GENIE_CODE Packet
GENESIS_GAME_GENIE_CODE packets MUST be in the following format:
@@ -1352,9 +1372,9 @@ Table of Contents
*PLEN*
Length of the packet payload.
-3.3.5. Input Frame/Timing Key Payload Formats
+4.3.5. Input Frame/Timing Key Payload Formats
-3.3.5.1. INPUT_CHUNK Packet
+4.3.5.1. INPUT_CHUNK Packet
INPUT_CHUNK packets MUST be in the following format:
@@ -1372,7 +1392,7 @@ Table of Contents
*Inputs*
Controller input data for controller on *Port*. Input values are
usually in native format (usually active-low). Input formats for
- specific controller types are described in (Section 4).
+ specific controller types are described in (Section 5).
*PLEN*
Length of the packet payload.
@@ -1385,7 +1405,7 @@ Table of Contents
are earlier in the *TASD* file and later inputs in the TAS movie
console replay are later in the *TASD* file.
-3.3.5.2. INPUT_MOMENT Packet
+4.3.5.2. INPUT_MOMENT Packet
INPUT_MOMENT packets MUST be in the following format:
@@ -1420,12 +1440,12 @@ Table of Contents
*Inputs*
Controller input data for controller on *Port*. Input values are
usually in native format (usually active-low). Input formats for
- specific controller types are described in (Section 4).
+ specific controller types are described in (Section 5).
*PLEN*
Length of the packet payload.
-3.3.5.3. TRANSITION Packet
+4.3.5.3. TRANSITION Packet
TRANSITION packets MUST be in the following format:
@@ -1470,7 +1490,7 @@ Table of Contents
*PLEN*
Length of the packet payload (Not *Inner Packet* length).
-3.3.5.4. LAG_FRAME_CHUNK Packet
+4.3.5.4. LAG_FRAME_CHUNK Packet
LAG_FRAME_CHUNK packets MUST be in the following format:
@@ -1489,7 +1509,7 @@ Table of Contents
*Count*
Number of Lag Frames in a row starting from *Movie Frame*.
-3.3.5.5. MOVIE_TRANSITION
+4.3.5.5. MOVIE_TRANSITION
MOVIE_TRANSITION packets MUST be in the following format:
@@ -1521,9 +1541,9 @@ Table of Contents
*PLEN*
Length of the packet payload (Not *Inner Packet* length).
-3.3.6. Extraneous Key Payload Formats
+4.3.6. Extraneous Key Payload Formats
-3.3.6.1. COMMENT Packet
+4.3.6.1. COMMENT Packet
COMMENT packets MUST be in the following format:
@@ -1540,7 +1560,7 @@ Table of Contents
*PLEN*
Length of the packet payload.
-3.3.6.2. EXPERIMENTAL Packet
+4.3.6.2. EXPERIMENTAL Packet
EXPERIMENTAL packets MUST be in the following format:
@@ -1559,7 +1579,7 @@ Table of Contents
*PLEN*
Length of the packet payload.
-3.3.6.3. UNSPECIFIED Packet
+4.3.6.3. UNSPECIFIED Packet
UNSPECIFIED packets MUST be in the following format:
@@ -1578,7 +1598,7 @@ Table of Contents
*PLEN*
Length of the packet payload.
-4. Controller Input Formats
+5. Controller Input Formats
A forward slash (*/*) is used to signify *active low*. As an
example, if a bit is labeled as */A*, the bit MUST be 0 if the A
@@ -1591,9 +1611,9 @@ Table of Contents
most bit of the octet and bit 0 MUST be the right-most bit of the
octet.
-4.1. NES/Famicom Controller Types
+5.1. NES/Famicom Controller Types
-4.1.1. NES Standard Controller
+5.1.1. NES Standard Controller
Single Input Length: 1 Octet
@@ -1608,7 +1628,7 @@ Table of Contents
Bit 1: /Left
Bit 0: /Right
-4.1.2. NES Four Score
+5.1.2. NES Four Score
Single Input Length: 3 Octets
@@ -1653,9 +1673,9 @@ Table of Contents
2 is *Player 2*, and *Controller N-2* on controller port 2 is *Player
4*.
-4.2. SNES Controller Types
+5.2. SNES Controller Types
-4.2.1. SNES Standard Controller
+5.2.1. SNES Standard Controller
Single Input Length: 2 Octets
@@ -1681,7 +1701,7 @@ Table of Contents
Bit 1: 1
Bit 0: 1
-4.2.2. SNES Mouse
+5.2.2. SNES Mouse
Single Input Length: 4 Octets
@@ -1719,7 +1739,7 @@ Table of Contents
Bits 7-1: /Horizontal displacement since last read
Bit 0: Direction (0: up; 1: down)
-4.2.3. SNES Super Multitap
+5.2.3. SNES Super Multitap
Single Input Length: 5 Octets
@@ -1786,9 +1806,9 @@ Table of Contents
Pin state in octet 0 MUST be *1* for multitap ports *1 and 2*, or *0*
for ports *3 and 4*.
-4.3. N64 Controller Types
+5.3. N64 Controller Types
-4.3.1. N64 Standard Controller
+5.3.1. N64 Standard Controller
Single Input Length: 4 Octets
@@ -1822,7 +1842,7 @@ Table of Contents
Bits 7-0: Analog Stick Y-Axis (signed 8-bit number)
-4.3.2. N64 Standard Controller with Rumble
+5.3.2. N64 Standard Controller with Rumble
Single Input Length: 4 Octets
@@ -1856,7 +1876,7 @@ Table of Contents
Bits 7-0: Analog Stick Y-Axis (signed 8-bit number)
-4.3.3. N64 Standard Controller with Controller Pak
+5.3.3. N64 Standard Controller with Controller Pak
Single Input Length: 4 Octets
@@ -1890,7 +1910,7 @@ Table of Contents
Bits 7-0: Analog Stick Y-Axis (signed 8-bit number)
-4.3.4. N64 Standard Controller with Transfer Pak
+5.3.4. N64 Standard Controller with Transfer Pak
Single Input Length: 4 Octets
@@ -1924,7 +1944,7 @@ Table of Contents
Bits 7-0: Analog Stick Y-Axis (signed 8-bit number)
-4.3.5. N64 Mouse
+5.3.5. N64 Mouse
Single Input Length: 4 Octets
@@ -1958,7 +1978,7 @@ Table of Contents
Bits 7-0: Relative Y-Axis position (signed 8-bit number)
-4.3.6. N64 Densha de Go
+5.3.6. N64 Densha de Go
Single Input Length: 4 Octets
@@ -2003,9 +2023,9 @@ Table of Contents
Bit 1: 0
Bit 0: 0
-4.4. GameCube Controller Types
+5.4. GameCube Controller Types
-4.4.1. GameCube Standard Controller
+5.4.1. GameCube Standard Controller
Single Input Length: 8 Octets
@@ -2055,9 +2075,9 @@ Table of Contents
Bits 7-0: R Analog Value (unsigned 8-bit number)
-4.5. Game Boy Controller Types
+5.5. Game Boy Controller Types
-4.5.1. GB Standard Controller
+5.5.1. GB Standard Controller
Single Input Length: 1 Octet
@@ -2072,9 +2092,9 @@ Table of Contents
Bit 1: /B
Bit 0: /A
-4.6. Game Boy Color Controller Types
+5.6. Game Boy Color Controller Types
-4.6.1. GBC Standard Controller
+5.6.1. GBC Standard Controller
Single Input Length: 1 Octet
@@ -2089,9 +2109,9 @@ Table of Contents
Bit 1: /B
Bit 0: /A
-4.7. Game Boy Advance Controller Types
+5.7. Game Boy Advance Controller Types
-4.7.1. GBA Standard Controller
+5.7.1. GBA Standard Controller
Single Input Length: 2 Octets
@@ -2117,9 +2137,9 @@ Table of Contents
Bit 1: /B
Bit 0: /A
-4.8. Genesis Controller Types
+5.8. Genesis Controller Types
-4.8.1. Genesis (Mega Drive) 3-Button
+5.8.1. Genesis (Mega Drive) 3-Button
Single Input Length: 1 Octet
@@ -2134,7 +2154,7 @@ Table of Contents
Bit 1: /A
Bit 0: /Start
-4.8.2. Genesis (Mega Drive) 6-Button
+5.8.2. Genesis (Mega Drive) 6-Button
Single Input Length: 2 Octets
@@ -2160,9 +2180,9 @@ Table of Contents
Bit 1: 1
Bit 0: 1
-4.9. Atari 2600 Controller Types
+5.9. Atari 2600 Controller Types
-4.9.1. A2600 Joystick
+5.9.1. A2600 Joystick
Single Input Length: 1 Octet
@@ -2177,7 +2197,7 @@ Table of Contents
Bit 1: 1
Bit 0: 1
-4.9.2. A2600 Keyboard Controller
+5.9.2. A2600 Keyboard Controller
Single Input Length: 1 Octet
@@ -2192,9 +2212,9 @@ Table of Contents
Bit 1: /Column2 (key 2, 5, 8, or 0 pressed)
Bit 0: 1
-5. References
+6. References
-5.1. Normative References
+6.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,