diff options
35 files changed, 151 insertions, 148 deletions
diff --git a/src/mame/drivers/aristmk5.cpp b/src/mame/drivers/aristmk5.cpp index e1d054a5b50..377088e535a 100644 --- a/src/mame/drivers/aristmk5.cpp +++ b/src/mame/drivers/aristmk5.cpp @@ -706,7 +706,7 @@ READ8_MEMBER(aristmk5_state::eeprom_r) WRITE8_MEMBER(aristmk5_state::hopper_w) { - m_hopper->write(space, 0, (data & 0x02) ? 0x80 : 0); + m_hopper->motor_w(BIT(data, 1)); m_hopper_test = BIT(data, 2); } @@ -741,7 +741,7 @@ WRITE8_MEMBER(aristmk5_state::eeprom_w) WRITE8_MEMBER(aristmk5_state::eeprom_usa_w) { eeprom_w(space, offset, data, mem_mask); - m_hopper->write(space, 0, (data & 0x04) ? 0x80 : 0); + m_hopper->motor_w(BIT(data, 2)); } READ8_MEMBER(aristmk5_state::ldor_r) diff --git a/src/mame/drivers/astrcorp.cpp b/src/mame/drivers/astrcorp.cpp index addf0b57921..680600f8997 100644 --- a/src/mame/drivers/astrcorp.cpp +++ b/src/mame/drivers/astrcorp.cpp @@ -57,6 +57,8 @@ public: m_gfxdecode(*this, "gfxdecode"), m_screen(*this, "screen"), m_palette(*this, "palette"), + m_hopper(*this, "hopper"), + m_ticket(*this, "ticket"), m_spriteram(*this, "spriteram") { } @@ -66,6 +68,8 @@ public: required_device<gfxdecode_device> m_gfxdecode; required_device<screen_device> m_screen; required_device<palette_device> m_palette; + optional_device<ticket_dispenser_device> m_hopper; + optional_device<ticket_dispenser_device> m_ticket; // memory pointers required_shared_ptr<uint16_t> m_spriteram; @@ -263,23 +267,23 @@ WRITE16_MEMBER(astrocorp_state::skilldrp_outputs_w) if (ACCESSING_BITS_0_7) { - machine().bookkeeping().coin_counter_w(0, (data & 0x0001)); // key in | - machine().bookkeeping().coin_counter_w(0, (data & 0x0002)); // coin in |- manual shows 1 in- and 1 out- counter - machine().bookkeeping().coin_counter_w(1, (data & 0x0004)); // key out | - machine().device<ticket_dispenser_device>("hopper")->write(space, 0, (data & 0x0008)<<4); // hopper motor? - // (data & 0x0010) // hopper? - output().set_led_value(0, (data & 0x0020)); // error lamp (coin/hopper jam: "call attendant") - machine().device<ticket_dispenser_device>("ticket")->write(space, 0, data & 0x0080); // ticket motor? + machine().bookkeeping().coin_counter_w(0, BIT(data, 0)); // key in | + machine().bookkeeping().coin_counter_w(0, BIT(data, 1)); // coin in |- manual shows 1 in- and 1 out- counter + machine().bookkeeping().coin_counter_w(1, BIT(data, 2)); // key out | + m_hopper->motor_w(BIT(data, 3)); // hopper motor? + // BIT(data, 4) // hopper? + output().set_led_value(0, BIT(data, 5)); // error lamp (coin/hopper jam: "call attendant") + m_ticket->motor_w(BIT(data, 7)); // ticket motor? } if (ACCESSING_BITS_8_15) { // lamps: - output().set_led_value(1, (data & 0x0100)); // select - output().set_led_value(2, (data & 0x0400)); // take - output().set_led_value(3, (data & 0x0800)); // bet - output().set_led_value(4, (data & 0x1000)); // start - output().set_led_value(5, (data & 0x4000)); // win / test - output().set_led_value(6, (data & 0x8000)); // ticket? + output().set_led_value(1, BIT(data, 8)); // select + output().set_led_value(2, BIT(data, 10)); // take + output().set_led_value(3, BIT(data, 11)); // bet + output().set_led_value(4, BIT(data, 12)); // start + output().set_led_value(5, BIT(data, 14)); // win / test + output().set_led_value(6, BIT(data, 15)); // ticket? } // popmessage("%04X",data); diff --git a/src/mame/drivers/big10.cpp b/src/mame/drivers/big10.cpp index 230ff204f7d..e52df91acfb 100644 --- a/src/mame/drivers/big10.cpp +++ b/src/mame/drivers/big10.cpp @@ -97,7 +97,7 @@ public: WRITE8_MEMBER(big10_state::mux_w) { m_mux_data = ~data; - m_hopper->write(space, 0, (data & 0x40) << 1); + m_hopper->motor_w(BIT(data, 6)); machine().output().set_lamp_value(1, BIT(~data, 7)); // maybe a coin counter? } diff --git a/src/mame/drivers/bmcpokr.cpp b/src/mame/drivers/bmcpokr.cpp index 4a0a644c07c..ea5d9a8e4a6 100644 --- a/src/mame/drivers/bmcpokr.cpp +++ b/src/mame/drivers/bmcpokr.cpp @@ -329,9 +329,9 @@ WRITE16_MEMBER(bmcpokr_state::mux_w) COMBINE_DATA(&m_mux); if (ACCESSING_BITS_0_7) { - m_hopper->write(space, 0, (data & 0x0001) ? 0x80 : 0x00); // hopper motor - machine().bookkeeping().coin_counter_w(1, data & 0x0002); // coin-in / key-in - machine().bookkeeping().coin_counter_w(2, data & 0x0004); // pay-out + m_hopper->motor_w(BIT(data, 0)); // hopper motor + machine().bookkeeping().coin_counter_w(1, BIT(data, 1)); // coin-in / key-in + machine().bookkeeping().coin_counter_w(2, BIT(data, 2)); // pay-out // data & 0x0060 // DSW mux // data & 0x0080 // ? always on } diff --git a/src/mame/drivers/capbowl.cpp b/src/mame/drivers/capbowl.cpp index ed82dc96aff..4df238be4f8 100644 --- a/src/mame/drivers/capbowl.cpp +++ b/src/mame/drivers/capbowl.cpp @@ -350,8 +350,8 @@ static MACHINE_CONFIG_START( capbowl ) MCFG_SOUND_ADD("ymsnd", YM2203, MASTER_CLOCK/2) MCFG_YM2203_IRQ_HANDLER(INPUTLINE("audiocpu", M6809_FIRQ_LINE)) - MCFG_AY8910_PORT_A_READ_CB(DEVREAD8("ticket", ticket_dispenser_device, read)) - MCFG_AY8910_PORT_B_WRITE_CB(DEVWRITE8("ticket", ticket_dispenser_device, write)) /* Also a status LED. See memory map above */ + MCFG_AY8910_PORT_A_READ_CB(DEVREADLINE("ticket", ticket_dispenser_device, line_r)) MCFG_DEVCB_BIT(7) + MCFG_AY8910_PORT_B_WRITE_CB(DEVWRITELINE("ticket", ticket_dispenser_device, motor_w)) MCFG_DEVCB_BIT(7) /* Also a status LED. See memory map above */ MCFG_SOUND_ROUTE(0, "speaker", 0.07) MCFG_SOUND_ROUTE(1, "speaker", 0.07) MCFG_SOUND_ROUTE(2, "speaker", 0.07) diff --git a/src/mame/drivers/champbwl.cpp b/src/mame/drivers/champbwl.cpp index e0795918195..94c8e54429f 100644 --- a/src/mame/drivers/champbwl.cpp +++ b/src/mame/drivers/champbwl.cpp @@ -170,6 +170,7 @@ public: m_seta001(*this, "spritegen"), m_palette(*this, "palette"), m_x1(*this, "x1snd"), + m_hopper(*this, "hopper"), m_fakex(*this, "FAKEX"), m_fakey(*this, "FAKEY") { } @@ -179,6 +180,7 @@ public: required_device<seta001_device> m_seta001; required_device<palette_device> m_palette; required_device<x1_010_device> m_x1; + optional_device<ticket_dispenser_device> m_hopper; optional_ioport m_fakex; optional_ioport m_fakey; @@ -271,11 +273,11 @@ ADDRESS_MAP_END WRITE8_MEMBER(champbwl_state::doraemon_outputs_w) { - machine().bookkeeping().coin_counter_w(0, data & 1); // coin in counter - machine().bookkeeping().coin_counter_w(1, data & 2); // gift out counter + machine().bookkeeping().coin_counter_w(0, BIT(data, 0)); // coin in counter + machine().bookkeeping().coin_counter_w(1, BIT(data, 1)); // gift out counter - machine().bookkeeping().coin_lockout_w(0, ~data & 8); // coin lockout - machine().device<ticket_dispenser_device>("hopper")->write(space, 0, (data & 0x04) ? 0x00 : 0x80); // gift out motor + machine().bookkeeping().coin_lockout_w(0, BIT(~data, 3)); // coin lockout + m_hopper->motor_w(BIT(~data, 2)); // gift out motor membank("bank1")->set_entry((data & 0x30) >> 4); diff --git a/src/mame/drivers/cischeat.cpp b/src/mame/drivers/cischeat.cpp index 8fe886141c7..392a8c397e7 100644 --- a/src/mame/drivers/cischeat.cpp +++ b/src/mame/drivers/cischeat.cpp @@ -692,7 +692,7 @@ WRITE16_MEMBER(cischeat_state::captflag_leds_w) output().set_led_value(1, data & 0x2000); // select int power = (data & 0x1000); - m_captflag_hopper->write(space, 0, power ? 0x80 : 0x00); // prize motor + m_captflag_hopper->motor_w(power ? 1 : 0); // prize motor if (!power) m_captflag_hopper->reset(); } diff --git a/src/mame/drivers/dcheese.cpp b/src/mame/drivers/dcheese.cpp index b31ee921a25..adc477ee864 100644 --- a/src/mame/drivers/dcheese.cpp +++ b/src/mame/drivers/dcheese.cpp @@ -119,7 +119,6 @@ WRITE16_MEMBER(dcheese_state::eeprom_control_w) if (ACCESSING_BITS_0_7) { ioport("EEPROMOUT")->write(data, 0xff); - machine().device<ticket_dispenser_device>("ticket")->write(space, 0, (data & 1) << 7); } } @@ -257,6 +256,7 @@ static INPUT_PORTS_START( dcheese ) PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START( "EEPROMOUT" ) + PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("ticket", ticket_dispenser_device, motor_w) PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) @@ -305,6 +305,7 @@ static INPUT_PORTS_START( lottof2 ) PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START( "EEPROMOUT" ) + PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("ticket", ticket_dispenser_device, motor_w) PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) @@ -355,6 +356,7 @@ static INPUT_PORTS_START( fredmem ) PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START( "EEPROMOUT" ) + PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("ticket", ticket_dispenser_device, motor_w) PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) diff --git a/src/mame/drivers/funtech.cpp b/src/mame/drivers/funtech.cpp index 1ecd23625dd..e780b38df9f 100644 --- a/src/mame/drivers/funtech.cpp +++ b/src/mame/drivers/funtech.cpp @@ -280,7 +280,7 @@ WRITE8_MEMBER(fun_tech_corp_state::funtech_coins_w) if (data & 0x01) printf("funtech_coins_w %02x\n", data); // 80 = hopper motor? - m_hopper->write(space, 0, data & 0x80); + m_hopper->motor_w(BIT(data, 7)); // 40 = ? sometimes diff --git a/src/mame/drivers/gei.cpp b/src/mame/drivers/gei.cpp index 28c2ffbc11e..87186cd4c6b 100644 --- a/src/mame/drivers/gei.cpp +++ b/src/mame/drivers/gei.cpp @@ -212,8 +212,8 @@ WRITE8_MEMBER(gei_state::sound_w) output().set_led_value(9, BIT(data, 3)); /* bit 5 - ticket out in trivia games */ - if (m_ticket != nullptr) - m_ticket->write(machine().dummy_space(), 0, (data & 0x20) << 2); + if (m_ticket.found()) + m_ticket->motor_w(BIT(data, 5)); /* bit 6 enables NMI */ m_nmi_mask = data & 0x40; diff --git a/src/mame/drivers/goldstar.cpp b/src/mame/drivers/goldstar.cpp index 358bbd6f7be..046830f919f 100644 --- a/src/mame/drivers/goldstar.cpp +++ b/src/mame/drivers/goldstar.cpp @@ -1144,7 +1144,7 @@ WRITE8_MEMBER(unkch_state::coincount_w) */ - m_ticket_dispenser->write(space, offset, data & 0x80); + m_ticket_dispenser->motor_w(BIT(data, 7)); machine().bookkeeping().coin_counter_w(0, data & 0x04); /* Credit counter */ machine().bookkeeping().coin_counter_w(1, data & 0x08); /* Key In counter */ diff --git a/src/mame/drivers/igs017.cpp b/src/mame/drivers/igs017.cpp index 976d5d4fb0a..f88b3511c7e 100644 --- a/src/mame/drivers/igs017.cpp +++ b/src/mame/drivers/igs017.cpp @@ -1337,7 +1337,7 @@ WRITE16_MEMBER(igs017_state::mgcs_magic_w) // ---- ---0 Hopper Motor m_input_select = data & 0xff; - m_hopperdev->write(space, 0, (data & 0x0001) ? 0x80 : 0x00); + m_hopperdev->motor_w(BIT(data, 0)); if (igs029_irq) { diff --git a/src/mame/drivers/itech32.cpp b/src/mame/drivers/itech32.cpp index f2033c0dedd..505d4751d03 100644 --- a/src/mame/drivers/itech32.cpp +++ b/src/mame/drivers/itech32.cpp @@ -359,7 +359,6 @@ Notes: #include "cpu/tms32031/tms32031.h" #include "machine/6522via.h" #include "machine/nvram.h" -#include "machine/ticket.h" #include "machine/timekpr.h" #include "machine/watchdog.h" #include "sound/es5506.h" @@ -739,11 +738,11 @@ WRITE8_MEMBER(itech32_state::drivedge_portb_out) /* bit 4 controls the ticket dispenser */ /* bit 5 controls the coin counter */ /* bit 6 controls the diagnostic sound LED */ - output().set_led_value(1, data & 0x01); - output().set_led_value(2, data & 0x02); - output().set_led_value(3, data & 0x04); - machine().device<ticket_dispenser_device>("ticket")->write(machine().dummy_space(), 0, (data & 0x10) << 3); - machine().bookkeeping().coin_counter_w(0, (data & 0x20) >> 5); + output().set_led_value(1, BIT(data, 0)); + output().set_led_value(2, BIT(data, 1)); + output().set_led_value(3, BIT(data, 2)); + m_ticket->motor_w(BIT(data, 4)); + machine().bookkeeping().coin_counter_w(0, BIT(data, 5)); } @@ -760,8 +759,8 @@ WRITE8_MEMBER(itech32_state::pia_portb_out) /* bit 4 controls the ticket dispenser */ /* bit 5 controls the coin counter */ /* bit 6 controls the diagnostic sound LED */ - machine().device<ticket_dispenser_device>("ticket")->write(machine().dummy_space(), 0, (data & 0x10) << 3); - machine().bookkeeping().coin_counter_w(0, (data & 0x20) >> 5); + m_ticket->motor_w(BIT(data, 4)); + machine().bookkeeping().coin_counter_w(0, BIT(data, 5)); } diff --git a/src/mame/drivers/itech8.cpp b/src/mame/drivers/itech8.cpp index 646d3a34f63..d88579c3b80 100644 --- a/src/mame/drivers/itech8.cpp +++ b/src/mame/drivers/itech8.cpp @@ -748,8 +748,8 @@ WRITE8_MEMBER(itech8_state::pia_portb_out) /* bit 5 controls the coin counter */ /* bit 6 controls the diagnostic sound LED */ m_pia_portb_data = data; - m_ticket->write(space, 0, (data & 0x10) << 3); - machine().bookkeeping().coin_counter_w(0, (data & 0x20) >> 5); + m_ticket->motor_w(BIT(data, 4)); + machine().bookkeeping().coin_counter_w(0, BIT(data, 5)); } @@ -762,8 +762,8 @@ WRITE8_MEMBER(itech8_state::ym2203_portb_out) /* bit 6 controls the diagnostic sound LED */ /* bit 7 controls the ticket dispenser */ m_pia_portb_data = data; - m_ticket->write(machine().dummy_space(), 0, data & 0x80); - machine().bookkeeping().coin_counter_w(0, (data & 0x20) >> 5); + m_ticket->motor_w(BIT(data, 7)); + machine().bookkeeping().coin_counter_w(0, BIT(data, 5)); } diff --git a/src/mame/drivers/kurukuru.cpp b/src/mame/drivers/kurukuru.cpp index c77f1f20b4c..d9c774e9b76 100644 --- a/src/mame/drivers/kurukuru.cpp +++ b/src/mame/drivers/kurukuru.cpp @@ -491,10 +491,10 @@ WRITE8_MEMBER(kurukuru_state::kurukuru_out_latch_w) 07 | Not connected | unused */ - machine().bookkeeping().coin_counter_w(0, data & 0x01); /* Coin Counter 1 */ - machine().bookkeeping().coin_counter_w(1, data & 0x20); /* Coin Counter 2 */ - machine().bookkeeping().coin_lockout_global_w(data & 0x40); /* Coin Lock */ - m_hopper->write(space, 0, (data & 0x40) ? 0x80 : 0); /* Hopper Motor */ + machine().bookkeeping().coin_counter_w(0, BIT(data, 0)); + machine().bookkeeping().coin_counter_w(1, BIT(data, 5)); + //machine().bookkeeping().coin_lockout_global_w(BIT(data, 6)); + m_hopper->motor_w(BIT(data, 6)); if (data & 0x9e) logerror("kurukuru_out_latch_w %02X @ %04X\n", data, space.device().safe_pc()); diff --git a/src/mame/drivers/lethalj.cpp b/src/mame/drivers/lethalj.cpp index 46d4f812ada..5d233730c9f 100644 --- a/src/mame/drivers/lethalj.cpp +++ b/src/mame/drivers/lethalj.cpp @@ -176,29 +176,29 @@ CUSTOM_INPUT_MEMBER(lethalj_state::cclownz_paddle) WRITE16_MEMBER(lethalj_state::ripribit_control_w) { - machine().bookkeeping().coin_counter_w(0, data & 1); - m_ticket->write(space, 0, ((data >> 1) & 1) << 7); - output().set_lamp_value(0, (data >> 2) & 1); + machine().bookkeeping().coin_counter_w(0, BIT(data, 0)); + m_ticket->motor_w(BIT(data, 1)); + output().set_lamp_value(0, BIT(data, 2)); } WRITE16_MEMBER(lethalj_state::cfarm_control_w) { - m_ticket->write(space, 0, ((data >> 0) & 1) << 7); - output().set_lamp_value(0, (data >> 2) & 1); - output().set_lamp_value(1, (data >> 3) & 1); - output().set_lamp_value(2, (data >> 4) & 1); - machine().bookkeeping().coin_counter_w(0, (data >> 7) & 1); + m_ticket->motor_w(BIT(data, 0)); + output().set_lamp_value(0, BIT(data, 2)); + output().set_lamp_value(1, BIT(data, 3)); + output().set_lamp_value(2, BIT(data, 4)); + machine().bookkeeping().coin_counter_w(0, BIT(data, 7)); } WRITE16_MEMBER(lethalj_state::cclownz_control_w) { - m_ticket->write(space, 0, ((data >> 0) & 1) << 7); - output().set_lamp_value(0, (data >> 2) & 1); - output().set_lamp_value(1, (data >> 4) & 1); - output().set_lamp_value(2, (data >> 5) & 1); - machine().bookkeeping().coin_counter_w(0, (data >> 6) & 1); + m_ticket->motor_w(BIT(data, 0)); + output().set_lamp_value(0, BIT(data, 2)); + output().set_lamp_value(1, BIT(data, 4)); + output().set_lamp_value(2, BIT(data, 5)); + machine().bookkeeping().coin_counter_w(0, BIT(data, 6)); } diff --git a/src/mame/drivers/mgavegas.cpp b/src/mame/drivers/mgavegas.cpp index 5f773e736b7..17025cb4b38 100644 --- a/src/mame/drivers/mgavegas.cpp +++ b/src/mame/drivers/mgavegas.cpp @@ -357,7 +357,6 @@ WRITE8_MEMBER(mgavegas_state::csoki_w) WRITE8_MEMBER(mgavegas_state::cso1_w) { - int hopper_data = 0x00; if (LOG_CSO1) logerror("write to CSO1 data = %02X\n",data); @@ -372,8 +371,7 @@ WRITE8_MEMBER(mgavegas_state::cso1_w) update_custom(); - hopper_data=(m_hop&0x01)<<7; - m_ticket->write(machine().dummy_space(), 0, hopper_data); + m_ticket->motor_w(m_hop); } WRITE8_MEMBER(mgavegas_state::cso2_w) diff --git a/src/mame/drivers/midas.cpp b/src/mame/drivers/midas.cpp index bb4139bb056..983e233dfb2 100644 --- a/src/mame/drivers/midas.cpp +++ b/src/mame/drivers/midas.cpp @@ -72,6 +72,8 @@ public: m_palette(*this, "palette"), m_sprgen(*this, "spritegen"), m_screen(*this, "screen"), + m_prize(*this, "prize%u", 1), + m_ticket(*this, "ticket"), m_zoomram(*this, "zoomtable") { } @@ -96,6 +98,8 @@ public: required_device<palette_device> m_palette; required_device<neosprite_midas_device> m_sprgen; required_device<screen_device> m_screen; + optional_device_array<ticket_dispenser_device, 2> m_prize; + optional_device<ticket_dispenser_device> m_ticket; required_shared_ptr<uint16_t> m_zoomram; DECLARE_WRITE_LINE_MEMBER(screen_vblank_midas); @@ -237,8 +241,8 @@ WRITE16_MEMBER(midas_state::hammer_coin_w) { if (ACCESSING_BITS_0_7) { - machine().bookkeeping().coin_counter_w(0, data & 0x0001); - machine().bookkeeping().coin_counter_w(1, data & 0x0002); + machine().bookkeeping().coin_counter_w(0, BIT(data, 0)); + machine().bookkeeping().coin_counter_w(1, BIT(data, 1)); } #ifdef MAME_DEBUG // popmessage("coin %04X", data); @@ -249,9 +253,9 @@ WRITE16_MEMBER(midas_state::hammer_motor_w) { if (ACCESSING_BITS_0_7) { - machine().device<ticket_dispenser_device>("prize1")->write(space, 0, (data & 0x0001) << 7); - machine().device<ticket_dispenser_device>("prize2")->write(space, 0, (data & 0x0002) << 6); - machine().device<ticket_dispenser_device>("ticket")->write(space, 0, (data & 0x0010) << 3); + m_prize[0]->motor_w(BIT(data, 0)); + m_prize[1]->motor_w(BIT(data, 1)); + m_ticket->motor_w(BIT(data, 4)); // data & 0x0080 ? } #ifdef MAME_DEBUG diff --git a/src/mame/drivers/mjsenpu.cpp b/src/mame/drivers/mjsenpu.cpp index 3e423d318cf..c8bd3515590 100644 --- a/src/mame/drivers/mjsenpu.cpp +++ b/src/mame/drivers/mjsenpu.cpp @@ -158,7 +158,7 @@ WRITE8_MEMBER(mjsenpu_state::control_w) // bits 0x08 is used in the alt payout / hopper mode (see dipswitches) // 0x04 seem to be hopper/ticket related? different ones get used depending on the dips - m_hopper->write(space, 0, data & 0x04); + m_hopper->motor_w(data & 0x04); // bit 0x02 could be coin counter? machine().bookkeeping().coin_counter_w(0, data & 0x02 ); diff --git a/src/mame/drivers/playmark.cpp b/src/mame/drivers/playmark.cpp index 567965d00d1..7055e563d39 100644 --- a/src/mame/drivers/playmark.cpp +++ b/src/mame/drivers/playmark.cpp @@ -65,11 +65,8 @@ TODO: #include "cpu/m68000/m68000.h" #include "cpu/pic16c5x/pic16c5x.h" -#include "machine/eepromser.h" #include "machine/nvram.h" -#include "machine/ticket.h" #include "screen.h" -#include "sound/okim6295.h" #include "speaker.h" @@ -118,14 +115,14 @@ WRITE16_MEMBER(playmark_state::hotmind_coin_eeprom_w) if ((m_dispenser_latch & 0x80) == 0) m_dispenser_latch = 0; if (data & 0x10) { m_dispenser_latch |= ((data & 0x10) | 0x80); - machine().device<ticket_dispenser_device>("token")->write(space, 0, 0x80); + m_token->motor_w(1); } } else { m_dispenser_latch &= 0x7f; - machine().device<ticket_dispenser_device>("token")->write(space, 0, (m_dispenser_latch & 0x10) ? 0x80 : 0); + m_token->motor_w(BIT(m_dispenser_latch, 4)); } - machine().device<ticket_dispenser_device>("ticket")->write(space, 0, (data & 0x08) ? 0x80 : 0); + m_ticket->motor_w(BIT(data, 3)); machine().bookkeeping().coin_counter_w(0, data & 0x20); /* Coin In counter - transistor driven */ machine().bookkeeping().coin_counter_w(1, data & 0x40); /* Token/Ticket Out counter - transistor driven */ @@ -146,14 +143,14 @@ WRITE16_MEMBER(playmark_state::luckboomh_dispenser_w) if ((m_dispenser_latch & 0x80) == 0) m_dispenser_latch = 0; if (data & 0x10) { m_dispenser_latch |= ((data & 0x10) | 0x80); - machine().device<ticket_dispenser_device>("token")->write(space, 0, 0x80); + m_token->motor_w(1); } } else { m_dispenser_latch &= 0x7f; - machine().device<ticket_dispenser_device>("token")->write(space, 0, (m_dispenser_latch & 0x10) ? 0x80 : 0); + m_token->motor_w(BIT(m_dispenser_latch, 4)); } - machine().device<ticket_dispenser_device>("ticket")->write(space, 0, (data & 0x08) ? 0x80 : 0); + m_ticket->motor_w(BIT(data, 3)); machine().bookkeeping().coin_counter_w(0, data & 0x20); /* Coin In counter - transistor driven */ machine().bookkeeping().coin_counter_w(1, data & 0x40); /* Token/Ticket Out counter - transistor driven */ diff --git a/src/mame/drivers/seta.cpp b/src/mame/drivers/seta.cpp index a18d62feeb3..3cab3c0194e 100644 --- a/src/mame/drivers/seta.cpp +++ b/src/mame/drivers/seta.cpp @@ -2445,7 +2445,7 @@ WRITE8_MEMBER(setaroul_state::pay_w) machine().bookkeeping().coin_counter_w(1, data & 0x20); // note in (meter 1 in input test, touch '2') // data & 0x40 // hopper lock-out (lock.o in input test, touch '8') // data & 0x80 // hopper motor (hop.h in input test, touch '0') - m_hopper->write(space, 0,(!(data & 0x40) && (data & 0x80)) ? 0x80 : 0x00); + m_hopper->motor_w((!(data & 0x40) && (data & 0x80)) ? 1 : 0); show_outputs(); } diff --git a/src/mame/drivers/seta2.cpp b/src/mame/drivers/seta2.cpp index 9bab6a5eaab..7da05a4fe57 100644 --- a/src/mame/drivers/seta2.cpp +++ b/src/mame/drivers/seta2.cpp @@ -424,7 +424,7 @@ WRITE16_MEMBER(seta2_state::reelquak_leds_w) } if (ACCESSING_BITS_8_15) { - machine().device<ticket_dispenser_device>("ticket")->write(space, 0, (data & 0x0100) >> 1); // ticket dispenser + machine().device<ticket_dispenser_device>("ticket")->motor_w(BIT(data, 8)); // ticket dispenser } // popmessage("LED %04X", data); diff --git a/src/mame/drivers/sigmab98.cpp b/src/mame/drivers/sigmab98.cpp index c26dcf49347..5f8259a8c2e 100644 --- a/src/mame/drivers/sigmab98.cpp +++ b/src/mame/drivers/sigmab98.cpp @@ -139,7 +139,10 @@ public: m_eeprom(*this, "eeprom"), m_gfxdecode(*this, "gfxdecode"), m_screen(*this, "screen"), - m_palette(*this, "palette") + m_palette(*this, "palette"), + m_hopper(*this, "hopper"), + m_hopper_small(*this, "hopper_small"), + m_hopper_large(*this, "hopper_large") { } required_device<cpu_device> m_maincpu; @@ -154,6 +157,9 @@ public: std::vector<uint8_t> m_paletteram; required_device<screen_device> m_screen; required_device<palette_device> m_palette; + optional_device<ticket_dispenser_device> m_hopper; + optional_device<ticket_dispenser_device> m_hopper_small; + optional_device<ticket_dispenser_device> m_hopper_large; std::unique_ptr<bitmap_ind16> m_sprite_bitmap; @@ -901,7 +907,7 @@ WRITE8_MEMBER(sigmab98_state::c6_w) // 02 hopper motor on (active low)? WRITE8_MEMBER(sigmab98_state::c8_w) { - machine().device<ticket_dispenser_device>("hopper")->write(space, 0, (!(data & 0x02) && (data & 0x01)) ? 0x00 : 0x80); + m_hopper->motor_w((!(data & 0x02) && (data & 0x01)) ? 0 : 1); m_c8 = data; show_outputs(); @@ -1216,7 +1222,7 @@ WRITE8_MEMBER(sigmab98_state::sammymdl_leds_w) // 01 hopper motor on (active low)? WRITE8_MEMBER(sigmab98_state::sammymdl_hopper_w) { - machine().device<ticket_dispenser_device>("hopper")->write(space, 0, (!(data & 0x01) && (data & 0x02)) ? 0x00 : 0x80); + m_hopper->motor_w((!(data & 0x01) && (data & 0x02)) ? 0 : 1); m_out[2] = data; show_3_outputs(); @@ -1226,7 +1232,7 @@ READ8_MEMBER(sigmab98_state::sammymdl_coin_hopper_r) { uint8_t ret = ioport("COIN")->read(); -// if ( !machine().device<ticket_dispenser_device>("hopper")->read(0) ) +// if ( !m_hopper->read(0) ) // ret &= ~0x01; return ret; @@ -1541,8 +1547,8 @@ WRITE8_MEMBER(sigmab98_state::gocowboy_leds_w) // 10 hopper enable? // 20 hopper motor on (active low)? - machine().device<ticket_dispenser_device>("hopper_small")->write(space, 0, (!(data & 0x20) && (data & 0x10)) ? 0x00 : 0x80); - machine().device<ticket_dispenser_device>("hopper_large")->write(space, 0, (!(data & 0x80) && (data & 0x40)) ? 0x00 : 0x80); + m_hopper_small->motor_w((!(data & 0x20) && (data & 0x10)) ? 0 : 1); + m_hopper_large->motor_w((!(data & 0x80) && (data & 0x40)) ? 0 : 1); m_out[1] = data; show_3_outputs(); diff --git a/src/mame/drivers/subsino.cpp b/src/mame/drivers/subsino.cpp index 4de5cf8ea5e..f76bc13a099 100644 --- a/src/mame/drivers/subsino.cpp +++ b/src/mame/drivers/subsino.cpp @@ -680,7 +680,7 @@ WRITE8_MEMBER(subsino_state::subsino_out_a_w) machine().bookkeeping().coin_counter_w(2, data & 0x10 ); /* keyout */ machine().bookkeeping().coin_counter_w(3, data & 0x20 ); /* payout */ - m_hopper->write(space, 0, (data & 0x0020) ? 0x80 : 0); // hopper motor + m_hopper->motor_w(BIT(data, 5)); // hopper motor // popmessage("Out A %02x",data); } diff --git a/src/mame/drivers/subsino2.cpp b/src/mame/drivers/subsino2.cpp index 02ea918099b..03ce8617aa3 100644 --- a/src/mame/drivers/subsino2.cpp +++ b/src/mame/drivers/subsino2.cpp @@ -93,7 +93,8 @@ public: m_oki(*this, "oki"), m_gfxdecode(*this, "gfxdecode"), m_screen(*this, "screen"), - m_palette(*this, "palette") { } + m_palette(*this, "palette"), + m_hopper(*this, "hopper") { } layer_t m_layers[2]; uint8_t m_ss9601_byte_lo; @@ -180,6 +181,7 @@ public: required_device<gfxdecode_device> m_gfxdecode; required_device<screen_device> m_screen; required_device<palette_device> m_palette; + optional_device<ticket_dispenser_device> m_hopper; private: inline void ss9601_get_tile_info(layer_t *l, tile_data &tileinfo, tilemap_memory_index tile_index); @@ -873,7 +875,7 @@ READ16_MEMBER(subsino2_state::bishjan_input_r) return (res << 8) | // high byte ioport("SYSTEM")->read() | // low byte - (machine().device<ticket_dispenser_device>("hopper")->read(space, 0) ? 0x00 : 0x04) // bit 2: hopper sensor + (machine().device<ticket_dispenser_device>("hopper")->line_r() ? 0x00 : 0x04) // bit 2: hopper sensor ; } @@ -886,9 +888,9 @@ WRITE16_MEMBER(subsino2_state::bishjan_outputs_w) case 0: if (ACCESSING_BITS_0_7) { - // coin out data & 0x01; - machine().device<ticket_dispenser_device>("hopper")->write(space, 0, (data & 0x0002) ? 0x80 : 0); // hopper - machine().bookkeeping().coin_counter_w(0, data & 0x0010 ); + // coin out BIT(data, 0) + m_hopper->motor_w(BIT(data, 1)); // hopper + machine().bookkeeping().coin_counter_w(0, BIT(data, 4)); } break; } diff --git a/src/mame/drivers/tickee.cpp b/src/mame/drivers/tickee.cpp index b4c4a60ed92..b5abef3de74 100644 --- a/src/mame/drivers/tickee.cpp +++ b/src/mame/drivers/tickee.cpp @@ -49,6 +49,7 @@ public: m_oki(*this, "oki"), m_screen(*this, "screen"), m_tlc34076(*this, "tlc34076"), + m_ticket(*this, "ticket%u", 1), m_vram(*this, "vram"), m_control(*this, "control") { } @@ -56,6 +57,7 @@ public: optional_device<okim6295_device> m_oki; required_device<screen_device> m_screen; required_device<tlc34076_device> m_tlc34076; + optional_device_array<ticket_dispenser_device, 2> m_ticket; required_shared_ptr<uint16_t> m_vram; optional_shared_ptr<uint16_t> m_control; @@ -336,8 +338,8 @@ WRITE16_MEMBER(tickee_state::tickee_control_w) if (offset == 3) { - machine().device<ticket_dispenser_device>("ticket1")->write(space, 0, (data & 8) << 4); - machine().device<ticket_dispenser_device>("ticket2")->write(space, 0, (data & 4) << 5); + m_ticket[0]->motor_w(BIT(data, 3)); + m_ticket[1]->motor_w(BIT(data, 2)); } if (olddata != m_control[offset]) diff --git a/src/mame/drivers/toaplan2.cpp b/src/mame/drivers/toaplan2.cpp index c849dfd3f60..e9e9d56cffa 100644 --- a/src/mame/drivers/toaplan2.cpp +++ b/src/mame/drivers/toaplan2.cpp @@ -596,7 +596,7 @@ WRITE8_MEMBER(toaplan2_state::pwrkick_coin_w) machine().bookkeeping().coin_counter_w(0, (data & 2) >> 1 ); // medal machine().bookkeeping().coin_counter_w(1, (data & 8) >> 3 ); // 10 yen machine().bookkeeping().coin_counter_w(2, (data & 1) ); // 100 yen - m_hopper->write(space, 0, data & 0x80); + m_hopper->motor_w(BIT(data, 7)); } WRITE8_MEMBER(toaplan2_state::pwrkick_coin_lockout_w) diff --git a/src/mame/drivers/tonton.cpp b/src/mame/drivers/tonton.cpp index b21cd11c0de..d0b6373ed78 100644 --- a/src/mame/drivers/tonton.cpp +++ b/src/mame/drivers/tonton.cpp @@ -43,6 +43,7 @@ public: required_device<v9938_device> m_v9938; DECLARE_WRITE8_MEMBER(tonton_outport_w); + DECLARE_WRITE8_MEMBER(hopper_w); DECLARE_WRITE8_MEMBER(ay_aout_w); DECLARE_WRITE8_MEMBER(ay_bout_w); virtual void machine_start() override; @@ -67,7 +68,6 @@ WRITE8_MEMBER(tonton_state::tonton_outport_w) { machine().bookkeeping().coin_counter_w(offset, data & 0x01); machine().bookkeeping().coin_lockout_global_w(data & 0x02); /* Coin Lock */ - m_hopper->write(space, 0, (data & 0x02)); /* Hopper Motor */ // if(data & 0xfe) // logerror("%02x %02x\n",data,offset); @@ -75,6 +75,11 @@ WRITE8_MEMBER(tonton_state::tonton_outport_w) logerror("tonton_outport_w %02X @ %04X\n", data, space.device().safe_pc()); } +WRITE8_MEMBER(tonton_state::hopper_w) +{ + m_hopper->motor_w(BIT(data, 1)); +} + /************************************************* * Memory Map * @@ -91,7 +96,7 @@ static ADDRESS_MAP_START( tonton_io, AS_IO, 8, tonton_state ) AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_RANGE(0x00, 0x00) AM_WRITE(tonton_outport_w) AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") - AM_RANGE(0x01, 0x01) AM_WRITENOP // write the same to outport 00h + AM_RANGE(0x01, 0x01) AM_WRITE(hopper_w) AM_RANGE(0x02, 0x02) AM_READ_PORT("DSW1") AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW2") AM_RANGE(0x88, 0x8b) AM_DEVREADWRITE( "v9938", v9938_device, read, write ) @@ -225,7 +230,7 @@ static MACHINE_CONFIG_START( tonton ) MCFG_V99X8_INTERRUPT_CALLBACK(INPUTLINE("maincpu", 0)) MCFG_V99X8_SCREEN_ADD_NTSC("screen", "v9938", MAIN_CLOCK) - MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(HOPPER_PULSE), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW ) + MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(HOPPER_PULSE), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") diff --git a/src/mame/drivers/wacky_gator.cpp b/src/mame/drivers/wacky_gator.cpp index 45fc413448f..1922c4b5bb2 100644 --- a/src/mame/drivers/wacky_gator.cpp +++ b/src/mame/drivers/wacky_gator.cpp @@ -109,7 +109,7 @@ WRITE8_MEMBER(wackygtr_state::status_lamps_w) set_lamps(0, data & 0x3f); machine().bookkeeping().coin_counter_w(0, BIT(data, 6)); - m_ticket->write(space, 0, data & 0x80); + m_ticket->motor_w(BIT(data, 7)); } WRITE8_MEMBER(wackygtr_state::sample_ctrl_w) diff --git a/src/mame/drivers/williams.cpp b/src/mame/drivers/williams.cpp index 2368d868229..b3e40bbdb90 100644 --- a/src/mame/drivers/williams.cpp +++ b/src/mame/drivers/williams.cpp @@ -1542,7 +1542,7 @@ static MACHINE_CONFIG_DERIVED( lottofun, williams ) /* pia */ MCFG_DEVICE_MODIFY("pia_0") - MCFG_PIA_WRITEPB_HANDLER(DEVWRITE8("ticket", ticket_dispenser_device, write)) + MCFG_PIA_WRITEPB_HANDLER(DEVWRITELINE("ticket", ticket_dispenser_device, motor_w)) MCFG_DEVCB_BIT(7) MCFG_PIA_CA2_HANDLER(WRITELINE(williams_state, lottofun_coin_lock_w)) MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(70), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_HIGH) diff --git a/src/mame/drivers/xtheball.cpp b/src/mame/drivers/xtheball.cpp index e0551653dc0..4a740162463 100644 --- a/src/mame/drivers/xtheball.cpp +++ b/src/mame/drivers/xtheball.cpp @@ -28,6 +28,7 @@ public: m_maincpu(*this, "maincpu"), m_watchdog(*this, "watchdog"), m_tlc34076(*this, "tlc34076"), + m_ticket(*this, "ticket"), m_vram_bg(*this, "vrabg"), m_vram_fg(*this, "vrafg"), m_analog_x(*this, "ANALOGX"), @@ -36,6 +37,7 @@ public: required_device<cpu_device> m_maincpu; required_device<watchdog_timer_device> m_watchdog; required_device<tlc34076_device> m_tlc34076; + required_device<ticket_dispenser_device> m_ticket; required_shared_ptr<uint16_t> m_vram_bg; required_shared_ptr<uint16_t> m_vram_fg; @@ -158,7 +160,7 @@ WRITE16_MEMBER(xtheball_state::bit_controls_w) switch (offset) { case 7: - machine().device<ticket_dispenser_device>("ticket")->write(space, 0, data << 7); + m_ticket->motor_w(data & 1); break; case 8: diff --git a/src/mame/includes/itech32.h b/src/mame/includes/itech32.h index 7256954e37f..0e86083fc20 100644 --- a/src/mame/includes/itech32.h +++ b/src/mame/includes/itech32.h @@ -8,6 +8,7 @@ **************************************************************************/ #include "machine/nvram.h" +#include "machine/ticket.h" #include "screen.h" #define VIDEO_CLOCK XTAL_8MHz /* video (pixel) clock */ @@ -28,6 +29,7 @@ public: m_dsp2(*this, "dsp2"), m_screen(*this, "screen"), m_palette(*this, "palette"), + m_ticket(*this, "ticket"), m_main_ram(*this, "main_ram", 0), m_nvram(*this, "nvram", 0), m_video(*this, "video", 0), @@ -44,6 +46,7 @@ public: optional_device<cpu_device> m_dsp2; required_device<screen_device> m_screen; required_device<palette_device> m_palette; + required_device<ticket_dispenser_device> m_ticket; optional_shared_ptr<uint16_t> m_main_ram; optional_shared_ptr<uint16_t> m_nvram; diff --git a/src/mame/includes/playmark.h b/src/mame/includes/playmark.h index ddc7409140f..1ced417116a 100644 --- a/src/mame/includes/playmark.h +++ b/src/mame/includes/playmark.h @@ -2,6 +2,7 @@ // copyright-holders:Nicola Salmoria, Pierpaolo Prazzoli, Quench #include "sound/okim6295.h" #include "machine/eepromser.h" +#include "machine/ticket.h" #include "cpu/pic16c5x/pic16c5x.h" class playmark_state : public driver_device @@ -21,7 +22,9 @@ public: m_maincpu(*this, "maincpu"), m_audiocpu(*this, "audiocpu"), m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette") { } + m_palette(*this, "palette"), + m_ticket(*this, "ticket"), + m_token(*this, "token") { } /* memory pointers */ optional_shared_ptr<uint16_t> m_bgvideoram; @@ -116,4 +119,6 @@ public: optional_device<pic16c57_device> m_audiocpu; required_device<gfxdecode_device> m_gfxdecode; required_device<palette_device> m_palette; + optional_device<ticket_dispenser_device> m_ticket; + optional_device<ticket_dispenser_device> m_token; }; diff --git a/src/mame/machine/ticket.cpp b/src/mame/machine/ticket.cpp index bb7c4481f98..2180d4fd17e 100644 --- a/src/mame/machine/ticket.cpp +++ b/src/mame/machine/ticket.cpp @@ -44,7 +44,6 @@ ticket_dispenser_device::ticket_dispenser_device(const machine_config &mconfig, m_status_sense(TICKET_STATUS_ACTIVE_LOW), m_period(attotime::from_msec(100)), m_hopper_type(false), - m_active_bit(0x80), m_motoron(0), m_ticketdispensed(0), m_ticketnotdispensed(0), @@ -99,19 +98,7 @@ void ticket_dispenser_device::static_set_senses(device_t &device, uint8_t motor_ //************************************************************************** //------------------------------------------------- -// read - read the status line via the active bit -// (legacy method) -//------------------------------------------------- - -READ8_MEMBER( ticket_dispenser_device::read ) -{ - LOG(("%s: Ticket Status Read = %02X\n", machine().describe_context(), m_status)); - return m_status; -} - - -//------------------------------------------------- -// line_r - read the status line as a proper line +// line_r - read the status line //------------------------------------------------- READ_LINE_MEMBER( ticket_dispenser_device::line_r ) @@ -121,20 +108,19 @@ READ_LINE_MEMBER( ticket_dispenser_device::line_r ) //------------------------------------------------- -// write - write the control line via the active -// bit (legacy method) +// motor_w - write the control line //------------------------------------------------- -WRITE8_MEMBER( ticket_dispenser_device::write ) +WRITE_LINE_MEMBER( ticket_dispenser_device::motor_w ) { // On an activate signal, start dispensing! - if ((data & m_active_bit) == m_motoron) + if (bool(state) == m_motoron) { if (!m_power) { LOG(("%s: Ticket Power On\n", machine().describe_context())); m_timer->adjust(m_period); - m_power = 1; + m_power = true; m_status = m_ticketnotdispensed; } } @@ -148,21 +134,11 @@ WRITE8_MEMBER( ticket_dispenser_device::write ) m_timer->adjust(attotime::never); machine().output().set_led_value(2, 0); } - m_power = 0; + m_power = false; } } } -//------------------------------------------------- -// motor_w - write the control line as a proper -// line -//------------------------------------------------- - -WRITE_LINE_MEMBER( ticket_dispenser_device::motor_w ) -{ - write(machine().dummy_space(), 0, state ? m_active_bit : 0); -} - //************************************************************************** // DEVICE INTERFACE @@ -174,10 +150,9 @@ WRITE_LINE_MEMBER( ticket_dispenser_device::motor_w ) void ticket_dispenser_device::device_start() { - m_active_bit = 0x80; - m_motoron = (m_motor_sense == TICKET_MOTOR_ACTIVE_HIGH) ? m_active_bit : 0; - m_ticketdispensed = (m_status_sense == TICKET_STATUS_ACTIVE_HIGH) ? m_active_bit : 0; - m_ticketnotdispensed = m_ticketdispensed ^ m_active_bit; + m_motoron = (m_motor_sense == TICKET_MOTOR_ACTIVE_HIGH); + m_ticketdispensed = (m_status_sense == TICKET_STATUS_ACTIVE_HIGH); + m_ticketnotdispensed = !m_ticketdispensed; m_timer = timer_alloc(); @@ -193,7 +168,7 @@ void ticket_dispenser_device::device_start() void ticket_dispenser_device::device_reset() { m_status = m_ticketnotdispensed; - m_power = 0x00; + m_power = false; } @@ -206,13 +181,13 @@ void ticket_dispenser_device::device_timer(emu_timer &timer, device_timer_id id, // if we still have power, keep toggling ticket states if (m_power) { - m_status ^= m_active_bit; + m_status = !m_status; LOG(("Ticket Status Changed to %02X\n", m_status)); m_timer->adjust(m_period); } else if (m_hopper_type) { - m_status ^= m_active_bit; + m_status = !m_status; LOG(("%s: Ticket Power Off\n", machine().describe_context())); m_timer->adjust(attotime::never); machine().output().set_led_value(2, 0); diff --git a/src/mame/machine/ticket.h b/src/mame/machine/ticket.h index 929085fe5b9..cef52442159 100644 --- a/src/mame/machine/ticket.h +++ b/src/mame/machine/ticket.h @@ -67,9 +67,7 @@ public: static void static_set_senses(device_t &device, uint8_t motor_sense, uint8_t status_sense, bool hopper_type); // read/write handlers - DECLARE_READ8_MEMBER( read ); DECLARE_READ_LINE_MEMBER( line_r ); - DECLARE_WRITE8_MEMBER( write ); DECLARE_WRITE_LINE_MEMBER( motor_w ); protected: @@ -85,13 +83,12 @@ protected: bool m_hopper_type; // active state - uint8_t m_active_bit; - uint8_t m_motoron; - uint8_t m_ticketdispensed; - uint8_t m_ticketnotdispensed; + bool m_motoron; + bool m_ticketdispensed; + bool m_ticketnotdispensed; - uint8_t m_status; - uint8_t m_power; + bool m_status; + bool m_power; emu_timer *m_timer; }; |