diff options
Diffstat (limited to 'src/mame/drivers/kurukuru.cpp')
-rw-r--r-- | src/mame/drivers/kurukuru.cpp | 39 |
1 files changed, 17 insertions, 22 deletions
diff --git a/src/mame/drivers/kurukuru.cpp b/src/mame/drivers/kurukuru.cpp index 1d394795c80..72b8928d0fd 100644 --- a/src/mame/drivers/kurukuru.cpp +++ b/src/mame/drivers/kurukuru.cpp @@ -405,7 +405,6 @@ public: m_v9938(*this, "v9938"), m_adpcm(*this, "adpcm"), m_hopper(*this, "hopper"), - m_soundlatch(*this, "soundlatch"), m_bank1(*this, "bank1") { } @@ -414,7 +413,6 @@ public: required_device<v9938_device> m_v9938; required_device<msm5205_device> m_adpcm; required_device<ticket_dispenser_device> m_hopper; - required_device<generic_latch_8_device> m_soundlatch; required_memory_bank m_bank1; uint8_t m_sound_irq_cause; @@ -422,8 +420,7 @@ public: DECLARE_WRITE8_MEMBER(kurukuru_out_latch_w); DECLARE_WRITE8_MEMBER(kurukuru_bankswitch_w); - DECLARE_WRITE8_MEMBER(kurukuru_soundlatch_w); - DECLARE_READ8_MEMBER(kurukuru_soundlatch_r); + DECLARE_WRITE_LINE_MEMBER(soundlatch_irq_w); DECLARE_WRITE8_MEMBER(kurukuru_adpcm_reset_w); DECLARE_READ8_MEMBER(kurukuru_adpcm_timer_irqack_r); DECLARE_WRITE8_MEMBER(kurukuru_adpcm_data_w); @@ -479,6 +476,15 @@ void kurukuru_state::update_sound_irq(uint8_t cause) } +WRITE_LINE_MEMBER(kurukuru_state::soundlatch_irq_w) +{ + if (state) + update_sound_irq(m_sound_irq_cause | 1); + else + update_sound_irq(m_sound_irq_cause & ~1); +} + + WRITE_LINE_MEMBER(kurukuru_state::kurukuru_msm5205_vck) { update_sound_irq(m_sound_irq_cause | 2); @@ -537,12 +543,6 @@ WRITE8_MEMBER(kurukuru_state::kurukuru_bankswitch_w) } } -WRITE8_MEMBER(kurukuru_state::kurukuru_soundlatch_w) -{ - m_soundlatch->write(space, 0, data); - update_sound_irq(m_sound_irq_cause | 1); -} - ADDRESS_MAP_START(kurukuru_state::kurukuru_map) AM_RANGE(0x0000, 0x5fff) AM_ROM @@ -554,8 +554,8 @@ ADDRESS_MAP_START(kurukuru_state::kurukuru_io) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x00) AM_MIRROR(0x0f) AM_WRITE(kurukuru_out_latch_w) AM_RANGE(0x10, 0x10) AM_MIRROR(0x0f) AM_READ_PORT("DSW1") - AM_RANGE(0x20, 0x20) AM_MIRROR(0x0f) AM_WRITE(kurukuru_soundlatch_w) - AM_RANGE(0x80, 0x83) AM_MIRROR(0x0c) AM_DEVREADWRITE( "v9938", v9938_device, read, write ) + AM_RANGE(0x20, 0x20) AM_MIRROR(0x0f) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) + AM_RANGE(0x80, 0x83) AM_MIRROR(0x0c) AM_DEVREADWRITE("v9938", v9938_device, read, write) AM_RANGE(0x90, 0x90) AM_MIRROR(0x0f) AM_WRITE(kurukuru_bankswitch_w) AM_RANGE(0xa0, 0xa0) AM_MIRROR(0x0f) AM_READ_PORT("IN0") AM_RANGE(0xb0, 0xb0) AM_MIRROR(0x0f) AM_READ_PORT("IN1") @@ -572,8 +572,8 @@ ADDRESS_MAP_END ADDRESS_MAP_START(kurukuru_state::ppj_io) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x00) AM_MIRROR(0x0f) AM_WRITE(kurukuru_bankswitch_w) - AM_RANGE(0x10, 0x13) AM_MIRROR(0x0c) AM_DEVREADWRITE( "v9938", v9938_device, read, write ) - AM_RANGE(0x30, 0x30) AM_MIRROR(0x0f) AM_WRITE(kurukuru_soundlatch_w) + AM_RANGE(0x10, 0x13) AM_MIRROR(0x0c) AM_DEVREADWRITE("v9938", v9938_device, read, write) + AM_RANGE(0x30, 0x30) AM_MIRROR(0x0f) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) AM_RANGE(0x40, 0x40) AM_MIRROR(0x0f) AM_READ_PORT("DSW1") AM_RANGE(0x50, 0x50) AM_MIRROR(0x0f) AM_WRITE(kurukuru_out_latch_w) AM_RANGE(0x60, 0x60) AM_MIRROR(0x0f) AM_READ_PORT("IN1") @@ -626,12 +626,6 @@ WRITE8_MEMBER(kurukuru_state::kurukuru_adpcm_reset_w) m_adpcm->reset_w(data & 1); } -READ8_MEMBER(kurukuru_state::kurukuru_soundlatch_r) -{ - update_sound_irq(m_sound_irq_cause & ~1); - return m_soundlatch->read(space, 0); -} - READ8_MEMBER(kurukuru_state::kurukuru_adpcm_timer_irqack_r) { update_sound_irq(m_sound_irq_cause & ~2); @@ -648,7 +642,7 @@ ADDRESS_MAP_START(kurukuru_state::kurukuru_audio_io) ADDRESS_MAP_GLOBAL_MASK(0x7f) AM_RANGE(0x40, 0x40) AM_MIRROR(0x0f) AM_WRITE(kurukuru_adpcm_data_w) AM_RANGE(0x50, 0x50) AM_MIRROR(0x0f) AM_WRITE(kurukuru_adpcm_reset_w) - AM_RANGE(0x60, 0x60) AM_MIRROR(0x0f) AM_READ(kurukuru_soundlatch_r) + AM_RANGE(0x60, 0x60) AM_MIRROR(0x0f) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(0x70, 0x70) AM_MIRROR(0x0f) AM_READ(kurukuru_adpcm_timer_irqack_r) ADDRESS_MAP_END @@ -661,7 +655,7 @@ ADDRESS_MAP_START(kurukuru_state::ppj_audio_io) ADDRESS_MAP_GLOBAL_MASK(0x7f) AM_RANGE(0x20, 0x20) AM_MIRROR(0x0f) AM_WRITE(kurukuru_adpcm_data_w) AM_RANGE(0x30, 0x30) AM_MIRROR(0x0f) AM_WRITE(kurukuru_adpcm_reset_w) - AM_RANGE(0x40, 0x40) AM_MIRROR(0x0f) AM_READ(kurukuru_soundlatch_r) + AM_RANGE(0x40, 0x40) AM_MIRROR(0x0f) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(0x50, 0x50) AM_MIRROR(0x0f) AM_READ(kurukuru_adpcm_timer_irqack_r) ADDRESS_MAP_END /* @@ -890,6 +884,7 @@ MACHINE_CONFIG_START(kurukuru_state::kurukuru) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_GENERIC_LATCH_DATA_PENDING_CB(WRITELINE(kurukuru_state, soundlatch_irq_w)) MCFG_SOUND_ADD("ym2149", YM2149, YM2149_CLOCK) MCFG_AY8910_PORT_B_READ_CB(IOPORT("DSW2")) |