[YM2612] Double-checking latching FNUM MSB
Posted: Sun Jul 06, 2014 12:15 am
The YM2612 registers $A4 through $A6 used for setting the MSB of a channel's FNUM currently store (at least in MAME/Genesis Plus GX-based implementations) in (YM2612_instance).OPN.ST.fn_h instead of in a per-channel fn_h.
On actual hardware, if one channel's MSB is latched but another channel latches its MSB before the first one can finish setting its FNUM, what is the resulting behavior? Does the original channel's subsequent FNUM LSB write use the new MSB (what seems to be currently implemented) or the old MSB (a per-channel state)?
I know that what devs should do is have their YM2612 code set the LSB immediately after the MSB is latched, but if someone happened to have programmed it badly what are the results? I'm not writing a Genesis sound engine but I am fixing the YM2612 in my web-based VGM player and am currently relying on existing software implementations for direction.
On actual hardware, if one channel's MSB is latched but another channel latches its MSB before the first one can finish setting its FNUM, what is the resulting behavior? Does the original channel's subsequent FNUM LSB write use the new MSB (what seems to be currently implemented) or the old MSB (a per-channel state)?
I know that what devs should do is have their YM2612 code set the LSB immediately after the MSB is latched, but if someone happened to have programmed it badly what are the results? I'm not writing a Genesis sound engine but I am fixing the YM2612 in my web-based VGM player and am currently relying on existing software implementations for direction.