Oh, sorry. I forgot that games could use an external clock to use whatever rate it wanted. (Easy to forget since pretty much no real game would use this for music.)
Interestingly, VRC7 actually has an external oscillator, not for the music update, but to drive the synthesizer because it needs a clock at roughly double the Famicom's CPU rate.
I have yet to see any NSF game rips that require a custom music update rate. I saw one that used 30hz, but it would have been trivial to add code to half the standard rate so I consider it a bad rip.
I know that triangle croak effect in a lot of Sunsoft games works just fine in NSFPlay, and it's doing quick writes much faster than 60Hz (and might be using the linear counter to insert silence in there)
I still don't know how exactly that was done. Since it was heard at the end of Game over tunes mostly, it could've been its own subroutine that had to run more than once per frame. /offtopic
I wonder how things change if I play an exported ROM file on an emulator or the console (since there's no refresh rate integer anymore) Does Famitracker use Vblank timing with rendering turned off or the APU Frame counter?
I know that triangle croak effect in a lot of Sunsoft games works just fine in NSFPlay, and it's doing quick writes much faster than 60Hz (and might be using the linear counter to insert silence in there)
It is using the linear counter. It is not doing writes faster than 60hz.
za909 wrote:
I still don't know how exactly that was done. Since it was heard at the end of Game over tunes mostly, it could've been its own subroutine that had to run more than once per frame.
It isn't.
za909 wrote:
I wonder how things change if I play an exported ROM file on an emulator or the console (since there's no refresh rate integer anymore) Does Famitracker use Vblank timing with rendering turned off or the APU Frame counter?
Famitracker's NES export appears to be broken right now, so it's a moot point, but it could use either the vblank interrupt or the frame counter intterupt. My guess would be vblank.
For the NSF export, the NSF player either implements a timer that uses the specified refresh rate, or it uses an existing timer like the vblank interrupt. It depends on what player you're using (or with what settings, if applicable).