diff options
author | AJR <ajrhacker@users.noreply.github.com> | 2018-06-03 22:32:24 -0400 |
---|---|---|
committer | AJR <ajrhacker@users.noreply.github.com> | 2018-06-03 22:50:39 -0400 |
commit | fb94760939d839a5711a1e342fcfecefbeb81c06 (patch) | |
tree | 10a99a230a2c7dcba103083c36d1f5508b0a704c | |
parent | 0dc611e2a9ec11d09944153e714f4665bb508db1 (diff) |
exidy.cpp, victory.cpp: Full encapsulation of audio devices
-rw-r--r-- | src/mame/audio/exidy.cpp | 249 | ||||
-rw-r--r-- | src/mame/audio/exidy.h | 98 | ||||
-rw-r--r-- | src/mame/drivers/exidy.cpp | 76 | ||||
-rw-r--r-- | src/mame/drivers/victory.cpp | 11 | ||||
-rw-r--r-- | src/mame/includes/exidy.h | 5 | ||||
-rw-r--r-- | src/mame/includes/victory.h | 2 |
6 files changed, 268 insertions, 173 deletions
diff --git a/src/mame/audio/exidy.cpp b/src/mame/audio/exidy.cpp index 5da19431529..31c622548a9 100644 --- a/src/mame/audio/exidy.cpp +++ b/src/mame/audio/exidy.cpp @@ -8,8 +8,6 @@ #include "emu.h" #include "audio/exidy.h" -#include "includes/exidy.h" -#include "includes/victory.h" #include "cpu/z80/z80.h" #include "machine/input_merger.h" @@ -196,11 +194,11 @@ exidy_sound_device::exidy_sound_device(const machine_config &mconfig, const char exidy_sh8253_sound_device::exidy_sh8253_sound_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : exidy_sound_device(mconfig, type, tag, owner, clock), - m_riot(*this, "^riot"), - m_cvsd(*this, "^cvsd"), - m_cvsdcpu(*this, "^cvsdcpu"), - m_tms(*this, "^tms"), - m_pia1(*this, "^pia1") + m_riot(*this, "riot"), + m_cvsd(*this, "cvsd"), + m_cvsdcpu(*this, "cvsdcpu"), + m_tms(*this, "tms"), + m_pia(*this, "pia") { } @@ -505,14 +503,6 @@ WRITE8_MEMBER(exidy_sh8253_sound_device::sh8253_w) } -READ8_MEMBER(exidy_sh8253_sound_device::sh8253_r) -{ - logerror("8253(R): %x\n",offset); - - return 0; -} - - /************************************* * @@ -650,15 +640,32 @@ WRITE8_MEMBER(venture_sound_device::filter_w) DEFINE_DEVICE_TYPE(EXIDY_VENTURE, venture_sound_device, "venture_sound", "Exidy SFX+PSG") venture_sound_device::venture_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : exidy_sh8253_sound_device(mconfig, EXIDY_VENTURE, tag, owner, clock) + : venture_sound_device(mconfig, EXIDY_VENTURE, tag, owner, clock) +{ +} + +venture_sound_device::venture_sound_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : exidy_sh8253_sound_device(mconfig, type, tag, owner, clock) + , m_pa_callback(*this) + , m_pb_callback(*this) + , m_ca2_callback(*this) + , m_cb2_callback(*this) { } +void venture_sound_device::device_resolve_objects() +{ + m_pa_callback.resolve_safe(); + m_pb_callback.resolve_safe(); + m_ca2_callback.resolve_safe(); + m_cb2_callback.resolve_safe(); +} + //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- -void venture_sound_device::device_start() +void exidy_sh8253_sound_device::device_start() { common_sh_start(); @@ -672,7 +679,7 @@ void venture_sound_device::device_start() // device_reset - device-specific reset //------------------------------------------------- -void venture_sound_device::device_reset() +void exidy_sh8253_sound_device::device_reset() { common_sh_reset(); @@ -680,63 +687,93 @@ void venture_sound_device::device_reset() memset(m_sh8253_timer, 0, sizeof(m_sh8253_timer)); } -//------------------------------------------------- -// sound_stream_update - handle a stream update -//------------------------------------------------- -void venture_sound_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) +WRITE8_MEMBER(venture_sound_device::pa_w) +{ + m_pia->porta_w(data); +} + + +WRITE8_MEMBER(venture_sound_device::pb_w) { - exidy_sound_device::sound_stream_update(stream, inputs, outputs, samples); + m_pia->portb_w(data); } +WRITE_LINE_MEMBER(venture_sound_device::ca_w) +{ + m_pia->ca1_w(state); +} -void exidy_state::venture_audio_map(address_map &map) +WRITE_LINE_MEMBER(venture_sound_device::cb_w) +{ + m_pia->cb1_w(state); +} + + +WRITE8_MEMBER(venture_sound_device::pia_pa_w) +{ + m_pa_callback(data); +} + + +WRITE8_MEMBER(venture_sound_device::pia_pb_w) +{ + m_pb_callback(data); +} + + +WRITE_LINE_MEMBER(venture_sound_device::pia_ca2_w) +{ + m_ca2_callback(state); +} + + +WRITE_LINE_MEMBER(venture_sound_device::pia_cb2_w) +{ + m_cb2_callback(state); +} + + +void venture_sound_device::venture_audio_map(address_map &map) { map.global_mask(0x7fff); map(0x0000, 0x007f).mirror(0x0780).ram(); map(0x0800, 0x087f).mirror(0x0780).rw("riot", FUNC(riot6532_device::read), FUNC(riot6532_device::write)); - map(0x1000, 0x1003).mirror(0x07fc).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); - map(0x1800, 0x1803).mirror(0x07fc).rw("custom", FUNC(exidy_sh8253_sound_device::sh8253_r), FUNC(exidy_sh8253_sound_device::sh8253_w)); - map(0x2000, 0x27ff).w("custom", FUNC(venture_sound_device::filter_w)); - map(0x2800, 0x2807).mirror(0x07f8).rw("custom", FUNC(venture_sound_device::sh6840_r), FUNC(venture_sound_device::sh6840_w)); - map(0x3000, 0x3003).mirror(0x07fc).w("custom", FUNC(venture_sound_device::sfxctrl_w)); + map(0x1000, 0x1003).mirror(0x07fc).rw("pia", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x1800, 0x1803).mirror(0x07fc).w(this, FUNC(venture_sound_device::sh8253_w)); + map(0x2000, 0x27ff).w(this, FUNC(venture_sound_device::filter_w)); + map(0x2800, 0x2807).mirror(0x07f8).rw(this, FUNC(venture_sound_device::sh6840_r), FUNC(venture_sound_device::sh6840_w)); + map(0x3000, 0x3003).mirror(0x07fc).w(this, FUNC(venture_sound_device::sfxctrl_w)); map(0x5800, 0x7fff).rom(); } -MACHINE_CONFIG_START(exidy_state::venture_audio) - +MACHINE_CONFIG_START(venture_sound_device::device_add_mconfig) MCFG_DEVICE_ADD("audiocpu", M6502, 3579545/4) MCFG_DEVICE_PROGRAM_MAP(venture_audio_map) MCFG_DEVICE_ADD("riot", RIOT6532, SH6532_CLOCK) - MCFG_RIOT6532_IN_PA_CB(READ8("custom", exidy_sh8253_sound_device, r6532_porta_r)) - MCFG_RIOT6532_OUT_PA_CB(WRITE8("custom", exidy_sh8253_sound_device, r6532_porta_w)) - MCFG_RIOT6532_IN_PB_CB(READ8("custom", exidy_sh8253_sound_device, r6532_portb_r)) - MCFG_RIOT6532_OUT_PB_CB(WRITE8("custom", exidy_sh8253_sound_device, r6532_portb_w)) + MCFG_RIOT6532_IN_PA_CB(READ8(*this, venture_sound_device, r6532_porta_r)) + MCFG_RIOT6532_OUT_PA_CB(WRITE8(*this, venture_sound_device, r6532_porta_w)) + MCFG_RIOT6532_IN_PB_CB(READ8(*this, venture_sound_device, r6532_portb_r)) + MCFG_RIOT6532_OUT_PB_CB(WRITE8(*this, venture_sound_device, r6532_portb_w)) MCFG_RIOT6532_IRQ_CB(WRITELINE("audioirq", input_merger_device, in_w<0>)) - MCFG_DEVICE_ADD("pia0", PIA6821, 0) - MCFG_PIA_WRITEPA_HANDLER(WRITE8("pia1", pia6821_device, portb_w)) - MCFG_PIA_WRITEPB_HANDLER(WRITE8("pia1", pia6821_device, porta_w)) - MCFG_PIA_CA2_HANDLER(WRITELINE("pia1", pia6821_device, cb1_w)) - MCFG_PIA_CB2_HANDLER(WRITELINE("pia1", pia6821_device, ca1_w)) - - MCFG_DEVICE_ADD("pia1", PIA6821, 0) - MCFG_PIA_WRITEPA_HANDLER(WRITE8("pia0", pia6821_device, portb_w)) - MCFG_PIA_WRITEPB_HANDLER(WRITE8("pia0", pia6821_device, porta_w)) - MCFG_PIA_CA2_HANDLER(WRITELINE("pia0", pia6821_device, cb1_w)) - MCFG_PIA_CB2_HANDLER(WRITELINE("pia0", pia6821_device, ca1_w)) + MCFG_DEVICE_ADD("pia", PIA6821, 0) + MCFG_PIA_WRITEPA_HANDLER(WRITE8(*this, venture_sound_device, pia_pa_w)) + MCFG_PIA_WRITEPB_HANDLER(WRITE8(*this, venture_sound_device, pia_pb_w)) + MCFG_PIA_CA2_HANDLER(WRITELINE(*this, venture_sound_device, pia_ca2_w)) + MCFG_PIA_CB2_HANDLER(WRITELINE(*this, venture_sound_device, pia_cb2_w)) MCFG_PIA_IRQB_HANDLER(WRITELINE("audioirq", input_merger_device, in_w<1>)) - MCFG_INPUT_MERGER_ANY_HIGH("audioirq") + MCFG_INPUT_MERGER_ANY_HIGH("audioirq") // open collector MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("audiocpu", m6502_device::IRQ_LINE)) SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("custom", EXIDY_VENTURE, 0) + MCFG_DEVICE_MODIFY(DEVICE_SELF) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END @@ -748,7 +785,14 @@ MACHINE_CONFIG_END * *************************************/ -WRITE8_MEMBER(venture_sound_device::mtrap_voiceio_w) +DEFINE_DEVICE_TYPE(EXIDY_MTRAP, mtrap_sound_device, "mtrap_sound", "Exidy SFX+PSG+CVSD") + +mtrap_sound_device::mtrap_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : venture_sound_device(mconfig, EXIDY_MTRAP, tag, owner, clock) +{ +} + +WRITE8_MEMBER(mtrap_sound_device::voiceio_w) { if (!(offset & 0x10)) m_cvsd->digit_w(data & 1); @@ -758,7 +802,7 @@ WRITE8_MEMBER(venture_sound_device::mtrap_voiceio_w) } -READ8_MEMBER(venture_sound_device::mtrap_voiceio_r) +READ8_MEMBER(mtrap_sound_device::voiceio_r) { if (!(offset & 0x80)) { @@ -776,21 +820,22 @@ READ8_MEMBER(venture_sound_device::mtrap_voiceio_r) } -void exidy_state::cvsd_map(address_map &map) +void mtrap_sound_device::cvsd_map(address_map &map) { map.global_mask(0x3fff); - map(0x0000, 0x3fff).rom(); + map(0x0000, 0x3fff).rom().region("cvsdcpu", 0); } -void exidy_state::cvsd_iomap(address_map &map) +void mtrap_sound_device::cvsd_iomap(address_map &map) { map.global_mask(0xff); - map(0x00, 0xff).rw("custom", FUNC(venture_sound_device::mtrap_voiceio_r), FUNC(venture_sound_device::mtrap_voiceio_w)); + map(0x00, 0xff).rw(this, FUNC(mtrap_sound_device::voiceio_r), FUNC(mtrap_sound_device::voiceio_w)); } -MACHINE_CONFIG_START(exidy_state::mtrap_cvsd_audio) +MACHINE_CONFIG_START(mtrap_sound_device::device_add_mconfig) + venture_sound_device::device_add_mconfig(config); MCFG_DEVICE_ADD("cvsdcpu", Z80, CVSD_Z80_CLOCK) MCFG_DEVICE_PROGRAM_MAP(cvsd_map) @@ -802,7 +847,6 @@ MACHINE_CONFIG_START(exidy_state::mtrap_cvsd_audio) MACHINE_CONFIG_END - /************************************* * * Victory @@ -816,12 +860,15 @@ MACHINE_CONFIG_END READ8_MEMBER(victory_sound_device::response_r) { - uint8_t ret = m_pia1->b_output(); + uint8_t ret = m_pia->b_output(); - if (VICTORY_LOG_SOUND) logerror("%s:!!!! Sound response read = %02X\n", machine().describe_context(), ret); + if (!machine().side_effects_disabled()) + { + if (VICTORY_LOG_SOUND) logerror("%s:!!!! Sound response read = %02X\n", machine().describe_context(), ret); - m_pia1_cb1 = 0; - m_pia1->cb1_w(m_pia1_cb1); + m_pia_cb1 = 0; + m_pia->cb1_w(m_pia_cb1); + } return ret; } @@ -829,7 +876,7 @@ READ8_MEMBER(victory_sound_device::response_r) READ8_MEMBER(victory_sound_device::status_r) { - uint8_t ret = (m_pia1_ca1 << 7) | (m_pia1_cb1 << 6); + uint8_t ret = (m_pia_ca1 << 7) | (m_pia_cb1 << 6); if (VICTORY_LOG_SOUND) logerror("%s:!!!! Sound status read = %02X\n", machine().describe_context(), ret); @@ -839,9 +886,9 @@ READ8_MEMBER(victory_sound_device::status_r) TIMER_CALLBACK_MEMBER(victory_sound_device::delayed_command_w) { - m_pia1->porta_w(param); - m_pia1_ca1 = 0; - m_pia1->ca1_w(m_pia1_ca1); + m_pia->porta_w(param); + m_pia_ca1 = 0; + m_pia->ca1_w(m_pia_ca1); } WRITE8_MEMBER(victory_sound_device::command_w) @@ -858,8 +905,8 @@ WRITE_LINE_MEMBER(victory_sound_device::irq_clear_w) if (!state) { - m_pia1_ca1 = 1; - m_pia1->ca1_w(m_pia1_ca1); + m_pia_ca1 = 1; + m_pia->ca1_w(m_pia_ca1); } } @@ -870,8 +917,8 @@ WRITE_LINE_MEMBER(victory_sound_device::main_ack_w) if (m_victory_sound_response_ack_clk && !state) { - m_pia1_cb1 = 1; - m_pia1->cb1_w(m_pia1_cb1); + m_pia_cb1 = 1; + m_pia->cb1_w(m_pia_cb1); } m_victory_sound_response_ack_clk = state; @@ -893,15 +940,10 @@ victory_sound_device::victory_sound_device(const machine_config &mconfig, const void victory_sound_device::device_start() { save_item(NAME(m_victory_sound_response_ack_clk)); - save_item(NAME(m_pia1_ca1)); - save_item(NAME(m_pia1_cb1)); - - common_sh_start(); + save_item(NAME(m_pia_ca1)); + save_item(NAME(m_pia_cb1)); - /* 8253 */ - m_freq_to_step = (1 << 24) / SH8253_CLOCK; - - sh8253_register_state_globals(); + exidy_sh8253_sound_device::device_start(); } //------------------------------------------------- @@ -910,70 +952,57 @@ void victory_sound_device::device_start() void victory_sound_device::device_reset() { - common_sh_reset(); - memset(m_sh8253_timer, 0, sizeof(m_sh8253_timer)); + exidy_sh8253_sound_device::device_reset(); /* the flip-flop @ F4 is reset */ m_victory_sound_response_ack_clk = 0; - m_pia1_cb1 = 1; - m_pia1->cb1_w(m_pia1_cb1); + m_pia_cb1 = 1; + m_pia->cb1_w(m_pia_cb1); /* these two lines shouldn't be needed, but it avoids the log entry as the sound CPU checks port A before the main CPU ever writes to it */ - m_pia1->porta_w(0); - m_pia1_ca1 = 1; - m_pia1->ca1_w(m_pia1_ca1); -} - -//------------------------------------------------- -// sound_stream_update - handle a stream update -//------------------------------------------------- - -void victory_sound_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) -{ - exidy_sound_device::sound_stream_update(stream, inputs, outputs, samples); + m_pia->porta_w(0); + m_pia_ca1 = 1; + m_pia->ca1_w(m_pia_ca1); } - - -void victory_state::victory_audio_map(address_map &map) +void victory_sound_device::victory_audio_map(address_map &map) { map(0x0000, 0x00ff).mirror(0x0f00).ram(); map(0x1000, 0x107f).mirror(0x0f80).rw("riot", FUNC(riot6532_device::read), FUNC(riot6532_device::write)); - map(0x2000, 0x2003).mirror(0x0ffc).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); - map(0x3000, 0x3003).mirror(0x0ffc).rw("custom", FUNC(exidy_sh8253_sound_device::sh8253_r), FUNC(exidy_sh8253_sound_device::sh8253_w)); + map(0x2000, 0x2003).mirror(0x0ffc).rw("pia", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x3000, 0x3003).mirror(0x0ffc).w(this, FUNC(victory_sound_device::sh8253_w)); map(0x4000, 0x4fff).noprw(); - map(0x5000, 0x5007).mirror(0x0ff8).rw("custom", FUNC(victory_sound_device::sh6840_r), FUNC(victory_sound_device::sh6840_w)); - map(0x6000, 0x6003).mirror(0x0ffc).w("custom", FUNC(victory_sound_device::sfxctrl_w)); + map(0x5000, 0x5007).mirror(0x0ff8).rw(this, FUNC(victory_sound_device::sh6840_r), FUNC(victory_sound_device::sh6840_w)); + map(0x6000, 0x6003).mirror(0x0ffc).w(this, FUNC(victory_sound_device::sfxctrl_w)); map(0x7000, 0xafff).noprw(); map(0xb000, 0xffff).rom(); } -MACHINE_CONFIG_START(victory_state::victory_audio) - +MACHINE_CONFIG_START(victory_sound_device::device_add_mconfig) MCFG_DEVICE_ADD("audiocpu", M6502, VICTORY_AUDIO_CPU_CLOCK) MCFG_DEVICE_PROGRAM_MAP(victory_audio_map) MCFG_DEVICE_ADD("riot", RIOT6532, SH6532_CLOCK) - MCFG_RIOT6532_IN_PA_CB(READ8("custom", exidy_sh8253_sound_device, r6532_porta_r)) - MCFG_RIOT6532_OUT_PA_CB(WRITE8("custom", exidy_sh8253_sound_device, r6532_porta_w)) - MCFG_RIOT6532_IN_PB_CB(READ8("custom", exidy_sh8253_sound_device, r6532_portb_r)) - MCFG_RIOT6532_OUT_PB_CB(WRITE8("custom", exidy_sh8253_sound_device, r6532_portb_w)) + MCFG_RIOT6532_IN_PA_CB(READ8(*this, victory_sound_device, r6532_porta_r)) + MCFG_RIOT6532_OUT_PA_CB(WRITE8(*this, victory_sound_device, r6532_porta_w)) + MCFG_RIOT6532_IN_PB_CB(READ8(*this, victory_sound_device, r6532_portb_r)) + MCFG_RIOT6532_OUT_PB_CB(WRITE8(*this, victory_sound_device, r6532_portb_w)) MCFG_RIOT6532_IRQ_CB(WRITELINE("audioirq", input_merger_device, in_w<0>)) - MCFG_DEVICE_ADD("pia1", PIA6821, 0) - MCFG_PIA_CA2_HANDLER(WRITELINE("custom", victory_sound_device, irq_clear_w)) - MCFG_PIA_CB2_HANDLER(WRITELINE("custom", victory_sound_device, main_ack_w)) + MCFG_DEVICE_ADD("pia", PIA6821, 0) + MCFG_PIA_CA2_HANDLER(WRITELINE(*this, victory_sound_device, irq_clear_w)) + MCFG_PIA_CB2_HANDLER(WRITELINE(*this, victory_sound_device, main_ack_w)) MCFG_PIA_IRQB_HANDLER(WRITELINE("audioirq", input_merger_device, in_w<1>)) - MCFG_INPUT_MERGER_ANY_HIGH("audioirq") + MCFG_INPUT_MERGER_ANY_HIGH("audioirq") // open collector MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("audiocpu", m6502_device::IRQ_LINE)) SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("custom", EXIDY_VICTORY, 0) + MCFG_DEVICE_MODIFY(DEVICE_SELF) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_DEVICE_ADD("tms", TMS5220, 640000) diff --git a/src/mame/audio/exidy.h b/src/mame/audio/exidy.h index 1a6ba6c58d3..703c4cd1fe1 100644 --- a/src/mame/audio/exidy.h +++ b/src/mame/audio/exidy.h @@ -98,18 +98,19 @@ class exidy_sh8253_sound_device : public exidy_sound_device protected: exidy_sh8253_sound_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + virtual stream_sample_t generate_music_sample() override; -public: DECLARE_WRITE8_MEMBER(r6532_porta_w); DECLARE_READ8_MEMBER(r6532_porta_r); DECLARE_WRITE8_MEMBER(r6532_portb_w); DECLARE_READ8_MEMBER(r6532_portb_r); DECLARE_WRITE8_MEMBER(sh8253_w); - DECLARE_READ8_MEMBER(sh8253_r); -protected: void sh8253_register_state_globals(); /* 8253 variables */ @@ -122,59 +123,110 @@ protected: optional_device<hc55516_device> m_cvsd; optional_device<cpu_device> m_cvsdcpu; optional_device<tms5220_device> m_tms; - required_device<pia6821_device> m_pia1; + required_device<pia6821_device> m_pia; }; +#define MCFG_EXIDY_VENTURE_WRITEPA_HANDLER(_devcb) \ + devcb = &downcast<venture_sound_device &>(*device).set_pa_callback(DEVCB_##_devcb); +#define MCFG_EXIDY_VENTURE_WRITEPB_HANDLER(_devcb) \ + devcb = &downcast<venture_sound_device &>(*device).set_pb_callback(DEVCB_##_devcb); +#define MCFG_EXIDY_VENTURE_CA2_HANDLER(_devcb) \ + devcb = &downcast<venture_sound_device &>(*device).set_ca2_callback(DEVCB_##_devcb); +#define MCFG_EXIDY_VENTURE_CB2_HANDLER(_devcb) \ + devcb = &downcast<venture_sound_device &>(*device).set_cb2_callback(DEVCB_##_devcb); + class venture_sound_device : public exidy_sh8253_sound_device { public: venture_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - DECLARE_WRITE8_MEMBER( mtrap_voiceio_w ); - DECLARE_READ8_MEMBER( mtrap_voiceio_r ); + // configuration access + template<class Object> devcb_base &set_pa_callback(Object &&object) { return m_pa_callback.set_callback(std::forward<Object>(object)); } + template<class Object> devcb_base &set_pb_callback(Object &&object) { return m_pb_callback.set_callback(std::forward<Object>(object)); } + template<class Object> devcb_base &set_ca2_callback(Object &&object) { return m_ca2_callback.set_callback(std::forward<Object>(object)); } + template<class Object> devcb_base &set_cb2_callback(Object &&object) { return m_cb2_callback.set_callback(std::forward<Object>(object)); } - DECLARE_WRITE8_MEMBER( filter_w ); + // external access + DECLARE_WRITE8_MEMBER(pa_w); + DECLARE_WRITE8_MEMBER(pb_w); + DECLARE_WRITE_LINE_MEMBER(ca_w); + DECLARE_WRITE_LINE_MEMBER(cb_w); - void venture_audio(machine_config &config); protected: + venture_sound_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + // device-level overrides - virtual void device_start() override; - virtual void device_reset() override; + virtual void device_resolve_objects() override; + virtual void device_add_mconfig(machine_config &config) override; - // sound stream update overrides - virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; + void venture_audio_map(address_map &map); + +private: + DECLARE_WRITE8_MEMBER(filter_w); + + DECLARE_WRITE8_MEMBER(pia_pa_w); + DECLARE_WRITE8_MEMBER(pia_pb_w); + DECLARE_WRITE_LINE_MEMBER(pia_ca2_w); + DECLARE_WRITE_LINE_MEMBER(pia_cb2_w); + + void venture_audio(machine_config &config); + + devcb_write8 m_pa_callback; + devcb_write8 m_pb_callback; + devcb_write_line m_ca2_callback; + devcb_write_line m_cb2_callback; }; DECLARE_DEVICE_TYPE(EXIDY_VENTURE, venture_sound_device) +class mtrap_sound_device : public venture_sound_device +{ +public: + mtrap_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + +protected: + // device-level overrides + virtual void device_add_mconfig(machine_config &config) override; + +private: + DECLARE_WRITE8_MEMBER(voiceio_w); + DECLARE_READ8_MEMBER(voiceio_r); + + void cvsd_map(address_map &map); + void cvsd_iomap(address_map &map); +}; + +DECLARE_DEVICE_TYPE(EXIDY_MTRAP, mtrap_sound_device) + class victory_sound_device : public exidy_sh8253_sound_device { public: victory_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - DECLARE_READ8_MEMBER( response_r ); - DECLARE_READ8_MEMBER( status_r ); - DECLARE_WRITE8_MEMBER( command_w ); - DECLARE_WRITE_LINE_MEMBER( irq_clear_w ); - DECLARE_WRITE_LINE_MEMBER( main_ack_w ); + // external access + DECLARE_READ8_MEMBER(response_r); + DECLARE_READ8_MEMBER(status_r); + DECLARE_WRITE8_MEMBER(command_w); - void victory_audio(machine_config &config); protected: // device-level overrides virtual void device_start() override; virtual void device_reset() override; - - // sound stream update overrides - virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override; + virtual void device_add_mconfig(machine_config &config) override; private: + DECLARE_WRITE_LINE_MEMBER(irq_clear_w); + DECLARE_WRITE_LINE_MEMBER(main_ack_w); + + void victory_audio_map(address_map &map); + // internal state uint8_t m_victory_sound_response_ack_clk; /* 7474 @ F4 */ TIMER_CALLBACK_MEMBER( delayed_command_w ); - int m_pia1_ca1; - int m_pia1_cb1; + int m_pia_ca1; + int m_pia_cb1; }; DECLARE_DEVICE_TYPE(EXIDY_VICTORY, victory_sound_device) diff --git a/src/mame/drivers/exidy.cpp b/src/mame/drivers/exidy.cpp index 68a9560461d..4258a2111d5 100644 --- a/src/mame/drivers/exidy.cpp +++ b/src/mame/drivers/exidy.cpp @@ -278,7 +278,7 @@ void exidy_state::venture_map(address_map &map) { exidy_map(map); map(0x4800, 0x4fff).ram().share("characterram"); - map(0x5200, 0x520f).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x5200, 0x520f).rw("pia", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); map(0x8000, 0xffff).rom(); } @@ -287,7 +287,7 @@ void exidy_state::pepper2_map(address_map &map) { exidy_map(map); map(0x4800, 0x4fff).noprw(); - map(0x5200, 0x520f).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x5200, 0x520f).rw("pia", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); map(0x6000, 0x6fff).ram().share("characterram"); map(0x8000, 0xffff).rom(); } @@ -301,7 +301,7 @@ void exidy_state::fax_map(address_map &map) map(0x1c00, 0x1c00).portr("IN3"); map(0x2000, 0x2000).w(this, FUNC(exidy_state::fax_bank_select_w)); map(0x2000, 0x3fff).bankr("bank1"); - map(0x5200, 0x520f).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x5200, 0x520f).rw("pia", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); map(0x5213, 0x5217).nopw(); /* empty control lines on color/sound board */ map(0x6000, 0x6fff).ram().share("characterram"); map(0x8000, 0xffff).rom(); @@ -895,7 +895,17 @@ MACHINE_CONFIG_START(exidy_state::venture) MCFG_QUANTUM_TIME(attotime::from_hz(600)) /* audio hardware */ - venture_audio(config); + MCFG_DEVICE_ADD("pia", PIA6821, 0) + MCFG_PIA_WRITEPA_HANDLER(WRITE8("soundbd", venture_sound_device, pb_w)) + MCFG_PIA_WRITEPB_HANDLER(WRITE8("soundbd", venture_sound_device, pa_w)) + MCFG_PIA_CA2_HANDLER(WRITELINE("soundbd", venture_sound_device, cb_w)) + MCFG_PIA_CB2_HANDLER(WRITELINE("soundbd", venture_sound_device, ca_w)) + + MCFG_DEVICE_ADD("soundbd", EXIDY_VENTURE, 0) + MCFG_EXIDY_VENTURE_WRITEPA_HANDLER(WRITE8("pia", pia6821_device, portb_w)) + MCFG_EXIDY_VENTURE_WRITEPB_HANDLER(WRITE8("pia", pia6821_device, porta_w)) + MCFG_EXIDY_VENTURE_CA2_HANDLER(WRITELINE("pia", pia6821_device, cb1_w)) + MCFG_EXIDY_VENTURE_CB2_HANDLER(WRITELINE("pia", pia6821_device, ca1_w)) MACHINE_CONFIG_END @@ -912,14 +922,26 @@ MACHINE_CONFIG_END MACHINE_CONFIG_START(exidy_state::mtrap) - venture(config); + base(config); /* basic machine hardware */ + MCFG_DEVICE_MODIFY("maincpu") + MCFG_DEVICE_PROGRAM_MAP(venture_map) MCFG_QUANTUM_TIME(attotime::from_hz(1920)) /* audio hardware */ - mtrap_cvsd_audio(config); + MCFG_DEVICE_ADD("pia", PIA6821, 0) + MCFG_PIA_WRITEPA_HANDLER(WRITE8("soundbd", venture_sound_device, pb_w)) + MCFG_PIA_WRITEPB_HANDLER(WRITE8("soundbd", venture_sound_device, pa_w)) + MCFG_PIA_CA2_HANDLER(WRITELINE("soundbd", venture_sound_device, cb_w)) + MCFG_PIA_CB2_HANDLER(WRITELINE("soundbd", venture_sound_device, ca_w)) + + MCFG_DEVICE_ADD("soundbd", EXIDY_MTRAP, 0) + MCFG_EXIDY_VENTURE_WRITEPA_HANDLER(WRITE8("pia", pia6821_device, portb_w)) + MCFG_EXIDY_VENTURE_WRITEPB_HANDLER(WRITE8("pia", pia6821_device, porta_w)) + MCFG_EXIDY_VENTURE_CA2_HANDLER(WRITELINE("pia", pia6821_device, cb1_w)) + MCFG_EXIDY_VENTURE_CB2_HANDLER(WRITELINE("pia", pia6821_device, ca1_w)) MACHINE_CONFIG_END @@ -1157,12 +1179,12 @@ ROM_START( mtrap ) ROM_LOAD( "mtl7a.bin", 0xe000, 0x1000, CRC(caafbb6d) SHA1(96823ac4e49f192121c53f70382a20f7c52e290b) ) ROM_LOAD( "mtl6a.bin", 0xf000, 0x1000, CRC(d85e52ca) SHA1(51296247e365a468fe9458b722bbdbbeeed59fa0) ) - ROM_REGION( 0x8000, "audiocpu", 0 ) + ROM_REGION( 0x8000, "soundbd:audiocpu", 0 ) ROM_LOAD( "mta5a.bin", 0x6800, 0x0800, CRC(dbe4ec02) SHA1(34e965428dbb4b9c558927bb80d19cb550b53228) ) ROM_LOAD( "mta6a.bin", 0x7000, 0x0800, CRC(c00f0c05) SHA1(398b0bc2a7e54b1e2326ed067bf6bb15cc52ed39) ) ROM_LOAD( "mta7a.bin", 0x7800, 0x0800, CRC(f3f16ca7) SHA1(3928c5da246c43036a7b4cbb140a1734d5f1fb03) ) - ROM_REGION( 0x4000, "cvsdcpu", 0 ) /* 16k for digital sound processor */ + ROM_REGION( 0x4000, "soundbd:cvsdcpu", 0 ) /* 16k for digital sound processor */ ROM_LOAD( "mta2a.bin", 0x0000, 0x1000, CRC(13db8ed3) SHA1(939352323bdcd7df25db5eb2e30f269bcaebe6af) ) ROM_LOAD( "mta3a.bin", 0x1000, 0x1000, CRC(31bdfe5c) SHA1(b10bfe9e56dd617c5b4cd8b5bfec9c7f537b1086) ) ROM_LOAD( "mta4a.bin", 0x2000, 0x1000, CRC(1502d0e8) SHA1(8ef51ad4601299016f1821a5c65bec0199dd5474) ) @@ -1187,12 +1209,12 @@ ROM_START( mtrap2 ) ROM_LOAD( "mtl-2.7a", 0xe000, 0x1000, CRC(3d235f95) SHA1(57031d9784c55853dcf6e396ee685d8dd0d3ef87) ) ROM_LOAD( "mtl-2.6a", 0xf000, 0x1000, CRC(7ed7632a) SHA1(6800d3c1b901808373d3edd2a3fcf699f93d7daf) ) - ROM_REGION( 0x8000, "audiocpu", 0 ) + ROM_REGION( 0x8000, "soundbd:audiocpu", 0 ) ROM_LOAD( "mta5a.bin", 0x6800, 0x0800, CRC(dbe4ec02) SHA1(34e965428dbb4b9c558927bb80d19cb550b53228) ) ROM_LOAD( "mta6a.bin", 0x7000, 0x0800, CRC(c00f0c05) SHA1(398b0bc2a7e54b1e2326ed067bf6bb15cc52ed39) ) ROM_LOAD( "mta7a.bin", 0x7800, 0x0800, CRC(f3f16ca7) SHA1(3928c5da246c43036a7b4cbb140a1734d5f1fb03) ) - ROM_REGION( 0x4000, "cvsdcpu", 0 ) /* 16k for digital sound processor */ + ROM_REGION( 0x4000, "soundbd:cvsdcpu", 0 ) /* 16k for digital sound processor */ ROM_LOAD( "mta2a.bin", 0x0000, 0x1000, CRC(13db8ed3) SHA1(939352323bdcd7df25db5eb2e30f269bcaebe6af) ) ROM_LOAD( "mta3a.bin", 0x1000, 0x1000, CRC(31bdfe5c) SHA1(b10bfe9e56dd617c5b4cd8b5bfec9c7f537b1086) ) ROM_LOAD( "mta4a.bin", 0x2000, 0x1000, CRC(1502d0e8) SHA1(8ef51ad4601299016f1821a5c65bec0199dd5474) ) @@ -1217,12 +1239,12 @@ ROM_START( mtrap3 ) ROM_LOAD( "mtl-3.7a", 0xe000, 0x1000, CRC(ea8ec479) SHA1(785557a242d9343c83cdc403b1f726cbea9d230f) ) ROM_LOAD( "mtl-3.6a", 0xf000, 0x1000, CRC(d72ba72d) SHA1(4c5b311bc7ecfc6133bc09e586635844e2f1d6a9) ) - ROM_REGION( 0x8000, "audiocpu", 0 ) + ROM_REGION( 0x8000, "soundbd:audiocpu", 0 ) ROM_LOAD( "mta5a.bin", 0x6800, 0x0800, CRC(dbe4ec02) SHA1(34e965428dbb4b9c558927bb80d19cb550b53228) ) ROM_LOAD( "mta6a.bin", 0x7000, 0x0800, CRC(c00f0c05) SHA1(398b0bc2a7e54b1e2326ed067bf6bb15cc52ed39) ) ROM_LOAD( "mta7a.bin", 0x7800, 0x0800, CRC(f3f16ca7) SHA1(3928c5da246c43036a7b4cbb140a1734d5f1fb03) ) - ROM_REGION( 0x4000, "cvsdcpu", 0 ) /* 16k for digital sound processor */ + ROM_REGION( 0x4000, "soundbd:cvsdcpu", 0 ) /* 16k for digital sound processor */ ROM_LOAD( "mta2a.bin", 0x0000, 0x1000, CRC(13db8ed3) SHA1(939352323bdcd7df25db5eb2e30f269bcaebe6af) ) ROM_LOAD( "mta3a.bin", 0x1000, 0x1000, CRC(31bdfe5c) SHA1(b10bfe9e56dd617c5b4cd8b5bfec9c7f537b1086) ) ROM_LOAD( "mta4a.bin", 0x2000, 0x1000, CRC(1502d0e8) SHA1(8ef51ad4601299016f1821a5c65bec0199dd5474) ) @@ -1247,12 +1269,12 @@ ROM_START( mtrap4 ) ROM_LOAD( "mta47a.bin", 0xe000, 0x1000, CRC(cdf8c6a8) SHA1(932ae9c0ea5700bd79862efa94742136d8e15641) ) ROM_LOAD( "mta46a.bin", 0xf000, 0x1000, CRC(77d3f2e6) SHA1(2c21dd7ee326ccb41d3c64eec90a19198382edea) ) - ROM_REGION( 0x8000, "audiocpu", 0 ) + ROM_REGION( 0x8000, "soundbd:audiocpu", 0 ) ROM_LOAD( "mta5a.bin", 0x6800, 0x0800, CRC(dbe4ec02) SHA1(34e965428dbb4b9c558927bb80d19cb550b53228) ) ROM_LOAD( "mta6a.bin", 0x7000, 0x0800, CRC(c00f0c05) SHA1(398b0bc2a7e54b1e2326ed067bf6bb15cc52ed39) ) ROM_LOAD( "mta7a.bin", 0x7800, 0x0800, CRC(f3f16ca7) SHA1(3928c5da246c43036a7b4cbb140a1734d5f1fb03) ) - ROM_REGION( 0x4000, "cvsdcpu", 0 ) /* 16k for digital sound processor */ + ROM_REGION( 0x4000, "soundbd:cvsdcpu", 0 ) /* 16k for digital sound processor */ ROM_LOAD( "mta2a.bin", 0x0000,0x1000,CRC(13db8ed3) SHA1(939352323bdcd7df25db5eb2e30f269bcaebe6af) ) ROM_LOAD( "mta3a.bin", 0x1000,0x1000,CRC(31bdfe5c) SHA1(b10bfe9e56dd617c5b4cd8b5bfec9c7f537b1086) ) ROM_LOAD( "mta4a.bin", 0x2000,0x1000,CRC(1502d0e8) SHA1(8ef51ad4601299016f1821a5c65bec0199dd5474) ) @@ -1276,10 +1298,10 @@ ROM_START( mtrapb ) ROM_LOAD( "cpu.j2", 0xe000, 0x1000, CRC(1eb0c4c9) SHA1(b7049b86385798f1098945d07fe41b71ddbbc980) ) ROM_LOAD( "cpu.h2", 0xf000, 0x1000, CRC(16ea9a51) SHA1(59714f50c82b54f490c69fb5b91ac0aa16cb9abb) ) - ROM_REGION( 0x8000, "audiocpu", 0 ) + ROM_REGION( 0x8000, "soundbd:audiocpu", 0 ) ROM_LOAD( "2564.j10", 0x6000, 0x2000, CRC(d4160aa8) SHA1(d3bae8fa54e71c397ec60f998a012e088588a2e4) ) - ROM_REGION( 0x4000, "cvsdcpu", 0 ) /* 16k for digital sound processor */ + ROM_REGION( 0x4000, "soundbd:cvsdcpu", 0 ) /* 16k for digital sound processor */ ROM_LOAD( "mta2a.bin", 0x0000,0x1000,CRC(13db8ed3) SHA1(939352323bdcd7df25db5eb2e30f269bcaebe6af) ) ROM_LOAD( "mta3a.bin", 0x1000,0x1000,CRC(31bdfe5c) SHA1(b10bfe9e56dd617c5b4cd8b5bfec9c7f537b1086) ) ROM_LOAD( "mta4a.bin", 0x2000,0x1000,CRC(1502d0e8) SHA1(8ef51ad4601299016f1821a5c65bec0199dd5474) ) @@ -1310,10 +1332,10 @@ ROM_START( mtrapb2 ) ROM_LOAD( "ms7.2h", 0xe000, 0x1000, CRC(cdf8c6a8) SHA1(932ae9c0ea5700bd79862efa94742136d8e15641) ) ROM_LOAD( "ms6.2f", 0xf000, 0x1000, CRC(77d3f2e6) SHA1(2c21dd7ee326ccb41d3c64eec90a19198382edea) ) - ROM_REGION( 0x8000, "audiocpu", 0 ) + ROM_REGION( 0x8000, "soundbd:audiocpu", 0 ) ROM_LOAD( "ms1a.10j", 0x6000, 0x2000, CRC(d4160aa8) SHA1(d3bae8fa54e71c397ec60f998a012e088588a2e4) ) - ROM_REGION( 0x4000, "cvsdcpu", 0 ) /* 16k for digital sound processor */ + ROM_REGION( 0x4000, "soundbd:cvsdcpu", 0 ) /* 16k for digital sound processor */ ROM_LOAD( "ms2a.8d", 0x0000,0x1000,CRC(13db8ed3) SHA1(939352323bdcd7df25db5eb2e30f269bcaebe6af) ) ROM_LOAD( "ms3a.8e", 0x1000,0x1000,CRC(31bdfe5c) SHA1(b10bfe9e56dd617c5b4cd8b5bfec9c7f537b1086) ) ROM_LOAD( "ms4a.8f", 0x2000,0x1000,CRC(1502d0e8) SHA1(8ef51ad4601299016f1821a5c65bec0199dd5474) ) @@ -1339,7 +1361,7 @@ ROM_START( venture ) ROM_LOAD( "7a-cpu", 0xe000, 0x1000, CRC(48d66220) SHA1(97b1605170c67b3a945b4d5f088df79328e163ce) ) ROM_LOAD( "6a-cpu", 0xf000, 0x1000, CRC(7b78cf49) SHA1(1d484172465d3db6c4fc3733aa2b409e3a2e228f) ) - ROM_REGION( 0x8000, "audiocpu", 0 ) + ROM_REGION( 0x8000, "soundbd:audiocpu", 0 ) ROM_LOAD( "3a-ac", 0x5800, 0x0800, CRC(4ea1c3d9) SHA1(d0c99c9d5b887d717c68e8745906ae4e65aec6ad) ) ROM_LOAD( "4a-ac", 0x6000, 0x0800, CRC(5154c39e) SHA1(e6f011630eb1aa4116a0e5824ad6b65c1be2455f) ) ROM_LOAD( "5a-ac", 0x6800, 0x0800, CRC(1e1e3916) SHA1(867e586583e07cd01e0e852f6ea52a040995725d) ) @@ -1367,7 +1389,7 @@ ROM_START( venture2 ) ROM_LOAD( "vent_a7.cpu", 0xe000, 0x1000, CRC(1aab27c2) SHA1(66c7274dbb8bda3c78cc61d96a6cb1a9b29939b5) ) ROM_LOAD( "vent_a6.cpu", 0xf000, 0x1000, CRC(767bdd71) SHA1(334a903e05fc86186f90aa2d9ce3b0d367d7e516) ) - ROM_REGION( 0x8000, "audiocpu", 0 ) + ROM_REGION( 0x8000, "soundbd:audiocpu", 0 ) ROM_LOAD( "3a-ac", 0x5800, 0x0800, CRC(4ea1c3d9) SHA1(d0c99c9d5b887d717c68e8745906ae4e65aec6ad) ) ROM_LOAD( "4a-ac", 0x6000, 0x0800, CRC(5154c39e) SHA1(e6f011630eb1aa4116a0e5824ad6b65c1be2455f) ) ROM_LOAD( "5a-ac", 0x6800, 0x0800, CRC(1e1e3916) SHA1(867e586583e07cd01e0e852f6ea52a040995725d) ) @@ -1395,7 +1417,7 @@ ROM_START( venture4 ) ROM_LOAD( "vel7a-4", 0xe000, 0x1000, CRC(0a091701) SHA1(ffdea1d60371779d0c28fb3c6111639cace79dad) ) ROM_LOAD( "vel6a-4", 0xf000, 0x1000, CRC(7b165f67) SHA1(4109797bcfd33c870234930790e3cecaaf90b706) ) - ROM_REGION( 0x8000, "audiocpu", 0 ) + ROM_REGION( 0x8000, "soundbd:audiocpu", 0 ) ROM_LOAD( "vea3a-2", 0x5800, 0x0800, CRC(83b8836f) SHA1(ec0e2de62caea61ceff56e924449213997bff8cd) ) ROM_LOAD( "4a-ac", 0x6000, 0x0800, CRC(5154c39e) SHA1(e6f011630eb1aa4116a0e5824ad6b65c1be2455f) ) ROM_LOAD( "5a-ac", 0x6800, 0x0800, CRC(1e1e3916) SHA1(867e586583e07cd01e0e852f6ea52a040995725d) ) @@ -1422,7 +1444,7 @@ ROM_START( pepper2 ) ROM_LOAD( "main_7a", 0xe000, 0x1000, CRC(b1c6f07c) SHA1(53d07211d014336bb43671c51f4190c6515e9cde) ) ROM_LOAD( "main_6a", 0xf000, 0x1000, CRC(515b1046) SHA1(bdcccd4e415c00ee8e5ec185597df75ecafe7d3d) ) - ROM_REGION( 0x8000, "audiocpu", 0 ) + ROM_REGION( 0x8000, "soundbd:audiocpu", 0 ) ROM_LOAD( "audio_5a", 0x6800, 0x0800, CRC(90e3c781) SHA1(d51a9e011167a132e8af9f4b1201600a58e86b62) ) ROM_LOAD( "audio_6a", 0x7000, 0x0800, CRC(dd343e34) SHA1(4ec55bb73d6afbd167fa91d2606d1d55a15b5c39) ) ROM_LOAD( "audio_7a", 0x7800, 0x0800, CRC(e02b4356) SHA1(9891e14d84221c1d6f2d15a29813eb41024290ca) ) @@ -1442,7 +1464,7 @@ ROM_START( pepper27 ) ROM_LOAD( "p2l7ar7.bin", 0xe000, 0x1000, CRC(ac1282ef) SHA1(34023d8a01c1f26ec8268d7387660d6f7e875014) ) ROM_LOAD( "p2l6ar7.bin", 0xf000, 0x1000, CRC(db8dd4fc) SHA1(9ae00f8d1a19280670dc65a20cf9cc4e7f1cc973) ) - ROM_REGION( 0x8000, "audiocpu", 0 ) + ROM_REGION( 0x8000, "soundbd:audiocpu", 0 ) ROM_LOAD( "audio_5a", 0x6800, 0x0800, CRC(90e3c781) SHA1(d51a9e011167a132e8af9f4b1201600a58e86b62) ) ROM_LOAD( "audio_6a", 0x7000, 0x0800, CRC(dd343e34) SHA1(4ec55bb73d6afbd167fa91d2606d1d55a15b5c39) ) ROM_LOAD( "audio_7a", 0x7800, 0x0800, CRC(e02b4356) SHA1(9891e14d84221c1d6f2d15a29813eb41024290ca) ) @@ -1460,7 +1482,7 @@ ROM_START( hardhat ) ROM_LOAD( "hhl-2.7a", 0xe000, 0x1000, CRC(6f7ce1c2) SHA1(356dcea22e50c95a8552566a0fb5f9b4e3e5de2a) ) ROM_LOAD( "hhl-2.6a", 0xf000, 0x1000, CRC(2a20cf10) SHA1(31eb4556647e78e3d9be1c30d970eac8aaa5cf18) ) - ROM_REGION( 0x8000, "audiocpu", 0 ) + ROM_REGION( 0x8000, "soundbd:audiocpu", 0 ) ROM_LOAD( "hha-1.5a", 0x6800, 0x0800, CRC(16a5a183) SHA1(cf3fed55db9c61fd33c222275d472fa109bed081) ) ROM_LOAD( "hha-1.6a", 0x7000, 0x0800, CRC(bde64021) SHA1(a403590d5a27b859eaa299e47df4ebd6ce4a5772) ) ROM_LOAD( "hha-1.7a", 0x7800, 0x0800, CRC(505ee5d3) SHA1(efa228465688f2bb30f00dc1511cc5f3a287356c) ) @@ -1481,7 +1503,7 @@ ROM_START( teetert ) ROM_LOAD( "7a-cpu", 0xe000, 0x1000, CRC(84491333) SHA1(db9f8e4c49057a4574a3784d71e627da7f7a4b44) ) ROM_LOAD( "6a-cpu", 0xf000, 0x1000, CRC(3600d465) SHA1(84d633e042f73bfd6bf4a4d0ffee1cd2027c65d2) ) - ROM_REGION( 0x8000, "audiocpu", 0 ) + ROM_REGION( 0x8000, "soundbd:audiocpu", 0 ) ROM_LOAD( "3a-ac", 0x5800, 0x0800, CRC(83b8836f) SHA1(ec0e2de62caea61ceff56e924449213997bff8cd) ) ROM_LOAD( "4a-ac", 0x6000, 0x0800, CRC(5154c39e) SHA1(e6f011630eb1aa4116a0e5824ad6b65c1be2455f) ) ROM_LOAD( "5a-ac", 0x6800, 0x0800, CRC(1e1e3916) SHA1(867e586583e07cd01e0e852f6ea52a040995725d) ) @@ -1535,7 +1557,7 @@ ROM_START( fax ) // ROM_LOAD( "fxd-7a.64", 0x3c000, 0x2000, NO_DUMP ) // ROM_LOAD( "fxd-8a.64", 0x3e000, 0x2000, NO_DUMP ) - ROM_REGION( 0x8000, "audiocpu", 0 ) + ROM_REGION( 0x8000, "soundbd:audiocpu", 0 ) ROM_LOAD( "fxa2-5a.16", 0x6800, 0x0800, CRC(7c525aec) SHA1(f3afd3bfc0ba4265106e6ca217d113d23ad66016) ) ROM_LOAD( "fxa2-6a.16", 0x7000, 0x0800, CRC(2b3bfc44) SHA1(7e3b9133916c8121b2145942155601b3ade420da) ) ROM_LOAD( "fxa2-7a.16", 0x7800, 0x0800, CRC(578c62b7) SHA1(1bcb987e8730c001b7339c3dfab2467bf76421c7) ) @@ -1588,7 +1610,7 @@ ROM_START( fax2 ) ROM_LOAD( "fxdb1-7a.bin", 0x3c000, 0x2000, CRC(0f97b874) SHA1(5790d3ed9eed2ce05947bc28cc252f720a7f3aeb) ) ROM_LOAD( "fxdb1-8a.bin", 0x3e000, 0x2000, CRC(1d055bea) SHA1(96531db0a3a36319bc0a28096e601302eb2eb115) ) - ROM_REGION( 0x8000, "audiocpu", 0 ) + ROM_REGION( 0x8000, "soundbd:audiocpu", 0 ) ROM_LOAD( "fxa2-5a.16", 0x6800, 0x0800, CRC(7c525aec) SHA1(f3afd3bfc0ba4265106e6ca217d113d23ad66016) ) ROM_LOAD( "fxa2-6a.16", 0x7000, 0x0800, CRC(2b3bfc44) SHA1(7e3b9133916c8121b2145942155601b3ade420da) ) ROM_LOAD( "fxa2-7a.16", 0x7800, 0x0800, CRC(578c62b7) SHA1(1bcb987e8730c001b7339c3dfab2467bf76421c7) ) diff --git a/src/mame/drivers/victory.cpp b/src/mame/drivers/victory.cpp index 0035f1540a2..29b23667952 100644 --- a/src/mame/drivers/victory.cpp +++ b/src/mame/drivers/victory.cpp @@ -136,8 +136,8 @@ void victory_state::main_map(address_map &map) map(0xc800, 0xdfff).ram().share("charram"); map(0xe000, 0xefff).ram(); map(0xf000, 0xf7ff).ram().share("nvram"); - map(0xf800, 0xf800).mirror(0x07fc).rw("custom", FUNC(victory_sound_device::response_r), FUNC(victory_sound_device::command_w)); - map(0xf801, 0xf801).mirror(0x07fc).r("custom", FUNC(victory_sound_device::status_r)); + map(0xf800, 0xf800).mirror(0x07fc).rw("soundbd", FUNC(victory_sound_device::response_r), FUNC(victory_sound_device::command_w)); + map(0xf801, 0xf801).mirror(0x07fc).r("soundbd", FUNC(victory_sound_device::status_r)); } @@ -241,8 +241,7 @@ MACHINE_CONFIG_START(victory_state::victory) /* audio hardware */ - victory_audio(config); - + MCFG_DEVICE_ADD("soundbd", EXIDY_VICTORY, 0) MACHINE_CONFIG_END @@ -268,7 +267,7 @@ ROM_START( victory ) ROM_LOAD( "vic3.kl1", 0xa000, 0x1000, CRC(2b7e626f) SHA1(5a607faf05f81da44c68fe1a6efe2a7c4ac048c7) ) ROM_LOAD( "vic3.l1", 0xb000, 0x1000, CRC(7bb8e1f5) SHA1(0f624e859bb9c2203c0aebe89ac2f807b4fa9a47) ) - ROM_REGION( 0x10000, "audiocpu", 0 ) + ROM_REGION( 0x10000, "soundbd:audiocpu", 0 ) ROM_LOAD( "vic1.7bc", 0xc000, 0x1000, CRC(d4927560) SHA1(f263419dec70b758cf429cd7e5b388258027bfde) ) ROM_LOAD( "vic1.7c", 0xd000, 0x1000, CRC(059efab5) SHA1(60259eb56a282a0fbab5e966a16430ab486b1492) ) ROM_LOAD( "vic1.7d", 0xe000, 0x1000, CRC(82c4767c) SHA1(64eac78e7dab5f435eb035be46e24e73a74f0eae) ) @@ -301,7 +300,7 @@ ROM_START( victorba ) ROM_LOAD( "kl1.rom", 0xa000, 0x1000, CRC(6c82ebca) SHA1(3f30e92cbdca73948d285d4509bdee85d8fa57b7) ) ROM_LOAD( "l1.rom", 0xb000, 0x1000, CRC(03b89d8a) SHA1(37b501e910d3c3784a6696fab7fd6ba568470a8b) ) - ROM_REGION( 0x10000, "audiocpu", 0 ) + ROM_REGION( 0x10000, "soundbd:audiocpu", 0 ) ROM_LOAD( "vic1.7bc", 0xc000, 0x1000, CRC(d4927560) SHA1(f263419dec70b758cf429cd7e5b388258027bfde) ) ROM_LOAD( "vic1.7c", 0xd000, 0x1000, CRC(059efab5) SHA1(60259eb56a282a0fbab5e966a16430ab486b1492) ) ROM_LOAD( "vic1.7d", 0xe000, 0x1000, CRC(82c4767c) SHA1(64eac78e7dab5f435eb035be46e24e73a74f0eae) ) diff --git a/src/mame/includes/exidy.h b/src/mame/includes/exidy.h index 92381382593..3eb67c3523c 100644 --- a/src/mame/includes/exidy.h +++ b/src/mame/includes/exidy.h @@ -128,9 +128,7 @@ public: void base(machine_config &config); void mtrap(machine_config &config); - void mtrap_cvsd_audio(machine_config &config); void venture(machine_config &config); - void venture_audio(machine_config &config); void fax(machine_config &config); void teetert(machine_config &config); void sidetrac(machine_config &config); @@ -148,9 +146,6 @@ public: void spectar_map(address_map &map); void targ_map(address_map &map); void venture_map(address_map &map); - void venture_audio_map(address_map &map); - void cvsd_iomap(address_map &map); - void cvsd_map(address_map &map); protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; }; diff --git a/src/mame/includes/victory.h b/src/mame/includes/victory.h index b7235600dc1..1cef411ab4d 100644 --- a/src/mame/includes/victory.h +++ b/src/mame/includes/victory.h @@ -63,10 +63,8 @@ protected: virtual void machine_start() override { m_lamps.resolve(); } virtual void video_start() override; - void victory_audio(machine_config &config); void main_io_map(address_map &map); void main_map(address_map &map); - void victory_audio_map(address_map &map); private: /* microcode state */ |