feat(reverse): trace the live original physics state

WineDbg changes the Win16 exception path and cannot capture continuous game
state reliably. Add a Linux-only launcher that opts the normally running Wine
process into same-user tracing without modifying TDKPIN.EXE, plus a sampler
that locates the loaded DGROUP and game object from recovered signatures.

The CSV trace exposes original millipixel positions, predicted positions,
velocities, flipper state, and claw state whenever they change. This provides
an external oracle for reconstructing and differentially testing the fixed-
point mechanics instead of tuning the Rust approximation against screenshots.

Test Plan:
- `shellcheck original/tools/run_traceable_original.sh` -- passed
- `ruff check original/tools/trace_original_state.py` -- passed
- strict shared-library compile with `cc` warnings as errors -- passed
- live Wine smoke trace and four-second charged launch capture -- passed
- `git diff --cached --check` -- passed
This commit is contained in:
2026-08-22 20:16:14 +02:00
parent 9e74745fde
commit dcc664346c
4 changed files with 389 additions and 0 deletions
+18
View File
@@ -75,3 +75,21 @@ was not forced into a chosen terminal during the live session, so its claw
parity evidence remains the decoded `1000:c79c`/`1000:eab1` control flow,
millipixel/Real48 constants, sprite sheet, and deterministic Rust traces rather
than a claimed live trajectory comparison.
## Live fixed-point tracing
Wine's remote debugger changes the Win16 exception path and is not suitable for
continuous gameplay traces. On Linux, `tools/run_traceable_original.sh` starts
the unmodified executable with a same-user ptrace opt-in. While it is waiting at
the launcher, `tools/trace_original_state.py` locates the live DGROUP and game
object by recovered binary/state signatures and records their fixed-point state:
```sh
original/tools/run_traceable_original.sh
original/tools/trace_original_state.py --duration 5 --output /tmp/launch.csv
```
The sampler records original millipixel positions, predicted positions,
velocities, flipper inputs and states, and claw animation state whenever any of
them changes. It neither patches `TDKPIN.EXE` nor pauses Wine. The tracing helper
is Linux-only development infrastructure; it is not part of the Rust replica.