D721 - Pad input is captured and replayed against flips

Status: decided Date: 2026-09-26

A pad script step can be timed in the guest's own flips (at_flip = N, counted from guest entry), and a script uses one clock or the other, never both. Input is captured only on request, from the GUI toolbar or Request::Run::capture_input, as a script in the same format that records each state the pad-read call hands the guest and appends each step as it happens. A run can name its own script (--input <file>, Request::Run::input_script), which takes precedence over a script source in config.toml.

Why: a step timed by the host clock presses at a different point in the title whenever host speed changes, and the guest's frame count is its progress. What the guest read, not what the window sent, replays exactly through the path live input takes. Appending as it happens leaves a crashed run with a capture of what led there, and a script belongs to one run, so it leaves the shared controller configuration alone.

Rejected: