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)
{
data &= 0xff;
soundlatch_byte_w(space, offset, data);
m_soundlatch->write(space, offset, data);
m_sound_status ^= 0x21;
if (m_sound_status & 0x20)
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 &= ~0x20;
return soundlatch_byte_r(space,offset);
return m_soundlatch->read(space,offset);
}
READ8_MEMBER(aztarac_state::snd_status_r)

View File

@ -201,7 +201,7 @@ M4300049A (relabeled J1100004A/K1100010A)
1x m5m5517
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
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)
{
soundlatch_byte_w(space, 0, data);
m_soundlatch->write(space, 0, 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(0xcc00, 0xcc00) AM_WRITE(sound_control_0_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(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 */
@ -1069,6 +1069,8 @@ static MACHINE_CONFIG_START( 40love, fortyl_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("aysnd", AY8910, 2000000)
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))
@ -1126,6 +1128,8 @@ static MACHINE_CONFIG_START( undoukai, fortyl_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("aysnd", AY8910, 2000000)
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))

View File

@ -65,7 +65,6 @@ Verification still needed for the other PCBs.
#include "cpu/z80/z80.h"
#include "sound/2610intf.h"
#include "sound/3812intf.h"
#include "sound/okim6295.h"
#include "includes/aerofgt.h"
WRITE16_MEMBER(aerofgt_state::sound_command_w)
@ -73,7 +72,7 @@ WRITE16_MEMBER(aerofgt_state::sound_command_w)
if (ACCESSING_BITS_0_7)
{
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);
}
}
@ -83,7 +82,7 @@ WRITE16_MEMBER(aerofgt_state::turbofrc_sound_command_w)
if (ACCESSING_BITS_8_15)
{
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);
}
}
@ -92,7 +91,7 @@ WRITE16_MEMBER(aerofgt_state::aerfboot_soundlatch_w)
{
if(ACCESSING_BITS_8_15)
{
soundlatch_byte_w(space, 0, (data >> 8) & 0xff);
m_soundlatch->write(space, 0, (data >> 8) & 0xff);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
}
}
@ -385,7 +384,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( turbofrc_sound_portmap, AS_IO, 8, aerofgt_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
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)
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(0x04, 0x04) AM_WRITE(aerofgt_sh_bankswitch_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
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(0x9000, 0x9000) AM_WRITE(aerfboot_okim6295_banking_w)
AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r)
AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
ADDRESS_MAP_END
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(0xf810, 0xf811) AM_DEVWRITE("ymsnd", ym3812_device, write)
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
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 */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2610, 8000000)
MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.25)
@ -1505,6 +1506,8 @@ static MACHINE_CONFIG_START( karatblz, aerofgt_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2610, XTAL_8MHz ) /* verified on pcb */
MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.25)
@ -1550,8 +1553,11 @@ static MACHINE_CONFIG_START( karatblzbl, aerofgt_state )
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
MCFG_VIDEO_START_OVERRIDE(aerofgt_state,karatblz)
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
/* sound hardware */
//MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") // breaks savestate
// NEC D7759c + YM????
@ -1601,6 +1607,8 @@ static MACHINE_CONFIG_START( spinlbrk, aerofgt_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2610, XTAL_8MHz) /* verified on pcb */
MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.25)
@ -1652,6 +1660,8 @@ static MACHINE_CONFIG_START( turbofrc, aerofgt_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2610, XTAL_8MHz) /* verified on pcb */
MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.25)
@ -1704,6 +1714,8 @@ static MACHINE_CONFIG_START( aerofgtb, aerofgt_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2610, 8000000)
MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.25)
@ -1751,6 +1763,8 @@ static MACHINE_CONFIG_START( aerofgt, aerofgt_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2610, XTAL_8MHz) /* verified on pcb */
MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.25)
@ -1791,6 +1805,8 @@ static MACHINE_CONFIG_START( aerfboot, aerofgt_state )
/* sound hardware */
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_DEVICE_ADDRESS_MAP(AS_0, oki_map)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
@ -1864,6 +1880,8 @@ static MACHINE_CONFIG_START( wbbc97, aerofgt_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM3812, 3579545)
MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", 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)
{
soundlatch_byte_w(space, 0, data);
m_soundlatch->write(space, 0, data);
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 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
// 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(0xc000, 0xdfff) AM_RAM
AM_RANGE(0xffff, 0xffff) AM_READNOP // ??? IY = FFFF at the start ?
@ -277,6 +277,8 @@ static MACHINE_CONFIG_START( amspdwy, amspdwy_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", 3000000)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)

View File

@ -69,7 +69,7 @@ Dips:
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
*************************************************************************/
@ -78,7 +78,6 @@ Coin B is not used
#include "cpu/z80/z80.h"
#include "cpu/m68000/m68000.h"
#include "sound/2203intf.h"
#include "sound/msm5205.h"
#include "includes/ashnojoe.h"
READ16_MEMBER(ashnojoe_state::fake_4a00a_r)
@ -93,7 +92,7 @@ WRITE16_MEMBER(ashnojoe_state::ashnojoe_soundlatch_w)
if (ACCESSING_BITS_0_7)
{
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)
{
m_soundlatch_status = 0;
return soundlatch_byte_r(space, 0);
return m_soundlatch->read(space, 0);
}
READ8_MEMBER(ashnojoe_state::sound_latch_status_r)
@ -349,6 +348,8 @@ static MACHINE_CONFIG_START( ashnojoe, ashnojoe_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2203, 4000000)
MCFG_YM2203_IRQ_HANDLER(WRITELINE(ashnojoe_state, ym2203_irq_handler))
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 */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, 2000000)
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))
code |= 0x80 >> i;
soundlatch_byte_w(space, offset, code);
m_soundlatch->write(space, offset, code);
if (m_sound_nmi_enable)
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(0x4402, 0x4403) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
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(0xe000, 0xefff) AM_ROM /* Space for diagnostic ROM */
ADDRESS_MAP_END
@ -483,6 +483,8 @@ static MACHINE_CONFIG_START( bking, bking_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, XTAL_6MHz/4)
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)
{
soundlatch_byte_w(space, offset, data & 0xff);
m_soundlatch->write(space, offset, data & 0xff);
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(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_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
@ -318,6 +318,8 @@ static MACHINE_CONFIG_START( blockout, blockout_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", AUDIO_CLOCK)
MCFG_YM2151_IRQ_HANDLER(WRITELINE(blockout_state,irq_handler))
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(0x9000, 0x9001) AM_DEVREADWRITE("ym1", ym2203_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(0xb002, 0xb002) AM_WRITE(bublbobl_sh_nmi_disable_w)
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 )
AM_RANGE(0x0000, 0x7fff) AM_ROM
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(0xa000, 0xa000) AM_WRITE(bublbobl_sh_nmi_disable_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 */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2203, MAIN_XTAL/8)
MCFG_YM2203_IRQ_HANDLER(WRITELINE(bublbobl_state, irqhandler))
MCFG_SOUND_ROUTE(0, "mono", 0.08)
@ -886,6 +888,8 @@ static MACHINE_CONFIG_START( bublbobl, bublbobl_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ym1", YM2203, MAIN_XTAL/8)
MCFG_YM2203_IRQ_HANDLER(WRITELINE(bublbobl_state, irqhandler))
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)
{
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);
}
@ -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(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(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_WRITE(nmi_enable_w)
AM_RANGE(0x5002, 0x5002) AM_WRITE(nmi_disable_w)
@ -394,6 +394,8 @@ static MACHINE_CONFIG_START( buggychl, buggychl_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, 8000000/4)
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))

View File

@ -76,14 +76,12 @@ Versions known to exist but not dumped:
#include "emu.h"
#include "cpu/m68000/m68000.h"
#include "machine/eepromser.h"
#include "machine/nvram.h"
#include "machine/watchdog.h"
#include "cpu/z80/z80.h"
#include "includes/cave.h"
#include "sound/2203intf.h"
#include "sound/2151intf.h"
#include "sound/okim6295.h"
#include "sound/ymz280b.h"
#include "ppsatan.lh"
@ -235,7 +233,7 @@ WRITE16_MEMBER(cave_state::sound_cmd_w)
{
// m_sound_flag1 = 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);
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)
{
// 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 */
READ8_MEMBER(cave_state::soundlatch_hi_r)
{
// 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) */
@ -2249,6 +2247,8 @@ static MACHINE_CONFIG_START( hotdogst, cave_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_16_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_32MHz/8)
MCFG_YM2203_IRQ_HANDLER(WRITELINE(cave_state, irqhandler))
MCFG_SOUND_ROUTE(0, "mono", 0.20)
@ -2350,6 +2350,8 @@ static MACHINE_CONFIG_START( mazinger, cave_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_16_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_4MHz)
MCFG_YM2203_IRQ_HANDLER(WRITELINE(cave_state, irqhandler))
MCFG_SOUND_ROUTE(0, "mono", 0.20)
@ -2404,6 +2406,8 @@ static MACHINE_CONFIG_START( metmqstr, cave_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_16_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", XTAL_16MHz / 4)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.6)
@ -2576,6 +2580,8 @@ static MACHINE_CONFIG_START( pwrinst2, cave_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_16_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_16MHz / 4)
MCFG_YM2203_IRQ_HANDLER(WRITELINE(cave_state, irqhandler))
MCFG_SOUND_ROUTE(0, "mono", 0.40)
@ -2634,6 +2640,9 @@ static MACHINE_CONFIG_START( sailormn, cave_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_16_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", XTAL_16MHz/4)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
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
ADPCM chip (msm5205) are used to 'fake' a M6295.
- 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.
@ -79,7 +79,6 @@ Dip locations and factory settings verified with China Gate US manual.
#include "sound/2151intf.h"
#include "sound/2203intf.h"
#include "sound/okim6295.h"
#include "sound/msm5205.h"
#include "includes/ddragon.h"
#define MAIN_CLOCK XTAL_12MHz
@ -166,7 +165,7 @@ WRITE8_MEMBER(chinagat_state::chinagat_interrupt_w )
switch (offset)
{
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 );
break;
@ -356,7 +355,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, chinagat_state )
AM_RANGE(0x8000, 0x87ff) AM_RAM
AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_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
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(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
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(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
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
static ADDRESS_MAP_START( i8748_map, AS_PROGRAM, 8, chinagat_state )
@ -583,6 +582,8 @@ static MACHINE_CONFIG_START( chinagat, chinagat_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", 3579545)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", 0))
MCFG_SOUND_ROUTE(0, "mono", 0.80)
@ -629,6 +630,8 @@ static MACHINE_CONFIG_START( saiyugoub1, chinagat_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", 3579545)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("soundcpu", 0))
MCFG_SOUND_ROUTE(0, "mono", 0.80)
@ -673,6 +676,8 @@ static MACHINE_CONFIG_START( saiyugoub2, chinagat_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ym1", YM2203, 3579545)
MCFG_YM2203_IRQ_HANDLER(WRITELINE(chinagat_state, chinagat_irq_handler))
MCFG_SOUND_ROUTE(0, "mono", 0.50)

View File

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

View File

@ -15,7 +15,7 @@ Stephh's notes (based on the games M68000 code and some tests) :
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
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"
@ -148,7 +148,7 @@ WRITE16_MEMBER(crshrace_state::sound_command_w)
if (ACCESSING_BITS_0_7)
{
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);
}
}
@ -196,7 +196,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_io_map, AS_IO, 8, crshrace_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
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)
ADDRESS_MAP_END
@ -466,6 +466,8 @@ static MACHINE_CONFIG_START( crshrace, crshrace_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2610, 8000000)
MCFG_YM2610_IRQ_HANDLER(WRITELINE(crshrace_state, irqhandler))
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
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:
- improve sprite zooming
@ -172,6 +172,7 @@ lev 7 : 0x7c : 0000 07e0 - input device clear?
#include "emu.h"
#include "cpu/z80/z80.h"
#include "cpu/m68000/m68000.h"
#include "machine/gen_latch.h"
#include "sound/8950intf.h"
#include "rendlay.h"
@ -185,6 +186,7 @@ public:
m_audiocpu(*this, "audiocpu"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch"),
m_spr_ram(*this, "spr_ram"),
m_tilemap0_vram(*this, "tilemap0_vram"),
m_tilemap1_vram(*this, "tilemap1_vram"),
@ -198,6 +200,7 @@ public:
required_device<cpu_device> m_audiocpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
required_device<generic_latch_8_device> m_soundlatch;
required_shared_ptr<UINT16> m_spr_ram;
required_shared_ptr<UINT16> m_tilemap0_vram;
@ -536,7 +539,7 @@ WRITE8_MEMBER( cybertnk_state::cybertnk_sound_cmd_w )
}
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);
}
}
@ -637,7 +640,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_mem, AS_PROGRAM, 8, cybertnk_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
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(0xa000, 0xa001) AM_DEVREADWRITE("ym1", 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 */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ym1", Y8950, XTAL_3_579545MHz)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)

View File

@ -73,6 +73,7 @@ Dumped by Chack'n
#include "emu.h"
#include "cpu/z80/z80.h"
#include "machine/gen_latch.h"
#include "sound/2203intf.h"
#include "machine/tait8741.h"
@ -86,6 +87,7 @@ public:
m_audiocpu(*this, "audiocpu"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch"),
m_vram(*this, "vram"),
m_cram(*this, "cram"),
m_obj1_ram(*this, "obj1_ram"),
@ -97,6 +99,7 @@ public:
required_device<cpu_device> m_audiocpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
required_device<generic_latch_8_device> m_soundlatch;
required_shared_ptr<UINT8> m_vram;
required_shared_ptr<UINT8> m_cram;
@ -382,7 +385,7 @@ WRITE8_MEMBER(cyclemb_state::cyclemb_bankswitch_w)
#if 0
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);
}
#endif
@ -396,7 +399,7 @@ READ8_MEMBER(cyclemb_state::mcu_status_r)
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);
}
#endif
@ -589,7 +592,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( cyclemb_sound_io, AS_IO, 8, cyclemb_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
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
@ -938,6 +941,10 @@ static MACHINE_CONFIG_START( cyclemb, cyclemb_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_18MHz/12)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MACHINE_CONFIG_END

View File

@ -36,7 +36,6 @@
#include "machine/eepromser.h"
#include "machine/ticket.h"
#include "machine/watchdog.h"
#include "sound/bsmt2000.h"
#include "includes/dcheese.h"
@ -92,8 +91,6 @@ INTERRUPT_GEN_MEMBER(dcheese_state::dcheese_vblank)
void dcheese_state::machine_start()
{
m_bsmt = machine().device("bsmt");
save_item(NAME(m_irq_state));
save_item(NAME(m_soundlatch_full));
save_item(NAME(m_sound_control));
@ -133,7 +130,7 @@ WRITE16_MEMBER(dcheese_state::sound_command_w)
/* write the latch and set the IRQ */
m_soundlatch_full = 1;
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 */
m_soundlatch_full = 0;
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)
{
/* seems to be ready signal on BSMT or latching hardware */
bsmt2000_device *bsmt = machine().device<bsmt2000_device>("bsmt");
return bsmt->read_status() << 7;
return m_bsmt->read_status() << 7;
}
@ -178,16 +174,14 @@ WRITE8_MEMBER(dcheese_state::sound_control_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 */
if (offset % 2 == 0)
{
bsmt->write_reg(offset / 2);
m_bsmt->write_reg(offset / 2);
m_sound_msb_latch = data;
}
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 */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_BSMT2000_ADD("bsmt", SOUND_OSC)
MCFG_SOUND_ROUTE(0, "lspeaker", 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 "sound/2151intf.h"
#include "sound/okim6295.h"
#include "sound/msm5205.h"
#include "includes/ddragon.h"
@ -281,7 +280,7 @@ void ddragon_state::ddragon_interrupt_ack(address_space &space, offs_t offset, U
break;
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);
break;
@ -327,7 +326,7 @@ WRITE_LINE_MEMBER(ddragon_state::irq_handler)
READ8_MEMBER(ddragon_state::soundlatch_ack_r)
{
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 */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("fmsnd", SOUND_CLOCK)
MCFG_YM2151_IRQ_HANDLER(WRITELINE(ddragon_state, irq_handler))
MCFG_SOUND_ROUTE(0, "mono", 0.60)
@ -1044,6 +1045,8 @@ static MACHINE_CONFIG_START( ddragon6809, ddragon_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("fmsnd", SOUND_CLOCK)
MCFG_YM2151_IRQ_HANDLER(WRITELINE(ddragon_state,irq_handler))
MCFG_SOUND_ROUTE(0, "mono", 0.60)
@ -1094,6 +1097,8 @@ static MACHINE_CONFIG_START( ddragon2, ddragon_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("fmsnd", SOUND_CLOCK)
MCFG_YM2151_IRQ_HANDLER(WRITELINE(ddragon_state,irq_handler))
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/m68000/m68000.h"
#include "sound/2151intf.h"
#include "sound/okim6295.h"
#include "includes/ddragon3.h"
@ -203,7 +202,7 @@ WRITE8_MEMBER(ddragon3_state::oki_bankswitch_w)
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 );
}
@ -218,8 +217,8 @@ WRITE16_MEMBER(ddragon3_state::ddragon3_io_w)
m_vreg = m_io_reg[0];
break;
case 1: /* soundlatch_byte_w */
soundlatch_byte_w(space, 1, m_io_reg[1] & 0xff);
case 1: /* soundlatch write */
m_soundlatch->write(space, 1, m_io_reg[1] & 0xff);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE );
break;
@ -379,7 +378,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, ddragon3_state )
AM_RANGE(0xc000, 0xc7ff) AM_RAM
AM_RANGE(0xc800, 0xc801) AM_DEVREADWRITE("ym2151", ym2151_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)
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(0x8800, 0x8801) AM_DEVREADWRITE("ym2151", ym2151_device, status_r, 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
/*************************************
@ -852,6 +851,8 @@ static MACHINE_CONFIG_START( ddragon3, ddragon3_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ym2151", XTAL_3_579545MHz)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
@ -920,6 +921,8 @@ static MACHINE_CONFIG_START( wwfwfest, wwfwfest_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ym2151", XTAL_3_579545MHz)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "mono", 0.45)

View File

@ -3,10 +3,10 @@
/*
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:
- 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;
PCB Layout
@ -43,6 +43,7 @@ Notes:
#include "emu.h"
#include "cpu/z80/z80.h"
#include "machine/gen_latch.h"
#include "sound/msm5205.h"
#include "sound/3812intf.h"
@ -53,11 +54,12 @@ class discoboy_state : public driver_device
public:
discoboy_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_audiocpu(*this, "audiocpu") ,
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_msm(*this, "msm"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette") { }
m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch") { }
/* video-related */
UINT8 m_ram_bank;
@ -67,7 +69,12 @@ public:
UINT8 m_toggle;
/* devices */
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
required_device<msm5205_device> m_msm;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
required_device<generic_latch_8_device> m_soundlatch;
/* memory */
UINT8 m_ram_1[0x800];
@ -96,10 +103,6 @@ public:
UINT32 screen_update_discoboy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
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);
// 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);
}
@ -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(0xec00, 0xec01) AM_DEVWRITE("ymsnd", ym3812_device, write)
AM_RANGE(0xf000, 0xf7ff) AM_RAM
AM_RANGE(0xf800, 0xf800) AM_READ(soundlatch_byte_r)
AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
ADDRESS_MAP_END
@ -514,6 +517,8 @@ static MACHINE_CONFIG_START( discoboy, discoboy_state )
/* sound hardware */
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_ROUTE(ALL_OUTPUTS, "lspeaker", 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/i8085/i8085.h"
#include "sound/ay8910.h"
#include "machine/gen_latch.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(0x52, 0x52) AM_READ_PORT("DSW")
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
ADDRESS_MAP_END
@ -127,8 +128,8 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( dynadice_sound_io_map, AS_IO, 8, dynadice_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READ(soundlatch_byte_r)
AM_RANGE(0x01, 0x01) AM_WRITE(soundlatch_clear_byte_w)
AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0x01, 0x01) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
AM_RANGE(0x02, 0x02) AM_WRITE(sound_data_w)
AM_RANGE(0x03, 0x03) AM_WRITE(sound_control_w)
ADDRESS_MAP_END
@ -263,6 +264,8 @@ static MACHINE_CONFIG_START( dynadice, dynadice_state )
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("aysnd", AY8910, 2000000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END

View File

@ -35,7 +35,7 @@ Other ESD games:
3 Cushion Billiards (c) 2000 - Undumped
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
- Nude / Bikini pics don't show in-game, even when set in test mode?
@ -69,7 +69,6 @@ ToDo:
#include "emu.h"
#include "cpu/z80/z80.h"
#include "cpu/m68000/m68000.h"
#include "machine/eepromser.h"
#include "sound/okim6295.h"
#include "sound/3812intf.h"
#include "includes/esd16.h"
@ -87,7 +86,7 @@ WRITE16_MEMBER(esd16_state::esd16_sound_command_w)
{
if (ACCESSING_BITS_0_7)
{
soundlatch_byte_w(space, 0, data & 0xff);
m_soundlatch->write(space, 0, data & 0xff);
m_audiocpu->set_input_line(0, ASSERT_LINE); // Generate an IRQ
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 */
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 )
@ -641,6 +640,8 @@ static MACHINE_CONFIG_START( esd16, esd16_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_16MHz/4) /* 4MHz */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
@ -736,7 +737,7 @@ ESD 11-09-98
(C) ESD 1998, 1999
PCB No. ESD 11-09-98
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
RAM: 4 x 62256, 9 x 6116
DIPS: 2 x 8 position

View File

@ -44,7 +44,7 @@ WRITE16_MEMBER(f1gp_state::sound_command_w)
if (ACCESSING_BITS_0_7)
{
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);
}
}
@ -125,7 +125,7 @@ static ADDRESS_MAP_START( sound_io_map, AS_IO, 8, f1gp_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_WRITE(f1gp_sh_bankswitch_w) // f1gp
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)
ADDRESS_MAP_END
@ -448,6 +448,8 @@ static MACHINE_CONFIG_START( f1gp, f1gp_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2610, XTAL_8MHz)
MCFG_YM2610_IRQ_HANDLER(WRITELINE(f1gp_state, irqhandler))
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)
{
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);
}
@ -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(0xcc00, 0xcc00) AM_WRITE(sound_control_0_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(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 */
@ -1078,6 +1078,8 @@ static MACHINE_CONFIG_START( flstory, flstory_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
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_B_WRITE_CB(WRITE8(flstory_state, sound_control_3_w))
@ -1138,6 +1140,8 @@ static MACHINE_CONFIG_START( onna34ro, flstory_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("aysnd", AY8910, 8000000/4)
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))
@ -1198,6 +1202,8 @@ static MACHINE_CONFIG_START( victnine, flstory_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("aysnd", AY8910, 8000000/4)
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))
@ -1264,6 +1270,8 @@ static MACHINE_CONFIG_START( rumba, flstory_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
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_B_WRITE_CB(WRITE8(flstory_state, sound_control_3_w))

View File

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

View File

@ -142,9 +142,9 @@ Notes:
WRITE16_MEMBER(gaiden_state::gaiden_sound_command_w)
{
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)
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);
}
@ -152,7 +152,7 @@ WRITE16_MEMBER(gaiden_state::drgnbowl_sound_command_w)
{
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);
}
}
@ -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(0xf820, 0xf821) AM_DEVWRITE("ym2", ym2203_device, write)
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
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)
AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_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
static INPUT_PORTS_START( common )
@ -788,6 +788,8 @@ static MACHINE_CONFIG_START( shadoww, gaiden_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ym1", YM2203, 4000000)
MCFG_YM2203_IRQ_HANDLER(WRITELINE(gaiden_state, irqhandler))
MCFG_SOUND_ROUTE(0, "mono", 0.15)
@ -848,6 +850,8 @@ static MACHINE_CONFIG_START( drgnbowl, gaiden_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", 4000000)
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(0xc800, 0xc801) AM_DEVWRITE("ym2", ym2203_device, write)
// 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
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_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)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ym1", YM2203, 4000000) /* ?? MHz */
MCFG_YM2203_IRQ_HANDLER(WRITELINE(gaiden_state, irqhandler))
MCFG_SOUND_ROUTE(0, "mono", 0.15)

View File

@ -5905,9 +5905,13 @@ static MACHINE_CONFIG_DERIVED( explorer, galaxian_base )
MACHINE_CONFIG_END
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 */
MCFG_SOUND_MODIFY("audiocpu")
MCFG_DEVICE_CLOCK(XTAL_12MHz / 8)
MCFG_CPU_PROGRAM_MAP(takeoff_sound_map)
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.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_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
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)
{
soundlatch_byte_w(space,0,data);
m_soundlatch->write(space,0,data);
m_audiocpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
}
READ8_MEMBER(gladiatr_state::gladiator_cpu_sound_command_r)
{
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)
@ -651,6 +651,8 @@ static MACHINE_CONFIG_START( ppking, gladiatr_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
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_B_READ_CB(READ8(gladiatr_state, ppking_f1_r))
@ -706,6 +708,8 @@ static MACHINE_CONFIG_START( gladiatr, gladiatr_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/8) /* verified on pcb */
MCFG_YM2203_IRQ_HANDLER(WRITELINE(gladiatr_state, gladiator_ym_irq))
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.
- Unknown sound writes at C00F; also, there's an NMI handler that would
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*.
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 "cpu/z80/z80.h"
#include "cpu/m68000/m68000.h"
#include "machine/gen_latch.h"
#include "sound/2151intf.h"
#include "sound/okim6295.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 )
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(0x100004, 0x100005) AM_WRITE(gotcha_oki_bank_w)
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(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(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
ADDRESS_MAP_END
@ -291,6 +292,8 @@ static MACHINE_CONFIG_START( gotcha, gotcha_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", 14318180/4)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "mono", 0.80)

View File

@ -200,7 +200,7 @@ WRITE8_MEMBER(grchamp_state::cpu0_outputs_w)
case 0x0e: /* OUT14 */
/* 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);
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(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(0x5000, 0x5000) AM_READ(soundlatch_byte_r)
AM_RANGE(0x5000, 0x5000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
ADDRESS_MAP_END
@ -680,6 +680,8 @@ static MACHINE_CONFIG_START( grchamp, grchamp_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, SOUND_CLOCK/4) /* 3B */
MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(grchamp_state, portA_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)
{
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);
}
}
@ -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(0x04, 0x04) AM_WRITE(sh_bankswitch_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
@ -549,6 +549,8 @@ static MACHINE_CONFIG_START( gstriker, gstriker_state )
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2610, 8000000)
MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.25)

View File

@ -146,7 +146,6 @@ reg: 0->1 (main->2nd) / : (1->0) 2nd->main :
#include "emu.h"
#include "cpu/z80/z80.h"
#include "machine/tait8741.h"
#include "sound/msm5205.h"
#include "includes/gsword.h"
@ -308,7 +307,7 @@ WRITE8_MEMBER(gsword_state::gsword_adpcm_data_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);
}
@ -364,7 +363,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( cpu3_map, AS_PROGRAM, 8, gsword_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
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
@ -669,6 +668,8 @@ static MACHINE_CONFIG_START( gsword, gsword_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, XTAL_18MHz/12) /* verified on pcb */
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 "cpu/z80/z80.h"
#include "includes/taitoipt.h"
#include "machine/gen_latch.h"
#include "cpu/m6809/m6809.h"
#include "sound/ay8910.h"
@ -217,7 +218,8 @@ public:
m_io_ram(*this, "io_ram"),
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_palette(*this, "palette") { }
m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch") { }
UINT16 *m_render_layer[MAX_LAYERS];
UINT8 m_sound_fifo[MAX_SOUNDS];
@ -285,6 +287,7 @@ public:
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
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
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
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
patterns but I don't know if there are supposed to be lookup tables
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)
{
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);
}
@ -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(0x4804, 0x4805) AM_DEVWRITE("ay4", ay8910_device, address_data_w)
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
ADDRESS_MAP_END
@ -1993,6 +1996,8 @@ static MACHINE_CONFIG_START( halleys, halleys_state )
// sound hardware
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, XTAL_6MHz/4) /* verified on pcb */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)

View File

@ -87,6 +87,7 @@
#include "rendlay.h"
#include "cpu/hmcs40/hmcs40.h"
#include "cpu/cop400/cop400.h"
#include "machine/gen_latch.h"
#include "sound/speaker.h"
// internal artwork
@ -102,6 +103,8 @@ public:
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_soundlatch(*this, "soundlatch"),
m_soundlatch2(*this, "soundlatch2"),
m_inp_matrix(*this, "IN"),
m_speaker(*this, "speaker"),
m_display_wait(33),
@ -112,6 +115,8 @@ public:
// devices
required_device<cpu_device> m_maincpu;
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_device<speaker_sound_device> m_speaker;
@ -1798,7 +1803,7 @@ READ8_MEMBER(pairmtch_state::input_r)
WRITE8_MEMBER(pairmtch_state::sound_w)
{
// 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)
{
// 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)
@ -1859,14 +1864,14 @@ static MACHINE_CONFIG_START( pairmtch, pairmtch_state )
MCFG_HMCS40_WRITE_R_CB(3, WRITE8(pairmtch_state, plate_w))
MCFG_HMCS40_READ_R_CB(4, READ8(pairmtch_state, input_r))
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_D_CB(WRITE16(pairmtch_state, grid_w))
MCFG_HMCS40_READ_D_CB(IOPORT("IN.2"))
MCFG_CPU_ADD("audiocpu", HD38820, 400000) // approximation
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_QUANTUM_PERFECT_CPU("maincpu")
@ -1876,6 +1881,10 @@ static MACHINE_CONFIG_START( pairmtch, pairmtch_state )
/* sound hardware */
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_ROUTE(ALL_OUTPUTS, "mono", 0.25)
MACHINE_CONFIG_END

View File

@ -113,7 +113,7 @@ WRITE8_MEMBER(himesiki_state::himesiki_rombank_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);
}
@ -149,7 +149,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( himesiki_iom1, AS_IO, 8, himesiki_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
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
/****************************************************************************/
@ -456,6 +456,9 @@ static MACHINE_CONFIG_START( himesiki, himesiki_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ym2203", YM2203, CLK2/4) // ??
MCFG_YM2203_IRQ_HANDLER(INPUTLINE("sub", 0))
MCFG_SOUND_ROUTE(0, "mono", 0.10)

View File

@ -222,8 +222,7 @@ Custom: GX61A01
#include "cpu/m6809/m6809.h"
#include "cpu/upd7810/upd7810.h"
#include "includes/homedata.h"
#include "sound/dac.h"
#include "sound/2203intf.h"
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)
{
if (m_sndbank & 4)
return(soundlatch_byte_r(space, 0));
return(m_soundlatch->read(space, 0));
else
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)
{
soundlatch_byte_w(space, offset, data);
m_soundlatch->write(space, offset, data);
m_audiocpu->set_input_line(0, HOLD_LINE);
}
@ -1159,8 +1158,6 @@ GFXDECODE_END
MACHINE_START_MEMBER(homedata_state,homedata)
{
m_sn = machine().device<sn76489a_device>("snsnd");
save_item(NAME(m_visible_page));
save_item(NAME(m_flipscreen));
save_item(NAME(m_blitter_bank));
@ -1286,6 +1283,8 @@ static MACHINE_CONFIG_START( mrokumei, homedata_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("snsnd", SN76489A, 16000000/4) // SN76489AN actually
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)

View File

@ -96,7 +96,7 @@ WRITE16_MEMBER(inufuku_state::inufuku_soundcommand_w)
return;
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);
}
}
@ -177,7 +177,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( inufuku_sound_io_map, AS_IO, 8, inufuku_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
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)
ADDRESS_MAP_END
@ -403,6 +403,8 @@ static MACHINE_CONFIG_START( inufuku, inufuku_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2610, 32000000/4)
MCFG_YM2610_IRQ_HANDLER(WRITELINE(inufuku_state, irqhandler))
MCFG_SOUND_ROUTE(0, "mono", 0.50)

View File

@ -34,7 +34,7 @@
1x Z80 (audio) @ 3.578 MHz.
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.
@ -197,6 +197,7 @@
#include "cpu/z80/z80.h"
#include "sound/ay8910.h"
#include "video/v9938.h"
#include "machine/gen_latch.h"
#include "machine/nvram.h"
#include "kas89.lh"
@ -209,6 +210,7 @@ public:
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_v9938(*this, "v9938"),
m_soundlatch(*this, "soundlatch"),
m_pl1(*this, "PL1"),
m_pl2(*this, "PL2"),
m_pl3(*this, "PL3"),
@ -230,6 +232,7 @@ public:
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
required_device<v9938_device> m_v9938;
required_device<generic_latch_8_device> m_soundlatch;
required_ioport m_pl1;
required_ioport m_pl2;
required_ioport m_pl3;
@ -384,7 +387,7 @@ WRITE8_MEMBER(kas89_state::sound_comm_w)
else
{
soundlatch_byte_w(space, 0, data);
m_soundlatch->write(space, 0, data);
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 )
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(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, 0x05) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
ADDRESS_MAP_END
@ -780,6 +783,9 @@ static MACHINE_CONFIG_START( kas89, kas89_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("aysnd", AY8910, MASTER_CLOCK/12) /* Confirmed */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
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(0x800000, 0x800001) AM_READ_PORT("P1_P2")
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(0x900000, 0x900005) AM_WRITE(kickgoal_eeprom_w)
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_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 */
MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
@ -656,6 +656,9 @@ static MACHINE_CONFIG_START( kickgoal, kickgoal_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
//MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_OKIM6295_ADD("oki", 12000000/8, OKIM6295_PIN7_LOW)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
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_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 */
MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
@ -691,6 +694,9 @@ static MACHINE_CONFIG_START( actionhw, kickgoal_state )
/* sound hardware */
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_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
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_sound_cmd = data;
/* 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 "video/tms9928a.h"
#include "sound/ay8910.h"
#include "machine/gen_latch.h"
#include "machine/i8255.h"
#include "machine/nvram.h"
@ -45,11 +46,13 @@ public:
kingpin_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu")
m_audiocpu(*this, "audiocpu"),
m_soundlatch(*this, "soundlatch")
{ }
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
required_device<generic_latch_8_device> m_soundlatch;
DECLARE_WRITE8_MEMBER(sound_nmi_w);
DECLARE_WRITE_LINE_MEMBER(vdp_interrupt);
@ -58,7 +61,7 @@ public:
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);
}
@ -86,7 +89,7 @@ static ADDRESS_MAP_START( kingpin_sound_map, AS_PROGRAM, 8, kingpin_state )
//AM_RANGE(0x8400, 0x8400) AM_READNOP // ?
//AM_RANGE(0x8401, 0x8401) AM_WRITENOP // ?
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
@ -162,6 +165,9 @@ static MACHINE_CONFIG_START( kingpin, kingpin_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("aysnd", AY8912, XTAL_3_579545MHz)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MACHINE_CONFIG_END

View File

@ -89,7 +89,7 @@ WRITE8_MEMBER(ksayakyu_state::bank_select_w)
WRITE8_MEMBER(ksayakyu_state::latch_w)
{
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)
@ -100,7 +100,7 @@ READ8_MEMBER(ksayakyu_state::sound_status_r)
WRITE8_MEMBER(ksayakyu_state::tomaincpu_w)
{
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 )
@ -276,8 +276,10 @@ static MACHINE_CONFIG_START( ksayakyu, ksayakyu_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
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_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)

View File

@ -9,7 +9,7 @@
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,
ports, descriptions and a lot of things... :)
@ -147,9 +147,9 @@
Insert tokens (medals).
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
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
character to complete the 3 in a row, allowing you to win.
@ -252,22 +252,29 @@
#include "video/v9938.h"
#include "machine/ticket.h"
#include "machine/nvram.h"
#include "machine/gen_latch.h"
class kurukuru_state : public driver_device
{
public:
kurukuru_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_v9938(*this, "v9938"),
m_maincpu(*this, "maincpu"),
m_adpcm(*this, "adpcm"),
m_hopper(*this, "hopper"),
m_soundlatch(*this, "soundlatch"),
m_bank1(*this, "bank1")
{ }
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
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_adpcm_data;
@ -287,10 +294,6 @@ public:
virtual void machine_reset() override;
DECLARE_WRITE_LINE_MEMBER(kurukuru_msm5205_vck);
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
@ -391,7 +394,7 @@ WRITE8_MEMBER(kurukuru_state::kurukuru_bankswitch_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);
}
@ -481,7 +484,7 @@ WRITE8_MEMBER(kurukuru_state::kurukuru_adpcm_reset_w)
READ8_MEMBER(kurukuru_state::kurukuru_soundlatch_r)
{
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)
@ -739,6 +742,9 @@ static MACHINE_CONFIG_START( kurukuru, kurukuru_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ym2149", YM2149, YM2149_CLOCK)
MCFG_AY8910_PORT_B_READ_CB(IOPORT("DSW2"))
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 */
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_AY8910_PORT_B_READ_CB(IOPORT("DSW2"))
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)
{
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);
}
@ -139,7 +139,7 @@ static ADDRESS_MAP_START( ladyfrog_sound_map, AS_PROGRAM, 8, ladyfrog_state )
AM_RANGE(0xca00, 0xca00) AM_WRITENOP
AM_RANGE(0xcb00, 0xcb00) 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(0xd400, 0xd400) AM_WRITE(nmi_disable_w)
AM_RANGE(0xd600, 0xd600) AM_WRITENOP
@ -308,6 +308,8 @@ static MACHINE_CONFIG_START( ladyfrog, ladyfrog_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("aysnd", AY8910, 8000000/4)
MCFG_AY8910_PORT_A_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 "cpu/e132xs/e132xs.h"
#include "machine/eepromser.h"
#include "machine/gen_latch.h"
#include "sound/qs1000.h"
#include "sound/okim6295.h"
@ -41,6 +42,7 @@ public:
m_qs1000(*this, "qs1000"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch"),
m_mainram(*this, "mainram"),
m_fg_videoram(*this, "fg_videoram"),
m_md_videoram(*this, "md_videoram"),
@ -54,6 +56,7 @@ public:
optional_device<qs1000_device> m_qs1000;
required_device<gfxdecode_device> m_gfxdecode;
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_fg_videoram;
@ -176,7 +179,7 @@ WRITE32_MEMBER(limenko_state::spriteram_buffer_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);
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)
{
soundlatch_byte_w(space, 0, data >> 16);
m_soundlatch->write(space, 0, data >> 16);
}
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)
@ -283,7 +286,7 @@ READ8_MEMBER(limenko_state::spotty_sound_r)
// check m_spotty_sound_cmd bits...
if(m_spotty_sound_cmd == 0xf7)
return soundlatch_byte_r(space,0);
return m_soundlatch->read(space,0);
else
return m_oki->read(space,0);
}
@ -749,6 +752,8 @@ static MACHINE_CONFIG_START( limenko, limenko_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("qs1000", QS1000, XTAL_24MHz)
MCFG_QS1000_EXTERNAL_ROM(true)
MCFG_QS1000_IN_P1_CB(READ8(limenko_state, qs1000_p1_r))
@ -787,6 +792,8 @@ static MACHINE_CONFIG_START( spotty, limenko_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_OKIM6295_ADD("oki", 4000000 / 4 , OKIM6295_PIN7_HIGH) //?
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END

View File

@ -107,7 +107,7 @@ TIMER_CALLBACK_MEMBER(lkage_state::nmi_callback)
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);
}
@ -187,7 +187,7 @@ static ADDRESS_MAP_START( lkage_sound_map, AS_PROGRAM, 8, lkage_state )
AM_RANGE(0x8000, 0x87ff) AM_RAM
AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ym1", 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(0xb002, 0xb002) AM_WRITE(lkage_sh_nmi_disable_w)
AM_RANGE(0xb003, 0xb003) AM_WRITENOP
@ -566,6 +566,8 @@ static MACHINE_CONFIG_START( lkage, lkage_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ym1", YM2203, AUDIO_CLOCK )
MCFG_YM2203_IRQ_HANDLER(WRITELINE(lkage_state, irqhandler))
MCFG_SOUND_ROUTE(0, "mono", 0.15)
@ -611,6 +613,8 @@ static MACHINE_CONFIG_START( lkageb, lkage_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ym1", YM2203, AUDIO_CLOCK)
MCFG_YM2203_IRQ_HANDLER(WRITELINE(lkage_state, irqhandler))
MCFG_SOUND_ROUTE(0, "mono", 0.15)

View File

@ -57,6 +57,7 @@ L056-6 9A " " VLI-8-4 7A "
#include "emu.h"
#include "cpu/tms9900/tms9995.h"
#include "cpu/tms9900/tms9980a.h"
#include "machine/gen_latch.h"
#include "machine/watchdog.h"
#include "sound/ay8910.h"
#include "sound/dac.h"
@ -110,7 +111,8 @@ public:
m_audiocpu(*this, "audiocpu"),
m_dac(*this, "dac"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette") { }
m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch") { }
/* memory pointers */
required_shared_ptr<UINT8> m_videoram;
@ -162,6 +164,7 @@ public:
required_device<dac_device> m_dac;
required_device<gfxdecode_device> m_gfxdecode;
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)
{
soundlatch_byte_w(space, offset, data);
m_soundlatch->write(space, offset, data);
m_audiocpu->set_input_line(INT_9980A_LEVEL2, ASSERT_LINE);
}
@ -650,8 +653,10 @@ static MACHINE_CONFIG_START( looping, looping_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
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_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)
{
soundlatch_byte_w(space, offset, data);
m_soundlatch->write(space, offset, data);
m_audiocpu->set_input_line(M6502_IRQ_LINE, HOLD_LINE);
}
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);
}
@ -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(0x2002, 0x2003) AM_DEVWRITE("ay2", ay8910_device, data_address_w)
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
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(0x2000, 0x2001) AM_DEVWRITE("ymsnd", ym3526_device, write)
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
ADDRESS_MAP_END
@ -451,6 +451,8 @@ static MACHINE_CONFIG_START( matmania, matmania_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, 1500000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
@ -530,6 +532,8 @@ static MACHINE_CONFIG_START( maniach, matmania_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM3526, 3600000)
MCFG_YM3526_IRQ_HANDLER(DEVWRITELINE("audiocpu", m6809_device, firq_line))
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)
{
soundlatch_byte_w(space, 0, data);
m_soundlatch->write(space, 0, data);
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(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
/*** Sound ***/
@ -221,7 +221,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( mcatadv_sound_io_map, AS_IO, 8, mcatadv_state )
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
@ -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(0x04, 0x07) AM_DEVREAD("ymsnd", ym2610_device, read)
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
/*** Inputs ***/
@ -465,6 +465,9 @@ static MACHINE_CONFIG_START( mcatadv, mcatadv_state )
/* sound hardware */
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_YM2610_IRQ_HANDLER(WRITELINE(mcatadv_state, sound_irq))
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 "cpu/z80/z80.h"
#include "machine/gen_latch.h"
#include "sound/ay8910.h"
@ -114,6 +115,7 @@ public:
m_audiocpu(*this, "audiocpu"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch"),
m_videoram(*this, "videoram"),
m_spriteram(*this, "spriteram"),
m_colorram(*this, "colorram") { }
@ -122,6 +124,7 @@ public:
required_device<cpu_device> m_audiocpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
required_device<generic_latch_8_device> m_soundlatch;
required_shared_ptr<UINT8> m_videoram;
required_shared_ptr<UINT8> m_spriteram;
@ -282,7 +285,7 @@ WRITE8_MEMBER(mirax_state::nmi_mask_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);
}
@ -329,7 +332,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( mirax_sound_map, AS_PROGRAM, 8, mirax_state )
AM_RANGE(0x0000, 0x1fff) AM_ROM
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(0xe001, 0xe001) AM_WRITENOP
@ -492,6 +495,9 @@ static MACHINE_CONFIG_START( mirax, mirax_state )
MCFG_GFXDECODE_ADD("gfxdecode", "palette", mirax)
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, 12000000/4)
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(0x9000, 0x9000) AM_DEVREADWRITE("oki", okim6295_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(0xb002, 0xb002) AM_WRITE(bublbobl_sh_nmi_disable_w)
AM_RANGE(0xe000, 0xefff) AM_ROM // space for diagnostic ROM?
@ -474,6 +474,8 @@ static MACHINE_CONFIG_START( missb2, missb2_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM3526, MAIN_XTAL/8)
MCFG_YM3526_IRQ_HANDLER(WRITELINE(missb2_state, irqhandler))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)

View File

@ -18,7 +18,7 @@
TO DO:
- 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 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)
{
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);
}
@ -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(0x8020, 0x8020) AM_WRITE(sound_control_0_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(0xc002, 0xc002) AM_WRITE(nmi_disable_w)
AM_RANGE(0xc003, 0xc003) AM_WRITENOP /*???*/ /* this is NOT mixer_enable */
@ -494,6 +494,8 @@ static MACHINE_CONFIG_START( msisaac, msisaac_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, 2000000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)

View File

@ -23,6 +23,7 @@
#include "emu.h"
#include "cpu/m68000/m68000.h"
#include "cpu/z80/z80.h"
#include "machine/gen_latch.h"
#include "machine/nvram.h"
#include "sound/2610intf.h"
#include "machine/upd1990a.h"
@ -41,6 +42,7 @@ public:
m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"),
m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch"),
m_generic_paletteram_16(*this, "paletteram") { }
required_shared_ptr<UINT16> m_npvidram;
@ -51,6 +53,7 @@ public:
required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
required_device<generic_latch_8_device> m_soundlatch;
optional_shared_ptr<UINT16> m_generic_paletteram_16;
UINT8 m_audio_result;
@ -198,7 +201,7 @@ WRITE8_MEMBER(neoprint_state::audio_cpu_clear_nmi_w)
WRITE8_MEMBER(neoprint_state::audio_command_w)
{
soundlatch_byte_w(space, 0, data);
m_soundlatch->write(space, 0, data);
audio_cpu_assert_nmi();
@ -211,7 +214,7 @@ WRITE8_MEMBER(neoprint_state::audio_command_w)
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);
@ -506,6 +509,8 @@ static MACHINE_CONFIG_START( neoprint, neoprint_state )
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2610, 24000000 / 3)
MCFG_YM2610_IRQ_HANDLER(WRITELINE(neoprint_state, audio_cpu_irq))
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_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2610, 24000000 / 3)
MCFG_YM2610_IRQ_HANDLER(WRITELINE(neoprint_state, audio_cpu_irq))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.60)

View File

@ -153,6 +153,7 @@ TODO:
#include "emu.h"
#include "cpu/z80/z80.h"
#include "sound/2203intf.h"
#include "machine/gen_latch.h"
#include "machine/mc8123.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(0xc003, 0xc003) AM_READ_PORT("DIPSW1")
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(0xc202, 0xc202) AM_WRITE(ninjakd2_bankselect_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(0xf803, 0xf803) AM_READ_PORT("DIPSW1")
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(0xfa02, 0xfa02) AM_WRITE(ninjakd2_bankselect_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(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(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(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)
@ -436,7 +437,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( omegaf_main_cpu, AS_PROGRAM, 8, ninjakd2_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
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, 0xc001) AM_WRITE(ninjakd2_soundreset_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(0x8000, 0xbfff) AM_ROM
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)
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(0x8000, 0xbfff) AM_ROM
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
ADDRESS_MAP_END
@ -963,6 +964,8 @@ static MACHINE_CONFIG_START( ninjakd2_core, ninjakd2_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("2203.1", YM2203, MAIN_CLOCK_12/8) /* verified */
MCFG_YM2203_IRQ_HANDLER(WRITELINE(ninjakd2_state, irqhandler))
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) :
* BUTTON5 : Yes
* 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).
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 "cpu/z80/z80.h"
#include "cpu/m68000/m68000.h"
#include "machine/gen_latch.h"
#include "sound/okim6295.h"
#include "sound/3812intf.h"
#include "video/decospr.h"
@ -238,11 +239,12 @@ public:
m_bg_videoram(*this, "bg_videoram"),
m_fg_videoram(*this, "fg_videoram"),
m_bitmap(*this, "bitmap"),
m_sprgen(*this, "spritegen"),
m_maincpu(*this, "maincpu"),
m_soundcpu(*this, "soundcpu"),
m_oki(*this, "oki"),
m_gfxdecode(*this, "gfxdecode")
m_gfxdecode(*this, "gfxdecode"),
m_sprgen(*this, "spritegen"),
m_soundlatch(*this, "soundlatch")
{ }
/* memory pointers */
@ -251,7 +253,6 @@ public:
required_shared_ptr<UINT16> m_bg_videoram;
required_shared_ptr<UINT16> m_fg_videoram;
required_shared_ptr<UINT16> m_bitmap;
optional_device<decospr_device> m_sprgen;
/* video-related */
tilemap_t *m_bg_tilemap;
@ -268,6 +269,8 @@ public:
required_device<cpu_device> m_soundcpu;
required_device<okim6295_device> m_oki;
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(bg_videoram_w);
@ -308,7 +311,7 @@ WRITE16_MEMBER(nmg5_state::nmg5_soundlatch_w)
{
if (ACCESSING_BITS_0_7)
{
soundlatch_byte_w(space, 0, data & 0xff);
m_soundlatch->write(space, 0, data & 0xff);
m_soundcpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
}
}
@ -410,7 +413,7 @@ static ADDRESS_MAP_START( sound_io_map, AS_IO, 8, nmg5_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_WRITE(oki_banking_w)
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)
ADDRESS_MAP_END
@ -1004,6 +1007,8 @@ static MACHINE_CONFIG_START( nmg5, nmg5_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM3812, 4000000) /* 4MHz */
MCFG_YM3812_IRQ_HANDLER(INPUTLINE("soundcpu", 0))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)

View File

@ -12,7 +12,7 @@
What's new :
- 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)
- Sub CPU halt (cpu #0 ,$d001)
- 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 !
- 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.
The game also frezees sometimes for some unknown reasons.
The game also freezes sometimes for some unknown reasons.
2) 'cyclshtg' and clones
2a) 'cyclshtg'
- 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).
- 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'.
@ -271,7 +271,7 @@ TIMER_CALLBACK_MEMBER(nycaptor_state::nmi_callback)
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);
}
@ -360,7 +360,7 @@ static ADDRESS_MAP_START( nycaptor_sound_map, AS_PROGRAM, 8, nycaptor_state )
AM_RANGE(0xca00, 0xca00) AM_WRITENOP
AM_RANGE(0xcb00, 0xcb00) 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(0xd400, 0xd400) AM_WRITE(nmi_disable_w)
AM_RANGE(0xd600, 0xd600) AM_WRITENOP
@ -837,6 +837,8 @@ static MACHINE_CONFIG_START( nycaptor, nycaptor_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, 8000000/4)
MCFG_AY8910_PORT_A_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_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, 8000000/4)
MCFG_AY8910_PORT_A_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_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, 8000000/4)
MCFG_AY8910_PORT_A_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
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
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.
- 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
@ -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/m68000/m68000.h"
#include "includes/oneshot.h"
#include "machine/gen_latch.h"
#include "sound/okim6295.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(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(0x190002, 0x190003) AM_READ(soundlatch_word_r)
AM_RANGE(0x190010, 0x190011) AM_WRITE(soundlatch_word_w)
AM_RANGE(0x190002, 0x190003) AM_DEVREAD8("soundlatch", generic_latch_8_device, read, 0x00ff)
AM_RANGE(0x190010, 0x190011) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
AM_RANGE(0x190018, 0x190019) AM_WRITE(soundbank_w)
AM_RANGE(0x190026, 0x190027) AM_READ(oneshot_gun_x_p1_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 )
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(0xe000, 0xe001) AM_DEVREADWRITE("ymsnd", ym3812_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_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM3812, 3500000)
MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", 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 "cpu/z80/z80.h"
#include "machine/gen_latch.h"
#include "machine/watchdog.h"
#include "sound/okim6295.h"
#include "sound/3812intf.h"
@ -61,7 +62,8 @@ public:
m_audiocpu(*this, "audiocpu"),
m_watchdog(*this, "watchdog"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette") { }
m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch") { }
/* memory pointers */
required_shared_ptr<UINT8> m_paletteram;
@ -77,6 +79,7 @@ public:
required_device<watchdog_timer_device> m_watchdog;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
required_device<generic_latch_8_device> m_soundlatch;
DECLARE_WRITE8_MEMBER(onetwo_fgram_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)
{
soundlatch_byte_w(space, 0, data);
m_soundlatch->write(space, 0, data);
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 )
AM_RANGE(0x0000, 0x5fff) AM_ROM
AM_RANGE(0xf000, 0xf7ff) AM_RAM
AM_RANGE(0xf800, 0xf800) AM_READ(soundlatch_byte_r)
AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
ADDRESS_MAP_END
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(0x20, 0x20) AM_DEVWRITE("ymsnd", ym3812_device, write_port_w)
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
/*************************************
@ -380,6 +383,8 @@ static MACHINE_CONFIG_START( onetwo, onetwo_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM3812, MASTER_CLOCK)
MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", 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)
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 "cpu/z80/z80.h"
#include "cpu/mcs48/mcs48.h"
#include "machine/gen_latch.h"
#include "machine/i8243.h"
#include "sound/dac.h"
#include "sound/ay8910.h"
@ -58,7 +59,8 @@ public:
m_maincpu(*this, "maincpu"),
m_ay1(*this, "ay1"),
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;
device_t *m_n7751;
required_device<palette_device> m_palette;
required_device<generic_latch_8_device> m_soundlatch;
DECLARE_READ8_MEMBER(unk_87_r);
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(0x8a, 0x8a) AM_WRITE(unk_8a_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)
ADDRESS_MAP_END
READ8_MEMBER(othello_state::latch_r)
{
int retval = soundlatch_byte_r(space, 0);
soundlatch_clear_byte_w(space, 0, 0);
int retval = m_soundlatch->read(space, 0);
m_soundlatch->clear_w(space, 0, 0);
return retval;
}
@ -434,6 +437,8 @@ static MACHINE_CONFIG_START( othello, othello_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, 2000000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)

View File

@ -92,7 +92,7 @@
--- Game Notes ---
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.
@ -104,6 +104,7 @@
#include "emu.h"
#include "cpu/z80/z80.h"
#include "cpu/m68000/m68000.h"
#include "machine/gen_latch.h"
#include "sound/2203intf.h"
#include "sound/okim6295.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(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(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(0x230200, 0x230201) AM_READ_PORT("INPUTS")
ADDRESS_MAP_END
@ -129,10 +130,10 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( pass_sound_io_map, AS_IO, 8, pass_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READ(soundlatch_byte_r)
AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0x70, 0x71) AM_DEVREADWRITE("ymsnd", ym2203_device, read, 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
/* todo : work out function of unknown but used dsw */
@ -262,6 +263,8 @@ static MACHINE_CONFIG_START( pass, pass_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2203, 14318180/4)
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
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
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)
{
soundlatch_byte_w(space, offset, data);
m_soundlatch->write(space, offset, data);
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 )
AM_RANGE(0x0000, 0x1fff) AM_ROM
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? */
ADDRESS_MAP_END
@ -262,11 +262,13 @@ INTERRUPT_GEN_MEMBER(pbaction_state::pbaction_interrupt)
void pbaction_state::machine_start()
{
save_item(NAME(m_nmi_mask));
save_item(NAME(m_scroll));
}
void pbaction_state::machine_reset()
{
m_nmi_mask = 0;
m_scroll = 0;
}
@ -306,6 +308,8 @@ static MACHINE_CONFIG_START( pbaction, pbaction_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, 1500000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)

View File

@ -10,7 +10,7 @@ TODO:
- analog sound
writes to $a8xx triggering analog sound :
$a800 - drivers are gettin into the cars
$a800 - drivers are getting into the cars
$a801 - collisions
$a802 - same as above
$a803 - slide on water
@ -68,6 +68,7 @@ K1000233A
#include "emu.h"
#include "cpu/z80/z80.h"
#include "cpu/m6805/m6805.h"
#include "machine/gen_latch.h"
#include "machine/watchdog.h"
#include "sound/ay8910.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(0xb006, 0xb006) AM_WRITE(hflip_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(0xc802, 0xc802) AM_WRITENOP/* VP(VF?)MCV - not used ?*/
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 )
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(0x8e, 0x8f) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
AM_RANGE(0x8f, 0x8f) AM_DEVREAD("ay1", ay8910_device, data_r)
@ -253,14 +254,16 @@ static MACHINE_CONFIG_START( pitnrun, pitnrun_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
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_B_READ_CB(READ8(driver_device, soundlatch_byte_r))
MCFG_AY8910_PORT_A_READ_CB(DEVREAD8("soundlatch", generic_latch_8_device, read))
MCFG_AY8910_PORT_B_READ_CB(DEVREAD8("soundlatch", generic_latch_8_device, read))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
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_B_READ_CB(READ8(driver_device, soundlatch_byte_r))
MCFG_AY8910_PORT_A_READ_CB(DEVREAD8("soundlatch", generic_latch_8_device, read))
MCFG_AY8910_PORT_B_READ_CB(DEVREAD8("soundlatch", generic_latch_8_device, read))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MACHINE_CONFIG_END

View File

@ -7,7 +7,7 @@ Quiz Punch 2 (C)1989 Space Computer
Preliminary driver by Luca Elia
- 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
----------
@ -78,6 +78,7 @@ Notes:
#include "emu.h"
#include "cpu/z80/z80.h"
#include "machine/gen_latch.h"
#include "sound/2203intf.h"
@ -100,7 +101,8 @@ public:
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette") { }
m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch") { }
struct prot_t m_prot;
required_shared_ptr<UINT8> m_fg_ram;
@ -123,6 +125,7 @@ public:
required_device<cpu_device> m_audiocpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
required_device<generic_latch_8_device> m_soundlatch;
};
@ -364,7 +367,7 @@ WRITE8_MEMBER(quizpun2_state::quizpun2_irq_ack)
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);
}
@ -405,7 +408,7 @@ static ADDRESS_MAP_START( quizpun2_sound_io_map, AS_IO, 8, quizpun2_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE( 0x00, 0x00 ) AM_WRITENOP // IRQ 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 )
ADDRESS_MAP_END
@ -524,6 +527,8 @@ static MACHINE_CONFIG_START( quizpun2, quizpun2_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_8MHz / 4 ) // 2 MHz?
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END

View File

@ -170,7 +170,7 @@ WRITE_LINE_MEMBER(renegade_state::adpcm_int)
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);
}
@ -621,7 +621,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( renegade_sound_map, AS_PROGRAM, 8, renegade_state )
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(0x2000, 0x2000) AM_WRITE(adpcm_addr_w)
AM_RANGE(0x2800, 0x2801) AM_DEVREADWRITE("ymsnd", ym3526_device, read, write)
@ -872,6 +872,8 @@ static MACHINE_CONFIG_START( renegade, renegade_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM3526, 12000000/4)
MCFG_YM3526_IRQ_HANDLER(DEVWRITELINE("audiocpu", m6809_device, firq_line))
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)
{
soundlatch_byte_w(space, 0, data);
m_soundlatch->write(space, 0, data);
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 )
AM_RANGE(0x0000, 0x1fff) AM_ROM
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(0x8000, 0x8000) AM_DEVWRITE("sn1", 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 */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("sn1", SN76496, 18432000/6)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)

View File

@ -11,6 +11,7 @@ Issues:
#include "emu.h"
#include "cpu/z80/z80.h"
#include "machine/gen_latch.h"
#include "sound/ay8910.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(0xe000, 0xe3ff) AM_RAM AM_SHARE("videoram")
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(0xf000, 0xf0ff) AM_RAM AM_SHARE("spriteram")
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 )
AM_RANGE(0x0000, 0x0fff) AM_ROM
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(0x5000, 0x5001) AM_DEVWRITE("ay2", 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 */
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_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 "cpu/z80/z80.h"
#include "machine/gen_latch.h"
#include "sound/ay8910.h"
#include "roul.lh"
#include "machine/nvram.h"
@ -75,10 +76,12 @@ public:
roul_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
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_soundcpu;
required_device<generic_latch_8_device> m_soundlatch;
UINT8 m_reg[0x10];
std::unique_ptr<UINT8[]> m_videobuf;
@ -180,7 +183,7 @@ WRITE8_MEMBER(roul_state::blitter_cmd_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);
}
@ -216,7 +219,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_cpu_io_map, AS_IO, 8, roul_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READ(soundlatch_byte_r)
AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
ADDRESS_MAP_END
@ -315,6 +318,9 @@ static MACHINE_CONFIG_START( roul, roul_state )
MCFG_PALETTE_INIT_OWNER(roul_state, roul)
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("aysnd", AY8910, 1000000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END

View File

@ -26,7 +26,7 @@ Ports:
20 R DSW #2
40 R Input Ports Player 1
60 R Input Ports Player 2
80 W Sound Commnand
80 W Sound Command
c0 W Flip Screen
c1 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
(colors, Dip Switches, Inputs)
- 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
is 15 bytes long while other string are 14, so the 15th "char" is NOT 0x00 :
* 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
(colors, Dip Switches, Inputs)
- 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'
@ -133,13 +133,13 @@ Stephh's notes (based on the games Z80 code and some tests) :
WRITE8_MEMBER(sauro_state::sauro_sound_command_w)
{
data |= 0x80;
soundlatch_byte_w(space, offset, data);
m_soundlatch->write(space, offset, data);
}
READ8_MEMBER(sauro_state::sauro_sound_command_r)
{
int ret = soundlatch_byte_r(space, offset);
soundlatch_clear_byte_w(space, offset, 0);
int ret = m_soundlatch->read(space, offset);
m_soundlatch->clear_w(space, offset, 0);
return ret;
}
@ -420,6 +420,8 @@ static MACHINE_CONFIG_DERIVED( sauro, tecfri )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(sauro_state, screen_update_sauro)
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("speech", SP0256, 3120000)
MCFG_SP0256_DATA_REQUEST_CB(INPUTLINE("audiocpu", INPUT_LINE_NMI))
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)
{
soundlatch_byte_w(space, 1, data >> 8);
m_soundlatch->write(space, 1, data >> 8);
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE );
}
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(0xc800, 0xc801) AM_DEVREADWRITE("ymsnd", ym2151_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(0xf000, 0xffff) AM_RAM
ADDRESS_MAP_END
@ -562,6 +562,8 @@ static MACHINE_CONFIG_START( shadfrce, shadfrce_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) /* verified on pcb */
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)

View File

@ -66,6 +66,7 @@ Notes:
#include "emu.h"
#include "cpu/m68000/m68000.h"
#include "machine/gen_latch.h"
#include "sound/okim6295.h"
#include "cpu/mcs51/mcs51.h"
#include "video/ramdac.h"
@ -84,9 +85,10 @@ public:
sliver_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_colorram(*this, "colorram"),
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_reg[IO_SIZE];
@ -101,6 +103,9 @@ public:
int m_clr_offset;
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;
bitmap_rgb32 m_bitmap_fg;
bitmap_rgb32 m_bitmap_bg;
@ -123,8 +128,6 @@ public:
void plot_pixel_pal(int x, int y, int addr);
void blit_gfx();
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)
@ -316,7 +319,7 @@ WRITE16_MEMBER(sliver_state::io_data_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);
}
@ -363,7 +366,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( soundmem_io, AS_IO, 8, sliver_state )
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 */
AM_RANGE(MCS51_PORT_P1, MCS51_PORT_P1) AM_WRITE(oki_setbank )
ADDRESS_MAP_END
@ -486,6 +489,8 @@ static MACHINE_CONFIG_START( sliver, sliver_state )
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 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
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
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
@ -80,7 +80,6 @@ a joystick. This is not an emulation bug.
#include "cpu/z80/z80.h"
#include "sound/2151intf.h"
#include "sound/3812intf.h"
#include "sound/okim6295.h"
#include "cpu/mcs51/mcs51.h" // for semicom mcu
#include "machine/watchdog.h"
@ -179,7 +178,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(snowbros_state::snowbros3_irq)
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)
{
soundlatch_byte_w(space, offset, data & 0xff);
m_soundlatch->write(space, offset, data & 0xff);
m_soundcpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
}
}
WRITE16_MEMBER(snowbros_state::semicom_soundcmd_w)
{
if (ACCESSING_BITS_0_7) 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)
@ -230,7 +229,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_io_map, AS_IO, 8, snowbros_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write)
AM_RANGE(0x04, 0x04) AM_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
@ -331,7 +330,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( honeydol_sound_io_map, AS_IO, 8, snowbros_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) // not connected?
AM_RANGE(0x04, 0x04) AM_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
/* Twin Adventure */
@ -340,7 +339,7 @@ WRITE16_MEMBER(snowbros_state::twinadv_68000_sound_w)
{
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);
}
}
@ -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 )
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(0x06, 0x06) AM_DEVREADWRITE("oki", okim6295_device, read, write)
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(0xf000, 0xf001) AM_DEVREADWRITE("ymsnd", ym2151_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
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 */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_12MHz/4) /* 3 MHz - confirmed */
MCFG_YM3812_IRQ_HANDLER(INPUTLINE("soundcpu", 0))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
@ -1774,7 +1775,7 @@ static MACHINE_CONFIG_START( honeydol, snowbros_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
/* sound hardware */
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_12MHz/4) /* 3Mhz */
MCFG_YM3812_IRQ_HANDLER(INPUTLINE("soundcpu", 0))
@ -1814,6 +1815,8 @@ static MACHINE_CONFIG_START( twinadv, snowbros_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
/* sound hardware */
MCFG_OKIM6295_ADD("oki", XTAL_16MHz/16, OKIM6295_PIN7_HIGH) /* freq? */
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)
{
soundlatch_byte_w(space, offset, data);
m_soundlatch->write(space, offset, data);
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 )
AM_RANGE(0x0000, 0x3fff) AM_ROM
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? */
ADDRESS_MAP_END
@ -231,6 +231,8 @@ static MACHINE_CONFIG_START( solomon, solomon_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, 1500000)
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 "cpu/z80/z80.h"
#include "cpu/m6809/m6809.h"
#include "machine/gen_latch.h"
#include "sound/2203intf.h"
#include "sound/msm5205.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( 0x32, 0x32) AM_READ(subcpu_comm_status)
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( 0x60, 0x61) AM_MIRROR(0x02) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
/* 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 )
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(0x02, 0x02) AM_WRITE(msm_cfg_w)
AM_RANGE(0x03, 0x03) AM_WRITE(soundcpu_busyflag_set_w)
@ -372,6 +373,9 @@ static MACHINE_CONFIG_START( sothello, sothello_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2203, YM_CLOCK)
MCFG_YM2203_IRQ_HANDLER(WRITELINE(sothello_state, irqhandler))
MCFG_AY8910_PORT_A_READ_CB(IOPORT("DSWA"))

View File

@ -9,8 +9,8 @@
-general info-------------------------------------------------------------------
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
Gals Pinball (see galspnbl.c) I imagine Comad took the hardware that this uses
for Tecmo's classic game Ninja Gaiden (see gaiden.cpp) and that used in Comad's
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
pixel layer.
@ -45,7 +45,7 @@ The manual defines the controls as 4 push buttons:
a-u19 - Samples (27c1001)
1 custom chip (u94, surface scrached)
1 custom chip (u94, surface scratched)
------
9002-B
@ -61,9 +61,9 @@ The manual defines the controls as 4 push buttons:
b-u111 /
Custom chips:
U101, U102, U106, U107: surface scrached
U101, U102, U106, U107: surface scratched
probably 2 pairs of TECMO-3&4
U133: surface scrached
U133: surface scratched
probably TECMO-6
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 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.
- 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
@ -144,7 +143,7 @@ WRITE16_MEMBER(spbactn_state::soundcommand_w)
{
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);
}
}
@ -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(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
@ -439,6 +438,8 @@ static MACHINE_CONFIG_START( spbactn, spbactn_state )
/* sound hardware */
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_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
@ -490,6 +491,8 @@ static MACHINE_CONFIG_START( spbactnp, spbactn_state )
/* sound hardware - different? */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_4MHz)
MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)

View File

@ -38,6 +38,7 @@ TODO:
#include "emu.h"
#include "cpu/i8085/i8085.h"
#include "cpu/mcs48/mcs48.h"
#include "machine/gen_latch.h"
#include "includes/spcforce.h"
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 )
AM_RANGE(0x0000, 0x3fff) AM_ROM
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(0x7002, 0x7002) AM_READ_PORT("P2")
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
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_P2, MCS48_PORT_P2) AM_READWRITE(SN76496_select_r, SN76496_select_w)
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 */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("sn1", SN76496, 2000000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MCFG_SN76496_READY_HANDLER(WRITELINE(spcforce_state, write_sn1_ready))

View File

@ -32,7 +32,7 @@ Notes:
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);
}
@ -259,7 +259,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( spdodgeb_sound_map, AS_PROGRAM, 8, spdodgeb_state )
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(0x3800, 0x3807) AM_WRITE(spd_adpcm_w)
AM_RANGE(0x8000, 0xffff) AM_ROM
@ -430,6 +430,8 @@ static MACHINE_CONFIG_START( spdodgeb, spdodgeb_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_12MHz/4)
MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", M6809_FIRQ_LINE))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)

View File

@ -23,7 +23,6 @@ TODO:
#include "emu.h"
#include "cpu/z80/z80.h"
#include "sound/okim6295.h"
#include "includes/speedspn.h"
/*** README INFO **************************************************************
@ -77,7 +76,7 @@ WRITE8_MEMBER(speedspn_state::rombank_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);
}
@ -120,7 +119,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, speedspn_state )
AM_RANGE(0x8000, 0x87ff) AM_RAM
AM_RANGE(0x9000, 0x9000) AM_WRITE(okibank_w)
AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r)
AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
ADDRESS_MAP_END
static ADDRESS_MAP_START( oki_map, AS_0, 8, speedspn_state )
@ -301,6 +300,8 @@ static MACHINE_CONFIG_START( speedspn, speedspn_state )
/* sound hardware */
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_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
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)
{
soundlatch_byte_w(space, 0, data);
m_soundlatch->write(space, 0, data);
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(0x2004, 0x2004) AM_DEVWRITE("dac", dac_device, write_signed8)
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
ADDRESS_MAP_END
@ -220,6 +220,8 @@ static MACHINE_CONFIG_START( ssozumo, ssozumo_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, 1500000)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)

View File

@ -81,6 +81,7 @@ Bprom dump by f205v
#include "emu.h"
#include "cpu/z80/z80.h"
#include "machine/gen_latch.h"
#include "sound/ay8910.h"
class stuntair_state : public driver_device
@ -95,7 +96,8 @@ public:
m_bgattrram(*this, "bgattrram"),
m_sprram(*this, "sprram"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette")
m_palette(*this, "palette"),
m_soundlatch(*this, "soundlatch")
{ }
required_device<cpu_device> m_maincpu;
@ -106,6 +108,7 @@ public:
required_shared_ptr<UINT8> m_sprram;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
required_device<generic_latch_8_device> m_soundlatch;
tilemap_t *m_fg_tilemap;
tilemap_t *m_bg_tilemap;
@ -303,7 +306,7 @@ WRITE8_MEMBER(stuntair_state::stuntair_coin_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);
}
@ -531,8 +534,10 @@ static MACHINE_CONFIG_START( stuntair, stuntair_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono") // stereo?
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
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_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)
{
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);
}
}
@ -153,7 +153,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_io_map, AS_IO, 8, suprslam_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
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)
ADDRESS_MAP_END
@ -333,6 +333,8 @@ static MACHINE_CONFIG_START( suprslam, suprslam_state )
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2610, 8000000)
MCFG_YM2610_IRQ_HANDLER(WRITELINE(suprslam_state, irqhandler))
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)
{
soundlatch_byte_w(space, offset, data);
m_soundlatch->write(space, offset, data);
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(0x2004, 0x2004) AM_DEVWRITE("dac", dac_device, write_unsigned8)
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
ADDRESS_MAP_END
@ -236,6 +236,8 @@ static MACHINE_CONFIG_START( tagteam, tagteam_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, XTAL_12MHz/8)
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)
{
soundlatch_byte_w(space, offset, data & 0xff);
m_soundlatch->write(space, offset, data & 0xff);
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 )
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)
#if 0
AM_RANGE(0x18, 0x1b) AM_DEVREAD("ymsnd", ym2608_device, read)
@ -236,6 +236,8 @@ static MACHINE_CONFIG_START( tail2nos, tail2nos_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2608, XTAL_8MHz) /* verified on pcb */
MCFG_YM2608_IRQ_HANDLER(WRITELINE(tail2nos_state, irqhandler))
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.
[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
OBJ-SCN1-SCN2-SCN3. The 2-bit code which comes out from the PROM selects
the plane to display.
@ -170,7 +170,6 @@ TODO:
#include "cpu/m6805/m6805.h"
#include "machine/watchdog.h"
#include "sound/ay8910.h"
#include "sound/dac.h"
#include "includes/taitosj.h"
@ -181,7 +180,7 @@ WRITE8_MEMBER(taitosj_state::taitosj_sndnmi_msk_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);
}
@ -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(0x4804, 0x4805) AM_DEVWRITE("ay4", ay8910_device, address_data_w)
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 */
ADDRESS_MAP_END
@ -1776,6 +1775,8 @@ static MACHINE_CONFIG_START( nomcu, taitosj_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, 6000000/4)
MCFG_AY8910_PORT_A_READ_CB(IOPORT("DSW2"))
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)
{
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);
}
}
@ -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(0x04, 0x04) AM_WRITE(sh_bankswitch_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
@ -391,6 +391,8 @@ static MACHINE_CONFIG_START( taotaido, taotaido_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2610, 8000000)
MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.25)

View File

@ -142,10 +142,8 @@
#include "emu.h"
#include "cpu/z80/z80.h"
#include "cpu/nec/nec.h"
#include "cpu/m68000/m68000.h"
#include "includes/tatsumi.h"
#include "sound/2151intf.h"
#include "sound/okim6295.h"
#include "machine/nvram.h"
#include "roundup5.lh"
@ -184,7 +182,7 @@ WRITE16_MEMBER(tatsumi_state::bigfight_a60000_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);
}
@ -334,7 +332,7 @@ static ADDRESS_MAP_START( cyclwarr_z80_map, AS_PROGRAM, 8, tatsumi_state )
AM_RANGE(0xe000, 0xffef) AM_RAM
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(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
ADDRESS_MAP_END
@ -992,6 +990,8 @@ static MACHINE_CONFIG_START( cyclwarr, tatsumi_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", CLOCK_1 / 4)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_IRQ0))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.45)
@ -1035,6 +1035,8 @@ static MACHINE_CONFIG_START( bigfight, tatsumi_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", CLOCK_1 / 4)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_IRQ0))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.45)

View File

@ -17,7 +17,6 @@ Might be some priority glitches
#include "emu.h"
#include "cpu/z80/z80.h"
#include "sound/3812intf.h"
#include "sound/msm5205.h"
#include "rendlay.h"
#include "includes/tbowl.h"
@ -29,7 +28,7 @@ WRITE8_MEMBER(tbowl_state::coincounter_w)
/*** 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)
{
soundlatch_byte_w(space, offset, data);
m_soundlatch->write(space, offset, data);
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(0xe006, 0xe006) AM_WRITENOP
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
/*** Input Ports
@ -481,6 +480,8 @@ static MACHINE_CONFIG_START( tbowl, tbowl_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ym1", YM3812, 4000000)
MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)

View File

@ -2,7 +2,7 @@
// copyright-holders:Nicola Salmoria
/***************************************************************************
tecmo.c
tecmo.cpp
driver by Nicola Salmoria
@ -64,7 +64,7 @@ WRITE8_MEMBER(tecmo_state::bankswitch_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);
}
@ -227,7 +227,7 @@ static ADDRESS_MAP_START( rygar_sound_map, AS_PROGRAM, 8, tecmo_state )
AM_RANGE(0x0000, 0x3fff) AM_ROM
AM_RANGE(0x4000, 0x47ff) AM_RAM
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(0xe000, 0xe000) AM_WRITE(adpcm_vol_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(0x8000, 0x87ff) AM_RAM
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(0xc800, 0xc800) AM_WRITE(adpcm_vol_w)
AM_RANGE(0xcc00, 0xcc00) AM_WRITE(nmi_ack_w)
@ -644,6 +644,8 @@ static MACHINE_CONFIG_START( rygar, tecmo_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_4MHz) /* verified on pcb */
MCFG_YM3812_IRQ_HANDLER(INPUTLINE("soundcpu", 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)
{
soundlatch_byte_w(space, 0x00, data & 0xff);
m_soundlatch->write(space, 0x00, data & 0xff);
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(0xfc00, 0xfc00) AM_DEVREADWRITE("oki", okim6295_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(0xfffe, 0xffff) AM_RAM
ADDRESS_MAP_END
@ -404,6 +404,8 @@ static MACHINE_CONFIG_START( fstarfrc, tecmo16_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", MASTER_CLOCK/6) // 4 MHz
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.60)

View File

@ -20,7 +20,7 @@ T.Slanina 20040530 :
20080528
- Removed ROM patches and debug keypresses
- Added protection simulation in machine/tecmosys.c
- Added protection simulation in machine/tecmosys.cpp
- Fixed inputs
- Added watchdog
@ -184,7 +184,6 @@ ae500w07.ad1 - M6295 Samples (23c4001)
#include "emu.h"
#include "cpu/z80/z80.h"
#include "machine/eepromser.h"
#include "includes/tecmosys.h"
#include "cpu/m68000/m68000.h"
#include "sound/okim6295.h"
@ -198,7 +197,7 @@ READ16_MEMBER(tecmosys_state::sound_r)
if (ACCESSING_BITS_0_7)
{
machine().scheduler().synchronize();
return soundlatch2_byte_r(space, 0 );
return m_soundlatch2->read(space, 0);
}
return 0;
@ -209,7 +208,7 @@ WRITE16_MEMBER(tecmosys_state::sound_w)
if (ACCESSING_BITS_0_7)
{
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);
}
}
@ -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(0x20, 0x20) AM_WRITE(oki_bank_w)
AM_RANGE(0x30, 0x30) AM_WRITE(z80_bank_w)
AM_RANGE(0x40, 0x40) AM_READ(soundlatch_byte_r)
AM_RANGE(0x50, 0x50) AM_WRITE(soundlatch2_byte_w)
AM_RANGE(0x40, 0x40) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0x50, 0x50) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
AM_RANGE(0x60, 0x61) AM_DEVREADWRITE("ymz", ymz280b_device, read, write)
ADDRESS_MAP_END
@ -482,6 +481,9 @@ static MACHINE_CONFIG_START( deroon, tecmosys_state )
/* sound hardware */
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_YMF262_IRQ_HANDLER(WRITELINE(tecmosys_state, sound_irq))
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)
{
soundlatch_byte_w(space, offset, data);
m_soundlatch->write(space, offset, data);
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)
{
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, */
/* 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(0xf812, 0xf812) AM_WRITE(gridiron_led1_w)
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(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)
@ -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(0x8002, 0x8002) AM_WRITENOP /* ?? written in the IRQ 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
static ADDRESS_MAP_START( sound_port, AS_IO, 8, tehkanwc_state )
@ -662,6 +662,9 @@ static MACHINE_CONFIG_START( tehkanwc, tehkanwc_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
MCFG_SOUND_ADD("ay1", AY8910, 1536000)
MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(tehkanwc_state, portA_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)
{
soundlatch_byte_w(space, 0, data);
m_soundlatch->write(space, 0, data);
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 )
AM_RANGE(0x0000, 0x07ff) AM_RAM
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
ADDRESS_MAP_END
@ -446,6 +446,8 @@ static MACHINE_CONFIG_START( thedeep, thedeep_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/4) /* verified on pcb */
MCFG_YM2203_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)

View File

@ -9,12 +9,13 @@ driver by Ernesto Corvi
Notes:
- 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 "cpu/z80/z80.h"
#include "machine/gen_latch.h"
#include "machine/watchdog.h"
#include "sound/ay8910.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_WRITE(nmi_enable_w) /* nmi enable */
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(0xc800, 0xc800) AM_WRITE(scroll_x_lsb_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 )
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(0x8e, 0x8f) AM_DEVREADWRITE("ay2", ay8910_device, data_r, address_data_w)
ADDRESS_MAP_END
@ -249,11 +250,13 @@ static MACHINE_CONFIG_START( timelimt, timelimt_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ay1", AY8910, 18432000/12)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
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)
MACHINE_CONFIG_END

View File

@ -801,7 +801,7 @@ ADDRESS_MAP_END
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);
}
@ -850,7 +850,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( tnzsb_io_map, AS_IO, 8, tnzs_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
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
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 */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/4) /* verified on pcb */
MCFG_YM2203_IRQ_HANDLER(WRITELINE(tnzs_state, irqhandler))
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)
{
soundlatch_byte_w(space, offset, data & 0xff);
m_soundlatch->write(space, offset, data & 0xff);
m_audiocpu->set_input_line(0, HOLD_LINE);
}
}
@ -906,7 +906,7 @@ WRITE16_MEMBER(toaplan2_state::batrider_soundlatch_w)
{
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);
}
}
@ -916,7 +916,7 @@ WRITE16_MEMBER(toaplan2_state::batrider_soundlatch2_w)
{
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);
}
}
@ -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(0x500004, 0x500005) AM_READ_PORT("DSW")
AM_RANGE(0x500006, 0x500007) AM_READ(video_count_r)
AM_RANGE(0x500008, 0x500009) AM_READ(soundlatch3_word_r)
AM_RANGE(0x50000a, 0x50000b) AM_READ(soundlatch4_word_r)
AM_RANGE(0x500008, 0x500009) AM_DEVREAD8("soundlatch3", generic_latch_8_device, read, 0x00ff)
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(0x500010, 0x500011) AM_WRITE(toaplan2_coin_word_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(0x500006, 0x500007) AM_READ(video_count_r)
AM_RANGE(0x500008, 0x500009) AM_WRITE(toaplan2_coin_word_w)
AM_RANGE(0x500010, 0x500011) AM_READ(soundlatch3_word_r)
AM_RANGE(0x500012, 0x500013) AM_READ(soundlatch4_word_r)
AM_RANGE(0x500010, 0x500011) AM_DEVREAD8("soundlatch3", generic_latch_8_device, read, 0x00ff)
AM_RANGE(0x500012, 0x500013) AM_DEVREAD8("soundlatch4", generic_latch_8_device, read, 0x00ff)
AM_RANGE(0x500014, 0x500015) AM_WRITE(batrider_soundlatch_w)
AM_RANGE(0x500016, 0x500017) AM_WRITE(batrider_soundlatch2_w)
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(0xe00a, 0xe00a) AM_WRITE(raizing_z80_bankswitch_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)
ADDRESS_MAP_END
@ -1428,12 +1428,12 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( batrider_sound_z80_port, AS_IO, 8, toaplan2_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x40, 0x40) AM_WRITE(soundlatch3_byte_w)
AM_RANGE(0x42, 0x42) AM_WRITE(soundlatch4_byte_w)
AM_RANGE(0x40, 0x40) AM_DEVWRITE("soundlatch3", generic_latch_8_device, write)
AM_RANGE(0x42, 0x42) AM_DEVWRITE("soundlatch4", generic_latch_8_device, write)
AM_RANGE(0x44, 0x44) AM_WRITE(batrider_sndirq_w)
AM_RANGE(0x46, 0x46) AM_WRITE(batrider_clear_nmi_w)
AM_RANGE(0x48, 0x48) AM_READ(soundlatch_byte_r)
AM_RANGE(0x4a, 0x4a) AM_READ(soundlatch2_byte_r)
AM_RANGE(0x48, 0x48) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
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(0x82, 0x82) AM_DEVREADWRITE("oki1", 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 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x40, 0x40) AM_WRITE(soundlatch3_byte_w)
AM_RANGE(0x42, 0x42) AM_WRITE(soundlatch4_byte_w)
AM_RANGE(0x40, 0x40) AM_DEVWRITE("soundlatch3", generic_latch_8_device, write)
AM_RANGE(0x42, 0x42) AM_DEVWRITE("soundlatch4", generic_latch_8_device, write)
AM_RANGE(0x44, 0x44) AM_WRITE(batrider_sndirq_w)
AM_RANGE(0x46, 0x46) AM_WRITE(batrider_clear_nmi_w)
AM_RANGE(0x48, 0x48) AM_READ(soundlatch_byte_r)
AM_RANGE(0x4a, 0x4a) AM_READ(soundlatch2_byte_r)
AM_RANGE(0x48, 0x48) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
AM_RANGE(0x4a, 0x4a) AM_DEVREAD("soundlatch2", generic_latch_8_device, read)
AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("ymz", ymz280b_device, read, write)
ADDRESS_MAP_END
@ -3908,6 +3908,8 @@ static MACHINE_CONFIG_START( bgaregga, toaplan2_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", XTAL_32MHz/8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
@ -3964,6 +3966,11 @@ static MACHINE_CONFIG_START( batrider, toaplan2_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
MCFG_GENERIC_LATCH_8_ADD("soundlatch3")
MCFG_GENERIC_LATCH_8_ADD("soundlatch4")
MCFG_YM2151_ADD("ymsnd", XTAL_32MHz/8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
@ -4020,6 +4027,11 @@ static MACHINE_CONFIG_START( bbakraid, toaplan2_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
MCFG_GENERIC_LATCH_8_ADD("soundlatch3")
MCFG_GENERIC_LATCH_8_ADD("soundlatch4")
MCFG_SOUND_ADD("ymz", YMZ280B, XTAL_16_9344MHz)
// IRQ not used ??? Connected to a test pin (TP082)
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)
{
soundlatch_byte_w(space, offset, data);
m_soundlatch->write(space, offset, data);
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 )
AM_RANGE(0x0000, 0x3fff) AM_ROM
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)
ADDRESS_MAP_END
@ -775,6 +775,8 @@ static MACHINE_CONFIG_START( vsgongf, tsamurai_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("aysnd", AY8910, XTAL_24MHz/8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)

View File

@ -24,7 +24,7 @@
Remaining Issues:
-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
6202 /NMI = 58 Hz
VBlank = 58Hz
@ -171,7 +171,7 @@ WRITE8_MEMBER(vball_state::bankswitch_w)
/* The sound system comes all but verbatim from Double Dragon */
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);
}
@ -229,7 +229,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, vball_state )
AM_RANGE(0x8000, 0x87ff) AM_RAM
AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_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
@ -423,6 +423,8 @@ static MACHINE_CONFIG_START( vball, vball_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", 3579545)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
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)
{
soundlatch_byte_w(space, offset, data);
m_soundlatch->write(space, offset, data);
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(0xf800, 0xf803) AM_DEVREADWRITE("ymsnd", ym2608_device, read, write)
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
@ -382,6 +382,8 @@ static MACHINE_CONFIG_START( wc90, wc90_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2608, XTAL_8MHz) /* verified on pcb */
MCFG_YM2608_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
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
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
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
16x16 sprites. That snippet also does some ( nasty ) clipping.
@ -87,7 +87,6 @@ Noted added by ClawGrip 28-Mar-2008:
#include "emu.h"
#include "cpu/z80/z80.h"
#include "sound/2203intf.h"
#include "sound/msm5205.h"
#include "includes/wc90b.h"
#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)
{
soundlatch_byte_w(space, offset, data);
m_soundlatch->write(space, offset, data);
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(0xe800, 0xe801) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
AM_RANGE(0xf000, 0xf7ff) AM_RAM
AM_RANGE(0xf800, 0xf800) AM_READ(soundlatch_byte_r)
AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
ADDRESS_MAP_END
@ -365,6 +364,8 @@ static MACHINE_CONFIG_START( wc90b, wc90b_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2203, YM2203_CLOCK)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20)

View File

@ -4,11 +4,11 @@
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
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
********************************************************************************
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
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
********************************************************************************
@ -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
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 ...
- When it's ON, 1 credit will be automatically substracted, then the 4 players can
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 subtracted, then the 4 players can
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 ...
@ -333,7 +333,7 @@ WRITE16_MEMBER(welltris_state::sound_command_w)
if (ACCESSING_BITS_0_7)
{
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);
}
}
@ -383,7 +383,7 @@ static ADDRESS_MAP_START( sound_port_map, AS_IO, 8, welltris_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_WRITE(sound_bankswitch_w)
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)
ADDRESS_MAP_END
@ -727,6 +727,8 @@ static MACHINE_CONFIG_START( welltris, welltris_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_SOUND_ADD("ymsnd", YM2610, 8000000)
MCFG_YM2610_IRQ_HANDLER(WRITELINE(welltris_state, irqhandler))
MCFG_SOUND_ROUTE(0, "mono", 0.25)

View File

@ -140,7 +140,7 @@ Notes:
- 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):
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(0x8800, 0x8801) AM_DEVREADWRITE("ymsnd", ym2151_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
@ -219,7 +219,7 @@ WRITE16_MEMBER(wwfsstar_state::scroll_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 );
}
@ -437,6 +437,8 @@ static MACHINE_CONFIG_START( wwfsstar, wwfsstar_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz)
MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.45)

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