summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/ultratnk.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/ultratnk.cpp')
-rw-r--r--src/mame/drivers/ultratnk.cpp34
1 files changed, 15 insertions, 19 deletions
diff --git a/src/mame/drivers/ultratnk.cpp b/src/mame/drivers/ultratnk.cpp
index 6ab14d4c161..369e6891b68 100644
--- a/src/mame/drivers/ultratnk.cpp
+++ b/src/mame/drivers/ultratnk.cpp
@@ -10,6 +10,7 @@ Atari Ultra Tank driver
#include "includes/ultratnk.h"
#include "audio/sprint4.h"
#include "cpu/m6502/m6502.h"
+#include "machine/74259.h"
#include "speaker.h"
#define MASTER_CLOCK XTAL_12_096MHz
@@ -134,30 +135,22 @@ WRITE8_MEMBER(ultratnk_state::da_latch_w)
}
-WRITE8_MEMBER(ultratnk_state::led_1_w)
+WRITE_LINE_MEMBER(ultratnk_state::led_1_w)
{
- output().set_led_value(0, offset & 1); /* left player start */
+ output().set_led_value(0, state); /* left player start */
}
-WRITE8_MEMBER(ultratnk_state::led_2_w)
+WRITE_LINE_MEMBER(ultratnk_state::led_2_w)
{
- output().set_led_value(1, offset & 1); /* right player start */
+ output().set_led_value(1, state); /* right player start */
}
-WRITE8_MEMBER(ultratnk_state::lockout_w)
+WRITE_LINE_MEMBER(ultratnk_state::lockout_w)
{
- machine().bookkeeping().coin_lockout_global_w(~offset & 1);
+ machine().bookkeeping().coin_lockout_global_w(!state);
}
-WRITE8_MEMBER(ultratnk_state::fire_1_w)
-{
- m_discrete->write(space, ULTRATNK_FIRE_EN_1, offset & 1);
-}
-WRITE8_MEMBER(ultratnk_state::fire_2_w)
-{
- m_discrete->write(space, ULTRATNK_FIRE_EN_2, offset & 1);
-}
WRITE8_MEMBER(ultratnk_state::attract_w)
{
m_discrete->write(space, ULTRATNK_ATTRACT_EN, data & 1);
@@ -189,11 +182,7 @@ static ADDRESS_MAP_START( ultratnk_cpu_map, AS_PROGRAM, 8, ultratnk_state )
AM_RANGE(0x2040, 0x2041) AM_MIRROR(0x718) AM_WRITE(da_latch_w)
AM_RANGE(0x2042, 0x2043) AM_MIRROR(0x718) AM_WRITE(explosion_w)
AM_RANGE(0x2044, 0x2045) AM_MIRROR(0x718) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0x2066, 0x2067) AM_MIRROR(0x710) AM_WRITE(lockout_w)
- AM_RANGE(0x2068, 0x2069) AM_MIRROR(0x710) AM_WRITE(led_1_w)
- AM_RANGE(0x206a, 0x206b) AM_MIRROR(0x710) AM_WRITE(led_2_w)
- AM_RANGE(0x206c, 0x206d) AM_MIRROR(0x710) AM_WRITE(fire_2_w)
- AM_RANGE(0x206e, 0x206f) AM_MIRROR(0x710) AM_WRITE(fire_1_w)
+ AM_RANGE(0x2060, 0x206f) AM_MIRROR(0x710) AM_DEVWRITE("latch", f9334_device, write_a0)
AM_RANGE(0x2800, 0x2fff) AM_NOP /* diagnostic ROM */
AM_RANGE(0x3000, 0x3fff) AM_ROM
@@ -315,6 +304,13 @@ static MACHINE_CONFIG_START( ultratnk )
MCFG_CPU_ADD("maincpu", M6502, PIXEL_CLOCK / 8)
MCFG_CPU_PROGRAM_MAP(ultratnk_cpu_map)
+ MCFG_DEVICE_ADD("latch", F9334, 0) // E11
+ MCFG_ADDRESSABLE_LATCH_Q3_OUT_CB(WRITELINE(ultratnk_state, lockout_w))
+ MCFG_ADDRESSABLE_LATCH_Q4_OUT_CB(WRITELINE(ultratnk_state, led_1_w))
+ MCFG_ADDRESSABLE_LATCH_Q5_OUT_CB(WRITELINE(ultratnk_state, led_2_w))
+ MCFG_ADDRESSABLE_LATCH_Q6_OUT_CB(DEVWRITELINE("discrete", discrete_device, write_line<ULTRATNK_FIRE_EN_2>))
+ MCFG_ADDRESSABLE_LATCH_Q7_OUT_CB(DEVWRITELINE("discrete", discrete_device, write_line<ULTRATNK_FIRE_EN_1>))
+
MCFG_WATCHDOG_ADD("watchdog")
MCFG_WATCHDOG_VBLANK_INIT("screen", 8)