Porting Test Drive II from SNES to PC, Part 45: Fingerprinting the current track-start gameplay seed
I stopped spending CPU on the tiny post-02:9016 blink in the corner and
went back to a larger gameplay-facing question:
what does the current track-start savestate actually do under A, B, and
A+B?
That turned out to be a better checkpoint than expected, because the answer is
not just “which button accelerates.”
It also exposed that the current game_11.mss seed has drifted from older
promoted sweep results, so the pipeline now fingerprints the ROM and savestate
directly in the sweep summary.
The sweep is now seed-aware
tools/run_track1_seed_sweep.py now records:
- ROM SHA-256
- savestate SHA-256
- capture config
That matters here because the current fingerprinted seed:
- ROM SHA-256:
53e1a9e17a8b0cffd24946e61a47a6f21e7d85ba32b9436da8705b5e53b1f017 - savestate SHA-256:
17f2857d3309ad99fc87724d131f9b1e7965c1fb5a530f739dedda9f51086b14
does not reproduce the older promoted b_hold sequence anymore.
The cross-generation compare already differs from capture 0.
So this is not a tiny timing tweak.
It is a changed seed, and the tooling now says so explicitly.
A and B are the same early lane on the current seed
On the current fingerprinted seed:
-
a_hold: dynamic, first nontrivial frame62, next motion64 -
b_hold: dynamic, first nontrivial frame62, next motion64 -
a_and_b_hold: dynamic, first nontrivial frame62, next motion64
The important part is stronger than “all three move.”
a_hold and b_hold are pixel-identical across all 300 captured frames.
So the current track-start lane should no longer treat b = true as the only
defensible early-gameplay proxy.
The first useful branch is A vs A+B at frame 219
A+B does not stay redundant forever.
It matches the shared A/B lane through frame 218 and then breaks away at
frame 219.
A at frame 219:
A+B at frame 219:
That first branch is already large enough to matter:
- first divergence: capture
159, script frame219 - mismatch pixels:
2085 - bbox:
[99, 75, 153, 113]
That is a much better target than the tiny rearview blink window, because it
already points at a gameplay-facing subsystem change rather than a one-corner
OAM cue.
What changes next
The next gameplay lane is no longer “keep poking the old 76/92/108
cadence.”
It is:
- treat the current seed as fingerprinted evidence
- use
AorBas equivalent early moving lanes - use the first
AvsA+Bbranch at frame219as the next ownership target
That should give a better handle on live gameplay state than the blink chase
was giving.


Top comments (0)