diff options
author | Ivan Vangelista <mesgnet@yahoo.it> | 2016-06-01 07:16:38 +0200 |
---|---|---|
committer | Ivan Vangelista <mesgnet@yahoo.it> | 2016-06-01 07:16:38 +0200 |
commit | faaabd3e11e8996b18a2bc04ecf1fe8cca853fac (patch) | |
tree | 4c178583fa4df16e2e5359f6f5176d0d1848cef4 /src | |
parent | 086789add2e86df535ae3be4dd8c30ea4c2cbf5c (diff) |
more gen_latch-ification (nw)
Diffstat (limited to 'src')
94 files changed, 662 insertions, 321 deletions
diff --git a/src/mame/audio/hyprolyb.cpp b/src/mame/audio/hyprolyb.cpp index c816e4bb603..c7402dd4dcf 100644 --- a/src/mame/audio/hyprolyb.cpp +++ b/src/mame/audio/hyprolyb.cpp @@ -9,21 +9,13 @@ const device_type HYPROLYB_ADPCM = &device_creator<hyprolyb_adpcm_device>; hyprolyb_adpcm_device::hyprolyb_adpcm_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : device_t(mconfig, HYPROLYB_ADPCM, "Hyper Olympics Audio", tag, owner, clock, "hyprolyb_adpcm", __FILE__), device_sound_interface(mconfig, *this), + m_soundlatch2(*this, ":soundlatch2"), m_adpcm_ready(0), m_adpcm_busy(0), m_vck_ready(0) { } -//------------------------------------------------- -// device_config_complete - perform any -// operations now that the configuration is -// complete -//------------------------------------------------- - -void hyprolyb_adpcm_device::device_config_complete() -{ -} //------------------------------------------------- // device_start - device-specific startup @@ -51,8 +43,7 @@ void hyprolyb_adpcm_device::device_reset() WRITE8_MEMBER( hyprolyb_adpcm_device::write ) { - driver_device *drvstate = space.machine().driver_data<driver_device>(); - drvstate->soundlatch2_byte_w(*m_space, offset, data); + m_soundlatch2->write(*m_space, offset, data); m_adpcm_ready = 0x80; } @@ -81,9 +72,8 @@ READ8_MEMBER( hyprolyb_adpcm_device::ready_r ) READ8_MEMBER( hyprolyb_adpcm_device::data_r ) { - driver_device *drvstate = space.machine().driver_data<driver_device>(); m_adpcm_ready = 0x00; - return drvstate->soundlatch2_byte_r(*m_space, offset); + return m_soundlatch2->read(*m_space, offset); } static ADDRESS_MAP_START( hyprolyb_adpcm_map, AS_PROGRAM, 8, driver_device ) @@ -117,6 +107,8 @@ MACHINE_CONFIG_FRAGMENT( hyprolyb_adpcm ) MCFG_CPU_ADD("adpcm", M6802, XTAL_14_31818MHz/8) /* unknown clock */ MCFG_CPU_PROGRAM_MAP(hyprolyb_adpcm_map) + MCFG_GENERIC_LATCH_8_ADD("soundlatch2") + MCFG_SOUND_ADD("hyprolyb_adpcm", HYPROLYB_ADPCM, 0) MCFG_SOUND_ADD("msm", MSM5205, 384000) diff --git a/src/mame/audio/hyprolyb.h b/src/mame/audio/hyprolyb.h index f5b1c3dc116..abbbd77c689 100644 --- a/src/mame/audio/hyprolyb.h +++ b/src/mame/audio/hyprolyb.h @@ -1,5 +1,7 @@ // license:BSD-3-Clause // copyright-holders:Chris Hardy + +#include "machine/gen_latch.h" #include "sound/msm5205.h" class hyprolyb_adpcm_device : public device_t, @@ -21,7 +23,6 @@ public: protected: // device-level overrides - virtual void device_config_complete() override; virtual void device_start() override; virtual void device_reset() override; @@ -30,6 +31,7 @@ protected: private: // internal state + required_device<generic_latch_8_device> m_soundlatch2; msm5205_device *m_msm; address_space *m_space; UINT8 m_adpcm_ready; // only bootlegs diff --git a/src/mame/audio/scramble.cpp b/src/mame/audio/scramble.cpp index bafc07653cb..7d575414907 100644 --- a/src/mame/audio/scramble.cpp +++ b/src/mame/audio/scramble.cpp @@ -121,7 +121,7 @@ WRITE8_MEMBER(scramble_state::hotshock_sh_irqtrigger_w) READ8_MEMBER( scramble_state::hotshock_soundlatch_r ) { m_audiocpu->set_input_line(0, CLEAR_LINE); - return soundlatch_byte_r(m_audiocpu->space(AS_PROGRAM),0); + return m_soundlatch->read(m_audiocpu->space(AS_PROGRAM),0); } static void filter_w(device_t *device, int data) @@ -312,6 +312,9 @@ MACHINE_CONFIG_FRAGMENT( ad2083_audio ) MCFG_TMSPROM_CTL_CB(DEVWRITE8("tms", tms5110_device, ctl_w)) /* tms ctl func */ MCFG_SPEAKER_STANDARD_MONO("mono") + + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_SOUND_ADD("ay1", AY8910, 14318000/8) MCFG_AY8910_PORT_A_READ_CB(READ8(scramble_state, scramble_portB_r)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) diff --git a/src/mame/audio/timeplt.cpp b/src/mame/audio/timeplt.cpp index eb1dd3ef6e9..fed195048f6 100644 --- a/src/mame/audio/timeplt.cpp +++ b/src/mame/audio/timeplt.cpp @@ -14,6 +14,7 @@ #include "emu.h" #include "audio/timeplt.h" +#include "machine/gen_latch.h" #define MASTER_CLOCK XTAL_14_31818MHz @@ -188,7 +189,7 @@ MACHINE_CONFIG_FRAGMENT( timeplt_sound ) MCFG_SOUND_ADD("timeplt_audio", TIMEPLT_AUDIO, 0) MCFG_SOUND_ADD("ay1", AY8910, MASTER_CLOCK/8) - MCFG_AY8910_PORT_A_READ_CB(READ8(driver_device, soundlatch_byte_r)) + MCFG_AY8910_PORT_A_READ_CB(DEVREAD8("soundlatch", generic_latch_8_device, read)) MCFG_AY8910_PORT_B_READ_CB(DEVREAD8("timeplt_audio", timeplt_audio_device, portB_r)) MCFG_SOUND_ROUTE(0, "filter.0.0", 0.60) MCFG_SOUND_ROUTE(1, "filter.0.1", 0.60) diff --git a/src/mame/drivers/88games.cpp b/src/mame/drivers/88games.cpp index c6fb22de23d..ab9c1508f9b 100644 --- a/src/mame/drivers/88games.cpp +++ b/src/mame/drivers/88games.cpp @@ -10,6 +10,7 @@ #include "cpu/m6809/konami.h" #include "cpu/z80/z80.h" #include "sound/2151intf.h" +#include "machine/gen_latch.h" #include "machine/nvram.h" #include "machine/watchdog.h" #include "includes/88games.h" @@ -125,7 +126,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, _88games_state ) AM_RANGE(0x3800, 0x3fff) AM_READWRITE(bankedram_r, bankedram_w) AM_SHARE("ram") AM_RANGE(0x5f84, 0x5f84) AM_WRITE(k88games_5f84_w) AM_RANGE(0x5f88, 0x5f88) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x5f8c, 0x5f8c) AM_WRITE(soundlatch_byte_w) + AM_RANGE(0x5f8c, 0x5f8c) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) AM_RANGE(0x5f90, 0x5f90) AM_WRITE(k88games_sh_irqtrigger_w) AM_RANGE(0x5f94, 0x5f94) AM_READ_PORT("IN0") AM_RANGE(0x5f95, 0x5f95) AM_READ_PORT("IN1") @@ -141,7 +142,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, _88games_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0x87ff) AM_RAM AM_RANGE(0x9000, 0x9000) AM_WRITE(speech_msg_w) - AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r) + AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) AM_RANGE(0xe000, 0xe000) AM_WRITE(speech_control_w) ADDRESS_MAP_END @@ -341,6 +342,8 @@ static MACHINE_CONFIG_START( 88games, _88games_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_YM2151_ADD("ymsnd", 3579545) MCFG_SOUND_ROUTE(0, "mono", 0.75) MCFG_SOUND_ROUTE(1, "mono", 0.75) diff --git a/src/mame/drivers/airbustr.cpp b/src/mame/drivers/airbustr.cpp index cc23b1837f1..29aa298c9fb 100644 --- a/src/mame/drivers/airbustr.cpp +++ b/src/mame/drivers/airbustr.cpp @@ -293,32 +293,29 @@ READ8_MEMBER(airbustr_state::soundcommand_status_r) READ8_MEMBER(airbustr_state::soundcommand_r) { m_soundlatch_status = 0; // soundlatch has been read - return soundlatch_byte_r(space, 0); + return m_soundlatch->read(space, 0); } READ8_MEMBER(airbustr_state::soundcommand2_r) { m_soundlatch2_status = 0; // soundlatch2 has been read - return soundlatch2_byte_r(space, 0); + return m_soundlatch2->read(space, 0); } WRITE8_MEMBER(airbustr_state::soundcommand_w) { - soundlatch_byte_w(space, 0, data); + m_soundlatch->write(space, 0, data); m_soundlatch_status = 1; // soundlatch has been written m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); // cause a nmi to sub cpu } WRITE8_MEMBER(airbustr_state::soundcommand2_w) { - soundlatch2_byte_w(space, 0, data); + m_soundlatch2->write(space, 0, data); m_soundlatch2_status = 1; // soundlatch2 has been written } - - - WRITE8_MEMBER(airbustr_state::airbustr_coin_counter_w) { machine().bookkeeping().coin_counter_w(0, data & 1); @@ -625,6 +622,9 @@ static MACHINE_CONFIG_START( airbustr, airbustr_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_GENERIC_LATCH_8_ADD("soundlatch2") + MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/4) /* verified on pcb */ MCFG_AY8910_PORT_A_READ_CB(IOPORT("DSW1")) // DSW-1 connected to port A MCFG_AY8910_PORT_B_READ_CB(IOPORT("DSW2")) // DSW-2 connected to port B diff --git a/src/mame/drivers/ajax.cpp b/src/mame/drivers/ajax.cpp index 85f8f809e2f..143c7633f1e 100644 --- a/src/mame/drivers/ajax.cpp +++ b/src/mame/drivers/ajax.cpp @@ -51,7 +51,7 @@ static ADDRESS_MAP_START( ajax_sound_map, AS_PROGRAM, 8, ajax_state ) AM_RANGE(0xb80c, 0xb80c) AM_WRITE(k007232_extvol_w) /* extra volume, goes to the 007232 w/ A11 */ /* selecting a different latch for the external port */ AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) /* YM2151 */ - AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch_byte_r) /* soundlatch_byte_r */ + AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) ADDRESS_MAP_END @@ -210,6 +210,8 @@ static MACHINE_CONFIG_START( ajax, ajax_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_YM2151_ADD("ymsnd", 3579545) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) diff --git a/src/mame/drivers/aliens.cpp b/src/mame/drivers/aliens.cpp index b39437c2de2..8b35cd22888 100644 --- a/src/mame/drivers/aliens.cpp +++ b/src/mame/drivers/aliens.cpp @@ -42,7 +42,7 @@ WRITE8_MEMBER(aliens_state::aliens_coin_counter_w) WRITE8_MEMBER(aliens_state::aliens_sh_irqtrigger_w) { - soundlatch_byte_w(space, offset, data); + m_soundlatch->write(space, offset, data); m_audiocpu->set_input_line(0, HOLD_LINE); } @@ -107,7 +107,7 @@ static ADDRESS_MAP_START( aliens_sound_map, AS_PROGRAM, 8, aliens_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM /* ROM g04_b03.bin */ AM_RANGE(0x8000, 0x87ff) AM_RAM /* RAM */ AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r) /* soundlatch_byte_r */ + AM_RANGE(0xc000, 0xc000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(0xe000, 0xe00d) AM_DEVREADWRITE("k007232", k007232_device, read, write) ADDRESS_MAP_END @@ -233,6 +233,8 @@ static MACHINE_CONFIG_START( aliens, aliens_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) /* verified on pcb */ MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(aliens_state,aliens_snd_bankswitch_w)) MCFG_SOUND_ROUTE(0, "mono", 0.60) diff --git a/src/mame/drivers/battlnts.cpp b/src/mame/drivers/battlnts.cpp index b4d00a994d8..acfac32642b 100644 --- a/src/mame/drivers/battlnts.cpp +++ b/src/mame/drivers/battlnts.cpp @@ -15,6 +15,7 @@ #include "emu.h" #include "cpu/m6809/hd6309.h" #include "cpu/z80/z80.h" +#include "machine/gen_latch.h" #include "machine/watchdog.h" #include "sound/3812intf.h" #include "includes/konamipt.h" @@ -71,7 +72,7 @@ static ADDRESS_MAP_START( battlnts_map, AS_PROGRAM, 8, battlnts_state ) AM_RANGE(0x2e08, 0x2e08) AM_WRITE(battlnts_bankswitch_w) /* bankswitch control */ AM_RANGE(0x2e0c, 0x2e0c) AM_WRITE(battlnts_spritebank_w) /* sprite bank select */ AM_RANGE(0x2e10, 0x2e10) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x2e14, 0x2e14) AM_WRITE(soundlatch_byte_w) /* sound code # */ + AM_RANGE(0x2e14, 0x2e14) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* sound code # */ AM_RANGE(0x2e18, 0x2e18) AM_WRITE(battlnts_sh_irqtrigger_w) /* cause interrupt on audio CPU */ AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("rombank") /* banked ROM */ AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM 777e02.bin */ @@ -82,7 +83,7 @@ static ADDRESS_MAP_START( battlnts_sound_map, AS_PROGRAM, 8, battlnts_state ) AM_RANGE(0x8000, 0x87ff) AM_RAM /* RAM */ AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym1", ym3812_device, read, write) /* YM3812 (chip 1) */ AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym2", ym3812_device, read, write) /* YM3812 (chip 2) */ - AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch_byte_r) /* soundlatch_byte_r */ + AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) ADDRESS_MAP_END /************************************* @@ -263,6 +264,8 @@ static MACHINE_CONFIG_START( battlnts, battlnts_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_SOUND_ADD("ym1", YM3812, XTAL_24MHz / 8) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) diff --git a/src/mame/drivers/bladestl.cpp b/src/mame/drivers/bladestl.cpp index a15997f06c4..a3d9d00834c 100644 --- a/src/mame/drivers/bladestl.cpp +++ b/src/mame/drivers/bladestl.cpp @@ -85,7 +85,7 @@ WRITE8_MEMBER(bladestl_state::bladestl_bankswitch_w) WRITE8_MEMBER(bladestl_state::bladestl_sh_irqtrigger_w) { - soundlatch_byte_w(space, offset, data); + m_soundlatch->write(space, offset, data); m_audiocpu->set_input_line(M6809_IRQ_LINE, HOLD_LINE); //logerror("(sound) write %02x\n", data); } @@ -150,7 +150,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, bladestl_state ) AM_RANGE(0x3000, 0x3000) AM_WRITE(bladestl_speech_ctrl_w) /* UPD7759 */ AM_RANGE(0x4000, 0x4000) AM_READ(bladestl_speech_busy_r) /* UPD7759 */ AM_RANGE(0x5000, 0x5000) AM_WRITENOP /* ??? */ - AM_RANGE(0x6000, 0x6000) AM_READ(soundlatch_byte_r) /* soundlatch_byte_r */ + AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(0x8000, 0xffff) AM_ROM ADDRESS_MAP_END @@ -342,6 +342,8 @@ static MACHINE_CONFIG_START( bladestl, bladestl_state ) called at initialization time */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_SOUND_ADD("upd", UPD7759, UPD7759_STANDARD_CLOCK) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) diff --git a/src/mame/drivers/blockhl.cpp b/src/mame/drivers/blockhl.cpp index 7117471785e..a59c5313544 100644 --- a/src/mame/drivers/blockhl.cpp +++ b/src/mame/drivers/blockhl.cpp @@ -21,6 +21,7 @@ #include "cpu/m6809/konami.h" #include "cpu/z80/z80.h" #include "machine/bankdev.h" +#include "machine/gen_latch.h" #include "machine/watchdog.h" #include "video/k052109.h" #include "video/k051960.h" @@ -72,7 +73,7 @@ private: //************************************************************************** static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, blockhl_state ) - AM_RANGE(0x1f84, 0x1f84) AM_WRITE(soundlatch_byte_w) + AM_RANGE(0x1f84, 0x1f84) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) AM_RANGE(0x1f88, 0x1f88) AM_WRITE(sound_irq_w) AM_RANGE(0x1f8c, 0x1f8c) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) AM_RANGE(0x1f94, 0x1f94) AM_READ_PORT("DSW3") @@ -95,7 +96,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( audio_map, AS_PROGRAM, 8, blockhl_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r) + AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) AM_RANGE(0xe00c, 0xe00d) AM_WRITENOP // leftover from missing 007232? ADDRESS_MAP_END @@ -310,6 +311,8 @@ static MACHINE_CONFIG_START( blockhl, blockhl_state ) // sound hardware MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) MCFG_SOUND_ROUTE(0, "mono", 0.60) MCFG_SOUND_ROUTE(1, "mono", 0.60) diff --git a/src/mame/drivers/bottom9.cpp b/src/mame/drivers/bottom9.cpp index 9a88444c5a6..e82ae67dca4 100644 --- a/src/mame/drivers/bottom9.cpp +++ b/src/mame/drivers/bottom9.cpp @@ -17,6 +17,7 @@ #include "emu.h" #include "cpu/z80/z80.h" #include "cpu/m6809/m6809.h" +#include "machine/gen_latch.h" #include "machine/watchdog.h" #include "includes/konamipt.h" #include "includes/bottom9.h" @@ -160,7 +161,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, bottom9_state ) AM_RANGE(0x1f80, 0x1f80) AM_WRITE(bankswitch_w) AM_RANGE(0x1f90, 0x1f90) AM_WRITE(bottom9_1f90_w) AM_RANGE(0x1fa0, 0x1fa0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x1fb0, 0x1fb0) AM_WRITE(soundlatch_byte_w) + AM_RANGE(0x1fb0, 0x1fb0) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) AM_RANGE(0x1fc0, 0x1fc0) AM_WRITE(bottom9_sh_irqtrigger_w) AM_RANGE(0x1fd0, 0x1fd0) AM_READ_PORT("SYSTEM") AM_RANGE(0x1fd1, 0x1fd1) AM_READ_PORT("P1") @@ -181,7 +182,7 @@ static ADDRESS_MAP_START( audio_map, AS_PROGRAM, 8, bottom9_state ) AM_RANGE(0x9000, 0x9000) AM_WRITE(sound_bank_w) AM_RANGE(0xa000, 0xa00d) AM_DEVREADWRITE("k007232_1", k007232_device, read, write) AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232_2", k007232_device, read, write) - AM_RANGE(0xd000, 0xd000) AM_READ(soundlatch_byte_r) + AM_RANGE(0xd000, 0xd000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(0xf000, 0xf000) AM_WRITE(nmi_enable_w) ADDRESS_MAP_END @@ -336,6 +337,8 @@ static MACHINE_CONFIG_START( bottom9, bottom9_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_SOUND_ADD("k007232_1", K007232, 3579545) MCFG_K007232_PORT_WRITE_HANDLER(WRITE8(bottom9_state, volume_callback0)) MCFG_SOUND_ROUTE(0, "mono", 0.40) diff --git a/src/mame/drivers/chqflag.cpp b/src/mame/drivers/chqflag.cpp index 289df90540e..2a89ee1919b 100644 --- a/src/mame/drivers/chqflag.cpp +++ b/src/mame/drivers/chqflag.cpp @@ -112,7 +112,7 @@ READ8_MEMBER(chqflag_state::analog_read_r) WRITE8_MEMBER(chqflag_state::chqflag_sh_irqtrigger_w) { - soundlatch2_byte_w(space, 0, data); + m_soundlatch2->write(space, 0, data); m_audiocpu->set_input_line(0, HOLD_LINE); } @@ -125,7 +125,7 @@ static ADDRESS_MAP_START( chqflag_map, AS_PROGRAM, 8, chqflag_state ) AM_RANGE(0x2000, 0x2007) AM_DEVREADWRITE("k051960", k051960_device, k051937_r, k051937_w) /* Sprite control registers */ AM_RANGE(0x2400, 0x27ff) AM_DEVREADWRITE("k051960", k051960_device, k051960_r, k051960_w) /* Sprite RAM */ AM_RANGE(0x2800, 0x2fff) AM_READ(k051316_2_ramrom_r) AM_DEVWRITE("k051316_2", k051316_device, write) /* 051316 zoom/rotation (chip 2) */ - AM_RANGE(0x3000, 0x3000) AM_WRITE(soundlatch_byte_w) /* sound code # */ + AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* sound code # */ AM_RANGE(0x3001, 0x3001) AM_WRITE(chqflag_sh_irqtrigger_w) /* cause interrupt on audio CPU */ AM_RANGE(0x3002, 0x3002) AM_WRITE(chqflag_bankswitch_w) /* bankswitch control */ AM_RANGE(0x3003, 0x3003) AM_WRITE(chqflag_vreg_w) /* enable K051316 ROM reading */ @@ -175,8 +175,8 @@ static ADDRESS_MAP_START( chqflag_sound_map, AS_PROGRAM, 8, chqflag_state ) /* selecting a different latch for the external port */ AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232_2", k007232_device, read, write) /* 007232 (chip 2) */ AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) /* YM2151 */ - AM_RANGE(0xd000, 0xd000) AM_READ(soundlatch_byte_r) /* soundlatch_byte_r */ - AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch2_byte_r) /* engine sound volume */ + AM_RANGE(0xd000, 0xd000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) + AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) /* engine sound volume */ AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ??? */ ADDRESS_MAP_END @@ -341,6 +341,9 @@ static MACHINE_CONFIG_START( chqflag, chqflag_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_GENERIC_LATCH_8_ADD("soundlatch2") + MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) /* verified on pcb */ MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_NMI)) MCFG_SOUND_ROUTE(0, "lspeaker", 1.00) diff --git a/src/mame/drivers/circusc.cpp b/src/mame/drivers/circusc.cpp index a63a76c93cd..ced692dc44d 100644 --- a/src/mame/drivers/circusc.cpp +++ b/src/mame/drivers/circusc.cpp @@ -55,6 +55,7 @@ This bug is due to 380_r02.6h, it differs from 380_q02.6h by 2 bytes, at #include "cpu/z80/z80.h" #include "machine/konami1.h" #include "cpu/m6809/m6809.h" +#include "machine/gen_latch.h" #include "machine/watchdog.h" #include "sound/dac.h" #include "sound/discrete.h" @@ -146,7 +147,7 @@ static ADDRESS_MAP_START( circusc_map, AS_PROGRAM, 8, circusc_state ) AM_RANGE(0x0003, 0x0004) AM_MIRROR(0x03f8) AM_WRITE(circusc_coin_counter_w) /* COIN1, COIN2 */ AM_RANGE(0x0005, 0x0005) AM_MIRROR(0x03f8) AM_WRITEONLY AM_SHARE("spritebank") /* OBJ CHENG */ AM_RANGE(0x0400, 0x0400) AM_MIRROR(0x03ff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* WDOG */ - AM_RANGE(0x0800, 0x0800) AM_MIRROR(0x03ff) AM_WRITE(soundlatch_byte_w) /* SOUND DATA */ + AM_RANGE(0x0800, 0x0800) AM_MIRROR(0x03ff) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* SOUND DATA */ AM_RANGE(0x0c00, 0x0c00) AM_MIRROR(0x03ff) AM_WRITE(circusc_sh_irqtrigger_w) /* SOUND-ON causes interrupt on audio CPU */ AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x03fc) AM_READ_PORT("SYSTEM") AM_RANGE(0x1001, 0x1001) AM_MIRROR(0x03fc) AM_READ_PORT("P1") @@ -167,7 +168,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, circusc_state ) AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x1c00) AM_RAM - AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x1fff) AM_READ(soundlatch_byte_r) /* CS0 */ + AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x1fff) AM_DEVREAD("soundlatch", generic_latch_8_device, read) /* CS0 */ AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x1fff) AM_READ(circusc_sh_timer_r) /* CS1 */ AM_RANGE(0xa000, 0xa07f) AM_MIRROR(0x1f80) AM_WRITE(circusc_sound_w) /* CS2 - CS6 */ ADDRESS_MAP_END @@ -363,6 +364,8 @@ static MACHINE_CONFIG_START( circusc, circusc_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_SOUND_ADD("sn1", SN76496, XTAL_14_31818MHz/8) MCFG_SOUND_ROUTE_EX(0, "fltdisc", 1.0, 0) diff --git a/src/mame/drivers/combatsc.cpp b/src/mame/drivers/combatsc.cpp index b7ae2deb8e0..2d346e77212 100644 --- a/src/mame/drivers/combatsc.cpp +++ b/src/mame/drivers/combatsc.cpp @@ -6,7 +6,7 @@ TODO: - Ugly text flickering in various places, namely the text when you finish level 1. - This is due of completely busted sprite limit hook-up. (check konicdev.c and MT #00185) + This is due of completely busted sprite limit hook-up. (check k007121.cpp and MT #00185) - it seems that to get correct target colors in firing range III we have to use the WRONG lookup table (the one for tiles instead of the one for sprites). @@ -112,7 +112,7 @@ SOUND CPU: 9000 uPD7759 b000 uPD7759 c000 uPD7759 -d000 soundlatch_byte_r +d000 soundlatch read e000-e001 YM2203 @@ -150,7 +150,7 @@ WRITE8_MEMBER(combatsc_state::combatsc_vreg_w) WRITE8_MEMBER(combatsc_state::combatscb_sh_irqtrigger_w) { - soundlatch_byte_w(space, offset, data); + m_soundlatch->write(space, offset, data); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); } @@ -363,7 +363,7 @@ static ADDRESS_MAP_START( combatsc_map, AS_PROGRAM, 8, combatsc_state ) AM_RANGE(0x0408, 0x0408) AM_WRITE(combatsc_coin_counter_w) /* coin counters */ AM_RANGE(0x040c, 0x040c) AM_WRITE(combatsc_vreg_w) AM_RANGE(0x0410, 0x0410) AM_WRITE(combatsc_bankselect_w) - AM_RANGE(0x0414, 0x0414) AM_WRITE(soundlatch_byte_w) + AM_RANGE(0x0414, 0x0414) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) AM_RANGE(0x0418, 0x0418) AM_WRITE(combatsc_sh_irqtrigger_w) AM_RANGE(0x041c, 0x041c) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* watchdog reset? */ @@ -393,7 +393,7 @@ static ADDRESS_MAP_START( combatsc_sound_map, AS_PROGRAM, 8, combatsc_state ) AM_RANGE(0xb000, 0xb000) AM_READ(combatsc_busy_r) /* upd7759 busy? */ AM_RANGE(0xc000, 0xc000) AM_WRITE(combatsc_voice_reset_w) /* upd7759 reset? */ - AM_RANGE(0xd000, 0xd000) AM_READ(soundlatch_byte_r) /* soundlatch_byte_r? */ + AM_RANGE(0xd000, 0xd000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) /* soundlatch read? */ AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) /* YM 2203 intercepted */ ADDRESS_MAP_END @@ -416,7 +416,7 @@ static ADDRESS_MAP_START( combatscb_sound_map, AS_PROGRAM, 8, combatsc_state ) AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) /* YM 2203 */ AM_RANGE(0x9008, 0x9009) AM_DEVREAD("ymsnd", ym2203_device, read) /* ??? */ AM_RANGE(0x9800, 0x9800) AM_WRITE(combatscb_dac_w) - AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r) /* soundlatch_byte_r? */ + AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) /* soundlatch read? */ AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bl_abank") ADDRESS_MAP_END @@ -732,6 +732,8 @@ static MACHINE_CONFIG_START( combatsc, combatsc_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_SOUND_ADD("ymsnd", YM2203, 3000000) MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(combatsc_state, combatsc_portA_w)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) @@ -776,6 +778,8 @@ static MACHINE_CONFIG_START( combatscb, combatsc_state ) MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_SOUND_ADD("ymsnd", YM2203, 3000000) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) diff --git a/src/mame/drivers/contra.cpp b/src/mame/drivers/contra.cpp index 868741667dd..82550236657 100644 --- a/src/mame/drivers/contra.cpp +++ b/src/mame/drivers/contra.cpp @@ -21,6 +21,7 @@ Dip locations and factory settings verified with manual #include "emu.h" #include "cpu/m6809/hd6309.h" #include "cpu/m6809/m6809.h" +#include "machine/gen_latch.h" #include "sound/2151intf.h" #include "includes/konamipt.h" #include "includes/contra.h" @@ -52,12 +53,6 @@ WRITE8_MEMBER(contra_state::contra_coin_counter_w) machine().bookkeeping().coin_counter_w(1, (data & 0x02) >> 1); } -WRITE8_MEMBER(contra_state::cpu_sound_command_w) -{ - soundlatch_byte_w(space, offset, data); -} - - static ADDRESS_MAP_START( contra_map, AS_PROGRAM, 8, contra_state ) AM_RANGE(0x0000, 0x0007) AM_WRITE(contra_K007121_ctrl_0_w) @@ -71,7 +66,7 @@ static ADDRESS_MAP_START( contra_map, AS_PROGRAM, 8, contra_state ) AM_RANGE(0x0018, 0x0018) AM_WRITE(contra_coin_counter_w) AM_RANGE(0x001a, 0x001a) AM_WRITE(contra_sh_irqtrigger_w) - AM_RANGE(0x001c, 0x001c) AM_WRITE(cpu_sound_command_w) + AM_RANGE(0x001c, 0x001c) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) AM_RANGE(0x001e, 0x001e) AM_WRITENOP /* ? */ AM_RANGE(0x0060, 0x0067) AM_WRITE(contra_K007121_ctrl_1_w) @@ -97,7 +92,7 @@ static ADDRESS_MAP_START( contra_map, AS_PROGRAM, 8, contra_state ) ADDRESS_MAP_END static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, contra_state ) - AM_RANGE(0x0000, 0x0000) AM_READ(soundlatch_byte_r) + AM_RANGE(0x0000, 0x0000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) AM_RANGE(0x4000, 0x4000) AM_WRITENOP /* read triggers irq reset and latch read (in the hardware only). */ AM_RANGE(0x6000, 0x67ff) AM_RAM @@ -236,6 +231,8 @@ static MACHINE_CONFIG_START( contra, contra_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) MCFG_SOUND_ROUTE(0, "lspeaker", 0.60) MCFG_SOUND_ROUTE(1, "rspeaker", 0.60) diff --git a/src/mame/drivers/crimfght.cpp b/src/mame/drivers/crimfght.cpp index 1d77ed5b684..89adee82837 100644 --- a/src/mame/drivers/crimfght.cpp +++ b/src/mame/drivers/crimfght.cpp @@ -56,7 +56,7 @@ WRITE8_MEMBER(crimfght_state::k052109_051960_w) WRITE8_MEMBER(crimfght_state::sound_w) { // writing the latch asserts the irq line - soundlatch_write(0, data); + m_soundlatch->write(space, offset, data); m_audiocpu->set_input_line(INPUT_LINE_IRQ0, ASSERT_LINE); } @@ -107,7 +107,7 @@ static ADDRESS_MAP_START( crimfght_sound_map, AS_PROGRAM, 8, crimfght_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x1800) AM_RAM AM_RANGE(0xa000, 0xa001) AM_MIRROR(0x1ffe) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x1fff) AM_READ(soundlatch_byte_r) + AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x1fff) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(0xe000, 0xe00f) AM_MIRROR(0x1ff0) AM_DEVREADWRITE("k007232", k007232_device, read, write) ADDRESS_MAP_END @@ -340,6 +340,8 @@ static MACHINE_CONFIG_START( crimfght, crimfght_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) /* verified on pcb */ MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(crimfght_state, ym2151_ct_w)) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) diff --git a/src/mame/drivers/dbz.cpp b/src/mame/drivers/dbz.cpp index c23e895dc27..074a34826f7 100644 --- a/src/mame/drivers/dbz.cpp +++ b/src/mame/drivers/dbz.cpp @@ -95,7 +95,7 @@ WRITE16_MEMBER(dbz_state::dbzcontrol_w) WRITE16_MEMBER(dbz_state::dbz_sound_command_w) { - soundlatch_byte_w(space, 0, data >> 8); + m_soundlatch->write(space, 0, data >> 8); } WRITE16_MEMBER(dbz_state::dbz_sound_cause_nmi) @@ -146,7 +146,7 @@ static ADDRESS_MAP_START( dbz_sound_map, AS_PROGRAM, 8, dbz_state ) AM_RANGE(0x8000, 0xbfff) AM_RAM AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) AM_RANGE(0xd000, 0xd002) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xe000, 0xe001) AM_READ(soundlatch_byte_r) + AM_RANGE(0xe000, 0xe001) AM_DEVREAD("soundlatch", generic_latch_8_device, read) ADDRESS_MAP_END static ADDRESS_MAP_START( dbz_sound_io_map, AS_IO, 8, dbz_state ) @@ -370,6 +370,8 @@ static MACHINE_CONFIG_START( dbz, dbz_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_YM2151_ADD("ymsnd", 4000000) MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) diff --git a/src/mame/drivers/djboy.cpp b/src/mame/drivers/djboy.cpp index bbd3eb25706..cec8d17afe6 100644 --- a/src/mame/drivers/djboy.cpp +++ b/src/mame/drivers/djboy.cpp @@ -230,7 +230,7 @@ WRITE8_MEMBER(djboy_state::coin_count_w) WRITE8_MEMBER(djboy_state::trigger_nmi_on_sound_cpu2) { - soundlatch_byte_w(space, 0, data); + m_soundlatch->write(space, 0, data); m_cpu2->set_input_line(INPUT_LINE_NMI, PULSE_LINE); } /* trigger_nmi_on_sound_cpu2 */ @@ -291,7 +291,7 @@ static ADDRESS_MAP_START( cpu2_port_am, AS_IO, 8, djboy_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x00) AM_WRITE(cpu2_bankswitch_w) AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0x04, 0x04) AM_READ(soundlatch_byte_r) + AM_RANGE(0x04, 0x04) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(0x06, 0x06) AM_DEVREADWRITE("oki1", okim6295_device, read, write) AM_RANGE(0x07, 0x07) AM_DEVREADWRITE("oki2", okim6295_device, read, write) ADDRESS_MAP_END @@ -584,6 +584,8 @@ static MACHINE_CONFIG_START( djboy, djboy_state ) MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_SOUND_ADD("ymsnd", YM2203, 3000000) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) diff --git a/src/mame/drivers/fastfred.cpp b/src/mame/drivers/fastfred.cpp index 99f4f8ce5c7..88442b52d86 100644 --- a/src/mame/drivers/fastfred.cpp +++ b/src/mame/drivers/fastfred.cpp @@ -13,6 +13,7 @@ #include "emu.h" #include "cpu/z80/z80.h" #include "includes/fastfred.h" +#include "machine/gen_latch.h" #include "machine/watchdog.h" #include "sound/ay8910.h" @@ -201,7 +202,7 @@ static ADDRESS_MAP_START( fastfred_map, AS_PROGRAM, 8, fastfred_state ) AM_RANGE(0xf007, 0xf007) AM_WRITE(fastfred_flip_screen_y_w) AM_RANGE(0xf116, 0xf116) AM_WRITE(fastfred_flip_screen_x_w) AM_RANGE(0xf117, 0xf117) AM_WRITE(fastfred_flip_screen_y_w) - AM_RANGE(0xf800, 0xf800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_WRITE(soundlatch_byte_w) + AM_RANGE(0xf800, 0xf800) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) ADDRESS_MAP_END @@ -256,13 +257,13 @@ static ADDRESS_MAP_START( imago_map, AS_PROGRAM, 8, fastfred_state ) AM_RANGE(0xf007, 0xf007) AM_WRITE(fastfred_flip_screen_y_w) AM_RANGE(0xf400, 0xf400) AM_WRITENOP // writes 0 or 2 AM_RANGE(0xf401, 0xf401) AM_WRITE(imago_sprites_bank_w) - AM_RANGE(0xf800, 0xf800) AM_READNOP AM_WRITE(soundlatch_byte_w) + AM_RANGE(0xf800, 0xf800) AM_READNOP AM_DEVWRITE("soundlatch", generic_latch_8_device, write) ADDRESS_MAP_END static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, fastfred_state ) AM_RANGE(0x0000, 0x1fff) AM_ROM AM_RANGE(0x2000, 0x23ff) AM_RAM - AM_RANGE(0x3000, 0x3000) AM_READ(soundlatch_byte_r) AM_WRITE(sound_nmi_mask_w) + AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(sound_nmi_mask_w) AM_RANGE(0x4000, 0x4000) AM_WRITEONLY // Reset PSG's AM_RANGE(0x5000, 0x5001) AM_DEVWRITE("ay8910.1", ay8910_device, address_data_w) AM_RANGE(0x6000, 0x6001) AM_DEVWRITE("ay8910.2", ay8910_device, address_data_w) @@ -676,6 +677,8 @@ static MACHINE_CONFIG_START( fastfred, fastfred_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_SOUND_ADD("ay8910.1", AY8910, XTAL_12_432MHz/8) /* 1.554 MHz; xtal from pcb pics, divider not verified */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) @@ -695,6 +698,7 @@ static MACHINE_CONFIG_DERIVED( jumpcoas, fastfred ) MCFG_GFXDECODE_MODIFY("gfxdecode", jumpcoas) /* sound hardware */ + MCFG_DEVICE_REMOVE("soundlatch") MCFG_DEVICE_REMOVE("ay8910.2") MACHINE_CONFIG_END diff --git a/src/mame/drivers/finalizr.cpp b/src/mame/drivers/finalizr.cpp index 1eb060a9169..79c0cfbb869 100644 --- a/src/mame/drivers/finalizr.cpp +++ b/src/mame/drivers/finalizr.cpp @@ -16,6 +16,7 @@ #include "machine/konami1.h" #include "cpu/m6809/m6809.h" #include "cpu/mcs48/mcs48.h" +#include "machine/gen_latch.h" #include "machine/watchdog.h" #include "sound/sn76496.h" #include "sound/dac.h" @@ -114,7 +115,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, finalizr_state ) AM_RANGE(0x081a, 0x081a) AM_DEVWRITE("snsnd", sn76489a_device, write) /* This address triggers the SN chip to read the data port. */ AM_RANGE(0x081b, 0x081b) AM_WRITENOP /* Loads the snd command into the snd latch */ AM_RANGE(0x081c, 0x081c) AM_WRITE(finalizr_i8039_irq_w) /* custom sound chip */ - AM_RANGE(0x081d, 0x081d) AM_WRITE(soundlatch_byte_w) /* custom sound chip */ + AM_RANGE(0x081d, 0x081d) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* custom sound chip */ AM_RANGE(0x2000, 0x23ff) AM_RAM AM_SHARE("colorram") AM_RANGE(0x2400, 0x27ff) AM_RAM AM_SHARE("videoram") AM_RANGE(0x2800, 0x2bff) AM_RAM AM_SHARE("colorram2") @@ -131,7 +132,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, finalizr_state ) ADDRESS_MAP_END static ADDRESS_MAP_START( sound_io_map, AS_IO, 8, finalizr_state ) - AM_RANGE(0x00, 0xff) AM_READ(soundlatch_byte_r) + AM_RANGE(0x00, 0xff) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_DEVWRITE("dac", dac_device, write_unsigned8) AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(i8039_irqen_w) AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_WRITE(i8039_T0_w) @@ -288,6 +289,8 @@ static MACHINE_CONFIG_START( finalizr, finalizr_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_SOUND_ADD("snsnd", SN76489A, XTAL_18_432MHz/12) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) diff --git a/src/mame/drivers/flkatck.cpp b/src/mame/drivers/flkatck.cpp index 140729c7167..6a2cc418a79 100644 --- a/src/mame/drivers/flkatck.cpp +++ b/src/mame/drivers/flkatck.cpp @@ -66,7 +66,7 @@ WRITE8_MEMBER(flkatck_state::flkatck_ls138_w) flkatck_bankswitch_w(space, 0, data); break; case 0x05: /* sound code number */ - soundlatch_byte_w(space, 0, data); + m_soundlatch->write(space, 0, data); break; case 0x06: /* Cause interrupt on audio CPU */ m_audiocpu->set_input_line(0, HOLD_LINE); @@ -107,7 +107,7 @@ static ADDRESS_MAP_START( flkatck_sound_map, AS_PROGRAM, 8, flkatck_state ) // AM_RANGE(0x9001, 0x9001) AM_RAM /* ??? */ AM_RANGE(0x9004, 0x9004) AM_READNOP /* ??? */ AM_RANGE(0x9006, 0x9006) AM_WRITENOP /* ??? */ - AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r) /* soundlatch_byte_r */ + AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write) /* 007232 registers */ AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) /* YM2151 */ ADDRESS_MAP_END @@ -238,6 +238,8 @@ static MACHINE_CONFIG_START( flkatck, flkatck_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_YM2151_ADD("ymsnd", 3579545) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) diff --git a/src/mame/drivers/galaxian.cpp b/src/mame/drivers/galaxian.cpp index e222e403291..9f7ce09e0e3 100644 --- a/src/mame/drivers/galaxian.cpp +++ b/src/mame/drivers/galaxian.cpp @@ -5825,13 +5825,13 @@ static MACHINE_CONFIG_DERIVED( scramble, galaxian_base ) MCFG_I8255_IN_PORTA_CB(IOPORT("IN0")) MCFG_I8255_IN_PORTB_CB(IOPORT("IN1")) MCFG_I8255_IN_PORTC_CB(IOPORT("IN2")) - MCFG_I8255_OUT_PORTC_CB(WRITE8(galaxian_state, konami_portc_0_w)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(galaxian_state, scramble_protection_w)) MCFG_DEVICE_ADD("ppi8255_1", I8255A, 0) MCFG_I8255_OUT_PORTA_CB(WRITE8(driver_device, soundlatch_byte_w)) MCFG_I8255_OUT_PORTB_CB(WRITE8(galaxian_state, konami_sound_control_w)) MCFG_I8255_IN_PORTC_CB(READ8(galaxian_state, scramble_protection_r)) - MCFG_I8255_OUT_PORTC_CB(WRITE8(galaxian_state, scramble_protection_w)) + //MCFG_I8255_OUT_PORTC_CB(WRITE8()) MACHINE_CONFIG_END @@ -10442,6 +10442,25 @@ ROM_START( scramrf ) ROM_LOAD( "c01s.6e", 0x0000, 0x0020, CRC(4e3caeab) SHA1(a25083c3e36d28afdefe4af6e6d4f3155e303625) ) ROM_END +ROM_START( scrammr ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "301.CD2", 0x0000, 0x1000, CRC(680c9355) SHA1(e23cfc1ec839b9bf3d8d9d5d09f0df5c67f8bbb5) ) + ROM_LOAD( "302.E2", 0x1000, 0x1000, CRC(5b500c90) SHA1(45b1bad1d93f3e474395a193d2fe00e105ba39e5) ) + ROM_LOAD( "303.FG2", 0x2000, 0x1000, CRC(664437d7) SHA1(1fb7cb724b0dcfe6fcd2213f8e47dfd46e51f90f) ) + ROM_LOAD( "304.H2", 0x3000, 0x1000, CRC(b66c90d6) SHA1(7aea3055b0b538ea8197623ff5d5aae76133f156) ) + + ROM_REGION( 0x10000, "audiocpu", 0 ) + ROM_LOAD( "305.C5", 0x0000, 0x1000, CRC(684a0866) SHA1(fa9acfff7ea6f35b9ff219ac84611a7d9debc711) ) + ROM_LOAD( "313.D5", 0x1000, 0x0800, CRC(ba2fa933) SHA1(1f976d8595706730e29f93027e7ab4620075c078) ) + + ROM_REGION( 0x1000, "gfx1", 0 ) + ROM_LOAD( "310.H5", 0x0000, 0x0800, CRC(4708845b) SHA1(a8b1ad19a95a9d35050a2ab7194cc96fc5afcdc9) ) + ROM_LOAD( "309.FG5", 0x0800, 0x0800, CRC(11fd2887) SHA1(69844e48bb4d372cac7ae83c953df573c7ecbb7f) ) + + ROM_REGION( 0x0020, "proms", 0 ) + ROM_LOAD( "74188.K6", 0x0000, 0x0020, CRC(aec6cb4e) SHA1(747c442d338b1b679619dfffc8a7c7fa9a43a073) ) +ROM_END + ROM_START( scramblebf ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "scf1.2d", 0x0000, 0x0800, CRC(b126aa1f) SHA1(1e4db9ee891711e880273241e74e932b0f4e3a0b) ) @@ -11595,6 +11614,7 @@ GAME( 1981, scrambp, scramble, scramble, scramble, galaxian_state, scram GAME( 1981, scramce, scramble, scramble, scramble, galaxian_state, scramble, ROT90, "bootleg (Centromatic S.A.)", "Scramble (Centromatic S.A., Spanish bootleg)", MACHINE_SUPPORTS_SAVE ) // similar to above GAME( 1981, scrampt, scramble, scramble, scramble, galaxian_state, scramble, ROT90, "bootleg (Petaco S.A.)", "Scramble (Petaco S.A., Spanish bootleg)", MACHINE_SUPPORTS_SAVE ) // ^^ GAME( 1981, scramrf, scramble, scramble, scramble, galaxian_state, scramble, ROT90, "bootleg (Recreativos Franco)", "Scramble (Recreativos Franco, Spanish bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, scrammr, scramble, scramble, scramble, galaxian_state, scramble, ROT90, "bootleg (Model Racing)", "Scramble (Model Racing, Spanish bootleg)", MACHINE_SUPPORTS_SAVE ) GAME( 1981, scramblebb, scramble, scramble, scramble, galaxian_state, scramble, ROT90, "bootleg?", "Scramble (bootleg?)", MACHINE_SUPPORTS_SAVE ) GAME( 198?, bomber, scramble, scramble, scramble, galaxian_state, scramble, ROT90, "bootleg (Alca)", "Bomber (bootleg of Scramble)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/gijoe.cpp b/src/mame/drivers/gijoe.cpp index 0881057487b..7f29fd19907 100644 --- a/src/mame/drivers/gijoe.cpp +++ b/src/mame/drivers/gijoe.cpp @@ -194,7 +194,7 @@ WRITE16_MEMBER(gijoe_state::sound_cmd_w) if (ACCESSING_BITS_0_7) { data &= 0xff; - soundlatch_byte_w(space, 0, data); + m_soundlatch->write(space, 0, data); } } @@ -205,7 +205,7 @@ WRITE16_MEMBER(gijoe_state::sound_irq_w) READ16_MEMBER(gijoe_state::sound_status_r) { - return soundlatch2_byte_r(space, 0); + return m_soundlatch2->read(space, 0); } static ADDRESS_MAP_START( gijoe_map, AS_PROGRAM, 16, gijoe_state ) @@ -242,8 +242,8 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, gijoe_state ) AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_RANGE(0xf800, 0xfa2f) AM_DEVREADWRITE("k054539", k054539_device, read, write) - AM_RANGE(0xfc00, 0xfc00) AM_WRITE(soundlatch2_byte_w) - AM_RANGE(0xfc02, 0xfc02) AM_READ(soundlatch_byte_r) + AM_RANGE(0xfc00, 0xfc00) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) + AM_RANGE(0xfc02, 0xfc02) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(0x0000, 0xffff) AM_ROM ADDRESS_MAP_END @@ -344,6 +344,9 @@ static MACHINE_CONFIG_START( gijoe, gijoe_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_GENERIC_LATCH_8_ADD("soundlatch2") + MCFG_DEVICE_ADD("k054539", K054539, XTAL_18_432MHz) MCFG_K054539_TIMER_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_NMI)) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) diff --git a/src/mame/drivers/gradius3.cpp b/src/mame/drivers/gradius3.cpp index aaf3b913224..cd9111eb19e 100644 --- a/src/mame/drivers/gradius3.cpp +++ b/src/mame/drivers/gradius3.cpp @@ -26,6 +26,7 @@ #include "cpu/m68000/m68000.h" #include "cpu/z80/z80.h" +#include "machine/gen_latch.h" #include "machine/watchdog.h" #include "sound/2151intf.h" #include "includes/konamipt.h" @@ -158,7 +159,7 @@ static ADDRESS_MAP_START( gradius3_map, AS_PROGRAM, 16, gradius3_state ) AM_RANGE(0x0d0002, 0x0d0003) AM_READ_PORT("DSW2") AM_RANGE(0x0d8000, 0x0d8001) AM_WRITE(cpuB_irqtrigger_w) AM_RANGE(0x0e0000, 0x0e0001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x0e8000, 0x0e8001) AM_WRITE8(soundlatch_byte_w, 0xff00) + AM_RANGE(0x0e8000, 0x0e8001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0xff00) AM_RANGE(0x0f0000, 0x0f0001) AM_WRITE(sound_irq_w) AM_RANGE(0x100000, 0x103fff) AM_RAM AM_SHARE("share1") AM_RANGE(0x14c000, 0x153fff) AM_READWRITE(k052109_halfword_r, k052109_halfword_w) @@ -182,7 +183,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( gradius3_s_map, AS_PROGRAM, 8, gradius3_state ) AM_RANGE(0x0000, 0xefff) AM_ROM AM_RANGE(0xf000, 0xf000) AM_WRITE(sound_bank_w) /* 007232 bankswitch */ - AM_RANGE(0xf010, 0xf010) AM_READ(soundlatch_byte_r) + AM_RANGE(0xf010, 0xf010) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(0xf020, 0xf02d) AM_DEVREADWRITE("k007232", k007232_device, read, write) AM_RANGE(0xf030, 0xf031) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) AM_RANGE(0xf800, 0xffff) AM_RAM @@ -317,6 +318,8 @@ static MACHINE_CONFIG_START( gradius3, gradius3_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_YM2151_ADD("ymsnd", 3579545) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) diff --git a/src/mame/drivers/gyruss.cpp b/src/mame/drivers/gyruss.cpp index a88dea9ea8b..c9edc5c9640 100644 --- a/src/mame/drivers/gyruss.cpp +++ b/src/mame/drivers/gyruss.cpp @@ -60,6 +60,7 @@ and 1 SFX channel controlled by an 8039: #include "emu.h" #include "cpu/z80/z80.h" #include "cpu/m6809/m6809.h" +#include "machine/gen_latch.h" #include "machine/konami1.h" #include "cpu/mcs48/mcs48.h" #include "sound/ay8910.h" @@ -182,7 +183,7 @@ static ADDRESS_MAP_START( main_cpu1_map, AS_PROGRAM, 8, gyruss_state ) AM_RANGE(0xc0a0, 0xc0a0) AM_READ_PORT("P1") AM_RANGE(0xc0c0, 0xc0c0) AM_READ_PORT("P2") AM_RANGE(0xc0e0, 0xc0e0) AM_READ_PORT("DSW1") - AM_RANGE(0xc100, 0xc100) AM_READ_PORT("DSW3") AM_WRITE(soundlatch_byte_w) + AM_RANGE(0xc100, 0xc100) AM_READ_PORT("DSW3") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) AM_RANGE(0xc180, 0xc180) AM_WRITE(master_nmi_mask_w) AM_RANGE(0xc185, 0xc185) AM_WRITEONLY AM_SHARE("flipscreen") ADDRESS_MAP_END @@ -200,7 +201,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( audio_cpu1_map, AS_PROGRAM, 8, gyruss_state ) AM_RANGE(0x0000, 0x5fff) AM_ROM AM_RANGE(0x6000, 0x63ff) AM_RAM - AM_RANGE(0x8000, 0x8000) AM_READ(soundlatch_byte_r) + AM_RANGE(0x8000, 0x8000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) ADDRESS_MAP_END static ADDRESS_MAP_START( audio_cpu1_io_map, AS_IO, 8, gyruss_state ) @@ -221,7 +222,7 @@ static ADDRESS_MAP_START( audio_cpu1_io_map, AS_IO, 8, gyruss_state ) AM_RANGE(0x11, 0x11) AM_DEVREAD("ay5", ay8910_device, data_r) AM_RANGE(0x12, 0x12) AM_DEVWRITE("ay5", ay8910_device, data_w) AM_RANGE(0x14, 0x14) AM_WRITE(gyruss_i8039_irq_w) - AM_RANGE(0x18, 0x18) AM_WRITE(soundlatch2_byte_w) + AM_RANGE(0x18, 0x18) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) ADDRESS_MAP_END static ADDRESS_MAP_START( audio_cpu2_map, AS_PROGRAM, 8, gyruss_state ) @@ -229,7 +230,7 @@ static ADDRESS_MAP_START( audio_cpu2_map, AS_PROGRAM, 8, gyruss_state ) ADDRESS_MAP_END static ADDRESS_MAP_START( audio_cpu2_io_map, AS_IO, 8, gyruss_state ) - AM_RANGE(0x00, 0xff) AM_READ(soundlatch2_byte_r) + AM_RANGE(0x00, 0xff) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(gyruss_dac_w) AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(gyruss_irq_clear_w) ADDRESS_MAP_END @@ -494,6 +495,9 @@ static MACHINE_CONFIG_START( gyruss, gyruss_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_GENERIC_LATCH_8_ADD("soundlatch2") + MCFG_SOUND_ADD("ay1", AY8910, SOUND_CLOCK/8) MCFG_AY8910_OUTPUT_TYPE(AY8910_DISCRETE_OUTPUT) MCFG_AY8910_RES_LOADS(RES_K(3.3), RES_K(3.3), RES_K(3.3)) diff --git a/src/mame/drivers/hcastle.cpp b/src/mame/drivers/hcastle.cpp index 851694a5cb1..6a82dc5e833 100644 --- a/src/mame/drivers/hcastle.cpp +++ b/src/mame/drivers/hcastle.cpp @@ -11,6 +11,7 @@ #include "emu.h" #include "cpu/m6809/konami.h" #include "cpu/z80/z80.h" +#include "machine/gen_latch.h" #include "machine/watchdog.h" #include "sound/3812intf.h" #include "sound/k051649.h" @@ -42,7 +43,7 @@ static ADDRESS_MAP_START( hcastle_map, AS_PROGRAM, 8, hcastle_state ) AM_RANGE(0x0200, 0x0207) AM_WRITE(hcastle_pf2_control_w) AM_RANGE(0x0220, 0x023f) AM_RAM /* rowscroll? */ AM_RANGE(0x0400, 0x0400) AM_WRITE(hcastle_bankswitch_w) - AM_RANGE(0x0404, 0x0404) AM_WRITE(soundlatch_byte_w) + AM_RANGE(0x0404, 0x0404) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) AM_RANGE(0x0408, 0x0408) AM_WRITE(hcastle_soundirq_w) AM_RANGE(0x040c, 0x040c) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) AM_RANGE(0x0410, 0x0410) AM_READ_PORT("SYSTEM") AM_WRITE(hcastle_coin_w) @@ -82,7 +83,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, hcastle_state ) AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write) AM_RANGE(0xc000, 0xc000) AM_WRITE(sound_bank_w) /* 7232 bankswitch */ - AM_RANGE(0xd000, 0xd000) AM_READ(soundlatch_byte_r) + AM_RANGE(0xd000, 0xd000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) ADDRESS_MAP_END /*****************************************************************************/ @@ -222,6 +223,8 @@ static MACHINE_CONFIG_START( hcastle, hcastle_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_SOUND_ADD("k007232", K007232, 3579545) MCFG_K007232_PORT_WRITE_HANDLER(WRITE8(hcastle_state, volume_callback)) MCFG_SOUND_ROUTE(0, "mono", 0.44) diff --git a/src/mame/drivers/hvyunit.cpp b/src/mame/drivers/hvyunit.cpp index a8446a8537c..a26dda49928 100644 --- a/src/mame/drivers/hvyunit.cpp +++ b/src/mame/drivers/hvyunit.cpp @@ -62,6 +62,7 @@ To Do: #include "emu.h" #include "cpu/z80/z80.h" #include "cpu/mcs51/mcs51.h" +#include "machine/gen_latch.h" #include "sound/2203intf.h" #include "video/kan_pand.h" @@ -85,6 +86,7 @@ public: m_pandora(*this, "pandora"), m_gfxdecode(*this, "gfxdecode"), m_palette(*this, "palette"), + m_soundlatch(*this, "soundlatch"), m_videoram(*this, "videoram"), m_colorram(*this, "colorram") { } @@ -97,6 +99,7 @@ public: required_device<kaneko_pandora_device> m_pandora; required_device<gfxdecode_device> m_gfxdecode; required_device<palette_device> m_palette; + required_device<generic_latch_8_device> m_soundlatch; /* Video */ required_shared_ptr<UINT8> m_videoram; @@ -269,7 +272,7 @@ READ8_MEMBER(hvyunit_state::mermaid_status_r) WRITE8_MEMBER(hvyunit_state::trigger_nmi_on_sound_cpu2) { - soundlatch_byte_w(space, 0, data); + m_soundlatch->write(space, 0, data); m_soundcpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); } @@ -463,7 +466,7 @@ static ADDRESS_MAP_START( sound_io, AS_IO, 8, hvyunit_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x00) AM_WRITE(sound_bankswitch_w) AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) - AM_RANGE(0x04, 0x04) AM_READ(soundlatch_byte_r) + AM_RANGE(0x04, 0x04) AM_DEVREAD("soundlatch", generic_latch_8_device, read) ADDRESS_MAP_END @@ -680,6 +683,8 @@ static MACHINE_CONFIG_START( hvyunit, hvyunit_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_SOUND_ADD("ymsnd", YM2203, 3000000) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MACHINE_CONFIG_END diff --git a/src/mame/drivers/hyperspt.cpp b/src/mame/drivers/hyperspt.cpp index 2a835eda64c..fcdb0081961 100644 --- a/src/mame/drivers/hyperspt.cpp +++ b/src/mame/drivers/hyperspt.cpp @@ -4,7 +4,7 @@ Based on drivers from Juno First emulator by Chris Hardy (chrish@kcbbs.gen.nz) -- DIPs verified and defaults (when avaialble) are set from manuals +- DIPs verified and defaults (when available) are set from manuals ***************************************************************************/ @@ -15,6 +15,7 @@ Based on drivers from Juno First emulator by Chris Hardy (chrish@kcbbs.gen.nz) #include "sound/dac.h" #include "machine/konami1.h" #include "machine/nvram.h" +#include "machine/gen_latch.h" #include "machine/watchdog.h" #include "includes/konamipt.h" #include "audio/trackfld.h" @@ -40,7 +41,7 @@ static ADDRESS_MAP_START( hyperspt_map, AS_PROGRAM, 8, hyperspt_state ) AM_RANGE(0x1481, 0x1481) AM_DEVWRITE("trackfld_audio", trackfld_audio_device, konami_sh_irqtrigger_w) /* cause interrupt on audio CPU */ AM_RANGE(0x1483, 0x1484) AM_WRITE(hyperspt_coin_counter_w) AM_RANGE(0x1487, 0x1487) AM_WRITE(irq_mask_w) /* Interrupt enable */ - AM_RANGE(0x1500, 0x1500) AM_WRITE(soundlatch_byte_w) + AM_RANGE(0x1500, 0x1500) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) AM_RANGE(0x1600, 0x1600) AM_READ_PORT("DSW2") AM_RANGE(0x1680, 0x1680) AM_READ_PORT("SYSTEM") AM_RANGE(0x1681, 0x1681) AM_READ_PORT("P1_P2") @@ -61,7 +62,7 @@ static ADDRESS_MAP_START( roadf_map, AS_PROGRAM, 8, hyperspt_state ) AM_RANGE(0x1481, 0x1481) AM_DEVWRITE("trackfld_audio", trackfld_audio_device, konami_sh_irqtrigger_w) /* cause interrupt on audio CPU */ AM_RANGE(0x1483, 0x1484) AM_WRITE(hyperspt_coin_counter_w) AM_RANGE(0x1487, 0x1487) AM_WRITE(irq_mask_w) /* Interrupt enable */ - AM_RANGE(0x1500, 0x1500) AM_WRITE(soundlatch_byte_w) + AM_RANGE(0x1500, 0x1500) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) AM_RANGE(0x1600, 0x1600) AM_READ_PORT("DSW2") AM_RANGE(0x1680, 0x1680) AM_READ_PORT("SYSTEM") AM_RANGE(0x1681, 0x1681) AM_READ_PORT("P1") @@ -77,7 +78,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, hyperspt_state ) AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x4000, 0x4fff) AM_RAM - AM_RANGE(0x6000, 0x6000) AM_READ(soundlatch_byte_r) + AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(0x8000, 0x8000) AM_DEVREAD("trackfld_audio", trackfld_audio_device, hyperspt_sh_timer_r) AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("vlm", vlm5030_device, data_w) /* speech data */ AM_RANGE(0xc000, 0xdfff) AM_DEVWRITE("trackfld_audio", trackfld_audio_device, hyperspt_sound_w) /* speech and output control */ @@ -89,7 +90,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( roadf_sound_map, AS_PROGRAM, 8, hyperspt_state ) AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x4000, 0x4fff) AM_RAM - AM_RANGE(0x6000, 0x6000) AM_READ(soundlatch_byte_r) + AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(0x8000, 0x8000) AM_DEVREAD("trackfld_audio", trackfld_audio_device, hyperspt_sh_timer_r) AM_RANGE(0xa000, 0xa000) AM_NOP // No VLM AM_RANGE(0xc000, 0xdfff) AM_NOP // No VLM @@ -101,7 +102,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( soundb_map, AS_PROGRAM, 8, hyperspt_state ) AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x4000, 0x4fff) AM_RAM - AM_RANGE(0x6000, 0x6000) AM_READ(soundlatch_byte_r) + AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(0x8000, 0x8000) AM_DEVREAD("trackfld_audio", trackfld_audio_device, hyperspt_sh_timer_r) AM_RANGE(0xa000, 0xa000) AM_NOP AM_RANGE(0xc000, 0xdfff) AM_DEVWRITE("hyprolyb_adpcm", hyprolyb_adpcm_device, write) /* speech and output control */ @@ -321,6 +322,8 @@ static MACHINE_CONFIG_START( hyperspt, hyperspt_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_SOUND_ADD("trackfld_audio", TRACKFLD_AUDIO, 0) MCFG_DAC_ADD("dac") diff --git a/src/mame/drivers/ironhors.cpp b/src/mame/drivers/ironhors.cpp index 0d5ea8c8c38..3289e1b7e83 100644 --- a/src/mame/drivers/ironhors.cpp +++ b/src/mame/drivers/ironhors.cpp @@ -65,7 +65,7 @@ static ADDRESS_MAP_START( master_map, AS_PROGRAM, 8, ironhors_state ) AM_RANGE(0x0020, 0x003f) AM_RAM AM_SHARE("scroll") AM_RANGE(0x0040, 0x005f) AM_RAM AM_RANGE(0x0060, 0x00df) AM_RAM - AM_RANGE(0x0800, 0x0800) AM_WRITE(soundlatch_byte_w) + AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) AM_RANGE(0x0900, 0x0900) AM_READ_PORT("DSW3") AM_WRITE(sh_irqtrigger_w) AM_RANGE(0x0a00, 0x0a00) AM_READ_PORT("DSW2") AM_WRITE(palettebank_w) AM_RANGE(0x0b00, 0x0b00) AM_READ_PORT("DSW1") AM_WRITE(flipscreen_w) @@ -88,7 +88,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( slave_map, AS_PROGRAM, 8, ironhors_state ) AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x4000, 0x43ff) AM_RAM - AM_RANGE(0x8000, 0x8000) AM_READ(soundlatch_byte_r) + AM_RANGE(0x8000, 0x8000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) ADDRESS_MAP_END static ADDRESS_MAP_START( slave_io_map, AS_IO, 8, ironhors_state ) @@ -104,7 +104,7 @@ static ADDRESS_MAP_START( farwest_master_map, AS_PROGRAM, 8, ironhors_state ) AM_RANGE(0x31db, 0x31fa) AM_RAM AM_SHARE("scroll") AM_RANGE(0x0040, 0x005f) AM_RAM AM_RANGE(0x0060, 0x00ff) AM_RAM - AM_RANGE(0x0800, 0x0800) AM_WRITE(soundlatch_byte_w) + AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) AM_RANGE(0x0900, 0x0900) /*AM_READ_PORT("DSW3") */AM_WRITE(sh_irqtrigger_w) AM_RANGE(0x0a00, 0x0a00) AM_READ_PORT("DSW2") //AM_WRITE(palettebank_w) AM_RANGE(0x0b00, 0x0b00) AM_READ_PORT("DSW1") AM_WRITE(flipscreen_w) @@ -385,6 +385,8 @@ static MACHINE_CONFIG_START( ironhors, ironhors_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_SOUND_ADD("ym2203", YM2203, 18432000/6) MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(ironhors_state, filter_w)) @@ -417,7 +419,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(ironhors_state::farwest_irq) READ8_MEMBER(ironhors_state::farwest_soundlatch_r) { - return soundlatch_byte_r(m_soundcpu->space(AS_PROGRAM), 0); + return m_soundlatch->read(m_soundcpu->space(AS_PROGRAM), 0); } static MACHINE_CONFIG_DERIVED( farwest, ironhors ) diff --git a/src/mame/drivers/junofrst.cpp b/src/mame/drivers/junofrst.cpp index 498599dd144..af23aeba49b 100644 --- a/src/mame/drivers/junofrst.cpp +++ b/src/mame/drivers/junofrst.cpp @@ -83,6 +83,7 @@ Blitter source graphics #include "cpu/m6809/m6809.h" #include "cpu/mcs48/mcs48.h" #include "cpu/z80/z80.h" +#include "machine/gen_latch.h" #include "machine/watchdog.h" #include "sound/ay8910.h" #include "sound/dac.h" @@ -304,7 +305,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, junofrst_state ) AM_RANGE(0x8033, 0x8033) AM_WRITEONLY AM_SHARE("scroll") /* not used in Juno */ AM_RANGE(0x8034, 0x8035) AM_WRITE(flip_screen_w) AM_RANGE(0x8040, 0x8040) AM_WRITE(sh_irqtrigger_w) - AM_RANGE(0x8050, 0x8050) AM_WRITE(soundlatch_byte_w) + AM_RANGE(0x8050, 0x8050) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) AM_RANGE(0x8060, 0x8060) AM_WRITE(bankselect_w) AM_RANGE(0x8070, 0x8073) AM_WRITE(blitter_w) AM_RANGE(0x8100, 0x8fff) AM_RAM @@ -316,11 +317,11 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( audio_map, AS_PROGRAM, 8, junofrst_state ) AM_RANGE(0x0000, 0x0fff) AM_ROM AM_RANGE(0x2000, 0x23ff) AM_RAM - AM_RANGE(0x3000, 0x3000) AM_READ(soundlatch_byte_r) + AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("aysnd", ay8910_device, address_w) AM_RANGE(0x4001, 0x4001) AM_DEVREAD("aysnd", ay8910_device, data_r) AM_RANGE(0x4002, 0x4002) AM_DEVWRITE("aysnd", ay8910_device, data_w) - AM_RANGE(0x5000, 0x5000) AM_WRITE(soundlatch2_byte_w) + AM_RANGE(0x5000, 0x5000) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) AM_RANGE(0x6000, 0x6000) AM_WRITE(i8039_irq_w) ADDRESS_MAP_END @@ -331,7 +332,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( mcu_io_map, AS_IO, 8, junofrst_state ) - AM_RANGE(0x00, 0xff) AM_READ(soundlatch2_byte_r) + AM_RANGE(0x00, 0xff) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_DEVWRITE("dac", dac_device, write_unsigned8) AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(i8039_irqen_and_status_w) ADDRESS_MAP_END @@ -440,6 +441,9 @@ static MACHINE_CONFIG_START( junofrst, junofrst_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_GENERIC_LATCH_8_ADD("soundlatch2") + MCFG_SOUND_ADD("aysnd", AY8910, 14318000/8) MCFG_AY8910_PORT_A_READ_CB(READ8(junofrst_state, portA_r)) MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(junofrst_state, portB_w)) diff --git a/src/mame/drivers/kaneko16.cpp b/src/mame/drivers/kaneko16.cpp index 48fc27f4184..568e625ca37 100644 --- a/src/mame/drivers/kaneko16.cpp +++ b/src/mame/drivers/kaneko16.cpp @@ -102,7 +102,6 @@ Non-Bugs (happen on real PCB) #include "includes/kaneko16.h" #include "machine/watchdog.h" #include "sound/2151intf.h" -#include "sound/okim6295.h" #include "machine/kaneko_hit.h" @@ -162,7 +161,7 @@ WRITE16_MEMBER(kaneko16_state::kaneko16_soundlatch_w) { if (ACCESSING_BITS_8_15) { - soundlatch_byte_w(space, 0, (data & 0xff00) >> 8 ); + m_soundlatch->write(space, 0, (data & 0xff00) >> 8 ); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); } } @@ -769,7 +768,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( blazeon_soundport, AS_IO, 8, kaneko16_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x06, 0x06) AM_READ(soundlatch_byte_r) + AM_RANGE(0x06, 0x06) AM_DEVREAD("soundlatch", generic_latch_8_device, read) ADDRESS_MAP_END /*************************************************************************** @@ -788,7 +787,7 @@ static ADDRESS_MAP_START( wingforc_soundport, AS_IO, 8, kaneko16_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) // AM_RANGE(0x00, 0x00) // 02 written at boot AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x06, 0x06) AM_READ(soundlatch_byte_r) + AM_RANGE(0x06, 0x06) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(0x0a, 0x0a) AM_DEVREADWRITE("oki", okim6295_device, read, write) AM_RANGE(0x0c, 0x0c) AM_WRITE(wingforc_oki_bank_w) ADDRESS_MAP_END @@ -2036,6 +2035,8 @@ static MACHINE_CONFIG_START( blazeon, kaneko16_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_YM2151_ADD("ymsnd", 4000000) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -2088,6 +2089,8 @@ static MACHINE_CONFIG_START( wingforc, kaneko16_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_YM2151_ADD("ymsnd", XTAL_16MHz/4) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.4) diff --git a/src/mame/drivers/lethal.cpp b/src/mame/drivers/lethal.cpp index bd834f9fd94..86594d4309a 100644 --- a/src/mame/drivers/lethal.cpp +++ b/src/mame/drivers/lethal.cpp @@ -250,6 +250,7 @@ maybe some sprite placement issues #include "cpu/m6809/m6809.h" #include "cpu/m6809/hd6309.h" #include "cpu/z80/z80.h" +#include "machine/gen_latch.h" #include "machine/eepromser.h" #include "sound/k054539.h" #include "includes/lethal.h" @@ -287,11 +288,6 @@ INTERRUPT_GEN_MEMBER(lethal_state::lethalen_interrupt) device.execute().set_input_line(HD6309_IRQ_LINE, HOLD_LINE); } -WRITE8_MEMBER(lethal_state::sound_cmd_w) -{ - soundlatch_byte_w(space, 0, data); -} - WRITE8_MEMBER(lethal_state::sound_irq_w) { m_soundcpu->set_input_line(0, HOLD_LINE); @@ -364,7 +360,7 @@ static ADDRESS_MAP_START( bank4000_map, AS_PROGRAM, 8, lethal_state ) // VRD = 0 or 1, CBNK = 0 AM_RANGE(0x0840, 0x084f) AM_MIRROR(0x8000) AM_DEVREADWRITE("k053244", k05324x_device, k053244_r, k053244_w) AM_RANGE(0x0880, 0x089f) AM_MIRROR(0x8000) AM_DEVREADWRITE("k054000", k054000_device, read, write) - AM_RANGE(0x08c6, 0x08c6) AM_MIRROR(0x8000) AM_WRITE(sound_cmd_w) + AM_RANGE(0x08c6, 0x08c6) AM_MIRROR(0x8000) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) //cmd_w AM_RANGE(0x08c7, 0x08c7) AM_MIRROR(0x8000) AM_WRITE(sound_irq_w) AM_RANGE(0x08ca, 0x08ca) AM_MIRROR(0x8000) AM_READ(sound_status_r) AM_RANGE(0x1000, 0x17ff) AM_MIRROR(0x8000) AM_DEVREADWRITE("k053244", k05324x_device, k053245_r, k053245_w) @@ -386,8 +382,8 @@ static ADDRESS_MAP_START( le_sound, AS_PROGRAM, 8, lethal_state ) AM_RANGE(0x0000, 0xefff) AM_ROM AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_RANGE(0xf800, 0xfa2f) AM_DEVREADWRITE("k054539", k054539_device, read, write) - AM_RANGE(0xfc00, 0xfc00) AM_WRITE(soundlatch2_byte_w) - AM_RANGE(0xfc02, 0xfc02) AM_READ(soundlatch_byte_r) + AM_RANGE(0xfc00, 0xfc00) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) + AM_RANGE(0xfc02, 0xfc02) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(0xfc03, 0xfc03) AM_READNOP ADDRESS_MAP_END @@ -538,6 +534,9 @@ static MACHINE_CONFIG_START( lethalen, lethal_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_GENERIC_LATCH_8_ADD("soundlatch2") + MCFG_DEVICE_ADD("k054539", K054539, XTAL_18_432MHz) MCFG_K054539_TIMER_HANDLER(INPUTLINE("soundcpu", INPUT_LINE_NMI)) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) diff --git a/src/mame/drivers/mainevt.cpp b/src/mame/drivers/mainevt.cpp index c0c9df9ff43..df053833820 100644 --- a/src/mame/drivers/mainevt.cpp +++ b/src/mame/drivers/mainevt.cpp @@ -26,6 +26,7 @@ Notes: #include "cpu/z80/z80.h" #include "cpu/m6809/hd6309.h" #include "cpu/m6809/m6809.h" +#include "machine/gen_latch.h" #include "sound/2151intf.h" #include "includes/konamipt.h" #include "includes/mainevt.h" @@ -152,7 +153,7 @@ WRITE8_MEMBER(mainevt_state::k052109_051960_w) static ADDRESS_MAP_START( mainevt_map, AS_PROGRAM, 8, mainevt_state ) AM_RANGE(0x1f80, 0x1f80) AM_WRITE(mainevt_bankswitch_w) - AM_RANGE(0x1f84, 0x1f84) AM_WRITE(soundlatch_byte_w) /* probably */ + AM_RANGE(0x1f84, 0x1f84) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* probably */ AM_RANGE(0x1f88, 0x1f88) AM_WRITE(mainevt_sh_irqtrigger_w) /* probably */ AM_RANGE(0x1f8c, 0x1f8d) AM_WRITENOP /* ??? */ AM_RANGE(0x1f90, 0x1f90) AM_WRITE(mainevt_coin_w) /* coin counters + lamps */ @@ -177,7 +178,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( devstors_map, AS_PROGRAM, 8, mainevt_state ) AM_RANGE(0x1f80, 0x1f80) AM_WRITE(mainevt_bankswitch_w) - AM_RANGE(0x1f84, 0x1f84) AM_WRITE(soundlatch_byte_w) /* probably */ + AM_RANGE(0x1f84, 0x1f84) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* probably */ AM_RANGE(0x1f88, 0x1f88) AM_WRITE(mainevt_sh_irqtrigger_w) /* probably */ AM_RANGE(0x1f90, 0x1f90) AM_WRITE(mainevt_coin_w) /* coin counters + lamps */ AM_RANGE(0x1fb2, 0x1fb2) AM_WRITE(dv_nmienable_w) @@ -203,7 +204,7 @@ static ADDRESS_MAP_START( mainevt_sound_map, AS_PROGRAM, 8, mainevt_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0x83ff) AM_RAM AM_RANGE(0x9000, 0x9000) AM_DEVWRITE("upd", upd7759_device, port_w) - AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r) + AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write) AM_RANGE(0xd000, 0xd000) AM_READ(mainevt_sh_busy_r) AM_RANGE(0xe000, 0xe000) AM_WRITE(mainevt_sh_irqcontrol_w) @@ -213,7 +214,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( devstors_sound_map, AS_PROGRAM, 8, mainevt_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0x83ff) AM_RAM - AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r) + AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write) AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write) AM_RANGE(0xe000, 0xe000) AM_WRITE(devstor_sh_irqcontrol_w) @@ -438,6 +439,8 @@ static MACHINE_CONFIG_START( mainevt, mainevt_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_SOUND_ADD("k007232", K007232, 3579545) MCFG_K007232_PORT_WRITE_HANDLER(WRITE8(mainevt_state, volume_callback)) MCFG_SOUND_ROUTE(0, "mono", 0.20) @@ -486,6 +489,8 @@ static MACHINE_CONFIG_START( devstors, mainevt_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_YM2151_ADD("ymsnd", 3579545) MCFG_SOUND_ROUTE(0, "mono", 0.30) MCFG_SOUND_ROUTE(1, "mono", 0.30) diff --git a/src/mame/drivers/megasys1.cpp b/src/mame/drivers/megasys1.cpp index 707c3628dcb..c2ab5bbd87a 100644 --- a/src/mame/drivers/megasys1.cpp +++ b/src/mame/drivers/megasys1.cpp @@ -188,7 +188,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(megasys1_state::megasys1A_iganinju_scanline) int scanline = param; // TODO: there's more than one hint that MCU controls IRQ signals via work RAM buffers. - // This is a bare miminum guessing for this specific game, it definitely don't like neither lv 1 nor 2. + // This is a bare minimum guessing for this specific game, it definitely don't like neither lv 1 nor 2. // Of course MCU is probably doing a lot more to mask and probably set a specific line too. if(m_ram[0] == 0) return; @@ -197,14 +197,13 @@ TIMER_DEVICE_CALLBACK_MEMBER(megasys1_state::megasys1A_iganinju_scanline) m_maincpu->set_input_line(2, HOLD_LINE); } -static ADDRESS_MAP_START( megasys1A_map, AS_PROGRAM, 16, megasys1_state ) +static ADDRESS_MAP_START( megasys1Z_map, AS_PROGRAM, 16, megasys1_state ) ADDRESS_MAP_GLOBAL_MASK(0xfffff) AM_RANGE(0x000000, 0x05ffff) AM_ROM AM_RANGE(0x080000, 0x080001) AM_READ_PORT("SYSTEM") AM_RANGE(0x080002, 0x080003) AM_READ_PORT("P1") AM_RANGE(0x080004, 0x080005) AM_READ_PORT("P2") AM_RANGE(0x080006, 0x080007) AM_READ_PORT("DSW") - AM_RANGE(0x080008, 0x080009) AM_READ(soundlatch2_word_r) /* from sound cpu */ AM_RANGE(0x084000, 0x0843ff) AM_RAM_WRITE(megasys1_vregs_A_w) AM_SHARE("vregs") AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") AM_RANGE(0x08e000, 0x08ffff) AM_RAM AM_SHARE("objectram") @@ -214,6 +213,11 @@ static ADDRESS_MAP_START( megasys1A_map, AS_PROGRAM, 16, megasys1_state ) AM_RANGE(0x0f0000, 0x0fffff) AM_RAM_WRITE(ms1_ram_w) AM_SHARE("ram") ADDRESS_MAP_END +static ADDRESS_MAP_START( megasys1A_map, AS_PROGRAM, 16, megasys1_state ) + ADDRESS_MAP_GLOBAL_MASK(0xfffff) + AM_IMPORT_FROM(megasys1Z_map) + AM_RANGE(0x080008, 0x080009) AM_DEVREAD("soundlatch2", generic_latch_16_device, read) /* from sound cpu */ +ADDRESS_MAP_END /*************************************************************************** [ Main CPU - System B ] @@ -448,8 +452,8 @@ READ8_MEMBER(megasys1_state::oki_status_2_r) static ADDRESS_MAP_START( megasys1A_sound_map, AS_PROGRAM, 16, megasys1_state ) AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x040000, 0x040001) AM_READ(soundlatch_word_r) - AM_RANGE(0x060000, 0x060001) AM_WRITE(soundlatch2_word_w) // to main cpu + AM_RANGE(0x040000, 0x040001) AM_DEVREAD("soundlatch", generic_latch_16_device, read) + AM_RANGE(0x060000, 0x060001) AM_DEVWRITE("soundlatch2", generic_latch_16_device, write) // to main cpu AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff) AM_RANGE(0x0a0000, 0x0a0001) AM_READ8(oki_status_1_r, 0x00ff) AM_RANGE(0x0a0000, 0x0a0003) AM_DEVWRITE8("oki1", okim6295_device, write, 0x00ff) @@ -466,8 +470,8 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( megasys1B_sound_map, AS_PROGRAM, 16, megasys1_state ) AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x040000, 0x040001) AM_READWRITE(soundlatch_word_r,soundlatch2_word_w) /* from/to main cpu */ - AM_RANGE(0x060000, 0x060001) AM_READWRITE(soundlatch_word_r,soundlatch2_word_w) /* from/to main cpu */ + AM_RANGE(0x040000, 0x040001) AM_DEVREAD("soundlatch", generic_latch_16_device, read) AM_DEVWRITE("soundlatch2", generic_latch_16_device, write) /* from/to main cpu */ + AM_RANGE(0x060000, 0x060001) AM_DEVREAD("soundlatch", generic_latch_16_device, read) AM_DEVWRITE("soundlatch2", generic_latch_16_device, write) /* from/to main cpu */ AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff) AM_RANGE(0x0a0000, 0x0a0001) AM_READ8(oki_status_1_r, 0x00ff) AM_RANGE(0x0a0000, 0x0a0003) AM_DEVWRITE8("oki1", okim6295_device, write, 0x00ff) @@ -486,7 +490,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( z80_sound_map, AS_PROGRAM, 8, megasys1_state ) AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch_byte_r) + AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch_z", generic_latch_8_device, read) AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ?? */ ADDRESS_MAP_END @@ -1526,6 +1530,9 @@ static MACHINE_CONFIG_START( system_A, megasys1_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + MCFG_GENERIC_LATCH_16_ADD("soundlatch") + MCFG_GENERIC_LATCH_16_ADD("soundlatch2") + MCFG_YM2151_ADD("ymsnd", SOUND_CPU_CLOCK/2) /* 3.5MHz (7MHz / 2) verified */ MCFG_YM2151_IRQ_HANDLER(WRITELINE(megasys1_state,sound_irq)) MCFG_SOUND_ROUTE(0, "lspeaker", 0.80) @@ -1686,16 +1693,11 @@ MACHINE_CONFIG_END ***************************************************************************/ -WRITE_LINE_MEMBER(megasys1_state::irqhandler) -{ - m_audiocpu->set_input_line(0, state ? ASSERT_LINE : CLEAR_LINE); -} - static MACHINE_CONFIG_START( system_Z, megasys1_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, SYS_A_CPU_CLOCK) /* 6MHz (12MHz / 2) */ - MCFG_CPU_PROGRAM_MAP(megasys1A_map) + MCFG_CPU_PROGRAM_MAP(megasys1Z_map) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", megasys1_state, megasys1A_scanline, "screen", 0, 1) MCFG_CPU_ADD("audiocpu", Z80, 3000000) /* OSC 12MHz divided by 4 ??? */ @@ -1720,8 +1722,10 @@ static MACHINE_CONFIG_START( system_Z, megasys1_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch_z") + MCFG_SOUND_ADD("ymsnd", YM2203, 1500000) - MCFG_YM2203_IRQ_HANDLER(WRITELINE(megasys1_state, irqhandler)) + MCFG_YM2203_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END @@ -4156,7 +4160,6 @@ READ16_MEMBER(megasys1_state::edfbl_input_r) DRIVER_INIT_MEMBER(megasys1_state,edfbl) { m_maincpu->space(AS_PROGRAM).install_read_handler(0xe0000, 0xe000f, read16_delegate(FUNC(megasys1_state::edfbl_input_r),this)); - //m_maincpu->space(AS_PROGRAM).install_legacy_write_handler(*m_oki1, 0xe000e, 0xe000f, FUNC(soundlatch_byte_w)); } DRIVER_INIT_MEMBER(megasys1_state,hayaosi1) diff --git a/src/mame/drivers/megazone.cpp b/src/mame/drivers/megazone.cpp index f21dcc38daf..a41aa788cf0 100644 --- a/src/mame/drivers/megazone.cpp +++ b/src/mame/drivers/megazone.cpp @@ -13,6 +13,7 @@ To enter service mode, keep 1&2 pressed on reset #include "cpu/m6809/m6809.h" #include "cpu/mcs48/mcs48.h" #include "cpu/z80/z80.h" +#include "machine/gen_latch.h" #include "machine/watchdog.h" #include "sound/ay8910.h" #include "sound/dac.h" @@ -100,7 +101,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( megazone_sound_map, AS_PROGRAM, 8, megazone_state ) AM_RANGE(0x0000, 0x1fff) AM_ROM AM_RANGE(0x2000, 0x2000) AM_WRITE(megazone_i8039_irq_w) /* START line. Interrupts 8039 */ - AM_RANGE(0x4000, 0x4000) AM_WRITE(soundlatch_byte_w) /* CODE line. Command Interrupts 8039 */ + AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* CODE line. Command Interrupts 8039 */ AM_RANGE(0x6000, 0x6000) AM_READ_PORT("IN0") /* IO Coin */ AM_RANGE(0x6001, 0x6001) AM_READ_PORT("IN1") /* P1 IO */ AM_RANGE(0x6002, 0x6002) AM_READ_PORT("IN2") /* P2 IO */ @@ -124,7 +125,7 @@ static ADDRESS_MAP_START( megazone_i8039_map, AS_PROGRAM, 8, megazone_state ) ADDRESS_MAP_END static ADDRESS_MAP_START( megazone_i8039_io_map, AS_IO, 8, megazone_state ) - AM_RANGE(0x00, 0xff) AM_READ(soundlatch_byte_r) + AM_RANGE(0x00, 0xff) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_DEVWRITE("dac", dac_device, write_unsigned8) AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(i8039_irqen_and_status_w) ADDRESS_MAP_END @@ -269,6 +270,8 @@ static MACHINE_CONFIG_START( megazone, megazone_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_SOUND_ADD("aysnd", AY8910, 14318000/8) MCFG_AY8910_PORT_A_READ_CB(READ8(megazone_state, megazone_port_a_r)) MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(megazone_state, megazone_port_b_w)) @@ -507,12 +510,8 @@ ROM_START( megazonec ) ROM_END -DRIVER_INIT_MEMBER(megazone_state,megazone) -{ -} - -GAME( 1983, megazone, 0, megazone, megazone, megazone_state, megazone, ROT90, "Konami", "Mega Zone (Konami set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, megazonea, megazone, megazone, megazona, megazone_state, megazone, ROT90, "Konami", "Mega Zone (Konami set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, megazoneb, megazone, megazone, megazone, megazone_state, megazone, ROT90, "Konami (Kosuka license)", "Mega Zone (Kosuka set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, megazonec, megazone, megazone, megazone, megazone_state, megazone, ROT90, "Konami (Kosuka license)", "Mega Zone (Kosuka set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, megazonei, megazone, megazone, megazone, megazone_state, megazone, ROT90, "Konami (Interlogic license)", "Mega Zone (Interlogic)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, megazone, 0, megazone, megazone, driver_device, 0, ROT90, "Konami", "Mega Zone (Konami set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, megazonea, megazone, megazone, megazona, driver_device, 0, ROT90, "Konami", "Mega Zone (Konami set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, megazoneb, megazone, megazone, megazone, driver_device, 0, ROT90, "Konami (Kosuka license)", "Mega Zone (Kosuka set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, megazonec, megazone, megazone, megazone, driver_device, 0, ROT90, "Konami (Kosuka license)", "Mega Zone (Kosuka set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, megazonei, megazone, megazone, megazone, driver_device, 0, ROT90, "Konami (Interlogic license)", "Mega Zone (Interlogic)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/mikie.cpp b/src/mame/drivers/mikie.cpp index 4083f7fb398..2790065e854 100644 --- a/src/mame/drivers/mikie.cpp +++ b/src/mame/drivers/mikie.cpp @@ -41,6 +41,7 @@ Stephh's notes (based on the games M6809 code and some tests) : #include "emu.h" #include "cpu/z80/z80.h" #include "cpu/m6809/m6809.h" +#include "machine/gen_latch.h" #include "machine/watchdog.h" #include "sound/sn76496.h" #include "includes/konamipt.h" @@ -103,7 +104,7 @@ static ADDRESS_MAP_START( mikie_map, AS_PROGRAM, 8, mikie_state ) AM_RANGE(0x2100, 0x2100) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) AM_RANGE(0x2200, 0x2200) AM_WRITE(mikie_palettebank_w) AM_RANGE(0x2300, 0x2300) AM_WRITENOP // ??? - AM_RANGE(0x2400, 0x2400) AM_READ_PORT("SYSTEM") AM_WRITE(soundlatch_byte_w) + AM_RANGE(0x2400, 0x2400) AM_READ_PORT("SYSTEM") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) AM_RANGE(0x2401, 0x2401) AM_READ_PORT("P1") AM_RANGE(0x2402, 0x2402) AM_READ_PORT("P2") AM_RANGE(0x2403, 0x2403) AM_READ_PORT("DSW3") @@ -123,7 +124,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, mikie_state ) AM_RANGE(0x8000, 0x8000) AM_WRITENOP // sound command latch AM_RANGE(0x8001, 0x8001) AM_WRITENOP // ??? AM_RANGE(0x8002, 0x8002) AM_DEVWRITE("sn1", sn76489a_device, write) // trigger read of latch - AM_RANGE(0x8003, 0x8003) AM_READ(soundlatch_byte_r) + AM_RANGE(0x8003, 0x8003) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(0x8004, 0x8004) AM_DEVWRITE("sn2", sn76489a_device, write) // trigger read of latch AM_RANGE(0x8005, 0x8005) AM_READ(mikie_sh_timer_r) AM_RANGE(0x8079, 0x8079) AM_WRITENOP // ??? @@ -278,6 +279,8 @@ static MACHINE_CONFIG_START( mikie, mikie_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_SOUND_ADD("sn1", SN76489A, XTAL/8) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) diff --git a/src/mame/drivers/moo.cpp b/src/mame/drivers/moo.cpp index da3d3960e43..f1e05fff9e0 100644 --- a/src/mame/drivers/moo.cpp +++ b/src/mame/drivers/moo.cpp @@ -224,14 +224,14 @@ WRITE16_MEMBER(moo_state::sound_cmd1_w) if ((data & 0x00ff0000) == 0) { data &= 0xff; - soundlatch_byte_w(space, 0, data); + m_soundlatch->write(space, 0, data); } } WRITE16_MEMBER(moo_state::sound_cmd2_w) { if ((data & 0x00ff0000) == 0) - soundlatch2_byte_w(space, 0, data & 0xff); + m_soundlatch2->write(space, 0, data & 0xff); } WRITE16_MEMBER(moo_state::sound_irq_w) @@ -241,7 +241,7 @@ WRITE16_MEMBER(moo_state::sound_irq_w) READ16_MEMBER(moo_state::sound_status_r) { - return soundlatch3_byte_r(space, 0); + return m_soundlatch3->read(space, 0); } WRITE8_MEMBER(moo_state::sound_bankswitch_w) @@ -425,9 +425,9 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, moo_state ) AM_RANGE(0xc000, 0xdfff) AM_RAM AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("k054539", k054539_device, read, write) AM_RANGE(0xec00, 0xec01) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write) - AM_RANGE(0xf000, 0xf000) AM_WRITE(soundlatch3_byte_w) - AM_RANGE(0xf002, 0xf002) AM_READ(soundlatch_byte_r) - AM_RANGE(0xf003, 0xf003) AM_READ(soundlatch2_byte_r) + AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("soundlatch3", generic_latch_8_device, write) + AM_RANGE(0xf002, 0xf002) AM_DEVREAD("soundlatch", generic_latch_8_device, read) + AM_RANGE(0xf003, 0xf003) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) AM_RANGE(0xf800, 0xf800) AM_WRITE(sound_bankswitch_w) ADDRESS_MAP_END @@ -567,6 +567,10 @@ static MACHINE_CONFIG_START( moo, moo_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_GENERIC_LATCH_8_ADD("soundlatch2") + MCFG_GENERIC_LATCH_8_ADD("soundlatch3") + MCFG_YM2151_ADD("ymsnd", XTAL_32MHz/8) // 4MHz verified MCFG_SOUND_ROUTE(0, "lspeaker", 0.50) MCFG_SOUND_ROUTE(1, "rspeaker", 0.50) diff --git a/src/mame/drivers/mystwarr.cpp b/src/mame/drivers/mystwarr.cpp index 04c66269da1..869035e065a 100644 --- a/src/mame/drivers/mystwarr.cpp +++ b/src/mame/drivers/mystwarr.cpp @@ -206,23 +206,23 @@ INTERRUPT_GEN_MEMBER(mystwarr_state::ddd_interrupt) WRITE16_MEMBER(mystwarr_state::sound_cmd1_w) { - soundlatch_byte_w(space, 0, data&0xff); + m_soundlatch->write(space, 0, data&0xff); } WRITE16_MEMBER(mystwarr_state::sound_cmd1_msb_w) { - soundlatch_byte_w(space, 0, data>>8); + m_soundlatch->write(space, 0, data>>8); } WRITE16_MEMBER(mystwarr_state::sound_cmd2_w) { - soundlatch2_byte_w(space, 0, data&0xff); + m_soundlatch2->write(space, 0, data&0xff); return; } WRITE16_MEMBER(mystwarr_state::sound_cmd2_msb_w) { - soundlatch2_byte_w(space, 0, data>>8); + m_soundlatch2->write(space, 0, data>>8); return; } @@ -233,7 +233,7 @@ WRITE16_MEMBER(mystwarr_state::sound_irq_w) READ16_MEMBER(mystwarr_state::sound_status_r) { - int latch = soundlatch3_byte_r(space,0); + int latch = m_soundlatch3->read(space,0); if ((latch & 0xf) == 0xe) latch |= 1; @@ -242,7 +242,7 @@ READ16_MEMBER(mystwarr_state::sound_status_r) READ16_MEMBER(mystwarr_state::sound_status_msb_r) { - int latch = soundlatch3_byte_r(space,0); + int latch = m_soundlatch3->read(space,0); if ((latch & 0xf) == 0xe) latch |= 1; @@ -575,9 +575,9 @@ static ADDRESS_MAP_START( mystwarr_sound_map, AS_PROGRAM, 8, mystwarr_state ) AM_RANGE(0xe230, 0xe3ff) AM_RAM AM_RANGE(0xe400, 0xe62f) AM_DEVREADWRITE("k054539_2", k054539_device, read, write) AM_RANGE(0xe630, 0xe7ff) AM_RAM - AM_RANGE(0xf000, 0xf000) AM_WRITE(soundlatch3_byte_w) - AM_RANGE(0xf002, 0xf002) AM_READ(soundlatch_byte_r) - AM_RANGE(0xf003, 0xf003) AM_READ(soundlatch2_byte_r) + AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("soundlatch3", generic_latch_8_device, write) + AM_RANGE(0xf002, 0xf002) AM_DEVREAD("soundlatch", generic_latch_8_device, read) + AM_RANGE(0xf003, 0xf003) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) AM_RANGE(0xf800, 0xf800) AM_WRITE(sound_ctrl_w) AM_RANGE(0xfff0, 0xfff3) AM_WRITENOP // unknown write ADDRESS_MAP_END @@ -974,6 +974,10 @@ static MACHINE_CONFIG_START( mystwarr, mystwarr_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_GENERIC_LATCH_8_ADD("soundlatch2") + MCFG_GENERIC_LATCH_8_ADD("soundlatch3") + MCFG_DEVICE_ADD("k054539_1", K054539, XTAL_18_432MHz) MCFG_K054539_REGION_OVERRRIDE("shared") MCFG_K054539_TIMER_HANDLER(WRITELINE(mystwarr_state, k054539_nmi_gen)) diff --git a/src/mame/drivers/nemesis.cpp b/src/mame/drivers/nemesis.cpp index 22de66cda54..f76f2f92c33 100644 --- a/src/mame/drivers/nemesis.cpp +++ b/src/mame/drivers/nemesis.cpp @@ -34,7 +34,7 @@ modified by Hau modified by hap 06/09/2012 - Special thx 2 Neusneus, Audrey Tautou, my water bottle, chair, sleepyness + Special thx 2 Neusneus, Audrey Tautou, my water bottle, chair, sleepiness Notes: - blkpnthr: @@ -51,6 +51,7 @@ So this is the correct behavior of real hardware, not an emulation bug. #include "emu.h" #include "cpu/m68000/m68000.h" #include "cpu/z80/z80.h" +#include "machine/gen_latch.h" #include "machine/watchdog.h" #include "sound/ay8910.h" #include "sound/2151intf.h" @@ -275,7 +276,7 @@ static ADDRESS_MAP_START( nemesis_map, AS_PROGRAM, 16, nemesis_state ) AM_RANGE(0x055000, 0x055fff) AM_RAM_WRITE(nemesis_colorram2_word_w) AM_SHARE("colorram2") AM_RANGE(0x056000, 0x056fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x05a000, 0x05afff) AM_RAM_WRITE(nemesis_palette_word_w) AM_SHARE("paletteram") - AM_RANGE(0x05c000, 0x05c001) AM_WRITE8(soundlatch_byte_w, 0x00ff) + AM_RANGE(0x05c000, 0x05c001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) AM_RANGE(0x05c400, 0x05c401) AM_READ_PORT("DSW0") AM_RANGE(0x05c402, 0x05c403) AM_READ_PORT("DSW1") AM_RANGE(0x05c800, 0x05c801) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* probably */ @@ -309,7 +310,7 @@ static ADDRESS_MAP_START( gx400_map, AS_PROGRAM, 16, nemesis_state ) AM_RANGE(0x056000, 0x056fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x057000, 0x057fff) AM_RAM /* needed for twinbee */ AM_RANGE(0x05a000, 0x05afff) AM_RAM_WRITE(nemesis_palette_word_w) AM_SHARE("paletteram") - AM_RANGE(0x05c000, 0x05c001) AM_WRITE8(soundlatch_byte_w, 0x00ff) + AM_RANGE(0x05c000, 0x05c001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) AM_RANGE(0x05c402, 0x05c403) AM_READ_PORT("DSW0") AM_RANGE(0x05c404, 0x05c405) AM_READ_PORT("DSW1") AM_RANGE(0x05c406, 0x05c407) AM_READ_PORT("TEST") @@ -341,7 +342,7 @@ static ADDRESS_MAP_START( konamigt_map, AS_PROGRAM, 16, nemesis_state ) AM_RANGE(0x055000, 0x055fff) AM_RAM_WRITE(nemesis_colorram2_word_w) AM_SHARE("colorram2") AM_RANGE(0x056000, 0x056fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x05a000, 0x05afff) AM_RAM_WRITE(nemesis_palette_word_w) AM_SHARE("paletteram") - AM_RANGE(0x05c000, 0x05c001) AM_WRITE8(soundlatch_byte_w, 0x00ff) + AM_RANGE(0x05c000, 0x05c001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) AM_RANGE(0x05c400, 0x05c401) AM_READ_PORT("DSW0") AM_RANGE(0x05c402, 0x05c403) AM_READ_PORT("DSW1") AM_RANGE(0x05c800, 0x05c801) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* probably */ @@ -375,7 +376,7 @@ static ADDRESS_MAP_START( rf2_gx400_map, AS_PROGRAM, 16, nemesis_state ) AM_RANGE(0x055000, 0x055fff) AM_RAM_WRITE(nemesis_colorram2_word_w) AM_SHARE("colorram2") AM_RANGE(0x056000, 0x056fff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x05a000, 0x05afff) AM_RAM_WRITE(nemesis_palette_word_w) AM_SHARE("paletteram") - AM_RANGE(0x05c000, 0x05c001) AM_WRITE8(soundlatch_byte_w, 0x00ff) + AM_RANGE(0x05c000, 0x05c001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) AM_RANGE(0x05c402, 0x05c403) AM_READ_PORT("DSW0") AM_RANGE(0x05c404, 0x05c405) AM_READ_PORT("DSW1") AM_RANGE(0x05c406, 0x05c407) AM_READ_PORT("TEST") @@ -400,7 +401,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, nemesis_state ) AM_RANGE(0x4000, 0x47ff) AM_RAM AM_RANGE(0xa000, 0xafff) AM_DEVWRITE("k005289", k005289_device, ld1_w) AM_RANGE(0xc000, 0xcfff) AM_DEVWRITE("k005289", k005289_device, ld2_w) - AM_RANGE(0xe001, 0xe001) AM_READ(soundlatch_byte_r) + AM_RANGE(0xe001, 0xe001) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(0xe003, 0xe003) AM_DEVWRITE("k005289", k005289_device, tg1_w) AM_RANGE(0xe004, 0xe004) AM_DEVWRITE("k005289", k005289_device, tg2_w) AM_RANGE(0xe005, 0xe005) AM_DEVWRITE("ay2", ay8910_device, address_w) @@ -419,7 +420,7 @@ static ADDRESS_MAP_START( gx400_sound_map, AS_PROGRAM, 8, nemesis_state ) AM_RANGE(0xa000, 0xafff) AM_DEVWRITE("k005289", k005289_device, ld1_w) AM_RANGE(0xc000, 0xcfff) AM_DEVWRITE("k005289", k005289_device, ld2_w) AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("vlm", vlm5030_device, data_w) - AM_RANGE(0xe001, 0xe001) AM_READ(soundlatch_byte_r) + AM_RANGE(0xe001, 0xe001) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(0xe003, 0xe003) AM_DEVWRITE("k005289", k005289_device, tg1_w) AM_RANGE(0xe004, 0xe004) AM_DEVWRITE("k005289", k005289_device, tg2_w) AM_RANGE(0xe005, 0xe005) AM_DEVWRITE("ay2", ay8910_device, address_w) @@ -439,7 +440,7 @@ static ADDRESS_MAP_START( salamand_map, AS_PROGRAM, 16, nemesis_state ) AM_RANGE(0x080000, 0x087fff) AM_RAM AM_RANGE(0x090000, 0x091fff) AM_DEVREADWRITE8("palette", palette_device, read, write, 0x00ff) AM_SHARE("palette") AM_RANGE(0x0a0000, 0x0a0001) AM_WRITE(salamand_control_port_word_w) /* irq enable, flipscreen, etc. */ - AM_RANGE(0x0c0000, 0x0c0001) AM_WRITE8(soundlatch_byte_w, 0x00ff) + AM_RANGE(0x0c0000, 0x0c0001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("DSW0") AM_RANGE(0x0c0004, 0x0c0005) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* probably */ AM_RANGE(0x0c2000, 0x0c2001) AM_READ_PORT("IN0") /* Coins, start buttons, test mode */ @@ -464,7 +465,7 @@ static ADDRESS_MAP_START( blkpnthr_map, AS_PROGRAM, 16, nemesis_state ) AM_RANGE(0x080000, 0x081fff) AM_DEVREADWRITE8("palette", palette_device, read, write, 0x00ff) AM_SHARE("palette") AM_RANGE(0x090000, 0x097fff) AM_RAM AM_RANGE(0x0a0000, 0x0a0001) AM_RAM_WRITE(salamand_control_port_word_w) /* irq enable, flipscreen, etc. */ - AM_RANGE(0x0c0000, 0x0c0001) AM_WRITE8(soundlatch_byte_w, 0x00ff) + AM_RANGE(0x0c0000, 0x0c0001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("DSW0") AM_RANGE(0x0c0004, 0x0c0005) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* probably */ AM_RANGE(0x0c2000, 0x0c2001) AM_READ_PORT("IN0") /* Coins, start buttons, test mode */ @@ -493,7 +494,7 @@ static ADDRESS_MAP_START( citybomb_map, AS_PROGRAM, 16, nemesis_state ) AM_RANGE(0x0f0004, 0x0f0005) AM_READ_PORT("IN1") AM_RANGE(0x0f0006, 0x0f0007) AM_READ_PORT("IN0") /* Coins, start buttons, test mode */ AM_RANGE(0x0f0008, 0x0f0009) AM_READ_PORT("DSW0") - AM_RANGE(0x0f0010, 0x0f0011) AM_WRITE8(soundlatch_byte_w, 0x00ff) + AM_RANGE(0x0f0010, 0x0f0011) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) AM_RANGE(0x0f0018, 0x0f0019) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* probably */ AM_RANGE(0x0f0020, 0x0f0021) AM_READ(selected_ip_word_r) AM_WRITENOP /* WEC Le Mans 24 control? */ AM_RANGE(0x0f8000, 0x0f8001) AM_WRITE(salamand_control_port_word_w) /* irq enable, flipscreen, etc. */ @@ -520,7 +521,7 @@ static ADDRESS_MAP_START( nyanpani_map, AS_PROGRAM, 16, nemesis_state ) AM_RANGE(0x070004, 0x070005) AM_READ_PORT("IN1") AM_RANGE(0x070006, 0x070007) AM_READ_PORT("IN0") /* Coins, start buttons, test mode */ AM_RANGE(0x070008, 0x070009) AM_READ_PORT("DSW0") - AM_RANGE(0x070010, 0x070011) AM_WRITE8(soundlatch_byte_w, 0x00ff) + AM_RANGE(0x070010, 0x070011) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) AM_RANGE(0x070018, 0x070019) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* probably */ AM_RANGE(0x078000, 0x078001) AM_WRITE(salamand_control_port_word_w) /* irq enable, flipscreen, etc. */ AM_RANGE(0x100000, 0x13ffff) AM_ROM @@ -546,7 +547,7 @@ READ8_MEMBER(nemesis_state::wd_r) static ADDRESS_MAP_START( sal_sound_map, AS_PROGRAM, 8, nemesis_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r) + AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write) AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("vlm", vlm5030_device, data_w) @@ -557,7 +558,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( blkpnthr_sound_map, AS_PROGRAM, 8, nemesis_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r) + AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write) AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) AM_RANGE(0xe000, 0xe000) AM_READ(wd_r) /* watchdog?? */ @@ -574,7 +575,7 @@ static ADDRESS_MAP_START( city_sound_map, AS_PROGRAM, 8, nemesis_state ) AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write) AM_RANGE(0xc000, 0xc000) AM_WRITE(city_sound_bank_w) /* 7232 bankswitch */ - AM_RANGE(0xd000, 0xd000) AM_READ(soundlatch_byte_r) + AM_RANGE(0xd000, 0xd000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) ADDRESS_MAP_END /******************************************************************************/ @@ -585,7 +586,7 @@ static ADDRESS_MAP_START( hcrash_map, AS_PROGRAM, 16, nemesis_state ) AM_RANGE(0x080000, 0x083fff) AM_RAM AM_RANGE(0x090000, 0x091fff) AM_DEVREADWRITE8("palette", palette_device, read, write, 0x00ff) AM_SHARE("palette") AM_RANGE(0x0a0000, 0x0a0001) AM_WRITE(salamand_control_port_word_w) /* irq enable, flipscreen, etc. */ - AM_RANGE(0x0c0000, 0x0c0001) AM_WRITE8(soundlatch_byte_w, 0x00ff) + AM_RANGE(0x0c0000, 0x0c0001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("DSW0") AM_RANGE(0x0c0004, 0x0c0005) AM_READ_PORT("DSW1") AM_RANGE(0x0c0006, 0x0c0007) AM_READ_PORT("TEST") @@ -1499,6 +1500,8 @@ static MACHINE_CONFIG_START( nemesis, nemesis_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_SOUND_ADD("ay1", AY8910, 14318180/8) MCFG_AY8910_OUTPUT_TYPE(AY8910_LEGACY_OUTPUT | AY8910_SINGLE_OUTPUT) MCFG_AY8910_PORT_A_READ_CB(READ8(nemesis_state, nemesis_portA_r)) @@ -1554,6 +1557,8 @@ static MACHINE_CONFIG_START( gx400, nemesis_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_SOUND_ADD("ay1", AY8910, 14318180/8) MCFG_AY8910_OUTPUT_TYPE(AY8910_LEGACY_OUTPUT | AY8910_SINGLE_OUTPUT) MCFG_AY8910_PORT_A_READ_CB(READ8(nemesis_state, nemesis_portA_r)) @@ -1611,6 +1616,8 @@ static MACHINE_CONFIG_START( konamigt, nemesis_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_SOUND_ADD("ay1", AY8910, 14318180/8) MCFG_AY8910_OUTPUT_TYPE(AY8910_LEGACY_OUTPUT | AY8910_SINGLE_OUTPUT) MCFG_AY8910_PORT_A_READ_CB(READ8(nemesis_state, nemesis_portA_r)) @@ -1666,6 +1673,8 @@ static MACHINE_CONFIG_START( rf2_gx400, nemesis_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_SOUND_ADD("ay1", AY8910, 14318180/8) MCFG_AY8910_OUTPUT_TYPE(AY8910_LEGACY_OUTPUT | AY8910_SINGLE_OUTPUT) MCFG_AY8910_PORT_A_READ_CB(READ8(nemesis_state, nemesis_portA_r)) @@ -1725,6 +1734,8 @@ static MACHINE_CONFIG_START( salamand, nemesis_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_SOUND_ADD("vlm", VLM5030, 3579545) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 2.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 2.50) @@ -1773,6 +1784,8 @@ static MACHINE_CONFIG_START( blkpnthr, nemesis_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_SOUND_ADD("k007232", K007232, 3579545) MCFG_K007232_PORT_WRITE_HANDLER(WRITE8(nemesis_state, volume_callback)) MCFG_SOUND_ROUTE(0, "lspeaker", 0.10) @@ -1817,6 +1830,8 @@ static MACHINE_CONFIG_START( citybomb, nemesis_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_SOUND_ADD("k007232", K007232, 3579545) MCFG_K007232_PORT_WRITE_HANDLER(WRITE8(nemesis_state, volume_callback)) MCFG_SOUND_ROUTE(0, "lspeaker", 0.30) @@ -1865,6 +1880,8 @@ static MACHINE_CONFIG_START( nyanpani, nemesis_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_SOUND_ADD("k007232", K007232, 3579545) MCFG_K007232_PORT_WRITE_HANDLER(WRITE8(nemesis_state, volume_callback)) MCFG_SOUND_ROUTE(0, "lspeaker", 0.30) @@ -1912,6 +1929,8 @@ static MACHINE_CONFIG_START( hcrash, nemesis_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_SOUND_ADD("vlm", VLM5030, 3579545) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.60) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.60) @@ -2666,6 +2685,8 @@ static MACHINE_CONFIG_START( bubsys, nemesis_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_SOUND_ADD("ay1", AY8910, 14318180/8) MCFG_AY8910_OUTPUT_TYPE(AY8910_LEGACY_OUTPUT | AY8910_SINGLE_OUTPUT) MCFG_AY8910_PORT_A_READ_CB(READ8(nemesis_state, nemesis_portA_r)) diff --git a/src/mame/drivers/pandoras.cpp b/src/mame/drivers/pandoras.cpp index aa286568be0..7836ad8662d 100644 --- a/src/mame/drivers/pandoras.cpp +++ b/src/mame/drivers/pandoras.cpp @@ -27,6 +27,7 @@ Boards: #include "cpu/m6809/m6809.h" #include "cpu/z80/z80.h" #include "cpu/mcs48/mcs48.h" +#include "machine/gen_latch.h" #include "machine/watchdog.h" #include "sound/ay8910.h" #include "sound/dac.h" @@ -131,7 +132,7 @@ static ADDRESS_MAP_START( pandoras_master_map, AS_PROGRAM, 8, pandoras_state ) AM_RANGE(0x1800, 0x1807) AM_WRITE(pandoras_int_control_w) /* INT control */ AM_RANGE(0x1a00, 0x1a00) AM_WRITE(pandoras_scrolly_w) /* bg scroll */ AM_RANGE(0x1c00, 0x1c00) AM_WRITE(pandoras_z80_irqtrigger_w) /* cause INT on the Z80 */ - AM_RANGE(0x1e00, 0x1e00) AM_WRITE(soundlatch_byte_w) /* sound command to the Z80 */ + AM_RANGE(0x1e00, 0x1e00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* sound command to the Z80 */ AM_RANGE(0x2000, 0x2000) AM_WRITE(pandoras_cpub_irqtrigger_w) /* cause FIRQ on CPU B */ AM_RANGE(0x2001, 0x2001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) /* watchdog reset */ AM_RANGE(0x4000, 0x5fff) AM_ROM /* space for diagnostic ROM */ @@ -160,12 +161,12 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( pandoras_sound_map, AS_PROGRAM, 8, pandoras_state ) AM_RANGE(0x0000, 0x1fff) AM_ROM /* ROM */ AM_RANGE(0x2000, 0x23ff) AM_RAM /* RAM */ - AM_RANGE(0x4000, 0x4000) AM_READ(soundlatch_byte_r) /* soundlatch_byte_r */ + AM_RANGE(0x4000, 0x4000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("aysnd", ay8910_device, address_w) /* AY-8910 */ AM_RANGE(0x6001, 0x6001) AM_DEVREAD("aysnd", ay8910_device, data_r) /* AY-8910 */ AM_RANGE(0x6002, 0x6002) AM_DEVWRITE("aysnd", ay8910_device, data_w) /* AY-8910 */ AM_RANGE(0x8000, 0x8000) AM_WRITE(pandoras_i8039_irqtrigger_w) /* cause INT on the 8039 */ - AM_RANGE(0xa000, 0xa000) AM_WRITE(soundlatch2_byte_w) /* sound command to the 8039 */ + AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) /* sound command to the 8039 */ ADDRESS_MAP_END static ADDRESS_MAP_START( pandoras_i8039_map, AS_PROGRAM, 8, pandoras_state ) @@ -173,7 +174,7 @@ static ADDRESS_MAP_START( pandoras_i8039_map, AS_PROGRAM, 8, pandoras_state ) ADDRESS_MAP_END static ADDRESS_MAP_START( pandoras_i8039_io_map, AS_IO, 8, pandoras_state ) - AM_RANGE(0x00, 0xff) AM_READ(soundlatch2_byte_r) + AM_RANGE(0x00, 0xff) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_DEVWRITE("dac", dac_device, write_unsigned8) AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(i8039_irqen_and_status_w) ADDRESS_MAP_END @@ -357,6 +358,9 @@ static MACHINE_CONFIG_START( pandoras, pandoras_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_GENERIC_LATCH_8_ADD("soundlatch2") + MCFG_SOUND_ADD("aysnd", AY8910, SOUND_CLOCK/8) MCFG_AY8910_PORT_A_READ_CB(READ8(pandoras_state, pandoras_portA_r)) // not used MCFG_AY8910_PORT_B_READ_CB(READ8(pandoras_state, pandoras_portB_r)) diff --git a/src/mame/drivers/plygonet.cpp b/src/mame/drivers/plygonet.cpp index 913efc2ccfc..4feea095396 100644 --- a/src/mame/drivers/plygonet.cpp +++ b/src/mame/drivers/plygonet.cpp @@ -67,9 +67,7 @@ #include "cpu/m68000/m68000.h" #include "cpu/z80/z80.h" -#include "cpu/dsp56k/dsp56k.h" #include "sound/k054539.h" -#include "machine/eepromser.h" #include "machine/watchdog.h" #include "includes/plygonet.h" @@ -144,7 +142,7 @@ READ8_MEMBER(polygonet_state::sound_comms_r) return 0; case 2: - return soundlatch_byte_r(space, 0); + return m_soundlatch->read(space, 0); default: break; @@ -174,11 +172,11 @@ WRITE8_MEMBER(polygonet_state::sound_comms_w) break; case 6: - soundlatch2_byte_w(space, 0, data); + m_soundlatch2->write(space, 0, data); break; case 7: - soundlatch3_byte_w(space, 0, data); + m_soundlatch3->write(space, 0, data); break; default: @@ -532,9 +530,9 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, polygonet_state ) AM_RANGE(0xe230, 0xe3ff) AM_RAM AM_RANGE(0xe400, 0xe62f) AM_READNOP AM_WRITENOP // Second 054539 (not present) AM_RANGE(0xe630, 0xe7ff) AM_RAM - AM_RANGE(0xf000, 0xf000) AM_WRITE(soundlatch_byte_w) - AM_RANGE(0xf002, 0xf002) AM_READ(soundlatch2_byte_r) - AM_RANGE(0xf003, 0xf003) AM_READ(soundlatch3_byte_r) + AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) + AM_RANGE(0xf002, 0xf002) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) + AM_RANGE(0xf003, 0xf003) AM_DEVREAD("soundlatch3", generic_latch_8_device, read) AM_RANGE(0xf800, 0xf800) AM_WRITE(sound_ctrl_w) ADDRESS_MAP_END @@ -640,6 +638,10 @@ static MACHINE_CONFIG_START( plygonet, polygonet_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_GENERIC_LATCH_8_ADD("soundlatch2") + MCFG_GENERIC_LATCH_8_ADD("soundlatch3") + MCFG_DEVICE_ADD("k054539_1", K054539, XTAL_18_432MHz) MCFG_K054539_REGION_OVERRRIDE("shared") MCFG_K054539_TIMER_HANDLER(WRITELINE(polygonet_state, k054539_nmi_gen)) diff --git a/src/mame/drivers/pooyan.cpp b/src/mame/drivers/pooyan.cpp index 5b02066e949..12e69043404 100644 --- a/src/mame/drivers/pooyan.cpp +++ b/src/mame/drivers/pooyan.cpp @@ -12,6 +12,7 @@ #include "emu.h" #include "cpu/z80/z80.h" +#include "machine/gen_latch.h" #include "machine/watchdog.h" #include "audio/timeplt.h" #include "includes/pooyan.h" @@ -61,7 +62,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, pooyan_state ) AM_RANGE(0xa0c0, 0xa0c0) AM_MIRROR(0x5e1f) AM_READ_PORT("IN2") AM_RANGE(0xa0e0, 0xa0e0) AM_MIRROR(0x5e1f) AM_READ_PORT("DSW0") AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x5e7f) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xa100, 0xa100) AM_MIRROR(0x5e7f) AM_WRITE(soundlatch_byte_w) + AM_RANGE(0xa100, 0xa100) AM_MIRROR(0x5e7f) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) AM_RANGE(0xa180, 0xa180) AM_MIRROR(0x5e78) AM_WRITE(irq_enable_w) AM_RANGE(0xa181, 0xa181) AM_MIRROR(0x5e78) AM_DEVWRITE("timeplt_audio", timeplt_audio_device, sh_irqtrigger_w) AM_RANGE(0xa183, 0xa183) AM_MIRROR(0x5e78) AM_WRITENOP // ??? @@ -208,6 +209,9 @@ static MACHINE_CONFIG_START( pooyan, pooyan_state ) MCFG_PALETTE_INIT_OWNER(pooyan_state, pooyan) /* sound hardware */ + + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_FRAGMENT_ADD(timeplt_sound) MACHINE_CONFIG_END diff --git a/src/mame/drivers/rallyx.cpp b/src/mame/drivers/rallyx.cpp index 04984b62d05..0fafe690ce2 100644 --- a/src/mame/drivers/rallyx.cpp +++ b/src/mame/drivers/rallyx.cpp @@ -192,6 +192,7 @@ TODO: #include "emu.h" #include "cpu/z80/z80.h" +#include "machine/gen_latch.h" #include "machine/watchdog.h" #include "sound/samples.h" #include "includes/rallyx.h" @@ -342,7 +343,7 @@ static ADDRESS_MAP_START( jungler_map, AS_PROGRAM, 8, rallyx_state ) AM_RANGE(0xa180, 0xa180) AM_READ_PORT("DSW2") AM_RANGE(0xa000, 0xa00f) AM_MIRROR(0x00f0) AM_WRITEONLY AM_SHARE("radarattr") // jungler writes to a03x AM_RANGE(0xa080, 0xa080) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xa100, 0xa100) AM_WRITE(soundlatch_byte_w) + AM_RANGE(0xa100, 0xa100) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) AM_RANGE(0xa130, 0xa130) AM_WRITE(rallyx_scrollx_w) /* only jungler and tactcian */ AM_RANGE(0xa140, 0xa140) AM_WRITE(rallyx_scrolly_w) /* only jungler and tactcian */ AM_RANGE(0xa180, 0xa187) AM_WRITE(locomotn_latch_w) @@ -910,6 +911,8 @@ static MACHINE_CONFIG_START( jungler, rallyx_state ) MCFG_PALETTE_INIT_OWNER(rallyx_state,jungler) MCFG_VIDEO_START_OVERRIDE(rallyx_state,jungler) + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + /* sound hardware */ MCFG_FRAGMENT_ADD(locomotn_sound) MACHINE_CONFIG_END diff --git a/src/mame/drivers/rockrage.cpp b/src/mame/drivers/rockrage.cpp index ef7260d82e9..706efdddde4 100644 --- a/src/mame/drivers/rockrage.cpp +++ b/src/mame/drivers/rockrage.cpp @@ -78,7 +78,7 @@ WRITE8_MEMBER(rockrage_state::rockrage_bankswitch_w) WRITE8_MEMBER(rockrage_state::rockrage_sh_irqtrigger_w) { - soundlatch_byte_w(space, offset, data); + m_soundlatch->write(space, offset, data); m_audiocpu->set_input_line(M6809_IRQ_LINE, HOLD_LINE); } @@ -118,7 +118,7 @@ static ADDRESS_MAP_START( rockrage_sound_map, AS_PROGRAM, 8, rockrage_state ) AM_RANGE(0x2000, 0x2000) AM_DEVWRITE("vlm", vlm5030_device, data_w) /* VLM5030 */ AM_RANGE(0x3000, 0x3000) AM_READ(rockrage_VLM5030_busy_r) /* VLM5030 */ AM_RANGE(0x4000, 0x4000) AM_WRITE(rockrage_speech_w) /* VLM5030 */ - AM_RANGE(0x5000, 0x5000) AM_READ(soundlatch_byte_r) /* soundlatch_byte_r */ + AM_RANGE(0x5000, 0x5000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(0x6000, 0x6001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write) /* YM 2151 */ AM_RANGE(0x7000, 0x77ff) AM_RAM /* RAM */ AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM */ @@ -278,6 +278,8 @@ static MACHINE_CONFIG_START( rockrage, rockrage_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_YM2151_ADD("ymsnd", 3579545) MCFG_SOUND_ROUTE(0, "lspeaker", 0.60) MCFG_SOUND_ROUTE(1, "rspeaker", 0.60) diff --git a/src/mame/drivers/rocnrope.cpp b/src/mame/drivers/rocnrope.cpp index e950bea570a..5393f2e656b 100644 --- a/src/mame/drivers/rocnrope.cpp +++ b/src/mame/drivers/rocnrope.cpp @@ -11,6 +11,7 @@ #include "emu.h" #include "cpu/m6809/m6809.h" #include "machine/konami1.h" +#include "machine/gen_latch.h" #include "machine/watchdog.h" #include "audio/timeplt.h" #include "includes/konamipt.h" @@ -66,7 +67,7 @@ static ADDRESS_MAP_START( rocnrope_map, AS_PROGRAM, 8, rocnrope_state ) AM_RANGE(0x8083, 0x8083) AM_WRITENOP /* Coin counter 1 */ AM_RANGE(0x8084, 0x8084) AM_WRITENOP /* Coin counter 2 */ AM_RANGE(0x8087, 0x8087) AM_WRITE(irq_mask_w) - AM_RANGE(0x8100, 0x8100) AM_WRITE(soundlatch_byte_w) + AM_RANGE(0x8100, 0x8100) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) AM_RANGE(0x8182, 0x818d) AM_WRITE(rocnrope_interrupt_vector_w) AM_RANGE(0x6000, 0xffff) AM_ROM ADDRESS_MAP_END @@ -221,6 +222,9 @@ static MACHINE_CONFIG_START( rocnrope, rocnrope_state ) MCFG_PALETTE_INIT_OWNER(rocnrope_state, rocnrope) /* sound hardware */ + + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_FRAGMENT_ADD(timeplt_sound) MACHINE_CONFIG_END diff --git a/src/mame/drivers/rungun.cpp b/src/mame/drivers/rungun.cpp index 662cf5f8237..7cddd63714e 100644 --- a/src/mame/drivers/rungun.cpp +++ b/src/mame/drivers/rungun.cpp @@ -134,13 +134,13 @@ WRITE16_MEMBER(rungun_state::rng_sysregs_w) WRITE16_MEMBER(rungun_state::sound_cmd1_w) { if (ACCESSING_BITS_8_15) - soundlatch_byte_w(space, 0, data >> 8); + m_soundlatch->write(space, 0, data >> 8); } WRITE16_MEMBER(rungun_state::sound_cmd2_w) { if (ACCESSING_BITS_8_15) - soundlatch2_byte_w(space, 0, data >> 8); + m_soundlatch2->write(space, 0, data >> 8); } WRITE16_MEMBER(rungun_state::sound_irq_w) @@ -269,8 +269,8 @@ static ADDRESS_MAP_START( rungun_sound_map, AS_PROGRAM, 8, rungun_state ) AM_RANGE(0xe400, 0xe62f) AM_DEVREADWRITE("k054539_2", k054539_device, read, write) AM_RANGE(0xe630, 0xe7ff) AM_RAM AM_RANGE(0xf000, 0xf000) AM_WRITE(sound_status_w) - AM_RANGE(0xf002, 0xf002) AM_READ(soundlatch_byte_r) - AM_RANGE(0xf003, 0xf003) AM_READ(soundlatch2_byte_r) + AM_RANGE(0xf002, 0xf002) AM_DEVREAD("soundlatch", generic_latch_8_device, read) + AM_RANGE(0xf003, 0xf003) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) AM_RANGE(0xf800, 0xf800) AM_WRITE(sound_ctrl_w) AM_RANGE(0xfff0, 0xfff3) AM_WRITENOP ADDRESS_MAP_END @@ -463,6 +463,9 @@ static MACHINE_CONFIG_START( rng, rungun_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_GENERIC_LATCH_8_ADD("soundlatch2") + MCFG_DEVICE_ADD("k054539_1", K054539, XTAL_18_432MHz) MCFG_K054539_REGION_OVERRRIDE("shared") MCFG_K054539_TIMER_HANDLER(WRITELINE(rungun_state, k054539_nmi_gen)) diff --git a/src/mame/drivers/sandscrp.cpp b/src/mame/drivers/sandscrp.cpp index 49ad0c212f0..e06ca1c6e67 100644 --- a/src/mame/drivers/sandscrp.cpp +++ b/src/mame/drivers/sandscrp.cpp @@ -75,6 +75,7 @@ Is there another alt program rom set labeled 9 & 10? #include "emu.h" #include "cpu/z80/z80.h" #include "cpu/m68000/m68000.h" +#include "machine/gen_latch.h" #include "machine/watchdog.h" #include "sound/2203intf.h" #include "sound/2151intf.h" @@ -92,13 +93,17 @@ public: m_maincpu(*this, "maincpu"), m_audiocpu(*this, "audiocpu"), m_pandora(*this, "pandora"), - m_view2_0(*this, "view2_0") + m_view2_0(*this, "view2_0"), + m_soundlatch(*this, "soundlatch"), + m_soundlatch2(*this, "soundlatch2") { } required_device<cpu_device> m_maincpu; required_device<cpu_device> m_audiocpu; required_device<kaneko_pandora_device> m_pandora; - optional_device<kaneko_view2_tilemap_device> m_view2_0; + required_device<kaneko_view2_tilemap_device> m_view2_0; + required_device<generic_latch_8_device> m_soundlatch; + required_device<generic_latch_8_device> m_soundlatch2; UINT8 m_sprite_irq; UINT8 m_unknown_irq; @@ -251,7 +256,7 @@ WRITE16_MEMBER(sandscrp_state::latchstatus_word_w) READ16_MEMBER(sandscrp_state::soundlatch_word_r) { m_latch2_full = 0; - return soundlatch2_byte_r(space,0); + return m_soundlatch2->read(space,0); } WRITE16_MEMBER(sandscrp_state::soundlatch_word_w) @@ -259,7 +264,7 @@ WRITE16_MEMBER(sandscrp_state::soundlatch_word_w) if (ACCESSING_BITS_0_7) { m_latch1_full = 1; - soundlatch_byte_w(space, 0, data & 0xff); + m_soundlatch->write(space, 0, data & 0xff); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); space.device().execute().spin_until_time(attotime::from_usec(100)); // Allow the other cpu to reply } @@ -306,13 +311,13 @@ READ8_MEMBER(sandscrp_state::latchstatus_r) READ8_MEMBER(sandscrp_state::soundlatch_r) { m_latch1_full = 0; - return soundlatch_byte_r(space,0); + return m_soundlatch->read(space,0); } WRITE8_MEMBER(sandscrp_state::soundlatch_w) { m_latch2_full = 1; - soundlatch2_byte_w(space,0,data); + m_soundlatch2->write(space,0,data); } static ADDRESS_MAP_START( sandscrp_soundmem, AS_PROGRAM, 8, sandscrp_state ) @@ -505,6 +510,9 @@ static MACHINE_CONFIG_START( sandscrp, sandscrp_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_GENERIC_LATCH_8_ADD("soundlatch2") + MCFG_OKIM6295_ADD("oki", 12000000/6, OKIM6295_PIN7_HIGH) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5) diff --git a/src/mame/drivers/sbasketb.cpp b/src/mame/drivers/sbasketb.cpp index 5561fe8dabe..8caaaba4c09 100644 --- a/src/mame/drivers/sbasketb.cpp +++ b/src/mame/drivers/sbasketb.cpp @@ -44,6 +44,7 @@ CPU/Video Board Parts: #include "cpu/z80/z80.h" #include "cpu/m6809/m6809.h" #include "sound/dac.h" +#include "machine/gen_latch.h" #include "machine/konami1.h" #include "machine/watchdog.h" #include "includes/konamipt.h" @@ -79,7 +80,7 @@ static ADDRESS_MAP_START( sbasketb_map, AS_PROGRAM, 8, sbasketb_state ) AM_RANGE(0x3c81, 0x3c81) AM_WRITE(irq_mask_w) AM_RANGE(0x3c83, 0x3c84) AM_WRITE(sbasketb_coin_counter_w) AM_RANGE(0x3c85, 0x3c85) AM_WRITEONLY AM_SHARE("spriteramsel") - AM_RANGE(0x3d00, 0x3d00) AM_WRITE(soundlatch_byte_w) + AM_RANGE(0x3d00, 0x3d00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) AM_RANGE(0x3d80, 0x3d80) AM_WRITE(sbasketb_sh_irqtrigger_w) AM_RANGE(0x3e00, 0x3e00) AM_READ_PORT("SYSTEM") AM_RANGE(0x3e01, 0x3e01) AM_READ_PORT("P1") @@ -94,7 +95,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( sbasketb_sound_map, AS_PROGRAM, 8, sbasketb_state ) AM_RANGE(0x0000, 0x1fff) AM_ROM AM_RANGE(0x4000, 0x43ff) AM_RAM - AM_RANGE(0x6000, 0x6000) AM_READ(soundlatch_byte_r) + AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(0x8000, 0x8000) AM_DEVREAD("trackfld_audio", trackfld_audio_device, hyperspt_sh_timer_r) AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("vlm", vlm5030_device, data_w) /* speech data */ AM_RANGE(0xc000, 0xdfff) AM_DEVWRITE("trackfld_audio", trackfld_audio_device, hyperspt_sound_w) /* speech and output controll */ @@ -211,6 +212,8 @@ static MACHINE_CONFIG_START( sbasketb, sbasketb_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_SOUND_ADD("trackfld_audio", TRACKFLD_AUDIO, 0) MCFG_DAC_ADD("dac") diff --git a/src/mame/drivers/scobra.cpp b/src/mame/drivers/scobra.cpp index 5cf4d5d7115..84092439b02 100644 --- a/src/mame/drivers/scobra.cpp +++ b/src/mame/drivers/scobra.cpp @@ -781,7 +781,7 @@ static MACHINE_CONFIG_START( type1, scobra_state ) MCFG_I8255_IN_PORTC_CB(IOPORT("IN2")) MCFG_DEVICE_ADD("ppi8255_1", I8255A, 0) - MCFG_I8255_OUT_PORTA_CB(WRITE8(driver_device, soundlatch_byte_w)) + MCFG_I8255_OUT_PORTA_CB(DEVWRITE8("soundlatch", generic_latch_8_device, write)) MCFG_I8255_OUT_PORTB_CB(WRITE8(scramble_state, scramble_sh_irqtrigger_w)) MCFG_DEVICE_ADD("7474_9m_1", TTL7474, 0) @@ -811,11 +811,14 @@ static MACHINE_CONFIG_START( type1, scobra_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_SOUND_ADD("ay1", AY8910, 14318000/8) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.16) MCFG_SOUND_ADD("ay2", AY8910, 14318000/8) - MCFG_AY8910_PORT_A_READ_CB(READ8(driver_device, soundlatch_byte_r)) + MCFG_AY8910_PORT_A_READ_CB(DEVREAD8("soundlatch", generic_latch_8_device, read)) MCFG_AY8910_PORT_B_READ_CB(READ8(scramble_state, scramble_portB_r)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.16) MACHINE_CONFIG_END @@ -893,7 +896,7 @@ static MACHINE_CONFIG_DERIVED( stratgyx, type2 ) MCFG_DEVICE_REMOVE("ppi8255_1") MCFG_DEVICE_ADD("ppi8255_1", I8255A, 0) - MCFG_I8255_OUT_PORTA_CB(WRITE8(driver_device, soundlatch_byte_w)) + MCFG_I8255_OUT_PORTA_CB(DEVWRITE8("soundlatch", generic_latch_8_device, write)) MCFG_I8255_OUT_PORTB_CB(WRITE8(scramble_state, scramble_sh_irqtrigger_w)) MCFG_I8255_IN_PORTC_CB(IOPORT("IN3")) @@ -951,7 +954,7 @@ static MACHINE_CONFIG_START( hustler, scobra_state ) MCFG_I8255_IN_PORTC_CB(IOPORT("IN2")) MCFG_DEVICE_ADD("ppi8255_1", I8255A, 0) - MCFG_I8255_OUT_PORTA_CB(WRITE8(driver_device, soundlatch_byte_w)) + MCFG_I8255_OUT_PORTA_CB(DEVWRITE8("soundlatch", generic_latch_8_device, write)) MCFG_I8255_OUT_PORTB_CB(WRITE8(scramble_state, scramble_sh_irqtrigger_w)) /* video hardware */ @@ -971,8 +974,9 @@ static MACHINE_CONFIG_START( hustler, scobra_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") MCFG_SOUND_ADD("aysnd", AY8910, 14318000/8) - MCFG_AY8910_PORT_A_READ_CB(READ8(driver_device, soundlatch_byte_r)) + MCFG_AY8910_PORT_A_READ_CB(DEVREAD8("soundlatch", generic_latch_8_device, read)) MCFG_AY8910_PORT_B_READ_CB(READ8(scramble_state, hustler_portB_r)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.33) MACHINE_CONFIG_END diff --git a/src/mame/drivers/scotrsht.cpp b/src/mame/drivers/scotrsht.cpp index 37d18fbf8a2..b28e0888e2d 100644 --- a/src/mame/drivers/scotrsht.cpp +++ b/src/mame/drivers/scotrsht.cpp @@ -56,7 +56,7 @@ INTERRUPT_GEN_MEMBER(scotrsht_state::interrupt) WRITE8_MEMBER(scotrsht_state::soundlatch_w) { - soundlatch_byte_w(space, 0, data); + m_soundlatch->write(space, 0, data); m_audiocpu->set_input_line(0, HOLD_LINE); } @@ -87,7 +87,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( scotrsht_sound_map, AS_PROGRAM, 8, scotrsht_state ) AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x4000, 0x43ff) AM_RAM - AM_RANGE(0x8000, 0x8000) AM_READ(soundlatch_byte_r) + AM_RANGE(0x8000, 0x8000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) ADDRESS_MAP_END static ADDRESS_MAP_START( scotrsht_sound_port, AS_IO, 8, scotrsht_state ) @@ -210,6 +210,8 @@ static MACHINE_CONFIG_START( scotrsht, scotrsht_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_SOUND_ADD("ymsnd", YM2203, 18432000/6) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) MACHINE_CONFIG_END diff --git a/src/mame/drivers/scramble.cpp b/src/mame/drivers/scramble.cpp index c3c1766c022..1f3b1099c4a 100644 --- a/src/mame/drivers/scramble.cpp +++ b/src/mame/drivers/scramble.cpp @@ -34,6 +34,7 @@ Notes: #include "sound/ay8910.h" #include "sound/dac.h" #include "machine/i8255.h" +#include "machine/gen_latch.h" #include "machine/watchdog.h" #include "includes/scramble.h" @@ -241,7 +242,7 @@ static ADDRESS_MAP_START( hotshock_map, AS_PROGRAM, 8, scramble_state ) AM_RANGE(0x6006, 0x6006) AM_WRITE(galaxold_gfxbank_w) AM_RANGE(0x6801, 0x6801) AM_WRITE(galaxold_nmi_enable_w) AM_RANGE(0x7000, 0x7000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x8000, 0x8000) AM_READ_PORT("IN0") AM_WRITE(soundlatch_byte_w) + AM_RANGE(0x8000, 0x8000) AM_READ_PORT("IN0") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) AM_RANGE(0x8001, 0x8001) AM_READ_PORT("IN1") AM_RANGE(0x8002, 0x8002) AM_READ_PORT("IN2") AM_RANGE(0x8003, 0x8003) AM_READ_PORT("IN3") @@ -310,7 +311,7 @@ static ADDRESS_MAP_START( ad2083_map, AS_PROGRAM, 8, scramble_state ) AM_RANGE(0x6805, 0x6805) AM_WRITE(galaxold_coin_counter_1_w) AM_RANGE(0x6806, 0x6806) AM_WRITE(scrambold_background_red_w) AM_RANGE(0x6807, 0x6807) AM_WRITE(scrambold_background_green_w) - AM_RANGE(0x8000, 0x8000) AM_WRITE(soundlatch_byte_w) + AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) AM_RANGE(0x9000, 0x9000) AM_WRITE(hotshock_sh_irqtrigger_w) AM_RANGE(0x7000, 0x7000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_RANGE(0x8000, 0x8000) AM_READ_PORT("IN0") @@ -1399,7 +1400,7 @@ static MACHINE_CONFIG_START( scramble, scramble_state ) MCFG_I8255_IN_PORTC_CB(IOPORT("IN2")) MCFG_DEVICE_ADD("ppi8255_1", I8255A, 0) - MCFG_I8255_OUT_PORTA_CB(WRITE8(driver_device, soundlatch_byte_w)) + MCFG_I8255_OUT_PORTA_CB(DEVWRITE8("soundlatch", generic_latch_8_device, write)) MCFG_I8255_OUT_PORTB_CB(WRITE8(scramble_state, scramble_sh_irqtrigger_w)) /* video hardware */ @@ -1420,11 +1421,13 @@ static MACHINE_CONFIG_START( scramble, scramble_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_SOUND_ADD("8910.1", AY8910, 14318000/8) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.16) MCFG_SOUND_ADD("8910.2", AY8910, 14318000/8) - MCFG_AY8910_PORT_A_READ_CB(READ8(driver_device, soundlatch_byte_r)) + MCFG_AY8910_PORT_A_READ_CB(DEVREAD8("soundlatch", generic_latch_8_device, read)) MCFG_AY8910_PORT_B_READ_CB(READ8(scramble_state, scramble_portB_r)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.16) MACHINE_CONFIG_END @@ -1437,7 +1440,7 @@ static MACHINE_CONFIG_DERIVED( mars, scramble ) MCFG_DEVICE_REMOVE("ppi8255_1") MCFG_DEVICE_ADD("ppi8255_1", I8255A, 0) - MCFG_I8255_OUT_PORTA_CB(WRITE8(driver_device, soundlatch_byte_w)) + MCFG_I8255_OUT_PORTA_CB(DEVWRITE8("soundlatch", generic_latch_8_device, write)) MCFG_I8255_OUT_PORTB_CB(WRITE8(scramble_state, scramble_sh_irqtrigger_w)) MCFG_I8255_IN_PORTC_CB(IOPORT("IN3")) @@ -1483,7 +1486,7 @@ static MACHINE_CONFIG_DERIVED( mrkougar, scramble ) MCFG_DEVICE_REMOVE("ppi8255_1") MCFG_DEVICE_ADD("ppi8255_1", I8255A, 0) - MCFG_I8255_OUT_PORTA_CB(WRITE8(driver_device, soundlatch_byte_w)) + MCFG_I8255_OUT_PORTA_CB(DEVWRITE8("soundlatch", generic_latch_8_device, write)) MCFG_I8255_OUT_PORTB_CB(WRITE8(scramble_state, mrkougar_sh_irqtrigger_w)) /* video hardware */ @@ -1501,7 +1504,7 @@ static MACHINE_CONFIG_DERIVED( mrkougb, scramble ) MCFG_DEVICE_REMOVE("ppi8255_1") MCFG_DEVICE_ADD("ppi8255_1", I8255A, 0) - MCFG_I8255_OUT_PORTA_CB(WRITE8(driver_device, soundlatch_byte_w)) + MCFG_I8255_OUT_PORTA_CB(DEVWRITE8("soundlatch", generic_latch_8_device, write)) MCFG_I8255_OUT_PORTB_CB(WRITE8(scramble_state, mrkougar_sh_irqtrigger_w)) /* video hardware */ diff --git a/src/mame/drivers/spy.cpp b/src/mame/drivers/spy.cpp index 9f924626d7d..ea0ab417e67 100644 --- a/src/mame/drivers/spy.cpp +++ b/src/mame/drivers/spy.cpp @@ -22,6 +22,7 @@ #include "emu.h" #include "cpu/z80/z80.h" #include "cpu/m6809/m6809.h" +#include "machine/gen_latch.h" #include "machine/watchdog.h" #include "sound/3812intf.h" #include "includes/konamipt.h" @@ -376,7 +377,7 @@ static ADDRESS_MAP_START( spy_map, AS_PROGRAM, 8, spy_state ) AM_RANGE(0x3f80, 0x3f80) AM_WRITE(bankswitch_w) AM_RANGE(0x3f90, 0x3f90) AM_WRITE(spy_3f90_w) AM_RANGE(0x3fa0, 0x3fa0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x3fb0, 0x3fb0) AM_WRITE(soundlatch_byte_w) + AM_RANGE(0x3fb0, 0x3fb0) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) AM_RANGE(0x3fc0, 0x3fc0) AM_WRITE(spy_sh_irqtrigger_w) AM_RANGE(0x3fd0, 0x3fd0) AM_READ_PORT("SYSTEM") AM_RANGE(0x3fd1, 0x3fd1) AM_READ_PORT("P1") @@ -395,7 +396,7 @@ static ADDRESS_MAP_START( spy_sound_map, AS_PROGRAM, 8, spy_state ) AM_RANGE(0xa000, 0xa00d) AM_DEVREADWRITE("k007232_1", k007232_device, read, write) AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232_2", k007232_device, read, write) AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) - AM_RANGE(0xd000, 0xd000) AM_READ(soundlatch_byte_r) + AM_RANGE(0xd000, 0xd000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) ADDRESS_MAP_END @@ -525,6 +526,8 @@ static MACHINE_CONFIG_START( spy, spy_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_SOUND_ADD("ymsnd", YM3812, 3579545) MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_NMI)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) diff --git a/src/mame/drivers/thunderx.cpp b/src/mame/drivers/thunderx.cpp index 7c34f74d280..42e78c0a8a1 100644 --- a/src/mame/drivers/thunderx.cpp +++ b/src/mame/drivers/thunderx.cpp @@ -35,6 +35,7 @@ #include "emu.h" #include "cpu/z80/z80.h" #include "cpu/m6809/konami.h" /* for the callback and the firq irq definition */ +#include "machine/gen_latch.h" #include "machine/watchdog.h" #include "sound/2151intf.h" #include "includes/konamipt.h" @@ -401,7 +402,7 @@ WRITE8_MEMBER(thunderx_state::k052109_051960_w) static ADDRESS_MAP_START( scontra_map, AS_PROGRAM, 8, thunderx_state ) AM_RANGE(0x1f80, 0x1f80) AM_WRITE(scontra_bankswitch_w) /* bankswitch control + coin counters */ - AM_RANGE(0x1f84, 0x1f84) AM_WRITE(soundlatch_byte_w) + AM_RANGE(0x1f84, 0x1f84) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) AM_RANGE(0x1f88, 0x1f88) AM_WRITE(sh_irqtrigger_w) /* cause interrupt on audio CPU */ AM_RANGE(0x1f8c, 0x1f8c) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) AM_RANGE(0x1f90, 0x1f90) AM_READ_PORT("SYSTEM") @@ -446,7 +447,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( thunderx_sound_map, AS_PROGRAM, 8, thunderx_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r) + AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) ADDRESS_MAP_END @@ -671,6 +672,8 @@ static MACHINE_CONFIG_START( scontra, thunderx_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) /* verified on pcb */ MCFG_SOUND_ROUTE(0, "mono", 1.0) MCFG_SOUND_ROUTE(1, "mono", 1.0) diff --git a/src/mame/drivers/timeplt.cpp b/src/mame/drivers/timeplt.cpp index 13116e7a807..1d95775f1d2 100644 --- a/src/mame/drivers/timeplt.cpp +++ b/src/mame/drivers/timeplt.cpp @@ -49,6 +49,7 @@ #include "emu.h" #include "cpu/z80/z80.h" +#include "machine/gen_latch.h" #include "machine/watchdog.h" #include "includes/konamipt.h" #include "audio/timeplt.h" @@ -131,7 +132,7 @@ static ADDRESS_MAP_START( common_main_map, AS_PROGRAM, 8, timeplt_state ) AM_RANGE(0xa800, 0xafff) AM_RAM AM_RANGE(0xb000, 0xb0ff) AM_MIRROR(0x0b00) AM_RAM AM_SHARE("spriteram") AM_RANGE(0xb400, 0xb4ff) AM_MIRROR(0x0b00) AM_RAM AM_SHARE("spriteram2") - AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x0cff) AM_READ(scanline_r) AM_WRITE(soundlatch_byte_w) + AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x0cff) AM_READ(scanline_r) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) AM_RANGE(0xc200, 0xc200) AM_MIRROR(0x0cff) AM_READ_PORT("DSW1") AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) AM_RANGE(0xc300, 0xc300) AM_MIRROR(0x0c9f) AM_READ_PORT("IN0") AM_RANGE(0xc302, 0xc302) AM_MIRROR(0x0cf1) AM_WRITE(flipscreen_w) @@ -445,6 +446,9 @@ static MACHINE_CONFIG_START( timeplt, timeplt_state ) MCFG_PALETTE_INIT_OWNER(timeplt_state, timeplt) /* sound hardware */ + + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_FRAGMENT_ADD(timeplt_sound) MACHINE_CONFIG_END diff --git a/src/mame/drivers/tmnt.cpp b/src/mame/drivers/tmnt.cpp index 935b44e335a..6fa6ad463e3 100644 --- a/src/mame/drivers/tmnt.cpp +++ b/src/mame/drivers/tmnt.cpp @@ -62,6 +62,7 @@ Updates: #include "sound/okim6295.h" #include "sound/samples.h" #include "sound/k054539.h" +#include "machine/gen_latch.h" #include "machine/nvram.h" #include "machine/watchdog.h" #include "includes/tmnt.h" @@ -494,7 +495,7 @@ static ADDRESS_MAP_START( mia_main_map, AS_PROGRAM, 16, tmnt_state ) AM_RANGE(0x0a0000, 0x0a0001) AM_READ_PORT("COINS") AM_WRITE(tmnt_0a0000_w) AM_RANGE(0x0a0002, 0x0a0003) AM_READ_PORT("P1") AM_RANGE(0x0a0004, 0x0a0005) AM_READ_PORT("P2") - AM_RANGE(0x0a0008, 0x0a0009) AM_WRITE8(soundlatch_byte_w, 0x00ff) + AM_RANGE(0x0a0008, 0x0a0009) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) AM_RANGE(0x0a0010, 0x0a0011) AM_READ_PORT("DSW1") AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) AM_RANGE(0x0a0012, 0x0a0013) AM_READ_PORT("DSW2") AM_RANGE(0x0a0018, 0x0a0019) AM_READ_PORT("DSW3") @@ -516,7 +517,7 @@ static ADDRESS_MAP_START( tmnt_main_map, AS_PROGRAM, 16, tmnt_state ) AM_RANGE(0x0a0002, 0x0a0003) AM_READ_PORT("P1") AM_RANGE(0x0a0004, 0x0a0005) AM_READ_PORT("P2") AM_RANGE(0x0a0006, 0x0a0007) AM_READ_PORT("P3") - AM_RANGE(0x0a0008, 0x0a0009) AM_WRITE8(soundlatch_byte_w, 0x00ff) + AM_RANGE(0x0a0008, 0x0a0009) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) AM_RANGE(0x0a0010, 0x0a0011) AM_READ_PORT("DSW1") AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) AM_RANGE(0x0a0012, 0x0a0013) AM_READ_PORT("DSW2") AM_RANGE(0x0a0014, 0x0a0015) AM_READ_PORT("P4") @@ -653,9 +654,9 @@ static ADDRESS_MAP_START( prmrsocr_main_map, AS_PROGRAM, 16, tmnt_state ) AM_RANGE(0x11c000, 0x11c01f) AM_WRITE(k053251_glfgreat_w) AM_RANGE(0x120000, 0x120001) AM_READ_PORT("P1/COINS") AM_RANGE(0x120002, 0x120003) AM_READ_PORT("P2/EEPROM") - AM_RANGE(0x12100c, 0x12100d) AM_WRITE8(soundlatch_byte_w, 0x00ff) - AM_RANGE(0x12100e, 0x12100f) AM_WRITE8(soundlatch2_byte_w, 0x00ff) - AM_RANGE(0x121014, 0x121015) AM_READ8(soundlatch3_byte_r, 0x00ff) + AM_RANGE(0x12100c, 0x12100d) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) + AM_RANGE(0x12100e, 0x12100f) AM_DEVWRITE8("soundlatch2", generic_latch_8_device, write, 0x00ff) + AM_RANGE(0x121014, 0x121015) AM_DEVREAD8("soundlatch3", generic_latch_8_device, read, 0x00ff) AM_RANGE(0x122000, 0x122001) AM_WRITE(prmrsocr_eeprom_w) /* EEPROM + video control */ AM_RANGE(0x123000, 0x123001) AM_WRITE(prmrsocr_sound_irq_w) AM_RANGE(0x200000, 0x207fff) AM_READWRITE(k052109_word_noA12_r, k052109_word_noA12_w) @@ -997,7 +998,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( mia_audio_map, AS_PROGRAM, 8, tmnt_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r) + AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write) AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) ADDRESS_MAP_END @@ -1007,7 +1008,7 @@ static ADDRESS_MAP_START( tmnt_audio_map, AS_PROGRAM, 8, tmnt_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0x87ff) AM_RAM AM_RANGE(0x9000, 0x9000) AM_READWRITE(tmnt_sres_r, tmnt_sres_w) /* title music & UPD7759C reset */ - AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r) + AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write) AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("upd", upd7759_device, port_w) @@ -1075,9 +1076,9 @@ static ADDRESS_MAP_START( prmrsocr_audio_map, AS_PROGRAM, 8, tmnt_state ) AM_RANGE(0xc000, 0xdfff) AM_RAM AM_RANGE(0xe000, 0xe0ff) AM_DEVREADWRITE("k054539", k054539_device, read, write) AM_RANGE(0xe100, 0xe12f) AM_READWRITE(k054539_ctrl_r, k054539_ctrl_w) - AM_RANGE(0xf000, 0xf000) AM_WRITE(soundlatch3_byte_w) - AM_RANGE(0xf002, 0xf002) AM_READ(soundlatch_byte_r) - AM_RANGE(0xf003, 0xf003) AM_READ(soundlatch2_byte_r) + AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("soundlatch3", generic_latch_8_device, write) + AM_RANGE(0xf002, 0xf002) AM_DEVREAD("soundlatch", generic_latch_8_device, read) + AM_RANGE(0xf003, 0xf003) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) AM_RANGE(0xf800, 0xf800) AM_WRITE(prmrsocr_audio_bankswitch_w) ADDRESS_MAP_END @@ -2054,6 +2055,8 @@ static MACHINE_CONFIG_START( mia, tmnt_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) MCFG_SOUND_ROUTE(0, "mono", 1.0) MCFG_SOUND_ROUTE(1, "mono", 1.0) @@ -2119,6 +2122,8 @@ static MACHINE_CONFIG_START( tmnt, tmnt_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) MCFG_SOUND_ROUTE(0, "mono", 1.0) MCFG_SOUND_ROUTE(1, "mono", 1.0) @@ -2446,6 +2451,10 @@ static MACHINE_CONFIG_START( prmrsocr, tmnt_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_GENERIC_LATCH_8_ADD("soundlatch2") + MCFG_GENERIC_LATCH_8_ADD("soundlatch3") + MCFG_DEVICE_ADD("k054539", K054539, XTAL_18_432MHz) MCFG_K054539_TIMER_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_NMI)) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) diff --git a/src/mame/drivers/tp84.cpp b/src/mame/drivers/tp84.cpp index 06464035fc4..cd1cb1905ff 100644 --- a/src/mame/drivers/tp84.cpp +++ b/src/mame/drivers/tp84.cpp @@ -66,6 +66,7 @@ C004 76489 #4 trigger #include "emu.h" #include "cpu/z80/z80.h" #include "cpu/m6809/m6809.h" +#include "machine/gen_latch.h" #include "machine/watchdog.h" #include "sound/sn76496.h" #include "sound/flt_rc.h" @@ -133,7 +134,7 @@ static ADDRESS_MAP_START( tp84_cpu1_map, AS_PROGRAM, 8, tp84_state ) AM_RANGE(0x3004, 0x3004) AM_WRITEONLY AM_SHARE("flipscreen_x") AM_RANGE(0x3005, 0x3005) AM_WRITEONLY AM_SHARE("flipscreen_y") AM_RANGE(0x3800, 0x3800) AM_WRITE(tp84_sh_irqtrigger_w) - AM_RANGE(0x3a00, 0x3a00) AM_WRITE(soundlatch_byte_w) + AM_RANGE(0x3a00, 0x3a00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) AM_RANGE(0x3c00, 0x3c00) AM_WRITEONLY AM_SHARE("scroll_x") AM_RANGE(0x3e00, 0x3e00) AM_WRITEONLY AM_SHARE("scroll_y") AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("bg_videoram") @@ -159,7 +160,7 @@ static ADDRESS_MAP_START( tp84b_cpu1_map, AS_PROGRAM, 8, tp84_state ) AM_RANGE(0x1c04, 0x1c04) AM_WRITEONLY AM_SHARE("flipscreen_x") AM_RANGE(0x1c05, 0x1c05) AM_WRITEONLY AM_SHARE("flipscreen_y") AM_RANGE(0x1e00, 0x1e00) AM_WRITE(tp84_sh_irqtrigger_w) - AM_RANGE(0x1e80, 0x1e80) AM_WRITE(soundlatch_byte_w) + AM_RANGE(0x1e80, 0x1e80) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) AM_RANGE(0x1f00, 0x1f00) AM_WRITEONLY AM_SHARE("scroll_x") AM_RANGE(0x1f80, 0x1f80) AM_WRITEONLY AM_SHARE("scroll_y") AM_RANGE(0x8000, 0xffff) AM_ROM @@ -186,7 +187,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( audio_map, AS_PROGRAM, 8, tp84_state ) AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x4000, 0x43ff) AM_RAM - AM_RANGE(0x6000, 0x6000) AM_READ(soundlatch_byte_r) + AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(0x8000, 0x8000) AM_READ(tp84_sh_timer_r) AM_RANGE(0xa000, 0xa1ff) AM_WRITE(tp84_filter_w) AM_RANGE(0xc000, 0xc000) AM_WRITENOP @@ -319,6 +320,8 @@ static MACHINE_CONFIG_START( tp84, tp84_state ) /* audio hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_SOUND_ADD("y2404_1", Y2404, XTAL_14_31818MHz/8) /* verified on pcb */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "filter1", 0.75) diff --git a/src/mame/drivers/trackfld.cpp b/src/mame/drivers/trackfld.cpp index 9395956077b..2767f24530e 100644 --- a/src/mame/drivers/trackfld.cpp +++ b/src/mame/drivers/trackfld.cpp @@ -231,7 +231,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, trackfld_state ) AM_RANGE(0x1085, 0x1085) AM_MIRROR(0x0078) AM_WRITENOP /* CN3.2 */ AM_RANGE(0x1086, 0x1086) AM_MIRROR(0x0078) AM_WRITENOP /* CN3.4 */ AM_RANGE(0x1087, 0x1087) AM_MIRROR(0x0078) AM_WRITE(irq_mask_w) /* INT */ - AM_RANGE(0x1100, 0x1100) AM_MIRROR(0x007f) AM_WRITE(soundlatch_byte_w) /* 32 */ + AM_RANGE(0x1100, 0x1100) AM_MIRROR(0x007f) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* 32 */ AM_RANGE(0x1200, 0x1200) AM_MIRROR(0x007f) AM_READ_PORT("DSW2") AM_RANGE(0x1280, 0x1280) AM_MIRROR(0x007c) AM_READ_PORT("SYSTEM") AM_RANGE(0x1281, 0x1281) AM_MIRROR(0x007c) AM_READ_PORT("IN0") @@ -284,7 +284,7 @@ static ADDRESS_MAP_START( yieartf_map, AS_PROGRAM, 8, trackfld_state ) AM_RANGE(0x1085, 0x1085) AM_MIRROR(0x0078) AM_WRITENOP /* CN3.2 */ AM_RANGE(0x1086, 0x1086) AM_MIRROR(0x0078) AM_WRITENOP /* CN3.4 */ AM_RANGE(0x1087, 0x1087) AM_MIRROR(0x0078) AM_WRITE(irq_mask_w) /* INT */ -// AM_RANGE(0x1100, 0x1100) AM_MIRROR(0x007f) AM_WRITE(soundlatch_byte_w) /* 32 */ +// AM_RANGE(0x1100, 0x1100) AM_MIRROR(0x007f) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* 32 */ AM_RANGE(0x1200, 0x1200) AM_MIRROR(0x007f) AM_READ_PORT("DSW2") AM_RANGE(0x1280, 0x1280) AM_MIRROR(0x007c) AM_READ_PORT("SYSTEM") AM_RANGE(0x1281, 0x1281) AM_MIRROR(0x007c) AM_READ_PORT("IN0") @@ -311,7 +311,7 @@ static ADDRESS_MAP_START( reaktor_map, AS_PROGRAM, 8, trackfld_state ) AM_RANGE(0x9081, 0x9081) AM_DEVWRITE("trackfld_audio", trackfld_audio_device, konami_sh_irqtrigger_w) /* cause interrupt on audio CPU */ AM_RANGE(0x9083, 0x9084) AM_WRITE(coin_w) AM_RANGE(0x9087, 0x9087) AM_WRITE(irq_mask_w) - AM_RANGE(0x9100, 0x9100) AM_WRITE(soundlatch_byte_w) + AM_RANGE(0x9100, 0x9100) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) AM_RANGE(0x9200, 0x9200) AM_READ_PORT("DSW2") AM_RANGE(0x9280, 0x9280) AM_READ_PORT("SYSTEM") AM_RANGE(0x9281, 0x9281) AM_READ_PORT("IN0") @@ -344,7 +344,7 @@ static ADDRESS_MAP_START( mastkin_map, AS_PROGRAM, 8, trackfld_state ) AM_RANGE(0x10b1, 0x10b1) AM_READNOP AM_DEVWRITE("trackfld_audio", trackfld_audio_device, konami_sh_irqtrigger_w) AM_RANGE(0x10b3, 0x10b4) AM_WRITE(coin_w) // actually not used AM_RANGE(0x10b7, 0x10b7) AM_READNOP AM_WRITE(irq_mask_w) - AM_RANGE(0x1100, 0x1100) AM_WRITE(soundlatch_byte_w) + AM_RANGE(0x1100, 0x1100) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) AM_RANGE(0x1200, 0x1200) AM_READ_PORT("DSW2") AM_RANGE(0x1280, 0x1280) AM_READ_PORT("SYSTEM") AM_RANGE(0x1281, 0x1281) AM_READ_PORT("IN0") @@ -371,7 +371,7 @@ static ADDRESS_MAP_START( wizzquiz_map, AS_PROGRAM, 8, trackfld_state ) AM_RANGE(0x1081, 0x1081) AM_DEVWRITE("trackfld_audio", trackfld_audio_device, konami_sh_irqtrigger_w) /* cause interrupt on audio CPU */ AM_RANGE(0x1083, 0x1084) AM_WRITE(coin_w) AM_RANGE(0x1087, 0x1087) AM_WRITE(irq_mask_w) - AM_RANGE(0x1100, 0x1100) AM_WRITE(soundlatch_byte_w) + AM_RANGE(0x1100, 0x1100) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) AM_RANGE(0x1200, 0x1200) AM_READ_PORT("DSW2") AM_RANGE(0x1280, 0x1280) AM_READ_PORT("SYSTEM") AM_RANGE(0x1281, 0x1281) AM_READ_PORT("IN0") @@ -402,7 +402,7 @@ READ8_MEMBER(trackfld_state::trackfld_SN76496_r) static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, trackfld_state ) AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x1c00) AM_RAM - AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x1fff) AM_READ(soundlatch_byte_r) + AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x1fff) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x1fff) AM_DEVREAD("trackfld_audio", trackfld_audio_device, trackfld_sh_timer_r) AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1fff) AM_WRITE(konami_SN76496_latch_w) AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x1fff) AM_READ(trackfld_SN76496_r) AM_WRITE(konami_SN76496_w) @@ -416,7 +416,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( hyprolyb_sound_map, AS_PROGRAM, 8, trackfld_state ) AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x1c00) AM_RAM - AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x1fff) AM_READ(soundlatch_byte_r) + AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x1fff) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x1fff) AM_DEVREAD("trackfld_audio", trackfld_audio_device, trackfld_sh_timer_r) AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1fff) AM_WRITE(konami_SN76496_latch_w) AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x1fff) AM_READ(trackfld_SN76496_r) AM_WRITE(konami_SN76496_w) @@ -924,6 +924,8 @@ static MACHINE_CONFIG_START( trackfld, trackfld_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_SOUND_ADD("trackfld_audio", TRACKFLD_AUDIO, 0) MCFG_DAC_ADD("dac") @@ -979,6 +981,8 @@ static MACHINE_CONFIG_START( yieartf, trackfld_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_SOUND_ADD("trackfld_audio", TRACKFLD_AUDIO, 0) MCFG_DAC_ADD("dac") @@ -1276,7 +1280,7 @@ ROM_START( hipoly ) ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code + 64k for decrypted opcodes */ ROM_LOAD( "2.1a", 0x6000, 0x2000, CRC(82257fb7) SHA1(4a5038292e582d5c3b5f2d82b01c57ccb24f3095) ) // only one byte of difference with hyprolymba ROM_LOAD( "2.2a", 0x8000, 0x2000, CRC(15b83099) SHA1(79827590d74f20c9a95723e06b05af2b15c34f5f) ) // ok - ROM_LOAD( "2.4a", 0xa000, 0x2000, CRC(93a32a97) SHA1(4fbb2fcdf9bc7a3d273dbc27b8157f163ff9bf11) ) // too different... maybe a bad dump? + ROM_LOAD( "2.4a", 0xa000, 0x2000, BAD_DUMP CRC(93a32a97) SHA1(4fbb2fcdf9bc7a3d273dbc27b8157f163ff9bf11) ) // too different... maybe a bad dump? ROM_LOAD( "2.5a", 0xc000, 0x2000, CRC(d099b1e8) SHA1(0472991ad6caef41ec6b8ec8bf3d9d07584a57cc) ) // ok ROM_LOAD( "2.7a", 0xe000, 0x2000, CRC(974ff815) SHA1(11512df2008a79ba44bbb84bd70885f187113211) ) // ok diff --git a/src/mame/drivers/tutankhm.cpp b/src/mame/drivers/tutankhm.cpp index b4df2b49c6c..a00e1e674a7 100644 --- a/src/mame/drivers/tutankhm.cpp +++ b/src/mame/drivers/tutankhm.cpp @@ -8,7 +8,7 @@ based on original work by Rob Jarrett I include here the document based on Rob Jarrett's research because it's - really exaustive. + really exhaustive. Sound board: uses the same board as Pooyan. @@ -52,6 +52,7 @@ #include "emu.h" #include "cpu/m6809/m6809.h" +#include "machine/gen_latch.h" #include "machine/watchdog.h" #include "includes/konamipt.h" #include "audio/timeplt.h" @@ -135,7 +136,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, tutankhm_state ) AM_RANGE(0x8207, 0x8207) AM_MIRROR(0x00f8) AM_WRITE(tutankhm_flip_screen_y_w) AM_RANGE(0x8300, 0x8300) AM_MIRROR(0x00ff) AM_WRITE(tutankhm_bankselect_w) AM_RANGE(0x8600, 0x8600) AM_MIRROR(0x00ff) AM_DEVWRITE("timeplt_audio", timeplt_audio_device, sh_irqtrigger_w) - AM_RANGE(0x8700, 0x8700) AM_MIRROR(0x00ff) AM_WRITE(soundlatch_byte_w) + AM_RANGE(0x8700, 0x8700) AM_MIRROR(0x00ff) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) AM_RANGE(0x8800, 0x8fff) AM_RAM AM_RANGE(0x9000, 0x9fff) AM_ROMBANK("bank1") AM_RANGE(0xa000, 0xffff) AM_ROM @@ -244,6 +245,9 @@ static MACHINE_CONFIG_START( tutankhm, tutankhm_state ) MCFG_PALETTE_FORMAT(BBGGGRRR) /* sound hardware */ + + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_FRAGMENT_ADD(timeplt_sound) MACHINE_CONFIG_END diff --git a/src/mame/drivers/twin16.cpp b/src/mame/drivers/twin16.cpp index e25c719d8d5..94b7b897dfe 100644 --- a/src/mame/drivers/twin16.cpp +++ b/src/mame/drivers/twin16.cpp @@ -49,6 +49,7 @@ Known Issues: #include "cpu/m68000/m68000.h" #include "cpu/z80/z80.h" #include "sound/2151intf.h" +#include "machine/gen_latch.h" #include "machine/nvram.h" #include "machine/watchdog.h" #include "includes/twin16.h" @@ -166,7 +167,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, twin16_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0x87ff) AM_RAM AM_RANGE(0x9000, 0x9000) AM_WRITE(upd_reset_w) - AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r) + AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write) AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("upd", upd7759_device, port_w) @@ -185,7 +186,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, twin16_state ) AM_RANGE(0x0a0002, 0x0a0003) AM_READ_PORT("P1") AM_RANGE(0x0a0004, 0x0a0005) AM_READ_PORT("P2") AM_RANGE(0x0a0006, 0x0a0007) AM_READ_PORT("P3") - AM_RANGE(0x0a0008, 0x0a0009) AM_WRITE8(soundlatch_byte_w, 0x00ff) + AM_RANGE(0x0a0008, 0x0a0009) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) AM_RANGE(0x0a0010, 0x0a0011) AM_READ_PORT("DSW2") AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) AM_RANGE(0x0a0012, 0x0a0013) AM_READ_PORT("DSW1") AM_RANGE(0x0a0018, 0x0a0019) AM_READ_PORT("DSW3") @@ -222,7 +223,7 @@ static ADDRESS_MAP_START( fround_map, AS_PROGRAM, 16, fround_state ) AM_RANGE(0x0a0000, 0x0a0001) AM_READ_PORT("SYSTEM") AM_WRITE(fround_CPU_register_w) AM_RANGE(0x0a0002, 0x0a0003) AM_READ_PORT("P1") AM_RANGE(0x0a0004, 0x0a0005) AM_READ_PORT("P2") - AM_RANGE(0x0a0008, 0x0a0009) AM_WRITE8(soundlatch_byte_w, 0x00ff) + AM_RANGE(0x0a0008, 0x0a0009) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) AM_RANGE(0x0a0010, 0x0a0011) AM_READ_PORT("DSW2") AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) AM_RANGE(0x0a0012, 0x0a0013) AM_READ_PORT("DSW1") AM_RANGE(0x0a0018, 0x0a0019) AM_READ_PORT("DSW3") @@ -695,6 +696,8 @@ static MACHINE_CONFIG_START( twin16, twin16_state ) // sound hardware MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) @@ -747,6 +750,8 @@ static MACHINE_CONFIG_START( fround, fround_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) diff --git a/src/mame/drivers/ultraman.cpp b/src/mame/drivers/ultraman.cpp index 86c7507d5d9..3e0813a87fd 100644 --- a/src/mame/drivers/ultraman.cpp +++ b/src/mame/drivers/ultraman.cpp @@ -22,7 +22,7 @@ WRITE16_MEMBER(ultraman_state::sound_cmd_w) { if (ACCESSING_BITS_0_7) - soundlatch_byte_w(space, 0, data & 0xff); + m_soundlatch->write(space, 0, data & 0xff); } WRITE16_MEMBER(ultraman_state::sound_irq_trigger_w) @@ -58,7 +58,7 @@ ADDRESS_MAP_END 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_READ(soundlatch_byte_r) /* Sound latch read */ + AM_RANGE(0xc000, 0xc000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // AM_RANGE(0xd000, 0xd000) AM_WRITENOP /* ??? */ AM_RANGE(0xe000, 0xe000) AM_DEVREADWRITE("oki", okim6295_device, read, write) /* M6295 */ AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) /* YM2151 */ @@ -224,6 +224,8 @@ static MACHINE_CONFIG_START( ultraman, ultraman_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_YM2151_ADD("ymsnd", 24000000/6) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) diff --git a/src/mame/drivers/wecleman.cpp b/src/mame/drivers/wecleman.cpp index 06f61c97bf2..96e4ddb5fd6 100644 --- a/src/mame/drivers/wecleman.cpp +++ b/src/mame/drivers/wecleman.cpp @@ -246,7 +246,7 @@ xx-xx-2003 Acho A. Tang TODO: - check dust color on title screen(I don't think it should be black) - check brake light(LED) support -- check occational off-pitch music and samples(sound interrupt related?) +- check occasional off-pitch music and samples(sound interrupt related?) * Sprite, road and sky drawings do not support 32-bit color depth. Certain sprites with incorrect z-value still pop in front of closer @@ -594,11 +594,11 @@ WRITE16_MEMBER(wecleman_state::wecleman_soundlatch_w) { if (ACCESSING_BITS_0_7) { - soundlatch_byte_w(space, 0, data & 0xFF); + m_soundlatch->write(space, 0, data & 0xFF); } } -/* Protection - an external multiplyer connected to the sound CPU */ +/* Protection - an external multiplier connected to the sound CPU */ READ8_MEMBER(wecleman_state::multiply_r) { return (m_multiply_reg[0] * m_multiply_reg[1]) & 0xFF; @@ -643,7 +643,7 @@ static ADDRESS_MAP_START( wecleman_sound_map, AS_PROGRAM, 8, wecleman_state ) AM_RANGE(0x9000, 0x9000) AM_READ(multiply_r) // Protection AM_RANGE(0x9000, 0x9001) AM_WRITE(multiply_w) // Protection AM_RANGE(0x9006, 0x9006) AM_WRITENOP // ? - AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r) // From main CPU + AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // From main CPU AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write) // K007232 (Reading offset 5/b triggers the sample) AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) AM_RANGE(0xf000, 0xf000) AM_WRITE(wecleman_K00723216_bank_w) // Samples banking @@ -659,7 +659,7 @@ WRITE16_MEMBER(wecleman_state::hotchase_soundlatch_w) { if (ACCESSING_BITS_0_7) { - soundlatch_byte_w(space, 0, data & 0xFF); + m_soundlatch->write(space, 0, data & 0xFF); } } @@ -759,7 +759,7 @@ static ADDRESS_MAP_START( hotchase_sound_map, AS_PROGRAM, 8, wecleman_state ) AM_RANGE(0x3000, 0x300d) AM_READWRITE(hotchase_3_k007232_r, hotchase_3_k007232_w) AM_RANGE(0x4000, 0x4007) AM_WRITE(hotchase_sound_control_w) // Sound volume, banking, etc. AM_RANGE(0x5000, 0x5000) AM_WRITENOP // 0 at start of IRQ service, 1 at end (irq mask?) - AM_RANGE(0x6000, 0x6000) AM_READ(soundlatch_byte_r) // From main CPU (Read on IRQ) + AM_RANGE(0x6000, 0x6000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // From main CPU (Read on IRQ) AM_RANGE(0x7000, 0x7000) AM_WRITE(hotchase_sound_hs_w) // ACK signal to main CPU AM_RANGE(0x8000, 0xffff) AM_ROM ADDRESS_MAP_END @@ -1101,6 +1101,8 @@ static MACHINE_CONFIG_START( wecleman, wecleman_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_YM2151_ADD("ymsnd", 3579545) MCFG_SOUND_ROUTE(0, "mono", 0.85) MCFG_SOUND_ROUTE(1, "mono", 0.85) @@ -1181,6 +1183,8 @@ static MACHINE_CONFIG_START( hotchase, wecleman_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_SOUND_ADD("k007232_1", K007232, 3579545) // SLEV not used, volume control is elsewhere MCFG_SOUND_ROUTE(0, "mono", 0.20) diff --git a/src/mame/drivers/xexex.cpp b/src/mame/drivers/xexex.cpp index c9d3ebf32a8..f22a006732a 100644 --- a/src/mame/drivers/xexex.cpp +++ b/src/mame/drivers/xexex.cpp @@ -266,17 +266,17 @@ WRITE16_MEMBER(xexex_state::sound_cmd1_w) { // anyone knows why 0x1a keeps lurking the sound queue in the world version??? if (m_strip_0x1a) - if (soundlatch2_byte_r(space, 0) == 1 && data == 0x1a) + if (m_soundlatch2->read(space, 0) == 1 && data == 0x1a) return; - soundlatch_byte_w(space, 0, data & 0xff); + m_soundlatch->write(space, 0, data & 0xff); } } WRITE16_MEMBER(xexex_state::sound_cmd2_w) { if (ACCESSING_BITS_0_7) - soundlatch2_byte_w(space, 0, data & 0xff); + m_soundlatch2->write(space, 0, data & 0xff); } WRITE16_MEMBER(xexex_state::sound_irq_w) @@ -286,7 +286,7 @@ WRITE16_MEMBER(xexex_state::sound_irq_w) READ16_MEMBER(xexex_state::sound_status_r) { - return soundlatch3_byte_r(space, 0); + return m_soundlatch3->read(space, 0); } WRITE8_MEMBER(xexex_state::sound_bankswitch_w) @@ -409,9 +409,9 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, xexex_state ) AM_RANGE(0xc000, 0xdfff) AM_RAM AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("k054539", k054539_device, read, write) AM_RANGE(0xec00, 0xec01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xf000, 0xf000) AM_WRITE(soundlatch3_byte_w) - AM_RANGE(0xf002, 0xf002) AM_READ(soundlatch_byte_r) - AM_RANGE(0xf003, 0xf003) AM_READ(soundlatch2_byte_r) + AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("soundlatch3", generic_latch_8_device, write) + AM_RANGE(0xf002, 0xf002) AM_DEVREAD("soundlatch", generic_latch_8_device, read) + AM_RANGE(0xf003, 0xf003) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) AM_RANGE(0xf800, 0xf800) AM_WRITE(sound_bankswitch_w) ADDRESS_MAP_END @@ -542,6 +542,10 @@ static MACHINE_CONFIG_START( xexex, xexex_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_GENERIC_LATCH_8_ADD("soundlatch2") + MCFG_GENERIC_LATCH_8_ADD("soundlatch3") + MCFG_YM2151_ADD("ymsnd", XTAL_32MHz/8) // 4MHz MCFG_SOUND_ROUTE(0, "filter1l", 0.50) MCFG_SOUND_ROUTE(0, "filter1r", 0.50) diff --git a/src/mame/drivers/xmen.cpp b/src/mame/drivers/xmen.cpp index efc12b2d547..e8debf54435 100644 --- a/src/mame/drivers/xmen.cpp +++ b/src/mame/drivers/xmen.cpp @@ -11,8 +11,8 @@ notes: the way the double screen works in xmen6p is not fully understood the board only has one of each gfx chip, the only additional chip not found -on the 2/4p board is 053253. This chip is also on Run n Gun which should -likewise be a 2 screen game +on the 2/4p board is 053253. This chip is also on Run n Gun which is +likewise a 2 screen game ***************************************************************************/ #include "emu.h" @@ -22,7 +22,6 @@ likewise be a 2 screen game #include "machine/watchdog.h" #include "cpu/z80/z80.h" #include "sound/2151intf.h" -#include "sound/k054539.h" #include "rendlay.h" #include "includes/xmen.h" #include "includes/konamipt.h" @@ -58,7 +57,7 @@ WRITE16_MEMBER(xmen_state::eeprom_w) READ16_MEMBER(xmen_state::sound_status_r) { - return soundlatch2_byte_r(space, 0); + return m_soundlatch2->read(space, 0); } WRITE16_MEMBER(xmen_state::sound_cmd_w) @@ -66,7 +65,7 @@ WRITE16_MEMBER(xmen_state::sound_cmd_w) if (ACCESSING_BITS_0_7) { data &= 0xff; - soundlatch_byte_w(space, 0, data); + m_soundlatch->write(space, 0, data); } } @@ -117,8 +116,8 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, xmen_state ) AM_RANGE(0xc000, 0xdfff) AM_RAM AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("k054539", k054539_device, read, write) AM_RANGE(0xe800, 0xe801) AM_MIRROR(0x0400) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xf000, 0xf000) AM_WRITE(soundlatch2_byte_w) - AM_RANGE(0xf002, 0xf002) AM_READ(soundlatch_byte_r) + AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) + AM_RANGE(0xf002, 0xf002) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_RANGE(0xf800, 0xf800) AM_WRITE(sound_bankswitch_w) ADDRESS_MAP_END @@ -353,6 +352,9 @@ static MACHINE_CONFIG_START( xmen, xmen_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_GENERIC_LATCH_8_ADD("soundlatch2") + MCFG_YM2151_ADD("ymsnd", XTAL_16MHz/4) /* verified on pcb */ MCFG_SOUND_ROUTE(0, "lspeaker", 0.20) MCFG_SOUND_ROUTE(1, "rspeaker", 0.20) @@ -416,6 +418,9 @@ static MACHINE_CONFIG_START( xmen6p, xmen_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_GENERIC_LATCH_8_ADD("soundlatch2") + MCFG_YM2151_ADD("ymsnd", XTAL_16MHz/4) MCFG_SOUND_ROUTE(0, "lspeaker", 0.20) MCFG_SOUND_ROUTE(1, "rspeaker", 0.20) diff --git a/src/mame/includes/airbustr.h b/src/mame/includes/airbustr.h index 0a47efd19d0..557f5e97b4d 100644 --- a/src/mame/includes/airbustr.h +++ b/src/mame/includes/airbustr.h @@ -6,6 +6,7 @@ *************************************************************************/ +#include "machine/gen_latch.h" #include "machine/watchdog.h" #include "video/kan_pand.h" @@ -26,7 +27,9 @@ public: m_gfxdecode(*this, "gfxdecode"), m_screen(*this, "screen"), m_palette(*this, "palette"), - m_watchdog(*this, "watchdog") + m_watchdog(*this, "watchdog"), + m_soundlatch(*this, "soundlatch"), + m_soundlatch2(*this, "soundlatch2") { } /* memory pointers */ @@ -59,6 +62,8 @@ public: required_device<screen_device> m_screen; required_device<palette_device> m_palette; required_device<watchdog_timer_device> m_watchdog; + required_device<generic_latch_8_device> m_soundlatch; + required_device<generic_latch_8_device> m_soundlatch2; DECLARE_READ8_MEMBER(devram_r); DECLARE_WRITE8_MEMBER(master_nmi_trigger_w); diff --git a/src/mame/includes/ajax.h b/src/mame/includes/ajax.h index 29c40f86c1c..7ff39c253df 100644 --- a/src/mame/includes/ajax.h +++ b/src/mame/includes/ajax.h @@ -1,5 +1,7 @@ // license:BSD-3-Clause // copyright-holders:Manuel Abadia + +#include "machine/gen_latch.h" #include "machine/watchdog.h" #include "sound/k007232.h" #include "video/k052109.h" @@ -21,7 +23,8 @@ public: m_k052109(*this, "k052109"), m_k051960(*this, "k051960"), m_k051316(*this, "k051316"), - m_palette(*this, "palette") { } + m_palette(*this, "palette"), + m_soundlatch(*this, "soundlatch") { } /* video-related */ UINT8 m_priority; @@ -40,6 +43,8 @@ public: required_device<k051960_device> m_k051960; required_device<k051316_device> m_k051316; required_device<palette_device> m_palette; + required_device<generic_latch_8_device> m_soundlatch; + DECLARE_WRITE8_MEMBER(sound_bank_w); DECLARE_READ8_MEMBER(ajax_ls138_f10_r); DECLARE_WRITE8_MEMBER(ajax_ls138_f10_w); diff --git a/src/mame/includes/aliens.h b/src/mame/includes/aliens.h index 8d78eb14660..bdbd010e6b0 100644 --- a/src/mame/includes/aliens.h +++ b/src/mame/includes/aliens.h @@ -7,6 +7,7 @@ *************************************************************************/ #include "machine/bankdev.h" +#include "machine/gen_latch.h" #include "sound/k007232.h" #include "video/k052109.h" #include "video/k051960.h" @@ -22,6 +23,7 @@ public: m_k007232(*this, "k007232"), m_k052109(*this, "k052109"), m_k051960(*this, "k051960"), + m_soundlatch(*this, "soundlatch"), m_rombank(*this, "rombank") { } /* devices */ @@ -31,6 +33,7 @@ public: required_device<k007232_device> m_k007232; required_device<k052109_device> m_k052109; required_device<k051960_device> m_k051960; + required_device<generic_latch_8_device> m_soundlatch; required_memory_bank m_rombank; DECLARE_WRITE8_MEMBER(aliens_coin_counter_w); diff --git a/src/mame/includes/bladestl.h b/src/mame/includes/bladestl.h index e95eac874e8..d2d83602a54 100644 --- a/src/mame/includes/bladestl.h +++ b/src/mame/includes/bladestl.h @@ -5,6 +5,8 @@ Blades of Steel *************************************************************************/ + +#include "machine/gen_latch.h" #include "sound/flt_rc.h" #include "sound/upd7759.h" #include "video/k007342.h" @@ -26,6 +28,7 @@ public: m_filter2(*this, "filter2"), m_filter3(*this, "filter3"), m_gfxdecode(*this, "gfxdecode"), + m_soundlatch(*this, "soundlatch"), m_trackball(*this, "TRACKBALL"), m_rombank(*this, "rombank") { } @@ -38,6 +41,7 @@ public: required_device<filter_rc_device> m_filter2; required_device<filter_rc_device> m_filter3; required_device<gfxdecode_device> m_gfxdecode; + required_device<generic_latch_8_device> m_soundlatch; required_ioport_array<4> m_trackball; /* memory pointers */ diff --git a/src/mame/includes/chqflag.h b/src/mame/includes/chqflag.h index 269d95edc36..b590740eb4f 100644 --- a/src/mame/includes/chqflag.h +++ b/src/mame/includes/chqflag.h @@ -6,6 +6,7 @@ *************************************************************************/ #include "machine/bankdev.h" +#include "machine/gen_latch.h" #include "sound/k007232.h" #include "video/k051960.h" #include "video/k051316.h" @@ -26,6 +27,7 @@ public: m_k051316_1(*this, "k051316_1"), m_k051316_2(*this, "k051316_2"), m_palette(*this, "palette"), + m_soundlatch2(*this, "soundlatch2"), m_rombank(*this, "rombank") { } /* misc */ @@ -45,6 +47,7 @@ public: required_device<k051316_device> m_k051316_1; required_device<k051316_device> m_k051316_2; required_device<palette_device> m_palette; + required_device<generic_latch_8_device> m_soundlatch2; /* memory pointers */ required_memory_bank m_rombank; diff --git a/src/mame/includes/combatsc.h b/src/mame/includes/combatsc.h index 6d5871da384..4247c19d75e 100644 --- a/src/mame/includes/combatsc.h +++ b/src/mame/includes/combatsc.h @@ -5,6 +5,8 @@ Combat School *************************************************************************/ + +#include "machine/gen_latch.h" #include "sound/upd7759.h" #include "sound/msm5205.h" #include "video/k007121.h" @@ -14,14 +16,15 @@ class combatsc_state : public driver_device public: combatsc_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), m_audiocpu(*this, "audiocpu"), m_k007121_1(*this, "k007121_1"), m_k007121_2(*this, "k007121_2"), - m_maincpu(*this, "maincpu"), m_upd7759(*this, "upd"), m_msm5205(*this, "msm5205"), m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette") { } + m_palette(*this, "palette"), + m_soundlatch(*this, "soundlatch") { } /* memory pointers */ UINT8 * m_videoram; @@ -50,14 +53,15 @@ public: /* devices */ + required_device<cpu_device> m_maincpu; required_device<cpu_device> m_audiocpu; optional_device<k007121_device> m_k007121_1; optional_device<k007121_device> m_k007121_2; - required_device<cpu_device> m_maincpu; optional_device<upd7759_device> m_upd7759; optional_device<msm5205_device> m_msm5205; required_device<gfxdecode_device> m_gfxdecode; required_device<palette_device> m_palette; + required_device<generic_latch_8_device> m_soundlatch; DECLARE_WRITE8_MEMBER(combatsc_vreg_w); DECLARE_WRITE8_MEMBER(combatscb_sh_irqtrigger_w); diff --git a/src/mame/includes/contra.h b/src/mame/includes/contra.h index 454a3ca21f9..771fed9df0a 100644 --- a/src/mame/includes/contra.h +++ b/src/mame/includes/contra.h @@ -54,7 +54,6 @@ public: DECLARE_WRITE8_MEMBER(contra_bankswitch_w); DECLARE_WRITE8_MEMBER(contra_sh_irqtrigger_w); DECLARE_WRITE8_MEMBER(contra_coin_counter_w); - DECLARE_WRITE8_MEMBER(cpu_sound_command_w); DECLARE_WRITE8_MEMBER(contra_fg_vram_w); DECLARE_WRITE8_MEMBER(contra_fg_cram_w); DECLARE_WRITE8_MEMBER(contra_bg_vram_w); diff --git a/src/mame/includes/crimfght.h b/src/mame/includes/crimfght.h index b7d2b3afa00..c7d9b31a05b 100644 --- a/src/mame/includes/crimfght.h +++ b/src/mame/includes/crimfght.h @@ -5,7 +5,9 @@ Crime Fighters *************************************************************************/ + #include "machine/bankdev.h" +#include "machine/gen_latch.h" #include "sound/k007232.h" #include "video/k052109.h" #include "video/k051960.h" @@ -22,6 +24,7 @@ public: m_k052109(*this, "k052109"), m_k051960(*this, "k051960"), m_palette(*this, "palette"), + m_soundlatch(*this, "soundlatch"), m_rombank(*this, "rombank") { } /* devices */ @@ -32,6 +35,7 @@ public: required_device<k052109_device> m_k052109; required_device<k051960_device> m_k051960; required_device<palette_device> m_palette; + required_device<generic_latch_8_device> m_soundlatch; required_memory_bank m_rombank; DECLARE_WRITE8_MEMBER(crimfght_coin_w); diff --git a/src/mame/includes/dbz.h b/src/mame/includes/dbz.h index 734a9a0b2d3..e2feddb4275 100644 --- a/src/mame/includes/dbz.h +++ b/src/mame/includes/dbz.h @@ -6,6 +6,7 @@ *************************************************************************/ +#include "machine/gen_latch.h" #include "machine/k053252.h" #include "video/k054156_k054157_k056832.h" #include "video/k053246_k053247_k055673.h" @@ -28,7 +29,8 @@ public: m_k056832(*this, "k056832"), m_k053936_1(*this, "k053936_1"), m_k053936_2(*this, "k053936_2"), - m_gfxdecode(*this, "gfxdecode") { } + m_gfxdecode(*this, "gfxdecode"), + m_soundlatch(*this, "soundlatch") { } /* memory pointers */ required_shared_ptr<UINT16> m_bg1_videoram; @@ -54,6 +56,7 @@ public: required_device<k053936_device> m_k053936_1; required_device<k053936_device> m_k053936_2; required_device<gfxdecode_device> m_gfxdecode; + required_device<generic_latch_8_device> m_soundlatch; DECLARE_WRITE16_MEMBER(dbzcontrol_w); DECLARE_WRITE16_MEMBER(dbz_sound_command_w); diff --git a/src/mame/includes/djboy.h b/src/mame/includes/djboy.h index 1a32b0a9733..ef464bdda47 100644 --- a/src/mame/includes/djboy.h +++ b/src/mame/includes/djboy.h @@ -6,6 +6,7 @@ *************************************************************************/ +#include "machine/gen_latch.h" #include "video/kan_pand.h" #define PROT_OUTPUT_BUFFER_SIZE 8 @@ -23,7 +24,8 @@ public: m_beast(*this, "beast"), m_pandora(*this, "pandora"), m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette") + m_palette(*this, "palette"), + m_soundlatch(*this, "soundlatch") { } /* memory pointers */ @@ -58,6 +60,7 @@ public: required_device<kaneko_pandora_device> m_pandora; required_device<gfxdecode_device> m_gfxdecode; required_device<palette_device> m_palette; + required_device<generic_latch_8_device> m_soundlatch; DECLARE_WRITE8_MEMBER(beast_data_w); DECLARE_READ8_MEMBER(beast_data_r); diff --git a/src/mame/includes/flkatck.h b/src/mame/includes/flkatck.h index 5f95f7471d0..90f04e1334e 100644 --- a/src/mame/includes/flkatck.h +++ b/src/mame/includes/flkatck.h @@ -6,6 +6,7 @@ *************************************************************************/ +#include "machine/gen_latch.h" #include "machine/watchdog.h" #include "sound/k007232.h" #include "video/k007121.h" @@ -16,12 +17,13 @@ public: flkatck_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_k007121_ram(*this, "k007121_ram"), + m_maincpu(*this, "maincpu"), m_audiocpu(*this, "audiocpu"), m_k007121(*this, "k007121"), m_k007232(*this, "k007232"), - m_maincpu(*this, "maincpu"), m_watchdog(*this, "watchdog"), - m_gfxdecode(*this, "gfxdecode") { } + m_gfxdecode(*this, "gfxdecode"), + m_soundlatch(*this, "soundlatch") { } /* memory pointers */ required_shared_ptr<UINT8> m_k007121_ram; @@ -35,9 +37,14 @@ public: int m_multiply_reg[2]; /* devices */ + required_device<cpu_device> m_maincpu; required_device<cpu_device> m_audiocpu; required_device<k007121_device> m_k007121; required_device<k007232_device> m_k007232; + required_device<watchdog_timer_device> m_watchdog; + required_device<gfxdecode_device> m_gfxdecode; + required_device<generic_latch_8_device> m_soundlatch; + DECLARE_WRITE8_MEMBER(flkatck_bankswitch_w); DECLARE_READ8_MEMBER(flkatck_ls138_r); DECLARE_WRITE8_MEMBER(flkatck_ls138_w); @@ -53,7 +60,4 @@ public: UINT32 screen_update_flkatck(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); INTERRUPT_GEN_MEMBER(flkatck_interrupt); DECLARE_WRITE8_MEMBER(volume_callback); - required_device<cpu_device> m_maincpu; - required_device<watchdog_timer_device> m_watchdog; - required_device<gfxdecode_device> m_gfxdecode; }; diff --git a/src/mame/includes/gijoe.h b/src/mame/includes/gijoe.h index d4c417bcd01..06d39d06619 100644 --- a/src/mame/includes/gijoe.h +++ b/src/mame/includes/gijoe.h @@ -5,6 +5,8 @@ GI Joe *************************************************************************/ + +#include "machine/gen_latch.h" #include "sound/k054539.h" #include "video/k053251.h" #include "video/k054156_k054157_k056832.h" @@ -24,7 +26,9 @@ public: m_k056832(*this, "k056832"), m_k053246(*this, "k053246"), m_k053251(*this, "k053251"), - m_palette(*this, "palette") { } + m_palette(*this, "palette"), + m_soundlatch(*this, "soundlatch"), + m_soundlatch2(*this, "soundlatch2") { } /* memory pointers */ required_shared_ptr<UINT16> m_spriteram; @@ -50,6 +54,9 @@ public: required_device<k053247_device> m_k053246; required_device<k053251_device> m_k053251; required_device<palette_device> m_palette; + required_device<generic_latch_8_device> m_soundlatch; + required_device<generic_latch_8_device> m_soundlatch2; + DECLARE_READ16_MEMBER(control2_r); DECLARE_WRITE16_MEMBER(control2_w); DECLARE_WRITE16_MEMBER(sound_cmd_w); diff --git a/src/mame/includes/ironhors.h b/src/mame/includes/ironhors.h index b0c78ebf6e3..8a9c0f7c50d 100644 --- a/src/mame/includes/ironhors.h +++ b/src/mame/includes/ironhors.h @@ -6,6 +6,8 @@ *************************************************************************/ +#include "machine/gen_latch.h" + class ironhors_state : public driver_device { public: @@ -15,6 +17,7 @@ public: m_soundcpu(*this, "soundcpu"), m_gfxdecode(*this, "gfxdecode"), m_palette(*this, "palette"), + m_soundlatch(*this, "soundlatch"), m_interrupt_enable(*this, "int_enable"), m_scroll(*this, "scroll"), m_colorram(*this, "colorram"), @@ -27,6 +30,7 @@ public: required_device<cpu_device> m_soundcpu; required_device<gfxdecode_device> m_gfxdecode; required_device<palette_device> m_palette; + required_device<generic_latch_8_device> m_soundlatch; /* memory pointers */ required_shared_ptr<UINT8> m_interrupt_enable; diff --git a/src/mame/includes/kaneko16.h b/src/mame/includes/kaneko16.h index fa80cab978a..f5912922a04 100644 --- a/src/mame/includes/kaneko16.h +++ b/src/mame/includes/kaneko16.h @@ -9,6 +9,7 @@ #ifndef __KANEKO16_H__ #define __KANEKO16_H__ +#include "machine/gen_latch.h" #include "machine/nvram.h" #include "video/kan_pand.h" #include "video/kaneko_tmap.h" @@ -38,6 +39,7 @@ public: m_pandora(*this, "pandora"), m_palette(*this, "palette"), m_eeprom(*this, "eeprom"), + m_soundlatch(*this, "soundlatch"), m_spriteram(*this, "spriteram"), m_mainram(*this, "mainram") { } @@ -55,6 +57,7 @@ public: optional_device<kaneko_pandora_device> m_pandora; required_device<palette_device> m_palette; optional_device<eeprom_serial_93cxx_device> m_eeprom; + optional_device<generic_latch_8_device> m_soundlatch; optional_shared_ptr<UINT16> m_spriteram; optional_shared_ptr<UINT16> m_mainram; diff --git a/src/mame/includes/lethal.h b/src/mame/includes/lethal.h index f53c540f38d..acac08d8610 100644 --- a/src/mame/includes/lethal.h +++ b/src/mame/includes/lethal.h @@ -42,7 +42,6 @@ public: required_device<palette_device> m_palette; DECLARE_WRITE8_MEMBER(control2_w); - DECLARE_WRITE8_MEMBER(sound_cmd_w); DECLARE_WRITE8_MEMBER(sound_irq_w); DECLARE_READ8_MEMBER(sound_status_r); DECLARE_WRITE8_MEMBER(le_bankswitch_w); diff --git a/src/mame/includes/megasys1.h b/src/mame/includes/megasys1.h index 65694249f8f..3e7f4f92202 100644 --- a/src/mame/includes/megasys1.h +++ b/src/mame/includes/megasys1.h @@ -15,6 +15,7 @@ ***************************************************************************/ +#include "machine/gen_latch.h" #include "sound/okim6295.h" @@ -31,16 +32,19 @@ public: m_audiocpu(*this, "audiocpu"), m_oki1(*this, "oki1"), m_oki2(*this, "oki2"), + m_gfxdecode(*this, "gfxdecode"), + m_palette(*this, "palette"), + m_screen(*this, "screen"), + m_soundlatch(*this, "soundlatch"), + m_soundlatch2(*this, "soundlatch2"), + m_soundlatch_z(*this, "soundlatch_z"), m_rom_maincpu(*this, "maincpu"), m_io_system(*this, "SYSTEM"), m_io_p1(*this, "P1"), m_io_p2(*this, "P2"), m_io_dsw(*this, "DSW"), m_io_dsw1(*this, "DSW1"), - m_io_dsw2(*this, "DSW2"), - m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette"), - m_screen(*this, "screen") + m_io_dsw2(*this, "DSW2") { } required_shared_ptr<UINT16> m_vregs; @@ -51,6 +55,12 @@ public: optional_device<cpu_device> m_audiocpu; optional_device<okim6295_device> m_oki1; optional_device<okim6295_device> m_oki2; + required_device<gfxdecode_device> m_gfxdecode; + required_device<palette_device> m_palette; + required_device<screen_device> m_screen; + optional_device<generic_latch_16_device> m_soundlatch; + optional_device<generic_latch_16_device> m_soundlatch2; + optional_device<generic_latch_8_device> m_soundlatch_z; required_region_ptr<UINT16> m_rom_maincpu; required_ioport m_io_system; required_ioport m_io_p1; @@ -58,9 +68,6 @@ public: optional_ioport m_io_dsw; optional_ioport m_io_dsw1; optional_ioport m_io_dsw2; - required_device<gfxdecode_device> m_gfxdecode; - required_device<palette_device> m_palette; - required_device<screen_device> m_screen; bitmap_ind16 m_sprite_buffer_bitmap; @@ -141,6 +148,7 @@ public: DECLARE_DRIVER_INIT(edfbl); DECLARE_DRIVER_INIT(stdragona); DECLARE_DRIVER_INIT(stdragonb); + DECLARE_DRIVER_INIT(systemz); TILEMAP_MAPPER_MEMBER(megasys1_scan_8x8); TILEMAP_MAPPER_MEMBER(megasys1_scan_16x16); TILE_GET_INFO_MEMBER(megasys1_get_scroll_tile_info_8x8); @@ -167,5 +175,4 @@ public: void rodland_gfx_unmangle(const char *region); void jitsupro_gfx_unmangle(const char *region); void stdragona_gfx_unmangle(const char *region); - DECLARE_WRITE_LINE_MEMBER(irqhandler); }; diff --git a/src/mame/includes/megazone.h b/src/mame/includes/megazone.h index 8621b5c90af..3234ec35401 100644 --- a/src/mame/includes/megazone.h +++ b/src/mame/includes/megazone.h @@ -55,7 +55,6 @@ public: DECLARE_WRITE8_MEMBER(megazone_flipscreen_w); DECLARE_READ8_MEMBER(megazone_port_a_r); DECLARE_WRITE8_MEMBER(megazone_port_b_w); - DECLARE_DRIVER_INIT(megazone); virtual void machine_start() override; virtual void machine_reset() override; virtual void video_start() override; diff --git a/src/mame/includes/moo.h b/src/mame/includes/moo.h index 28cb1e9ffef..42bb1a0bc53 100644 --- a/src/mame/includes/moo.h +++ b/src/mame/includes/moo.h @@ -7,6 +7,7 @@ *************************************************************************/ #include "sound/okim6295.h" #include "sound/k054539.h" +#include "machine/gen_latch.h" #include "machine/k053252.h" #include "video/k053251.h" #include "video/k054156_k054157_k056832.h" @@ -32,7 +33,10 @@ public: m_k056832(*this, "k056832"), m_k054338(*this, "k054338"), m_palette(*this, "palette"), - m_screen(*this, "screen") { } + m_screen(*this, "screen"), + m_soundlatch(*this, "soundlatch"), + m_soundlatch2(*this, "soundlatch2"), + m_soundlatch3(*this, "soundlatch3") { } /* memory pointers */ optional_shared_ptr<UINT16> m_workram; @@ -61,6 +65,9 @@ public: required_device<k054338_device> m_k054338; required_device<palette_device> m_palette; required_device<screen_device> m_screen; + optional_device<generic_latch_8_device> m_soundlatch; + optional_device<generic_latch_8_device> m_soundlatch2; + optional_device<generic_latch_8_device> m_soundlatch3; emu_timer *m_dmaend_timer; DECLARE_READ16_MEMBER(control2_r); diff --git a/src/mame/includes/mystwarr.h b/src/mame/includes/mystwarr.h index 0ea09731627..c0e35e0b61b 100644 --- a/src/mame/includes/mystwarr.h +++ b/src/mame/includes/mystwarr.h @@ -1,5 +1,7 @@ // license:BSD-3-Clause // copyright-holders:R. Belmont, Phil Stroffolino, Acho A. Tang, Nicola Salmoria + +#include "machine/gen_latch.h" #include "sound/k054539.h" #include "machine/k053252.h" #include "video/k055555.h" @@ -15,6 +17,9 @@ public: m_k053252(*this, "k053252"), m_k056832(*this, "k056832"), m_k055673(*this, "k055673"), + m_soundlatch(*this, "soundlatch"), + m_soundlatch2(*this, "soundlatch2"), + m_soundlatch3(*this, "soundlatch3"), m_gx_workram(*this,"gx_workram"), m_spriteram(*this,"spriteram") { } @@ -23,6 +28,9 @@ public: required_device<k053252_device> m_k053252; required_device<k056832_device> m_k056832; required_device<k055673_device> m_k055673; + required_device<generic_latch_8_device> m_soundlatch; + required_device<generic_latch_8_device> m_soundlatch2; + required_device<generic_latch_8_device> m_soundlatch3; required_shared_ptr<UINT16> m_gx_workram; optional_shared_ptr<UINT16> m_spriteram; std::unique_ptr<UINT8[]> m_decoded; diff --git a/src/mame/includes/plygonet.h b/src/mame/includes/plygonet.h index 91caec85865..5b71fa27476 100644 --- a/src/mame/includes/plygonet.h +++ b/src/mame/includes/plygonet.h @@ -1,6 +1,8 @@ // license:BSD-3-Clause // copyright-holders:R. Belmont, Andrew Gardner + #include "machine/eepromser.h" +#include "machine/gen_latch.h" #include "video/k053936.h" #include "cpu/dsp56k/dsp56k.h" @@ -21,26 +23,32 @@ public: m_dsp(*this, "dsp"), m_eeprom(*this, "eeprom"), m_k053936(*this, "k053936"), + m_gfxdecode(*this, "gfxdecode"), + m_palette(*this, "palette"), + m_soundlatch(*this, "soundlatch"), + m_soundlatch2(*this, "soundlatch2"), + m_soundlatch3(*this, "soundlatch3"), m_shared_ram(*this, "shared_ram"), m_dsp56k_p_mirror(*this, "dsp56k_p_mirror"), - m_dsp56k_p_8000(*this, "dsp56k_p_8000"), - m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette") - { } + m_dsp56k_p_8000(*this, "dsp56k_p_8000") + { } required_device<cpu_device> m_maincpu; required_device<cpu_device> m_audiocpu; required_device<dsp56k_device> m_dsp; required_device<eeprom_serial_er5911_device> m_eeprom; required_device<k053936_device> m_k053936; - + required_device<gfxdecode_device> m_gfxdecode; + required_device<palette_device> m_palette; + required_device<generic_latch_8_device> m_soundlatch; + required_device<generic_latch_8_device> m_soundlatch2; + required_device<generic_latch_8_device> m_soundlatch3; + /* 68k-side shared ram */ required_shared_ptr<UINT32> m_shared_ram; required_shared_ptr<UINT16> m_dsp56k_p_mirror; required_shared_ptr<UINT16> m_dsp56k_p_8000; - required_device<gfxdecode_device> m_gfxdecode; - required_device<palette_device> m_palette; ioport_port *m_inputs[4]; UINT8 m_sys0; diff --git a/src/mame/includes/rockrage.h b/src/mame/includes/rockrage.h index 52c34236776..123358fc083 100644 --- a/src/mame/includes/rockrage.h +++ b/src/mame/includes/rockrage.h @@ -6,6 +6,7 @@ *************************************************************************/ +#include "machine/gen_latch.h" #include "sound/vlm5030.h" #include "video/k007342.h" #include "video/k007420.h" @@ -22,6 +23,7 @@ public: m_vlm(*this, "vlm"), m_gfxdecode(*this, "gfxdecode"), m_palette(*this, "palette"), + m_soundlatch(*this, "soundlatch"), m_rombank(*this, "rombank") { } /* devices */ @@ -32,6 +34,7 @@ public: required_device<vlm5030_device> m_vlm; required_device<gfxdecode_device> m_gfxdecode; required_device<palette_device> m_palette; + required_device<generic_latch_8_device> m_soundlatch; /* memory pointers */ required_memory_bank m_rombank; diff --git a/src/mame/includes/rungun.h b/src/mame/includes/rungun.h index 2819bbde4a9..ef414292353 100644 --- a/src/mame/includes/rungun.h +++ b/src/mame/includes/rungun.h @@ -5,7 +5,9 @@ Run and Gun / Slam Dunk *************************************************************************/ + #include "sound/k054539.h" +#include "machine/gen_latch.h" #include "machine/k053252.h" #include "video/k053246_k053247_k055673.h" #include "video/k053936.h" @@ -23,11 +25,13 @@ public: m_k053936(*this, "k053936"), m_k055673(*this, "k055673"), m_k053252(*this, "k053252"), - m_sysreg(*this, "sysreg"), m_gfxdecode(*this, "gfxdecode"), m_palette(*this, "palette"), m_palette2(*this, "palette2"), - m_screen(*this, "screen") + m_screen(*this, "screen"), + m_soundlatch(*this, "soundlatch"), + m_soundlatch2(*this, "soundlatch2"), + m_sysreg(*this, "sysreg") { } /* devices */ @@ -38,14 +42,15 @@ public: required_device<k053936_device> m_k053936; required_device<k055673_device> m_k055673; required_device<k053252_device> m_k053252; - - /* memory pointers */ - required_shared_ptr<UINT16> m_sysreg; - required_device<gfxdecode_device> m_gfxdecode; required_device<palette_device> m_palette; optional_device<palette_device> m_palette2; required_device<screen_device> m_screen; + required_device<generic_latch_8_device> m_soundlatch; + required_device<generic_latch_8_device> m_soundlatch2; + + /* memory pointers */ + required_shared_ptr<UINT16> m_sysreg; /* video-related */ tilemap_t *m_ttl_tilemap[2]; diff --git a/src/mame/includes/scotrsht.h b/src/mame/includes/scotrsht.h index 288d67822ac..3b2470d30d9 100644 --- a/src/mame/includes/scotrsht.h +++ b/src/mame/includes/scotrsht.h @@ -1,5 +1,8 @@ // license:BSD-3-Clause // copyright-holders:David Haywood, ??? + +#include "machine/gen_latch.h" + class scotrsht_state : public driver_device { public: @@ -9,6 +12,7 @@ public: m_audiocpu(*this, "audiocpu"), m_gfxdecode(*this, "gfxdecode"), m_palette(*this, "palette"), + m_soundlatch(*this, "soundlatch"), m_colorram(*this, "colorram"), m_videoram(*this, "videoram"), m_spriteram(*this, "spriteram"), @@ -18,6 +22,7 @@ public: required_device<cpu_device> m_audiocpu; required_device<gfxdecode_device> m_gfxdecode; required_device<palette_device> m_palette; + required_device<generic_latch_8_device> m_soundlatch; required_shared_ptr<UINT8> m_colorram; required_shared_ptr<UINT8> m_videoram; diff --git a/src/mame/includes/scramble.h b/src/mame/includes/scramble.h index 2648ce25237..8cef5bc67a7 100644 --- a/src/mame/includes/scramble.h +++ b/src/mame/includes/scramble.h @@ -1,5 +1,7 @@ // license:BSD-3-Clause // copyright-holders:Nicola Salmoria + +#include "machine/gen_latch.h" #include "machine/i8255.h" #include "includes/galaxold.h" #include "sound/tms5110.h" @@ -15,7 +17,8 @@ public: m_ppi8255_1(*this, "ppi8255_1"), m_tmsprom(*this, "tmsprom"), m_soundram(*this, "soundram"), - m_digitalker(*this, "digitalker") + m_digitalker(*this, "digitalker"), + m_soundlatch(*this, "soundlatch") { } @@ -25,6 +28,7 @@ public: optional_device<tmsprom_device> m_tmsprom; optional_shared_ptr<UINT8> m_soundram; optional_device<digitalker_device> m_digitalker; + required_device<generic_latch_8_device> m_soundlatch; UINT8 m_cavelon_bank; diff --git a/src/mame/includes/ultraman.h b/src/mame/includes/ultraman.h index 9e6e2853275..c0873b8efb3 100644 --- a/src/mame/includes/ultraman.h +++ b/src/mame/includes/ultraman.h @@ -6,6 +6,7 @@ *************************************************************************/ +#include "machine/gen_latch.h" #include "video/k051960.h" #include "video/k051316.h" #include "video/konami_helper.h" @@ -20,7 +21,8 @@ public: m_k051316_1(*this, "k051316_1"), m_k051316_2(*this, "k051316_2"), m_k051316_3(*this, "k051316_3"), - m_k051960(*this, "k051960") { } + m_k051960(*this, "k051960"), + m_soundlatch(*this, "soundlatch") { } int m_bank0; int m_bank1; @@ -33,6 +35,8 @@ public: required_device<k051316_device> m_k051316_2; required_device<k051316_device> m_k051316_3; required_device<k051960_device> m_k051960; + required_device<generic_latch_8_device> m_soundlatch; + DECLARE_WRITE16_MEMBER(sound_cmd_w); DECLARE_WRITE16_MEMBER(sound_irq_trigger_w); DECLARE_WRITE16_MEMBER(ultraman_gfxctrl_w); diff --git a/src/mame/includes/wecleman.h b/src/mame/includes/wecleman.h index 80acb529dcb..e04d775c096 100644 --- a/src/mame/includes/wecleman.h +++ b/src/mame/includes/wecleman.h @@ -1,5 +1,7 @@ // license:BSD-3-Clause // copyright-holders:Luca Elia + +#include "machine/gen_latch.h" #include "sound/k007232.h" #include "video/k051316.h" @@ -15,6 +17,7 @@ public: m_txtram(*this, "txtram"), m_spriteram(*this, "spriteram"), m_roadram(*this, "roadram"), + m_generic_paletteram_16(*this, "paletteram"), m_maincpu(*this, "maincpu"), m_audiocpu(*this, "audiocpu"), m_subcpu(*this, "sub"), @@ -27,7 +30,7 @@ public: m_gfxdecode(*this, "gfxdecode"), m_palette(*this, "palette"), m_screen(*this, "screen"), - m_generic_paletteram_16(*this, "paletteram") { } + m_soundlatch(*this, "soundlatch") { } optional_shared_ptr<UINT16> m_videostatus; optional_shared_ptr<UINT16> m_protection_ram; @@ -36,6 +39,7 @@ public: optional_shared_ptr<UINT16> m_txtram; required_shared_ptr<UINT16> m_spriteram; required_shared_ptr<UINT16> m_roadram; + required_shared_ptr<UINT16> m_generic_paletteram_16; int m_multiply_reg[2]; int m_spr_color_offs; @@ -129,5 +133,5 @@ public: required_device<gfxdecode_device> m_gfxdecode; required_device<palette_device> m_palette; required_device<screen_device> m_screen; - required_shared_ptr<UINT16> m_generic_paletteram_16; + required_device<generic_latch_8_device> m_soundlatch; }; diff --git a/src/mame/includes/xexex.h b/src/mame/includes/xexex.h index 9cf2b53ae37..fd196ab3fa7 100644 --- a/src/mame/includes/xexex.h +++ b/src/mame/includes/xexex.h @@ -9,6 +9,7 @@ #include "video/k053250.h" #include "sound/flt_vol.h" #include "sound/k054539.h" +#include "machine/gen_latch.h" #include "machine/k053252.h" #include "video/k054156_k054157_k056832.h" #include "video/k053246_k053247_k055673.h" @@ -37,7 +38,10 @@ public: m_k053252(*this, "k053252"), m_k054338(*this, "k054338"), m_palette(*this, "palette"), - m_screen(*this, "screen") { } + m_screen(*this, "screen"), + m_soundlatch(*this, "soundlatch"), + m_soundlatch2(*this, "soundlatch2"), + m_soundlatch3(*this, "soundlatch3") { } /* memory pointers */ required_shared_ptr<UINT16> m_workram; @@ -73,6 +77,10 @@ public: required_device<k054338_device> m_k054338; required_device<palette_device> m_palette; required_device<screen_device> m_screen; + required_device<generic_latch_8_device> m_soundlatch; + required_device<generic_latch_8_device> m_soundlatch2; + required_device<generic_latch_8_device> m_soundlatch3; + DECLARE_READ16_MEMBER(spriteram_mirror_r); DECLARE_WRITE16_MEMBER(spriteram_mirror_w); DECLARE_READ16_MEMBER(xexex_waitskip_r); diff --git a/src/mame/includes/xmen.h b/src/mame/includes/xmen.h index d7bdceb6a65..927ad17a462 100644 --- a/src/mame/includes/xmen.h +++ b/src/mame/includes/xmen.h @@ -1,5 +1,7 @@ // license:BSD-3-Clause // copyright-holders:Nicola Salmoria + +#include "machine/gen_latch.h" #include "sound/k054539.h" #include "video/k053246_k053247_k055673.h" #include "video/k053251.h" @@ -22,6 +24,8 @@ public: m_k053246(*this, "k053246"), m_k053251(*this, "k053251"), m_screen(*this, "screen"), + m_soundlatch(*this, "soundlatch"), + m_soundlatch2(*this, "soundlatch2"), m_z80bank(*this, "z80bank") { } /* video-related */ @@ -49,6 +53,8 @@ public: required_device<k053247_device> m_k053246; required_device<k053251_device> m_k053251; required_device<screen_device> m_screen; + required_device<generic_latch_8_device> m_soundlatch; + required_device<generic_latch_8_device> m_soundlatch2; required_memory_bank m_z80bank; DECLARE_WRITE16_MEMBER(eeprom_w); diff --git a/src/mame/machine/ajax.cpp b/src/mame/machine/ajax.cpp index 715769c989c..9deefef82aa 100644 --- a/src/mame/machine/ajax.cpp +++ b/src/mame/machine/ajax.cpp @@ -2,7 +2,7 @@ // copyright-holders:Manuel Abadia /*************************************************************************** - machine.c + ajax.cpp Functions to emulate general aspects of the machine (RAM, ROM, interrupts, I/O ports) @@ -150,7 +150,7 @@ WRITE8_MEMBER(ajax_state::ajax_ls138_f10_w) m_audiocpu->set_input_line(0, HOLD_LINE); break; case 0x02: /* Sound command number */ - soundlatch_byte_w(space, offset, data); + m_soundlatch->write(space, offset, data); break; case 0x03: /* Bankswitch + coin counters + priority*/ ajax_bankswitch_w(space, 0, data); diff --git a/src/mame/video/megasys1.cpp b/src/mame/video/megasys1.cpp index 6609f673920..35d9f95cc3e 100644 --- a/src/mame/video/megasys1.cpp +++ b/src/mame/video/megasys1.cpp @@ -446,11 +446,16 @@ WRITE16_MEMBER(megasys1_state::megasys1_vregs_A_w) } break; - case 0x308/2 : soundlatch_word_w(space,0,new_data,0xffff); - if (!m_hardware_type_z) + case 0x308/2 : if (!m_hardware_type_z) + { + m_soundlatch->write(space,0,new_data,0xffff); m_audiocpu->set_input_line(4, HOLD_LINE); - else + } + else + { + m_soundlatch_z->write(space,0,new_data&0xff); m_audiocpu->set_input_line(5, HOLD_LINE); + } break; default : SHOW_WRITE_ERROR("vreg %04X <- %04X",offset*2,data); @@ -493,7 +498,7 @@ WRITE16_MEMBER(megasys1_state::megasys1_vregs_monkelf_w) } break; - case 0x308/2 : soundlatch_word_w(space,0,new_data,0xffff); + case 0x308/2 : m_soundlatch->write(space,0,new_data,0xffff); m_audiocpu->set_input_line(4, HOLD_LINE); break; @@ -508,7 +513,7 @@ READ16_MEMBER(megasys1_state::megasys1_vregs_C_r) { switch (offset) { - case 0x8000/2: return soundlatch2_word_r(space,0,0xffff); + case 0x8000/2: return m_soundlatch2->read(space,0,0xffff); default: return m_vregs[offset]; } } @@ -543,7 +548,7 @@ WRITE16_MEMBER(megasys1_state::megasys1_vregs_C_w) break; case 0x8000/2 : /* Cybattler reads sound latch on irq 2 */ - soundlatch_word_w(space, 0, new_data, 0xffff); + m_soundlatch->write(space, 0, new_data, 0xffff); m_audiocpu->set_input_line(2, HOLD_LINE); break; |