updated remaining drivers to use gen_latch.cpp (nw)

This commit is contained in:
Ivan Vangelista 2016-06-12 12:05:15 +02:00
parent 7893ce3aea
commit 2fd969b16a
173 changed files with 1150 additions and 490 deletions

View File

@ -21,7 +21,7 @@ WRITE16_MEMBER(aztarac_state::sound_w)
if (ACCESSING_BITS_0_7) if (ACCESSING_BITS_0_7)
{ {
data &= 0xff; data &= 0xff;
soundlatch_byte_w(space, offset, data); m_soundlatch->write(space, offset, data);
m_sound_status ^= 0x21; m_sound_status ^= 0x21;
if (m_sound_status & 0x20) if (m_sound_status & 0x20)
m_audiocpu->set_input_line(0, HOLD_LINE); m_audiocpu->set_input_line(0, HOLD_LINE);
@ -32,7 +32,7 @@ READ8_MEMBER(aztarac_state::snd_command_r)
{ {
m_sound_status |= 0x01; m_sound_status |= 0x01;
m_sound_status &= ~0x20; m_sound_status &= ~0x20;
return soundlatch_byte_r(space,offset); return m_soundlatch->read(space,offset);
} }
READ8_MEMBER(aztarac_state::snd_status_r) READ8_MEMBER(aztarac_state::snd_status_r)

View File

@ -201,7 +201,7 @@ M4300049A (relabeled J1100004A/K1100010A)
1x m5m5517 1x m5m5517
z80c z80c
a17_14 protection processor. 28 Pin Motorolla 15-00011-01 DA68235 (Labeled 8909) a17_14 protection processor. 28 Pin Motorola 15-00011-01 DA68235 (Labeled 8909)
Next to MB14241 Next to MB14241
Rom Daughterboard Rom Daughterboard
@ -245,7 +245,7 @@ void fortyl_state::device_timer(emu_timer &timer, device_timer_id id, int param,
WRITE8_MEMBER(fortyl_state::sound_command_w) WRITE8_MEMBER(fortyl_state::sound_command_w)
{ {
soundlatch_byte_w(space, 0, data); m_soundlatch->write(space, 0, data);
synchronize(TIMER_NMI_CALLBACK, data); synchronize(TIMER_NMI_CALLBACK, data);
} }
@ -747,7 +747,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, fortyl_state )
AM_RANGE(0xca00, 0xca0d) AM_DEVWRITE("msm", msm5232_device, write) AM_RANGE(0xca00, 0xca0d) AM_DEVWRITE("msm", msm5232_device, write)
AM_RANGE(0xcc00, 0xcc00) AM_WRITE(sound_control_0_w) AM_RANGE(0xcc00, 0xcc00) AM_WRITE(sound_control_0_w)
AM_RANGE(0xce00, 0xce00) AM_WRITE(sound_control_1_w) AM_RANGE(0xce00, 0xce00) AM_WRITE(sound_control_1_w)
AM_RANGE(0xd800, 0xd800) AM_READ(soundlatch_byte_r) AM_WRITE(to_main_w) AM_RANGE(0xd800, 0xd800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(to_main_w)
AM_RANGE(0xda00, 0xda00) AM_READNOP AM_WRITE(nmi_enable_w) /* unknown read */ AM_RANGE(0xda00, 0xda00) AM_READNOP AM_WRITE(nmi_enable_w) /* unknown read */
AM_RANGE(0xdc00, 0xdc00) AM_WRITE(nmi_disable_w) AM_RANGE(0xdc00, 0xdc00) AM_WRITE(nmi_disable_w)
AM_RANGE(0xde00, 0xde00) AM_READNOP AM_DEVWRITE("dac", dac_device, write_signed8) /* signed 8-bit DAC - unknown read */ AM_RANGE(0xde00, 0xde00) AM_READNOP AM_DEVWRITE("dac", dac_device, write_signed8) /* signed 8-bit DAC - unknown read */
@ -1069,6 +1069,8 @@ static MACHINE_CONFIG_START( 40love, fortyl_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("aysnd", AY8910, 2000000) MCFG_SOUND_ADD("aysnd", AY8910, 2000000)
MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(fortyl_state, sound_control_2_w)) MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(fortyl_state, sound_control_2_w))
MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(fortyl_state, sound_control_3_w)) MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(fortyl_state, sound_control_3_w))
@ -1126,6 +1128,8 @@ static MACHINE_CONFIG_START( undoukai, fortyl_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("aysnd", AY8910, 2000000) MCFG_SOUND_ADD("aysnd", AY8910, 2000000)
MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(fortyl_state, sound_control_2_w)) MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(fortyl_state, sound_control_2_w))
MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(fortyl_state, sound_control_3_w)) MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(fortyl_state, sound_control_3_w))

View File

@ -65,7 +65,6 @@ Verification still needed for the other PCBs.
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "sound/2610intf.h" #include "sound/2610intf.h"
#include "sound/3812intf.h" #include "sound/3812intf.h"
#include "sound/okim6295.h"
#include "includes/aerofgt.h" #include "includes/aerofgt.h"
WRITE16_MEMBER(aerofgt_state::sound_command_w) WRITE16_MEMBER(aerofgt_state::sound_command_w)
@ -73,7 +72,7 @@ WRITE16_MEMBER(aerofgt_state::sound_command_w)
if (ACCESSING_BITS_0_7) if (ACCESSING_BITS_0_7)
{ {
m_pending_command = 1; m_pending_command = 1;
soundlatch_byte_w(space, offset, data & 0xff); m_soundlatch->write(space, offset, data & 0xff);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
} }
@ -83,7 +82,7 @@ WRITE16_MEMBER(aerofgt_state::turbofrc_sound_command_w)
if (ACCESSING_BITS_8_15) if (ACCESSING_BITS_8_15)
{ {
m_pending_command = 1; m_pending_command = 1;
soundlatch_byte_w(space, offset, (data >> 8) & 0xff); m_soundlatch->write(space, offset, (data >> 8) & 0xff);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
} }
@ -92,7 +91,7 @@ WRITE16_MEMBER(aerofgt_state::aerfboot_soundlatch_w)
{ {
if(ACCESSING_BITS_8_15) 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(INPUT_LINE_NMI, PULSE_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
} }
@ -385,7 +384,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( turbofrc_sound_portmap, AS_IO, 8, aerofgt_state ) static ADDRESS_MAP_START( turbofrc_sound_portmap, AS_IO, 8, aerofgt_state )
ADDRESS_MAP_GLOBAL_MASK(0xff) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_WRITE(aerofgt_sh_bankswitch_w) AM_RANGE(0x00, 0x00) AM_WRITE(aerofgt_sh_bankswitch_w)
AM_RANGE(0x14, 0x14) AM_READ(soundlatch_byte_r) AM_WRITE(pending_command_clear_w) AM_RANGE(0x14, 0x14) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(pending_command_clear_w)
AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -394,7 +393,7 @@ static ADDRESS_MAP_START( aerofgt_sound_portmap, AS_IO, 8, aerofgt_state )
AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
AM_RANGE(0x04, 0x04) AM_WRITE(aerofgt_sh_bankswitch_w) AM_RANGE(0x04, 0x04) AM_WRITE(aerofgt_sh_bankswitch_w)
AM_RANGE(0x08, 0x08) AM_WRITE(pending_command_clear_w) AM_RANGE(0x08, 0x08) AM_WRITE(pending_command_clear_w)
AM_RANGE(0x0c, 0x0c) AM_READ(soundlatch_byte_r) AM_RANGE(0x0c, 0x0c) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( aerfboot_sound_map, AS_PROGRAM, 8, aerofgt_state ) static ADDRESS_MAP_START( aerfboot_sound_map, AS_PROGRAM, 8, aerofgt_state )
@ -402,7 +401,7 @@ static ADDRESS_MAP_START( aerfboot_sound_map, AS_PROGRAM, 8, aerofgt_state )
AM_RANGE(0x8000, 0x87ff) AM_RAM AM_RANGE(0x8000, 0x87ff) AM_RAM
AM_RANGE(0x9000, 0x9000) AM_WRITE(aerfboot_okim6295_banking_w) AM_RANGE(0x9000, 0x9000) AM_WRITE(aerfboot_okim6295_banking_w)
AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write) 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 ADDRESS_MAP_END
static ADDRESS_MAP_START( wbbc97_sound_map, AS_PROGRAM, 8, aerofgt_state ) static ADDRESS_MAP_START( wbbc97_sound_map, AS_PROGRAM, 8, aerofgt_state )
@ -411,7 +410,7 @@ static ADDRESS_MAP_START( wbbc97_sound_map, AS_PROGRAM, 8, aerofgt_state )
AM_RANGE(0xf800, 0xf800) AM_DEVREADWRITE("oki", okim6295_device, read, write) AM_RANGE(0xf800, 0xf800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
AM_RANGE(0xf810, 0xf811) AM_DEVWRITE("ymsnd", ym3812_device, write) AM_RANGE(0xf810, 0xf811) AM_DEVWRITE("ymsnd", ym3812_device, write)
AM_RANGE(0xfc00, 0xfc00) AM_NOP AM_RANGE(0xfc00, 0xfc00) AM_NOP
AM_RANGE(0xfc20, 0xfc20) AM_READ(soundlatch_byte_r) AM_RANGE(0xfc20, 0xfc20) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( karatblzbl_sound_map, AS_PROGRAM, 8, aerofgt_state ) static ADDRESS_MAP_START( karatblzbl_sound_map, AS_PROGRAM, 8, aerofgt_state )
@ -1349,6 +1348,8 @@ static MACHINE_CONFIG_START( pspikes, aerofgt_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2610, 8000000) MCFG_SOUND_ADD("ymsnd", YM2610, 8000000)
MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.25) MCFG_SOUND_ROUTE(0, "lspeaker", 0.25)
@ -1505,6 +1506,8 @@ static MACHINE_CONFIG_START( karatblz, aerofgt_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2610, XTAL_8MHz ) /* verified on pcb */ MCFG_SOUND_ADD("ymsnd", YM2610, XTAL_8MHz ) /* verified on pcb */
MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.25) MCFG_SOUND_ROUTE(0, "lspeaker", 0.25)
@ -1551,7 +1554,10 @@ static MACHINE_CONFIG_START( karatblzbl, aerofgt_state )
MCFG_VIDEO_START_OVERRIDE(aerofgt_state,karatblz) MCFG_VIDEO_START_OVERRIDE(aerofgt_state,karatblz)
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
/* sound hardware */ /* sound hardware */
//MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") // breaks savestate //MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") // breaks savestate
// NEC D7759c + YM???? // NEC D7759c + YM????
@ -1601,6 +1607,8 @@ static MACHINE_CONFIG_START( spinlbrk, aerofgt_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2610, XTAL_8MHz) /* verified on pcb */ MCFG_SOUND_ADD("ymsnd", YM2610, XTAL_8MHz) /* verified on pcb */
MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.25) MCFG_SOUND_ROUTE(0, "lspeaker", 0.25)
@ -1652,6 +1660,8 @@ static MACHINE_CONFIG_START( turbofrc, aerofgt_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2610, XTAL_8MHz) /* verified on pcb */ MCFG_SOUND_ADD("ymsnd", YM2610, XTAL_8MHz) /* verified on pcb */
MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.25) MCFG_SOUND_ROUTE(0, "lspeaker", 0.25)
@ -1704,6 +1714,8 @@ static MACHINE_CONFIG_START( aerofgtb, aerofgt_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2610, 8000000) MCFG_SOUND_ADD("ymsnd", YM2610, 8000000)
MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.25) MCFG_SOUND_ROUTE(0, "lspeaker", 0.25)
@ -1751,6 +1763,8 @@ static MACHINE_CONFIG_START( aerofgt, aerofgt_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2610, XTAL_8MHz) /* verified on pcb */ MCFG_SOUND_ADD("ymsnd", YM2610, XTAL_8MHz) /* verified on pcb */
MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.25) MCFG_SOUND_ROUTE(0, "lspeaker", 0.25)
@ -1791,6 +1805,8 @@ static MACHINE_CONFIG_START( aerfboot, aerofgt_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_OKIM6295_ADD("oki", 1056000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified
MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
@ -1864,6 +1880,8 @@ static MACHINE_CONFIG_START( wbbc97, aerofgt_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM3812, 3579545) MCFG_SOUND_ADD("ymsnd", YM3812, 3579545)
MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)

View File

@ -71,7 +71,7 @@ READ8_MEMBER(amspdwy_state::amspdwy_sound_r)
WRITE8_MEMBER(amspdwy_state::amspdwy_sound_w) WRITE8_MEMBER(amspdwy_state::amspdwy_sound_w)
{ {
soundlatch_byte_w(space, 0, data); m_soundlatch->write(space, 0, data);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
@ -109,7 +109,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( amspdwy_sound_map, AS_PROGRAM, 8, amspdwy_state ) static ADDRESS_MAP_START( amspdwy_sound_map, AS_PROGRAM, 8, amspdwy_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x0000, 0x7fff) AM_ROM
// AM_RANGE(0x8000, 0x8000) AM_WRITENOP // ? writes 0 at start // AM_RANGE(0x8000, 0x8000) AM_WRITENOP // ? writes 0 at start
AM_RANGE(0x9000, 0x9000) AM_READ(soundlatch_byte_r) AM_RANGE(0x9000, 0x9000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
AM_RANGE(0xc000, 0xdfff) AM_RAM AM_RANGE(0xc000, 0xdfff) AM_RAM
AM_RANGE(0xffff, 0xffff) AM_READNOP // ??? IY = FFFF at the start ? AM_RANGE(0xffff, 0xffff) AM_READNOP // ??? IY = FFFF at the start ?
@ -277,6 +277,8 @@ static MACHINE_CONFIG_START( amspdwy, amspdwy_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", 3000000) MCFG_YM2151_ADD("ymsnd", 3000000)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)

View File

@ -69,7 +69,7 @@ Dips:
Easy (A) -> Difficult (D) Easy (A) -> Difficult (D)
Game is controled with 4-direction lever and two buttons Game is controlled with 4-direction lever and two buttons
Coin B is not used Coin B is not used
*************************************************************************/ *************************************************************************/
@ -78,7 +78,6 @@ Coin B is not used
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "cpu/m68000/m68000.h" #include "cpu/m68000/m68000.h"
#include "sound/2203intf.h" #include "sound/2203intf.h"
#include "sound/msm5205.h"
#include "includes/ashnojoe.h" #include "includes/ashnojoe.h"
READ16_MEMBER(ashnojoe_state::fake_4a00a_r) READ16_MEMBER(ashnojoe_state::fake_4a00a_r)
@ -93,7 +92,7 @@ WRITE16_MEMBER(ashnojoe_state::ashnojoe_soundlatch_w)
if (ACCESSING_BITS_0_7) if (ACCESSING_BITS_0_7)
{ {
m_soundlatch_status = 1; m_soundlatch_status = 1;
soundlatch_byte_w(space, 0, data & 0xff); m_soundlatch->write(space, 0, data & 0xff);
} }
} }
@ -128,7 +127,7 @@ WRITE8_MEMBER(ashnojoe_state::adpcm_w)
READ8_MEMBER(ashnojoe_state::sound_latch_r) READ8_MEMBER(ashnojoe_state::sound_latch_r)
{ {
m_soundlatch_status = 0; m_soundlatch_status = 0;
return soundlatch_byte_r(space, 0); return m_soundlatch->read(space, 0);
} }
READ8_MEMBER(ashnojoe_state::sound_latch_status_r) READ8_MEMBER(ashnojoe_state::sound_latch_status_r)
@ -349,6 +348,8 @@ static MACHINE_CONFIG_START( ashnojoe, ashnojoe_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2203, 4000000) MCFG_SOUND_ADD("ymsnd", YM2203, 4000000)
MCFG_YM2203_IRQ_HANDLER(WRITELINE(ashnojoe_state, ym2203_irq_handler)) MCFG_YM2203_IRQ_HANDLER(WRITELINE(ashnojoe_state, ym2203_irq_handler))
MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(ashnojoe_state, ym2203_write_a)) MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(ashnojoe_state, ym2203_write_a))

View File

@ -173,6 +173,8 @@ static MACHINE_CONFIG_START( aztarac, aztarac_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, 2000000) MCFG_SOUND_ADD("ay1", AY8910, 2000000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)

View File

@ -45,7 +45,7 @@ WRITE8_MEMBER(bking_state::bking_soundlatch_w)
if (data & (1 << i)) if (data & (1 << i))
code |= 0x80 >> i; code |= 0x80 >> i;
soundlatch_byte_w(space, offset, code); m_soundlatch->write(space, offset, code);
if (m_sound_nmi_enable) if (m_sound_nmi_enable)
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
@ -134,7 +134,7 @@ static ADDRESS_MAP_START( bking_audio_map, AS_PROGRAM, 8, bking_state )
AM_RANGE(0x4401, 0x4401) AM_DEVREAD("ay1", ay8910_device, data_r) AM_RANGE(0x4401, 0x4401) AM_DEVREAD("ay1", ay8910_device, data_r)
AM_RANGE(0x4402, 0x4403) AM_DEVWRITE("ay2", ay8910_device, address_data_w) AM_RANGE(0x4402, 0x4403) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
AM_RANGE(0x4403, 0x4403) AM_DEVREAD("ay2", ay8910_device, data_r) AM_RANGE(0x4403, 0x4403) AM_DEVREAD("ay2", ay8910_device, data_r)
AM_RANGE(0x4800, 0x4800) AM_READ(soundlatch_byte_r) AM_RANGE(0x4800, 0x4800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0x4802, 0x4802) AM_READWRITE(bking_sndnmi_disable_r, bking_sndnmi_enable_w) AM_RANGE(0x4802, 0x4802) AM_READWRITE(bking_sndnmi_disable_r, bking_sndnmi_enable_w)
AM_RANGE(0xe000, 0xefff) AM_ROM /* Space for diagnostic ROM */ AM_RANGE(0xe000, 0xefff) AM_ROM /* Space for diagnostic ROM */
ADDRESS_MAP_END ADDRESS_MAP_END
@ -483,6 +483,8 @@ static MACHINE_CONFIG_START( bking, bking_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, XTAL_6MHz/4) MCFG_SOUND_ADD("ay1", AY8910, XTAL_6MHz/4)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)

View File

@ -80,7 +80,7 @@ WRITE16_MEMBER(blockout_state::blockout_sound_command_w)
{ {
if (ACCESSING_BITS_0_7) if (ACCESSING_BITS_0_7)
{ {
soundlatch_byte_w(space, offset, data & 0xff); m_soundlatch->write(space, offset, data & 0xff);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
} }
@ -146,7 +146,7 @@ static ADDRESS_MAP_START( audio_map, AS_PROGRAM, 8, blockout_state )
AM_RANGE(0x8000, 0x87ff) AM_RAM AM_RANGE(0x8000, 0x87ff) AM_RAM
AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write) 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 ADDRESS_MAP_END
@ -318,6 +318,8 @@ static MACHINE_CONFIG_START( blockout, blockout_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", AUDIO_CLOCK) MCFG_YM2151_ADD("ymsnd", AUDIO_CLOCK)
MCFG_YM2151_IRQ_HANDLER(WRITELINE(blockout_state,irq_handler)) MCFG_YM2151_IRQ_HANDLER(WRITELINE(blockout_state,irq_handler))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.60) MCFG_SOUND_ROUTE(0, "lspeaker", 0.60)

View File

@ -316,7 +316,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, bublbobl_state )
AM_RANGE(0x8000, 0x8fff) AM_RAM AM_RANGE(0x8000, 0x8fff) AM_RAM
AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ym1", ym2203_device, read, write) AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym2", ym3526_device, read, write) AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym2", ym3526_device, read, write)
AM_RANGE(0xb000, 0xb000) AM_READ(soundlatch_byte_r) AM_WRITE(bublbobl_sound_status_w) AM_RANGE(0xb000, 0xb000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(bublbobl_sound_status_w)
AM_RANGE(0xb001, 0xb001) AM_WRITE(bublbobl_sh_nmi_enable_w) AM_READNOP AM_RANGE(0xb001, 0xb001) AM_WRITE(bublbobl_sh_nmi_enable_w) AM_READNOP
AM_RANGE(0xb002, 0xb002) AM_WRITE(bublbobl_sh_nmi_disable_w) AM_RANGE(0xb002, 0xb002) AM_WRITE(bublbobl_sh_nmi_disable_w)
AM_RANGE(0xe000, 0xffff) AM_ROM // space for diagnostic ROM? AM_RANGE(0xe000, 0xffff) AM_ROM // space for diagnostic ROM?
@ -400,7 +400,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( tokio_sound_map, AS_PROGRAM, 8, bublbobl_state ) static ADDRESS_MAP_START( tokio_sound_map, AS_PROGRAM, 8, bublbobl_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x8fff) AM_RAM AM_RANGE(0x8000, 0x8fff) AM_RAM
AM_RANGE(0x9000, 0x9000) AM_READ(soundlatch_byte_r) AM_WRITE(bublbobl_sound_status_w) AM_RANGE(0x9000, 0x9000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(bublbobl_sound_status_w)
AM_RANGE(0x9800, 0x9800) AM_READNOP // ??? AM_RANGE(0x9800, 0x9800) AM_READNOP // ???
AM_RANGE(0xa000, 0xa000) AM_WRITE(bublbobl_sh_nmi_disable_w) AM_RANGE(0xa000, 0xa000) AM_WRITE(bublbobl_sh_nmi_disable_w)
AM_RANGE(0xa800, 0xa800) AM_WRITE(bublbobl_sh_nmi_enable_w) AM_RANGE(0xa800, 0xa800) AM_WRITE(bublbobl_sh_nmi_enable_w)
@ -802,6 +802,8 @@ static MACHINE_CONFIG_START( tokio, bublbobl_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2203, MAIN_XTAL/8) MCFG_SOUND_ADD("ymsnd", YM2203, MAIN_XTAL/8)
MCFG_YM2203_IRQ_HANDLER(WRITELINE(bublbobl_state, irqhandler)) MCFG_YM2203_IRQ_HANDLER(WRITELINE(bublbobl_state, irqhandler))
MCFG_SOUND_ROUTE(0, "mono", 0.08) MCFG_SOUND_ROUTE(0, "mono", 0.08)
@ -886,6 +888,8 @@ static MACHINE_CONFIG_START( bublbobl, bublbobl_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ym1", YM2203, MAIN_XTAL/8) MCFG_SOUND_ADD("ym1", YM2203, MAIN_XTAL/8)
MCFG_YM2203_IRQ_HANDLER(WRITELINE(bublbobl_state, irqhandler)) MCFG_YM2203_IRQ_HANDLER(WRITELINE(bublbobl_state, irqhandler))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)

View File

@ -102,7 +102,7 @@ TIMER_CALLBACK_MEMBER(buggychl_state::nmi_callback)
WRITE8_MEMBER(buggychl_state::sound_command_w) WRITE8_MEMBER(buggychl_state::sound_command_w)
{ {
soundlatch_byte_w(space, 0, data); m_soundlatch->write(space, 0, data);
machine().scheduler().synchronize(timer_expired_delegate(FUNC(buggychl_state::nmi_callback),this), data); machine().scheduler().synchronize(timer_expired_delegate(FUNC(buggychl_state::nmi_callback),this), data);
} }
@ -168,7 +168,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, buggychl_state )
AM_RANGE(0x4810, 0x481d) AM_DEVWRITE("msm", msm5232_device, write) AM_RANGE(0x4810, 0x481d) AM_DEVWRITE("msm", msm5232_device, write)
AM_RANGE(0x4820, 0x4820) AM_RAM /* VOL/BAL for the 7630 on the MSM5232 output */ AM_RANGE(0x4820, 0x4820) AM_RAM /* VOL/BAL for the 7630 on the MSM5232 output */
AM_RANGE(0x4830, 0x4830) AM_RAM /* TRBL/BASS for the 7630 on the MSM5232 output */ AM_RANGE(0x4830, 0x4830) AM_RAM /* TRBL/BASS for the 7630 on the MSM5232 output */
AM_RANGE(0x5000, 0x5000) AM_READ(soundlatch_byte_r) AM_RANGE(0x5000, 0x5000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
// AM_RANGE(0x5001, 0x5001) AM_READNOP /* is command pending? */ // AM_RANGE(0x5001, 0x5001) AM_READNOP /* is command pending? */
AM_RANGE(0x5001, 0x5001) AM_WRITE(nmi_enable_w) AM_RANGE(0x5001, 0x5001) AM_WRITE(nmi_enable_w)
AM_RANGE(0x5002, 0x5002) AM_WRITE(nmi_disable_w) AM_RANGE(0x5002, 0x5002) AM_WRITE(nmi_disable_w)
@ -394,6 +394,8 @@ static MACHINE_CONFIG_START( buggychl, buggychl_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, 8000000/4) MCFG_SOUND_ADD("ay1", AY8910, 8000000/4)
MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(buggychl_state, port_a_0_w)) MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(buggychl_state, port_a_0_w))
MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(buggychl_state, port_b_0_w)) MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(buggychl_state, port_b_0_w))

View File

@ -76,14 +76,12 @@ Versions known to exist but not dumped:
#include "emu.h" #include "emu.h"
#include "cpu/m68000/m68000.h" #include "cpu/m68000/m68000.h"
#include "machine/eepromser.h"
#include "machine/nvram.h" #include "machine/nvram.h"
#include "machine/watchdog.h" #include "machine/watchdog.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "includes/cave.h" #include "includes/cave.h"
#include "sound/2203intf.h" #include "sound/2203intf.h"
#include "sound/2151intf.h" #include "sound/2151intf.h"
#include "sound/okim6295.h"
#include "sound/ymz280b.h" #include "sound/ymz280b.h"
#include "ppsatan.lh" #include "ppsatan.lh"
@ -235,7 +233,7 @@ WRITE16_MEMBER(cave_state::sound_cmd_w)
{ {
// m_sound_flag1 = 1; // m_sound_flag1 = 1;
// m_sound_flag2 = 1; // m_sound_flag2 = 1;
soundlatch_word_w(space, offset, data, mem_mask); m_soundlatch->write(space, offset, data, mem_mask);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
space.device().execute().spin_until_time(attotime::from_usec(50)); // Allow the other cpu to reply space.device().execute().spin_until_time(attotime::from_usec(50)); // Allow the other cpu to reply
} }
@ -244,14 +242,14 @@ WRITE16_MEMBER(cave_state::sound_cmd_w)
READ8_MEMBER(cave_state::soundlatch_lo_r) READ8_MEMBER(cave_state::soundlatch_lo_r)
{ {
// m_sound_flag1 = 0; // m_sound_flag1 = 0;
return soundlatch_word_r(space, offset, 0x00ff) & 0xff; return m_soundlatch->read(space, offset, 0x00ff) & 0xff;
} }
/* Sound CPU: read the high 8 bits of the 16 bit sound latch */ /* Sound CPU: read the high 8 bits of the 16 bit sound latch */
READ8_MEMBER(cave_state::soundlatch_hi_r) READ8_MEMBER(cave_state::soundlatch_hi_r)
{ {
// m_sound_flag2 = 0; // m_sound_flag2 = 0;
return soundlatch_word_r(space, offset, 0xff00) >> 8; return m_soundlatch->read(space, offset, 0xff00) >> 8;
} }
/* Main CPU: read the latch written by the sound CPU (acknowledge) */ /* Main CPU: read the latch written by the sound CPU (acknowledge) */
@ -2249,6 +2247,8 @@ static MACHINE_CONFIG_START( hotdogst, cave_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_16_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_32MHz/8) MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_32MHz/8)
MCFG_YM2203_IRQ_HANDLER(WRITELINE(cave_state, irqhandler)) MCFG_YM2203_IRQ_HANDLER(WRITELINE(cave_state, irqhandler))
MCFG_SOUND_ROUTE(0, "mono", 0.20) MCFG_SOUND_ROUTE(0, "mono", 0.20)
@ -2350,6 +2350,8 @@ static MACHINE_CONFIG_START( mazinger, cave_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_16_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_4MHz) MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_4MHz)
MCFG_YM2203_IRQ_HANDLER(WRITELINE(cave_state, irqhandler)) MCFG_YM2203_IRQ_HANDLER(WRITELINE(cave_state, irqhandler))
MCFG_SOUND_ROUTE(0, "mono", 0.20) MCFG_SOUND_ROUTE(0, "mono", 0.20)
@ -2404,6 +2406,8 @@ static MACHINE_CONFIG_START( metmqstr, cave_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_16_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", XTAL_16MHz / 4) MCFG_YM2151_ADD("ymsnd", XTAL_16MHz / 4)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.6) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.6)
@ -2576,6 +2580,8 @@ static MACHINE_CONFIG_START( pwrinst2, cave_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_16_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_16MHz / 4) MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_16MHz / 4)
MCFG_YM2203_IRQ_HANDLER(WRITELINE(cave_state, irqhandler)) MCFG_YM2203_IRQ_HANDLER(WRITELINE(cave_state, irqhandler))
MCFG_SOUND_ROUTE(0, "mono", 0.40) MCFG_SOUND_ROUTE(0, "mono", 0.40)
@ -2634,6 +2640,9 @@ static MACHINE_CONFIG_START( sailormn, cave_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_16_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", XTAL_16MHz/4) MCFG_YM2151_ADD("ymsnd", XTAL_16MHz/4)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)

View File

@ -41,7 +41,7 @@ ADPCM in the bootlegs is not quite right.... Misusing the data?
the microcode dump's the same). This in conjunction with the different the microcode dump's the same). This in conjunction with the different
ADPCM chip (msm5205) are used to 'fake' a M6295. ADPCM chip (msm5205) are used to 'fake' a M6295.
- Bootleg 1 ADPCM is now wired up, but still not working :-( - Bootleg 1 ADPCM is now wired up, but still not working :-(
Definantly sync problems between the i8049 and the m5205 which need Definitely sync problems between the i8049 and the m5205 which need
further looking at. further looking at.
@ -79,7 +79,6 @@ Dip locations and factory settings verified with China Gate US manual.
#include "sound/2151intf.h" #include "sound/2151intf.h"
#include "sound/2203intf.h" #include "sound/2203intf.h"
#include "sound/okim6295.h" #include "sound/okim6295.h"
#include "sound/msm5205.h"
#include "includes/ddragon.h" #include "includes/ddragon.h"
#define MAIN_CLOCK XTAL_12MHz #define MAIN_CLOCK XTAL_12MHz
@ -166,7 +165,7 @@ WRITE8_MEMBER(chinagat_state::chinagat_interrupt_w )
switch (offset) switch (offset)
{ {
case 0: /* 3e00 - SND irq */ case 0: /* 3e00 - SND irq */
soundlatch_byte_w(space, 0, data); m_soundlatch->write(space, 0, data);
m_soundcpu->set_input_line(m_sound_irq, (m_sound_irq == INPUT_LINE_NMI) ? PULSE_LINE : HOLD_LINE ); m_soundcpu->set_input_line(m_sound_irq, (m_sound_irq == INPUT_LINE_NMI) ? PULSE_LINE : HOLD_LINE );
break; break;
@ -356,7 +355,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, chinagat_state )
AM_RANGE(0x8000, 0x87ff) AM_RAM AM_RANGE(0x8000, 0x87ff) AM_RAM
AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write) 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 ADDRESS_MAP_END
static ADDRESS_MAP_START( ym2203c_sound_map, AS_PROGRAM, 8, chinagat_state ) static ADDRESS_MAP_START( ym2203c_sound_map, AS_PROGRAM, 8, chinagat_state )
@ -374,7 +373,7 @@ static ADDRESS_MAP_START( ym2203c_sound_map, AS_PROGRAM, 8, chinagat_state )
// AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) // AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
// AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write) // 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 ADDRESS_MAP_END
static ADDRESS_MAP_START( saiyugoub1_sound_map, AS_PROGRAM, 8, chinagat_state ) static ADDRESS_MAP_START( saiyugoub1_sound_map, AS_PROGRAM, 8, chinagat_state )
@ -382,7 +381,7 @@ static ADDRESS_MAP_START( saiyugoub1_sound_map, AS_PROGRAM, 8, chinagat_state )
AM_RANGE(0x8000, 0x87ff) AM_RAM AM_RANGE(0x8000, 0x87ff) AM_RAM
AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
AM_RANGE(0x9800, 0x9800) AM_WRITE(saiyugoub1_mcu_command_w) AM_RANGE(0x9800, 0x9800) AM_WRITE(saiyugoub1_mcu_command_w)
AM_RANGE(0xA000, 0xA000) AM_READ(soundlatch_byte_r) AM_RANGE(0xA000, 0xA000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( i8748_map, AS_PROGRAM, 8, chinagat_state ) static ADDRESS_MAP_START( i8748_map, AS_PROGRAM, 8, chinagat_state )
@ -583,6 +582,8 @@ static MACHINE_CONFIG_START( chinagat, chinagat_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", 3579545) MCFG_YM2151_ADD("ymsnd", 3579545)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", 0)) MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", 0))
MCFG_SOUND_ROUTE(0, "mono", 0.80) MCFG_SOUND_ROUTE(0, "mono", 0.80)
@ -629,6 +630,8 @@ static MACHINE_CONFIG_START( saiyugoub1, chinagat_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", 3579545) MCFG_YM2151_ADD("ymsnd", 3579545)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", 0)) MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", 0))
MCFG_SOUND_ROUTE(0, "mono", 0.80) MCFG_SOUND_ROUTE(0, "mono", 0.80)
@ -673,6 +676,8 @@ static MACHINE_CONFIG_START( saiyugoub2, chinagat_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ym1", YM2203, 3579545) MCFG_SOUND_ADD("ym1", YM2203, 3579545)
MCFG_YM2203_IRQ_HANDLER(WRITELINE(chinagat_state, chinagat_irq_handler)) MCFG_YM2203_IRQ_HANDLER(WRITELINE(chinagat_state, chinagat_irq_handler))
MCFG_SOUND_ROUTE(0, "mono", 0.50) MCFG_SOUND_ROUTE(0, "mono", 0.50)

View File

@ -312,6 +312,7 @@
#include "emu.h" #include "emu.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "sound/ay8910.h" #include "sound/ay8910.h"
#include "machine/gen_latch.h"
#include "machine/nvram.h" #include "machine/nvram.h"
#include "re800.lh" #include "re800.lh"
#include "luckyrlt.lh" #include "luckyrlt.lh"
@ -324,7 +325,8 @@ public:
: driver_device(mconfig, type, tag), : driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"), m_maincpu(*this, "maincpu"),
m_soundcpu(*this, "soundcpu"), m_soundcpu(*this, "soundcpu"),
m_screen(*this, "screen") { } m_screen(*this, "screen"),
m_soundlatch(*this, "soundlatch") { }
UINT8 m_blitter_x_reg; UINT8 m_blitter_x_reg;
UINT8 m_blitter_y_reg; UINT8 m_blitter_y_reg;
@ -354,6 +356,7 @@ public:
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_soundcpu; required_device<cpu_device> m_soundcpu;
required_device<screen_device> m_screen; required_device<screen_device> m_screen;
required_device<generic_latch_8_device> m_soundlatch;
}; };
@ -494,14 +497,14 @@ UINT32 corona_state::screen_update_luckyrlt(screen_device &screen, bitmap_ind16
WRITE8_MEMBER(corona_state::sound_latch_w) WRITE8_MEMBER(corona_state::sound_latch_w)
{ {
soundlatch_byte_w(space, 0, data & 0xff); m_soundlatch->write(space, 0, data & 0xff);
m_soundcpu->set_input_line(0, ASSERT_LINE); m_soundcpu->set_input_line(0, ASSERT_LINE);
} }
READ8_MEMBER(corona_state::sound_latch_r) READ8_MEMBER(corona_state::sound_latch_r)
{ {
m_soundcpu->set_input_line(0, CLEAR_LINE); m_soundcpu->set_input_line(0, CLEAR_LINE);
return soundlatch_byte_r(space, 0); return m_soundlatch->read(space, 0);
} }
@ -1364,6 +1367,9 @@ static MACHINE_CONFIG_START( winner81, corona_state )
MCFG_PALETTE_INIT_OWNER(corona_state, corona) MCFG_PALETTE_INIT_OWNER(corona_state, corona)
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("aysnd", AY8912, AY_CLK1) /* measured */ MCFG_SOUND_ADD("aysnd", AY8912, AY_CLK1) /* measured */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END MACHINE_CONFIG_END
@ -1395,6 +1401,9 @@ static MACHINE_CONFIG_START( winner82, corona_state )
MCFG_PALETTE_INIT_OWNER(corona_state, corona) MCFG_PALETTE_INIT_OWNER(corona_state, corona)
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("aysnd", AY8910, AY_CLK2) /* measured */ MCFG_SOUND_ADD("aysnd", AY8910, AY_CLK2) /* measured */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END MACHINE_CONFIG_END
@ -1427,6 +1436,9 @@ static MACHINE_CONFIG_START( re800, corona_state )
MCFG_PALETTE_INIT_OWNER(corona_state, corona) MCFG_PALETTE_INIT_OWNER(corona_state, corona)
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("aysnd", AY8912, AY_CLK2) MCFG_SOUND_ADD("aysnd", AY8912, AY_CLK2)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END MACHINE_CONFIG_END
@ -1458,6 +1470,9 @@ static MACHINE_CONFIG_START( rcirulet, corona_state )
MCFG_PALETTE_INIT_OWNER(corona_state, corona) MCFG_PALETTE_INIT_OWNER(corona_state, corona)
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("aysnd", AY8912, AY_CLK2) MCFG_SOUND_ADD("aysnd", AY8912, AY_CLK2)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END MACHINE_CONFIG_END
@ -1490,6 +1505,9 @@ static MACHINE_CONFIG_START( luckyrlt, corona_state )
MCFG_PALETTE_INIT_OWNER(corona_state, corona) MCFG_PALETTE_INIT_OWNER(corona_state, corona)
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("aysnd", AY8912, AY_CLK1) MCFG_SOUND_ADD("aysnd", AY8912, AY_CLK1)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END MACHINE_CONFIG_END

View File

@ -15,7 +15,7 @@ Stephh's notes (based on the games M68000 code and some tests) :
0) all games 0) all games
- There seems to be preliminary support for 3 simulataneous players, but the - There seems to be preliminary support for 3 simultaneous players, but the
game resets before the race starts if the 3 players don't play against each game resets before the race starts if the 3 players don't play against each
other ! I can't tell however if it's an ingame or an emulation bug. other ! I can't tell however if it's an ingame or an emulation bug.
To test this, change CRSHRACE_3P_HACK to 1, set the "Reset on P.O.S.T. Error" To test this, change CRSHRACE_3P_HACK to 1, set the "Reset on P.O.S.T. Error"
@ -148,7 +148,7 @@ WRITE16_MEMBER(crshrace_state::sound_command_w)
if (ACCESSING_BITS_0_7) if (ACCESSING_BITS_0_7)
{ {
m_pending_command = 1; m_pending_command = 1;
soundlatch_byte_w(space, offset, data & 0xff); m_soundlatch->write(space, offset, data & 0xff);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
} }
@ -196,7 +196,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_io_map, AS_IO, 8, crshrace_state ) static ADDRESS_MAP_START( sound_io_map, AS_IO, 8, crshrace_state )
ADDRESS_MAP_GLOBAL_MASK(0xff) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_WRITE(crshrace_sh_bankswitch_w) AM_RANGE(0x00, 0x00) AM_WRITE(crshrace_sh_bankswitch_w)
AM_RANGE(0x04, 0x04) AM_READ(soundlatch_byte_r) AM_WRITE(pending_command_clear_w) AM_RANGE(0x04, 0x04) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(pending_command_clear_w)
AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -466,6 +466,8 @@ static MACHINE_CONFIG_START( crshrace, crshrace_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2610, 8000000) MCFG_SOUND_ADD("ymsnd", YM2610, 8000000)
MCFG_YM2610_IRQ_HANDLER(WRITELINE(crshrace_state, irqhandler)) MCFG_YM2610_IRQ_HANDLER(WRITELINE(crshrace_state, irqhandler))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.25) MCFG_SOUND_ROUTE(0, "lspeaker", 0.25)

View File

@ -6,7 +6,7 @@ Cyber Tank HW (c) 1987/1988 Coreland Technology
preliminary driver by Angelo Salese & David Haywood preliminary driver by Angelo Salese & David Haywood
Maybe it has some correlation with WEC Le Mans HW? (supposely that was originally done by Coreland too) Maybe it has some correlation with WEC Le Mans HW? (supposedly that was originally done by Coreland too)
TODO: TODO:
- improve sprite zooming - improve sprite zooming
@ -172,6 +172,7 @@ lev 7 : 0x7c : 0000 07e0 - input device clear?
#include "emu.h" #include "emu.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "cpu/m68000/m68000.h" #include "cpu/m68000/m68000.h"
#include "machine/gen_latch.h"
#include "sound/8950intf.h" #include "sound/8950intf.h"
#include "rendlay.h" #include "rendlay.h"
@ -185,6 +186,7 @@ public:
m_audiocpu(*this, "audiocpu"), m_audiocpu(*this, "audiocpu"),
m_gfxdecode(*this, "gfxdecode"), m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette"), m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch"),
m_spr_ram(*this, "spr_ram"), m_spr_ram(*this, "spr_ram"),
m_tilemap0_vram(*this, "tilemap0_vram"), m_tilemap0_vram(*this, "tilemap0_vram"),
m_tilemap1_vram(*this, "tilemap1_vram"), m_tilemap1_vram(*this, "tilemap1_vram"),
@ -198,6 +200,7 @@ public:
required_device<cpu_device> m_audiocpu; required_device<cpu_device> m_audiocpu;
required_device<gfxdecode_device> m_gfxdecode; required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette; required_device<palette_device> m_palette;
required_device<generic_latch_8_device> m_soundlatch;
required_shared_ptr<UINT16> m_spr_ram; required_shared_ptr<UINT16> m_spr_ram;
required_shared_ptr<UINT16> m_tilemap0_vram; required_shared_ptr<UINT16> m_tilemap0_vram;
@ -536,7 +539,7 @@ WRITE8_MEMBER( cybertnk_state::cybertnk_sound_cmd_w )
} }
else if (offset == 1) else if (offset == 1)
{ {
soundlatch_byte_w(space, offset, data & 0xff); m_soundlatch->write(space, offset, data & 0xff);
m_audiocpu->set_input_line(0, HOLD_LINE); m_audiocpu->set_input_line(0, HOLD_LINE);
} }
} }
@ -637,7 +640,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_mem, AS_PROGRAM, 8, cybertnk_state ) static ADDRESS_MAP_START( sound_mem, AS_PROGRAM, 8, cybertnk_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x9fff) AM_RAM AM_RANGE(0x8000, 0x9fff) AM_RAM
AM_RANGE(0xa001, 0xa001) AM_READ(soundlatch_byte_r) AM_RANGE(0xa001, 0xa001) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0xa005, 0xa006) AM_NOP AM_RANGE(0xa005, 0xa006) AM_NOP
AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym1", y8950_device, read, write) AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym1", y8950_device, read, write)
AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym2", y8950_device, read, write) AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym2", y8950_device, read, write)
@ -866,6 +869,8 @@ static MACHINE_CONFIG_START( cybertnk, cybertnk_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ym1", Y8950, XTAL_3_579545MHz) MCFG_SOUND_ADD("ym1", Y8950, XTAL_3_579545MHz)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)

View File

@ -73,6 +73,7 @@ Dumped by Chack'n
#include "emu.h" #include "emu.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "machine/gen_latch.h"
#include "sound/2203intf.h" #include "sound/2203intf.h"
#include "machine/tait8741.h" #include "machine/tait8741.h"
@ -86,6 +87,7 @@ public:
m_audiocpu(*this, "audiocpu"), m_audiocpu(*this, "audiocpu"),
m_gfxdecode(*this, "gfxdecode"), m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette"), m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch"),
m_vram(*this, "vram"), m_vram(*this, "vram"),
m_cram(*this, "cram"), m_cram(*this, "cram"),
m_obj1_ram(*this, "obj1_ram"), m_obj1_ram(*this, "obj1_ram"),
@ -97,6 +99,7 @@ public:
required_device<cpu_device> m_audiocpu; required_device<cpu_device> m_audiocpu;
required_device<gfxdecode_device> m_gfxdecode; required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette; required_device<palette_device> m_palette;
required_device<generic_latch_8_device> m_soundlatch;
required_shared_ptr<UINT8> m_vram; required_shared_ptr<UINT8> m_vram;
required_shared_ptr<UINT8> m_cram; required_shared_ptr<UINT8> m_cram;
@ -382,7 +385,7 @@ WRITE8_MEMBER(cyclemb_state::cyclemb_bankswitch_w)
#if 0 #if 0
WRITE8_MEMBER(cyclemb_state::sound_cmd_w) WRITE8_MEMBER(cyclemb_state::sound_cmd_w)
{ {
soundlatch_byte_w(space, 0, data & 0xff); m_soundlatch->write(space, 0, data & 0xff);
m_audiocpu->set_input_line(0, HOLD_LINE); m_audiocpu->set_input_line(0, HOLD_LINE);
} }
#endif #endif
@ -396,7 +399,7 @@ READ8_MEMBER(cyclemb_state::mcu_status_r)
WRITE8_MEMBER(cyclemb_state::sound_cmd_w)//actually ciom WRITE8_MEMBER(cyclemb_state::sound_cmd_w)//actually ciom
{ {
soundlatch_byte_w(space, 0, data & 0xff); m_soundlatch->write(space, 0, data & 0xff);
m_audiocpu->set_input_line(0, HOLD_LINE); m_audiocpu->set_input_line(0, HOLD_LINE);
} }
#endif #endif
@ -589,7 +592,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( cyclemb_sound_io, AS_IO, 8, cyclemb_state ) static ADDRESS_MAP_START( cyclemb_sound_io, AS_IO, 8, cyclemb_state )
ADDRESS_MAP_GLOBAL_MASK(0xff) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
AM_RANGE(0x40, 0x40) AM_READ(soundlatch_byte_r) AM_WRITE(soundlatch2_byte_w) AM_RANGE(0x40, 0x40) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -938,6 +941,10 @@ static MACHINE_CONFIG_START( cyclemb, cyclemb_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_18MHz/12) MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_18MHz/12)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MACHINE_CONFIG_END MACHINE_CONFIG_END

View File

@ -36,7 +36,6 @@
#include "machine/eepromser.h" #include "machine/eepromser.h"
#include "machine/ticket.h" #include "machine/ticket.h"
#include "machine/watchdog.h" #include "machine/watchdog.h"
#include "sound/bsmt2000.h"
#include "includes/dcheese.h" #include "includes/dcheese.h"
@ -92,8 +91,6 @@ INTERRUPT_GEN_MEMBER(dcheese_state::dcheese_vblank)
void dcheese_state::machine_start() void dcheese_state::machine_start()
{ {
m_bsmt = machine().device("bsmt");
save_item(NAME(m_irq_state)); save_item(NAME(m_irq_state));
save_item(NAME(m_soundlatch_full)); save_item(NAME(m_soundlatch_full));
save_item(NAME(m_sound_control)); save_item(NAME(m_sound_control));
@ -133,7 +130,7 @@ WRITE16_MEMBER(dcheese_state::sound_command_w)
/* write the latch and set the IRQ */ /* write the latch and set the IRQ */
m_soundlatch_full = 1; m_soundlatch_full = 1;
m_audiocpu->set_input_line(0, ASSERT_LINE); m_audiocpu->set_input_line(0, ASSERT_LINE);
soundlatch_byte_w(space, 0, data & 0xff); m_soundlatch->write(space, 0, data & 0xff);
} }
} }
@ -150,15 +147,14 @@ READ8_MEMBER(dcheese_state::sound_command_r)
/* read the latch and clear the IRQ */ /* read the latch and clear the IRQ */
m_soundlatch_full = 0; m_soundlatch_full = 0;
m_audiocpu->set_input_line(0, CLEAR_LINE); m_audiocpu->set_input_line(0, CLEAR_LINE);
return soundlatch_byte_r(space, 0); return m_soundlatch->read(space, 0);
} }
READ8_MEMBER(dcheese_state::sound_status_r) READ8_MEMBER(dcheese_state::sound_status_r)
{ {
/* seems to be ready signal on BSMT or latching hardware */ /* seems to be ready signal on BSMT or latching hardware */
bsmt2000_device *bsmt = machine().device<bsmt2000_device>("bsmt"); return m_bsmt->read_status() << 7;
return bsmt->read_status() << 7;
} }
@ -178,16 +174,14 @@ WRITE8_MEMBER(dcheese_state::sound_control_w)
WRITE8_MEMBER(dcheese_state::bsmt_data_w) WRITE8_MEMBER(dcheese_state::bsmt_data_w)
{ {
bsmt2000_device *bsmt = machine().device<bsmt2000_device>("bsmt");
/* writes come in pairs; even bytes latch, odd bytes write */ /* writes come in pairs; even bytes latch, odd bytes write */
if (offset % 2 == 0) if (offset % 2 == 0)
{ {
bsmt->write_reg(offset / 2); m_bsmt->write_reg(offset / 2);
m_sound_msb_latch = data; m_sound_msb_latch = data;
} }
else else
bsmt->write_data((m_sound_msb_latch << 8) | data); m_bsmt->write_data((m_sound_msb_latch << 8) | data);
} }
@ -426,6 +420,8 @@ static MACHINE_CONFIG_START( dcheese, dcheese_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_BSMT2000_ADD("bsmt", SOUND_OSC) MCFG_BSMT2000_ADD("bsmt", SOUND_OSC)
MCFG_SOUND_ROUTE(0, "lspeaker", 1.2) MCFG_SOUND_ROUTE(0, "lspeaker", 1.2)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.2) MCFG_SOUND_ROUTE(1, "rspeaker", 1.2)

View File

@ -60,7 +60,6 @@ Dip locations verified with manual for ddragon & ddragon2
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "sound/2151intf.h" #include "sound/2151intf.h"
#include "sound/okim6295.h" #include "sound/okim6295.h"
#include "sound/msm5205.h"
#include "includes/ddragon.h" #include "includes/ddragon.h"
@ -281,7 +280,7 @@ void ddragon_state::ddragon_interrupt_ack(address_space &space, offs_t offset, U
break; break;
case 3: /* 380e - SND IRQ and latch */ case 3: /* 380e - SND IRQ and latch */
soundlatch_byte_w(space, 0, data); m_soundlatch->write(space, 0, data);
m_soundcpu->set_input_line(m_sound_irq, ASSERT_LINE); m_soundcpu->set_input_line(m_sound_irq, ASSERT_LINE);
break; break;
@ -327,7 +326,7 @@ WRITE_LINE_MEMBER(ddragon_state::irq_handler)
READ8_MEMBER(ddragon_state::soundlatch_ack_r) READ8_MEMBER(ddragon_state::soundlatch_ack_r)
{ {
m_soundcpu->set_input_line(m_sound_irq, CLEAR_LINE); m_soundcpu->set_input_line(m_sound_irq, CLEAR_LINE);
return soundlatch_byte_r(space, 0); return m_soundlatch->read(space, 0);
} }
@ -977,6 +976,8 @@ static MACHINE_CONFIG_START( ddragon, ddragon_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("fmsnd", SOUND_CLOCK) MCFG_YM2151_ADD("fmsnd", SOUND_CLOCK)
MCFG_YM2151_IRQ_HANDLER(WRITELINE(ddragon_state, irq_handler)) MCFG_YM2151_IRQ_HANDLER(WRITELINE(ddragon_state, irq_handler))
MCFG_SOUND_ROUTE(0, "mono", 0.60) MCFG_SOUND_ROUTE(0, "mono", 0.60)
@ -1044,6 +1045,8 @@ static MACHINE_CONFIG_START( ddragon6809, ddragon_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("fmsnd", SOUND_CLOCK) MCFG_YM2151_ADD("fmsnd", SOUND_CLOCK)
MCFG_YM2151_IRQ_HANDLER(WRITELINE(ddragon_state,irq_handler)) MCFG_YM2151_IRQ_HANDLER(WRITELINE(ddragon_state,irq_handler))
MCFG_SOUND_ROUTE(0, "mono", 0.60) MCFG_SOUND_ROUTE(0, "mono", 0.60)
@ -1094,6 +1097,8 @@ static MACHINE_CONFIG_START( ddragon2, ddragon_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("fmsnd", SOUND_CLOCK) MCFG_YM2151_ADD("fmsnd", SOUND_CLOCK)
MCFG_YM2151_IRQ_HANDLER(WRITELINE(ddragon_state,irq_handler)) MCFG_YM2151_IRQ_HANDLER(WRITELINE(ddragon_state,irq_handler))
MCFG_SOUND_ROUTE(0, "mono", 0.60) MCFG_SOUND_ROUTE(0, "mono", 0.60)

View File

@ -186,7 +186,6 @@ ROMs (All ROMs are 27C010 EPROM. - means not populated)
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "cpu/m68000/m68000.h" #include "cpu/m68000/m68000.h"
#include "sound/2151intf.h" #include "sound/2151intf.h"
#include "sound/okim6295.h"
#include "includes/ddragon3.h" #include "includes/ddragon3.h"
@ -203,7 +202,7 @@ WRITE8_MEMBER(ddragon3_state::oki_bankswitch_w)
WRITE16_MEMBER(wwfwfest_state::wwfwfest_soundwrite) WRITE16_MEMBER(wwfwfest_state::wwfwfest_soundwrite)
{ {
soundlatch_byte_w(space,1,data & 0xff); m_soundlatch->write(space,1,data & 0xff);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE ); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE );
} }
@ -218,8 +217,8 @@ WRITE16_MEMBER(ddragon3_state::ddragon3_io_w)
m_vreg = m_io_reg[0]; m_vreg = m_io_reg[0];
break; break;
case 1: /* soundlatch_byte_w */ case 1: /* soundlatch write */
soundlatch_byte_w(space, 1, m_io_reg[1] & 0xff); m_soundlatch->write(space, 1, m_io_reg[1] & 0xff);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE ); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE );
break; break;
@ -379,7 +378,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, ddragon3_state )
AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_RANGE(0xc000, 0xc7ff) AM_RAM
AM_RANGE(0xc800, 0xc801) AM_DEVREADWRITE("ym2151", ym2151_device, read, write) AM_RANGE(0xc800, 0xc801) AM_DEVREADWRITE("ym2151", ym2151_device, read, write)
AM_RANGE(0xd800, 0xd800) AM_DEVREADWRITE("oki", okim6295_device, read, write) AM_RANGE(0xd800, 0xd800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
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_WRITE(oki_bankswitch_w) AM_RANGE(0xe800, 0xe800) AM_WRITE(oki_bankswitch_w)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -389,7 +388,7 @@ static ADDRESS_MAP_START( ctribe_sound_map, AS_PROGRAM, 8, ddragon3_state )
AM_RANGE(0x8000, 0x87ff) AM_RAM AM_RANGE(0x8000, 0x87ff) AM_RAM
AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ym2151", ym2151_device, status_r, write) AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ym2151", ym2151_device, status_r, write)
AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write) 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 ADDRESS_MAP_END
/************************************* /*************************************
@ -852,6 +851,8 @@ static MACHINE_CONFIG_START( ddragon3, ddragon3_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ym2151", XTAL_3_579545MHz) MCFG_YM2151_ADD("ym2151", XTAL_3_579545MHz)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.50) MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
@ -920,6 +921,8 @@ static MACHINE_CONFIG_START( wwfwfest, wwfwfest_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ym2151", XTAL_3_579545MHz) MCFG_YM2151_ADD("ym2151", XTAL_3_579545MHz)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "mono", 0.45) MCFG_SOUND_ROUTE(0, "mono", 0.45)

View File

@ -3,10 +3,10 @@
/* /*
Disco Boy Disco Boy
Similar to mitchell.c / egghunt.c .. clearly derived from that hardware Similar to mitchell.cpp / egghunt.cpp .. clearly derived from that hardware
TODO: TODO:
- move sound HW into proper file (it's 99% IDENTICAL to yunsung8.c) - move sound HW into proper file (it's 99% IDENTICAL to yunsung8.cpp)
- ADPCM has sound volume issues, it's either too loud or too quiet; - ADPCM has sound volume issues, it's either too loud or too quiet;
PCB Layout PCB Layout
@ -43,6 +43,7 @@ Notes:
#include "emu.h" #include "emu.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "machine/gen_latch.h"
#include "sound/msm5205.h" #include "sound/msm5205.h"
#include "sound/3812intf.h" #include "sound/3812intf.h"
@ -53,11 +54,12 @@ class discoboy_state : public driver_device
public: public:
discoboy_state(const machine_config &mconfig, device_type type, const char *tag) discoboy_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag), : driver_device(mconfig, type, tag),
m_audiocpu(*this, "audiocpu") ,
m_maincpu(*this, "maincpu"), m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_msm(*this, "msm"), m_msm(*this, "msm"),
m_gfxdecode(*this, "gfxdecode"), m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette") { } m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch") { }
/* video-related */ /* video-related */
UINT8 m_ram_bank; UINT8 m_ram_bank;
@ -67,7 +69,12 @@ public:
UINT8 m_toggle; UINT8 m_toggle;
/* devices */ /* devices */
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu; 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;
/* memory */ /* memory */
UINT8 m_ram_1[0x800]; UINT8 m_ram_1[0x800];
@ -96,10 +103,6 @@ public:
UINT32 screen_update_discoboy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); UINT32 screen_update_discoboy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ); void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
DECLARE_WRITE_LINE_MEMBER(yunsung8_adpcm_int); DECLARE_WRITE_LINE_MEMBER(yunsung8_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;
}; };
@ -248,7 +251,7 @@ WRITE8_MEMBER(discoboy_state::discoboy_port_03_w)// sfx? (to sound cpu)
{ {
// printf("unk discoboy_port_03_w %02x\n", data); // printf("unk discoboy_port_03_w %02x\n", data);
// m_audiocpu->set_input_line(INPUT_LINE_NMI, HOLD_LINE); // m_audiocpu->set_input_line(INPUT_LINE_NMI, HOLD_LINE);
soundlatch_byte_w(space, 0, data); m_soundlatch->write(space, 0, data);
m_audiocpu->set_input_line(0, HOLD_LINE); m_audiocpu->set_input_line(0, HOLD_LINE);
} }
@ -360,7 +363,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, discoboy_state )
AM_RANGE(0xe400, 0xe400) AM_WRITE(yunsung8_adpcm_w) AM_RANGE(0xe400, 0xe400) AM_WRITE(yunsung8_adpcm_w)
AM_RANGE(0xec00, 0xec01) AM_DEVWRITE("ymsnd", ym3812_device, write) AM_RANGE(0xec00, 0xec01) AM_DEVWRITE("ymsnd", ym3812_device, write)
AM_RANGE(0xf000, 0xf7ff) AM_RAM 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 ADDRESS_MAP_END
@ -514,6 +517,8 @@ static MACHINE_CONFIG_START( discoboy, discoboy_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_10MHz/4) /* 2.5 MHz? */ MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_10MHz/4) /* 2.5 MHz? */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.6) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.6)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.6) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.6)

View File

@ -37,6 +37,7 @@ dy_6.bin (near Z80)
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "cpu/i8085/i8085.h" #include "cpu/i8085/i8085.h"
#include "sound/ay8910.h" #include "sound/ay8910.h"
#include "machine/gen_latch.h"
#include "machine/nvram.h" #include "machine/nvram.h"
@ -116,7 +117,7 @@ static ADDRESS_MAP_START( dynadice_io_map, AS_IO, 8, dynadice_state )
AM_RANGE(0x51, 0x51) AM_READ_PORT("IN1") AM_RANGE(0x51, 0x51) AM_READ_PORT("IN1")
AM_RANGE(0x52, 0x52) AM_READ_PORT("DSW") AM_RANGE(0x52, 0x52) AM_READ_PORT("DSW")
AM_RANGE(0x62, 0x62) AM_WRITENOP AM_RANGE(0x62, 0x62) AM_WRITENOP
AM_RANGE(0x63, 0x63) AM_WRITE(soundlatch_byte_w) AM_RANGE(0x63, 0x63) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
AM_RANGE(0x70, 0x77) AM_WRITENOP AM_RANGE(0x70, 0x77) AM_WRITENOP
ADDRESS_MAP_END ADDRESS_MAP_END
@ -127,8 +128,8 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( dynadice_sound_io_map, AS_IO, 8, dynadice_state ) static ADDRESS_MAP_START( dynadice_sound_io_map, AS_IO, 8, dynadice_state )
ADDRESS_MAP_GLOBAL_MASK(0xff) 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(0x01, 0x01) AM_WRITE(soundlatch_clear_byte_w) AM_RANGE(0x01, 0x01) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
AM_RANGE(0x02, 0x02) AM_WRITE(sound_data_w) AM_RANGE(0x02, 0x02) AM_WRITE(sound_data_w)
AM_RANGE(0x03, 0x03) AM_WRITE(sound_control_w) AM_RANGE(0x03, 0x03) AM_WRITE(sound_control_w)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -263,6 +264,8 @@ static MACHINE_CONFIG_START( dynadice, dynadice_state )
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("aysnd", AY8910, 2000000) MCFG_SOUND_ADD("aysnd", AY8910, 2000000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END MACHINE_CONFIG_END

View File

@ -35,7 +35,7 @@ Other ESD games:
3 Cushion Billiards (c) 2000 - Undumped 3 Cushion Billiards (c) 2000 - Undumped
Tang Tang (c) 2000 - Undumped ESD 05-28-99 version Tang Tang (c) 2000 - Undumped ESD 05-28-99 version
Fire Hawk (c) 2001 - see nmk16.c driver Fire Hawk (c) 2001 - see nmk16.cpp driver
Head Panic Head Panic
- Nude / Bikini pics don't show in-game, even when set in test mode? - Nude / Bikini pics don't show in-game, even when set in test mode?
@ -69,7 +69,6 @@ ToDo:
#include "emu.h" #include "emu.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "cpu/m68000/m68000.h" #include "cpu/m68000/m68000.h"
#include "machine/eepromser.h"
#include "sound/okim6295.h" #include "sound/okim6295.h"
#include "sound/3812intf.h" #include "sound/3812intf.h"
#include "includes/esd16.h" #include "includes/esd16.h"
@ -87,7 +86,7 @@ WRITE16_MEMBER(esd16_state::esd16_sound_command_w)
{ {
if (ACCESSING_BITS_0_7) if (ACCESSING_BITS_0_7)
{ {
soundlatch_byte_w(space, 0, data & 0xff); m_soundlatch->write(space, 0, data & 0xff);
m_audiocpu->set_input_line(0, ASSERT_LINE); // Generate an IRQ m_audiocpu->set_input_line(0, ASSERT_LINE); // Generate an IRQ
space.device().execute().spin_until_time(attotime::from_usec(50)); // Allow the other CPU to reply space.device().execute().spin_until_time(attotime::from_usec(50)); // Allow the other CPU to reply
} }
@ -250,7 +249,7 @@ READ8_MEMBER(esd16_state::esd16_sound_command_r)
{ {
/* Clear IRQ only after reading the command, or some get lost */ /* Clear IRQ only after reading the command, or some get lost */
m_audiocpu->set_input_line(0, CLEAR_LINE); m_audiocpu->set_input_line(0, CLEAR_LINE);
return soundlatch_byte_r(space, 0); return m_soundlatch->read(space, 0);
} }
static ADDRESS_MAP_START( multchmp_sound_io_map, AS_IO, 8, esd16_state ) static ADDRESS_MAP_START( multchmp_sound_io_map, AS_IO, 8, esd16_state )
@ -641,6 +640,8 @@ static MACHINE_CONFIG_START( esd16, esd16_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_16MHz/4) /* 4MHz */ MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_16MHz/4) /* 4MHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
@ -736,7 +737,7 @@ ESD 11-09-98
(C) ESD 1998, 1999 (C) ESD 1998, 1999
PCB No. ESD 11-09-98 PCB No. ESD 11-09-98
CPU: MC68HC000FN16 (68000, 68 pin PLCC socketed) CPU: MC68HC000FN16 (68000, 68 pin PLCC socketed)
SND: Z80 (Z0840006PSC), YM3812/YM3014 & OKI M6295 (rebaged as U6612/U6614 & AD-65) SND: Z80 (Z0840006PSC), YM3812/YM3014 & OKI M6295 (rebadged as U6612/U6614 & AD-65)
OSC: 16.000MHz, 14.000MHz OSC: 16.000MHz, 14.000MHz
RAM: 4 x 62256, 9 x 6116 RAM: 4 x 62256, 9 x 6116
DIPS: 2 x 8 position DIPS: 2 x 8 position

View File

@ -44,7 +44,7 @@ WRITE16_MEMBER(f1gp_state::sound_command_w)
if (ACCESSING_BITS_0_7) if (ACCESSING_BITS_0_7)
{ {
m_pending_command = 1; m_pending_command = 1;
soundlatch_byte_w(space, offset, data & 0xff); m_soundlatch->write(space, offset, data & 0xff);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
} }
@ -125,7 +125,7 @@ static ADDRESS_MAP_START( sound_io_map, AS_IO, 8, f1gp_state )
ADDRESS_MAP_GLOBAL_MASK(0xff) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_WRITE(f1gp_sh_bankswitch_w) // f1gp AM_RANGE(0x00, 0x00) AM_WRITE(f1gp_sh_bankswitch_w) // f1gp
AM_RANGE(0x0c, 0x0c) AM_WRITE(f1gp_sh_bankswitch_w) // f1gp2 AM_RANGE(0x0c, 0x0c) AM_WRITE(f1gp_sh_bankswitch_w) // f1gp2
AM_RANGE(0x14, 0x14) AM_READ(soundlatch_byte_r) AM_WRITE(pending_command_clear_w) AM_RANGE(0x14, 0x14) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(pending_command_clear_w)
AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -448,6 +448,8 @@ static MACHINE_CONFIG_START( f1gp, f1gp_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2610, XTAL_8MHz) MCFG_SOUND_ADD("ymsnd", YM2610, XTAL_8MHz)
MCFG_YM2610_IRQ_HANDLER(WRITELINE(f1gp_state, irqhandler)) MCFG_YM2610_IRQ_HANDLER(WRITELINE(f1gp_state, irqhandler))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.25) MCFG_SOUND_ROUTE(0, "lspeaker", 0.25)

View File

@ -45,7 +45,7 @@ TIMER_CALLBACK_MEMBER(flstory_state::nmi_callback)
WRITE8_MEMBER(flstory_state::sound_command_w) WRITE8_MEMBER(flstory_state::sound_command_w)
{ {
soundlatch_byte_w(space, 0, data); m_soundlatch->write(space, 0, data);
machine().scheduler().synchronize(timer_expired_delegate(FUNC(flstory_state::nmi_callback),this), data); machine().scheduler().synchronize(timer_expired_delegate(FUNC(flstory_state::nmi_callback),this), data);
} }
@ -433,7 +433,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, flstory_state )
AM_RANGE(0xca00, 0xca0d) AM_DEVWRITE("msm", msm5232_device, write) AM_RANGE(0xca00, 0xca0d) AM_DEVWRITE("msm", msm5232_device, write)
AM_RANGE(0xcc00, 0xcc00) AM_WRITE(sound_control_0_w) AM_RANGE(0xcc00, 0xcc00) AM_WRITE(sound_control_0_w)
AM_RANGE(0xce00, 0xce00) AM_WRITE(sound_control_1_w) AM_RANGE(0xce00, 0xce00) AM_WRITE(sound_control_1_w)
AM_RANGE(0xd800, 0xd800) AM_READ(soundlatch_byte_r) AM_WRITE(to_main_w) AM_RANGE(0xd800, 0xd800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(to_main_w)
AM_RANGE(0xda00, 0xda00) AM_READNOP AM_WRITE(nmi_enable_w) /* unknown read*/ AM_RANGE(0xda00, 0xda00) AM_READNOP AM_WRITE(nmi_enable_w) /* unknown read*/
AM_RANGE(0xdc00, 0xdc00) AM_WRITE(nmi_disable_w) AM_RANGE(0xdc00, 0xdc00) AM_WRITE(nmi_disable_w)
AM_RANGE(0xde00, 0xde00) AM_READNOP AM_DEVWRITE("dac", dac_device, write_unsigned8) /* signed 8-bit DAC & unknown read */ AM_RANGE(0xde00, 0xde00) AM_READNOP AM_DEVWRITE("dac", dac_device, write_unsigned8) /* signed 8-bit DAC & unknown read */
@ -1078,6 +1078,8 @@ static MACHINE_CONFIG_START( flstory, flstory_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("aysnd", AY8910, XTAL_8MHz/4) /* verified on pcb */ MCFG_SOUND_ADD("aysnd", AY8910, XTAL_8MHz/4) /* verified on pcb */
MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(flstory_state, sound_control_2_w)) MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(flstory_state, sound_control_2_w))
MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(flstory_state, sound_control_3_w)) MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(flstory_state, sound_control_3_w))
@ -1138,6 +1140,8 @@ static MACHINE_CONFIG_START( onna34ro, flstory_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("aysnd", AY8910, 8000000/4) MCFG_SOUND_ADD("aysnd", AY8910, 8000000/4)
MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(flstory_state, sound_control_2_w)) MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(flstory_state, sound_control_2_w))
MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(flstory_state, sound_control_3_w)) MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(flstory_state, sound_control_3_w))
@ -1198,6 +1202,8 @@ static MACHINE_CONFIG_START( victnine, flstory_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("aysnd", AY8910, 8000000/4) MCFG_SOUND_ADD("aysnd", AY8910, 8000000/4)
MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(flstory_state, sound_control_2_w)) MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(flstory_state, sound_control_2_w))
MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(flstory_state, sound_control_3_w)) MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(flstory_state, sound_control_3_w))
@ -1264,6 +1270,8 @@ static MACHINE_CONFIG_START( rumba, flstory_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("aysnd", AY8910, XTAL_8MHz/4) /* verified on pcb */ MCFG_SOUND_ADD("aysnd", AY8910, XTAL_8MHz/4) /* verified on pcb */
MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(flstory_state, sound_control_2_w)) MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(flstory_state, sound_control_2_w))
MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(flstory_state, sound_control_3_w)) MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(flstory_state, sound_control_3_w))

View File

@ -21,7 +21,6 @@
#include "emu.h" #include "emu.h"
#include "cpu/m68000/m68000.h" #include "cpu/m68000/m68000.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "machine/eepromser.h"
#include "sound/2610intf.h" #include "sound/2610intf.h"
#include "includes/fromanc2.h" #include "includes/fromanc2.h"
#include "rendlay.h" #include "rendlay.h"
@ -41,8 +40,8 @@ INTERRUPT_GEN_MEMBER(fromanc2_state::fromanc2_interrupt)
WRITE16_MEMBER(fromanc2_state::fromanc2_sndcmd_w) WRITE16_MEMBER(fromanc2_state::fromanc2_sndcmd_w)
{ {
soundlatch_byte_w(space, offset, (data >> 8) & 0xff); // 1P (LEFT) m_soundlatch->write(space, offset, (data >> 8) & 0xff); // 1P (LEFT)
soundlatch2_byte_w(space, offset, data & 0xff); // 2P (RIGHT) m_soundlatch2->write(space, offset, data & 0xff); // 2P (RIGHT)
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
m_sndcpu_nmi_flag = 0; m_sndcpu_nmi_flag = 0;
@ -283,8 +282,8 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( fromanc2_sound_io_map, AS_IO, 8, fromanc2_state ) static ADDRESS_MAP_START( fromanc2_sound_io_map, AS_IO, 8, fromanc2_state )
ADDRESS_MAP_GLOBAL_MASK(0xff) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READ(soundlatch_byte_r) AM_WRITENOP // snd cmd (1P) / ? AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITENOP // snd cmd (1P) / ?
AM_RANGE(0x04, 0x04) AM_READ(soundlatch2_byte_r) // snd cmd (2P) AM_RANGE(0x04, 0x04) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) // snd cmd (2P)
AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
AM_RANGE(0x0c, 0x0c) AM_READ(fromanc2_sndcpu_nmi_clr) AM_RANGE(0x0c, 0x0c) AM_READ(fromanc2_sndcpu_nmi_clr)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -561,6 +560,9 @@ static MACHINE_CONFIG_START( fromanc2, fromanc2_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
MCFG_SOUND_ADD("ymsnd", YM2610, 8000000) MCFG_SOUND_ADD("ymsnd", YM2610, 8000000)
MCFG_YM2610_IRQ_HANDLER(WRITELINE(fromanc2_state, irqhandler)) MCFG_YM2610_IRQ_HANDLER(WRITELINE(fromanc2_state, irqhandler))
MCFG_SOUND_ROUTE(0, "mono", 0.50) MCFG_SOUND_ROUTE(0, "mono", 0.50)
@ -618,6 +620,9 @@ static MACHINE_CONFIG_START( fromancr, fromanc2_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
MCFG_SOUND_ADD("ymsnd", YM2610, 8000000) MCFG_SOUND_ADD("ymsnd", YM2610, 8000000)
MCFG_YM2610_IRQ_HANDLER(WRITELINE(fromanc2_state, irqhandler)) MCFG_YM2610_IRQ_HANDLER(WRITELINE(fromanc2_state, irqhandler))
MCFG_SOUND_ROUTE(0, "mono", 0.50) MCFG_SOUND_ROUTE(0, "mono", 0.50)
@ -671,6 +676,9 @@ static MACHINE_CONFIG_START( fromanc4, fromanc2_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
MCFG_SOUND_ADD("ymsnd", YM2610, 8000000) MCFG_SOUND_ADD("ymsnd", YM2610, 8000000)
MCFG_YM2610_IRQ_HANDLER(WRITELINE(fromanc2_state, irqhandler)) MCFG_YM2610_IRQ_HANDLER(WRITELINE(fromanc2_state, irqhandler))
MCFG_SOUND_ROUTE(0, "mono", 0.50) MCFG_SOUND_ROUTE(0, "mono", 0.50)

View File

@ -142,9 +142,9 @@ Notes:
WRITE16_MEMBER(gaiden_state::gaiden_sound_command_w) WRITE16_MEMBER(gaiden_state::gaiden_sound_command_w)
{ {
if (ACCESSING_BITS_0_7) if (ACCESSING_BITS_0_7)
soundlatch_byte_w(space, 0, data & 0xff); /* Ninja Gaiden */ m_soundlatch->write(space, 0, data & 0xff); /* Ninja Gaiden */
if (ACCESSING_BITS_8_15) if (ACCESSING_BITS_8_15)
soundlatch_byte_w(space, 0, data >> 8); /* Tecmo Knight */ m_soundlatch->write(space, 0, data >> 8); /* Tecmo Knight */
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
@ -152,7 +152,7 @@ WRITE16_MEMBER(gaiden_state::drgnbowl_sound_command_w)
{ {
if (ACCESSING_BITS_8_15) if (ACCESSING_BITS_8_15)
{ {
soundlatch_byte_w(space, 0, data >> 8); m_soundlatch->write(space, 0, data >> 8);
m_audiocpu->set_input_line(0, HOLD_LINE); m_audiocpu->set_input_line(0, HOLD_LINE);
} }
} }
@ -434,7 +434,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, gaiden_state )
AM_RANGE(0xf810, 0xf811) AM_DEVWRITE("ym1", ym2203_device, write) AM_RANGE(0xf810, 0xf811) AM_DEVWRITE("ym1", ym2203_device, write)
AM_RANGE(0xf820, 0xf821) AM_DEVWRITE("ym2", ym2203_device, write) AM_RANGE(0xf820, 0xf821) AM_DEVWRITE("ym2", ym2203_device, write)
AM_RANGE(0xfc00, 0xfc00) AM_NOP /* ?? */ AM_RANGE(0xfc00, 0xfc00) AM_NOP /* ?? */
AM_RANGE(0xfc20, 0xfc20) AM_READ(soundlatch_byte_r) AM_RANGE(0xfc20, 0xfc20) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( drgnbowl_sound_map, AS_PROGRAM, 8, gaiden_state ) static ADDRESS_MAP_START( drgnbowl_sound_map, AS_PROGRAM, 8, gaiden_state )
@ -446,7 +446,7 @@ static ADDRESS_MAP_START( drgnbowl_sound_port_map, AS_IO, 8, gaiden_state )
ADDRESS_MAP_GLOBAL_MASK(0xff) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki", okim6295_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 ADDRESS_MAP_END
static INPUT_PORTS_START( common ) static INPUT_PORTS_START( common )
@ -788,6 +788,8 @@ static MACHINE_CONFIG_START( shadoww, gaiden_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ym1", YM2203, 4000000) MCFG_SOUND_ADD("ym1", YM2203, 4000000)
MCFG_YM2203_IRQ_HANDLER(WRITELINE(gaiden_state, irqhandler)) MCFG_YM2203_IRQ_HANDLER(WRITELINE(gaiden_state, irqhandler))
MCFG_SOUND_ROUTE(0, "mono", 0.15) MCFG_SOUND_ROUTE(0, "mono", 0.15)
@ -848,6 +850,8 @@ static MACHINE_CONFIG_START( drgnbowl, gaiden_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", 4000000) MCFG_YM2151_ADD("ymsnd", 4000000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
@ -907,7 +911,7 @@ static ADDRESS_MAP_START( mastninj_sound_map, AS_PROGRAM, 8, gaiden_state )
AM_RANGE(0xc400, 0xc401) AM_DEVWRITE("ym1", ym2203_device, write) AM_RANGE(0xc400, 0xc401) AM_DEVWRITE("ym1", ym2203_device, write)
AM_RANGE(0xc800, 0xc801) AM_DEVWRITE("ym2", ym2203_device, write) AM_RANGE(0xc800, 0xc801) AM_DEVWRITE("ym2", ym2203_device, write)
// AM_RANGE(0xfc00, 0xfc00) AM_NOP /* ?? */ // AM_RANGE(0xfc00, 0xfc00) AM_NOP /* ?? */
// AM_RANGE(0xfc20, 0xfc20) AM_READ(soundlatch_byte_r) // AM_RANGE(0xfc20, 0xfc20) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( mastninj_map, AS_PROGRAM, 16, gaiden_state ) static ADDRESS_MAP_START( mastninj_map, AS_PROGRAM, 16, gaiden_state )
@ -963,13 +967,15 @@ static MACHINE_CONFIG_START( mastninj, gaiden_state )
MCFG_PALETTE_ADD("palette", 4096) MCFG_PALETTE_ADD("palette", 4096)
MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR) MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
/* NOT using Tecmo Sprite device - signifcant changes, maybe a clone of something else */ /* NOT using Tecmo Sprite device - significant changes, maybe a clone of something else */
MCFG_VIDEO_START_OVERRIDE(gaiden_state,drgnbowl) MCFG_VIDEO_START_OVERRIDE(gaiden_state,drgnbowl)
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ym1", YM2203, 4000000) /* ?? MHz */ MCFG_SOUND_ADD("ym1", YM2203, 4000000) /* ?? MHz */
MCFG_YM2203_IRQ_HANDLER(WRITELINE(gaiden_state, irqhandler)) MCFG_YM2203_IRQ_HANDLER(WRITELINE(gaiden_state, irqhandler))
MCFG_SOUND_ROUTE(0, "mono", 0.15) MCFG_SOUND_ROUTE(0, "mono", 0.15)

View File

@ -5906,8 +5906,12 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( takeoff, explorer ) // takeoff shares the same main map as explorer, but uses only an AY8912 for sound. static MACHINE_CONFIG_DERIVED( takeoff, explorer ) // takeoff shares the same main map as explorer, but uses only an AY8912 for sound.
MCFG_SOUND_MODIFY("maincpu")
MCFG_DEVICE_CLOCK(XTAL_12MHz / 8) // XTAL verified, divider not verified
/* 2nd CPU to drive sound */ /* 2nd CPU to drive sound */
MCFG_SOUND_MODIFY("audiocpu") MCFG_SOUND_MODIFY("audiocpu")
MCFG_DEVICE_CLOCK(XTAL_12MHz / 8)
MCFG_CPU_PROGRAM_MAP(takeoff_sound_map) MCFG_CPU_PROGRAM_MAP(takeoff_sound_map)
MCFG_CPU_IO_MAP(takeoff_sound_portmap) MCFG_CPU_IO_MAP(takeoff_sound_portmap)
@ -5915,7 +5919,7 @@ static MACHINE_CONFIG_DERIVED( takeoff, explorer ) // takeoff shares the same ma
MCFG_DEVICE_REMOVE("8910.0") MCFG_DEVICE_REMOVE("8910.0")
MCFG_DEVICE_REMOVE("8910.1") MCFG_DEVICE_REMOVE("8910.1")
MCFG_SOUND_ADD("8912", AY8912, KONAMI_SOUND_CLOCK/8) MCFG_SOUND_ADD("8912", AY8912, XTAL_12MHz / 8)
MCFG_AY8910_PORT_A_READ_CB(READ8(galaxian_state, explorer_sound_latch_r)) MCFG_AY8910_PORT_A_READ_CB(READ8(galaxian_state, explorer_sound_latch_r))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
MACHINE_CONFIG_END MACHINE_CONFIG_END

View File

@ -279,14 +279,14 @@ WRITE8_MEMBER(gladiatr_state::gladiator_adpcm_w)
WRITE8_MEMBER(gladiatr_state::gladiator_cpu_sound_command_w) WRITE8_MEMBER(gladiatr_state::gladiator_cpu_sound_command_w)
{ {
soundlatch_byte_w(space,0,data); m_soundlatch->write(space,0,data);
m_audiocpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
} }
READ8_MEMBER(gladiatr_state::gladiator_cpu_sound_command_r) READ8_MEMBER(gladiatr_state::gladiator_cpu_sound_command_r)
{ {
m_audiocpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
return soundlatch_byte_r(space,0); return m_soundlatch->read(space,0);
} }
WRITE8_MEMBER(gladiatr_state::gladiatr_flipscreen_w) WRITE8_MEMBER(gladiatr_state::gladiatr_flipscreen_w)
@ -651,6 +651,8 @@ static MACHINE_CONFIG_START( ppking, gladiatr_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/8) /* verified on pcb */ MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/8) /* verified on pcb */
MCFG_AY8910_PORT_A_READ_CB(READ8(gladiatr_state, ppking_f1_r)) MCFG_AY8910_PORT_A_READ_CB(READ8(gladiatr_state, ppking_f1_r))
MCFG_AY8910_PORT_B_READ_CB(READ8(gladiatr_state, ppking_f1_r)) MCFG_AY8910_PORT_B_READ_CB(READ8(gladiatr_state, ppking_f1_r))
@ -706,6 +708,8 @@ static MACHINE_CONFIG_START( gladiatr, gladiatr_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/8) /* verified on pcb */ MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/8) /* verified on pcb */
MCFG_YM2203_IRQ_HANDLER(WRITELINE(gladiatr_state, gladiator_ym_irq)) MCFG_YM2203_IRQ_HANDLER(WRITELINE(gladiatr_state, gladiator_ym_irq))
MCFG_AY8910_PORT_B_READ_CB(IOPORT("DSW3")) /* port B read */ MCFG_AY8910_PORT_B_READ_CB(IOPORT("DSW3")) /* port B read */

View File

@ -14,7 +14,7 @@ TODO:
gfx related but since everything seems fine I've no idea what it might do. gfx related but since everything seems fine I've no idea what it might do.
- Unknown sound writes at C00F; also, there's an NMI handler that would - Unknown sound writes at C00F; also, there's an NMI handler that would
read from C00F. read from C00F.
- Sound samples were getting chopped; I fixed this by changing sound/adpcm.c to - Sound samples were getting chopped; I fixed this by changing sound/adpcm.cpp to
disregard requests to play new samples until the previous one is finished*. disregard requests to play new samples until the previous one is finished*.
Gotcha pcb: 97,7,29 PARA VER 3.0 but it is the same as ppchamp Gotcha pcb: 97,7,29 PARA VER 3.0 but it is the same as ppchamp
@ -62,6 +62,7 @@ Notes:
#include "emu.h" #include "emu.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "cpu/m68000/m68000.h" #include "cpu/m68000/m68000.h"
#include "machine/gen_latch.h"
#include "sound/2151intf.h" #include "sound/2151intf.h"
#include "sound/okim6295.h" #include "sound/okim6295.h"
#include "includes/gotcha.h" #include "includes/gotcha.h"
@ -97,7 +98,7 @@ WRITE16_MEMBER(gotcha_state::gotcha_oki_bank_w)
static ADDRESS_MAP_START( gotcha_map, AS_PROGRAM, 16, gotcha_state ) static ADDRESS_MAP_START( gotcha_map, AS_PROGRAM, 16, gotcha_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x100000, 0x100001) AM_WRITE(soundlatch_word_w) AM_RANGE(0x100000, 0x100001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
AM_RANGE(0x100002, 0x100003) AM_WRITE(gotcha_lamps_w) AM_RANGE(0x100002, 0x100003) AM_WRITE(gotcha_lamps_w)
AM_RANGE(0x100004, 0x100005) AM_WRITE(gotcha_oki_bank_w) AM_RANGE(0x100004, 0x100005) AM_WRITE(gotcha_oki_bank_w)
AM_RANGE(0x120000, 0x12ffff) AM_RAM AM_RANGE(0x120000, 0x12ffff) AM_RAM
@ -119,7 +120,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, gotcha_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
AM_RANGE(0xc002, 0xc002) AM_DEVREADWRITE("oki", okim6295_device, read, write) AM_MIRROR(1) AM_RANGE(0xc002, 0xc002) AM_DEVREADWRITE("oki", okim6295_device, read, write) AM_MIRROR(1)
AM_RANGE(0xc006, 0xc006) AM_READ(soundlatch_byte_r) AM_RANGE(0xc006, 0xc006) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_RANGE(0xd000, 0xd7ff) AM_RAM
ADDRESS_MAP_END ADDRESS_MAP_END
@ -291,6 +292,8 @@ static MACHINE_CONFIG_START( gotcha, gotcha_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", 14318180/4) MCFG_YM2151_ADD("ymsnd", 14318180/4)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "mono", 0.80) MCFG_SOUND_ROUTE(0, "mono", 0.80)

View File

@ -200,7 +200,7 @@ WRITE8_MEMBER(grchamp_state::cpu0_outputs_w)
case 0x0e: /* OUT14 */ case 0x0e: /* OUT14 */
/* O-21 connector */ /* O-21 connector */
soundlatch_byte_w(space, 0, data); m_soundlatch->write(space, 0, data);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
break; break;
} }
@ -543,7 +543,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, grchamp_state )
AM_RANGE(0x4803, 0x4803) AM_MIRROR(0x07f8) AM_DEVREAD("ay2", ay8910_device, data_r) AM_RANGE(0x4803, 0x4803) AM_MIRROR(0x07f8) AM_DEVREAD("ay2", ay8910_device, data_r)
AM_RANGE(0x4804, 0x4805) AM_MIRROR(0x07fa) AM_DEVWRITE("ay3", ay8910_device, address_data_w) AM_RANGE(0x4804, 0x4805) AM_MIRROR(0x07fa) AM_DEVWRITE("ay3", ay8910_device, address_data_w)
AM_RANGE(0x4805, 0x4805) AM_MIRROR(0x07fa) AM_DEVREAD("ay3", ay8910_device, data_r) AM_RANGE(0x4805, 0x4805) AM_MIRROR(0x07fa) AM_DEVREAD("ay3", ay8910_device, data_r)
AM_RANGE(0x5000, 0x5000) AM_READ(soundlatch_byte_r) AM_RANGE(0x5000, 0x5000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -680,6 +680,8 @@ static MACHINE_CONFIG_START( grchamp, grchamp_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, SOUND_CLOCK/4) /* 3B */ MCFG_SOUND_ADD("ay1", AY8910, SOUND_CLOCK/4) /* 3B */
MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(grchamp_state, portA_0_w)) MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(grchamp_state, portA_0_w))
MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(grchamp_state, portB_0_w)) MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(grchamp_state, portB_0_w))

View File

@ -202,7 +202,7 @@ WRITE16_MEMBER(gstriker_state::sound_command_w)
if (ACCESSING_BITS_0_7) if (ACCESSING_BITS_0_7)
{ {
m_pending_command = 1; m_pending_command = 1;
soundlatch_byte_w(space, offset, data & 0xff); m_soundlatch->write(space, offset, data & 0xff);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
} }
@ -299,7 +299,7 @@ static ADDRESS_MAP_START( sound_io_map, AS_IO, 8, gstriker_state )
AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
AM_RANGE(0x04, 0x04) AM_WRITE(sh_bankswitch_w) AM_RANGE(0x04, 0x04) AM_WRITE(sh_bankswitch_w)
AM_RANGE(0x08, 0x08) AM_WRITE(sh_pending_command_clear_w) AM_RANGE(0x08, 0x08) AM_WRITE(sh_pending_command_clear_w)
AM_RANGE(0x0c, 0x0c) AM_READ(soundlatch_byte_r) AM_RANGE(0x0c, 0x0c) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -549,6 +549,8 @@ static MACHINE_CONFIG_START( gstriker, gstriker_state )
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2610, 8000000) MCFG_SOUND_ADD("ymsnd", YM2610, 8000000)
MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.25) MCFG_SOUND_ROUTE(0, "lspeaker", 0.25)

View File

@ -146,7 +146,6 @@ reg: 0->1 (main->2nd) / : (1->0) 2nd->main :
#include "emu.h" #include "emu.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "machine/tait8741.h" #include "machine/tait8741.h"
#include "sound/msm5205.h"
#include "includes/gsword.h" #include "includes/gsword.h"
@ -308,7 +307,7 @@ WRITE8_MEMBER(gsword_state::gsword_adpcm_data_w)
WRITE8_MEMBER(gsword_state::adpcm_soundcommand_w) WRITE8_MEMBER(gsword_state::adpcm_soundcommand_w)
{ {
soundlatch_byte_w(space, 0, data); m_soundlatch->write(space, 0, data);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
@ -364,7 +363,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( cpu3_map, AS_PROGRAM, 8, gsword_state ) static ADDRESS_MAP_START( cpu3_map, AS_PROGRAM, 8, gsword_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x8000) AM_WRITE(gsword_adpcm_data_w) AM_RANGE(0x8000, 0x8000) AM_WRITE(gsword_adpcm_data_w)
AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r) AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -669,6 +668,8 @@ static MACHINE_CONFIG_START( gsword, gsword_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, XTAL_18MHz/12) /* verified on pcb */ MCFG_SOUND_ADD("ay1", AY8910, XTAL_18MHz/12) /* verified on pcb */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)

View File

@ -164,6 +164,7 @@ Video sync 6 F Video sync Post 6 F Post
#include "emu.h" #include "emu.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "includes/taitoipt.h" #include "includes/taitoipt.h"
#include "machine/gen_latch.h"
#include "cpu/m6809/m6809.h" #include "cpu/m6809/m6809.h"
#include "sound/ay8910.h" #include "sound/ay8910.h"
@ -217,7 +218,8 @@ public:
m_io_ram(*this, "io_ram"), m_io_ram(*this, "io_ram"),
m_maincpu(*this, "maincpu"), m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"), m_audiocpu(*this, "audiocpu"),
m_palette(*this, "palette") { } m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch") { }
UINT16 *m_render_layer[MAX_LAYERS]; UINT16 *m_render_layer[MAX_LAYERS];
UINT8 m_sound_fifo[MAX_SOUNDS]; UINT8 m_sound_fifo[MAX_SOUNDS];
@ -285,6 +287,7 @@ public:
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu; required_device<cpu_device> m_audiocpu;
required_device<palette_device> m_palette; required_device<palette_device> m_palette;
required_device<generic_latch_8_device> m_soundlatch;
}; };
@ -887,7 +890,7 @@ COMMAND_MODE:
second pass at the same location with zeroes. In addition the second pass at the same location with zeroes. In addition the
X and Y values passed to the blitter do not reflect the tiles true X and Y values passed to the blitter do not reflect the tiles true
locations. For example, tiles near the top or bottom of the screen locations. For example, tiles near the top or bottom of the screen
are positioned resonably close but those in the middle are oddly are positioned reasonably close but those in the middle are oddly
shifted toward either side. The tiles also resemble predefined shifted toward either side. The tiles also resemble predefined
patterns but I don't know if there are supposed to be lookup tables patterns but I don't know if there are supposed to be lookup tables
in ROM or hard-wired to the blitter chips. in ROM or hard-wired to the blitter chips.
@ -1643,7 +1646,7 @@ WRITE8_MEMBER(halleys_state::sndnmi_msk_w)
WRITE8_MEMBER(halleys_state::soundcommand_w) WRITE8_MEMBER(halleys_state::soundcommand_w)
{ {
m_io_ram[0x8a] = data; m_io_ram[0x8a] = data;
soundlatch_byte_w(space,offset,data); m_soundlatch->write(space,offset,data);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
@ -1711,7 +1714,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, halleys_state )
AM_RANGE(0x4803, 0x4803) AM_DEVREAD("ay3", ay8910_device, data_r) AM_RANGE(0x4803, 0x4803) AM_DEVREAD("ay3", ay8910_device, data_r)
AM_RANGE(0x4804, 0x4805) AM_DEVWRITE("ay4", ay8910_device, address_data_w) AM_RANGE(0x4804, 0x4805) AM_DEVWRITE("ay4", ay8910_device, address_data_w)
AM_RANGE(0x4805, 0x4805) AM_DEVREAD("ay4", ay8910_device, data_r) AM_RANGE(0x4805, 0x4805) AM_DEVREAD("ay4", ay8910_device, data_r)
AM_RANGE(0x5000, 0x5000) AM_READ(soundlatch_byte_r) AM_RANGE(0x5000, 0x5000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0xe000, 0xefff) AM_ROM // space for diagnostic ROM AM_RANGE(0xe000, 0xefff) AM_ROM // space for diagnostic ROM
ADDRESS_MAP_END ADDRESS_MAP_END
@ -1993,6 +1996,8 @@ static MACHINE_CONFIG_START( halleys, halleys_state )
// sound hardware // sound hardware
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, XTAL_6MHz/4) /* verified on pcb */ MCFG_SOUND_ADD("ay1", AY8910, XTAL_6MHz/4) /* verified on pcb */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)

View File

@ -87,6 +87,7 @@
#include "rendlay.h" #include "rendlay.h"
#include "cpu/hmcs40/hmcs40.h" #include "cpu/hmcs40/hmcs40.h"
#include "cpu/cop400/cop400.h" #include "cpu/cop400/cop400.h"
#include "machine/gen_latch.h"
#include "sound/speaker.h" #include "sound/speaker.h"
// internal artwork // internal artwork
@ -102,6 +103,8 @@ public:
: driver_device(mconfig, type, tag), : driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"), m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"), m_audiocpu(*this, "audiocpu"),
m_soundlatch(*this, "soundlatch"),
m_soundlatch2(*this, "soundlatch2"),
m_inp_matrix(*this, "IN"), m_inp_matrix(*this, "IN"),
m_speaker(*this, "speaker"), m_speaker(*this, "speaker"),
m_display_wait(33), m_display_wait(33),
@ -112,6 +115,8 @@ public:
// devices // devices
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
optional_device<cpu_device> m_audiocpu; optional_device<cpu_device> m_audiocpu;
optional_device<generic_latch_8_device> m_soundlatch;
optional_device<generic_latch_8_device> m_soundlatch2;
optional_ioport_array<7> m_inp_matrix; // max 7 optional_ioport_array<7> m_inp_matrix; // max 7
optional_device<speaker_sound_device> m_speaker; optional_device<speaker_sound_device> m_speaker;
@ -1798,7 +1803,7 @@ READ8_MEMBER(pairmtch_state::input_r)
WRITE8_MEMBER(pairmtch_state::sound_w) WRITE8_MEMBER(pairmtch_state::sound_w)
{ {
// R5x: soundlatch (to audiocpu R2x) // R5x: soundlatch (to audiocpu R2x)
soundlatch_byte_w(space, 0, BITSWAP8(data,7,6,5,4,0,1,2,3)); m_soundlatch->write(space, 0, BITSWAP8(data,7,6,5,4,0,1,2,3));
} }
@ -1807,7 +1812,7 @@ WRITE8_MEMBER(pairmtch_state::sound_w)
WRITE8_MEMBER(pairmtch_state::sound2_w) WRITE8_MEMBER(pairmtch_state::sound2_w)
{ {
// R2x: soundlatch (to maincpu R5x) // R2x: soundlatch (to maincpu R5x)
soundlatch2_byte_w(space, 0, BITSWAP8(data,7,6,5,4,0,1,2,3)); m_soundlatch2->write(space, 0, BITSWAP8(data,7,6,5,4,0,1,2,3));
} }
WRITE16_MEMBER(pairmtch_state::speaker_w) WRITE16_MEMBER(pairmtch_state::speaker_w)
@ -1859,14 +1864,14 @@ static MACHINE_CONFIG_START( pairmtch, pairmtch_state )
MCFG_HMCS40_WRITE_R_CB(3, WRITE8(pairmtch_state, plate_w)) MCFG_HMCS40_WRITE_R_CB(3, WRITE8(pairmtch_state, plate_w))
MCFG_HMCS40_READ_R_CB(4, READ8(pairmtch_state, input_r)) MCFG_HMCS40_READ_R_CB(4, READ8(pairmtch_state, input_r))
MCFG_HMCS40_WRITE_R_CB(5, WRITE8(pairmtch_state, sound_w)) MCFG_HMCS40_WRITE_R_CB(5, WRITE8(pairmtch_state, sound_w))
MCFG_HMCS40_READ_R_CB(5, READ8(driver_device, soundlatch2_byte_r)) MCFG_HMCS40_READ_R_CB(5, DEVREAD8("soundlatch2", generic_latch_8_device, read))
MCFG_HMCS40_WRITE_R_CB(6, WRITE8(pairmtch_state, plate_w)) MCFG_HMCS40_WRITE_R_CB(6, WRITE8(pairmtch_state, plate_w))
MCFG_HMCS40_WRITE_D_CB(WRITE16(pairmtch_state, grid_w)) MCFG_HMCS40_WRITE_D_CB(WRITE16(pairmtch_state, grid_w))
MCFG_HMCS40_READ_D_CB(IOPORT("IN.2")) MCFG_HMCS40_READ_D_CB(IOPORT("IN.2"))
MCFG_CPU_ADD("audiocpu", HD38820, 400000) // approximation MCFG_CPU_ADD("audiocpu", HD38820, 400000) // approximation
MCFG_HMCS40_WRITE_R_CB(2, WRITE8(pairmtch_state, sound2_w)) MCFG_HMCS40_WRITE_R_CB(2, WRITE8(pairmtch_state, sound2_w))
MCFG_HMCS40_READ_R_CB(2, READ8(driver_device, soundlatch_byte_r)) MCFG_HMCS40_READ_R_CB(2, DEVREAD8("soundlatch", generic_latch_8_device, read))
MCFG_HMCS40_WRITE_D_CB(WRITE16(pairmtch_state, speaker_w)) MCFG_HMCS40_WRITE_D_CB(WRITE16(pairmtch_state, speaker_w))
MCFG_QUANTUM_PERFECT_CPU("maincpu") MCFG_QUANTUM_PERFECT_CPU("maincpu")
@ -1876,6 +1881,10 @@ static MACHINE_CONFIG_START( pairmtch, pairmtch_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
MACHINE_CONFIG_END MACHINE_CONFIG_END

View File

@ -113,7 +113,7 @@ WRITE8_MEMBER(himesiki_state::himesiki_rombank_w)
WRITE8_MEMBER(himesiki_state::himesiki_sound_w) WRITE8_MEMBER(himesiki_state::himesiki_sound_w)
{ {
soundlatch_byte_w(space, offset, data); m_soundlatch->write(space, offset, data);
m_subcpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_subcpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
@ -149,7 +149,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( himesiki_iom1, AS_IO, 8, himesiki_state ) static ADDRESS_MAP_START( himesiki_iom1, AS_IO, 8, himesiki_state )
ADDRESS_MAP_GLOBAL_MASK(0xff) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym2203", ym2203_device, read, write) AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym2203", ym2203_device, read, write)
AM_RANGE(0x04, 0x04) AM_READ(soundlatch_byte_r) AM_RANGE(0x04, 0x04) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
ADDRESS_MAP_END ADDRESS_MAP_END
/****************************************************************************/ /****************************************************************************/
@ -456,6 +456,9 @@ static MACHINE_CONFIG_START( himesiki, himesiki_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ym2203", YM2203, CLK2/4) // ?? MCFG_SOUND_ADD("ym2203", YM2203, CLK2/4) // ??
MCFG_YM2203_IRQ_HANDLER(INPUTLINE("sub", 0)) MCFG_YM2203_IRQ_HANDLER(INPUTLINE("sub", 0))
MCFG_SOUND_ROUTE(0, "mono", 0.10) MCFG_SOUND_ROUTE(0, "mono", 0.10)

View File

@ -222,8 +222,7 @@ Custom: GX61A01
#include "cpu/m6809/m6809.h" #include "cpu/m6809/m6809.h"
#include "cpu/upd7810/upd7810.h" #include "cpu/upd7810/upd7810.h"
#include "includes/homedata.h" #include "includes/homedata.h"
#include "sound/dac.h"
#include "sound/2203intf.h"
INTERRUPT_GEN_MEMBER(homedata_state::homedata_irq) INTERRUPT_GEN_MEMBER(homedata_state::homedata_irq)
{ {
@ -289,7 +288,7 @@ WRITE8_MEMBER(homedata_state::mrokumei_keyboard_select_w)
READ8_MEMBER(homedata_state::mrokumei_sound_io_r) READ8_MEMBER(homedata_state::mrokumei_sound_io_r)
{ {
if (m_sndbank & 4) if (m_sndbank & 4)
return(soundlatch_byte_r(space, 0)); return(m_soundlatch->read(space, 0));
else else
return memregion("audiocpu")->base()[0x10000 + offset + (m_sndbank & 1) * 0x10000]; return memregion("audiocpu")->base()[0x10000 + offset + (m_sndbank & 1) * 0x10000];
} }
@ -317,7 +316,7 @@ WRITE8_MEMBER(homedata_state::mrokumei_sound_io_w)
WRITE8_MEMBER(homedata_state::mrokumei_sound_cmd_w) WRITE8_MEMBER(homedata_state::mrokumei_sound_cmd_w)
{ {
soundlatch_byte_w(space, offset, data); m_soundlatch->write(space, offset, data);
m_audiocpu->set_input_line(0, HOLD_LINE); m_audiocpu->set_input_line(0, HOLD_LINE);
} }
@ -1159,8 +1158,6 @@ GFXDECODE_END
MACHINE_START_MEMBER(homedata_state,homedata) MACHINE_START_MEMBER(homedata_state,homedata)
{ {
m_sn = machine().device<sn76489a_device>("snsnd");
save_item(NAME(m_visible_page)); save_item(NAME(m_visible_page));
save_item(NAME(m_flipscreen)); save_item(NAME(m_flipscreen));
save_item(NAME(m_blitter_bank)); save_item(NAME(m_blitter_bank));
@ -1286,6 +1283,8 @@ static MACHINE_CONFIG_START( mrokumei, homedata_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("snsnd", SN76489A, 16000000/4) // SN76489AN actually MCFG_SOUND_ADD("snsnd", SN76489A, 16000000/4) // SN76489AN actually
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)

View File

@ -96,7 +96,7 @@ WRITE16_MEMBER(inufuku_state::inufuku_soundcommand_w)
return; return;
m_pending_command = 1; m_pending_command = 1;
soundlatch_byte_w(space, 0, data & 0xff); m_soundlatch->write(space, 0, data & 0xff);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
} }
@ -177,7 +177,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( inufuku_sound_io_map, AS_IO, 8, inufuku_state ) static ADDRESS_MAP_START( inufuku_sound_io_map, AS_IO, 8, inufuku_state )
ADDRESS_MAP_GLOBAL_MASK(0xff) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_WRITE(inufuku_soundrombank_w) AM_RANGE(0x00, 0x00) AM_WRITE(inufuku_soundrombank_w)
AM_RANGE(0x04, 0x04) AM_READ(soundlatch_byte_r) AM_WRITE(pending_command_clear_w) AM_RANGE(0x04, 0x04) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(pending_command_clear_w)
AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -403,6 +403,8 @@ static MACHINE_CONFIG_START( inufuku, inufuku_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2610, 32000000/4) MCFG_SOUND_ADD("ymsnd", YM2610, 32000000/4)
MCFG_YM2610_IRQ_HANDLER(WRITELINE(inufuku_state, irqhandler)) MCFG_YM2610_IRQ_HANDLER(WRITELINE(inufuku_state, irqhandler))
MCFG_SOUND_ROUTE(0, "mono", 0.50) MCFG_SOUND_ROUTE(0, "mono", 0.50)

View File

@ -34,7 +34,7 @@
1x Z80 (audio) @ 3.578 MHz. 1x Z80 (audio) @ 3.578 MHz.
AY-3-8910 @ 1789 kHz. AY-3-8910 @ 1789 kHz.
1x Unknown metallick brick (Yamaha MSX2 VDP inside). 1x Unknown metallic brick (Yamaha MSX2 VDP inside).
1x 8 DIP switches bank. 1x 8 DIP switches bank.
@ -197,6 +197,7 @@
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "sound/ay8910.h" #include "sound/ay8910.h"
#include "video/v9938.h" #include "video/v9938.h"
#include "machine/gen_latch.h"
#include "machine/nvram.h" #include "machine/nvram.h"
#include "kas89.lh" #include "kas89.lh"
@ -209,6 +210,7 @@ public:
m_maincpu(*this, "maincpu"), m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"), m_audiocpu(*this, "audiocpu"),
m_v9938(*this, "v9938"), m_v9938(*this, "v9938"),
m_soundlatch(*this, "soundlatch"),
m_pl1(*this, "PL1"), m_pl1(*this, "PL1"),
m_pl2(*this, "PL2"), m_pl2(*this, "PL2"),
m_pl3(*this, "PL3"), m_pl3(*this, "PL3"),
@ -230,6 +232,7 @@ public:
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu; required_device<cpu_device> m_audiocpu;
required_device<v9938_device> m_v9938; required_device<v9938_device> m_v9938;
required_device<generic_latch_8_device> m_soundlatch;
required_ioport m_pl1; required_ioport m_pl1;
required_ioport m_pl2; required_ioport m_pl2;
required_ioport m_pl3; required_ioport m_pl3;
@ -384,7 +387,7 @@ WRITE8_MEMBER(kas89_state::sound_comm_w)
else else
{ {
soundlatch_byte_w(space, 0, data); m_soundlatch->write(space, 0, data);
m_audiocpu->set_input_line(0, ASSERT_LINE ); m_audiocpu->set_input_line(0, ASSERT_LINE );
} }
} }
@ -583,7 +586,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( audio_io, AS_IO, 8, kas89_state ) static ADDRESS_MAP_START( audio_io, AS_IO, 8, kas89_state )
ADDRESS_MAP_GLOBAL_MASK(0xff) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_WRITE(int_ack_w) // comm out (1st Z80). seems to write here the value previously read through soundlatch (port 0x02). AM_RANGE(0x00, 0x00) AM_WRITE(int_ack_w) // comm out (1st Z80). seems to write here the value previously read through soundlatch (port 0x02).
AM_RANGE(0x02, 0x02) AM_READ(soundlatch_byte_r) AM_RANGE(0x02, 0x02) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0x04, 0x04) AM_DEVREAD("aysnd", ay8910_device, data_r) AM_RANGE(0x04, 0x04) AM_DEVREAD("aysnd", ay8910_device, data_r)
AM_RANGE(0x04, 0x05) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) AM_RANGE(0x04, 0x05) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -780,6 +783,9 @@ static MACHINE_CONFIG_START( kas89, kas89_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("aysnd", AY8910, MASTER_CLOCK/12) /* Confirmed */ MCFG_SOUND_ADD("aysnd", AY8910, MASTER_CLOCK/12) /* Confirmed */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END MACHINE_CONFIG_END

View File

@ -480,7 +480,7 @@ static ADDRESS_MAP_START( kickgoal_program_map, AS_PROGRAM, 16, kickgoal_state )
/// AM_RANGE(0x30001e, 0x30001f) AM_WRITE(kickgoal_snd_w) /// AM_RANGE(0x30001e, 0x30001f) AM_WRITE(kickgoal_snd_w)
AM_RANGE(0x800000, 0x800001) AM_READ_PORT("P1_P2") AM_RANGE(0x800000, 0x800001) AM_READ_PORT("P1_P2")
AM_RANGE(0x800002, 0x800003) AM_READ_PORT("SYSTEM") AM_RANGE(0x800002, 0x800003) AM_READ_PORT("SYSTEM")
/// AM_RANGE(0x800004, 0x800005) AM_WRITE(soundlatch_word_w) /// AM_RANGE(0x800004, 0x800005) AM_DEVWRITE("soundlatch", generic_latch_16_device, write)
AM_RANGE(0x800004, 0x800005) AM_WRITE(actionhw_snd_w) AM_RANGE(0x800004, 0x800005) AM_WRITE(actionhw_snd_w)
AM_RANGE(0x900000, 0x900005) AM_WRITE(kickgoal_eeprom_w) AM_RANGE(0x900000, 0x900005) AM_WRITE(kickgoal_eeprom_w)
AM_RANGE(0x900006, 0x900007) AM_READ(kickgoal_eeprom_r) AM_RANGE(0x900006, 0x900007) AM_READ(kickgoal_eeprom_r)
@ -633,7 +633,7 @@ static MACHINE_CONFIG_START( kickgoal, kickgoal_state )
MCFG_CPU_PERIODIC_INT_DRIVER(kickgoal_state, kickgoal_interrupt, 240) MCFG_CPU_PERIODIC_INT_DRIVER(kickgoal_state, kickgoal_interrupt, 240)
MCFG_CPU_ADD("audiocpu", PIC16C57, 12000000/4) /* 3MHz ? */ MCFG_CPU_ADD("audiocpu", PIC16C57, 12000000/4) /* 3MHz ? */
MCFG_DEVICE_DISABLE() /* Disables since the internal rom isn't dumped */ MCFG_DEVICE_DISABLE() /* Disabled since the internal rom isn't dumped */
/* Program and Data Maps are internal to the MCU */ /* Program and Data Maps are internal to the MCU */
MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
@ -656,6 +656,9 @@ static MACHINE_CONFIG_START( kickgoal, kickgoal_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
//MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_OKIM6295_ADD("oki", 12000000/8, OKIM6295_PIN7_LOW) MCFG_OKIM6295_ADD("oki", 12000000/8, OKIM6295_PIN7_LOW)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
MACHINE_CONFIG_END MACHINE_CONFIG_END
@ -668,7 +671,7 @@ static MACHINE_CONFIG_START( actionhw, kickgoal_state )
MCFG_CPU_VBLANK_INT_DRIVER("screen", kickgoal_state, irq6_line_hold) MCFG_CPU_VBLANK_INT_DRIVER("screen", kickgoal_state, irq6_line_hold)
MCFG_CPU_ADD("audiocpu", PIC16C57, XTAL_12MHz/3) /* verified on pcb */ MCFG_CPU_ADD("audiocpu", PIC16C57, XTAL_12MHz/3) /* verified on pcb */
MCFG_DEVICE_DISABLE() /* Disables since the internal rom isn't dumped */ MCFG_DEVICE_DISABLE() /* Disabled since the internal rom isn't dumped */
/* Program and Data Maps are internal to the MCU */ /* Program and Data Maps are internal to the MCU */
MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
@ -691,6 +694,9 @@ static MACHINE_CONFIG_START( actionhw, kickgoal_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
//MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_OKIM6295_ADD("oki", XTAL_12MHz/12, OKIM6295_PIN7_HIGH) /* verified on pcb */ MCFG_OKIM6295_ADD("oki", XTAL_12MHz/12, OKIM6295_PIN7_HIGH) /* verified on pcb */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
MACHINE_CONFIG_END MACHINE_CONFIG_END

View File

@ -303,7 +303,7 @@ WRITE8_MEMBER(kingdrby_state::sound_cmd_w)
m_soundcpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_soundcpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
m_sound_cmd = data; m_sound_cmd = data;
/* soundlatch is unneeded since we are already using perfect interleave. */ /* soundlatch is unneeded since we are already using perfect interleave. */
// soundlatch_byte_w(space,0, data); // m_soundlatch->write(space,0, data);
} }

View File

@ -35,6 +35,7 @@ Todo:
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "video/tms9928a.h" #include "video/tms9928a.h"
#include "sound/ay8910.h" #include "sound/ay8910.h"
#include "machine/gen_latch.h"
#include "machine/i8255.h" #include "machine/i8255.h"
#include "machine/nvram.h" #include "machine/nvram.h"
@ -45,11 +46,13 @@ public:
kingpin_state(const machine_config &mconfig, device_type type, const char *tag) kingpin_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag), : driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"), m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu") m_audiocpu(*this, "audiocpu"),
m_soundlatch(*this, "soundlatch")
{ } { }
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu; required_device<cpu_device> m_audiocpu;
required_device<generic_latch_8_device> m_soundlatch;
DECLARE_WRITE8_MEMBER(sound_nmi_w); DECLARE_WRITE8_MEMBER(sound_nmi_w);
DECLARE_WRITE_LINE_MEMBER(vdp_interrupt); DECLARE_WRITE_LINE_MEMBER(vdp_interrupt);
@ -58,7 +61,7 @@ public:
WRITE8_MEMBER(kingpin_state::sound_nmi_w) WRITE8_MEMBER(kingpin_state::sound_nmi_w)
{ {
soundlatch_byte_w(space, 0, data); m_soundlatch->write(space, 0, data);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
@ -86,7 +89,7 @@ static ADDRESS_MAP_START( kingpin_sound_map, AS_PROGRAM, 8, kingpin_state )
//AM_RANGE(0x8400, 0x8400) AM_READNOP // ? //AM_RANGE(0x8400, 0x8400) AM_READNOP // ?
//AM_RANGE(0x8401, 0x8401) AM_WRITENOP // ? //AM_RANGE(0x8401, 0x8401) AM_WRITENOP // ?
AM_RANGE(0x8800, 0x8fff) AM_RAM AM_RANGE(0x8800, 0x8fff) AM_RAM
AM_RANGE(0x9000, 0x9000) AM_READ(soundlatch_byte_r) AM_RANGE(0x9000, 0x9000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -162,6 +165,9 @@ static MACHINE_CONFIG_START( kingpin, kingpin_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("aysnd", AY8912, XTAL_3_579545MHz) MCFG_SOUND_ADD("aysnd", AY8912, XTAL_3_579545MHz)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MACHINE_CONFIG_END MACHINE_CONFIG_END

View File

@ -89,7 +89,7 @@ WRITE8_MEMBER(ksayakyu_state::bank_select_w)
WRITE8_MEMBER(ksayakyu_state::latch_w) WRITE8_MEMBER(ksayakyu_state::latch_w)
{ {
m_sound_status &= ~0x80; m_sound_status &= ~0x80;
soundlatch_byte_w(space, 0, data | 0x80); m_soundlatch->write(space, 0, data | 0x80);
} }
READ8_MEMBER(ksayakyu_state::sound_status_r) READ8_MEMBER(ksayakyu_state::sound_status_r)
@ -100,7 +100,7 @@ READ8_MEMBER(ksayakyu_state::sound_status_r)
WRITE8_MEMBER(ksayakyu_state::tomaincpu_w) WRITE8_MEMBER(ksayakyu_state::tomaincpu_w)
{ {
m_sound_status |= 0x80; m_sound_status |= 0x80;
soundlatch_byte_w(space, 0, data); m_soundlatch->write(space, 0, data);
} }
static ADDRESS_MAP_START( maincpu_map, AS_PROGRAM, 8, ksayakyu_state ) static ADDRESS_MAP_START( maincpu_map, AS_PROGRAM, 8, ksayakyu_state )
@ -276,8 +276,10 @@ static MACHINE_CONFIG_START( ksayakyu, ksayakyu_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, MAIN_CLOCK/16) //unknown clock MCFG_SOUND_ADD("ay1", AY8910, MAIN_CLOCK/16) //unknown clock
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(ksayakyu_state, dummy1_w)) MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(ksayakyu_state, dummy1_w))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)

View File

@ -9,7 +9,7 @@
This hardware seems to be a derivative of MSX2 'on steroids'. This hardware seems to be a derivative of MSX2 'on steroids'.
It has many similarites with sothello.c and tonton.c It has many similarities with sothello.cpp and tonton.cpp
Special thanks to Charles MacDonald, for all the hardware traces: clocks, Special thanks to Charles MacDonald, for all the hardware traces: clocks,
ports, descriptions and a lot of things... :) ports, descriptions and a lot of things... :)
@ -147,9 +147,9 @@
Insert tokens (medals). Insert tokens (medals).
You can bet to any (or all) of the following 5 characters: Bote, Oume, Pyoko, You can bet to any (or all) of the following 5 characters: Bote, Oume, Pyoko,
Kunio, and Pyon Pyon. Press start, and the reels start to roll. You'll win if Kunio, and Pyon Pyon. Press start, and the reels start to roll. You'll win if
you can get 3 of the choosen character(s) in a row, column or diagonal. you can get 3 of the chosen character(s) in a row, column or diagonal.
The black tadpoles behave just like jokers... If you have 2 choosen characters The black tadpoles behave just like jokers... If you have 2 chosen characters
in a row and the remaining one is a black tadpole, it will transform into another in a row and the remaining one is a black tadpole, it will transform into another
character to complete the 3 in a row, allowing you to win. character to complete the 3 in a row, allowing you to win.
@ -252,22 +252,29 @@
#include "video/v9938.h" #include "video/v9938.h"
#include "machine/ticket.h" #include "machine/ticket.h"
#include "machine/nvram.h" #include "machine/nvram.h"
#include "machine/gen_latch.h"
class kurukuru_state : public driver_device class kurukuru_state : public driver_device
{ {
public: public:
kurukuru_state(const machine_config &mconfig, device_type type, const char *tag) kurukuru_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag), : driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"), m_audiocpu(*this, "audiocpu"),
m_v9938(*this, "v9938"), m_v9938(*this, "v9938"),
m_maincpu(*this, "maincpu"),
m_adpcm(*this, "adpcm"), m_adpcm(*this, "adpcm"),
m_hopper(*this, "hopper"), m_hopper(*this, "hopper"),
m_soundlatch(*this, "soundlatch"),
m_bank1(*this, "bank1") m_bank1(*this, "bank1")
{ } { }
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu; required_device<cpu_device> m_audiocpu;
required_device<v9938_device> m_v9938; required_device<v9938_device> m_v9938;
required_device<msm5205_device> m_adpcm;
required_device<ticket_dispenser_device> m_hopper;
required_device<generic_latch_8_device> m_soundlatch;
required_memory_bank m_bank1;
UINT8 m_sound_irq_cause; UINT8 m_sound_irq_cause;
UINT8 m_adpcm_data; UINT8 m_adpcm_data;
@ -287,10 +294,6 @@ public:
virtual void machine_reset() override; virtual void machine_reset() override;
DECLARE_WRITE_LINE_MEMBER(kurukuru_msm5205_vck); DECLARE_WRITE_LINE_MEMBER(kurukuru_msm5205_vck);
DECLARE_WRITE_LINE_MEMBER(kurukuru_vdp_interrupt); DECLARE_WRITE_LINE_MEMBER(kurukuru_vdp_interrupt);
required_device<cpu_device> m_maincpu;
required_device<msm5205_device> m_adpcm;
required_device<ticket_dispenser_device> m_hopper;
required_memory_bank m_bank1;
}; };
#define MAIN_CLOCK XTAL_21_4772MHz #define MAIN_CLOCK XTAL_21_4772MHz
@ -391,7 +394,7 @@ WRITE8_MEMBER(kurukuru_state::kurukuru_bankswitch_w)
WRITE8_MEMBER(kurukuru_state::kurukuru_soundlatch_w) WRITE8_MEMBER(kurukuru_state::kurukuru_soundlatch_w)
{ {
soundlatch_byte_w(space, 0, data); m_soundlatch->write(space, 0, data);
update_sound_irq(m_sound_irq_cause | 1); update_sound_irq(m_sound_irq_cause | 1);
} }
@ -481,7 +484,7 @@ WRITE8_MEMBER(kurukuru_state::kurukuru_adpcm_reset_w)
READ8_MEMBER(kurukuru_state::kurukuru_soundlatch_r) READ8_MEMBER(kurukuru_state::kurukuru_soundlatch_r)
{ {
update_sound_irq(m_sound_irq_cause & ~1); update_sound_irq(m_sound_irq_cause & ~1);
return soundlatch_byte_r(space, 0); return m_soundlatch->read(space, 0);
} }
READ8_MEMBER(kurukuru_state::kurukuru_adpcm_timer_irqack_r) READ8_MEMBER(kurukuru_state::kurukuru_adpcm_timer_irqack_r)
@ -739,6 +742,9 @@ static MACHINE_CONFIG_START( kurukuru, kurukuru_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ym2149", YM2149, YM2149_CLOCK) MCFG_SOUND_ADD("ym2149", YM2149, YM2149_CLOCK)
MCFG_AY8910_PORT_B_READ_CB(IOPORT("DSW2")) MCFG_AY8910_PORT_B_READ_CB(IOPORT("DSW2"))
MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(kurukuru_state, ym2149_aout_w)) MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(kurukuru_state, ym2149_aout_w))
@ -774,6 +780,9 @@ static MACHINE_CONFIG_START( ppj, kurukuru_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ym2149", YM2149, YM2149_CLOCK) // pin 26 (/SEL) is low so final clock is clk/2, handled inside the ym2149 core MCFG_SOUND_ADD("ym2149", YM2149, YM2149_CLOCK) // pin 26 (/SEL) is low so final clock is clk/2, handled inside the ym2149 core
MCFG_AY8910_PORT_B_READ_CB(IOPORT("DSW2")) MCFG_AY8910_PORT_B_READ_CB(IOPORT("DSW2"))
MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(kurukuru_state, ym2149_aout_w)) MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(kurukuru_state, ym2149_aout_w))

View File

@ -81,7 +81,7 @@ TIMER_CALLBACK_MEMBER(ladyfrog_state::nmi_callback)
WRITE8_MEMBER(ladyfrog_state::sound_command_w) WRITE8_MEMBER(ladyfrog_state::sound_command_w)
{ {
soundlatch_byte_w(space, 0, data); m_soundlatch->write(space, 0, data);
machine().scheduler().synchronize(timer_expired_delegate(FUNC(ladyfrog_state::nmi_callback),this), data); machine().scheduler().synchronize(timer_expired_delegate(FUNC(ladyfrog_state::nmi_callback),this), data);
} }
@ -139,7 +139,7 @@ static ADDRESS_MAP_START( ladyfrog_sound_map, AS_PROGRAM, 8, ladyfrog_state )
AM_RANGE(0xca00, 0xca00) AM_WRITENOP AM_RANGE(0xca00, 0xca00) AM_WRITENOP
AM_RANGE(0xcb00, 0xcb00) AM_WRITENOP AM_RANGE(0xcb00, 0xcb00) AM_WRITENOP
AM_RANGE(0xcc00, 0xcc00) AM_WRITENOP AM_RANGE(0xcc00, 0xcc00) AM_WRITENOP
AM_RANGE(0xd000, 0xd000) AM_READ(soundlatch_byte_r) AM_WRITE(to_main_w) AM_RANGE(0xd000, 0xd000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(to_main_w)
AM_RANGE(0xd200, 0xd200) AM_READNOP AM_WRITE(nmi_enable_w) AM_RANGE(0xd200, 0xd200) AM_READNOP AM_WRITE(nmi_enable_w)
AM_RANGE(0xd400, 0xd400) AM_WRITE(nmi_disable_w) AM_RANGE(0xd400, 0xd400) AM_WRITE(nmi_disable_w)
AM_RANGE(0xd600, 0xd600) AM_WRITENOP AM_RANGE(0xd600, 0xd600) AM_WRITENOP
@ -308,6 +308,8 @@ static MACHINE_CONFIG_START( ladyfrog, ladyfrog_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("aysnd", AY8910, 8000000/4) MCFG_SOUND_ADD("aysnd", AY8910, 8000000/4)
MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(ladyfrog_state, unk_w)) MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(ladyfrog_state, unk_w))
MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(ladyfrog_state, unk_w)) MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(ladyfrog_state, unk_w))

View File

@ -27,6 +27,7 @@
#include "emu.h" #include "emu.h"
#include "cpu/e132xs/e132xs.h" #include "cpu/e132xs/e132xs.h"
#include "machine/eepromser.h" #include "machine/eepromser.h"
#include "machine/gen_latch.h"
#include "sound/qs1000.h" #include "sound/qs1000.h"
#include "sound/okim6295.h" #include "sound/okim6295.h"
@ -41,6 +42,7 @@ public:
m_qs1000(*this, "qs1000"), m_qs1000(*this, "qs1000"),
m_gfxdecode(*this, "gfxdecode"), m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette"), m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch"),
m_mainram(*this, "mainram"), m_mainram(*this, "mainram"),
m_fg_videoram(*this, "fg_videoram"), m_fg_videoram(*this, "fg_videoram"),
m_md_videoram(*this, "md_videoram"), m_md_videoram(*this, "md_videoram"),
@ -54,6 +56,7 @@ public:
optional_device<qs1000_device> m_qs1000; optional_device<qs1000_device> m_qs1000;
required_device<gfxdecode_device> m_gfxdecode; required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette; required_device<palette_device> m_palette;
required_device<generic_latch_8_device> m_soundlatch;
required_shared_ptr<UINT32> m_mainram; required_shared_ptr<UINT32> m_mainram;
required_shared_ptr<UINT32> m_fg_videoram; required_shared_ptr<UINT32> m_fg_videoram;
@ -176,7 +179,7 @@ WRITE32_MEMBER(limenko_state::spriteram_buffer_w)
WRITE32_MEMBER(limenko_state::limenko_soundlatch_w) WRITE32_MEMBER(limenko_state::limenko_soundlatch_w)
{ {
soundlatch_byte_w(space, 0, data >> 16); m_soundlatch->write(space, 0, data >> 16);
m_qs1000->set_irq(ASSERT_LINE); m_qs1000->set_irq(ASSERT_LINE);
machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(100)); machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(100));
@ -184,12 +187,12 @@ WRITE32_MEMBER(limenko_state::limenko_soundlatch_w)
WRITE32_MEMBER(limenko_state::spotty_soundlatch_w) WRITE32_MEMBER(limenko_state::spotty_soundlatch_w)
{ {
soundlatch_byte_w(space, 0, data >> 16); m_soundlatch->write(space, 0, data >> 16);
} }
READ8_MEMBER(limenko_state::qs1000_p1_r) READ8_MEMBER(limenko_state::qs1000_p1_r)
{ {
return soundlatch_byte_r(space, 0); return m_soundlatch->read(space, 0);
} }
WRITE8_MEMBER(limenko_state::qs1000_p1_w) WRITE8_MEMBER(limenko_state::qs1000_p1_w)
@ -283,7 +286,7 @@ READ8_MEMBER(limenko_state::spotty_sound_r)
// check m_spotty_sound_cmd bits... // check m_spotty_sound_cmd bits...
if(m_spotty_sound_cmd == 0xf7) if(m_spotty_sound_cmd == 0xf7)
return soundlatch_byte_r(space,0); return m_soundlatch->read(space,0);
else else
return m_oki->read(space,0); return m_oki->read(space,0);
} }
@ -749,6 +752,8 @@ static MACHINE_CONFIG_START( limenko, limenko_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("qs1000", QS1000, XTAL_24MHz) MCFG_SOUND_ADD("qs1000", QS1000, XTAL_24MHz)
MCFG_QS1000_EXTERNAL_ROM(true) MCFG_QS1000_EXTERNAL_ROM(true)
MCFG_QS1000_IN_P1_CB(READ8(limenko_state, qs1000_p1_r)) MCFG_QS1000_IN_P1_CB(READ8(limenko_state, qs1000_p1_r))
@ -787,6 +792,8 @@ static MACHINE_CONFIG_START( spotty, limenko_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_OKIM6295_ADD("oki", 4000000 / 4 , OKIM6295_PIN7_HIGH) //? MCFG_OKIM6295_ADD("oki", 4000000 / 4 , OKIM6295_PIN7_HIGH) //?
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END MACHINE_CONFIG_END

View File

@ -107,7 +107,7 @@ TIMER_CALLBACK_MEMBER(lkage_state::nmi_callback)
WRITE8_MEMBER(lkage_state::lkage_sound_command_w) WRITE8_MEMBER(lkage_state::lkage_sound_command_w)
{ {
soundlatch_byte_w(space, offset, data); m_soundlatch->write(space, offset, data);
machine().scheduler().synchronize(timer_expired_delegate(FUNC(lkage_state::nmi_callback),this), data); machine().scheduler().synchronize(timer_expired_delegate(FUNC(lkage_state::nmi_callback),this), data);
} }
@ -187,7 +187,7 @@ static ADDRESS_MAP_START( lkage_sound_map, AS_PROGRAM, 8, lkage_state )
AM_RANGE(0x8000, 0x87ff) AM_RAM AM_RANGE(0x8000, 0x87ff) AM_RAM
AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ym1", ym2203_device, read, write) AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym2", ym2203_device, read, write) AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
AM_RANGE(0xb000, 0xb000) AM_READ(soundlatch_byte_r) AM_WRITENOP /* ??? */ AM_RANGE(0xb000, 0xb000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITENOP /* ??? */
AM_RANGE(0xb001, 0xb001) AM_READNOP /* ??? */ AM_WRITE(lkage_sh_nmi_enable_w) AM_RANGE(0xb001, 0xb001) AM_READNOP /* ??? */ AM_WRITE(lkage_sh_nmi_enable_w)
AM_RANGE(0xb002, 0xb002) AM_WRITE(lkage_sh_nmi_disable_w) AM_RANGE(0xb002, 0xb002) AM_WRITE(lkage_sh_nmi_disable_w)
AM_RANGE(0xb003, 0xb003) AM_WRITENOP AM_RANGE(0xb003, 0xb003) AM_WRITENOP
@ -566,6 +566,8 @@ static MACHINE_CONFIG_START( lkage, lkage_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ym1", YM2203, AUDIO_CLOCK ) MCFG_SOUND_ADD("ym1", YM2203, AUDIO_CLOCK )
MCFG_YM2203_IRQ_HANDLER(WRITELINE(lkage_state, irqhandler)) MCFG_YM2203_IRQ_HANDLER(WRITELINE(lkage_state, irqhandler))
MCFG_SOUND_ROUTE(0, "mono", 0.15) MCFG_SOUND_ROUTE(0, "mono", 0.15)
@ -611,6 +613,8 @@ static MACHINE_CONFIG_START( lkageb, lkage_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ym1", YM2203, AUDIO_CLOCK) MCFG_SOUND_ADD("ym1", YM2203, AUDIO_CLOCK)
MCFG_YM2203_IRQ_HANDLER(WRITELINE(lkage_state, irqhandler)) MCFG_YM2203_IRQ_HANDLER(WRITELINE(lkage_state, irqhandler))
MCFG_SOUND_ROUTE(0, "mono", 0.15) MCFG_SOUND_ROUTE(0, "mono", 0.15)

View File

@ -57,6 +57,7 @@ L056-6 9A " " VLI-8-4 7A "
#include "emu.h" #include "emu.h"
#include "cpu/tms9900/tms9995.h" #include "cpu/tms9900/tms9995.h"
#include "cpu/tms9900/tms9980a.h" #include "cpu/tms9900/tms9980a.h"
#include "machine/gen_latch.h"
#include "machine/watchdog.h" #include "machine/watchdog.h"
#include "sound/ay8910.h" #include "sound/ay8910.h"
#include "sound/dac.h" #include "sound/dac.h"
@ -110,7 +111,8 @@ public:
m_audiocpu(*this, "audiocpu"), m_audiocpu(*this, "audiocpu"),
m_dac(*this, "dac"), m_dac(*this, "dac"),
m_gfxdecode(*this, "gfxdecode"), m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette") { } m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch") { }
/* memory pointers */ /* memory pointers */
required_shared_ptr<UINT8> m_videoram; required_shared_ptr<UINT8> m_videoram;
@ -162,6 +164,7 @@ public:
required_device<dac_device> m_dac; required_device<dac_device> m_dac;
required_device<gfxdecode_device> m_gfxdecode; required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette; required_device<palette_device> m_palette;
required_device<generic_latch_8_device> m_soundlatch;
}; };
@ -392,7 +395,7 @@ WRITE_LINE_MEMBER(looping_state::looping_spcint)
WRITE8_MEMBER(looping_state::looping_soundlatch_w) WRITE8_MEMBER(looping_state::looping_soundlatch_w)
{ {
soundlatch_byte_w(space, offset, data); m_soundlatch->write(space, offset, data);
m_audiocpu->set_input_line(INT_9980A_LEVEL2, ASSERT_LINE); m_audiocpu->set_input_line(INT_9980A_LEVEL2, ASSERT_LINE);
} }
@ -650,8 +653,10 @@ static MACHINE_CONFIG_START( looping, looping_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("aysnd", AY8910, SOUND_CLOCK/4) MCFG_SOUND_ADD("aysnd", AY8910, SOUND_CLOCK/4)
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_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20)
MCFG_SOUND_ADD("tms", TMS5220, TMS_CLOCK) MCFG_SOUND_ADD("tms", TMS5220, TMS_CLOCK)

View File

@ -172,13 +172,13 @@ READ8_MEMBER(matmania_state::maniach_mcu_status_r)
WRITE8_MEMBER(matmania_state::matmania_sh_command_w) WRITE8_MEMBER(matmania_state::matmania_sh_command_w)
{ {
soundlatch_byte_w(space, offset, data); m_soundlatch->write(space, offset, data);
m_audiocpu->set_input_line(M6502_IRQ_LINE, HOLD_LINE); m_audiocpu->set_input_line(M6502_IRQ_LINE, HOLD_LINE);
} }
WRITE8_MEMBER(matmania_state::maniach_sh_command_w) WRITE8_MEMBER(matmania_state::maniach_sh_command_w)
{ {
soundlatch_byte_w(space, offset, data); m_soundlatch->write(space, offset, data);
m_audiocpu->set_input_line(M6809_IRQ_LINE, HOLD_LINE); m_audiocpu->set_input_line(M6809_IRQ_LINE, HOLD_LINE);
} }
@ -231,7 +231,7 @@ static ADDRESS_MAP_START( matmania_sound_map, AS_PROGRAM, 8, matmania_state )
AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ay1", ay8910_device, data_address_w) AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ay1", ay8910_device, data_address_w)
AM_RANGE(0x2002, 0x2003) AM_DEVWRITE("ay2", ay8910_device, data_address_w) AM_RANGE(0x2002, 0x2003) AM_DEVWRITE("ay2", ay8910_device, data_address_w)
AM_RANGE(0x2004, 0x2004) AM_DEVWRITE("dac", dac_device, write_signed8) AM_RANGE(0x2004, 0x2004) AM_DEVWRITE("dac", dac_device, write_signed8)
AM_RANGE(0x2007, 0x2007) AM_READ(soundlatch_byte_r) AM_RANGE(0x2007, 0x2007) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0x8000, 0xffff) AM_ROM AM_RANGE(0x8000, 0xffff) AM_ROM
ADDRESS_MAP_END ADDRESS_MAP_END
@ -239,7 +239,7 @@ static ADDRESS_MAP_START( maniach_sound_map, AS_PROGRAM, 8, matmania_state )
AM_RANGE(0x0000, 0x0fff) AM_RAM AM_RANGE(0x0000, 0x0fff) AM_RAM
AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ymsnd", ym3526_device, write) AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ymsnd", ym3526_device, write)
AM_RANGE(0x2002, 0x2002) AM_DEVWRITE("dac", dac_device, write_signed8) AM_RANGE(0x2002, 0x2002) AM_DEVWRITE("dac", dac_device, write_signed8)
AM_RANGE(0x2004, 0x2004) AM_READ(soundlatch_byte_r) AM_RANGE(0x2004, 0x2004) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0x4000, 0xffff) AM_ROM AM_RANGE(0x4000, 0xffff) AM_ROM
ADDRESS_MAP_END ADDRESS_MAP_END
@ -451,6 +451,8 @@ static MACHINE_CONFIG_START( matmania, matmania_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, 1500000) MCFG_SOUND_ADD("ay1", AY8910, 1500000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
@ -530,6 +532,8 @@ static MACHINE_CONFIG_START( maniach, matmania_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM3526, 3600000) MCFG_SOUND_ADD("ymsnd", YM3526, 3600000)
MCFG_YM3526_IRQ_HANDLER(DEVWRITELINE("audiocpu", m6809_device, firq_line)) MCFG_YM3526_IRQ_HANDLER(DEVWRITELINE("audiocpu", m6809_device, firq_line))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)

View File

@ -148,7 +148,7 @@ Stephh's notes (based on the games M68000 code and some tests) :
WRITE16_MEMBER(mcatadv_state::mcat_soundlatch_w) WRITE16_MEMBER(mcatadv_state::mcat_soundlatch_w)
{ {
soundlatch_byte_w(space, 0, data); m_soundlatch->write(space, 0, data);
m_soundcpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_soundcpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
@ -200,7 +200,7 @@ static ADDRESS_MAP_START( mcatadv_map, AS_PROGRAM, 16, mcatadv_state )
AM_RANGE(0xb00018, 0xb00019) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) // NOST Only AM_RANGE(0xb00018, 0xb00019) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) // NOST Only
AM_RANGE(0xb0001e, 0xb0001f) AM_READ(mcat_wd_r) // MCAT Only AM_RANGE(0xb0001e, 0xb0001f) AM_READ(mcat_wd_r) // MCAT Only
AM_RANGE(0xc00000, 0xc00001) AM_READ(soundlatch2_word_r) AM_WRITE(mcat_soundlatch_w) AM_RANGE(0xc00000, 0xc00001) AM_DEVREAD8("soundlatch2", generic_latch_8_device, read, 0x00ff) AM_WRITE(mcat_soundlatch_w)
ADDRESS_MAP_END ADDRESS_MAP_END
/*** Sound ***/ /*** Sound ***/
@ -221,7 +221,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( mcatadv_sound_io_map, AS_IO, 8, mcatadv_state ) static ADDRESS_MAP_START( mcatadv_sound_io_map, AS_IO, 8, mcatadv_state )
ADDRESS_MAP_GLOBAL_MASK(0xff) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x80, 0x80) AM_READWRITE(soundlatch_byte_r, soundlatch2_byte_w) AM_RANGE(0x80, 0x80) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -236,7 +236,7 @@ static ADDRESS_MAP_START( nost_sound_io_map, AS_IO, 8, mcatadv_state )
AM_RANGE(0x00, 0x03) AM_DEVWRITE("ymsnd", ym2610_device, write) AM_RANGE(0x00, 0x03) AM_DEVWRITE("ymsnd", ym2610_device, write)
AM_RANGE(0x04, 0x07) AM_DEVREAD("ymsnd", ym2610_device, read) AM_RANGE(0x04, 0x07) AM_DEVREAD("ymsnd", ym2610_device, read)
AM_RANGE(0x40, 0x40) AM_WRITE(mcatadv_sound_bw_w) AM_RANGE(0x40, 0x40) AM_WRITE(mcatadv_sound_bw_w)
AM_RANGE(0x80, 0x80) AM_READWRITE(soundlatch_byte_r, soundlatch2_byte_w) AM_RANGE(0x80, 0x80) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
ADDRESS_MAP_END ADDRESS_MAP_END
/*** Inputs ***/ /*** Inputs ***/
@ -465,6 +465,9 @@ static MACHINE_CONFIG_START( mcatadv, mcatadv_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
MCFG_SOUND_ADD("ymsnd", YM2610, XTAL_16MHz/2) /* verified on pcb */ MCFG_SOUND_ADD("ymsnd", YM2610, XTAL_16MHz/2) /* verified on pcb */
MCFG_YM2610_IRQ_HANDLER(WRITELINE(mcatadv_state, sound_irq)) MCFG_YM2610_IRQ_HANDLER(WRITELINE(mcatadv_state, sound_irq))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.32) MCFG_SOUND_ROUTE(0, "lspeaker", 0.32)

View File

@ -102,6 +102,7 @@ Stephh's notes (based on the games Z80 code and some tests) :
#include "emu.h" #include "emu.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "machine/gen_latch.h"
#include "sound/ay8910.h" #include "sound/ay8910.h"
@ -114,6 +115,7 @@ public:
m_audiocpu(*this, "audiocpu"), m_audiocpu(*this, "audiocpu"),
m_gfxdecode(*this, "gfxdecode"), m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette"), m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch"),
m_videoram(*this, "videoram"), m_videoram(*this, "videoram"),
m_spriteram(*this, "spriteram"), m_spriteram(*this, "spriteram"),
m_colorram(*this, "colorram") { } m_colorram(*this, "colorram") { }
@ -122,6 +124,7 @@ public:
required_device<cpu_device> m_audiocpu; required_device<cpu_device> m_audiocpu;
required_device<gfxdecode_device> m_gfxdecode; required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette; required_device<palette_device> m_palette;
required_device<generic_latch_8_device> m_soundlatch;
required_shared_ptr<UINT8> m_videoram; required_shared_ptr<UINT8> m_videoram;
required_shared_ptr<UINT8> m_spriteram; required_shared_ptr<UINT8> m_spriteram;
@ -282,7 +285,7 @@ WRITE8_MEMBER(mirax_state::nmi_mask_w)
WRITE8_MEMBER(mirax_state::sound_cmd_w) WRITE8_MEMBER(mirax_state::sound_cmd_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); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
@ -329,7 +332,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( mirax_sound_map, AS_PROGRAM, 8, mirax_state ) static ADDRESS_MAP_START( mirax_sound_map, AS_PROGRAM, 8, mirax_state )
AM_RANGE(0x0000, 0x1fff) AM_ROM AM_RANGE(0x0000, 0x1fff) AM_ROM
AM_RANGE(0x8000, 0x8fff) AM_RAM AM_RANGE(0x8000, 0x8fff) 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(0xe000, 0xe000) AM_WRITENOP AM_RANGE(0xe000, 0xe000) AM_WRITENOP
AM_RANGE(0xe001, 0xe001) AM_WRITENOP AM_RANGE(0xe001, 0xe001) AM_WRITENOP
@ -492,6 +495,9 @@ static MACHINE_CONFIG_START( mirax, mirax_state )
MCFG_GFXDECODE_ADD("gfxdecode", "palette", mirax) MCFG_GFXDECODE_ADD("gfxdecode", "palette", mirax)
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, 12000000/4) MCFG_SOUND_ADD("ay1", AY8910, 12000000/4)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)

View File

@ -199,7 +199,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, missb2_state )
AM_RANGE(0x8000, 0x8fff) AM_RAM AM_RANGE(0x8000, 0x8fff) AM_RAM
AM_RANGE(0x9000, 0x9000) AM_DEVREADWRITE("oki", okim6295_device, read, write) AM_RANGE(0x9000, 0x9000) AM_DEVREADWRITE("oki", okim6295_device, read, write)
AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym3526_device, read, write) AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym3526_device, read, write)
AM_RANGE(0xb000, 0xb000) AM_READ(soundlatch_byte_r) AM_WRITENOP // message for main cpu AM_RANGE(0xb000, 0xb000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITENOP // message for main cpu
AM_RANGE(0xb001, 0xb001) AM_READNOP AM_WRITE(bublbobl_sh_nmi_enable_w) // bit 0: message pending for main cpu, bit 1: message pending for sound cpu AM_RANGE(0xb001, 0xb001) AM_READNOP AM_WRITE(bublbobl_sh_nmi_enable_w) // bit 0: message pending for main cpu, bit 1: message pending for sound cpu
AM_RANGE(0xb002, 0xb002) AM_WRITE(bublbobl_sh_nmi_disable_w) AM_RANGE(0xb002, 0xb002) AM_WRITE(bublbobl_sh_nmi_disable_w)
AM_RANGE(0xe000, 0xefff) AM_ROM // space for diagnostic ROM? AM_RANGE(0xe000, 0xefff) AM_ROM // space for diagnostic ROM?
@ -474,6 +474,8 @@ static MACHINE_CONFIG_START( missb2, missb2_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM3526, MAIN_XTAL/8) MCFG_SOUND_ADD("ymsnd", YM3526, MAIN_XTAL/8)
MCFG_YM3526_IRQ_HANDLER(WRITELINE(missb2_state, irqhandler)) MCFG_YM3526_IRQ_HANDLER(WRITELINE(missb2_state, irqhandler))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)

View File

@ -18,7 +18,7 @@
TO DO: TO DO:
- sprites are probably banked differently (no way to be sure until MCU dump is available) - sprites are probably banked differently (no way to be sure until MCU dump is available)
- TA7630 emulation needs filter support (characteristics depend on the frequency) - TA7630 emulation needs filter support (characteristics depend on the frequency)
- TA7630 volume table is hand tuned to match the sample, but still slighty off. - TA7630 volume table is hand tuned to match the sample, but still slightly off.
*/ */
@ -32,7 +32,7 @@ TIMER_CALLBACK_MEMBER(msisaac_state::nmi_callback)
WRITE8_MEMBER(msisaac_state::sound_command_w) WRITE8_MEMBER(msisaac_state::sound_command_w)
{ {
soundlatch_byte_w(space, 0, data); m_soundlatch->write(space, 0, data);
machine().scheduler().synchronize(timer_expired_delegate(FUNC(msisaac_state::nmi_callback),this), data); machine().scheduler().synchronize(timer_expired_delegate(FUNC(msisaac_state::nmi_callback),this), data);
} }
@ -262,7 +262,7 @@ static ADDRESS_MAP_START( msisaac_sound_map, AS_PROGRAM, 8, msisaac_state )
AM_RANGE(0x8010, 0x801d) AM_DEVWRITE("msm", msm5232_device, write) AM_RANGE(0x8010, 0x801d) AM_DEVWRITE("msm", msm5232_device, write)
AM_RANGE(0x8020, 0x8020) AM_WRITE(sound_control_0_w) AM_RANGE(0x8020, 0x8020) AM_WRITE(sound_control_0_w)
AM_RANGE(0x8030, 0x8030) AM_WRITE(sound_control_1_w) AM_RANGE(0x8030, 0x8030) AM_WRITE(sound_control_1_w)
AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r) AM_RANGE(0xc000, 0xc000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0xc001, 0xc001) AM_WRITE(nmi_enable_w) AM_RANGE(0xc001, 0xc001) AM_WRITE(nmi_enable_w)
AM_RANGE(0xc002, 0xc002) AM_WRITE(nmi_disable_w) AM_RANGE(0xc002, 0xc002) AM_WRITE(nmi_disable_w)
AM_RANGE(0xc003, 0xc003) AM_WRITENOP /*???*/ /* this is NOT mixer_enable */ AM_RANGE(0xc003, 0xc003) AM_WRITENOP /*???*/ /* this is NOT mixer_enable */
@ -494,6 +494,8 @@ static MACHINE_CONFIG_START( msisaac, msisaac_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, 2000000) MCFG_SOUND_ADD("ay1", AY8910, 2000000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)

View File

@ -23,6 +23,7 @@
#include "emu.h" #include "emu.h"
#include "cpu/m68000/m68000.h" #include "cpu/m68000/m68000.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "machine/gen_latch.h"
#include "machine/nvram.h" #include "machine/nvram.h"
#include "sound/2610intf.h" #include "sound/2610intf.h"
#include "machine/upd1990a.h" #include "machine/upd1990a.h"
@ -41,6 +42,7 @@ public:
m_gfxdecode(*this, "gfxdecode"), m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"), m_screen(*this, "screen"),
m_palette(*this, "palette"), m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch"),
m_generic_paletteram_16(*this, "paletteram") { } m_generic_paletteram_16(*this, "paletteram") { }
required_shared_ptr<UINT16> m_npvidram; required_shared_ptr<UINT16> m_npvidram;
@ -51,6 +53,7 @@ public:
required_device<gfxdecode_device> m_gfxdecode; required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen; required_device<screen_device> m_screen;
required_device<palette_device> m_palette; required_device<palette_device> m_palette;
required_device<generic_latch_8_device> m_soundlatch;
optional_shared_ptr<UINT16> m_generic_paletteram_16; optional_shared_ptr<UINT16> m_generic_paletteram_16;
UINT8 m_audio_result; UINT8 m_audio_result;
@ -198,7 +201,7 @@ WRITE8_MEMBER(neoprint_state::audio_cpu_clear_nmi_w)
WRITE8_MEMBER(neoprint_state::audio_command_w) WRITE8_MEMBER(neoprint_state::audio_command_w)
{ {
soundlatch_byte_w(space, 0, data); m_soundlatch->write(space, 0, data);
audio_cpu_assert_nmi(); audio_cpu_assert_nmi();
@ -211,7 +214,7 @@ WRITE8_MEMBER(neoprint_state::audio_command_w)
READ8_MEMBER(neoprint_state::audio_command_r) READ8_MEMBER(neoprint_state::audio_command_r)
{ {
UINT8 ret = soundlatch_byte_r(space, 0); UINT8 ret = m_soundlatch->read(space, 0);
//if (LOG_CPU_COMM) logerror(" AUD CPU PC %04x: audio_command_r %02x\n", space.device().safe_pc(), ret); //if (LOG_CPU_COMM) logerror(" AUD CPU PC %04x: audio_command_r %02x\n", space.device().safe_pc(), ret);
@ -506,6 +509,8 @@ static MACHINE_CONFIG_START( neoprint, neoprint_state )
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2610, 24000000 / 3) MCFG_SOUND_ADD("ymsnd", YM2610, 24000000 / 3)
MCFG_YM2610_IRQ_HANDLER(WRITELINE(neoprint_state, audio_cpu_irq)) MCFG_YM2610_IRQ_HANDLER(WRITELINE(neoprint_state, audio_cpu_irq))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.60) MCFG_SOUND_ROUTE(0, "lspeaker", 0.60)
@ -549,6 +554,8 @@ static MACHINE_CONFIG_START( nprsp, neoprint_state )
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2610, 24000000 / 3) MCFG_SOUND_ADD("ymsnd", YM2610, 24000000 / 3)
MCFG_YM2610_IRQ_HANDLER(WRITELINE(neoprint_state, audio_cpu_irq)) MCFG_YM2610_IRQ_HANDLER(WRITELINE(neoprint_state, audio_cpu_irq))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.60) MCFG_SOUND_ROUTE(0, "lspeaker", 0.60)

View File

@ -153,6 +153,7 @@ TODO:
#include "emu.h" #include "emu.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "sound/2203intf.h" #include "sound/2203intf.h"
#include "machine/gen_latch.h"
#include "machine/mc8123.h" #include "machine/mc8123.h"
#include "includes/ninjakd2.h" #include "includes/ninjakd2.h"
@ -376,7 +377,7 @@ static ADDRESS_MAP_START( ninjakd2_main_cpu, AS_PROGRAM, 8, ninjakd2_state )
AM_RANGE(0xc002, 0xc002) AM_READ_PORT("PAD2") AM_RANGE(0xc002, 0xc002) AM_READ_PORT("PAD2")
AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DIPSW1") AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DIPSW1")
AM_RANGE(0xc004, 0xc004) AM_READ_PORT("DIPSW2") AM_RANGE(0xc004, 0xc004) AM_READ_PORT("DIPSW2")
AM_RANGE(0xc200, 0xc200) AM_WRITE(soundlatch_byte_w) AM_RANGE(0xc200, 0xc200) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
AM_RANGE(0xc201, 0xc201) AM_WRITE(ninjakd2_soundreset_w) AM_RANGE(0xc201, 0xc201) AM_WRITE(ninjakd2_soundreset_w)
AM_RANGE(0xc202, 0xc202) AM_WRITE(ninjakd2_bankselect_w) AM_RANGE(0xc202, 0xc202) AM_WRITE(ninjakd2_bankselect_w)
AM_RANGE(0xc203, 0xc203) AM_WRITE(ninjakd2_sprite_overdraw_w) AM_RANGE(0xc203, 0xc203) AM_WRITE(ninjakd2_sprite_overdraw_w)
@ -401,7 +402,7 @@ static ADDRESS_MAP_START( mnight_main_cpu, AS_PROGRAM, 8, ninjakd2_state )
AM_RANGE(0xf802, 0xf802) AM_READ_PORT("PAD2") AM_RANGE(0xf802, 0xf802) AM_READ_PORT("PAD2")
AM_RANGE(0xf803, 0xf803) AM_READ_PORT("DIPSW1") AM_RANGE(0xf803, 0xf803) AM_READ_PORT("DIPSW1")
AM_RANGE(0xf804, 0xf804) AM_READ_PORT("DIPSW2") AM_RANGE(0xf804, 0xf804) AM_READ_PORT("DIPSW2")
AM_RANGE(0xfa00, 0xfa00) AM_WRITE(soundlatch_byte_w) AM_RANGE(0xfa00, 0xfa00) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
AM_RANGE(0xfa01, 0xfa01) AM_WRITE(ninjakd2_soundreset_w) AM_RANGE(0xfa01, 0xfa01) AM_WRITE(ninjakd2_soundreset_w)
AM_RANGE(0xfa02, 0xfa02) AM_WRITE(ninjakd2_bankselect_w) AM_RANGE(0xfa02, 0xfa02) AM_WRITE(ninjakd2_bankselect_w)
AM_RANGE(0xfa03, 0xfa03) AM_WRITE(ninjakd2_sprite_overdraw_w) AM_RANGE(0xfa03, 0xfa03) AM_WRITE(ninjakd2_sprite_overdraw_w)
@ -417,7 +418,7 @@ static ADDRESS_MAP_START( robokid_main_cpu, AS_PROGRAM, 8, ninjakd2_state )
AM_RANGE(0xd000, 0xd3ff) AM_READWRITE(robokid_bg2_videoram_r, robokid_bg2_videoram_w) // banked AM_RANGE(0xd000, 0xd3ff) AM_READWRITE(robokid_bg2_videoram_r, robokid_bg2_videoram_w) // banked
AM_RANGE(0xd400, 0xd7ff) AM_READWRITE(robokid_bg1_videoram_r, robokid_bg1_videoram_w) // banked AM_RANGE(0xd400, 0xd7ff) AM_READWRITE(robokid_bg1_videoram_r, robokid_bg1_videoram_w) // banked
AM_RANGE(0xd800, 0xdbff) AM_READWRITE(robokid_bg0_videoram_r, robokid_bg0_videoram_w) // banked AM_RANGE(0xd800, 0xdbff) AM_READWRITE(robokid_bg0_videoram_r, robokid_bg0_videoram_w) // banked
AM_RANGE(0xdc00, 0xdc00) AM_READ_PORT("KEYCOIN") AM_WRITE(soundlatch_byte_w) AM_RANGE(0xdc00, 0xdc00) AM_READ_PORT("KEYCOIN") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
AM_RANGE(0xdc01, 0xdc01) AM_READ_PORT("PAD1") AM_WRITE(ninjakd2_soundreset_w) AM_RANGE(0xdc01, 0xdc01) AM_READ_PORT("PAD1") AM_WRITE(ninjakd2_soundreset_w)
AM_RANGE(0xdc02, 0xdc02) AM_READ_PORT("PAD2") AM_WRITE(ninjakd2_bankselect_w) AM_RANGE(0xdc02, 0xdc02) AM_READ_PORT("PAD2") AM_WRITE(ninjakd2_bankselect_w)
AM_RANGE(0xdc03, 0xdc03) AM_READ_PORT("DIPSW1") AM_WRITE(ninjakd2_sprite_overdraw_w) AM_RANGE(0xdc03, 0xdc03) AM_READ_PORT("DIPSW1") AM_WRITE(ninjakd2_sprite_overdraw_w)
@ -436,7 +437,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( omegaf_main_cpu, AS_PROGRAM, 8, ninjakd2_state ) static ADDRESS_MAP_START( omegaf_main_cpu, AS_PROGRAM, 8, ninjakd2_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
AM_RANGE(0xc000, 0xc000) AM_READ_PORT("KEYCOIN") AM_WRITE(soundlatch_byte_w) AM_RANGE(0xc000, 0xc000) AM_READ_PORT("KEYCOIN") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
AM_RANGE(0xc001, 0xc003) AM_READ(omegaf_io_protection_r) AM_RANGE(0xc001, 0xc003) AM_READ(omegaf_io_protection_r)
AM_RANGE(0xc001, 0xc001) AM_WRITE(ninjakd2_soundreset_w) AM_RANGE(0xc001, 0xc001) AM_WRITE(ninjakd2_soundreset_w)
AM_RANGE(0xc002, 0xc002) AM_WRITE(ninjakd2_bankselect_w) AM_RANGE(0xc002, 0xc002) AM_WRITE(ninjakd2_bankselect_w)
@ -463,7 +464,7 @@ static ADDRESS_MAP_START( ninjakd2_sound_cpu, AS_PROGRAM, 8, ninjakd2_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0xbfff) AM_ROM AM_RANGE(0x8000, 0xbfff) AM_ROM
AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_RANGE(0xc000, 0xc7ff) 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_WRITE(ninjakd2_pcm_play_w) AM_RANGE(0xf000, 0xf000) AM_WRITE(ninjakd2_pcm_play_w)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -471,7 +472,7 @@ static ADDRESS_MAP_START( ninjakid_nopcm_sound_cpu, AS_PROGRAM, 8, ninjakd2_stat
AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0xbfff) AM_ROM AM_RANGE(0x8000, 0xbfff) AM_ROM
AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_RANGE(0xc000, 0xc7ff) 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_NOP AM_RANGE(0xf000, 0xf000) AM_NOP
ADDRESS_MAP_END ADDRESS_MAP_END
@ -963,6 +964,8 @@ static MACHINE_CONFIG_START( ninjakd2_core, ninjakd2_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("2203.1", YM2203, MAIN_CLOCK_12/8) /* verified */ MCFG_SOUND_ADD("2203.1", YM2203, MAIN_CLOCK_12/8) /* verified */
MCFG_YM2203_IRQ_HANDLER(WRITELINE(ninjakd2_state, irqhandler)) MCFG_YM2203_IRQ_HANDLER(WRITELINE(ninjakd2_state, irqhandler))
MCFG_SOUND_ROUTE(0, "mono", 0.10) MCFG_SOUND_ROUTE(0, "mono", 0.10)

View File

@ -209,7 +209,7 @@ Stephh's notes (based on the games M68000 code and some tests) :
("do you want to draw a medal ?" question) : ("do you want to draw a medal ?" question) :
* BUTTON5 : Yes * BUTTON5 : Yes
* BUTTON6 : No * BUTTON6 : No
- As hopper and other mecanisms aren't emulated, you can't - As hopper and other mechanisms aren't emulated, you can't
draw a medal (winnings are always converted to credits). draw a medal (winnings are always converted to credits).
I hope that someone will be able to fix that as I can't do it. I hope that someone will be able to fix that as I can't do it.
@ -224,6 +224,7 @@ Stephh's notes (based on the games M68000 code and some tests) :
#include "emu.h" #include "emu.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "cpu/m68000/m68000.h" #include "cpu/m68000/m68000.h"
#include "machine/gen_latch.h"
#include "sound/okim6295.h" #include "sound/okim6295.h"
#include "sound/3812intf.h" #include "sound/3812intf.h"
#include "video/decospr.h" #include "video/decospr.h"
@ -238,11 +239,12 @@ public:
m_bg_videoram(*this, "bg_videoram"), m_bg_videoram(*this, "bg_videoram"),
m_fg_videoram(*this, "fg_videoram"), m_fg_videoram(*this, "fg_videoram"),
m_bitmap(*this, "bitmap"), m_bitmap(*this, "bitmap"),
m_sprgen(*this, "spritegen"),
m_maincpu(*this, "maincpu"), m_maincpu(*this, "maincpu"),
m_soundcpu(*this, "soundcpu"), m_soundcpu(*this, "soundcpu"),
m_oki(*this, "oki"), m_oki(*this, "oki"),
m_gfxdecode(*this, "gfxdecode") m_gfxdecode(*this, "gfxdecode"),
m_sprgen(*this, "spritegen"),
m_soundlatch(*this, "soundlatch")
{ } { }
/* memory pointers */ /* memory pointers */
@ -251,7 +253,6 @@ public:
required_shared_ptr<UINT16> m_bg_videoram; required_shared_ptr<UINT16> m_bg_videoram;
required_shared_ptr<UINT16> m_fg_videoram; required_shared_ptr<UINT16> m_fg_videoram;
required_shared_ptr<UINT16> m_bitmap; required_shared_ptr<UINT16> m_bitmap;
optional_device<decospr_device> m_sprgen;
/* video-related */ /* video-related */
tilemap_t *m_bg_tilemap; tilemap_t *m_bg_tilemap;
@ -268,6 +269,8 @@ public:
required_device<cpu_device> m_soundcpu; required_device<cpu_device> m_soundcpu;
required_device<okim6295_device> m_oki; required_device<okim6295_device> m_oki;
required_device<gfxdecode_device> m_gfxdecode; required_device<gfxdecode_device> m_gfxdecode;
optional_device<decospr_device> m_sprgen;
required_device<generic_latch_8_device> m_soundlatch;
DECLARE_WRITE16_MEMBER(fg_videoram_w); DECLARE_WRITE16_MEMBER(fg_videoram_w);
DECLARE_WRITE16_MEMBER(bg_videoram_w); DECLARE_WRITE16_MEMBER(bg_videoram_w);
@ -308,7 +311,7 @@ WRITE16_MEMBER(nmg5_state::nmg5_soundlatch_w)
{ {
if (ACCESSING_BITS_0_7) 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); m_soundcpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
} }
@ -410,7 +413,7 @@ static ADDRESS_MAP_START( sound_io_map, AS_IO, 8, nmg5_state )
ADDRESS_MAP_GLOBAL_MASK(0xff) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_WRITE(oki_banking_w) AM_RANGE(0x00, 0x00) AM_WRITE(oki_banking_w)
AM_RANGE(0x10, 0x11) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) AM_RANGE(0x10, 0x11) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write)
AM_RANGE(0x18, 0x18) AM_READ(soundlatch_byte_r) AM_RANGE(0x18, 0x18) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0x1c, 0x1c) AM_DEVREADWRITE("oki", okim6295_device, read, write) AM_RANGE(0x1c, 0x1c) AM_DEVREADWRITE("oki", okim6295_device, read, write)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -1004,6 +1007,8 @@ static MACHINE_CONFIG_START( nmg5, nmg5_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM3812, 4000000) /* 4MHz */ MCFG_SOUND_ADD("ymsnd", YM3812, 4000000) /* 4MHz */
MCFG_YM3812_IRQ_HANDLER(INPUTLINE("soundcpu", 0)) MCFG_YM3812_IRQ_HANDLER(INPUTLINE("soundcpu", 0))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)

View File

@ -12,7 +12,7 @@
What's new : What's new :
- added bootlegs - Bronx and Colt - added bootlegs - Bronx and Colt
- Cycle Shooting added (bigger VRAM than nycpator, dfferent (unknwn yet) banking and - Cycle Shooting added (bigger VRAM than nycpator, different (unknown yet) banking and
gfx control , ROMs probably are wrong mapped, gfx too) gfx control , ROMs probably are wrong mapped, gfx too)
- Sub CPU halt (cpu #0 ,$d001) - Sub CPU halt (cpu #0 ,$d001)
- Improved communication between main cpu and sound cpu ($d400 cpu#0 , $d000 sound cpu) - Improved communication between main cpu and sound cpu ($d400 cpu#0 , $d000 sound cpu)
@ -159,14 +159,14 @@ Stephh's additional notes (based on the game Z80 code and some tests) :
Furthermore, shooting birds kills you instead of recovering 3 "steps" of damage ! Furthermore, shooting birds kills you instead of recovering 3 "steps" of damage !
- I can't tell if it's an ingame bug of this bootleg, but the game hangs after bonus stage - I can't tell if it's an ingame bug of this bootleg, but the game hangs after bonus stage
(level 4) instead of looping back to level 1 with higher difficulty. (level 4) instead of looping back to level 1 with higher difficulty.
The game also frezees sometimes for some unknown reasons. The game also freezes sometimes for some unknown reasons.
2) 'cyclshtg' and clones 2) 'cyclshtg' and clones
2a) 'cyclshtg' 2a) 'cyclshtg'
- Lives (BCD coded) settings are not read from MCU, but from table at 0x0fee. - Lives (BCD coded) settings are not read from MCU, but from table at 0x0fee.
- Even if it isn't mentionned in the manual, DSWB bit 7 allows you to reset damage to 0 - Even if it isn't mentioned in the manual, DSWB bit 7 allows you to reset damage to 0
at the end of a level (check code at 0x328d). at the end of a level (check code at 0x328d).
- When "Infinite Bullets" is set to ON, there is no timer to reload the bullets. - When "Infinite Bullets" is set to ON, there is no timer to reload the bullets.
However, it's hard to notice as you don't see an indicator as in 'nycaptor'. However, it's hard to notice as you don't see an indicator as in 'nycaptor'.
@ -271,7 +271,7 @@ TIMER_CALLBACK_MEMBER(nycaptor_state::nmi_callback)
WRITE8_MEMBER(nycaptor_state::sound_command_w) WRITE8_MEMBER(nycaptor_state::sound_command_w)
{ {
soundlatch_byte_w(space, 0, data); m_soundlatch->write(space, 0, data);
machine().scheduler().synchronize(timer_expired_delegate(FUNC(nycaptor_state::nmi_callback),this), data); machine().scheduler().synchronize(timer_expired_delegate(FUNC(nycaptor_state::nmi_callback),this), data);
} }
@ -360,7 +360,7 @@ static ADDRESS_MAP_START( nycaptor_sound_map, AS_PROGRAM, 8, nycaptor_state )
AM_RANGE(0xca00, 0xca00) AM_WRITENOP AM_RANGE(0xca00, 0xca00) AM_WRITENOP
AM_RANGE(0xcb00, 0xcb00) AM_WRITENOP AM_RANGE(0xcb00, 0xcb00) AM_WRITENOP
AM_RANGE(0xcc00, 0xcc00) AM_WRITENOP AM_RANGE(0xcc00, 0xcc00) AM_WRITENOP
AM_RANGE(0xd000, 0xd000) AM_READ(soundlatch_byte_r) AM_WRITE(to_main_w) AM_RANGE(0xd000, 0xd000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(to_main_w)
AM_RANGE(0xd200, 0xd200) AM_READNOP AM_WRITE(nmi_enable_w) AM_RANGE(0xd200, 0xd200) AM_READNOP AM_WRITE(nmi_enable_w)
AM_RANGE(0xd400, 0xd400) AM_WRITE(nmi_disable_w) AM_RANGE(0xd400, 0xd400) AM_WRITE(nmi_disable_w)
AM_RANGE(0xd600, 0xd600) AM_WRITENOP AM_RANGE(0xd600, 0xd600) AM_WRITENOP
@ -837,6 +837,8 @@ static MACHINE_CONFIG_START( nycaptor, nycaptor_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, 8000000/4) MCFG_SOUND_ADD("ay1", AY8910, 8000000/4)
MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(nycaptor_state, unk_w)) MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(nycaptor_state, unk_w))
MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(nycaptor_state, unk_w)) MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(nycaptor_state, unk_w))
@ -898,6 +900,8 @@ static MACHINE_CONFIG_START( cyclshtg, nycaptor_state )
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, 8000000/4) MCFG_SOUND_ADD("ay1", AY8910, 8000000/4)
MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(nycaptor_state, unk_w)) MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(nycaptor_state, unk_w))
MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(nycaptor_state, unk_w)) MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(nycaptor_state, unk_w))
@ -959,6 +963,8 @@ static MACHINE_CONFIG_START( bronx, nycaptor_state )
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, 8000000/4) MCFG_SOUND_ADD("ay1", AY8910, 8000000/4)
MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(nycaptor_state, unk_w)) MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(nycaptor_state, unk_w))
MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(nycaptor_state, unk_w)) MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(nycaptor_state, unk_w))

View File

@ -14,7 +14,7 @@ Notes :
- Gun X range is 0x0000-0x01ff and gun Y range is 0x0000-0x00ff, so you - Gun X range is 0x0000-0x01ff and gun Y range is 0x0000-0x00ff, so you
can shoot sometimes out of the "visible area" ... NOT A BUG ! can shoot sometimes out of the "visible area" ... NOT A BUG !
- Player 1 and 2 guns do NOT use the same routine to determine the - Player 1 and 2 guns do NOT use the same routine to determine the
coordonates of an impact on the screen : position both guns in the coordinates of an impact on the screen : position both guns in the
"upper left" corner in the "gun test" to see what I mean. "upper left" corner in the "gun test" to see what I mean.
- I've assumed that the shot was right at the place the shot was made, - I've assumed that the shot was right at the place the shot was made,
but I don't have any more information about that but I don't have any more information about that
@ -39,6 +39,7 @@ NOTE: An eBay auction of the PCB shows "1996.9.16 PROMAT" on the JAMMA+ adapter
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "cpu/m68000/m68000.h" #include "cpu/m68000/m68000.h"
#include "includes/oneshot.h" #include "includes/oneshot.h"
#include "machine/gen_latch.h"
#include "sound/okim6295.h" #include "sound/okim6295.h"
#include "sound/3812intf.h" #include "sound/3812intf.h"
@ -110,8 +111,8 @@ static ADDRESS_MAP_START( oneshot_map, AS_PROGRAM, 16, oneshot_state )
AM_RANGE(0x181000, 0x181fff) AM_RAM_WRITE(oneshot_fg_videoram_w) AM_SHARE("fg_videoram") // credits etc. AM_RANGE(0x181000, 0x181fff) AM_RAM_WRITE(oneshot_fg_videoram_w) AM_SHARE("fg_videoram") // credits etc.
AM_RANGE(0x182000, 0x182fff) AM_RAM_WRITE(oneshot_bg_videoram_w) AM_SHARE("bg_videoram") // credits etc. AM_RANGE(0x182000, 0x182fff) AM_RAM_WRITE(oneshot_bg_videoram_w) AM_SHARE("bg_videoram") // credits etc.
AM_RANGE(0x188000, 0x18800f) AM_WRITEONLY AM_SHARE("scroll") // scroll registers AM_RANGE(0x188000, 0x18800f) AM_WRITEONLY AM_SHARE("scroll") // scroll registers
AM_RANGE(0x190002, 0x190003) AM_READ(soundlatch_word_r) AM_RANGE(0x190002, 0x190003) AM_DEVREAD8("soundlatch", generic_latch_8_device, read, 0x00ff)
AM_RANGE(0x190010, 0x190011) AM_WRITE(soundlatch_word_w) AM_RANGE(0x190010, 0x190011) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
AM_RANGE(0x190018, 0x190019) AM_WRITE(soundbank_w) AM_RANGE(0x190018, 0x190019) AM_WRITE(soundbank_w)
AM_RANGE(0x190026, 0x190027) AM_READ(oneshot_gun_x_p1_r) AM_RANGE(0x190026, 0x190027) AM_READ(oneshot_gun_x_p1_r)
AM_RANGE(0x19002e, 0x19002f) AM_READ(oneshot_gun_x_p2_r) AM_RANGE(0x19002e, 0x19002f) AM_READ(oneshot_gun_x_p2_r)
@ -126,7 +127,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( oneshot_sound_map, AS_PROGRAM, 8, oneshot_state ) static ADDRESS_MAP_START( oneshot_sound_map, AS_PROGRAM, 8, oneshot_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x8000) AM_READWRITE(soundlatch_byte_r,soundlatch_byte_w) AM_RANGE(0x8000, 0x8000) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, write)
AM_RANGE(0x8001, 0x87ff) AM_RAM AM_RANGE(0x8001, 0x87ff) AM_RAM
AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write)
AM_RANGE(0xe010, 0xe010) AM_DEVREADWRITE("oki", okim6295_device, read, write) AM_RANGE(0xe010, 0xe010) AM_DEVREADWRITE("oki", okim6295_device, read, write)
@ -377,6 +378,8 @@ static MACHINE_CONFIG_START( oneshot, oneshot_state )
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM3812, 3500000) MCFG_SOUND_ADD("ymsnd", YM3812, 3500000)
MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)

View File

@ -43,6 +43,7 @@ Note: this is quite clearly a 'Korean bootleg' of Shisensho - Joshiryo-Hen / Mat
#include "emu.h" #include "emu.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "machine/gen_latch.h"
#include "machine/watchdog.h" #include "machine/watchdog.h"
#include "sound/okim6295.h" #include "sound/okim6295.h"
#include "sound/3812intf.h" #include "sound/3812intf.h"
@ -61,7 +62,8 @@ public:
m_audiocpu(*this, "audiocpu"), m_audiocpu(*this, "audiocpu"),
m_watchdog(*this, "watchdog"), m_watchdog(*this, "watchdog"),
m_gfxdecode(*this, "gfxdecode"), m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette") { } m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch") { }
/* memory pointers */ /* memory pointers */
required_shared_ptr<UINT8> m_paletteram; required_shared_ptr<UINT8> m_paletteram;
@ -77,6 +79,7 @@ public:
required_device<watchdog_timer_device> m_watchdog; required_device<watchdog_timer_device> m_watchdog;
required_device<gfxdecode_device> m_gfxdecode; required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette; required_device<palette_device> m_palette;
required_device<generic_latch_8_device> m_soundlatch;
DECLARE_WRITE8_MEMBER(onetwo_fgram_w); DECLARE_WRITE8_MEMBER(onetwo_fgram_w);
DECLARE_WRITE8_MEMBER(onetwo_cpubank_w); DECLARE_WRITE8_MEMBER(onetwo_cpubank_w);
@ -146,7 +149,7 @@ WRITE8_MEMBER(onetwo_state::onetwo_coin_counters_w)
WRITE8_MEMBER(onetwo_state::onetwo_soundlatch_w) WRITE8_MEMBER(onetwo_state::onetwo_soundlatch_w)
{ {
soundlatch_byte_w(space, 0, data); m_soundlatch->write(space, 0, data);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
@ -199,7 +202,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_cpu, AS_PROGRAM, 8, onetwo_state ) static ADDRESS_MAP_START( sound_cpu, AS_PROGRAM, 8, onetwo_state )
AM_RANGE(0x0000, 0x5fff) AM_ROM AM_RANGE(0x0000, 0x5fff) AM_ROM
AM_RANGE(0xf000, 0xf7ff) AM_RAM 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 ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_cpu_io, AS_IO, 8, onetwo_state ) static ADDRESS_MAP_START( sound_cpu_io, AS_IO, 8, onetwo_state )
@ -207,7 +210,7 @@ static ADDRESS_MAP_START( sound_cpu_io, AS_IO, 8, onetwo_state )
AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ymsnd", ym3812_device, status_port_r, control_port_w) AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ymsnd", ym3812_device, status_port_r, control_port_w)
AM_RANGE(0x20, 0x20) AM_DEVWRITE("ymsnd", ym3812_device, write_port_w) AM_RANGE(0x20, 0x20) AM_DEVWRITE("ymsnd", ym3812_device, write_port_w)
AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("oki", okim6295_device, read, write) AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("oki", okim6295_device, read, write)
AM_RANGE(0xc0, 0xc0) AM_WRITE(soundlatch_clear_byte_w) AM_RANGE(0xc0, 0xc0) AM_DEVWRITE("soundlatch", generic_latch_8_device, clear_w)
ADDRESS_MAP_END ADDRESS_MAP_END
/************************************* /*************************************
@ -380,6 +383,8 @@ static MACHINE_CONFIG_START( onetwo, onetwo_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM3812, MASTER_CLOCK) MCFG_SOUND_ADD("ymsnd", YM3812, MASTER_CLOCK)
MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)

View File

@ -16,7 +16,7 @@ CPU Board:
D8243 - I/O Expander for D7751C (8048 based) D8243 - I/O Expander for D7751C (8048 based)
Video Board: Video Board:
almost empty - 3/4 sodlering pins not populated almost empty - 3/4 soldering pins not populated
@ -40,6 +40,7 @@ Limit for help/undo (matta):
#include "emu.h" #include "emu.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "cpu/mcs48/mcs48.h" #include "cpu/mcs48/mcs48.h"
#include "machine/gen_latch.h"
#include "machine/i8243.h" #include "machine/i8243.h"
#include "sound/dac.h" #include "sound/dac.h"
#include "sound/ay8910.h" #include "sound/ay8910.h"
@ -58,7 +59,8 @@ public:
m_maincpu(*this, "maincpu"), m_maincpu(*this, "maincpu"),
m_ay1(*this, "ay1"), m_ay1(*this, "ay1"),
m_ay2(*this, "ay2"), m_ay2(*this, "ay2"),
m_palette(*this, "palette") m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch")
{ {
} }
@ -83,6 +85,7 @@ public:
mc6845_device *m_mc6845; mc6845_device *m_mc6845;
device_t *m_n7751; device_t *m_n7751;
required_device<palette_device> m_palette; required_device<palette_device> m_palette;
required_device<generic_latch_8_device> m_soundlatch;
DECLARE_READ8_MEMBER(unk_87_r); DECLARE_READ8_MEMBER(unk_87_r);
DECLARE_WRITE8_MEMBER(unk_8a_w); DECLARE_WRITE8_MEMBER(unk_8a_w);
@ -212,14 +215,14 @@ static ADDRESS_MAP_START( main_portmap, AS_IO, 8, othello_state )
AM_RANGE(0x87, 0x87) AM_READ(unk_87_r) AM_RANGE(0x87, 0x87) AM_READ(unk_87_r)
AM_RANGE(0x8a, 0x8a) AM_WRITE(unk_8a_w) AM_RANGE(0x8a, 0x8a) AM_WRITE(unk_8a_w)
AM_RANGE(0x8c, 0x8c) AM_READWRITE(unk_8c_r, unk_8c_w) AM_RANGE(0x8c, 0x8c) AM_READWRITE(unk_8c_r, unk_8c_w)
AM_RANGE(0x8d, 0x8d) AM_READWRITE(sound_ack_r, soundlatch_byte_w) AM_RANGE(0x8d, 0x8d) AM_READ(sound_ack_r) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
AM_RANGE(0x8f, 0x8f) AM_WRITE(unk_8f_w) AM_RANGE(0x8f, 0x8f) AM_WRITE(unk_8f_w)
ADDRESS_MAP_END ADDRESS_MAP_END
READ8_MEMBER(othello_state::latch_r) READ8_MEMBER(othello_state::latch_r)
{ {
int retval = soundlatch_byte_r(space, 0); int retval = m_soundlatch->read(space, 0);
soundlatch_clear_byte_w(space, 0, 0); m_soundlatch->clear_w(space, 0, 0);
return retval; return retval;
} }
@ -434,6 +437,8 @@ static MACHINE_CONFIG_START( othello, othello_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, 2000000) MCFG_SOUND_ADD("ay1", AY8910, 2000000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)

View File

@ -92,7 +92,7 @@
--- Game Notes --- --- Game Notes ---
Graphical Glitches caused when 2 sprites are close together are NOT bugs, the Sprites are Graphical Glitches caused when 2 sprites are close together are NOT bugs, the Sprites are
infact contructed from a tilemap made of 4x4 tiles. infact constructed from a tilemap made of 4x4 tiles.
I imagine flicker on the main character at times is also correct. I imagine flicker on the main character at times is also correct.
@ -104,6 +104,7 @@
#include "emu.h" #include "emu.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "cpu/m68000/m68000.h" #include "cpu/m68000/m68000.h"
#include "machine/gen_latch.h"
#include "sound/2203intf.h" #include "sound/2203intf.h"
#include "sound/okim6295.h" #include "sound/okim6295.h"
#include "includes/pass.h" #include "includes/pass.h"
@ -116,7 +117,7 @@ static ADDRESS_MAP_START( pass_map, AS_PROGRAM, 16, pass_state )
AM_RANGE(0x200000, 0x200fff) AM_RAM_WRITE(pass_bg_videoram_w) AM_SHARE("bg_videoram") // Background AM_RANGE(0x200000, 0x200fff) AM_RAM_WRITE(pass_bg_videoram_w) AM_SHARE("bg_videoram") // Background
AM_RANGE(0x210000, 0x213fff) AM_RAM_WRITE(pass_fg_videoram_w) AM_SHARE("fg_videoram") // Foreground AM_RANGE(0x210000, 0x213fff) AM_RAM_WRITE(pass_fg_videoram_w) AM_SHARE("fg_videoram") // Foreground
AM_RANGE(0x220000, 0x2203ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") AM_RANGE(0x220000, 0x2203ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x230000, 0x230001) AM_WRITE(soundlatch_word_w) AM_RANGE(0x230000, 0x230001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
AM_RANGE(0x230100, 0x230101) AM_READ_PORT("DSW") AM_RANGE(0x230100, 0x230101) AM_READ_PORT("DSW")
AM_RANGE(0x230200, 0x230201) AM_READ_PORT("INPUTS") AM_RANGE(0x230200, 0x230201) AM_READ_PORT("INPUTS")
ADDRESS_MAP_END ADDRESS_MAP_END
@ -129,10 +130,10 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( pass_sound_io_map, AS_IO, 8, pass_state ) static ADDRESS_MAP_START( pass_sound_io_map, AS_IO, 8, pass_state )
ADDRESS_MAP_GLOBAL_MASK(0xff) 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(0x70, 0x71) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) AM_RANGE(0x70, 0x71) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
AM_RANGE(0x80, 0x80) AM_DEVWRITE("oki", okim6295_device, write) AM_RANGE(0x80, 0x80) AM_DEVWRITE("oki", okim6295_device, write)
AM_RANGE(0xc0, 0xc0) AM_WRITE(soundlatch_clear_byte_w) AM_RANGE(0xc0, 0xc0) AM_DEVWRITE("soundlatch", generic_latch_8_device, clear_w)
ADDRESS_MAP_END ADDRESS_MAP_END
/* todo : work out function of unknown but used dsw */ /* todo : work out function of unknown but used dsw */
@ -262,6 +263,8 @@ static MACHINE_CONFIG_START( pass, pass_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2203, 14318180/4) MCFG_SOUND_ADD("ymsnd", YM2203, 14318180/4)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)

View File

@ -38,7 +38,7 @@ Stephh's notes (based on the game Z80 code and some tests) :
- There is an ingame bug that prevents you to get a bonus life at 1000000 points - There is an ingame bug that prevents you to get a bonus life at 1000000 points
when you set the "Bonus Life" Dip Switch to "200k 1000k" : when you set the "Bonus Life" Dip Switch to "200k 1000k" :
* Bonus life table index starts at 0x63c6 (8 * 2 butes, LSB first) : * Bonus life table index starts at 0x63c6 (8 * 2 bites, LSB first) :
63C6: D6 63 "70k 200k" -> 04 07 03 02 01 10 63C6: D6 63 "70k 200k" -> 04 07 03 02 01 10
63C8: DC 63 "70k 200k 1000k" -> 04 07 03 02 02 01 01 10 63C8: DC 63 "70k 200k 1000k" -> 04 07 03 02 02 01 01 10
@ -74,7 +74,7 @@ Stephh's notes (based on the game Z80 code and some tests) :
WRITE8_MEMBER(pbaction_state::pbaction_sh_command_w) WRITE8_MEMBER(pbaction_state::pbaction_sh_command_w)
{ {
soundlatch_byte_w(space, offset, data); m_soundlatch->write(space, offset, data);
m_audiocpu->set_input_line_and_vector(0, HOLD_LINE, 0x00); m_audiocpu->set_input_line_and_vector(0, HOLD_LINE, 0x00);
} }
@ -109,7 +109,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( pbaction_sound_map, AS_PROGRAM, 8, pbaction_state ) static ADDRESS_MAP_START( pbaction_sound_map, AS_PROGRAM, 8, pbaction_state )
AM_RANGE(0x0000, 0x1fff) AM_ROM AM_RANGE(0x0000, 0x1fff) AM_ROM
AM_RANGE(0x4000, 0x47ff) AM_RAM AM_RANGE(0x4000, 0x47ff) AM_RAM
AM_RANGE(0x8000, 0x8000) AM_READ(soundlatch_byte_r) AM_RANGE(0x8000, 0x8000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0xffff, 0xffff) AM_WRITENOP /* watchdog? */ AM_RANGE(0xffff, 0xffff) AM_WRITENOP /* watchdog? */
ADDRESS_MAP_END ADDRESS_MAP_END
@ -262,11 +262,13 @@ INTERRUPT_GEN_MEMBER(pbaction_state::pbaction_interrupt)
void pbaction_state::machine_start() void pbaction_state::machine_start()
{ {
save_item(NAME(m_nmi_mask));
save_item(NAME(m_scroll)); save_item(NAME(m_scroll));
} }
void pbaction_state::machine_reset() void pbaction_state::machine_reset()
{ {
m_nmi_mask = 0;
m_scroll = 0; m_scroll = 0;
} }
@ -306,6 +308,8 @@ static MACHINE_CONFIG_START( pbaction, pbaction_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, 1500000) MCFG_SOUND_ADD("ay1", AY8910, 1500000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)

View File

@ -10,7 +10,7 @@ TODO:
- analog sound - analog sound
writes to $a8xx triggering analog sound : writes to $a8xx triggering analog sound :
$a800 - drivers are gettin into the cars $a800 - drivers are getting into the cars
$a801 - collisions $a801 - collisions
$a802 - same as above $a802 - same as above
$a803 - slide on water $a803 - slide on water
@ -68,6 +68,7 @@ K1000233A
#include "emu.h" #include "emu.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "cpu/m6805/m6805.h" #include "cpu/m6805/m6805.h"
#include "machine/gen_latch.h"
#include "machine/watchdog.h" #include "machine/watchdog.h"
#include "sound/ay8910.h" #include "sound/ay8910.h"
#include "includes/pitnrun.h" #include "includes/pitnrun.h"
@ -107,7 +108,7 @@ static ADDRESS_MAP_START( pitnrun_map, AS_PROGRAM, 8, pitnrun_state )
AM_RANGE(0xb005, 0xb005) AM_WRITE(char_bank_select) AM_RANGE(0xb005, 0xb005) AM_WRITE(char_bank_select)
AM_RANGE(0xb006, 0xb006) AM_WRITE(hflip_w) AM_RANGE(0xb006, 0xb006) AM_WRITE(hflip_w)
AM_RANGE(0xb007, 0xb007) AM_WRITE(vflip_w) AM_RANGE(0xb007, 0xb007) AM_WRITE(vflip_w)
AM_RANGE(0xb800, 0xb800) AM_READ_PORT("INPUTS") AM_WRITE(soundlatch_byte_w) AM_RANGE(0xb800, 0xb800) AM_READ_PORT("INPUTS") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
AM_RANGE(0xc800, 0xc801) AM_WRITE(scroll_w) AM_RANGE(0xc800, 0xc801) AM_WRITE(scroll_w)
AM_RANGE(0xc802, 0xc802) AM_WRITENOP/* VP(VF?)MCV - not used ?*/ AM_RANGE(0xc802, 0xc802) AM_WRITENOP/* VP(VF?)MCV - not used ?*/
AM_RANGE(0xc804, 0xc804) AM_WRITE(mcu_data_w) AM_RANGE(0xc804, 0xc804) AM_WRITE(mcu_data_w)
@ -126,7 +127,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( pitnrun_sound_io_map, AS_IO, 8, pitnrun_state ) static ADDRESS_MAP_START( pitnrun_sound_io_map, AS_IO, 8, pitnrun_state )
ADDRESS_MAP_GLOBAL_MASK(0xff) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_WRITE(soundlatch_clear_byte_w) AM_RANGE(0x00, 0x00) AM_DEVWRITE("soundlatch", generic_latch_8_device, clear_w)
AM_RANGE(0x8c, 0x8d) AM_DEVWRITE("ay2", ay8910_device, address_data_w) AM_RANGE(0x8c, 0x8d) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
AM_RANGE(0x8e, 0x8f) AM_DEVWRITE("ay1", ay8910_device, address_data_w) AM_RANGE(0x8e, 0x8f) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
AM_RANGE(0x8f, 0x8f) AM_DEVREAD("ay1", ay8910_device, data_r) AM_RANGE(0x8f, 0x8f) AM_DEVREAD("ay1", ay8910_device, data_r)
@ -253,14 +254,16 @@ static MACHINE_CONFIG_START( pitnrun, pitnrun_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, XTAL_18_432MHz/12) /* verified on pcb */ MCFG_SOUND_ADD("ay1", AY8910, XTAL_18_432MHz/12) /* 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_READ_CB(READ8(driver_device, soundlatch_byte_r)) MCFG_AY8910_PORT_B_READ_CB(DEVREAD8("soundlatch", generic_latch_8_device, read))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MCFG_SOUND_ADD("ay2", AY8910, XTAL_18_432MHz/12) /* verified on pcb */ MCFG_SOUND_ADD("ay2", AY8910, XTAL_18_432MHz/12) /* 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_READ_CB(READ8(driver_device, soundlatch_byte_r)) MCFG_AY8910_PORT_B_READ_CB(DEVREAD8("soundlatch", generic_latch_8_device, read))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MACHINE_CONFIG_END MACHINE_CONFIG_END

View File

@ -7,7 +7,7 @@ Quiz Punch 2 (C)1989 Space Computer
Preliminary driver by Luca Elia Preliminary driver by Luca Elia
- It uses an unknown DIP40 device for protection, that supplies - It uses an unknown DIP40 device for protection, that supplies
the address to jump to (same as mosaic.c) and handles the EEPROM the address to jump to (same as mosaic.cpp) and handles the EEPROM
PCB Layout PCB Layout
---------- ----------
@ -78,6 +78,7 @@ Notes:
#include "emu.h" #include "emu.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "machine/gen_latch.h"
#include "sound/2203intf.h" #include "sound/2203intf.h"
@ -100,7 +101,8 @@ public:
m_maincpu(*this, "maincpu"), m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"), m_audiocpu(*this, "audiocpu"),
m_gfxdecode(*this, "gfxdecode"), m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette") { } m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch") { }
struct prot_t m_prot; struct prot_t m_prot;
required_shared_ptr<UINT8> m_fg_ram; required_shared_ptr<UINT8> m_fg_ram;
@ -123,6 +125,7 @@ public:
required_device<cpu_device> m_audiocpu; required_device<cpu_device> m_audiocpu;
required_device<gfxdecode_device> m_gfxdecode; required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette; required_device<palette_device> m_palette;
required_device<generic_latch_8_device> m_soundlatch;
}; };
@ -364,7 +367,7 @@ WRITE8_MEMBER(quizpun2_state::quizpun2_irq_ack)
WRITE8_MEMBER(quizpun2_state::quizpun2_soundlatch_w) WRITE8_MEMBER(quizpun2_state::quizpun2_soundlatch_w)
{ {
soundlatch_byte_w(space, 0, data); m_soundlatch->write(space, 0, data);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
@ -405,7 +408,7 @@ static ADDRESS_MAP_START( quizpun2_sound_io_map, AS_IO, 8, quizpun2_state )
ADDRESS_MAP_GLOBAL_MASK(0xff) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE( 0x00, 0x00 ) AM_WRITENOP // IRQ end AM_RANGE( 0x00, 0x00 ) AM_WRITENOP // IRQ end
AM_RANGE( 0x20, 0x20 ) AM_WRITENOP // NMI end AM_RANGE( 0x20, 0x20 ) AM_WRITENOP // NMI end
AM_RANGE( 0x40, 0x40 ) AM_READ(soundlatch_byte_r ) AM_RANGE( 0x40, 0x40 ) AM_DEVREAD("soundlatch", generic_latch_8_device, read )
AM_RANGE( 0x60, 0x61 ) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write ) AM_RANGE( 0x60, 0x61 ) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write )
ADDRESS_MAP_END ADDRESS_MAP_END
@ -524,6 +527,8 @@ static MACHINE_CONFIG_START( quizpun2, quizpun2_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_8MHz / 4 ) // 2 MHz? MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_8MHz / 4 ) // 2 MHz?
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END MACHINE_CONFIG_END

View File

@ -170,7 +170,7 @@ WRITE_LINE_MEMBER(renegade_state::adpcm_int)
WRITE8_MEMBER(renegade_state::sound_w) WRITE8_MEMBER(renegade_state::sound_w)
{ {
soundlatch_byte_w(space, offset, data); m_soundlatch->write(space, offset, data);
m_audiocpu->set_input_line(M6809_IRQ_LINE, HOLD_LINE); m_audiocpu->set_input_line(M6809_IRQ_LINE, HOLD_LINE);
} }
@ -621,7 +621,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( renegade_sound_map, AS_PROGRAM, 8, renegade_state ) static ADDRESS_MAP_START( renegade_sound_map, AS_PROGRAM, 8, renegade_state )
AM_RANGE(0x0000, 0x0fff) AM_RAM AM_RANGE(0x0000, 0x0fff) AM_RAM
AM_RANGE(0x1000, 0x1000) AM_READ(soundlatch_byte_r) AM_RANGE(0x1000, 0x1000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0x1800, 0x1800) AM_WRITE(adpcm_start_w) AM_RANGE(0x1800, 0x1800) AM_WRITE(adpcm_start_w)
AM_RANGE(0x2000, 0x2000) AM_WRITE(adpcm_addr_w) AM_RANGE(0x2000, 0x2000) AM_WRITE(adpcm_addr_w)
AM_RANGE(0x2800, 0x2801) AM_DEVREADWRITE("ymsnd", ym3526_device, read, write) AM_RANGE(0x2800, 0x2801) AM_DEVREADWRITE("ymsnd", ym3526_device, read, write)
@ -872,6 +872,8 @@ static MACHINE_CONFIG_START( renegade, renegade_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM3526, 12000000/4) MCFG_SOUND_ADD("ymsnd", YM3526, 12000000/4)
MCFG_YM3526_IRQ_HANDLER(DEVWRITELINE("audiocpu", m6809_device, firq_line)) MCFG_YM3526_IRQ_HANDLER(DEVWRITELINE("audiocpu", m6809_device, firq_line))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)

View File

@ -91,7 +91,7 @@ READ8_MEMBER(retofinv_state::cpu0_mf800_r)
WRITE8_MEMBER(retofinv_state::soundcommand_w) WRITE8_MEMBER(retofinv_state::soundcommand_w)
{ {
soundlatch_byte_w(space, 0, data); m_soundlatch->write(space, 0, data);
m_audiocpu->set_input_line(0, HOLD_LINE); m_audiocpu->set_input_line(0, HOLD_LINE);
} }
@ -161,7 +161,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, retofinv_state ) static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, retofinv_state )
AM_RANGE(0x0000, 0x1fff) AM_ROM AM_RANGE(0x0000, 0x1fff) AM_ROM
AM_RANGE(0x2000, 0x27ff) AM_RAM AM_RANGE(0x2000, 0x27ff) AM_RAM
AM_RANGE(0x4000, 0x4000) AM_READ(soundlatch_byte_r) AM_RANGE(0x4000, 0x4000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0x6000, 0x6000) AM_WRITE(cpu2_m6000_w) AM_RANGE(0x6000, 0x6000) AM_WRITE(cpu2_m6000_w)
AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("sn1", sn76496_device, write) AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("sn1", sn76496_device, write)
AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("sn2", sn76496_device, write) AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("sn2", sn76496_device, write)
@ -406,6 +406,8 @@ static MACHINE_CONFIG_START( retofinv, retofinv_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("sn1", SN76496, 18432000/6) MCFG_SOUND_ADD("sn1", SN76496, 18432000/6)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)

View File

@ -11,6 +11,7 @@ Issues:
#include "emu.h" #include "emu.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "machine/gen_latch.h"
#include "sound/ay8910.h" #include "sound/ay8910.h"
#include "includes/rollrace.h" #include "includes/rollrace.h"
@ -59,7 +60,7 @@ static ADDRESS_MAP_START( rollrace_map, AS_PROGRAM, 8, rollrace_state )
AM_RANGE(0xd900, 0xd900) AM_READWRITE(fake_d800_r,fake_d800_w) /* protection ??*/ AM_RANGE(0xd900, 0xd900) AM_READWRITE(fake_d800_r,fake_d800_w) /* protection ??*/
AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_SHARE("videoram") AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_SHARE("videoram")
AM_RANGE(0xe400, 0xe47f) AM_RAM AM_SHARE("colorram") AM_RANGE(0xe400, 0xe47f) AM_RAM AM_SHARE("colorram")
AM_RANGE(0xe800, 0xe800) AM_WRITE(soundlatch_byte_w) AM_RANGE(0xe800, 0xe800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
AM_RANGE(0xec00, 0xec0f) AM_NOP /* Analog sound effects ?? ec00 sound enable ?*/ AM_RANGE(0xec00, 0xec0f) AM_NOP /* Analog sound effects ?? ec00 sound enable ?*/
AM_RANGE(0xf000, 0xf0ff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0xf000, 0xf0ff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0xf400, 0xf400) AM_WRITE(backgroundcolor_w) AM_RANGE(0xf400, 0xf400) AM_WRITE(backgroundcolor_w)
@ -80,7 +81,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( rollrace_sound_map, AS_PROGRAM, 8, rollrace_state ) static ADDRESS_MAP_START( rollrace_sound_map, AS_PROGRAM, 8, rollrace_state )
AM_RANGE(0x0000, 0x0fff) AM_ROM AM_RANGE(0x0000, 0x0fff) AM_ROM
AM_RANGE(0x2000, 0x2fff) AM_RAM AM_RANGE(0x2000, 0x2fff) AM_RAM
AM_RANGE(0x3000, 0x3000) AM_READ(soundlatch_byte_r) AM_WRITE(sound_nmi_mask_w) AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(sound_nmi_mask_w)
AM_RANGE(0x4000, 0x4001) AM_DEVWRITE("ay1", ay8910_device, address_data_w) AM_RANGE(0x4000, 0x4001) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
AM_RANGE(0x5000, 0x5001) AM_DEVWRITE("ay2", ay8910_device, address_data_w) AM_RANGE(0x5000, 0x5001) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
AM_RANGE(0x6000, 0x6001) AM_DEVWRITE("ay3", ay8910_device, address_data_w) AM_RANGE(0x6000, 0x6001) AM_DEVWRITE("ay3", ay8910_device, address_data_w)
@ -263,6 +264,8 @@ static MACHINE_CONFIG_START( rollrace, rollrace_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910,XTAL_24MHz/16) /* verified on pcb */ MCFG_SOUND_ADD("ay1", AY8910,XTAL_24MHz/16) /* verified on pcb */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.10) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.10)

View File

@ -64,6 +64,7 @@ Stephh's notes (based on the game Z80 code and some tests) :
#include "emu.h" #include "emu.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "machine/gen_latch.h"
#include "sound/ay8910.h" #include "sound/ay8910.h"
#include "roul.lh" #include "roul.lh"
#include "machine/nvram.h" #include "machine/nvram.h"
@ -75,10 +76,12 @@ public:
roul_state(const machine_config &mconfig, device_type type, const char *tag) roul_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag), : driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"), m_maincpu(*this, "maincpu"),
m_soundcpu(*this, "soundcpu") { } m_soundcpu(*this, "soundcpu"),
m_soundlatch(*this, "soundlatch") { }
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_soundcpu; required_device<cpu_device> m_soundcpu;
required_device<generic_latch_8_device> m_soundlatch;
UINT8 m_reg[0x10]; UINT8 m_reg[0x10];
std::unique_ptr<UINT8[]> m_videobuf; std::unique_ptr<UINT8[]> m_videobuf;
@ -180,7 +183,7 @@ WRITE8_MEMBER(roul_state::blitter_cmd_w)
WRITE8_MEMBER(roul_state::sound_latch_w) WRITE8_MEMBER(roul_state::sound_latch_w)
{ {
soundlatch_byte_w(space, 0, data & 0xff); m_soundlatch->write(space, 0, data & 0xff);
m_soundcpu->set_input_line(0, HOLD_LINE); m_soundcpu->set_input_line(0, HOLD_LINE);
} }
@ -216,7 +219,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_cpu_io_map, AS_IO, 8, roul_state ) static ADDRESS_MAP_START( sound_cpu_io_map, AS_IO, 8, roul_state )
ADDRESS_MAP_GLOBAL_MASK(0xff) 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, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w) AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -315,6 +318,9 @@ static MACHINE_CONFIG_START( roul, roul_state )
MCFG_PALETTE_INIT_OWNER(roul_state, roul) MCFG_PALETTE_INIT_OWNER(roul_state, roul)
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("aysnd", AY8910, 1000000) MCFG_SOUND_ADD("aysnd", AY8910, 1000000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END MACHINE_CONFIG_END

View File

@ -26,7 +26,7 @@ Ports:
20 R DSW #2 20 R DSW #2
40 R Input Ports Player 1 40 R Input Ports Player 1
60 R Input Ports Player 2 60 R Input Ports Player 2
80 W Sound Commnand 80 W Sound Command
c0 W Flip Screen c0 W Flip Screen
c1 W ??? c1 W ???
c2-c4 W ??? c2-c4 W ???
@ -81,7 +81,7 @@ Stephh's notes (based on the games Z80 code and some tests) :
- Press START1 while in "test mode" to cycle through different screens - Press START1 while in "test mode" to cycle through different screens
(colors, Dip Switches, Inputs) (colors, Dip Switches, Inputs)
- When "Freeze" Dip Switch is ON, press START1 to freeze and START2 to unfreeze. - When "Freeze" Dip Switch is ON, press START1 to freeze and START2 to unfreeze.
This setting (as well as others) must be defined before reseting the games. This setting (as well as others) must be defined before resetting the games.
- "Test mode" crashes when trying to display "Difficult" ("Hard") because the full string - "Test mode" crashes when trying to display "Difficult" ("Hard") because the full string
is 15 bytes long while other string are 14, so the 15th "char" is NOT 0x00 : is 15 bytes long while other string are 14, so the 15th "char" is NOT 0x00 :
* 0xd49f : mask (0x30) * 0xd49f : mask (0x30)
@ -95,7 +95,7 @@ Stephh's notes (based on the games Z80 code and some tests) :
- Press START1 while in "test mode" to cycle through different screens - Press START1 while in "test mode" to cycle through different screens
(colors, Dip Switches, Inputs) (colors, Dip Switches, Inputs)
- When "Freeze" Dip Switch is ON, press START1 to freeze and START2 to unfreeze. - When "Freeze" Dip Switch is ON, press START1 to freeze and START2 to unfreeze.
This setting (as well as others) must be defined before reseting the games. This setting (as well as others) must be defined before resetting the games.
2a) 'trckydoc' 2a) 'trckydoc'
@ -133,13 +133,13 @@ Stephh's notes (based on the games Z80 code and some tests) :
WRITE8_MEMBER(sauro_state::sauro_sound_command_w) WRITE8_MEMBER(sauro_state::sauro_sound_command_w)
{ {
data |= 0x80; data |= 0x80;
soundlatch_byte_w(space, offset, data); m_soundlatch->write(space, offset, data);
} }
READ8_MEMBER(sauro_state::sauro_sound_command_r) READ8_MEMBER(sauro_state::sauro_sound_command_r)
{ {
int ret = soundlatch_byte_r(space, offset); int ret = m_soundlatch->read(space, offset);
soundlatch_clear_byte_w(space, offset, 0); m_soundlatch->clear_w(space, offset, 0);
return ret; return ret;
} }
@ -420,6 +420,8 @@ static MACHINE_CONFIG_DERIVED( sauro, tecfri )
MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(sauro_state, screen_update_sauro) MCFG_SCREEN_UPDATE_DRIVER(sauro_state, screen_update_sauro)
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("speech", SP0256, 3120000) MCFG_SOUND_ADD("speech", SP0256, 3120000)
MCFG_SP0256_DATA_REQUEST_CB(INPUTLINE("audiocpu", INPUT_LINE_NMI)) MCFG_SP0256_DATA_REQUEST_CB(INPUTLINE("audiocpu", INPUT_LINE_NMI))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)

View File

@ -260,7 +260,7 @@ WRITE16_MEMBER(shadfrce_state::sound_brt_w)
{ {
if (ACCESSING_BITS_8_15) if (ACCESSING_BITS_8_15)
{ {
soundlatch_byte_w(space, 1, data >> 8); m_soundlatch->write(space, 1, data >> 8);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE ); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE );
} }
else else
@ -396,7 +396,7 @@ static ADDRESS_MAP_START( shadfrce_sound_map, AS_PROGRAM, 8, shadfrce_state )
AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_RANGE(0xc000, 0xc7ff) AM_RAM
AM_RANGE(0xc800, 0xc801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) AM_RANGE(0xc800, 0xc801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
AM_RANGE(0xd800, 0xd800) AM_DEVREADWRITE("oki", okim6295_device, read, write) AM_RANGE(0xd800, 0xd800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
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_WRITE(oki_bankswitch_w) AM_RANGE(0xe800, 0xe800) AM_WRITE(oki_bankswitch_w)
AM_RANGE(0xf000, 0xffff) AM_RAM AM_RANGE(0xf000, 0xffff) AM_RAM
ADDRESS_MAP_END ADDRESS_MAP_END
@ -562,6 +562,8 @@ static MACHINE_CONFIG_START( shadfrce, shadfrce_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) /* verified on pcb */ MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) /* verified on pcb */
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.50) MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)

View File

@ -66,6 +66,7 @@ Notes:
#include "emu.h" #include "emu.h"
#include "cpu/m68000/m68000.h" #include "cpu/m68000/m68000.h"
#include "machine/gen_latch.h"
#include "sound/okim6295.h" #include "sound/okim6295.h"
#include "cpu/mcs51/mcs51.h" #include "cpu/mcs51/mcs51.h"
#include "video/ramdac.h" #include "video/ramdac.h"
@ -84,9 +85,10 @@ public:
sliver_state(const machine_config &mconfig, device_type type, const char *tag) sliver_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag), : driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"), m_maincpu(*this, "maincpu"),
m_colorram(*this, "colorram"),
m_audiocpu(*this, "audiocpu"), m_audiocpu(*this, "audiocpu"),
m_screen(*this, "screen") { } m_screen(*this, "screen"),
m_soundlatch(*this, "soundlatch"),
m_colorram(*this, "colorram") { }
UINT16 m_io_offset; UINT16 m_io_offset;
UINT16 m_io_reg[IO_SIZE]; UINT16 m_io_reg[IO_SIZE];
@ -101,6 +103,9 @@ public:
int m_clr_offset; int m_clr_offset;
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
required_device<screen_device> m_screen;
required_device<generic_latch_8_device> m_soundlatch;
required_shared_ptr<UINT8> m_colorram; required_shared_ptr<UINT8> m_colorram;
bitmap_rgb32 m_bitmap_fg; bitmap_rgb32 m_bitmap_fg;
bitmap_rgb32 m_bitmap_bg; bitmap_rgb32 m_bitmap_bg;
@ -123,8 +128,6 @@ public:
void plot_pixel_pal(int x, int y, int addr); void plot_pixel_pal(int x, int y, int addr);
void blit_gfx(); void blit_gfx();
void render_jpeg(); void render_jpeg();
required_device<cpu_device> m_audiocpu;
required_device<screen_device> m_screen;
}; };
void sliver_state::plot_pixel_rgb(int x, int y, UINT32 r, UINT32 g, UINT32 b) void sliver_state::plot_pixel_rgb(int x, int y, UINT32 r, UINT32 g, UINT32 b)
@ -316,7 +319,7 @@ WRITE16_MEMBER(sliver_state::io_data_w)
WRITE16_MEMBER(sliver_state::sound_w) WRITE16_MEMBER(sliver_state::sound_w)
{ {
soundlatch_byte_w(space, 0, data & 0xff); m_soundlatch->write(space, 0, data & 0xff);
m_audiocpu->set_input_line(MCS51_INT0_LINE, HOLD_LINE); m_audiocpu->set_input_line(MCS51_INT0_LINE, HOLD_LINE);
} }
@ -363,7 +366,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( soundmem_io, AS_IO, 8, sliver_state ) static ADDRESS_MAP_START( soundmem_io, AS_IO, 8, sliver_state )
AM_RANGE(0x0100, 0x0100) AM_DEVREADWRITE("oki", okim6295_device, read, write) AM_RANGE(0x0100, 0x0100) AM_DEVREADWRITE("oki", okim6295_device, read, write)
AM_RANGE(0x0101, 0x0101) AM_READ(soundlatch_byte_r) AM_RANGE(0x0101, 0x0101) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
/* ports */ /* ports */
AM_RANGE(MCS51_PORT_P1, MCS51_PORT_P1) AM_WRITE(oki_setbank ) AM_RANGE(MCS51_PORT_P1, MCS51_PORT_P1) AM_WRITE(oki_setbank )
ADDRESS_MAP_END ADDRESS_MAP_END
@ -486,6 +489,8 @@ static MACHINE_CONFIG_START( sliver, sliver_state )
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH) MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.6) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.6)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.6) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.6)

View File

@ -65,7 +65,7 @@ out of the sprite list at that point.. (verify on real hw)
Ma Cheon Ru Ma Cheon Ru
The electrified maze + ball minigame appears unreponsive to controls, this The electrified maze + ball minigame appears unresponsive to controls, this
is because it actually requires you to move the joysticks in a circular is because it actually requires you to move the joysticks in a circular
motion through all 8 directions at a very even speed, a task which is motion through all 8 directions at a very even speed, a task which is
practically impossible to perform on keyboard, and not even that easy with practically impossible to perform on keyboard, and not even that easy with
@ -80,7 +80,6 @@ a joystick. This is not an emulation bug.
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "sound/2151intf.h" #include "sound/2151intf.h"
#include "sound/3812intf.h" #include "sound/3812intf.h"
#include "sound/okim6295.h"
#include "cpu/mcs51/mcs51.h" // for semicom mcu #include "cpu/mcs51/mcs51.h" // for semicom mcu
#include "machine/watchdog.h" #include "machine/watchdog.h"
@ -179,7 +178,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(snowbros_state::snowbros3_irq)
READ16_MEMBER(snowbros_state::snowbros_68000_sound_r) READ16_MEMBER(snowbros_state::snowbros_68000_sound_r)
{ {
return soundlatch_byte_r(space,offset); return m_soundlatch->read(space,offset);
} }
@ -187,14 +186,14 @@ WRITE16_MEMBER(snowbros_state::snowbros_68000_sound_w)
{ {
if (ACCESSING_BITS_0_7) if (ACCESSING_BITS_0_7)
{ {
soundlatch_byte_w(space, offset, data & 0xff); m_soundlatch->write(space, offset, data & 0xff);
m_soundcpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_soundcpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
} }
WRITE16_MEMBER(snowbros_state::semicom_soundcmd_w) WRITE16_MEMBER(snowbros_state::semicom_soundcmd_w)
{ {
if (ACCESSING_BITS_0_7) soundlatch_byte_w(space,0,data & 0xff); if (ACCESSING_BITS_0_7) m_soundlatch->write(space,0,data & 0xff);
} }
READ16_MEMBER(snowbros_state::toto_read) READ16_MEMBER(snowbros_state::toto_read)
@ -230,7 +229,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_io_map, AS_IO, 8, snowbros_state ) static ADDRESS_MAP_START( sound_io_map, AS_IO, 8, snowbros_state )
ADDRESS_MAP_GLOBAL_MASK(0xff) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write)
AM_RANGE(0x04, 0x04) AM_READWRITE(soundlatch_byte_r, soundlatch_byte_w) /* goes back to the main CPU, checked during boot */ AM_RANGE(0x04, 0x04) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, write) /* goes back to the main CPU, checked during boot */
ADDRESS_MAP_END ADDRESS_MAP_END
@ -331,7 +330,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( honeydol_sound_io_map, AS_IO, 8, snowbros_state ) static ADDRESS_MAP_START( honeydol_sound_io_map, AS_IO, 8, snowbros_state )
ADDRESS_MAP_GLOBAL_MASK(0xff) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) // not connected? AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) // not connected?
AM_RANGE(0x04, 0x04) AM_READWRITE(soundlatch_byte_r, soundlatch_byte_w) /* goes back to the main CPU, checked during boot */ AM_RANGE(0x04, 0x04) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, write) /* goes back to the main CPU, checked during boot */
ADDRESS_MAP_END ADDRESS_MAP_END
/* Twin Adventure */ /* Twin Adventure */
@ -340,7 +339,7 @@ WRITE16_MEMBER(snowbros_state::twinadv_68000_sound_w)
{ {
if (ACCESSING_BITS_0_7) if (ACCESSING_BITS_0_7)
{ {
soundlatch_byte_w(space, offset, data & 0xff); m_soundlatch->write(space, offset, data & 0xff);
m_soundcpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_soundcpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
} }
@ -373,7 +372,7 @@ WRITE8_MEMBER(snowbros_state::twinadv_oki_bank_w)
static ADDRESS_MAP_START( twinadv_sound_io_map, AS_IO, 8, snowbros_state ) static ADDRESS_MAP_START( twinadv_sound_io_map, AS_IO, 8, snowbros_state )
ADDRESS_MAP_GLOBAL_MASK(0xff) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x02, 0x02) AM_READWRITE(soundlatch_byte_r, soundlatch_byte_w) // back to 68k? AM_RANGE(0x02, 0x02) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, write) // back to 68k?
AM_RANGE(0x04, 0x04) AM_WRITE(twinadv_oki_bank_w) // oki bank? AM_RANGE(0x04, 0x04) AM_WRITE(twinadv_oki_bank_w) // oki bank?
AM_RANGE(0x06, 0x06) AM_DEVREADWRITE("oki", okim6295_device, read, write) AM_RANGE(0x06, 0x06) AM_DEVREADWRITE("oki", okim6295_device, read, write)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -407,7 +406,7 @@ static ADDRESS_MAP_START( hyperpac_sound_map, AS_PROGRAM, 8, snowbros_state )
AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_RANGE(0xd000, 0xd7ff) AM_RAM
AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write) AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write)
AM_RANGE(0xf002, 0xf002) AM_DEVREADWRITE("oki", okim6295_device, read, write) AM_RANGE(0xf002, 0xf002) AM_DEVREADWRITE("oki", okim6295_device, read, write)
AM_RANGE(0xf008, 0xf008) AM_READ(soundlatch_byte_r) AM_RANGE(0xf008, 0xf008) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( hyperpac_sound_io_map, AS_IO, 8, snowbros_state ) static ADDRESS_MAP_START( hyperpac_sound_io_map, AS_IO, 8, snowbros_state )
@ -1684,6 +1683,8 @@ static MACHINE_CONFIG_START( snowbros, snowbros_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_12MHz/4) /* 3 MHz - confirmed */ MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_12MHz/4) /* 3 MHz - confirmed */
MCFG_YM3812_IRQ_HANDLER(INPUTLINE("soundcpu", 0)) MCFG_YM3812_IRQ_HANDLER(INPUTLINE("soundcpu", 0))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
@ -1774,7 +1775,7 @@ static MACHINE_CONFIG_START( honeydol, snowbros_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
/* sound hardware */ MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_12MHz/4) /* 3Mhz */ MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_12MHz/4) /* 3Mhz */
MCFG_YM3812_IRQ_HANDLER(INPUTLINE("soundcpu", 0)) MCFG_YM3812_IRQ_HANDLER(INPUTLINE("soundcpu", 0))
@ -1814,6 +1815,8 @@ static MACHINE_CONFIG_START( twinadv, snowbros_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
/* sound hardware */ /* sound hardware */
MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, OKIM6295_PIN7_HIGH) /* freq? */ MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, OKIM6295_PIN7_HIGH) /* freq? */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)

View File

@ -15,7 +15,7 @@ driver by Mirko Buffoni
WRITE8_MEMBER(solomon_state::solomon_sh_command_w) WRITE8_MEMBER(solomon_state::solomon_sh_command_w)
{ {
soundlatch_byte_w(space, offset, data); m_soundlatch->write(space, offset, data);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
@ -70,7 +70,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, solomon_state ) static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, solomon_state )
AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x0000, 0x3fff) AM_ROM
AM_RANGE(0x4000, 0x47ff) AM_RAM AM_RANGE(0x4000, 0x47ff) AM_RAM
AM_RANGE(0x8000, 0x8000) AM_READ(soundlatch_byte_r) AM_RANGE(0x8000, 0x8000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0xffff, 0xffff) AM_WRITENOP /* watchdog? */ AM_RANGE(0xffff, 0xffff) AM_WRITENOP /* watchdog? */
ADDRESS_MAP_END ADDRESS_MAP_END
@ -231,6 +231,8 @@ static MACHINE_CONFIG_START( solomon, solomon_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, 1500000) MCFG_SOUND_ADD("ay1", AY8910, 1500000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.12) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.12)

View File

@ -39,6 +39,7 @@ OSC : 8.0000MHz(X1) 21.477 MHz(X2) 384kHz(X3)
#include "emu.h" #include "emu.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "cpu/m6809/m6809.h" #include "cpu/m6809/m6809.h"
#include "machine/gen_latch.h"
#include "sound/2203intf.h" #include "sound/2203intf.h"
#include "sound/msm5205.h" #include "sound/msm5205.h"
#include "video/v9938.h" #include "video/v9938.h"
@ -174,7 +175,7 @@ static ADDRESS_MAP_START( maincpu_io_map, AS_IO, 8, sothello_state )
AM_RANGE( 0x31, 0x31) AM_READ(subcpu_halt_clear) AM_RANGE( 0x31, 0x31) AM_READ(subcpu_halt_clear)
AM_RANGE( 0x32, 0x32) AM_READ(subcpu_comm_status) AM_RANGE( 0x32, 0x32) AM_READ(subcpu_comm_status)
AM_RANGE( 0x33, 0x33) AM_READ(soundcpu_status_r) AM_RANGE( 0x33, 0x33) AM_READ(soundcpu_status_r)
AM_RANGE( 0x40, 0x4f) AM_WRITE(soundlatch_byte_w) AM_RANGE( 0x40, 0x4f) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
AM_RANGE( 0x50, 0x50) AM_WRITE(bank_w) AM_RANGE( 0x50, 0x50) AM_WRITE(bank_w)
AM_RANGE( 0x60, 0x61) AM_MIRROR(0x02) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) AM_RANGE( 0x60, 0x61) AM_MIRROR(0x02) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
/* not sure, but the A1 line is ignored, code @ $8b8 */ /* not sure, but the A1 line is ignored, code @ $8b8 */
@ -223,7 +224,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( soundcpu_io_map, AS_IO, 8, sothello_state ) static ADDRESS_MAP_START( soundcpu_io_map, AS_IO, 8, sothello_state )
ADDRESS_MAP_GLOBAL_MASK(0xff) 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(0x01, 0x01) AM_WRITE(msm_data_w) AM_RANGE(0x01, 0x01) AM_WRITE(msm_data_w)
AM_RANGE(0x02, 0x02) AM_WRITE(msm_cfg_w) AM_RANGE(0x02, 0x02) AM_WRITE(msm_cfg_w)
AM_RANGE(0x03, 0x03) AM_WRITE(soundcpu_busyflag_set_w) AM_RANGE(0x03, 0x03) AM_WRITE(soundcpu_busyflag_set_w)
@ -372,6 +373,9 @@ static MACHINE_CONFIG_START( sothello, sothello_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2203, YM_CLOCK) MCFG_SOUND_ADD("ymsnd", YM2203, YM_CLOCK)
MCFG_YM2203_IRQ_HANDLER(WRITELINE(sothello_state, irqhandler)) MCFG_YM2203_IRQ_HANDLER(WRITELINE(sothello_state, irqhandler))
MCFG_AY8910_PORT_A_READ_CB(IOPORT("DSWA")) MCFG_AY8910_PORT_A_READ_CB(IOPORT("DSWA"))

View File

@ -9,8 +9,8 @@
-general info------------------------------------------------------------------- -general info-------------------------------------------------------------------
A Pinball Game from Tecmo, the Hardware seems to be somewhere between that used A Pinball Game from Tecmo, the Hardware seems to be somewhere between that used
for Tecmo's classic game Ninja Gaiden (see gaiden.c) and that used in Comad's for Tecmo's classic game Ninja Gaiden (see gaiden.cpp) and that used in Comad's
Gals Pinball (see galspnbl.c) I imagine Comad took the hardware that this uses Gals Pinball (see galspnbl.cpp) I imagine Comad took the hardware that this uses
as a basis for writing their game on, adding a couple of features such as the as a basis for writing their game on, adding a couple of features such as the
pixel layer. pixel layer.
@ -45,7 +45,7 @@ The manual defines the controls as 4 push buttons:
a-u19 - Samples (27c1001) a-u19 - Samples (27c1001)
1 custom chip (u94, surface scrached) 1 custom chip (u94, surface scratched)
------ ------
9002-B 9002-B
@ -61,9 +61,9 @@ The manual defines the controls as 4 push buttons:
b-u111 / b-u111 /
Custom chips: Custom chips:
U101, U102, U106, U107: surface scrached U101, U102, U106, U107: surface scratched
probably 2 pairs of TECMO-3&4 probably 2 pairs of TECMO-3&4
U133: surface scrached U133: surface scratched
probably TECMO-6 probably TECMO-6
U112: TECMO-5 U112: TECMO-5
@ -82,11 +82,10 @@ The manual defines the controls as 4 push buttons:
lev 6 : 0x78 : 0000 1ab2 - writes to 90031 lev 6 : 0x78 : 0000 1ab2 - writes to 90031
lev 7 : 0x7c : ffff ffff - invalid lev 7 : 0x7c : ffff ffff - invalid
TODO : (also check the notes from the galspnbl.c driver) TODO : (also check the notes from the galspnbl.cpp driver)
- coin insertion is not recognized consistently. - coin insertion is not recognized consistently.
- rewrite video, do single pass sprite render, move sprite code to device, share with gaiden.c etc. - convert to tilemaps
- convert to tilemaps
- all the unknown regs - all the unknown regs
@ -144,7 +143,7 @@ WRITE16_MEMBER(spbactn_state::soundcommand_w)
{ {
if (ACCESSING_BITS_0_7) if (ACCESSING_BITS_0_7)
{ {
soundlatch_byte_w(space, offset, data & 0xff); m_soundlatch->write(space, offset, data & 0xff);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
} }
@ -227,7 +226,7 @@ static ADDRESS_MAP_START( spbactn_sound_map, AS_PROGRAM, 8, spbactn_state )
AM_RANGE(0xf810, 0xf811) AM_DEVWRITE("ymsnd", ym3812_device, write) AM_RANGE(0xf810, 0xf811) AM_DEVWRITE("ymsnd", ym3812_device, write)
AM_RANGE(0xfc00, 0xfc00) AM_READNOP AM_WRITENOP /* irq ack ?? */ AM_RANGE(0xfc00, 0xfc00) AM_READNOP AM_WRITENOP /* irq ack ?? */
AM_RANGE(0xfc20, 0xfc20) AM_READ(soundlatch_byte_r) AM_RANGE(0xfc20, 0xfc20) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -439,6 +438,8 @@ static MACHINE_CONFIG_START( spbactn, spbactn_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_4MHz) /* Was 3.579545MHz, a common clock, but no way to generate via on PCB OSCs */ MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_4MHz) /* Was 3.579545MHz, a common clock, but no way to generate via on PCB OSCs */
MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
@ -490,6 +491,8 @@ static MACHINE_CONFIG_START( spbactnp, spbactn_state )
/* sound hardware - different? */ /* sound hardware - different? */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_4MHz) MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_4MHz)
MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)

View File

@ -38,6 +38,7 @@ TODO:
#include "emu.h" #include "emu.h"
#include "cpu/i8085/i8085.h" #include "cpu/i8085/i8085.h"
#include "cpu/mcs48/mcs48.h" #include "cpu/mcs48/mcs48.h"
#include "machine/gen_latch.h"
#include "includes/spcforce.h" #include "includes/spcforce.h"
void spcforce_state::machine_start() void spcforce_state::machine_start()
@ -108,7 +109,7 @@ WRITE8_MEMBER(spcforce_state::irq_mask_w)
static ADDRESS_MAP_START( spcforce_map, AS_PROGRAM, 8, spcforce_state ) static ADDRESS_MAP_START( spcforce_map, AS_PROGRAM, 8, spcforce_state )
AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x0000, 0x3fff) AM_ROM
AM_RANGE(0x4000, 0x43ff) AM_RAM AM_RANGE(0x4000, 0x43ff) AM_RAM
AM_RANGE(0x7000, 0x7000) AM_READ_PORT("DSW") AM_WRITE(soundlatch_byte_w) AM_RANGE(0x7000, 0x7000) AM_READ_PORT("DSW") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
AM_RANGE(0x7001, 0x7001) AM_READ_PORT("P1") AM_WRITE(soundtrigger_w) AM_RANGE(0x7001, 0x7001) AM_READ_PORT("P1") AM_WRITE(soundtrigger_w)
AM_RANGE(0x7002, 0x7002) AM_READ_PORT("P2") AM_RANGE(0x7002, 0x7002) AM_READ_PORT("P2")
AM_RANGE(0x700b, 0x700b) AM_WRITE(flip_screen_w) AM_RANGE(0x700b, 0x700b) AM_WRITE(flip_screen_w)
@ -131,7 +132,7 @@ static ADDRESS_MAP_START( spcforce_sound_map, AS_PROGRAM, 8, spcforce_state )
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( spcforce_sound_io_map, AS_IO, 8, spcforce_state ) static ADDRESS_MAP_START( spcforce_sound_io_map, AS_IO, 8, spcforce_state )
AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READ(soundlatch_byte_r) AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(SN76496_latch_w) AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(SN76496_latch_w)
AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(SN76496_select_r, SN76496_select_w) AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(SN76496_select_r, SN76496_select_w)
AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(t0_r) AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(t0_r)
@ -304,6 +305,8 @@ static MACHINE_CONFIG_START( spcforce, spcforce_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("sn1", SN76496, 2000000) MCFG_SOUND_ADD("sn1", SN76496, 2000000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MCFG_SN76496_READY_HANDLER(WRITELINE(spcforce_state, write_sn1_ready)) MCFG_SN76496_READY_HANDLER(WRITELINE(spcforce_state, write_sn1_ready))

View File

@ -32,7 +32,7 @@ Notes:
WRITE8_MEMBER(spdodgeb_state::sound_command_w) WRITE8_MEMBER(spdodgeb_state::sound_command_w)
{ {
soundlatch_byte_w(space, offset, data); m_soundlatch->write(space, offset, data);
m_audiocpu->set_input_line(M6809_IRQ_LINE, HOLD_LINE); m_audiocpu->set_input_line(M6809_IRQ_LINE, HOLD_LINE);
} }
@ -259,7 +259,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( spdodgeb_sound_map, AS_PROGRAM, 8, spdodgeb_state ) static ADDRESS_MAP_START( spdodgeb_sound_map, AS_PROGRAM, 8, spdodgeb_state )
AM_RANGE(0x0000, 0x0fff) AM_RAM AM_RANGE(0x0000, 0x0fff) AM_RAM
AM_RANGE(0x1000, 0x1000) AM_READ(soundlatch_byte_r) AM_RANGE(0x1000, 0x1000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0x2800, 0x2801) AM_DEVWRITE("ymsnd", ym3812_device, write) AM_RANGE(0x2800, 0x2801) AM_DEVWRITE("ymsnd", ym3812_device, write)
AM_RANGE(0x3800, 0x3807) AM_WRITE(spd_adpcm_w) AM_RANGE(0x3800, 0x3807) AM_WRITE(spd_adpcm_w)
AM_RANGE(0x8000, 0xffff) AM_ROM AM_RANGE(0x8000, 0xffff) AM_ROM
@ -430,6 +430,8 @@ static MACHINE_CONFIG_START( spdodgeb, spdodgeb_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_12MHz/4) MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_12MHz/4)
MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", M6809_FIRQ_LINE)) MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", M6809_FIRQ_LINE))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)

View File

@ -23,7 +23,6 @@ TODO:
#include "emu.h" #include "emu.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "sound/okim6295.h"
#include "includes/speedspn.h" #include "includes/speedspn.h"
/*** README INFO ************************************************************** /*** README INFO **************************************************************
@ -77,7 +76,7 @@ WRITE8_MEMBER(speedspn_state::rombank_w)
WRITE8_MEMBER(speedspn_state::sound_w) WRITE8_MEMBER(speedspn_state::sound_w)
{ {
soundlatch_byte_w(space, 1, data); m_soundlatch->write(space, 1, data);
m_audiocpu->set_input_line(0, HOLD_LINE); m_audiocpu->set_input_line(0, HOLD_LINE);
} }
@ -120,7 +119,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, speedspn_state )
AM_RANGE(0x8000, 0x87ff) AM_RAM AM_RANGE(0x8000, 0x87ff) AM_RAM
AM_RANGE(0x9000, 0x9000) AM_WRITE(okibank_w) AM_RANGE(0x9000, 0x9000) AM_WRITE(okibank_w)
AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write) 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 ADDRESS_MAP_END
static ADDRESS_MAP_START( oki_map, AS_0, 8, speedspn_state ) static ADDRESS_MAP_START( oki_map, AS_0, 8, speedspn_state )
@ -301,6 +300,8 @@ static MACHINE_CONFIG_START( speedspn, speedspn_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_OKIM6295_ADD("oki", 1122000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_OKIM6295_ADD("oki", 1122000, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map)

View File

@ -24,7 +24,7 @@ void ssozumo_state::machine_start()
WRITE8_MEMBER(ssozumo_state::sh_command_w) WRITE8_MEMBER(ssozumo_state::sh_command_w)
{ {
soundlatch_byte_w(space, 0, data); m_soundlatch->write(space, 0, data);
m_audiocpu->set_input_line(M6502_IRQ_LINE, HOLD_LINE); m_audiocpu->set_input_line(M6502_IRQ_LINE, HOLD_LINE);
} }
@ -60,7 +60,7 @@ static ADDRESS_MAP_START( ssozumo_sound_map, AS_PROGRAM, 8, ssozumo_state )
AM_RANGE(0x2002, 0x2003) AM_DEVWRITE("ay2", ay8910_device, data_address_w) AM_RANGE(0x2002, 0x2003) AM_DEVWRITE("ay2", ay8910_device, data_address_w)
AM_RANGE(0x2004, 0x2004) AM_DEVWRITE("dac", dac_device, write_signed8) AM_RANGE(0x2004, 0x2004) AM_DEVWRITE("dac", dac_device, write_signed8)
AM_RANGE(0x2005, 0x2005) AM_WRITE(sound_nmi_mask_w) AM_RANGE(0x2005, 0x2005) AM_WRITE(sound_nmi_mask_w)
AM_RANGE(0x2007, 0x2007) AM_READ(soundlatch_byte_r) AM_RANGE(0x2007, 0x2007) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0x4000, 0xffff) AM_ROM AM_RANGE(0x4000, 0xffff) AM_ROM
ADDRESS_MAP_END ADDRESS_MAP_END
@ -220,6 +220,8 @@ static MACHINE_CONFIG_START( ssozumo, ssozumo_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, 1500000) MCFG_SOUND_ADD("ay1", AY8910, 1500000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)

View File

@ -81,6 +81,7 @@ Bprom dump by f205v
#include "emu.h" #include "emu.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "machine/gen_latch.h"
#include "sound/ay8910.h" #include "sound/ay8910.h"
class stuntair_state : public driver_device class stuntair_state : public driver_device
@ -95,7 +96,8 @@ public:
m_bgattrram(*this, "bgattrram"), m_bgattrram(*this, "bgattrram"),
m_sprram(*this, "sprram"), m_sprram(*this, "sprram"),
m_gfxdecode(*this, "gfxdecode"), m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette") m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch")
{ } { }
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
@ -106,6 +108,7 @@ public:
required_shared_ptr<UINT8> m_sprram; required_shared_ptr<UINT8> m_sprram;
required_device<gfxdecode_device> m_gfxdecode; required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette; required_device<palette_device> m_palette;
required_device<generic_latch_8_device> m_soundlatch;
tilemap_t *m_fg_tilemap; tilemap_t *m_fg_tilemap;
tilemap_t *m_bg_tilemap; tilemap_t *m_bg_tilemap;
@ -303,7 +306,7 @@ WRITE8_MEMBER(stuntair_state::stuntair_coin_w)
WRITE8_MEMBER(stuntair_state::stuntair_sound_w) WRITE8_MEMBER(stuntair_state::stuntair_sound_w)
{ {
soundlatch_byte_w(space, 0, data); m_soundlatch->write(space, 0, data);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
@ -531,8 +534,10 @@ static MACHINE_CONFIG_START( stuntair, stuntair_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") // stereo? MCFG_SPEAKER_STANDARD_MONO("mono") // stereo?
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, XTAL_18_432MHz/12) MCFG_SOUND_ADD("ay1", AY8910, XTAL_18_432MHz/12)
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(stuntair_state, ay8910_portb_w)) MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(stuntair_state, ay8910_portb_w))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)

View File

@ -98,7 +98,7 @@ WRITE16_MEMBER(suprslam_state::sound_command_w)
if (ACCESSING_BITS_0_7) if (ACCESSING_BITS_0_7)
{ {
m_pending_command = 1; m_pending_command = 1;
soundlatch_byte_w(space, offset, data & 0xff); m_soundlatch->write(space, offset, data & 0xff);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
} }
@ -153,7 +153,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_io_map, AS_IO, 8, suprslam_state ) static ADDRESS_MAP_START( sound_io_map, AS_IO, 8, suprslam_state )
ADDRESS_MAP_GLOBAL_MASK(0xff) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_WRITE(suprslam_sh_bankswitch_w) AM_RANGE(0x00, 0x00) AM_WRITE(suprslam_sh_bankswitch_w)
AM_RANGE(0x04, 0x04) AM_READ(soundlatch_byte_r) AM_WRITE(pending_command_clear_w) AM_RANGE(0x04, 0x04) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(pending_command_clear_w)
AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -333,6 +333,8 @@ static MACHINE_CONFIG_START( suprslam, suprslam_state )
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2610, 8000000) MCFG_SOUND_ADD("ymsnd", YM2610, 8000000)
MCFG_YM2610_IRQ_HANDLER(WRITELINE(suprslam_state, irqhandler)) MCFG_YM2610_IRQ_HANDLER(WRITELINE(suprslam_state, irqhandler))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.25) MCFG_SOUND_ROUTE(0, "lspeaker", 0.25)

View File

@ -40,7 +40,7 @@ void tagteam_state::machine_start()
WRITE8_MEMBER(tagteam_state::sound_command_w) WRITE8_MEMBER(tagteam_state::sound_command_w)
{ {
soundlatch_byte_w(space, offset, data); m_soundlatch->write(space, offset, data);
m_audiocpu->set_input_line(M6502_IRQ_LINE, HOLD_LINE); m_audiocpu->set_input_line(M6502_IRQ_LINE, HOLD_LINE);
} }
@ -75,7 +75,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, tagteam_state )
AM_RANGE(0x2002, 0x2003) AM_DEVWRITE("ay2", ay8910_device, data_address_w) AM_RANGE(0x2002, 0x2003) AM_DEVWRITE("ay2", ay8910_device, data_address_w)
AM_RANGE(0x2004, 0x2004) AM_DEVWRITE("dac", dac_device, write_unsigned8) AM_RANGE(0x2004, 0x2004) AM_DEVWRITE("dac", dac_device, write_unsigned8)
AM_RANGE(0x2005, 0x2005) AM_WRITE(sound_nmi_mask_w) AM_RANGE(0x2005, 0x2005) AM_WRITE(sound_nmi_mask_w)
AM_RANGE(0x2007, 0x2007) AM_READ(soundlatch_byte_r) AM_RANGE(0x2007, 0x2007) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0x4000, 0xffff) AM_ROM AM_RANGE(0x4000, 0xffff) AM_ROM
ADDRESS_MAP_END ADDRESS_MAP_END
@ -236,6 +236,8 @@ static MACHINE_CONFIG_START( tagteam, tagteam_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, XTAL_12MHz/8) MCFG_SOUND_ADD("ay1", AY8910, XTAL_12MHz/8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)

View File

@ -22,7 +22,7 @@ WRITE16_MEMBER(tail2nos_state::sound_command_w)
{ {
if (ACCESSING_BITS_0_7) if (ACCESSING_BITS_0_7)
{ {
soundlatch_byte_w(space, offset, data & 0xff); m_soundlatch->write(space, offset, data & 0xff);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
} }
@ -57,7 +57,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_port_map, AS_IO, 8, tail2nos_state ) static ADDRESS_MAP_START( sound_port_map, AS_IO, 8, tail2nos_state )
ADDRESS_MAP_GLOBAL_MASK(0xff) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x07, 0x07) AM_READ(soundlatch_byte_r) AM_WRITENOP /* the write is a clear pending command */ AM_RANGE(0x07, 0x07) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITENOP /* the write is a clear pending command */
AM_RANGE(0x08, 0x0b) AM_DEVWRITE("ymsnd", ym2608_device, write) AM_RANGE(0x08, 0x0b) AM_DEVWRITE("ymsnd", ym2608_device, write)
#if 0 #if 0
AM_RANGE(0x18, 0x1b) AM_DEVREAD("ymsnd", ym2608_device, read) AM_RANGE(0x18, 0x1b) AM_DEVREAD("ymsnd", ym2608_device, read)
@ -236,6 +236,8 @@ static MACHINE_CONFIG_START( tail2nos, tail2nos_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2608, XTAL_8MHz) /* verified on pcb */ MCFG_SOUND_ADD("ymsnd", YM2608, XTAL_8MHz) /* verified on pcb */
MCFG_YM2608_IRQ_HANDLER(WRITELINE(tail2nos_state, irqhandler)) MCFG_YM2608_IRQ_HANDLER(WRITELINE(tail2nos_state, irqhandler))
MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(tail2nos_state, sound_bankswitch_w)) MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(tail2nos_state, sound_bankswitch_w))

View File

@ -92,7 +92,7 @@ Address Dir Data Name Description
although bioatack and spaceskr do initialise the second bank. although bioatack and spaceskr do initialise the second bank.
[2] Priority is controlled by a 256x4 PROM. [2] Priority is controlled by a 256x4 PROM.
Bits 0-3 of PRY go to A4-A7 of the PROM, bit 4 selectes D0-D1 or D2-D3. Bits 0-3 of PRY go to A4-A7 of the PROM, bit 4 selects D0-D1 or D2-D3.
A0-A3 of the PROM is fed with a mask of the inactive planes in the order A0-A3 of the PROM is fed with a mask of the inactive planes in the order
OBJ-SCN1-SCN2-SCN3. The 2-bit code which comes out from the PROM selects OBJ-SCN1-SCN2-SCN3. The 2-bit code which comes out from the PROM selects
the plane to display. the plane to display.
@ -170,7 +170,6 @@ TODO:
#include "cpu/m6805/m6805.h" #include "cpu/m6805/m6805.h"
#include "machine/watchdog.h" #include "machine/watchdog.h"
#include "sound/ay8910.h" #include "sound/ay8910.h"
#include "sound/dac.h"
#include "includes/taitosj.h" #include "includes/taitosj.h"
@ -181,7 +180,7 @@ WRITE8_MEMBER(taitosj_state::taitosj_sndnmi_msk_w)
WRITE8_MEMBER(taitosj_state::taitosj_soundcommand_w) WRITE8_MEMBER(taitosj_state::taitosj_soundcommand_w)
{ {
soundlatch_byte_w(space,offset,data); m_soundlatch->write(space,offset,data);
if (!m_sndnmi_disable) m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); if (!m_sndnmi_disable) m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
@ -347,7 +346,7 @@ static ADDRESS_MAP_START( taitosj_audio_map, AS_PROGRAM, 8, taitosj_state )
AM_RANGE(0x4803, 0x4803) AM_DEVREAD("ay3", ay8910_device, data_r) AM_RANGE(0x4803, 0x4803) AM_DEVREAD("ay3", ay8910_device, data_r)
AM_RANGE(0x4804, 0x4805) AM_DEVWRITE("ay4", ay8910_device, address_data_w) AM_RANGE(0x4804, 0x4805) AM_DEVWRITE("ay4", ay8910_device, address_data_w)
AM_RANGE(0x4805, 0x4805) AM_DEVREAD("ay4", ay8910_device, data_r) AM_RANGE(0x4805, 0x4805) AM_DEVREAD("ay4", ay8910_device, data_r)
AM_RANGE(0x5000, 0x5000) AM_READ(soundlatch_byte_r) AM_RANGE(0x5000, 0x5000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0xe000, 0xefff) AM_ROM /* space for diagnostic ROM */ AM_RANGE(0xe000, 0xefff) AM_ROM /* space for diagnostic ROM */
ADDRESS_MAP_END ADDRESS_MAP_END
@ -1776,6 +1775,8 @@ static MACHINE_CONFIG_START( nomcu, taitosj_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, 6000000/4) MCFG_SOUND_ADD("ay1", AY8910, 6000000/4)
MCFG_AY8910_PORT_A_READ_CB(IOPORT("DSW2")) MCFG_AY8910_PORT_A_READ_CB(IOPORT("DSW2"))
MCFG_AY8910_PORT_B_READ_CB(IOPORT("DSW3")) MCFG_AY8910_PORT_B_READ_CB(IOPORT("DSW3"))

View File

@ -94,7 +94,7 @@ WRITE16_MEMBER(taotaido_state::sound_command_w)
if (ACCESSING_BITS_0_7) if (ACCESSING_BITS_0_7)
{ {
m_pending_command = 1; m_pending_command = 1;
soundlatch_byte_w(space, offset, data & 0xff); m_soundlatch->write(space, offset, data & 0xff);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
} }
@ -148,7 +148,7 @@ static ADDRESS_MAP_START( sound_port_map, AS_IO, 8, taotaido_state )
AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
AM_RANGE(0x04, 0x04) AM_WRITE(sh_bankswitch_w) AM_RANGE(0x04, 0x04) AM_WRITE(sh_bankswitch_w)
AM_RANGE(0x08, 0x08) AM_WRITE(pending_command_clear_w) AM_RANGE(0x08, 0x08) AM_WRITE(pending_command_clear_w)
AM_RANGE(0x0c, 0x0c) AM_READ(soundlatch_byte_r) AM_RANGE(0x0c, 0x0c) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -391,6 +391,8 @@ static MACHINE_CONFIG_START( taotaido, taotaido_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2610, 8000000) MCFG_SOUND_ADD("ymsnd", YM2610, 8000000)
MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.25) MCFG_SOUND_ROUTE(0, "lspeaker", 0.25)

View File

@ -142,10 +142,8 @@
#include "emu.h" #include "emu.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "cpu/nec/nec.h" #include "cpu/nec/nec.h"
#include "cpu/m68000/m68000.h"
#include "includes/tatsumi.h" #include "includes/tatsumi.h"
#include "sound/2151intf.h" #include "sound/2151intf.h"
#include "sound/okim6295.h"
#include "machine/nvram.h" #include "machine/nvram.h"
#include "roundup5.lh" #include "roundup5.lh"
@ -184,7 +182,7 @@ WRITE16_MEMBER(tatsumi_state::bigfight_a60000_w)
WRITE16_MEMBER(tatsumi_state::cyclwarr_sound_w) WRITE16_MEMBER(tatsumi_state::cyclwarr_sound_w)
{ {
soundlatch_byte_w(space, 0, data >> 8); m_soundlatch->write(space, 0, data >> 8);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
@ -334,7 +332,7 @@ static ADDRESS_MAP_START( cyclwarr_z80_map, AS_PROGRAM, 8, tatsumi_state )
AM_RANGE(0xe000, 0xffef) AM_RAM AM_RANGE(0xe000, 0xffef) AM_RAM
AM_RANGE(0xfff0, 0xfff1) AM_READ(tatsumi_hack_ym2151_r) AM_DEVWRITE("ymsnd", ym2151_device, write) AM_RANGE(0xfff0, 0xfff1) AM_READ(tatsumi_hack_ym2151_r) AM_DEVWRITE("ymsnd", ym2151_device, write)
AM_RANGE(0xfff4, 0xfff4) AM_READ(tatsumi_hack_oki_r) AM_DEVWRITE("oki", okim6295_device, write) AM_RANGE(0xfff4, 0xfff4) AM_READ(tatsumi_hack_oki_r) AM_DEVWRITE("oki", okim6295_device, write)
AM_RANGE(0xfffc, 0xfffc) AM_READ(soundlatch_byte_r) AM_RANGE(0xfffc, 0xfffc) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0xfffe, 0xfffe) AM_WRITENOP AM_RANGE(0xfffe, 0xfffe) AM_WRITENOP
ADDRESS_MAP_END ADDRESS_MAP_END
@ -992,6 +990,8 @@ static MACHINE_CONFIG_START( cyclwarr, tatsumi_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", CLOCK_1 / 4) MCFG_YM2151_ADD("ymsnd", CLOCK_1 / 4)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_IRQ0)) MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_IRQ0))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.45) MCFG_SOUND_ROUTE(0, "lspeaker", 0.45)
@ -1035,6 +1035,8 @@ static MACHINE_CONFIG_START( bigfight, tatsumi_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", CLOCK_1 / 4) MCFG_YM2151_ADD("ymsnd", CLOCK_1 / 4)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_IRQ0)) MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_IRQ0))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.45) MCFG_SOUND_ROUTE(0, "lspeaker", 0.45)

View File

@ -17,7 +17,6 @@ Might be some priority glitches
#include "emu.h" #include "emu.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "sound/3812intf.h" #include "sound/3812intf.h"
#include "sound/msm5205.h"
#include "rendlay.h" #include "rendlay.h"
#include "includes/tbowl.h" #include "includes/tbowl.h"
@ -29,7 +28,7 @@ WRITE8_MEMBER(tbowl_state::coincounter_w)
/*** Banking /*** Banking
note: check this, its borrowed from tecmo.c / wc90.c at the moment and could well be wrong note: check this, its borrowed from tecmo.cpp / wc90.cpp at the moment and could well be wrong
***/ ***/
@ -49,7 +48,7 @@ WRITE8_MEMBER(tbowl_state::boardc_bankswitch_w)
WRITE8_MEMBER(tbowl_state::sound_command_w) WRITE8_MEMBER(tbowl_state::sound_command_w)
{ {
soundlatch_byte_w(space, offset, data); m_soundlatch->write(space, offset, data);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
@ -180,7 +179,7 @@ static ADDRESS_MAP_START( 6206A_map, AS_PROGRAM, 8, tbowl_state )
AM_RANGE(0xe004, 0xe005) AM_WRITE(adpcm_vol_w) AM_RANGE(0xe004, 0xe005) AM_WRITE(adpcm_vol_w)
AM_RANGE(0xe006, 0xe006) AM_WRITENOP AM_RANGE(0xe006, 0xe006) AM_WRITENOP
AM_RANGE(0xe007, 0xe007) AM_WRITENOP /* NMI acknowledge */ AM_RANGE(0xe007, 0xe007) AM_WRITENOP /* NMI acknowledge */
AM_RANGE(0xe010, 0xe010) AM_READ(soundlatch_byte_r) AM_RANGE(0xe010, 0xe010) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
ADDRESS_MAP_END ADDRESS_MAP_END
/*** Input Ports /*** Input Ports
@ -481,6 +480,8 @@ static MACHINE_CONFIG_START( tbowl, tbowl_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ym1", YM3812, 4000000) MCFG_SOUND_ADD("ym1", YM3812, 4000000)
MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)

View File

@ -2,7 +2,7 @@
// copyright-holders:Nicola Salmoria // copyright-holders:Nicola Salmoria
/*************************************************************************** /***************************************************************************
tecmo.c tecmo.cpp
driver by Nicola Salmoria driver by Nicola Salmoria
@ -64,7 +64,7 @@ WRITE8_MEMBER(tecmo_state::bankswitch_w)
WRITE8_MEMBER(tecmo_state::sound_command_w) WRITE8_MEMBER(tecmo_state::sound_command_w)
{ {
soundlatch_byte_w(space, offset, data); m_soundlatch->write(space, offset, data);
m_soundcpu->set_input_line(INPUT_LINE_NMI,ASSERT_LINE); m_soundcpu->set_input_line(INPUT_LINE_NMI,ASSERT_LINE);
} }
@ -227,7 +227,7 @@ static ADDRESS_MAP_START( rygar_sound_map, AS_PROGRAM, 8, tecmo_state )
AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x0000, 0x3fff) AM_ROM
AM_RANGE(0x4000, 0x47ff) AM_RAM AM_RANGE(0x4000, 0x47ff) AM_RAM
AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ymsnd", ym3812_device, write) AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ymsnd", ym3812_device, write)
AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r) AM_WRITE(adpcm_start_w) AM_RANGE(0xc000, 0xc000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(adpcm_start_w)
AM_RANGE(0xd000, 0xd000) AM_WRITE(adpcm_end_w) AM_RANGE(0xd000, 0xd000) AM_WRITE(adpcm_end_w)
AM_RANGE(0xe000, 0xe000) AM_WRITE(adpcm_vol_w) AM_RANGE(0xe000, 0xe000) AM_WRITE(adpcm_vol_w)
AM_RANGE(0xf000, 0xf000) AM_WRITE(nmi_ack_w) AM_RANGE(0xf000, 0xf000) AM_WRITE(nmi_ack_w)
@ -239,7 +239,7 @@ static ADDRESS_MAP_START( tecmo_sound_map, AS_PROGRAM, 8, tecmo_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x87ff) AM_RAM AM_RANGE(0x8000, 0x87ff) AM_RAM
AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ymsnd", ym3812_device, write) AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ymsnd", ym3812_device, write)
AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r) AM_WRITE(adpcm_start_w) AM_RANGE(0xc000, 0xc000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(adpcm_start_w)
AM_RANGE(0xc400, 0xc400) AM_WRITE(adpcm_end_w) AM_RANGE(0xc400, 0xc400) AM_WRITE(adpcm_end_w)
AM_RANGE(0xc800, 0xc800) AM_WRITE(adpcm_vol_w) AM_RANGE(0xc800, 0xc800) AM_WRITE(adpcm_vol_w)
AM_RANGE(0xcc00, 0xcc00) AM_WRITE(nmi_ack_w) AM_RANGE(0xcc00, 0xcc00) AM_WRITE(nmi_ack_w)
@ -644,6 +644,8 @@ static MACHINE_CONFIG_START( rygar, tecmo_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_4MHz) /* verified on pcb */ MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_4MHz) /* verified on pcb */
MCFG_YM3812_IRQ_HANDLER(INPUTLINE("soundcpu", 0)) MCFG_YM3812_IRQ_HANDLER(INPUTLINE("soundcpu", 0))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)

View File

@ -38,7 +38,7 @@ WRITE16_MEMBER(tecmo16_state::sound_command_w)
{ {
if (ACCESSING_BITS_0_7) if (ACCESSING_BITS_0_7)
{ {
soundlatch_byte_w(space, 0x00, data & 0xff); m_soundlatch->write(space, 0x00, data & 0xff);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
} }
@ -98,7 +98,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, tecmo16_state )
AM_RANGE(0xf000, 0xfbff) AM_RAM /* Sound RAM */ AM_RANGE(0xf000, 0xfbff) AM_RAM /* Sound RAM */
AM_RANGE(0xfc00, 0xfc00) AM_DEVREADWRITE("oki", okim6295_device, read, write) AM_RANGE(0xfc00, 0xfc00) AM_DEVREADWRITE("oki", okim6295_device, read, write)
AM_RANGE(0xfc04, 0xfc05) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) AM_RANGE(0xfc04, 0xfc05) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
AM_RANGE(0xfc08, 0xfc08) AM_READ(soundlatch_byte_r) AM_RANGE(0xfc08, 0xfc08) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0xfc0c, 0xfc0c) AM_NOP AM_RANGE(0xfc0c, 0xfc0c) AM_NOP
AM_RANGE(0xfffe, 0xffff) AM_RAM AM_RANGE(0xfffe, 0xffff) AM_RAM
ADDRESS_MAP_END ADDRESS_MAP_END
@ -404,6 +404,8 @@ static MACHINE_CONFIG_START( fstarfrc, tecmo16_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", MASTER_CLOCK/6) // 4 MHz MCFG_YM2151_ADD("ymsnd", MASTER_CLOCK/6) // 4 MHz
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.60) MCFG_SOUND_ROUTE(0, "lspeaker", 0.60)

View File

@ -20,7 +20,7 @@ T.Slanina 20040530 :
20080528 20080528
- Removed ROM patches and debug keypresses - Removed ROM patches and debug keypresses
- Added protection simulation in machine/tecmosys.c - Added protection simulation in machine/tecmosys.cpp
- Fixed inputs - Fixed inputs
- Added watchdog - Added watchdog
@ -184,7 +184,6 @@ ae500w07.ad1 - M6295 Samples (23c4001)
#include "emu.h" #include "emu.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "machine/eepromser.h"
#include "includes/tecmosys.h" #include "includes/tecmosys.h"
#include "cpu/m68000/m68000.h" #include "cpu/m68000/m68000.h"
#include "sound/okim6295.h" #include "sound/okim6295.h"
@ -198,7 +197,7 @@ READ16_MEMBER(tecmosys_state::sound_r)
if (ACCESSING_BITS_0_7) if (ACCESSING_BITS_0_7)
{ {
machine().scheduler().synchronize(); machine().scheduler().synchronize();
return soundlatch2_byte_r(space, 0 ); return m_soundlatch2->read(space, 0);
} }
return 0; return 0;
@ -209,7 +208,7 @@ WRITE16_MEMBER(tecmosys_state::sound_w)
if (ACCESSING_BITS_0_7) if (ACCESSING_BITS_0_7)
{ {
machine().scheduler().synchronize(); machine().scheduler().synchronize();
soundlatch_byte_w(space, 0x00, data & 0xff); m_soundlatch->write(space, 0x00, data & 0xff);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
} }
@ -351,8 +350,8 @@ static ADDRESS_MAP_START( io_map, AS_IO, 8, tecmosys_state )
AM_RANGE(0x10, 0x10) AM_DEVREADWRITE("oki", okim6295_device, read, write) AM_RANGE(0x10, 0x10) AM_DEVREADWRITE("oki", okim6295_device, read, write)
AM_RANGE(0x20, 0x20) AM_WRITE(oki_bank_w) AM_RANGE(0x20, 0x20) AM_WRITE(oki_bank_w)
AM_RANGE(0x30, 0x30) AM_WRITE(z80_bank_w) AM_RANGE(0x30, 0x30) AM_WRITE(z80_bank_w)
AM_RANGE(0x40, 0x40) AM_READ(soundlatch_byte_r) AM_RANGE(0x40, 0x40) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0x50, 0x50) AM_WRITE(soundlatch2_byte_w) AM_RANGE(0x50, 0x50) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
AM_RANGE(0x60, 0x61) AM_DEVREADWRITE("ymz", ymz280b_device, read, write) AM_RANGE(0x60, 0x61) AM_DEVREADWRITE("ymz", ymz280b_device, read, write)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -482,6 +481,9 @@ static MACHINE_CONFIG_START( deroon, tecmosys_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
MCFG_SOUND_ADD("ymf", YMF262, XTAL_14_31818MHz) MCFG_SOUND_ADD("ymf", YMF262, XTAL_14_31818MHz)
MCFG_YMF262_IRQ_HANDLER(WRITELINE(tecmosys_state, sound_irq)) MCFG_YMF262_IRQ_HANDLER(WRITELINE(tecmosys_state, sound_irq))
MCFG_SOUND_ROUTE(0, "lspeaker", 1.00) MCFG_SOUND_ROUTE(0, "lspeaker", 1.00)

View File

@ -151,7 +151,7 @@ WRITE8_MEMBER(tehkanwc_state::track_1_reset_w)
WRITE8_MEMBER(tehkanwc_state::sound_command_w) WRITE8_MEMBER(tehkanwc_state::sound_command_w)
{ {
soundlatch_byte_w(space, offset, data); m_soundlatch->write(space, offset, data);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
@ -169,7 +169,7 @@ void tehkanwc_state::device_timer(emu_timer &timer, device_timer_id id, int para
WRITE8_MEMBER(tehkanwc_state::sound_answer_w) WRITE8_MEMBER(tehkanwc_state::sound_answer_w)
{ {
soundlatch2_byte_w(space, 0, data); m_soundlatch2->write(space, 0, data);
/* in Gridiron, the sound CPU goes in a tight loop after the self test, */ /* in Gridiron, the sound CPU goes in a tight loop after the self test, */
/* probably waiting to be reset by a watchdog */ /* probably waiting to be reset by a watchdog */
@ -244,7 +244,7 @@ static ADDRESS_MAP_START( main_mem, AS_PROGRAM, 8, tehkanwc_state )
AM_RANGE(0xf810, 0xf811) AM_READWRITE(track_1_r, track_1_reset_w) /* track 1 x/y */ AM_RANGE(0xf810, 0xf811) AM_READWRITE(track_1_r, track_1_reset_w) /* track 1 x/y */
AM_RANGE(0xf812, 0xf812) AM_WRITE(gridiron_led1_w) AM_RANGE(0xf812, 0xf812) AM_WRITE(gridiron_led1_w)
AM_RANGE(0xf813, 0xf813) AM_READ_PORT("P2BUT") AM_RANGE(0xf813, 0xf813) AM_READ_PORT("P2BUT")
AM_RANGE(0xf820, 0xf820) AM_READ(soundlatch2_byte_r) AM_WRITE(sound_command_w) /* answer from the sound CPU */ AM_RANGE(0xf820, 0xf820) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) AM_WRITE(sound_command_w) /* answer from the sound CPU */
AM_RANGE(0xf840, 0xf840) AM_READ_PORT("DSW1") AM_WRITE(sub_cpu_halt_w) AM_RANGE(0xf840, 0xf840) AM_READ_PORT("DSW1") AM_WRITE(sub_cpu_halt_w)
AM_RANGE(0xf850, 0xf850) AM_READ_PORT("DSW2") AM_WRITENOP /* ?? writes 0x00 or 0xff */ AM_RANGE(0xf850, 0xf850) AM_READ_PORT("DSW2") AM_WRITENOP /* ?? writes 0x00 or 0xff */
AM_RANGE(0xf860, 0xf860) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_WRITE(flipscreen_x_w) AM_RANGE(0xf860, 0xf860) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_WRITE(flipscreen_x_w)
@ -272,7 +272,7 @@ static ADDRESS_MAP_START( sound_mem, AS_PROGRAM, 8, tehkanwc_state )
AM_RANGE(0x8001, 0x8001) AM_WRITE(msm_reset_w)/* MSM51xx reset */ AM_RANGE(0x8001, 0x8001) AM_WRITE(msm_reset_w)/* MSM51xx reset */
AM_RANGE(0x8002, 0x8002) AM_WRITENOP /* ?? written in the IRQ handler */ AM_RANGE(0x8002, 0x8002) AM_WRITENOP /* ?? written in the IRQ handler */
AM_RANGE(0x8003, 0x8003) AM_WRITENOP /* ?? written in the NMI handler */ AM_RANGE(0x8003, 0x8003) AM_WRITENOP /* ?? written in the NMI handler */
AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r) AM_WRITE(sound_answer_w) AM_RANGE(0xc000, 0xc000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(sound_answer_w)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_port, AS_IO, 8, tehkanwc_state ) static ADDRESS_MAP_START( sound_port, AS_IO, 8, tehkanwc_state )
@ -662,6 +662,9 @@ static MACHINE_CONFIG_START( tehkanwc, tehkanwc_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
MCFG_SOUND_ADD("ay1", AY8910, 1536000) MCFG_SOUND_ADD("ay1", AY8910, 1536000)
MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(tehkanwc_state, portA_w)) MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(tehkanwc_state, portA_w))
MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(tehkanwc_state, portB_w)) MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(tehkanwc_state, portB_w))

View File

@ -47,7 +47,7 @@ WRITE8_MEMBER(thedeep_state::nmi_w)
WRITE8_MEMBER(thedeep_state::sound_w) WRITE8_MEMBER(thedeep_state::sound_w)
{ {
soundlatch_byte_w(space, 0, data); m_soundlatch->write(space, 0, data);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
@ -177,7 +177,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( audio_map, AS_PROGRAM, 8, thedeep_state ) static ADDRESS_MAP_START( audio_map, AS_PROGRAM, 8, thedeep_state )
AM_RANGE(0x0000, 0x07ff) AM_RAM AM_RANGE(0x0000, 0x07ff) AM_RAM
AM_RANGE(0x0800, 0x0801) AM_DEVWRITE("ymsnd", ym2203_device, write) // AM_RANGE(0x0800, 0x0801) AM_DEVWRITE("ymsnd", ym2203_device, write) //
AM_RANGE(0x3000, 0x3000) AM_READ(soundlatch_byte_r) // From Main CPU AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) // From Main CPU
AM_RANGE(0x8000, 0xffff) AM_ROM AM_RANGE(0x8000, 0xffff) AM_ROM
ADDRESS_MAP_END ADDRESS_MAP_END
@ -446,6 +446,8 @@ static MACHINE_CONFIG_START( thedeep, thedeep_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/4) /* verified on pcb */ MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/4) /* verified on pcb */
MCFG_YM2203_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_YM2203_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)

View File

@ -9,12 +9,13 @@ driver by Ernesto Corvi
Notes: Notes:
- Sprite colors are wrong (missing colortable?) - Sprite colors are wrong (missing colortable?)
- driver should probably be merged with suprridr.c and thepit.c - driver should probably be merged with suprridr.cpp and thepit.cpp
***************************************************************************/ ***************************************************************************/
#include "emu.h" #include "emu.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "machine/gen_latch.h"
#include "machine/watchdog.h" #include "machine/watchdog.h"
#include "sound/ay8910.h" #include "sound/ay8910.h"
#include "includes/timelimt.h" #include "includes/timelimt.h"
@ -56,7 +57,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, timelimt_state )
AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW") AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW")
AM_RANGE(0xb000, 0xb000) AM_WRITE(nmi_enable_w) /* nmi enable */ AM_RANGE(0xb000, 0xb000) AM_WRITE(nmi_enable_w) /* nmi enable */
AM_RANGE(0xb003, 0xb003) AM_WRITE(sound_reset_w)/* sound reset ? */ AM_RANGE(0xb003, 0xb003) AM_WRITE(sound_reset_w)/* sound reset ? */
AM_RANGE(0xb800, 0xb800) AM_WRITE(soundlatch_byte_w) /* sound write */ AM_RANGE(0xb800, 0xb800) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) /* sound write */
AM_RANGE(0xb800, 0xb800) AM_READNOP /* NMI ack? */ AM_RANGE(0xb800, 0xb800) AM_READNOP /* NMI ack? */
AM_RANGE(0xc800, 0xc800) AM_WRITE(scroll_x_lsb_w) AM_RANGE(0xc800, 0xc800) AM_WRITE(scroll_x_lsb_w)
AM_RANGE(0xc801, 0xc801) AM_WRITE(scroll_x_msb_w) AM_RANGE(0xc801, 0xc801) AM_WRITE(scroll_x_msb_w)
@ -77,7 +78,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_io_map, AS_IO, 8, timelimt_state ) static ADDRESS_MAP_START( sound_io_map, AS_IO, 8, timelimt_state )
ADDRESS_MAP_GLOBAL_MASK(0xff) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_WRITE(soundlatch_clear_byte_w) AM_RANGE(0x00, 0x00) AM_DEVWRITE("soundlatch", generic_latch_8_device, clear_w)
AM_RANGE(0x8c, 0x8d) AM_DEVREADWRITE("ay1", ay8910_device, data_r, address_data_w) AM_RANGE(0x8c, 0x8d) AM_DEVREADWRITE("ay1", ay8910_device, data_r, address_data_w)
AM_RANGE(0x8e, 0x8f) AM_DEVREADWRITE("ay2", ay8910_device, data_r, address_data_w) AM_RANGE(0x8e, 0x8f) AM_DEVREADWRITE("ay2", ay8910_device, data_r, address_data_w)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -249,11 +250,13 @@ static MACHINE_CONFIG_START( timelimt, timelimt_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, 18432000/12) MCFG_SOUND_ADD("ay1", AY8910, 18432000/12)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
MCFG_SOUND_ADD("ay2", AY8910, 18432000/12) MCFG_SOUND_ADD("ay2", AY8910, 18432000/12)
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_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
MACHINE_CONFIG_END MACHINE_CONFIG_END

View File

@ -801,7 +801,7 @@ ADDRESS_MAP_END
WRITE8_MEMBER(tnzs_state::tnzsb_sound_command_w) WRITE8_MEMBER(tnzs_state::tnzsb_sound_command_w)
{ {
soundlatch_byte_w(space, offset, data); m_soundlatch->write(space, offset, data);
m_audiocpu->set_input_line_and_vector(0, HOLD_LINE, 0xff); m_audiocpu->set_input_line_and_vector(0, HOLD_LINE, 0xff);
} }
@ -850,7 +850,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( tnzsb_io_map, AS_IO, 8, tnzs_state ) static ADDRESS_MAP_START( tnzsb_io_map, AS_IO, 8, tnzs_state )
ADDRESS_MAP_GLOBAL_MASK(0xff) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
AM_RANGE(0x02, 0x02) AM_READ(soundlatch_byte_r) AM_RANGE(0x02, 0x02) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( i8742_io_map, AS_IO, 8, tnzs_state ) static ADDRESS_MAP_START( i8742_io_map, AS_IO, 8, tnzs_state )
@ -1826,6 +1826,8 @@ static MACHINE_CONFIG_START( tnzsb, tnzs_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/4) /* verified on pcb */ MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/4) /* verified on pcb */
MCFG_YM2203_IRQ_HANDLER(WRITELINE(tnzs_state, irqhandler)) MCFG_YM2203_IRQ_HANDLER(WRITELINE(tnzs_state, irqhandler))
MCFG_SOUND_ROUTE(0, "mono", 1.0) MCFG_SOUND_ROUTE(0, "mono", 1.0)

View File

@ -850,7 +850,7 @@ WRITE16_MEMBER(toaplan2_state::bgaregga_soundlatch_w)
{ {
if (ACCESSING_BITS_0_7) if (ACCESSING_BITS_0_7)
{ {
soundlatch_byte_w(space, offset, data & 0xff); m_soundlatch->write(space, offset, data & 0xff);
m_audiocpu->set_input_line(0, HOLD_LINE); m_audiocpu->set_input_line(0, HOLD_LINE);
} }
} }
@ -906,7 +906,7 @@ WRITE16_MEMBER(toaplan2_state::batrider_soundlatch_w)
{ {
if (ACCESSING_BITS_0_7) if (ACCESSING_BITS_0_7)
{ {
soundlatch_byte_w(space, offset, data & 0xff); m_soundlatch->write(space, offset, data & 0xff);
m_audiocpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
} }
} }
@ -916,7 +916,7 @@ WRITE16_MEMBER(toaplan2_state::batrider_soundlatch2_w)
{ {
if (ACCESSING_BITS_0_7) if (ACCESSING_BITS_0_7)
{ {
soundlatch2_byte_w(space, offset, data & 0xff); m_soundlatch2->write(space, offset, data & 0xff);
m_audiocpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
} }
} }
@ -1343,8 +1343,8 @@ static ADDRESS_MAP_START( batrider_68k_mem, AS_PROGRAM, 16, toaplan2_state )
AM_RANGE(0x500002, 0x500003) AM_READ_PORT("SYS-DSW") AM_RANGE(0x500002, 0x500003) AM_READ_PORT("SYS-DSW")
AM_RANGE(0x500004, 0x500005) AM_READ_PORT("DSW") AM_RANGE(0x500004, 0x500005) AM_READ_PORT("DSW")
AM_RANGE(0x500006, 0x500007) AM_READ(video_count_r) AM_RANGE(0x500006, 0x500007) AM_READ(video_count_r)
AM_RANGE(0x500008, 0x500009) AM_READ(soundlatch3_word_r) AM_RANGE(0x500008, 0x500009) AM_DEVREAD8("soundlatch3", generic_latch_8_device, read, 0x00ff)
AM_RANGE(0x50000a, 0x50000b) AM_READ(soundlatch4_word_r) AM_RANGE(0x50000a, 0x50000b) AM_DEVREAD8("soundlatch4", generic_latch_8_device, read, 0x00ff)
AM_RANGE(0x50000c, 0x50000d) AM_READ(batrider_z80_busack_r) AM_RANGE(0x50000c, 0x50000d) AM_READ(batrider_z80_busack_r)
AM_RANGE(0x500010, 0x500011) AM_WRITE(toaplan2_coin_word_w) AM_RANGE(0x500010, 0x500011) AM_WRITE(toaplan2_coin_word_w)
AM_RANGE(0x500020, 0x500021) AM_WRITE(batrider_soundlatch_w) AM_RANGE(0x500020, 0x500021) AM_WRITE(batrider_soundlatch_w)
@ -1374,8 +1374,8 @@ static ADDRESS_MAP_START( bbakraid_68k_mem, AS_PROGRAM, 16, toaplan2_state )
AM_RANGE(0x500004, 0x500005) AM_READ_PORT("DSW") AM_RANGE(0x500004, 0x500005) AM_READ_PORT("DSW")
AM_RANGE(0x500006, 0x500007) AM_READ(video_count_r) AM_RANGE(0x500006, 0x500007) AM_READ(video_count_r)
AM_RANGE(0x500008, 0x500009) AM_WRITE(toaplan2_coin_word_w) AM_RANGE(0x500008, 0x500009) AM_WRITE(toaplan2_coin_word_w)
AM_RANGE(0x500010, 0x500011) AM_READ(soundlatch3_word_r) AM_RANGE(0x500010, 0x500011) AM_DEVREAD8("soundlatch3", generic_latch_8_device, read, 0x00ff)
AM_RANGE(0x500012, 0x500013) AM_READ(soundlatch4_word_r) AM_RANGE(0x500012, 0x500013) AM_DEVREAD8("soundlatch4", generic_latch_8_device, read, 0x00ff)
AM_RANGE(0x500014, 0x500015) AM_WRITE(batrider_soundlatch_w) AM_RANGE(0x500014, 0x500015) AM_WRITE(batrider_soundlatch_w)
AM_RANGE(0x500016, 0x500017) AM_WRITE(batrider_soundlatch2_w) AM_RANGE(0x500016, 0x500017) AM_WRITE(batrider_soundlatch2_w)
AM_RANGE(0x500018, 0x500019) AM_READ(bbakraid_eeprom_r) AM_RANGE(0x500018, 0x500019) AM_READ(bbakraid_eeprom_r)
@ -1414,7 +1414,7 @@ static ADDRESS_MAP_START( bgaregga_sound_z80_mem, AS_PROGRAM, 8, toaplan2_state
AM_RANGE(0xe006, 0xe008) AM_WRITE(raizing_oki_bankswitch_w) AM_RANGE(0xe006, 0xe008) AM_WRITE(raizing_oki_bankswitch_w)
AM_RANGE(0xe00a, 0xe00a) AM_WRITE(raizing_z80_bankswitch_w) AM_RANGE(0xe00a, 0xe00a) AM_WRITE(raizing_z80_bankswitch_w)
AM_RANGE(0xe00c, 0xe00c) AM_WRITE(bgaregga_E00C_w) AM_RANGE(0xe00c, 0xe00c) AM_WRITE(bgaregga_E00C_w)
AM_RANGE(0xe01c, 0xe01c) AM_READ(soundlatch_byte_r) AM_RANGE(0xe01c, 0xe01c) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0xe01d, 0xe01d) AM_READ(bgaregga_E01D_r) AM_RANGE(0xe01d, 0xe01d) AM_READ(bgaregga_E01D_r)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -1428,12 +1428,12 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( batrider_sound_z80_port, AS_IO, 8, toaplan2_state ) static ADDRESS_MAP_START( batrider_sound_z80_port, AS_IO, 8, toaplan2_state )
ADDRESS_MAP_GLOBAL_MASK(0xff) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x40, 0x40) AM_WRITE(soundlatch3_byte_w) AM_RANGE(0x40, 0x40) AM_DEVWRITE("soundlatch3", generic_latch_8_device, write)
AM_RANGE(0x42, 0x42) AM_WRITE(soundlatch4_byte_w) AM_RANGE(0x42, 0x42) AM_DEVWRITE("soundlatch4", generic_latch_8_device, write)
AM_RANGE(0x44, 0x44) AM_WRITE(batrider_sndirq_w) AM_RANGE(0x44, 0x44) AM_WRITE(batrider_sndirq_w)
AM_RANGE(0x46, 0x46) AM_WRITE(batrider_clear_nmi_w) AM_RANGE(0x46, 0x46) AM_WRITE(batrider_clear_nmi_w)
AM_RANGE(0x48, 0x48) AM_READ(soundlatch_byte_r) AM_RANGE(0x48, 0x48) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0x4a, 0x4a) AM_READ(soundlatch2_byte_r) AM_RANGE(0x4a, 0x4a) AM_DEVREAD("soundlatch2", generic_latch_8_device, read)
AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
AM_RANGE(0x82, 0x82) AM_DEVREADWRITE("oki1", okim6295_device, read, write) AM_RANGE(0x82, 0x82) AM_DEVREADWRITE("oki1", okim6295_device, read, write)
AM_RANGE(0x84, 0x84) AM_DEVREADWRITE("oki2", okim6295_device, read, write) AM_RANGE(0x84, 0x84) AM_DEVREADWRITE("oki2", okim6295_device, read, write)
@ -1450,12 +1450,12 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( bbakraid_sound_z80_port, AS_IO, 8, toaplan2_state ) static ADDRESS_MAP_START( bbakraid_sound_z80_port, AS_IO, 8, toaplan2_state )
ADDRESS_MAP_GLOBAL_MASK(0xff) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x40, 0x40) AM_WRITE(soundlatch3_byte_w) AM_RANGE(0x40, 0x40) AM_DEVWRITE("soundlatch3", generic_latch_8_device, write)
AM_RANGE(0x42, 0x42) AM_WRITE(soundlatch4_byte_w) AM_RANGE(0x42, 0x42) AM_DEVWRITE("soundlatch4", generic_latch_8_device, write)
AM_RANGE(0x44, 0x44) AM_WRITE(batrider_sndirq_w) AM_RANGE(0x44, 0x44) AM_WRITE(batrider_sndirq_w)
AM_RANGE(0x46, 0x46) AM_WRITE(batrider_clear_nmi_w) AM_RANGE(0x46, 0x46) AM_WRITE(batrider_clear_nmi_w)
AM_RANGE(0x48, 0x48) AM_READ(soundlatch_byte_r) AM_RANGE(0x48, 0x48) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0x4a, 0x4a) AM_READ(soundlatch2_byte_r) AM_RANGE(0x4a, 0x4a) AM_DEVREAD("soundlatch2", generic_latch_8_device, read)
AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("ymz", ymz280b_device, read, write) AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("ymz", ymz280b_device, read, write)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -3908,6 +3908,8 @@ static MACHINE_CONFIG_START( bgaregga, toaplan2_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", XTAL_32MHz/8) MCFG_YM2151_ADD("ymsnd", XTAL_32MHz/8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
@ -3964,6 +3966,11 @@ static MACHINE_CONFIG_START( batrider, toaplan2_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
MCFG_GENERIC_LATCH_8_ADD("soundlatch3")
MCFG_GENERIC_LATCH_8_ADD("soundlatch4")
MCFG_YM2151_ADD("ymsnd", XTAL_32MHz/8) MCFG_YM2151_ADD("ymsnd", XTAL_32MHz/8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
@ -4020,6 +4027,11 @@ static MACHINE_CONFIG_START( bbakraid, toaplan2_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
MCFG_GENERIC_LATCH_8_ADD("soundlatch3")
MCFG_GENERIC_LATCH_8_ADD("soundlatch4")
MCFG_SOUND_ADD("ymz", YMZ280B, XTAL_16_9344MHz) MCFG_SOUND_ADD("ymz", YMZ280B, XTAL_16_9344MHz)
// IRQ not used ??? Connected to a test pin (TP082) // IRQ not used ??? Connected to a test pin (TP082)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)

View File

@ -325,7 +325,7 @@ READ8_MEMBER(tsamurai_state::vsgongf_a100_r)
WRITE8_MEMBER(tsamurai_state::vsgongf_sound_command_w) WRITE8_MEMBER(tsamurai_state::vsgongf_sound_command_w)
{ {
soundlatch_byte_w(space, offset, data); m_soundlatch->write(space, offset, data);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
@ -359,7 +359,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_vsgongf_map, AS_PROGRAM, 8, tsamurai_state ) static ADDRESS_MAP_START( sound_vsgongf_map, AS_PROGRAM, 8, tsamurai_state )
AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x0000, 0x3fff) AM_ROM
AM_RANGE(0x6000, 0x63ff) AM_RAM /* work RAM */ AM_RANGE(0x6000, 0x63ff) AM_RAM /* work RAM */
AM_RANGE(0x8000, 0x8000) AM_READ(soundlatch_byte_r) AM_WRITE(vsgongf_sound_nmi_enable_w) /* NMI enable */ AM_RANGE(0x8000, 0x8000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(vsgongf_sound_nmi_enable_w) /* NMI enable */
AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("dac", dac_device, write_unsigned8) AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("dac", dac_device, write_unsigned8)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -775,6 +775,8 @@ static MACHINE_CONFIG_START( vsgongf, tsamurai_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("aysnd", AY8910, XTAL_24MHz/8) MCFG_SOUND_ADD("aysnd", AY8910, XTAL_24MHz/8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)

View File

@ -24,7 +24,7 @@
Remaining Issues: Remaining Issues:
-1) IRQ & NMI code is totally guessed, and needs to be solved properly -1) IRQ & NMI code is totally guessed, and needs to be solved properly
Measurements from Guru (someone needs to rewrite INTERRUPT_GEN() in video/vball.c): Measurements from Guru (someone needs to rewrite INTERRUPT_GEN() in video/vball.cpp):
6502 /IRQ = 1.720kHz 6502 /IRQ = 1.720kHz
6202 /NMI = 58 Hz 6202 /NMI = 58 Hz
VBlank = 58Hz VBlank = 58Hz
@ -171,7 +171,7 @@ WRITE8_MEMBER(vball_state::bankswitch_w)
/* The sound system comes all but verbatim from Double Dragon */ /* The sound system comes all but verbatim from Double Dragon */
WRITE8_MEMBER(vball_state::cpu_sound_command_w) WRITE8_MEMBER(vball_state::cpu_sound_command_w)
{ {
soundlatch_byte_w(space, offset, data); m_soundlatch->write(space, offset, data);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
@ -229,7 +229,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, vball_state )
AM_RANGE(0x8000, 0x87ff) AM_RAM AM_RANGE(0x8000, 0x87ff) AM_RAM
AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
AM_RANGE(0x9800, 0x9803) AM_DEVREADWRITE("oki", okim6295_device, read, write) AM_RANGE(0x9800, 0x9803) 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 ADDRESS_MAP_END
@ -423,6 +423,8 @@ static MACHINE_CONFIG_START( vball, vball_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", 3579545) MCFG_YM2151_ADD("ymsnd", 3579545)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.60) MCFG_SOUND_ROUTE(0, "lspeaker", 0.60)

View File

@ -72,7 +72,7 @@ WRITE8_MEMBER(wc90_state::bankswitch1_w)
WRITE8_MEMBER(wc90_state::sound_command_w) WRITE8_MEMBER(wc90_state::sound_command_w)
{ {
soundlatch_byte_w(space, offset, data); m_soundlatch->write(space, offset, data);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
@ -127,7 +127,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, wc90_state )
AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_RANGE(0xf000, 0xf7ff) AM_RAM
AM_RANGE(0xf800, 0xf803) AM_DEVREADWRITE("ymsnd", ym2608_device, read, write) AM_RANGE(0xf800, 0xf803) AM_DEVREADWRITE("ymsnd", ym2608_device, read, write)
AM_RANGE(0xfc00, 0xfc00) AM_READNOP /* ??? adpcm ??? */ AM_RANGE(0xfc00, 0xfc00) AM_READNOP /* ??? adpcm ??? */
AM_RANGE(0xfc10, 0xfc10) AM_READ(soundlatch_byte_r) AM_RANGE(0xfc10, 0xfc10) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -382,6 +382,8 @@ static MACHINE_CONFIG_START( wc90, wc90_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2608, XTAL_8MHz) /* verified on pcb */ MCFG_SOUND_ADD("ymsnd", YM2608, XTAL_8MHz) /* verified on pcb */
MCFG_YM2608_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_YM2608_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "mono", 0.50) MCFG_SOUND_ROUTE(0, "mono", 0.50)

View File

@ -51,11 +51,11 @@ fd08: scroll bg #2 X coordinate
fd0a: scroll bg #2 Y coordinate fd0a: scroll bg #2 Y coordinate
fd0e: ???? fd0e: ????
What i used instead, was the local copy kept in RAM. These values What I used instead, was the local copy kept in RAM. These values
are the ones the original machine uses. This will differ when trying are the ones the original machine uses. This will differ when trying
to use some of this code to write a driver for a similar tecmo bootleg. to use some of this code to write a driver for a similar Tecmo bootleg.
Sprites are also very different. Theres a code snippet in the ROM Sprites are also very different. There's a code snippet in the ROM
that converts the original sprites to the new format, which only allows that converts the original sprites to the new format, which only allows
16x16 sprites. That snippet also does some ( nasty ) clipping. 16x16 sprites. That snippet also does some ( nasty ) clipping.
@ -87,7 +87,6 @@ Noted added by ClawGrip 28-Mar-2008:
#include "emu.h" #include "emu.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "sound/2203intf.h" #include "sound/2203intf.h"
#include "sound/msm5205.h"
#include "includes/wc90b.h" #include "includes/wc90b.h"
#define TEST_DIPS false /* enable to test unmapped dip switches */ #define TEST_DIPS false /* enable to test unmapped dip switches */
@ -110,7 +109,7 @@ WRITE8_MEMBER(wc90b_state::bankswitch1_w)
WRITE8_MEMBER(wc90b_state::sound_command_w) WRITE8_MEMBER(wc90b_state::sound_command_w)
{ {
soundlatch_byte_w(space, offset, data); m_soundlatch->write(space, offset, data);
m_audiocpu->set_input_line(0, HOLD_LINE); m_audiocpu->set_input_line(0, HOLD_LINE);
} }
@ -166,7 +165,7 @@ static ADDRESS_MAP_START( sound_cpu, AS_PROGRAM, 8, wc90b_state )
AM_RANGE(0xe400, 0xe400) AM_WRITE(adpcm_data_w) AM_RANGE(0xe400, 0xe400) AM_WRITE(adpcm_data_w)
AM_RANGE(0xe800, 0xe801) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) AM_RANGE(0xe800, 0xe801) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
AM_RANGE(0xf000, 0xf7ff) AM_RAM 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 ADDRESS_MAP_END
@ -365,6 +364,8 @@ static MACHINE_CONFIG_START( wc90b, wc90b_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2203, YM2203_CLOCK) MCFG_SOUND_ADD("ymsnd", YM2203, YM2203_CLOCK)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20)

View File

@ -4,11 +4,11 @@
Welltris (c)1991 Video System Welltris (c)1991 Video System
******************************************************************************** ********************************************************************************
hardware is similar to aerofgt.c but with slightly different sprites, sound, hardware is similar to aerofgt.cpp but with slightly different sprites, sound,
and an additional 'pixel' layer used for the backdrops and an additional 'pixel' layer used for the backdrops
Driver by David Haywood, with help from Steph from The Ultimate Patchers Driver by David Haywood, with help from Steph from The Ultimate Patchers
Thanks to the authors of aerofgt.c and fromance.c on which most of this is Thanks to the authors of aerofgt.cpp and fromance.cpp on which most of this is
based based
******************************************************************************** ********************************************************************************
OW-13 CPU OW-13 CPU
@ -51,7 +51,7 @@ V-SYSTEM VS8803 6082 9040 EBBB
******************************************************************************** ********************************************************************************
its impossible to know what some of the video registers do due to lack of its impossible to know what some of the video registers do due to lack of
evidence (bg palette has a selector, but i'm not sure which ... test mode evidence (bg palette has a selector, but I'm not sure which ... test mode
colours use different palette on rgb test colours use different palette on rgb test
******************************************************************************** ********************************************************************************
@ -167,8 +167,8 @@ To select a player, press one of his 2 buttons ...
- When it's OFF, only player 1 can play, the number of credits is decremented when - When it's OFF, only player 1 can play, the number of credits is decremented when
you press the player buttons ... If you wait until timer reaches 0 without selecting you press the player buttons ... If you wait until timer reaches 0 without selecting
a player, 1 credit will be substracted, and you'll start a game with player 1 ... a player, 1 credit will be subtracted, and you'll start a game with player 1 ...
- When it's ON, 1 credit will be automatically substracted, then the 4 players can - When it's ON, 1 credit will be automatically subtracted, then the 4 players can
play by pressing one of their buttons ... If you wait until timer reaches 0 without play by pressing one of their buttons ... If you wait until timer reaches 0 without
selecting a player, you'll start a game with player 1 ... selecting a player, you'll start a game with player 1 ...
@ -333,7 +333,7 @@ WRITE16_MEMBER(welltris_state::sound_command_w)
if (ACCESSING_BITS_0_7) if (ACCESSING_BITS_0_7)
{ {
m_pending_command = 1; m_pending_command = 1;
soundlatch_byte_w(space, 0, data & 0xff); m_soundlatch->write(space, 0, data & 0xff);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
} }
@ -383,7 +383,7 @@ static ADDRESS_MAP_START( sound_port_map, AS_IO, 8, welltris_state )
ADDRESS_MAP_GLOBAL_MASK(0xff) ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_WRITE(sound_bankswitch_w) AM_RANGE(0x00, 0x00) AM_WRITE(sound_bankswitch_w)
AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
AM_RANGE(0x10, 0x10) AM_READ(soundlatch_byte_r) AM_RANGE(0x10, 0x10) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0x18, 0x18) AM_WRITE(pending_command_clear_w) AM_RANGE(0x18, 0x18) AM_WRITE(pending_command_clear_w)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -727,6 +727,8 @@ static MACHINE_CONFIG_START( welltris, welltris_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2610, 8000000) MCFG_SOUND_ADD("ymsnd", YM2610, 8000000)
MCFG_YM2610_IRQ_HANDLER(WRITELINE(welltris_state, irqhandler)) MCFG_YM2610_IRQ_HANDLER(WRITELINE(welltris_state, irqhandler))
MCFG_SOUND_ROUTE(0, "mono", 0.25) MCFG_SOUND_ROUTE(0, "mono", 0.25)

View File

@ -140,7 +140,7 @@ Notes:
- About the bootleg set: - About the bootleg set:
It matches the US (ealier) set 99.99% just in 64K chunks. The ONLY difference It matches the US (earlier) set 99.99% just in 64K chunks. The ONLY difference
in the data is WWFS47.BIN has 5 bytes with a single bit stuck (0x00001000): in the data is WWFS47.BIN has 5 bytes with a single bit stuck (0x00001000):
Offset WWFS47.BIN 24j6-0.112 (first 0x10000 bytes) Offset WWFS47.BIN 24j6-0.112 (first 0x10000 bytes)
@ -194,7 +194,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, wwfsstar_state )
AM_RANGE(0x8000, 0x87ff) AM_RAM AM_RANGE(0x8000, 0x87ff) AM_RAM
AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write) 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 ADDRESS_MAP_END
@ -219,7 +219,7 @@ WRITE16_MEMBER(wwfsstar_state::scroll_w)
WRITE16_MEMBER(wwfsstar_state::sound_w) WRITE16_MEMBER(wwfsstar_state::sound_w)
{ {
soundlatch_byte_w(space, 1, data & 0xff); m_soundlatch->write(space, 1, data & 0xff);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE ); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE );
} }
@ -437,6 +437,8 @@ static MACHINE_CONFIG_START( wwfsstar, wwfsstar_state )
/* sound hardware */ /* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.45) MCFG_SOUND_ROUTE(0, "lspeaker", 0.45)

Some files were not shown because too many files have changed in this diff Show More