summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
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
commitfb94760939d839a5711a1e342fcfecefbeb81c06 (patch)
tree10a99a230a2c7dcba103083c36d1f5508b0a704c
parent0dc611e2a9ec11d09944153e714f4665bb508db1 (diff)
exidy.cpp, victory.cpp: Full encapsulation of audio devices
-rw-r--r--src/mame/audio/exidy.cpp249
-rw-r--r--src/mame/audio/exidy.h98
-rw-r--r--src/mame/drivers/exidy.cpp76
-rw-r--r--src/mame/drivers/victory.cpp11
-rw-r--r--src/mame/includes/exidy.h5
-rw-r--r--src/mame/includes/victory.h2
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 */