Clean up some more and restore fake EOF opcodes

This commit is contained in:
kris 2022-06-25 15:26:14 +01:00
parent efa63a5ab2
commit 804ce60434
4 changed files with 301 additions and 312 deletions

View File

@ -149,44 +149,44 @@ def fast_path_trampoline(label: str) -> List[opcodes_6502.Opcode]:
# # (14, 4), # 0.40 # # (14, 4), # 0.40
# ] # ]
# #
# import itertools import itertools
def _make_end_of_frame_voltages2(cycles) -> numpy.ndarray:
"""Voltage sequence for end-of-frame TCP processing."""
max_len = 140
voltage_high = False
c = [1.0, 1.0, 1.0, -1.0] # STA $C030
for i, skip_cycles in enumerate(itertools.cycle(cycles)):
c.extend([1.0 if voltage_high else -1.0] * (skip_cycles - 1))
voltage_high = not voltage_high
c.append(1.0 if voltage_high else -1.0)
if len(c) >= max_len:
break
c.extend([1.0 if voltage_high else -1.0] * 6) # JMP (WDATA)
return numpy.array(c, dtype=numpy.float32)
# #
# #
# def _make_end_of_frame_voltages2(cycles) -> numpy.ndarray: def _duty_cycles():
# """Voltage sequence for end-of-frame TCP processing.""" res = {}
# max_len = 140
# voltage_high = False for i in range(4, 50, 2):
# c = [1.0, 1.0, 1.0, -1.0] # STA $C030 for j in range(i, 50, 2):
# for i, skip_cycles in enumerate(itertools.cycle(cycles)): if i + j < 20 or i + j > 50:
# c.extend([1.0 if voltage_high else -1.0] * (skip_cycles - 1)) continue
# voltage_high = not voltage_high duty = j / (i + j) * 2 - 1
# c.append(1.0 if voltage_high else -1.0) res.setdefault(duty, []).append((i + j, i, j))
# if len(c) >= max_len:
# break cycles = []
# c.extend([1.0 if voltage_high else -1.0] * 6) # JMP (WDATA) for c in sorted(list(res.keys())):
# return numpy.array(c, dtype=numpy.float32) pair = sorted(sorted(res[c], reverse=False)[0][1:], reverse=True)
# cycles.append(pair)
#
# def _duty_cycles(): # return [(10, 10), (12, 10), (12, 8), (14, 10), (14, 6), (14, 8)]
# res = {} return cycles
#
# for i in range(4, 50, 2):
# for j in range(i, 50, 2): eof_cycles = _duty_cycles()
# if i + j < 20 or i + j > 50:
# continue
# duty = j / (i + j) * 2 - 1
# res.setdefault(duty, []).append((i + j, i, j))
#
# cycles = []
# for c in sorted(list(res.keys())):
# pair = sorted(sorted(res[c], reverse=False)[0][1:], reverse=True)
# cycles.append(pair)
#
# # return [(10, 10), (12, 10), (12, 8), (14, 10), (14, 6), (14, 8)]
# return cycles
#
#
# eof_cycles = _duty_cycles()
# def voltage_sequence( # def voltage_sequence(
@ -225,7 +225,7 @@ def audio_opcodes() -> Iterable[opcodes_6502.Opcode]:
yield tuple(ops) yield tuple(ops)
# Add a NOP sled so we can more efficiently chain together longer # Add a NOP sled so we can more efficiently chain together longer
# runs of NOPs without wasting bytes in the TCP frame chaining # runs of NOPs without wasting bytes in the TCP frame by chaining
# together JMP (WDATA) # together JMP (WDATA)
yield tuple( yield tuple(
[nop for nop in opcodes_6502.nops(20)] + [opcodes_6502.JMP_WDATA]) [nop for nop in opcodes_6502.nops(20)] + [opcodes_6502.JMP_WDATA])
@ -239,13 +239,11 @@ def generate_player(
num_bytes = 0 num_bytes = 0
seen_op_suffix_toggles = set() seen_op_suffix_toggles = set()
offset = 0 offset = 0
unique_opcodes = {} unique_entrypoints = {}
toggles = {} toggles = {}
with open(player_filename, "w+") as f: with open(player_filename, "w+") as f:
for i, ops in enumerate(player_ops): for i, ops in enumerate(player_ops):
unique_entrypoints = []
player_op = [] player_op = []
for j, op in enumerate(ops): for j, op in enumerate(ops):
op_suffix_toggles = opcodes_6502.toggles(ops[j:]) op_suffix_toggles = opcodes_6502.toggles(ops[j:])
if op_suffix_toggles not in seen_op_suffix_toggles: if op_suffix_toggles not in seen_op_suffix_toggles:
@ -255,7 +253,7 @@ def generate_player(
opcodes_6502.Literal( opcodes_6502.Literal(
"tick_%02x: ; voltages %s" % ( "tick_%02x: ; voltages %s" % (
offset, op_suffix_toggles), indent=0)) offset, op_suffix_toggles), indent=0))
unique_entrypoints.append((offset, op_suffix_toggles)) unique_entrypoints[offset] = op_suffix_toggles
player_op.append(op) player_op.append(op)
offset += op.bytes offset += op.bytes
@ -268,34 +266,31 @@ def generate_player(
f.write("%s\n" % str(op)) f.write("%s\n" % str(op))
num_bytes += player_op_len num_bytes += player_op_len
for op_offset, seq in unique_entrypoints:
unique_opcodes[op_offset] = seq
# toggles[op_offset] = tog
f.write("\n") f.write("\n")
f.write("; %d bytes\n" % num_bytes) f.write("; %d entrypoints, %d bytes\n" % (
len(unique_entrypoints), num_bytes))
# with open(opcode_filename, "w") as f: with open(opcode_filename, "w") as f:
# f.write("import enum\nimport numpy\n\n\n") f.write("import enum\nimport numpy\n\n\n")
# f.write("class Opcode(enum.Enum):\n") f.write("class Opcode(enum.Enum):\n")
# for o in unique_opcodes.keys(): for o in unique_entrypoints.keys():
# f.write(" TICK_%02x = 0x%02x\n" % (o, o)) f.write(" TICK_%02x = 0x%02x\n" % (o, o))
# f.write(" EXIT = 0x%02x\n" % num_bytes) f.write(" EXIT = 0x%02x\n" % num_bytes)
# # f.write(" END_OF_FRAME = 0x%02x\n" % (num_bytes + 3)) # f.write(" END_OF_FRAME = 0x%02x\n" % (num_bytes + 3))
# for i, _ in enumerate(eof_cycles): for i, _ in enumerate(eof_cycles):
# f.write(" END_OF_FRAME_%d = 0x%02x\n" % (i, num_bytes + 4 + i)) f.write(" END_OF_FRAME_%d = 0x%02x\n" % (i, num_bytes + 4 + i))
# f.write("\n\nVOLTAGE_SCHEDULE = {\n")
# f.write("\n\nVOLTAGE_SCHEDULE = {\n") for o, v in unique_entrypoints.items():
# for o, v in unique_opcodes.items(): f.write(
# f.write( " Opcode.TICK_%02x: numpy.array(%s, dtype=numpy.float32),"
# " Opcode.TICK_%02x: numpy.array(%s, dtype=numpy.float32)," "\n" % (o, v))
# "\n" % (o, v)) for i, skip_cycles in enumerate(eof_cycles):
# for i, skip_cycles in enumerate(eof_cycles): f.write(" Opcode.END_OF_FRAME_%d: numpy.array([%s], "
# f.write(" Opcode.END_OF_FRAME_%d: numpy.array([%s], " "dtype=numpy.float32), # %s\n" % (i, ", ".join(
# "dtype=numpy.float32), # %s\n" % (i, ", ".join( str(f) for f in _make_end_of_frame_voltages2(
# str(f) for f in _make_end_of_frame_voltages2( skip_cycles)), skip_cycles))
# skip_cycles)), skip_cycles)) f.write("}\n")
# f.write("}\n")
# #
# f.write("\n\nTOGGLES = {\n") # f.write("\n\nTOGGLES = {\n")
# for o, v in toggles.items(): # for o, v in toggles.items():
@ -304,11 +299,10 @@ def generate_player(
# ) # )
# f.write("}\n") # f.write("}\n")
# #
# f.write("\n\nEOF_OPCODES = (\n") f.write("\n\nEOF_OPCODES = (\n")
# for i in range(len(eof_cycles)): for i in range(len(eof_cycles)):
# f.write(" Opcode.END_OF_FRAME_%d,\n" % i) f.write(" Opcode.END_OF_FRAME_%d,\n" % i)
# f.write(")\n") f.write(")\n")
def main(): def main():

View File

@ -1,5 +1,4 @@
import itertools from typing import Iterable, Tuple
from typing import Iterable, List
class Opcode: class Opcode:
@ -77,7 +76,6 @@ def padding(cycles):
def nops(cycles: int) -> Iterable[Opcode]: def nops(cycles: int) -> Iterable[Opcode]:
print(cycles)
if cycles < 2: if cycles < 2:
raise ValueError raise ValueError
while cycles: while cycles:
@ -105,15 +103,15 @@ def nops(cycles: int) -> Iterable[Opcode]:
# return tuple(numpy.array(out, dtype=numpy.float32)), toggles # return tuple(numpy.array(out, dtype=numpy.float32)), toggles
def toggles(opcodes: Iterable[Opcode]) -> Tuple[bool]: def toggles(opcodes: Iterable[Opcode]) -> Tuple[float]:
res = [] res = []
speaker = True speaker = 1.0
for op in opcodes: for op in opcodes:
if not op.cycles: if not op.cycles:
continue continue
res.extend([speaker] * (op.cycles - 1)) res.extend([speaker] * (op.cycles - 1))
if op.toggle: if op.toggle:
speaker = not speaker speaker *= -1
res.append(speaker) res.append(speaker)
return tuple(res) return tuple(res)

View File

@ -4,162 +4,196 @@ import numpy
class Opcode(enum.Enum): class Opcode(enum.Enum):
TICK_00 = 0x00 TICK_00 = 0x00
TICK_03 = 0x03 TICK_01 = 0x01
TICK_06 = 0x06 TICK_02 = 0x02
TICK_09 = 0x09 TICK_05 = 0x05
TICK_0a = 0x0a TICK_08 = 0x08
TICK_0d = 0x0d TICK_0b = 0x0b
TICK_0e = 0x0e
TICK_0f = 0x0f
TICK_10 = 0x10 TICK_10 = 0x10
TICK_13 = 0x13 TICK_13 = 0x13
TICK_14 = 0x14 TICK_16 = 0x16
TICK_1a = 0x1a
TICK_1d = 0x1d TICK_1d = 0x1d
TICK_1e = 0x1e TICK_1e = 0x1e
TICK_27 = 0x27 TICK_1f = 0x1f
TICK_33 = 0x33 TICK_22 = 0x22
TICK_36 = 0x36 TICK_25 = 0x25
TICK_39 = 0x39 TICK_2d = 0x2d
TICK_3a = 0x3a TICK_2e = 0x2e
TICK_3f = 0x3f TICK_2f = 0x2f
TICK_42 = 0x42 TICK_32 = 0x32
TICK_43 = 0x43 TICK_3c = 0x3c
TICK_4b = 0x4b TICK_3d = 0x3d
TICK_3e = 0x3e
TICK_41 = 0x41
TICK_4c = 0x4c
TICK_4d = 0x4d
TICK_4e = 0x4e TICK_4e = 0x4e
TICK_4f = 0x4f TICK_51 = 0x51
TICK_57 = 0x57 TICK_5d = 0x5d
TICK_5a = 0x5a TICK_5e = 0x5e
TICK_5b = 0x5b TICK_5f = 0x5f
TICK_63 = 0x63 TICK_62 = 0x62
TICK_6d = 0x6d
TICK_6e = 0x6e TICK_6e = 0x6e
TICK_79 = 0x79 TICK_6f = 0x6f
TICK_84 = 0x84 TICK_72 = 0x72
TICK_87 = 0x87 TICK_7e = 0x7e
TICK_88 = 0x88 TICK_7f = 0x7f
TICK_8f = 0x8f TICK_80 = 0x80
EXIT = 0x99 TICK_83 = 0x83
END_OF_FRAME_0 = 0x9d TICK_90 = 0x90
END_OF_FRAME_1 = 0x9e TICK_91 = 0x91
END_OF_FRAME_2 = 0x9f TICK_92 = 0x92
END_OF_FRAME_3 = 0xa0 TICK_93 = 0x93
END_OF_FRAME_4 = 0xa1 TICK_94 = 0x94
END_OF_FRAME_5 = 0xa2 TICK_95 = 0x95
END_OF_FRAME_6 = 0xa3 TICK_96 = 0x96
END_OF_FRAME_7 = 0xa4 TICK_97 = 0x97
END_OF_FRAME_8 = 0xa5 TICK_98 = 0x98
END_OF_FRAME_9 = 0xa6 TICK_99 = 0x99
END_OF_FRAME_10 = 0xa7 EXIT = 0x9d
END_OF_FRAME_11 = 0xa8 END_OF_FRAME_0 = 0xa1
END_OF_FRAME_12 = 0xa9 END_OF_FRAME_1 = 0xa2
END_OF_FRAME_13 = 0xaa END_OF_FRAME_2 = 0xa3
END_OF_FRAME_14 = 0xab END_OF_FRAME_3 = 0xa4
END_OF_FRAME_15 = 0xac END_OF_FRAME_4 = 0xa5
END_OF_FRAME_16 = 0xad END_OF_FRAME_5 = 0xa6
END_OF_FRAME_17 = 0xae END_OF_FRAME_6 = 0xa7
END_OF_FRAME_18 = 0xaf END_OF_FRAME_7 = 0xa8
END_OF_FRAME_19 = 0xb0 END_OF_FRAME_8 = 0xa9
END_OF_FRAME_20 = 0xb1 END_OF_FRAME_9 = 0xaa
END_OF_FRAME_21 = 0xb2 END_OF_FRAME_10 = 0xab
END_OF_FRAME_22 = 0xb3 END_OF_FRAME_11 = 0xac
END_OF_FRAME_23 = 0xb4 END_OF_FRAME_12 = 0xad
END_OF_FRAME_24 = 0xb5 END_OF_FRAME_13 = 0xae
END_OF_FRAME_25 = 0xb6 END_OF_FRAME_14 = 0xaf
END_OF_FRAME_26 = 0xb7 END_OF_FRAME_15 = 0xb0
END_OF_FRAME_27 = 0xb8 END_OF_FRAME_16 = 0xb1
END_OF_FRAME_28 = 0xb9 END_OF_FRAME_17 = 0xb2
END_OF_FRAME_29 = 0xba END_OF_FRAME_18 = 0xb3
END_OF_FRAME_30 = 0xbb END_OF_FRAME_19 = 0xb4
END_OF_FRAME_31 = 0xbc END_OF_FRAME_20 = 0xb5
END_OF_FRAME_32 = 0xbd END_OF_FRAME_21 = 0xb6
END_OF_FRAME_33 = 0xbe END_OF_FRAME_22 = 0xb7
END_OF_FRAME_34 = 0xbf END_OF_FRAME_23 = 0xb8
END_OF_FRAME_35 = 0xc0 END_OF_FRAME_24 = 0xb9
END_OF_FRAME_36 = 0xc1 END_OF_FRAME_25 = 0xba
END_OF_FRAME_37 = 0xc2 END_OF_FRAME_26 = 0xbb
END_OF_FRAME_38 = 0xc3 END_OF_FRAME_27 = 0xbc
END_OF_FRAME_39 = 0xc4 END_OF_FRAME_28 = 0xbd
END_OF_FRAME_40 = 0xc5 END_OF_FRAME_29 = 0xbe
END_OF_FRAME_41 = 0xc6 END_OF_FRAME_30 = 0xbf
END_OF_FRAME_42 = 0xc7 END_OF_FRAME_31 = 0xc0
END_OF_FRAME_43 = 0xc8 END_OF_FRAME_32 = 0xc1
END_OF_FRAME_44 = 0xc9 END_OF_FRAME_33 = 0xc2
END_OF_FRAME_45 = 0xca END_OF_FRAME_34 = 0xc3
END_OF_FRAME_46 = 0xcb END_OF_FRAME_35 = 0xc4
END_OF_FRAME_47 = 0xcc END_OF_FRAME_36 = 0xc5
END_OF_FRAME_48 = 0xcd END_OF_FRAME_37 = 0xc6
END_OF_FRAME_49 = 0xce END_OF_FRAME_38 = 0xc7
END_OF_FRAME_50 = 0xcf END_OF_FRAME_39 = 0xc8
END_OF_FRAME_51 = 0xd0 END_OF_FRAME_40 = 0xc9
END_OF_FRAME_52 = 0xd1 END_OF_FRAME_41 = 0xca
END_OF_FRAME_53 = 0xd2 END_OF_FRAME_42 = 0xcb
END_OF_FRAME_54 = 0xd3 END_OF_FRAME_43 = 0xcc
END_OF_FRAME_55 = 0xd4 END_OF_FRAME_44 = 0xcd
END_OF_FRAME_56 = 0xd5 END_OF_FRAME_45 = 0xce
END_OF_FRAME_57 = 0xd6 END_OF_FRAME_46 = 0xcf
END_OF_FRAME_58 = 0xd7 END_OF_FRAME_47 = 0xd0
END_OF_FRAME_59 = 0xd8 END_OF_FRAME_48 = 0xd1
END_OF_FRAME_60 = 0xd9 END_OF_FRAME_49 = 0xd2
END_OF_FRAME_61 = 0xda END_OF_FRAME_50 = 0xd3
END_OF_FRAME_62 = 0xdb END_OF_FRAME_51 = 0xd4
END_OF_FRAME_63 = 0xdc END_OF_FRAME_52 = 0xd5
END_OF_FRAME_64 = 0xdd END_OF_FRAME_53 = 0xd6
END_OF_FRAME_65 = 0xde END_OF_FRAME_54 = 0xd7
END_OF_FRAME_66 = 0xdf END_OF_FRAME_55 = 0xd8
END_OF_FRAME_67 = 0xe0 END_OF_FRAME_56 = 0xd9
END_OF_FRAME_68 = 0xe1 END_OF_FRAME_57 = 0xda
END_OF_FRAME_69 = 0xe2 END_OF_FRAME_58 = 0xdb
END_OF_FRAME_70 = 0xe3 END_OF_FRAME_59 = 0xdc
END_OF_FRAME_71 = 0xe4 END_OF_FRAME_60 = 0xdd
END_OF_FRAME_72 = 0xe5 END_OF_FRAME_61 = 0xde
END_OF_FRAME_73 = 0xe6 END_OF_FRAME_62 = 0xdf
END_OF_FRAME_74 = 0xe7 END_OF_FRAME_63 = 0xe0
END_OF_FRAME_75 = 0xe8 END_OF_FRAME_64 = 0xe1
END_OF_FRAME_76 = 0xe9 END_OF_FRAME_65 = 0xe2
END_OF_FRAME_77 = 0xea END_OF_FRAME_66 = 0xe3
END_OF_FRAME_78 = 0xeb END_OF_FRAME_67 = 0xe4
END_OF_FRAME_79 = 0xec END_OF_FRAME_68 = 0xe5
END_OF_FRAME_80 = 0xed END_OF_FRAME_69 = 0xe6
END_OF_FRAME_81 = 0xee END_OF_FRAME_70 = 0xe7
END_OF_FRAME_82 = 0xef END_OF_FRAME_71 = 0xe8
END_OF_FRAME_83 = 0xf0 END_OF_FRAME_72 = 0xe9
END_OF_FRAME_84 = 0xf1 END_OF_FRAME_73 = 0xea
END_OF_FRAME_85 = 0xf2 END_OF_FRAME_74 = 0xeb
END_OF_FRAME_86 = 0xf3 END_OF_FRAME_75 = 0xec
END_OF_FRAME_76 = 0xed
END_OF_FRAME_77 = 0xee
END_OF_FRAME_78 = 0xef
END_OF_FRAME_79 = 0xf0
END_OF_FRAME_80 = 0xf1
END_OF_FRAME_81 = 0xf2
END_OF_FRAME_82 = 0xf3
END_OF_FRAME_83 = 0xf4
END_OF_FRAME_84 = 0xf5
END_OF_FRAME_85 = 0xf6
END_OF_FRAME_86 = 0xf7
VOLTAGE_SCHEDULE = { VOLTAGE_SCHEDULE = {
Opcode.TICK_00: numpy.array((1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32), Opcode.TICK_00: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32),
Opcode.TICK_03: numpy.array((1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32), Opcode.TICK_01: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32),
Opcode.TICK_06: numpy.array((1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32), Opcode.TICK_02: numpy.array((1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32),
Opcode.TICK_09: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32), Opcode.TICK_05: numpy.array((1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32),
Opcode.TICK_0a: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32), Opcode.TICK_08: numpy.array((1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32),
Opcode.TICK_0d: numpy.array((1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32), Opcode.TICK_0b: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32),
Opcode.TICK_10: numpy.array((1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32), Opcode.TICK_0e: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32),
Opcode.TICK_13: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32), Opcode.TICK_0f: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32),
Opcode.TICK_14: numpy.array((1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32), Opcode.TICK_10: numpy.array((1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32),
Opcode.TICK_1a: numpy.array((1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32), Opcode.TICK_13: numpy.array((1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32),
Opcode.TICK_1d: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32), Opcode.TICK_16: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32),
Opcode.TICK_1e: numpy.array((1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32), Opcode.TICK_1d: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32),
Opcode.TICK_27: numpy.array((1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32), Opcode.TICK_1e: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32),
Opcode.TICK_33: numpy.array((1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32), Opcode.TICK_1f: numpy.array((1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32),
Opcode.TICK_36: numpy.array((1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32), Opcode.TICK_22: numpy.array((1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32),
Opcode.TICK_39: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32), Opcode.TICK_25: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32),
Opcode.TICK_3a: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32), Opcode.TICK_2d: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32),
Opcode.TICK_3f: numpy.array((1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32), Opcode.TICK_2e: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32),
Opcode.TICK_42: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32), Opcode.TICK_2f: numpy.array((1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32),
Opcode.TICK_43: numpy.array((1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32), Opcode.TICK_32: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32),
Opcode.TICK_4b: numpy.array((1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32), Opcode.TICK_3c: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32),
Opcode.TICK_4e: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32), Opcode.TICK_3d: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32),
Opcode.TICK_4f: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32), Opcode.TICK_3e: numpy.array((1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32),
Opcode.TICK_57: numpy.array((1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32), Opcode.TICK_41: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32),
Opcode.TICK_5a: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32), Opcode.TICK_4c: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32),
Opcode.TICK_5b: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32), Opcode.TICK_4d: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32),
Opcode.TICK_63: numpy.array((1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32), Opcode.TICK_4e: numpy.array((1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32),
Opcode.TICK_6e: numpy.array((1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32), Opcode.TICK_51: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32),
Opcode.TICK_79: numpy.array((1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32), Opcode.TICK_5d: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32),
Opcode.TICK_84: numpy.array((1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32), Opcode.TICK_5e: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32),
Opcode.TICK_87: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32), Opcode.TICK_5f: numpy.array((1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32),
Opcode.TICK_88: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32), Opcode.TICK_62: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32),
Opcode.TICK_8f: numpy.array((1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32), Opcode.TICK_6d: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32),
Opcode.TICK_6e: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32),
Opcode.TICK_6f: numpy.array((1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32),
Opcode.TICK_72: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32),
Opcode.TICK_7e: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32),
Opcode.TICK_7f: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32),
Opcode.TICK_80: numpy.array((1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0), dtype=numpy.float32),
Opcode.TICK_83: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32),
Opcode.TICK_90: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32),
Opcode.TICK_91: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32),
Opcode.TICK_92: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32),
Opcode.TICK_93: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32),
Opcode.TICK_94: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32),
Opcode.TICK_95: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32),
Opcode.TICK_96: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32),
Opcode.TICK_97: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32),
Opcode.TICK_98: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32),
Opcode.TICK_99: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32),
Opcode.END_OF_FRAME_0: numpy.array([1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0], dtype=numpy.float32), # [10, 10] Opcode.END_OF_FRAME_0: numpy.array([1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0], dtype=numpy.float32), # [10, 10]
Opcode.END_OF_FRAME_1: numpy.array([1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0], dtype=numpy.float32), # [26, 24] Opcode.END_OF_FRAME_1: numpy.array([1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0], dtype=numpy.float32), # [26, 24]
Opcode.END_OF_FRAME_2: numpy.array([1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0], dtype=numpy.float32), # [24, 22] Opcode.END_OF_FRAME_2: numpy.array([1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0], dtype=numpy.float32), # [24, 22]
@ -250,43 +284,6 @@ VOLTAGE_SCHEDULE = {
} }
TOGGLES = {
Opcode.TICK_00: 3,
Opcode.TICK_03: 2,
Opcode.TICK_06: 1,
Opcode.TICK_09: 0,
Opcode.TICK_0a: 0,
Opcode.TICK_0d: 3,
Opcode.TICK_10: 2,
Opcode.TICK_13: 1,
Opcode.TICK_14: 1,
Opcode.TICK_1a: 3,
Opcode.TICK_1d: 2,
Opcode.TICK_1e: 2,
Opcode.TICK_27: 3,
Opcode.TICK_33: 2,
Opcode.TICK_36: 1,
Opcode.TICK_39: 0,
Opcode.TICK_3a: 0,
Opcode.TICK_3f: 2,
Opcode.TICK_42: 1,
Opcode.TICK_43: 1,
Opcode.TICK_4b: 2,
Opcode.TICK_4e: 1,
Opcode.TICK_4f: 1,
Opcode.TICK_57: 2,
Opcode.TICK_5a: 1,
Opcode.TICK_5b: 1,
Opcode.TICK_63: 2,
Opcode.TICK_6e: 2,
Opcode.TICK_79: 2,
Opcode.TICK_84: 1,
Opcode.TICK_87: 0,
Opcode.TICK_88: 0,
Opcode.TICK_8f: 1,
}
EOF_OPCODES = ( EOF_OPCODES = (
Opcode.END_OF_FRAME_0, Opcode.END_OF_FRAME_0,
Opcode.END_OF_FRAME_1, Opcode.END_OF_FRAME_1,

View File

@ -1,75 +1,75 @@
tick_00: ; voltages (True, True, True, True, True, True, True, False, False, False, False, True, True, True, True, False, False, False, False, False, False, False) tick_00: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0)
NOP ; 2 cycles NOP ; 2 cycles
tick_01: ; voltages (True, True, True, True, True, False, False, False, False, True, True, True, True, False, False, False, False, False, False, False) tick_01: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0)
NOP ; 2 cycles NOP ; 2 cycles
tick_02: ; voltages (True, True, True, False, False, False, False, True, True, True, True, False, False, False, False, False, False, False) tick_02: ; voltages (1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0)
STA $C030 ; 4 cycles STA $C030 ; 4 cycles
tick_05: ; voltages (True, True, True, False, False, False, False, True, True, True, True, True, True, True) tick_05: ; voltages (1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0)
STA $C030 ; 4 cycles STA $C030 ; 4 cycles
tick_08: ; voltages (True, True, True, False, False, False, False, False, False, False) tick_08: ; voltages (1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0)
STA $C030 ; 4 cycles STA $C030 ; 4 cycles
tick_0b: ; voltages (True, True, True, True, True, True) tick_0b: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, 1.0)
JMP (WDATA) ; 6 cycles JMP (WDATA) ; 6 cycles
tick_0e: ; voltages (True, True, True, True, True, True, True, False, False, False, False, True, True, True, True, True, True, False, False, False, False, False, False, False) tick_0e: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0)
NOP ; 2 cycles NOP ; 2 cycles
tick_0f: ; voltages (True, True, True, True, True, False, False, False, False, True, True, True, True, True, True, False, False, False, False, False, False, False) tick_0f: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0)
NOP ; 2 cycles NOP ; 2 cycles
tick_10: ; voltages (True, True, True, False, False, False, False, True, True, True, True, True, True, False, False, False, False, False, False, False) tick_10: ; voltages (1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0)
STA $C030 ; 4 cycles STA $C030 ; 4 cycles
tick_13: ; voltages (True, True, True, False, False, False, False, False, False, True, True, True, True, True, True, True) tick_13: ; voltages (1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0)
STA $C030 ; 4 cycles STA $C030 ; 4 cycles
tick_16: ; voltages (True, True, True, True, True, False, False, False, False, False, False, False) tick_16: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0)
NOP ; 2 cycles NOP ; 2 cycles
STA $C030 ; 4 cycles STA $C030 ; 4 cycles
JMP (WDATA) ; 6 cycles JMP (WDATA) ; 6 cycles
tick_1d: ; voltages (True, True, True, True, True, True, True, False, False, False, False, True, True, True, True, True, True, True, True, False, False, False, False, False, False, False) tick_1d: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0)
NOP ; 2 cycles NOP ; 2 cycles
tick_1e: ; voltages (True, True, True, True, True, False, False, False, False, True, True, True, True, True, True, True, True, False, False, False, False, False, False, False) tick_1e: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0)
NOP ; 2 cycles NOP ; 2 cycles
tick_1f: ; voltages (True, True, True, False, False, False, False, True, True, True, True, True, True, True, True, False, False, False, False, False, False, False) tick_1f: ; voltages (1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0)
STA $C030 ; 4 cycles STA $C030 ; 4 cycles
tick_22: ; voltages (True, True, True, False, False, False, False, False, False, False, False, True, True, True, True, True, True, True) tick_22: ; voltages (1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0)
STA $C030 ; 4 cycles STA $C030 ; 4 cycles
tick_25: ; voltages (True, True, True, True, True, True, True, False, False, False, False, False, False, False) tick_25: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0)
NOP ; 2 cycles NOP ; 2 cycles
NOP ; 2 cycles NOP ; 2 cycles
STA $C030 ; 4 cycles STA $C030 ; 4 cycles
JMP (WDATA) ; 6 cycles JMP (WDATA) ; 6 cycles
tick_2d: ; voltages (True, True, True, True, True, True, True, False, False, False, False, False, False, True, True, True, True, False, False, False, False, False, False, False) tick_2d: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0)
NOP ; 2 cycles NOP ; 2 cycles
tick_2e: ; voltages (True, True, True, True, True, False, False, False, False, False, False, True, True, True, True, False, False, False, False, False, False, False) tick_2e: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0)
NOP ; 2 cycles NOP ; 2 cycles
tick_2f: ; voltages (True, True, True, False, False, False, False, False, False, True, True, True, True, False, False, False, False, False, False, False) tick_2f: ; voltages (1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0)
STA $C030 ; 4 cycles STA $C030 ; 4 cycles
tick_32: ; voltages (True, True, True, True, True, False, False, False, False, True, True, True, True, True, True, True) tick_32: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0)
NOP ; 2 cycles NOP ; 2 cycles
STA $C030 ; 4 cycles STA $C030 ; 4 cycles
STA $C030 ; 4 cycles STA $C030 ; 4 cycles
JMP (WDATA) ; 6 cycles JMP (WDATA) ; 6 cycles
tick_3c: ; voltages (True, True, True, True, True, True, True, False, False, False, False, False, False, True, True, True, True, True, True, False, False, False, False, False, False, False) tick_3c: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0)
NOP ; 2 cycles NOP ; 2 cycles
tick_3d: ; voltages (True, True, True, True, True, False, False, False, False, False, False, True, True, True, True, True, True, False, False, False, False, False, False, False) tick_3d: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0)
NOP ; 2 cycles NOP ; 2 cycles
tick_3e: ; voltages (True, True, True, False, False, False, False, False, False, True, True, True, True, True, True, False, False, False, False, False, False, False) tick_3e: ; voltages (1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0)
STA $C030 ; 4 cycles STA $C030 ; 4 cycles
tick_41: ; voltages (True, True, True, True, True, False, False, False, False, False, False, True, True, True, True, True, True, True) tick_41: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0)
NOP ; 2 cycles NOP ; 2 cycles
STA $C030 ; 4 cycles STA $C030 ; 4 cycles
NOP ; 2 cycles NOP ; 2 cycles
STA $C030 ; 4 cycles STA $C030 ; 4 cycles
JMP (WDATA) ; 6 cycles JMP (WDATA) ; 6 cycles
tick_4c: ; voltages (True, True, True, True, True, True, True, False, False, False, False, False, False, True, True, True, True, True, True, True, True, False, False, False, False, False, False, False) tick_4c: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0)
NOP ; 2 cycles NOP ; 2 cycles
tick_4d: ; voltages (True, True, True, True, True, False, False, False, False, False, False, True, True, True, True, True, True, True, True, False, False, False, False, False, False, False) tick_4d: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0)
NOP ; 2 cycles NOP ; 2 cycles
tick_4e: ; voltages (True, True, True, False, False, False, False, False, False, True, True, True, True, True, True, True, True, False, False, False, False, False, False, False) tick_4e: ; voltages (1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0)
STA $C030 ; 4 cycles STA $C030 ; 4 cycles
tick_51: ; voltages (True, True, True, True, True, False, False, False, False, False, False, False, False, True, True, True, True, True, True, True) tick_51: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0)
NOP ; 2 cycles NOP ; 2 cycles
STA $C030 ; 4 cycles STA $C030 ; 4 cycles
NOP ; 2 cycles NOP ; 2 cycles
@ -77,26 +77,26 @@ tick_51: ; voltages (True, True, True, True, True, False, False, False, False, F
STA $C030 ; 4 cycles STA $C030 ; 4 cycles
JMP (WDATA) ; 6 cycles JMP (WDATA) ; 6 cycles
tick_5d: ; voltages (True, True, True, True, True, True, True, False, False, False, False, False, False, False, False, True, True, True, True, False, False, False, False, False, False, False) tick_5d: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0)
NOP ; 2 cycles NOP ; 2 cycles
tick_5e: ; voltages (True, True, True, True, True, False, False, False, False, False, False, False, False, True, True, True, True, False, False, False, False, False, False, False) tick_5e: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0)
NOP ; 2 cycles NOP ; 2 cycles
tick_5f: ; voltages (True, True, True, False, False, False, False, False, False, False, False, True, True, True, True, False, False, False, False, False, False, False) tick_5f: ; voltages (1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0)
STA $C030 ; 4 cycles STA $C030 ; 4 cycles
tick_62: ; voltages (True, True, True, True, True, True, True, False, False, False, False, True, True, True, True, True, True, True) tick_62: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0)
NOP ; 2 cycles NOP ; 2 cycles
NOP ; 2 cycles NOP ; 2 cycles
STA $C030 ; 4 cycles STA $C030 ; 4 cycles
STA $C030 ; 4 cycles STA $C030 ; 4 cycles
JMP (WDATA) ; 6 cycles JMP (WDATA) ; 6 cycles
tick_6d: ; voltages (True, True, True, True, True, True, True, False, False, False, False, False, False, False, False, True, True, True, True, True, True, False, False, False, False, False, False, False) tick_6d: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0)
NOP ; 2 cycles NOP ; 2 cycles
tick_6e: ; voltages (True, True, True, True, True, False, False, False, False, False, False, False, False, True, True, True, True, True, True, False, False, False, False, False, False, False) tick_6e: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0)
NOP ; 2 cycles NOP ; 2 cycles
tick_6f: ; voltages (True, True, True, False, False, False, False, False, False, False, False, True, True, True, True, True, True, False, False, False, False, False, False, False) tick_6f: ; voltages (1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0)
STA $C030 ; 4 cycles STA $C030 ; 4 cycles
tick_72: ; voltages (True, True, True, True, True, True, True, False, False, False, False, False, False, True, True, True, True, True, True, True) tick_72: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0)
NOP ; 2 cycles NOP ; 2 cycles
NOP ; 2 cycles NOP ; 2 cycles
STA $C030 ; 4 cycles STA $C030 ; 4 cycles
@ -104,13 +104,13 @@ tick_72: ; voltages (True, True, True, True, True, True, True, False, False, Fal
STA $C030 ; 4 cycles STA $C030 ; 4 cycles
JMP (WDATA) ; 6 cycles JMP (WDATA) ; 6 cycles
tick_7e: ; voltages (True, True, True, True, True, True, True, False, False, False, False, False, False, False, False, True, True, True, True, True, True, True, True, False, False, False, False, False, False, False) tick_7e: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0)
NOP ; 2 cycles NOP ; 2 cycles
tick_7f: ; voltages (True, True, True, True, True, False, False, False, False, False, False, False, False, True, True, True, True, True, True, True, True, False, False, False, False, False, False, False) tick_7f: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0)
NOP ; 2 cycles NOP ; 2 cycles
tick_80: ; voltages (True, True, True, False, False, False, False, False, False, False, False, True, True, True, True, True, True, True, True, False, False, False, False, False, False, False) tick_80: ; voltages (1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0)
STA $C030 ; 4 cycles STA $C030 ; 4 cycles
tick_83: ; voltages (True, True, True, True, True, True, True, False, False, False, False, False, False, False, False, True, True, True, True, True, True, True) tick_83: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0)
NOP ; 2 cycles NOP ; 2 cycles
NOP ; 2 cycles NOP ; 2 cycles
STA $C030 ; 4 cycles STA $C030 ; 4 cycles
@ -119,26 +119,26 @@ tick_83: ; voltages (True, True, True, True, True, True, True, False, False, Fal
STA $C030 ; 4 cycles STA $C030 ; 4 cycles
JMP (WDATA) ; 6 cycles JMP (WDATA) ; 6 cycles
tick_90: ; voltages (True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True) tick_90: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0)
NOP ; 2 cycles NOP ; 2 cycles
tick_91: ; voltages (True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True) tick_91: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0)
NOP ; 2 cycles NOP ; 2 cycles
tick_92: ; voltages (True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True) tick_92: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0)
NOP ; 2 cycles NOP ; 2 cycles
tick_93: ; voltages (True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True) tick_93: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0)
NOP ; 2 cycles NOP ; 2 cycles
tick_94: ; voltages (True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True) tick_94: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0)
NOP ; 2 cycles NOP ; 2 cycles
tick_95: ; voltages (True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True) tick_95: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0)
NOP ; 2 cycles NOP ; 2 cycles
tick_96: ; voltages (True, True, True, True, True, True, True, True, True, True, True, True, True, True) tick_96: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0)
NOP ; 2 cycles NOP ; 2 cycles
tick_97: ; voltages (True, True, True, True, True, True, True, True, True, True, True, True) tick_97: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0)
NOP ; 2 cycles NOP ; 2 cycles
tick_98: ; voltages (True, True, True, True, True, True, True, True, True, True) tick_98: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0)
NOP ; 2 cycles NOP ; 2 cycles
tick_99: ; voltages (True, True, True, True, True, True, True, True) tick_99: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0)
NOP ; 2 cycles NOP ; 2 cycles
JMP (WDATA) ; 6 cycles JMP (WDATA) ; 6 cycles
; 157 bytes ; 50 entrypoints, 157 bytes