you can’t assume these old consoles to exactly follow NTSC spec
I agree, but I’m curious how often “not following spec” reflects an actual characteristic of the system as opposed to being based on some online source citing some imprecise or inaccurate frequency. Imprecise values might come from direct measurement or rounded decimal conversion of an integer ratio, while inaccurate values can come from propagating an imprecise value through some calculation like those in the above posts.
Take for example the 12.170453 MHz you quote a few posts earlier. If the N64’s frequency multiplier is applying (17/5)x multiplication to an NTSC crystal, and the NTSC crystal is a standard (315/88) MHz, then the exact value should be (17/5)*(315/88) = (1071/88) MHz, which when rounded to the same number of decimals is 12.170455 MHz. So there’s a 12.170455 MHz – 12.170453 MHz = 2 Hz discrepancy between your value and mine. Is this discrepancy because the N64’s NTSC crystal isn’t exactly standard frequency, or is because of rounding error? Or does random variation in the actual output frequency vary by at least this much, making the whole discussion meaningless?
Like the N64, most classic consoles have an NTSC (or PAL) crystal whose frequency gets multiplied by some ratio
q are (relatively small) integers. This is why both the line rate and refresh rate are at least close to spec if not exactly spec. Knowing the
p/q ratio for each console is a useful starting point for clock rate determination, and thus samplerate determination for OSSC tuning. The pineight table is a nice resource for this reason. We should add the
p/q multiplier for each console onto the OSSC Optimal Timings page, as well as the (theoretical) samplerates they imply assuming standard spec linerate, i.e., (4500/286) kHz. If in reality deviations from spec do exist, we should document those deviations there as well.
Here are some to start:
clock_rate = (315/88) MHz * (p/q), sample_rate = clock_rate / ((4500/286) kHz)
N64 640x240p and 640x480i: p/q=17/5, sample_rate=1547/2=773.5
NES/SNES/PS1 256x240p: p/q=3/2, sample_rate=1365/4=341.25
Genesis/PS1/Saturn 320x240p: p/q=15/8, sample_rate=6825/16=426.5625
Saturn 704x480i: p/q=4/1, sample_rate=910/1=910
PS1 384x240p: p/q=15/7, sample_rate=975/2=487.5
PS1 512x240p: p/q=3/1, sample_rate=1365/2=682.5
PS1 640x240p and 640x480i: p/q=15/4, sample_rate=6825/8=853.125