summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/sound/c140.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/sound/c140.c')
-rw-r--r--src/emu/sound/c140.c65
1 files changed, 33 insertions, 32 deletions
diff --git a/src/emu/sound/c140.c b/src/emu/sound/c140.c
index d8867e9846e..68bb3ec66e8 100644
--- a/src/emu/sound/c140.c
+++ b/src/emu/sound/c140.c
@@ -88,7 +88,8 @@ typedef struct
long sample_loop;
} VOICE;
-struct c140_info
+typedef struct _c140_state c140_state;
+struct _c140_state
{
int sample_rate;
sound_stream *stream;
@@ -106,6 +107,16 @@ struct c140_info
VOICE voi[MAX_VOICE];
};
+INLINE c140_state *get_safe_token(const device_config *device)
+{
+ assert(device != NULL);
+ assert(device->token != NULL);
+ assert(device->type == SOUND);
+ assert(sound_get_type(device) == SOUND_C140);
+ return (c140_state *)device->token;
+}
+
+
static void init_voice( VOICE *v )
{
v->key=0;
@@ -119,9 +130,9 @@ static void init_voice( VOICE *v )
v->sample_end=0;
v->sample_loop=0;
}
-READ8_HANDLER( c140_r )
+READ8_DEVICE_HANDLER( c140_r )
{
- struct c140_info *info = sndti_token(SOUND_C140, 0);
+ c140_state *info = get_safe_token(device);
offset&=0x1ff;
return info->REG[offset];
}
@@ -134,7 +145,7 @@ READ8_HANDLER( c140_r )
is done by a small PAL or GAL external to the sound chip, which can be switched
per-game or at least per-PCB revision as addressing range needs grow.
*/
-static long find_sample(struct c140_info *info, long adrs, long bank, int voice)
+static long find_sample(c140_state *info, long adrs, long bank, int voice)
{
long newadr = 0;
@@ -184,9 +195,9 @@ static long find_sample(struct c140_info *info, long adrs, long bank, int voice)
return (newadr);
}
-WRITE8_HANDLER( c140_w )
+WRITE8_DEVICE_HANDLER( c140_w )
{
- struct c140_info *info = sndti_token(SOUND_C140, 0);
+ c140_state *info = get_safe_token(device);
stream_update(info->stream);
offset&=0x1ff;
@@ -246,9 +257,9 @@ WRITE8_HANDLER( c140_w )
}
}
-void c140_set_base(int which, void *base)
+void c140_set_base(const device_config *device, void *base)
{
- struct c140_info *info = sndti_token(SOUND_C140, 0);
+ c140_state *info = get_safe_token(device);
info->pRom = base;
}
@@ -261,7 +272,7 @@ INLINE int limit(INT32 in)
static STREAM_UPDATE( update_stereo )
{
- struct c140_info *info = param;
+ c140_state *info = param;
int i,j;
INT32 rvol,lvol;
@@ -454,12 +465,12 @@ static STREAM_UPDATE( update_stereo )
}
}
-static SND_START( c140 )
+static DEVICE_START( c140 )
{
const c140_interface *intf = device->static_config;
- struct c140_info *info = device->token;
+ c140_state *info = get_safe_token(device);
- info->sample_rate=info->baserate=clock;
+ info->sample_rate=info->baserate=device->clock;
info->banking_type = intf->banking_type;
@@ -496,34 +507,24 @@ static SND_START( c140 )
* Generic get_info
**************************************************************************/
-static SND_SET_INFO( c140 )
-{
- switch (state)
- {
- /* no parameters to set */
- }
-}
-
-
-SND_GET_INFO( c140 )
+DEVICE_GET_INFO( c140 )
{
switch (state)
{
/* --- the following bits of info are returned as 64-bit signed integers --- */
- case SNDINFO_INT_TOKEN_BYTES: info->i = sizeof(struct c140_info); break;
+ case DEVINFO_INT_TOKEN_BYTES: info->i = sizeof(c140_state); break;
/* --- the following bits of info are returned as pointers to data or functions --- */
- case SNDINFO_PTR_SET_INFO: info->set_info = SND_SET_INFO_NAME( c140 ); break;
- case SNDINFO_PTR_START: info->start = SND_START_NAME( c140 ); break;
- case SNDINFO_PTR_STOP: /* nothing */ break;
- case SNDINFO_PTR_RESET: /* nothing */ break;
+ case DEVINFO_FCT_START: info->start = DEVICE_START_NAME( c140 ); break;
+ case DEVINFO_FCT_STOP: /* nothing */ break;
+ case DEVINFO_FCT_RESET: /* nothing */ break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
- case SNDINFO_STR_NAME: strcpy(info->s, "C140"); break;
- case SNDINFO_STR_CORE_FAMILY: strcpy(info->s, "Namco PCM"); break;
- case SNDINFO_STR_CORE_VERSION: strcpy(info->s, "1.0"); break;
- case SNDINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
- case SNDINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
+ case DEVINFO_STR_NAME: strcpy(info->s, "C140"); break;
+ case DEVINFO_STR_FAMILY: strcpy(info->s, "Namco PCM"); break;
+ case DEVINFO_STR_VERSION: strcpy(info->s, "1.0"); break;
+ case DEVINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
+ case DEVINFO_STR_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
}
}