diff options
author | 2013-02-02 19:25:25 +0000 | |
---|---|---|
committer | 2013-02-02 19:25:25 +0000 | |
commit | edf6aa3d8e2cafac5af8c52e0f3833c51e6a2658 (patch) | |
tree | 7b0dd6e90321f77e3a01af4ea7a838c5e19da10b /src | |
parent | 0ff47c0b8b135292116f83cf017a1085aebb3705 (diff) |
Modernized digitalker, x1_010, tiaintf, and n63701x sound devices. [Andrew Gardner]
Diffstat (limited to 'src')
-rw-r--r-- | src/emu/sound/digitalk.c | 470 | ||||
-rw-r--r-- | src/emu/sound/digitalk.h | 89 | ||||
-rw-r--r-- | src/emu/sound/n63701x.c | 121 | ||||
-rw-r--r-- | src/emu/sound/n63701x.h | 43 | ||||
-rw-r--r-- | src/emu/sound/tiaintf.c | 82 | ||||
-rw-r--r-- | src/emu/sound/tiaintf.h | 31 | ||||
-rw-r--r-- | src/emu/sound/x1_010.c | 238 | ||||
-rw-r--r-- | src/emu/sound/x1_010.h | 54 | ||||
-rw-r--r-- | src/mame/drivers/champbwl.c | 8 | ||||
-rw-r--r-- | src/mame/drivers/galaxian.c | 16 | ||||
-rw-r--r-- | src/mame/drivers/namcos86.c | 8 | ||||
-rw-r--r-- | src/mame/drivers/seta.c | 126 | ||||
-rw-r--r-- | src/mame/drivers/seta2.c | 20 | ||||
-rw-r--r-- | src/mame/drivers/tourtabl.c | 2 | ||||
-rw-r--r-- | src/mame/video/seta.c | 4 | ||||
-rw-r--r-- | src/mame/video/tia.c | 2 | ||||
-rw-r--r-- | src/mess/drivers/a2600.c | 4 | ||||
-rw-r--r-- | src/mess/drivers/a7800.c | 2 | ||||
-rw-r--r-- | src/mess/machine/a7800.c | 2 |
19 files changed, 640 insertions, 682 deletions
diff --git a/src/emu/sound/digitalk.c b/src/emu/sound/digitalk.c index 13b8ad24d7f..4b57f56999d 100644 --- a/src/emu/sound/digitalk.c +++ b/src/emu/sound/digitalk.c @@ -236,30 +236,6 @@ complete set of waveforms is repeated R times. */ - -struct digitalker { - const UINT8 *rom; - device_t *device; - sound_stream *stream; - - // Port/lines state - UINT8 data, cs, cms, wr, intr; - - // Current decoding state - UINT16 bpos, apos; - UINT8 mode, cur_segment, cur_repeat, segments, repeats; - UINT8 prev_pitch, pitch, pitch_pos; - UINT8 stop_after, cur_dac, cur_bits; - - // Zero-range size - UINT32 zero_count; // 0 for done - - // Waveform and current index in it - UINT8 dac_index; // 128 for done - INT16 dac[128]; - -}; - // Quantized intensity values, first index is the volume, second the // intensity (positive half only, real value goes -8..7) static const short pcm_levels[8][8] = { @@ -277,22 +253,44 @@ static const int delta1[16] = { -4, -4, -1, -1, -2, -2, 0, 0, 0, 0, 2, 2, 1, 1, static const int delta2[16] = { 0, -1, -2, -3, 1, 0, -1, -2, 2, 1, 0, -1, 3, 2, 1, 0 }; // Frequency quantizations, values are in units of 128us. - static const int pitch_vals[32] = { 97, 95, 92, 89, 87, 84, 82, 80, 77, 75, 73, 71, 69, 67, 65, 63, 61, 60, 58, 56, 55, 53, 52, 50, 49, 48, 46, 45, 43, 42, 41, 40 }; -INLINE digitalker *get_safe_token(device_t *device) +const device_type DIGITALKER = &device_creator<digitalker_device>; + +digitalker_device::digitalker_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : device_t(mconfig, DIGITALKER, "Digitalker", tag, owner, clock), + device_sound_interface(mconfig, *this), + m_rom(NULL), + m_stream(NULL), + m_data(0), + m_cs(0), + m_cms(0), + m_wr(0), + m_intr(0), + m_bpos(0), + m_apos(0), + m_mode(0), + m_cur_segment(0), + m_cur_repeat(0), + m_segments(0), + m_repeats(0), + m_prev_pitch(0), + m_pitch(0), + m_pitch_pos(0), + m_stop_after(0), + m_cur_dac(0), + m_cur_bits(0), + m_zero_count(0), + m_dac_index(0) { - assert(device != NULL); - assert(device->type() == DIGITALKER); - return (digitalker *)downcast<digitalker_device *>(device)->token(); } -static void digitalker_write(digitalker *dg, UINT8 *adr, UINT8 vol, INT8 dac) +void digitalker_device::digitalker_write(UINT8 *adr, UINT8 vol, INT8 dac) { INT16 v; dac &= 15; @@ -302,10 +300,10 @@ static void digitalker_write(digitalker *dg, UINT8 *adr, UINT8 vol, INT8 dac) v = pcm_levels[vol][dac-1]; else v = 0; - dg->dac[(*adr)++] = v; + m_dac[(*adr)++] = v; } -static UINT8 digitalker_pitch_next(UINT8 val, UINT8 prev, int step) +UINT8 digitalker_device::digitalker_pitch_next(UINT8 val, UINT8 prev, int step) { int delta, nv; @@ -323,253 +321,257 @@ static UINT8 digitalker_pitch_next(UINT8 val, UINT8 prev, int step) return nv; } -static void digitalker_set_intr(digitalker *dg, UINT8 intr) +void digitalker_device::digitalker_set_intr(UINT8 intr) { - dg->intr = intr; + m_intr = intr; } -static void digitalker_start_command(digitalker *dg, UINT8 cmd) +void digitalker_device::digitalker_start_command(UINT8 cmd) { - dg->bpos = ((dg->rom[cmd*2] << 8) | dg->rom[cmd*2+1]) & 0x3fff; - dg->cur_segment = dg->segments = dg->cur_repeat = dg->repeats = 0; - dg->dac_index = 128; - dg->zero_count = 0; - digitalker_set_intr(dg, 0); + m_bpos = ((m_rom[cmd*2] << 8) | m_rom[cmd*2+1]) & 0x3fff; + m_cur_segment = m_segments = m_cur_repeat = m_repeats = 0; + m_dac_index = 128; + m_zero_count = 0; + digitalker_set_intr(0); } -static void digitalker_step_mode_0(digitalker *dg) +void digitalker_device::digitalker_step_mode_0() { INT8 dac = 0; int i, k, l; UINT8 wpos = 0; - UINT8 h = dg->rom[dg->apos]; + UINT8 h = m_rom[m_apos]; UINT16 bits = 0x80; UINT8 vol = h >> 5; - UINT8 pitch_id = dg->cur_segment ? digitalker_pitch_next(h, dg->prev_pitch, dg->cur_repeat) : h & 0x1f; + UINT8 pitch_id = m_cur_segment ? digitalker_pitch_next(h, m_prev_pitch, m_cur_repeat) : h & 0x1f; - dg->pitch = pitch_vals[pitch_id]; + m_pitch = pitch_vals[pitch_id]; for(i=0; i<32; i++) - dg->dac[wpos++] = 0; + m_dac[wpos++] = 0; for(k=1; k != 9; k++) { - bits |= dg->rom[dg->apos+k] << 8; + bits |= m_rom[m_apos+k] << 8; for(l=0; l<4; l++) { dac += delta1[(bits >> (6+2*l)) & 15]; - digitalker_write(dg, &wpos, vol, dac); + digitalker_write(&wpos, vol, dac); } bits >>= 8; } - digitalker_write(dg, &wpos, vol, dac); + digitalker_write(&wpos, vol, dac); for(k=7; k >= 0; k--) { - bits = (bits << 8) | (k ? dg->rom[dg->apos+k] : 0x80); + bits = (bits << 8) | (k ? m_rom[m_apos+k] : 0x80); for(l=3; l>=0; l--) { dac -= delta1[(bits >> (6+2*l)) & 15]; - digitalker_write(dg, &wpos, vol, dac); + digitalker_write(&wpos, vol, dac); } } for(i=0; i<31; i++) - dg->dac[wpos++] = 0; - - dg->cur_repeat++; - if(dg->cur_repeat == dg->repeats) { - dg->apos += 9; - dg->prev_pitch = pitch_id; - dg->cur_repeat = 0; - dg->cur_segment++; + m_dac[wpos++] = 0; + + m_cur_repeat++; + if(m_cur_repeat == m_repeats) { + m_apos += 9; + m_prev_pitch = pitch_id; + m_cur_repeat = 0; + m_cur_segment++; } } -static void digitalker_step_mode_1(digitalker *dg) +void digitalker_device::digitalker_step_mode_1() { logerror("Digitalker mode 1 unsupported"); - dg->zero_count = 1; - dg->cur_segment = dg->segments; + m_zero_count = 1; + m_cur_segment = m_segments; } -static void digitalker_step_mode_2(digitalker *dg) +void digitalker_device::digitalker_step_mode_2() { INT8 dac = 0; int k, l; UINT8 wpos=0; - UINT8 h = dg->rom[dg->apos]; + UINT8 h = m_rom[m_apos]; UINT16 bits = 0x80; UINT8 vol = h >> 5; - UINT8 pitch_id = dg->cur_segment ? digitalker_pitch_next(h, dg->prev_pitch, dg->cur_repeat) : h & 0x1f; + UINT8 pitch_id = m_cur_segment ? digitalker_pitch_next(h, m_prev_pitch, m_cur_repeat) : h & 0x1f; - dg->pitch = pitch_vals[pitch_id]; + m_pitch = pitch_vals[pitch_id]; for(k=1; k != 9; k++) { - bits |= dg->rom[dg->apos+k] << 8; + bits |= m_rom[m_apos+k] << 8; for(l=0; l<4; l++) { dac += delta1[(bits >> (6+2*l)) & 15]; - digitalker_write(dg, &wpos, vol, dac); + digitalker_write(&wpos, vol, dac); } bits >>= 8; } - digitalker_write(dg, &wpos, vol, dac); + digitalker_write(&wpos, vol, dac); for(k=7; k >= 0; k--) { int limit = k ? 0 : 1; - bits = (bits << 8) | (k ? dg->rom[dg->apos+k] : 0x80); + bits = (bits << 8) | (k ? m_rom[m_apos+k] : 0x80); for(l=3; l>=limit; l--) { dac -= delta1[(bits >> (6+2*l)) & 15]; - digitalker_write(dg, &wpos, vol, dac); + digitalker_write(&wpos, vol, dac); } } - digitalker_write(dg, &wpos, vol, dac); + digitalker_write(&wpos, vol, dac); for(k=1; k != 9; k++) { int start = k == 1 ? 1 : 0; - bits |= dg->rom[dg->apos+k] << 8; + bits |= m_rom[m_apos+k] << 8; for(l=start; l<4; l++) { dac += delta1[(bits >> (6+2*l)) & 15]; - digitalker_write(dg, &wpos, vol, dac); + digitalker_write(&wpos, vol, dac); } bits >>= 8; } - digitalker_write(dg, &wpos, vol, dac); + digitalker_write(&wpos, vol, dac); for(k=7; k >= 0; k--) { int limit = k ? 0 : 1; - bits = (bits << 8) | (k ? dg->rom[dg->apos+k] : 0x80); + bits = (bits << 8) | (k ? m_rom[m_apos+k] : 0x80); for(l=3; l>=limit; l--) { dac -= delta1[(bits >> (6+2*l)) & 15]; - digitalker_write(dg, &wpos, vol, dac); + digitalker_write(&wpos, vol, dac); } } - dg->cur_repeat++; - if(dg->cur_repeat == dg->repeats) { - dg->apos += 9; - dg->prev_pitch = pitch_id; - dg->cur_repeat = 0; - dg->cur_segment++; + m_cur_repeat++; + if(m_cur_repeat == m_repeats) { + m_apos += 9; + m_prev_pitch = pitch_id; + m_cur_repeat = 0; + m_cur_segment++; } } -static void digitalker_step_mode_3(digitalker *dg) +void digitalker_device::digitalker_step_mode_3() { - UINT8 h = dg->rom[dg->apos]; + UINT8 h = m_rom[m_apos]; UINT8 vol = h >> 5; UINT16 bits; UINT8 dac, apos, wpos; int k, l; - dg->pitch = pitch_vals[h & 0x1f]; - if(dg->cur_segment == 0 && dg->cur_repeat == 0) { - dg->cur_bits = 0x40; - dg->cur_dac = 0; + m_pitch = pitch_vals[h & 0x1f]; + if(m_cur_segment == 0 && m_cur_repeat == 0) { + m_cur_bits = 0x40; + m_cur_dac = 0; } - bits = dg->cur_bits; + bits = m_cur_bits; dac = 0; - apos = dg->apos + 1 + 32*dg->cur_segment; + apos = m_apos + 1 + 32*m_cur_segment; wpos = 0; for(k=0; k != 32; k++) { - bits |= dg->rom[apos++] << 8; + bits |= m_rom[apos++] << 8; for(l=0; l<4; l++) { dac += delta2[(bits >> (6+2*l)) & 15]; - digitalker_write(dg, &wpos, vol, dac); + digitalker_write(&wpos, vol, dac); } bits >>= 8; } - dg->cur_bits = bits; - dg->cur_dac = dac; + m_cur_bits = bits; + m_cur_dac = dac; - dg->cur_segment++; - if(dg->cur_segment == dg->segments) { - dg->cur_segment = 0; - dg->cur_repeat++; + m_cur_segment++; + if(m_cur_segment == m_segments) { + m_cur_segment = 0; + m_cur_repeat++; } } -static void digitalker_step(digitalker *dg) +void digitalker_device::digitalker_step() { - if(dg->cur_segment == dg->segments || dg->cur_repeat == dg->repeats) { - if(dg->stop_after == 0 && dg->bpos == 0xffff) + if(m_cur_segment == m_segments || m_cur_repeat == m_repeats) { + if(m_stop_after == 0 && m_bpos == 0xffff) return; - if(dg->stop_after == 0) { - UINT8 v1 = dg->rom[dg->bpos++]; - UINT8 v2 = dg->rom[dg->bpos++]; - UINT8 v3 = dg->rom[dg->bpos++]; - dg->apos = v2 | ((v3 << 8) & 0x3f00); - dg->segments = (v1 & 15) + 1; - dg->repeats = ((v1 >> 4) & 7) + 1; - dg->mode = (v3 >> 6) & 3; - dg->stop_after = (v1 & 0x80) != 0; - - dg->cur_segment = 0; - dg->cur_repeat = 0; - - if(!dg->apos) { - dg->zero_count = 40*128*dg->segments*dg->repeats; - dg->segments = 0; - dg->repeats = 0; + if(m_stop_after == 0) { + UINT8 v1 = m_rom[m_bpos++]; + UINT8 v2 = m_rom[m_bpos++]; + UINT8 v3 = m_rom[m_bpos++]; + m_apos = v2 | ((v3 << 8) & 0x3f00); + m_segments = (v1 & 15) + 1; + m_repeats = ((v1 >> 4) & 7) + 1; + m_mode = (v3 >> 6) & 3; + m_stop_after = (v1 & 0x80) != 0; + + m_cur_segment = 0; + m_cur_repeat = 0; + + if(!m_apos) { + m_zero_count = 40*128*m_segments*m_repeats; + m_segments = 0; + m_repeats = 0; return; } - } else if(dg->stop_after == 1) { - dg->bpos = 0xffff; - dg->zero_count = 81920; - dg->stop_after = 2; - dg->cur_segment = 0; - dg->cur_repeat = 0; - dg->segments = 0; - dg->repeats = 0; + } else if(m_stop_after == 1) { + m_bpos = 0xffff; + m_zero_count = 81920; + m_stop_after = 2; + m_cur_segment = 0; + m_cur_repeat = 0; + m_segments = 0; + m_repeats = 0; } else { - dg->stop_after = 0; - digitalker_set_intr(dg, 1); + m_stop_after = 0; + digitalker_set_intr(1); } } - switch(dg->mode) { - case 0: digitalker_step_mode_0(dg); break; - case 1: digitalker_step_mode_1(dg); break; - case 2: digitalker_step_mode_2(dg); break; - case 3: digitalker_step_mode_3(dg); break; + switch(m_mode) { + case 0: digitalker_step_mode_0(); break; + case 1: digitalker_step_mode_1(); break; + case 2: digitalker_step_mode_2(); break; + case 3: digitalker_step_mode_3(); break; } - if(!dg->zero_count) - dg->dac_index = 0; + if(!m_zero_count) + m_dac_index = 0; } -static STREAM_UPDATE(digitalker_update) + +//------------------------------------------------- +// sound_stream_update - handle a stream update +//------------------------------------------------- + +void digitalker_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) { - digitalker *dg = (digitalker *)param; stream_sample_t *sout = outputs[0]; int cpos = 0; while(cpos != samples) { - if(dg->zero_count == 0 && dg->dac_index == 128) - digitalker_step(dg); + if(m_zero_count == 0 && m_dac_index == 128) + digitalker_step(); - if(dg->zero_count) { + if(m_zero_count) { int n = samples - cpos; int i; - if(n > dg->zero_count) - n = dg->zero_count; + if(n > m_zero_count) + n = m_zero_count; for(i=0; i != n; i++) sout[cpos++] = 0; - dg->zero_count -= n; + m_zero_count -= n; - } else if(dg->dac_index != 128) { - while(cpos != samples && dg->dac_index != 128) { - short v = dg->dac[dg->dac_index]; - int pp = dg->pitch_pos; - while(cpos != samples && pp != dg->pitch) { + } else if(m_dac_index != 128) { + while(cpos != samples && m_dac_index != 128) { + short v = m_dac[m_dac_index]; + int pp = m_pitch_pos; + while(cpos != samples && pp != m_pitch) { sout[cpos++] = v; pp++; } - if(pp == dg->pitch) { + if(pp == m_pitch) { pp = 0; - dg->dac_index++; + m_dac_index++; } - dg->pitch_pos = pp; + m_pitch_pos = pp; } } else { @@ -579,151 +581,111 @@ static STREAM_UPDATE(digitalker_update) } } -static void digitalker_cs_w(digitalker *dg, int line) +void digitalker_device::digitalker_cs_w(int line) { UINT8 cs = line == ASSERT_LINE ? 1 : 0; - if(cs == dg->cs) + if(cs == m_cs) return; - dg->cs = cs; + m_cs = cs; if(cs) return; - if(!dg->wr) { - if(dg->cms) - digitalker_set_intr(dg, 1); + if(!m_wr) { + if(m_cms) + digitalker_set_intr(1); else - digitalker_start_command(dg, dg->data); + digitalker_start_command(m_data); } } -static void digitalker_cms_w(digitalker *dg, int line) +void digitalker_device::digitalker_cms_w(int line) { - dg->cms = line == ASSERT_LINE ? 1 : 0; + m_cms = line == ASSERT_LINE ? 1 : 0; } -static void digitalker_wr_w(digitalker *dg, int line) +void digitalker_device::digitalker_wr_w(int line) { UINT8 wr = line == ASSERT_LINE ? 1 : 0; - if(wr == dg->wr) + if(wr == m_wr) return; - dg->wr = wr; - if(wr || dg->cs) + m_wr = wr; + if(wr || m_cs) return; - if(dg->cms) - digitalker_set_intr(dg, 1); + if(m_cms) + digitalker_set_intr(1); else - digitalker_start_command(dg, dg->data); + digitalker_start_command(m_data); } -static int digitalker_intr_r(digitalker *dg) +int digitalker_device::digitalker_intr_r() { - return dg->intr ? ASSERT_LINE : CLEAR_LINE; + return m_intr ? ASSERT_LINE : CLEAR_LINE; } -static void digitalker_register_for_save(digitalker *dg) +void digitalker_device::digitalker_register_for_save() { - dg->device->save_item(NAME(dg->data)); - dg->device->save_item(NAME(dg->cs)); - dg->device->save_item(NAME(dg->cms)); - dg->device->save_item(NAME(dg->wr)); - dg->device->save_item(NAME(dg->intr)); - dg->device->save_item(NAME(dg->bpos)); - dg->device->save_item(NAME(dg->apos)); - dg->device->save_item(NAME(dg->mode)); - dg->device->save_item(NAME(dg->cur_segment)); - dg->device->save_item(NAME(dg->cur_repeat)); - dg->device->save_item(NAME(dg->segments)); - dg->device->save_item(NAME(dg->repeats)); - dg->device->save_item(NAME(dg->prev_pitch)); - dg->device->save_item(NAME(dg->pitch)); - dg->device->save_item(NAME(dg->pitch_pos)); - dg->device->save_item(NAME(dg->stop_after)); - dg->device->save_item(NAME(dg->cur_dac)); - dg->device->save_item(NAME(dg->cur_bits)); - dg->device->save_item(NAME(dg->zero_count)); - dg->device->save_item(NAME(dg->dac_index)); - dg->device->save_item(NAME(dg->dac)); + save_item(NAME(m_data)); + save_item(NAME(m_cs)); + save_item(NAME(m_cms)); + save_item(NAME(m_wr)); + save_item(NAME(m_intr)); + save_item(NAME(m_bpos)); + save_item(NAME(m_apos)); + save_item(NAME(m_mode)); + save_item(NAME(m_cur_segment)); + save_item(NAME(m_cur_repeat)); + save_item(NAME(m_segments)); + save_item(NAME(m_repeats)); + save_item(NAME(m_prev_pitch)); + save_item(NAME(m_pitch)); + save_item(NAME(m_pitch_pos)); + save_item(NAME(m_stop_after)); + save_item(NAME(m_cur_dac)); + save_item(NAME(m_cur_bits)); + save_item(NAME(m_zero_count)); + save_item(NAME(m_dac_index)); + save_item(NAME(m_dac)); } -static DEVICE_START(digitalker) -{ - digitalker *dg = get_safe_token(device); - dg->device = device; - dg->rom = device->machine().root_device().memregion(device->tag())->base(); - dg->stream = device->machine().sound().stream_alloc(*device, 0, 1, device->clock()/4, dg, digitalker_update); - dg->dac_index = 128; - dg->data = 0xff; - dg->cs = dg->cms = dg->wr = 1; - dg->bpos = 0xffff; - digitalker_set_intr(dg, 1); - - digitalker_register_for_save(dg); -} - -void digitalker_0_cs_w(device_t *device, int line) -{ - digitalker *dg = get_safe_token(device); - digitalker_cs_w(dg, line); -} -void digitalker_0_cms_w(device_t *device, int line) -{ - digitalker *dg = get_safe_token(device); - digitalker_cms_w(dg, line); -} +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- -void digitalker_0_wr_w(device_t *device, int line) +void digitalker_device::device_start() { - digitalker *dg = get_safe_token(device); - digitalker_wr_w(dg, line); + m_rom = machine().root_device().memregion(tag())->base(); + m_stream = stream_alloc(0, 1, clock()/4); + m_dac_index = 128; + m_data = 0xff; + m_cs = m_cms = m_wr = 1; + m_bpos = 0xffff; + digitalker_set_intr(1); + + digitalker_register_for_save(); } -int digitalker_0_intr_r(device_t *device) +void digitalker_device::digitalker_0_cs_w(int line) { - digitalker *dg = get_safe_token(device); - return digitalker_intr_r(dg); + digitalker_cs_w(line); } -WRITE8_DEVICE_HANDLER( digitalker_data_w ) +void digitalker_device::digitalker_0_cms_w(int line) { - digitalker *dg = get_safe_token(device); - dg->data = data; + digitalker_cms_w(line); } - -const device_type DIGITALKER = &device_creator<digitalker_device>; - -digitalker_device::digitalker_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) - : device_t(mconfig, DIGITALKER, "Digitalker", tag, owner, clock), - device_sound_interface(mconfig, *this) +void digitalker_device::digitalker_0_wr_w(int line) { - m_token = global_alloc_clear(digitalker); + digitalker_wr_w(line); } -//------------------------------------------------- -// device_config_complete - perform any -// operations now that the configuration is -// complete -//------------------------------------------------- - -void digitalker_device::device_config_complete() +int digitalker_device::digitalker_0_intr_r() { + return digitalker_intr_r(); } -//------------------------------------------------- -// device_start - device-specific startup -//------------------------------------------------- - -void digitalker_device::device_start() +WRITE8_MEMBER( digitalker_device::digitalker_data_w ) { - DEVICE_START_NAME( digitalker )(this); + m_data = data; } -//------------------------------------------------- -// sound_stream_update - handle a stream update -//------------------------------------------------- - -void digitalker_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) -{ - // should never get here - fatalerror("sound_stream_update called; not applicable to legacy sound devices\n"); -} diff --git a/src/emu/sound/digitalk.h b/src/emu/sound/digitalk.h index b8373355cb0..d293fabb9a9 100644 --- a/src/emu/sound/digitalk.h +++ b/src/emu/sound/digitalk.h @@ -1,33 +1,96 @@ #ifndef _DIGITALKER_H_ #define _DIGITALKER_H_ -#include "devlegcy.h" -void digitalker_0_cs_w(device_t *device, int line); -void digitalker_0_cms_w(device_t *device, int line); -void digitalker_0_wr_w(device_t *device, int line); -int digitalker_0_intr_r(device_t *device); -DECLARE_WRITE8_DEVICE_HANDLER(digitalker_data_w); +//************************************************************************** +// INTERFACE CONFIGURATION MACROS +//************************************************************************** + +#define MCFG_DIGITALKER_ADD(_tag, _clock) \ + MCFG_DEVICE_ADD(_tag, DIGITALKER, _clock) +#define MCFG_DIGITALKER_REPLACE(_tag, _clock) \ + MCFG_DEVICE_REPLACE(_tag, DIGITALKER, _clock) + + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// ======================> digitalker_device class digitalker_device : public device_t, - public device_sound_interface + public device_sound_interface { public: digitalker_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - ~digitalker_device() { global_free(m_token); } + ~digitalker_device() { } + + void digitalker_0_cs_w(int line); + void digitalker_0_cms_w(int line); + void digitalker_0_wr_w(int line); + int digitalker_0_intr_r(); - // access to legacy token - void *token() const { assert(m_token != NULL); return m_token; } protected: // device-level overrides - virtual void device_config_complete(); virtual void device_start(); // sound stream update overrides virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples); + +public: + DECLARE_WRITE8_MEMBER(digitalker_data_w); + private: - // internal state - void *m_token; + void digitalker_write(UINT8 *adr, UINT8 vol, INT8 dac); + UINT8 digitalker_pitch_next(UINT8 val, UINT8 prev, int step); + void digitalker_set_intr(UINT8 intr); + void digitalker_start_command(UINT8 cmd); + void digitalker_step_mode_0(); + void digitalker_step_mode_1(); + void digitalker_step_mode_2(); + void digitalker_step_mode_3(); + void digitalker_step(); + void digitalker_cs_w(int line); + void digitalker_cms_w(int line); + void digitalker_wr_w(int line); + int digitalker_intr_r(); + void digitalker_register_for_save(); + +private: + const UINT8 *m_rom; + sound_stream *m_stream; + + // Port/lines state + UINT8 m_data; + UINT8 m_cs; + UINT8 m_cms; + UINT8 m_wr; + UINT8 m_intr; + + // Current decoding state + UINT16 m_bpos; + UINT16 m_apos; + + UINT8 m_mode; + UINT8 m_cur_segment; + UINT8 m_cur_repeat; + UINT8 m_segments; + UINT8 m_repeats; + + UINT8 m_prev_pitch; + UINT8 m_pitch; + UINT8 m_pitch_pos; + + UINT8 m_stop_after; + UINT8 m_cur_dac; + UINT8 m_cur_bits; + + // Zero-range size + UINT32 m_zero_count; // 0 for done + + // Waveform and current index in it + UINT8 m_dac_index; // 128 for done + INT16 m_dac[128]; }; extern const device_type DIGITALKER; diff --git a/src/emu/sound/n63701x.c b/src/emu/sound/n63701x.c index 276c5907282..3b4acf8dc61 100644 --- a/src/emu/sound/n63701x.c +++ b/src/emu/sound/n63701x.c @@ -17,25 +17,6 @@ silence compression: '00 nn' must be replaced by nn+1 times '80'. #include "n63701x.h" -struct voice -{ - int select; - int playing; - int base_addr; - int position; - int volume; - int silence_counter; -}; - - -struct namco_63701x -{ - voice voices[2]; - sound_stream * stream; /* channel assigned by the mixer */ - UINT8 *rom; /* pointer to sample ROM */ -}; - - /* volume control has three resistors: 22000, 10000 and 3300 Ohm. 22000 is always enabled, the other two can be turned off. Since 0x00 and 0xff samples have special meaning, the available range is @@ -43,29 +24,47 @@ struct namco_63701x inside 16 bits without overflowing. */ static const int vol_table[4] = { 26, 84, 200, 258 }; + +// device type definition +const device_type NAMCO_63701X = &device_creator<namco_63701x_device>; -INLINE namco_63701x *get_safe_token(device_t *device) +namco_63701x_device::namco_63701x_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : device_t(mconfig, NAMCO_63701X, "Namco 63701X", tag, owner, clock), + device_sound_interface(mconfig, *this), + m_stream(NULL), + m_rom(NULL) { - assert(device != NULL); - assert(device->type() == NAMCO_63701X); - return (namco_63701x *)downcast<namco_63701x_device *>(device)->token(); } -static STREAM_UPDATE( namco_63701x_update ) +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void namco_63701x_device::device_start() +{ + m_rom = *region(); + m_stream = stream_alloc(0, 2, clock()/1000); +} + + +//------------------------------------------------- +// sound_stream_update - handle a stream update +//------------------------------------------------- + +void namco_63701x_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) { - namco_63701x *chip = (namco_63701x *)param; int ch; for (ch = 0;ch < 2;ch++) { stream_sample_t *buf = outputs[ch]; - voice *v = &chip->voices[ch]; + voice_63701x *v = &m_voices[ch]; if (v->playing) { - UINT8 *base = chip->rom + v->base_addr; + UINT8 *base = m_rom + v->base_addr; int pos = v->position; int vol = vol_table[v->volume]; int p; @@ -107,24 +106,13 @@ static STREAM_UPDATE( namco_63701x_update ) } -static DEVICE_START( namco_63701x ) -{ - namco_63701x *chip = get_safe_token(device); - - chip->rom = *device->region(); - - chip->stream = device->machine().sound().stream_alloc(*device, 0, 2, device->clock()/1000, chip, namco_63701x_update); -} - - -WRITE8_DEVICE_HANDLER( namco_63701x_w ) +WRITE8_MEMBER( namco_63701x_device::namco_63701x_w ) { - namco_63701x *chip = get_safe_token(device); int ch = offset / 2; if (offset & 1) - chip->voices[ch].select = data; + m_voices[ch].select = data; else { /* @@ -133,60 +121,23 @@ WRITE8_DEVICE_HANDLER( namco_63701x_w ) after the continue counter reaches 0. Either we shouldn't stop the sample, or genpeitd is returning to the title screen too soon. */ - if (chip->voices[ch].select & 0x1f) + if (m_voices[ch].select & 0x1f) { int rom_offs; /* update the streams */ - chip->stream->update(); + m_stream->update(); - chip->voices[ch].playing = 1; - chip->voices[ch].base_addr = 0x10000 * ((chip->voices[ch].select & 0xe0) >> 5); - rom_offs = chip->voices[ch].base_addr + 2 * ((chip->voices[ch].select & 0x1f) - 1); - chip->voices[ch].position = (chip->rom[rom_offs] << 8) + chip->rom[rom_offs+1]; + m_voices[ch].playing = 1; + m_voices[ch].base_addr = 0x10000 * ((m_voices[ch].select & 0xe0) >> 5); + rom_offs = m_voices[ch].base_addr + 2 * ((m_voices[ch].select & 0x1f) - 1); + m_voices[ch].position = (m_rom[rom_offs] << 8) + m_rom[rom_offs+1]; /* bits 6-7 = volume */ - chip->voices[ch].volume = data >> 6; + m_voices[ch].volume = data >> 6; /* bits 0-5 = counter to indicate new sample start? we don't use them */ - chip->voices[ch].silence_counter = 0; + m_voices[ch].silence_counter = 0; } } } -const device_type NAMCO_63701X = &device_creator<namco_63701x_device>; - -namco_63701x_device::namco_63701x_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) - : device_t(mconfig, NAMCO_63701X, "Namco 63701X", tag, owner, clock), - device_sound_interface(mconfig, *this) -{ - m_token = global_alloc_clear(namco_63701x); -} - -//------------------------------------------------- -// device_config_complete - perform any -// operations now that the configuration is -// complete -//------------------------------------------------- - -void namco_63701x_device::device_config_complete() -{ -} - -//------------------------------------------------- -// device_start - device-specific startup -//------------------------------------------------- - -void namco_63701x_device::device_start() -{ - DEVICE_START_NAME( namco_63701x )(this); -} - -//------------------------------------------------- -// sound_stream_update - handle a stream update -//------------------------------------------------- - -void namco_63701x_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) -{ - // should never get here - fatalerror("sound_stream_update called; not applicable to legacy sound devices\n"); -} diff --git a/src/emu/sound/n63701x.h b/src/emu/sound/n63701x.h index 87bda1672f4..447ea946186 100644 --- a/src/emu/sound/n63701x.h +++ b/src/emu/sound/n63701x.h @@ -3,29 +3,54 @@ #ifndef __N63701X_H__ #define __N63701X_H__ -#include "devlegcy.h" +//************************************************************************** +// INTERFACE CONFIGURATION MACROS +//************************************************************************** -DECLARE_WRITE8_DEVICE_HANDLER( namco_63701x_w ); +#define MCFG_NAMCO_63701X_ADD(_tag, _clock) \ + MCFG_DEVICE_ADD(_tag, NAMCO_63701X, _clock) +#define MCFG_NAMCO_63701X_REPLACE(_tag, _clock) \ + MCFG_DEVICE_REPLACE(_tag, NAMCO_63701X, _clock) + + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +struct voice_63701x +{ + int select; + int playing; + int base_addr; + int position; + int volume; + int silence_counter; +}; + + +// ======================> namco_63701x_device class namco_63701x_device : public device_t, - public device_sound_interface + public device_sound_interface { public: namco_63701x_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - ~namco_63701x_device() { global_free(m_token); } + ~namco_63701x_device() { } - // access to legacy token - void *token() const { assert(m_token != NULL); return m_token; } protected: // device-level overrides - virtual void device_config_complete(); virtual void device_start(); // sound stream update overrides virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples); + +public: + DECLARE_WRITE8_MEMBER(namco_63701x_w); + private: - // internal state - void *m_token; + voice_63701x m_voices[2]; + sound_stream *m_stream; /* channel assigned by the mixer */ + UINT8 *m_rom; /* pointer to sample ROM */ }; extern const device_type NAMCO_63701X; diff --git a/src/emu/sound/tiaintf.c b/src/emu/sound/tiaintf.c index a95d173c643..2b1fe9963a2 100644 --- a/src/emu/sound/tiaintf.c +++ b/src/emu/sound/tiaintf.c @@ -2,68 +2,26 @@ #include "tiaintf.h" #include "tiasound.h" -struct tia_state -{ - sound_stream * channel; - void *chip; -}; - -INLINE tia_state *get_safe_token(device_t *device) -{ - assert(device != NULL); - assert(device->type() == TIA); - return (tia_state *)downcast<tia_device *>(device)->token(); -} - - -static STREAM_UPDATE( tia_update ) -{ - tia_state *info = (tia_state *)param; - tia_process(info->chip, outputs[0], samples); -} - - -static DEVICE_START( tia ) -{ - tia_state *info = get_safe_token(device); - - info->channel = device->machine().sound().stream_alloc(*device, 0, 1, device->clock(), info, tia_update); +// device type definition +const device_type TIA = &device_creator<tia_device>; - info->chip = tia_sound_init(device->clock(), device->clock(), 16); - assert_always(info->chip != NULL, "Error creating TIA chip"); -} -static DEVICE_STOP( tia ) -{ - tia_state *info = get_safe_token(device); - tia_sound_free(info->chip); -} +//************************************************************************** +// LIVE DEVICE +//************************************************************************** -WRITE8_DEVICE_HANDLER( tia_sound_w ) -{ - tia_state *info = get_safe_token(device); - info->channel->update(); - tia_write(info->chip, offset, data); -} - -const device_type TIA = &device_creator<tia_device>; +//------------------------------------------------- +// tia_device - constructor +//------------------------------------------------- tia_device::tia_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : device_t(mconfig, TIA, "TIA", tag, owner, clock), - device_sound_interface(mconfig, *this) + device_sound_interface(mconfig, *this), + m_channel(NULL), + m_chip(NULL) { - m_token = global_alloc_clear(tia_state); } -//------------------------------------------------- -// device_config_complete - perform any -// operations now that the configuration is -// complete -//------------------------------------------------- - -void tia_device::device_config_complete() -{ -} //------------------------------------------------- // device_start - device-specific startup @@ -71,24 +29,34 @@ void tia_device::device_config_complete() void tia_device::device_start() { - DEVICE_START_NAME( tia )(this); + m_channel = stream_alloc(0, 1, clock()); + m_chip = tia_sound_init(clock(), clock(), 16); + assert_always(m_chip != NULL, "Error creating TIA chip"); } + //------------------------------------------------- // device_stop - device-specific stop //------------------------------------------------- void tia_device::device_stop() { - DEVICE_STOP_NAME( tia )(this); + tia_sound_free(m_chip); } + //------------------------------------------------- // sound_stream_update - handle a stream update //------------------------------------------------- void tia_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) { - // should never get here - fatalerror("sound_stream_update called; not applicable to legacy sound devices\n"); + tia_process(m_chip, outputs[0], samples); +} + + +WRITE8_MEMBER( tia_device::tia_sound_w ) +{ + m_channel->update(); + tia_write(m_chip, offset, data); } diff --git a/src/emu/sound/tiaintf.h b/src/emu/sound/tiaintf.h index 567ec6fa778..89ef8abe527 100644 --- a/src/emu/sound/tiaintf.h +++ b/src/emu/sound/tiaintf.h @@ -3,30 +3,43 @@ #ifndef __TIAINTF_H__ #define __TIAINTF_H__ -#include "devlegcy.h" +//************************************************************************** +// INTERFACE CONFIGURATION MACROS +//************************************************************************** -DECLARE_WRITE8_DEVICE_HANDLER( tia_sound_w ); +#define MCFG_SOUND_TIA_ADD(_tag, _clock) \ + MCFG_DEVICE_ADD(_tag, TIA, _clock) +#define MCFG_SOUND_TIA_REPLACE(_tag, _clock) \ + MCFG_DEVICE_REPLACE(_tag, TIA, _clock) + + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// ======================> tia_device class tia_device : public device_t, - public device_sound_interface + public device_sound_interface { public: tia_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - ~tia_device() { global_free(m_token); } + ~tia_device() { } - // access to legacy token - void *token() const { assert(m_token != NULL); return m_token; } protected: // device-level overrides - virtual void device_config_complete(); virtual void device_start(); virtual void device_stop(); // sound stream update overrides virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples); + +public: + DECLARE_WRITE8_MEMBER( tia_sound_w ); + private: - // internal state - void *m_token; + sound_stream *m_channel; + void *m_chip; }; extern const device_type TIA; diff --git a/src/emu/sound/x1_010.c b/src/emu/sound/x1_010.c index 29d6b27d26f..6d150da2b56 100644 --- a/src/emu/sound/x1_010.c +++ b/src/emu/sound/x1_010.c @@ -51,7 +51,6 @@ Registers: #include "emu.h" #include "x1_010.h" - #define VERBOSE_SOUND 0 #define VERBOSE_REGISTER_WRITE 0 #define VERBOSE_REGISTER_READ 0 @@ -60,11 +59,9 @@ Registers: #define LOG_REGISTER_WRITE(x) do { if (VERBOSE_REGISTER_WRITE) logerror x; } while (0) #define LOG_REGISTER_READ(x) do { if (VERBOSE_REGISTER_READ) logerror x; } while (0) -#define SETA_NUM_CHANNELS 16 - #define FREQ_BASE_BITS 8 // Frequency fixed decimal shift bits #define ENV_BASE_BITS 16 // wave form envelope fixed decimal shift bits -#define VOL_BASE (2*32*256/30) // Volume base +#define VOL_BASE (2*32*256/30) // Volume base /* this structure defines the parameters for a channel */ struct X1_010_CHANNEL { @@ -77,54 +74,82 @@ struct X1_010_CHANNEL { unsigned char reserve[2]; }; -struct x1_010_state -{ - /* Variables only used here */ - int rate; // Output sampling rate (Hz) - sound_stream * stream; // Stream handle - int address; // address eor data - const UINT8 *region; // region name - int sound_enable; // sound output enable/disable - UINT8 reg[0x2000]; // X1-010 Register & wave form area - UINT8 HI_WORD_BUF[0x2000]; // X1-010 16bit access ram check avoidance work - UINT32 smp_offset[SETA_NUM_CHANNELS]; - UINT32 env_offset[SETA_NUM_CHANNELS]; - - UINT32 base_clock; -}; - /* mixer tables and internal buffers */ //static short *mixer_buffer = NULL; -INLINE x1_010_state *get_safe_token(device_t *device) + +// device type definition +const device_type X1_010 = &device_creator<x1_010_device>; + + +//************************************************************************** +// LIVE DEVICE +//************************************************************************** + +//------------------------------------------------- +// x1_010_device - constructor +//------------------------------------------------- + +x1_010_device::x1_010_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : device_t(mconfig, X1_010, "X1-010", tag, owner, clock), + device_sound_interface(mconfig, *this), + m_rate(0), + m_stream(NULL), + m_address(0), + m_region(NULL), + m_sound_enable(0), + m_base_clock(0) { - assert(device != NULL); - assert(device->type() == X1_010); - return (x1_010_state *)downcast<x1_010_device *>(device)->token(); } -/*-------------------------------------------------------------- - generate sound to the mix buffer ---------------------------------------------------------------*/ -static STREAM_UPDATE( seta_update ) +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void x1_010_device::device_start() +{ + int i; + const x1_010_interface *intf = (const x1_010_interface *)static_config(); + + m_region = *region(); + m_base_clock = clock(); + m_rate = clock() / 1024; + m_address = intf->adr; + + for( i = 0; i < SETA_NUM_CHANNELS; i++ ) { + m_smp_offset[i] = 0; + m_env_offset[i] = 0; + } + /* Print some more debug info */ + LOG_SOUND(("masterclock = %d rate = %d\n", clock(), m_rate )); + + /* get stream channels */ + m_stream = stream_alloc(0, 2, m_rate); +} + + +//------------------------------------------------- +// sound_stream_update - handle a stream update +//------------------------------------------------- + +void x1_010_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) { - x1_010_state *info = (x1_010_state *)param; X1_010_CHANNEL *reg; int ch, i, volL, volR, freq; register INT8 *start, *end, data; register UINT8 *env; register UINT32 smp_offs, smp_step, env_offs, env_step, delta; - const UINT8 *snd1 = info->region; + const UINT8 *snd1 = m_region; // mixer buffer zero clear memset( outputs[0], 0, samples*sizeof(*outputs[0]) ); memset( outputs[1], 0, samples*sizeof(*outputs[1]) ); -// if( info->sound_enable == 0 ) return; +// if( m_sound_enable == 0 ) return; for( ch = 0; ch < SETA_NUM_CHANNELS; ch++ ) { - reg = (X1_010_CHANNEL *)&(info->reg[ch*sizeof(X1_010_CHANNEL)]); + reg = (X1_010_CHANNEL *)&(m_reg[ch*sizeof(X1_010_CHANNEL)]); if( (reg->status&1) != 0 ) { // Key On stream_sample_t *bufL = outputs[0]; stream_sample_t *bufR = outputs[1]; @@ -133,12 +158,12 @@ static STREAM_UPDATE( seta_update ) end = (INT8 *)((0x100-reg->end)*0x1000+snd1); volL = ((reg->volume>>4)&0xf)*VOL_BASE; volR = ((reg->volume>>0)&0xf)*VOL_BASE; - smp_offs = info->smp_offset[ch]; + smp_offs = m_smp_offset[ch]; freq = reg->frequency&0x1f; // Meta Fox does not write the frequency register. Ever if( freq == 0 ) freq = 4; - smp_step = (UINT32)((float)info->base_clock/8192.0 - *freq*(1<<FREQ_BASE_BITS)/(float)info->rate); + smp_step = (UINT32)((float)m_base_clock/8192.0 + *freq*(1<<FREQ_BASE_BITS)/(float)m_rate); if( smp_offs == 0 ) { LOG_SOUND(( "Play sample %p - %p, channel %X volume %d:%d freq %X step %X offset %X\n", start, end, ch, volL, volR, freq, smp_step, smp_offs )); @@ -155,16 +180,16 @@ static STREAM_UPDATE( seta_update ) *bufR++ += (data*volR/256); smp_offs += smp_step; } - info->smp_offset[ch] = smp_offs; + m_smp_offset[ch] = smp_offs; } else { // Wave form - start = (INT8 *)&(info->reg[reg->volume*128+0x1000]); - smp_offs = info->smp_offset[ch]; + start = (INT8 *)&(m_reg[reg->volume*128+0x1000]); + smp_offs = m_smp_offset[ch]; freq = (reg->pitch_hi<<8)+reg->frequency; - smp_step = (UINT32)((float)info->base_clock/128.0/1024.0/4.0*freq*(1<<FREQ_BASE_BITS)/(float)info->rate); + smp_step = (UINT32)((float)m_base_clock/128.0/1024.0/4.0*freq*(1<<FREQ_BASE_BITS)/(float)m_rate); - env = (UINT8 *)&(info->reg[reg->end*128]); - env_offs = info->env_offset[ch]; - env_step = (UINT32)((float)info->base_clock/128.0/1024.0/4.0*reg->start*(1<<ENV_BASE_BITS)/(float)info->rate); + env = (UINT8 *)&(m_reg[reg->end*128]); + env_offs = m_env_offset[ch]; + env_step = (UINT32)((float)m_base_clock/128.0/1024.0/4.0*reg->start*(1<<ENV_BASE_BITS)/(float)m_rate); /* Print some more debug info */ if( smp_offs == 0 ) { LOG_SOUND(( "Play waveform %X, channel %X volume %X freq %4X step %X offset %X\n", @@ -187,136 +212,63 @@ static STREAM_UPDATE( seta_update ) smp_offs += smp_step; env_offs += env_step; } - info->smp_offset[ch] = smp_offs; - info->env_offset[ch] = env_offs; + m_smp_offset[ch] = smp_offs; + m_env_offset[ch] = env_offs; } } } } - -static DEVICE_START( x1_010 ) +void x1_010_device::seta_sound_enable_w(int data) { - int i; - const x1_010_interface *intf = (const x1_010_interface *)device->static_config(); - x1_010_state *info = get_safe_token(device); - - info->region = *device->region(); - info->base_clock = device->clock(); - info->rate = device->clock() / 1024; - info->address = intf->adr; - - for( i = 0; i < SETA_NUM_CHANNELS; i++ ) { - info->smp_offset[i] = 0; - info->env_offset[i] = 0; - } - /* Print some more debug info */ - LOG_SOUND(("masterclock = %d rate = %d\n", device->clock(), info->rate )); - - /* get stream channels */ - info->stream = device->machine().sound().stream_alloc(*device,0,2,info->rate,info,seta_update); + m_sound_enable = data; } -void seta_sound_enable_w(device_t *device, int data) +// +// Use these for 8 bit CPUs +// +READ8_MEMBER( x1_010_device::seta_sound_r ) { - x1_010_state *info = get_safe_token(device); - info->sound_enable = data; + offset ^= m_address; + return m_reg[offset]; } - -/* Use these for 8 bit CPUs */ - - -READ8_DEVICE_HANDLER( seta_sound_r ) +WRITE8_MEMBER( x1_010_device::seta_sound_w ) { - x1_010_state *info = get_safe_token(device); - offset ^= info->address; - return info->reg[offset]; -} - - - - -WRITE8_DEVICE_HANDLER( seta_sound_w ) -{ - x1_010_state *info = get_safe_token(device); int channel, reg; - offset ^= info->address; + offset ^= m_address; channel = offset/sizeof(X1_010_CHANNEL); reg = offset%sizeof(X1_010_CHANNEL); if( channel < SETA_NUM_CHANNELS && reg == 0 - && (info->reg[offset]&1) == 0 && (data&1) != 0 ) { - info->smp_offset[channel] = 0; - info->env_offset[channel] = 0; + && (m_reg[offset]&1) == 0 && (data&1) != 0 ) { + m_smp_offset[channel] = 0; + m_env_offset[channel] = 0; } - LOG_REGISTER_WRITE(("%s: offset %6X : data %2X\n", device->machine().describe_context(), offset, data )); - info->reg[offset] = data; + LOG_REGISTER_WRITE(("%s: offset %6X : data %2X\n", machine().describe_context(), offset, data )); + m_reg[offset] = data; } - - -/* Use these for 16 bit CPUs */ - -READ16_DEVICE_HANDLER( seta_sound_word_r ) +// +// Use these for 16 bit CPUs +// +READ16_MEMBER( x1_010_device::seta_sound_word_r ) { - x1_010_state *info = get_safe_token(device); UINT16 ret; - - ret = info->HI_WORD_BUF[offset]<<8; - ret += (seta_sound_r( device, space, offset )&0xff); - LOG_REGISTER_READ(( "%s: Read X1-010 Offset:%04X Data:%04X\n", device->machine().describe_context(), offset, ret )); + ret = m_HI_WORD_BUF[offset]<<8; + ret += (seta_sound_r( space, offset )&0xff); + LOG_REGISTER_READ(( "%s: Read X1-010 Offset:%04X Data:%04X\n", machine().describe_context(), offset, ret )); return ret; } -WRITE16_DEVICE_HANDLER( seta_sound_word_w ) -{ - x1_010_state *info = get_safe_token(device); - info->HI_WORD_BUF[offset] = (data>>8)&0xff; - seta_sound_w( device, space, offset, data&0xff ); - LOG_REGISTER_WRITE(( "%s: Write X1-010 Offset:%04X Data:%04X\n", device->machine().describe_context(), offset, data )); -} - - -const device_type X1_010 = &device_creator<x1_010_device>; - -x1_010_device::x1_010_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) - : device_t(mconfig, X1_010, "X1-010", tag, owner, clock), - device_sound_interface(mconfig, *this) -{ - m_token = global_alloc_clear(x1_010_state); -} - -//------------------------------------------------- -// device_config_complete - perform any -// operations now that the configuration is -// complete -//------------------------------------------------- - -void x1_010_device::device_config_complete() -{ -} - -//------------------------------------------------- -// device_start - device-specific startup -//------------------------------------------------- - -void x1_010_device::device_start() -{ - DEVICE_START_NAME( x1_010 )(this); -} - -//------------------------------------------------- -// sound_stream_update - handle a stream update -//------------------------------------------------- - -void x1_010_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) +WRITE16_MEMBER( x1_010_device::seta_sound_word_w ) { - // should never get here - fatalerror("sound_stream_update called; not applicable to legacy sound devices\n"); + m_HI_WORD_BUF[offset] = (data>>8)&0xff; + seta_sound_w( space, offset, data&0xff ); + LOG_REGISTER_WRITE(( "%s: Write X1-010 Offset:%04X Data:%04X\n", machine().describe_context(), offset, data )); } diff --git a/src/emu/sound/x1_010.h b/src/emu/sound/x1_010.h index 0ebd53c318c..e33cdfd3e49 100644 --- a/src/emu/sound/x1_010.h +++ b/src/emu/sound/x1_010.h @@ -3,42 +3,66 @@ #ifndef __X1_010_H__ #define __X1_010_H__ -#include "devlegcy.h" +#define SETA_NUM_CHANNELS 16 +//************************************************************************** +// INTERFACE CONFIGURATION MACROS +//************************************************************************** + +#define MCFG_X1_010_ADD(_tag, _clock) \ + MCFG_DEVICE_ADD(_tag, X1_010, _clock) +#define MCFG_X1_010_REPLACE(_tag, _clock) \ + MCFG_DEVICE_REPLACE(_tag, X1_010, _clock) + + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + struct x1_010_interface { int adr; /* address */ }; -DECLARE_READ8_DEVICE_HANDLER ( seta_sound_r ); -DECLARE_WRITE8_DEVICE_HANDLER( seta_sound_w ); - -DECLARE_READ16_DEVICE_HANDLER ( seta_sound_word_r ); -DECLARE_WRITE16_DEVICE_HANDLER( seta_sound_word_w ); - -void seta_sound_enable_w(device_t *device, int data); +// ======================> x1_010_device class x1_010_device : public device_t, - public device_sound_interface + public device_sound_interface { public: x1_010_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - ~x1_010_device() { global_free(m_token); } + ~x1_010_device() { } + + void seta_sound_enable_w(int data); - // access to legacy token - void *token() const { assert(m_token != NULL); return m_token; } protected: // device-level overrides - virtual void device_config_complete(); virtual void device_start(); // sound stream update overrides virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples); + +public: + DECLARE_READ8_MEMBER( seta_sound_r ); + DECLARE_WRITE8_MEMBER( seta_sound_w ); + + DECLARE_READ16_MEMBER( seta_sound_word_r ); + DECLARE_WRITE16_MEMBER( seta_sound_word_w ); + private: - // internal state - void *m_token; + int m_rate; // Output sampling rate (Hz) + sound_stream *m_stream; // Stream handle + int m_address; // address eor data + const UINT8 *m_region; // region name + int m_sound_enable; // sound output enable/disable + UINT8 m_reg[0x2000]; // X1-010 Register & wave form area + UINT8 m_HI_WORD_BUF[0x2000]; // X1-010 16bit access ram check avoidance work + UINT32 m_smp_offset[SETA_NUM_CHANNELS]; + UINT32 m_env_offset[SETA_NUM_CHANNELS]; + + UINT32 m_base_clock; }; extern const device_type X1_010; diff --git a/src/mame/drivers/champbwl.c b/src/mame/drivers/champbwl.c index b45e1febfe1..f186bcd30ff 100644 --- a/src/mame/drivers/champbwl.c +++ b/src/mame/drivers/champbwl.c @@ -210,7 +210,7 @@ static ADDRESS_MAP_START( champbwl_map, AS_PROGRAM, 8, champbwl_state ) AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram") AM_RANGE(0xa000, 0xafff) AM_RAM AM_DEVREADWRITE_LEGACY("spritegen", spritecodelow_r8, spritecodelow_w8) AM_RANGE(0xb000, 0xbfff) AM_RAM AM_DEVREADWRITE_LEGACY("spritegen", spritecodehigh_r8, spritecodehigh_w8) - AM_RANGE(0xc000, 0xdfff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_r, seta_sound_w) + AM_RANGE(0xc000, 0xdfff) AM_DEVREADWRITE("x1snd", x1_010_device, seta_sound_r, seta_sound_w) AM_RANGE(0xe000, 0xe2ff) AM_RAM AM_DEVREADWRITE_LEGACY("spritegen", spriteylow_r8, spriteylow_w8) AM_RANGE(0xe300, 0xe303) AM_MIRROR(0xfc) AM_DEVWRITE_LEGACY("spritegen", spritectrl_w8) /* control registers (0x80 mirror used by Arkanoid 2) */ AM_RANGE(0xe800, 0xe800) AM_DEVWRITE_LEGACY("spritegen", spritebgflag_w8) /* enable / disable background transparency */ @@ -249,7 +249,7 @@ static ADDRESS_MAP_START( doraemon, AS_PROGRAM, 8, champbwl_state ) AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram") AM_RANGE(0xa000, 0xafff) AM_RAM AM_DEVREADWRITE_LEGACY("spritegen", spritecodelow_r8, spritecodelow_w8) AM_RANGE(0xb000, 0xbfff) AM_RAM AM_DEVREADWRITE_LEGACY("spritegen", spritecodehigh_r8, spritecodehigh_w8) - AM_RANGE(0xc000, 0xc07f) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_r,seta_sound_w) // Sound + AM_RANGE(0xc000, 0xc07f) AM_DEVREADWRITE("x1snd", x1_010_device, seta_sound_r, seta_sound_w) // Sound AM_RANGE(0xe000, 0xe2ff) AM_RAM AM_DEVREADWRITE_LEGACY("spritegen", spriteylow_r8, spriteylow_w8) AM_RANGE(0xe300, 0xe303) AM_DEVWRITE_LEGACY("spritegen", spritectrl_w8) AM_RANGE(0xe800, 0xe800) AM_DEVWRITE_LEGACY("spritegen", spritebgflag_w8) /* enable / disable background transparency */ @@ -505,7 +505,7 @@ static MACHINE_CONFIG_START( champbwl, champbwl_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("x1snd", X1_010, 16000000) + MCFG_X1_010_ADD("x1snd", 16000000) MCFG_SOUND_CONFIG(champbwl_sound_intf) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -567,7 +567,7 @@ static MACHINE_CONFIG_START( doraemon, champbwl_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_SOUND_ADD("x1snd", X1_010, XTAL_14_31818MHz) + MCFG_X1_010_ADD("x1snd", XTAL_14_31818MHz) MCFG_SOUND_CONFIG(champbwl_sound_intf) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END diff --git a/src/mame/drivers/galaxian.c b/src/mame/drivers/galaxian.c index e21935e9218..e59c4034dd8 100644 --- a/src/mame/drivers/galaxian.c +++ b/src/mame/drivers/galaxian.c @@ -1031,16 +1031,16 @@ WRITE8_MEMBER(galaxian_state::scorpion_protection_w) READ8_MEMBER(galaxian_state::scorpion_digitalker_intr_r) { - device_t *digitalker = machine().device("digitalker"); - return digitalker_0_intr_r(digitalker); + digitalker_device *digitalker = machine().device<digitalker_device>("digitalker"); + return digitalker->digitalker_0_intr_r(); } WRITE8_MEMBER(galaxian_state::scorpion_digitalker_control_w) { - device_t *device = machine().device("digitalker"); - digitalker_0_cs_w(device, data & 1 ? ASSERT_LINE : CLEAR_LINE); - digitalker_0_cms_w(device, data & 2 ? ASSERT_LINE : CLEAR_LINE); - digitalker_0_wr_w(device, data & 4 ? ASSERT_LINE : CLEAR_LINE); + digitalker_device *device = machine().device<digitalker_device>("digitalker"); + device->digitalker_0_cs_w(data & 1 ? ASSERT_LINE : CLEAR_LINE); + device->digitalker_0_cms_w(data & 2 ? ASSERT_LINE : CLEAR_LINE); + device->digitalker_0_wr_w(data & 4 ? ASSERT_LINE : CLEAR_LINE); } static I8255A_INTERFACE( scorpion_ppi8255_1_intf ) @@ -2004,7 +2004,7 @@ static const ay8910_interface scorpion_ay8910_interface = AY8910_DEFAULT_LOADS, DEVCB_NULL, DEVCB_NULL, - DEVCB_DEVICE_HANDLER("digitalker", digitalker_data_w), + DEVCB_DEVICE_MEMBER("digitalker", digitalker_device, digitalker_data_w), DEVCB_DRIVER_MEMBER(galaxian_state,scorpion_digitalker_control_w) }; @@ -2416,7 +2416,7 @@ static MACHINE_CONFIG_DERIVED( scorpion, theend ) MCFG_SOUND_CONFIG(scorpion_ay8910_interface) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) - MCFG_SOUND_ADD("digitalker", DIGITALKER, 4000000) + MCFG_DIGITALKER_ADD("digitalker", 4000000) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.16) MACHINE_CONFIG_END diff --git a/src/mame/drivers/namcos86.c b/src/mame/drivers/namcos86.c index 884e75bfe54..385d0bebe22 100644 --- a/src/mame/drivers/namcos86.c +++ b/src/mame/drivers/namcos86.c @@ -306,7 +306,7 @@ WRITE8_MEMBER(namcos86_state::cus115_w) case 1: case 2: case 3: - namco_63701x_w(machine().device("namco2"), space, (offset & 0x1e00) >> 9,data); + machine().device<namco_63701x_device>("namco2")->namco_63701x_w(space, (offset & 0x1e00) >> 9,data); break; case 4: @@ -1064,7 +1064,7 @@ static MACHINE_CONFIG_DERIVED( genpeitd, hopmappy ) MCFG_CPU_PROGRAM_MAP(genpeitd_mcu_map) /* sound hardware */ - MCFG_SOUND_ADD("namco2", NAMCO_63701X, 6000000) + MCFG_NAMCO_63701X_ADD("namco2", 6000000) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -1079,7 +1079,7 @@ static MACHINE_CONFIG_DERIVED( rthunder, hopmappy ) MCFG_CPU_PROGRAM_MAP(rthunder_mcu_map) /* sound hardware */ - MCFG_SOUND_ADD("namco2", NAMCO_63701X, 6000000) + MCFG_NAMCO_63701X_ADD("namco2", 6000000) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END @@ -1094,7 +1094,7 @@ static MACHINE_CONFIG_DERIVED( wndrmomo, hopmappy ) MCFG_CPU_PROGRAM_MAP(wndrmomo_mcu_map) /* sound hardware */ - MCFG_SOUND_ADD("namco2", NAMCO_63701X, 6000000) + MCFG_NAMCO_63701X_ADD("namco2", 6000000) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END diff --git a/src/mame/drivers/seta.c b/src/mame/drivers/seta.c index ae2bb2d82fe..589aa6feae5 100644 --- a/src/mame/drivers/seta.c +++ b/src/mame/drivers/seta.c @@ -1654,7 +1654,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( downtown_map, AS_PROGRAM, 16, seta_state ) AM_RANGE(0x000000, 0x09ffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound + AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE("x1snd", x1_010_device, seta_sound_word_r, seta_sound_word_w) // Sound AM_RANGE(0x200000, 0x200001) AM_NOP // watchdog? (twineagl) AM_RANGE(0x300000, 0x300001) AM_WRITENOP // IRQ enable/acknowledge? AM_RANGE(0x400000, 0x400007) AM_WRITE(twineagl_tilebank_w) // special tile banking to animate water in twineagl @@ -1823,7 +1823,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( atehate_map, AS_PROGRAM, 16, seta_state ) AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM AM_RANGE(0x900000, 0x9fffff) AM_RAM // RAM - AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound + AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE("x1snd", x1_010_device, seta_sound_word_r, seta_sound_word_w) // Sound AM_RANGE(0x200000, 0x200001) AM_WRITENOP // ? watchdog ? AM_RANGE(0x300000, 0x300001) AM_WRITENOP // ? 0 (irq ack lev 2?) AM_RANGE(0x500000, 0x500001) AM_WRITENOP // ? (end of lev 1: bit 4 goes 1,0,1) @@ -1866,7 +1866,7 @@ static ADDRESS_MAP_START( blandia_map, AS_PROGRAM, 16, seta_state ) AM_RANGE(0xb04000, 0xb0ffff) AM_RAM // (jjsquawk) AM_RANGE(0xb80000, 0xb83fff) AM_RAM_WRITE(seta_vram_2_w) AM_SHARE("vram_2") // VRAM 2&3 AM_RANGE(0xb84000, 0xb8ffff) AM_RAM // (jjsquawk) - AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound + AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", x1_010_device, seta_sound_word_r, seta_sound_word_w) // Sound AM_RANGE(0xd00000, 0xd00007) AM_WRITENOP // ? AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // ? VBlank IRQ Ack AM_RANGE(0xf00000, 0xf00001) AM_WRITENOP // ? Sound IRQ Ack @@ -1901,7 +1901,7 @@ static ADDRESS_MAP_START( blandiap_map, AS_PROGRAM, 16, seta_state ) AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE_LEGACY("spritegen", spritectrl_r16, spritectrl_w16) /**/AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000 AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE_LEGACY("spritegen", spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound + AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", x1_010_device, seta_sound_word_r, seta_sound_word_w) // Sound AM_RANGE(0xd00000, 0xd00007) AM_WRITENOP // ? AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // ? VBlank IRQ Ack AM_RANGE(0xf00000, 0xf00001) AM_WRITENOP // ? Sound IRQ Ack @@ -1981,7 +1981,7 @@ static ADDRESS_MAP_START( wrofaero_map, AS_PROGRAM, 16, seta_state ) AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE_LEGACY("spritegen", spritectrl_r16, spritectrl_w16) /**/AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000 AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE_LEGACY("spritegen", spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound + AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", x1_010_device, seta_sound_word_r, seta_sound_word_w) // Sound #if __uPD71054_TIMER AM_RANGE(0xd00000, 0xd00007) AM_WRITE(timer_regs_w) // ? #else @@ -2057,7 +2057,7 @@ static ADDRESS_MAP_START( jjsquawb_map, AS_PROGRAM, 16, seta_state ) AM_RANGE(0xa0a600, 0xa0a607) AM_RAM AM_DEVREADWRITE_LEGACY("spritegen", spritectrl_r16, spritectrl_w16) // AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000 AM_RANGE(0xb0c000, 0xb0ffff) AM_RAM AM_DEVREADWRITE_LEGACY("spritegen", spritecode_r16, spritecode_w16) // RZ: Sprites Code + X + Attr - AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound + AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", x1_010_device, seta_sound_word_r, seta_sound_word_w) // Sound #if __uPD71054_TIMER AM_RANGE(0xd00000, 0xd00007) AM_WRITE(timer_regs_w) // ? #else @@ -2084,7 +2084,7 @@ static ADDRESS_MAP_START( orbs_map, AS_PROGRAM, 16, seta_state ) //AM_RANGE(0x600000, 0x60000f) AM_READ(krzybowl_input_r ) // P1 AM_RANGE(0x8000f0, 0x8000f1) AM_RAM // NVRAM AM_RANGE(0x800100, 0x8001ff) AM_RAM // NVRAM - AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound + AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1snd", x1_010_device, seta_sound_word_r, seta_sound_word_w) // Sound AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_SHARE("paletteram") // Palette AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_DEVREADWRITE_LEGACY("spritegen", spritecode_r16, spritecode_w16) // Sprites Code + X + Attr /**/AM_RANGE(0xd00000, 0xd00001) AM_RAM // ? 0x4000 @@ -2165,7 +2165,7 @@ static ADDRESS_MAP_START( keroppi_map, AS_PROGRAM, 16, seta_state ) AM_RANGE(0x800100, 0x8001ff) AM_RAM // NVRAM AM_RANGE(0x900000, 0x900001) AM_WRITENOP // ? AM_RANGE(0x900002, 0x900003) AM_WRITE(keroppi_prize_w) // - AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound + AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1snd", x1_010_device, seta_sound_word_r, seta_sound_word_w) // Sound AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_SHARE("paletteram") // Palette AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_DEVREADWRITE_LEGACY("spritegen", spritecode_r16, spritecode_w16) // Sprites Code + X + Attr /**/AM_RANGE(0xd00000, 0xd00001) AM_RAM // ? 0x4000 @@ -2196,7 +2196,7 @@ static ADDRESS_MAP_START( blockcar_map, AS_PROGRAM, 16, seta_state ) AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1") // P1 AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2") // P2 AM_RANGE(0x500004, 0x500005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound + AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1snd", x1_010_device, seta_sound_word_r, seta_sound_word_w) // Sound AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_SHARE("paletteram") // Palette AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_DEVREADWRITE_LEGACY("spritegen", spritecode_r16, spritecode_w16) // Sprites Code + X + Attr /**/AM_RANGE(0xd00000, 0xd00001) AM_RAM // ? 0x4000 @@ -2233,7 +2233,7 @@ static ADDRESS_MAP_START( daioh_map, AS_PROGRAM, 16, seta_state ) AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000 AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE_LEGACY("spritegen", spritecode_r16, spritecode_w16) // Sprites Code + X + Attr AM_RANGE(0xb04000, 0xb13fff) AM_RAM - AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound + AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", x1_010_device, seta_sound_word_r, seta_sound_word_w) // Sound AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // ADDRESS_MAP_END @@ -2246,7 +2246,7 @@ static ADDRESS_MAP_START( drgnunit_map, AS_PROGRAM, 16, seta_state ) AM_RANGE(0x000000, 0x0bffff) AM_ROM // ROM AM_RANGE(0xf00000, 0xf0ffff) AM_RAM // RAM (qzkklogy) AM_RANGE(0xffc000, 0xffffff) AM_RAM // RAM (drgnunit,stg) - AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound + AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE("x1snd", x1_010_device, seta_sound_word_r, seta_sound_word_w) // Sound AM_RANGE(0x200000, 0x200001) AM_WRITENOP // Watchdog AM_RANGE(0x300000, 0x300001) AM_WRITENOP // ? IRQ Ack AM_RANGE(0x500000, 0x500001) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout + Video Registers @@ -2364,7 +2364,7 @@ static ADDRESS_MAP_START( extdwnhl_map, AS_PROGRAM, 16, seta_state ) /**/AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000 AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE_LEGACY("spritegen", spritecode_r16, spritecode_w16) // Sprites Code + X + Attr AM_RANGE(0xb04000, 0xb13fff) AM_RAM // - AM_RANGE(0xe00000, 0xe03fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound + AM_RANGE(0xe00000, 0xe03fff) AM_DEVREADWRITE("x1snd", x1_010_device, seta_sound_word_r, seta_sound_word_w) // Sound ADDRESS_MAP_END @@ -2401,7 +2401,7 @@ static ADDRESS_MAP_START( kamenrid_map, AS_PROGRAM, 16, seta_state ) #else AM_RANGE(0xc00000, 0xc00007) AM_WRITENOP // ? #endif - AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound + AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE("x1snd", x1_010_device, seta_sound_word_r, seta_sound_word_w) // Sound ADDRESS_MAP_END /* almost identical to kamenrid */ @@ -2430,7 +2430,7 @@ static ADDRESS_MAP_START( madshark_map, AS_PROGRAM, 16, seta_state ) #else AM_RANGE(0xc00000, 0xc00007) AM_WRITENOP // ? #endif - AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound + AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE("x1snd", x1_010_device, seta_sound_word_r, seta_sound_word_w) // Sound ADDRESS_MAP_END @@ -2477,7 +2477,7 @@ static ADDRESS_MAP_START( magspeed_map, AS_PROGRAM, 16, seta_state ) #else AM_RANGE(0xc00000, 0xc00007) AM_WRITENOP // ? #endif - AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound + AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE("x1snd", x1_010_device, seta_sound_word_r, seta_sound_word_w) // Sound ADDRESS_MAP_END @@ -2522,7 +2522,7 @@ static ADDRESS_MAP_START( krzybowl_map, AS_PROGRAM, 16, seta_state ) AM_RANGE(0x600000, 0x60000f) AM_READ(krzybowl_input_r) // P1 AM_RANGE(0x8000f0, 0x8000f1) AM_RAM // NVRAM AM_RANGE(0x800100, 0x8001ff) AM_RAM // NVRAM - AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound + AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1snd", x1_010_device, seta_sound_word_r, seta_sound_word_w) // Sound AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_SHARE("paletteram") // Palette AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_DEVREADWRITE_LEGACY("spritegen", spritecode_r16, spritecode_w16) // Sprites Code + X + Attr /**/AM_RANGE(0xd00000, 0xd00001) AM_RAM // ? 0x4000 @@ -2568,7 +2568,7 @@ static ADDRESS_MAP_START( msgundam_map, AS_PROGRAM, 16, seta_state ) AM_RANGE(0xa80000, 0xa83fff) AM_RAM_WRITE(seta_vram_2_w) AM_SHARE("vram_2") // VRAM 2&3 AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl AM_RANGE(0xb80000, 0xb80005) AM_RAM AM_SHARE("vctrl_2") // VRAM 2&3 Ctrl - AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound + AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", x1_010_device, seta_sound_word_r, seta_sound_word_w) // Sound #if __uPD71054_TIMER AM_RANGE(0xd00000, 0xd00007) AM_WRITE(timer_regs_w) // ? #else @@ -2592,7 +2592,7 @@ static ADDRESS_MAP_START( oisipuzl_map, AS_PROGRAM, 16, seta_state ) AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins AM_RANGE(0x400000, 0x400001) AM_WRITENOP // ? IRQ Ack AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout + Video Registers - AM_RANGE(0x700000, 0x703fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound + AM_RANGE(0x700000, 0x703fff) AM_DEVREADWRITE("x1snd", x1_010_device, seta_sound_word_r, seta_sound_word_w) // Sound AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(seta_vram_0_w) AM_SHARE("vram_0") // VRAM 0&1 AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(seta_vram_2_w) AM_SHARE("vram_2") // VRAM 2&3 /**/AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl @@ -2683,7 +2683,7 @@ static ADDRESS_MAP_START( kiwame_map, AS_PROGRAM, 16, seta_state ) /**/AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE_LEGACY("spritegen", spriteylow_r16, spriteylow_w16) // Sprites Y AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE_LEGACY("spritegen", spritectrl_r16, spritectrl_w16) AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_SHARE("paletteram") // Palette - AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound + AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", x1_010_device, seta_sound_word_r, seta_sound_word_w) // Sound AM_RANGE(0xd00000, 0xd00009) AM_READ(kiwame_input_r) // mahjong panel AM_RANGE(0xe00000, 0xe00003) AM_READ(seta_dsw_r) // DSW ADDRESS_MAP_END @@ -2708,7 +2708,7 @@ WRITE16_MEMBER(seta_state::thunderl_protection_w) static ADDRESS_MAP_START( thunderl_map, AS_PROGRAM, 16, seta_state ) AM_RANGE(0x000000, 0x00ffff) AM_ROM // ROM AM_RANGE(0xffc000, 0xffffff) AM_RAM // RAM - AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound + AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE("x1snd", x1_010_device, seta_sound_word_r, seta_sound_word_w) // Sound AM_RANGE(0x200000, 0x200001) AM_WRITENOP // ? AM_RANGE(0x300000, 0x300001) AM_WRITENOP // ? AM_RANGE(0x400000, 0x40ffff) AM_WRITE(thunderl_protection_w) // Protection (not in wits) @@ -2732,7 +2732,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( thunderlbl_map, AS_PROGRAM, 16, seta_state ) AM_RANGE(0x000000, 0x00ffff) AM_ROM // ROM AM_RANGE(0xffc000, 0xffffff) AM_RAM // RAM -// AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound +// AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE("x1snd", x1_010_device, seta_sound_word_r, seta_sound_word_w) // Sound AM_RANGE(0x200000, 0x200001) AM_WRITENOP // ? AM_RANGE(0x300000, 0x300001) AM_WRITENOP // ? // AM_RANGE(0x400000, 0x40ffff) AM_WRITE(thunderl_protection_w) // Protection (not in wits) @@ -2818,7 +2818,7 @@ static ADDRESS_MAP_START( umanclub_map, AS_PROGRAM, 16, seta_state ) AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE_LEGACY("spritegen", spritectrl_r16, spritectrl_w16) /**/AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000 AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE_LEGACY("spritegen", spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound + AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", x1_010_device, seta_sound_word_r, seta_sound_word_w) // Sound ADDRESS_MAP_END @@ -2886,7 +2886,7 @@ static ADDRESS_MAP_START( pairlove_map, AS_PROGRAM, 16, seta_state ) AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2") // P2 AM_RANGE(0x500004, 0x500005) AM_READ_PORT("COINS") // Coins AM_RANGE(0x900000, 0x9001ff) AM_READWRITE(pairlove_prot_r,pairlove_prot_w) - AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound + AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1snd", x1_010_device, seta_sound_word_r, seta_sound_word_w) // Sound AM_RANGE(0xb00000, 0xb00fff) AM_RAM AM_SHARE("paletteram") // Palette AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_DEVREADWRITE_LEGACY("spritegen", spritecode_r16, spritecode_w16) // Sprites Code + X + Attr AM_RANGE(0xd00000, 0xd00001) AM_RAM // ? 0x4000 @@ -2976,7 +2976,7 @@ static ADDRESS_MAP_START( inttoote_map, AS_PROGRAM, 16, seta_state ) AM_RANGE(0x800000, 0x80001f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write, 0x00ff) - AM_RANGE(0x900000, 0x903fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r, seta_sound_word_w ) // Sound + AM_RANGE(0x900000, 0x903fff) AM_DEVREADWRITE("x1snd", x1_010_device, seta_sound_word_r, seta_sound_word_w ) // Sound AM_RANGE(0xa00000, 0xa00005) AM_WRITEONLY AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl AM_RANGE(0xb00000, 0xb03fff) AM_RAM_WRITE(seta_vram_0_w) AM_SHARE("vram_0") // VRAM 0&1 @@ -3038,7 +3038,7 @@ static ADDRESS_MAP_START( jockeyc_map, AS_PROGRAM, 16, seta_state ) AM_RANGE(0x800000, 0x80001f) AM_DEVREADWRITE8("rtc", msm6242_device, read, write, 0x00ff) - AM_RANGE(0x900000, 0x903fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r, seta_sound_word_w) // Sound + AM_RANGE(0x900000, 0x903fff) AM_DEVREADWRITE("x1snd", x1_010_device, seta_sound_word_r, seta_sound_word_w) // Sound AM_RANGE(0xa00000, 0xa00005) AM_WRITEONLY AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl AM_RANGE(0xb00000, 0xb03fff) AM_RAM_WRITE(seta_vram_0_w) AM_SHARE("vram_0") // VRAM 0&1 @@ -3177,7 +3177,7 @@ WRITE8_MEMBER(seta_state::calibr50_soundlatch2_w) } static ADDRESS_MAP_START( calibr50_sub_map, AS_PROGRAM, 8, seta_state ) - AM_RANGE(0x0000, 0x1fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_r,seta_sound_w) // Sound + AM_RANGE(0x0000, 0x1fff) AM_DEVREADWRITE("x1snd", x1_010_device, seta_sound_r, seta_sound_w) // Sound AM_RANGE(0x4000, 0x4000) AM_READ(soundlatch_byte_r) // From Main CPU AM_RANGE(0x4000, 0x4000) AM_WRITE(sub_bankswitch_w) // Bankswitching AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") // Banked ROM @@ -3213,7 +3213,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( utoukond_sound_map, AS_PROGRAM, 8, seta_state ) AM_RANGE(0x0000, 0xdfff) AM_ROM AM_RANGE(0xe000, 0xefff) AM_RAM - AM_RANGE(0xf000, 0xffff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_r,seta_sound_w) + AM_RANGE(0xf000, 0xffff) AM_DEVREADWRITE("x1snd", x1_010_device, seta_sound_r, seta_sound_w) ADDRESS_MAP_END static ADDRESS_MAP_START( utoukond_sound_io_map, AS_IO, 8, seta_state ) @@ -7544,7 +7544,7 @@ static MACHINE_CONFIG_START( twineagl, seta_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ + MCFG_X1_010_ADD("x1snd", 16000000) /* 16 MHz */ MCFG_SOUND_CONFIG(seta_sound_intf) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -7585,7 +7585,7 @@ static MACHINE_CONFIG_START( downtown, seta_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ + MCFG_X1_010_ADD("x1snd", 16000000) /* 16 MHz */ MCFG_SOUND_CONFIG(seta_sound_intf) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END @@ -7645,7 +7645,7 @@ static MACHINE_CONFIG_START( usclssic, seta_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ + MCFG_X1_010_ADD("x1snd", 16000000) /* 16 MHz */ MCFG_SOUND_CONFIG(seta_sound_intf2) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -7692,7 +7692,7 @@ static MACHINE_CONFIG_START( calibr50, seta_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ + MCFG_X1_010_ADD("x1snd", 16000000) /* 16 MHz */ MCFG_SOUND_CONFIG(seta_sound_intf2) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END @@ -7733,7 +7733,7 @@ static MACHINE_CONFIG_START( metafox, seta_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ + MCFG_X1_010_ADD("x1snd", 16000000) /* 16 MHz */ MCFG_SOUND_CONFIG(seta_sound_intf) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -7769,7 +7769,7 @@ static MACHINE_CONFIG_START( atehate, seta_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ + MCFG_X1_010_ADD("x1snd", 16000000) /* 16 MHz */ MCFG_SOUND_CONFIG(seta_sound_intf) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -7813,7 +7813,7 @@ static MACHINE_CONFIG_START( blandia, seta_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ + MCFG_X1_010_ADD("x1snd", 16000000) /* 16 MHz */ MCFG_SOUND_CONFIG(seta_sound_intf) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -7846,7 +7846,7 @@ static MACHINE_CONFIG_START( blandiap, seta_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ + MCFG_X1_010_ADD("x1snd", 16000000) /* 16 MHz */ MCFG_SOUND_CONFIG(seta_sound_intf) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -7882,7 +7882,7 @@ static MACHINE_CONFIG_START( blockcar, seta_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ + MCFG_X1_010_ADD("x1snd", 16000000) /* 16 MHz */ MCFG_SOUND_CONFIG(seta_sound_intf) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -7918,7 +7918,7 @@ static MACHINE_CONFIG_START( daioh, seta_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ + MCFG_X1_010_ADD("x1snd", 16000000) /* 16 MHz */ MCFG_SOUND_CONFIG(seta_sound_intf) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -7960,7 +7960,7 @@ static MACHINE_CONFIG_START( drgnunit, seta_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ + MCFG_X1_010_ADD("x1snd", 16000000) /* 16 MHz */ MCFG_SOUND_CONFIG(seta_sound_intf) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -7995,7 +7995,7 @@ static MACHINE_CONFIG_START( qzkklgy2, seta_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ + MCFG_X1_010_ADD("x1snd", 16000000) /* 16 MHz */ MCFG_SOUND_CONFIG(seta_sound_intf) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -8046,7 +8046,7 @@ static MACHINE_CONFIG_START( setaroul, seta_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ + MCFG_X1_010_ADD("x1snd", 16000000) /* 16 MHz */ MCFG_SOUND_CONFIG(seta_sound_intf) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -8082,7 +8082,7 @@ static MACHINE_CONFIG_START( eightfrc, seta_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ + MCFG_X1_010_ADD("x1snd", 16000000) /* 16 MHz */ MCFG_SOUND_CONFIG(seta_sound_intf) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -8124,7 +8124,7 @@ static MACHINE_CONFIG_START( extdwnhl, seta_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ + MCFG_X1_010_ADD("x1snd", 16000000) /* 16 MHz */ MCFG_SOUND_CONFIG(seta_sound_intf) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -8185,7 +8185,7 @@ static MACHINE_CONFIG_START( gundhara, seta_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ + MCFG_X1_010_ADD("x1snd", 16000000) /* 16 MHz */ MCFG_SOUND_CONFIG(seta_sound_intf) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -8226,7 +8226,7 @@ static MACHINE_CONFIG_START( jjsquawk, seta_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ + MCFG_X1_010_ADD("x1snd", 16000000) /* 16 MHz */ MCFG_SOUND_CONFIG(seta_sound_intf) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -8258,7 +8258,7 @@ static MACHINE_CONFIG_START( jjsquawb, seta_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ + MCFG_X1_010_ADD("x1snd", 16000000) /* 16 MHz */ MCFG_SOUND_CONFIG(seta_sound_intf) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -8298,7 +8298,7 @@ static MACHINE_CONFIG_START( kamenrid, seta_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ + MCFG_X1_010_ADD("x1snd", 16000000) /* 16 MHz */ MCFG_SOUND_CONFIG(seta_sound_intf) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -8335,7 +8335,7 @@ static MACHINE_CONFIG_START( orbs, seta_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("x1snd", X1_010, 14318180) /* 14.318180 MHz */ + MCFG_X1_010_ADD("x1snd", 14318180) /* 14.318180 MHz */ MCFG_SOUND_CONFIG(seta_sound_intf) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -8373,7 +8373,7 @@ static MACHINE_CONFIG_START( keroppi, seta_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("x1snd", X1_010, 14318180) /* 14.318180 MHz */ + MCFG_X1_010_ADD("x1snd", 14318180) /* 14.318180 MHz */ MCFG_SOUND_CONFIG(seta_sound_intf) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -8409,7 +8409,7 @@ static MACHINE_CONFIG_START( krzybowl, seta_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ + MCFG_X1_010_ADD("x1snd", 16000000) /* 16 MHz */ MCFG_SOUND_CONFIG(seta_sound_intf) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -8452,7 +8452,7 @@ static MACHINE_CONFIG_START( madshark, seta_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ + MCFG_X1_010_ADD("x1snd", 16000000) /* 16 MHz */ MCFG_SOUND_CONFIG(seta_sound_intf) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -8492,7 +8492,7 @@ static MACHINE_CONFIG_START( magspeed, seta_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ + MCFG_X1_010_ADD("x1snd", 16000000) /* 16 MHz */ MCFG_SOUND_CONFIG(seta_sound_intf) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -8539,7 +8539,7 @@ static MACHINE_CONFIG_START( msgundam, seta_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ + MCFG_X1_010_ADD("x1snd", 16000000) /* 16 MHz */ MCFG_SOUND_CONFIG(seta_sound_intf) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -8576,7 +8576,7 @@ static MACHINE_CONFIG_START( oisipuzl, seta_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ + MCFG_X1_010_ADD("x1snd", 16000000) /* 16 MHz */ MCFG_SOUND_CONFIG(seta_sound_intf) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -8648,7 +8648,7 @@ static MACHINE_CONFIG_START( kiwame, seta_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ + MCFG_X1_010_ADD("x1snd", 16000000) /* 16 MHz */ MCFG_SOUND_CONFIG(seta_sound_intf) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -8687,7 +8687,7 @@ static MACHINE_CONFIG_START( rezon, seta_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ + MCFG_X1_010_ADD("x1snd", 16000000) /* 16 MHz */ MCFG_SOUND_CONFIG(seta_sound_intf) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -8726,7 +8726,7 @@ static MACHINE_CONFIG_START( thunderl, seta_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ + MCFG_X1_010_ADD("x1snd", 16000000) /* 16 MHz */ MCFG_SOUND_CONFIG(seta_sound_intf) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -8831,7 +8831,7 @@ static MACHINE_CONFIG_START( wits, seta_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ + MCFG_X1_010_ADD("x1snd", 16000000) /* 16 MHz */ MCFG_SOUND_CONFIG(seta_sound_intf) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -8867,7 +8867,7 @@ static MACHINE_CONFIG_START( umanclub, seta_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ + MCFG_X1_010_ADD("x1snd", 16000000) /* 16 MHz */ MCFG_SOUND_CONFIG(seta_sound_intf) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -8907,7 +8907,7 @@ static MACHINE_CONFIG_START( utoukond, seta_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("x1snd", X1_010, 16000000) + MCFG_X1_010_ADD("x1snd", 16000000) MCFG_SOUND_CONFIG(seta_sound_intf) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -8956,7 +8956,7 @@ static MACHINE_CONFIG_START( wrofaero, seta_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ + MCFG_X1_010_ADD("x1snd", 16000000) /* 16 MHz */ MCFG_SOUND_CONFIG(seta_sound_intf) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -9000,7 +9000,7 @@ static MACHINE_CONFIG_START( zingzip, seta_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ + MCFG_X1_010_ADD("x1snd", 16000000) /* 16 MHz */ MCFG_SOUND_CONFIG(seta_sound_intf) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -9052,7 +9052,7 @@ static MACHINE_CONFIG_START( pairlove, seta_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */ + MCFG_X1_010_ADD("x1snd", 16000000) /* 16 MHz */ MCFG_SOUND_CONFIG(seta_sound_intf) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -9196,7 +9196,7 @@ static MACHINE_CONFIG_START( inttoote, seta_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("x1snd", X1_010, 16000000) + MCFG_X1_010_ADD("x1snd", 16000000) MCFG_SOUND_CONFIG(seta_sound_intf) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) diff --git a/src/mame/drivers/seta2.c b/src/mame/drivers/seta2.c index cb89ff278da..9b270e5e5ab 100644 --- a/src/mame/drivers/seta2.c +++ b/src/mame/drivers/seta2.c @@ -161,7 +161,7 @@ static ADDRESS_MAP_START( grdians_map, AS_PROGRAM, 16, seta2_state ) AM_RANGE(0x700004, 0x700005) AM_READ_PORT("SYSTEM") // Coins AM_RANGE(0x70000c, 0x70000d) AM_READ(watchdog_reset16_r) // Watchdog AM_RANGE(0x800000, 0x800001) AM_WRITE(grdians_lockout_w) - AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound + AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", x1_010_device, seta_sound_word_r, seta_sound_word_w) // Sound AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("spriteram") // Sprites AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram") // Palette AM_RANGE(0xc50000, 0xc5ffff) AM_RAM // cleared @@ -203,7 +203,7 @@ static ADDRESS_MAP_START( gundamex_map, AS_PROGRAM, 16, seta2_state ) AM_RANGE(0x70000a, 0x70000b) AM_READ_PORT("IN1") // P2 AM_RANGE(0x70000c, 0x70000d) AM_WRITE(watchdog_reset16_w) AM_RANGE(0x800000, 0x800001) AM_WRITE(grdians_lockout_w) - AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound + AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", x1_010_device, seta_sound_word_r, seta_sound_word_w) // Sound AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("spriteram") // Sprites AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram") // Palette AM_RANGE(0xc50000, 0xc5ffff) AM_RAM // cleared @@ -262,7 +262,7 @@ static ADDRESS_MAP_START( mj4simai_map, AS_PROGRAM, 16, seta2_state ) AM_RANGE(0x600300, 0x600301) AM_READ_PORT("DSW1") // DSW 1 AM_RANGE(0x600302, 0x600303) AM_READ_PORT("DSW2") // DSW 2 AM_RANGE(0x600300, 0x60030f) AM_WRITE(seta2_sound_bank_w) // Samples Banks - AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound + AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", x1_010_device, seta_sound_word_r, seta_sound_word_w) // Sound AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("spriteram") // Sprites AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram") // Palette AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs") // Video Registers @@ -285,7 +285,7 @@ static ADDRESS_MAP_START( myangel_map, AS_PROGRAM, 16, seta2_state ) AM_RANGE(0x700300, 0x700301) AM_READ_PORT("DSW1") // DSW 1 AM_RANGE(0x700302, 0x700303) AM_READ_PORT("DSW2") // DSW 2 AM_RANGE(0x700310, 0x70031f) AM_WRITE(seta2_sound_bank_w) // Samples Banks - AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound + AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", x1_010_device, seta_sound_word_r, seta_sound_word_w) // Sound AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("spriteram") // Sprites AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram") // Palette AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs") // Video Registers @@ -308,7 +308,7 @@ static ADDRESS_MAP_START( myangel2_map, AS_PROGRAM, 16, seta2_state ) AM_RANGE(0x600300, 0x600301) AM_READ_PORT("DSW1") // DSW 1 AM_RANGE(0x600302, 0x600303) AM_READ_PORT("DSW2") // DSW 2 AM_RANGE(0x600300, 0x60030f) AM_WRITE(seta2_sound_bank_w) // Samples Banks - AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound + AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", x1_010_device, seta_sound_word_r, seta_sound_word_w) // Sound AM_RANGE(0xd00000, 0xd3ffff) AM_RAM AM_SHARE("spriteram") // Sprites AM_RANGE(0xd40000, 0xd4ffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram") // Palette AM_RANGE(0xd60000, 0xd6003f) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs") // Video Registers @@ -356,7 +356,7 @@ static ADDRESS_MAP_START( pzlbowl_map, AS_PROGRAM, 16, seta2_state ) AM_RANGE(0x800000, 0x83ffff) AM_RAM AM_SHARE("spriteram") // Sprites AM_RANGE(0x840000, 0x84ffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram") // Palette AM_RANGE(0x860000, 0x86003f) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs") // Video Registers - AM_RANGE(0x900000, 0x903fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound + AM_RANGE(0x900000, 0x903fff) AM_DEVREADWRITE("x1snd", x1_010_device, seta_sound_word_r, seta_sound_word_w) // Sound AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE_LEGACY(tmp68301_regs_r, tmp68301_regs_w) // TMP68301 Registers ADDRESS_MAP_END @@ -382,7 +382,7 @@ static ADDRESS_MAP_START( penbros_map, AS_PROGRAM, 16, seta2_state ) AM_RANGE(0xb00000, 0xb3ffff) AM_RAM AM_SHARE("spriteram") // Sprites AM_RANGE(0xb40000, 0xb4ffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram") // Palette AM_RANGE(0xb60000, 0xb6003f) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs") - AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound + AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1snd", x1_010_device, seta_sound_word_r, seta_sound_word_w) // Sound AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE_LEGACY(tmp68301_regs_r, tmp68301_regs_w) // TMP68301 Registers ADDRESS_MAP_END @@ -437,7 +437,7 @@ static ADDRESS_MAP_START( reelquak_map, AS_PROGRAM, 16, seta2_state ) AM_RANGE(0x400300, 0x400301) AM_READ_PORT("DSW1") // DSW 1 AM_RANGE(0x400302, 0x400303) AM_READ_PORT("DSW2") // DSW 2 AM_RANGE(0x400300, 0x40030f) AM_WRITE(seta2_sound_bank_w) // Samples Banks - AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound + AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", x1_010_device, seta_sound_word_r, seta_sound_word_w) // Sound AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("spriteram") // Sprites AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram") // Palette AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs") // Video Registers @@ -499,7 +499,7 @@ static ADDRESS_MAP_START( samshoot_map, AS_PROGRAM, 16, seta2_state ) AM_RANGE( 0x840000, 0x84ffff ) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram") // Palette AM_RANGE( 0x860000, 0x86003f ) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs") // Video Registers - AM_RANGE( 0x900000, 0x903fff ) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r, seta_sound_word_w ) // Sound + AM_RANGE( 0x900000, 0x903fff ) AM_DEVREADWRITE("x1snd", x1_010_device, seta_sound_word_r, seta_sound_word_w ) // Sound AM_RANGE( 0xfffd0a, 0xfffd0b ) AM_READ_PORT("DSW2") // parallel data register (DSW 2) AM_RANGE( 0xfffc00, 0xffffff ) AM_READWRITE_LEGACY(tmp68301_regs_r, tmp68301_regs_w) // TMP68301 Registers @@ -2042,7 +2042,7 @@ static MACHINE_CONFIG_START( seta2, seta2_state ) // sound hardware MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") - MCFG_SOUND_ADD("x1snd", X1_010, XTAL_50MHz/3) // clock? + MCFG_X1_010_ADD("x1snd", XTAL_50MHz/3) // clock? MCFG_SOUND_CONFIG(x1_010_sound_intf) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) diff --git a/src/mame/drivers/tourtabl.c b/src/mame/drivers/tourtabl.c index fd6714773bd..6e054929563 100644 --- a/src/mame/drivers/tourtabl.c +++ b/src/mame/drivers/tourtabl.c @@ -191,7 +191,7 @@ static MACHINE_CONFIG_START( tourtabl, tourtabl_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_SOUND_ADD("tia", TIA, MASTER_CLOCK/114) + MCFG_SOUND_TIA_ADD("tia", MASTER_CLOCK/114) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END diff --git a/src/mame/video/seta.c b/src/mame/video/seta.c index 3797d2fcaa8..e4a5895ef24 100644 --- a/src/mame/video/seta.c +++ b/src/mame/video/seta.c @@ -266,10 +266,10 @@ WRITE16_MEMBER(seta_state::seta_vregs_w) ---- ---- ---- ---0 Coin #0 Counter */ if (ACCESSING_BITS_0_7) { - device_t *x1_010 = machine().device("x1snd"); + x1_010_device *x1_010 = machine().device<x1_010_device>("x1snd"); seta_coin_lockout_w (machine(), data & 0x0f); if (x1_010 != NULL) - seta_sound_enable_w (x1_010, data & 0x20); + x1_010->seta_sound_enable_w (data & 0x20); coin_counter_w(machine(), 0,data & 0x01); coin_counter_w(machine(), 1,data & 0x02); } diff --git a/src/mame/video/tia.c b/src/mame/video/tia.c index fa6f3776351..39a57c866c9 100644 --- a/src/mame/video/tia.c +++ b/src/mame/video/tia.c @@ -1804,7 +1804,7 @@ WRITE8_MEMBER( tia_video_device::write ) case 0x18: /* AUDF1 */ case 0x19: /* AUDV0 */ case 0x1A: /* AUDV1 */ - tia_sound_w(machine().device("tia"), space, offset, data); + machine().device<tia_device>("tia")->tia_sound_w(space, offset, data); break; case 0x1B: diff --git a/src/mess/drivers/a2600.c b/src/mess/drivers/a2600.c index 182a85c5519..eaeab9303ef 100644 --- a/src/mess/drivers/a2600.c +++ b/src/mess/drivers/a2600.c @@ -1951,7 +1951,7 @@ static MACHINE_CONFIG_START( a2600, a2600_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_SOUND_ADD("tia", TIA, MASTER_CLOCK_NTSC/114) + MCFG_SOUND_TIA_ADD("tia", MASTER_CLOCK_NTSC/114) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90) MCFG_SOUND_WAVE_ADD(WAVE_TAG, CASSETTE_TAG) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) @@ -1988,7 +1988,7 @@ static MACHINE_CONFIG_START( a2600p, a2600_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_SOUND_ADD("tia", TIA, MASTER_CLOCK_PAL/114) + MCFG_SOUND_TIA_ADD("tia", MASTER_CLOCK_PAL/114) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90) MCFG_SOUND_WAVE_ADD(WAVE_TAG, CASSETTE_TAG) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) diff --git a/src/mess/drivers/a7800.c b/src/mess/drivers/a7800.c index f82d446006c..572b5baaf92 100644 --- a/src/mess/drivers/a7800.c +++ b/src/mess/drivers/a7800.c @@ -291,7 +291,7 @@ static MACHINE_CONFIG_START( a7800_ntsc, a7800_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_SOUND_ADD("tia", TIA, 31400) + MCFG_SOUND_TIA_ADD("tia", 31400) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) MCFG_POKEY_ADD("pokey", A7800_NTSC_Y1/8) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) diff --git a/src/mess/machine/a7800.c b/src/mess/machine/a7800.c index 6b4829f5532..643721c751e 100644 --- a/src/mess/machine/a7800.c +++ b/src/mess/machine/a7800.c @@ -524,6 +524,6 @@ WRITE8_MEMBER(a7800_state::a7800_TIA_w) } break; } - tia_sound_w(machine().device("tia"), space, offset, data); + machine().device<tia_device>("tia")->tia_sound_w(space, offset, data); m_ROM[offset] = data; } |