Hello,
I'm a retro-game developer for the old Mattel Intellivision, and I maintain a music player software library that plays tracks in a bastardized version of XM format.
I'm currently working on adding support for some (most?) FT2 effects and I need some help understanding how they should work.
Most docs suggest that when a new note is read, the note is played on the first tick, and the effect start playing on the subsequent ticks. This sounds reasonable. However, I would like to know how does this affect the behaviour of effects such as "note delay," "pattern delay," "jump to order," and other such effects that affect the music player's behaviour and not just the note waveform/amplitude.
For "pattern delay," do we really wait until the second tick to start counting down? And what happens during the delay -- do we play the new note, or do we continue stretching what is already playing on the channel (i.e., the previous note)?
For "note delay," what plays while we are delaying the note? Do we continue playing the previous note, or do we start playing the first one and just stretch it during the delay period without advancing the player state? (I can't imagine it would just be silence ...)
For "jump to order," do we jump immediately upon reading the note/effect, or do we play the note and jump when it finishes? (Same for "pattern loop" and "pattern break": do we break/loop immediately when signaled, on second tick, or when the note plays out?)
I apologize if these questions seem silly, but my target platform is severely constrained in resources (it's a games console from 1980!), and I wish to understand how to implement the effects in the most efficient and optimized way.
Thanks in advance!
-dZ.