This feels like a silly question, but I'm not finding an obvious answer in the VGM format description. I'm working on a hardware VGM player and looking to "do it right."
Are the "wait" commands in the VGM format based on the time at the end of the previous command (if any, and whatever that command may be), or the end of the previous
"wait" command (if any)? Or are all non-wait commands simply assumed to take zero time?
In other words, if I have a command sequence like this:
Code: Select all
wait 10 samples
write dd to memory location aaaa
wait 10 samples
...does this represent 20 samples worth of time (where the write simply falls somewhere in the second 10-sample "window"), or does it represent 20 samples worth of time plus whatever (unspecified) amount of time the write takes? I suppose I'm hoping it's the former, as at least the duration of a sequence would then be deterministic, even if the timing of the writes wouldn't be. The latter would seem rather sloppy, perhaps acceptable on emulated hardware where the timing of a write is (potentially) so fast that it might reasonably be looked on as an "instant in time," but when playback uses parts of the original hardware that operate at only a couple of MHz, suddenly the duration of a write can be nontrivial. (It might even be a variable where other hardware events are involved.)
Thanks in advance for the help!