From a20b254ca162ed3c482e793d3fb63233cbd263fb Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Thu, 7 May 2015 18:51:15 +0200 Subject: [PATCH] harddriv.c: separated the harddriv sound board from the driver class into a device (nw) --- src/mame/audio/harddriv.c | 189 ++++++++++++++++++++++++++--------- src/mame/drivers/harddriv.c | 179 ++++++++------------------------- src/mame/includes/harddriv.h | 127 +++++++++++++---------- src/mame/machine/harddriv.c | 1 - 4 files changed, 260 insertions(+), 236 deletions(-) diff --git a/src/mame/audio/harddriv.c b/src/mame/audio/harddriv.c index a1aafc76405..4cc040db4b5 100644 --- a/src/mame/audio/harddriv.c +++ b/src/mame/audio/harddriv.c @@ -17,19 +17,56 @@ #define CYCLES_PER_BIO (5000000 / BIO_FREQUENCY) -/************************************* - * - * Driver init - * - *************************************/ +//************************************************************************** +// LIVE DEVICE +//************************************************************************** -void harddriv_state::hdsnd_init() +//------------------------------------------------- +// harddriv_sound_board_device - constructor +//------------------------------------------------- + +const device_type HARDDRIV_SOUND_BOARD_DEVICE = &device_creator; + +harddriv_sound_board_device::harddriv_sound_board_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : + device_t(mconfig, HARDDRIV_SOUND_BOARD_DEVICE, "Hard Drivin' Sound Board", tag, owner, clock, "harddriv_sound", __FILE__), + m_soundcpu(*this, "soundcpu"), + m_dac(*this, "dac"), + m_sounddsp(*this, "sounddsp"), + m_sounddsp_ram(*this, "sounddsp_ram"), + m_soundflag(0), + m_mainflag(0), + m_sounddata(0), + m_maindata(0), + m_dacmute(0), + m_cramen(0), + m_irq68k(0), + m_sound_rom_offs(0), + m_rombase(NULL), + m_romsize(0), + m_last_bio_cycles(0) { - m_rombase = (UINT8 *)memregion("serialroms")->base(); - m_romsize = memregion("serialroms")->bytes(); + memset(m_comram, 0 , sizeof(m_comram)); } +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void harddriv_sound_board_device::device_start() +{ + m_rombase = (UINT8 *)memregion(":mainpcb:serialroms")->base(); + m_romsize = memregion(":mainpcb:serialroms")->bytes(); +} + +//------------------------------------------------- +// device_reset - device-specific reset +//------------------------------------------------- + +void harddriv_sound_board_device::device_reset() +{ + m_sounddsp->set_input_line(INPUT_LINE_HALT, ASSERT_LINE); +} /************************************* * @@ -37,10 +74,10 @@ void harddriv_state::hdsnd_init() * *************************************/ -void harddriv_state::update_68k_interrupts() +void harddriv_sound_board_device::update_68k_interrupts() { - if (m_soundcpu) m_soundcpu->set_input_line(1, m_mainflag ? ASSERT_LINE : CLEAR_LINE); - if (m_soundcpu) m_soundcpu->set_input_line(3, m_irq68k ? ASSERT_LINE : CLEAR_LINE); + m_soundcpu->set_input_line(1, m_mainflag ? ASSERT_LINE : CLEAR_LINE); + m_soundcpu->set_input_line(3, m_irq68k ? ASSERT_LINE : CLEAR_LINE); } @@ -51,7 +88,7 @@ void harddriv_state::update_68k_interrupts() * *************************************/ -READ16_MEMBER(harddriv_state::hd68k_snd_data_r) +READ16_MEMBER(harddriv_sound_board_device::hd68k_snd_data_r) { m_soundflag = 0; logerror("%06X:main read from sound=%04X\n", space.device().safe_pcbase(), m_sounddata); @@ -59,13 +96,13 @@ READ16_MEMBER(harddriv_state::hd68k_snd_data_r) } -READ16_MEMBER(harddriv_state::hd68k_snd_status_r) +READ16_MEMBER(harddriv_sound_board_device::hd68k_snd_status_r) { return (m_mainflag << 15) | (m_soundflag << 14) | 0x1fff; } -TIMER_CALLBACK_MEMBER( harddriv_state::delayed_68k_w ) +TIMER_CALLBACK_MEMBER( harddriv_sound_board_device::delayed_68k_w ) { m_maindata = param; m_mainflag = 1; @@ -73,17 +110,17 @@ TIMER_CALLBACK_MEMBER( harddriv_state::delayed_68k_w ) } -WRITE16_MEMBER(harddriv_state::hd68k_snd_data_w) +WRITE16_MEMBER(harddriv_sound_board_device::hd68k_snd_data_w) { - machine().scheduler().synchronize(timer_expired_delegate(FUNC(harddriv_state::delayed_68k_w), this), data); + machine().scheduler().synchronize(timer_expired_delegate(FUNC(harddriv_sound_board_device::delayed_68k_w), this), data); logerror("%06X:main write to sound=%04X\n", space.device().safe_pcbase(), data); } -WRITE16_MEMBER(harddriv_state::hd68k_snd_reset_w) +WRITE16_MEMBER(harddriv_sound_board_device::hd68k_snd_reset_w) { - if (m_soundcpu) m_soundcpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE); - if (m_soundcpu) m_soundcpu->set_input_line(INPUT_LINE_RESET, CLEAR_LINE); + m_soundcpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE); + m_soundcpu->set_input_line(INPUT_LINE_RESET, CLEAR_LINE); m_mainflag = m_soundflag = 0; update_68k_interrupts(); logerror("%06X:Reset sound\n", space.device().safe_pcbase()); @@ -97,7 +134,7 @@ WRITE16_MEMBER(harddriv_state::hd68k_snd_reset_w) * *************************************/ -READ16_MEMBER(harddriv_state::hdsnd68k_data_r) +READ16_MEMBER(harddriv_sound_board_device::hdsnd68k_data_r) { m_mainflag = 0; update_68k_interrupts(); @@ -106,7 +143,7 @@ READ16_MEMBER(harddriv_state::hdsnd68k_data_r) } -WRITE16_MEMBER(harddriv_state::hdsnd68k_data_w) +WRITE16_MEMBER(harddriv_sound_board_device::hdsnd68k_data_w) { COMBINE_DATA(&m_sounddata); m_soundflag = 1; @@ -121,21 +158,21 @@ WRITE16_MEMBER(harddriv_state::hdsnd68k_data_w) * *************************************/ -READ16_MEMBER(harddriv_state::hdsnd68k_switches_r) +READ16_MEMBER(harddriv_sound_board_device::hdsnd68k_switches_r) { logerror("%06X:hdsnd68k_switches_r(%04X)\n", space.device().safe_pcbase(), offset); return 0; } -READ16_MEMBER(harddriv_state::hdsnd68k_320port_r) +READ16_MEMBER(harddriv_sound_board_device::hdsnd68k_320port_r) { logerror("%06X:hdsnd68k_320port_r(%04X)\n", space.device().safe_pcbase(), offset); return 0; } -READ16_MEMBER(harddriv_state::hdsnd68k_status_r) +READ16_MEMBER(harddriv_sound_board_device::hdsnd68k_status_r) { //FFFF 3000 R READSTAT Read Status // D15 = 'Main Flag' @@ -154,7 +191,7 @@ READ16_MEMBER(harddriv_state::hdsnd68k_status_r) * *************************************/ -WRITE16_MEMBER(harddriv_state::hdsnd68k_latches_w) +WRITE16_MEMBER(harddriv_sound_board_device::hdsnd68k_latches_w) { /* bit 3 selects the value; data is ignored */ data = (offset >> 3) & 1; @@ -185,8 +222,7 @@ WRITE16_MEMBER(harddriv_state::hdsnd68k_latches_w) case 4: /* RES320 */ logerror("%06X:RES320=%d\n", space.device().safe_pcbase(), data); - if (m_sounddsp != NULL) - m_sounddsp->set_input_line(INPUT_LINE_HALT, data ? CLEAR_LINE : ASSERT_LINE); + m_sounddsp->set_input_line(INPUT_LINE_HALT, data ? CLEAR_LINE : ASSERT_LINE); break; case 7: /* LED */ @@ -195,13 +231,13 @@ WRITE16_MEMBER(harddriv_state::hdsnd68k_latches_w) } -WRITE16_MEMBER(harddriv_state::hdsnd68k_speech_w) +WRITE16_MEMBER(harddriv_sound_board_device::hdsnd68k_speech_w) { logerror("%06X:hdsnd68k_speech_w(%04X)=%04X\n", space.device().safe_pcbase(), offset, data); } -WRITE16_MEMBER(harddriv_state::hdsnd68k_irqclr_w) +WRITE16_MEMBER(harddriv_sound_board_device::hdsnd68k_irqclr_w) { m_irq68k = 0; update_68k_interrupts(); @@ -215,31 +251,31 @@ WRITE16_MEMBER(harddriv_state::hdsnd68k_irqclr_w) * *************************************/ -READ16_MEMBER(harddriv_state::hdsnd68k_320ram_r) +READ16_MEMBER(harddriv_sound_board_device::hdsnd68k_320ram_r) { return m_sounddsp_ram[offset & 0xfff]; } -WRITE16_MEMBER(harddriv_state::hdsnd68k_320ram_w) +WRITE16_MEMBER(harddriv_sound_board_device::hdsnd68k_320ram_w) { COMBINE_DATA(&m_sounddsp_ram[offset & 0xfff]); } -READ16_MEMBER(harddriv_state::hdsnd68k_320ports_r) +READ16_MEMBER(harddriv_sound_board_device::hdsnd68k_320ports_r) { return m_sounddsp->space(AS_IO).read_word((offset & 7) << 1); } -WRITE16_MEMBER(harddriv_state::hdsnd68k_320ports_w) +WRITE16_MEMBER(harddriv_sound_board_device::hdsnd68k_320ports_w) { - if (m_sounddsp) m_sounddsp->space(AS_IO).write_word((offset & 7) << 1, data); + m_sounddsp->space(AS_IO).write_word((offset & 7) << 1, data); } -READ16_MEMBER(harddriv_state::hdsnd68k_320com_r) +READ16_MEMBER(harddriv_sound_board_device::hdsnd68k_320com_r) { if (m_cramen) return m_comram[offset & 0x1ff]; @@ -249,7 +285,7 @@ READ16_MEMBER(harddriv_state::hdsnd68k_320com_r) } -WRITE16_MEMBER(harddriv_state::hdsnd68k_320com_w) +WRITE16_MEMBER(harddriv_sound_board_device::hdsnd68k_320com_w) { if (m_cramen) COMBINE_DATA(&m_comram[offset & 0x1ff]); @@ -265,7 +301,7 @@ WRITE16_MEMBER(harddriv_state::hdsnd68k_320com_w) * *************************************/ -READ16_MEMBER(harddriv_state::hdsnddsp_get_bio) +READ16_MEMBER(harddriv_sound_board_device::hdsnddsp_get_bio) { UINT64 cycles_since_last_bio = m_sounddsp->total_cycles() - m_last_bio_cycles; INT32 cycles_until_bio = CYCLES_PER_BIO - cycles_since_last_bio; @@ -289,7 +325,7 @@ READ16_MEMBER(harddriv_state::hdsnddsp_get_bio) * *************************************/ -WRITE16_MEMBER(harddriv_state::hdsnddsp_dac_w) +WRITE16_MEMBER(harddriv_sound_board_device::hdsnddsp_dac_w) { /* DAC L */ if (!m_dacmute) @@ -297,14 +333,14 @@ WRITE16_MEMBER(harddriv_state::hdsnddsp_dac_w) } -WRITE16_MEMBER(harddriv_state::hdsnddsp_comport_w) +WRITE16_MEMBER(harddriv_sound_board_device::hdsnddsp_comport_w) { /* COM port TD0-7 */ logerror("%06X:hdsnddsp_comport_w=%d\n", space.device().safe_pcbase(), data); } -WRITE16_MEMBER(harddriv_state::hdsnddsp_mute_w) +WRITE16_MEMBER(harddriv_sound_board_device::hdsnddsp_mute_w) { /* mute DAC audio, D0=1 */ /* m_dacmute = data & 1; -- NOT STUFFED */ @@ -312,7 +348,7 @@ WRITE16_MEMBER(harddriv_state::hdsnddsp_mute_w) } -WRITE16_MEMBER(harddriv_state::hdsnddsp_gen68kirq_w) +WRITE16_MEMBER(harddriv_sound_board_device::hdsnddsp_gen68kirq_w) { /* generate 68k IRQ */ m_irq68k = 1; @@ -320,7 +356,7 @@ WRITE16_MEMBER(harddriv_state::hdsnddsp_gen68kirq_w) } -WRITE16_MEMBER(harddriv_state::hdsnddsp_soundaddr_w) +WRITE16_MEMBER(harddriv_sound_board_device::hdsnddsp_soundaddr_w) { if (offset == 0) { @@ -335,7 +371,7 @@ WRITE16_MEMBER(harddriv_state::hdsnddsp_soundaddr_w) } -READ16_MEMBER(harddriv_state::hdsnddsp_rom_r) +READ16_MEMBER(harddriv_sound_board_device::hdsnddsp_rom_r) { if (m_sound_rom_offs < m_romsize) return m_rombase[m_sound_rom_offs++] << 7; @@ -344,14 +380,77 @@ READ16_MEMBER(harddriv_state::hdsnddsp_rom_r) } -READ16_MEMBER(harddriv_state::hdsnddsp_comram_r) +READ16_MEMBER(harddriv_sound_board_device::hdsnddsp_comram_r) { return m_comram[m_sound_rom_offs++ & 0x1ff]; } -READ16_MEMBER(harddriv_state::hdsnddsp_compare_r) +READ16_MEMBER(harddriv_sound_board_device::hdsnddsp_compare_r) { logerror("%06X:hdsnddsp_compare_r(%04X)\n", space.device().safe_pcbase(), offset); return 0; } + +static ADDRESS_MAP_START( driversnd_68k_map, AS_PROGRAM, 16, harddriv_sound_board_device ) + ADDRESS_MAP_UNMAP_HIGH + AM_RANGE(0x000000, 0x01ffff) AM_ROM + AM_RANGE(0xff0000, 0xff0fff) AM_READWRITE(hdsnd68k_data_r, hdsnd68k_data_w) + AM_RANGE(0xff1000, 0xff1fff) AM_READWRITE(hdsnd68k_switches_r, hdsnd68k_latches_w) + AM_RANGE(0xff2000, 0xff2fff) AM_READWRITE(hdsnd68k_320port_r, hdsnd68k_speech_w) + AM_RANGE(0xff3000, 0xff3fff) AM_READWRITE(hdsnd68k_status_r, hdsnd68k_irqclr_w) + AM_RANGE(0xff4000, 0xff5fff) AM_READWRITE(hdsnd68k_320ram_r, hdsnd68k_320ram_w) + AM_RANGE(0xff6000, 0xff7fff) AM_READWRITE(hdsnd68k_320ports_r, hdsnd68k_320ports_w) + AM_RANGE(0xff8000, 0xffbfff) AM_READWRITE(hdsnd68k_320com_r, hdsnd68k_320com_w) + AM_RANGE(0xffc000, 0xffffff) AM_RAM +ADDRESS_MAP_END + + +static ADDRESS_MAP_START( driversnd_dsp_program_map, AS_PROGRAM, 16, harddriv_sound_board_device ) + ADDRESS_MAP_UNMAP_HIGH + AM_RANGE(0x000, 0xfff) AM_RAM AM_SHARE("sounddsp_ram") +ADDRESS_MAP_END + + +/* $000 - 08F TMS32010 Internal Data RAM in Data Address Space */ + +static ADDRESS_MAP_START( driversnd_dsp_io_map, AS_IO, 16, harddriv_sound_board_device ) + AM_RANGE(0, 0) AM_READWRITE(hdsnddsp_rom_r, hdsnddsp_dac_w) + AM_RANGE(1, 1) AM_READ(hdsnddsp_comram_r) + AM_RANGE(2, 2) AM_READ(hdsnddsp_compare_r) + AM_RANGE(1, 2) AM_WRITENOP + AM_RANGE(3, 3) AM_WRITE(hdsnddsp_comport_w) + AM_RANGE(4, 4) AM_WRITE(hdsnddsp_mute_w) + AM_RANGE(5, 5) AM_WRITE(hdsnddsp_gen68kirq_w) + AM_RANGE(6, 7) AM_WRITE(hdsnddsp_soundaddr_w) + AM_RANGE(TMS32010_BIO, TMS32010_BIO) AM_READ(hdsnddsp_get_bio) +ADDRESS_MAP_END + + +static MACHINE_CONFIG_FRAGMENT( harddriv_snd ) + + /* basic machine hardware */ + MCFG_CPU_ADD("soundcpu", M68000, XTAL_16MHz/2) + MCFG_CPU_PROGRAM_MAP(driversnd_68k_map) + + MCFG_CPU_ADD("sounddsp", TMS32010, XTAL_20MHz) + MCFG_CPU_PROGRAM_MAP(driversnd_dsp_program_map) + /* Data Map is internal to the CPU */ + MCFG_CPU_IO_MAP(driversnd_dsp_io_map) + + /* sound hardware */ + MCFG_SPEAKER_STANDARD_MONO("mono") + + MCFG_DAC_ADD("dac") + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) +MACHINE_CONFIG_END + +//------------------------------------------------- +// machine_config_additions - device-specific +// machine configurations +//------------------------------------------------- + +machine_config_constructor harddriv_sound_board_device::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( harddriv_snd ); +} diff --git a/src/mame/drivers/harddriv.c b/src/mame/drivers/harddriv.c index 8df43358f10..54bb8470436 100644 --- a/src/mame/drivers/harddriv.c +++ b/src/mame/drivers/harddriv.c @@ -347,14 +347,13 @@ harddriv_state::harddriv_state(const machine_config &mconfig, const char *tag, d m_gsp(*this, "gsp"), m_msp(*this, "msp"), m_adsp(*this, "adsp"), - m_soundcpu(*this, "soundcpu"), - m_sounddsp(*this, "sounddsp"), m_jsacpu(*this, "jsacpu"), m_dsp32(*this, "dsp32"), m_ds3sdsp(*this, "ds3sdsp"), m_ds3xdsp(*this, "ds3xdsp"), m_ds3dac1(*this, "ds3dac1"), m_ds3dac2(*this, "ds3dac2"), + m_harddriv_sound(*this, "harddriv_sound"), m_jsa(*this, "jsa"), m_hd34010_host_access(0), m_dsk_pio_access(0), @@ -379,7 +378,6 @@ harddriv_state::harddriv_state(const machine_config &mconfig, const char *tag, d m_ds3_speedup_addr(0), m_ds3_speedup_pc(0), m_ds3_transfer_pc(0), - m_sounddsp_ram(*this, "sounddsp_ram"), m_gsp_multisync(0), m_gsp_vram(*this, "gsp_vram", 16), m_gsp_control_lo(*this, "gsp_control_lo"), @@ -445,23 +443,11 @@ harddriv_state::harddriv_state(const machine_config &mconfig, const char *tag, d m_st68k_sloop_bank(0), m_st68k_last_alt_sloop_offset(0), m_next_msp_sync(0), - m_soundflag(0), - m_mainflag(0), - m_sounddata(0), - m_maindata(0), - m_dacmute(0), - m_cramen(0), - m_irq68k(0), - m_sound_rom_offs(0), - m_rombase(0), - m_romsize(0), - m_last_bio_cycles(0), m_vram_mask(0), m_shiftreg_enable(0), m_gsp_shiftreg_source(0), m_gfx_finescroll(0), m_gfx_palettebank(0), - m_dac(*this, "dac"), m_duart(*this, "duartn68681"), m_asic65(*this, "asic65"), m_sound_int_state(0), @@ -501,11 +487,6 @@ harddriv_state::harddriv_state(const machine_config &mconfig, const char *tag, d m_dataval[i] = 0; } - for (i = 0; i < 0x400 / 2; i++) - { - m_comram[i] = 0; - } - for (i = 0; i < 65536 * 4; i++) { m_mask_table[i] = 0; @@ -745,50 +726,6 @@ static ADDRESS_MAP_START( dsk2_dsp32_map, AS_PROGRAM, 32, harddriv_state ) ADDRESS_MAP_END - -/************************************* - * - * Driver sound board memory maps - * - *************************************/ - -static ADDRESS_MAP_START( driversnd_68k_map, AS_PROGRAM, 16, harddriv_state ) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0xff0000, 0xff0fff) AM_READWRITE(hdsnd68k_data_r, hdsnd68k_data_w) - AM_RANGE(0xff1000, 0xff1fff) AM_READWRITE(hdsnd68k_switches_r, hdsnd68k_latches_w) - AM_RANGE(0xff2000, 0xff2fff) AM_READWRITE(hdsnd68k_320port_r, hdsnd68k_speech_w) - AM_RANGE(0xff3000, 0xff3fff) AM_READWRITE(hdsnd68k_status_r, hdsnd68k_irqclr_w) - AM_RANGE(0xff4000, 0xff5fff) AM_READWRITE(hdsnd68k_320ram_r, hdsnd68k_320ram_w) - AM_RANGE(0xff6000, 0xff7fff) AM_READWRITE(hdsnd68k_320ports_r, hdsnd68k_320ports_w) - AM_RANGE(0xff8000, 0xffbfff) AM_READWRITE(hdsnd68k_320com_r, hdsnd68k_320com_w) - AM_RANGE(0xffc000, 0xffffff) AM_RAM -ADDRESS_MAP_END - - -static ADDRESS_MAP_START( driversnd_dsp_program_map, AS_PROGRAM, 16, harddriv_state ) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000, 0xfff) AM_RAM AM_SHARE("sounddsp_ram") -ADDRESS_MAP_END - - -/* $000 - 08F TMS32010 Internal Data RAM in Data Address Space */ - -static ADDRESS_MAP_START( driversnd_dsp_io_map, AS_IO, 16, harddriv_state ) - AM_RANGE(0, 0) AM_READWRITE(hdsnddsp_rom_r, hdsnddsp_dac_w) - AM_RANGE(1, 1) AM_READ(hdsnddsp_comram_r) - AM_RANGE(2, 2) AM_READ(hdsnddsp_compare_r) - AM_RANGE(1, 2) AM_WRITENOP - AM_RANGE(3, 3) AM_WRITE(hdsnddsp_comport_w) - AM_RANGE(4, 4) AM_WRITE(hdsnddsp_mute_w) - AM_RANGE(5, 5) AM_WRITE(hdsnddsp_gen68kirq_w) - AM_RANGE(6, 7) AM_WRITE(hdsnddsp_soundaddr_w) - AM_RANGE(TMS32010_BIO, TMS32010_BIO) AM_READ(hdsnddsp_get_bio) -ADDRESS_MAP_END - - - - /************************************* * * Port definitions @@ -1663,32 +1600,6 @@ MACHINE_CONFIG_END -/************************************* - * - * Sound board pieces - * - *************************************/ - -static MACHINE_CONFIG_FRAGMENT( driversnd ) - - /* basic machine hardware */ - MCFG_CPU_ADD("soundcpu", M68000, XTAL_16MHz/2) - MCFG_CPU_PROGRAM_MAP(driversnd_68k_map) - - MCFG_CPU_ADD("sounddsp", TMS32010, XTAL_20MHz) - MCFG_CPU_PROGRAM_MAP(driversnd_dsp_program_map) - /* Data Map is internal to the CPU */ - MCFG_CPU_IO_MAP(driversnd_dsp_io_map) - - /* sound hardware */ - MCFG_SPEAKER_STANDARD_MONO("mono") - - MCFG_DAC_ADD("dac") - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END - - - /************************************* * * Machine drivers @@ -1699,7 +1610,7 @@ static MACHINE_CONFIG_FRAGMENT( harddriv ) MCFG_FRAGMENT_ADD( driver_msp ) /* basic machine hardware */ /* original driver board with MSP */ MCFG_FRAGMENT_ADD( adsp ) /* ADSP board */ - MCFG_FRAGMENT_ADD( driversnd ) /* driver sound board */ + MCFG_DEVICE_ADD("harddriv_sound", HARDDRIV_SOUND_BOARD_DEVICE, 0) /* driver sound board */ MACHINE_CONFIG_END static MACHINE_CONFIG_FRAGMENT( harddrivc ) @@ -1707,7 +1618,7 @@ static MACHINE_CONFIG_FRAGMENT( harddrivc ) /* basic machine hardware */ /* multisync board with MSP */ MCFG_FRAGMENT_ADD( adsp ) /* ADSP board */ - MCFG_FRAGMENT_ADD( driversnd ) /* driver sound board */ + MCFG_DEVICE_ADD("harddriv_sound", HARDDRIV_SOUND_BOARD_DEVICE, 0) /* driver sound board */ MACHINE_CONFIG_END static MACHINE_CONFIG_FRAGMENT( racedriv ) @@ -1716,7 +1627,7 @@ static MACHINE_CONFIG_FRAGMENT( racedriv ) /* basic machine hardware */ /* original driver board without MSP */ MCFG_FRAGMENT_ADD( adsp ) /* ADSP board */ MCFG_FRAGMENT_ADD( dsk ) /* DSK board */ - MCFG_FRAGMENT_ADD( driversnd ) /* driver sound board */ + MCFG_DEVICE_ADD("harddriv_sound", HARDDRIV_SOUND_BOARD_DEVICE, 0) /* driver sound board */ MACHINE_CONFIG_END static MACHINE_CONFIG_FRAGMENT( racedrivc ) @@ -1726,7 +1637,7 @@ static MACHINE_CONFIG_FRAGMENT( racedrivc ) /* basic machine hardware */ /* multisync board without MSP */ MCFG_FRAGMENT_ADD( adsp ) /* ADSP board */ MCFG_FRAGMENT_ADD( dsk ) /* DSK board */ - MCFG_FRAGMENT_ADD( driversnd ) /* driver sound board */ + MCFG_DEVICE_ADD("harddriv_sound", HARDDRIV_SOUND_BOARD_DEVICE, 0) /* driver sound board */ MACHINE_CONFIG_END @@ -1737,7 +1648,7 @@ static MACHINE_CONFIG_FRAGMENT( racedrivc_panorama_side ) /* basic machine hardware */ /* multisync board without MSP */ MCFG_FRAGMENT_ADD( adsp ) /* ADSP board */ // MCFG_FRAGMENT_ADD( dsk ) /* DSK board */ -// MCFG_FRAGMENT_ADD( driversnd ) /* driver sound board */ +// MCFG_DEVICE_ADD("sound_board", HARDDRIV_SOUND_BOARD_DEVICE, 0) /* driver sound board */ MACHINE_CONFIG_END WRITE_LINE_MEMBER(harddriv_state::sound_int_write_line) @@ -2134,7 +2045,7 @@ ROM_START( harddriv ) ROM_LOAD16_BYTE( "136052-1111.200x", 0x0c0000, 0x010000, CRC(e1f455a3) SHA1(68462a33bbfcc526d8f27ec082e55937a26ead8b) ) ROM_LOAD16_BYTE( "136052-1119.210x", 0x0c0001, 0x010000, CRC(a7fc3aaa) SHA1(ce8d4a8f83e25008cafa2a2242ed26b90b8517da) ) - ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */ + ROM_REGION( 0x20000, "mainpcb:harddriv_sound:soundcpu", 0 ) /* 2*64k for audio 68000 code */ ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) ) ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) ) @@ -2170,7 +2081,7 @@ ROM_START( harddrivg ) ROM_LOAD16_BYTE( "136052-4211.200x", 0x0c0000, 0x010000, CRC(20d1b3d5) SHA1(b7c4a2cf6ba729530c24980704989b3a3efb343b) ) ROM_LOAD16_BYTE( "136052-4219.210x", 0x0c0001, 0x010000, CRC(105e7052) SHA1(a8d13c35418e58410cfd74c243b74963f1553068) ) - ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */ + ROM_REGION( 0x20000, "mainpcb:harddriv_sound:soundcpu", 0 ) /* 2*64k for audio 68000 code */ ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) ) ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) ) @@ -2207,7 +2118,7 @@ ROM_START( harddrivj ) ROM_LOAD16_BYTE( "136052-6811.200x", 0x0c0000, 0x010000, CRC(7bc5c8da) SHA1(ac228d6391bc9ac4238f953f9ad6eb93b3ff9958) ) ROM_LOAD16_BYTE( "136052-6819.210x", 0x0c0001, 0x010000, CRC(368b7e17) SHA1(e8742edec6961173df4450073a427cf3b9f3ff57) ) - ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */ + ROM_REGION( 0x20000, "mainpcb:harddriv_sound:soundcpu", 0 ) /* 2*64k for audio 68000 code */ ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) ) ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) ) @@ -2242,7 +2153,7 @@ ROM_START( harddrivb ) ROM_LOAD16_BYTE( "136052-5911.200x", 0x0c0000, 0x010000, CRC(564ac427) SHA1(f71d5a8d06681fc96e753e7cd18e16b32ba6907f) ) ROM_LOAD16_BYTE( "136052-5919.210x", 0x0c0001, 0x010000, CRC(752d9a6d) SHA1(28edb54c7217f5ccdcb2b5614d4e8c2290d96b2a) ) - ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */ + ROM_REGION( 0x20000, "mainpcb:harddriv_sound:soundcpu", 0 ) /* 2*64k for audio 68000 code */ ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) ) ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) ) @@ -2277,7 +2188,7 @@ ROM_START( harddrivb6 ) ROM_LOAD16_BYTE( "136052-5911.200x", 0x0c0000, 0x010000, CRC(564ac427) SHA1(f71d5a8d06681fc96e753e7cd18e16b32ba6907f) ) ROM_LOAD16_BYTE( "136052-5919.210x", 0x0c0001, 0x010000, CRC(752d9a6d) SHA1(28edb54c7217f5ccdcb2b5614d4e8c2290d96b2a) ) - ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */ + ROM_REGION( 0x20000, "mainpcb:harddriv_sound:soundcpu", 0 ) /* 2*64k for audio 68000 code */ ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) ) ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) ) @@ -2314,7 +2225,7 @@ ROM_START( harddrivj6 ) ROM_LOAD16_BYTE( "136052-6811.200x", 0x0c0000, 0x010000, CRC(7bc5c8da) SHA1(ac228d6391bc9ac4238f953f9ad6eb93b3ff9958) ) ROM_LOAD16_BYTE( "136052-6819.210x", 0x0c0001, 0x010000, CRC(368b7e17) SHA1(e8742edec6961173df4450073a427cf3b9f3ff57) ) - ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */ + ROM_REGION( 0x20000, "mainpcb:harddriv_sound:soundcpu", 0 ) /* 2*64k for audio 68000 code */ ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) ) ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) ) @@ -2349,7 +2260,7 @@ ROM_START( harddrivb5 ) ROM_LOAD16_BYTE( "136052-5911.200x", 0x0c0000, 0x010000, CRC(564ac427) SHA1(f71d5a8d06681fc96e753e7cd18e16b32ba6907f) ) ROM_LOAD16_BYTE( "136052-5919.210x", 0x0c0001, 0x010000, CRC(752d9a6d) SHA1(28edb54c7217f5ccdcb2b5614d4e8c2290d96b2a) ) - ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */ + ROM_REGION( 0x20000, "mainpcb:harddriv_sound:soundcpu", 0 ) /* 2*64k for audio 68000 code */ ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) ) ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) ) @@ -2384,7 +2295,7 @@ ROM_START( harddrivg4 ) ROM_LOAD16_BYTE( "136052-4211.200x", 0x0c0000, 0x010000, CRC(20d1b3d5) SHA1(b7c4a2cf6ba729530c24980704989b3a3efb343b) ) ROM_LOAD16_BYTE( "136052-4219.210x", 0x0c0001, 0x010000, CRC(105e7052) SHA1(a8d13c35418e58410cfd74c243b74963f1553068) ) - ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */ + ROM_REGION( 0x20000, "mainpcb:harddriv_sound:soundcpu", 0 ) /* 2*64k for audio 68000 code */ ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) ) ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) ) @@ -2419,7 +2330,7 @@ ROM_START( harddriv3 ) ROM_LOAD16_BYTE( "136052-1111.200x", 0x0c0000, 0x010000, CRC(e1f455a3) SHA1(68462a33bbfcc526d8f27ec082e55937a26ead8b) ) ROM_LOAD16_BYTE( "136052-1119.210x", 0x0c0001, 0x010000, CRC(a7fc3aaa) SHA1(ce8d4a8f83e25008cafa2a2242ed26b90b8517da) ) - ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */ + ROM_REGION( 0x20000, "mainpcb:harddriv_sound:soundcpu", 0 ) /* 2*64k for audio 68000 code */ ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) ) ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) ) @@ -2454,7 +2365,7 @@ ROM_START( harddriv2 ) ROM_LOAD16_BYTE( "136052-1111.200x", 0x0c0000, 0x010000, CRC(e1f455a3) SHA1(68462a33bbfcc526d8f27ec082e55937a26ead8b) ) ROM_LOAD16_BYTE( "136052-1119.210x", 0x0c0001, 0x010000, CRC(a7fc3aaa) SHA1(ce8d4a8f83e25008cafa2a2242ed26b90b8517da) ) - ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */ + ROM_REGION( 0x20000, "mainpcb:harddriv_sound:soundcpu", 0 ) /* 2*64k for audio 68000 code */ ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) ) ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) ) @@ -2489,7 +2400,7 @@ ROM_START( harddriv1 ) ROM_LOAD16_BYTE( "136052-1111.200x", 0x0c0000, 0x010000, CRC(e1f455a3) SHA1(68462a33bbfcc526d8f27ec082e55937a26ead8b) ) ROM_LOAD16_BYTE( "136052-1119.210x", 0x0c0001, 0x010000, CRC(a7fc3aaa) SHA1(ce8d4a8f83e25008cafa2a2242ed26b90b8517da) ) - ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */ + ROM_REGION( 0x20000, "mainpcb:harddriv_sound:soundcpu", 0 ) /* 2*64k for audio 68000 code */ ROM_LOAD16_BYTE( "136052-1121.45n", 0x000001, 0x008000, CRC(04316e6f) SHA1(9836b8d16cebd6013834432c9e5a5aca0050c889) ) ROM_LOAD16_BYTE( "136052-1122.70n", 0x000000, 0x008000, CRC(0c446eec) SHA1(53576c2800484d098cf250ab9a865314167c9d96) ) @@ -2524,7 +2435,7 @@ ROM_START( harddrivc ) ROM_LOAD16_BYTE( "136068-1114.200x", 0x0c0000, 0x010000, CRC(293c153b) SHA1(6300a50766b19ad203b5c7da28d51bf22054b39e) ) ROM_LOAD16_BYTE( "136068-1113.210x", 0x0c0001, 0x010000, CRC(5630390d) SHA1(cd1932cee70cddd1fb2110d1aeebb573a13f1339) ) - ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */ + ROM_REGION( 0x20000, "mainpcb:harddriv_sound:soundcpu", 0 ) /* 2*64k for audio 68000 code */ ROM_LOAD16_BYTE( "136052-3122.70n", 0x000000, 0x008000, CRC(3f20a396) SHA1(f34819796087c543083f6baac6c778e0cdb7340a) ) ROM_LOAD16_BYTE( "136052-3121.45n", 0x000001, 0x008000, CRC(6346bca3) SHA1(707dc86305142722a4757ba431cf6c7e9cf116b3) ) @@ -2559,7 +2470,7 @@ ROM_START( harddrivcg ) ROM_LOAD16_BYTE( "136068-1114.200x", 0x0c0000, 0x010000, CRC(293c153b) SHA1(6300a50766b19ad203b5c7da28d51bf22054b39e) ) ROM_LOAD16_BYTE( "136068-1113.210x", 0x0c0001, 0x010000, CRC(5630390d) SHA1(cd1932cee70cddd1fb2110d1aeebb573a13f1339) ) - ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */ + ROM_REGION( 0x20000, "mainpcb:harddriv_sound:soundcpu", 0 ) /* 2*64k for audio 68000 code */ ROM_LOAD16_BYTE( "136052-3122.70n", 0x000000, 0x008000, CRC(3f20a396) SHA1(f34819796087c543083f6baac6c778e0cdb7340a) ) ROM_LOAD16_BYTE( "136052-3121.45n", 0x000001, 0x008000, CRC(6346bca3) SHA1(707dc86305142722a4757ba431cf6c7e9cf116b3) ) @@ -2594,7 +2505,7 @@ ROM_START( harddrivcb ) ROM_LOAD16_BYTE( "136068-2914.200x", 0x0c0000, 0x010000, CRC(dd2998a5) SHA1(36c71549d114309b9072ced83ed149cad1d23646) ) ROM_LOAD16_BYTE( "136068-2913.210x", 0x0c0001, 0x010000, CRC(a211754d) SHA1(b93d4867f664caa76f2170ef0934194de29a5516) ) - ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */ + ROM_REGION( 0x20000, "mainpcb:harddriv_sound:soundcpu", 0 ) /* 2*64k for audio 68000 code */ ROM_LOAD16_BYTE( "136052-3122.70n", 0x000000, 0x008000, CRC(3f20a396) SHA1(f34819796087c543083f6baac6c778e0cdb7340a) ) ROM_LOAD16_BYTE( "136052-3121.45n", 0x000001, 0x008000, CRC(6346bca3) SHA1(707dc86305142722a4757ba431cf6c7e9cf116b3) ) @@ -2629,7 +2540,7 @@ ROM_START( harddrivc1 ) ROM_LOAD16_BYTE( "136068-1114.200x", 0x0c0000, 0x010000, CRC(293c153b) SHA1(6300a50766b19ad203b5c7da28d51bf22054b39e) ) ROM_LOAD16_BYTE( "136068-1113.210x", 0x0c0001, 0x010000, CRC(5630390d) SHA1(cd1932cee70cddd1fb2110d1aeebb573a13f1339) ) - ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */ + ROM_REGION( 0x20000, "mainpcb:harddriv_sound:soundcpu", 0 ) /* 2*64k for audio 68000 code */ ROM_LOAD16_BYTE( "136052-3122.70n", 0x000000, 0x008000, CRC(3f20a396) SHA1(f34819796087c543083f6baac6c778e0cdb7340a) ) ROM_LOAD16_BYTE( "136052-3121.45n", 0x000001, 0x008000, CRC(6346bca3) SHA1(707dc86305142722a4757ba431cf6c7e9cf116b3) ) @@ -3126,7 +3037,7 @@ ROM_START( racedriv ) ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) - ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */ + ROM_REGION( 0x20000, "mainpcb:harddriv_sound:soundcpu", 0 ) /* 2*64k for audio 68000 code */ ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) ) ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) ) @@ -3177,7 +3088,7 @@ ROM_START( racedrivb ) ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) - ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */ + ROM_REGION( 0x20000, "mainpcb:harddriv_sound:soundcpu", 0 ) /* 2*64k for audio 68000 code */ ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) ) ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) ) @@ -3228,7 +3139,7 @@ ROM_START( racedrivg ) ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) - ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */ + ROM_REGION( 0x20000, "mainpcb:harddriv_sound:soundcpu", 0 ) /* 2*64k for audio 68000 code */ ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) ) ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) ) @@ -3279,7 +3190,7 @@ ROM_START( racedriv4 ) ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) - ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */ + ROM_REGION( 0x20000, "mainpcb:harddriv_sound:soundcpu", 0 ) /* 2*64k for audio 68000 code */ ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) ) ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) ) @@ -3330,7 +3241,7 @@ ROM_START( racedrivb4 ) ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) - ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */ + ROM_REGION( 0x20000, "mainpcb:harddriv_sound:soundcpu", 0 ) /* 2*64k for audio 68000 code */ ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) ) ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) ) @@ -3381,7 +3292,7 @@ ROM_START( racedrivg4 ) ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) - ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */ + ROM_REGION( 0x20000, "mainpcb:harddriv_sound:soundcpu", 0 ) /* 2*64k for audio 68000 code */ ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) ) ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) ) @@ -3432,7 +3343,7 @@ ROM_START( racedriv3 ) ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) - ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */ + ROM_REGION( 0x20000, "mainpcb:harddriv_sound:soundcpu", 0 ) /* 2*64k for audio 68000 code */ ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) ) ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) ) @@ -3483,7 +3394,7 @@ ROM_START( racedriv2 ) ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) - ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */ + ROM_REGION( 0x20000, "mainpcb:harddriv_sound:soundcpu", 0 ) /* 2*64k for audio 68000 code */ ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) ) ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) ) @@ -3534,7 +3445,7 @@ ROM_START( racedriv1 ) ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) - ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */ + ROM_REGION( 0x20000, "mainpcb:harddriv_sound:soundcpu", 0 ) /* 2*64k for audio 68000 code */ ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) ) ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) ) @@ -3585,7 +3496,7 @@ ROM_START( racedrivg1 ) ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) - ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */ + ROM_REGION( 0x20000, "mainpcb:harddriv_sound:soundcpu", 0 ) /* 2*64k for audio 68000 code */ ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) ) ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) ) @@ -3636,7 +3547,7 @@ ROM_START( racedrivb1 ) ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) - ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */ + ROM_REGION( 0x20000, "mainpcb:harddriv_sound:soundcpu", 0 ) /* 2*64k for audio 68000 code */ ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) ) ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) ) @@ -3687,7 +3598,7 @@ ROM_START( racedrivc ) ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) - ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */ + ROM_REGION( 0x20000, "mainpcb:harddriv_sound:soundcpu", 0 ) /* 2*64k for audio 68000 code */ ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) ) ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) ) @@ -3738,7 +3649,7 @@ ROM_START( racedrivcb ) ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) - ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */ + ROM_REGION( 0x20000, "mainpcb:harddriv_sound:soundcpu", 0 ) /* 2*64k for audio 68000 code */ ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) ) ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) ) @@ -3789,7 +3700,7 @@ ROM_START( racedrivcg ) ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) - ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */ + ROM_REGION( 0x20000, "mainpcb:harddriv_sound:soundcpu", 0 ) /* 2*64k for audio 68000 code */ ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) ) ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) ) @@ -3840,7 +3751,7 @@ ROM_START( racedrivc4 ) ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) - ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */ + ROM_REGION( 0x20000, "mainpcb:harddriv_sound:soundcpu", 0 ) /* 2*64k for audio 68000 code */ ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) ) ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) ) @@ -3891,7 +3802,7 @@ ROM_START( racedrivcb4 ) ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) - ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */ + ROM_REGION( 0x20000, "mainpcb:harddriv_sound:soundcpu", 0 ) /* 2*64k for audio 68000 code */ ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) ) ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) ) @@ -3942,7 +3853,7 @@ ROM_START( racedrivcg4 ) ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) - ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */ + ROM_REGION( 0x20000, "mainpcb:harddriv_sound:soundcpu", 0 ) /* 2*64k for audio 68000 code */ ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) ) ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) ) @@ -3993,7 +3904,7 @@ ROM_START( racedrivc2 ) ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) - ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */ + ROM_REGION( 0x20000, "mainpcb:harddriv_sound:soundcpu", 0 ) /* 2*64k for audio 68000 code */ ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) ) ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) ) @@ -4044,7 +3955,7 @@ ROM_START( racedrivc1 ) ROM_REGION( 0x2000, "mainpcb:asic65:asic65cpu", 0 ) /* ASIC65 TMS32015 code */ ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) - ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */ + ROM_REGION( 0x20000, "mainpcb:harddriv_sound:soundcpu", 0 ) /* 2*64k for audio 68000 code */ ROM_LOAD16_BYTE( "136077-1032.70n", 0x000000, 0x008000, CRC(fbc903a6) SHA1(047240a5192918ced52d90b0555ba2e19a26329e) ) ROM_LOAD16_BYTE( "136077-1033.45n", 0x000001, 0x008000, CRC(e032ca7c) SHA1(a80c980c8e58cf8cada72140e42a3cd1ea987b3d) ) @@ -4181,7 +4092,7 @@ ROM_START( racedrivpan ) ROM_LOAD( "136077-1027.30j", 0x00000, 0x02000, NO_DUMP ) /* ADSP board */ - ROM_REGION( 0x20000, "mainpcb:soundcpu", 0 ) /* 2*64k for audio 68000 code */ + ROM_REGION( 0x20000, "mainpcb:harddriv_sound:soundcpu", 0 ) /* 2*64k for audio 68000 code */ ROM_LOAD16_BYTE( "rdps1032.bin", 0x000000, 0x010000, CRC(33005f2a) SHA1(e4037a76f122b271a9675d9187ab847a11738640) ) ROM_LOAD16_BYTE( "rdps1033.bin", 0x000001, 0x010000, CRC(4fc800ac) SHA1(dd8cfdb727d6a65274f4f871a589a36796ae1e57) ) @@ -4930,12 +4841,10 @@ void harddriv_state::init_dspcom() /* COMMON INIT: initialize the original "driver" sound board */ void harddriv_state::init_driver_sound() { - hdsnd_init(); - /* install sound handlers */ - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x840000, 0x840001, read16_delegate(FUNC(harddriv_state::hd68k_snd_data_r), this), write16_delegate(FUNC(harddriv_state::hd68k_snd_data_w), this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x844000, 0x844001, read16_delegate(FUNC(harddriv_state::hd68k_snd_status_r), this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x84c000, 0x84c001, write16_delegate(FUNC(harddriv_state::hd68k_snd_reset_w), this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x840000, 0x840001, read16_delegate(FUNC(harddriv_sound_board_device::hd68k_snd_data_r), (harddriv_sound_board_device*)m_harddriv_sound), write16_delegate(FUNC(harddriv_sound_board_device::hd68k_snd_data_w), (harddriv_sound_board_device*)m_harddriv_sound)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x844000, 0x844001, read16_delegate(FUNC(harddriv_sound_board_device::hd68k_snd_status_r), (harddriv_sound_board_device*)m_harddriv_sound)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x84c000, 0x84c001, write16_delegate(FUNC(harddriv_sound_board_device::hd68k_snd_reset_w), (harddriv_sound_board_device*)m_harddriv_sound)); } diff --git a/src/mame/includes/harddriv.h b/src/mame/includes/harddriv.h index 012a6bedcc7..80ef7eee15d 100644 --- a/src/mame/includes/harddriv.h +++ b/src/mame/includes/harddriv.h @@ -35,8 +35,11 @@ extern const device_type STEELTALP_BOARD_DEVICE; extern const device_type STRTDRIV_BOARD_DEVICE; extern const device_type HDRIVAIR_BOARD_DEVICE; extern const device_type HDRIVAIRP_BOARD_DEVICE; +extern const device_type HARDDRIV_SOUND_BOARD_DEVICE; +class harddriv_sound_board_device; + class harddriv_state : public device_t /* public device_video_interface */ { @@ -48,14 +51,13 @@ public: required_device m_gsp; optional_device m_msp; required_device m_adsp; - optional_device m_soundcpu; - optional_device m_sounddsp; optional_device m_jsacpu; optional_device m_dsp32; optional_device m_ds3sdsp; optional_device m_ds3xdsp; optional_device m_ds3dac1; optional_device m_ds3dac2; + optional_device m_harddriv_sound; optional_device m_jsa; UINT8 m_hd34010_host_access; @@ -97,8 +99,6 @@ public: UINT32 m_msp_speedup_count[4]; UINT32 m_adsp_speedup_count[4]; - optional_shared_ptr m_sounddsp_ram; - UINT8 m_gsp_multisync; optional_shared_ptr m_gsp_vram; optional_shared_ptr m_gsp_control_lo; @@ -185,23 +185,6 @@ public: UINT32 m_dataval[MAX_MSP_SYNC]; int m_next_msp_sync; - /* audio state */ - UINT8 m_soundflag; - UINT8 m_mainflag; - UINT16 m_sounddata; - UINT16 m_maindata; - - UINT8 m_dacmute; - UINT8 m_cramen; - UINT8 m_irq68k; - - offs_t m_sound_rom_offs; - - UINT8 * m_rombase; - UINT32 m_romsize; - UINT16 m_comram[0x400/2]; - UINT64 m_last_bio_cycles; - /* video state */ offs_t m_vram_mask; @@ -215,32 +198,6 @@ public: virtual void update_interrupts(); DECLARE_READ16_MEMBER(steeltal_dummy_r); DECLARE_READ32_MEMBER(rddsp_unmap_r); - DECLARE_READ16_MEMBER(hd68k_snd_data_r); - DECLARE_READ16_MEMBER(hd68k_snd_status_r); - DECLARE_WRITE16_MEMBER(hd68k_snd_data_w); - DECLARE_WRITE16_MEMBER(hd68k_snd_reset_w); - DECLARE_READ16_MEMBER(hdsnd68k_data_r); - DECLARE_WRITE16_MEMBER(hdsnd68k_data_w); - DECLARE_READ16_MEMBER(hdsnd68k_switches_r); - DECLARE_READ16_MEMBER(hdsnd68k_320port_r); - DECLARE_READ16_MEMBER(hdsnd68k_status_r); - DECLARE_WRITE16_MEMBER(hdsnd68k_latches_w); - DECLARE_WRITE16_MEMBER(hdsnd68k_speech_w); - DECLARE_WRITE16_MEMBER(hdsnd68k_irqclr_w); - DECLARE_READ16_MEMBER(hdsnd68k_320ram_r); - DECLARE_WRITE16_MEMBER(hdsnd68k_320ram_w); - DECLARE_READ16_MEMBER(hdsnd68k_320ports_r); - DECLARE_WRITE16_MEMBER(hdsnd68k_320ports_w); - DECLARE_READ16_MEMBER(hdsnd68k_320com_r); - DECLARE_WRITE16_MEMBER(hdsnd68k_320com_w); - DECLARE_READ16_MEMBER(hdsnddsp_get_bio); - DECLARE_WRITE16_MEMBER(hdsnddsp_comport_w); - DECLARE_WRITE16_MEMBER(hdsnddsp_mute_w); - DECLARE_WRITE16_MEMBER(hdsnddsp_gen68kirq_w); - DECLARE_WRITE16_MEMBER(hdsnddsp_soundaddr_w); - DECLARE_READ16_MEMBER(hdsnddsp_rom_r); - DECLARE_READ16_MEMBER(hdsnddsp_comram_r); - DECLARE_READ16_MEMBER(hdsnddsp_compare_r); void init_driver(); void init_multisync(int compact_inputs); void init_adsp(); @@ -278,18 +235,10 @@ public: INTERRUPT_GEN_MEMBER(hd68k_irq_gen); TIMER_CALLBACK_MEMBER(deferred_adsp_bank_switch); TIMER_CALLBACK_MEMBER(rddsp32_sync_cb); - DECLARE_WRITE16_MEMBER(hdsnddsp_dac_w); - optional_device m_dac; required_device m_duart; optional_device m_asic65; DECLARE_WRITE_LINE_MEMBER(harddriv_duart_irq_handler); - /*----------- defined in audio/harddriv.c -----------*/ - - void hdsnd_init(); - void update_68k_interrupts(); - TIMER_CALLBACK_MEMBER( delayed_68k_w ); - /*----------- defined in machine/harddriv.c -----------*/ /* Driver/Multisync board */ @@ -477,6 +426,74 @@ protected: virtual void device_reset(); }; +class harddriv_sound_board_device : public device_t +{ +public: + // construction/destruction + harddriv_sound_board_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + ~harddriv_sound_board_device() {} + + DECLARE_READ16_MEMBER(hd68k_snd_data_r); + DECLARE_READ16_MEMBER(hd68k_snd_status_r); + DECLARE_WRITE16_MEMBER(hd68k_snd_data_w); + DECLARE_WRITE16_MEMBER(hd68k_snd_reset_w); + + DECLARE_READ16_MEMBER(hdsnd68k_data_r); + DECLARE_WRITE16_MEMBER(hdsnd68k_data_w); + DECLARE_READ16_MEMBER(hdsnd68k_switches_r); + DECLARE_READ16_MEMBER(hdsnd68k_320port_r); + DECLARE_READ16_MEMBER(hdsnd68k_status_r); + DECLARE_WRITE16_MEMBER(hdsnd68k_latches_w); + DECLARE_WRITE16_MEMBER(hdsnd68k_speech_w); + DECLARE_WRITE16_MEMBER(hdsnd68k_irqclr_w); + DECLARE_READ16_MEMBER(hdsnd68k_320ram_r); + DECLARE_WRITE16_MEMBER(hdsnd68k_320ram_w); + DECLARE_READ16_MEMBER(hdsnd68k_320ports_r); + DECLARE_WRITE16_MEMBER(hdsnd68k_320ports_w); + DECLARE_READ16_MEMBER(hdsnd68k_320com_r); + DECLARE_WRITE16_MEMBER(hdsnd68k_320com_w); + DECLARE_READ16_MEMBER(hdsnddsp_get_bio); + + DECLARE_WRITE16_MEMBER(hdsnddsp_dac_w); + DECLARE_WRITE16_MEMBER(hdsnddsp_comport_w); + DECLARE_WRITE16_MEMBER(hdsnddsp_mute_w); + DECLARE_WRITE16_MEMBER(hdsnddsp_gen68kirq_w); + DECLARE_WRITE16_MEMBER(hdsnddsp_soundaddr_w); + DECLARE_READ16_MEMBER(hdsnddsp_rom_r); + DECLARE_READ16_MEMBER(hdsnddsp_comram_r); + DECLARE_READ16_MEMBER(hdsnddsp_compare_r); + +protected: + virtual void device_start(); + virtual void device_reset(); + virtual machine_config_constructor device_mconfig_additions() const; + +private: + optional_device m_soundcpu; + optional_device m_dac; + optional_device m_sounddsp; + optional_shared_ptr m_sounddsp_ram; + + UINT8 m_soundflag; + UINT8 m_mainflag; + UINT16 m_sounddata; + UINT16 m_maindata; + + UINT8 m_dacmute; + UINT8 m_cramen; + UINT8 m_irq68k; + + offs_t m_sound_rom_offs; + + UINT8 * m_rombase; + UINT32 m_romsize; + UINT16 m_comram[0x400/2]; + UINT64 m_last_bio_cycles; + + void update_68k_interrupts(); + TIMER_CALLBACK_MEMBER( delayed_68k_w ); +}; + /* Hard Drivin' */ class harddriv_board_device_state : public harddriv_state diff --git a/src/mame/machine/harddriv.c b/src/mame/machine/harddriv.c index e50ca399769..24a6ff0da7c 100644 --- a/src/mame/machine/harddriv.c +++ b/src/mame/machine/harddriv.c @@ -59,7 +59,6 @@ void harddriv_state::device_reset() /* halt several of the DSPs to start */ if (m_adsp != NULL) m_adsp->set_input_line(INPUT_LINE_HALT, ASSERT_LINE); if (m_dsp32 != NULL) m_dsp32->set_input_line(INPUT_LINE_HALT, ASSERT_LINE); - if (m_sounddsp != NULL) m_sounddsp->set_input_line(INPUT_LINE_HALT, ASSERT_LINE); m_last_gsp_shiftreg = 0;