summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/kurukuru.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/kurukuru.cpp')
-rw-r--r--src/mame/drivers/kurukuru.cpp39
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"))