From 8a93635bc37b7b2d0c9cfac47fe3a1777ef9baf3 Mon Sep 17 00:00:00 2001 From: AJR Date: Tue, 29 Aug 2017 03:19:39 -0400 Subject: snowbros.cpp: Soundlatch modernization (nw) --- src/mame/drivers/snowbros.cpp | 74 ++++++++++++++++--------------------------- src/mame/includes/snowbros.h | 4 --- 2 files changed, 28 insertions(+), 50 deletions(-) diff --git a/src/mame/drivers/snowbros.cpp b/src/mame/drivers/snowbros.cpp index c97a170c87d..e5e65171cbb 100644 --- a/src/mame/drivers/snowbros.cpp +++ b/src/mame/drivers/snowbros.cpp @@ -182,29 +182,6 @@ TIMER_DEVICE_CALLBACK_MEMBER(snowbros_state::snowbros3_irq) } - -/* Sound Routines */ - -READ16_MEMBER(snowbros_state::snowbros_68000_sound_r) -{ - return m_soundlatch->read(space,offset); -} - - -WRITE16_MEMBER(snowbros_state::snowbros_68000_sound_w) -{ - if (ACCESSING_BITS_0_7) - { - m_soundlatch->write(space, offset, data & 0xff); - m_soundcpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); - } -} - -WRITE16_MEMBER(snowbros_state::semicom_soundcmd_w) -{ - if (ACCESSING_BITS_0_7) m_soundlatch->write(space,0,data & 0xff); -} - READ16_MEMBER(snowbros_state::toto_read) { int pc = space.device().safe_pc(); @@ -218,7 +195,8 @@ static ADDRESS_MAP_START( snowbros_map, AS_PROGRAM, 16, snowbros_state ) AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_RANGE(0x100000, 0x103fff) AM_RAM AM_RANGE(0x200000, 0x200001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x300000, 0x300001) AM_READWRITE(snowbros_68000_sound_r,snowbros_68000_sound_w) + AM_RANGE(0x300000, 0x300001) AM_DEVREAD8("soundlatch2", generic_latch_8_device, read, 0x00ff) + AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) AM_RANGE(0x400000, 0x400001) AM_WRITE8(snowbros_flipscreen_w, 0xff00) AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSW1") AM_RANGE(0x500002, 0x500003) AM_READ_PORT("DSW2") @@ -238,7 +216,8 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( sound_io_map, AS_IO, 8, snowbros_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) - AM_RANGE(0x04, 0x04) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, write) /* goes back to the main CPU, checked during boot */ + AM_RANGE(0x04, 0x04) AM_DEVREAD("soundlatch", generic_latch_8_device, read) + AM_RANGE(0x04, 0x04) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) // goes back to the main CPU, checked during boot ADDRESS_MAP_END @@ -300,7 +279,8 @@ static ADDRESS_MAP_START( wintbob_map, AS_PROGRAM, 16, snowbros_state ) AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_RANGE(0x100000, 0x103fff) AM_RAM AM_RANGE(0x200000, 0x200001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x300000, 0x300001) AM_READWRITE(snowbros_68000_sound_r,snowbros_68000_sound_w) + AM_RANGE(0x300000, 0x300001) AM_DEVREAD8("soundlatch2", generic_latch_8_device, read, 0x00ff) + AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) AM_RANGE(0x400000, 0x400001) AM_WRITE8(bootleg_flipscreen_w, 0xff00) AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSW1") AM_RANGE(0x500002, 0x500003) AM_READ_PORT("DSW2") @@ -318,7 +298,7 @@ static ADDRESS_MAP_START( honeydol_map, AS_PROGRAM, 16, snowbros_state ) AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("hyperpac_ram") AM_RANGE(0x200000, 0x200001) AM_WRITENOP /* ? */ - AM_RANGE(0x300000, 0x300001) AM_WRITE(snowbros_68000_sound_w) /* ? */ + AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) AM_RANGE(0x400000, 0x400001) AM_WRITE(snowbros_irq4_ack_w) /* IRQ 4 acknowledge */ AM_RANGE(0x500000, 0x500001) AM_WRITE(snowbros_irq3_ack_w) /* IRQ 3 acknowledge */ AM_RANGE(0x600000, 0x600001) AM_WRITE(snowbros_irq2_ack_w) /* IRQ 2 acknowledge */ @@ -339,25 +319,18 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( honeydol_sound_io_map, AS_IO, 8, snowbros_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) // not connected? - AM_RANGE(0x04, 0x04) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, write) /* goes back to the main CPU, checked during boot */ + AM_RANGE(0x04, 0x04) AM_DEVREAD("soundlatch", generic_latch_8_device, read) + AM_RANGE(0x04, 0x04) AM_WRITENOP // still written but never actually read by the main CPU ADDRESS_MAP_END /* Twin Adventure */ -WRITE16_MEMBER(snowbros_state::twinadv_68000_sound_w) -{ - if (ACCESSING_BITS_0_7) - { - m_soundlatch->write(space, offset, data & 0xff); - m_soundcpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); - } -} - static ADDRESS_MAP_START( twinadv_map, AS_PROGRAM, 16, snowbros_state ) AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_RANGE(0x200000, 0x200001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x300000, 0x300001) AM_READWRITE(snowbros_68000_sound_r,twinadv_68000_sound_w) + AM_RANGE(0x300000, 0x300001) AM_DEVREAD8("soundlatch2", generic_latch_8_device, read, 0x00ff) + AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) AM_RANGE(0x400000, 0x400001) AM_WRITE8(bootleg_flipscreen_w, 0xff00) AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSW1") @@ -381,7 +354,8 @@ WRITE8_MEMBER(snowbros_state::twinadv_oki_bank_w) static ADDRESS_MAP_START( twinadv_sound_io_map, AS_IO, 8, snowbros_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x02, 0x02) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, write) // back to 68k? + AM_RANGE(0x02, 0x02) AM_DEVREAD("soundlatch", generic_latch_8_device, read) + AM_RANGE(0x02, 0x02) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) // back to 68k? AM_RANGE(0x04, 0x04) AM_WRITE(twinadv_oki_bank_w) // oki bank? AM_RANGE(0x06, 0x06) AM_DEVREADWRITE("oki", okim6295_device, read, write) ADDRESS_MAP_END @@ -397,7 +371,7 @@ sound hardware is also different static ADDRESS_MAP_START( hyperpac_map, AS_PROGRAM, 16, snowbros_state ) AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("hyperpac_ram") - AM_RANGE(0x300000, 0x300001) AM_WRITE(semicom_soundcmd_w) + AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) // AM_RANGE(0x400000, 0x400001) ??? AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSW1") AM_RANGE(0x500002, 0x500003) AM_READ_PORT("DSW2") @@ -418,10 +392,6 @@ static ADDRESS_MAP_START( hyperpac_sound_map, AS_PROGRAM, 8, snowbros_state ) AM_RANGE(0xf008, 0xf008) AM_DEVREAD("soundlatch", generic_latch_8_device, read) ADDRESS_MAP_END -static ADDRESS_MAP_START( hyperpac_sound_io_map, AS_IO, 8, snowbros_state ) - ADDRESS_MAP_GLOBAL_MASK(0xff) -ADDRESS_MAP_END - /* Same volume used for all samples at the Moment, could be right, we have no way of knowing .. */ READ16_MEMBER(snowbros_state::sb3_sound_r) @@ -551,7 +521,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( finalttr_map, AS_PROGRAM, 16, snowbros_state ) AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_RANGE(0x100000, 0x103fff) AM_RAM AM_SHARE("hyperpac_ram") - AM_RANGE(0x300000, 0x300001) AM_WRITE(semicom_soundcmd_w) + AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) // AM_RANGE(0x400000, 0x400001) ??? AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSW1") @@ -1801,6 +1771,9 @@ static MACHINE_CONFIG_START( snowbros ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_GENERIC_LATCH_DATA_PENDING_CB(INPUTLINE("soundcpu", INPUT_LINE_NMI)) + + MCFG_GENERIC_LATCH_8_ADD("soundlatch2") MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_12MHz/4) /* 3 MHz - confirmed */ MCFG_YM3812_IRQ_HANDLER(INPUTLINE("soundcpu", 0)) @@ -1835,10 +1808,15 @@ static MACHINE_CONFIG_DERIVED( semicom, snowbros ) MCFG_CPU_MODIFY("soundcpu") MCFG_CPU_CLOCK(XTAL_16MHz/4) /* 4MHz - Confirmed */ MCFG_CPU_PROGRAM_MAP(hyperpac_sound_map) - MCFG_CPU_IO_MAP(hyperpac_sound_io_map) + MCFG_DEVICE_REMOVE_ADDRESS_MAP(AS_IO) MCFG_GFXDECODE_MODIFY("gfxdecode", hyperpac) + MCFG_DEVICE_MODIFY("soundlatch") + MCFG_GENERIC_LATCH_DATA_PENDING_CB(NOOP) + + MCFG_DEVICE_REMOVE("soundlatch2") + /* sound hardware */ MCFG_SOUND_REPLACE("ymsnd", YM2151, XTAL_16MHz/4) /* 4MHz - Confirmed */ MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", 0)) @@ -1893,6 +1871,7 @@ static MACHINE_CONFIG_START( honeydol ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_GENERIC_LATCH_DATA_PENDING_CB(INPUTLINE("soundcpu", INPUT_LINE_NMI)) MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_12MHz/4) /* 3Mhz */ MCFG_YM3812_IRQ_HANDLER(INPUTLINE("soundcpu", 0)) @@ -1933,6 +1912,9 @@ static MACHINE_CONFIG_START( twinadv ) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_GENERIC_LATCH_DATA_PENDING_CB(INPUTLINE("soundcpu", INPUT_LINE_NMI)) + + MCFG_GENERIC_LATCH_8_ADD("soundlatch2") /* sound hardware */ MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, PIN7_HIGH) /* freq? */ diff --git a/src/mame/includes/snowbros.h b/src/mame/includes/snowbros.h index cb884052484..d51287491fe 100644 --- a/src/mame/includes/snowbros.h +++ b/src/mame/includes/snowbros.h @@ -41,12 +41,8 @@ public: DECLARE_WRITE16_MEMBER(snowbros_irq4_ack_w); DECLARE_WRITE16_MEMBER(snowbros_irq3_ack_w); DECLARE_WRITE16_MEMBER(snowbros_irq2_ack_w); - DECLARE_READ16_MEMBER(snowbros_68000_sound_r); - DECLARE_WRITE16_MEMBER(snowbros_68000_sound_w); - DECLARE_WRITE16_MEMBER(semicom_soundcmd_w); DECLARE_READ8_MEMBER(prot_io_r); DECLARE_WRITE8_MEMBER(prot_io_w); - DECLARE_WRITE16_MEMBER(twinadv_68000_sound_w); DECLARE_READ16_MEMBER(sb3_sound_r); DECLARE_READ16_MEMBER(_4in1_02_read); DECLARE_READ16_MEMBER(_3in1_read); -- cgit v1.2.3