summaryrefslogtreecommitdiff
path: root/src/include/it_defs.h
diff options
context:
space:
mode:
authorVito Caputo <vcaputo@pengaru.com>2017-05-26 21:51:04 -0700
committerVito Caputo <vcaputo@pengaru.com>2017-05-26 22:48:09 -0700
commit78f8fce7f286fd0c71774e2567404ed51f24fef3 (patch)
treef3de4987f7a9fc1bc03331e97b65a851b041051a /src/include/it_defs.h
*: initial commit of stripped schism stuff
Forking schism tracker's IT playback stuff into a little playback library for embedding in demos.
Diffstat (limited to 'src/include/it_defs.h')
-rw-r--r--src/include/it_defs.h128
1 files changed, 128 insertions, 0 deletions
diff --git a/src/include/it_defs.h b/src/include/it_defs.h
new file mode 100644
index 0000000..0c37ac4
--- /dev/null
+++ b/src/include/it_defs.h
@@ -0,0 +1,128 @@
+#ifndef _ITDEFS_H_
+#define _ITDEFS_H_
+
+#pragma pack(push, 1)
+
+struct it_file {
+ uint32_t id; // 0x4D504D49
+ int8_t songname[26];
+ uint8_t hilight_minor;
+ uint8_t hilight_major;
+ uint16_t ordnum;
+ uint16_t insnum;
+ uint16_t smpnum;
+ uint16_t patnum;
+ uint16_t cwtv;
+ uint16_t cmwt;
+ uint16_t flags;
+ uint16_t special;
+ uint8_t globalvol;
+ uint8_t mv;
+ uint8_t speed;
+ uint8_t tempo;
+ uint8_t sep;
+ uint8_t pwd;
+ uint16_t msglength;
+ uint32_t msgoffset;
+ uint32_t reserved2;
+ uint8_t chnpan[64];
+ uint8_t chnvol[64];
+};
+
+
+struct it_envelope {
+ uint8_t flags;
+ uint8_t num;
+ uint8_t lpb;
+ uint8_t lpe;
+ uint8_t slb;
+ uint8_t sle;
+ uint8_t data[25*3];
+ uint8_t reserved;
+};
+
+// Old Impulse Instrument Format (cmwt < 0x200)
+struct it_instrument_old {
+ uint32_t id; // IMPI = 0x49504D49
+ int8_t filename[12]; // DOS file name
+ uint8_t zero;
+ uint8_t flags;
+ uint8_t vls;
+ uint8_t vle;
+ uint8_t sls;
+ uint8_t sle;
+ uint16_t reserved1;
+ uint16_t fadeout;
+ uint8_t nna;
+ uint8_t dnc;
+ uint16_t trkvers;
+ uint8_t nos;
+ uint8_t reserved2;
+ int8_t name[26];
+ uint16_t reserved3[3];
+ uint8_t keyboard[240];
+ uint8_t volenv[200];
+ uint8_t nodes[50];
+};
+
+
+// Impulse Instrument Format
+struct it_instrument {
+ uint32_t id;
+ int8_t filename[12];
+ uint8_t zero;
+ uint8_t nna;
+ uint8_t dct;
+ uint8_t dca;
+ uint16_t fadeout;
+ signed char pps;
+ uint8_t ppc;
+ uint8_t gbv;
+ uint8_t dfp;
+ uint8_t rv;
+ uint8_t rp;
+ uint16_t trkvers;
+ uint8_t nos;
+ uint8_t reserved1;
+ int8_t name[26];
+ uint8_t ifc;
+ uint8_t ifr;
+ uint8_t mch;
+ uint8_t mpr;
+ uint16_t mbank;
+ uint8_t keyboard[240];
+ struct it_envelope volenv;
+ struct it_envelope panenv;
+ struct it_envelope pitchenv;
+ uint8_t dummy[4]; // was 7, but IT v2.17 saves 554 bytes
+};
+
+
+// IT Sample Format
+struct it_sample {
+ uint32_t id; // 0x53504D49
+ int8_t filename[12];
+ uint8_t zero;
+ uint8_t gvl;
+ uint8_t flags;
+ uint8_t vol;
+ int8_t name[26];
+ uint8_t cvt;
+ uint8_t dfp;
+ uint32_t length;
+ uint32_t loopbegin;
+ uint32_t loopend;
+ uint32_t C5Speed;
+ uint32_t susloopbegin;
+ uint32_t susloopend;
+ uint32_t samplepointer;
+ uint8_t vis;
+ uint8_t vid;
+ uint8_t vir;
+ uint8_t vit;
+};
+
+#pragma pack(pop)
+
+
+#endif
© All Rights Reserved