summaryrefslogtreecommitdiff
path: root/tasd/packets
diff options
context:
space:
mode:
authorTheMas3212 <mas3212@gmail.com>2025-04-23 16:37:49 +1000
committerTheMas3212 <mas3212@gmail.com>2025-04-23 16:37:49 +1000
commit908f4bab82778c72270af1a885f92c2c391ef831 (patch)
tree4ad7536a20d9b0b4431ef1bbe716012df03c72bc /tasd/packets
downloadtasd-py-908f4bab82778c72270af1a885f92c2c391ef831.tar.gz
tasd-py-908f4bab82778c72270af1a885f92c2c391ef831.zip
Inital Commit v1.0.0
Diffstat (limited to 'tasd/packets')
-rw-r--r--tasd/packets/__init__.py6
-rw-r--r--tasd/packets/extra.py38
-rw-r--r--tasd/packets/general.py406
-rw-r--r--tasd/packets/genesis.py18
-rw-r--r--tasd/packets/input.py106
-rw-r--r--tasd/packets/nes.py38
-rw-r--r--tasd/packets/snes.py50
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