From 78f8fce7f286fd0c71774e2567404ed51f24fef3 Mon Sep 17 00:00:00 2001 From: Vito Caputo Date: Fri, 26 May 2017 21:51:04 -0700 Subject: *: initial commit of stripped schism stuff Forking schism tracker's IT playback stuff into a little playback library for embedding in demos. --- src/include/it_defs.h | 128 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 src/include/it_defs.h (limited to 'src/include/it_defs.h') 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 -- cgit v1.2.3