1 #ifndef SNDINTRF_H
2 #define SNDINTRF_H
3 
4 
5 struct MachineSound
6 {
7 	int sound_type;
8 	void *sound_interface;
9 	const char *tag;
10 };
11 
12 
13 #include "sound/mixer.h"
14 #include "sound/streams.h"
15 
16 #if (HAS_SAMPLES)
17 #include "sound/samples.h"
18 #endif
19 #if (HAS_DAC)
20 #include "sound/dac.h"
21 #endif
22 #if (HAS_DISCRETE)
23 #include "sound/discrete.h"
24 #endif
25 #if (HAS_AY8910)
26 #include "sound/ay8910.h"
27 #endif
28 #if (HAS_YM2203)
29 #include "sound/2203intf.h"
30 #endif
31 #if (HAS_YM2608)
32 #include "sound/2608intf.h"
33 #endif
34 #if (HAS_YM2612 || HAS_YM3438)
35 #include "sound/2612intf.h"
36 #endif
37 #if (HAS_YM2151 || HAS_YM2151_ALT)
38 #include "sound/2151intf.h"
39 #endif
40 #if (HAS_YM2608)
41 #include "sound/2608intf.h"
42 #endif
43 #if (HAS_YM2610 || HAS_YM2610B)
44 #include "sound/2610intf.h"
45 #endif
46 #if (HAS_YM3812 || HAS_YM3526 || HAS_Y8950)
47 #include "sound/3812intf.h"
48 #endif
49 #if (HAS_YM2413)
50 #include "sound/2413intf.h"
51 #endif
52 #if (HAS_YMZ280B)
53 #include "sound/ymz280b.h"
54 #endif
55 #if (HAS_SN76477)
56 #include "sound/sn76477.h"
57 #endif
58 #if (HAS_SN76496)
59 #include "sound/sn76496.h"
60 #endif
61 #if (HAS_POKEY)
62 #include "sound/pokey.h"
63 #endif
64 #if (HAS_NES)
65 #include "sound/nes_apu.h"
66 #endif
67 #if (HAS_ASTROCADE)
68 #include "sound/astrocde.h"
69 #endif
70 #if (HAS_NAMCO)
71 #include "sound/namco.h"
72 #endif
73 #if (HAS_NAMCO_15XX)
74 #include "sound/namco.h"
75 #endif
76 #if (HAS_NAMCO_52XX)
77 #include "sound/namco52.h"
78 #endif
79 #if (HAS_NAMCO_54XX)
80 #include "sound/namco54.h"
81 #endif
82 #if (HAS_NAMCONA)
83 #include "sound/namcona.h"
84 #endif
85 #if (HAS_TMS36XX)
86 #include "sound/tms36xx.h"
87 #endif
88 #if (HAS_TMS5110)
89 #include "sound/5110intf.h"
90 #endif
91 #if (HAS_TMS5220)
92 #include "sound/5220intf.h"
93 #endif
94 #if (HAS_VLM5030)
95 #include "sound/vlm5030.h"
96 #endif
97 #if (HAS_ADPCM || HAS_OKIM6295)
98 #include "sound/adpcm.h"
99 #endif
100 #if (HAS_MSM5205)
101 #include "sound/msm5205.h"
102 #endif
103 #if (HAS_MSM5232)
104 #include "sound/msm5232.h"
105 #endif
106 #if (HAS_UPD7759)
107 #include "sound/upd7759.h"
108 #endif
109 #if (HAS_HC55516)
110 #include "sound/hc55516.h"
111 #endif
112 #if (HAS_K005289)
113 #include "sound/k005289.h"
114 #endif
115 #if (HAS_K007232)
116 #include "sound/k007232.h"
117 #endif
118 #if (HAS_K051649)
119 #include "sound/k051649.h"
120 #endif
121 #if (HAS_K053260)
122 #include "sound/k053260.h"
123 #endif
124 #if (HAS_K054539)
125 #include "sound/k054539.h"
126 #endif
127 #if (HAS_SEGAPCM)
128 #include "sound/segapcm.h"
129 #endif
130 #if (HAS_RF5C68)
131 #include "sound/rf5c68.h"
132 #endif
133 #if (HAS_CEM3394)
134 #include "sound/cem3394.h"
135 #endif
136 #if (HAS_C140)
137 #include "sound/c140.h"
138 #endif
139 #if (HAS_QSOUND)
140 #include "sound/qsound.h"
141 #endif
142 #if (HAS_SAA1099)
143 #include "sound/saa1099.h"
144 #endif
145 #if (HAS_IREMGA20)
146 #include "sound/iremga20.h"
147 #endif
148 #if (HAS_ES5505 || HAS_ES5506)
149 #include "sound/es5506.h"
150 #endif
151 #if (HAS_BSMT2000)
152 #include "sound/bsmt2000.h"
153 #endif
154 #if (HAS_YMF262)
155 #include "sound/262intf.h"
156 #endif
157 #if (HAS_YMF278B)
158 #include "sound/ymf278b.h"
159 #endif
160 #if (HAS_GAELCO_CG1V || HAS_GAELCO_GAE1)
161 #include "sound/gaelco.h"
162 #endif
163 #if (HAS_X1_010)
164 #include "sound/x1_010.h"
165 #endif
166 #if (HAS_MULTIPCM)
167 #include "sound/multipcm.h"
168 #endif
169 #if (HAS_C6280)
170 #include "sound/c6280.h"
171 #endif
172 #if (HAS_TIA)
173 #include "sound/tiaintf.h"
174 #endif
175 #if (HAS_SP0250)
176 #include "sound/sp0250.h"
177 #endif
178 #if (HAS_SCSP)
179 #include "sound/scsp.h"
180 #endif
181 #if (HAS_PSXSPU)
182 #include "sound/psx.h"
183 #endif
184 #if (HAS_YMF271)
185 #include "sound/ymf271.h"
186 #endif
187 
188 #define SOUND_YM2151_ALT SOUND_YM2151
189 
190 /* the following list is automatically generated by makelist.pl - don't edit manually! */
191 enum
192 {
193 	SOUND_DUMMY,
194 #if (HAS_CUSTOM)
195 	SOUND_CUSTOM,
196 #endif
197 #if (HAS_SAMPLES)
198 	SOUND_SAMPLES,
199 #endif
200 #if (HAS_DAC)
201 	SOUND_DAC,
202 #endif
203 #if (HAS_DISCRETE)
204 	SOUND_DISCRETE,
205 #endif
206 #if (HAS_AY8910)
207 	SOUND_AY8910,
208 #endif
209 #if (HAS_YM2203)
210 	SOUND_YM2203,
211 #endif
212 #if (HAS_YM2151)
213 	SOUND_YM2151,
214 #endif
215 #if (HAS_YM2151_ALT)
216 	SOUND_YM2151_ALT,
217 #endif
218 #if (HAS_YM2608)
219 	SOUND_YM2608,
220 #endif
221 #if (HAS_YM2610)
222 	SOUND_YM2610,
223 #endif
224 #if (HAS_YM2610B)
225 	SOUND_YM2610B,
226 #endif
227 #if (HAS_YM2612)
228 	SOUND_YM2612,
229 #endif
230 #if (HAS_YM3438)
231 	SOUND_YM3438,
232 #endif
233 #if (HAS_YM2413)
234 	SOUND_YM2413,
235 #endif
236 #if (HAS_YM3812)
237 	SOUND_YM3812,
238 #endif
239 #if (HAS_YM3526)
240 	SOUND_YM3526,
241 #endif
242 #if (HAS_YMZ280B)
243 	SOUND_YMZ280B,
244 #endif
245 #if (HAS_Y8950)
246 	SOUND_Y8950,
247 #endif
248 #if (HAS_SN76477)
249 	SOUND_SN76477,
250 #endif
251 #if (HAS_SN76496)
252 	SOUND_SN76496,
253 #endif
254 #if (HAS_POKEY)
255 	SOUND_POKEY,
256 #endif
257 #if (HAS_NES)
258 	SOUND_NES,
259 #endif
260 #if (HAS_ASTROCADE)
261 	SOUND_ASTROCADE,
262 #endif
263 #if (HAS_NAMCO)
264 	SOUND_NAMCO,
265 #endif
266 #if (HAS_NAMCONA)
267 	SOUND_NAMCONA,
268 #endif
269 #if (HAS_TMS36XX)
270 	SOUND_TMS36XX,
271 #endif
272 #if (HAS_TMS5110)
273 	SOUND_TMS5110,
274 #endif
275 #if (HAS_TMS5220)
276 	SOUND_TMS5220,
277 #endif
278 #if (HAS_VLM5030)
279 	SOUND_VLM5030,
280 #endif
281 #if (HAS_ADPCM)
282 	SOUND_ADPCM,
283 #endif
284 #if (HAS_OKIM6295)
285 	SOUND_OKIM6295,
286 #endif
287 #if (HAS_MSM5205)
288 	SOUND_MSM5205,
289 #endif
290 #if (HAS_MSM5232)
291 	SOUND_MSM5232,
292 #endif
293 #if (HAS_UPD7759)
294 	SOUND_UPD7759,
295 #endif
296 #if (HAS_HC55516)
297 	SOUND_HC55516,
298 #endif
299 #if (HAS_K005289)
300 	SOUND_K005289,
301 #endif
302 #if (HAS_K007232)
303 	SOUND_K007232,
304 #endif
305 #if (HAS_K051649)
306 	SOUND_K051649,
307 #endif
308 #if (HAS_K053260)
309 	SOUND_K053260,
310 #endif
311 #if (HAS_K054539)
312 	SOUND_K054539,
313 #endif
314 #if (HAS_SEGAPCM)
315 	SOUND_SEGAPCM,
316 #endif
317 #if (HAS_RF5C68)
318 	SOUND_RF5C68,
319 #endif
320 #if (HAS_CEM3394)
321 	SOUND_CEM3394,
322 #endif
323 #if (HAS_C140)
324 	SOUND_C140,
325 #endif
326 #if (HAS_QSOUND)
327 	SOUND_QSOUND,
328 #endif
329 #if (HAS_SAA1099)
330 	SOUND_SAA1099,
331 #endif
332 #if (HAS_IREMGA20)
333 	SOUND_IREMGA20,
334 #endif
335 #if (HAS_ES5505)
336 	SOUND_ES5505,
337 #endif
338 #if (HAS_ES5506)
339 	SOUND_ES5506,
340 #endif
341 #if (HAS_BSMT2000)
342 	SOUND_BSMT2000,
343 #endif
344 #if (HAS_YMF262)
345 	SOUND_YMF262,
346 #endif
347 #if (HAS_YMF278B)
348 	SOUND_YMF278B,
349 #endif
350 #if (HAS_GAELCO_CG1V)
351 	SOUND_GAELCO_CG1V,
352 #endif
353 #if (HAS_GAELCO_GAE1)
354 	SOUND_GAELCO_GAE1,
355 #endif
356 #if (HAS_X1_010)
357 	SOUND_X1_010,
358 #endif
359 #if (HAS_MULTIPCM)
360 	SOUND_MULTIPCM,
361 #endif
362 #if (HAS_C6280)
363  SOUND_C6280,
364 #endif
365 #if (HAS_TIA)
366 	SOUND_TIA,
367 #endif
368 #if (HAS_SP0250)
369 	SOUND_SP0250,
370 #endif
371 #if (HAS_SCSP)
372 	SOUND_SCSP,
373 #endif
374 #if (HAS_PSXSPU)
375 	SOUND_PSXSPU,
376 #endif
377 #if (HAS_YMF271)
378 	SOUND_YMF271,
379 #endif
380 
381 
382 	SOUND_COUNT
383 };
384 
385 
386 /* structure for SOUND_CUSTOM sound drivers */
387 struct CustomSound_interface
388 {
389 	int (*sh_start)(const struct MachineSound *msound);
390 	void (*sh_stop)(void);
391 	void (*sh_update)(void);
392 };
393 
394 
395 int sound_start(void);
396 void sound_stop(void);
397 void sound_update(void);
398 void sound_reset(void);
399 
400 /* returns name of the sound system */
401 const char *soundtype_name(int soundtype);
402 const char *sound_name(const struct MachineSound *msound);
403 /* returns number of chips, or 0 if the sound type doesn't support multiple instances */
404 int sound_num(const struct MachineSound *msound);
405 /* returns clock rate, or 0 if the sound type doesn't support a clock frequency */
406 int sound_clock(const struct MachineSound *msound);
407 
408 int sound_scalebufferpos(int value);
409 
410 
411 READ_HANDLER( soundlatch_r );
412 READ_HANDLER( soundlatch2_r );
413 READ_HANDLER( soundlatch3_r );
414 READ_HANDLER( soundlatch4_r );
415 READ16_HANDLER( soundlatch_word_r );
416 READ16_HANDLER( soundlatch2_word_r );
417 READ16_HANDLER( soundlatch3_word_r );
418 READ16_HANDLER( soundlatch4_word_r );
419 
420 WRITE_HANDLER( soundlatch_w );
421 WRITE_HANDLER( soundlatch2_w );
422 WRITE_HANDLER( soundlatch3_w );
423 WRITE_HANDLER( soundlatch4_w );
424 WRITE16_HANDLER( soundlatch_word_w );
425 WRITE16_HANDLER( soundlatch2_word_w );
426 WRITE16_HANDLER( soundlatch3_word_w );
427 WRITE16_HANDLER( soundlatch4_word_w );
428 
429 WRITE_HANDLER( soundlatch_clear_w );
430 WRITE_HANDLER( soundlatch2_clear_w );
431 WRITE_HANDLER( soundlatch3_clear_w );
432 WRITE_HANDLER( soundlatch4_clear_w );
433 
434 
435 /* If you're going to use soundlatchX_clear_w, and the cleared value is
436    something other than 0x00, use this function from machine_init. Note
437    that this one call effects all 4 latches */
438 void soundlatch_setclearedvalue(int value);
439 
440 
441 #endif
442