home *** CD-ROM | disk | FTP | other *** search
- /* MED.h V 2.10 by Teijo Kinnunen 1989, 1990 */
- /* MED.h V 1.1 9.7.1989 -- uusi kappale */
- /* MED.h V 1.11 4.8.1989 -- ukkeli + vΣrit */
- /* MED.h V 1.12 28.9.1989 -- CLohko */
- /* MED.h V 1.20 5.10.1989 -- Softwareinteruptdata */
- /* MED.h V 1.201 15.10.1989 -- osiot */
- /* MED.h V 1.202 18.10.1989 -- okdefinet */
- /* MED.h V 1.203 21.11.1989 -- lisΣΣ okdefineitΣ */
- /* MED.h V 1.210 28.12.1989 -- MIDI-kamat */
- /* MED.h V 1.220 29.12.1989 -- savel_period -> savel_num */
- /* MED.h V 1.221 30.12.1989 -- Kappale -> Kappale + Kappale111 */
- /* MED.h V 1.230 08.01.1990 -- Uusi Lohko */
- /* MED.h V 1.240 23.01.1990 -- Soitin-structure */
- /* MED.h V 1.250 20.02.1990 -- ST 2.4 module */
- /* MED.h V 1.251 26.02.1990 -- MIDIIEVENTS ja okdefinet pois */
- /* MED.h V 1.260 03.06.1990 -- ObjSong, osiot pois */
- /* MED.h V 2.000 10.03.1990 -- vΣhΣn turhia pois, UUSI VERSIONUMERO */
- /* MED.h V 2.100 13.04.1990 -- pathrakenteet */
- /* MED.h V 2.110 25.04.1990 -- uusi Kappale */
- /* MED.h V 2.120 21.05.1990 -- lohkon pituus sΣΣdeltΣvΣ */
- /* MED.h V 2.130 07.06.1990 -- MMD0 & MMD0song */
- /* MED.h V 2.131 12.06.1990 -- voim. hex/dec */
- /* MED.h V 2.132 19.06.1990 -- MMD0sample */
-
- struct Lohko { /* ** UUTTA 8.1.1990 ** */
- UBYTE numtracks;
- UBYTE lines; /* 0 = 1 line, 255 = 256 lines */
- UBYTE pad[2];
- ULONG hlmask[8]; /* 256 bits */
- UBYTE music[1]; /* size varies */
- }; /* note: bits in hlmasks are in reverse order (bit #0 is line 0) */
- #define BLKHDRSZ 36
-
- struct MMD0Block {
- UBYTE numtracks,lines;
- }; /* a bit shorter version is used in modules to save memory */
- #define MMDBLKHDRSZ 2
- #define ALATEEMITAAN 0 /* SoittokΣskyt */
- #define SOITALOHKO 1
- #define SOITAKAPPALE 2
- #define OHJELMANLOPPU 3
- #define SEIS 4
- #define SOITANUOTTI 5
-
- #define ALASOITA 0 /* soittotila */
- #define SOITALOHKOA 1
- #define SOITAKAPPALETTA 2
-
- #define FLAG_FILTERON 0x1 /* liput */
- #define FLAG_JUMPINGON 0x2
- #define FLAG_JUMP8TH 0x4
- #define FLAG_INSTRSATT 0x8 /* instruments are attached (this is a module) */
- #define FLAG_VOLHEX 0x10
- #define FLAG_STSLIDE 0x20 /* SoundTracker mode for slides */
-
- struct Kappale111 { /* 1.11 */
- ULONG id; /* sisΣltΣΣ "MED\x02" versiolle 1.11 */
- char soitin[32][40];
- UBYTE soittimenvoimakkuus[32];
- UWORD stoisto[32];
- UWORD stoistonpit[32];
- UWORD lohkoja; /* montako lohkoa kappaleessa on */
- UBYTE soittojarjestys[100]; /* lohkojen soittoj... */
- UWORD kappaleen_pituus; /* montako soittojΣrjestystΣ */
- UWORD tempo; /* kappaleen tempo, jos ei ilmoitettu komennolla xFxx */
- UWORD liput;
- UWORD vaihtoja; /* 5 tai 6 */
- ULONG hyppysoitin; /* jokainen bitti on 1 soitin */
- UWORD rgb[8]; /* vain 4 nyt kΣyt÷ssΣ */
- };
-
- struct Kappale200 { /* 2.00 */
- ULONG id; /* sisΣltΣΣ "MED\x03" versiolle 1.20 */
- char soitin[32][40];
- UBYTE soittimenvoimakkuus[32];
- UWORD stoisto[32];
- UWORD stoistonpit[32];
- UWORD lohkoja; /* montako lohkoa kappaleessa on */
- UBYTE soittojarjestys[100]; /* lohkojen soittoj... */
- UWORD kappaleen_pituus; /* montako soittojΣrjestystΣ */
- UWORD tempo; /* kappaleen tempo, jos ei ilmoitettu komennolla xFxx */
- BYTE playtransp;
- UBYTE liput;
- UWORD vaihtoja; /* 5 tai 6 */
- ULONG hyppysoitin; /* jokainen bitti on 1 soitin */
- UWORD rgb[8]; /* vain 4 nyt kΣyt÷ssΣ */
- /* TΣstΣ eteenpΣin versio 1.20 */
- UBYTE midikanava[32]; /* offset: 1574 */
- UBYTE midipreset[32]; /* offset: 1606 */
- };
-
- struct SongSample {
- char sname[40]; /* offs: 0 */
- UWORD rep,replen; /* offs: 40, 42 */
- UBYTE midich,midipreset; /* offs: 44, 45 */
- UBYTE svol; /* offs: 46 */
- BYTE strans; /* offs: 47 */
- }; /* 48 bytes */
-
- struct Kappale {
- ULONG id; /* MED\x04 for v2.10 */ /* offs: 0 */
- struct SongSample sample[63]; /* 48 * 63 = 3024 */
- UWORD numblocks; /* offs: 3028 */
- UWORD songlen; /* offs: 3030 */
- UBYTE playseq[256]; /* offs: 3032 */
- UWORD deftempo; /* offs: 3288 */
- BYTE playtransp; /* offs: 3290 */
- UBYTE flags; /* offs: 3291 */
- UWORD sliding; /* offs: 3292 */
- ULONG jumpmask; /* offs: 3294 */
- UWORD rgb[8]; /* offs: 3298 */
- UBYTE trkvol[16]; /* offs: 3314 */
- UBYTE mastervol; /* offs: 3330 */
- UBYTE pad;
- }; /* length = 3332 bytes */
-
- struct MMD0 {
- /* 0 */ ULONG id;
- /* 4 */ ULONG modlen; /* 0 if this module is not one continuous block */
- /* 8 */ struct MMD0song *song;
- /* 12 */ ULONG songlen; /* 0 if this module is a continuous block */
- /* 16 */ struct MMD0block **blockarr; /* ptr to table of block pointers */
- /* 20 */ ULONG blockarrlen; /* length of the table of block ptrs (bytes) */
- /* 24 */ struct Soitin **smplarr; /* ptr to table of sample ptrs */
- /* 28 */ ULONG smplarrlen; /* length of the table */
- /* 32 */ CPTR expdata; /* future expansion...should be 0 now */
- /* 36 */ ULONG expsize; /* 0, please */
- /* 40 */ UWORD pstate; /* some data for player routine */
- /* 42 */ UWORD pblock;
- /* 44 */ UWORD pline;
- /* 46 */ UWORD pseqnum;
- /* 48 */ WORD actplayline; /* these variables allow flexible switching */
- /* 50 */ UBYTE counter; /* of songs */
- /* 51 */ UBYTE pad;
- }; /* length = 52 bytes */
-
- struct MMD0sample {
- UWORD rep,replen; /* offs: 0(s), 2(s) */
- UBYTE midich; /* offs: 4(s) */
- UBYTE midipreset; /* offs: 5(s) */
- UBYTE svol; /* offs: 6(s) */
- BYTE strans; /* offs: 7(s) */
- };
- struct MMD0song {
- struct MMD0sample sample[63]; /* 63 * 8 bytes = 504 bytes */
- UWORD numblocks; /* offs: 504 */
- UWORD songlen; /* offs: 506 */
- UBYTE playseq[256]; /* offs: 508 */
- UWORD deftempo; /* offs: 764 */
- BYTE playtransp; /* offs: 766 */
- UBYTE flags; /* offs: 767 */
- UWORD sliding; /* offs: 768 */
- UBYTE trkvol[16]; /* offs: 770 */
- UBYTE mastervol; /* offs: 786 */
- UBYTE numsamples; /* offs: 787 */
- }; /* length = 788 bytes */
-
- struct SoundTrackerIns { /* instrumenttidata */
- char sti_nimi[22];
- UWORD sti_pit; /* soittimen pituus (jostakin syystΣ jaettuna 2:lla) */
- UWORD sti_vol; /* - " - voimakkuus */
- UWORD sti_repeat; /* mikΣ lie */
- UWORD sti_replen; /* -"- */
- };
-
- struct SoundTrackerKappale { /* suunnilleen, ei niin tarkasti */
- char st_nimi[20];
- struct SoundTrackerIns st_ins[15];
- UBYTE st_kappaleen_pit; /* soitettavien lohkojen mΣΣrΣ */
- UBYTE st_kummajainen; /* 0x78 ?? */
- UBYTE st_lohkojarj[128];
- /* tΣstΣ alkaa lohkot.... */
- };
-
- struct PlayNotedata {
- UBYTE playnote; /* 0 = no note to play, 1 = play this */
- UBYTE notenum;
- UBYTE instrnum;
- UBYTE tracknum;
- };
-
- struct Soitin {
- ULONG length;
- UWORD type;
- /* Followed by digitized data */
- };
-
- #define IFF5OCT 1
- #define IFF3OCT 2
-
- struct ST24Mod {
- char songname[20];
- struct {
- char name[22];
- UWORD length;
- UWORD volume;
- UWORD repeat;
- UWORD replen;
- } sample[31];
- UBYTE songlen;
- UBYTE I_dont_know_what_this_byte_is;
- UBYTE playseq[128];
- ULONG mk; /* contains M.K. ??? */
- };
-
- struct PSName {
- struct PSName *prev,*next;
- UBYTE namelen; /* length of the name only */
- UBYTE firstletter; /* the first letter of the name in upper case */
- /* char name[]; the name, maybe followed by ::1234/5678 */
- };
-
- struct PSDir {
- struct PSDir *prev,*next;
- struct PSName *first,*last;
- UWORD entries;
- UBYTE namelen;
- UBYTE diravail;
- /* char name[] */
- };
-
- struct FData { struct FData *prev,*next; char fname[108]; LONG type; };
-
- struct PrgNote {
- unsigned notenum:6,
- xnn:1,
- x0th:1,
- x1st:1,
- x2nd:1,
- x3rd:1,
- x4th:1,
- num0:1,
- num1:5,
- num2:4,
- num3:4,
- num4:4;
- };
-
- #define DISKERR ((char *)-1)
- #define NOERR ((char *)0)
- extern char *nomem,*fileex,*notsaved;
-