diff --git a/src/mame/drivers/inufuku.cpp b/src/mame/drivers/inufuku.cpp index 32c44add03e..312dfecfea6 100644 --- a/src/mame/drivers/inufuku.cpp +++ b/src/mame/drivers/inufuku.cpp @@ -89,25 +89,6 @@ TODO: ******************************************************************************/ -WRITE16_MEMBER(inufuku_state::inufuku_soundcommand_w) -{ - if (ACCESSING_BITS_0_7) - { - /* hack... sound doesn't work otherwise */ - if (data == 0x08) - return; - - m_pending_command = 1; - m_soundlatch->write(space, 0, data & 0xff); - m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); - } -} - -WRITE8_MEMBER(inufuku_state::pending_command_clear_w) -{ - m_pending_command = 0; -} - WRITE8_MEMBER(inufuku_state::inufuku_soundrombank_w) { membank("bank1")->set_entry(data & 0x03); @@ -121,9 +102,7 @@ WRITE8_MEMBER(inufuku_state::inufuku_soundrombank_w) CUSTOM_INPUT_MEMBER(inufuku_state::soundflag_r) { - uint16_t soundflag = m_pending_command ? 0 : 1; - - return soundflag; + return m_soundlatch->pending_r() ? 0 : 1; } /****************************************************************************** @@ -145,7 +124,7 @@ static ADDRESS_MAP_START( inufuku_map, AS_PROGRAM, 16, inufuku_state ) AM_RANGE(0x18000a, 0x18000b) AM_READ_PORT("P3") AM_RANGE(0x200000, 0x200001) AM_WRITE_PORT("EEPROMOUT") - AM_RANGE(0x280000, 0x280001) AM_WRITE(inufuku_soundcommand_w) // sound command + AM_RANGE(0x280000, 0x280001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) // sound command AM_RANGE(0x300000, 0x301fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // palette ram AM_RANGE(0x380000, 0x3801ff) AM_WRITEONLY AM_SHARE("bg_rasterram") // bg raster ram @@ -179,7 +158,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( inufuku_sound_io_map, AS_IO, 8, inufuku_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x00) AM_WRITE(inufuku_soundrombank_w) - AM_RANGE(0x04, 0x04) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(pending_command_clear_w) + AM_RANGE(0x04, 0x04) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, acknowledge_w) AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) ADDRESS_MAP_END @@ -331,8 +310,6 @@ void inufuku_state::machine_start() membank("bank1")->configure_entries(0, 4, &ROM[0x00000], 0x8000); membank("bank1")->set_entry(0); - - save_item(NAME(m_pending_command)); save_item(NAME(m_bg_scrollx)); save_item(NAME(m_bg_scrolly)); save_item(NAME(m_tx_scrollx)); @@ -344,7 +321,6 @@ void inufuku_state::machine_start() void inufuku_state::machine_reset() { - m_pending_command = 1; m_bg_scrollx = 0; m_bg_scrolly = 0; m_tx_scrollx = 0; @@ -394,6 +370,8 @@ static MACHINE_CONFIG_START( inufuku ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_GENERIC_LATCH_DATA_PENDING_CB(INPUTLINE("audiocpu", INPUT_LINE_NMI)) + MCFG_GENERIC_LATCH_SEPARATE_ACKNOWLEDGE(true) MCFG_SOUND_ADD("ymsnd", YM2610, 32000000/4) MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) diff --git a/src/mame/includes/inufuku.h b/src/mame/includes/inufuku.h index cfa27c6cf9b..ecc593ab46a 100644 --- a/src/mame/includes/inufuku.h +++ b/src/mame/includes/inufuku.h @@ -43,9 +43,6 @@ public: std::unique_ptr m_spriteram1_old; uint32_t inufuku_tile_callback( uint32_t code ); - /* misc */ - uint16_t m_pending_command; - /* devices */ required_device m_maincpu; required_device m_audiocpu; @@ -54,8 +51,6 @@ public: required_device m_spr; required_device m_soundlatch; - DECLARE_WRITE16_MEMBER(inufuku_soundcommand_w); - DECLARE_WRITE8_MEMBER(pending_command_clear_w); DECLARE_WRITE8_MEMBER(inufuku_soundrombank_w); DECLARE_WRITE16_MEMBER(inufuku_palettereg_w); DECLARE_WRITE16_MEMBER(inufuku_scrollreg_w);