Skip to main content

HEAD_RESEEK_CYCLES

Constant HEAD_RESEEK_CYCLES 

Source
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.