diff options
| author | TheMas3212 <mas3212@gmail.com> | 2025-04-23 16:37:49 +1000 |
|---|---|---|
| committer | TheMas3212 <mas3212@gmail.com> | 2025-04-23 16:37:49 +1000 |
| commit | 908f4bab82778c72270af1a885f92c2c391ef831 (patch) | |
| tree | 4ad7536a20d9b0b4431ef1bbe716012df03c72bc /tasd/packets | |
| download | tasd-py-908f4bab82778c72270af1a885f92c2c391ef831.tar.gz tasd-py-908f4bab82778c72270af1a885f92c2c391ef831.zip | |
Inital Commit v1.0.0
Diffstat (limited to 'tasd/packets')
| -rw-r--r-- | tasd/packets/__init__.py | 6 | ||||
| -rw-r--r-- | tasd/packets/extra.py | 38 | ||||
| -rw-r--r-- | tasd/packets/general.py | 406 | ||||
| -rw-r--r-- | tasd/packets/genesis.py | 18 | ||||
| -rw-r--r-- | tasd/packets/input.py | 106 | ||||
| -rw-r--r-- | tasd/packets/nes.py | 38 | ||||
| -rw-r--r-- | tasd/packets/snes.py | 50 |
7 files changed, 662 insertions, 0 deletions
diff --git a/tasd/packets/__init__.py b/tasd/packets/__init__.py new file mode 100644 index 0000000..002c4ca --- /dev/null +++ b/tasd/packets/__init__.py @@ -0,0 +1,6 @@ +import tasd.packets.general +import tasd.packets.nes +import tasd.packets.snes +import tasd.packets.genesis +import tasd.packets.input +import tasd.packets.extra diff --git a/tasd/packets/extra.py b/tasd/packets/extra.py new file mode 100644 index 0000000..41ad604 --- /dev/null +++ b/tasd/packets/extra.py @@ -0,0 +1,38 @@ +from tasd.packet import _TASDPacketFactory as _TASD_PF, _VariableType as _VType, _VariableDefinition as _VDef, _EnumDefinition as _EDef +from tasd.constants import PacketType + +''' + 4.3.6.1. COMMENT Packet +''' + +Comment = _TASD_PF( + "Comment", + PacketType.COMMENT, + [ + _VDef("comment", _VType.STRING_EOP, "") + ] +) + +''' + 4.3.6.2. EXPERIMENTAL Packet +''' + +Experimental = _TASD_PF( + "Experimental", + PacketType.EXPERIMENTAL, + [ + _VDef("experimental", _VType.BOOL, False) + ] +) + +''' + 4.3.6.3. UNSPECIFIED Packet +''' + +Unspecified = _TASD_PF( + "Unspecified", + PacketType.UNSPECIFIED, + [ + _VDef("data", _VType.BYTES_EOP, b"") + ] +)
\ No newline at end of file diff --git a/tasd/packets/general.py b/tasd/packets/general.py new file mode 100644 index 0000000..d643324 --- /dev/null +++ b/tasd/packets/general.py @@ -0,0 +1,406 @@ +from tasd.packet import _TASDPacketFactory as _TASD_PF, _VariableType as _VType, _VariableDefinition as _VDef, _EnumDefinition as _EDef +from tasd.constants import PacketType + +''' + 4.3.1.1. CONSOLE_TYPE Packet +''' + +class CONSOLE_TYPE(): + NES = 0x01 + SNES = 0x02 + N64 = 0x03 + GC = 0x04 + GB = 0x05 + GBC = 0x06 + GBA = 0x07 + GENESIS = 0x08 + A2600 = 0x09 + CUSTOM = 0xFF +ConsoleType = _TASD_PF( + "ConsoleType", + PacketType.CONSOLE_TYPE, + [ + _VDef("console", _VType.UINT_8, CONSOLE_TYPE.NES), + _VDef("name", _VType.STRING_EOP, "") + ], + [ + _EDef("CONSOLE_TYPE", CONSOLE_TYPE) + ] +) + +''' + 4.3.1.2. CONSOLE_REGION Packet +''' + +class CONSOLE_REGION(): + NTSC = 0x01 + PAL = 0x02 + OTHER = 0xFF +ConsoleRegion = _TASD_PF( + "ConsoleRegion", + PacketType.CONSOLE_REGION, + [ + _VDef("region", _VType.UINT_8, CONSOLE_REGION.NTSC) + ], + [ + _EDef("CONSOLE_REGION", CONSOLE_REGION) + ] +) + +''' + 4.3.1.3. GAME_TITLE Packet +''' + +GameTitle = _TASD_PF( + "GameTitle", + PacketType.GAME_TITLE, + [ + _VDef("title", _VType.STRING_EOP, "") + ] +) + + +''' + 4.3.1.4. ROM_NAME Packet +''' + +RomName = _TASD_PF( + "RomName", + PacketType.ROM_NAME, + [ + _VDef("name", _VType.STRING_EOP, "") + ] +) + +''' + 4.3.1.5. ATTRIBUTION Packet +''' + +class ATTRIBUTION_TYPE(): + AUTHOR = 0x01 + VERIFIER = 0x02 + TASD_FILE_CREATOR = 0x03 + TASD_FILE_EDITOR = 0x04 + OTHER = 0xFF +Attribution = _TASD_PF( + "Attribution", + PacketType.ATTRIBUTION, + [ + _VDef("type", _VType.UINT_8, ATTRIBUTION_TYPE.AUTHOR), + _VDef("name", _VType.STRING_EOP, "") + ], + [ + _EDef("ATTRIBUTION_TYPE", ATTRIBUTION_TYPE) + ] +) + + +''' + 4.3.1.6. CATEGORY Packet +''' + +Category = _TASD_PF( + "Category", + PacketType.CATEGORY, + [ + _VDef("category", _VType.STRING_EOP, "") + ] +) + +''' + 4.3.1.7. EMULATOR_NAME Packet +''' + +EmulatorName = _TASD_PF( + "EmulatorName", + PacketType.EMULATOR_NAME, + [ + _VDef("name", _VType.STRING_EOP, "") + ] +) + +''' + 4.3.1.8. EMULATOR_VERSION Packet +''' + +EmulatorVersion = _TASD_PF( + "EmulatorVersion", + PacketType.EMULATOR_VERSION, + [ + _VDef("version", _VType.STRING_EOP, "") + ] +) + +''' + 4.3.1.9. EMULATOR_CORE Packet +''' + +EmulatorCore = _TASD_PF( + "EmulatorCore", + PacketType.EMULATOR_CORE, + [ + _VDef("core", _VType.STRING_EOP, "") + ] +) + +''' + 4.3.1.10. TAS_LAST_MODIFIED Packet +''' + +TASLastModified = _TASD_PF( + "TASLastModified", + PacketType.TAS_LAST_MODIFIED, + [ + _VDef("timestamp", _VType.INT_64, 0) + ] +) + +''' + 4.3.1.11. DUMP_CREATED Packet +''' + +DumpCreated = _TASD_PF( + "DumpCreated", + PacketType.DUMP_CREATED, + [ + _VDef("timestamp", _VType.INT_64, 0) + ] +) + +''' + 4.3.1.12. DUMP_LAST_MODIFIED Packet +''' + +DumpLastModified = _TASD_PF( + "DumpLastModified", + PacketType.DUMP_LAST_MODIFIED, + [ + _VDef("timestamp", _VType.INT_64, 0) + ] +) + +''' + 4.3.1.13. TOTAL_FRAMES Packet +''' + +TotalFrames = _TASD_PF( + "TotalFrames", + PacketType.TOTAL_FRAMES, + [ + _VDef("frames", _VType.UINT_32, 0) + ] +) + +''' + 4.3.1.14. RERECORDS Packet +''' + +Rerecords = _TASD_PF( + "Rerecords", + PacketType.RERECORDS, + [ + _VDef("rerecords", _VType.UINT_32, 0) + ] +) + +''' + 4.3.1.15. SOURCE_LINK Packet +''' + +SourceLink = _TASD_PF( + "SourceLink", + PacketType.SOURCE_LINK, + [ + _VDef("link", _VType.STRING_EOP, "") + ] +) + +''' + 4.3.1.16. BLANK_FRAMES Packet +''' + +BlankFrames = _TASD_PF( + "BlankFrames", + PacketType.BLANK_FRAMES, + [ + _VDef("frames", _VType.INT_16, 0) + ] +) + +''' + 4.3.1.17. VERIFIED Packet +''' + +Verified = _TASD_PF( + "Verified", + PacketType.VERIFIED, + [ + _VDef("verified", _VType.BOOL, False) + ] +) + +''' + 4.3.1.18. MEMORY_INIT Packet +''' + +class MEMORY_INIT_TYPE(): + NONE = 0x01 + ALL_00 = 0x02 + ALL_FF = 0x03 + PATTERN_00000000FFFFFFFF = 0x04 + RANDOM = 0x05 + CUSTOM = 0xFF +class MEMORY_INIT_DEVICE(): + NES_CPU_RAM = 0x0101 + NES_CART_SRAM = 0x0102 + SNES_CPU_RAM = 0x0201 + SNES_CART_SRAM = 0x0202 + GB_CPU_RAM = 0x0501 + GB_CART_SRAM = 0x0502 + GBC_CPU_RAM = 0x0601 + GBC_CART_SRAM = 0x0602 + GBA_CPU_RAM = 0x0701 + GBA_CART_SRAM = 0x0702 + GENESIS_CPU_RAM = 0x0801 + GENESIS_CART_SRAM = 0x0802 + A2600_CPU_RAM = 0x0901 + A2600_CART_SRAM = 0x0902 + CUSTOM = 0xFFFF +MemoryInit = _TASD_PF( + "MemoryInit", + PacketType.MEMORY_INIT, + [ + _VDef("type", _VType.UINT_8, MEMORY_INIT_TYPE.NONE), + _VDef("device", _VType.UINT_16, MEMORY_INIT_DEVICE.NES_CPU_RAM), + _VDef("required", _VType.BOOL, False), + _VDef("name", _VType.STRING_PLEN, ""), + _VDef("data", _VType.BYTES_EOP, b"") + ], + [ + _EDef("MEMORY_INIT_TYPE", MEMORY_INIT_TYPE), + _EDef("MEMORY_INIT_DEVICE", MEMORY_INIT_DEVICE) + ] +) + +''' + 4.3.1.19. GAME_IDENTIFIER Packet +''' + +class GAME_IDENTIFIER_TYPE(): + MD5 = 0x01 + SHA1 = 0x02 + SHA224 = 0x03 + SHA256 = 0x04 + SHA384 = 0x05 + SHA512 = 0x06 + SHA512_224 = 0x07 + SHA512_256 = 0x08 + SHA3_224 = 0x09 + SHA3_256 = 0x0A + SHA3_384 = 0x0B + SHA3_512 = 0x0C + SHAKE_128 = 0x0D + SHAKE_256 = 0x0E + OTHER = 0xFF +class GAME_IDENTIFIER_BASE(): + RAW_BINARY = 0x01 + BASE16 = 0x02 + BASE32 = 0x03 + BASE64 = 0x04 + OTHER = 0xFF +GameIdentifier = _TASD_PF( + "GameIdentifier", + PacketType.GAME_IDENTIFIER, + [ + _VDef("type", _VType.UINT_8, GAME_IDENTIFIER_TYPE.MD5), + _VDef("encoding", _VType.UINT_8, GAME_IDENTIFIER_BASE.RAW_BINARY), + _VDef("name", _VType.STRING_PLEN, ""), + _VDef("identifier", _VType.BYTES_EOP, b"") + ], + [ + _EDef("GAME_IDENTIFIER_TYPE", GAME_IDENTIFIER_TYPE), + _EDef("GAME_IDENTIFIER_BASE", GAME_IDENTIFIER_BASE) + ]) + +''' + 4.3.1.20. MOVIE_LICENSE Packet +''' + +MovieLicense = _TASD_PF( + "MovieLicense", + PacketType.MOVIE_LICENSE, + [ + _VDef("link", _VType.STRING_EOP, "") + ] +) + +''' + 4.3.1.21. MOVIE_FILE Packet +''' + +MovieFile = _TASD_PF( + "MovieFile", + PacketType.MOVIE_FILE, + [ + _VDef("name", _VType.STRING_PLEN, ""), + _VDef("data", _VType.BYTES_EOP, b"") + ] +) + +''' + 4.3.1.22. PORT_CONTROLLER Packet +''' + +class CONTROLLER_TYPE(): + NES_STANDARD_CONTROLLER = 0x0101 + NES_FOUR_SCORE = 0x0102 + NES_ZAPPER = 0x0103 + NES_POWER_PAD = 0x0104 + FAMICOM_FAMILY_BASIC_KEYBOARD = 0x0105 + SNES_STANDARD_CONTROLLER = 0x0201 + SNES_SUPER_MULTITAP = 0x0202 + SNES_MOUSE = 0x0203 + SNES_SUPERSCOPE = 0x0204 + N64_STANDARD_CONTROLLER = 0x0301 + N64_STANDARD_CONTROLLER_WITH_RUMBLE_PAK = 0x0302 + N64_STANDARD_CONTROLLER_WITH_CONTROLLER_PAK = 0x0303 + N64_STANDARD_CONTROLLER_WITH_TRANSFER_PAK = 0x0304 + N64_MOUSE = 0x0305 + N64_VOICE_RECOGNITION_UNIT = 0x0306 + N64_RANDNET_KEYBOARD = 0x0307 + N64_DENSHA_DE_GO = 0x0308 + GC_STANDARD_CONTROLLER = 0x0401 + GC_KEYBOARD = 0x0402 + GB_GAMEPAD = 0x0501 + GBC_GAMEPAD = 0x0601 + GBA_GAMEPAD = 0x0701 + GENESIS_3BUTTON = 0x0801 + GENESIS_6BUTTON = 0x0802 + A2600_JOYSTICK = 0x0901 + A2600_PADDLE = 0x0902 + A2600_KEYBOARD_CONTROLLER = 0x0903 + OTHER_UNSPECIFIED = 0xFFFF +PortController = _TASD_PF( + "PortController", + PacketType.PORT_CONTROLLER, + [ + _VDef("port", _VType.UINT_8, 1), + _VDef("type", _VType.UINT_16, CONTROLLER_TYPE.NES_STANDARD_CONTROLLER) + ], + [ + _EDef("CONTROLLER_TYPE", CONTROLLER_TYPE) + ] +) + +''' + 4.3.1.23. PORT_OVERREAD Packet +''' + +PortOverread = _TASD_PF( + "PortOverread", + PacketType.PORT_OVERREAD, + [ + _VDef("port", _VType.UINT_8, 1), + _VDef("high", _VType.BOOL, False) + ] +) diff --git a/tasd/packets/genesis.py b/tasd/packets/genesis.py new file mode 100644 index 0000000..b8b7cc4 --- /dev/null +++ b/tasd/packets/genesis.py @@ -0,0 +1,18 @@ +from tasd.packet import _TASDPacketFactory as _TASD_PF, _VariableType as _VType, _VariableDefinition as _VDef, _EnumDefinition as _EDef +from tasd.constants import PacketType + +''' + 4.3.4.1. GENESIS_GAME_GENIE_CODE Packet +''' + +GenesisGameGenieCode = _TASD_PF( + "GenesisGameGenieCode", + PacketType.GENESIS_GAME_GENIE_CODE, + [ + _VDef("code", _VType.STRING_EOP, "") + ] +) + +__all__ = [ + GenesisGameGenieCode +]
\ No newline at end of file diff --git a/tasd/packets/input.py b/tasd/packets/input.py new file mode 100644 index 0000000..00d9b2b --- /dev/null +++ b/tasd/packets/input.py @@ -0,0 +1,106 @@ +from tasd.packet import _TASDPacketFactory as _TASD_PF, _VariableType as _VType, _VariableDefinition as _VDef, _EnumDefinition as _EDef +from tasd.constants import PacketType + +''' + 4.3.5.1. INPUT_CHUNK Packet +''' + +InputChunk = _TASD_PF( + "InputChunk", + PacketType.INPUT_CHUNK, + [ + _VDef("port", _VType.UINT_8, 1), + _VDef("data", _VType.BYTES_EOP, b"") + ] +) + +''' + 4.3.5.2. INPUT_MOMENT Packet +''' + +class INPUT_MOMENT_INDEX_TYPE(): + FRAME = 0x01 + CYCLE_COUNT = 0x02 + MILLISECONDS = 0x03 + MICROSECONDS_X10 = 0x04 +InputMoment = _TASD_PF( + "InputMoment", + PacketType.INPUT_MOMENT, + [ + _VDef("port", _VType.UINT_8, 1), + _VDef("hold", _VType.BOOL, False), + _VDef("index_type", _VType.UINT_8, INPUT_MOMENT_INDEX_TYPE.FRAME), + _VDef("index", _VType.UINT_64, 0), + _VDef("inputs", _VType.BYTES_EOP, b"") + ], + [ + _EDef("INPUT_MOMENT_INDEX_TYPE", INPUT_MOMENT_INDEX_TYPE) + ] +) + +''' + 4.3.5.3. TRANSITION Packet +''' + +class TRANSITION_INDEX_TYPE(): + FRAME = 0x01 + CYCLE_COUNT = 0x02 + MILLISECONDS = 0x03 + MICROSECONDS = 0x04 + NANOSECONDS = 0x05 + INPUT_CHUNK_INDEX = 0x06 +class TRANSITION_TYPE(): + SOFT_RESET = 0x01 + POWER_RESET = 0x02 + RESTART_TASD_FILE = 0x03 + PACKET_DERIVED = 0xFF +Transition = _TASD_PF( + "Transition", + PacketType.TRANSITION, + [ + _VDef("port", _VType.UINT_8, 1), + _VDef("index_type", _VType.UINT_8, TRANSITION_INDEX_TYPE.FRAME), + _VDef("index", _VType.UINT_64, 0), + _VDef("type", _VType.UINT_8, TRANSITION_TYPE.SOFT_RESET), + _VDef("packet", _VType.BYTES_EOP, b"") + ], + [ + _EDef("TRANSITION_INDEX_TYPE", TRANSITION_INDEX_TYPE), + _EDef("TRANSITION_TYPE", TRANSITION_TYPE) + ] +) + +''' + 4.3.5.4. LAG_FRAME_CHUNK Packet +''' + +LagFrameChunk = _TASD_PF( + "LagFrameChunk", + PacketType.LAG_FRAME_CHUNK, + [ + _VDef("frame", _VType.UINT_32, 0), + _VDef("count", _VType.UINT_32, 0) + ] +) + +''' + 4.3.5.5. MOVIE_TRANSITION +''' + +class MOVIE_TRANSITION_TYPE(): + SOFT_RESET = 0x01 + POWER_RESET = 0x02 + RESTART_TASD_FILE = 0x03 + PACKET_DERIVED = 0xFF +MovieTransition = _TASD_PF( + "MovieTransition", + PacketType.MOVIE_TRANSITION, + [ + _VDef("frame", _VType.UINT_32, 0), + _VDef("type", _VType.UINT_8, MOVIE_TRANSITION_TYPE.SOFT_RESET), + _VDef("packet", _VType.BYTES_EOP, b"") + ], + [ + _EDef("MOVIE_TRANSITION_TYPE", MOVIE_TRANSITION_TYPE), + ] +)
\ No newline at end of file diff --git a/tasd/packets/nes.py b/tasd/packets/nes.py new file mode 100644 index 0000000..7981ca8 --- /dev/null +++ b/tasd/packets/nes.py @@ -0,0 +1,38 @@ +from tasd.packet import _TASDPacketFactory as _TASD_PF, _VariableType as _VType, _VariableDefinition as _VDef, _EnumDefinition as _EDef +from tasd.constants import PacketType + +''' + 4.3.2.1. NES_LATCH_FILTER Packet +''' + +NESLatchFilter = _TASD_PF( + "NESLatchFilter", + PacketType.NES_LATCH_FILTER, + [ + _VDef("time", _VType.UINT_16, 0) + ] +) + +''' + 4.3.2.2. NES_CLOCK_FILTER Packet +''' + +NESClockFilter = _TASD_PF( + "NESClockFilter", + PacketType.NES_CLOCK_FILTER, + [ + _VDef("time", _VType.UINT_8, 0) + ] +) + +''' + 4.3.2.3. NES_GAME_GENIE_CODE Packet +''' + +NESGameGenieCode = _TASD_PF( + "NESGameGenieCode", + PacketType.NES_GAME_GENIE_CODE, + [ + _VDef("code", _VType.STRING_EOP, "") + ] +)
\ No newline at end of file diff --git a/tasd/packets/snes.py b/tasd/packets/snes.py new file mode 100644 index 0000000..52b2e62 --- /dev/null +++ b/tasd/packets/snes.py @@ -0,0 +1,50 @@ +from tasd.packet import _TASDPacketFactory as _TASD_PF, _VariableType as _VType, _VariableDefinition as _VDef, _EnumDefinition as _EDef +from tasd.constants import PacketType + +''' + 4.3.3.1. SNES_LATCH_FILTER Packet +''' + +SNESLatchFilter = _TASD_PF( + "SNESLatchFilter", + PacketType.SNES_LATCH_FILTER, + [ + _VDef("time", _VType.UINT_16, 0) + ] +) + +''' + 4.3.3.2. SNES_CLOCK_FILTER Packet +''' + +SNESClockFilter = _TASD_PF( + "SNESClockFilter", + PacketType.SNES_CLOCK_FILTER, + [ + _VDef("time", _VType.UINT_8, 0) + ] +) + +''' + 4.3.3.3. SNES_GAME_GENIE_CODE Packet +''' + +SNESGameGenieCode = _TASD_PF( + "SNESGameGenieCode", + PacketType.SNES_GAME_GENIE_CODE, + [ + _VDef("code", _VType.STRING_EOP, "") + ] +) + +''' + 4.3.3.4. SNES_LATCH_TRAIN Packet +''' + +SNESLatchTrain = _TASD_PF( + "SNESLatchTrain", + PacketType.SNES_LATCH_TRAIN, + [ + _VDef("trains", _VType.LIST_UINT_64, None) + ] +)
\ No newline at end of file |
