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