summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--src/mame/drivers/aristmk5.cpp4
-rw-r--r--src/mame/drivers/astrcorp.cpp30
-rw-r--r--src/mame/drivers/big10.cpp2
-rw-r--r--src/mame/drivers/bmcpokr.cpp6
-rw-r--r--src/mame/drivers/capbowl.cpp4
-rw-r--r--src/mame/drivers/champbwl.cpp10
-rw-r--r--src/mame/drivers/cischeat.cpp2
-rw-r--r--src/mame/drivers/dcheese.cpp4
-rw-r--r--src/mame/drivers/funtech.cpp2
-rw-r--r--src/mame/drivers/gei.cpp4
-rw-r--r--src/mame/drivers/goldstar.cpp2
-rw-r--r--src/mame/drivers/igs017.cpp2
-rw-r--r--src/mame/drivers/itech32.cpp15
-rw-r--r--src/mame/drivers/itech8.cpp8
-rw-r--r--src/mame/drivers/kurukuru.cpp8
-rw-r--r--src/mame/drivers/lethalj.cpp26
-rw-r--r--src/mame/drivers/mgavegas.cpp4
-rw-r--r--src/mame/drivers/midas.cpp14
-rw-r--r--src/mame/drivers/mjsenpu.cpp2
-rw-r--r--src/mame/drivers/playmark.cpp15
-rw-r--r--src/mame/drivers/seta.cpp2
-rw-r--r--src/mame/drivers/seta2.cpp2
-rw-r--r--src/mame/drivers/sigmab98.cpp18
-rw-r--r--src/mame/drivers/subsino.cpp2
-rw-r--r--src/mame/drivers/subsino2.cpp12
-rw-r--r--src/mame/drivers/tickee.cpp6
-rw-r--r--src/mame/drivers/toaplan2.cpp2
-rw-r--r--src/mame/drivers/tonton.cpp11
-rw-r--r--src/mame/drivers/wacky_gator.cpp2
-rw-r--r--src/mame/drivers/williams.cpp2
-rw-r--r--src/mame/drivers/xtheball.cpp4
-rw-r--r--src/mame/includes/itech32.h3
-rw-r--r--src/mame/includes/playmark.h7
-rw-r--r--src/mame/machine/ticket.cpp49
-rw-r--r--src/mame/machine/ticket.h13
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;
};