1 #ifndef SNDDRV_H_INCLUDED
2 #define SNDDRV_H_INCLUDED
3 
4 
5 enum {
6     XMAME_MIXER_PSG,
7     XMAME_MIXER_FM,
8     XMAME_MIXER_BEEP,
9     XMAME_MIXER_RHYTHM,
10     XMAME_MIXER_ADPCM,
11     XMAME_MIXER_FMGEN,
12     XMAME_MIXER_SAMPLE,
13     XMAME_MIXER_END
14 };
15 
16 #define	VOL_MAX		(0)
17 #define	FMVOL_MAX	(100)
18 #define	PSGVOL_MAX	(100)
19 #define	BEEPVOL_MAX	(100)
20 #define	RHYTHMVOL_MAX	(200)
21 #define	ADPCMVOL_MAX	(200)
22 #define	FMGENVOL_MAX	(100)
23 #define	SAMPLEVOL_MAX	(100)
24 
25 #define	VOL_MIN		(-32)
26 #define	FMVOL_MIN	(0)
27 #define	PSGVOL_MIN	(0)
28 #define	BEEPVOL_MIN	(0)
29 #define	RHYTHMVOL_MIN	(0)
30 #define	ADPCMVOL_MIN	(0)
31 #define	FMGENVOL_MIN	(0)
32 #define	SAMPLEVOL_MIN	(0)
33 
34 
35 
36 /* ������ɷϥ��ץ������˥塼�����ѹ����뤿��ξ���ơ��֥�		*/
37 /*	��˥塼�Ǥϡ����������ꤷ���ѿ�����ȥ�ˤ����ϲ�ǽ�Ȥʤ롣	*/
38 
39 typedef enum {
40     SNDDRV_NULL = 0,			/* ��ü�ޡ���			*/
41     SNDDRV_INT,				/* �ѿ� work �� int��		*/
42     SNDDRV_FLOAT,			/* �ѿ� work �� float��		*/
43 } SNDDRV_TYPE;
44 
45 typedef struct T_SNDDRV_CONFIG {
46     int		type;			/* SNDDRV_TYPE������		*/
47     char	*title;			/* ��˥塼�θ��Ф� (ASCII)	*/
48     void	*work;			/* �ѹ��оݤȤʤ��ѿ��Υݥ���	*/
49     double	low;			/* �ѹ���ǽ���ϰ�		*/
50     double	high;			/*       (low <= *work <= high)	*/
51 } T_SNDDRV_CONFIG;
52 
53 
54 
55 #ifdef	USE_SOUND
56 
57 #include "getconf.h"
58 int	xmame_config_init(void);
59 void	xmame_config_exit(void);
60 
61 const T_CONFIG_TABLE *xmame_config_get_opt_tbl(void);
62 void	xmame_config_show_option(void);
63 
64 int	xmame_config_check_option(char *arg1, char *arg2, int priority);
65 int	xmame_config_save_option(void (*real_write)(const char *opt_name, const char *opt_arg));
66 
67 T_SNDDRV_CONFIG *xmame_config_get_sndopt_tbl(void);
68 
69 int	xmame_has_sound(void);
70 int	xmame_has_audiodevice(void);
71 int	xmame_has_mastervolume(void);
72 
73 
74 
75 int	xmame_sound_start(void);
76 void	xmame_sound_update(void);
77 void	xmame_update_video_and_audio(void);
78 void	xmame_sound_stop(void);
79 void	xmame_sound_suspend(void);
80 void	xmame_sound_resume(void);
81 void	xmame_sound_reset(void);
82 
83 byte	xmame_dev_sound_in_data(void);
84 byte	xmame_dev_sound_in_status(void);
85 void	xmame_dev_sound_out_reg(byte data);
86 void	xmame_dev_sound_out_data(byte data);
87 byte	xmame_dev_sound2_in_data(void);
88 byte	xmame_dev_sound2_in_status(void);
89 void	xmame_dev_sound2_out_reg(byte data);
90 void	xmame_dev_sound2_out_data(byte data);
91 void	xmame_dev_beep_out_data(byte data);
92 void	xmame_dev_beep_cmd_sing(byte flag);
93 void	xmame_dev_sample_motoron(void);
94 void	xmame_dev_sample_motoroff(void);
95 void	xmame_dev_sample_headdown(void);
96 void	xmame_dev_sample_headup(void);
97 void	xmame_dev_sample_seek(void);
98 void	xmame_dev_sound_timer_over(int timer);
99 
100 int	xmame_cfg_get_mastervolume(void);
101 void	xmame_cfg_set_mastervolume(int vol);
102 int	xmame_cfg_get_mixer_volume(int ch);
103 void	xmame_cfg_set_mixer_volume(int ch, int level);
104 int	xmame_cfg_get_use_fmgen(void);
105 int	xmame_cfg_set_use_fmgen(int enable);
106 int	xmame_cfg_get_use_samples(void);
107 int	xmame_cfg_set_use_samples(int enable);
108 int	xmame_cfg_get_sample_freq(void);
109 int	xmame_cfg_set_sample_freq(int freq);
110 
111 int	xmame_wavout_open(const char *filename);
112 int	xmame_wavout_opened(void);
113 void	xmame_wavout_close(void);
114 int	xmame_wavout_damaged(void);
115 
116 const char *xmame_version_mame(void);
117 const char *xmame_version_fmgen(void);
118 
119 #else
120 
121 
122 #define	xmame_config_init()			(TRUE)
123 #define	xmame_config_exit()
124 
125 #define	xmame_config_get_opt_tbl()		(NULL)
126 #define	xmame_config_show_option()
127 
128 #define	xmame_config_check_option(a1, a2, p)	(0)
129 #define	xmame_config_save_option(f)		(NULL)
130 
131 #define	xmame_config_get_sndopt_tbl()		(NULL)
132 
133 #define	xmame_has_sound()			(FALSE)
134 #define	xmame_has_audiodevice()			(FALSE)
135 #define	xmame_has_mastervolume()		(FALSE)
136 
137 
138 
139 #define	xmame_sound_start()			(TRUE)
140 #define	xmame_sound_update()
141 #define	xmame_update_video_and_audio()
142 #define	xmame_sound_stop()
143 #define	xmame_sound_suspend()
144 #define	xmame_sound_resume()
145 #define	xmame_sound_reset()
146 
147 #define	xmame_dev_sound_in_data()		(0xff)
148 #define	xmame_dev_sound_in_status()		(0x00)
149 #define	xmame_dev_sound_out_reg(d)
150 #define	xmame_dev_sound_out_data(d)
151 #define	xmame_dev_sound2_in_data()		(0xff)
152 #define	xmame_dev_sound2_in_status()		(0xff)
153 #define	xmame_dev_sound2_out_reg(d)
154 #define	xmame_dev_sound2_out_data(d)
155 #define	xmame_dev_beep_out_data(d)
156 #define	xmame_dev_beep_cmd_sing(f)
157 #define	xmame_dev_sample_motoron()
158 #define	xmame_dev_sample_motoroff()
159 #define	xmame_dev_sample_headdown()
160 #define	xmame_dev_sample_headup()
161 #define	xmame_dev_sample_seek()
162 #define	xmame_dev_sound_timer_over( t )
163 
164 #define	xmame_cfg_get_mastervolume()		(0)
165 #define	xmame_cfg_set_mastervolume(v)
166 #define	xmame_cfg_get_mixer_volume(c)		(0)
167 #define	xmame_cfg_set_mixer_volume(c, l)
168 #define	xmame_cfg_get_use_fmgen()		(FALSE)
169 #define	xmame_cfg_set_use_fmgen(e)		(FALSE)
170 #define	xmame_cfg_get_use_samples()		(FALSE)
171 #define	xmame_cfg_set_use_samples(e)		(FALSE)
172 #define	xmame_cfg_get_sample_freq()		(44100)
173 #define	xmame_cfg_set_sample_freq(f)		(44100)
174 
175 #define	xmame_wavout_open(f)			(FALSE)
176 #define	xmame_wavout_opened()			(FALSE)
177 #define	xmame_wavout_close()
178 #define	xmame_wavout_damaged()			(FALSE)
179 
180 #define	xmame_version_mame()			""
181 #define	xmame_version_fmgen()			""
182 
183 #endif
184 
185 
186 #endif	/* SNDDRV_H_INCLUDED */
187