feat(reverse): isolate original physics substeps
Expose the original detail-derived integration count, active-ball count, gravity, maximum speed, and movement flags in live traces. Allow probes to force one physics substep so a single collision response can be observed without the default three-step timer batch obscuring intermediate state. Record the dynamically verified type-2 rail response: resolve velocity in the registered line's normal/tangent basis, apply the two original Real48 coefficients, then advance from the previous position using that response. Test Plan: - `ruff check original/tools/trace_original_state.py original/tools/inject_original_state.py` -- passed - one-substep probes against both vertical shooter walls -- passed - ordinary rail responses matched 0.6 normal rebound and 0.1 tangent coupling - `git diff --cached --check` -- passed
This commit is contained in:
@@ -105,7 +105,8 @@ The executable image remains unchanged; only the current disposable Wine
|
||||
process is modified. Run the injector while the ball is waiting in the launcher
|
||||
so it can identify the live game object, or supply the previously reported
|
||||
`--object-base` to both the injector and tracer during a sequence of active
|
||||
probes.
|
||||
probes. `--substeps 1` isolates one collision integration step; omitting it
|
||||
retains the original configured detail level.
|
||||
|
||||
A probe at `(289,94)` captured the original terminal-18 path. The collision
|
||||
suspended the ball while frames advanced from 10 through 18 at the configured
|
||||
@@ -113,3 +114,11 @@ suspended the ball while frames advanced from 10 through 18 at the configured
|
||||
then cleared suspension during the same timer callback. The three default
|
||||
physics substeps each added 15 millipixels of vertical velocity, confirming the
|
||||
observed total gravity increment of 45 per timer tick.
|
||||
|
||||
A one-substep probe against the vertical shooter walls recovered the type-2
|
||||
response arithmetic. For unit tangent `t` from the registered start to end and
|
||||
left normal `n`, an incoming contact with `vn = dot(v,n)` and `vt = dot(v,t)`
|
||||
uses `vn' = -0.6 * vn` and `vt' = vt + 0.1 * vn` for the ordinary rail
|
||||
coefficients stored in its two Real48 fields. The new position is the previous
|
||||
position plus this response velocity; the original does not separate a circle
|
||||
from the line with a modern capsule solver.
|
||||
|
||||
Reference in New Issue
Block a user