second-to-last gen_latch.cpp update (nw)

This commit is contained in:
Ivan Vangelista 2016-06-09 17:18:09 +02:00
parent 89466e4937
commit 15fdafadd2
68 changed files with 512 additions and 249 deletions

View File

@ -254,7 +254,7 @@ WRITE16_MEMBER(bbusters_state::sound_cpu_w)
{
if (ACCESSING_BITS_0_7)
{
soundlatch_byte_w(space, 0, data&0xff);
m_soundlatch->write(space, 0, data&0xff);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
}
}
@ -375,7 +375,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, bbusters_state )
AM_RANGE(0x0000, 0xefff) AM_ROM
AM_RANGE(0xf000, 0xf7ff) AM_RAM
AM_RANGE(0xf800, 0xf800) AM_READ(soundlatch_byte_r) AM_WRITE(sound_status_w)
AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(sound_status_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_portmap, AS_IO, 8, bbusters_state )
@ -684,6 +684,8 @@ static MACHINE_CONFIG_START( bbusters, bbusters_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2610, 8000000)
MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
@ -723,6 +725,8 @@ static MACHINE_CONFIG_START( mechatt, bbusters_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2608, 8000000)
MCFG_YM2608_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)

View File

@ -46,6 +46,7 @@ Dip locations verified with Fabtek manual for the trackball version
#include "emu.h"
#include "cpu/m68000/m68000.h"
#include "cpu/z80/z80.h"
#include "machine/gen_latch.h"
#include "sound/2151intf.h"
#include "sound/msm5205.h"
#include "includes/cabal.h"
@ -156,7 +157,7 @@ static ADDRESS_MAP_START( cabalbl_main_map, AS_PROGRAM, 16, cabal_state )
AM_RANGE(0xc0080, 0xc0081) AM_WRITE(flipscreen_w)
AM_RANGE(0xe0000, 0xe07ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xe8000, 0xe8003) AM_WRITE(cabalbl_sndcmd_w)
AM_RANGE(0xe8004, 0xe8005) AM_READ(soundlatch2_word_r)
AM_RANGE(0xe8004, 0xe8005) AM_DEVREAD8("soundlatch", generic_latch_8_device, read, 0x00ff)
AM_RANGE(0xe8008, 0xe8009) AM_WRITE(cabalbl_sound_irq_trigger_word_w)
ADDRESS_MAP_END
@ -203,13 +204,13 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( cabalbl_sound_map, AS_PROGRAM, 8, cabal_state )
AM_RANGE(0x0000, 0x1fff) AM_ROM
AM_RANGE(0x2000, 0x2fff) AM_RAM
AM_RANGE(0x4000, 0x4000) AM_WRITE(soundlatch3_byte_w)
AM_RANGE(0x4002, 0x4002) AM_WRITE(soundlatch4_byte_w)
AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
AM_RANGE(0x4002, 0x4002) AM_DEVWRITE("soundlatch3", generic_latch_8_device, write)
AM_RANGE(0x4004, 0x4004) AM_WRITE(cabalbl_coin_w)
AM_RANGE(0x4006, 0x4006) AM_READ_PORT("COIN")
AM_RANGE(0x4008, 0x4008) AM_READ(cabalbl_snd2_r)
AM_RANGE(0x400a, 0x400a) AM_READ(cabalbl_snd1_r)
AM_RANGE(0x400c, 0x400c) AM_WRITE(soundlatch2_byte_w)
AM_RANGE(0x400c, 0x400c) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
AM_RANGE(0x400e, 0x400f) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
AM_RANGE(0x6000, 0x6000) AM_WRITENOP /* ??? */
AM_RANGE(0x8000, 0xffff) AM_ROM
@ -239,7 +240,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( cabalbl_talk1_portmap, AS_IO, 8, cabal_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READ(soundlatch3_byte_r)
AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch2", generic_latch_8_device, read)
AM_RANGE(0x01, 0x01) AM_WRITE(cabalbl_1_adpcm_w)
ADDRESS_MAP_END
@ -249,7 +250,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( cabalbl_talk2_portmap, AS_IO, 8, cabal_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READ(soundlatch4_byte_r)
AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch3", generic_latch_8_device, read)
AM_RANGE(0x01, 0x01) AM_WRITE(cabalbl_2_adpcm_w)
ADDRESS_MAP_END
@ -561,6 +562,10 @@ static MACHINE_CONFIG_START( cabalbl, cabal_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
MCFG_GENERIC_LATCH_8_ADD("soundlatch3")
MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) /* verified on pcb */
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(ALL_OUTPUTS,"mono", 0.80)

View File

@ -54,6 +54,7 @@ DD10 DD14 DD18 H5 DD21
#include "emu.h"
#include "cpu/z80/z80.h"
#include "sound/ay8910.h"
#include "machine/gen_latch.h"
#include "machine/nvram.h"
#include "video/resnet.h"
@ -70,7 +71,8 @@ public:
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette") { }
m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch") { }
required_shared_ptr<UINT8> m_scroll_ram;
required_shared_ptr<UINT8> m_sprite_ram;
@ -93,12 +95,13 @@ 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;
};
WRITE8_MEMBER(dmndrby_state::dderby_sound_w)
{
soundlatch_byte_w(space,0,data);
m_soundlatch->write(space,0,data);
m_audiocpu->set_input_line(0, HOLD_LINE);
}
@ -158,7 +161,7 @@ static ADDRESS_MAP_START( dderby_sound_map, AS_PROGRAM, 8, dmndrby_state )
AM_RANGE(0x0000, 0x0fff) AM_ROM
AM_RANGE(0x1000, 0x1000) AM_RAM //???
AM_RANGE(0x4000, 0x4001) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
AM_RANGE(0x4000, 0x4000) AM_READ(soundlatch_byte_r)
AM_RANGE(0x4000, 0x4000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0x4001, 0x4001) AM_DEVREAD("ay1", ay8910_device, data_r)
AM_RANGE(0x6000, 0x67ff) AM_RAM
ADDRESS_MAP_END
@ -545,6 +548,8 @@ static MACHINE_CONFIG_START( dderby, dmndrby_state )
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, 1789750) // frequency guessed
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.35)
MACHINE_CONFIG_END

View File

@ -4,7 +4,7 @@
Go 2000 - Korean Card game
Newer PCB, very sparce with newer surface mounted CPUs
Newer PCB, very sparse with newer surface mounted CPUs
MC68EC000FU10
Z84C0006FEC
@ -34,6 +34,7 @@ Notes:
#include "emu.h"
#include "cpu/m68000/m68000.h"
#include "cpu/z80/z80.h"
#include "machine/gen_latch.h"
#include "sound/dac.h"
class go2000_state : public driver_device
@ -43,33 +44,36 @@ public:
: driver_device(mconfig, type, tag),
m_videoram(*this, "videoram"),
m_videoram2(*this, "videoram2"),
m_soundcpu(*this, "soundcpu"),
m_maincpu(*this, "maincpu"),
m_soundcpu(*this, "soundcpu"),
m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"),
m_palette(*this, "palette") { }
m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch") { }
/* memory pointers */
required_shared_ptr<UINT16> m_videoram;
required_shared_ptr<UINT16> m_videoram2;
/* devices */
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_soundcpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
required_device<generic_latch_8_device> m_soundlatch;
DECLARE_WRITE16_MEMBER(sound_cmd_w);
DECLARE_WRITE8_MEMBER(go2000_pcm_1_bankswitch_w);
virtual void machine_start() override;
virtual void video_start() override;
UINT32 screen_update_go2000(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
};
WRITE16_MEMBER(go2000_state::sound_cmd_w)
{
soundlatch_byte_w(space, offset, data & 0xff);
m_soundlatch->write(space, offset, data & 0xff);
m_soundcpu->set_input_line(0, HOLD_LINE);
}
@ -99,7 +103,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( go2000_sound_io, AS_IO, 8, go2000_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READ(soundlatch_byte_r)
AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0x00, 0x00) AM_DEVWRITE("dac1", dac_device, write_unsigned8)
AM_RANGE(0x03, 0x03) AM_WRITE(go2000_pcm_1_bankswitch_w)
ADDRESS_MAP_END
@ -352,6 +356,8 @@ static MACHINE_CONFIG_START( go2000, go2000_state )
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_DAC_ADD("dac1")
MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)

View File

@ -14,14 +14,13 @@
#include "cpu/m68000/m68000.h"
#include "sound/2203intf.h"
#include "sound/okim6295.h"
#include "sound/msm5205.h"
#include "includes/goal92.h"
WRITE16_MEMBER(goal92_state::goal92_sound_command_w)
{
if (ACCESSING_BITS_8_15)
{
soundlatch_byte_w(space, 0, (data >> 8) & 0xff);
m_soundlatch->write(space, 0, (data >> 8) & 0xff);
m_audiocpu->set_input_line(0, HOLD_LINE);
}
}
@ -89,7 +88,7 @@ static ADDRESS_MAP_START( sound_cpu, AS_PROGRAM, 8, goal92_state )
AM_RANGE(0xe800, 0xe801) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
AM_RANGE(0xec00, 0xec01) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
AM_RANGE(0xf000, 0xf7ff) AM_RAM
AM_RANGE(0xf800, 0xf800) AM_READ(soundlatch_byte_r)
AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
ADDRESS_MAP_END
static INPUT_PORTS_START( goal92 )
@ -320,6 +319,8 @@ static MACHINE_CONFIG_START( goal92, goal92_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ym1", YM2203, 2500000/2)
MCFG_YM2203_IRQ_HANDLER(WRITELINE(goal92_state, irqhandler))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)

View File

@ -21,6 +21,7 @@ Notes:
#include "emu.h"
#include "cpu/z80/z80.h"
#include "machine/gen_latch.h"
#include "sound/2203intf.h"
#include "includes/goindol.h"
@ -81,7 +82,7 @@ static ADDRESS_MAP_START( goindol_map, AS_PROGRAM, 8, goindol_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("ram")
AM_RANGE(0xc800, 0xc800) AM_READNOP AM_WRITE(soundlatch_byte_w) // watchdog?
AM_RANGE(0xc800, 0xc800) AM_READNOP AM_DEVWRITE("soundlatch", generic_latch_8_device, write) // watchdog?
AM_RANGE(0xc810, 0xc810) AM_WRITE(goindol_bankswitch_w)
AM_RANGE(0xc820, 0xc820) AM_READ_PORT("DIAL")
AM_RANGE(0xc820, 0xd820) AM_WRITEONLY AM_SHARE("fg_scrolly")
@ -107,7 +108,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, goindol_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ymsnd", ym2203_device, write)
AM_RANGE(0xc000, 0xc7ff) AM_RAM
AM_RANGE(0xd800, 0xd800) AM_READ(soundlatch_byte_r)
AM_RANGE(0xd800, 0xd800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
ADDRESS_MAP_END
@ -256,6 +257,8 @@ static MACHINE_CONFIG_START( goindol, goindol_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/8) /* Confirmed pitch from recording */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
MACHINE_CONFIG_END

View File

@ -158,6 +158,7 @@
#include "emu.h"
#include "cpu/mb88xx/mb88xx.h"
#include "cpu/z80/z80.h"
#include "machine/gen_latch.h"
#include "sound/ay8910.h"
#include "includes/kangaroo.h"
@ -256,7 +257,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, kangaroo_state )
AM_RANGE(0xe000, 0xe3ff) AM_RAM
AM_RANGE(0xe400, 0xe400) AM_MIRROR(0x03ff) AM_READ_PORT("DSW0")
AM_RANGE(0xe800, 0xe80a) AM_MIRROR(0x03f0) AM_WRITE(kangaroo_video_control_w) AM_SHARE("video_control")
AM_RANGE(0xec00, 0xec00) AM_MIRROR(0x00ff) AM_READ_PORT("IN0") AM_WRITE(soundlatch_byte_w)
AM_RANGE(0xec00, 0xec00) AM_MIRROR(0x00ff) AM_READ_PORT("IN0") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
AM_RANGE(0xed00, 0xed00) AM_MIRROR(0x00ff) AM_READ_PORT("IN1") AM_WRITE(kangaroo_coin_counter_w)
AM_RANGE(0xee00, 0xee00) AM_MIRROR(0x00ff) AM_READ_PORT("IN2")
ADDRESS_MAP_END
@ -272,7 +273,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, kangaroo_state )
AM_RANGE(0x0000, 0x0fff) AM_ROM
AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x0c00) AM_RAM
AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x0fff) AM_READ(soundlatch_byte_r)
AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x0fff) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0x7000, 0x7000) AM_MIRROR(0x0fff) AM_DEVWRITE("aysnd", ay8910_device, data_w)
AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x0fff) AM_DEVWRITE("aysnd", ay8910_device, address_w)
ADDRESS_MAP_END
@ -282,7 +283,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_portmap, AS_IO, 8, kangaroo_state )
AM_RANGE(0x0000, 0x0fff) AM_ROM
AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x0c00) AM_RAM
AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x0fff) AM_READ(soundlatch_byte_r)
AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x0fff) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0x7000, 0x7000) AM_MIRROR(0x0fff) AM_DEVWRITE("aysnd", ay8910_device, data_w)
AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x0fff) AM_DEVWRITE("aysnd", ay8910_device, address_w)
ADDRESS_MAP_END
@ -447,6 +448,9 @@ static MACHINE_CONFIG_START( nomcu, kangaroo_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("aysnd", AY8910, MASTER_CLOCK/8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MACHINE_CONFIG_END

View File

@ -30,7 +30,6 @@ Updates:
#include "emu.h"
#include "cpu/z80/z80.h"
#include "cpu/m6800/m6800.h"
#include "sound/ay8910.h"
#include "sound/sn76496.h"
#include "includes/kncljoe.h"
@ -38,7 +37,7 @@ Updates:
WRITE8_MEMBER(kncljoe_state::sound_cmd_w)
{
if ((data & 0x80) == 0)
soundlatch_byte_w(space, 0, data & 0x7f);
m_soundlatch->write(space, 0, data & 0x7f);
else
m_soundcpu->set_input_line(0, ASSERT_LINE);
}
@ -70,24 +69,20 @@ WRITE8_MEMBER(kncljoe_state::m6803_port1_w)
WRITE8_MEMBER(kncljoe_state::m6803_port2_w)
{
ay8910_device *ay8910 = machine().device<ay8910_device>("aysnd");
/* write latch */
if ((m_port2 & 0x01) && !(data & 0x01))
{
/* control or data port? */
if (m_port2 & 0x08)
ay8910->data_address_w(space, m_port2 >> 2, m_port1);
m_ay8910->data_address_w(space, m_port2 >> 2, m_port1);
}
m_port2 = data;
}
READ8_MEMBER(kncljoe_state::m6803_port1_r)
{
ay8910_device *ay8910 = machine().device<ay8910_device>("aysnd");
if (m_port2 & 0x08)
return ay8910->data_r(space, 0);
return m_ay8910->data_r(space, 0);
return 0xff;
}
@ -286,8 +281,10 @@ static MACHINE_CONFIG_START( kncljoe, kncljoe_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("aysnd", AY8910, XTAL_3_579545MHz/4) /* verified on pcb */
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_WRITE_CB(WRITE8(kncljoe_state, unused_w))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)

View File

@ -48,7 +48,7 @@ INPUT_CHANGED_MEMBER(lasso_state::coin_inserted)
/* Write to the sound latch and generate an IRQ on the sound CPU */
WRITE8_MEMBER(lasso_state::sound_command_w)
{
soundlatch_byte_w(space, offset, data);
m_soundlatch->write(space, offset, data);
m_audiocpu->set_input_line(0, HOLD_LINE);
}
@ -93,7 +93,7 @@ static ADDRESS_MAP_START( lasso_audio_map, AS_PROGRAM, 8, lasso_state )
AM_RANGE(0xb000, 0xb000) AM_WRITEONLY AM_SHARE("chip_data")
AM_RANGE(0xb001, 0xb001) AM_WRITE(sound_select_w)
AM_RANGE(0xb004, 0xb004) AM_READ(sound_status_r)
AM_RANGE(0xb005, 0xb005) AM_READ(soundlatch_byte_r)
AM_RANGE(0xb005, 0xb005) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("audiocpu", 0x7000)
ADDRESS_MAP_END
@ -131,7 +131,7 @@ static ADDRESS_MAP_START( chameleo_audio_map, AS_PROGRAM, 8, lasso_state )
AM_RANGE(0xb000, 0xb000) AM_WRITEONLY AM_SHARE("chip_data")
AM_RANGE(0xb001, 0xb001) AM_WRITE(sound_select_w)
AM_RANGE(0xb004, 0xb004) AM_READ(sound_status_r)
AM_RANGE(0xb005, 0xb005) AM_READ(soundlatch_byte_r)
AM_RANGE(0xb005, 0xb005) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("audiocpu", 0x7000)
ADDRESS_MAP_END
@ -162,7 +162,7 @@ static ADDRESS_MAP_START( wwjgtin_audio_map, AS_PROGRAM, 8, lasso_state )
AM_RANGE(0xb001, 0xb001) AM_WRITE(sound_select_w)
AM_RANGE(0xb003, 0xb003) AM_DEVWRITE("dac", dac_device, write_unsigned8)
AM_RANGE(0xb004, 0xb004) AM_READ(sound_status_r)
AM_RANGE(0xb005, 0xb005) AM_READ(soundlatch_byte_r)
AM_RANGE(0xb005, 0xb005) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
ADDRESS_MAP_END
@ -196,7 +196,7 @@ static ADDRESS_MAP_START( pinbo_audio_io_map, AS_IO, 8, lasso_state )
AM_RANGE(0x02, 0x02) AM_DEVREAD("ay1", ay8910_device, data_r)
AM_RANGE(0x04, 0x05) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
AM_RANGE(0x06, 0x06) AM_DEVREAD("ay2", ay8910_device, data_r)
AM_RANGE(0x08, 0x08) AM_READ(soundlatch_byte_r) AM_WRITENOP /* ??? */
AM_RANGE(0x08, 0x08) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITENOP /* ??? */
AM_RANGE(0x14, 0x14) AM_WRITENOP /* ??? */
ADDRESS_MAP_END
@ -503,6 +503,8 @@ static MACHINE_CONFIG_START( base, lasso_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("sn76489.1", SN76489, 2000000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)

View File

@ -398,7 +398,7 @@ static ADDRESS_MAP_START( cupsocbl_sound_mem, AS_PROGRAM, 8, legionna_state )
AM_RANGE(0x8000, 0x87ff) AM_RAM
AM_RANGE(0x9000, 0x9000) AM_WRITE(okim_rombank_w)
AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r)
AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
ADDRESS_MAP_END
/*****************************************************************************/
@ -1500,6 +1500,8 @@ static MACHINE_CONFIG_START( cupsocbl, legionna_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END

View File

@ -74,7 +74,7 @@ Canvas Croquis, SNK 1984
Note:
The bproms(MB7054) was read as 74s572.
I have not tested this PCB yet so i have no idea if it's workin.
I have not tested this PCB yet so I have no idea if it's working.
All Bproms and P1-P8 is on top pcb, P9-P14 on bottom board, see pictures.
Documentation:
@ -123,7 +123,7 @@ void mainsnk_state::machine_start()
WRITE8_MEMBER(mainsnk_state::sound_command_w)
{
m_sound_cpu_busy = 1;
soundlatch_byte_w(space, 0, data);
m_soundlatch->write(space, 0, data);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
}
@ -159,7 +159,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, mainsnk_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, 0xc000) AM_READ(sound_ack_r)
AM_RANGE(0xe000, 0xe001) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
AM_RANGE(0xe002, 0xe003) AM_WRITENOP // ? always FFFF, snkwave leftover?
@ -412,6 +412,8 @@ static MACHINE_CONFIG_START( mainsnk, mainsnk_state )
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, 2000000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.35)

View File

@ -58,7 +58,7 @@ INTERRUPT_GEN_MEMBER(munchmo_state::mnchmobl_sound_irq)
WRITE8_MEMBER(munchmo_state::mnchmobl_soundlatch_w)
{
soundlatch_byte_w(space, 0, data);
m_soundlatch->write(space, 0, data);
m_audiocpu->set_input_line(0, HOLD_LINE );
}
@ -114,7 +114,7 @@ ADDRESS_MAP_END
/* memory map provided thru schematics */
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, munchmo_state )
AM_RANGE(0x0000, 0x1fff) AM_ROM
AM_RANGE(0x2000, 0x3fff) AM_READ(soundlatch_byte_r)
AM_RANGE(0x2000, 0x3fff) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0x4000, 0x4fff) AM_DEVWRITE("ay1", ay8910_device, data_w)
AM_RANGE(0x5000, 0x5fff) AM_DEVWRITE("ay1", ay8910_device, address_w)
AM_RANGE(0x6000, 0x6fff) AM_DEVWRITE("ay2", ay8910_device, data_w)
@ -345,7 +345,9 @@ static MACHINE_CONFIG_START( mnchmobl, munchmo_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
/* AY clock speeds confirmed to match known recording */
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
/* AY clock speeds confirmed to match known recording */
MCFG_SOUND_ADD("ay1", AY8910, XTAL_15MHz/4/2)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)

View File

@ -28,7 +28,7 @@
* The Crosshatch switch only works on the title screen
* The Service Mode switch, which displays the total number of
credits stored in the NVRAM, only works on the "Start Game"
screen after a coin has been insered. Hold down the key to
screen after a coin has been inserted. Hold down the key to
display the coin count
* The schematics mixed up port A and B on both AY-8910
@ -72,6 +72,7 @@
#include "cpu/m6809/m6809.h"
#include "sound/ay8910.h"
#include "sound/dac.h"
#include "machine/gen_latch.h"
#include "machine/nvram.h"
@ -100,7 +101,10 @@ public:
m_mc6845(*this, "crtc"),
m_palette(*this, "palette"),
m_pia1(*this, "pia1"),
m_pia2(*this, "pia2") { }
m_pia2(*this, "pia2"),
m_soundlatch(*this, "soundlatch"),
m_soundlatch2(*this, "soundlatch2"),
m_soundlatch3(*this, "soundlatch3") { }
/* memory pointers */
required_shared_ptr<UINT8> m_videoram1;
@ -123,6 +127,9 @@ public:
required_device<palette_device> m_palette;
required_device<pia6821_device> m_pia1;
required_device<pia6821_device> m_pia2;
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_WRITE8_MEMBER(audio_1_command_w);
DECLARE_WRITE8_MEMBER(audio_1_answer_w);
@ -355,14 +362,14 @@ WRITE_LINE_MEMBER(nyny_state::display_enable_changed)
WRITE8_MEMBER(nyny_state::audio_1_command_w)
{
soundlatch_byte_w(space, 0, data);
m_soundlatch->write(space, 0, data);
m_audiocpu->set_input_line(M6800_IRQ_LINE, HOLD_LINE);
}
WRITE8_MEMBER(nyny_state::audio_1_answer_w)
{
soundlatch3_byte_w(space, 0, data);
m_soundlatch3->write(space, 0, data);
m_maincpu->set_input_line(M6809_IRQ_LINE, HOLD_LINE);
}
@ -382,7 +389,7 @@ WRITE8_MEMBER(nyny_state::nyny_ay8910_37_port_a_w)
WRITE8_MEMBER(nyny_state::audio_2_command_w)
{
soundlatch2_byte_w(space, 0, (data & 0x60) >> 5);
m_soundlatch2->write(space, 0, (data & 0x60) >> 5);
m_audiocpu2->set_input_line(M6800_IRQ_LINE, BIT(data, 7) ? CLEAR_LINE : ASSERT_LINE);
}
@ -424,7 +431,7 @@ static ADDRESS_MAP_START( nyny_main_map, AS_PROGRAM, 8, nyny_state )
AM_RANGE(0xa100, 0xa100) AM_MIRROR(0x00fe) AM_DEVWRITE("crtc", mc6845_device, address_w)
AM_RANGE(0xa101, 0xa101) AM_MIRROR(0x00fe) AM_DEVWRITE("crtc", mc6845_device, register_w)
AM_RANGE(0xa200, 0xa20f) AM_MIRROR(0x00f0) AM_READWRITE(nyny_pia_1_2_r, nyny_pia_1_2_w)
AM_RANGE(0xa300, 0xa300) AM_MIRROR(0x00ff) AM_READ(soundlatch3_byte_r) AM_WRITE(audio_1_command_w)
AM_RANGE(0xa300, 0xa300) AM_MIRROR(0x00ff) AM_DEVREAD("soundlatch3", generic_latch_8_device, read) AM_WRITE(audio_1_command_w)
AM_RANGE(0xa400, 0xa7ff) AM_NOP
AM_RANGE(0xa800, 0xbfff) AM_ROM
AM_RANGE(0xc000, 0xdfff) AM_RAM
@ -436,7 +443,7 @@ static ADDRESS_MAP_START( nyny_audio_1_map, AS_PROGRAM, 8, nyny_state )
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
AM_RANGE(0x0000, 0x007f) AM_RAM /* internal RAM */
AM_RANGE(0x0080, 0x0fff) AM_NOP
AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x0fff) AM_READ(soundlatch_byte_r) AM_WRITE(audio_1_answer_w)
AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x0fff) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(audio_1_answer_w)
AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x0fff) AM_READ_PORT("SW3")
AM_RANGE(0x3000, 0x3000) AM_MIRROR(0x0ffc) AM_DEVREAD("ay1", ay8910_device, data_r)
AM_RANGE(0x3000, 0x3001) AM_MIRROR(0x0ffc) AM_DEVWRITE("ay1", ay8910_device, data_address_w)
@ -453,7 +460,7 @@ static ADDRESS_MAP_START( nyny_audio_2_map, AS_PROGRAM, 8, nyny_state )
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
AM_RANGE(0x0000, 0x007f) AM_RAM /* internal RAM */
AM_RANGE(0x0080, 0x0fff) AM_NOP
AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x0fff) AM_READ(soundlatch2_byte_r)
AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x0fff) AM_DEVREAD("soundlatch2", generic_latch_8_device, read)
AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x0ffe) AM_DEVREAD("ay3", ay8910_device, data_r)
AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x0ffe) AM_DEVWRITE("ay3", ay8910_device, data_address_w)
AM_RANGE(0x3000, 0x6fff) AM_NOP
@ -632,6 +639,10 @@ static MACHINE_CONFIG_START( nyny, nyny_state )
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
MCFG_GENERIC_LATCH_8_ADD("soundlatch3")
MCFG_SOUND_ADD("ay1", AY8910, AUDIO_CPU_1_CLOCK)
MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(nyny_state, nyny_ay8910_37_port_a_w))
MCFG_AY8910_PORT_B_WRITE_CB(DEVWRITE8("dac", dac_device, write_unsigned8))

View File

@ -20,7 +20,7 @@
WRITE16_MEMBER(prehisle_state::soundcmd_w)
{
soundlatch_byte_w(space, 0, data & 0xff);
m_soundlatch->write(space, 0, data & 0xff);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
}
@ -55,7 +55,7 @@ WRITE8_MEMBER(prehisle_state::D7759_upd_reset_w)
static ADDRESS_MAP_START( prehisle_sound_map, AS_PROGRAM, 8, prehisle_state )
AM_RANGE(0x0000, 0xefff) AM_ROM
AM_RANGE(0xf000, 0xf7ff) AM_RAM
AM_RANGE(0xf800, 0xf800) AM_READ(soundlatch_byte_r)
AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0xf800, 0xf800) AM_WRITENOP // ???
ADDRESS_MAP_END
@ -220,6 +220,8 @@ static MACHINE_CONFIG_START( prehisle, prehisle_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_4MHz) /* verified on pcb */
MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)

View File

@ -40,6 +40,7 @@ RAM = 4116 (x11)
#include "cpu/m6800/m6800.h"
#include "cpu/m6809/m6809.h"
#include "sound/ay8910.h"
#include "machine/gen_latch.h"
#include "machine/nvram.h"
@ -58,7 +59,9 @@ public:
m_colorram(*this, "colorram"),
m_maincpu(*this, "maincpu"),
m_palette(*this, "palette"),
m_audiocpu(*this, "audiocpu") { }
m_audiocpu(*this, "audiocpu"),
m_soundlatch(*this, "soundlatch"),
m_soundlatch2(*this, "soundlatch2") { }
required_shared_ptr<UINT8> m_videoram;
required_shared_ptr<UINT8> m_colorram;
@ -86,6 +89,8 @@ public:
required_device<cpu_device> m_maincpu;
required_device<palette_device> m_palette;
required_device<cpu_device> m_audiocpu;
required_device<generic_latch_8_device> m_soundlatch;
required_device<generic_latch_8_device> m_soundlatch2;
};
@ -126,7 +131,7 @@ WRITE_LINE_MEMBER(r2dtank_state::main_cpu_irq)
READ8_MEMBER(r2dtank_state::audio_command_r)
{
UINT8 ret = soundlatch_byte_r(space, 0);
UINT8 ret = m_soundlatch->read(space, 0);
if (LOG_AUDIO_COMM) logerror("%08X CPU#1 Audio Command Read: %x\n", space.device().safe_pc(), ret);
@ -136,7 +141,7 @@ if (LOG_AUDIO_COMM) logerror("%08X CPU#1 Audio Command Read: %x\n", space.devi
WRITE8_MEMBER(r2dtank_state::audio_command_w)
{
soundlatch_byte_w(space, 0, ~data);
m_soundlatch->write(space, 0, ~data);
m_audiocpu->set_input_line(M6800_IRQ_LINE, HOLD_LINE);
if (LOG_AUDIO_COMM) logerror("%08X CPU#0 Audio Command Write: %x\n", space.device().safe_pc(), data^0xff);
@ -145,7 +150,7 @@ if (LOG_AUDIO_COMM) logerror("%08X CPU#0 Audio Command Write: %x\n", space.de
READ8_MEMBER(r2dtank_state::audio_answer_r)
{
UINT8 ret = soundlatch2_byte_r(space, 0);
UINT8 ret = m_soundlatch2->read(space, 0);
if (LOG_AUDIO_COMM) logerror("%08X CPU#0 Audio Answer Read: %x\n", space.device().safe_pc(), ret);
return ret;
@ -158,7 +163,7 @@ WRITE8_MEMBER(r2dtank_state::audio_answer_w)
if (space.device().safe_pc() == 0xfb12)
data = 0x00;
soundlatch2_byte_w(space, 0, data);
m_soundlatch2->write(space, 0, data);
m_maincpu->set_input_line(M6809_IRQ_LINE, HOLD_LINE);
if (LOG_AUDIO_COMM) logerror("%08X CPU#1 Audio Answer Write: %x\n", space.device().safe_pc(), data);
@ -484,6 +489,9 @@ static MACHINE_CONFIG_START( r2dtank, r2dtank_state )
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
MCFG_SOUND_ADD("ay1", AY8910, (4000000 / 4))
MCFG_AY8910_PORT_A_READ_CB(IOPORT("DSWB"))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)

View File

@ -77,7 +77,7 @@
****************************************************************************
See also sega.c for the Sega G-80 Vector games.
See also segag80v.cpp for the Sega G-80 Vector games.
Many thanks go to Dave Fish for the fine detective work he did into the
G-80 security chips (315-0064, 315-0070, 315-0076, 315-0082) which provided
@ -283,7 +283,7 @@ WRITE8_MEMBER(segag80r_state::coin_count_w)
WRITE8_MEMBER(segag80r_state::sindbadm_soundport_w)
{
soundlatch_byte_w(space, 0, data);
m_soundlatch->write(space, 0, data);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(50));
}
@ -371,7 +371,7 @@ static ADDRESS_MAP_START( sindbadm_sound_map, AS_PROGRAM, 8, segag80r_state )
AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x1800) AM_RAM
AM_RANGE(0xa000, 0xa003) AM_MIRROR(0x1ffc) AM_WRITE(sindbadm_sn1_SN76496_w)
AM_RANGE(0xc000, 0xc003) AM_MIRROR(0x1ffc) AM_WRITE(sindbadm_sn2_SN76496_w)
AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1fff) AM_READ(soundlatch_byte_r)
AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1fff) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
ADDRESS_MAP_END
@ -933,6 +933,8 @@ static MACHINE_CONFIG_DERIVED( sindbadm, g80r_base )
MCFG_CPU_PROGRAM_MAP(sindbadm_sound_map)
MCFG_CPU_PERIODIC_INT_DRIVER(segag80r_state, irq0_line_hold, 4*60)
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
/* sound hardware */
MCFG_SOUND_ADD("sn1", SN76496, SINDBADM_SOUND_CLOCK/4)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)

View File

@ -17,7 +17,6 @@
#include "emu.h"
#include "includes/segahang.h"
#include "machine/segaic16.h"
#include "machine/fd1089.h"
#include "machine/fd1094.h"
#include "sound/2203intf.h"
@ -306,7 +305,7 @@ READ8_MEMBER( segahang_state::sound_data_r )
{
// assert ACK
m_i8255_1->pc6_w(CLEAR_LINE);
return soundlatch_read();
return m_soundlatch->read(space, 0);
}
@ -775,7 +774,7 @@ static MACHINE_CONFIG_START( shared_base, segahang_state )
MCFG_QUANTUM_TIME(attotime::from_hz(6000))
MCFG_DEVICE_ADD("i8255_1", I8255, 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(segahang_state, video_lamps_w))
MCFG_I8255_OUT_PORTC_CB(WRITE8(segahang_state, tilemap_sound_w))
@ -795,6 +794,8 @@ static MACHINE_CONFIG_START( shared_base, segahang_state )
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK_25MHz/4, 400, 0, 320, 262, 0, 224)
MCFG_SCREEN_UPDATE_DRIVER(segahang_state, screen_update)
MCFG_SCREEN_PALETTE("palette")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MACHINE_CONFIG_END

View File

@ -30,6 +30,7 @@ Also seem to be running on the same/similar hardware:
#include "emu.h"
#include "cpu/m68000/m68000.h"
#include "cpu/z80/z80.h"
#include "machine/gen_latch.h"
#include "machine/nvram.h"
#include "sound/2612intf.h"
#include "video/hd63484.h"
@ -43,7 +44,8 @@ public:
segajw_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_audiocpu(*this, "audiocpu"),
m_soundlatch(*this, "soundlatch")
{ }
DECLARE_READ16_MEMBER(coin_counter_r);
@ -64,6 +66,7 @@ protected:
// devices
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
required_device<generic_latch_8_device> m_soundlatch;
// driver_device overrides
virtual void machine_start() override;
@ -131,7 +134,7 @@ WRITE16_MEMBER(segajw_state::coinlockout_w)
WRITE8_MEMBER(segajw_state::audiocpu_cmd_w)
{
soundlatch_byte_w(space, 0, data);
m_soundlatch->write(space, 0, data);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
}
@ -190,7 +193,7 @@ static ADDRESS_MAP_START( segajw_map, AS_PROGRAM, 16, segajw_state )
AM_RANGE(0x080002, 0x080003) AM_DEVREADWRITE("hd63484", hd63484_device, data_r, data_w)
AM_RANGE(0x180000, 0x180001) AM_READ_PORT("DSW0")
AM_RANGE(0x180004, 0x180005) AM_READWRITE8(soundlatch2_byte_r, audiocpu_cmd_w, 0x00ff)
AM_RANGE(0x180004, 0x180005) AM_DEVREAD8("soundlatch2", generic_latch_8_device, read, 0x00ff) AM_WRITE8(audiocpu_cmd_w, 0x00ff)
AM_RANGE(0x180008, 0x180009) AM_READ_PORT("DSW1")
AM_RANGE(0x18000a, 0x18000b) AM_READ_PORT("DSW3")
AM_RANGE(0x18000c, 0x18000d) AM_READ_PORT("DSW2")
@ -223,7 +226,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( segajw_audiocpu_io_map, AS_IO, 8, segajw_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("ymsnd", ym3438_device, read, write)
AM_RANGE(0xc0, 0xc0) AM_READWRITE(soundlatch_byte_r, soundlatch2_byte_w)
AM_RANGE(0xc0, 0xc0) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
ADDRESS_MAP_END
static ADDRESS_MAP_START( segajw_hd63484_map, AS_0, 16, segajw_state )
@ -416,6 +419,10 @@ static MACHINE_CONFIG_START( segajw, segajw_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
MCFG_SOUND_ADD("ymsnd", YM3438, 8000000) // unknown clock
MCFG_YM2612_IRQ_HANDLER(INPUTLINE("maincpu", 5))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)

View File

@ -274,7 +274,6 @@ Notes:
#include "emu.h"
#include "includes/segaorun.h"
#include "machine/fd1089.h"
#include "machine/segaic16.h"
#include "sound/2151intf.h"
#include "sound/segapcm.h"
#include "includes/segaipt.h"
@ -550,7 +549,7 @@ WRITE16_MEMBER( segaorun_state::nop_w )
READ8_MEMBER( segaorun_state::sound_data_r )
{
m_soundcpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
return soundlatch_read();
return m_soundlatch->read(space, 0);
}
@ -587,7 +586,7 @@ void segaorun_state::device_timer(emu_timer &timer, device_timer_id id, int para
switch (id)
{
case TID_SOUND_WRITE:
soundlatch_write(param);
m_soundlatch->write(m_soundcpu->space(AS_PROGRAM), 0, param);
m_soundcpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
break;
@ -1197,6 +1196,8 @@ static MACHINE_CONFIG_START( outrun_base, segaorun_state )
// sound hardware
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK/4)
MCFG_SOUND_ROUTE(0, "lspeaker", 0.43)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.43)

View File

@ -315,7 +315,7 @@ READ8_MEMBER( segas16a_state::sound_data_r )
{
// assert ACK
m_i8255->pc6_w(CLEAR_LINE);
return soundlatch_read();
return m_soundlatch->read(space, 0);
}
@ -1911,7 +1911,7 @@ static MACHINE_CONFIG_START( system16a, segas16a_state )
MCFG_WATCHDOG_ADD("watchdog")
MCFG_DEVICE_ADD("i8255", I8255, 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(segas16a_state, misc_control_w))
MCFG_I8255_OUT_PORTC_CB(WRITE8(segas16a_state, tilemap_sound_w))
@ -1933,6 +1933,8 @@ static MACHINE_CONFIG_START( system16a, segas16a_state )
// sound hardware
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", 4000000)
MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(segas16a_state, n7751_control_w))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.43)

View File

@ -870,7 +870,6 @@ S11 S13 S15 S17 |EPR12194 - - - EPR12195 - -
#include "emu.h"
#include "includes/segas16b.h"
#include "machine/segaic16.h"
#include "machine/mc8123.h"
#include "includes/segaipt.h"
#include "sound/okim6295.h"
@ -983,7 +982,8 @@ UINT8 segas16b_state::mapper_sound_r()
void segas16b_state::mapper_sound_w(UINT8 data)
{
soundlatch_write(data & 0xff);
if (m_soundlatch != nullptr)
m_soundlatch->write(m_soundcpu->space(AS_PROGRAM), 0, data & 0xff);
if (m_soundcpu != nullptr)
m_soundcpu->set_input_line(0, HOLD_LINE);
}
@ -1775,7 +1775,7 @@ static ADDRESS_MAP_START( lockonph_map, AS_PROGRAM, 16, segas16b_state )
AM_RANGE(0xC42000, 0xC42001) AM_READ_PORT("DSW1")
AM_RANGE(0xC42002, 0xC42003) AM_READ_PORT("DSW2")
AM_RANGE(0x777706, 0x777707) AM_WRITE(sound_w16) // AM_WRITE8(soundlatch_byte_w, 0xff00)
AM_RANGE(0x777706, 0x777707) AM_WRITE(sound_w16) // AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0xff00)
AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_SHARE("workram")
ADDRESS_MAP_END
@ -1810,7 +1810,7 @@ ADDRESS_MAP_END
*/
static ADDRESS_MAP_START( fpointbl_sound_map, AS_PROGRAM, 8, segas16b_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch_byte_r)
AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0xf800, 0xffff) AM_RAM
ADDRESS_MAP_END
@ -1834,7 +1834,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, segas16b_state )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0xdfff) AM_ROMBANK("soundbank")
AM_RANGE(0xe800, 0xe800) AM_READ(soundlatch_byte_r)
AM_RANGE(0xe800, 0xe800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0xf800, 0xffff) AM_RAM
ADDRESS_MAP_END
@ -1850,7 +1850,7 @@ static ADDRESS_MAP_START( sound_portmap, AS_IO, 8, segas16b_state )
AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ym2151", ym2151_device, read, write)
AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_WRITE(upd7759_control_w)
AM_RANGE(0x80, 0x80) AM_MIRROR(0x3f) AM_READ(upd7759_status_r) AM_DEVWRITE("upd", upd7759_device, port_w)
AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x3f) AM_READ(soundlatch_byte_r)
AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x3f) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
ADDRESS_MAP_END
// similar to whizz / other philko games in sidearms.cpp, but with the m6295
@ -1865,7 +1865,7 @@ static ADDRESS_MAP_START( lockonph_sound_iomap, AS_IO, 8, segas16b_state )
AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
AM_RANGE(0x40, 0x40) AM_WRITENOP // ??
AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki", okim6295_device, read, write)
AM_RANGE(0xc0, 0xc0) AM_READ(soundlatch_byte_r)
AM_RANGE(0xc0, 0xc0) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
ADDRESS_MAP_END
@ -3606,6 +3606,8 @@ static MACHINE_CONFIG_START( system16b, segas16b_state )
// sound hardware
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ym2151", MASTER_CLOCK_8MHz/2)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.43)
@ -3755,6 +3757,8 @@ static MACHINE_CONFIG_START( lockonph, segas16b_state )
// sound hardware
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", XTAL_16MHz/4) // ??
// MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", 0)) // does set up the timer, but end up with no sound?
MCFG_SOUND_ROUTE(0, "mono", 0.5)
@ -3779,6 +3783,7 @@ static MACHINE_CONFIG_DERIVED( atomicp, system16b ) // 10MHz CPU Clock verified
MCFG_DEVICE_REMOVE("sprites")
// sound hardware
MCFG_DEVICE_REMOVE("soundlatch")
MCFG_DEVICE_REMOVE("ym2151")
MCFG_SOUND_ADD("ym2413", YM2413, XTAL_20MHz/4) // 20MHz OSC divided by 4 (verified)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)

View File

@ -30,7 +30,6 @@
***************************************************************************/
#include "emu.h"
#include "machine/segaic16.h"
#include "machine/nvram.h"
#include "includes/segas18.h"
#include "sound/2612intf.h"
@ -129,7 +128,7 @@ UINT8 segas18_state::mapper_sound_r()
void segas18_state::mapper_sound_w(UINT8 data)
{
soundlatch_write(data & 0xff);
m_soundlatch->write(m_soundcpu->space(AS_PROGRAM), 0, data & 0xff);
m_soundcpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
}
@ -551,7 +550,7 @@ static ADDRESS_MAP_START( sound_portmap, AS_IO, 8, segas18_state )
AM_RANGE(0x80, 0x83) AM_MIRROR(0x0c) AM_DEVREADWRITE("ym1", ym3438_device, read, write)
AM_RANGE(0x90, 0x93) AM_MIRROR(0x0c) AM_DEVREADWRITE("ym2", ym3438_device, read, write)
AM_RANGE(0xa0, 0xa0) AM_MIRROR(0x1f) AM_WRITE(soundbank_w)
AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x1f) AM_READ(soundlatch_byte_r) AM_WRITE(mcu_data_w)
AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x1f) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(mcu_data_w)
ADDRESS_MAP_END
@ -1251,6 +1250,8 @@ static MACHINE_CONFIG_START( system18, segas18_state )
// sound hardware
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ym1", YM3438, 8000000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
MCFG_YM2612_IRQ_HANDLER(WRITELINE(segas18_state, ym3438_irq_handler))

View File

@ -261,10 +261,7 @@ ROMs:
***************************************************************************/
#include "emu.h"
#include "cpu/z80/z80.h"
#include "includes/segaxbd.h"
#include "cpu/m68000/m68000.h"
#include "machine/segaic16.h"
#include "machine/nvram.h"
#include "sound/2151intf.h"
#include "sound/segapcm.h"
@ -284,6 +281,7 @@ segaxbd_state::segaxbd_state(const machine_config &mconfig, const char *tag, dev
m_sprites(*this, "sprites"),
m_segaic16vid(*this, "segaic16vid"),
m_segaic16road(*this, "segaic16road"),
m_soundlatch(*this, "soundlatch"),
m_subram0(*this, "subram0"),
m_road_priority(1),
m_scanline_timer(nullptr),
@ -300,8 +298,6 @@ segaxbd_state::segaxbd_state(const machine_config &mconfig, const char *tag, dev
memset(m_adc_reverse, 0, sizeof(m_adc_reverse));
memset(m_iochip_regs, 0, sizeof(m_iochip_regs));
palette_init();
memset(m_latched_value, 0, sizeof(m_latched_value));
memset(m_latch_read, 0, sizeof(m_latch_read));
}
@ -773,7 +769,7 @@ WRITE16_MEMBER( segaxbd_state::smgp_excs_w )
READ8_MEMBER( segaxbd_state::sound_data_r )
{
m_soundcpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
return soundlatch_read();
return m_soundlatch->read(space, 0);
}
@ -791,7 +787,7 @@ void segaxbd_state::device_timer(emu_timer &timer, device_timer_id id, int param
switch (id)
{
case TID_SOUND_WRITE:
soundlatch_write(param);
m_soundlatch->write(m_soundcpu->space(AS_PROGRAM), 0, param);
m_soundcpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
// if an extra sound board is attached, do an nmi there as well
@ -1858,6 +1854,8 @@ static MACHINE_CONFIG_FRAGMENT( xboard )
// sound hardware
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK/4)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", 0))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.43)

View File

@ -57,11 +57,8 @@ MB89372 - Uses 3 serial data transfer protocols: ASYNC, COP & BOP. Has a built
***************************************************************************/
#include "emu.h"
#include "cpu/z80/z80.h"
#include "includes/segaybd.h"
#include "cpu/m68000/m68000.h"
#include "machine/mb8421.h"
#include "machine/segaic16.h"
#include "machine/nvram.h"
#include "sound/2151intf.h"
#include "sound/segapcm.h"
@ -257,7 +254,7 @@ WRITE16_MEMBER( segaybd_state::sound_data_w )
READ8_MEMBER( segaybd_state::sound_data_r )
{
m_soundcpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
return soundlatch_read();
return m_soundlatch->read(space, 0);
}
@ -373,7 +370,7 @@ void segaybd_state::device_timer(emu_timer &timer, device_timer_id id, int param
break;
case TID_SOUND_WRITE:
soundlatch_write(param);
m_soundlatch->write(m_soundcpu->space(AS_PROGRAM), 0, param);
m_soundcpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
break;
@ -1409,6 +1406,8 @@ static MACHINE_CONFIG_START( yboard, segaybd_state )
// sound hardware
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", SOUND_CLOCK/8)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", 0))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.43)

View File

@ -1559,11 +1559,11 @@ WRITE16_MEMBER(seta_state::sub_ctrl_w)
break;
case 4/2: // not sure
if (ACCESSING_BITS_0_7) soundlatch_byte_w(space, 0, data & 0xff);
if (ACCESSING_BITS_0_7) if(m_soundlatch != nullptr) m_soundlatch->write(space, 0, data & 0xff);
break;
case 6/2: // not sure
if (ACCESSING_BITS_0_7) soundlatch2_byte_w(space, 0, data & 0xff);
if (ACCESSING_BITS_0_7) if(m_soundlatch2 != nullptr) m_soundlatch2->write(space, 0, data & 0xff);
break;
}
@ -1708,7 +1708,7 @@ WRITE16_MEMBER(seta_state::calibr50_soundlatch_w)
{
if (ACCESSING_BITS_0_7)
{
soundlatch_word_w(space, 0, data, mem_mask);
m_soundlatch->write(space, 0, data & 0xff);
m_subcpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
space.device().execute().spin_until_time(attotime::from_usec(50)); // Allow the other cpu to reply
}
@ -1733,7 +1733,7 @@ static ADDRESS_MAP_START( calibr50_map, AS_PROGRAM, 16, seta_state )
/**/AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16)
AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr
AM_RANGE(0xb00000, 0xb00001) AM_READ(soundlatch2_word_r) AM_WRITE(calibr50_soundlatch_w) // From Sub CPU
AM_RANGE(0xb00000, 0xb00001) AM_DEVREAD8("soundlatch2", generic_latch_8_device, read, 0x00ff) AM_WRITE(calibr50_soundlatch_w) // From Sub CPU
/**/AM_RANGE(0xc00000, 0xc00001) AM_RAM // ? $4000
ADDRESS_MAP_END
@ -2890,7 +2890,7 @@ WRITE16_MEMBER(seta_state::utoukond_soundlatch_w)
if (ACCESSING_BITS_0_7)
{
m_audiocpu->set_input_line(0, HOLD_LINE);
soundlatch_byte_w(space, 0, data & 0xff);
m_soundlatch->write(space, 0, data & 0xff);
}
}
@ -3145,8 +3145,8 @@ READ8_MEMBER(seta_state::ff_r){return 0xff;}
static ADDRESS_MAP_START( tndrcade_sub_map, AS_PROGRAM, 8, seta_state )
AM_RANGE(0x0000, 0x01ff) AM_RAM // RAM
AM_RANGE(0x0800, 0x0800) AM_READ(ff_r) // ? (bits 0/1/2/3: 1 -> do test 0-ff/100-1e0/5001-57ff/banked rom)
//AM_RANGE(0x0800, 0x0800) AM_READ(soundlatch_byte_r) //
//AM_RANGE(0x0801, 0x0801) AM_READ(soundlatch2_byte_r) //
//AM_RANGE(0x0800, 0x0800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) //
//AM_RANGE(0x0801, 0x0801) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) //
AM_RANGE(0x1000, 0x1000) AM_READ_PORT("P1") // P1
AM_RANGE(0x1000, 0x1000) AM_WRITE(sub_bankswitch_lockout_w) // ROM Bank + Coin Lockout
AM_RANGE(0x1001, 0x1001) AM_READ_PORT("P2") // P2
@ -3166,8 +3166,8 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( twineagl_sub_map, AS_PROGRAM, 8, seta_state )
AM_RANGE(0x0000, 0x01ff) AM_RAM // RAM
AM_RANGE(0x0800, 0x0800) AM_READ(soundlatch_byte_r) //
AM_RANGE(0x0801, 0x0801) AM_READ(soundlatch2_byte_r) //
AM_RANGE(0x0800, 0x0800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) //
AM_RANGE(0x0801, 0x0801) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) //
AM_RANGE(0x1000, 0x1000) AM_READ_PORT("P1") // P1
AM_RANGE(0x1000, 0x1000) AM_WRITE(sub_bankswitch_lockout_w) // ROM Bank + Coin Lockout
AM_RANGE(0x1001, 0x1001) AM_READ_PORT("P2") // P2
@ -3208,8 +3208,8 @@ READ8_MEMBER(seta_state::downtown_ip_r)
static ADDRESS_MAP_START( downtown_sub_map, AS_PROGRAM, 8, seta_state )
AM_RANGE(0x0000, 0x01ff) AM_RAM // RAM
AM_RANGE(0x0800, 0x0800) AM_READ(soundlatch_byte_r) //
AM_RANGE(0x0801, 0x0801) AM_READ(soundlatch2_byte_r) //
AM_RANGE(0x0800, 0x0800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) //
AM_RANGE(0x0801, 0x0801) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) //
AM_RANGE(0x1000, 0x1007) AM_READ(downtown_ip_r) // Input Ports
AM_RANGE(0x1000, 0x1000) AM_WRITE(sub_bankswitch_lockout_w) // ROM Bank + Coin Lockout
AM_RANGE(0x5000, 0x57ff) AM_RAM AM_SHARE("sharedram") // Shared RAM
@ -3231,13 +3231,13 @@ MACHINE_RESET_MEMBER(seta_state,calibr50)
WRITE8_MEMBER(seta_state::calibr50_soundlatch2_w)
{
soundlatch2_byte_w(space,0,data);
m_soundlatch2->write(space,0,data);
space.device().execute().spin_until_time(attotime::from_usec(50)); // Allow the other cpu to reply
}
static ADDRESS_MAP_START( calibr50_sub_map, AS_PROGRAM, 8, seta_state )
AM_RANGE(0x0000, 0x1fff) AM_DEVREADWRITE("x1snd", x1_010_device, read ,write) // Sound
AM_RANGE(0x4000, 0x4000) AM_READ(soundlatch_byte_r) // From Main CPU
AM_RANGE(0x4000, 0x4000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // From Main CPU
AM_RANGE(0x4000, 0x4000) AM_WRITE(sub_bankswitch_w) // Bankswitching
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") // Banked ROM
AM_RANGE(0xc000, 0xffff) AM_ROM // ROM
@ -3251,8 +3251,8 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( metafox_sub_map, AS_PROGRAM, 8, seta_state )
AM_RANGE(0x0000, 0x01ff) AM_RAM // RAM
AM_RANGE(0x0800, 0x0800) AM_READ(soundlatch_byte_r) //
AM_RANGE(0x0801, 0x0801) AM_READ(soundlatch2_byte_r) //
AM_RANGE(0x0800, 0x0800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) //
AM_RANGE(0x0801, 0x0801) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) //
AM_RANGE(0x1000, 0x1000) AM_READ_PORT("COINS") // Coins
AM_RANGE(0x1000, 0x1000) AM_WRITE(sub_bankswitch_lockout_w) // ROM Bank + Coin Lockout
AM_RANGE(0x1002, 0x1002) AM_READ_PORT("P1") // P1
@ -3279,7 +3279,7 @@ static ADDRESS_MAP_START( utoukond_sound_io_map, AS_IO, 8, seta_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym3438_device, read, write)
AM_RANGE(0x80, 0x80) AM_WRITENOP //?
AM_RANGE(0xc0, 0xc0) AM_READ(soundlatch_byte_r)
AM_RANGE(0xc0, 0xc0) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
ADDRESS_MAP_END
@ -7775,6 +7775,9 @@ static MACHINE_CONFIG_START( twineagl, seta_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
@ -7817,6 +7820,10 @@ static MACHINE_CONFIG_START( downtown, seta_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MACHINE_CONFIG_END
@ -7882,6 +7889,8 @@ static MACHINE_CONFIG_START( usclssic, seta_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */
MCFG_X1_010_ADDRESS(0x1000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
@ -7932,6 +7941,10 @@ static MACHINE_CONFIG_START( calibr50, seta_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */
MCFG_X1_010_ADDRESS(0x1000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
@ -7976,6 +7989,9 @@ static MACHINE_CONFIG_START( metafox, seta_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
@ -9292,6 +9308,8 @@ static MACHINE_CONFIG_START( utoukond, seta_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("x1snd", X1_010, 16000000)
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)

View File

@ -37,7 +37,6 @@ Notes:
#include "cpu/m68000/m68000.h"
#include "cpu/z80/z80.h"
#include "sound/ay8910.h"
#include "sound/okim6295.h"
#include "sound/2612intf.h"
#include "includes/shangha3.h"
@ -113,7 +112,7 @@ WRITE16_MEMBER(shangha3_state::heberpop_sound_command_w)
{
if (ACCESSING_BITS_0_7)
{
soundlatch_byte_w(space, 0, data & 0xff);
m_soundlatch->write(space, 0, data & 0xff);
m_audiocpu->set_input_line_and_vector(0, HOLD_LINE, 0xff); /* RST 38h */
}
}
@ -183,7 +182,7 @@ static ADDRESS_MAP_START( heberpop_sound_io_map, AS_IO, 8, shangha3_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym3438_device, read, write)
AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki", okim6295_device, read, write)
AM_RANGE(0xc0, 0xc0) AM_READ(soundlatch_byte_r)
AM_RANGE(0xc0, 0xc0) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
ADDRESS_MAP_END
@ -519,6 +518,8 @@ static MACHINE_CONFIG_START( heberpop, shangha3_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM3438, XTAL_48MHz/6) /* 8 MHz? */
MCFG_YM2612_IRQ_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_NMI))
MCFG_SOUND_ROUTE(0, "mono", 0.40)
@ -560,6 +561,8 @@ static MACHINE_CONFIG_START( blocken, shangha3_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM3438, XTAL_48MHz/6) /* 8 MHz? */
MCFG_YM2612_IRQ_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_NMI))
MCFG_SOUND_ROUTE(0, "mono", 0.40)

View File

@ -127,6 +127,7 @@
#include "cpu/m6809/m6809.h"
#include "machine/6840ptm.h"
#include "machine/6850acia.h"
#include "machine/gen_latch.h"
#include "machine/nvram.h"
#include "sound/3812intf.h"
#include "video/hd63484.h"
@ -334,7 +335,7 @@ static ADDRESS_MAP_START( jwildb52_map, AS_PROGRAM, 8, sigmab52_state )
// AM_RANGE(0xf770, 0xf77f) Bill validator
AM_RANGE(0xf780, 0xf780) AM_WRITE(audiocpu_cmd_irq_w)
AM_RANGE(0xf790, 0xf790) AM_WRITE(soundlatch_byte_w)
AM_RANGE(0xf790, 0xf790) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
AM_RANGE(0xf7b0, 0xf7b0) AM_WRITE(coin_enable_w)
AM_RANGE(0xf7d5, 0xf7d5) AM_WRITE(hopper_w)
@ -360,7 +361,7 @@ static ADDRESS_MAP_START( sound_prog_map, AS_PROGRAM, 8, sigmab52_state )
AM_RANGE(0x0000, 0x1fff) AM_RAM
AM_RANGE(0x6020, 0x6027) AM_DEVREADWRITE("6840ptm_2", ptm6840_device, read, write)
AM_RANGE(0x6030, 0x6030) AM_WRITE(audiocpu_irq_ack_w)
AM_RANGE(0x6050, 0x6050) AM_READ(soundlatch_byte_r)
AM_RANGE(0x6050, 0x6050) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0x6060, 0x6061) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write)
AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("audiocpu", 0)
ADDRESS_MAP_END
@ -605,6 +606,9 @@ static MACHINE_CONFIG_START( jwildb52, sigmab52_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM3812, AUX_CLOCK)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)

View File

@ -328,14 +328,14 @@ enum
WRITE8_MEMBER(snk_state::marvins_soundlatch_w)
{
m_marvins_sound_busy_flag = 1;
soundlatch_byte_w(space, offset, data);
m_soundlatch->write(space, offset, data);
m_audiocpu->set_input_line(0, HOLD_LINE);
}
READ8_MEMBER(snk_state::marvins_soundlatch_r)
{
m_marvins_sound_busy_flag = 0;
return soundlatch_byte_r(space, 0);
return m_soundlatch->read(space, 0);
}
CUSTOM_INPUT_MEMBER(snk_state::marvins_sound_busy)
@ -374,14 +374,14 @@ TIMER_CALLBACK_MEMBER(snk_state::sgladiat_sndirq_update_callback)
WRITE8_MEMBER(snk_state::sgladiat_soundlatch_w)
{
soundlatch_byte_w(space, offset, data);
m_soundlatch->write(space, offset, data);
machine().scheduler().synchronize(timer_expired_delegate(FUNC(snk_state::sgladiat_sndirq_update_callback),this), CMDIRQ_BUSY_ASSERT);
}
READ8_MEMBER(snk_state::sgladiat_soundlatch_r)
{
machine().scheduler().synchronize(timer_expired_delegate(FUNC(snk_state::sgladiat_sndirq_update_callback),this), BUSY_CLEAR);
return soundlatch_byte_r(space,0);
return m_soundlatch->read(space,0);
}
READ8_MEMBER(snk_state::sgladiat_sound_nmi_ack_r)
@ -474,7 +474,7 @@ WRITE_LINE_MEMBER(snk_state::ymirq_callback_2)
WRITE8_MEMBER(snk_state::snk_soundlatch_w)
{
soundlatch_byte_w(space, offset, data);
m_soundlatch->write(space, offset, data);
machine().scheduler().synchronize(timer_expired_delegate(FUNC(snk_state::sndirq_update_callback),this), CMDIRQ_BUSY_ASSERT);
}
@ -522,7 +522,7 @@ READ8_MEMBER(snk_state::tnk3_ymirq_ack_r)
READ8_MEMBER(snk_state::tnk3_busy_clear_r)
{
// it's uncertain whether the latch should be cleared here or when it's read
soundlatch_clear_byte_w(space, 0, 0);
m_soundlatch->clear_w(space, 0, 0);
machine().scheduler().synchronize(timer_expired_delegate(FUNC(snk_state::sndirq_update_callback),this), BUSY_CLEAR);
return 0xff;
}
@ -1410,7 +1410,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( tnk3_YM3526_sound_map, AS_PROGRAM, 8, snk_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, 0xc000) AM_READ(tnk3_busy_clear_r)
AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ym1", ym3526_device, read, write)
AM_RANGE(0xe004, 0xe004) AM_READ(tnk3_cmdirq_ack_r)
@ -1420,7 +1420,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( aso_YM3526_sound_map, AS_PROGRAM, 8, snk_state )
AM_RANGE(0x0000, 0xbfff) AM_ROM
AM_RANGE(0xc000, 0xc7ff) AM_RAM
AM_RANGE(0xd000, 0xd000) AM_READ(soundlatch_byte_r)
AM_RANGE(0xd000, 0xd000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0xe000, 0xe000) AM_READ(tnk3_busy_clear_r)
AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ym1", ym3526_device, read, write)
// AM_RANGE(0xf002, 0xf002) AM_READNOP unknown
@ -1431,7 +1431,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( YM3526_YM3526_sound_map, AS_PROGRAM, 8, snk_state )
AM_RANGE(0x0000, 0xbfff) AM_ROM
AM_RANGE(0xc000, 0xcfff) AM_RAM
AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch_byte_r)
AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0xe800, 0xe800) AM_DEVREADWRITE("ym1", ym3526_device, status_port_r, control_port_w)
AM_RANGE(0xec00, 0xec00) AM_DEVWRITE("ym1", ym3526_device, write_port_w)
AM_RANGE(0xf000, 0xf000) AM_DEVREADWRITE("ym2", ym3526_device, status_port_r, control_port_w)
@ -1442,7 +1442,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( YM3812_sound_map, AS_PROGRAM, 8, snk_state )
AM_RANGE(0x0000, 0xbfff) AM_ROM
AM_RANGE(0xc000, 0xcfff) AM_RAM
AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch_byte_r)
AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0xe800, 0xe800) AM_DEVREADWRITE("ym1", ym3812_device, status_port_r, control_port_w)
AM_RANGE(0xec00, 0xec00) AM_DEVWRITE("ym1", ym3812_device, write_port_w)
AM_RANGE(0xf800, 0xf800) AM_READWRITE(snk_sound_status_r, snk_sound_status_w)
@ -1451,7 +1451,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( YM3526_Y8950_sound_map, AS_PROGRAM, 8, snk_state )
AM_RANGE(0x0000, 0xbfff) AM_ROM
AM_RANGE(0xc000, 0xcfff) AM_RAM
AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch_byte_r)
AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0xe800, 0xe800) AM_DEVREADWRITE("ym1", ym3526_device, status_port_r, control_port_w)
AM_RANGE(0xec00, 0xec00) AM_DEVWRITE("ym1", ym3526_device, write_port_w)
AM_RANGE(0xf000, 0xf000) AM_DEVREADWRITE("ym2", y8950_device, status_port_r, control_port_w)
@ -1462,7 +1462,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( YM3812_Y8950_sound_map, AS_PROGRAM, 8, snk_state )
AM_RANGE(0x0000, 0xbfff) AM_ROM
AM_RANGE(0xc000, 0xcfff) AM_RAM
AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch_byte_r)
AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0xe800, 0xe800) AM_DEVREADWRITE("ym1", ym3812_device, status_port_r, control_port_w)
AM_RANGE(0xec00, 0xec00) AM_DEVWRITE("ym1", ym3812_device, write_port_w)
AM_RANGE(0xf000, 0xf000) AM_DEVREADWRITE("ym2", y8950_device, status_port_r, control_port_w)
@ -1473,7 +1473,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( Y8950_sound_map, AS_PROGRAM, 8, snk_state )
AM_RANGE(0x0000, 0xbfff) AM_ROM
AM_RANGE(0xc000, 0xcfff) AM_RAM
AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch_byte_r)
AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0xf000, 0xf000) AM_DEVREADWRITE("ym2", y8950_device, status_port_r, control_port_w)
AM_RANGE(0xf400, 0xf400) AM_DEVWRITE("ym2", y8950_device, write_port_w)
AM_RANGE(0xf800, 0xf800) AM_READWRITE(snk_sound_status_r, snk_sound_status_w)
@ -3643,6 +3643,8 @@ static MACHINE_CONFIG_START( marvins, snk_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, 2000000) /* verified on schematics */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.35)
@ -3713,6 +3715,8 @@ static MACHINE_CONFIG_START( jcross, snk_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, 2000000) /* NOT verified */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.35)
@ -3792,6 +3796,8 @@ static MACHINE_CONFIG_START( tnk3, snk_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ym1", YM3526, XTAL_8MHz/2) /* verified on pcb */
MCFG_YM3526_IRQ_HANDLER(WRITELINE(snk_state, ymirq_callback_1))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0)
@ -3881,6 +3887,8 @@ static MACHINE_CONFIG_START( ikari, snk_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ym1", YM3526, XTAL_8MHz/2) /* verified on pcb */
MCFG_YM3526_IRQ_HANDLER(WRITELINE(snk_state, ymirq_callback_1))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0)
@ -3936,6 +3944,8 @@ static MACHINE_CONFIG_START( bermudat, snk_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ym1", YM3526, XTAL_8MHz/2) /* verified on pcb */
MCFG_YM3526_IRQ_HANDLER(WRITELINE(snk_state, ymirq_callback_1))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0)
@ -4034,6 +4044,8 @@ static MACHINE_CONFIG_START( tdfever, snk_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ym1", YM3526, 4000000)
MCFG_YM3526_IRQ_HANDLER(WRITELINE(snk_state, ymirq_callback_1))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)

View File

@ -97,7 +97,7 @@ WRITE16_MEMBER(snk68_state::sound_w)
{
if (ACCESSING_BITS_8_15)
{
soundlatch_byte_w(space, 0, data >> 8);
m_soundlatch->write(space, 0, data >> 8);
m_soundcpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
}
}
@ -136,7 +136,7 @@ static ADDRESS_MAP_START( searchar_map, AS_PROGRAM, 16, snk68_state )
// AM_RANGE(0x0f0000, 0x0f0001) AM_WRITENOP /* ?? */
AM_RANGE(0x0f0000, 0x0f0001) AM_READ_PORT("DSW1")
AM_RANGE(0x0f0008, 0x0f0009) AM_READ_PORT("DSW2")
AM_RANGE(0x0f8000, 0x0f8001) AM_READ8(soundlatch2_byte_r, 0xff00)
AM_RANGE(0x0f8000, 0x0f8001) AM_DEVREAD8("soundlatch2", generic_latch_8_device, read, 0xff00)
AM_RANGE(0x100000, 0x107fff) AM_DEVREADWRITE("sprites", snk68_spr_device, spriteram_r, spriteram_w) AM_SHARE("spriteram") // only partially populated
AM_RANGE(0x200000, 0x200fff) AM_RAM_WRITE(searchar_fg_videoram_w) AM_MIRROR(0x1000) AM_SHARE("pow_fg_videoram") /* Mirror is used by Ikari 3 */
AM_RANGE(0x300000, 0x33ffff) AM_ROM AM_REGION("user1", 0) /* Extra code bank */
@ -148,7 +148,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, snk68_state )
AM_RANGE(0x0000, 0xefff) AM_ROM
AM_RANGE(0xf000, 0xf7ff) AM_RAM
AM_RANGE(0xf800, 0xf800) AM_READ(soundlatch_byte_r) AM_WRITE(soundlatch2_byte_w)
AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
ADDRESS_MAP_END
WRITE8_MEMBER(snk68_state::D7759_write_port_0_w)
@ -612,13 +612,16 @@ static MACHINE_CONFIG_START( pow, snk68_state )
MCFG_PALETTE_ADD("palette", 0x800)
MCFG_PALETTE_FORMAT(xRGBRRRRGGGGBBBB_bit0)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_DEVICE_ADD("sprites", SNK68_SPR, 0)
MCFG_SNK68_SPR_GFXDECODE("gfxdecode")
MCFG_SNK68_SPR_SET_TILE_INDIRECT( snk68_state, tile_callback_pow )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_8MHz/2) /* verified on pcb */
MCFG_YM3812_IRQ_HANDLER(INPUTLINE("soundcpu", 0))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)

View File

@ -2,14 +2,14 @@
// copyright-holders:David Haywood, Angelo Salese, Olivier Galibert, Mariusz Wojcieszek, R. Belmont
/************************************************************************************************************************
stv.c
stv.cpp
ST-V hardware
This file contains all game specific overrides
TODO:
- clean this up!
- Properly emulate the protection chips, used by several games (check stvprot.c for more info)
- Properly emulate the protection chips, used by several games (check stvprot.cpp for more info)
(per-game issues)
- stress: accesses the Sound Memory Expansion Area (0x05a80000-0x05afffff), unknown purpose;
@ -1054,7 +1054,7 @@ MACHINE_CONFIG_END
WRITE32_MEMBER( stv_state::batmanfr_sound_comms_w )
{
if(ACCESSING_BITS_16_31)
soundlatch_word_w(space, 0, data >> 16, 0x0000ffff);
m_soundlatch->write(space, 0, data >> 16, 0x0000ffff);
if(ACCESSING_BITS_0_15)
printf("Warning: write %04x & %08x to lo-word sound communication area\n",data,mem_mask);
}
@ -1070,7 +1070,7 @@ READ16_MEMBER( stv_state::adsp_control_r )
break;
/* TODO: is this location correct? */
case 0x5:
res = soundlatch_word_r(space,0);
res = m_soundlatch->read(space,0);
break;
default:
osd_printf_debug("Unhandled register: %x\n", 0x3fe0 + offset);
@ -1203,6 +1203,8 @@ static MACHINE_CONFIG_DERIVED( batmanfr, stv )
MCFG_MACHINE_RESET_OVERRIDE(stv_state,batmanfr)
MCFG_GENERIC_LATCH_16_ADD("soundlatch")
MCFG_SOUND_ADD("dac1", DMADAC, 0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)

View File

@ -110,6 +110,7 @@ PCB2 (Top board, CPU board)
#include "emu.h"
#include "cpu/z80/z80.h"
#include "machine/gen_latch.h"
#include "sound/ay8910.h"
#define MASTER_CLOCK XTAL_18_432MHz
@ -123,6 +124,7 @@ public:
m_soundcpu(*this, "soundcpu"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch"),
m_attr(*this, "attr"),
m_vid(*this, "vid"),
m_spriteram(*this, "spriteram"),
@ -133,6 +135,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;
required_shared_ptr<UINT8> m_attr;
required_shared_ptr<UINT8> m_vid;
@ -263,7 +266,7 @@ ADDRESS_MAP_END
WRITE8_MEMBER(sub_state::to_sound_w)
{
soundlatch_byte_w(space, 0, data & 0xff);
m_soundlatch->write(space, 0, data & 0xff);
m_soundcpu->set_input_line(0, HOLD_LINE);
}
@ -274,7 +277,7 @@ WRITE8_MEMBER(sub_state::nmi_mask_w)
static ADDRESS_MAP_START( subm_io, AS_IO, 8, sub_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READ(soundlatch2_byte_r) AM_WRITE(to_sound_w) // to/from sound CPU
AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) AM_WRITE(to_sound_w) // to/from sound CPU
ADDRESS_MAP_END
static ADDRESS_MAP_START( subm_sound_map, AS_PROGRAM, 8, sub_state )
@ -285,7 +288,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( subm_sound_io, AS_IO, 8, sub_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READWRITE(soundlatch_byte_r, soundlatch2_byte_w) // to/from main CPU
AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) // to/from main CPU
AM_RANGE(0x40, 0x41) AM_DEVREADWRITE("ay1", ay8910_device, data_r, address_data_w)
AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("ay2", ay8910_device, data_r, address_data_w)
ADDRESS_MAP_END
@ -468,6 +471,9 @@ static MACHINE_CONFIG_START( sub, sub_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
MCFG_SOUND_ADD("ay1", AY8910, MASTER_CLOCK/6/2) /* ? Mhz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.23)

View File

@ -44,7 +44,7 @@ WRITE16_MEMBER(suna16_state::soundlatch_w)
{
if (ACCESSING_BITS_0_7)
{
soundlatch_byte_w(space, 0, data & 0xff );
m_soundlatch->write(space, 0, data & 0xff );
}
if (data & ~0xff) logerror("CPU#0 PC %06X - Sound latch unknown bits: %04X\n", space.device().safe_pc(), data);
}
@ -240,9 +240,9 @@ static ADDRESS_MAP_START( bssoccer_sound_map, AS_PROGRAM, 8, suna16_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM
AM_RANGE(0xf000, 0xf7ff) AM_RAM // RAM
AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) // YM2151
AM_RANGE(0xfc00, 0xfc00) AM_READ(soundlatch_byte_r) // From Main CPU
AM_RANGE(0xfd00, 0xfd00) AM_WRITE(soundlatch2_byte_w) // To PCM Z80 #1
AM_RANGE(0xfe00, 0xfe00) AM_WRITE(soundlatch3_byte_w) // To PCM Z80 #2
AM_RANGE(0xfc00, 0xfc00) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // From Main CPU
AM_RANGE(0xfd00, 0xfd00) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) // To PCM Z80 #1
AM_RANGE(0xfe00, 0xfe00) AM_DEVWRITE("soundlatch3", generic_latch_8_device, write) // To PCM Z80 #2
ADDRESS_MAP_END
/***************************************************************************
@ -253,7 +253,7 @@ static ADDRESS_MAP_START( uballoon_sound_map, AS_PROGRAM, 8, suna16_state )
AM_RANGE(0x0000, 0xefff) AM_ROM // ROM
AM_RANGE(0xf000, 0xf7ff) AM_RAM // RAM
AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) // YM2151
AM_RANGE(0xfc00, 0xfc00) AM_READWRITE(soundlatch_byte_r, soundlatch2_byte_w) // To PCM Z80
AM_RANGE(0xfc00, 0xfc00) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) // To PCM Z80
ADDRESS_MAP_END
/***************************************************************************
@ -264,7 +264,7 @@ static ADDRESS_MAP_START( sunaq_sound_map, AS_PROGRAM, 8, suna16_state )
AM_RANGE(0x0000, 0xe82f) AM_ROM // ROM
AM_RANGE(0xe830, 0xf7ff) AM_RAM // RAM (writes to efxx, could be a program bug tho)
AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) // YM2151
AM_RANGE(0xfc00, 0xfc00) AM_READWRITE(soundlatch_byte_r, soundlatch2_byte_w) // To PCM Z80
AM_RANGE(0xfc00, 0xfc00) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) // To PCM Z80
ADDRESS_MAP_END
/***************************************************************************
@ -276,8 +276,8 @@ static ADDRESS_MAP_START( bestbest_sound_map, AS_PROGRAM, 8, suna16_state )
AM_RANGE( 0xc000, 0xc001 ) AM_DEVWRITE("ymsnd", ym3526_device, write)
AM_RANGE( 0xc002, 0xc003 ) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) // AY8910
AM_RANGE( 0xe000, 0xe7ff ) AM_RAM // RAM
AM_RANGE( 0xf000, 0xf000 ) AM_WRITE(soundlatch2_byte_w ) // To PCM Z80
AM_RANGE( 0xf800, 0xf800 ) AM_READ ( soundlatch_byte_r ) // From Main CPU
AM_RANGE( 0xf000, 0xf000 ) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) // To PCM Z80
AM_RANGE( 0xf800, 0xf800 ) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // From Main CPU
ADDRESS_MAP_END
/***************************************************************************
@ -353,7 +353,7 @@ WRITE8_MEMBER(suna16_state::bssoccer_DAC4_w)
static ADDRESS_MAP_START( bssoccer_pcm_1_io_map, AS_IO, 8, suna16_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READ(soundlatch2_byte_r) // From The Sound Z80
AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) // From The Sound Z80
AM_RANGE(0x00, 0x00) AM_WRITE(DAC1_w) // 2 x DAC
AM_RANGE(0x01, 0x01) AM_WRITE(DAC2_w) // 2 x DAC
AM_RANGE(0x03, 0x03) AM_WRITE(bssoccer_pcm_1_bankswitch_w) // Rom Bank
@ -361,7 +361,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( bssoccer_pcm_2_io_map, AS_IO, 8, suna16_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READ(soundlatch3_byte_r) // From The Sound Z80
AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch3", generic_latch_8_device, read) // From The Sound Z80
AM_RANGE(0x00, 0x00) AM_WRITE(bssoccer_DAC3_w) // 2 x DAC
AM_RANGE(0x01, 0x01) AM_WRITE(bssoccer_DAC4_w) // 2 x DAC
AM_RANGE(0x03, 0x03) AM_WRITE(bssoccer_pcm_2_bankswitch_w) // Rom Bank
@ -390,7 +390,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( uballoon_pcm_1_io_map, AS_IO, 8, suna16_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READ(soundlatch2_byte_r) // From The Sound Z80
AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) // From The Sound Z80
AM_RANGE(0x00, 0x00) AM_WRITE(DAC1_w) // 2 x DAC
AM_RANGE(0x01, 0x01) AM_WRITE(DAC2_w) // 2 x DAC
AM_RANGE(0x03, 0x03) AM_WRITE(uballoon_pcm_1_bankswitch_w) // Rom Bank
@ -420,7 +420,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( bestbest_pcm_1_iomap, AS_IO, 8, suna16_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READ (soundlatch2_byte_r ) // From The Sound Z80
AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) // From The Sound Z80
AM_RANGE(0x00, 0x00) AM_MIRROR(0x02) AM_WRITE(DAC1_w) // 2 x DAC
AM_RANGE(0x01, 0x01) AM_MIRROR(0x02) AM_WRITE(DAC2_w) // 2 x DAC
ADDRESS_MAP_END
@ -846,6 +846,10 @@ static MACHINE_CONFIG_START( bssoccer, suna16_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_14_31818MHz/4) /* 3.579545MHz */
MCFG_SOUND_ROUTE(0, "lspeaker", 0.20)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.20)
@ -906,6 +910,9 @@ static MACHINE_CONFIG_START( uballoon, suna16_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_14_31818MHz/4) /* 3.579545MHz */
MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
@ -959,6 +966,9 @@ static MACHINE_CONFIG_START( sunaq, suna16_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_14_31818MHz/4) /* 3.579545MHz */
MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
@ -1015,6 +1025,9 @@ static MACHINE_CONFIG_START( bestbest, suna16_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
MCFG_SOUND_ADD("aysnd", AY8910, XTAL_24MHz/16) /* 1.5MHz */
MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(suna16_state, bestbest_ay8910_port_a_w))
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)

View File

@ -42,7 +42,6 @@ Notes:
#include "sound/2203intf.h"
#include "sound/3812intf.h"
#include "sound/dac.h"
#include "sound/samples.h"
#include "includes/suna8.h"
#define SUNA8_MASTER_CLOCK XTAL_24MHz
@ -561,8 +560,8 @@ static ADDRESS_MAP_START( hardhead_map, AS_PROGRAM, 8, suna8_state )
AM_RANGE(0xc000, 0xd7ff) AM_RAM // RAM
AM_RANGE(0xd800, 0xd9ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette
AM_RANGE(0xda00, 0xda00) AM_RAM_READ(hardhead_ip_r) AM_SHARE("hardhead_ip") // Input Port Select
AM_RANGE(0xda80, 0xda80) AM_READ(soundlatch2_byte_r) AM_WRITE(hardhead_bankswitch_w ) // ROM Banking
AM_RANGE(0xdb00, 0xdb00) AM_WRITE(soundlatch_byte_w ) // To Sound CPU
AM_RANGE(0xda80, 0xda80) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) AM_WRITE(hardhead_bankswitch_w ) // ROM Banking
AM_RANGE(0xdb00, 0xdb00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) // To Sound CPU
AM_RANGE(0xdb80, 0xdb80) AM_WRITE(hardhead_flipscreen_w ) // Flip Screen + Coin Lockout
AM_RANGE(0xdc00, 0xdc00) AM_NOP // <- R (after bank select)
AM_RANGE(0xdc80, 0xdc80) AM_NOP // <- R (after bank select)
@ -611,7 +610,7 @@ WRITE8_MEMBER(suna8_state::rranger_bankswitch_w)
*/
READ8_MEMBER(suna8_state::rranger_soundstatus_r)
{
soundlatch2_byte_r(space, offset);
m_soundlatch2->read(space, offset);
return 0x02;
}
@ -625,7 +624,7 @@ WRITE8_MEMBER(suna8_state::sranger_prot_w)
static ADDRESS_MAP_START( rranger_map, AS_PROGRAM, 8, suna8_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") // Banked ROM
AM_RANGE(0xc000, 0xc000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_WRITE(soundlatch_byte_w) // To Sound CPU
AM_RANGE(0xc000, 0xc000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) // To Sound CPU
AM_RANGE(0xc002, 0xc002) AM_WRITE(rranger_bankswitch_w ) // ROM Banking
AM_RANGE(0xc002, 0xc002) AM_READ_PORT("P1") // P1 (Inputs)
AM_RANGE(0xc003, 0xc003) AM_READ_PORT("P2") // P2
@ -733,7 +732,7 @@ static ADDRESS_MAP_START( brickzn11_map, AS_PROGRAM, 8, suna8_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM // ROM
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") // Banked ROM
AM_RANGE(0xc000, 0xc000) AM_WRITE(soundlatch_byte_w ) // To Sound CPU
AM_RANGE(0xc000, 0xc000) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) // To Sound CPU
AM_RANGE(0xc040, 0xc040) AM_WRITE(brickzn_sprbank_w ) // Sprite RAM Bank + Flip Screen + Protection
AM_RANGE(0xc060, 0xc060) AM_WRITE(brickzn_rombank_w ) // ROM Bank
AM_RANGE(0xc080, 0xc080) AM_WRITE(brickzn_leds_w ) // Leds
@ -784,7 +783,7 @@ WRITE8_MEMBER(suna8_state::brickzn_multi_w)
*/
UINT8 remap = (m_remap_sound ? BITSWAP8(data, 7,6,3,4,5,2,1,0) : data);
soundlatch_byte_w(space, 0, remap);
m_soundlatch->write(space, 0, remap);
logerror("CPU #0 - PC %04X: soundlatch = %02X (->%02X)\n",space.device().safe_pc(),data,remap);
}
@ -990,7 +989,7 @@ static ADDRESS_MAP_START( hardhea2_map, AS_PROGRAM, 8, suna8_state )
AM_RANGE(0xc380, 0xc380) AM_WRITE(hardhea2_nmi_w ) // ? NMI related ?
AM_RANGE(0xc400, 0xc400) AM_WRITE(hardhea2_leds_w ) // Leds + Coin Counter
AM_RANGE(0xc480, 0xc480) AM_WRITENOP // ~ROM Bank
AM_RANGE(0xc500, 0xc500) AM_WRITE(soundlatch_byte_w ) // To Sound CPU
AM_RANGE(0xc500, 0xc500) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) // To Sound CPU
// *** Protection
AM_RANGE(0xc50f, 0xc50f) AM_WRITE(hardhea2_spritebank_1_w )
@ -1034,7 +1033,7 @@ WRITE8_MEMBER(suna8_state::starfigh_rombank_latch_w)
WRITE8_MEMBER(suna8_state::starfigh_sound_latch_w)
{
if ( !(m_rombank_latch & 0x20) )
soundlatch_byte_w(space, 0, data);
m_soundlatch->write(space, 0, data);
}
/*
@ -1262,8 +1261,8 @@ static ADDRESS_MAP_START( hardhead_sound_map, AS_PROGRAM, 8, suna8_state )
AM_RANGE(0xa002, 0xa003) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
AM_RANGE(0xc000, 0xc7ff) AM_RAM // RAM
AM_RANGE(0xc800, 0xc800) AM_DEVREAD("ymsnd", ym3812_device, status_port_r) // ? unsure
AM_RANGE(0xd000, 0xd000) AM_WRITE(soundlatch2_byte_w ) //
AM_RANGE(0xd800, 0xd800) AM_READ(soundlatch_byte_r ) // From Main CPU
AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) //
AM_RANGE(0xd800, 0xd800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // From Main CPU
ADDRESS_MAP_END
@ -1282,8 +1281,8 @@ static ADDRESS_MAP_START( rranger_sound_map, AS_PROGRAM, 8, suna8_state )
AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ym1", ym2203_device, write) // Samples + Music
AM_RANGE(0xa002, 0xa003) AM_DEVWRITE("ym2", ym2203_device, write) // Music + FX
AM_RANGE(0xc000, 0xc7ff) AM_RAM // RAM
AM_RANGE(0xd000, 0xd000) AM_WRITE(soundlatch2_byte_w ) // To Sound CPU
AM_RANGE(0xd800, 0xd800) AM_READ(soundlatch_byte_r ) // From Main CPU
AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) // To Sound CPU
AM_RANGE(0xd800, 0xd800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // From Main CPU
ADDRESS_MAP_END
@ -1296,8 +1295,8 @@ static ADDRESS_MAP_START( brickzn_sound_map, AS_PROGRAM, 8, suna8_state )
AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("ymsnd", ym3812_device, write)
AM_RANGE(0xc002, 0xc003) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
AM_RANGE(0xe000, 0xe7ff) AM_RAM // RAM
AM_RANGE(0xf000, 0xf000) AM_WRITE(soundlatch2_byte_w ) // To PCM CPU
AM_RANGE(0xf800, 0xf800) AM_READ(soundlatch_byte_r ) // From Main CPU
AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write) // To PCM CPU
AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // From Main CPU
ADDRESS_MAP_END
@ -1317,7 +1316,7 @@ WRITE8_MEMBER(suna8_state::brickzn_pcm_w)
static ADDRESS_MAP_START( brickzn_pcm_io_map, AS_IO, 8, suna8_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READ(soundlatch2_byte_r ) // From Sound CPU
AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) // From Sound CPU
AM_RANGE(0x00, 0x03) AM_WRITE(brickzn_pcm_w ) // 4 x DAC
ADDRESS_MAP_END
@ -1901,6 +1900,9 @@ static MACHINE_CONFIG_START( hardhead, suna8_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
MCFG_SOUND_ADD("ymsnd", YM3812, SUNA8_MASTER_CLOCK / 8) /* verified on pcb */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
@ -1957,6 +1959,9 @@ static MACHINE_CONFIG_START( rranger, suna8_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
MCFG_SOUND_ADD("ym1", YM2203, SUNA8_MASTER_CLOCK / 16) /* verified on pcb */
MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(suna8_state, rranger_play_samples_w))
MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(suna8_state, suna8_samples_number_w))
@ -2023,6 +2028,9 @@ static MACHINE_CONFIG_START( brickzn11, suna8_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
MCFG_SOUND_ADD("ymsnd", YM3812, SUNA8_MASTER_CLOCK / 8) // 3MHz (measured)
MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
@ -2133,6 +2141,9 @@ static MACHINE_CONFIG_START( starfigh, suna8_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
MCFG_SOUND_ADD("ymsnd", YM3812, SUNA8_MASTER_CLOCK / 8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
@ -2184,6 +2195,9 @@ static MACHINE_CONFIG_START( sparkman, suna8_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
MCFG_SOUND_ADD("ymsnd", YM3812, SUNA8_MASTER_CLOCK / 8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)

View File

@ -29,7 +29,7 @@ Sega PCB 834-5137
WRITE8_MEMBER(suprloco_state::soundport_w)
{
soundlatch_byte_w(space, 0, data);
m_soundlatch->write(space, 0, data);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
/* spin for a while to let the Z80 read the command (fixes hanging sound in Regulus) */
space.device().execute().spin_until_time(attotime::from_usec(50));
@ -61,7 +61,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, suprloco_state )
AM_RANGE(0x8000, 0x87ff) AM_RAM
AM_RANGE(0xa000, 0xa003) AM_DEVWRITE("sn1", sn76496_device, write)
AM_RANGE(0xc000, 0xc003) AM_DEVWRITE("sn2", sn76496_device, write)
AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch_byte_r)
AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
ADDRESS_MAP_END
@ -193,6 +193,8 @@ static MACHINE_CONFIG_START( suprloco, suprloco_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("sn1", SN76496, 4000000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)

View File

@ -210,7 +210,7 @@ DIPs are also shared 100% with each other.
flickys1, flickys2
------------------
Very noticibly more difficult than the other two sets. DIPs have changes (less lives
Very noticeably more difficult than the other two sets. DIPs have changes (less lives
and bonus options). There is no screen which shows the bonus lives values like the
other two sets, either. flickys1 allows for DEMO SOUND which none of the others sets
seem to have access to.
@ -218,10 +218,8 @@ seem to have access to.
******************************************************************************/
#include "emu.h"
#include "cpu/z80/z80.h"
#include "cpu/mcs51/mcs51.h"
#include "machine/z80pio.h"
#include "machine/i8255.h"
#include "machine/segacrpt_device.h"
#include "machine/mc8123.h"
#include "sound/sn76496.h"
@ -529,7 +527,7 @@ READ8_MEMBER(system1_state::sound_data_r)
{
m_ppi8255->pc6_w(0);
m_ppi8255->pc6_w(1);
return soundlatch_byte_r(space, offset);
return m_soundlatch->read(space, offset);
}
/* if we have a Z80 PIO, get the data from the port and toggle the strobe */
@ -548,7 +546,7 @@ READ8_MEMBER(system1_state::sound_data_r)
WRITE8_MEMBER(system1_state::soundport_w)
{
/* boost interleave when communicating with the sound CPU */
soundlatch_byte_w(space, 0, data);
m_soundlatch->write(space, 0, data);
machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(100));
}
@ -2177,6 +2175,8 @@ static MACHINE_CONFIG_START( sys1ppi, system1_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("sn1", SN76489A, SOUND_CLOCK/4)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)

View File

@ -18,7 +18,7 @@
- Bay Route (set 1)
- Golden Axe (set 1)
These share a common encryption, Bay Route is also proteceted, the Golden Axe set has a strange
These share a common encryption, Bay Route is also protected, the Golden Axe set has a strange
unknown rom, maybe it's related to an MCU that isn't present on the GA board?
---
@ -92,11 +92,9 @@
#include "cpu/z80/z80.h"
#include "includes/system16.h"
#include "cpu/m68000/m68000.h"
#include "sound/msm5205.h"
#include "sound/2151intf.h"
#include "sound/2612intf.h"
#include "sound/rf5c68.h"
#include "video/segaic16.h"
#include "sound/2203intf.h"
#define SHADOW_COLORS_MULTIPLIER 3
@ -114,7 +112,7 @@ WRITE16_MEMBER(segas1x_bootleg_state::sound_command_nmi_w)
{
if (ACCESSING_BITS_0_7)
{
soundlatch_byte_w(space, 0, data & 0xff);
m_soundlatch->write(space, 0, data & 0xff);
m_soundcpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
}
}
@ -123,7 +121,7 @@ WRITE16_MEMBER(segas1x_bootleg_state::sound_command_irq_w)
{
if (ACCESSING_BITS_0_7)
{
soundlatch_byte_w(space, 0, data & 0xff);
m_soundlatch->write(space, 0, data & 0xff);
m_soundcpu->set_input_line(0, HOLD_LINE);
}
}
@ -414,7 +412,7 @@ static ADDRESS_MAP_START(tturfbl_sound_map, AS_PROGRAM, 8, segas1x_bootleg_state
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0xbfff) AM_READ(tturfbl_soundbank_r)
AM_RANGE(0xe000, 0xe000) AM_WRITE(tturfbl_soundbank_w)
AM_RANGE(0xe800, 0xe800) AM_READ(soundlatch_byte_r)
AM_RANGE(0xe800, 0xe800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0xf000, 0xf000) AM_WRITE(tturfbl_msm5205_data_w)
AM_RANGE(0xf800, 0xffff) AM_RAM
ADDRESS_MAP_END
@ -433,7 +431,7 @@ static ADDRESS_MAP_START(shinobi_datsu_sound_map, AS_PROGRAM, 8, segas1x_bootleg
AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
AM_RANGE(0xe400, 0xe401) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
AM_RANGE(0xe800, 0xe800) AM_READ(soundlatch_byte_r)
AM_RANGE(0xe800, 0xe800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0xf800, 0xffff) AM_RAM
ADDRESS_MAP_END
@ -448,14 +446,14 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, segas1x_bootleg_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0xe800, 0xe800) AM_READ(soundlatch_byte_r)
AM_RANGE(0xe800, 0xe800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0xf800, 0xffff) AM_RAM
ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_io_map, AS_IO, 8, segas1x_bootleg_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
AM_RANGE(0xc0, 0xc0) AM_READ(soundlatch_byte_r)
AM_RANGE(0xc0, 0xc0) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
ADDRESS_MAP_END
@ -463,7 +461,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_7759_map, AS_PROGRAM, 8, segas1x_bootleg_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0xdfff) AM_ROMBANK("bank1")
AM_RANGE(0xe800, 0xe800) AM_READ(soundlatch_byte_r)
AM_RANGE(0xe800, 0xe800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0xf800, 0xffff) AM_RAM
ADDRESS_MAP_END
@ -483,7 +481,7 @@ static ADDRESS_MAP_START( sound_7759_io_map, AS_IO, 8, segas1x_bootleg_state )
AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
AM_RANGE(0x40, 0x40) AM_WRITE(upd7759_bank_w)
AM_RANGE(0x80, 0x80) AM_DEVWRITE("7759", upd7759_device, port_w)
AM_RANGE(0xc0, 0xc0) AM_READ(soundlatch_byte_r)
AM_RANGE(0xc0, 0xc0) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
ADDRESS_MAP_END
@ -1018,7 +1016,7 @@ static ADDRESS_MAP_START( sound_18_io_map, AS_IO, 8, segas1x_bootleg_state )
AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("3438.0", ym3438_device, read, write)
AM_RANGE(0x90, 0x93) AM_DEVREADWRITE("3438.1", ym3438_device, read, write)
AM_RANGE(0xa0, 0xa0) AM_WRITE(sys18_soundbank_w)
AM_RANGE(0xc0, 0xc0) AM_READ(soundlatch_byte_r)
AM_RANGE(0xc0, 0xc0) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
ADDRESS_MAP_END
@ -1123,7 +1121,7 @@ ADDRESS_MAP_END
The unused memory locations and I/O port access seem to be remnants of the original code that were not patched out:
- Program accesses RF5C68A channel registes at $C000-$C007
- Program accesses RF5C68A channel registers at $C000-$C007
- Program clears RF5C68A wave memory at $DF00-$DFFF
- Program writes to port $A0 to access sound ROM banking control latch
- Program reads port $C0 to access sound command
@ -1192,7 +1190,7 @@ static ADDRESS_MAP_START(shdancbl_sound_map, AS_PROGRAM, 8, segas1x_bootleg_stat
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0xbfff) AM_READ(shdancbl_soundbank_r)
AM_RANGE(0xc000, 0xc00f) AM_WRITENOP
AM_RANGE(0xc400, 0xc400) AM_READ(soundlatch_byte_r)
AM_RANGE(0xc400, 0xc400) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0xc800, 0xc800) AM_WRITE(shdancbl_msm5205_data_w)
AM_RANGE(0xcc00, 0xcc03) AM_DEVREADWRITE("3438.0", ym3438_device, read, write)
AM_RANGE(0xd000, 0xd003) AM_DEVREADWRITE("3438.1", ym3438_device, read, write)
@ -1212,7 +1210,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START(shdancbla_sound_map, AS_PROGRAM, 8, segas1x_bootleg_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0xbfff) AM_READ(shdancbl_soundbank_r)
AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r)
AM_RANGE(0xc000, 0xc000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0xc000, 0xc003) AM_DEVREADWRITE("3438.0", ym3438_device, read, write)
AM_RANGE(0xc400, 0xc403) AM_DEVREADWRITE("3438.1", ym3438_device, read, write)
@ -1989,6 +1987,8 @@ static MACHINE_CONFIG_START( system16_base, segas1x_bootleg_state )
MCFG_PALETTE_ADD("palette", 2048*SHADOW_COLORS_MULTIPLIER)
MCFG_VIDEO_START_OVERRIDE(segas1x_bootleg_state,system16)
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( system16, system16_base )
@ -2039,6 +2039,8 @@ static MACHINE_CONFIG_FRAGMENT( system16_datsu_sound )
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", 4000000)
MCFG_SOUND_ROUTE(0, "lspeaker", 0.32)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.32)
@ -2293,6 +2295,8 @@ static MACHINE_CONFIG_START( system18, segas1x_bootleg_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("3438.0", YM3438, 8000000)
MCFG_SOUND_ROUTE(0, "lspeaker", 0.40)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.40)

View File

@ -97,13 +97,12 @@ Notes:
#include "cpu/z80/z80.h"
#include "machine/watchdog.h"
#include "sound/3812intf.h"
#include "sound/msm5205.h"
#include "sound/3812intf.h"
#include "includes/toki.h"
WRITE16_MEMBER(toki_state::tokib_soundcommand_w)
{
soundlatch_byte_w(space, 0, data & 0xff);
m_soundlatch->write(space, 0, data & 0xff);
m_audiocpu->set_input_line(0, HOLD_LINE);
}
@ -187,7 +186,7 @@ static ADDRESS_MAP_START( tokib_audio_map, AS_PROGRAM, 8, toki_state )
AM_RANGE(0xe400, 0xe400) AM_WRITE(tokib_adpcm_data_w)
AM_RANGE(0xec00, 0xec01) AM_MIRROR(0x0008) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write)
AM_RANGE(0xf000, 0xf7ff) AM_RAM
AM_RANGE(0xf800, 0xf800) AM_READ(soundlatch_byte_r)
AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
ADDRESS_MAP_END
/*****************************************************************************/
@ -498,6 +497,8 @@ static MACHINE_CONFIG_START( tokib, toki_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM3812, 3579545)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)

View File

@ -178,6 +178,7 @@ Stephh's notes (based on the games Z80 code and some tests) :
#include "emu.h"
#include "cpu/z80/z80.h"
#include "machine/gen_latch.h"
#include "machine/watchdog.h"
#include "sound/ay8910.h"
#include "includes/wiz.h"
@ -325,7 +326,7 @@ static ADDRESS_MAP_START( kungfut_main_map, AS_PROGRAM, 8, wiz_state )
AM_RANGE(0xf008, 0xf008) AM_READ_PORT("DSW1")
AM_RANGE(0xf010, 0xf010) AM_READ_PORT("IN0")
AM_RANGE(0xf018, 0xf018) AM_READ_PORT("IN1")
AM_RANGE(0xf800, 0xf800) AM_WRITE(soundlatch_byte_w)
AM_RANGE(0xf800, 0xf800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
AM_RANGE(0xf818, 0xf818) AM_WRITE(wiz_bgcolor_w)
ADDRESS_MAP_END
@ -364,14 +365,14 @@ static ADDRESS_MAP_START( kungfut_sound_map, AS_PROGRAM, 8, wiz_state )
AM_RANGE(0x4000, 0x4001) AM_DEVWRITE("8910.3", ay8910_device, address_data_w)
AM_RANGE(0x5000, 0x5001) AM_DEVWRITE("8910.1", ay8910_device, address_data_w)
AM_RANGE(0x6000, 0x6001) AM_DEVWRITE("8910.2", ay8910_device, address_data_w)
AM_RANGE(0x7000, 0x7000) AM_READWRITE(soundlatch_byte_r, wiz_sound_nmi_mask_w)
AM_RANGE(0x7000, 0x7000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(wiz_sound_nmi_mask_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( stinger_sound_map, AS_PROGRAM, 8, wiz_state )
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
AM_RANGE(0x0000, 0x1fff) AM_ROM
AM_RANGE(0x2000, 0x23ff) AM_RAM
AM_RANGE(0x3000, 0x3000) AM_READWRITE(soundlatch_byte_r, wiz_sound_nmi_mask_w)
AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(wiz_sound_nmi_mask_w)
AM_RANGE(0x4000, 0x4000) AM_WRITENOP // ?
AM_RANGE(0x5000, 0x5001) AM_DEVWRITE("8910.1", ay8910_device, address_data_w)
AM_RANGE(0x6000, 0x6001) AM_DEVWRITE("8910.2", ay8910_device, address_data_w)
@ -807,6 +808,8 @@ static MACHINE_CONFIG_START( kungfut, wiz_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("8910.1", AY8910, 18432000/12)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)

View File

@ -257,6 +257,7 @@
#include "cpu/z80/z80.h"
#include "sound/sn76496.h"
#include "sound/samples.h"
#include "machine/gen_latch.h"
#include "machine/segacrpt_device.h"
#include "machine/i8255.h"
#include "audio/segasnd.h"
@ -487,7 +488,7 @@ static ADDRESS_MAP_START( congo_map, AS_PROGRAM, 8, zaxxon_state )
AM_RANGE(0xc027, 0xc027) AM_MIRROR(0x1fc0) AM_WRITE(congo_color_bank_w)
AM_RANGE(0xc028, 0xc029) AM_MIRROR(0x1fc4) AM_WRITE(zaxxon_bg_position_w)
AM_RANGE(0xc030, 0xc033) AM_MIRROR(0x1fc4) AM_WRITE(congo_sprite_custom_w)
AM_RANGE(0xc038, 0xc03f) AM_MIRROR(0x1fc0) AM_WRITE(soundlatch_byte_w)
AM_RANGE(0xc038, 0xc03f) AM_MIRROR(0x1fc0) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
ADDRESS_MAP_END
@ -1019,7 +1020,7 @@ static MACHINE_CONFIG_DERIVED( congo, root )
MCFG_DEVICE_REMOVE("ppi8255")
MCFG_DEVICE_ADD("ppi8255", I8255A, 0)
MCFG_I8255_IN_PORTA_CB(READ8(driver_device, soundlatch_byte_r))
MCFG_I8255_IN_PORTA_CB(DEVREAD8("soundlatch", generic_latch_8_device, read))
MCFG_I8255_OUT_PORTB_CB(WRITE8(zaxxon_state, congo_sound_b_w))
MCFG_I8255_OUT_PORTC_CB(WRITE8(zaxxon_state, congo_sound_c_w))
@ -1039,6 +1040,8 @@ static MACHINE_CONFIG_DERIVED( congo, root )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("sn1", SN76489A, SOUND_CLOCK) // schematic shows sn76489A
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)

View File

@ -23,6 +23,7 @@
#include "machine/zndip.h"
#include "machine/ataintf.h"
#include "machine/vt83c461.h"
#include "machine/gen_latch.h"
#include "audio/taitosnd.h"
#include "sound/2610intf.h"
#include "sound/ymz280b.h"
@ -52,6 +53,8 @@ public:
m_mb3773(*this, "mb3773"),
m_zoom(*this, "taito_zoom"),
m_vt83c461(*this, "ide"),
m_soundlatch(*this, "soundlatch"),
m_soundlatch16(*this, "soundlatch16"),
m_cat702_1_dataout(1),
m_cat702_2_dataout(1),
m_zndip_dataout(1)
@ -145,6 +148,8 @@ private:
optional_device<mb3773_device> m_mb3773;
optional_device<taito_zoom_device> m_zoom;
optional_device<vt83c461_device> m_vt83c461;
optional_device<generic_latch_8_device> m_soundlatch;
optional_device<generic_latch_16_device> m_soundlatch16;
int m_cat702_1_dataout;
int m_cat702_2_dataout;
@ -358,6 +363,8 @@ static MACHINE_CONFIG_START( zn1_1mb_vram, zn_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SPU_ADD( "spu", XTAL_67_7376MHz/2 )
MCFG_SOUND_ROUTE(0, "lspeaker", 0.35)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.35)
@ -402,6 +409,8 @@ static MACHINE_CONFIG_START( zn2, zn_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SPU_ADD( "spu", XTAL_67_7376MHz/2 )
MCFG_SOUND_ROUTE(0, "lspeaker", 0.35)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.35)
@ -547,7 +556,7 @@ INTERRUPT_GEN_MEMBER(zn_state::qsound_interrupt)
WRITE8_MEMBER(zn_state::zn_qsound_w)
{
soundlatch_byte_w(space, 0, data);
m_soundlatch->write(space, 0, data);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
}
@ -585,7 +594,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( qsound_portmap, AS_IO, 8, zn_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READ(soundlatch_byte_r)
AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
ADDRESS_MAP_END
static MACHINE_CONFIG_DERIVED( coh1000c, zn1_1mb_vram )
@ -1629,7 +1638,7 @@ WRITE8_MEMBER(zn_state::coh1002e_sound_irq_w)
static ADDRESS_MAP_START(coh1002e_map, AS_PROGRAM, 32, zn_state)
AM_RANGE(0x1f000000, 0x1f7fffff) AM_ROMBANK("bankedroms")
AM_RANGE(0x1fa10300, 0x1fa10303) AM_WRITE8(coh1002e_bank_w, 0x000000ff)
AM_RANGE(0x1fb00000, 0x1fb00003) AM_WRITE8(soundlatch_byte_w, 0x000000ff)
AM_RANGE(0x1fb00000, 0x1fb00003) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x000000ff)
AM_RANGE(0x1fb00004, 0x1fb00007) AM_WRITE8(coh1002e_sound_irq_w, 0x000000ff)
AM_IMPORT_FROM(zn_map)
@ -1644,7 +1653,7 @@ static ADDRESS_MAP_START( psarc_snd_map, AS_PROGRAM, 16, zn_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x080000, 0x0fffff) AM_RAM
AM_RANGE(0x100000, 0x10001f) AM_DEVREADWRITE8("ymf", ymf271_device, read, write, 0x00ff )
AM_RANGE(0x180008, 0x180009) AM_READ8(soundlatch_byte_r, 0x00ff )
AM_RANGE(0x180008, 0x180009) AM_DEVREAD8("soundlatch", generic_latch_8_device, read, 0x00ff )
AM_RANGE(0x000000, 0x07ffff) AM_WRITENOP
AM_RANGE(0x100020, 0xffffff) AM_WRITENOP
ADDRESS_MAP_END
@ -2263,7 +2272,7 @@ WRITE16_MEMBER(zn_state::coh1001l_sound_unk_w)
WRITE16_MEMBER(zn_state::coh1001l_latch_w)
{
soundlatch_word_w(space, 0, data);
m_soundlatch16->write(space, 0, data);
m_audiocpu->set_input_line(3, HOLD_LINE);
}
@ -2287,7 +2296,7 @@ MACHINE_RESET_MEMBER(zn_state,coh1001l)
static ADDRESS_MAP_START( atlus_snd_map, AS_PROGRAM, 16, zn_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x100000, 0x100001) AM_READWRITE(soundlatch_word_r, coh1001l_sound_unk_w)
AM_RANGE(0x100000, 0x100001) AM_DEVREAD("soundlatch16", generic_latch_16_device, read) AM_WRITE(coh1001l_sound_unk_w)
AM_RANGE(0x200000, 0x200003) AM_DEVREADWRITE8("ymz", ymz280b_device, read, write, 0x00ff)
AM_RANGE(0x700000, 0x70ffff) AM_RAM
ADDRESS_MAP_END
@ -2302,6 +2311,8 @@ static MACHINE_CONFIG_DERIVED(coh1001l, zn1_2mb_vram)
MCFG_MACHINE_RESET_OVERRIDE(zn_state, coh1001l)
MCFG_GENERIC_LATCH_16_ADD("soundlatch16")
MCFG_SOUND_ADD("ymz", YMZ280B, XTAL_16_9344MHz)
MCFG_YMZ280B_IRQ_HANDLER(INPUTLINE("audiocpu", 2))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.35)

View File

@ -1,5 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Bryan McPhail
#include "machine/gen_latch.h"
#include "video/bufsprite.h"
class bbusters_state : public driver_device
@ -12,6 +14,7 @@ public:
m_gfxdecode(*this, "gfxdecode"),
m_spriteram(*this, "spriteram"),
m_spriteram2(*this, "spriteram2"),
m_soundlatch(*this, "soundlatch"),
m_eprom_data(*this, "eeprom"),
m_ram(*this, "ram"),
m_videoram(*this, "videoram"),
@ -25,6 +28,7 @@ public:
required_device<gfxdecode_device> m_gfxdecode;
required_device<buffered_spriteram16_device> m_spriteram;
optional_device<buffered_spriteram16_device> m_spriteram2;
required_device<generic_latch_8_device> m_soundlatch;
optional_shared_ptr<UINT16> m_eprom_data;
required_shared_ptr<UINT16> m_ram;

View File

@ -5,7 +5,10 @@
Goal! '92
*************************************************************************/
#include "machine/gen_latch.h"
#include "sound/msm5205.h"
class goal92_state : public driver_device
{
public:
@ -16,11 +19,12 @@ public:
m_tx_data(*this, "tx_data"),
m_spriteram(*this, "spriteram"),
m_scrollram(*this, "scrollram"),
m_audiocpu(*this, "audiocpu"),
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_msm(*this, "msm"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette") { }
m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch") { }
/* memory pointers */
required_shared_ptr<UINT16> m_bg_data;
@ -41,7 +45,13 @@ public:
int m_adpcm_toggle;
/* devices */
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
required_device<msm5205_device> m_msm;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
required_device<generic_latch_8_device> m_soundlatch;
DECLARE_WRITE16_MEMBER(goal92_sound_command_w);
DECLARE_READ16_MEMBER(goal92_inputs_r);
DECLARE_WRITE8_MEMBER(adpcm_data_w);
@ -62,8 +72,4 @@ public:
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, int pri );
DECLARE_WRITE_LINE_MEMBER(irqhandler);
DECLARE_WRITE_LINE_MEMBER(goal92_adpcm_int);
required_device<cpu_device> m_maincpu;
required_device<msm5205_device> m_msm;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
};

View File

@ -6,6 +6,9 @@
*************************************************************************/
#include "machine/gen_latch.h"
#include "sound/ay8910.h"
class kncljoe_state : public driver_device
{
public:
@ -14,11 +17,13 @@ public:
m_videoram(*this, "videoram"),
m_scrollregs(*this, "scrollregs"),
m_spriteram(*this, "spriteram"),
m_soundcpu(*this, "soundcpu"),
m_maincpu(*this, "maincpu"),
m_soundcpu(*this, "soundcpu"),
m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"),
m_palette(*this, "palette") { }
m_palette(*this, "palette"),
m_ay8910(*this, "aysnd"),
m_soundlatch(*this, "soundlatch") { }
/* memory pointers */
required_shared_ptr<UINT8> m_videoram;
@ -36,7 +41,14 @@ public:
UINT8 m_port2;
/* devices */
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_soundcpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
required_device<ay8910_device> m_ay8910;
required_device<generic_latch_8_device> m_soundlatch;
DECLARE_WRITE8_MEMBER(sound_cmd_w);
DECLARE_WRITE8_MEMBER(sound_irq_ack_w);
DECLARE_WRITE8_MEMBER(kncljoe_videoram_w);
@ -55,8 +67,4 @@ public:
UINT32 screen_update_kncljoe(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(sound_nmi);
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
};

View File

@ -6,6 +6,7 @@
***************************************************************************/
#include "machine/gen_latch.h"
#include "sound/sn76496.h"
class lasso_state : public driver_device
@ -26,7 +27,8 @@ public:
m_sn_1(*this, "sn76489.1"),
m_sn_2(*this, "sn76489.2"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette") { }
m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch") { }
/* memory pointers */
required_shared_ptr<UINT8> m_videoram;
@ -51,6 +53,7 @@ public:
optional_device<sn76489_device> m_sn_2;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
required_device<generic_latch_8_device> m_soundlatch;
DECLARE_WRITE8_MEMBER(sound_command_w);
DECLARE_READ8_MEMBER(sound_status_r);

View File

@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:David Graves, Angelo Salese, David Haywood, Tomasz Slanina
#include "sound/okim6295.h"
#include "audio/seibu.h"
#include "machine/gen_latch.h"
#include "machine/raiden2cop.h"
#include "video/seibu_crtc.h"
@ -21,6 +23,7 @@ public:
m_oki(*this, "oki"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch"),
m_wordswapram(*this, "wordswapram"),
m_raiden2cop(*this, "raiden2cop")
{
@ -93,6 +96,7 @@ public:
required_device<okim6295_device> m_oki;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
optional_device<generic_latch_8_device> m_soundlatch;
optional_shared_ptr<UINT16> m_wordswapram;
optional_device<raiden2cop_device> m_raiden2cop;

View File

@ -1,5 +1,8 @@
// license:BSD-3-Clause
// copyright-holders:David Haywood, Tomasz Slanina
#include "machine/gen_latch.h"
class mainsnk_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_bgram(*this, "bgram"),
m_spriteram(*this, "spriteram"),
m_fgram(*this, "fgram") { }
@ -17,6 +21,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_bgram;
required_shared_ptr<UINT8> m_spriteram;

View File

@ -6,6 +6,8 @@
*************************************************************************/
#include "machine/gen_latch.h"
class munchmo_state : public driver_device
{
public:
@ -20,7 +22,8 @@ public:
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette"){ }
m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch") { }
/* memory pointers */
required_shared_ptr<UINT8> m_sprite_xpos;
@ -43,6 +46,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;
DECLARE_WRITE8_MEMBER(mnchmobl_nmi_enable_w);
DECLARE_WRITE8_MEMBER(mnchmobl_soundlatch_w);

View File

@ -1,5 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Bryan McPhail
#include "machine/gen_latch.h"
#include "sound/upd7759.h"
class prehisle_state : public driver_device
@ -15,7 +17,8 @@ public:
m_audiocpu(*this, "audiocpu"),
m_upd7759(*this, "upd"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette") { }
m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch") { }
required_shared_ptr<UINT16> m_tx_vram;
@ -47,4 +50,5 @@ public:
required_device<upd7759_device> m_upd7759;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
required_device<generic_latch_8_device> m_soundlatch;
};

View File

@ -9,6 +9,7 @@
#include "machine/segag80.h"
#include "sound/sn76496.h"
#include "audio/segasnd.h"
#include "machine/gen_latch.h"
class sega005_sound_device;
@ -36,6 +37,7 @@ public:
m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"),
m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch"),
m_decrypted_opcodes(*this, "decrypted_opcodes") { }
required_shared_ptr<UINT8> m_mainram;
@ -52,6 +54,7 @@ public:
required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
optional_device<generic_latch_8_device> m_soundlatch;
optional_shared_ptr<UINT8> m_decrypted_opcodes;
std::vector<UINT8> m_paletteram;

View File

@ -10,6 +10,7 @@
#include "cpu/mcs51/mcs51.h"
#include "cpu/z80/z80.h"
#include "machine/i8255.h"
#include "machine/gen_latch.h"
#include "machine/segaic16.h"
#include "video/segaic16.h"
#include "video/segaic16_road.h"
@ -33,6 +34,7 @@ public:
m_sprites(*this, "sprites"),
m_segaic16vid(*this, "segaic16vid"),
m_segaic16road(*this, "segaic16road"),
m_soundlatch(*this, "soundlatch"),
m_workram(*this, "workram"),
m_sharrier_video(false),
m_adc_select(0),
@ -97,6 +99,7 @@ protected:
required_device<sega_16bit_sprite_device> m_sprites;
required_device<segaic16_video_device> m_segaic16vid;
required_device<segaic16_road_device> m_segaic16road;
required_device<generic_latch_8_device> m_soundlatch;
// memory pointers
required_shared_ptr<UINT16> m_workram;

View File

@ -9,6 +9,7 @@
#include "cpu/m68000/m68000.h"
#include "cpu/z80/z80.h"
#include "machine/i8255.h"
#include "machine/gen_latch.h"
#include "machine/nvram.h"
#include "machine/segaic16.h"
#include "machine/watchdog.h"
@ -35,6 +36,7 @@ public:
m_sprites(*this, "sprites"),
m_segaic16vid(*this, "segaic16vid"),
m_segaic16road(*this, "segaic16road"),
m_soundlatch(*this, "soundlatch"),
m_bankmotor_timer(*this, "bankmotor"),
m_digital_ports(*this, digital_ports),
m_adc_ports(*this, "ADC"),
@ -125,6 +127,7 @@ protected:
required_device<sega_16bit_sprite_device> m_sprites;
required_device<segaic16_video_device> m_segaic16vid;
required_device<segaic16_road_device> m_segaic16road;
required_device<generic_latch_8_device> m_soundlatch;
optional_device<timer_device> m_bankmotor_timer;
// input ports

View File

@ -10,6 +10,7 @@
#include "cpu/mcs48/mcs48.h"
#include "cpu/mcs51/mcs51.h"
#include "cpu/z80/z80.h"
#include "machine/gen_latch.h"
#include "machine/i8255.h"
#include "machine/i8243.h"
#include "machine/nvram.h"
@ -38,6 +39,7 @@ public:
m_nvram(*this, "nvram"),
m_watchdog(*this, "watchdog"),
m_segaic16vid(*this, "segaic16vid"),
m_soundlatch(*this, "soundlatch"),
m_sprites(*this, "sprites"),
m_workram(*this, "nvram"),
m_sound_decrypted_opcodes(*this, "sound_decrypted_opcodes"),
@ -136,6 +138,7 @@ protected:
required_device<nvram_device> m_nvram;
required_device<watchdog_timer_device> m_watchdog;
required_device<segaic16_video_device> m_segaic16vid;
required_device<generic_latch_8_device> m_soundlatch;
required_device<sega_sys16a_sprite_device> m_sprites;
// memory pointers

View File

@ -9,6 +9,7 @@
#include "cpu/m68000/m68000.h"
#include "cpu/mcs51/mcs51.h"
#include "cpu/z80/z80.h"
#include "machine/gen_latch.h"
#include "machine/nvram.h"
#include "machine/segaic16.h"
#include "sound/2151intf.h"
@ -39,6 +40,7 @@ public:
m_nvram(*this, "nvram"),
m_sprites(*this, "sprites"),
m_segaic16vid(*this, "segaic16vid"),
m_soundlatch(*this, "soundlatch"),
m_workram(*this, "workram"),
m_romboard(ROM_BOARD_INVALID),
m_tilemap_type(SEGAIC16_TILEMAP_16B),
@ -196,6 +198,7 @@ protected:
required_device<nvram_device> m_nvram;
optional_device<sega_sys16b_sprite_device> m_sprites;
required_device<segaic16_video_device> m_segaic16vid;
optional_device<generic_latch_8_device> m_soundlatch; // not for atomicp
// memory pointers
required_shared_ptr<UINT16> m_workram;

View File

@ -9,6 +9,7 @@
#include "cpu/m68000/m68000.h"
#include "cpu/mcs51/mcs51.h"
#include "cpu/z80/z80.h"
#include "machine/gen_latch.h"
#include "machine/nvram.h"
#include "machine/segaic16.h"
#include "machine/315_5296.h"
@ -36,6 +37,7 @@ public:
m_sprites(*this, "sprites"),
m_segaic16vid(*this, "segaic16vid"),
m_gfxdecode(*this, "gfxdecode"),
m_soundlatch(*this, "soundlatch"),
m_workram(*this, "workram"),
m_romboard(ROM_BOARD_INVALID),
m_grayscale_enable(false),
@ -138,6 +140,7 @@ protected:
required_device<sega_sys16b_sprite_device> m_sprites;
required_device<segaic16_video_device> m_segaic16vid;
required_device<gfxdecode_device> m_gfxdecode;
required_device<generic_latch_8_device> m_soundlatch;
// memory pointers
required_shared_ptr<UINT16> m_workram;

View File

@ -9,6 +9,7 @@
#include "cpu/m68000/m68000.h"
#include "cpu/mcs51/mcs51.h"
#include "cpu/z80/z80.h"
#include "machine/gen_latch.h"
#include "machine/watchdog.h"
#include "machine/segaic16.h"
#include "video/segaic16.h"
@ -106,6 +107,7 @@ protected:
required_device<sega_xboard_sprite_device> m_sprites;
required_device<segaic16_video_device> m_segaic16vid;
required_device<segaic16_road_device> m_segaic16road;
required_device<generic_latch_8_device> m_soundlatch;
required_shared_ptr<UINT16> m_subram0;
// configuration
@ -137,21 +139,6 @@ protected:
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
UINT16 m_latched_value[4];
UINT8 m_latch_read[4];
UINT32 soundlatch_read(UINT8 index = 0) { m_latch_read[index] = 1; return m_latched_value[index]; };
void soundlatch_write(UINT8 index, UINT32 data) { machine().scheduler().synchronize(timer_expired_delegate(FUNC(segaxbd_state::soundlatch_sync_callback), this), index | (data << 8)); };
void soundlatch_write(UINT32 data) { soundlatch_write(0, data); }
void soundlatch_sync_callback(void *ptr, INT32 param)
{
UINT16 value = param >> 8;
int which = param & 0xff;
m_latched_value[which] = value;
m_latch_read[which] = 0;
};
protected:
virtual void device_start() override;
virtual void device_reset() override;

View File

@ -8,6 +8,7 @@
#include "cpu/m68000/m68000.h"
#include "cpu/z80/z80.h"
#include "machine/gen_latch.h"
#include "machine/watchdog.h"
#include "machine/segaic16.h"
#include "video/segaic16.h"
@ -31,6 +32,7 @@ public:
m_bsprites(*this, "bsprites"),
m_ysprites(*this, "ysprites"),
m_segaic16vid(*this, "segaic16vid"),
m_soundlatch(*this, "soundlatch"),
m_digital_ports(*this, digital_ports),
m_adc_ports(*this, "ADC"),
m_pdrift_bank(0),
@ -112,6 +114,7 @@ protected:
required_device<sega_sys16b_sprite_device> m_bsprites;
required_device<sega_yboard_sprite_device> m_ysprites;
required_device<segaic16_video_device> m_segaic16vid;
required_device<generic_latch_8_device> m_soundlatch;
// input ports
DECLARE_IOPORT_ARRAY(digital_ports);

View File

@ -1,11 +1,13 @@
// license:BSD-3-Clause
// copyright-holders:Luca Elia
/***************************************************************************
-= Seta Hardware =-
***************************************************************************/
#include "machine/gen_latch.h"
#include "sound/x1_010.h"
#include "video/seta001.h"
@ -37,6 +39,8 @@ public:
m_subcpu(*this,"sub"),
m_seta001(*this, "spritegen"),
m_x1(*this, "x1snd"),
m_soundlatch(*this, "soundlatch"),
m_soundlatch2(*this, "soundlatch2"),
m_sharedram(*this,"sharedram"),
m_workram(*this,"workram"),
m_vregs(*this,"vregs"),
@ -57,6 +61,8 @@ public:
optional_device<cpu_device> m_subcpu;
required_device<seta001_device> m_seta001;
optional_device<x1_010_device> m_x1;
optional_device<generic_latch_8_device> m_soundlatch;
optional_device<generic_latch_8_device> m_soundlatch2;
optional_shared_ptr<UINT8> m_sharedram;
optional_shared_ptr<UINT16> m_workram;

View File

@ -1,5 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Nicola Salmoria
#include "machine/gen_latch.h"
#include "sound/okim6295.h"
class shangha3_state : public driver_device
@ -13,6 +15,7 @@ public:
m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"),
m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch"),
m_ram(*this, "ram") { }
required_device<cpu_device> m_maincpu;
@ -21,6 +24,7 @@ public:
required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
optional_device<generic_latch_8_device> m_soundlatch;
required_shared_ptr<UINT16> m_ram;

View File

@ -1,12 +1,15 @@
// license:BSD-3-Clause
// copyright-holders:Ernesto Corvi,Tim Lindquist,Carlos A. Lozano,Bryan McPhail,Jarek Parchanski,Nicola Salmoria,Tomasz Slanina,Phil Stroffolino,Acho A. Tang,Victor Trucco
// thanks-to:Marco Cassili
/*************************************************************************
various SNK triple Z80 games
*************************************************************************/
#include "machine/gen_latch.h"
class snk_state : public driver_device
{
public:
@ -18,6 +21,7 @@ public:
m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"),
m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch"),
m_spriteram(*this, "spriteram"),
m_fg_videoram(*this, "fg_videoram"),
m_bg_videoram(*this, "bg_videoram"),
@ -29,6 +33,7 @@ public:
required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
optional_device<generic_latch_8_device> m_soundlatch;
required_shared_ptr<UINT8> m_spriteram;
optional_shared_ptr<UINT8> m_fg_videoram;

View File

@ -1,7 +1,10 @@
// license:BSD-3-Clause
// copyright-holders:Bryan McPhail, Acho A. Tang, Nicola Salmoria
#include "machine/gen_latch.h"
#include "sound/upd7759.h"
#include "video/snk68_spr.h"
class snk68_state : public driver_device
{
public:
@ -12,9 +15,10 @@ public:
m_upd7759(*this, "upd"),
m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"),
m_sprites(*this, "sprites"),
m_soundlatch(*this, "soundlatch"),
m_pow_fg_videoram(*this, "pow_fg_videoram"),
m_spriteram(*this, "spriteram"),
m_sprites(*this, "sprites")
m_spriteram(*this, "spriteram")
{ }
required_device<cpu_device> m_maincpu;
@ -22,12 +26,12 @@ public:
required_device<upd7759_device> m_upd7759;
required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
required_device<snk68_spr_device> m_sprites;
required_device<generic_latch_8_device> m_soundlatch;
required_shared_ptr<UINT16> m_pow_fg_videoram;
required_shared_ptr<UINT16> m_spriteram;
required_device<snk68_spr_device> m_sprites;
UINT8 m_invert_controls;
bool m_sprite_flip_axis;
tilemap_t *m_fg_tilemap;

View File

@ -2,6 +2,7 @@
// copyright-holders:David Haywood, Angelo Salese, Olivier Galibert, Mariusz Wojcieszek, R. Belmont
#include "includes/saturn.h"
#include "machine/gen_latch.h"
class stv_state : public saturn_state
{
@ -11,7 +12,8 @@ public:
m_adsp(*this, "adsp"),
m_adsp_pram(*this, "adsp_pram"),
m_cryptdevice(*this, "315_5881"),
m_5838crypt(*this, "315_5838")
m_5838crypt(*this, "315_5838"),
m_soundlatch(*this, "soundlatch")
{
}
@ -122,6 +124,7 @@ public:
optional_device<sega_315_5881_crypt_device> m_cryptdevice;
optional_device<sega_315_5838_comp_device> m_5838crypt;
optional_device<generic_latch_16_device> m_soundlatch; // batmanfr
UINT16 crypt_read_callback(UINT32 addr);
UINT16 crypt_read_callback_ch1(UINT32 addr);
UINT16 crypt_read_callback_ch2(UINT32 addr);

View File

@ -1,5 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Luca Elia
#include "machine/gen_latch.h"
#include "sound/dac.h"
class suna16_state : public driver_device
@ -15,6 +17,7 @@ public:
m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"),
m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch"),
m_spriteram(*this, "spriteram"),
m_spriteram2(*this, "spriteram2"),
m_bank1(*this, "bank1"),
@ -31,6 +34,7 @@ public:
required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
required_device<generic_latch_8_device> m_soundlatch;
required_shared_ptr<UINT16> m_spriteram;
optional_shared_ptr<UINT16> m_spriteram2;

View File

@ -1,5 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Luca Elia
#include "machine/gen_latch.h"
#include "sound/samples.h"
#define TILEMAPS 0
@ -19,6 +21,8 @@ public:
m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"),
m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch"),
m_soundlatch2(*this, "soundlatch2"),
m_bank0d(*this, "bank0d"),
m_bank1(*this, "bank1"),
m_bank1d(*this, "bank1d"),
@ -36,6 +40,8 @@ public:
required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
required_device<generic_latch_8_device> m_soundlatch;
required_device<generic_latch_8_device> m_soundlatch2;
optional_memory_bank m_bank0d;
required_memory_bank m_bank1;
optional_memory_bank m_bank1d;

View File

@ -1,5 +1,8 @@
// license:BSD-3-Clause
// copyright-holders:Zsolt Vasvari
#include "machine/gen_latch.h"
class suprloco_state : public driver_device
{
public:
@ -8,6 +11,7 @@ public:
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_gfxdecode(*this, "gfxdecode"),
m_soundlatch(*this, "soundlatch"),
m_spriteram(*this, "spriteram"),
m_videoram(*this, "videoram"),
m_scrollram(*this, "scrollram"),
@ -16,6 +20,7 @@ public:
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<generic_latch_8_device> m_soundlatch;
required_shared_ptr<UINT8> m_spriteram;
required_shared_ptr<UINT8> m_videoram;

View File

@ -1,6 +1,8 @@
// license:BSD-3-Clause
// copyright-holders:Jarek Parchanski, Nicola Salmoria, Mirko Buffoni
#include "cpu/z80/z80.h"
#include "machine/gen_latch.h"
#include "machine/i8255.h"
#include "machine/segacrp2_device.h"
@ -22,6 +24,7 @@ public:
m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"),
m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch"),
m_decrypted_opcodes(*this, "decrypted_opcodes"),
m_maincpu_region(*this, "maincpu"),
m_color_prom(*this, "palette"),
@ -130,6 +133,7 @@ public:
required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
required_device<generic_latch_8_device> m_soundlatch;
optional_shared_ptr<UINT8> m_decrypted_opcodes;
required_memory_region m_maincpu_region;
optional_region_ptr<UINT8> m_color_prom;

View File

@ -2,6 +2,7 @@
// copyright-holders:Nicola Salmoria, Phil Stroffolino, Mirko Buffoni
#include "video/sega16sp.h"
#include "machine/gen_latch.h"
#include "machine/segaic16.h"
#include "sound/msm5205.h"
#include "sound/upd7759.h"
@ -23,6 +24,7 @@ public:
m_msm(*this, "5205"),
m_upd7759(*this, "7759"),
m_gfxdecode(*this, "gfxdecode"),
m_soundlatch(*this, "soundlatch"),
m_decrypted_opcodes(*this, "decrypted_opcodes") { }
required_shared_ptr<UINT16> m_textram;
@ -120,6 +122,7 @@ public:
optional_device<msm5205_device> m_msm;
optional_device<upd7759_device> m_upd7759;
required_device<gfxdecode_device> m_gfxdecode;
optional_device<generic_latch_8_device> m_soundlatch;
optional_shared_ptr<UINT16> m_decrypted_opcodes;
DECLARE_WRITE16_MEMBER(sound_command_nmi_w);

View File

@ -1,6 +1,8 @@
// license:BSD-3-Clause
// copyright-holders:Jarek Parchanski
#include "audio/seibu.h"
#include "machine/gen_latch.h"
#include "sound/msm5205.h"
#include "video/bufsprite.h"
@ -16,7 +18,8 @@ public:
m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"),
m_palette(*this, "palette"),
m_spriteram(*this, "spriteram") ,
m_soundlatch(*this, "soundlatch"),
m_spriteram(*this, "spriteram"),
m_background1_videoram(*this, "bg1_vram"),
m_background2_videoram(*this, "bg2_vram"),
m_videoram(*this, "videoram"),
@ -29,6 +32,7 @@ public:
required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
optional_device<generic_latch_8_device> m_soundlatch; // tokib
required_device<buffered_spriteram16_device> m_spriteram;
required_shared_ptr<UINT16> m_background1_videoram;

View File

@ -212,7 +212,7 @@ WRITE16_MEMBER( seibu_cop_bootleg_device::copdxbl_0_w )
case (0x740/2):
{
state->soundlatch_byte_w(space, 0, data & 0xff);
state->m_soundlatch->write(space, 0, data & 0xff);
state->m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE );
break;
}