summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/hyperspt.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/hyperspt.cpp')
-rw-r--r--src/mame/drivers/hyperspt.cpp32
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")