mirror of
https://github.com/holub/mame
synced 2025-10-07 01:16:22 +03:00
exidy.cpp, victory.cpp: Full encapsulation of audio devices
This commit is contained in:
parent
0dc611e2a9
commit
fb94760939
@ -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)
|
||||
{
|
||||
exidy_sound_device::sound_stream_update(stream, inputs, outputs, samples);
|
||||
m_pia->porta_w(data);
|
||||
}
|
||||
|
||||
|
||||
WRITE8_MEMBER(venture_sound_device::pb_w)
|
||||
{
|
||||
m_pia->portb_w(data);
|
||||
}
|
||||
|
||||
|
||||
void exidy_state::venture_audio_map(address_map &map)
|
||||
WRITE_LINE_MEMBER(venture_sound_device::ca_w)
|
||||
{
|
||||
m_pia->ca1_w(state);
|
||||
}
|
||||
|
||||
|
||||
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));
|
||||
save_item(NAME(m_pia_ca1));
|
||||
save_item(NAME(m_pia_cb1));
|
||||
|
||||
common_sh_start();
|
||||
|
||||
/* 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)
|
||||
|
@ -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);
|
||||
|
||||
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_resolve_objects() override;
|
||||
virtual void device_add_mconfig(machine_config &config) 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);
|
||||
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;
|
||||
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)
|
||||
|
@ -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) )
|
||||
|
@ -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) )
|
||||
|
@ -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;
|
||||
};
|
||||
|
@ -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 */
|
||||
|
Loading…
Reference in New Issue
Block a user