From 081fb69aecc98ff28453ce093fd2cf7a093e61c6 Mon Sep 17 00:00:00 2001 From: Aaron Giles Date: Wed, 8 Aug 2012 08:36:31 +0000 Subject: [PATCH] Removed legacy Z80 CTC interfaces. Removed Star Force sound hack in favor of just driving a DAC directly with the CTC output line (MAME can handle sound frequency timers no problem). --- src/emu/machine/ldv1000.c | 2 +- src/emu/machine/z80ctc.c | 45 ++++++++++++++++++--------- src/emu/machine/z80ctc.h | 22 +++++-------- src/mame/audio/cchasm.c | 10 +++--- src/mame/audio/cinemat.c | 4 +-- src/mame/audio/senjyo.c | 62 +++++++------------------------------ src/mame/drivers/astrocde.c | 2 +- src/mame/drivers/cchasm.c | 2 +- src/mame/drivers/csplayh5.c | 4 +-- src/mame/drivers/dlair.c | 2 +- src/mame/drivers/jankenmn.c | 2 +- src/mame/drivers/mcr.c | 8 ++--- src/mame/drivers/mcr3.c | 4 +-- src/mame/drivers/nbmj9195.c | 12 +++---- src/mame/drivers/niyanpai.c | 4 +-- src/mame/drivers/pipeline.c | 2 +- src/mame/drivers/proconn.c | 16 +++++----- src/mame/drivers/senjyo.c | 14 ++------- src/mame/includes/cchasm.h | 2 +- src/mame/includes/senjyo.h | 11 ++++--- src/mame/machine/mcr.c | 18 +++++------ 21 files changed, 108 insertions(+), 140 deletions(-) diff --git a/src/emu/machine/ldv1000.c b/src/emu/machine/ldv1000.c index 05d99b9223f..6a9009a5846 100644 --- a/src/emu/machine/ldv1000.c +++ b/src/emu/machine/ldv1000.c @@ -100,7 +100,7 @@ static ADDRESS_MAP_START( ldv1000_portmap, AS_IO, 8, pioneer_ldv1000_device ) AM_RANGE(0x00, 0x07) AM_MIRROR(0x38) AM_READWRITE(z80_decoder_display_port_r, z80_decoder_display_port_w) AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_READ(z80_controller_r) AM_RANGE(0x80, 0x80) AM_MIRROR(0x3f) AM_WRITE(z80_controller_w) - AM_RANGE(0xc0, 0xc3) AM_MIRROR(0x3c) AM_DEVREADWRITE_LEGACY("ldvctc", z80ctc_r, z80ctc_w) + AM_RANGE(0xc0, 0xc3) AM_MIRROR(0x3c) AM_DEVREADWRITE("ldvctc", z80ctc_device, read, write) ADDRESS_MAP_END diff --git a/src/emu/machine/z80ctc.c b/src/emu/machine/z80ctc.c index 3b66cfcaf41..22958ea5386 100644 --- a/src/emu/machine/z80ctc.c +++ b/src/emu/machine/z80ctc.c @@ -86,6 +86,37 @@ z80ctc_device::z80ctc_device(const machine_config &mconfig, const char *tag, dev } +//------------------------------------------------- +// read - standard handler for reading +//------------------------------------------------- + +READ8_MEMBER( z80ctc_device::read ) +{ + return read(offset & 3); +} + + +//------------------------------------------------- +// write - standard handler for writing +//------------------------------------------------- + +WRITE8_MEMBER( z80ctc_device::write ) +{ + write(offset & 3, data); +} + + +//------------------------------------------------- +// trg0-3 - standard write line handlers for each +// trigger +//------------------------------------------------- + +WRITE_LINE_MEMBER( z80ctc_device::trg0 ) { trigger(0, state); } +WRITE_LINE_MEMBER( z80ctc_device::trg1 ) { trigger(1, state); } +WRITE_LINE_MEMBER( z80ctc_device::trg2 ) { trigger(2, state); } +WRITE_LINE_MEMBER( z80ctc_device::trg3 ) { trigger(3, state); } + + //------------------------------------------------- // device_config_complete - perform any // operations now that the configuration is @@ -510,17 +541,3 @@ void z80ctc_device::ctc_channel::timer_callback() // reset the down counter m_down = m_tconst; } - - - -//************************************************************************** -// GLOBAL STUBS -//************************************************************************** - -WRITE8_DEVICE_HANDLER( z80ctc_w ) { downcast(device)->write(offset & 3, data); } -READ8_DEVICE_HANDLER( z80ctc_r ) { return downcast(device)->read(offset & 3); } - -WRITE_LINE_DEVICE_HANDLER( z80ctc_trg0_w ) { downcast(device)->trigger(0, state); } -WRITE_LINE_DEVICE_HANDLER( z80ctc_trg1_w ) { downcast(device)->trigger(1, state); } -WRITE_LINE_DEVICE_HANDLER( z80ctc_trg2_w ) { downcast(device)->trigger(2, state); } -WRITE_LINE_DEVICE_HANDLER( z80ctc_trg3_w ) { downcast(device)->trigger(3, state); } diff --git a/src/emu/machine/z80ctc.h b/src/emu/machine/z80ctc.h index 4ffd3395ff4..0e53cdc2179 100644 --- a/src/emu/machine/z80ctc.h +++ b/src/emu/machine/z80ctc.h @@ -90,6 +90,14 @@ public: UINT8 read(int ch) { return m_channel[ch].read(); } void write(int ch, UINT8 data) { m_channel[ch].write(data); } void trigger(int ch, UINT8 data) { m_channel[ch].trigger(data); } + + // read/write handlers + DECLARE_READ8_MEMBER( read ); + DECLARE_WRITE8_MEMBER( write ); + DECLARE_WRITE_LINE_MEMBER( trg0 ); + DECLARE_WRITE_LINE_MEMBER( trg1 ); + DECLARE_WRITE_LINE_MEMBER( trg2 ); + DECLARE_WRITE_LINE_MEMBER( trg3 ); private: // device-level overrides @@ -151,18 +159,4 @@ private: extern const device_type Z80CTC; - -//************************************************************************** -// READ/WRITE HANDLERS -//************************************************************************** - -WRITE8_DEVICE_HANDLER( z80ctc_w ); -READ8_DEVICE_HANDLER( z80ctc_r ); - -WRITE_LINE_DEVICE_HANDLER( z80ctc_trg0_w ); -WRITE_LINE_DEVICE_HANDLER( z80ctc_trg1_w ); -WRITE_LINE_DEVICE_HANDLER( z80ctc_trg2_w ); -WRITE_LINE_DEVICE_HANDLER( z80ctc_trg3_w ); - - #endif diff --git a/src/mame/audio/cchasm.c b/src/mame/audio/cchasm.c index 655b260c089..5d5e4d7ec9a 100644 --- a/src/mame/audio/cchasm.c +++ b/src/mame/audio/cchasm.c @@ -17,7 +17,7 @@ WRITE8_MEMBER(cchasm_state::cchasm_reset_coin_flag_w) if (m_coin_flag) { m_coin_flag = 0; - z80ctc_trg0_w(m_ctc, m_coin_flag); + m_ctc->trg0(m_coin_flag); } } @@ -26,7 +26,7 @@ INPUT_CHANGED_MEMBER(cchasm_state::cchasm_set_coin_flag ) if (!newval && !m_coin_flag) { m_coin_flag = 1; - z80ctc_trg0_w(m_ctc, m_coin_flag); + m_ctc->trg0(m_coin_flag); } } @@ -39,7 +39,7 @@ READ8_MEMBER(cchasm_state::cchasm_coin_sound_r) READ8_MEMBER(cchasm_state::cchasm_soundlatch2_r) { m_sound_flags &= ~0x80; - z80ctc_trg2_w(m_ctc, 0); + m_ctc->trg2(0); return soundlatch2_byte_r(space, offset); } @@ -65,7 +65,7 @@ WRITE16_MEMBER(cchasm_state::cchasm_io_w) case 1: m_sound_flags |= 0x80; soundlatch2_byte_w(space, offset, data); - z80ctc_trg2_w(m_ctc, 1); + m_ctc->trg2(1); cputag_set_input_line(machine(), "audiocpu", INPUT_LINE_NMI, PULSE_LINE); break; case 2: @@ -134,5 +134,5 @@ SOUND_START( cchasm ) state->m_sound_flags = 0; state->m_output[0] = 0; state->m_output[1] = 0; - state->m_ctc = machine.device("ctc"); + state->m_ctc = machine.device("ctc"); } diff --git a/src/mame/audio/cinemat.c b/src/mame/audio/cinemat.c index ff8ebaa3b09..97d4a19260b 100644 --- a/src/mame/audio/cinemat.c +++ b/src/mame/audio/cinemat.c @@ -1435,8 +1435,8 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( demon_sound_ports, AS_IO, 8, driver_device ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVWRITE_LEGACY("ctc", z80ctc_w) - AM_RANGE(0x1c, 0x1f) AM_DEVWRITE_LEGACY("ctc", z80ctc_w) + AM_RANGE(0x00, 0x03) AM_DEVWRITE("ctc", z80ctc_device, write) + AM_RANGE(0x1c, 0x1f) AM_DEVWRITE("ctc", z80ctc_device, write) ADDRESS_MAP_END diff --git a/src/mame/audio/senjyo.c b/src/mame/audio/senjyo.c index c3d2a8ab1ed..aa5fd52a394 100644 --- a/src/mame/audio/senjyo.c +++ b/src/mame/audio/senjyo.c @@ -1,12 +1,7 @@ #include "emu.h" -#include "sound/samples.h" #include "includes/senjyo.h" -/* single tone generator */ -#define SINGLE_LENGTH 10000 -#define SINGLE_DIVIDER 8 - const z80_daisy_config senjyo_daisy_chain[] = { { "z80ctc" }, @@ -38,56 +33,23 @@ Z80PIO_INTERFACE( senjyo_pio_intf ) /* z80 ctc */ Z80CTC_INTERFACE( senjyo_ctc_intf ) { - NOTIMER_2, /* timer disables */ + 0, /* timer disables */ DEVCB_CPU_INPUT_LINE("sub", INPUT_LINE_IRQ0), /* interrupt handler */ - DEVCB_LINE(z80ctc_trg1_w), /* ZC/TO0 callback */ - DEVCB_NULL, /* ZC/TO1 callback */ - DEVCB_NULL /* ZC/TO2 callback */ + DEVCB_DEVICE_LINE_MEMBER("z80ctc", z80ctc_device, trg1), /* ZC/TO0 callback */ + DEVCB_NULL, /* ZC/TO1 callback */ + DEVCB_DRIVER_LINE_MEMBER(senjyo_state, sound_line_clock) /* ZC/TO2 callback */ }; +WRITE_LINE_MEMBER(senjyo_state::sound_line_clock) +{ + if (state != 0) + { + dac_signed_data_16_w(m_dac, 2184 * 2 * ((m_sound_state & 8) ? m_single_volume : 0)); + m_sound_state++; + } +} WRITE8_MEMBER(senjyo_state::senjyo_volume_w) { - samples_device *samples = machine().device("samples"); - m_single_volume = data & 0x0f; - samples->set_volume(0, m_single_volume / 15.0); -} - - -static TIMER_CALLBACK( senjyo_sh_update ) -{ - samples_device *samples = machine.device("samples"); - senjyo_state *state = machine.driver_data(); - - /* ctc2 timer single tone generator frequency */ - z80ctc_device *ctc = machine.device("z80ctc"); - attotime period = ctc->period(2); - if (period != attotime::zero) - state->m_single_rate = ATTOSECONDS_TO_HZ(period.attoseconds); - else - state->m_single_rate = 0; - - samples->set_frequency(0, state->m_single_rate); -} - - -SAMPLES_START( senjyo_sh_start ) -{ - running_machine &machine = device.machine(); - senjyo_state *state = machine.driver_data(); - int i; - - state->m_single_data = auto_alloc_array(machine, INT16, SINGLE_LENGTH); - - for (i = 0;i < SINGLE_LENGTH;i++) /* freq = ctc2 zco / 8 */ - state->m_single_data[i] = ((i/SINGLE_DIVIDER)&0x01)*127*256; - - /* CTC2 single tone generator */ - state->m_single_rate = 1000; - state->m_single_volume = 0; - device.set_volume(0, state->m_single_volume / 15.0); - device.start_raw(0, state->m_single_data, SINGLE_LENGTH, state->m_single_rate, true); - - machine.scheduler().timer_pulse(machine.primary_screen->frame_period(), FUNC(senjyo_sh_update)); } diff --git a/src/mame/drivers/astrocde.c b/src/mame/drivers/astrocde.c index 31df619cc90..9ddaed17d12 100644 --- a/src/mame/drivers/astrocde.c +++ b/src/mame/drivers/astrocde.c @@ -707,7 +707,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( tenpin_sub_io_map, AS_IO, 8, astrocde_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x90, 0x93) AM_DEVREADWRITE_LEGACY("ctc", z80ctc_r, z80ctc_w) + AM_RANGE(0x90, 0x93) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) AM_RANGE(0x97, 0x97) AM_READ(soundlatch_byte_r) AM_RANGE(0x98, 0x98) AM_DEVWRITE_LEGACY("aysnd", ay8910_address_w) AM_RANGE(0x98, 0x98) AM_DEVREAD_LEGACY("aysnd", ay8910_r) diff --git a/src/mame/drivers/cchasm.c b/src/mame/drivers/cchasm.c index 88e4b55c4f8..008a1ffb2a8 100644 --- a/src/mame/drivers/cchasm.c +++ b/src/mame/drivers/cchasm.c @@ -64,7 +64,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( sound_portmap, AS_IO, 8, cchasm_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE_LEGACY("ctc", z80ctc_r, z80ctc_w) + AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) ADDRESS_MAP_END WRITE_LINE_MEMBER(cchasm_state::cchasm_6840_irq) diff --git a/src/mame/drivers/csplayh5.c b/src/mame/drivers/csplayh5.c index 1425816987e..aaf4c008ed3 100644 --- a/src/mame/drivers/csplayh5.c +++ b/src/mame/drivers/csplayh5.c @@ -357,7 +357,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( csplayh5_sound_io_map, AS_IO, 8, csplayh5_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE_LEGACY("ctc", z80ctc_r, z80ctc_w) + AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) AM_RANGE(0x50, 0x50) AM_READWRITE(tmpz84c011_0_pa_r, tmpz84c011_0_pa_w) AM_RANGE(0x51, 0x51) AM_READWRITE(tmpz84c011_0_pb_r, tmpz84c011_0_pb_w) AM_RANGE(0x52, 0x52) AM_READWRITE(tmpz84c011_0_pc_r, tmpz84c011_0_pc_w) @@ -567,7 +567,7 @@ static Z80CTC_INTERFACE( ctc_intf ) { 0, /* timer disables */ DEVCB_CPU_INPUT_LINE("audiocpu", INPUT_LINE_IRQ0),/* interrupt handler */ - DEVCB_LINE(z80ctc_trg3_w), /* ZC/TO0 callback ctc1.zc0 -> ctc1.trg3 */ + DEVCB_DEVICE_LINE_MEMBER("ctc", z80ctc_device, trg3), /* ZC/TO0 callback ctc1.zc0 -> ctc1.trg3 */ DEVCB_NULL, /* ZC/TO1 callback */ DEVCB_NULL /* ZC/TO2 callback */ }; diff --git a/src/mame/drivers/dlair.c b/src/mame/drivers/dlair.c index 17f400775f3..9146a0901eb 100644 --- a/src/mame/drivers/dlair.c +++ b/src/mame/drivers/dlair.c @@ -443,7 +443,7 @@ ADDRESS_MAP_END /* complete memory map derived from schematics */ static ADDRESS_MAP_START( dleuro_io_map, AS_IO, 8, dlair_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_MIRROR(0x7c) AM_DEVREADWRITE_LEGACY("ctc", z80ctc_r, z80ctc_w) + AM_RANGE(0x00, 0x03) AM_MIRROR(0x7c) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) AM_RANGE(0x80, 0x83) AM_MIRROR(0x7c) AM_DEVREADWRITE_LEGACY("sio", z80sio_ba_cd_r, z80sio_ba_cd_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/jankenmn.c b/src/mame/drivers/jankenmn.c index 2474a905cac..62791d55bd0 100644 --- a/src/mame/drivers/jankenmn.c +++ b/src/mame/drivers/jankenmn.c @@ -237,7 +237,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( jankenmn_port_map, AS_IO, 8, jankenmn_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE_LEGACY("ctc", z80ctc_r, z80ctc_w) + AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) AM_RANGE(0x30, 0x30) AM_WRITENOP // ??? diff --git a/src/mame/drivers/mcr.c b/src/mame/drivers/mcr.c index 6dfbed77574..de5ea4665bd 100644 --- a/src/mame/drivers/mcr.c +++ b/src/mame/drivers/mcr.c @@ -674,7 +674,7 @@ static ADDRESS_MAP_START( cpu_90009_portmap, AS_IO, 8, mcr_state ) SSIO_INPUT_PORTS("ssio") AM_RANGE(0xe0, 0xe0) AM_WRITE(watchdog_reset_w) AM_RANGE(0xe8, 0xe8) AM_WRITENOP - AM_RANGE(0xf0, 0xf3) AM_DEVREADWRITE_LEGACY("ctc", z80ctc_r, z80ctc_w) + AM_RANGE(0xf0, 0xf3) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) ADDRESS_MAP_END @@ -701,7 +701,7 @@ static ADDRESS_MAP_START( cpu_90010_portmap, AS_IO, 8, mcr_state ) SSIO_INPUT_PORTS("ssio") AM_RANGE(0xe0, 0xe0) AM_WRITE(watchdog_reset_w) AM_RANGE(0xe8, 0xe8) AM_WRITENOP - AM_RANGE(0xf0, 0xf3) AM_DEVREADWRITE_LEGACY("ctc", z80ctc_r, z80ctc_w) + AM_RANGE(0xf0, 0xf3) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) ADDRESS_MAP_END @@ -729,7 +729,7 @@ static ADDRESS_MAP_START( cpu_91490_portmap, AS_IO, 8, mcr_state ) SSIO_INPUT_PORTS("ssio") AM_RANGE(0xe0, 0xe0) AM_WRITE(watchdog_reset_w) AM_RANGE(0xe8, 0xe8) AM_WRITENOP - AM_RANGE(0xf0, 0xf3) AM_DEVREADWRITE_LEGACY("ctc", z80ctc_r, z80ctc_w) + AM_RANGE(0xf0, 0xf3) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) ADDRESS_MAP_END @@ -753,7 +753,7 @@ static ADDRESS_MAP_START( ipu_91695_portmap, AS_IO, 8, mcr_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x03) AM_MIRROR(0xe0) AM_DEVREADWRITE_LEGACY("ipu_pio0", z80pio_cd_ba_r, z80pio_cd_ba_w) AM_RANGE(0x04, 0x07) AM_MIRROR(0xe0) AM_DEVREADWRITE_LEGACY("ipu_sio", z80sio_cd_ba_r, z80sio_cd_ba_w) - AM_RANGE(0x08, 0x0b) AM_MIRROR(0xe0) AM_DEVREADWRITE_LEGACY("ipu_ctc", z80ctc_r, z80ctc_w) + AM_RANGE(0x08, 0x0b) AM_MIRROR(0xe0) AM_DEVREADWRITE("ipu_ctc", z80ctc_device, read, write) AM_RANGE(0x0c, 0x0f) AM_MIRROR(0xe0) AM_DEVREADWRITE_LEGACY("ipu_pio1", z80pio_cd_ba_r, z80pio_cd_ba_w) AM_RANGE(0x10, 0x13) AM_MIRROR(0xe0) AM_WRITE(mcr_ipu_laserdisk_w) AM_RANGE(0x1c, 0x1f) AM_MIRROR(0xe0) AM_READWRITE(mcr_ipu_watchdog_r, mcr_ipu_watchdog_w) diff --git a/src/mame/drivers/mcr3.c b/src/mame/drivers/mcr3.c index 332e453c5e3..a3b163a0289 100644 --- a/src/mame/drivers/mcr3.c +++ b/src/mame/drivers/mcr3.c @@ -497,7 +497,7 @@ static ADDRESS_MAP_START( mcrmono_portmap, AS_IO, 8, mcr3_state ) AM_RANGE(0x04, 0x04) AM_MIRROR(0x78) AM_READ_PORT("MONO.IP4") AM_RANGE(0x05, 0x05) AM_MIRROR(0x78) AM_WRITE(mcrmono_control_port_w) AM_RANGE(0x07, 0x07) AM_MIRROR(0x78) AM_WRITE(watchdog_reset_w) - AM_RANGE(0xf0, 0xf3) AM_MIRROR(0x0c) AM_DEVREADWRITE_LEGACY("ctc", z80ctc_r, z80ctc_w) + AM_RANGE(0xf0, 0xf3) AM_MIRROR(0x0c) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) ADDRESS_MAP_END @@ -527,7 +527,7 @@ static ADDRESS_MAP_START( spyhunt_portmap, AS_IO, 8, mcr3_state ) AM_RANGE(0x84, 0x86) AM_WRITE(spyhunt_scroll_value_w) AM_RANGE(0xe0, 0xe0) AM_WRITE(watchdog_reset_w) AM_RANGE(0xe8, 0xe8) AM_WRITENOP - AM_RANGE(0xf0, 0xf3) AM_DEVREADWRITE_LEGACY("ctc", z80ctc_r, z80ctc_w) + AM_RANGE(0xf0, 0xf3) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) ADDRESS_MAP_END diff --git a/src/mame/drivers/nbmj9195.c b/src/mame/drivers/nbmj9195.c index 3a383984e26..46d319f9dcd 100644 --- a/src/mame/drivers/nbmj9195.c +++ b/src/mame/drivers/nbmj9195.c @@ -613,9 +613,9 @@ WRITE8_MEMBER(nbmj9195_state::tmpz84c011_1_dir_pe_w) /* CTC of main cpu, ch0 trigger is vblank */ static INTERRUPT_GEN( ctc0_trg1 ) { - device_t *ctc = device->machine().device("main_ctc"); - z80ctc_trg1_w(ctc, 1); - z80ctc_trg1_w(ctc, 0); + z80ctc_device *ctc = device->machine().device("main_ctc"); + ctc->trg1(1); + ctc->trg1(0); } static Z80CTC_INTERFACE( ctc_intf_main ) @@ -631,7 +631,7 @@ static Z80CTC_INTERFACE( ctc_intf_audio ) { 0, /* timer disables */ DEVCB_CPU_INPUT_LINE("audiocpu", INPUT_LINE_IRQ0),/* interrupt handler */ - DEVCB_LINE(z80ctc_trg3_w), /* ZC/TO0 callback ctc1.zc0 -> ctc1.trg3 */ + DEVCB_DEVICE_LINE_MEMBER("audio_ctc", z80ctc_device, trg3), /* ZC/TO0 callback ctc1.zc0 -> ctc1.trg3 */ DEVCB_NULL, /* ZC/TO1 callback */ DEVCB_NULL /* ZC/TO2 callback */ }; @@ -665,7 +665,7 @@ static DRIVER_INIT( nbmj9195 ) } static ADDRESS_MAP_START( tmpz84c011_regs, AS_IO, 8, nbmj9195_state ) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE_LEGACY("main_ctc", z80ctc_r,z80ctc_w) + AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("main_ctc", z80ctc_device, read, write) AM_RANGE(0x50, 0x50) AM_READWRITE(tmpz84c011_0_pa_r,tmpz84c011_0_pa_w) AM_RANGE(0x51, 0x51) AM_READWRITE(tmpz84c011_0_pb_r,tmpz84c011_0_pb_w) AM_RANGE(0x52, 0x52) AM_READWRITE(tmpz84c011_0_pc_r,tmpz84c011_0_pc_w) @@ -1157,7 +1157,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( sailorws_sound_io_map, AS_IO, 8, nbmj9195_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE_LEGACY("audio_ctc", z80ctc_r,z80ctc_w) + AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("audio_ctc", z80ctc_device, read, write) AM_RANGE(0x50, 0x50) AM_READWRITE(tmpz84c011_1_pa_r,tmpz84c011_1_pa_w) AM_RANGE(0x51, 0x51) AM_READWRITE(tmpz84c011_1_pb_r,tmpz84c011_1_pb_w) AM_RANGE(0x52, 0x52) AM_READWRITE(tmpz84c011_1_pc_r,tmpz84c011_1_pc_w) diff --git a/src/mame/drivers/niyanpai.c b/src/mame/drivers/niyanpai.c index a08e7cd1861..cca70d7529b 100644 --- a/src/mame/drivers/niyanpai.c +++ b/src/mame/drivers/niyanpai.c @@ -239,7 +239,7 @@ static Z80CTC_INTERFACE( ctc_intf ) { 0, /* timer disables */ DEVCB_CPU_INPUT_LINE("audiocpu", INPUT_LINE_IRQ0),/* interrupt handler */ - DEVCB_LINE(z80ctc_trg3_w), /* ZC/TO0 callback ctc1.zc0 -> ctc1.trg3 */ + DEVCB_DEVICE_LINE_MEMBER("ctc", z80ctc_device, trg3), /* ZC/TO0 callback ctc1.zc0 -> ctc1.trg3 */ DEVCB_NULL, /* ZC/TO1 callback */ DEVCB_NULL /* ZC/TO2 callback */ }; @@ -497,7 +497,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( niyanpai_sound_io_map, AS_IO, 8, niyanpai_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x10, 0x13) AM_DEVREADWRITE_LEGACY("ctc", z80ctc_r, z80ctc_w) + AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) AM_RANGE(0x50, 0x50) AM_READWRITE(tmpz84c011_0_pa_r, tmpz84c011_0_pa_w) AM_RANGE(0x51, 0x51) AM_READWRITE(tmpz84c011_0_pb_r, tmpz84c011_0_pb_w) AM_RANGE(0x52, 0x52) AM_READWRITE(tmpz84c011_0_pc_r, tmpz84c011_0_pc_w) diff --git a/src/mame/drivers/pipeline.c b/src/mame/drivers/pipeline.c index 081a218b457..6ec85b6a9ae 100644 --- a/src/mame/drivers/pipeline.c +++ b/src/mame/drivers/pipeline.c @@ -208,7 +208,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( sound_port, AS_IO, 8, pipeline_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE_LEGACY("ctc", z80ctc_r, z80ctc_w) + AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) AM_RANGE(0x06, 0x07) AM_NOP ADDRESS_MAP_END diff --git a/src/mame/drivers/proconn.c b/src/mame/drivers/proconn.c index 2e234e580e2..3a4fb875f2b 100644 --- a/src/mame/drivers/proconn.c +++ b/src/mame/drivers/proconn.c @@ -38,10 +38,10 @@ public: DECLARE_WRITE8_MEMBER( ay_w0 ) { ay8910_address_data_w(m_ay, 0, data); } DECLARE_WRITE8_MEMBER( ay_w1 ) { ay8910_address_data_w(m_ay, 1, data); } - DECLARE_WRITE8_MEMBER( ctc_w0 ) { z80ctc_w(m_z80ctc, 0, data); } - DECLARE_WRITE8_MEMBER( ctc_w1 ) { z80ctc_w(m_z80ctc, 1, data); } - DECLARE_WRITE8_MEMBER( ctc_w2 ) { z80ctc_w(m_z80ctc, 2, data); } - DECLARE_WRITE8_MEMBER( ctc_w3 ) { z80ctc_w(m_z80ctc, 3, data); } + DECLARE_WRITE8_MEMBER( ctc_w0 ) { m_z80ctc->write(0, data); } + DECLARE_WRITE8_MEMBER( ctc_w1 ) { m_z80ctc->write(1, data); } + DECLARE_WRITE8_MEMBER( ctc_w2 ) { m_z80ctc->write(2, data); } + DECLARE_WRITE8_MEMBER( ctc_w3 ) { m_z80ctc->write(3, data); } DECLARE_WRITE8_MEMBER( sio_w0 ) { z80sio_cd_ba_w(m_z80sio, 0, data); } DECLARE_WRITE8_MEMBER( sio_w1 ) { z80sio_cd_ba_w(m_z80sio, 1, data); } @@ -75,10 +75,10 @@ public: DECLARE_READ8_MEMBER( ay_r0 ) { return ay8910_r(m_ay, 0); } - DECLARE_READ8_MEMBER( ctc_r0 ) { return z80ctc_r(m_z80ctc, 0); } - DECLARE_READ8_MEMBER( ctc_r1 ) { return z80ctc_r(m_z80ctc, 1); } - DECLARE_READ8_MEMBER( ctc_r2 ) { return z80ctc_r(m_z80ctc, 2); } - DECLARE_READ8_MEMBER( ctc_r3 ) { return z80ctc_r(m_z80ctc, 3); } + DECLARE_READ8_MEMBER( ctc_r0 ) { return m_z80ctc->read(0); } + DECLARE_READ8_MEMBER( ctc_r1 ) { return m_z80ctc->read(1); } + DECLARE_READ8_MEMBER( ctc_r2 ) { return m_z80ctc->read(2); } + DECLARE_READ8_MEMBER( ctc_r3 ) { return m_z80ctc->read(3); } DECLARE_READ8_MEMBER( sio_r0 ) { return z80sio_cd_ba_r(m_z80sio, 0); } DECLARE_READ8_MEMBER( sio_r1 ) { return z80sio_cd_ba_r(m_z80sio, 1); } diff --git a/src/mame/drivers/senjyo.c b/src/mame/drivers/senjyo.c index 78ad80d2e3f..4f0d8fa43ff 100644 --- a/src/mame/drivers/senjyo.c +++ b/src/mame/drivers/senjyo.c @@ -175,7 +175,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( senjyo_sound_io_map, AS_IO, 8, senjyo_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x03) AM_DEVREADWRITE_LEGACY("z80pio", z80pio_ba_cd_r, z80pio_ba_cd_w) - AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE_LEGACY("z80ctc", z80ctc_r, z80ctc_w) + AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("z80ctc", z80ctc_device, read, write) ADDRESS_MAP_END /* For the bootleg */ @@ -552,14 +552,6 @@ GFXDECODE_END -static const samples_interface senjyo_samples_interface = -{ - 1, - NULL, - senjyo_sh_start -}; - - static MACHINE_CONFIG_START( senjyo, senjyo_state ) /* basic machine hardware */ @@ -602,8 +594,8 @@ static MACHINE_CONFIG_START( senjyo, senjyo_state ) MCFG_SOUND_ADD("sn3", SN76496, 2000000) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) - MCFG_SAMPLES_ADD("samples", senjyo_samples_interface) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15) + MCFG_SOUND_ADD("dac", DAC, 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.05) MACHINE_CONFIG_END diff --git a/src/mame/includes/cchasm.h b/src/mame/includes/cchasm.h index 59b8e3d683e..ec2f257cdb4 100644 --- a/src/mame/includes/cchasm.h +++ b/src/mame/includes/cchasm.h @@ -15,7 +15,7 @@ public: int m_sound_flags; int m_coin_flag; - device_t *m_ctc; + z80ctc_device *m_ctc; int m_channel_active[2]; int m_output[2]; required_shared_ptr m_ram; diff --git a/src/mame/includes/senjyo.h b/src/mame/includes/senjyo.h index d1eae39649d..d469fb98f35 100644 --- a/src/mame/includes/senjyo.h +++ b/src/mame/includes/senjyo.h @@ -1,4 +1,4 @@ -#include "sound/samples.h" +#include "sound/dac.h" #include "cpu/z80/z80daisy.h" #include "machine/z80pio.h" #include "machine/z80ctc.h" @@ -7,7 +7,8 @@ class senjyo_state : public driver_device { public: senjyo_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) , + : driver_device(mconfig, type, tag), + m_dac(*this, "dac"), m_spriteram(*this, "spriteram"), m_fgscroll(*this, "fgscroll"), m_scrollx1(*this, "scrollx1"), @@ -29,6 +30,9 @@ public: INT16 *m_single_data; int m_single_rate; int m_single_volume; + int m_sound_state; + + required_device m_dac; required_shared_ptr m_spriteram; required_shared_ptr m_fgscroll; @@ -64,6 +68,7 @@ public: DECLARE_WRITE8_MEMBER(senjyo_bg3videoram_w); DECLARE_WRITE8_MEMBER(senjyo_bgstripes_w); DECLARE_WRITE8_MEMBER(senjyo_volume_w); + DECLARE_WRITE_LINE_MEMBER(sound_line_clock); DECLARE_WRITE8_MEMBER(sound_cmd_w); }; @@ -74,8 +79,6 @@ extern const z80_daisy_config senjyo_daisy_chain[]; extern const z80pio_interface senjyo_pio_intf; extern const z80ctc_interface senjyo_ctc_intf; -SAMPLES_START( senjyo_sh_start ); - /*----------- defined in video/senjyo.c -----------*/ diff --git a/src/mame/machine/mcr.c b/src/mame/machine/mcr.c index a3c93da7628..13d90c5547f 100644 --- a/src/mame/machine/mcr.c +++ b/src/mame/machine/mcr.c @@ -106,7 +106,7 @@ Z80CTC_INTERFACE( mcr_ctc_intf ) { 0, /* timer disables */ DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), /* interrupt handler */ - DEVCB_LINE(z80ctc_trg1_w), /* ZC/TO0 callback */ + DEVCB_DEVICE_LINE_MEMBER("ctc", z80ctc_device, trg1), /* ZC/TO0 callback */ DEVCB_NULL, /* ZC/TO1 callback */ DEVCB_NULL /* ZC/TO2 callback */ }; @@ -187,38 +187,38 @@ MACHINE_RESET( mcr ) TIMER_DEVICE_CALLBACK( mcr_interrupt ) { //mcr_state *state = timer.machine().driver_data(); - device_t *ctc = timer.machine().device("ctc"); + z80ctc_device *ctc = timer.machine().device("ctc"); int scanline = param; /* CTC line 2 is connected to VBLANK, which is once every 1/2 frame */ /* for the 30Hz interlaced display */ if(scanline == 0 || scanline == 240) { - z80ctc_trg2_w(ctc, 1); - z80ctc_trg2_w(ctc, 0); + ctc->trg2(1); + ctc->trg2(0); } /* CTC line 3 is connected to 493, which is signalled once every */ /* frame at 30Hz */ if (scanline == 0) { - z80ctc_trg3_w(ctc, 1); - z80ctc_trg3_w(ctc, 0); + ctc->trg3(1); + ctc->trg3(0); } } TIMER_DEVICE_CALLBACK( mcr_ipu_interrupt ) { //mcr_state *state = timer.machine().driver_data(); - device_t *ctc = timer.machine().device("ctc"); + z80ctc_device *ctc = timer.machine().device("ctc"); int scanline = param; /* CTC line 3 is connected to 493, which is signalled once every */ /* frame at 30Hz */ if (scanline == 0) { - z80ctc_trg3_w(ctc, 1); - z80ctc_trg3_w(ctc, 0); + ctc->trg3(1); + ctc->trg3(0); } }