improved automake config. make dist, VPATH builds, ...
[btb/d2x.git] / arch / dos / mm_snd / include / mm_drv.h
1 #ifndef _MM_DRV
2 #define _MM_DRV
3 #include <stdio.h>
4
5 #if 1
6 #include "mtypes.h"
7 #else
8 typedef unsigned char UBYTE;
9 typedef signed char SBYTE;
10 typedef int BOOL;
11 typedef int SWORD;
12 typedef unsigned int UWORD;
13 typedef unsigned int ULONG;
14 typedef int SLONG;
15 #endif
16 typedef char CHAR;
17 typedef int SAMPLOAD;
18 typedef int SAMPLE;
19
20 #if 1
21 typedef struct MDRIVER{
22         struct MDRIVER *next;
23         char    *Name;
24         char    *Version;
25         BOOL    (*IsPresent)            (void);
26         SWORD   (*SampleLoad)           (FILE *fp,ULONG size,ULONG reppos,ULONG repend,UWORD flags);
27         void    (*SampleUnLoad)         (SWORD handle);
28         BOOL    (*Init)                 (void);
29         void    (*Exit)                 (void);
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);
37 } MDRIVER;
38 #else
39 typedef struct MDRIVER
40 {   struct MDRIVER *next;
41     CHAR    *Name;
42     CHAR    *Version;
43     UBYTE   HardVoiceLimit,       /* Limit of hardware mixer voices for this driver */
44             SoftVoiceLimit;       /* Limit of software mixer voices for this driver */
45
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);
51     BOOL    (*Init)               (void);
52     void    (*Exit)               (void);
53     BOOL    (*Reset)              (void);
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);
67
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);
73     void        (*Wait)               (void);           
74 } MDRIVER;
75 #endif
76
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);
82
83 extern BOOL    VC_PlayStart(void);
84 extern void    VC_PlayStop(void);
85
86 #if 1
87 extern SWORD   VC_SampleLoad(FILE *fp,ULONG size,ULONG reppos,ULONG repend,UWORD flags);
88 #else
89 extern SWORD   VC_SampleLoad(SAMPLOAD *sload, int type, FILE *fp);
90 #endif
91 extern void    VC_SampleUnload(SWORD handle);
92
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);
96
97 #if 1
98 extern void    VC_VoiceSetVolume(UBYTE voice, UBYTE vol);
99 extern void    VC_VoiceSetPanning(UBYTE voice, UBYTE pan);
100 #else
101 extern void    VC_VoiceSetVolume(UBYTE voice, UWORD vol);
102 extern void    VC_VoiceSetPanning(UBYTE voice, ULONG pan);
103 #endif
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);
106
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);
112
113 extern int md_mode;
114 extern int md_mixfreq;
115 extern int md_dmabufsize;
116 extern char *myerr;
117
118 #define DMODE_16BITS 1
119 #define DMODE_STEREO 2
120
121 char *_mm_malloc(int size);
122 void _mm_free(char *buf);
123
124 #endif