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