Merge branch 'master' into divVerent/crypto2
[xonotic/xonotic.git] / misc / builddeps / dp.linux64 / include / libmodplug / it_defs.h
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