harddriv.c: separated the harddriv sound board from the driver class into a device (nw)

This commit is contained in:
Ivan Vangelista 2015-05-07 18:51:15 +02:00
parent 31abc855db
commit a20b254ca1
4 changed files with 260 additions and 236 deletions

View File

@ -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::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 );
}

View File

@ -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));
}

View File

@ -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<tms34010_device> m_gsp;
optional_device<tms34010_device> m_msp;
required_device<adsp21xx_device> m_adsp;
optional_device<cpu_device> m_soundcpu;
optional_device<cpu_device> m_sounddsp;
optional_device<cpu_device> m_jsacpu;
optional_device<dsp32c_device> m_dsp32;
optional_device<adsp2105_device> m_ds3sdsp;
optional_device<adsp2105_device> m_ds3xdsp;
optional_device<dac_device> m_ds3dac1;
optional_device<dac_device> m_ds3dac2;
optional_device<harddriv_sound_board_device> m_harddriv_sound;
optional_device<atari_jsa_base_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<UINT16> m_sounddsp_ram;
UINT8 m_gsp_multisync;
optional_shared_ptr<UINT8> m_gsp_vram;
optional_shared_ptr<UINT16> 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<dac_device> m_dac;
required_device<mc68681_device> m_duart;
optional_device<asic65_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<cpu_device> m_soundcpu;
optional_device<dac_device> m_dac;
optional_device<cpu_device> m_sounddsp;
optional_shared_ptr<UINT16> 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

View File

@ -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;