diff options
Diffstat (limited to 'src/mame/drivers/hyperspt.cpp')
-rw-r--r-- | src/mame/drivers/hyperspt.cpp | 32 |
1 files changed, 23 insertions, 9 deletions
diff --git a/src/mame/drivers/hyperspt.cpp b/src/mame/drivers/hyperspt.cpp index ce9f7df21ae..b003e0794ef 100644 --- a/src/mame/drivers/hyperspt.cpp +++ b/src/mame/drivers/hyperspt.cpp @@ -17,6 +17,7 @@ Based on drivers from Juno First emulator by Chris Hardy (chrish@kcbbs.gen.nz) #include "cpu/m6800/m6800.h" #include "cpu/m6809/m6809.h" #include "cpu/z80/z80.h" +#include "machine/74259.h" #include "machine/gen_latch.h" #include "machine/konami1.h" #include "machine/nvram.h" @@ -34,24 +35,28 @@ void hyperspt_state::machine_start() save_item(NAME(m_SN76496_latch)); } -WRITE8_MEMBER(hyperspt_state::coin_counter_w) +WRITE_LINE_MEMBER(hyperspt_state::coin_counter_1_w) { - machine().bookkeeping().coin_counter_w(offset, data); + machine().bookkeeping().coin_counter_w(0, state); } -WRITE8_MEMBER(hyperspt_state::irq_mask_w) +WRITE_LINE_MEMBER(hyperspt_state::coin_counter_2_w) { - m_irq_mask = data & 1; + machine().bookkeeping().coin_counter_w(1, state); +} + +WRITE_LINE_MEMBER(hyperspt_state::irq_mask_w) +{ + m_irq_mask = state; + if (!m_irq_mask) + m_maincpu->set_input_line(0, CLEAR_LINE); } static ADDRESS_MAP_START( common_map, AS_PROGRAM, 8, hyperspt_state ) AM_RANGE(0x1000, 0x10bf) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x10c0, 0x10ff) AM_RAM AM_SHARE("scroll") /* Scroll amount */ AM_RANGE(0x1400, 0x1400) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x1480, 0x1480) AM_WRITE(flipscreen_w) - AM_RANGE(0x1481, 0x1481) AM_DEVWRITE("trackfld_audio", trackfld_audio_device, konami_sh_irqtrigger_w) /* cause interrupt on audio CPU */ - AM_RANGE(0x1483, 0x1484) AM_WRITE(coin_counter_w) - AM_RANGE(0x1487, 0x1487) AM_WRITE(irq_mask_w) /* Interrupt enable */ + AM_RANGE(0x1480, 0x1487) AM_DEVWRITE("mainlatch", ls259_device, write_d0) AM_RANGE(0x1500, 0x1500) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) AM_RANGE(0x1600, 0x1600) AM_READ_PORT("DSW2") AM_RANGE(0x1680, 0x1680) AM_READ_PORT("SYSTEM") @@ -280,7 +285,7 @@ GFXDECODE_END INTERRUPT_GEN_MEMBER(hyperspt_state::vblank_irq) { if(m_irq_mask) - device.execute().set_input_line(0, HOLD_LINE); + device.execute().set_input_line(0, ASSERT_LINE); } static MACHINE_CONFIG_START( hyperspt ) @@ -293,6 +298,15 @@ static MACHINE_CONFIG_START( hyperspt ) MCFG_CPU_ADD("audiocpu", Z80,XTAL_14_31818MHz/4) /* verified on pcb */ MCFG_CPU_PROGRAM_MAP(hyperspt_sound_map) + MCFG_DEVICE_ADD("mainlatch", LS259, 0) // F2 + MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(WRITELINE(hyperspt_state, flipscreen_w)) + MCFG_ADDRESSABLE_LATCH_Q1_OUT_CB(DEVWRITELINE("trackfld_audio", trackfld_audio_device, sh_irqtrigger_w)) // SOUND ON + MCFG_ADDRESSABLE_LATCH_Q2_OUT_CB(NOOP) // END + MCFG_ADDRESSABLE_LATCH_Q3_OUT_CB(WRITELINE(hyperspt_state, coin_counter_1_w)) // COIN 1 + MCFG_ADDRESSABLE_LATCH_Q4_OUT_CB(WRITELINE(hyperspt_state, coin_counter_2_w)) // COIN 2 + MCFG_ADDRESSABLE_LATCH_Q5_OUT_CB(NOOP) // SA + MCFG_ADDRESSABLE_LATCH_Q7_OUT_CB(WRITELINE(hyperspt_state, irq_mask_w)) // INT + MCFG_NVRAM_ADD_0FILL("nvram") MCFG_WATCHDOG_ADD("watchdog") |