mirror of
https://github.com/KrisKennaway/ii-sound.git
synced 2024-06-09 18:29:32 +00:00
Add a lot of EOF variants - quality is good but they're mostly not used
This commit is contained in:
parent
1552715b49
commit
13fb60fed0
239
encode_audio.py
239
encode_audio.py
|
@ -36,52 +36,6 @@ import opcodes
|
|||
import lookahead
|
||||
|
||||
|
||||
# We simulate the speaker voltage trajectory resulting from applying multiple
|
||||
# voltage profiles, compute the resulting squared error relative to the target
|
||||
# waveform, and pick the best one.
|
||||
#
|
||||
# We use numpy to vectorize the computation since it has better scaling
|
||||
# performance with more opcode choices, although also has a larger fixed
|
||||
# overhead.
|
||||
#
|
||||
# The speaker position p_i evolves according to
|
||||
# p_{i+1} = p_i + (v_i - p_i) / s
|
||||
# where v_i is the i'th applied voltage, s is the speaker step size
|
||||
#
|
||||
# Rearranging, we get p_{i+1} = v_i / s + (1-1/s) p_i
|
||||
# and if we expand the recurrence relation
|
||||
# p_{i+1} = Sum_{j=0}^i (1-1/s)^(i-j) v_j / s + (1-1/s)^(i+1) p_0
|
||||
# = (1-1/s)^(i+1)(1/s * Sum_{j=0}^i v_j / (1-1/s)^(j+1) + p0)
|
||||
#
|
||||
# We can precompute most of this expression:
|
||||
# 1) the vector {(1-1/s)^i} ("_delta_powers")
|
||||
# 2) the position-independent term of p_{i+1} ("_partial_positions"). Since
|
||||
# the candidate opcodes list only depends on frame_offset, the voltage matrix
|
||||
# v also only takes a few possible values, so we can precompute all values
|
||||
# of this term.
|
||||
|
||||
|
||||
@functools.lru_cache(None)
|
||||
def _delta_powers(shape, step_size: int) -> numpy.ndarray:
|
||||
delta = 1 - 1 / step_size
|
||||
return numpy.cumprod(numpy.full(shape, delta), axis=-1)
|
||||
|
||||
|
||||
def _partial_positions(voltages, step_size):
|
||||
delta_powers = _delta_powers(voltages.shape, step_size)
|
||||
|
||||
partial_positions = delta_powers * (
|
||||
numpy.cumsum(voltages / delta_powers, axis=-1) / step_size)
|
||||
return delta_powers, partial_positions
|
||||
|
||||
|
||||
def new_positions(
|
||||
position: float, partial_positions: numpy.ndarray,
|
||||
delta_powers: numpy.ndarray) -> numpy.ndarray:
|
||||
"""Computes new array of speaker positions for position and voltage data."""
|
||||
return partial_positions + delta_powers * position
|
||||
|
||||
|
||||
def total_error(positions: numpy.ndarray, data: numpy.ndarray) -> numpy.ndarray:
|
||||
"""Computes the total squared error for speaker position matrix vs data."""
|
||||
return numpy.sum(numpy.square(positions - data), axis=-1)
|
||||
|
@ -129,26 +83,19 @@ class Speaker:
|
|||
self.b2 = b2
|
||||
# print(dt, w, d, e, c1,c2,b1,b2)
|
||||
|
||||
self.scale = numpy.float64(1 / 700) # TODO: analytic expression
|
||||
# 3000 - 241
|
||||
# 2500 - 97
|
||||
# 2000 - 24
|
||||
# 1700 - 9.6
|
||||
# 1600 - 8.8
|
||||
# 1500 - 9.39
|
||||
# 1400 - 10.46
|
||||
# 1000 - 21.56
|
||||
|
||||
def evolve(self, y1, y2, voltage1, voltage2, voltages):
|
||||
output = numpy.zeros_like(voltages, dtype=numpy.float64)
|
||||
x1 = numpy.full((1, voltages.shape[0]), voltage1,
|
||||
dtype=numpy.float32)
|
||||
x2 = numpy.full((1, voltages.shape[0]), voltage2,
|
||||
dtype=numpy.float32)
|
||||
for i in range(voltages.shape[1]):
|
||||
# print(i)
|
||||
y = self.c1 * y1 - self.c2 * y2 + self.b1 * x1 + self.b2 * x2
|
||||
output[:, i] = y
|
||||
|
||||
y2 = y1
|
||||
y1 = y
|
||||
x2 = x1
|
||||
x1 = voltages[:, i] # XXX does this really always lag?
|
||||
|
||||
# print(output)
|
||||
return output
|
||||
# 1600 - 3603
|
||||
# 1000 - 708
|
||||
# 800 - 802
|
||||
self.scale = numpy.float64(1 / 800) # TODO: analytic expression
|
||||
|
||||
|
||||
def audio_bytestream(data: numpy.ndarray, step: int, lookahead_steps: int,
|
||||
|
@ -163,30 +110,12 @@ def audio_bytestream(data: numpy.ndarray, step: int, lookahead_steps: int,
|
|||
[data, numpy.zeros(max(lookahead_steps, opcodes.cycle_length(
|
||||
opcodes.Opcode.END_OF_FRAME_0, is_6502)), dtype=numpy.float32)]))
|
||||
|
||||
# Starting speaker position and applied voltage.
|
||||
# position = 0.0
|
||||
voltage1 = voltage2 = -1.0
|
||||
# Starting speaker applied voltage.
|
||||
voltage1 = voltage2 = -1.0 # * 2.5
|
||||
|
||||
toggles = 0
|
||||
|
||||
sp = Speaker(sample_rate, freq=3875, damping=-1210)
|
||||
#
|
||||
# print(sp.evolve(0, 0, 1.0, 1.0, numpy.full((1, 10000), 1.0)) * sp.scale)
|
||||
# assert False
|
||||
|
||||
# XXX
|
||||
# Smoothing window N --> log_2 N bit resolution
|
||||
# - 64
|
||||
# Maintain last N voltages
|
||||
# Lookahead window L
|
||||
# Compute all opcodes for window L
|
||||
# Compute all voltage schedules for window L
|
||||
# Compute moving average over combined voltage schedule and minimize error
|
||||
# XXX band pass filter first - to speaker range? no point trying to
|
||||
# model frequencies that can't be produced
|
||||
|
||||
# old method was basically an exponential moving average, another way of
|
||||
# smoothing square waveform
|
||||
|
||||
total_err = 0.0 # Total squared error of audio output
|
||||
frame_offset = 0 # Position in 2048-byte TCP frame
|
||||
|
@ -198,7 +127,9 @@ def audio_bytestream(data: numpy.ndarray, step: int, lookahead_steps: int,
|
|||
|
||||
y1 = y2 = 0.0 # last 2 speaker positions
|
||||
min_lookahead_steps = lookahead_steps
|
||||
# data = numpy.full(data.shape, -0.9)
|
||||
# data = numpy.full(data.shape, 0.0)
|
||||
# data = numpy.sin(
|
||||
# numpy.arange(len(data)) * (2 * numpy.pi / (sample_rate / 3875)))
|
||||
|
||||
last_v = 1.0
|
||||
since_toggle = 0
|
||||
|
@ -209,64 +140,26 @@ def audio_bytestream(data: numpy.ndarray, step: int, lookahead_steps: int,
|
|||
# opcodes.Opcode.TICK_14,
|
||||
# )
|
||||
# )
|
||||
while i < dlen // 10:
|
||||
clicks = 0
|
||||
while i < dlen // 1:
|
||||
# XXX handle end of data cleanly
|
||||
# print(i, dlen)
|
||||
# if i >= next_tick:
|
||||
# eta.print_status()
|
||||
# next_tick = int(eta.i * dlen / 1000)
|
||||
|
||||
# if frame_offset == 2047:
|
||||
# print("\n",i / sample_rate)
|
||||
# if frame_horizon(frame_offset, min_lookahead_steps) != 0:
|
||||
# data[i:i+160] = numpy.mean(data[i:i+160])
|
||||
|
||||
# Compute all possible opcode sequences for this frame offset
|
||||
opcode_hash, candidate_opcodes, voltages, lookahead_steps = \
|
||||
opcodes.candidate_opcodes(
|
||||
frame_horizon(frame_offset, min_lookahead_steps),
|
||||
min_lookahead_steps, is_6502)
|
||||
# print(frame_offset, lookahead_steps)
|
||||
|
||||
all_positions = sp.evolve(y1, y2, voltage1, voltage2, voltage1
|
||||
* voltages)
|
||||
# print(all_positions, all_positions.shape)
|
||||
all_positions = lookahead.evolve(
|
||||
sp, y1, y2, voltage1, voltage2, voltage1 * voltages)
|
||||
|
||||
# Look up the precomputed partial values for these candidate opcode
|
||||
# sequences.
|
||||
# delta_powers, partial_positions = all_partial_positions[opcode_hash,
|
||||
# voltage]
|
||||
# # Compute matrix of new speaker positions for candidate opcode
|
||||
# # sequences.
|
||||
# all_positions = new_positions(position, partial_positions, delta_powers)
|
||||
|
||||
# opcode_idx, _ = lookahead.moving_average(
|
||||
# smoothed_window, voltage * voltages, data[i:i + lookahead_steps],
|
||||
# lookahead_steps)
|
||||
|
||||
# assert all_positions.shape[1] == lookahead_steps
|
||||
# Pick the opcode sequence that minimizes the total squared error
|
||||
# relative to the data waveform. This total_error() call is where
|
||||
# about 75% of CPU time is spent.
|
||||
# avoided = False
|
||||
# while True:
|
||||
# relative to the data waveform.
|
||||
errors = total_error(
|
||||
all_positions * sp.scale, data[i:i + lookahead_steps])
|
||||
# if numpy.min(errors) > 1 and frame_offset == 2046:
|
||||
# if avoided:
|
||||
# print("...failed")
|
||||
# break
|
||||
# print("Avoiding click at", i, frame_offset, numpy.min(errors))
|
||||
# mult = 1.0
|
||||
# for j in range(lookahead_steps):
|
||||
# if j <= lookahead_steps // 2:
|
||||
# mult *= 0.95
|
||||
# else:
|
||||
# mult /= 0.95
|
||||
# data[i+j] = data[i+j] * mult
|
||||
# avoided = True
|
||||
# else:
|
||||
# break
|
||||
opcode_idx = numpy.argmin(errors).item()
|
||||
# Next opcode
|
||||
opcode = candidate_opcodes[opcode_idx][0]
|
||||
|
@ -279,11 +172,9 @@ def audio_bytestream(data: numpy.ndarray, step: int, lookahead_steps: int,
|
|||
# Apply this opcode to evolve the speaker position
|
||||
opcode_voltages = (voltage1 * opcodes.voltage_schedule(
|
||||
opcode, is_6502)).reshape((1, -1))
|
||||
all_positions = sp.evolve(y1, y2, voltage1, voltage2, opcode_voltages)
|
||||
all_positions = lookahead.evolve(
|
||||
sp, y1, y2, voltage1, voltage2, opcode_voltages)
|
||||
|
||||
# delta_powers, partial_positions, last_voltage = \
|
||||
# opcode_partial_positions[opcode, voltage]
|
||||
# all_positions = new_positions(position, partial_positions, delta_powers)
|
||||
assert all_positions.shape[0] == 1
|
||||
assert all_positions.shape[1] == opcode_length
|
||||
|
||||
|
@ -291,43 +182,28 @@ def audio_bytestream(data: numpy.ndarray, step: int, lookahead_steps: int,
|
|||
voltage2 = opcode_voltages[0, -2]
|
||||
y1 = all_positions[0, -1]
|
||||
y2 = all_positions[0, -2]
|
||||
# print(y1, y2, all_positions[0] * sp.scale)
|
||||
new_error = total_error(
|
||||
all_positions[0] * sp.scale, data[i:i + opcode_length]).item()
|
||||
total_err += new_error
|
||||
if frame_offset == 2047:
|
||||
print(i / sample_rate, opcode, new_error,
|
||||
numpy.mean(data[i:i + opcode_length]), "<----" if new_error >
|
||||
0.3 else "")
|
||||
# for v in opcode_voltages[0]:
|
||||
# since_toggle += 1
|
||||
# if v != last_v:
|
||||
# print(since_toggle)
|
||||
# since_toggle = 0
|
||||
# last_v = v
|
||||
# print(i, opcode, numpy.mean(all_positions[0] * sp.scale))
|
||||
if new_error > 0.3:
|
||||
clicks += 1
|
||||
print(frame_offset, i / sample_rate, opcode, new_error,
|
||||
numpy.mean(data[i:i + opcode_length])) # , "<----" if \
|
||||
# new_error > 0.3 else "")
|
||||
|
||||
# print(all_positions[0] * sp.scale, data[i:i + opcode_length])
|
||||
|
||||
# if i >= 174600:
|
||||
# print(i, frame_offset, new_error, opcode)
|
||||
# for v in all_positions[0]:
|
||||
# print(v * sp.scale)
|
||||
# print(v * sp.scale)
|
||||
# for v in opcode_voltages[0]:
|
||||
# print(" %d" % v)
|
||||
|
||||
yield opcode
|
||||
for v in all_positions[0]:
|
||||
yield v * sp.scale
|
||||
# # print(v * sp.scale)
|
||||
# print(frame_offset, opcode)
|
||||
# yield opcode
|
||||
|
||||
i += opcode_length
|
||||
frame_offset = (frame_offset + 1) % 2048
|
||||
# if i == 174720:
|
||||
# frame_offset = 0
|
||||
|
||||
# Make sure we have at least 2k left in stream so player will do a
|
||||
# complete read.
|
||||
for _ in range(frame_offset % 2048, 2048):
|
||||
yield opcodes.Opcode.EXIT
|
||||
# for _ in range(frame_offset % 2048, 2048):
|
||||
# yield opcodes.Opcode.EXIT
|
||||
eta.done()
|
||||
print("Total error %f" % total_err)
|
||||
toggles_per_sec = toggles / dlen * sample_rate
|
||||
|
@ -337,6 +213,7 @@ def audio_bytestream(data: numpy.ndarray, step: int, lookahead_steps: int,
|
|||
for v, k in sorted(list(opcode_counts.items()), key=lambda kv: kv[1],
|
||||
reverse=True):
|
||||
print("%s: %d" % (v, k))
|
||||
print("%d clicks" % clicks)
|
||||
|
||||
|
||||
def preprocess(
|
||||
|
@ -346,7 +223,7 @@ def preprocess(
|
|||
|
||||
data, _ = librosa.load(filename, sr=target_sample_rate, mono=True)
|
||||
|
||||
max_value = numpy.percentile(data, normalization_percentile)
|
||||
max_value = 1.0 # numpy.percentile(data, normalization_percentile)
|
||||
data /= max_value
|
||||
data *= normalize
|
||||
|
||||
|
@ -362,8 +239,8 @@ def main():
|
|||
help="Whether target machine clock speed is PAL ("
|
||||
"1015657Hz) or NTSC (1020484)",
|
||||
required=True)
|
||||
# TODO: implement 6502
|
||||
parser.add_argument("--cpu", choices=['6502', '65c02'], default='65c02',
|
||||
# TODO: implement 6502 - JMP indirect takes 5 cycles instead of 6
|
||||
parser.add_argument("--cpu", choices=['65c02'], default='65c02',
|
||||
help="Target machine CPU type")
|
||||
parser.add_argument("--step_size", type=int,
|
||||
help="Delta encoding step size")
|
||||
|
@ -388,24 +265,24 @@ def main():
|
|||
# 16/14 as long.
|
||||
sample_rate = 1015657 if args.clock == 'pal' else 1020484 # NTSC
|
||||
|
||||
# output = numpy.array(list(audio_bytestream(
|
||||
# preprocess(args.input, sample_rate, args.normalization,
|
||||
# args.norm_percentile), args.step_size,
|
||||
# args.lookahead_cycles, sample_rate, args.cpu == '6502')),
|
||||
# dtype=numpy.float32)
|
||||
# output_rate = 44100 # int(sample_rate / 4)
|
||||
# output = librosa.resample(output, orig_sr=sample_rate,
|
||||
# target_sr=output_rate)
|
||||
# with sf.SoundFile(
|
||||
# args.output, "w", output_rate, channels=1, format='WAV') \
|
||||
# as f:
|
||||
# f.write(output)
|
||||
with open(args.output, "wb+") as f:
|
||||
for opcode in audio_bytestream(
|
||||
preprocess(args.input, sample_rate, args.normalization,
|
||||
args.norm_percentile), args.step_size,
|
||||
args.lookahead_cycles, sample_rate, args.cpu == '6502'):
|
||||
f.write(bytes([opcode.value]))
|
||||
output = numpy.array(list(audio_bytestream(
|
||||
preprocess(args.input, sample_rate, args.normalization,
|
||||
args.norm_percentile), args.step_size,
|
||||
args.lookahead_cycles, sample_rate, args.cpu == '6502')),
|
||||
dtype=numpy.float32)
|
||||
output_rate = 44100 # int(sample_rate / 4)
|
||||
output = librosa.resample(output, orig_sr=sample_rate,
|
||||
target_sr=output_rate)
|
||||
with sf.SoundFile(
|
||||
args.output, "w", output_rate, channels=1, format='WAV') \
|
||||
as f:
|
||||
f.write(output)
|
||||
# with open(args.output, "wb+") as f:
|
||||
# for opcode in audio_bytestream(
|
||||
# preprocess(args.input, sample_rate, args.normalization,
|
||||
# args.norm_percentile), args.step_size,
|
||||
# args.lookahead_cycles, sample_rate, args.cpu == '6502'):
|
||||
# f.write(bytes([opcode.value]))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
|
|
@ -78,30 +78,17 @@ def all_opcodes(
|
|||
num_opcodes += 1
|
||||
|
||||
|
||||
import itertools
|
||||
|
||||
|
||||
def _make_end_of_frame_voltages(skip) -> numpy.ndarray:
|
||||
def _make_end_of_frame_voltages(cycles) -> numpy.ndarray:
|
||||
"""Voltage sequence for end-of-frame TCP processing."""
|
||||
length = 160 # 4 + 14 * 10 + 6
|
||||
# Always start with a STA $C030
|
||||
c = [] # numpy.full(length, 1.0, dtype=numpy.float32)
|
||||
c = []
|
||||
voltage_high = True
|
||||
# toggles = 0
|
||||
for skip_cycles in itertools.cycle(skip):
|
||||
if len(c) + skip_cycles < length:
|
||||
c.extend([1.0 if voltage_high else -1.0] * (skip_cycles - 1))
|
||||
else:
|
||||
c.extend([1.0 if voltage_high else -1.0] * (length - len(c)))
|
||||
break
|
||||
voltage_high = not voltage_high
|
||||
for i, skip_cycles in enumerate(cycles):
|
||||
c.extend([1.0 if voltage_high else -1.0] * (skip_cycles - 1))
|
||||
if i != len(cycles) - 1:
|
||||
voltage_high = not voltage_high
|
||||
c.append(1.0 if voltage_high else -1.0)
|
||||
# # toggles += 1
|
||||
# for j in range(3 + 10 * i + skip , min(length, 3 + 10 * (i + 1) +
|
||||
# skip)):
|
||||
# c[j] = 1.0 if voltage_high else -1.0
|
||||
return numpy.array(c[:length], dtype=numpy.float32)
|
||||
# return c
|
||||
return numpy.array(c, dtype=numpy.float32)
|
||||
|
||||
|
||||
# These are duty cycles
|
||||
eof_cycles = [
|
||||
|
@ -110,7 +97,21 @@ eof_cycles = [
|
|||
# (12,8), # -0.15
|
||||
# (14, 10), # -0.10
|
||||
# (12,10), # -0.05
|
||||
# (4, 40, 4, 40, 4, 40, 4, 6),
|
||||
# (4, 38, 6, 38, 6, 38, 6, 6),
|
||||
# (4, 36, 8, 36, 8, 36, 8, 6),
|
||||
# (4, 34, 10, 34, 10, 34, 10, 6),
|
||||
# (4, 32, 12, 32, 12, 32, 12, 6),
|
||||
# (4, 30, 14, 30, 14, 30, 14, 6),
|
||||
(4, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 6), # 0.0
|
||||
(4, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 6), # 0.046
|
||||
(4, 24, 20, 24, 20, 24, 20, 6), # 0.09
|
||||
(4, 10, 8, 10, 8, 10, 8, 10, 8, 10, 8, 10, 8, 10, 8, 10, 6), # 0.11
|
||||
(4, 13, 10, 13, 10, 13, 10, 13, 10, 13, 10, 13, 10, 13, 6), # 0.13
|
||||
(4, 28, 20, 28, 20, 28, 20, 6), # 0.166
|
||||
(4, 26, 18, 26, 18, 26, 18, 6), # 0.18
|
||||
(4, 24, 16, 24, 16, 24, 16, 6), # 0.2
|
||||
|
||||
# (10, 8, 10, 10, 10, 8), # 0.05
|
||||
# (12, 10, 12, 8, 10, 10), # 0.1
|
||||
# (4, 10, 8, 10, 8, 10, 8, 10, 8, 10, 8, 10, 8, 10, 8, 10, 8, 10, 6), # 0.15
|
||||
|
@ -122,6 +123,42 @@ eof_cycles = [
|
|||
]
|
||||
|
||||
|
||||
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(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 _duty_cycles():
|
||||
res = {}
|
||||
|
||||
for i in range(4, 50, 2):
|
||||
for j in range(i, 50, 2):
|
||||
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 cycles
|
||||
|
||||
|
||||
eof_cycles = _duty_cycles()
|
||||
|
||||
|
||||
def generate_player(player_ops: List[Tuple[Opcode]], opcode_filename: str,
|
||||
player_filename: str):
|
||||
num_bytes = 0
|
||||
|
@ -184,9 +221,9 @@ def generate_player(player_ops: List[Tuple[Opcode]], opcode_filename: str,
|
|||
"\n" % (o, v))
|
||||
for i, skip_cycles in enumerate(eof_cycles):
|
||||
f.write(" Opcode.END_OF_FRAME_%d: numpy.array([%s], "
|
||||
"dtype=numpy.float32),\n" % (i, ", ".join(
|
||||
str(f) for f in _make_end_of_frame_voltages(
|
||||
skip_cycles))))
|
||||
"dtype=numpy.float32), # %s\n" % (i, ", ".join(
|
||||
str(f) for f in _make_end_of_frame_voltages2(
|
||||
skip_cycles)), skip_cycles))
|
||||
f.write("}\n")
|
||||
|
||||
f.write("\n\nTOGGLES = {\n")
|
||||
|
|
|
@ -111,13 +111,13 @@ def candidate_opcodes(
|
|||
lookahead_cycles, retains the first such opcode sequence.
|
||||
"""
|
||||
opcodes = opcode_lookahead(frame_offset, lookahead_cycles, is_6502)
|
||||
# opcodes = [(Opcode.TICK_07,), (Opcode.TICK_84,)]
|
||||
# Look ahead over the common cycle subsequence to make sure we see as far
|
||||
# as possible into the future
|
||||
cycles = []
|
||||
for ops in opcodes:
|
||||
op_len = sum(cycle_length(op, is_6502) for op in ops)
|
||||
cycles.append(op_len)
|
||||
# print(cycles)
|
||||
lookahead_cycles = min(cycles)
|
||||
seen_cycles = set()
|
||||
pruned_opcodes = []
|
||||
|
|
|
@ -7,84 +7,246 @@ class Opcode(enum.Enum):
|
|||
TICK_03 = 0x03
|
||||
TICK_06 = 0x06
|
||||
TICK_09 = 0x09
|
||||
TICK_0c = 0x0c
|
||||
TICK_0f = 0x0f
|
||||
TICK_11 = 0x11
|
||||
TICK_0a = 0x0a
|
||||
TICK_0d = 0x0d
|
||||
TICK_10 = 0x10
|
||||
TICK_13 = 0x13
|
||||
TICK_14 = 0x14
|
||||
TICK_18 = 0x18
|
||||
TICK_1b = 0x1b
|
||||
TICK_1a = 0x1a
|
||||
TICK_1d = 0x1d
|
||||
TICK_24 = 0x24
|
||||
TICK_1e = 0x1e
|
||||
TICK_27 = 0x27
|
||||
TICK_2a = 0x2a
|
||||
TICK_37 = 0x37
|
||||
TICK_3c = 0x3c
|
||||
TICK_33 = 0x33
|
||||
TICK_36 = 0x36
|
||||
TICK_39 = 0x39
|
||||
TICK_3a = 0x3a
|
||||
TICK_3f = 0x3f
|
||||
TICK_42 = 0x42
|
||||
TICK_43 = 0x43
|
||||
TICK_4b = 0x4b
|
||||
TICK_53 = 0x53
|
||||
TICK_56 = 0x56
|
||||
TICK_4e = 0x4e
|
||||
TICK_4f = 0x4f
|
||||
TICK_57 = 0x57
|
||||
TICK_5f = 0x5f
|
||||
TICK_62 = 0x62
|
||||
TICK_6a = 0x6a
|
||||
TICK_6d = 0x6d
|
||||
TICK_75 = 0x75
|
||||
TICK_80 = 0x80
|
||||
TICK_8b = 0x8b
|
||||
TICK_95 = 0x95
|
||||
TICK_9f = 0x9f
|
||||
TICK_a2 = 0xa2
|
||||
TICK_a4 = 0xa4
|
||||
TICK_ae = 0xae
|
||||
TICK_b5 = 0xb5
|
||||
TICK_b8 = 0xb8
|
||||
TICK_bf = 0xbf
|
||||
TICK_c9 = 0xc9
|
||||
EXIT = 0xd2
|
||||
END_OF_FRAME_0 = 0xd6
|
||||
TICK_5a = 0x5a
|
||||
TICK_5b = 0x5b
|
||||
TICK_63 = 0x63
|
||||
TICK_6e = 0x6e
|
||||
TICK_79 = 0x79
|
||||
TICK_84 = 0x84
|
||||
TICK_87 = 0x87
|
||||
TICK_88 = 0x88
|
||||
TICK_8f = 0x8f
|
||||
EXIT = 0x99
|
||||
END_OF_FRAME_0 = 0x9d
|
||||
END_OF_FRAME_1 = 0x9e
|
||||
END_OF_FRAME_2 = 0x9f
|
||||
END_OF_FRAME_3 = 0xa0
|
||||
END_OF_FRAME_4 = 0xa1
|
||||
END_OF_FRAME_5 = 0xa2
|
||||
END_OF_FRAME_6 = 0xa3
|
||||
END_OF_FRAME_7 = 0xa4
|
||||
END_OF_FRAME_8 = 0xa5
|
||||
END_OF_FRAME_9 = 0xa6
|
||||
END_OF_FRAME_10 = 0xa7
|
||||
END_OF_FRAME_11 = 0xa8
|
||||
END_OF_FRAME_12 = 0xa9
|
||||
END_OF_FRAME_13 = 0xaa
|
||||
END_OF_FRAME_14 = 0xab
|
||||
END_OF_FRAME_15 = 0xac
|
||||
END_OF_FRAME_16 = 0xad
|
||||
END_OF_FRAME_17 = 0xae
|
||||
END_OF_FRAME_18 = 0xaf
|
||||
END_OF_FRAME_19 = 0xb0
|
||||
END_OF_FRAME_20 = 0xb1
|
||||
END_OF_FRAME_21 = 0xb2
|
||||
END_OF_FRAME_22 = 0xb3
|
||||
END_OF_FRAME_23 = 0xb4
|
||||
END_OF_FRAME_24 = 0xb5
|
||||
END_OF_FRAME_25 = 0xb6
|
||||
END_OF_FRAME_26 = 0xb7
|
||||
END_OF_FRAME_27 = 0xb8
|
||||
END_OF_FRAME_28 = 0xb9
|
||||
END_OF_FRAME_29 = 0xba
|
||||
END_OF_FRAME_30 = 0xbb
|
||||
END_OF_FRAME_31 = 0xbc
|
||||
END_OF_FRAME_32 = 0xbd
|
||||
END_OF_FRAME_33 = 0xbe
|
||||
END_OF_FRAME_34 = 0xbf
|
||||
END_OF_FRAME_35 = 0xc0
|
||||
END_OF_FRAME_36 = 0xc1
|
||||
END_OF_FRAME_37 = 0xc2
|
||||
END_OF_FRAME_38 = 0xc3
|
||||
END_OF_FRAME_39 = 0xc4
|
||||
END_OF_FRAME_40 = 0xc5
|
||||
END_OF_FRAME_41 = 0xc6
|
||||
END_OF_FRAME_42 = 0xc7
|
||||
END_OF_FRAME_43 = 0xc8
|
||||
END_OF_FRAME_44 = 0xc9
|
||||
END_OF_FRAME_45 = 0xca
|
||||
END_OF_FRAME_46 = 0xcb
|
||||
END_OF_FRAME_47 = 0xcc
|
||||
END_OF_FRAME_48 = 0xcd
|
||||
END_OF_FRAME_49 = 0xce
|
||||
END_OF_FRAME_50 = 0xcf
|
||||
END_OF_FRAME_51 = 0xd0
|
||||
END_OF_FRAME_52 = 0xd1
|
||||
END_OF_FRAME_53 = 0xd2
|
||||
END_OF_FRAME_54 = 0xd3
|
||||
END_OF_FRAME_55 = 0xd4
|
||||
END_OF_FRAME_56 = 0xd5
|
||||
END_OF_FRAME_57 = 0xd6
|
||||
END_OF_FRAME_58 = 0xd7
|
||||
END_OF_FRAME_59 = 0xd8
|
||||
END_OF_FRAME_60 = 0xd9
|
||||
END_OF_FRAME_61 = 0xda
|
||||
END_OF_FRAME_62 = 0xdb
|
||||
END_OF_FRAME_63 = 0xdc
|
||||
END_OF_FRAME_64 = 0xdd
|
||||
END_OF_FRAME_65 = 0xde
|
||||
END_OF_FRAME_66 = 0xdf
|
||||
END_OF_FRAME_67 = 0xe0
|
||||
END_OF_FRAME_68 = 0xe1
|
||||
END_OF_FRAME_69 = 0xe2
|
||||
END_OF_FRAME_70 = 0xe3
|
||||
END_OF_FRAME_71 = 0xe4
|
||||
END_OF_FRAME_72 = 0xe5
|
||||
END_OF_FRAME_73 = 0xe6
|
||||
END_OF_FRAME_74 = 0xe7
|
||||
END_OF_FRAME_75 = 0xe8
|
||||
END_OF_FRAME_76 = 0xe9
|
||||
END_OF_FRAME_77 = 0xea
|
||||
END_OF_FRAME_78 = 0xeb
|
||||
END_OF_FRAME_79 = 0xec
|
||||
END_OF_FRAME_80 = 0xed
|
||||
END_OF_FRAME_81 = 0xee
|
||||
END_OF_FRAME_82 = 0xef
|
||||
END_OF_FRAME_83 = 0xf0
|
||||
END_OF_FRAME_84 = 0xf1
|
||||
END_OF_FRAME_85 = 0xf2
|
||||
END_OF_FRAME_86 = 0xf3
|
||||
|
||||
|
||||
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), 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), 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), dtype=numpy.float32),
|
||||
Opcode.TICK_09: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32),
|
||||
Opcode.TICK_0c: 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), 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), dtype=numpy.float32),
|
||||
Opcode.TICK_11: 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_14: numpy.array((1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), dtype=numpy.float32),
|
||||
Opcode.TICK_18: 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), dtype=numpy.float32),
|
||||
Opcode.TICK_1b: 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), 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), dtype=numpy.float32),
|
||||
Opcode.TICK_24: 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), 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), dtype=numpy.float32),
|
||||
Opcode.TICK_2a: numpy.array((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_37: numpy.array((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), 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), 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), 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), dtype=numpy.float32),
|
||||
Opcode.TICK_53: 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), dtype=numpy.float32),
|
||||
Opcode.TICK_56: 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), 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), 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), 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), dtype=numpy.float32),
|
||||
Opcode.TICK_6a: 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), dtype=numpy.float32),
|
||||
Opcode.TICK_75: 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), 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), dtype=numpy.float32),
|
||||
Opcode.TICK_8b: 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_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_9f: 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), dtype=numpy.float32),
|
||||
Opcode.TICK_a2: 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), dtype=numpy.float32),
|
||||
Opcode.TICK_a4: 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_ae: 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), dtype=numpy.float32),
|
||||
Opcode.TICK_b5: 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_b8: 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_bf: 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), dtype=numpy.float32),
|
||||
Opcode.TICK_c9: 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.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, 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), 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_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_09: numpy.array((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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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.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], 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], 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], dtype=numpy.float32), # [24, 22]
|
||||
Opcode.END_OF_FRAME_3: 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], dtype=numpy.float32), # [22, 20]
|
||||
Opcode.END_OF_FRAME_4: 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], dtype=numpy.float32), # [20, 18]
|
||||
Opcode.END_OF_FRAME_5: 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], dtype=numpy.float32), # [18, 16]
|
||||
Opcode.END_OF_FRAME_6: 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], dtype=numpy.float32), # [16, 14]
|
||||
Opcode.END_OF_FRAME_7: 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], dtype=numpy.float32), # [14, 12]
|
||||
Opcode.END_OF_FRAME_8: 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], dtype=numpy.float32), # [26, 22]
|
||||
Opcode.END_OF_FRAME_9: 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], dtype=numpy.float32), # [12, 10]
|
||||
Opcode.END_OF_FRAME_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, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 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), # [22, 18]
|
||||
Opcode.END_OF_FRAME_11: 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], dtype=numpy.float32), # [20, 16]
|
||||
Opcode.END_OF_FRAME_12: 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], dtype=numpy.float32), # [28, 22]
|
||||
Opcode.END_OF_FRAME_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, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 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), # [18, 14]
|
||||
Opcode.END_OF_FRAME_14: 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], dtype=numpy.float32), # [26, 20]
|
||||
Opcode.END_OF_FRAME_15: 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], dtype=numpy.float32), # [16, 12]
|
||||
Opcode.END_OF_FRAME_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, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 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), # [22, 16]
|
||||
Opcode.END_OF_FRAME_17: 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], dtype=numpy.float32), # [14, 10]
|
||||
Opcode.END_OF_FRAME_18: 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], dtype=numpy.float32), # [20, 14]
|
||||
Opcode.END_OF_FRAME_19: 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], dtype=numpy.float32), # [26, 18]
|
||||
Opcode.END_OF_FRAME_20: 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), # [12, 8]
|
||||
Opcode.END_OF_FRAME_21: 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], dtype=numpy.float32), # [28, 18]
|
||||
Opcode.END_OF_FRAME_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, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 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), # [22, 14]
|
||||
Opcode.END_OF_FRAME_23: 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], dtype=numpy.float32), # [16, 10]
|
||||
Opcode.END_OF_FRAME_24: 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], dtype=numpy.float32), # [26, 16]
|
||||
Opcode.END_OF_FRAME_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, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 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), # [20, 12]
|
||||
Opcode.END_OF_FRAME_26: 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], dtype=numpy.float32), # [24, 14]
|
||||
Opcode.END_OF_FRAME_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, 1.0, 1.0, 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), # [14, 8]
|
||||
Opcode.END_OF_FRAME_28: 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], dtype=numpy.float32), # [32, 18]
|
||||
Opcode.END_OF_FRAME_29: 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], dtype=numpy.float32), # [18, 10]
|
||||
Opcode.END_OF_FRAME_30: 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], dtype=numpy.float32), # [22, 12]
|
||||
Opcode.END_OF_FRAME_31: 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], dtype=numpy.float32), # [26, 14]
|
||||
Opcode.END_OF_FRAME_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, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 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), # [30, 16]
|
||||
Opcode.END_OF_FRAME_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, 1.0, 1.0, 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), # [16, 8]
|
||||
Opcode.END_OF_FRAME_34: 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], dtype=numpy.float32), # [34, 16]
|
||||
Opcode.END_OF_FRAME_35: 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], dtype=numpy.float32), # [30, 14]
|
||||
Opcode.END_OF_FRAME_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, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 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, 12]
|
||||
Opcode.END_OF_FRAME_37: 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], dtype=numpy.float32), # [22, 10]
|
||||
Opcode.END_OF_FRAME_38: 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], dtype=numpy.float32), # [18, 8]
|
||||
Opcode.END_OF_FRAME_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, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 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), # [32, 14]
|
||||
Opcode.END_OF_FRAME_40: 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), # [14, 6]
|
||||
Opcode.END_OF_FRAME_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, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 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, 10]
|
||||
Opcode.END_OF_FRAME_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, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 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), # [34, 14]
|
||||
Opcode.END_OF_FRAME_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, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 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), # [20, 8]
|
||||
Opcode.END_OF_FRAME_44: 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], dtype=numpy.float32), # [36, 14]
|
||||
Opcode.END_OF_FRAME_45: 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], dtype=numpy.float32), # [26, 10]
|
||||
Opcode.END_OF_FRAME_46: 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], dtype=numpy.float32), # [16, 6]
|
||||
Opcode.END_OF_FRAME_47: 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], dtype=numpy.float32), # [22, 8]
|
||||
Opcode.END_OF_FRAME_48: 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], dtype=numpy.float32), # [28, 10]
|
||||
Opcode.END_OF_FRAME_49: 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], dtype=numpy.float32), # [34, 12]
|
||||
Opcode.END_OF_FRAME_50: 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], dtype=numpy.float32), # [18, 6]
|
||||
Opcode.END_OF_FRAME_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, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 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), # [38, 12]
|
||||
Opcode.END_OF_FRAME_52: 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], dtype=numpy.float32), # [32, 10]
|
||||
Opcode.END_OF_FRAME_53: 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], dtype=numpy.float32), # [26, 8]
|
||||
Opcode.END_OF_FRAME_54: 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], dtype=numpy.float32), # [20, 6]
|
||||
Opcode.END_OF_FRAME_55: 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], dtype=numpy.float32), # [34, 10]
|
||||
Opcode.END_OF_FRAME_56: 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], dtype=numpy.float32), # [28, 8]
|
||||
Opcode.END_OF_FRAME_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, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 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), # [36, 10]
|
||||
Opcode.END_OF_FRAME_58: 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], dtype=numpy.float32), # [22, 6]
|
||||
Opcode.END_OF_FRAME_59: 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], dtype=numpy.float32), # [30, 8]
|
||||
Opcode.END_OF_FRAME_60: 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], dtype=numpy.float32), # [38, 10]
|
||||
Opcode.END_OF_FRAME_61: 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), # [16, 4]
|
||||
Opcode.END_OF_FRAME_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, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 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), # [34, 8]
|
||||
Opcode.END_OF_FRAME_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, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 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, 6]
|
||||
Opcode.END_OF_FRAME_64: 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], dtype=numpy.float32), # [18, 4]
|
||||
Opcode.END_OF_FRAME_65: 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], dtype=numpy.float32), # [28, 6]
|
||||
Opcode.END_OF_FRAME_66: 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], dtype=numpy.float32), # [38, 8]
|
||||
Opcode.END_OF_FRAME_67: 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], dtype=numpy.float32), # [20, 4]
|
||||
Opcode.END_OF_FRAME_68: 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], dtype=numpy.float32), # [42, 8]
|
||||
Opcode.END_OF_FRAME_69: 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], dtype=numpy.float32), # [32, 6]
|
||||
Opcode.END_OF_FRAME_70: 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], dtype=numpy.float32), # [22, 4]
|
||||
Opcode.END_OF_FRAME_71: 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], dtype=numpy.float32), # [34, 6]
|
||||
Opcode.END_OF_FRAME_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, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -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, 4]
|
||||
Opcode.END_OF_FRAME_73: 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], dtype=numpy.float32), # [38, 6]
|
||||
Opcode.END_OF_FRAME_74: 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], dtype=numpy.float32), # [26, 4]
|
||||
Opcode.END_OF_FRAME_75: 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], dtype=numpy.float32), # [40, 6]
|
||||
Opcode.END_OF_FRAME_76: 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], dtype=numpy.float32), # [28, 4]
|
||||
Opcode.END_OF_FRAME_77: 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], dtype=numpy.float32), # [44, 6]
|
||||
Opcode.END_OF_FRAME_78: 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], dtype=numpy.float32), # [30, 4]
|
||||
Opcode.END_OF_FRAME_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, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -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), # [32, 4]
|
||||
Opcode.END_OF_FRAME_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, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -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), # [34, 4]
|
||||
Opcode.END_OF_FRAME_81: 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], dtype=numpy.float32), # [36, 4]
|
||||
Opcode.END_OF_FRAME_82: 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], dtype=numpy.float32), # [38, 4]
|
||||
Opcode.END_OF_FRAME_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, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -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), # [40, 4]
|
||||
Opcode.END_OF_FRAME_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, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -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), # [42, 4]
|
||||
Opcode.END_OF_FRAME_85: 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], dtype=numpy.float32), # [44, 4]
|
||||
Opcode.END_OF_FRAME_86: 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], dtype=numpy.float32), # [46, 4]
|
||||
}
|
||||
|
||||
|
||||
|
@ -93,43 +255,124 @@ TOGGLES = {
|
|||
Opcode.TICK_03: 2,
|
||||
Opcode.TICK_06: 1,
|
||||
Opcode.TICK_09: 0,
|
||||
Opcode.TICK_0c: 2,
|
||||
Opcode.TICK_0f: 1,
|
||||
Opcode.TICK_11: 1,
|
||||
Opcode.TICK_14: 0,
|
||||
Opcode.TICK_18: 2,
|
||||
Opcode.TICK_1b: 1,
|
||||
Opcode.TICK_1d: 1,
|
||||
Opcode.TICK_24: 2,
|
||||
Opcode.TICK_27: 1,
|
||||
Opcode.TICK_2a: 0,
|
||||
Opcode.TICK_37: 0,
|
||||
Opcode.TICK_3c: 2,
|
||||
Opcode.TICK_3f: 1,
|
||||
Opcode.TICK_42: 0,
|
||||
Opcode.TICK_4b: 1,
|
||||
Opcode.TICK_53: 2,
|
||||
Opcode.TICK_56: 1,
|
||||
Opcode.TICK_57: 1,
|
||||
Opcode.TICK_5f: 2,
|
||||
Opcode.TICK_62: 1,
|
||||
Opcode.TICK_6a: 2,
|
||||
Opcode.TICK_6d: 1,
|
||||
Opcode.TICK_75: 2,
|
||||
Opcode.TICK_80: 2,
|
||||
Opcode.TICK_8b: 2,
|
||||
Opcode.TICK_95: 2,
|
||||
Opcode.TICK_9f: 1,
|
||||
Opcode.TICK_a2: 0,
|
||||
Opcode.TICK_a4: 0,
|
||||
Opcode.TICK_ae: 0,
|
||||
Opcode.TICK_b5: 1,
|
||||
Opcode.TICK_b8: 0,
|
||||
Opcode.TICK_bf: 1,
|
||||
Opcode.TICK_c9: 1,
|
||||
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 = (
|
||||
Opcode.END_OF_FRAME_0,
|
||||
Opcode.END_OF_FRAME_1,
|
||||
Opcode.END_OF_FRAME_2,
|
||||
Opcode.END_OF_FRAME_3,
|
||||
Opcode.END_OF_FRAME_4,
|
||||
Opcode.END_OF_FRAME_5,
|
||||
Opcode.END_OF_FRAME_6,
|
||||
Opcode.END_OF_FRAME_7,
|
||||
Opcode.END_OF_FRAME_8,
|
||||
Opcode.END_OF_FRAME_9,
|
||||
Opcode.END_OF_FRAME_10,
|
||||
Opcode.END_OF_FRAME_11,
|
||||
Opcode.END_OF_FRAME_12,
|
||||
Opcode.END_OF_FRAME_13,
|
||||
Opcode.END_OF_FRAME_14,
|
||||
Opcode.END_OF_FRAME_15,
|
||||
Opcode.END_OF_FRAME_16,
|
||||
Opcode.END_OF_FRAME_17,
|
||||
Opcode.END_OF_FRAME_18,
|
||||
Opcode.END_OF_FRAME_19,
|
||||
Opcode.END_OF_FRAME_20,
|
||||
Opcode.END_OF_FRAME_21,
|
||||
Opcode.END_OF_FRAME_22,
|
||||
Opcode.END_OF_FRAME_23,
|
||||
Opcode.END_OF_FRAME_24,
|
||||
Opcode.END_OF_FRAME_25,
|
||||
Opcode.END_OF_FRAME_26,
|
||||
Opcode.END_OF_FRAME_27,
|
||||
Opcode.END_OF_FRAME_28,
|
||||
Opcode.END_OF_FRAME_29,
|
||||
Opcode.END_OF_FRAME_30,
|
||||
Opcode.END_OF_FRAME_31,
|
||||
Opcode.END_OF_FRAME_32,
|
||||
Opcode.END_OF_FRAME_33,
|
||||
Opcode.END_OF_FRAME_34,
|
||||
Opcode.END_OF_FRAME_35,
|
||||
Opcode.END_OF_FRAME_36,
|
||||
Opcode.END_OF_FRAME_37,
|
||||
Opcode.END_OF_FRAME_38,
|
||||
Opcode.END_OF_FRAME_39,
|
||||
Opcode.END_OF_FRAME_40,
|
||||
Opcode.END_OF_FRAME_41,
|
||||
Opcode.END_OF_FRAME_42,
|
||||
Opcode.END_OF_FRAME_43,
|
||||
Opcode.END_OF_FRAME_44,
|
||||
Opcode.END_OF_FRAME_45,
|
||||
Opcode.END_OF_FRAME_46,
|
||||
Opcode.END_OF_FRAME_47,
|
||||
Opcode.END_OF_FRAME_48,
|
||||
Opcode.END_OF_FRAME_49,
|
||||
Opcode.END_OF_FRAME_50,
|
||||
Opcode.END_OF_FRAME_51,
|
||||
Opcode.END_OF_FRAME_52,
|
||||
Opcode.END_OF_FRAME_53,
|
||||
Opcode.END_OF_FRAME_54,
|
||||
Opcode.END_OF_FRAME_55,
|
||||
Opcode.END_OF_FRAME_56,
|
||||
Opcode.END_OF_FRAME_57,
|
||||
Opcode.END_OF_FRAME_58,
|
||||
Opcode.END_OF_FRAME_59,
|
||||
Opcode.END_OF_FRAME_60,
|
||||
Opcode.END_OF_FRAME_61,
|
||||
Opcode.END_OF_FRAME_62,
|
||||
Opcode.END_OF_FRAME_63,
|
||||
Opcode.END_OF_FRAME_64,
|
||||
Opcode.END_OF_FRAME_65,
|
||||
Opcode.END_OF_FRAME_66,
|
||||
Opcode.END_OF_FRAME_67,
|
||||
Opcode.END_OF_FRAME_68,
|
||||
Opcode.END_OF_FRAME_69,
|
||||
Opcode.END_OF_FRAME_70,
|
||||
Opcode.END_OF_FRAME_71,
|
||||
Opcode.END_OF_FRAME_72,
|
||||
Opcode.END_OF_FRAME_73,
|
||||
Opcode.END_OF_FRAME_74,
|
||||
Opcode.END_OF_FRAME_75,
|
||||
Opcode.END_OF_FRAME_76,
|
||||
Opcode.END_OF_FRAME_77,
|
||||
Opcode.END_OF_FRAME_78,
|
||||
Opcode.END_OF_FRAME_79,
|
||||
Opcode.END_OF_FRAME_80,
|
||||
Opcode.END_OF_FRAME_81,
|
||||
Opcode.END_OF_FRAME_82,
|
||||
Opcode.END_OF_FRAME_83,
|
||||
Opcode.END_OF_FRAME_84,
|
||||
Opcode.END_OF_FRAME_85,
|
||||
Opcode.END_OF_FRAME_86,
|
||||
)
|
||||
|
|
Binary file not shown.
173
player/player.s
173
player/player.s
|
@ -320,9 +320,14 @@ exit:
|
|||
; If we do stall waiting for data then there is no need to worry about maintaining an even cadence, because audio
|
||||
; will already be disrupted (since the encoder won't have predicted it, so will be tracking wrong). The speaker will
|
||||
; resynchronize within a few hundred microseconds though.
|
||||
end_of_frame:
|
||||
end_of_frame_10_10:
|
||||
STA TICK ; 4
|
||||
JMP _end_of_frame ; 3 rest of end_of_frame doesn't fit in page 3
|
||||
JMP _end_of_frame_10_10 ; 3 rest of end_of_frame doesn't fit in page 3
|
||||
|
||||
end_of_frame_20_4:
|
||||
STA TICK ; 4
|
||||
JMP _end_of_frame_10_10 ; 3 rest of end_of_frame doesn't fit in page 3
|
||||
|
||||
end_copy_page1:
|
||||
;
|
||||
;_end_of_frame:
|
||||
|
@ -405,7 +410,7 @@ end_copy_page1:
|
|||
|
||||
; 72 cycles --> 133 with tick padding
|
||||
; + 7 from dispatcher = 140 total
|
||||
_end_of_frame:
|
||||
_end_of_frame_10_10:
|
||||
; Save the W5100 address pointer so we can come back here later
|
||||
; We know the low-order byte is 0 because Socket RX memory is page-aligned and so is 2K frame.
|
||||
; IMPORTANT - from now on until we restore this below, we can't trash the Y register!
|
||||
|
@ -468,6 +473,168 @@ checkrecv:
|
|||
STA TICK ; [10]
|
||||
JMP (WDATA) ; 6
|
||||
|
||||
; 74 cycles + 7 from dispatcher = 81 total
|
||||
_end_of_frame:
|
||||
; Save the W5100 address pointer so we can come back here later
|
||||
; We know the low-order byte is 0 because Socket RX memory is page-aligned and so is 2K frame.
|
||||
; IMPORTANT - from now on until we restore this below, we can't trash the Y register!
|
||||
LDY WADRH ; 4
|
||||
|
||||
; Update new Received Read pointer
|
||||
; We know we have received an additional 2KB, so we don't need to read the current value from the hardware. We can
|
||||
; track it ourselves instead.
|
||||
LDA #>S0RXRD ; 2
|
||||
STA WADRH ; 4
|
||||
LDA #<S0RXRD ; 2
|
||||
STA WADRL ; 4
|
||||
|
||||
; TODO: in principle we could prepare this outside of the EOF path
|
||||
LDA RXRD ; 4
|
||||
CLC ; 2
|
||||
ADC #$08 ; 2
|
||||
STA WDATA ; 4 Store new high byte
|
||||
STA RXRD ; 4 Save for next time
|
||||
|
||||
; Send the Receive command
|
||||
LDA #<S0CR ; 2 prepare to reset WADRL
|
||||
STA WADRL ; 4
|
||||
LDA #SCRECV ; 2
|
||||
STA WDATA ; 4 #SCRECV
|
||||
|
||||
LDA #$07 ; 2
|
||||
; we might loop an unknown number of times here waiting for data but the default should be to fall
|
||||
; straight through
|
||||
LDX #<S0RXRSR ; 2 Socket 0 Received Size register
|
||||
@0:
|
||||
STX WADRL ; 4 #<S0RXRSR
|
||||
CMP WDATA ; 4 High byte of received size
|
||||
BCS @0 ; 2 in common case when there is already sufficient data waiting.
|
||||
; point W5100 back into the RX buffer where we left off
|
||||
; There is data to read - we don't care exactly how much because it's at least 2K
|
||||
;
|
||||
; Restore W5100 address pointer where we last found it.
|
||||
;
|
||||
; It turns out that the W5100 automatically wraps the address pointer at the end of the 8K RX/TX buffers
|
||||
; Since we're using an 8K socket, that means we don't have to do any work to manage the read pointer!
|
||||
STY WADRH ; 4
|
||||
LDA #$00 ; 2
|
||||
STA WADRL ; 4
|
||||
JMP (WDATA) ; 6
|
||||
|
||||
; 4 20 4 20 4 20 4 20 4 20 4 6 = 130
|
||||
_end_of_frame_4_20:
|
||||
; Save the W5100 address pointer so we can come back here later
|
||||
; We know the low-order byte is 0 because Socket RX memory is page-aligned and so is 2K frame.
|
||||
; IMPORTANT - from now on until we restore this below, we can't trash the Y register!
|
||||
LDY WADRH ; 4
|
||||
STA zpdummy ; 3
|
||||
|
||||
; Update new Received Read pointer
|
||||
; We know we have received an additional 2KB, so we don't need to read the current value from the hardware. We can
|
||||
; track it ourselves instead.
|
||||
LDA #>S0RXRD ; 2
|
||||
STA WADRH ; 4
|
||||
STA TICK ; 4 [20]
|
||||
STA TICK ; 4 [4]
|
||||
LDA #<S0RXRD ; 2
|
||||
STA WADRL ; 4
|
||||
|
||||
; TODO: in principle we could prepare this outside of the EOF path
|
||||
LDA RXRD ; 4
|
||||
CLC ; 2
|
||||
ADC #$08 ; 2
|
||||
NOP ; 2 XXX
|
||||
STA TICK ; 4 [20]
|
||||
STA TICK ; 4 [4]
|
||||
STA WDATA ; 4 Store new high byte
|
||||
STA RXRD ; 4 Save for next time
|
||||
|
||||
; Send the Receive command
|
||||
LDA #<S0CR ; 2 prepare to reset WADRL
|
||||
STA WADRL ; 4
|
||||
LDA #SCRECV ; 2
|
||||
STA TICK ; 4 [20]
|
||||
STA TICK ; 4 [4]
|
||||
STA WDATA ; 4 #SCRECV
|
||||
|
||||
LDA #$07 ; 2
|
||||
; we might loop an unknown number of times here waiting for data but the default should be to fall
|
||||
; straight through
|
||||
LDX #<S0RXRSR ; 2 Socket 0 Received Size register
|
||||
@0:
|
||||
STX WADRL ; 4 #<S0RXRSR
|
||||
CMP WDATA ; 4 High byte of received size
|
||||
STA TICK ; 4 [20]
|
||||
STA TICK ; 4 [4]
|
||||
BCS @0 ; 2 in common case when there is already sufficient data waiting.
|
||||
; point W5100 back into the RX buffer where we left off
|
||||
; There is data to read - we don't care exactly how much because it's at least 2K
|
||||
;
|
||||
; Restore W5100 address pointer where we last found it.
|
||||
;
|
||||
; It turns out that the W5100 automatically wraps the address pointer at the end of the 8K RX/TX buffers
|
||||
; Since we're using an 8K socket, that means we don't have to do any work to manage the read pointer!
|
||||
STY WADRH ; 4
|
||||
LDA #$00 ; 2
|
||||
STA WADRL ; 4
|
||||
NOP ; 2
|
||||
NOP ; 2
|
||||
STA TICK ; 4 [20]
|
||||
STA TICK ; 4 [4]
|
||||
JMP (WDATA) ; 6
|
||||
|
||||
; 4
|
||||
_end_of_frame_4_10:
|
||||
; Save the W5100 address pointer so we can come back here later
|
||||
; We know the low-order byte is 0 because Socket RX memory is page-aligned and so is 2K frame.
|
||||
; IMPORTANT - from now on until we restore this below, we can't trash the Y register!
|
||||
STA zpdummy ; 3
|
||||
STA TICK ; [10]
|
||||
STA TICK ; [4]
|
||||
LDY WADRH ; 4
|
||||
|
||||
; Update new Received Read pointer
|
||||
; We know we have received an additional 2KB, so we don't need to read the current value from the hardware. We can
|
||||
; track it ourselves instead.
|
||||
LDA #>S0RXRD ; 2
|
||||
STA WADRH ; 4
|
||||
LDA #<S0RXRD ; 2
|
||||
STA WADRL ; 4
|
||||
|
||||
; TODO: in principle we could prepare this outside of the EOF path
|
||||
LDA RXRD ; 4
|
||||
CLC ; 2
|
||||
ADC #$08 ; 2
|
||||
STA WDATA ; 4 Store new high byte
|
||||
STA RXRD ; 4 Save for next time
|
||||
|
||||
; Send the Receive command
|
||||
LDA #<S0CR ; 2 prepare to reset WADRL
|
||||
STA WADRL ; 4
|
||||
LDA #SCRECV ; 2
|
||||
STA WDATA ; 4 #SCRECV
|
||||
|
||||
LDA #$07 ; 2
|
||||
; we might loop an unknown number of times here waiting for data but the default should be to fall
|
||||
; straight through
|
||||
LDX #<S0RXRSR ; 2 Socket 0 Received Size register
|
||||
@0:
|
||||
STX WADRL ; 4 #<S0RXRSR
|
||||
CMP WDATA ; 4 High byte of received size
|
||||
BCS @0 ; 2 in common case when there is already sufficient data waiting.
|
||||
; point W5100 back into the RX buffer where we left off
|
||||
; There is data to read - we don't care exactly how much because it's at least 2K
|
||||
;
|
||||
; Restore W5100 address pointer where we last found it.
|
||||
;
|
||||
; It turns out that the W5100 automatically wraps the address pointer at the end of the 8K RX/TX buffers
|
||||
; Since we're using an 8K socket, that means we don't have to do any work to manage the read pointer!
|
||||
STY WADRH ; 4
|
||||
LDA #$00 ; 2
|
||||
STA WADRL ; 4
|
||||
JMP (WDATA) ; 6
|
||||
|
||||
|
||||
RXRD:
|
||||
.byte 00
|
||||
.endproc
|
||||
|
|
|
@ -1,151 +1,118 @@
|
|||
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)
|
||||
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)
|
||||
STA $C030
|
||||
tick_03: ; 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)
|
||||
tick_03: ; 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
|
||||
tick_06: ; voltages (1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0)
|
||||
tick_06: ; 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)
|
||||
STA $C030
|
||||
tick_09: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, 1.0)
|
||||
JMP (WDATA)
|
||||
|
||||
tick_0c: ; 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)
|
||||
STA $C030
|
||||
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)
|
||||
STA zpdummy
|
||||
tick_11: ; 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)
|
||||
STA $C030
|
||||
tick_14: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0)
|
||||
tick_09: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0)
|
||||
NOP
|
||||
tick_0a: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, 1.0)
|
||||
JMP (WDATA)
|
||||
|
||||
tick_18: ; 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)
|
||||
tick_0d: ; 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
|
||||
tick_1b: ; 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)
|
||||
STA zpdummy
|
||||
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)
|
||||
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)
|
||||
STA $C030
|
||||
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)
|
||||
NOP
|
||||
tick_14: ; voltages (1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0)
|
||||
STA $C030
|
||||
JMP (WDATA)
|
||||
|
||||
tick_24: ; 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)
|
||||
tick_1a: ; 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
|
||||
tick_27: ; 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)
|
||||
STA $C030
|
||||
tick_2a: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0)
|
||||
STA zpdummy
|
||||
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)
|
||||
NOP
|
||||
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)
|
||||
STA $C030
|
||||
STA $C030
|
||||
JMP (WDATA)
|
||||
|
||||
tick_27: ; 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
|
||||
STA $C030
|
||||
STA $C030
|
||||
JMP (WDATA)
|
||||
|
||||
tick_33: ; 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
|
||||
tick_36: ; 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
|
||||
tick_39: ; 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
|
||||
tick_37: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0)
|
||||
STA zpdummy
|
||||
JMP (WDATA)
|
||||
|
||||
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)
|
||||
STA $C030
|
||||
tick_3f: ; 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
|
||||
tick_42: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0)
|
||||
tick_3a: ; voltages (1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0)
|
||||
NOP
|
||||
NOP
|
||||
JMP (WDATA)
|
||||
|
||||
tick_3f: ; 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
|
||||
tick_42: ; 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
|
||||
tick_43: ; 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
|
||||
NOP
|
||||
tick_4b: ; 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)
|
||||
STA zpdummy
|
||||
STA $C030
|
||||
JMP (WDATA)
|
||||
|
||||
tick_53: ; 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)
|
||||
STA $C030
|
||||
tick_56: ; 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)
|
||||
NOP
|
||||
tick_57: ; 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)
|
||||
STA $C030
|
||||
STA zpdummy
|
||||
JMP (WDATA)
|
||||
|
||||
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)
|
||||
tick_4b: ; 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
|
||||
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)
|
||||
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)
|
||||
NOP
|
||||
tick_4f: ; 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
|
||||
STA $C030
|
||||
NOP
|
||||
JMP (WDATA)
|
||||
|
||||
tick_6a: ; 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)
|
||||
tick_57: ; 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
|
||||
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)
|
||||
tick_5a: ; 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
|
||||
tick_5b: ; 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
|
||||
NOP
|
||||
STA $C030
|
||||
JMP (WDATA)
|
||||
|
||||
tick_75: ; 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)
|
||||
STA $C030
|
||||
STA zpdummy
|
||||
STA $C030
|
||||
JMP (WDATA)
|
||||
|
||||
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)
|
||||
tick_63: ; 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
|
||||
STA $C030
|
||||
STA zpdummy
|
||||
JMP (WDATA)
|
||||
|
||||
tick_8b: ; 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
|
||||
STA $C030
|
||||
NOP
|
||||
JMP (WDATA)
|
||||
|
||||
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)
|
||||
STA $C030
|
||||
NOP
|
||||
STA $C030
|
||||
JMP (WDATA)
|
||||
|
||||
tick_9f: ; 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)
|
||||
STA $C030
|
||||
tick_a2: ; 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)
|
||||
STA zpdummy
|
||||
tick_a4: ; 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
|
||||
NOP
|
||||
NOP
|
||||
JMP (WDATA)
|
||||
|
||||
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)
|
||||
STA $C030
|
||||
NOP
|
||||
tick_ae: ; 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)
|
||||
STA zpdummy
|
||||
NOP
|
||||
STA $C030
|
||||
NOP
|
||||
JMP (WDATA)
|
||||
|
||||
tick_b5: ; 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)
|
||||
tick_79: ; 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
|
||||
tick_b8: ; 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
|
||||
NOP
|
||||
STA $C030
|
||||
JMP (WDATA)
|
||||
|
||||
tick_84: ; 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
|
||||
tick_87: ; 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
|
||||
tick_88: ; 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
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
JMP (WDATA)
|
||||
|
||||
tick_bf: ; 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)
|
||||
tick_8f: ; 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
|
||||
STA zpdummy
|
||||
NOP
|
||||
NOP
|
||||
JMP (WDATA)
|
||||
|
||||
tick_c9: ; 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
|
||||
NOP
|
||||
NOP
|
||||
NOP
|
||||
JMP (WDATA)
|
||||
|
||||
; 210 bytes
|
||||
; 153 bytes
|
||||
|
|
Loading…
Reference in New Issue
Block a user