/* Extended Module Player * Copyright (C) 1996-1999 Claudio Matsuoka and Hipolito Carraro Jr * * This file is part of the Extended Module Player and is distributed * under the terms of the GNU General Public License. See doc/COPYING * for more information. */ struct far_header { uint8 magic[4]; /* File magic: 'FAR\xfe' */ uint8 name[40]; /* Song name */ uint8 crlf[3]; /* 0x0d 0x0a 0x1A */ uint16 headersize; /* Remaining header size in bytes */ uint8 version; /* Version MSN=major, LSN=minor */ uint8 ch_on[16]; /* Channel on/off switches */ uint8 rsvd1[9]; /* Current editing values */ uint8 tempo; /* Default tempo */ uint8 pan[16]; /* Channel pan definitions */ uint8 rsvd2[4]; /* Grid, mode (for editor) */ uint16 textlen; /* Length of embedded text */ } PACKED; struct far_header2 { uint8 order[256]; /* Orders */ uint8 patterns; /* Number of stored patterns (?) */ uint8 songlen; /* Song length in patterns */ uint8 restart; /* Restart pos */ uint16 patsize[256]; /* Size of each pattern in bytes */ } PACKED; struct far_instrument { uint8 name[32]; /* Instrument name */ uint32 length; /* Length of sample (up to 64Kb) */ uint8 finetune; /* Finetune (unsuported) */ uint8 volume; /* Volume (unsuported?) */ uint32 loop_start; /* Loop start */ uint32 loopend; /* Loop end */ uint8 sampletype; /* 1=16 bit sample */ uint8 loopmode; } PACKED; struct far_event { uint8 note; uint8 instrument; uint8 volume; /* In reverse nibble order? */ uint8 effect; } PACKED;