mirror of
https://github.com/holub/mame
synced 2025-04-23 08:49:55 +03:00
kurukuru.cpp: Soundlatch modernization (nw)
This commit is contained in:
parent
35feb48d5d
commit
f6d153a909
@ -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"))
|
||||
|
Loading…
Reference in New Issue
Block a user