Files
psxrecomp/runtime
Pegasus 703cf2b11d Time an explicit seek from the physical read head during a read
Nymashock measures a seek with CalcSeekTime(CurSector, SeekTarget). CurSector
is the physical read head, and an established read keeps it two sectors ahead
of the sector handed to the guest because HandlePlayRead fills the two-slot
SectorPipe before the guest drains it. source_explicit_seek_cycles timed a
SeekL/SeekP from the delivery cursor instead, so a seek issued mid-read
travelled two sectors too far and completed 209 cycles late at double speed.
Command_Reset already applied the same +2 lead.

Bio Hazard return 233568 is the first place this is observable: a mid-read
SeekL to LBA 141535 completed 209 cycles late, which pushed the driver's
following ReadS past the frontend return boundary and left the guest one CD
command behind for the rest of the ending tail.

Evidence, resuming the admitted capture state at return 233500:
- armed completion moves 132227220226 -> 132227220017, the value the source's
  own PSRCounter samples at returns 233560-233568 independently imply
- all 5702 compared returns 233501-239202 match the admitted reference on RAM
  page hashes and return clocks
- raw RAM at 233567/233568/233569/235000/239202 matches the stock capture byte
  for byte, closing the nine-byte terminal difference

Cold full-route requalification and the Tekken 3 / Pepsiman cold-prefix
regressions are still outstanding; this commit records the component result
only.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

(cherry picked from commit cd99b7c9bc)
2026-09-14 17:36:03 +03:00
..
2026-08-15 14:46:26 -07:00
2026-08-13 10:37:18 -04:00
2026-07-29 03:18:10 -04:00