FDS mechanical timings

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
FDS mechanical timings
by on (#101832)
I am working on an FDS emulator and would like it if anyone had any timing values for certain mechanical actions. Obviously these timings can vary quite a bit and still work correctly, but it would be nice to be as accurate as possible.

How long does it take the drive to move a single bit of data when actually running?
How long does it take the mechanicals of the drive to engage on a new disk when it is inserted?
How long does it take for the disk to start spinning? (ie, $4025.0 changes to 1)
How long does it take for the drive to reset (head moves back to the beginning?) after the end of the disk is reached?

Any information about any of these would be greatly appreciated. Thank you.

edit: correct a bit number
Re: FDS mechanical timings
by on (#101941)
There's a huge document, "Famicom Disk System technical reference" by Brad Taylor.

> How long does it take the drive to move a single bit of data when actually running?
transfer rate of 96.4kHz

> How long does it take the mechanicals of the drive to engage on a new disk when it is inserted?
Don't know. Quite possible that there isn't any loading mechanism (other than your fingers to push the disk in).

> How long does it take for the disk to start spinning? (ie, $4025.1 changes to 1)
I guess that might be the "First Gap" time, 40000 bits at 96.4kHz, or portions of it.

> How long does it take for the drive to reset (head moves back to the beginning?)
> after the end of the disk is reached?
Probably same time as in the other direction (6 seconds), or less, depending on where the disk ends (ie. how much data is stored on it).

For emulators it might be more user friendly to emulate all timings as "zero" (where possible), or at least add an option to avoid the more annoying delays.
Re: FDS mechanical timings
by on (#101944)
Quote:
> How long does it take for the drive to reset (head moves back to the beginning?)
> after the end of the disk is reached?

It's a spring which will pull the reading head next to the outer edge of the disk (you can clearly hear a click when this happens), so it's hard to know exactly, but it's almost instantaneous (compared to the 6-7 seconds required for moving in the other direction).

Also the amount of data which is stored on the disk does probably not change the time required to do a complete reading cycle, but it only changes the loading time. Once all the disk has been read, the FDS BIOS exit and resumes to the game, but the disk is still active unless the read reach the inner track, or at least this is what I understand. I can clearly see the disk typically continues to spin one seconds after the games stops to freeze.
However I'm not so familiar with the internals of the FDS drive so I'm not too sure of this one.

Quote:
For emulators it might be more user friendly to emulate all timings as "zero" (where possible), or at least add an option to avoid the more annoying delays.

Unless you want the emulation to be accurate. I also think there should be an emulator that plays some noise through the PC speakers to simulate the noise of a real FDS. It would be cool.
Re: FDS mechanical timings
by on (#101945)
Bregalad wrote:
Also the amount of data which is stored on the disk does probably not change the time required to do a complete reading cycle, but it only changes the loading time. Once all the disk has been read, the FDS BIOS exit and resumes to the game, but the disk is still active unless the read reach the inner track, or at least this is what I understand. I can clearly see the disk typically continues to spin one seconds after the games stops to freeze.


I believe that one of the documents I read indicated that when $4025.1=1, the disk doesn't immediately reset; rather, the head continues to the end before resetting. That's what I'm emulating. anyway.

I have the 96khz emulated. Based on what you're saying about a clicking spring, I'm making the simulated reset time rather short.

I guess it's going to be quite difficult to determine exactly how long the spinup is, since you can immediately start getting 0s back from the gap period, so there's an uncertain question of how much time is spent on actual spinup, vs reading 0s on the pregap. Well, it doesn't need to be terribly accurate anyway.
Re: FDS mechanical timings
by on (#101952)
Bregalad wrote:
Unless you want the emulation to be accurate. I also think there should be an emulator that plays some noise through the PC speakers to simulate the noise of a real FDS. It would be cool.

By "PC speakers" did you mean the old beeper on the PC's motherboard, or just through the sound card? One advantage of doing something through the beeper is that it won't change volume with the sound card's volume, just as the FDS drive noise didn't change volume with the TV volume. If through the sound card, try playing the noise out of phase on the left and right channels. This way they'll end up in the surround channel on a Dolby Pro Logic matrix surround decoder.

I wonder how many of these questions could be answered through a high-quality audio recording of the FDS drive noise.
Re: FDS mechanical timings
by on (#102022)
The drive's motor speed is adjustable so every drive is different. Once you insert a disk it takes less than 2 seconds for the motor to spin up/for the head to return to the center of the disk, the return mechanism is part of the motor's scan. If the motor was stopped in the middle of the last pass, then it must finish the last pass before it can initiate a new one. Scanning does take around 6 seconds.

The FDS does'nt make the standard floppy noises, and there's no way to modulate the noise into music so I wouldn't suggest simulating it. Basically there's a thud when you insert a disk, a couple clicks when the mechanism returns the head to the center, a continuous faint motor/gear noise, and if you have a warped disk then it might make an unpleasant friction noise like a floppy disk as it spins.