Files
James Dansereau daa2522511 D489-D502: settings persistence, collision, A/B harnesses, D441 census
F10 pad slider persistence (D489), glass collision hull (D490), A/B input
harnesses (1964 virtual pad, GE_INPUTSCRIPT, live one-pad launcher), adjacent
global struct reads (D491), vibration percent, D441 complete pointer-width
census with high-arena tier-1 build, fix batches 1-5 and an ABI warning
ratchet, playtest verification of D493-D502.

Refs: D489 D490 D491 D492-D502 D441
2026-10-06 18:35:42 -04:00

26 lines
869 B
Python

import sys
from pathlib import Path
from PIL import Image, ImageDraw
D = Path(sys.argv[1]) # run dir: 1964_<ms>.png + port_<ms>.png (capture.ps1)
t0, t1, step = float(sys.argv[2]), float(sys.argv[3]), float(sys.argv[4])
W, H = 320, 240
rows = []
t = t0
while t <= t1 + 1e-6:
tag = f"{int(round(t * 1000)):05d}"
row = Image.new("RGB", (W * 2 + 70, H), "black")
for i, side in enumerate(("1964", "port")):
f = D / f"{side}_{tag}.png"
if f.exists():
row.paste(Image.open(f).convert("RGB").resize((W, H)), (70 + i * W, 0))
ImageDraw.Draw(row).text((5, H // 2), f"{t:.1f}s", fill="white")
rows.append(row)
t += step
sheet = Image.new("RGB", (W * 2 + 70, H * len(rows)), "black")
for i, r in enumerate(rows):
sheet.paste(r, (0, i * H))
out = D / f"sheet2_{t0:04.1f}-{t1:04.1f}.png"
sheet.save(out)
print(out)