Sona 0.50 Source

Sona 0.50/doc/format-fm.txt

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.