Though I think a better compromise is 120hz, re-sync'd TIRQ, and fixed point system for tempo control (as well as note length). But the programmer in me says 60hz or GTFO... damn ass musicians always wanting the world lol.
Ouch, that sounds a bit expensive for a feature that I don't remember ever hearing being used.
Sure ... a slow tempo change is sometimes nice in a pop song, but you really don't hear it in classic-era videogames, do you?
That's 8 regions, along with sprites to create more layering.
Doh! Pretty stupid of me to forget about parallax!
:oops:
OK, so more-is-better.
The problem comes down to the sort-time, and the double-buffering or whatever-other scheme that you come up with to ensure that scroll-regions don't suffer from this "instability-bounce" that The Old Rover is seeing.
Since it doesn't hurt anything, works perfectly fine, and everyone likes the end result, I can't say I feel bad about not bothering.
There's definitely the case of "if it isn't broken, then don't fix it.".
The problem is one of drift, interrupt-priority, and the desire to use the timer interrupt for sample playback.
If the interrupt-handlers are written properly so that sound driver running-on-the-timer is smart-enough to avoid delaying the handling of a vblank-interrupt, then it's not too bad ... just rather pointless when running the sound driver at 60Hz.
The question is ... is the System Card Player, and the IRQ handling in both the System Card and HuC smart enough to handle not only timer-followed-by-vblank, but also vblank-follow-by-timer???
The vblank processing MUST always have priority over the sound driver's update logic.
Would you rather the music run all doofy on the wrong system?
Well, BITD, everyone used to just change the equates for how many ticks were in a 1/16th note depending upon the PAL or NTSC target, and then *maybe* change the envelopes.
Not a huge deal, and far less of a problem than the poor European programmers that had to make their games run in a 1/60th second frame time instead of 1/50th second (20% less time per frame).