pub const HEAD_RESEEK_CYCLES: u32 = 8_000;Expand description
Head re-seek time (CPU cycles) modelled on a motor restart.
When the motor restarts, the belt-driven drive physically rewinds the disk
back to the disk-start gap (the FDS-proper “timed disk-head position” —
puNES fds.c rewinds the disk_position and waits out a seek before the
first byte streams again, rather than the head teleporting to track 0
instantly).
This window opens on every motor off->on edge after the cold spin-up, while
$4032.1 reports not-ready, so the BIOS observes the not-ready -> ready
transition before each re-read (the same handshake it waits for at boot).
This is what closes the Kid Icarus side-B post-registration replay: the
game stops the motor, writes the save, then re-reads later files — and the
BIOS re-read loop expects the drive to report not-ready while the head
returns. With an instant rewind the loader never sees the transition and the
post-registration screen never streams its blocks.
~8000 cycles ≈ 4.5 ms — far shorter than the cold spin-up (the disk is
already turning), long enough to be observed across the BIOS poll loop, and
deterministic (no analog seek-time model). Per-game quirks (FdsQuirk)
may extend it for titles whose timing the nominal value does not satisfy.