summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/thoop2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/thoop2.cpp')
-rw-r--r--src/mame/drivers/thoop2.cpp56
1 files changed, 34 insertions, 22 deletions
diff --git a/src/mame/drivers/thoop2.cpp b/src/mame/drivers/thoop2.cpp
index 297291c49b1..7a9c8b01d1d 100644
--- a/src/mame/drivers/thoop2.cpp
+++ b/src/mame/drivers/thoop2.cpp
@@ -32,30 +32,34 @@ void thoop2_state::machine_start()
membank("okibank")->configure_entries(0, 16, memregion("oki")->base(), 0x10000);
}
-WRITE16_MEMBER(thoop2_state::OKIM6295_bankswitch_w)
+WRITE8_MEMBER(thoop2_state::OKIM6295_bankswitch_w)
{
- if (ACCESSING_BITS_0_7){
- membank("okibank")->set_entry(data & 0x0f);
- }
+ membank("okibank")->set_entry(data & 0x0f);
}
-WRITE16_MEMBER(thoop2_state::coin_w)
+WRITE8_MEMBER(thoop2_state::coin_w)
{
- if (ACCESSING_BITS_0_7){
- switch ((offset >> 3)){
- case 0x00: /* Coin Lockouts */
- case 0x01:
- machine().bookkeeping().coin_lockout_w((offset >> 3) & 0x01, ~data & 0x01);
- break;
- case 0x02: /* Coin Counters */
- case 0x03:
- machine().bookkeeping().coin_counter_w((offset >> 3) & 0x01, data & 0x01);
- break;
- }
- }
-
- /* 04b unknown. Sound related? */
- /* 05b unknown */
+ m_outlatch->write_bit(offset >> 3, BIT(data, 0));
+}
+
+WRITE_LINE_MEMBER(thoop2_state::coin1_lockout_w)
+{
+ machine().bookkeeping().coin_lockout_w(0, !state);
+}
+
+WRITE_LINE_MEMBER(thoop2_state::coin2_lockout_w)
+{
+ machine().bookkeeping().coin_lockout_w(1, !state);
+}
+
+WRITE_LINE_MEMBER(thoop2_state::coin1_counter_w)
+{
+ machine().bookkeeping().coin_counter_w(0, state);
+}
+
+WRITE_LINE_MEMBER(thoop2_state::coin2_counter_w)
+{
+ machine().bookkeeping().coin_counter_w(1, state);
}
WRITE8_MEMBER(thoop2_state::shareram_w)
@@ -88,9 +92,9 @@ static ADDRESS_MAP_START( thoop2_map, AS_PROGRAM, 16, thoop2_state )
AM_RANGE(0x700004, 0x700005) AM_READ_PORT("P1")
AM_RANGE(0x700006, 0x700007) AM_READ_PORT("P2")
AM_RANGE(0x700008, 0x700009) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x70000c, 0x70000d) AM_WRITE(OKIM6295_bankswitch_w) /* OKI6295 bankswitch */
+ AM_RANGE(0x70000a, 0x70000b) AM_SELECT(0x000070) AM_WRITE8(coin_w, 0x00ff) /* Coin Counters + Coin Lockout */
+ AM_RANGE(0x70000c, 0x70000d) AM_WRITE8(OKIM6295_bankswitch_w, 0x00ff) /* OKI6295 bankswitch */
AM_RANGE(0x70000e, 0x70000f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) /* OKI6295 data register */
- AM_RANGE(0x70000a, 0x70005b) AM_WRITE(coin_w) /* Coin Counters + Coin Lockout */
AM_RANGE(0xfe0000, 0xfe7fff) AM_RAM /* Work RAM */
AM_RANGE(0xfe8000, 0xfeffff) AM_RAM AM_SHARE("shareram") /* Work RAM (shared with D5002FP) */
ADDRESS_MAP_END
@@ -224,6 +228,14 @@ static MACHINE_CONFIG_START( thoop2 )
MCFG_DEVICE_ADD("gaelco_ds5002fp", GAELCO_DS5002FP, XTAL_24MHz / 2)
MCFG_DEVICE_ADDRESS_MAP(0, mcu_hostmem_map)
+ MCFG_DEVICE_ADD("outlatch", LS259, 0)
+ MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(WRITELINE(thoop2_state, coin1_lockout_w))
+ MCFG_ADDRESSABLE_LATCH_Q1_OUT_CB(WRITELINE(thoop2_state, coin2_lockout_w))
+ MCFG_ADDRESSABLE_LATCH_Q2_OUT_CB(WRITELINE(thoop2_state, coin1_counter_w))
+ MCFG_ADDRESSABLE_LATCH_Q3_OUT_CB(WRITELINE(thoop2_state, coin2_counter_w))
+ MCFG_ADDRESSABLE_LATCH_Q4_OUT_CB(NOOP) // unknown. Sound related?
+ MCFG_ADDRESSABLE_LATCH_Q5_OUT_CB(NOOP) // unknown
+
MCFG_WATCHDOG_ADD("watchdog")
/* video hardware */