8 typedef unsigned char UBYTE;
9 typedef signed char SBYTE;
12 typedef unsigned int UWORD;
13 typedef unsigned int ULONG;
21 typedef struct MDRIVER{
25 BOOL (*IsPresent) (void);
26 SWORD (*SampleLoad) (FILE *fp,ULONG size,ULONG reppos,ULONG repend,UWORD flags);
27 void (*SampleUnLoad) (SWORD handle);
30 void (*PlayStart) (void);
31 void (*PlayStop) (void);
32 void (*Update) (void);
33 void (*VoiceSetVolume) (UBYTE voice,UBYTE vol);
34 void (*VoiceSetFrequency) (UBYTE voice,ULONG frq);
35 void (*VoiceSetPanning) (UBYTE voice,UBYTE pan);
36 void (*VoicePlay) (UBYTE voice,SWORD handle,ULONG start,ULONG size,ULONG reppos,ULONG repend,UWORD flags);
39 typedef struct MDRIVER
40 { struct MDRIVER *next;
43 UBYTE HardVoiceLimit, /* Limit of hardware mixer voices for this driver */
44 SoftVoiceLimit; /* Limit of software mixer voices for this driver */
46 BOOL (*IsPresent) (void);
47 SWORD (*SampleLoad) (SAMPLOAD *s, int type, FILE *fp);
48 void (*SampleUnLoad) (SWORD handle);
49 ULONG (*FreeSampleSpace) (int type);
50 ULONG (*RealSampleLength) (int type, SAMPLE *s);
54 BOOL (*SetNumVoices) (void);
55 BOOL (*PlayStart) (void);
56 void (*PlayStop) (void);
57 void (*Update) (void);
58 void (*VoiceSetVolume) (UBYTE voice, UWORD vol);
59 void (*VoiceSetFrequency) (UBYTE voice, ULONG frq);
60 void (*VoiceSetPanning) (UBYTE voice, ULONG pan);
61 void (*VoicePlay) (UBYTE voice, SWORD handle, ULONG start, ULONG size, ULONG reppos, ULONG repend, UWORD flags);
62 void (*VoiceStop) (UBYTE voice);
63 BOOL (*VoiceStopped) (UBYTE voice);
64 void (*VoiceReleaseSustain)(UBYTE voice);
65 SLONG (*VoiceGetPosition) (UBYTE voice);
66 ULONG (*VoiceRealVolume) (UBYTE voice);
68 BOOL (*StreamInit) (ULONG speed, UWORD flags);
69 void (*StreamExit) (void);
70 void (*StreamSetSpeed) (ULONG speed);
71 SLONG (*StreamGetPosition) (void);
72 void (*StreamLoadFP) (FILE *fp);
77 extern BOOL VC_Init(void);
78 extern void VC_Exit(void);
79 extern BOOL VC_SetNumVoices(void);
80 extern ULONG VC_SampleSpace(int type);
81 extern ULONG VC_SampleLength(int type, SAMPLE *s);
83 extern BOOL VC_PlayStart(void);
84 extern void VC_PlayStop(void);
87 extern SWORD VC_SampleLoad(FILE *fp,ULONG size,ULONG reppos,ULONG repend,UWORD flags);
89 extern SWORD VC_SampleLoad(SAMPLOAD *sload, int type, FILE *fp);
91 extern void VC_SampleUnload(SWORD handle);
93 extern void VC_WriteSamples(SBYTE *buf,ULONG todo);
94 extern ULONG VC_WriteBytes(SBYTE *buf,ULONG todo);
95 extern void VC_SilenceBytes(SBYTE *buf,ULONG todo);
98 extern void VC_VoiceSetVolume(UBYTE voice, UBYTE vol);
99 extern void VC_VoiceSetPanning(UBYTE voice, UBYTE pan);
101 extern void VC_VoiceSetVolume(UBYTE voice, UWORD vol);
102 extern void VC_VoiceSetPanning(UBYTE voice, ULONG pan);
104 extern void VC_VoiceSetFrequency(UBYTE voice, ULONG frq);
105 extern void VC_VoicePlay(UBYTE voice,SWORD handle,ULONG start,ULONG size,ULONG reppos,ULONG repend,UWORD flags);
107 extern void VC_VoiceStop(UBYTE voice);
108 extern BOOL VC_VoiceStopped(UBYTE voice);
109 extern void VC_VoiceReleaseSustain(UBYTE voice);
110 extern SLONG VC_VoiceGetPosition(UBYTE voice);
111 extern ULONG VC_VoiceRealVolume(UBYTE voice);
114 extern int md_mixfreq;
115 extern int md_dmabufsize;
118 #define DMODE_16BITS 1
119 #define DMODE_STEREO 2
121 char *_mm_malloc(int size);
122 void _mm_free(char *buf);