summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/megazone.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/megazone.cpp')
-rw-r--r--src/mame/drivers/megazone.cpp25
1 files changed, 17 insertions, 8 deletions
diff --git a/src/mame/drivers/megazone.cpp b/src/mame/drivers/megazone.cpp
index 85928fbea61..e6c1c69de28 100644
--- a/src/mame/drivers/megazone.cpp
+++ b/src/mame/drivers/megazone.cpp
@@ -15,6 +15,7 @@ To enter service mode, keep 1&2 pressed on reset
#include "cpu/m6809/m6809.h"
#include "cpu/mcs48/mcs48.h"
#include "cpu/z80/z80.h"
+#include "machine/74259.h"
#include "machine/gen_latch.h"
#include "machine/konami1.h"
#include "machine/watchdog.h"
@@ -75,21 +76,24 @@ WRITE8_MEMBER(megazone_state::i8039_irqen_and_status_w)
m_i8039_status = (data & 0x70) >> 4;
}
-WRITE8_MEMBER(megazone_state::megazone_coin_counter_w)
+WRITE_LINE_MEMBER(megazone_state::coin_counter_1_w)
{
- machine().bookkeeping().coin_counter_w(1 - offset, data); /* 1-offset, because coin counters are in reversed order */
+ machine().bookkeeping().coin_counter_w(0, state);
}
-WRITE8_MEMBER(megazone_state::irq_mask_w)
+WRITE_LINE_MEMBER(megazone_state::coin_counter_2_w)
{
- m_irq_mask = data & 1;
+ machine().bookkeeping().coin_counter_w(1, state);
+}
+
+WRITE_LINE_MEMBER(megazone_state::irq_mask_w)
+{
+ m_irq_mask = state;
}
static ADDRESS_MAP_START( megazone_map, AS_PROGRAM, 8, megazone_state )
- AM_RANGE(0x0000, 0x0001) AM_WRITE(megazone_coin_counter_w) /* coin counter 2, coin counter 1 */
- AM_RANGE(0x0005, 0x0005) AM_WRITE(megazone_flipscreen_w)
- AM_RANGE(0x0007, 0x0007) AM_WRITE(irq_mask_w)
+ AM_RANGE(0x0000, 0x0007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
AM_RANGE(0x1000, 0x1000) AM_WRITEONLY AM_SHARE("scrolly")
AM_RANGE(0x1800, 0x1800) AM_WRITEONLY AM_SHARE("scrollx")
@@ -224,7 +228,6 @@ void megazone_state::machine_start()
void megazone_state::machine_reset()
{
- m_flipscreen = 0;
m_i8039_status = 0;
}
@@ -255,6 +258,12 @@ static MACHINE_CONFIG_START( megazone )
MCFG_QUANTUM_TIME(attotime::from_hz(900))
+ MCFG_DEVICE_ADD("mainlatch", LS259, 0) // 13A
+ MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(WRITELINE(megazone_state, coin_counter_2_w))
+ MCFG_ADDRESSABLE_LATCH_Q1_OUT_CB(WRITELINE(megazone_state, coin_counter_1_w))
+ MCFG_ADDRESSABLE_LATCH_Q5_OUT_CB(WRITELINE(megazone_state, flipscreen_w))
+ MCFG_ADDRESSABLE_LATCH_Q7_OUT_CB(WRITELINE(megazone_state, irq_mask_w))
+
MCFG_WATCHDOG_ADD("watchdog")
/* video hardware */