summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2017-06-14 11:23:55 -0400
committer AJR <ajrhacker@users.noreply.github.com>2017-06-14 11:23:55 -0400
commit774032e48bac764eee2bee66201c77b57ecbb993 (patch)
tree878887ba2c276c8356e1408dd0c7f1bb55d7063a
parent8154dd217d51641a5bf2f6e3b8beeecdd27f5777 (diff)
inufuku.cpp: Soundlatch modernization (nw)
-rw-r--r--src/mame/drivers/inufuku.cpp32
-rw-r--r--src/mame/includes/inufuku.h5
2 files changed, 5 insertions, 32 deletions
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<uint16_t[]> m_spriteram1_old;
uint32_t inufuku_tile_callback( uint32_t code );
- /* misc */
- uint16_t m_pending_command;
-
/* devices */
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
@@ -54,8 +51,6 @@ public:
required_device<vsystem_spr_device> m_spr;
required_device<generic_latch_8_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);