mirror of
https://github.com/holub/mame
synced 2025-07-05 09:57:47 +03:00
hook up sound cpu in spyhuntpr (nw)
This commit is contained in:
parent
665cce56de
commit
31175a49ae
@ -33,6 +33,7 @@ public:
|
||||
m_spriteram(*this, "spriteram"),
|
||||
m_scroll_lo(*this, "scroll_lo"),
|
||||
m_scroll_hi(*this, "scroll_hi"),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_audiocpu(*this, "audiocpu"),
|
||||
m_palette(*this, "palette"),
|
||||
m_gfxdecode(*this, "gfxdecode")
|
||||
@ -42,6 +43,7 @@ public:
|
||||
required_shared_ptr<UINT8> m_spriteram;
|
||||
required_shared_ptr<UINT8> m_scroll_lo;
|
||||
required_shared_ptr<UINT8> m_scroll_hi;
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_audiocpu;
|
||||
|
||||
virtual void machine_start() override;
|
||||
@ -56,6 +58,9 @@ public:
|
||||
TILE_GET_INFO_MEMBER(get_kungfum_bg_tile_info);
|
||||
DECLARE_WRITE8_MEMBER(spartanxtec_soundlatch_w);
|
||||
DECLARE_WRITE8_MEMBER(a801_w);
|
||||
DECLARE_WRITE8_MEMBER(sound_irq_ack);
|
||||
DECLARE_WRITE8_MEMBER(irq_ack);
|
||||
|
||||
required_device<palette_device> m_palette;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
|
||||
@ -165,6 +170,10 @@ WRITE8_MEMBER(spartanxtec_state::a801_w)
|
||||
if (data != 0xf0) printf("a801_w %02x\n", data);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(spartanxtec_state::irq_ack)
|
||||
{
|
||||
m_maincpu->set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE);
|
||||
}
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( spartanxtec_map, AS_PROGRAM, 8, spartanxtec_state )
|
||||
@ -178,7 +187,7 @@ static ADDRESS_MAP_START( spartanxtec_map, AS_PROGRAM, 8, spartanxtec_state )
|
||||
AM_RANGE(0x8102, 0x8102) AM_READ_PORT("SYSTEM")
|
||||
AM_RANGE(0x8103, 0x8103) AM_READ_PORT("P1")
|
||||
|
||||
// AM_RANGE(0x8200, 0x8200) AM_WRITENOP
|
||||
AM_RANGE(0x8200, 0x8200) AM_WRITE(irq_ack)
|
||||
|
||||
AM_RANGE(0xA801, 0xA801) AM_WRITE(a801_w)
|
||||
|
||||
@ -191,8 +200,15 @@ static ADDRESS_MAP_START( spartanxtec_map, AS_PROGRAM, 8, spartanxtec_state )
|
||||
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
|
||||
WRITE8_MEMBER(spartanxtec_state::sound_irq_ack)
|
||||
{
|
||||
m_audiocpu->set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE);
|
||||
}
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( spartanxtec_sound_map, AS_PROGRAM, 8, spartanxtec_state )
|
||||
AM_RANGE(0x0000, 0x0000) AM_WRITENOP
|
||||
|
||||
AM_RANGE(0x0000, 0x0fff) AM_ROM
|
||||
AM_RANGE(0x8000, 0x83ff) AM_RAM
|
||||
@ -202,7 +218,7 @@ ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( spartanxtec_sound_io, AS_IO, 8, spartanxtec_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0x0000, 0x0000) AM_WRITENOP
|
||||
AM_RANGE(0x0000, 0x0000) AM_WRITE( sound_irq_ack )
|
||||
|
||||
AM_RANGE(0x0012, 0x0013) AM_DEVWRITE("ay3", ay8910_device, address_data_w)
|
||||
AM_RANGE(0x0012, 0x0012) AM_DEVREAD("ay3", ay8910_device, data_r)
|
||||
@ -341,12 +357,12 @@ static MACHINE_CONFIG_START( spartanxtec, spartanxtec_state )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", Z80,4000000) /* ? MHz */
|
||||
MCFG_CPU_PROGRAM_MAP(spartanxtec_map)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", spartanxtec_state, irq0_line_hold)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", spartanxtec_state, irq0_line_assert)
|
||||
|
||||
MCFG_CPU_ADD("audiocpu", Z80,4000000)
|
||||
MCFG_CPU_PROGRAM_MAP(spartanxtec_sound_map)
|
||||
MCFG_CPU_IO_MAP(spartanxtec_sound_io)
|
||||
MCFG_CPU_PERIODIC_INT_DRIVER(spartanxtec_state, irq0_line_hold, 1000) // controls speed of music
|
||||
MCFG_CPU_PERIODIC_INT_DRIVER(spartanxtec_state, irq0_line_assert, 1000) // controls speed of music
|
||||
// MCFG_CPU_VBLANK_INT_DRIVER("screen", spartanxtec_state, irq0_line_hold)
|
||||
|
||||
/* video hardware */
|
||||
|
@ -8,12 +8,14 @@ single PCB with 2x Z80
|
||||
significant changes compared to original HW
|
||||
non-interlaced
|
||||
|
||||
sound system appears to be the same as 'spartanxtec.cpp'
|
||||
|
||||
*/
|
||||
|
||||
#include "emu.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "sound/ay8910.h"
|
||||
#include "machine/z80ctc.h" // not actually present here?
|
||||
|
||||
|
||||
#define MASTER_CLOCK XTAL_20MHz // ??
|
||||
|
||||
@ -69,6 +71,7 @@ public:
|
||||
DECLARE_WRITE8_MEMBER(spyhunt_videoram_w);
|
||||
DECLARE_WRITE8_MEMBER(spyhunt_alpharam_w);
|
||||
DECLARE_WRITE8_MEMBER(spyhunt_scroll_value_w);
|
||||
DECLARE_WRITE8_MEMBER(sound_irq_ack);
|
||||
|
||||
TILEMAP_MAPPER_MEMBER(spyhunt_bg_scan);
|
||||
TILE_GET_INFO_MEMBER(spyhunt_get_bg_tile_info);
|
||||
@ -262,6 +265,8 @@ UINT32 spyhuntertec_state::screen_update_spyhuntertec(screen_device &screen, bit
|
||||
|
||||
WRITE8_MEMBER(spyhuntertec_state::spyhuntertec_fd00_w)
|
||||
{
|
||||
soundlatch_byte_w(space, 0, data);
|
||||
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
}
|
||||
|
||||
static ADDRESS_MAP_START( spyhuntertec_map, AS_PROGRAM, 8, spyhuntertec_state )
|
||||
@ -305,13 +310,22 @@ ADDRESS_MAP_END
|
||||
static ADDRESS_MAP_START( spyhuntertec_sound_map, AS_PROGRAM, 8, spyhuntertec_state )
|
||||
AM_RANGE(0x0000, 0x1fff) AM_ROM
|
||||
AM_RANGE(0x8000, 0x83ff) AM_RAM
|
||||
// AM_RANGE(0xfe00, 0xffff) AM_RAM
|
||||
|
||||
AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
WRITE8_MEMBER(spyhuntertec_state::sound_irq_ack)
|
||||
{
|
||||
m_audiocpu->set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE);
|
||||
}
|
||||
|
||||
static ADDRESS_MAP_START( spyhuntertec_sound_portmap, AS_IO, 8, spyhuntertec_state )
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
|
||||
AM_RANGE(0x00, 0x00) AM_WRITE(sound_irq_ack)
|
||||
|
||||
AM_RANGE(0x12, 0x13) AM_DEVWRITE("ay1", ay8912_device, address_data_w)
|
||||
AM_RANGE(0x14, 0x15) AM_DEVWRITE("ay2", ay8912_device, address_data_w)
|
||||
AM_RANGE(0x18, 0x19) AM_DEVWRITE("ay3", ay8912_device, address_data_w)
|
||||
@ -501,18 +515,7 @@ static MACHINE_CONFIG_START( spyhuntertec, spyhuntertec_state )
|
||||
MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/4)
|
||||
MCFG_CPU_PROGRAM_MAP(spyhuntertec_map)
|
||||
MCFG_CPU_IO_MAP(spyhuntertec_portmap)
|
||||
// MCFG_CPU_CONFIG(mcr_daisy_chain)
|
||||
// MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", spyhuntertec_state, mcr_interrupt, "screen", 0, 1)
|
||||
|
||||
// MCFG_DEVICE_ADD("ctc", Z80CTC, MASTER_CLOCK/4 /* same as "maincpu" */)
|
||||
// MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
|
||||
// MCFG_Z80CTC_ZC0_CB(DEVWRITELINE("ctc", z80ctc_device, trg1))
|
||||
|
||||
//MCFG_WATCHDOG_VBLANK_INIT(16)
|
||||
// MCFG_MACHINE_START_OVERRIDE(spyhuntertec_state,mcr)
|
||||
// MCFG_MACHINE_RESET_OVERRIDE(spyhuntertec_state,mcr)
|
||||
|
||||
// MCFG_NVRAM_ADD_0FILL("nvram")
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", spyhuntertec_state, irq0_line_hold)
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
@ -530,10 +533,10 @@ static MACHINE_CONFIG_START( spyhuntertec, spyhuntertec_state )
|
||||
// MCFG_PALETTE_INIT_OWNER(spyhuntertec_state,spyhunt)
|
||||
|
||||
|
||||
MCFG_CPU_ADD("audiocpu", Z80, 3000000 )
|
||||
MCFG_CPU_ADD("audiocpu", Z80, 4000000 )
|
||||
MCFG_CPU_PROGRAM_MAP(spyhuntertec_sound_map)
|
||||
MCFG_CPU_IO_MAP(spyhuntertec_sound_portmap)
|
||||
// MCFG_CPU_PERIODIC_INT_DRIVER(spyhuntertec_state, irq0_line_hold, 4*60)
|
||||
MCFG_CPU_PERIODIC_INT_DRIVER(spyhuntertec_state, irq0_line_assert, 1000)
|
||||
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user