From 669b92fd75d0f08d7033160f5972d54d3a0d2a91 Mon Sep 17 00:00:00 2001 From: AJR Date: Tue, 29 Aug 2017 10:29:17 -0400 Subject: ultraman: Sound IRQ modernization (nw) --- src/mame/drivers/ultraman.cpp | 24 +++++++++++------------- src/mame/includes/ultraman.h | 8 +++++--- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/mame/drivers/ultraman.cpp b/src/mame/drivers/ultraman.cpp index 9dd01670230..2c34a614e9a 100644 --- a/src/mame/drivers/ultraman.cpp +++ b/src/mame/drivers/ultraman.cpp @@ -22,16 +22,9 @@ #include "speaker.h" -WRITE16_MEMBER(ultraman_state::sound_cmd_w) +WRITE8_MEMBER(ultraman_state::sound_nmi_enable_w) { - if (ACCESSING_BITS_0_7) - m_soundlatch->write(space, 0, data & 0xff); -} - -WRITE16_MEMBER(ultraman_state::sound_irq_trigger_w) -{ - if (ACCESSING_BITS_0_7) - m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); + m_soundnmi->in_w<1>(BIT(data, 0)); } @@ -45,8 +38,8 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, ultraman_state ) AM_RANGE(0x1c0006, 0x1c0007) AM_READ_PORT("DSW1") AM_RANGE(0x1c0008, 0x1c0009) AM_READ_PORT("DSW2") AM_RANGE(0x1c0018, 0x1c0019) AM_WRITE(ultraman_gfxctrl_w) /* counters + gfx ctrl */ - AM_RANGE(0x1c0020, 0x1c0021) AM_WRITE(sound_cmd_w) - AM_RANGE(0x1c0028, 0x1c0029) AM_WRITE(sound_irq_trigger_w) + AM_RANGE(0x1c0020, 0x1c0021) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) + AM_RANGE(0x1c0028, 0x1c0029) AM_DEVWRITE8("soundnmi", input_merger_device, in_set<0>, 0x00ff) AM_RANGE(0x1c0030, 0x1c0031) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) AM_RANGE(0x204000, 0x204fff) AM_DEVREADWRITE8("k051316_1", k051316_device, read, write, 0x00ff) /* K051316 #0 RAM */ AM_RANGE(0x205000, 0x205fff) AM_DEVREADWRITE8("k051316_2", k051316_device, read, write, 0x00ff) /* K051316 #1 RAM */ @@ -62,14 +55,14 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, ultraman_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0xbfff) AM_RAM AM_RANGE(0xc000, 0xc000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -// AM_RANGE(0xd000, 0xd000) AM_WRITENOP /* ??? */ + AM_RANGE(0xd000, 0xd000) AM_WRITE(sound_nmi_enable_w) AM_RANGE(0xe000, 0xe000) AM_DEVREADWRITE("oki", okim6295_device, read, write) /* M6295 */ AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) /* YM2151 */ ADDRESS_MAP_END static ADDRESS_MAP_START( sound_io_map, AS_IO, 8, ultraman_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) -// AM_RANGE(0x00, 0x00) AM_WRITENOP /* ??? */ + AM_RANGE(0x00, 0x00) AM_DEVWRITE("soundnmi", input_merger_device, in_clear<0>) ADDRESS_MAP_END @@ -174,6 +167,8 @@ void ultraman_state::machine_reset() m_bank0 = -1; m_bank1 = -1; m_bank2 = -1; + + m_soundnmi->in_w<0>(0); } static MACHINE_CONFIG_START( ultraman ) @@ -187,6 +182,9 @@ static MACHINE_CONFIG_START( ultraman ) MCFG_CPU_PROGRAM_MAP(sound_map) MCFG_CPU_IO_MAP(sound_io_map) + MCFG_INPUT_MERGER_ALL_HIGH("soundnmi") + MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_NMI)) + MCFG_QUANTUM_TIME(attotime::from_hz(600)) MCFG_WATCHDOG_ADD("watchdog") diff --git a/src/mame/includes/ultraman.h b/src/mame/includes/ultraman.h index 4ad0d2a89df..74879dc72ca 100644 --- a/src/mame/includes/ultraman.h +++ b/src/mame/includes/ultraman.h @@ -7,6 +7,7 @@ *************************************************************************/ #include "machine/gen_latch.h" +#include "machine/input_merger.h" #include "video/k051960.h" #include "video/k051316.h" #include "video/konami_helper.h" @@ -22,7 +23,8 @@ public: m_k051316_2(*this, "k051316_2"), m_k051316_3(*this, "k051316_3"), m_k051960(*this, "k051960"), - m_soundlatch(*this, "soundlatch") { } + m_soundlatch(*this, "soundlatch"), + m_soundnmi(*this, "soundnmi") { } int m_bank0; int m_bank1; @@ -36,9 +38,9 @@ public: required_device m_k051316_3; required_device m_k051960; required_device m_soundlatch; + required_device m_soundnmi; - DECLARE_WRITE16_MEMBER(sound_cmd_w); - DECLARE_WRITE16_MEMBER(sound_irq_trigger_w); + DECLARE_WRITE8_MEMBER(sound_nmi_enable_w); DECLARE_WRITE16_MEMBER(ultraman_gfxctrl_w); virtual void machine_start() override; virtual void machine_reset() override; -- cgit v1.2.3