From 00288a0257911fe961258b9151743b2d0f3f78cd Mon Sep 17 00:00:00 2001 From: AJR Date: Wed, 7 Jun 2017 17:57:55 -0400 Subject: Use callbacks to set coin counters and coin lockouts from Taito I/O devices (nw) This is a largish and not particularly elegant change, but those outputs aren't exactly internal. --- src/mame/drivers/asuka.cpp | 14 ++++++++++++++ src/mame/drivers/ninjaw.cpp | 11 +++++++++++ src/mame/drivers/othunder.cpp | 9 +++++++++ src/mame/drivers/slapshot.cpp | 10 ++++++++++ src/mame/drivers/taito_b.cpp | 36 +++++++++++++++++++++++++++++------- src/mame/drivers/taito_f2.cpp | 12 ++++++++++++ src/mame/drivers/taito_h.cpp | 11 +++++++++++ src/mame/drivers/taito_l.cpp | 6 ++++-- src/mame/drivers/taito_z.cpp | 17 +++++++++++++++++ src/mame/drivers/taitoair.cpp | 9 +++++++++ src/mame/drivers/taitojc.cpp | 10 ++++++++++ src/mame/drivers/topspeed.cpp | 9 +++++++++ src/mame/drivers/warriorb.cpp | 10 ++++++++++ src/mame/drivers/wgp.cpp | 9 +++++++++ src/mame/includes/asuka.h | 1 + src/mame/includes/ninjaw.h | 1 + src/mame/includes/othunder.h | 1 + src/mame/includes/slapshot.h | 1 + src/mame/includes/taito_b.h | 1 + src/mame/includes/taito_f2.h | 1 + src/mame/includes/taito_h.h | 1 + src/mame/includes/taito_l.h | 2 +- src/mame/includes/taito_z.h | 1 + src/mame/includes/taitoair.h | 1 + src/mame/includes/taitojc.h | 2 ++ src/mame/includes/topspeed.h | 1 + src/mame/includes/warriorb.h | 1 + src/mame/includes/wgp.h | 1 + src/mame/machine/taitoio.cpp | 22 +++++++++------------- src/mame/machine/taitoio.h | 15 +++++++++++++++ 30 files changed, 203 insertions(+), 23 deletions(-) diff --git a/src/mame/drivers/asuka.cpp b/src/mame/drivers/asuka.cpp index e52ed697206..7d0bf06e262 100644 --- a/src/mame/drivers/asuka.cpp +++ b/src/mame/drivers/asuka.cpp @@ -315,6 +315,15 @@ WRITE16_MEMBER(asuka_state::cadash_share_w) } +WRITE8_MEMBER(asuka_state::coin_control_w) +{ + machine().bookkeeping().coin_lockout_w(0, ~data & 0x01); + machine().bookkeeping().coin_lockout_w(1, ~data & 0x02); + machine().bookkeeping().coin_counter_w(0, data & 0x04); + machine().bookkeeping().coin_counter_w(1, data & 0x08); +} + + /*********************************************************** MEMORY STRUCTURES ***********************************************************/ @@ -890,6 +899,7 @@ static MACHINE_CONFIG_START( asuka ) MCFG_TC0220IOC_READ_1_CB(IOPORT("DSWB")) MCFG_TC0220IOC_READ_2_CB(IOPORT("IN0")) MCFG_TC0220IOC_READ_3_CB(IOPORT("IN1")) + MCFG_TC0220IOC_WRITE_4_CB(WRITE8(asuka_state, coin_control_w)) MCFG_TC0220IOC_READ_7_CB(IOPORT("IN2")) /* video hardware */ @@ -964,6 +974,7 @@ static MACHINE_CONFIG_START( cadash ) MCFG_TC0220IOC_READ_1_CB(IOPORT("DSWB")) MCFG_TC0220IOC_READ_2_CB(IOPORT("IN0")) MCFG_TC0220IOC_READ_3_CB(IOPORT("IN1")) + MCFG_TC0220IOC_WRITE_4_CB(WRITE8(asuka_state, coin_control_w)) MCFG_TC0220IOC_READ_7_CB(IOPORT("IN2")) /* video hardware */ @@ -1027,6 +1038,7 @@ static MACHINE_CONFIG_START( mofflott ) MCFG_TC0220IOC_READ_1_CB(IOPORT("DSWB")) MCFG_TC0220IOC_READ_2_CB(IOPORT("IN0")) MCFG_TC0220IOC_READ_3_CB(IOPORT("IN1")) + MCFG_TC0220IOC_WRITE_4_CB(WRITE8(asuka_state, coin_control_w)) MCFG_TC0220IOC_READ_7_CB(IOPORT("IN2")) /* video hardware */ @@ -1097,6 +1109,7 @@ static MACHINE_CONFIG_START( galmedes ) MCFG_TC0220IOC_READ_1_CB(IOPORT("DSWB")) MCFG_TC0220IOC_READ_2_CB(IOPORT("IN0")) MCFG_TC0220IOC_READ_3_CB(IOPORT("IN1")) + MCFG_TC0220IOC_WRITE_4_CB(WRITE8(asuka_state, coin_control_w)) MCFG_TC0220IOC_READ_7_CB(IOPORT("IN2")) /* video hardware */ @@ -1159,6 +1172,7 @@ static MACHINE_CONFIG_START( eto ) MCFG_TC0220IOC_READ_1_CB(IOPORT("DSWB")) MCFG_TC0220IOC_READ_2_CB(IOPORT("IN0")) MCFG_TC0220IOC_READ_3_CB(IOPORT("IN1")) + MCFG_TC0220IOC_WRITE_4_CB(WRITE8(asuka_state, coin_control_w)) MCFG_TC0220IOC_READ_7_CB(IOPORT("IN2")) /* video hardware */ diff --git a/src/mame/drivers/ninjaw.cpp b/src/mame/drivers/ninjaw.cpp index d6d72ad8b11..cb9e15ad39b 100644 --- a/src/mame/drivers/ninjaw.cpp +++ b/src/mame/drivers/ninjaw.cpp @@ -348,6 +348,15 @@ WRITE16_MEMBER(ninjaw_state::cpua_ctrl_w) } +WRITE8_MEMBER(ninjaw_state::coin_control_w) +{ + machine().bookkeeping().coin_lockout_w(0, ~data & 0x01); + machine().bookkeeping().coin_lockout_w(1, ~data & 0x02); + machine().bookkeeping().coin_counter_w(0, data & 0x04); + machine().bookkeeping().coin_counter_w(1, data & 0x08); +} + + /***************************************** SOUND *****************************************/ @@ -744,6 +753,7 @@ static MACHINE_CONFIG_START( ninjaw ) MCFG_TC0220IOC_READ_1_CB(IOPORT("DSWB")) MCFG_TC0220IOC_READ_2_CB(IOPORT("IN0")) MCFG_TC0220IOC_READ_3_CB(IOPORT("IN1")) + MCFG_TC0220IOC_WRITE_4_CB(WRITE8(ninjaw_state, coin_control_w)) MCFG_TC0220IOC_READ_7_CB(IOPORT("IN2")) /* video hardware */ @@ -864,6 +874,7 @@ static MACHINE_CONFIG_START( darius2 ) MCFG_TC0220IOC_READ_1_CB(IOPORT("DSWB")) MCFG_TC0220IOC_READ_2_CB(IOPORT("IN0")) MCFG_TC0220IOC_READ_3_CB(IOPORT("IN1")) + MCFG_TC0220IOC_WRITE_4_CB(WRITE8(ninjaw_state, coin_control_w)) MCFG_TC0220IOC_READ_7_CB(IOPORT("IN2")) /* video hardware */ diff --git a/src/mame/drivers/othunder.cpp b/src/mame/drivers/othunder.cpp index c577422a7e1..079a9210c15 100644 --- a/src/mame/drivers/othunder.cpp +++ b/src/mame/drivers/othunder.cpp @@ -376,6 +376,14 @@ WRITE8_MEMBER(othunder_state::eeprom_w) m_eeprom->cs_write((data & 0x10) ? ASSERT_LINE : CLEAR_LINE); } +WRITE8_MEMBER(othunder_state::coins_w) +{ + machine().bookkeeping().coin_lockout_w(0, ~data & 0x01); + machine().bookkeeping().coin_lockout_w(1, ~data & 0x02); + machine().bookkeeping().coin_counter_w(0, data & 0x04); + machine().bookkeeping().coin_counter_w(1, data & 0x08); +} + /********************************************************** GAME INPUTS @@ -674,6 +682,7 @@ static MACHINE_CONFIG_START( othunder ) MCFG_TC0220IOC_READ_2_CB(IOPORT("IN0")) MCFG_TC0220IOC_READ_3_CB(DEVREADLINE("eeprom", eeprom_serial_93cxx_device, do_read)) MCFG_DEVCB_BIT(7) MCFG_TC0220IOC_WRITE_3_CB(WRITE8(othunder_state, eeprom_w)) + MCFG_TC0220IOC_WRITE_4_CB(WRITE8(othunder_state, coins_w)) MCFG_TC0220IOC_READ_7_CB(IOPORT("IN2")) /* video hardware */ diff --git a/src/mame/drivers/slapshot.cpp b/src/mame/drivers/slapshot.cpp index 3df6aee37e3..0d353b3166f 100644 --- a/src/mame/drivers/slapshot.cpp +++ b/src/mame/drivers/slapshot.cpp @@ -219,6 +219,14 @@ WRITE16_MEMBER(slapshot_state::opwolf3_adc_req_w) m_maincpu->set_input_line(3, HOLD_LINE); } +WRITE8_MEMBER(slapshot_state::coin_control_w) +{ + machine().bookkeeping().coin_lockout_w(0, ~data & 0x01); + machine().bookkeeping().coin_lockout_w(1, ~data & 0x02); + machine().bookkeeping().coin_counter_w(0, data & 0x04); + machine().bookkeeping().coin_counter_w(1, data & 0x08); +} + /***************************************************** SOUND *****************************************************/ @@ -477,6 +485,7 @@ static MACHINE_CONFIG_START( slapshot ) MCFG_TC0640FIO_READ_1_CB(IOPORT("COINS")) MCFG_TC0640FIO_READ_2_CB(IOPORT("BUTTONS")) MCFG_TC0640FIO_READ_3_CB(IOPORT("SYSTEM")) + MCFG_TC0640FIO_WRITE_4_CB(WRITE8(slapshot_state, coin_control_w)) MCFG_TC0640FIO_READ_7_CB(IOPORT("JOY")) /* video hardware */ @@ -537,6 +546,7 @@ static MACHINE_CONFIG_START( opwolf3 ) MCFG_TC0640FIO_READ_1_CB(IOPORT("COINS")) MCFG_TC0640FIO_READ_2_CB(IOPORT("BUTTONS")) MCFG_TC0640FIO_READ_3_CB(IOPORT("SYSTEM")) + MCFG_TC0640FIO_WRITE_4_CB(WRITE8(slapshot_state, coin_control_w)) MCFG_TC0640FIO_READ_7_CB(IOPORT("JOY")) /* video hardware */ diff --git a/src/mame/drivers/taito_b.cpp b/src/mame/drivers/taito_b.cpp index 256bdb7d7cc..fb2872f261c 100644 --- a/src/mame/drivers/taito_b.cpp +++ b/src/mame/drivers/taito_b.cpp @@ -20,7 +20,8 @@ TODO: - rambo3u: has a lot of unmapped writes in the VCU area (log up to end of round 2) [viofight also does a few] - The eprom games could have a single io handler if it's confirmed all - 3 use a special 4 player I/O chip. Puzzle Bobble and qzshowby use TC0640FIO + 3 use a special 4 player I/O chip. Puzzle Bobble and qzshowby use TC0640FIO, as do the + more common sets of Space Invaders DX (i.e. not spacedxo). - can the text layer scroll? (hitice: glass walls at beginning of match, also check when the screen wiggles after the puck hits the wall shortly into the first round of attract mode) - sprites are not in perfect sync with the background. Check ashura, they are almost @@ -407,14 +408,18 @@ WRITE16_MEMBER(taitob_state::eeprom_w) /************************************************************************* The input area for the three eprom games ($500000-2f) may well be addressing a single i/o chip with 4 player and coin inputs as - standard. - - Does anyone have custom chip numbers from the Space Invaders DX ? - (qzshowby and pbobble do use TC0640FIO). - + standard. It's confirmed that all of these use TC0640FIO. *************************************************************************/ +WRITE8_MEMBER(taitob_state::player_12_coin_ctrl_w) +{ + machine().bookkeeping().coin_lockout_w(0, ~data & 0x01); + machine().bookkeeping().coin_lockout_w(1, ~data & 0x02); + machine().bookkeeping().coin_counter_w(0, data & 0x04); + machine().bookkeeping().coin_counter_w(1, data & 0x08); +} + READ16_MEMBER(taitob_state::player_34_coin_ctrl_r) { return m_coin_word; @@ -1919,6 +1924,7 @@ static MACHINE_CONFIG_START( rastsag2 ) MCFG_TC0220IOC_READ_1_CB(IOPORT("DSWB")) MCFG_TC0220IOC_READ_2_CB(IOPORT("IN0")) MCFG_TC0220IOC_READ_3_CB(IOPORT("IN1")) + MCFG_TC0220IOC_WRITE_4_CB(WRITE8(taitob_state, player_12_coin_ctrl_w)) MCFG_TC0220IOC_READ_7_CB(IOPORT("IN2")) /* video hardware */ @@ -1975,6 +1981,7 @@ static MACHINE_CONFIG_START( masterw ) MCFG_TC0220IOC_READ_1_CB(IOPORT("DSWB")) MCFG_TC0220IOC_READ_2_CB(IOPORT("IN0")) MCFG_TC0220IOC_READ_3_CB(IOPORT("IN1")) + MCFG_TC0220IOC_WRITE_4_CB(WRITE8(taitob_state, player_12_coin_ctrl_w)) MCFG_TC0220IOC_READ_7_CB(IOPORT("IN2")) /* video hardware */ @@ -2050,6 +2057,7 @@ static MACHINE_CONFIG_START( ashura ) MCFG_TC0220IOC_READ_1_CB(IOPORT("DSWB")) MCFG_TC0220IOC_READ_2_CB(IOPORT("IN0")) MCFG_TC0220IOC_READ_3_CB(IOPORT("IN1")) + MCFG_TC0220IOC_WRITE_4_CB(WRITE8(taitob_state, player_12_coin_ctrl_w)) MCFG_TC0220IOC_READ_7_CB(IOPORT("IN2")) /* video hardware */ @@ -2106,6 +2114,7 @@ static MACHINE_CONFIG_START( crimec ) MCFG_TC0220IOC_READ_1_CB(IOPORT("DSWB")) MCFG_TC0220IOC_READ_2_CB(IOPORT("IN0")) MCFG_TC0220IOC_READ_3_CB(IOPORT("IN1")) + MCFG_TC0220IOC_WRITE_4_CB(WRITE8(taitob_state, player_12_coin_ctrl_w)) MCFG_TC0220IOC_READ_7_CB(IOPORT("IN2")) /* video hardware */ @@ -2163,6 +2172,7 @@ static MACHINE_CONFIG_START( hitice ) MCFG_TC0220IOC_READ_1_CB(IOPORT("DSWB")) MCFG_TC0220IOC_READ_2_CB(IOPORT("IN0")) MCFG_TC0220IOC_READ_3_CB(IOPORT("IN1")) + MCFG_TC0220IOC_WRITE_4_CB(WRITE8(taitob_state, player_12_coin_ctrl_w)) MCFG_TC0220IOC_READ_7_CB(IOPORT("IN2")) /* video hardware */ @@ -2225,6 +2235,7 @@ static MACHINE_CONFIG_START( rambo3p ) MCFG_TC0220IOC_READ_1_CB(IOPORT("DSWB")) MCFG_TC0220IOC_READ_2_CB(IOPORT("IN0")) MCFG_TC0220IOC_READ_3_CB(IOPORT("IN1")) + MCFG_TC0220IOC_WRITE_4_CB(WRITE8(taitob_state, player_12_coin_ctrl_w)) MCFG_TC0220IOC_READ_7_CB(IOPORT("IN2")) /* video hardware */ @@ -2282,6 +2293,7 @@ static MACHINE_CONFIG_START( rambo3 ) MCFG_TC0220IOC_READ_1_CB(IOPORT("DSWB")) MCFG_TC0220IOC_READ_2_CB(IOPORT("IN0")) MCFG_TC0220IOC_READ_3_CB(IOPORT("IN1")) + MCFG_TC0220IOC_WRITE_4_CB(WRITE8(taitob_state, player_12_coin_ctrl_w)) MCFG_TC0220IOC_READ_7_CB(IOPORT("IN2")) /* video hardware */ @@ -2341,6 +2353,7 @@ static MACHINE_CONFIG_START( pbobble ) MCFG_TC0640FIO_READ_1_CB(IOPORT("COIN")) MCFG_TC0640FIO_READ_2_CB(IOPORT("START")) MCFG_TC0640FIO_READ_3_CB(IOPORT("P1_P2_A")) + MCFG_TC0640FIO_WRITE_4_CB(WRITE8(taitob_state, player_12_coin_ctrl_w)) MCFG_TC0640FIO_READ_7_CB(IOPORT("P1_P2_B")) MCFG_DEVICE_ADD("mb87078", MB87078, 0) @@ -2403,6 +2416,7 @@ static MACHINE_CONFIG_START( spacedx ) MCFG_TC0640FIO_READ_1_CB(IOPORT("COIN")) MCFG_TC0640FIO_READ_2_CB(IOPORT("START")) MCFG_TC0640FIO_READ_3_CB(IOPORT("P1_P2_A")) + MCFG_TC0640FIO_WRITE_4_CB(WRITE8(taitob_state, player_12_coin_ctrl_w)) MCFG_TC0640FIO_READ_7_CB(IOPORT("P1_P2_B")) MCFG_DEVICE_ADD("mb87078", MB87078, 0) @@ -2462,6 +2476,7 @@ static MACHINE_CONFIG_START( spacedxo ) MCFG_TC0220IOC_READ_1_CB(IOPORT("DSWB")) MCFG_TC0220IOC_READ_2_CB(IOPORT("IN0")) MCFG_TC0220IOC_READ_3_CB(IOPORT("IN1")) + MCFG_TC0220IOC_WRITE_4_CB(WRITE8(taitob_state, player_12_coin_ctrl_w)) MCFG_TC0220IOC_READ_7_CB(IOPORT("IN2")) /* video hardware */ @@ -2521,6 +2536,7 @@ static MACHINE_CONFIG_START( qzshowby ) MCFG_TC0640FIO_READ_1_CB(IOPORT("COIN")) MCFG_TC0640FIO_READ_2_CB(IOPORT("START")) MCFG_TC0640FIO_READ_3_CB(IOPORT("P1_P2_A")) + MCFG_TC0640FIO_WRITE_4_CB(WRITE8(taitob_state, player_12_coin_ctrl_w)) MCFG_TC0640FIO_READ_7_CB(IOPORT("P1_P2_B")) MCFG_DEVICE_ADD("mb87078", MB87078, 0) @@ -2580,6 +2596,7 @@ static MACHINE_CONFIG_START( viofight ) MCFG_TC0220IOC_READ_1_CB(IOPORT("DSWB")) MCFG_TC0220IOC_READ_2_CB(IOPORT("IN0")) MCFG_TC0220IOC_READ_3_CB(IOPORT("IN1")) + MCFG_TC0220IOC_WRITE_4_CB(WRITE8(taitob_state, player_12_coin_ctrl_w)) MCFG_TC0220IOC_READ_7_CB(IOPORT("IN2")) /* video hardware */ @@ -2641,6 +2658,7 @@ static MACHINE_CONFIG_START( silentd ) MCFG_TC0220IOC_READ_1_CB(IOPORT("DSWB")) MCFG_TC0220IOC_READ_2_CB(IOPORT("IN0")) MCFG_TC0220IOC_READ_3_CB(IOPORT("IN1")) + MCFG_TC0220IOC_WRITE_4_CB(WRITE8(taitob_state, player_12_coin_ctrl_w)) MCFG_TC0220IOC_READ_7_CB(IOPORT("IN2")) /* video hardware */ @@ -2697,6 +2715,7 @@ static MACHINE_CONFIG_START( selfeena ) MCFG_TC0220IOC_READ_1_CB(IOPORT("DSWB")) MCFG_TC0220IOC_READ_2_CB(IOPORT("IN0")) MCFG_TC0220IOC_READ_3_CB(IOPORT("IN1")) + MCFG_TC0220IOC_WRITE_4_CB(WRITE8(taitob_state, player_12_coin_ctrl_w)) MCFG_TC0220IOC_READ_7_CB(IOPORT("IN2")) /* video hardware */ @@ -2762,6 +2781,7 @@ static MACHINE_CONFIG_START( ryujin ) MCFG_TC0220IOC_READ_1_CB(IOPORT("DSWB")) MCFG_TC0220IOC_READ_2_CB(IOPORT("IN0")) MCFG_TC0220IOC_READ_3_CB(IOPORT("IN1")) + MCFG_TC0220IOC_WRITE_4_CB(WRITE8(taitob_state, player_12_coin_ctrl_w)) MCFG_TC0220IOC_READ_7_CB(IOPORT("IN2")) /* video hardware */ @@ -2825,6 +2845,7 @@ static MACHINE_CONFIG_START( sbm ) MCFG_TC0510NIO_READ_1_CB(IOPORT("DSWB")) MCFG_TC0510NIO_READ_2_CB(IOPORT("JOY")) MCFG_TC0510NIO_READ_3_CB(IOPORT("START")) + MCFG_TC0510NIO_WRITE_4_CB(WRITE8(taitob_state, player_12_coin_ctrl_w)) MCFG_TC0510NIO_READ_7_CB(IOPORT("PHOTOSENSOR")) /* video hardware */ @@ -2880,6 +2901,7 @@ static MACHINE_CONFIG_START( realpunc ) MCFG_TC0510NIO_READ_1_CB(IOPORT("DSWB")) MCFG_TC0510NIO_READ_2_CB(IOPORT("IN0")) MCFG_TC0510NIO_READ_3_CB(IOPORT("IN1")) + MCFG_TC0510NIO_WRITE_4_CB(WRITE8(taitob_state, player_12_coin_ctrl_w)) MCFG_TC0510NIO_READ_7_CB(IOPORT("IN2")) /* video hardware */ @@ -3376,7 +3398,7 @@ ROM_START( spacedxj ) ROM_LOAD( "pal20l8b-d89-04.ic40", 0x0a00, 0x0144, NO_DUMP ) /* PAL is read protected */ ROM_END -ROM_START( spacedxo ) +ROM_START( spacedxo ) // different PCB type, similar to Silent Dragon ROM_REGION( 0x80000, "maincpu", 0 ) /* 256k for 68000 code */ ROM_LOAD16_BYTE( "d89-08.bin", 0x00000, 0x20000, CRC(0c2fe7f9) SHA1(a0773c059c8ff2c9e367e0fb460d7e5f9a762ab1) ) ROM_LOAD16_BYTE( "d89-09.bin", 0x00001, 0x20000, CRC(7f0a0ba4) SHA1(479df027929201997aeebbea5901a0a494f2dd61) ) diff --git a/src/mame/drivers/taito_f2.cpp b/src/mame/drivers/taito_f2.cpp index 8c72d7fd38a..be0f4ad0cd7 100644 --- a/src/mame/drivers/taito_f2.cpp +++ b/src/mame/drivers/taito_f2.cpp @@ -283,6 +283,14 @@ Notes: GAME INPUTS **********************************************************/ +WRITE8_MEMBER(taitof2_state::coin_nibble_w) +{ + machine().bookkeeping().coin_lockout_w(0, ~data & 0x01); + machine().bookkeeping().coin_lockout_w(1, ~data & 0x02); + machine().bookkeeping().coin_counter_w(0, data & 0x04); + machine().bookkeeping().coin_counter_w(1, data & 0x08); +} + WRITE16_MEMBER(taitof2_state::growl_coin_word_w)/* what about coins 3&4 ?? */ { if (ACCESSING_BITS_0_7) @@ -2903,6 +2911,7 @@ static MACHINE_CONFIG_DERIVED( taito_f2_tc0220ioc, taito_f2 ) MCFG_TC0220IOC_READ_1_CB(IOPORT("DSWB")) MCFG_TC0220IOC_READ_2_CB(IOPORT("IN0")) MCFG_TC0220IOC_READ_3_CB(IOPORT("IN1")) + MCFG_TC0220IOC_WRITE_4_CB(WRITE8(taitof2_state, coin_nibble_w)) MCFG_TC0220IOC_READ_7_CB(IOPORT("IN2")) MACHINE_CONFIG_END @@ -2915,6 +2924,7 @@ static MACHINE_CONFIG_DERIVED( taito_f2_tc0510nio, taito_f2 ) MCFG_TC0510NIO_READ_1_CB(IOPORT("DSWB")) MCFG_TC0510NIO_READ_2_CB(IOPORT("IN0")) MCFG_TC0510NIO_READ_3_CB(IOPORT("IN1")) + MCFG_TC0510NIO_WRITE_4_CB(WRITE8(taitof2_state, coin_nibble_w)) MCFG_TC0510NIO_READ_7_CB(IOPORT("IN2")) MCFG_PALETTE_MODIFY("palette") MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB) @@ -3677,6 +3687,7 @@ static MACHINE_CONFIG_START( cameltrya ) MCFG_TC0220IOC_READ_1_CB(IOPORT("DSWB")) MCFG_TC0220IOC_READ_2_CB(IOPORT("IN0")) MCFG_TC0220IOC_READ_3_CB(IOPORT("IN1")) + MCFG_TC0220IOC_WRITE_4_CB(WRITE8(taitof2_state, coin_nibble_w)) MCFG_TC0220IOC_READ_7_CB(IOPORT("IN2")) /* video hardware */ @@ -3745,6 +3756,7 @@ static MACHINE_CONFIG_START( driveout ) MCFG_TC0510NIO_READ_1_CB(IOPORT("DSWB")) MCFG_TC0510NIO_READ_2_CB(IOPORT("IN0")) MCFG_TC0510NIO_READ_3_CB(IOPORT("IN1")) + MCFG_TC0510NIO_WRITE_4_CB(WRITE8(taitof2_state, coin_nibble_w)) MCFG_TC0510NIO_READ_7_CB(IOPORT("IN2")) /* video hardware */ diff --git a/src/mame/drivers/taito_h.cpp b/src/mame/drivers/taito_h.cpp index 422705d7e47..5408942fc8e 100644 --- a/src/mame/drivers/taito_h.cpp +++ b/src/mame/drivers/taito_h.cpp @@ -219,6 +219,14 @@ WRITE8_MEMBER(taitoh_state::sound_bankswitch_w) membank("z80bank")->set_entry(data & 3); } +WRITE8_MEMBER(taitoh_state::coin_control_w) +{ + machine().bookkeeping().coin_lockout_w(0, ~data & 0x01); + machine().bookkeeping().coin_lockout_w(1, ~data & 0x02); + machine().bookkeeping().coin_counter_w(0, data & 0x04); + machine().bookkeeping().coin_counter_w(1, data & 0x08); +} + /*************************************************************************** @@ -646,6 +654,7 @@ static MACHINE_CONFIG_START( syvalion ) MCFG_TC0220IOC_READ_1_CB(IOPORT("DSWB")) MCFG_TC0220IOC_READ_2_CB(IOPORT("IN0")) MCFG_TC0220IOC_READ_3_CB(IOPORT("IN1")) + MCFG_TC0220IOC_WRITE_4_CB(WRITE8(taitoh_state, coin_control_w)) MCFG_TC0220IOC_READ_7_CB(IOPORT("IN2")) /* video hardware */ @@ -701,6 +710,7 @@ static MACHINE_CONFIG_START( recordbr ) MCFG_TC0220IOC_READ_1_CB(IOPORT("DSWB")) MCFG_TC0220IOC_READ_2_CB(IOPORT("IN0")) MCFG_TC0220IOC_READ_3_CB(IOPORT("IN1")) + MCFG_TC0220IOC_WRITE_4_CB(WRITE8(taitoh_state, coin_control_w)) MCFG_TC0220IOC_READ_7_CB(IOPORT("IN2")) /* video hardware */ @@ -764,6 +774,7 @@ static MACHINE_CONFIG_START( dleague ) MCFG_TC0220IOC_READ_1_CB(IOPORT("DSWB")) MCFG_TC0220IOC_READ_2_CB(IOPORT("IN0")) MCFG_TC0220IOC_READ_3_CB(IOPORT("IN1")) + MCFG_TC0220IOC_WRITE_4_CB(WRITE8(taitoh_state, coin_control_w)) MCFG_TC0220IOC_READ_7_CB(IOPORT("IN2")) /* video hardware */ diff --git a/src/mame/drivers/taito_l.cpp b/src/mame/drivers/taito_l.cpp index c4e9e4c8eca..7c31e4163e1 100644 --- a/src/mame/drivers/taito_l.cpp +++ b/src/mame/drivers/taito_l.cpp @@ -452,7 +452,7 @@ WRITE8_MEMBER(taitol_state::bank3_w) bank_w(space, offset, data, 3); } -WRITE8_MEMBER(taitol_2cpu_state::control2_w) +WRITE8_MEMBER(taitol_state::coin_control_w) { machine().bookkeeping().coin_lockout_w(0, ~data & 0x01); machine().bookkeeping().coin_lockout_w(1, ~data & 0x02); @@ -519,7 +519,7 @@ WRITE8_MEMBER(taitol_2cpu_state::mux_w) switch (m_mux_ctrl) { case 4: - control2_w(space, 0, data); + coin_control_w(space, 0, data); break; default: logerror("Mux write to unknown port %d, %02x (%04x)\n", m_mux_ctrl, data, space.device().safe_pc()); @@ -1671,6 +1671,7 @@ static MACHINE_CONFIG_START( fhawk ) MCFG_TC0220IOC_READ_1_CB(IOPORT("DSWB")) MCFG_TC0220IOC_READ_2_CB(IOPORT("IN0")) MCFG_TC0220IOC_READ_3_CB(IOPORT("IN1")) + MCFG_TC0220IOC_WRITE_4_CB(WRITE8(taitol_state, coin_control_w)) MCFG_TC0220IOC_READ_7_CB(IOPORT("IN2")) MCFG_MACHINE_START_OVERRIDE(taitol_state, taito_l) @@ -1927,6 +1928,7 @@ static MACHINE_CONFIG_START( evilston ) MCFG_TC0510NIO_READ_1_CB(IOPORT("DSWB")) MCFG_TC0510NIO_READ_2_CB(IOPORT("IN0")) MCFG_TC0510NIO_READ_3_CB(IOPORT("IN1")) + MCFG_TC0510NIO_WRITE_4_CB(WRITE8(taitol_state, coin_control_w)) MCFG_TC0510NIO_READ_7_CB(IOPORT("IN2")) MCFG_DEVICE_ADD("dpram", MB8421, 0) diff --git a/src/mame/drivers/taito_z.cpp b/src/mame/drivers/taito_z.cpp index aa6eae9fa00..420a779185c 100644 --- a/src/mame/drivers/taito_z.cpp +++ b/src/mame/drivers/taito_z.cpp @@ -1364,6 +1364,13 @@ WRITE16_MEMBER(taitoz_state::nightstr_motor_w) } +WRITE8_MEMBER(taitoz_state::coin_control_w) +{ + machine().bookkeeping().coin_lockout_w(0, ~data & 0x01); + machine().bookkeeping().coin_lockout_w(1, ~data & 0x02); + machine().bookkeeping().coin_counter_w(0, data & 0x04); + machine().bookkeeping().coin_counter_w(1, data & 0x08); +} READ16_MEMBER(taitoz_state::aquajack_unknown_r) @@ -2960,6 +2967,7 @@ static MACHINE_CONFIG_START( contcirc ) MCFG_TC0220IOC_READ_1_CB(IOPORT("DSWB")) MCFG_TC0220IOC_READ_2_CB(IOPORT("IN0")) MCFG_TC0220IOC_READ_3_CB(IOPORT("IN1")) + MCFG_TC0220IOC_WRITE_4_CB(WRITE8(taitoz_state, coin_control_w)) MCFG_TC0220IOC_READ_7_CB(IOPORT("IN2")) /* video hardware */ @@ -3038,6 +3046,7 @@ static MACHINE_CONFIG_START( chasehq ) MCFG_TC0220IOC_READ_1_CB(IOPORT("DSWB")) MCFG_TC0220IOC_READ_2_CB(IOPORT("IN0")) MCFG_TC0220IOC_READ_3_CB(IOPORT("IN1")) + MCFG_TC0220IOC_WRITE_4_CB(WRITE8(taitoz_state, coin_control_w)) MCFG_TC0220IOC_READ_7_CB(IOPORT("IN2")) /* video hardware */ @@ -3118,6 +3127,7 @@ static MACHINE_CONFIG_START( enforce ) MCFG_TC0220IOC_READ_1_CB(IOPORT("DSWB")) MCFG_TC0220IOC_READ_2_CB(IOPORT("IN0")) MCFG_TC0220IOC_READ_3_CB(IOPORT("IN1")) + MCFG_TC0220IOC_WRITE_4_CB(WRITE8(taitoz_state, coin_control_w)) MCFG_TC0220IOC_READ_7_CB(IOPORT("IN2")) /* video hardware */ @@ -3194,6 +3204,7 @@ static MACHINE_CONFIG_START( bshark ) MCFG_TC0220IOC_READ_1_CB(IOPORT("DSWB")) MCFG_TC0220IOC_READ_2_CB(IOPORT("IN0")) MCFG_TC0220IOC_READ_3_CB(IOPORT("IN1")) + MCFG_TC0220IOC_WRITE_4_CB(WRITE8(taitoz_state, coin_control_w)) MCFG_TC0220IOC_READ_7_CB(IOPORT("IN2")) /* video hardware */ @@ -3275,6 +3286,7 @@ static MACHINE_CONFIG_START( sci ) MCFG_TC0220IOC_READ_1_CB(IOPORT("DSWB")) MCFG_TC0220IOC_READ_2_CB(IOPORT("IN0")) MCFG_TC0220IOC_READ_3_CB(IOPORT("IN1")) + MCFG_TC0220IOC_WRITE_4_CB(WRITE8(taitoz_state, coin_control_w)) MCFG_TC0220IOC_READ_7_CB(IOPORT("IN2")) /* video hardware */ @@ -3351,6 +3363,7 @@ static MACHINE_CONFIG_START( nightstr ) MCFG_TC0220IOC_READ_1_CB(IOPORT("DSWB")) MCFG_TC0220IOC_READ_2_CB(IOPORT("IN0")) MCFG_TC0220IOC_READ_3_CB(IOPORT("IN1")) + MCFG_TC0220IOC_WRITE_4_CB(WRITE8(taitoz_state, coin_control_w)) MCFG_TC0220IOC_READ_7_CB(IOPORT("IN2")) /* video hardware */ @@ -3431,6 +3444,7 @@ static MACHINE_CONFIG_START( aquajack ) MCFG_TC0220IOC_READ_1_CB(IOPORT("DSWB")) MCFG_TC0220IOC_READ_2_CB(IOPORT("IN0")) MCFG_TC0220IOC_READ_3_CB(IOPORT("IN1")) + MCFG_TC0220IOC_WRITE_4_CB(WRITE8(taitoz_state, coin_control_w)) MCFG_TC0220IOC_READ_7_CB(IOPORT("IN2")) /* video hardware */ @@ -3509,6 +3523,7 @@ static MACHINE_CONFIG_START( spacegun ) MCFG_TC0510NIO_READ_2_CB(IOPORT("IN0")) MCFG_TC0510NIO_READ_3_CB(DEVREADLINE("eeprom", eeprom_serial_93cxx_device, do_read)) MCFG_DEVCB_BIT(7) MCFG_TC0510NIO_WRITE_3_CB(WRITE8(taitoz_state, spacegun_eeprom_w)) + MCFG_TC0510NIO_WRITE_4_CB(WRITE8(taitoz_state, coin_control_w)) MCFG_TC0510NIO_READ_7_CB(IOPORT("IN2")) /* video hardware */ @@ -3581,6 +3596,7 @@ static MACHINE_CONFIG_START( dblaxle ) MCFG_TC0510NIO_READ_1_CB(IOPORT("DSWB")) MCFG_TC0510NIO_READ_2_CB(IOPORT("IN0")) MCFG_TC0510NIO_READ_3_CB(IOPORT("IN1")) + MCFG_TC0510NIO_WRITE_4_CB(WRITE8(taitoz_state, coin_control_w)) MCFG_TC0510NIO_READ_7_CB(IOPORT("IN2")) /* video hardware */ @@ -3657,6 +3673,7 @@ static MACHINE_CONFIG_START( racingb ) MCFG_TC0510NIO_READ_1_CB(IOPORT("DSWB")) MCFG_TC0510NIO_READ_2_CB(IOPORT("IN0")) MCFG_TC0510NIO_READ_3_CB(IOPORT("IN1")) + MCFG_TC0510NIO_WRITE_4_CB(WRITE8(taitoz_state, coin_control_w)) MCFG_TC0510NIO_READ_7_CB(IOPORT("IN2")) /* video hardware */ diff --git a/src/mame/drivers/taitoair.cpp b/src/mame/drivers/taitoair.cpp index 60f0ffcf0aa..0c7f060aea3 100644 --- a/src/mame/drivers/taitoair.cpp +++ b/src/mame/drivers/taitoair.cpp @@ -374,6 +374,14 @@ WRITE16_MEMBER(taitoair_state::dma_regs_w) } } +WRITE8_MEMBER(taitoair_state::coin_control_w) +{ + machine().bookkeeping().coin_lockout_w(0, ~data & 0x01); + machine().bookkeeping().coin_lockout_w(1, ~data & 0x02); + machine().bookkeeping().coin_counter_w(0, data & 0x04); + machine().bookkeeping().coin_counter_w(1, data & 0x08); +} + /*********************************************************** MEMORY STRUCTURES ***********************************************************/ @@ -734,6 +742,7 @@ static MACHINE_CONFIG_START( airsys ) MCFG_TC0220IOC_READ_1_CB(IOPORT("DSWB")) MCFG_TC0220IOC_READ_2_CB(IOPORT("IN0")) MCFG_TC0220IOC_READ_3_CB(IOPORT("IN1")) + MCFG_TC0220IOC_WRITE_4_CB(WRITE8(taitoair_state, coin_control_w)) MCFG_TC0220IOC_READ_7_CB(IOPORT("IN2")) /* video hardware */ diff --git a/src/mame/drivers/taitojc.cpp b/src/mame/drivers/taitojc.cpp index 5075ad3f8f9..19310e0716e 100644 --- a/src/mame/drivers/taitojc.cpp +++ b/src/mame/drivers/taitojc.cpp @@ -454,6 +454,15 @@ static const int dendego_pressure_table[0x100] = #define DSP_IDLESKIP 1 /* dsp idle skipping speedup hack */ +WRITE8_MEMBER(taitojc_state::coin_control_w) +{ + machine().bookkeeping().coin_lockout_w(0, ~data & 0x01); + machine().bookkeeping().coin_lockout_w(1, ~data & 0x02); + machine().bookkeeping().coin_counter_w(0, data & 0x04); + machine().bookkeeping().coin_counter_w(1, data & 0x08); +} + + /*************************************************************************** Interrupts @@ -1111,6 +1120,7 @@ static MACHINE_CONFIG_START( taitojc ) MCFG_TC0640FIO_READ_1_CB(IOPORT("COINS")) MCFG_TC0640FIO_READ_2_CB(IOPORT("START")) MCFG_TC0640FIO_READ_3_CB(IOPORT("UNUSED")) + MCFG_TC0640FIO_WRITE_4_CB(WRITE8(taitojc_state, coin_control_w)) MCFG_TC0640FIO_READ_7_CB(IOPORT("BUTTONS")) MCFG_GFXDECODE_ADD("gfxdecode", "palette", empty) diff --git a/src/mame/drivers/topspeed.cpp b/src/mame/drivers/topspeed.cpp index 8da45569ca7..a40994b4c33 100644 --- a/src/mame/drivers/topspeed.cpp +++ b/src/mame/drivers/topspeed.cpp @@ -249,6 +249,14 @@ WRITE16_MEMBER(topspeed_state::motor_w) logerror("CPU #0 PC %06x: warning - write %04x to motor cpu %03x\n", space.device().safe_pc(), data, offset); } +WRITE8_MEMBER(topspeed_state::coins_w) +{ + machine().bookkeeping().coin_lockout_w(0, ~data & 0x01); + machine().bookkeeping().coin_lockout_w(1, ~data & 0x02); + machine().bookkeeping().coin_counter_w(0, data & 0x04); + machine().bookkeeping().coin_counter_w(1, data & 0x08); +} + /***************************************************** SOUND @@ -599,6 +607,7 @@ static MACHINE_CONFIG_START( topspeed ) MCFG_TC0220IOC_READ_1_CB(IOPORT("DSWB")) MCFG_TC0220IOC_READ_2_CB(IOPORT("IN0")) MCFG_TC0220IOC_READ_3_CB(IOPORT("IN1")) + MCFG_TC0220IOC_WRITE_4_CB(WRITE8(topspeed_state, coins_w)) MCFG_TC0220IOC_READ_7_CB(IOPORT("IN2")) // video hardware diff --git a/src/mame/drivers/warriorb.cpp b/src/mame/drivers/warriorb.cpp index 7569b3504b0..1d1f4a4f968 100644 --- a/src/mame/drivers/warriorb.cpp +++ b/src/mame/drivers/warriorb.cpp @@ -159,6 +159,14 @@ Colscroll effects? #include "speaker.h" +WRITE8_MEMBER(warriorb_state::coin_control_w) +{ + machine().bookkeeping().coin_lockout_w(0, ~data & 0x01); + machine().bookkeeping().coin_lockout_w(1, ~data & 0x02); + machine().bookkeeping().coin_counter_w(0, data & 0x04); + machine().bookkeeping().coin_counter_w(1, data & 0x08); +} + /*********************************************************** SOUND @@ -439,6 +447,7 @@ static MACHINE_CONFIG_START( darius2d ) MCFG_TC0220IOC_READ_1_CB(IOPORT("DSWB")) MCFG_TC0220IOC_READ_2_CB(IOPORT("IN0")) MCFG_TC0220IOC_READ_3_CB(IOPORT("IN1")) + MCFG_TC0220IOC_WRITE_4_CB(WRITE8(warriorb_state, coin_control_w)) MCFG_TC0220IOC_READ_7_CB(IOPORT("IN2")) /* video hardware */ @@ -527,6 +536,7 @@ static MACHINE_CONFIG_START( warriorb ) MCFG_TC0510NIO_READ_1_CB(IOPORT("DSWB")) MCFG_TC0510NIO_READ_2_CB(IOPORT("IN0")) MCFG_TC0510NIO_READ_3_CB(IOPORT("IN1")) + MCFG_TC0510NIO_WRITE_4_CB(WRITE8(warriorb_state, coin_control_w)) MCFG_TC0510NIO_READ_7_CB(IOPORT("IN2")) /* video hardware */ diff --git a/src/mame/drivers/wgp.cpp b/src/mame/drivers/wgp.cpp index ffc4400fa7a..5984b390e04 100644 --- a/src/mame/drivers/wgp.cpp +++ b/src/mame/drivers/wgp.cpp @@ -588,6 +588,14 @@ WRITE16_MEMBER(wgp_state::wgp_adinput_w) timer_set(downcast(&space.device())->cycles_to_attotime(10000), TIMER_WGP_INTERRUPT6); } +WRITE8_MEMBER(wgp_state::coins_w) +{ + machine().bookkeeping().coin_lockout_w(0, ~data & 0x01); + machine().bookkeeping().coin_lockout_w(1, ~data & 0x02); + machine().bookkeeping().coin_counter_w(0, data & 0x04); + machine().bookkeeping().coin_counter_w(1, data & 0x08); +} + /********************************************************** SOUND @@ -932,6 +940,7 @@ static MACHINE_CONFIG_START( wgp ) MCFG_TC0220IOC_READ_1_CB(IOPORT("DSWB")) MCFG_TC0220IOC_READ_2_CB(IOPORT("IN0")) MCFG_TC0220IOC_READ_3_CB(IOPORT("IN1")) + MCFG_TC0220IOC_WRITE_4_CB(WRITE8(wgp_state, coins_w)) MCFG_TC0220IOC_READ_7_CB(IOPORT("IN2")) /* video hardware */ diff --git a/src/mame/includes/asuka.h b/src/mame/includes/asuka.h index 137cdc4df20..20e400d158c 100644 --- a/src/mame/includes/asuka.h +++ b/src/mame/includes/asuka.h @@ -64,6 +64,7 @@ public: required_device m_tc0100scn; required_device m_tc0110pcr; optional_device m_tc0220ioc; + DECLARE_WRITE8_MEMBER(coin_control_w); DECLARE_WRITE8_MEMBER(sound_bankswitch_w); DECLARE_WRITE8_MEMBER(asuka_msm5205_address_w); DECLARE_READ16_MEMBER(cadash_share_r); diff --git a/src/mame/includes/ninjaw.h b/src/mame/includes/ninjaw.h index 74d6ee715e7..175660a8f78 100644 --- a/src/mame/includes/ninjaw.h +++ b/src/mame/includes/ninjaw.h @@ -61,6 +61,7 @@ public: uint16_t m_cpua_ctrl; int m_pandata[4]; + DECLARE_WRITE8_MEMBER(coin_control_w); DECLARE_WRITE16_MEMBER(cpua_ctrl_w); DECLARE_WRITE8_MEMBER(sound_bankswitch_w); DECLARE_WRITE16_MEMBER(sound_w); diff --git a/src/mame/includes/othunder.h b/src/mame/includes/othunder.h index 2244313948a..563c6fc50ae 100644 --- a/src/mame/includes/othunder.h +++ b/src/mame/includes/othunder.h @@ -43,6 +43,7 @@ public: DECLARE_WRITE16_MEMBER(irq_ack_w); DECLARE_WRITE8_MEMBER(eeprom_w); + DECLARE_WRITE8_MEMBER(coins_w); DECLARE_READ16_MEMBER(lightgun_r); DECLARE_WRITE16_MEMBER(lightgun_w); DECLARE_WRITE8_MEMBER(sound_bankswitch_w); diff --git a/src/mame/includes/slapshot.h b/src/mame/includes/slapshot.h index 5e6738b2a65..7ccdf55bff0 100644 --- a/src/mame/includes/slapshot.h +++ b/src/mame/includes/slapshot.h @@ -73,6 +73,7 @@ public: DECLARE_WRITE8_MEMBER(sound_bankswitch_w); DECLARE_WRITE16_MEMBER(msb_sound_w); DECLARE_READ16_MEMBER(msb_sound_r); + DECLARE_WRITE8_MEMBER(coin_control_w); // opwolf specific DECLARE_READ16_MEMBER(opwolf3_adc_r); diff --git a/src/mame/includes/taito_b.h b/src/mame/includes/taito_b.h index b40dae86cf2..f508f149ddb 100644 --- a/src/mame/includes/taito_b.h +++ b/src/mame/includes/taito_b.h @@ -87,6 +87,7 @@ public: DECLARE_WRITE16_MEMBER(gain_control_w); DECLARE_READ16_MEMBER(eep_latch_r); DECLARE_WRITE16_MEMBER(eeprom_w); + DECLARE_WRITE8_MEMBER(player_12_coin_ctrl_w); DECLARE_READ16_MEMBER(player_34_coin_ctrl_r); DECLARE_WRITE16_MEMBER(player_34_coin_ctrl_w); DECLARE_WRITE16_MEMBER(spacedxo_tc0220ioc_w); diff --git a/src/mame/includes/taito_f2.h b/src/mame/includes/taito_f2.h index 2c4cf2ff844..9e6514e4749 100644 --- a/src/mame/includes/taito_f2.h +++ b/src/mame/includes/taito_f2.h @@ -113,6 +113,7 @@ public: required_device m_gfxdecode; required_device m_palette; + DECLARE_WRITE8_MEMBER(coin_nibble_w); DECLARE_WRITE16_MEMBER(growl_coin_word_w); DECLARE_WRITE16_MEMBER(taitof2_4p_coin_word_w); DECLARE_WRITE16_MEMBER(ninjak_coin_word_w); diff --git a/src/mame/includes/taito_h.h b/src/mame/includes/taito_h.h index 8d78f43dca0..129d8feda61 100644 --- a/src/mame/includes/taito_h.h +++ b/src/mame/includes/taito_h.h @@ -33,6 +33,7 @@ public: required_device m_gfxdecode; required_device m_palette; + DECLARE_WRITE8_MEMBER(coin_control_w); DECLARE_READ8_MEMBER(syvalion_input_bypass_r); DECLARE_WRITE8_MEMBER(sound_bankswitch_w); virtual void machine_start() override; diff --git a/src/mame/includes/taito_l.h b/src/mame/includes/taito_l.h index 230c8949f99..3400cddcfdd 100644 --- a/src/mame/includes/taito_l.h +++ b/src/mame/includes/taito_l.h @@ -61,6 +61,7 @@ public: DECLARE_WRITE8_MEMBER(bank1_w); DECLARE_WRITE8_MEMBER(bank2_w); DECLARE_WRITE8_MEMBER(bank3_w); + DECLARE_WRITE8_MEMBER(coin_control_w); DECLARE_WRITE8_MEMBER(mcu_control_w); DECLARE_READ8_MEMBER(mcu_control_r); DECLARE_WRITE8_MEMBER(taitol_bankc_w); @@ -123,7 +124,6 @@ public: { } - DECLARE_WRITE8_MEMBER(control2_w); DECLARE_WRITE8_MEMBER(sound_bankswitch_w); DECLARE_READ8_MEMBER(mux_r); DECLARE_WRITE8_MEMBER(mux_w); diff --git a/src/mame/includes/taito_z.h b/src/mame/includes/taito_z.h index 560910ed4d1..3eee899ad65 100644 --- a/src/mame/includes/taito_z.h +++ b/src/mame/includes/taito_z.h @@ -88,6 +88,7 @@ public: DECLARE_READ16_MEMBER(chasehq_motor_r); DECLARE_WRITE16_MEMBER(chasehq_motor_w); DECLARE_WRITE16_MEMBER(nightstr_motor_w); + DECLARE_WRITE8_MEMBER(coin_control_w); DECLARE_READ16_MEMBER(aquajack_unknown_r); DECLARE_WRITE8_MEMBER(sound_bankswitch_w); DECLARE_WRITE16_MEMBER(taitoz_sound_w); diff --git a/src/mame/includes/taitoair.h b/src/mame/includes/taitoair.h index 792ff814ee6..1e81e093fe0 100644 --- a/src/mame/includes/taitoair.h +++ b/src/mame/includes/taitoair.h @@ -115,6 +115,7 @@ public: DECLARE_WRITE16_MEMBER(airsys_gradram_w); DECLARE_READ16_MEMBER(stick_input_r); DECLARE_READ16_MEMBER(stick2_input_r); + DECLARE_WRITE8_MEMBER(coin_control_w); DECLARE_WRITE8_MEMBER(sound_bankswitch_w); DECLARE_WRITE16_MEMBER(dsp_flags_w); DECLARE_WRITE16_MEMBER(dma_regs_w); diff --git a/src/mame/includes/taitojc.h b/src/mame/includes/taitojc.h index 5f1adadc30f..a2ca0a71585 100644 --- a/src/mame/includes/taitojc.h +++ b/src/mame/includes/taitojc.h @@ -80,6 +80,8 @@ public: int m_speed_meter; int m_brake_meter; + DECLARE_WRITE8_MEMBER(coin_control_w); + DECLARE_READ8_MEMBER(mcu_comm_r); DECLARE_WRITE8_MEMBER(mcu_comm_w); DECLARE_READ32_MEMBER(snd_share_r); diff --git a/src/mame/includes/topspeed.h b/src/mame/includes/topspeed.h index 0c6823ec19b..8a5a64049fe 100644 --- a/src/mame/includes/topspeed.h +++ b/src/mame/includes/topspeed.h @@ -82,6 +82,7 @@ public: DECLARE_READ16_MEMBER(motor_r); DECLARE_WRITE16_MEMBER(motor_w); DECLARE_CUSTOM_INPUT_MEMBER(pedal_r); + DECLARE_WRITE8_MEMBER(coins_w); DECLARE_WRITE8_MEMBER(sound_bankswitch_w); DECLARE_WRITE8_MEMBER(msm5205_command_w); diff --git a/src/mame/includes/warriorb.h b/src/mame/includes/warriorb.h index 1afa732cc2a..4f3d4187293 100644 --- a/src/mame/includes/warriorb.h +++ b/src/mame/includes/warriorb.h @@ -56,6 +56,7 @@ public: /* misc */ int m_pandata[4]; + DECLARE_WRITE8_MEMBER(coin_control_w); DECLARE_WRITE8_MEMBER(sound_bankswitch_w); DECLARE_WRITE16_MEMBER(sound_w); DECLARE_READ16_MEMBER(sound_r); diff --git a/src/mame/includes/wgp.h b/src/mame/includes/wgp.h index 8ea9f3dec10..3acf66ef347 100644 --- a/src/mame/includes/wgp.h +++ b/src/mame/includes/wgp.h @@ -76,6 +76,7 @@ public: optional_ioport m_unknown; optional_ioport m_fake; + DECLARE_WRITE8_MEMBER(coins_w); DECLARE_WRITE16_MEMBER(cpua_ctrl_w); DECLARE_READ16_MEMBER(lan_status_r); DECLARE_WRITE16_MEMBER(rotate_port_w); diff --git a/src/mame/machine/taitoio.cpp b/src/mame/machine/taitoio.cpp index 86d4d4d3a12..8ead32ba709 100644 --- a/src/mame/machine/taitoio.cpp +++ b/src/mame/machine/taitoio.cpp @@ -66,6 +66,7 @@ tc0220ioc_device::tc0220ioc_device(const machine_config &mconfig, const char *ta m_read_2_cb(*this), m_read_3_cb(*this), m_write_3_cb(*this), + m_write_4_cb(*this), m_read_7_cb(*this) { } @@ -81,6 +82,7 @@ void tc0220ioc_device::device_start() m_read_2_cb.resolve_safe(0); m_read_3_cb.resolve_safe(0); m_write_3_cb.resolve_safe(); + m_write_4_cb.resolve_safe(); m_read_7_cb.resolve_safe(0); save_item(NAME(m_regs)); @@ -153,11 +155,7 @@ WRITE8_MEMBER( tc0220ioc_device::write ) break; case 0x04: /* coin counters and lockout, hi nibble irrelevant */ - - machine().bookkeeping().coin_lockout_w(0, ~data & 0x01); - machine().bookkeeping().coin_lockout_w(1, ~data & 0x02); - machine().bookkeeping().coin_counter_w(0, data & 0x04); - machine().bookkeeping().coin_counter_w(1, data & 0x08); + m_write_4_cb(data & 0x0f); //if (data & 0xf0) //logerror("PC %06x: warning - write %02x to TC0220IOC address %02x\n",space.device().safe_pc(),data,offset); @@ -207,6 +205,7 @@ tc0510nio_device::tc0510nio_device(const machine_config &mconfig, const char *ta m_read_2_cb(*this), m_read_3_cb(*this), m_write_3_cb(*this), + m_write_4_cb(*this), m_read_7_cb(*this) { } @@ -222,6 +221,7 @@ void tc0510nio_device::device_start() m_read_2_cb.resolve_safe(0); m_read_3_cb.resolve_safe(0); m_write_3_cb.resolve_safe(); + m_write_4_cb.resolve_safe(); m_read_7_cb.resolve_safe(0); save_item(NAME(m_regs)); @@ -292,10 +292,7 @@ WRITE8_MEMBER( tc0510nio_device::write ) break; case 0x04: /* coin counters and lockout */ - machine().bookkeeping().coin_lockout_w(0, ~data & 0x01); - machine().bookkeeping().coin_lockout_w(1, ~data & 0x02); - machine().bookkeeping().coin_counter_w(0, data & 0x04); - machine().bookkeeping().coin_counter_w(1, data & 0x08); + m_write_4_cb(data & 0x0f); break; default: @@ -348,6 +345,7 @@ tc0640fio_device::tc0640fio_device(const machine_config &mconfig, const char *ta m_read_1_cb(*this), m_read_2_cb(*this), m_read_3_cb(*this), + m_write_4_cb(*this), m_read_7_cb(*this) { } @@ -362,6 +360,7 @@ void tc0640fio_device::device_start() m_read_1_cb.resolve_safe(0); m_read_2_cb.resolve_safe(0); m_read_3_cb.resolve_safe(0); + m_write_4_cb.resolve_safe(); m_read_7_cb.resolve_safe(0); save_item(NAME(m_regs)); @@ -428,10 +427,7 @@ WRITE8_MEMBER( tc0640fio_device::write ) break; case 0x04: /* coin counters and lockout */ - machine().bookkeeping().coin_lockout_w(0, ~data & 0x01); - machine().bookkeeping().coin_lockout_w(1, ~data & 0x02); - machine().bookkeeping().coin_counter_w(0, data & 0x04); - machine().bookkeeping().coin_counter_w(1, data & 0x08); + m_write_4_cb(data & 0x0f); break; default: diff --git a/src/mame/machine/taitoio.h b/src/mame/machine/taitoio.h index 7ddfc2aefdc..bf583858347 100644 --- a/src/mame/machine/taitoio.h +++ b/src/mame/machine/taitoio.h @@ -26,6 +26,7 @@ public: template static devcb_base &set_read_2_callback(device_t &device, Object &&cb) { return downcast(device).m_read_2_cb.set_callback(std::forward(cb)); } template static devcb_base &set_read_3_callback(device_t &device, Object &&cb) { return downcast(device).m_read_3_cb.set_callback(std::forward(cb)); } template static devcb_base &set_write_3_callback(device_t &device, Object &&cb) { return downcast(device).m_write_3_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_write_4_callback(device_t &device, Object &&cb) { return downcast(device).m_write_4_cb.set_callback(std::forward(cb)); } template static devcb_base &set_read_7_callback(device_t &device, Object &&cb) { return downcast(device).m_read_7_cb.set_callback(std::forward(cb)); } DECLARE_READ8_MEMBER( read ); @@ -53,6 +54,7 @@ private: devcb_read8 m_read_2_cb; devcb_read8 m_read_3_cb; devcb_write8 m_write_3_cb; + devcb_write8 m_write_4_cb; devcb_read8 m_read_7_cb; }; @@ -68,6 +70,7 @@ public: template static devcb_base &set_read_2_callback(device_t &device, Object &&cb) { return downcast(device).m_read_2_cb.set_callback(std::forward(cb)); } template static devcb_base &set_read_3_callback(device_t &device, Object &&cb) { return downcast(device).m_read_3_cb.set_callback(std::forward(cb)); } template static devcb_base &set_write_3_callback(device_t &device, Object &&cb) { return downcast(device).m_write_3_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_write_4_callback(device_t &device, Object &&cb) { return downcast(device).m_write_4_cb.set_callback(std::forward(cb)); } template static devcb_base &set_read_7_callback(device_t &device, Object &&cb) { return downcast(device).m_read_7_cb.set_callback(std::forward(cb)); } DECLARE_READ8_MEMBER( read ); @@ -94,6 +97,7 @@ private: devcb_read8 m_read_2_cb; devcb_read8 m_read_3_cb; devcb_write8 m_write_3_cb; + devcb_write8 m_write_4_cb; devcb_read8 m_read_7_cb; }; @@ -108,6 +112,7 @@ public: template static devcb_base &set_read_1_callback(device_t &device, Object &&cb) { return downcast(device).m_read_1_cb.set_callback(std::forward(cb)); } template static devcb_base &set_read_2_callback(device_t &device, Object &&cb) { return downcast(device).m_read_2_cb.set_callback(std::forward(cb)); } template static devcb_base &set_read_3_callback(device_t &device, Object &&cb) { return downcast(device).m_read_3_cb.set_callback(std::forward(cb)); } + template static devcb_base &set_write_4_callback(device_t &device, Object &&cb) { return downcast(device).m_write_4_cb.set_callback(std::forward(cb)); } template static devcb_base &set_read_7_callback(device_t &device, Object &&cb) { return downcast(device).m_read_7_cb.set_callback(std::forward(cb)); } @@ -134,6 +139,7 @@ protected: devcb_read8 m_read_1_cb; devcb_read8 m_read_2_cb; devcb_read8 m_read_3_cb; + devcb_write8 m_write_4_cb; devcb_read8 m_read_7_cb; }; @@ -159,6 +165,9 @@ DECLARE_DEVICE_TYPE(TC0640FIO, tc0640fio_device) #define MCFG_TC0220IOC_WRITE_3_CB(_devcb) \ devcb = &tc0220ioc_device::set_write_3_callback(*device, DEVCB_##_devcb); +#define MCFG_TC0220IOC_WRITE_4_CB(_devcb) \ + devcb = &tc0220ioc_device::set_write_4_callback(*device, DEVCB_##_devcb); + #define MCFG_TC0220IOC_READ_7_CB(_devcb) \ devcb = &tc0220ioc_device::set_read_7_callback(*device, DEVCB_##_devcb); @@ -178,6 +187,9 @@ DECLARE_DEVICE_TYPE(TC0640FIO, tc0640fio_device) #define MCFG_TC0510NIO_WRITE_3_CB(_devcb) \ devcb = &tc0510nio_device::set_write_3_callback(*device, DEVCB_##_devcb); +#define MCFG_TC0510NIO_WRITE_4_CB(_devcb) \ + devcb = &tc0510nio_device::set_write_4_callback(*device, DEVCB_##_devcb); + #define MCFG_TC0510NIO_READ_7_CB(_devcb) \ devcb = &tc0510nio_device::set_read_7_callback(*device, DEVCB_##_devcb); @@ -194,6 +206,9 @@ DECLARE_DEVICE_TYPE(TC0640FIO, tc0640fio_device) #define MCFG_TC0640FIO_READ_3_CB(_devcb) \ devcb = &tc0640fio_device::set_read_3_callback(*device, DEVCB_##_devcb); +#define MCFG_TC0640FIO_WRITE_4_CB(_devcb) \ + devcb = &tc0640fio_device::set_write_4_callback(*device, DEVCB_##_devcb); + #define MCFG_TC0640FIO_READ_7_CB(_devcb) \ devcb = &tc0640fio_device::set_read_7_callback(*device, DEVCB_##_devcb); -- cgit v1.2.3