SonaPatch is the FM instrument format in Sona. The recommended file
extension is ".spat". FM patches are 32 bytes long:
uint8 ... YM2612 register $B0+
uint8 ... YM2612 register $30+
uint8 ... YM2612 register $34+
uint8 ... YM2612 register $38+
uint8 ... YM2612 register $3C+
uint8 ... YM2612 register $40+
uint8 ... YM2612 register $44+
uint8 ... YM2612 register $48+
uint8 ... YM2612 register $4C+
uint8 ... YM2612 register $50+
uint8 ... YM2612 register $54+
uint8 ... YM2612 register $58+
uint8 ... YM2612 register $5C+
uint8 ... YM2612 register $60+
uint8 ... YM2612 register $64+
uint8 ... YM2612 register $68+
uint8 ... YM2612 register $6C+
uint8 ... YM2612 register $70+
uint8 ... YM2612 register $74+
uint8 ... YM2612 register $78+
uint8 ... YM2612 register $7C+
uint8 ... YM2612 register $80+
uint8 ... YM2612 register $84+
uint8 ... YM2612 register $88+
uint8 ... YM2612 register $8C+
uint8 ... YM2612 register $90+
uint8 ... YM2612 register $94+
uint8 ... YM2612 register $98+
uint8 ... YM2612 register $9C+
uint8 ... reserved (must be 0)
uint8 ... reserved (must be 0)
uint8 ... reserved (must be 0)
Register numbers are based on ch1/ch4. Add 1 for ch2/ch5, 2 for ch3/ch6 (e.g.
"$30+" here means $30 for ch1/ch4, $31 for ch2/ch5, $32 for ch3/ch6). Also
remember that operator order is S1, S3, S2, S4 (in case of doubt: algorithm 0
goes S1>S2>S3>S4, algorithm 4 goes S1>S2 + S3>S4).
Unused bits in YM2612 registers must be 0. Reserved bytes must be also 0,
they will be used in case the format is extended.