home *** CD-ROM | disk | FTP | other *** search
/ Gold Fish 1 / GoldFishApril1994_CD2.img / d4xx / d483 / med / med.lzh / MED / Programmers / MODPlayer / modplayer.h < prev    next >
C/C++ Source or Header  |  1991-05-08  |  3KB  |  78 lines

  1. #ifdef LATTICE
  2. LONG __asm InitPlayer(void);
  3. void __asm RemPlayer(void);
  4. void __asm PlayModule(register __a0 struct MMD0 *);
  5. void __asm ContModule(register __a0 struct MMD0 *);
  6. void __asm StopPlayer(void);
  7. void __asm SetTempo(register __d0 UWORD);
  8. struct MMD0 * __asm LoadModule(register __a0 char *);
  9. void __asm RelocModule(register __a0 struct MMD0 *);
  10. void __asm UnLoadModule(register __a0 struct MMD0 *);
  11. /* These are the definitions for 8-channel OctaMED routines */
  12. LONG __asm InitPlayer8(void);
  13. void __asm RemPlayer8(void);
  14. void __asm PlayModule8(register __a0 struct MMD0 *);
  15. void __asm ContModule8(register __a0 struct MMD0 *);
  16. void __asm StopPlayer8(void);
  17. #endif
  18. struct MMD0 {
  19.     ULONG id;            /* "MMD0" */
  20.     ULONG modlen;            /* module length (in bytes) */
  21.     struct MMD0song *song;        /* pointer to song (see med.h) */
  22.     ULONG songlen;            /* length of song (usually zero) */
  23.     struct MMD0block **blockarr;    /* pointer to pointers of blocks */
  24.     ULONG blockarrlen;        /* length... */
  25.     struct Soitin **smplarr;    /* pointer to pointers of samples */
  26.     ULONG smplarrlen;        /* len.. */
  27.     struct MMD0exp *expdata;    /* pointer to expansion data (see med.h) */
  28.     ULONG expsize;            /* len.. (don't care about these) */
  29. /* Followed by some private variables that have become obsolete in V3.00... */
  30. };
  31.  
  32. struct InstrExt {    /* THIS STRUCT MAY GROW IN THE FUTURE!! */
  33.     UBYTE hold;    /* to get the correct size, examine s_ext_entrsz */
  34.     UBYTE decay;
  35. };
  36.  
  37. struct MMD0exp {
  38.     ULONG    reserved; /* for future... */
  39.     struct InstrExt *exp_smp;
  40.     UWORD  s_ext_entries;  /* # of entries */
  41.     UWORD  s_ext_entrsz;   /* size of entry*/
  42.     UBYTE  *annotxt;    /* song name, ©, notes etc... */
  43.     ULONG  annolen;    /* length (including 0-byte) */
  44.     ULONG  reserved2[16]; /* better have enough of these... */
  45. };
  46.  
  47. struct MMD0sample {
  48.     UWORD rep,replen;    /* offs: 0(s), 2(s) */
  49.     UBYTE midich;        /* offs: 4(s) */
  50.     UBYTE midipreset;    /* offs: 5(s) */
  51.     UBYTE svol;        /* offs: 6(s) */
  52.     BYTE strans;        /* offs: 7(s) */
  53. };
  54.  
  55. struct MMD0song {
  56.     struct MMD0sample sample[63]; /* 63 * 8 bytes = 504 bytes */
  57.     UWORD    numblocks;        /* offs: 504 */
  58.     UWORD    songlen;        /* offs: 506 */
  59.     UBYTE    playseq[256];        /* offs: 508 */
  60.     UWORD    deftempo;        /* offs: 764 */
  61.     BYTE    playtransp;        /* offs: 766 */
  62.     UBYTE    flags;            /* offs: 767 */
  63.     UBYTE    reserved;        /* offs: 768 */
  64.     UBYTE    tempo2;            /* offs: 769 */
  65.     UBYTE    trkvol[16];        /* offs: 770 */
  66.     UBYTE    mastervol;        /* offs: 786 */
  67.     UBYTE    numsamples;        /* offs: 787 */
  68. }; /* length = 788 bytes */
  69.  
  70.  /* FLAGS of the above structure */
  71. #define    FLAG_FILTERON    0x1    /* hardware low-pass filter */
  72. #define    FLAG_JUMPINGON    0x2    /* jumping.. (not used in modules) */
  73. #define    FLAG_JUMP8TH    0x4    /* jump 8th..  "    "    " */
  74. #define    FLAG_INSTRSATT    0x8    /* instruments are attached (sng+samples) */
  75. #define    FLAG_VOLHEX    0x10    /* volumes are represented as hex */
  76. #define FLAG_STSLIDE    0x20    /* no effects on 1st timing pulse (STS) */
  77. #define FLAG_8CHANNEL    0x40    /* OctaMED 8 channel song */
  78.