.669 file format: offset ³length&type ³description ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 0 ³1 word ³marker, value=0x6669 2 ³108 bytes ³song message 0x6e ³1 byte ³NOS = number of samples saved (0-64) 0x6f ³1 byte ³NOP = number of patterns saved (0-128) 0x70 ³1 byte ³loop order number 0x71 ³0x80 bytes ³order list 0xf1 ³0x80 bytes ³tempo list for patterns 0x171 ³0x80 bytes ³break location list for patterns 0x1f1 ³NOS*size struct³sample data ³ samp ³ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³struct samp { ³ 13 bytes ASCIIZ filename of instrument ³ 1 dword length of instrument ³ 1 dword offset of beginning of loop ³ 1 dword offset of end of loop ³} smp[NOS] ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 0x1f1+ ³NOP*0x600 ³patterns (NOS*0x19) ³ ³ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³this is repeated 8 times for every row and the array of 8 of these is ³ repeated 64 times for each pattern. ³ ³ bits: ³ BYTE[0]: BYTE[1]: BYTE[2]: ³ aaaaaaaa bbbbbbbb cccccccc ³ ÃÄÄÄÄÙÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙÃÄÄÙ ÃÄÄÙÃÄÄÙ ³ ³ ³ ³ ³ ³ ³ ³ ³ 4 bit volume ³ command value ³ ³ ³ ³ ³ ³ aabbbb = 6 bit instrument number command: ³ ³ 0 = a ³ note value = (12*oct)+note 1 = b ³ 2 = c ³ special values for byte 0: 3 = d ³ 0xfe = no note, only volume change 4 = e ³ 0xff = no note or volume change 5 = f ³ ³ special value for byte 2: ³ 0xff = no command ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 0x1f1+ ³rest of file ³samples (NOS*0x19)+ ³ ³ (NOP*0x600) ³ ³