1 #ifndef _ITDEFS_H_ 2 #define _ITDEFS_H_ 3 4 #pragma pack(1) 5 6 typedef struct tagITFILEHEADER 7 { 8 DWORD id; // 0x4D504D49 9 CHAR songname[26]; 10 WORD reserved1; // 0x1004 11 WORD ordnum; 12 WORD insnum; 13 WORD smpnum; 14 WORD patnum; 15 WORD cwtv; 16 WORD cmwt; 17 WORD flags; 18 WORD special; 19 BYTE globalvol; 20 BYTE mv; 21 BYTE speed; 22 BYTE tempo; 23 BYTE sep; 24 BYTE zero; 25 WORD msglength; 26 DWORD msgoffset; 27 DWORD reserved2; 28 BYTE chnpan[64]; 29 BYTE chnvol[64]; 30 } ITFILEHEADER; 31 32 33 typedef struct tagITENVELOPE 34 { 35 BYTE flags; 36 BYTE num; 37 BYTE lpb; 38 BYTE lpe; 39 BYTE slb; 40 BYTE sle; 41 BYTE data[25*3]; 42 BYTE reserved; 43 } ITENVELOPE; 44 45 // Old Impulse Instrument Format (cmwt < 0x200) 46 typedef struct tagITOLDINSTRUMENT 47 { 48 DWORD id; // IMPI = 0x49504D49 49 CHAR filename[12]; // DOS file name 50 BYTE zero; 51 BYTE flags; 52 BYTE vls; 53 BYTE vle; 54 BYTE sls; 55 BYTE sle; 56 WORD reserved1; 57 WORD fadeout; 58 BYTE nna; 59 BYTE dnc; 60 WORD trkvers; 61 BYTE nos; 62 BYTE reserved2; 63 CHAR name[26]; 64 WORD reserved3[3]; 65 BYTE keyboard[240]; 66 BYTE volenv[200]; 67 BYTE nodes[50]; 68 } ITOLDINSTRUMENT; 69 70 71 // Impulse Instrument Format 72 typedef struct tagITINSTRUMENT 73 { 74 DWORD id; 75 CHAR filename[12]; 76 BYTE zero; 77 BYTE nna; 78 BYTE dct; 79 BYTE dca; 80 WORD fadeout; 81 signed char pps; 82 BYTE ppc; 83 BYTE gbv; 84 BYTE dfp; 85 BYTE rv; 86 BYTE rp; 87 WORD trkvers; 88 BYTE nos; 89 BYTE reserved1; 90 CHAR name[26]; 91 BYTE ifc; 92 BYTE ifr; 93 BYTE mch; 94 BYTE mpr; 95 WORD mbank; 96 BYTE keyboard[240]; 97 ITENVELOPE volenv; 98 ITENVELOPE panenv; 99 ITENVELOPE pitchenv; 100 BYTE dummy[4]; // was 7, but IT v2.17 saves 554 bytes 101 } ITINSTRUMENT; 102 103 104 // IT Sample Format 105 typedef struct ITSAMPLESTRUCT 106 { 107 DWORD id; // 0x53504D49 108 CHAR filename[12]; 109 BYTE zero; 110 BYTE gvl; 111 BYTE flags; 112 BYTE vol; 113 CHAR name[26]; 114 BYTE cvt; 115 BYTE dfp; 116 DWORD length; 117 DWORD loopbegin; 118 DWORD loopend; 119 DWORD C5Speed; 120 DWORD susloopbegin; 121 DWORD susloopend; 122 DWORD samplepointer; 123 BYTE vis; 124 BYTE vid; 125 BYTE vir; 126 BYTE vit; 127 } ITSAMPLESTRUCT; 128 129 #pragma pack() 130 131 extern BYTE autovibit2xm[8]; 132 extern BYTE autovibxm2it[8]; 133 134 #endif 135