diff options
Diffstat (limited to 'src/emu/sndintrf.h')
-rw-r--r-- | src/emu/sndintrf.h | 285 |
1 files changed, 285 insertions, 0 deletions
diff --git a/src/emu/sndintrf.h b/src/emu/sndintrf.h new file mode 100644 index 00000000000..746fa65ee57 --- /dev/null +++ b/src/emu/sndintrf.h @@ -0,0 +1,285 @@ +/*************************************************************************** + + sndintrf.h + + Core sound interface functions and definitions. + + Copyright (c) 1996-2007, Nicola Salmoria and the MAME Team. + Visit http://mamedev.org for licensing and usage restrictions. + +***************************************************************************/ + +#pragma once + +#ifndef __SNDINTRF_H__ +#define __SNDINTRF_H__ + +#include "memory.h" +#include "mame.h" +#include "state.h" + + +/*************************************************************************** + CONSTANTS +***************************************************************************/ + +#define MAX_SOUND 32 + +/* Enum listing all the sound chips */ +typedef enum _sound_type sound_type; +enum _sound_type +{ + SOUND_DUMMY, + SOUND_CUSTOM, + SOUND_SAMPLES, + SOUND_DAC, + SOUND_DMADAC, + SOUND_DISCRETE, + SOUND_AY8910, + SOUND_AY8912, + SOUND_AY8913, + SOUND_AY8930, + SOUND_YM2149, + SOUND_YM3439, + SOUND_YMZ284, + SOUND_YMZ294, + SOUND_YM2203, + SOUND_YM2151, + SOUND_YM2608, + SOUND_YM2610, + SOUND_YM2610B, + SOUND_YM2612, + SOUND_YM3438, + SOUND_YM2413, + SOUND_YM3812, + SOUND_YM3526, + SOUND_YMZ280B, + SOUND_Y8950, + SOUND_SN76477, + SOUND_SN76489, + SOUND_SN76489A, + SOUND_SN76494, + SOUND_SN76496, + SOUND_GAMEGEAR, + SOUND_SMSIII, + SOUND_POKEY, + SOUND_NES, + SOUND_ASTROCADE, + SOUND_NAMCO, + SOUND_NAMCO_15XX, + SOUND_NAMCO_CUS30, + SOUND_NAMCO_52XX, + SOUND_NAMCO_63701X, + SOUND_NAMCONA, + SOUND_TMS36XX, + SOUND_TMS3615, + SOUND_TMS5110, + SOUND_TMS5220, + SOUND_VLM5030, + SOUND_OKIM6295, + SOUND_MSM5205, + SOUND_MSM5232, + SOUND_UPD7759, + SOUND_HC55516, + SOUND_K005289, + SOUND_K007232, + SOUND_K051649, + SOUND_K053260, + SOUND_K054539, + SOUND_SEGAPCM, + SOUND_RF5C68, + SOUND_CEM3394, + SOUND_C140, + SOUND_QSOUND, + SOUND_SAA1099, + SOUND_IREMGA20, + SOUND_ES5503, + SOUND_ES5505, + SOUND_ES5506, + SOUND_BSMT2000, + SOUND_YMF262, + SOUND_YMF278B, + SOUND_GAELCO_CG1V, + SOUND_GAELCO_GAE1, + SOUND_X1_010, + SOUND_MULTIPCM, + SOUND_C6280, + SOUND_TIA, + SOUND_SP0250, + SOUND_SCSP, + SOUND_PSXSPU, + SOUND_YMF271, + SOUND_CDDA, + SOUND_ICS2115, + SOUND_ST0016, + SOUND_C352, + SOUND_VRENDER0, + SOUND_VOTRAX, + SOUND_ES8712, + SOUND_RF5C400, + SOUND_SPEAKER, + SOUND_CDP1869, + SOUND_BEEP, + SOUND_WAVE, + SOUND_SID6581, + SOUND_SID8580, + SOUND_SP0256, + SOUND_S14001A, + + /* filters start here */ + SOUND_FILTER_VOLUME, + SOUND_FILTER_RC, + SOUND_FILTER_LOWPASS, + + SOUND_COUNT +}; + + +/* Sound information constants */ +enum +{ + /* --- the following bits of info are returned as 64-bit signed integers --- */ + SNDINFO_INT_FIRST = 0x00000, + + SNDINFO_INT_ALIAS = SNDINFO_INT_FIRST, /* R/O: alias to sound type for (type,index) identification */ + + SNDINFO_INT_CORE_SPECIFIC = 0x08000, /* R/W: core-specific values start here */ + + /* --- the following bits of info are returned as pointers to data or functions --- */ + SNDINFO_PTR_FIRST = 0x10000, + + SNDINFO_PTR_SET_INFO = SNDINFO_PTR_FIRST, /* R/O: void (*set_info)(void *token, UINT32 state, sndinfo *info) */ + SNDINFO_PTR_START, /* R/O: void *(*start)(int index, int clock, const void *config) */ + SNDINFO_PTR_STOP, /* R/O: void (*stop)(void *token) */ + SNDINFO_PTR_RESET, /* R/O: void (*reset)(void *token) */ + + SNDINFO_PTR_CORE_SPECIFIC = 0x18000, /* R/W: core-specific values start here */ + + /* --- the following bits of info are returned as NULL-terminated strings --- */ + SNDINFO_STR_FIRST = 0x20000, + + SNDINFO_STR_NAME = SNDINFO_STR_FIRST, /* R/O: name of the sound chip */ + SNDINFO_STR_CORE_FAMILY, /* R/O: family of the sound chip */ + SNDINFO_STR_CORE_VERSION, /* R/O: version of the sound core */ + SNDINFO_STR_CORE_FILE, /* R/O: file containing the sound core */ + SNDINFO_STR_CORE_CREDITS, /* R/O: credits for the sound core */ + + SNDINFO_STR_CORE_SPECIFIC = 0x28000 /* R/W: core-specific values start here */ +}; + + + +/*************************************************************************** + TYPE DEFINITIONS +***************************************************************************/ + +typedef union _sndinfo sndinfo; +union _sndinfo +{ + INT64 i; /* generic integers */ + void * p; /* generic pointers */ + genf * f; /* generic function pointers */ + const char *s; /* generic strings */ + + void (*set_info)(void *token, UINT32 state, sndinfo *info); + void * (*start)(int index, int clock, const void *config);/* SNDINFO_PTR_START */ + void (*stop)(void *token); /* SNDINFO_PTR_STOP */ + void (*reset)(void *token); /* SNDINFO_PTR_RESET */ +}; + + + +/*************************************************************************** + CHIP INTERFACES BY INDEX +***************************************************************************/ + +/* get info accessors */ +INT64 sndnum_get_info_int(int sndnum, UINT32 state); +void *sndnum_get_info_ptr(int sndnum, UINT32 state); +genf *sndnum_get_info_fct(int sndnum, UINT32 state); +const char *sndnum_get_info_string(int sndnum, UINT32 state); + +/* set info accessors */ +void sndnum_set_info_int(int sndnum, UINT32 state, INT64 data); +void sndnum_set_info_ptr(int sndnum, UINT32 state, void *data); +void sndnum_set_info_fct(int sndnum, UINT32 state, genf *data); + +#define sndnum_name(sndnum) sndnum_get_info_string(sndnum, SNDINFO_STR_NAME) +#define sndnum_core_family(sndnum) sndnum_get_info_string(sndnum, SNDINFO_STR_CORE_FAMILY) +#define sndnum_core_version(sndnum) sndnum_get_info_string(sndnum, SNDINFO_STR_CORE_VERSION) +#define sndnum_core_file(sndnum) sndnum_get_info_string(sndnum, SNDINFO_STR_CORE_FILE) +#define sndnum_core_credits(sndnum) sndnum_get_info_string(sndnum, SNDINFO_STR_CORE_CREDITS) + +/* misc accessors */ +void sndnum_reset(int sndnum); +int sndnum_clock(int sndnum); +void *sndnum_token(int sndnum); + + + +/*************************************************************************** + CHIP INTERFACES BY (TYPE,INDEX) PAIR +***************************************************************************/ + +/* get info accessors */ +INT64 sndti_get_info_int(sound_type sndtype, int sndindex, UINT32 state); +void *sndti_get_info_ptr(sound_type sndtype, int sndindex, UINT32 state); +genf *sndti_get_info_fct(sound_type sndtype, int sndindex, UINT32 state); +const char *sndti_get_info_string(sound_type sndtype, int sndindex, UINT32 state); + +/* set info accessors */ +void sndti_set_info_int(sound_type sndtype, int sndindex, UINT32 state, INT64 data); +void sndti_set_info_ptr(sound_type sndtype, int sndindex, UINT32 state, void *data); +void sndti_set_info_fct(sound_type sndtype, int sndindex, UINT32 state, genf *data); + +#define sndti_name(sndtype, sndindex) sndti_get_info_string(sndtype, sndindex, SNDINFO_STR_NAME) +#define sndti_core_family(sndtype, sndindex) sndti_get_info_string(sndtype, sndindex, SNDINFO_STR_CORE_FAMILY) +#define sndti_core_version(sndtype, sndindex) sndti_get_info_string(sndtype, sndindex, SNDINFO_STR_CORE_VERSION) +#define sndti_core_file(sndtype, sndindex) sndti_get_info_string(sndtype, sndindex, SNDINFO_STR_CORE_FILE) +#define sndti_core_credits(sndtype, sndindex) sndti_get_info_string(sndtype, sndindex, SNDINFO_STR_CORE_CREDITS) + +/* misc accessors */ +void sndti_reset(sound_type sndtype, int sndindex); +int sndti_clock(sound_type sndtype, int sndindex); +void *sndti_token(sound_type sndtype, int sndindex); + +/* driver gain controls on chip outputs */ +void sndti_set_output_gain(sound_type sndtype, int sndindex, int output, float gain); + + + +/*************************************************************************** + CHIP INTERFACES BY TYPE +***************************************************************************/ + +/* get info accessors */ +INT64 sndtype_get_info_int(sound_type sndtype, UINT32 state); +void *sndtype_get_info_ptr(sound_type sndtype, UINT32 state); +genf *sndtype_get_info_fct(sound_type sndtype, UINT32 state); +const char *sndtype_get_info_string(sound_type sndtype, UINT32 state); + +#define sndtype_name(sndtype) sndtype_get_info_string(sndtype, SNDINFO_STR_NAME) +#define sndtype_core_family(sndtype) sndtype_get_info_string(sndtype, SNDINFO_STR_CORE_FAMILY) +#define sndtype_core_version(sndtype) sndtype_get_info_string(sndtype, SNDINFO_STR_CORE_VERSION) +#define sndtype_core_file(sndtype) sndtype_get_info_string(sndtype, SNDINFO_STR_CORE_FILE) +#define sndtype_core_credits(sndtype) sndtype_get_info_string(sndtype, SNDINFO_STR_CORE_CREDITS) + + + +/*************************************************************************** + FUNCTION PROTOTYPES +***************************************************************************/ + +/* Initialization/Tear down */ +void sndintrf_init(running_machine *machine); +int sndintrf_init_sound(int sndnum, sound_type sndtype, int clock, const void *config); +void sndintrf_exit_sound(int sndnum); +void sndintrf_register_token(void *token); + +/* Misc helpers */ +int sndti_exists(sound_type sndtype, int sndindex); +int sndti_to_sndnum(sound_type type, int index); +sound_type sndnum_to_sndti(int sndnum, int *index); + + +#endif /* __SNDINTRF_H__ */ |