From e9964f1691f1e81486bee2bbe042e90bc260b270 Mon Sep 17 00:00:00 2001 From: bigbass1997 Date: Sun, 1 Aug 2021 23:27:12 -0500 Subject: Started work on summarizing data to be included in format --- data-summary.md | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 data-summary.md diff --git a/data-summary.md b/data-summary.md new file mode 100644 index 0000000..aba4fb2 --- /dev/null +++ b/data-summary.md @@ -0,0 +1,74 @@ +## Unique Data +- Magic Number (if binary format used) +- Spec Version Number +- Key Size or Delimiter + +## Packet Format: +`[Key] [Payload Length] [Payload Data]` + +## Common Packets: +| Type | Size | Description | +| --- | --- | --- | +| ConsoleType | 1 byte | Possible values: NES, SNES, N64, Gamecube, GB, GBC, GBA, Genesis, A2600,... | +| ConsoleRegion | 1 byte | Possible values: NTSC, PAL | +| GameTitle | 0-65535 bytes | May be ROM file name, or game name retrieved from a database? | +| Hashes | ? | Should probably include MD5, SHA-1, SHA-254, or others | +| Author | 0-65535 bytes | Either reusable key/entry (preferable), or a single list delimited by something | +| Category | 0-65535 bytes | Category of TAS (e.g. any%) | +| EmulatorName | 0-255 bytes | Name of emulator (e.g. BizHawk, FCEUX,...) +| EmulatorVersion | 0-255 bytes | Probably a string? Might contain decimals | +| TASLastModified | ? | Formats Ideas: Unix Epoch, ISO 8601, YYYY-MM-DD | +| NumberOfFrames | 4 bytes | 32bit unsigned number | +| RAMInitType | 1 byte | Does RAM need to be initialized? If yes, in what pattern? | +| SaveInitType | 1 byte | Does Save Memory need to be initialized? If yes, in what pattern? | +| RerecordCount | 4 bytes | 32bit unsigned number of rerecords | +| SourceLink | 3 bytes | Link to TAS Publication or Video | +| BlankFrames | 0-65535 bytes | 16bit signed number to add blank frames, or subtract from movie | +| Verified | 1 byte | boolean whether this TAS has been verified before | + +## NES Specific Packets: +| Type | Size | Description | +| --- | --- | --- | +| LatchFilter | 1 byte | Latch Filter time span (value multiplied by 0.1ms; inclusive range of 0.0ms to 25.5ms) | +| ClockFilter | 1 byte | Clock Filter time span (value multiplied by 0.25us; inclusive range of 0.0us to 63.75us) | +| Overread | 1 byte | If overread occurs, whether to give a 0 or a 1 | +| DPCM | 1 byte | Is DPCM used in this TAS? | +| GameGenieCode | 8 bytes | A Game Genie code | +| ControllerPortType | 2 bytes | Port Number (1-indexed) in first byte. Controller Type in second byte. Possible types: Standard, Multitap (Four Score), Zapper | + +## SNES Specific Packets: +| Type | Size | Description | +| --- | --- | --- | +| LatchTrains | ? | More info needed... | +| ControllerPortType | 2 bytes | Port Number (1-indexed) in first byte. Controller Type in second byte. Possible types: Standard, Multitap, Mouse, Superscope | + +## N64 Specific Packets: +| Type | Size | Description | +| --- | --- | --- | +| ControllerPortType | 2 bytes | Port Number (1-indexed) in first byte. Controller Type in second byte. Possible types: Standard, Standard with Controller Pak, Standard with Transfer Pak, RandNet Keyboard, Voice Recognition Unit (VRU), Mouse, Densha de Go (only used for 1 game), Dancepad (more research needed) | + +## Gamecube Specific Packets: +More research required... + +## Wii Specific Packets: +More research required... + +## GB/C/A Specific Packets: +More research required... (variable length frames?) + +## Genesis Specific Packets: +| Type | Size | Description | +| --- | --- | --- | +| ControllerPortType | 2 bytes | Port Number (1-indexed) in first byte. Controller Type in second byte. Possible types: 3-Button (uses 8 bits), 6-Button (uses 12 bits) | + +## A2600 Specific Packets: +| Type | Size | Description | +| --- | --- | --- | +| ControllerPortType | 2 bytes | Port Number (1-indexed) in first byte. Controller Type in second byte. Possible types: Joystick (uses 5 bits), Paddles (uses 2 bits, and 2 pots?), many others... | + +## Input Related Packets: +| Type | Size | Description | +| --- | --- | --- | +| Input | 2 + ? bytes | Need some way to specify what kind of input this is. That will determine how wide this is. | +| LagFrame | 4 + 4 bytes | 4 bytes specifying frame number, 4 bytes specifying number of lag frames including first. | +| TransitionFrame | 4 + 2 bytes | 4 bytes specifying frame number, 2 bytes specifying transition type. Types include: "Soft" Reset, Power Reset, possibly others... | \ No newline at end of file -- cgit v1.2.3