X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fv2%2Fsource%2FMAPED%2FMIKMOD.H;fp=src%2Fv2%2Fsource%2FMAPED%2FMIKMOD.H;h=0000000000000000000000000000000000000000;hb=3b3eab57721d856c06fd21d62cb7f0c42fbdd4f0;hp=0111ccb3cc3e60257e26b46890c64ddc28ee098a;hpb=8510447fda06825df6c1b92a3238922b9893f424;p=proj16%2F16.git diff --git a/src/v2/source/MAPED/MIKMOD.H b/src/v2/source/MAPED/MIKMOD.H deleted file mode 100644 index 0111ccb3..00000000 --- a/src/v2/source/MAPED/MIKMOD.H +++ /dev/null @@ -1,580 +0,0 @@ -#ifndef MIKMOD_H -#define MIKMOD_H - -#include -#include "mtypes.h" /* include atomic mikmod types */ - - -#define mikbanner \ -"=======================================================================\n" \ -"MIKMOD v2.10 - Portable version - Programmed by MikMak of HaRDCoDE '95\n" \ -"=======================================================================\n" \ -"This program is SHAREWARE - Read MIKMOD.TXT for more info\n" \ -"E-Mail : mikmak@stack.urc.tue.nl\n" - - -/* - error variables: - =============== -*/ - -extern char *ERROR_ALLOC_STRUCT; -extern char *ERROR_LOADING_PATTERN; -extern char *ERROR_LOADING_TRACK; -extern char *ERROR_LOADING_HEADER; -extern char *ERROR_NOT_A_MODULE; -extern char *ERROR_LOADING_SAMPLEINFO; -extern char *ERROR_OUT_OF_HANDLES; -extern char *ERROR_SAMPLE_TOO_BIG; -extern char *myerr; - - - -#define _mm_rewind(x) _mm_fseek(x,0,SEEK_SET) -int _mm_fseek(FILE *stream,long offset,int whence); -void _mm_setiobase(long iobase); -long _mm_ftell(FILE *stream); - - -extern SBYTE _mm_read_SBYTE (FILE *fp); -extern UBYTE _mm_read_UBYTE (FILE *fp); - -extern SWORD _mm_read_M_SWORD (FILE *fp); -extern SWORD _mm_read_I_SWORD (FILE *fp); - -extern UWORD _mm_read_M_UWORD(FILE *fp); -extern UWORD _mm_read_I_UWORD(FILE *fp); - -extern SLONG _mm_read_M_SLONG (FILE *fp); -extern SLONG _mm_read_I_SLONG (FILE *fp); - -extern ULONG _mm_read_M_ULONG(FILE *fp); -extern ULONG _mm_read_I_ULONG(FILE *fp); - -extern int _mm_read_str(char *str, int size, FILE *fp); - -extern int _mm_read_SBYTES (SBYTE *buffer, int number, FILE *fp); -extern int _mm_read_UBYTES (UBYTE *buffer, int number, FILE *fp); - -extern int _mm_read_M_SWORDS (SWORD *buffer, int number, FILE *fp); -extern int _mm_read_I_SWORDS (SWORD *buffer, int number, FILE *fp); - -extern int _mm_read_M_UWORDS (UWORD *buffer, int number, FILE *fp); -extern int _mm_read_I_UWORDS (UWORD *buffer, int number, FILE *fp); - -extern int _mm_read_M_SLONGS (SLONG *buffer, int number, FILE *fp); -extern int _mm_read_I_SLONGS (SLONG *buffer, int number, FILE *fp); - -extern int _mm_read_M_ULONGS (ULONG *buffer, int number, FILE *fp); -extern int _mm_read_I_ULONGS (ULONG *buffer, int number, FILE *fp); - - -extern void _mm_write_SBYTE (SBYTE data,FILE *fp); -extern void _mm_write_UBYTE (UBYTE data,FILE *fp); - -extern void _mm_write_M_SWORD (SWORD data,FILE *fp); -extern void _mm_write_I_SWORD (SWORD data,FILE *fp); - -extern void _mm_write_M_UWORD (UWORD data,FILE *fp); -extern void _mm_write_I_UWORD (UWORD data,FILE *fp); - -extern void _mm_write_M_SLONG (SLONG data,FILE *fp); -extern void _mm_write_I_SLONG (SLONG data,FILE *fp); - -extern void _mm_write_M_ULONG (ULONG data,FILE *fp); -extern void _mm_write_I_ULONG (ULONG data,FILE *fp); - -extern void _mm_write_SBYTES (SBYTE *data, int number,FILE *fp); -extern void _mm_write_UBYTES (UBYTE *data, int number,FILE *fp); - -extern void _mm_write_M_SWORDS (SWORD *data, int number,FILE *fp); -extern void _mm_write_I_SWORDS (SWORD *data, int number,FILE *fp); - -extern void _mm_write_M_UWORDS (UWORD *data, int number,FILE *fp); -extern void _mm_write_I_UWORDS (UWORD *data, int number,FILE *fp); - -extern void _mm_write_M_SLONGS (SLONG *data, int number,FILE *fp); -extern void _mm_write_I_SLONGS (SLONG *data, int number,FILE *fp); - -extern void _mm_write_M_ULONGS (ULONG *data, int number,FILE *fp); -extern void _mm_write_I_ULONGS (ULONG *data, int number,FILE *fp); - - -/************************************************************************** -****** Unitrack stuff: **************************************************** -**************************************************************************/ - -/* - prototypes: -*/ - -void UniSetRow(UBYTE *t); -UBYTE UniGetByte(void); -UBYTE *UniFindRow(UBYTE *t,UWORD row); -void UniReset(void); -void UniWrite(UBYTE data); -void UniNewline(void); -void UniInstrument(UBYTE ins); -void UniNote(UBYTE note); -void UniPTEffect(UBYTE eff,UBYTE dat); -UBYTE *UniDup(void); -void UniSkipOpcode(UBYTE op); -BOOL UniInit(void); -void UniCleanup(void); -UWORD TrkLen(UBYTE *t); -BOOL MyCmp(UBYTE *a,UBYTE *b,UWORD l); - -/* - all known effects: -*/ - -enum { - UNI_NOTE=1, - UNI_INSTRUMENT, - UNI_PTEFFECT0, - UNI_PTEFFECT1, - UNI_PTEFFECT2, - UNI_PTEFFECT3, - UNI_PTEFFECT4, - UNI_PTEFFECT5, - UNI_PTEFFECT6, - UNI_PTEFFECT7, - UNI_PTEFFECT8, - UNI_PTEFFECT9, - UNI_PTEFFECTA, - UNI_PTEFFECTB, - UNI_PTEFFECTC, - UNI_PTEFFECTD, - UNI_PTEFFECTE, - UNI_PTEFFECTF, - UNI_S3MEFFECTA, - UNI_S3MEFFECTD, - UNI_S3MEFFECTE, - UNI_S3MEFFECTF, - UNI_S3MEFFECTI, - UNI_S3MEFFECTQ, - UNI_S3MEFFECTT, - UNI_XMEFFECTA, - UNI_XMEFFECTG, - UNI_XMEFFECTH, - UNI_XMEFFECTP -}; - - -/************************************************************************** -****** mikmod types: ****************************************************** -**************************************************************************/ - - -/* - Sample format flags: -*/ - -#define SF_16BITS 1 -#define SF_SIGNED 2 -#define SF_DELTA 4 -#define SF_BIG_ENDIAN 8 -#define SF_LOOP 16 -#define SF_BIDI 32 -#define SF_OWNPAN 64 -#define SF_REVERSE 128 - - -/* - Envelope flags: -*/ - -#define EF_ON 1 -#define EF_SUSTAIN 2 -#define EF_LOOP 4 - - -/* - Unimod flags -*/ - -#define UF_XMPERIODS 1 /* if set use XM periods/finetuning */ -#define UF_LINEAR 2 /* if set use LINEAR periods */ - - -typedef struct ENVPT{ - SWORD pos; - SWORD val; -} ENVPT; - - -typedef struct SAMPLE{ - UWORD c2spd; /* finetune frequency */ - SBYTE transpose; /* transpose value */ - UBYTE volume; /* volume 0-64 */ - UBYTE panning; /* panning */ - ULONG length; /* length of sample (in samples!) */ - ULONG loopstart; /* repeat position (relative to start, in samples) */ - ULONG loopend; /* repeat end */ - UWORD flags; /* sample format */ - ULONG seekpos; /* seek position in file */ - char *samplename; /* name of the sample */ - SWORD handle; /* sample handle */ -} SAMPLE; - - -typedef struct INSTRUMENT{ - UBYTE numsmp; - UBYTE samplenumber[96]; - - UBYTE volflg; /* bit 0: on 1: sustain 2: loop */ - UBYTE volpts; - UBYTE volsus; - UBYTE volbeg; - UBYTE volend; - ENVPT volenv[12]; - - UBYTE panflg; /* bit 0: on 1: sustain 2: loop */ - UBYTE panpts; - UBYTE pansus; - UBYTE panbeg; - UBYTE panend; - ENVPT panenv[12]; - - UBYTE vibtype; - UBYTE vibsweep; - UBYTE vibdepth; - UBYTE vibrate; - - UWORD volfade; - char *insname; - SAMPLE *samples; -} INSTRUMENT; - - -/* - MikMod UNImod types: - ==================== -*/ - -typedef struct UNIMOD{ - UBYTE numchn; /* number of channels */ - UWORD numpos; /* number of positions in this song */ - UWORD reppos; /* restart position */ - UWORD numpat; /* number of patterns in this song */ - UWORD numtrk; /* number of tracks */ - UWORD numins; /* number of samples */ - UBYTE initspeed; /* */ - UBYTE inittempo; /* */ - UBYTE positions[256]; /* all positions */ - UBYTE panning[32]; /* 32 panning positions */ - UBYTE flags; /* */ - char *songname; /* name of the song */ - char *modtype; /* string type of module */ - char *comment; /* module comments */ - INSTRUMENT *instruments; /* all samples */ - UWORD *patterns; /* array of PATTERN */ - UWORD *pattrows; /* array of number of rows for each pattern */ - UBYTE **tracks; /* array of pointers to tracks */ -} UNIMOD; - - -/************************************************************************** -****** Loader stuff: ****************************************************** -**************************************************************************/ - -/* - loader structure: -*/ - -typedef struct LOADER{ - struct LOADER *next; - char *type; - char *version; - BOOL (*Init)(void); - BOOL (*Test)(void); - BOOL (*Load)(void); - void (*Cleanup)(void); -} LOADER; - - -/* - public loader variables: -*/ - -extern UNIMOD of; -extern FILE *modfp; -extern UWORD finetune[16]; - - -/* - main loader prototypes: -*/ - -void ML_InfoLoader(void); -void ML_RegisterLoader(LOADER *ldr); -UNIMOD *ML_LoadFP(FILE *fp); -UNIMOD *ML_LoadFN(char *filename); -void ML_Free(UNIMOD *mf); - - -/* - other loader prototypes: (used by the loader modules) -*/ - -BOOL InitTracks(void); -void AddTrack(UBYTE *tr); -BOOL ReadComment(UWORD len); -BOOL AllocPatterns(void); -BOOL AllocTracks(void); -BOOL AllocInstruments(void); -BOOL AllocSamples(INSTRUMENT *i); -char *DupStr(char *s,UWORD len); -void *MyMalloc(size_t size); -void *MyCalloc(size_t nitems,size_t size); - - -/* - Declare external loaders: -*/ -extern LOADER load_uni; -extern LOADER load_mod; -extern LOADER load_m15; -extern LOADER load_mtm; -extern LOADER load_s3m; -extern LOADER load_stm; -extern LOADER load_ult; -extern LOADER load_xm; - - -/************************************************************************** -****** Wavload stuff: ***************************************************** -**************************************************************************/ - -SAMPLE *MW_LoadWavFP(FILE *fp); -SAMPLE *MW_LoadWavFN(char *filename); -void MW_FreeWav(SAMPLE *si); - - -/************************************************************************** -****** Driver stuff: ****************************************************** -**************************************************************************/ - -/* - max. number of handles a driver has to provide. (not strict) -*/ - -#define MAXSAMPLEHANDLES 128 - - -/* - possible mixing mode bits: -*/ - -#define DMODE_STEREO 1 -#define DMODE_16BITS 2 -#define DMODE_INTERP 4 - - -/* - driver structure: -*/ - -typedef struct DRIVER{ - struct DRIVER *next; - char *Name; - char *Version; - BOOL (*IsPresent) (void); - SWORD (*SampleLoad) (FILE *fp,ULONG size,ULONG reppos,ULONG repend,UWORD flags); - void (*SampleUnLoad) (SWORD handle); - BOOL (*Init) (void); - void (*Exit) (void); - void (*PlayStart) (void); - void (*PlayStop) (void); - void (*Update) (void); - void (*VoiceSetVolume) (UBYTE voice,UBYTE vol); - void (*VoiceSetFrequency) (UBYTE voice,ULONG frq); - void (*VoiceSetPanning) (UBYTE voice,UBYTE pan); - void (*VoicePlay) (UBYTE voice,SWORD handle,ULONG start,ULONG size,ULONG reppos,ULONG repend,UWORD flags); -} DRIVER; - - -/* - public driver variables: -*/ - -extern DRIVER *md_driver; -extern UWORD md_device; -extern UWORD md_mixfreq; -extern UWORD md_dmabufsize; -extern UWORD md_mode; -extern UBYTE md_numchn; -extern UBYTE md_bpm; -extern void (*md_player)(void); - -/* - main driver prototypes: -*/ - -void MD_InfoDriver(void); -void MD_RegisterDriver(DRIVER *drv); -void MD_RegisterPlayer(void (*plr)(void)); -SWORD MD_SampleLoad(FILE *fp,ULONG size,ULONG reppos,ULONG repend,UWORD flags); -void MD_SampleUnLoad(SWORD handle); -BOOL MD_Init(void); -void MD_Exit(void); -void MD_PlayStart(void); -void MD_PlayStop(void); -void MD_SetBPM(UBYTE bpm); -void MD_Update(void); -void MD_VoiceSetVolume(UBYTE voice,UBYTE ivol); -void MD_VoiceSetFrequency(UBYTE voice,ULONG frq); -void MD_VoiceSetPanning(UBYTE voice,ULONG pan); -void MD_VoicePlay(UBYTE voice,SWORD handle,ULONG start,ULONG size,ULONG reppos,ULONG repend,UWORD flags); -void SL_Init(FILE *fp,UWORD infmt,UWORD outfmt); -void SL_Load(void *buffer,ULONG length); - -/* - Declare external drivers: -*/ - -extern DRIVER drv_gus; /* gravis ultrasound driver */ -extern DRIVER drv_sb; /* soundblaster DSP driver */ -extern DRIVER drv_ss; /* ensoniq soundscape driver */ -extern DRIVER drv_nos; /* nosound driver */ -extern DRIVER drv_raw; /* file output driver */ -extern DRIVER drv_w95; /* win95 driver */ -extern DRIVER drv_awe; /* experimental SB-AWE driver */ -extern DRIVER drv_vox; /* linux voxware driver */ -extern DRIVER drv_af; /* Dec Alpha AudioFile driver */ -extern DRIVER drv_sun; /* Sun driver */ -extern DRIVER drv_os2; /* Os2 driver */ -extern DRIVER drv_tim; /* timing driver */ - -/************************************************************************** -****** Player stuff: ****************************************************** -**************************************************************************/ - - -typedef struct ENVPR{ - UBYTE flg; /* envelope flag */ - UBYTE pts; /* number of envelope points */ - UBYTE sus; /* envelope sustain index */ - UBYTE beg; /* envelope loop begin */ - UBYTE end; /* envelope loop end */ - SWORD p; /* current envelope counter */ - UWORD a; /* envelope index a */ - UWORD b; /* envelope index b */ - ENVPT *env; /* envelope points */ -} ENVPR; - - -typedef struct AUDTMP{ - INSTRUMENT *i; - SAMPLE *s; - - UWORD fadevol; /* fading volume */ - - ENVPR venv; - ENVPR penv; - - UBYTE keyon; /* if true=key is pressed. */ - UBYTE kick; /* if true=sample has to be restarted */ - UBYTE sample; /* which sample number (0-31) */ - SWORD handle; /* which sample-handle */ - - ULONG start; /* The start byte index in the sample */ - - UBYTE panning; /* panning position */ - UBYTE pansspd; /* panslide speed */ - - SBYTE volume; /* amiga volume (0 t/m 64) to play the sample at */ - UWORD period; /* period to play the sample at */ - - /* You should not have to use the values - below in the player routine */ - - SBYTE transpose; - - UBYTE note; /* */ - - SWORD ownper; - SWORD ownvol; - - UBYTE *row; /* row currently playing on this channel */ - - SBYTE retrig; /* retrig value (0 means don't retrig) */ - UWORD c2spd; /* what finetune to use */ - - SBYTE tmpvolume; /* tmp volume */ - - UWORD tmpperiod; /* tmp period */ - UWORD wantedperiod; /* period to slide to (with effect 3 or 5) */ - - UWORD slidespeed; /* */ - UWORD portspeed; /* noteslide speed (toneportamento) */ - - UBYTE s3mtremor; /* s3m tremor (effect I) counter */ - UBYTE s3mtronof; /* s3m tremor ontime/offtime */ - - UBYTE s3mvolslide; /* last used volslide */ - - UBYTE s3mrtgspeed; /* last used retrig speed */ - UBYTE s3mrtgslide; /* last used retrig slide */ - - UBYTE glissando; /* glissando (0 means off) */ - UBYTE wavecontrol; /* */ - - SBYTE vibpos; /* current vibrato position */ - UBYTE vibspd; /* "" speed */ - UBYTE vibdepth; /* "" depth */ - - SBYTE trmpos; /* current tremolo position */ - UBYTE trmspd; /* "" speed */ - UBYTE trmdepth; /* "" depth */ - - UWORD soffset; /* last used sample-offset (effect 9) */ -} AUDTMP; - - -extern AUDTMP mp_audio[32]; /* max eight channels */ -extern UBYTE mp_bpm; /* beats-per-minute speed */ -extern UWORD mp_patpos; /* current row number (0-63) */ -extern SWORD mp_sngpos; /* current song position */ -extern UWORD mp_sngspd; /* current songspeed */ - -extern BOOL mp_loop; -extern BOOL mp_panning; -extern BOOL mp_extspd; -extern UBYTE mp_volume; - -/* - player prototypes: -*/ - -int MP_Ready(void); -void MP_NextPosition(void); -void MP_PrevPosition(void); -void MP_SetPosition(UWORD pos); -void MP_HandleTick(void); -void MP_Init(UNIMOD *m); - - -/************************************************************************** -****** Virtual channel stuff: ********************************************* -**************************************************************************/ - -BOOL VC_Init(void); -void VC_Exit(void); - -void VC_PlayStart(void); -void VC_PlayStop(void); - -SWORD VC_SampleLoad(FILE *fp,ULONG size,ULONG reppos,ULONG repend,UWORD flags); -void VC_SampleUnload(SWORD handle); - -void VC_WriteSamples(SBYTE *buf,UWORD todo); -UWORD VC_WriteBytes(SBYTE *buf,UWORD todo); -void VC_SilenceBytes(SBYTE *buf,UWORD todo); - -void VC_VoiceSetVolume(UBYTE voice,UBYTE vol); -void VC_VoiceSetFrequency(UBYTE voice,ULONG frq); -void VC_VoiceSetPanning(UBYTE voice,UBYTE pan); -void VC_VoicePlay(UBYTE voice,SWORD handle,ULONG start,ULONG size,ULONG reppos,ULONG repend,UWORD flags); - -#endif