diff options
Diffstat (limited to 'src/mame/drivers/metalmx.cpp')
-rw-r--r-- | src/mame/drivers/metalmx.cpp | 54 |
1 files changed, 13 insertions, 41 deletions
diff --git a/src/mame/drivers/metalmx.cpp b/src/mame/drivers/metalmx.cpp index c2aae10c208..ce1ae95b486 100644 --- a/src/mame/drivers/metalmx.cpp +++ b/src/mame/drivers/metalmx.cpp @@ -332,8 +332,8 @@ WRITE32_MEMBER(metalmx_state::reset_w) if (ACCESSING_BITS_16_31) { data >>= 16; - m_dsp32c_1->set_input_line(INPUT_LINE_RESET, data & 2 ? CLEAR_LINE : ASSERT_LINE); - m_dsp32c_2->set_input_line(INPUT_LINE_RESET, data & 1 ? CLEAR_LINE : ASSERT_LINE); + m_dsp32c[0]->set_input_line(INPUT_LINE_RESET, data & 2 ? CLEAR_LINE : ASSERT_LINE); + m_dsp32c[1]->set_input_line(INPUT_LINE_RESET, data & 1 ? CLEAR_LINE : ASSERT_LINE); } } @@ -374,7 +374,8 @@ WRITE8_MEMBER(metalmx_state::cage_irq_callback) * *************************************/ -WRITE32_MEMBER(metalmx_state::dsp32c_1_w) +template<int Chip> +WRITE32_MEMBER(metalmx_state::dsp32c_w) { offset <<= 1; @@ -383,10 +384,11 @@ WRITE32_MEMBER(metalmx_state::dsp32c_1_w) else if (ACCESSING_BITS_16_31) data >>= 16; - m_dsp32c_1->pio_w(offset, data); + m_dsp32c[Chip]->pio_w(offset, data); } -READ32_MEMBER(metalmx_state::dsp32c_1_r) +template<int Chip> +READ32_MEMBER(metalmx_state::dsp32c_r) { uint32_t data; @@ -395,36 +397,7 @@ READ32_MEMBER(metalmx_state::dsp32c_1_r) if (ACCESSING_BITS_0_15) offset += 1; - data = m_dsp32c_1->pio_r(offset); - - if (ACCESSING_BITS_16_31) - data <<= 16; - - return data; -} - -WRITE32_MEMBER(metalmx_state::dsp32c_2_w) -{ - offset <<= 1; - - if (ACCESSING_BITS_0_15) - offset += 1; - else if (ACCESSING_BITS_16_31) - data >>= 16; - - m_dsp32c_2->pio_w(offset, data); -} - -READ32_MEMBER(metalmx_state::dsp32c_2_r) -{ - uint32_t data; - - offset <<= 1; - - if (ACCESSING_BITS_0_15) - offset += 1; - - data = m_dsp32c_2->pio_r(offset); + data = m_dsp32c[Chip]->pio_r(offset); if (ACCESSING_BITS_16_31) data <<= 16; @@ -513,9 +486,9 @@ void metalmx_state::main_map(address_map &map) map(0x400000, 0x4000ff).rw(FUNC(metalmx_state::host_gsp_r), FUNC(metalmx_state::host_gsp_w)); map(0x600000, 0x6fffff).rw(FUNC(metalmx_state::host_dram_r), FUNC(metalmx_state::host_dram_w)); map(0x700000, 0x7fffff).rw(FUNC(metalmx_state::host_vram_r), FUNC(metalmx_state::host_vram_w)); - map(0x800000, 0x80001f).rw(FUNC(metalmx_state::dsp32c_2_r), FUNC(metalmx_state::dsp32c_2_w)); + map(0x800000, 0x80001f).rw(FUNC(metalmx_state::dsp32c_r<1>), FUNC(metalmx_state::dsp32c_w<1>)); map(0x800020, 0x85ffff).noprw(); /* Unknown */ - map(0x880000, 0x88001f).rw(FUNC(metalmx_state::dsp32c_1_r), FUNC(metalmx_state::dsp32c_1_w)); + map(0x880000, 0x88001f).rw(FUNC(metalmx_state::dsp32c_r<0>), FUNC(metalmx_state::dsp32c_w<0>)); map(0x980000, 0x9800ff).w(FUNC(metalmx_state::reset_w)); map(0xb40000, 0xb40003).rw(FUNC(metalmx_state::sound_data_r), FUNC(metalmx_state::sound_data_w)); map(0xf00000, 0xf00003).ram(); /* Network message port */ @@ -714,7 +687,6 @@ MACHINE_CONFIG_START(metalmx_state::metalmx) MCFG_DEVICE_ADD("dsp32c_2", DSP32C, 40000000) /* Unverified */ MCFG_DEVICE_PROGRAM_MAP(dsp32c_2_map) - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) @@ -740,8 +712,8 @@ void metalmx_state::init_metalmx() void metalmx_state::machine_reset() { - m_dsp32c_1->set_input_line(INPUT_LINE_RESET, ASSERT_LINE); - m_dsp32c_2->set_input_line(INPUT_LINE_RESET, ASSERT_LINE); + m_dsp32c[0]->set_input_line(INPUT_LINE_RESET, ASSERT_LINE); + m_dsp32c[1]->set_input_line(INPUT_LINE_RESET, ASSERT_LINE); } @@ -776,7 +748,7 @@ ROM_START( metalmx ) /* ------------------------------------------------ ROMCH31 A053443 (there are 2 of these boards) -------------------------------------------------*/ - ROM_REGION32_LE( 0x200000, "cageboot", 0 ) + ROM_REGION32_LE( 0x200000, "cage:boot", 0 ) ROM_LOAD32_BYTE( "bootmetl.r34", 0x00000, 0x80000, CRC(ec799644) SHA1(32c77abb70fee1da8e3d7141bce2032e73e0eb35) ) ROM_REGION32_LE( 0x80000, "cage", 0 ) |