00001 #ifndef _ITDEFS_H_ 00002 #define _ITDEFS_H_ 00003 00004 #include "stdafx.h" 00005 00006 #pragma pack(1) 00007 00008 typedef struct tagITFILEHEADER 00009 { 00010 DWORD id; // 0x4D504D49 00011 CHAR songname[26]; 00012 WORD reserved1; // 0x1004 00013 WORD ordnum; 00014 WORD insnum; 00015 WORD smpnum; 00016 WORD patnum; 00017 WORD cwtv; 00018 WORD cmwt; 00019 WORD flags; 00020 WORD special; 00021 BYTE globalvol; 00022 BYTE mv; 00023 BYTE speed; 00024 BYTE tempo; 00025 BYTE sep; 00026 BYTE zero; 00027 WORD msglength; 00028 DWORD msgoffset; 00029 DWORD reserved2; 00030 BYTE chnpan[64]; 00031 BYTE chnvol[64]; 00032 } Q_PACKED ITFILEHEADER; 00033 00034 00035 typedef struct tagITENVELOPE 00036 { 00037 BYTE flags; 00038 BYTE num; 00039 BYTE lpb; 00040 BYTE lpe; 00041 BYTE slb; 00042 BYTE sle; 00043 BYTE data[25*3]; 00044 BYTE reserved; 00045 } Q_PACKED ITENVELOPE; 00046 00047 // Old Impulse Instrument Format (cmwt < 0x200) 00048 typedef struct tagITOLDINSTRUMENT 00049 { 00050 DWORD id; // IMPI = 0x49504D49 00051 CHAR filename[12]; // DOS file name 00052 BYTE zero; 00053 BYTE flags; 00054 BYTE vls; 00055 BYTE vle; 00056 BYTE sls; 00057 BYTE sle; 00058 WORD reserved1; 00059 WORD fadeout; 00060 BYTE nna; 00061 BYTE dnc; 00062 WORD trkvers; 00063 BYTE nos; 00064 BYTE reserved2; 00065 CHAR name[26]; 00066 WORD reserved3[3]; 00067 BYTE keyboard[240]; 00068 BYTE volenv[200]; 00069 BYTE nodes[50]; 00070 } Q_PACKED ITOLDINSTRUMENT; 00071 00072 00073 // Impulse Instrument Format 00074 typedef struct tagITINSTRUMENT 00075 { 00076 DWORD id; 00077 CHAR filename[12]; 00078 BYTE zero; 00079 BYTE nna; 00080 BYTE dct; 00081 BYTE dca; 00082 WORD fadeout; 00083 signed char pps; 00084 BYTE ppc; 00085 BYTE gbv; 00086 BYTE dfp; 00087 BYTE rv; 00088 BYTE rp; 00089 WORD trkvers; 00090 BYTE nos; 00091 BYTE reserved1; 00092 CHAR name[26]; 00093 BYTE ifc; 00094 BYTE ifr; 00095 BYTE mch; 00096 BYTE mpr; 00097 WORD mbank; 00098 BYTE keyboard[240]; 00099 ITENVELOPE volenv; 00100 ITENVELOPE panenv; 00101 ITENVELOPE pitchenv; 00102 BYTE dummy[4]; // was 7, but IT v2.17 saves 554 bytes 00103 } Q_PACKED ITINSTRUMENT; 00104 00105 00106 // IT Sample Format 00107 typedef struct ITSAMPLESTRUCT 00108 { 00109 DWORD id; // 0x53504D49 00110 CHAR filename[12]; 00111 BYTE zero; 00112 BYTE gvl; 00113 BYTE flags; 00114 BYTE vol; 00115 CHAR name[26]; 00116 BYTE cvt; 00117 BYTE dfp; 00118 DWORD length; 00119 DWORD loopbegin; 00120 DWORD loopend; 00121 DWORD C5Speed; 00122 DWORD susloopbegin; 00123 DWORD susloopend; 00124 DWORD samplepointer; 00125 BYTE vis; 00126 BYTE vid; 00127 BYTE vir; 00128 BYTE vit; 00129 } Q_PACKED ITSAMPLESTRUCT; 00130 00131 #pragma pack() 00132 00133 extern const BYTE autovibit2xm[8]; 00134 extern const BYTE autovibxm2it[8]; 00135 00136 #endif
1.4.2