From 98bc547349b8b0d12b1aadbb1de914141c55325a Mon Sep 17 00:00:00 2001 From: AJR Date: Fri, 25 Aug 2017 00:21:51 -0400 Subject: m107.cpp: Finish soundlatch modernization and clean up a few things (nw) --- src/mame/drivers/m107.cpp | 49 ++++++++++++++++++----------------------------- src/mame/includes/m107.h | 7 ++----- 2 files changed, 21 insertions(+), 35 deletions(-) diff --git a/src/mame/drivers/m107.cpp b/src/mame/drivers/m107.cpp index bb30a6d7302..7f0e6106e7d 100644 --- a/src/mame/drivers/m107.cpp +++ b/src/mame/drivers/m107.cpp @@ -41,7 +41,6 @@ confirmed for m107 games as well. void m107_state::machine_start() { - save_item(NAME(m_sound_status)); } /*****************************************************************************/ @@ -77,35 +76,17 @@ TIMER_DEVICE_CALLBACK_MEMBER(m107_state::scanline_interrupt) /*****************************************************************************/ -WRITE16_MEMBER(m107_state::coincounter_w) +WRITE8_MEMBER(m107_state::coincounter_w) { - if (ACCESSING_BITS_0_7) - { - machine().bookkeeping().coin_counter_w(0,data & 0x01); - machine().bookkeeping().coin_counter_w(1,data & 0x02); - } -} - -WRITE16_MEMBER(m107_state::bankswitch_w) -{ - if (ACCESSING_BITS_0_7) - { - membank("bank1")->set_entry((data & 0x06) >> 1); - if (data & 0xf9) - logerror("%05x: bankswitch %04x\n", space.device().safe_pc(), data); - } + machine().bookkeeping().coin_counter_w(0,data & 0x01); + machine().bookkeeping().coin_counter_w(1,data & 0x02); } -READ16_MEMBER(m107_state::sound_status_r) +WRITE8_MEMBER(m107_state::bankswitch_w) { - m_upd71059c->ir3_w(0); - return m_sound_status; -} - -WRITE16_MEMBER(m107_state::sound_status_w) -{ - COMBINE_DATA(&m_sound_status); - m_upd71059c->ir3_w(1); + membank("bank1")->set_entry((data & 0x06) >> 1); + if (data & 0xf9) + logerror("%05x: bankswitch %04x\n", space.device().safe_pc(), data); } WRITE16_MEMBER(m107_state::sound_reset_w) @@ -130,9 +111,9 @@ static ADDRESS_MAP_START( main_portmap, AS_IO, 16, m107_state ) AM_RANGE(0x02, 0x03) AM_READ_PORT("COINS_DSW3") AM_RANGE(0x04, 0x05) AM_READ_PORT("DSW") AM_RANGE(0x06, 0x07) AM_READ_PORT("P3_P4") - AM_RANGE(0x08, 0x09) AM_READ(sound_status_r) /* answer from sound CPU */ + AM_RANGE(0x08, 0x09) AM_DEVREAD8("soundlatch2", generic_latch_8_device, read, 0x00ff) // answer from sound CPU AM_RANGE(0x00, 0x01) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x02, 0x03) AM_WRITE(coincounter_w) + AM_RANGE(0x02, 0x03) AM_WRITE8(coincounter_w, 0x00ff) AM_RANGE(0x04, 0x05) AM_WRITENOP /* ??? 0008 */ AM_RANGE(0x40, 0x43) AM_DEVREADWRITE8("upd71059c", pic8259_device, read, write, 0x00ff) AM_RANGE(0x80, 0x9f) AM_WRITE(control_w) @@ -142,6 +123,11 @@ static ADDRESS_MAP_START( main_portmap, AS_IO, 16, m107_state ) AM_RANGE(0xc0, 0xc1) AM_WRITE(sound_reset_w) ADDRESS_MAP_END +static ADDRESS_MAP_START( dsoccr94_io_map, AS_IO, 16, m107_state ) + AM_RANGE(0x06, 0x07) AM_WRITE8(bankswitch_w, 0x00ff) + AM_IMPORT_FROM(main_portmap) +ADDRESS_MAP_END + /* same as M107 but with an extra i/o board */ WRITE16_MEMBER(m107_state::wpksoc_output_w) { @@ -175,7 +161,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 16, m107_state ) AM_RANGE(0xa8000, 0xa803f) AM_DEVREADWRITE8("irem", iremga20_device, irem_ga20_r, irem_ga20_w, 0x00ff) AM_RANGE(0xa8040, 0xa8043) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff) AM_RANGE(0xa8044, 0xa8045) AM_DEVREADWRITE8("soundlatch", generic_latch_8_device, read, acknowledge_w, 0x00ff) - AM_RANGE(0xa8046, 0xa8047) AM_WRITE(sound_status_w) + AM_RANGE(0xa8046, 0xa8047) AM_DEVWRITE8("soundlatch2", generic_latch_8_device, write, 0x00ff) AM_RANGE(0xffff0, 0xfffff) AM_ROM AM_REGION("soundcpu", 0x1fff0) ADDRESS_MAP_END @@ -762,6 +748,9 @@ static MACHINE_CONFIG_START( firebarr ) MCFG_GENERIC_LATCH_DATA_PENDING_CB(INPUTLINE("soundcpu", NEC_INPUT_LINE_INTP1)) MCFG_GENERIC_LATCH_SEPARATE_ACKNOWLEDGE(true) + MCFG_GENERIC_LATCH_8_ADD("soundlatch2") + MCFG_GENERIC_LATCH_DATA_PENDING_CB(DEVWRITELINE("upd71059c", pic8259_device, ir3_w)) + MCFG_YM2151_ADD("ymsnd", XTAL_14_31818MHz/4) MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", NEC_INPUT_LINE_INTP0)) MCFG_SOUND_ROUTE(0, "lspeaker", 0.40) @@ -777,6 +766,7 @@ static MACHINE_CONFIG_DERIVED( dsoccr94, firebarr ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") MCFG_CPU_CLOCK(20000000/2) /* NEC V33, Could be 28MHz clock? */ + MCFG_CPU_IO_MAP(dsoccr94_io_map) MCFG_CPU_MODIFY("soundcpu") MCFG_V25_CONFIG(dsoccr94_decryption_table) @@ -1001,7 +991,6 @@ DRIVER_INIT_MEMBER(m107_state,dsoccr94) uint8_t *ROM = memregion("maincpu")->base(); membank("bank1")->configure_entries(0, 4, &ROM[0x80000], 0x20000); - m_maincpu->space(AS_IO).install_write_handler(0x06, 0x07, write16_delegate(FUNC(m107_state::bankswitch_w),this)); m_spritesystem = 0; } diff --git a/src/mame/includes/m107.h b/src/mame/includes/m107.h index 15eb81b6d2b..12079e46379 100644 --- a/src/mame/includes/m107.h +++ b/src/mame/includes/m107.h @@ -49,17 +49,14 @@ public: // driver init uint8_t m_spritesystem; - int m_sound_status; uint8_t m_sprite_display; uint16_t m_raster_irq_position; pf_layer_info m_pf_layer[4]; uint16_t m_control[0x10]; std::unique_ptr m_buffered_spriteram; - DECLARE_WRITE16_MEMBER(coincounter_w); - DECLARE_WRITE16_MEMBER(bankswitch_w); - DECLARE_READ16_MEMBER(sound_status_r); - DECLARE_WRITE16_MEMBER(sound_status_w); + DECLARE_WRITE8_MEMBER(coincounter_w); + DECLARE_WRITE8_MEMBER(bankswitch_w); DECLARE_WRITE16_MEMBER(sound_reset_w); DECLARE_WRITE16_MEMBER(wpksoc_output_w); DECLARE_WRITE16_MEMBER(vram_w); -- cgit v1.2.3