summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/tsamurai.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/tsamurai.cpp')
-rw-r--r--src/mame/drivers/tsamurai.cpp56
1 files changed, 37 insertions, 19 deletions
diff --git a/src/mame/drivers/tsamurai.cpp b/src/mame/drivers/tsamurai.cpp
index 1b98bfcd4cb..eaff6bfa1fe 100644
--- a/src/mame/drivers/tsamurai.cpp
+++ b/src/mame/drivers/tsamurai.cpp
@@ -42,6 +42,7 @@ the "America" release.
#include "includes/tsamurai.h"
#include "cpu/z80/z80.h"
+#include "machine/74259.h"
#include "sound/ay8910.h"
#include "sound/dac.h"
#include "sound/volt_reg.h"
@@ -73,9 +74,9 @@ MACHINE_START_MEMBER(tsamurai_state, vsgongf)
machine_start();
}
-WRITE8_MEMBER(tsamurai_state::nmi_enable_w)
+WRITE_LINE_MEMBER(tsamurai_state::nmi_enable_w)
{
- m_nmi_enabled = data;
+ m_nmi_enabled = state;
}
INTERRUPT_GEN_MEMBER(tsamurai_state::interrupt)
@@ -126,14 +127,19 @@ WRITE8_MEMBER(tsamurai_state::m660_sound_command3_w)
m_audio3->set_input_line(0, HOLD_LINE );
}
-WRITE8_MEMBER(tsamurai_state::flip_screen_w)
+WRITE_LINE_MEMBER(tsamurai_state::flip_screen_w)
{
- flip_screen_set(data);
+ flip_screen_set(state);
}
-WRITE8_MEMBER(tsamurai_state::coincounter_w)
+WRITE_LINE_MEMBER(tsamurai_state::coin1_counter_w)
{
- machine().bookkeeping().coin_counter_w(offset,data);
+ machine().bookkeeping().coin_counter_w(0, state);
+}
+
+WRITE_LINE_MEMBER(tsamurai_state::coin2_counter_w)
+{
+ machine().bookkeeping().coin_counter_w(1, state);
}
@@ -164,10 +170,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, tsamurai_state )
AM_RANGE(0xf804, 0xf804) AM_READ_PORT("DSW1")
AM_RANGE(0xf805, 0xf805) AM_READ_PORT("DSW2")
- AM_RANGE(0xfc00, 0xfc00) AM_WRITE(flip_screen_w)
- AM_RANGE(0xfc01, 0xfc01) AM_WRITE(nmi_enable_w)
- AM_RANGE(0xfc02, 0xfc02) AM_WRITE(textbank1_w)
- AM_RANGE(0xfc03, 0xfc04) AM_WRITE(coincounter_w)
+ AM_RANGE(0xfc00, 0xfc07) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
ADDRESS_MAP_END
static ADDRESS_MAP_START( m660_map, AS_PROGRAM, 8, tsamurai_state )
@@ -198,11 +201,7 @@ static ADDRESS_MAP_START( m660_map, AS_PROGRAM, 8, tsamurai_state )
AM_RANGE(0xf804, 0xf804) AM_READ_PORT("DSW1")
AM_RANGE(0xf805, 0xf805) AM_READ_PORT("DSW2")
- AM_RANGE(0xfc00, 0xfc00) AM_WRITE(flip_screen_w)
- AM_RANGE(0xfc01, 0xfc01) AM_WRITE(nmi_enable_w)
- AM_RANGE(0xfc02, 0xfc02) AM_WRITE(textbank1_w)
- AM_RANGE(0xfc03, 0xfc04) AM_WRITE(coincounter_w)
- AM_RANGE(0xfc07, 0xfc07) AM_WRITE(m660_textbank2_w)/* Mission 660 uses a bit here */
+ AM_RANGE(0xfc00, 0xfc07) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
ADDRESS_MAP_END
static ADDRESS_MAP_START( z80_io_map, AS_IO, 8, tsamurai_state )
@@ -354,10 +353,7 @@ static ADDRESS_MAP_START( vsgongf_map, AS_PROGRAM, 8, tsamurai_state )
AM_RANGE(0xf800, 0xf800) AM_WRITENOP
AM_RANGE(0xf801, 0xf801) AM_WRITENOP /* vreg? always 0 */
AM_RANGE(0xf803, 0xf803) AM_WRITENOP /* vreg? always 0 */
- AM_RANGE(0xfc00, 0xfc00) AM_RAM /* vreg? always 0 */
- AM_RANGE(0xfc01, 0xfc01) AM_WRITE(nmi_enable_w)
- AM_RANGE(0xfc02, 0xfc03) AM_WRITE(coincounter_w)
- AM_RANGE(0xfc04, 0xfc04) AM_WRITE(textbank1_w)
+ AM_RANGE(0xfc00, 0xfc07) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_vsgongf_map, AS_PROGRAM, 8, tsamurai_state )
@@ -722,6 +718,13 @@ static MACHINE_CONFIG_START( tsamurai )
MCFG_MACHINE_START_OVERRIDE(tsamurai_state,tsamurai)
+ MCFG_DEVICE_ADD("mainlatch", LS259, 0)
+ MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(WRITELINE(tsamurai_state, flip_screen_w))
+ MCFG_ADDRESSABLE_LATCH_Q1_OUT_CB(WRITELINE(tsamurai_state, nmi_enable_w))
+ MCFG_ADDRESSABLE_LATCH_Q2_OUT_CB(WRITELINE(tsamurai_state, textbank1_w))
+ MCFG_ADDRESSABLE_LATCH_Q3_OUT_CB(WRITELINE(tsamurai_state, coin1_counter_w))
+ MCFG_ADDRESSABLE_LATCH_Q4_OUT_CB(WRITELINE(tsamurai_state, coin2_counter_w))
+
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
@@ -763,6 +766,13 @@ static MACHINE_CONFIG_START( vsgongf )
MCFG_MACHINE_START_OVERRIDE(tsamurai_state,vsgongf)
+ MCFG_DEVICE_ADD("mainlatch", LS259, 0) // 4L
+ MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(NOOP) // vreg? always 0
+ MCFG_ADDRESSABLE_LATCH_Q1_OUT_CB(WRITELINE(tsamurai_state, nmi_enable_w))
+ MCFG_ADDRESSABLE_LATCH_Q2_OUT_CB(WRITELINE(tsamurai_state, coin1_counter_w))
+ MCFG_ADDRESSABLE_LATCH_Q3_OUT_CB(WRITELINE(tsamurai_state, coin2_counter_w))
+ MCFG_ADDRESSABLE_LATCH_Q4_OUT_CB(WRITELINE(tsamurai_state, textbank1_w))
+
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
@@ -811,6 +821,14 @@ static MACHINE_CONFIG_START( m660 )
MCFG_MACHINE_START_OVERRIDE(tsamurai_state,m660)
+ MCFG_DEVICE_ADD("mainlatch", LS259, 0)
+ MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(WRITELINE(tsamurai_state, flip_screen_w))
+ MCFG_ADDRESSABLE_LATCH_Q1_OUT_CB(WRITELINE(tsamurai_state, nmi_enable_w))
+ MCFG_ADDRESSABLE_LATCH_Q2_OUT_CB(WRITELINE(tsamurai_state, textbank1_w))
+ MCFG_ADDRESSABLE_LATCH_Q3_OUT_CB(WRITELINE(tsamurai_state, coin1_counter_w))
+ MCFG_ADDRESSABLE_LATCH_Q4_OUT_CB(WRITELINE(tsamurai_state, coin2_counter_w))
+ MCFG_ADDRESSABLE_LATCH_Q7_OUT_CB(WRITELINE(tsamurai_state, textbank2_w))
+
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)