Separate reel and stepper devices to an extent, cleaned up use of custom mcfgs for them, nw

This commit is contained in:
mooglyguy 2018-06-08 19:27:34 +02:00
parent 1dd98cd6ff
commit 0b156d2889
15 changed files with 537 additions and 576 deletions

View File

@ -161,14 +161,8 @@ MACHINE_CONFIG_START(epson_lx810l_device::device_add_mconfig)
/* 256-bit eeprom */
MCFG_DEVICE_ADD("eeprom", EEPROM_SERIAL_93C06_16BIT)
/* steppers */
MCFG_STEPPER_ADD("pf_stepper")
MCFG_STEPPER_REEL_TYPE(NOT_A_REEL)
MCFG_STEPPER_INIT_PHASE(4)
MCFG_STEPPER_ADD("cr_stepper")
MCFG_STEPPER_REEL_TYPE(NOT_A_REEL)
MCFG_STEPPER_INIT_PHASE(2)
STEPPER(config, "pf_stepper", (uint8_t)4);
STEPPER(config, "cr_stepper", (uint8_t)2);
MACHINE_CONFIG_END

View File

@ -42,13 +42,20 @@
#include "steppers.h"
DEFINE_DEVICE_TYPE(STEPPER, stepper_device, "stepper", "Stepper Motor")
DEFINE_DEVICE_TYPE(REEL, reel_device, "reel", "Fruit Machine Reel")
stepper_device::stepper_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, STEPPER, tag, owner, clock)
: stepper_device(mconfig, STEPPER, tag, owner, clock)
{
}
stepper_device::stepper_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, type, tag, owner, clock)
, m_max_steps(48*2)
, m_optic_cb(*this)
{
m_max_steps=(48*2);
}
///////////////////////////////////////////////////////////////////////////
void stepper_device::update_optic()
@ -103,7 +110,6 @@ void stepper_device::device_start()
save_item(NAME(m_step_pos));
save_item(NAME(m_abs_step_pos));
save_item(NAME(m_max_steps));
save_item(NAME(m_type));
}
///////////////////////////////////////////////////////////////////////////
@ -142,73 +148,117 @@ int stepper_device::update(uint8_t pattern)
a small movement that may trigger the optic tab.
*/
int pos,steps;
m_pattern = pattern;
switch ( m_type )
advance_phase();
int steps = m_old_phase - m_phase;
if (steps < -4)
{
steps = steps +8;
}
if (steps > 4)
{
steps = steps -8;
}
m_old_phase = m_phase;
m_old_pattern = m_pattern;
int max = m_max_steps;
int pos = 0;
if (max!=0)
{
m_abs_step_pos += steps;
pos = (m_step_pos + steps + max) % max;
}
if (pos != m_step_pos)
{
changed++;
}
m_step_pos = pos;
update_optic();
return changed;
}
///////////////////////////////////////////////////////////////////////////
void stepper_device::advance_phase()
{
//Standard drive table is 2,6,4,5,1,9,8,a
//NOTE: This runs through the stator patterns in such a way as to drive the reel forward (downwards from the player's view, clockwise on our rose)
//The Heber 'Pluto' controller runs this in reverse
switch (m_pattern)
{ //Black Blue Red Yellow
case 0x02:// 0 0 1 0
m_phase = 7;
break;
case 0x06:// 0 1 1 0
m_phase = 6;
break;
case 0x04:// 0 1 0 0
m_phase = 5;
break;
case 0x05:// 0 1 0 1
m_phase = 4;
break;
case 0x01:// 0 0 0 1
m_phase = 3;
break;
case 0x09:// 1 0 0 1
m_phase = 2;
break;
case 0x08:// 1 0 0 0
m_phase = 1;
break;
case 0x0A:// 1 0 1 0
m_phase = 0;
break;
// Black Blue Red Yellow
case 0x03:// 0 0 1 1
{
if ((m_old_phase ==6)||(m_old_phase == 0)) // if the previous pattern had the drum in the northern quadrant, it will point north now
{
m_phase = 7;
}
else //otherwise it will line up due south
{
m_phase = 3;
}
}
break;
case 0x0C:// 1 1 0 0
{
if ((m_old_phase ==6)||(m_old_phase == 4)) // if the previous pattern had the drum in the eastern quadrant, it will point east now
{
m_phase = 5;
}
else //otherwise it will line up due west
{
m_phase = 1;
}
}
break;
}
}
///////////////////////////////////////////////////////////////////////////
void reel_device::advance_phase()
{
switch (m_type)
{
default:
logerror("No reel type specified!\n");
break;
case NOT_A_REEL :
case BASIC_STEPPER :
case STARPOINT_48STEP_REEL : /* STARPOINT RMxxx */
case GAMESMAN_200STEP_REEL : /* Gamesman GMxxxx */
case STARPOINT_144STEP_DICE :/* STARPOINT 1DCU DICE mechanism */
case STARPOINT_200STEP_REEL :/* STARPOINT 1DCU DICE mechanism */
//Standard drive table is 2,6,4,5,1,9,8,a
//NOTE: This runs through the stator patterns in such a way as to drive the reel forward (downwards from the player's view, clockwise on our rose)
//The Heber 'Pluto' controller runs this in reverse
switch (pattern)
{ //Black Blue Red Yellow
case 0x02:// 0 0 1 0
m_phase = 7;
break;
case 0x06:// 0 1 1 0
m_phase = 6;
break;
case 0x04:// 0 1 0 0
m_phase = 5;
break;
case 0x05:// 0 1 0 1
m_phase = 4;
break;
case 0x01:// 0 0 0 1
m_phase = 3;
break;
case 0x09:// 1 0 0 1
m_phase = 2;
break;
case 0x08:// 1 0 0 0
m_phase = 1;
break;
case 0x0A:// 1 0 1 0
m_phase = 0;
break;
// Black Blue Red Yellow
case 0x03:// 0 0 1 1
{
if ((m_old_phase ==6)||(m_old_phase == 0)) // if the previous pattern had the drum in the northern quadrant, it will point north now
{
m_phase = 7;
}
else //otherwise it will line up due south
{
m_phase = 3;
}
}
break;
case 0x0C:// 1 1 0 0
{
if ((m_old_phase ==6)||(m_old_phase == 4)) // if the previous pattern had the drum in the eastern quadrant, it will point east now
{
m_phase = 5;
}
else //otherwise it will line up due west
{
m_phase = 1;
}
}
break;
}
stepper_device::advance_phase();
break;
case BARCREST_48STEP_REEL :
@ -216,7 +266,7 @@ int stepper_device::update(uint8_t pattern)
case GAMESMAN_100STEP_REEL :
//Standard drive table is 1,3,2,6,4,C,8,9
//Gamesman 48 step uses this pattern shifted one place forward, though this shouldn't matter
switch (pattern)
switch (m_pattern)
{
// Yellow Brown Orange Black
case 0x01:// 0 0 0 1
@ -279,7 +329,7 @@ int stepper_device::update(uint8_t pattern)
Inverters are used so if a pin is low, the higher bit of the pair is activated, and if high the lower bit is activated.
TODO:Check this, 2 and 1 could be switched over.
*/
switch (pattern)
switch (m_pattern)
{
// Yellow(2) Brown(1) Orange(!2) Black(!1)
case 0x00 :// 0 0 1 1
@ -301,7 +351,7 @@ int stepper_device::update(uint8_t pattern)
//While the 48 and 100 step models appear to be reverse driven Starpoint reels, the 200 step model seems bespoke, certainly in terms of wiring.
//On a Proconn machine this same pattern is seen but running in reverse
//Standard drive table is 8,c,4,6,2,3,1,9
switch (pattern)
switch (m_pattern)
{
case 0x08:// 0 0 1 0
m_phase = 7;
@ -358,7 +408,7 @@ int stepper_device::update(uint8_t pattern)
//Standard drive table is 8,c,4,5,1,3,2,a
//This appears to be basically a rewired Gamesman (the reel PCB looks like it does some shuffling)
//TODO: Not sure if this should be represented as a type here, or by defining it as a Gamesman in the driver and bitswapping.
switch (pattern)
switch (m_pattern)
{
case 0x08:// 0 0 1 0
m_phase = 7;
@ -410,41 +460,33 @@ int stepper_device::update(uint8_t pattern)
break;
}
break;
}
steps = m_old_phase - m_phase;
if (steps < -4)
{
steps = steps +8;
}
if (steps > 4)
{
steps = steps -8;
}
m_old_phase = m_phase;
m_old_pattern = m_pattern;
int max = m_max_steps;
pos = 0;
if (max!=0)
{
m_abs_step_pos += steps;
pos = (m_step_pos + steps + max) % max;
}
if (pos != m_step_pos)
{
changed++;
}
m_step_pos = pos;
update_optic();
return changed;
}
///////////////////////////////////////////////////////////////////////////
reel_device::reel_device(const machine_config &mconfig, const char *tag, device_t *owner, uint8_t type, int16_t start_index, int16_t end_index
, int16_t index_pattern, uint8_t init_phase, int16_t max_steps)
: stepper_device(mconfig, tag, owner)
{
set_reel_type(type);
set_start_index(start_index);
set_end_index(end_index);
set_index_pattern(index_pattern);
set_init_phase(init_phase);
set_max_steps(max_steps);
}
///////////////////////////////////////////////////////////////////////////
reel_device::reel_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: stepper_device(mconfig, REEL, tag, owner, clock)
{
}
///////////////////////////////////////////////////////////////////////////
void reel_device::device_start()
{
stepper_device::device_start();
save_item(NAME(m_type));
}

View File

@ -17,7 +17,7 @@
#pragma once
#define NOT_A_REEL 0
#define BASIC_STEPPER 0
#define STARPOINT_48STEP_REEL 1 /* STARPOINT RMXXX reel unit */
#define STARPOINT_144STEP_DICE 2 /* STARPOINT 1DCU DICE mechanism */
#define STARPOINT_200STEP_REEL 3
@ -33,79 +33,84 @@
#define PROJECT_48STEP_REEL 10
#define MCFG_STEPPER_ADD(_tag)\
MCFG_DEVICE_ADD(_tag, STEPPER, 0)
#define MCFG_STEPPER_REEL_TYPE(_data) \
downcast<stepper_device &>(*device).set_reel_type(_data);
/* total size of reel (in half steps) */
#define MCFG_STEPPER_MAX_STEPS(_write) \
downcast<stepper_device &>(*device).set_max_steps(_write);
/* start position of index (in half steps) */
#define MCFG_STEPPER_START_INDEX(_write) \
downcast<stepper_device &>(*device).set_start_index(_write);
/* end position of index (in half steps) */
#define MCFG_STEPPER_END_INDEX(_write) \
downcast<stepper_device &>(*device).set_end_index(_write);
/* end position of index (in half steps) */
#define MCFG_STEPPER_INDEX_PATTERN(_write) \
downcast<stepper_device &>(*device).set_index_pattern(_write);
/* Phase at 0, for opto linkage */
#define MCFG_STEPPER_INIT_PHASE(_write) \
downcast<stepper_device &>(*device).set_init_phase(_write);
#define MCFG_STARPOINT_48STEP_ADD(_tag)\
MCFG_STEPPER_ADD(_tag)\
MCFG_STEPPER_REEL_TYPE(STARPOINT_48STEP_REEL)\
MCFG_STEPPER_START_INDEX(1)\
MCFG_STEPPER_END_INDEX(3)\
MCFG_STEPPER_INDEX_PATTERN(0x09)\
MCFG_STEPPER_INIT_PHASE(4)
#define MCFG_STARPOINT_RM20_48STEP_ADD(_tag)\
MCFG_DEVICE_ADD(_tag, STEPPER, 0)\
MCFG_STEPPER_REEL_TYPE(STARPOINT_48STEP_REEL)\
MCFG_STEPPER_START_INDEX(16)\
MCFG_STEPPER_END_INDEX(24)\
MCFG_STEPPER_INDEX_PATTERN(0x09)\
MCFG_STEPPER_INIT_PHASE(7)
#define MCFG_STARPOINT_200STEP_ADD(_tag)\
MCFG_DEVICE_ADD(_tag, STEPPER, 0)\
MCFG_STEPPER_REEL_TYPE(STARPOINT_200STEP_REEL)\
MCFG_STEPPER_MAX_STEPS(200*2)\
MCFG_STEPPER_START_INDEX(12)\
MCFG_STEPPER_END_INDEX(24)\
MCFG_STEPPER_INDEX_PATTERN(0x09)\
MCFG_STEPPER_INIT_PHASE(7)
//guess
#define MCFG_ECOIN_200STEP_ADD(_tag)\
MCFG_DEVICE_ADD(_tag, STEPPER, 0)\
MCFG_STEPPER_REEL_TYPE(ECOIN_200STEP_REEL)\
MCFG_STEPPER_MAX_STEPS(200*2)\
MCFG_STEPPER_START_INDEX(12)\
MCFG_STEPPER_END_INDEX(24)\
MCFG_STEPPER_INDEX_PATTERN(0x09)\
MCFG_STEPPER_INIT_PHASE(7)
#define MCFG_STEPPER_OPTIC_CALLBACK(_write) \
devcb = &downcast<stepper_device &>(*device).set_optic_handler(DEVCB_##_write);
DECLARE_DEVICE_TYPE(STEPPER, stepper_device)
class stepper_device : public device_t
{
public:
stepper_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
stepper_device(const machine_config &mconfig, const char *tag, device_t *owner, uint8_t init_phase)
: stepper_device(mconfig, tag, owner, (uint32_t)0)
{
set_init_phase(init_phase);
}
stepper_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
template <class Object> devcb_base &set_optic_handler(Object &&cb) { return m_optic_cb.set_callback(std::forward<Object>(cb)); }
/* total size of reel (in half steps) */
void set_max_steps(int16_t steps) { m_max_steps = steps; }
/* start position of index (in half steps) */
void set_start_index(int16_t index) { m_index_start = index; }
/* end position of index (in half steps) */
void set_end_index(int16_t index) { m_index_end = index; }
/* end position of index (in half steps) */
void set_index_pattern(int16_t index) { m_index_patt = index; }
/* Phase at 0, for opto linkage */
void set_init_phase(uint8_t phase) { m_initphase = phase; m_phase = phase; m_old_phase = phase; }
/* update a motor */
int update(uint8_t pattern);
/* get current position in half steps */
int get_position() { return m_step_pos; }
/* get current absolute position in half steps */
int get_absolute_position() { return m_abs_step_pos; }
/* get maximum position in half steps */
int get_max() { return m_max_steps; }
protected:
stepper_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock = 0);
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
uint8_t m_pattern; /* coil pattern */
uint8_t m_old_pattern; /* old coil pattern */
uint8_t m_initphase;
uint8_t m_phase; /* motor phase */
uint8_t m_old_phase; /* old phase */
int16_t m_step_pos; /* step position 0 - max_steps */
int16_t m_max_steps; /* maximum step position */
int32_t m_abs_step_pos; /* absolute step position */
int16_t m_index_start; /* start position of index (in half steps) */
int16_t m_index_end; /* end position of index (in half steps) */
int16_t m_index_patt; /* pattern needed on coils (0=don't care) */
uint8_t m_optic;
void update_optic();
virtual void advance_phase();
devcb_write_line m_optic_cb;
};
class reel_device : public stepper_device
{
public:
reel_device(const machine_config &mconfig, const char *tag, device_t *owner, uint8_t type, int16_t start_index, int16_t end_index
, int16_t index_pattern, uint8_t init_phase, int16_t max_steps = 48*2);
reel_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
protected:
virtual void device_start() override;
virtual void advance_phase() override;
void set_reel_type(uint8_t type)
{
m_type = type;
@ -134,44 +139,10 @@ public:
}
}
void set_max_steps(int16_t steps) { m_max_steps = steps; }
void set_start_index(int16_t index) { m_index_start = index; }
void set_end_index(int16_t index) { m_index_end = index; }
void set_index_pattern(int16_t index) { m_index_patt = index; }
void set_init_phase(uint8_t phase) { m_initphase = phase; m_phase = phase; m_old_phase = phase; }
/* update a motor */
int update(uint8_t pattern);
/* get current position in half steps */
int get_position() { return m_step_pos; }
/* get current absolute position in half steps */
int get_absolute_position() { return m_abs_step_pos; }
/* get maximum position in half steps */
int get_max() { return m_max_steps; }
protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
private:
uint8_t m_pattern; /* coil pattern */
uint8_t m_old_pattern; /* old coil pattern */
uint8_t m_initphase;
uint8_t m_phase; /* motor phase */
uint8_t m_old_phase; /* old phase */
uint8_t m_type; /* reel type */
int16_t m_step_pos; /* step position 0 - max_steps */
int16_t m_max_steps; /* maximum step position */
int32_t m_abs_step_pos; /* absolute step position */
int16_t m_index_start; /* start position of index (in half steps) */
int16_t m_index_end; /* end position of index (in half steps) */
int16_t m_index_patt; /* pattern needed on coils (0=don't care) */
uint8_t m_optic;
void update_optic();
devcb_write_line m_optic_cb;
};
DECLARE_DEVICE_TYPE(STEPPER, stepper_device)
DECLARE_DEVICE_TYPE(REEL, reel_device)
#endif // MAME_MACHINE_STEPPERS_H

View File

@ -486,13 +486,13 @@ MACHINE_CONFIG_START(aces1_state::aces1)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
/* steppers */
MCFG_STARPOINT_48STEP_ADD(m_reel[0])
MCFG_DEVICE_ADD(m_reel[0], REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, aces1_state, reel0_optic_cb))
MCFG_STARPOINT_48STEP_ADD(m_reel[1])
MCFG_DEVICE_ADD(m_reel[1], REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, aces1_state, reel1_optic_cb))
MCFG_STARPOINT_48STEP_ADD(m_reel[2])
MCFG_DEVICE_ADD(m_reel[2], REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, aces1_state, reel2_optic_cb))
MCFG_STARPOINT_48STEP_ADD(m_reel[3])
MCFG_DEVICE_ADD(m_reel[3], REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, aces1_state, reel3_optic_cb))
MACHINE_CONFIG_END

View File

@ -1091,17 +1091,17 @@ MACHINE_CONFIG_START(bfm_sc1_state::scorpion1)
MCFG_NVRAM_ADD_0FILL("nvram")
MCFG_DEFAULT_LAYOUT(layout_sc1_vfd)
MCFG_STARPOINT_48STEP_ADD("reel0")
MCFG_DEVICE_ADD("reel0", REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, bfm_sc1_state, reel_optic_cb<0>))
MCFG_STARPOINT_48STEP_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, bfm_sc1_state, reel_optic_cb<1>))
MCFG_STARPOINT_48STEP_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, bfm_sc1_state, reel_optic_cb<2>))
MCFG_STARPOINT_48STEP_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, bfm_sc1_state, reel_optic_cb<3>))
MCFG_STARPOINT_48STEP_ADD("reel4")
MCFG_DEVICE_ADD("reel4", REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, bfm_sc1_state, reel_optic_cb<4>))
MCFG_STARPOINT_48STEP_ADD("reel5")
MCFG_DEVICE_ADD("reel5", REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, bfm_sc1_state, reel_optic_cb<5>))
MCFG_DEVICE_ADD("meters", METERS, 0)

View File

@ -3773,17 +3773,17 @@ MACHINE_CONFIG_START(bfm_sc2_awp_state::scorpion2)
/* video hardware */
MCFG_DEFAULT_LAYOUT(layout_sc2_vfd)
MCFG_STARPOINT_48STEP_ADD("reel0")
MCFG_DEVICE_ADD("reel0", REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, bfm_sc2_awp_state, reel_optic_cb<0>))
MCFG_STARPOINT_48STEP_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, bfm_sc2_awp_state, reel_optic_cb<1>))
MCFG_STARPOINT_48STEP_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, bfm_sc2_awp_state, reel_optic_cb<2>))
MCFG_STARPOINT_48STEP_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, bfm_sc2_awp_state, reel_optic_cb<3>))
MCFG_STARPOINT_48STEP_ADD("reel4")
MCFG_DEVICE_ADD("reel4", REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, bfm_sc2_awp_state, reel_optic_cb<4>))
MCFG_STARPOINT_48STEP_ADD("reel5")
MCFG_DEVICE_ADD("reel5", REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, bfm_sc2_awp_state, reel_optic_cb<5>))
_8meters(config);
@ -3832,17 +3832,17 @@ MACHINE_CONFIG_START(bfm_sc2_dmd_state::scorpion2_dm01)
MCFG_DEVICE_ADD("dm01", BFM_DM01, 0)
MCFG_BFM_DM01_BUSY_CB(WRITELINE(*this, bfm_sc2_dmd_state, bfmdm01_busy))
MCFG_STARPOINT_48STEP_ADD("reel0")
MCFG_DEVICE_ADD("reel0", REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, bfm_sc2_dmd_state, reel_optic_cb<0>))
MCFG_STARPOINT_48STEP_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, bfm_sc2_dmd_state, reel_optic_cb<1>))
MCFG_STARPOINT_48STEP_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, bfm_sc2_dmd_state, reel_optic_cb<2>))
MCFG_STARPOINT_48STEP_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, bfm_sc2_dmd_state, reel_optic_cb<3>))
MCFG_STARPOINT_48STEP_ADD("reel4")
MCFG_DEVICE_ADD("reel4", REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, bfm_sc2_dmd_state, reel_optic_cb<4>))
MCFG_STARPOINT_48STEP_ADD("reel5")
MCFG_DEVICE_ADD("reel5", REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, bfm_sc2_dmd_state, reel_optic_cb<5>))
_8meters(config);

View File

@ -923,17 +923,17 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(sc4_state::sc4)
sc4_common(config);
MCFG_STARPOINT_RM20_48STEP_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel1_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel2_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel3_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel4")
MCFG_DEVICE_ADD("reel4", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel4_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel5")
MCFG_DEVICE_ADD("reel5", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel5_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel6")
MCFG_DEVICE_ADD("reel6", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel6_optic_cb))
MACHINE_CONFIG_END
@ -941,11 +941,11 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(sc4_state::sc4_3reel)
sc4_common(config);
MCFG_STARPOINT_RM20_48STEP_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel1_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel2_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel3_optic_cb))
MACHINE_CONFIG_END
@ -954,13 +954,13 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(sc4_state::sc4_4reel)
sc4_common(config);
MCFG_STARPOINT_RM20_48STEP_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel1_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel2_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel3_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel4")
MCFG_DEVICE_ADD("reel4", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel4_optic_cb))
MACHINE_CONFIG_END
@ -969,14 +969,14 @@ MACHINE_CONFIG_START(sc4_state::sc4_4reel_alt)
sc4_common(config);
MCFG_STARPOINT_RM20_48STEP_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel1_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel2_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel3_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel5")
MCFG_DEVICE_ADD("reel5", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel5_optic_cb))
MACHINE_CONFIG_END
@ -985,15 +985,15 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(sc4_state::sc4_5reel)
sc4_common(config);
MCFG_STARPOINT_RM20_48STEP_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel1_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel2_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel3_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel4")
MCFG_DEVICE_ADD("reel4", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel4_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel5")
MCFG_DEVICE_ADD("reel5", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel5_optic_cb))
MACHINE_CONFIG_END
@ -1001,16 +1001,16 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(sc4_state::sc4_5reel_alt)
sc4_common(config);
MCFG_STARPOINT_RM20_48STEP_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel1_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel2_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel3_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel5")
MCFG_DEVICE_ADD("reel5", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel5_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel6")
MCFG_DEVICE_ADD("reel6", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel6_optic_cb))
MACHINE_CONFIG_END
@ -1020,17 +1020,17 @@ MACHINE_CONFIG_START(sc4_state::sc4_200_std)
sc4_common(config);
MCFG_STARPOINT_RM20_48STEP_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel1_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel2_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel3_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel4")
MCFG_DEVICE_ADD("reel4", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel4_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel5")
MCFG_DEVICE_ADD("reel5", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel5_optic_cb))
MCFG_STARPOINT_200STEP_ADD("reel6")
MCFG_DEVICE_ADD("reel6", REEL, STARPOINT_200STEP_REEL, 12, 24, 0x09, 7, 200*2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel6_optic_cb))
MACHINE_CONFIG_END
@ -1038,17 +1038,17 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(sc4_state::sc4_200_alt)
sc4_common(config);
MCFG_STARPOINT_RM20_48STEP_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel1_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel2_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel3_optic_cb))
MCFG_STARPOINT_200STEP_ADD("reel4")
MCFG_DEVICE_ADD("reel4", REEL, STARPOINT_200STEP_REEL, 12, 24, 0x09, 7, 200*2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel4_optic_cb))
MCFG_STARPOINT_200STEP_ADD("reel5")
MCFG_DEVICE_ADD("reel5", REEL, STARPOINT_200STEP_REEL, 12, 24, 0x09, 7, 200*2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel5_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel6")
MCFG_DEVICE_ADD("reel6", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel6_optic_cb))
MACHINE_CONFIG_END
@ -1056,17 +1056,17 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(sc4_state::sc4_200_alta)
sc4_common(config);
MCFG_STARPOINT_RM20_48STEP_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel1_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel2_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel3_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel4")
MCFG_DEVICE_ADD("reel4", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel4_optic_cb))
MCFG_STARPOINT_200STEP_ADD("reel5")
MCFG_DEVICE_ADD("reel5", REEL, STARPOINT_200STEP_REEL, 12, 24, 0x09, 7, 200*2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel5_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel6")
MCFG_DEVICE_ADD("reel6", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel6_optic_cb))
MACHINE_CONFIG_END
@ -1074,17 +1074,17 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(sc4_state::sc4_200_altb)
sc4_common(config);
MCFG_STARPOINT_200STEP_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, STARPOINT_200STEP_REEL, 12, 24, 0x09, 7, 200*2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel1_optic_cb))
MCFG_STARPOINT_200STEP_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, STARPOINT_200STEP_REEL, 12, 24, 0x09, 7, 200*2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel2_optic_cb))
MCFG_STARPOINT_200STEP_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, STARPOINT_200STEP_REEL, 12, 24, 0x09, 7, 200*2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel3_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel4")
MCFG_DEVICE_ADD("reel4", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel4_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel5")
MCFG_DEVICE_ADD("reel5", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel5_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel6")
MCFG_DEVICE_ADD("reel6", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel6_optic_cb))
MACHINE_CONFIG_END
@ -1092,15 +1092,15 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(sc4_state::sc4_200_5r)
sc4_common(config);
MCFG_STARPOINT_RM20_48STEP_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel1_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel2_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel3_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel4")
MCFG_DEVICE_ADD("reel4", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel4_optic_cb))
MCFG_STARPOINT_200STEP_ADD("reel5")
MCFG_DEVICE_ADD("reel5", REEL, STARPOINT_200STEP_REEL, 12, 24, 0x09, 7, 200*2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel5_optic_cb))
MACHINE_CONFIG_END
@ -1110,16 +1110,16 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(sc4_state::sc4_200_5ra)
sc4_common(config);
MCFG_STARPOINT_RM20_48STEP_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel1_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel2_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel3_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel5")
MCFG_DEVICE_ADD("reel5", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel5_optic_cb))
MCFG_STARPOINT_200STEP_ADD("reel6")
MCFG_DEVICE_ADD("reel6", REEL, STARPOINT_200STEP_REEL, 12, 24, 0x09, 7, 200*2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel6_optic_cb))
MACHINE_CONFIG_END
@ -1127,16 +1127,16 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(sc4_state::sc4_200_5rb)
sc4_common(config);
MCFG_STARPOINT_RM20_48STEP_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel1_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel2_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel3_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel4")
MCFG_DEVICE_ADD("reel4", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel4_optic_cb))
MCFG_STARPOINT_200STEP_ADD("reel6")
MCFG_DEVICE_ADD("reel6", REEL, STARPOINT_200STEP_REEL, 12, 24, 0x09, 7, 200*2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel6_optic_cb))
MACHINE_CONFIG_END
@ -1144,16 +1144,16 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(sc4_state::sc4_200_5rc)
sc4_common(config);
MCFG_STARPOINT_RM20_48STEP_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel1_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel2_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel3_optic_cb))
MCFG_STARPOINT_200STEP_ADD("reel5")
MCFG_DEVICE_ADD("reel5", REEL, STARPOINT_200STEP_REEL, 12, 24, 0x09, 7, 200*2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel5_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel6")
MCFG_DEVICE_ADD("reel6", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel6_optic_cb))
MACHINE_CONFIG_END
@ -1161,13 +1161,13 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(sc4_state::sc4_200_4r)
sc4_common(config);
MCFG_STARPOINT_RM20_48STEP_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel1_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel2_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel3_optic_cb))
MCFG_STARPOINT_200STEP_ADD("reel4")
MCFG_DEVICE_ADD("reel4", REEL, STARPOINT_200STEP_REEL, 12, 24, 0x09, 7, 200*2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel4_optic_cb))
MACHINE_CONFIG_END
@ -1175,14 +1175,14 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(sc4_state::sc4_200_4ra)
sc4_common(config);
MCFG_STARPOINT_RM20_48STEP_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel1_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel2_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel3_optic_cb))
MCFG_STARPOINT_200STEP_ADD("reel5")
MCFG_DEVICE_ADD("reel5", REEL, STARPOINT_200STEP_REEL, 12, 24, 0x09, 7, 200*2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel5_optic_cb))
MACHINE_CONFIG_END
@ -1191,38 +1191,38 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(sc4_state::sc4_200_4rb)
sc4_common(config);
MCFG_STARPOINT_RM20_48STEP_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel1_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel2_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel3_optic_cb))
MCFG_STARPOINT_200STEP_ADD("reel6")
MCFG_DEVICE_ADD("reel6", REEL, STARPOINT_200STEP_REEL, 12, 24, 0x09, 7, 200*2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel6_optic_cb))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(sc4_state::sc4_4reel_200)
sc4_common(config);
MCFG_STARPOINT_200STEP_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, STARPOINT_200STEP_REEL, 12, 24, 0x09, 7, 200*2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel1_optic_cb))
MCFG_STARPOINT_200STEP_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, STARPOINT_200STEP_REEL, 12, 24, 0x09, 7, 200*2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel2_optic_cb))
MCFG_STARPOINT_200STEP_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, STARPOINT_200STEP_REEL, 12, 24, 0x09, 7, 200*2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel3_optic_cb))
MCFG_STARPOINT_200STEP_ADD("reel4")
MCFG_DEVICE_ADD("reel4", REEL, STARPOINT_200STEP_REEL, 12, 24, 0x09, 7, 200*2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel4_optic_cb))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(sc4_state::sc4_3reel_200)
sc4_common(config);
MCFG_STARPOINT_200STEP_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, STARPOINT_200STEP_REEL, 12, 24, 0x09, 7, 200*2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel1_optic_cb))
MCFG_STARPOINT_200STEP_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, STARPOINT_200STEP_REEL, 12, 24, 0x09, 7, 200*2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel2_optic_cb))
MCFG_STARPOINT_200STEP_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, STARPOINT_200STEP_REEL, 12, 24, 0x09, 7, 200*2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel3_optic_cb))
MACHINE_CONFIG_END
@ -1230,13 +1230,13 @@ MACHINE_CONFIG_START(sc4_state::sc4_3reel_200_48)
sc4_common(config);
MCFG_STARPOINT_200STEP_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, STARPOINT_200STEP_REEL, 12, 24, 0x09, 7, 200*2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel1_optic_cb))
MCFG_STARPOINT_200STEP_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, STARPOINT_200STEP_REEL, 12, 24, 0x09, 7, 200*2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel2_optic_cb))
MCFG_STARPOINT_200STEP_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, STARPOINT_200STEP_REEL, 12, 24, 0x09, 7, 200*2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel3_optic_cb))
MCFG_STARPOINT_48STEP_ADD("reel4")
MCFG_DEVICE_ADD("reel4", REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel4_optic_cb))
MACHINE_CONFIG_END
@ -1266,15 +1266,15 @@ MACHINE_CONFIG_START(sc4_state::sc4dmd)
MCFG_DEVICE_ADD("dm01", BFM_DM01, 0)
MCFG_BFM_DM01_BUSY_CB(WRITELINE(*this, sc4_state, bfmdm01_busy))
MCFG_STARPOINT_RM20_48STEP_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel1_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel2_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel3_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel4")
MCFG_DEVICE_ADD("reel4", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel4_optic_cb))
MCFG_STARPOINT_RM20_48STEP_ADD("reel5")
MCFG_DEVICE_ADD("reel5", REEL, STARPOINT_48STEP_REEL, 16, 24, 0x09, 7)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, sc4_state, reel5_optic_cb))
MACHINE_CONFIG_END

View File

@ -410,13 +410,13 @@ MACHINE_CONFIG_START(bfmsys85_state::bfmsys85)
MCFG_NVRAM_ADD_0FILL("nvram") // load/save nv RAM
MCFG_STARPOINT_48STEP_ADD("reel0")
MCFG_DEVICE_ADD("reel0", REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, bfmsys85_state, reel0_optic_cb))
MCFG_STARPOINT_48STEP_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, bfmsys85_state, reel1_optic_cb))
MCFG_STARPOINT_48STEP_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, bfmsys85_state, reel2_optic_cb))
MCFG_STARPOINT_48STEP_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, bfmsys85_state, reel3_optic_cb))
MCFG_DEVICE_ADD("meters", METERS, 0)

View File

@ -532,13 +532,13 @@ MACHINE_CONFIG_START(ecoinf2_state::ecoinf2_oxo)
MCFG_I8255_OUT_PORTB_CB(WRITE8(*this, ecoinf2_state, ppi8255_ic13_write_b_strobedat1))
MCFG_I8255_IN_PORTC_CB(READ8(*this, ecoinf2_state, ppi8255_ic13_read_c_panel))
MCFG_ECOIN_200STEP_ADD("reel0")
MCFG_DEVICE_ADD("reel0", REEL, ECOIN_200STEP_REEL, 12, 24, 0x09, 7, 200*2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, ecoinf2_state, reel_optic_cb<0>))
MCFG_ECOIN_200STEP_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, ECOIN_200STEP_REEL, 12, 24, 0x09, 7, 200*2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, ecoinf2_state, reel_optic_cb<1>))
MCFG_ECOIN_200STEP_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, ECOIN_200STEP_REEL, 12, 24, 0x09, 7, 200*2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, ecoinf2_state, reel_optic_cb<2>))
MCFG_ECOIN_200STEP_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, ECOIN_200STEP_REEL, 12, 24, 0x09, 7, 200*2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, ecoinf2_state, reel_optic_cb<3>))
MCFG_DEVICE_ADD("meters", METERS, 0)

View File

@ -740,13 +740,13 @@ MACHINE_CONFIG_START(ecoinf3_state::ecoinf3_pyramid)
MCFG_I8255_IN_PORTC_CB(READ8(*this, ecoinf3_state, ppi8255_intf_h_read_c))
MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, ecoinf3_state, ppi8255_intf_h_write_c))
MCFG_ECOIN_200STEP_ADD("reel0")
MCFG_DEVICE_ADD("reel0", REEL, ECOIN_200STEP_REEL, 12, 24, 0x09, 7, 200*2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, ecoinf3_state, reel_optic_cb<0>))
MCFG_ECOIN_200STEP_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, ECOIN_200STEP_REEL, 12, 24, 0x09, 7, 200*2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, ecoinf3_state, reel_optic_cb<1>))
MCFG_ECOIN_200STEP_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, ECOIN_200STEP_REEL, 12, 24, 0x09, 7, 200*2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, ecoinf3_state, reel_optic_cb<2>))
MCFG_ECOIN_200STEP_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, ECOIN_200STEP_REEL, 12, 24, 0x09, 7, 200*2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, ecoinf3_state, reel_optic_cb<3>))
MACHINE_CONFIG_END

View File

@ -790,13 +790,13 @@ MACHINE_CONFIG_START(ecoinfr_state::ecoinfr)
MCFG_DEVICE_ADD(UPD8251_TAG, I8251, 0)
MCFG_ECOIN_200STEP_ADD("reel0")
MCFG_DEVICE_ADD("reel0", REEL, ECOIN_200STEP_REEL, 12, 24, 0x09, 7, 200*2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, ecoinfr_state, reel0_optic_cb))
MCFG_ECOIN_200STEP_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, ECOIN_200STEP_REEL, 12, 24, 0x09, 7, 200*2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, ecoinfr_state, reel1_optic_cb))
MCFG_ECOIN_200STEP_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, ECOIN_200STEP_REEL, 12, 24, 0x09, 7, 200*2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, ecoinfr_state, reel2_optic_cb))
MCFG_ECOIN_200STEP_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, ECOIN_200STEP_REEL, 12, 24, 0x09, 7, 200*2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, ecoinfr_state, reel3_optic_cb))
MACHINE_CONFIG_END

View File

@ -1336,17 +1336,17 @@ MACHINE_CONFIG_START(jpmimpct_state::impctawp)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MCFG_DEFAULT_LAYOUT(layout_jpmimpct)
MCFG_STARPOINT_48STEP_ADD("reel0")
MCFG_DEVICE_ADD("reel0", REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, jpmimpct_state, reel0_optic_cb))
MCFG_STARPOINT_48STEP_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, jpmimpct_state, reel1_optic_cb))
MCFG_STARPOINT_48STEP_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, jpmimpct_state, reel2_optic_cb))
MCFG_STARPOINT_48STEP_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, jpmimpct_state, reel3_optic_cb))
MCFG_STARPOINT_48STEP_ADD("reel4")
MCFG_DEVICE_ADD("reel4", REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, jpmimpct_state, reel4_optic_cb))
MCFG_STARPOINT_48STEP_ADD("reel5")
MCFG_DEVICE_ADD("reel5", REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, jpmimpct_state, reel5_optic_cb))
MCFG_DEVICE_ADD("meters", METERS, 0)

View File

@ -823,17 +823,17 @@ MACHINE_CONFIG_START(maygay1b_state::maygay_m1)
MCFG_I8279_OUT_DISP_CB(WRITE8(*this, maygay1b_state, lamp_data_2_w)) // display A&B
#endif
MCFG_STARPOINT_48STEP_ADD("reel0")
MCFG_DEVICE_ADD("reel0", REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, maygay1b_state, reel_optic_cb<0>))
MCFG_STARPOINT_48STEP_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, maygay1b_state, reel_optic_cb<1>))
MCFG_STARPOINT_48STEP_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, maygay1b_state, reel_optic_cb<2>))
MCFG_STARPOINT_48STEP_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, maygay1b_state, reel_optic_cb<3>))
MCFG_STARPOINT_48STEP_ADD("reel4")
MCFG_DEVICE_ADD("reel4", REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, maygay1b_state, reel_optic_cb<4>))
MCFG_STARPOINT_48STEP_ADD("reel5")
MCFG_DEVICE_ADD("reel5", REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, maygay1b_state, reel_optic_cb<5>))
MCFG_DEVICE_ADD("meters", METERS, 0)

View File

@ -181,12 +181,18 @@ public:
mpu3_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_nvram(*this, "nvram")
, m_reels(*this, "reel%u", 0U)
, m_meters(*this, "meters")
, m_vfd(*this, "vfd")
, m_triac(*this, "triac%u", 0U)
, m_digit(*this, "digit%u", 0U)
, m_lamp(*this, "lamp%u", 0U)
, m_pia3(*this, "pia_ic3")
, m_pia4(*this, "pia_ic4")
, m_pia5(*this, "pia_ic5")
, m_pia6(*this, "pia_ic6")
, m_ptm2(*this, "ptm_ic2")
{ }
void init_m3hprvpr();
@ -264,12 +270,18 @@ private:
emu_timer *m_ic21_timer;
required_device<cpu_device> m_maincpu;
required_shared_ptr<uint8_t> m_nvram;
required_device_array<stepper_device, 4> m_reels;
required_device<meters_device> m_meters;
optional_device<rocvfd_device> m_vfd;
output_finder<8> m_triac;
output_finder<8> m_digit;
output_finder<8 * 8> m_lamp;
required_device<pia6821_device> m_pia3;
required_device<pia6821_device> m_pia4;
required_device<pia6821_device> m_pia5;
required_device<pia6821_device> m_pia6;
required_device<ptm6840_device> m_ptm2;
};
#define DISPLAY_PORT 0
@ -305,21 +317,15 @@ void mpu3_state::machine_reset()
/* 6808 IRQ handler */
WRITE_LINE_MEMBER(mpu3_state::cpu0_irq)
{
pia6821_device *pia3 = machine().device<pia6821_device>("pia_ic3");
pia6821_device *pia4 = machine().device<pia6821_device>("pia_ic4");
pia6821_device *pia5 = machine().device<pia6821_device>("pia_ic5");
pia6821_device *pia6 = machine().device<pia6821_device>("pia_ic6");
ptm6840_device *ptm2 = machine().device<ptm6840_device>("ptm_ic2");
/* The PIA and PTM IRQ lines are all connected to a common PCB track, leading directly to the 6809 IRQ line. */
int combined_state = pia3->irq_a_state() | pia3->irq_b_state() |
pia4->irq_a_state() | pia4->irq_b_state() |
pia5->irq_a_state() | pia5->irq_b_state() |
pia6->irq_a_state() | pia6->irq_b_state() |
ptm2->irq_state();
int combined_state = m_pia3->irq_a_state() | m_pia3->irq_b_state() |
m_pia4->irq_a_state() | m_pia4->irq_b_state() |
m_pia5->irq_a_state() | m_pia5->irq_b_state() |
m_pia6->irq_a_state() | m_pia6->irq_b_state() |
m_ptm2->irq_state();
m_maincpu->set_input_line(M6808_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
LOG(("6808 int%d \n", combined_state));
m_maincpu->set_input_line(M6808_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
LOG(("6808 int%d \n", combined_state));
}
@ -796,8 +802,8 @@ TIMER_DEVICE_CALLBACK_MEMBER(mpu3_state::gen_50hz)
falling edges of the pulse are used means the timer actually gives a 100Hz
oscillating signal.*/
m_signal_50hz = m_signal_50hz?0:1;
machine().device<ptm6840_device>("ptm_ic2")->set_c1(m_signal_50hz);
machine().device<pia6821_device>("pia_ic3")->cb1_w(~m_signal_50hz);
m_ptm2->set_c1(m_signal_50hz);
m_pia3->cb1_w(~m_signal_50hz);
update_triacs();
}
@ -806,43 +812,31 @@ TIMER_DEVICE_CALLBACK_MEMBER(mpu3_state::ic10_callback)
// TODO: Use discrete handler for 555, this is far too simplistic
m_ic10_output = m_ic10_output?0:1;
machine().device<ptm6840_device>("ptm_ic2")->set_c2(m_ic10_output);
machine().device<pia6821_device>("pia_ic4")->ca1_w(m_ic10_output);
m_ptm2->set_c2(m_ic10_output);
m_pia4->ca1_w(m_ic10_output);
}
WRITE8_MEMBER(mpu3_state::mpu3ptm_w)
{
ptm6840_device *ptm2 = machine().device<ptm6840_device>("ptm_ic2");
ptm2->write(space, offset >>2,data);//((offset & 0x1f) >>2),data);
m_ptm2->write(space, offset >>2,data);//((offset & 0x1f) >>2),data);
}
READ8_MEMBER(mpu3_state::mpu3ptm_r)
{
ptm6840_device *ptm2 = machine().device<ptm6840_device>("ptm_ic2");
return ptm2->read(space, offset >>2);
return m_ptm2->read(space, offset >>2);
}
void mpu3_state::mpu3_basemap(address_map &map)
{
map(0x0000, 0x07ff).ram().share("nvram");
map(0x0000, 0x07ff).ram().share(m_nvram);
map(0x1000, 0xffff).rom();
map(0x8800, 0x881f).rw(FUNC(mpu3_state::mpu3ptm_r), FUNC(mpu3_state::mpu3ptm_w));/* PTM6840 IC2 */
map(0x9000, 0x9003).rw("pia_ic3", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC3 */
map(0x9800, 0x9803).rw("pia_ic4", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC4 */
map(0xa000, 0xa003).rw("pia_ic5", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC5 */
map(0xa800, 0xa803).rw("pia_ic6", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC6 */
map(0x9000, 0x9003).rw(m_pia3, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC3 */
map(0x9800, 0x9803).rw(m_pia4, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC4 */
map(0xa000, 0xa003).rw(m_pia5, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC5 */
map(0xa800, 0xa803).rw(m_pia6, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC6 */
}
#define MCFG_MPU3_REEL_ADD(_tag)\
MCFG_STEPPER_ADD(_tag)\
MCFG_STEPPER_REEL_TYPE(MPU3_48STEP_REEL)\
MCFG_STEPPER_START_INDEX(1)\
MCFG_STEPPER_END_INDEX(3)\
MCFG_STEPPER_INDEX_PATTERN(0x00)\
MCFG_STEPPER_INIT_PHASE(2)
MACHINE_CONFIG_START(mpu3_state::mpu3base)
MCFG_DEVICE_ADD("maincpu", M6808, MPU3_MASTER_CLOCK)///4)
MCFG_DEVICE_PROGRAM_MAP(mpu3_basemap)
@ -853,20 +847,20 @@ MACHINE_CONFIG_START(mpu3_state::mpu3base)
MCFG_TIMER_DRIVER_ADD_PERIODIC("555_ic10", mpu3_state, ic10_callback, PERIOD_OF_555_ASTABLE(10000,1000,0.0000001))
/* 6840 PTM */
MCFG_DEVICE_ADD("ptm_ic2", PTM6840, MPU3_MASTER_CLOCK)
MCFG_DEVICE_ADD(m_ptm2, PTM6840, MPU3_MASTER_CLOCK)
MCFG_PTM6840_EXTERNAL_CLOCKS(0, 0, 0)
MCFG_PTM6840_O1_CB(WRITELINE(*this, mpu3_state, ic2_o1_callback))
MCFG_PTM6840_O2_CB(WRITELINE(*this, mpu3_state, ic2_o2_callback))
MCFG_PTM6840_O3_CB(WRITELINE(*this, mpu3_state, ic2_o3_callback))
MCFG_PTM6840_IRQ_CB(WRITELINE(*this, mpu3_state, cpu0_irq))
MCFG_DEVICE_ADD("pia_ic3", PIA6821, 0)
MCFG_DEVICE_ADD(m_pia3, PIA6821, 0)
MCFG_PIA_READPA_HANDLER(READ8(*this, mpu3_state, pia_ic3_porta_r))
MCFG_PIA_WRITEPB_HANDLER(WRITE8(*this, mpu3_state, pia_ic3_portb_w))
MCFG_PIA_CA2_HANDLER(WRITELINE(*this, mpu3_state, pia_ic3_ca2_w))
MCFG_PIA_IRQB_HANDLER(WRITELINE(*this, mpu3_state, cpu0_irq))
MCFG_DEVICE_ADD("pia_ic4", PIA6821, 0)
MCFG_DEVICE_ADD(m_pia4, PIA6821, 0)
MCFG_PIA_READPA_HANDLER(READ8(*this, mpu3_state, pia_ic4_porta_r))
MCFG_PIA_WRITEPA_HANDLER(WRITE8(*this, mpu3_state, pia_ic4_porta_w))
MCFG_PIA_WRITEPB_HANDLER(WRITE8(*this, mpu3_state, pia_ic4_portb_w))
@ -874,14 +868,14 @@ MACHINE_CONFIG_START(mpu3_state::mpu3base)
MCFG_PIA_CB2_HANDLER(WRITELINE(*this, mpu3_state, pia_ic4_cb2_w))
MCFG_PIA_IRQA_HANDLER(WRITELINE(*this, mpu3_state, cpu0_irq))
MCFG_DEVICE_ADD("pia_ic5", PIA6821, 0)
MCFG_DEVICE_ADD(m_pia5, PIA6821, 0)
MCFG_PIA_READPB_HANDLER(READ8(*this, mpu3_state, pia_ic5_portb_r))
MCFG_PIA_WRITEPA_HANDLER(WRITE8(*this, mpu3_state, pia_ic5_porta_w))
MCFG_PIA_WRITEPB_HANDLER(WRITE8(*this, mpu3_state, pia_ic5_portb_w))
MCFG_PIA_CA2_HANDLER(WRITELINE(*this, mpu3_state, pia_ic5_ca2_w))
MCFG_PIA_CB2_HANDLER(WRITELINE(*this, mpu3_state, pia_ic5_cb2_w))
MCFG_DEVICE_ADD("pia_ic6", PIA6821, 0)
MCFG_DEVICE_ADD(m_pia6, PIA6821, 0)
MCFG_PIA_READPA_HANDLER(READ8(*this, mpu3_state, pia_ic6_porta_r))
MCFG_PIA_READPB_HANDLER(READ8(*this, mpu3_state, pia_ic6_portb_r))
MCFG_PIA_WRITEPA_HANDLER(WRITE8(*this, mpu3_state, pia_ic6_porta_w))
@ -889,13 +883,13 @@ MACHINE_CONFIG_START(mpu3_state::mpu3base)
MCFG_PIA_IRQA_HANDLER(WRITELINE(*this, mpu3_state, cpu0_irq))
MCFG_PIA_IRQB_HANDLER(WRITELINE(*this, mpu3_state, cpu0_irq))
MCFG_MPU3_REEL_ADD("reel0")
MCFG_DEVICE_ADD("reel0", REEL, MPU3_48STEP_REEL, 1, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu3_state, reel_optic_cb<0>))
MCFG_MPU3_REEL_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, MPU3_48STEP_REEL, 1, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu3_state, reel_optic_cb<1>))
MCFG_MPU3_REEL_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, MPU3_48STEP_REEL, 1, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu3_state, reel_optic_cb<2>))
MCFG_MPU3_REEL_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, MPU3_48STEP_REEL, 1, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu3_state, reel_optic_cb<3>))
MCFG_DEVICE_ADD("meters", METERS, 0)

View File

@ -2134,7 +2134,7 @@ void mpu4_state::mpu4_install_mod4yam_space(address_space &space)
void mpu4_state::mpu4_install_mod4oki_space(address_space &space)
{
pia6821_device *pia_ic4ss = subdevice<pia6821_device>("pia_ic4ss");
space.install_readwrite_handler(0x0880, 0x0883, read8_delegate(FUNC(pia6821_device::read), pia_ic4ss), write8_delegate(FUNC(pia6821_device::write), pia_ic4ss));
space.install_read_handler(0x08c0, 0x08c7, read8_delegate(FUNC(ptm6840_device::read), (ptm6840_device*)m_ptm_ic3ss));
space.install_write_handler(0x08c0, 0x08c7, write8_delegate(FUNC(mpu4_state::ic3ss_w),this));
@ -2620,379 +2620,339 @@ void mpu4_state::mpu4_memmap(address_map &map)
map(0x1000, 0xffff).bankr("bank1"); /* 64k paged ROM (4 pages) */
}
#define MCFG_MPU4_STD_REEL_ADD(_tag)\
MCFG_STEPPER_ADD(_tag)\
MCFG_STEPPER_REEL_TYPE(BARCREST_48STEP_REEL)\
MCFG_STEPPER_START_INDEX(1)\
MCFG_STEPPER_END_INDEX(3)\
MCFG_STEPPER_INDEX_PATTERN(0x00)\
MCFG_STEPPER_INIT_PHASE(2)
#define MCFG_MPU4_TYPE2_REEL_ADD(_tag)\
MCFG_STEPPER_ADD(_tag)\
MCFG_STEPPER_REEL_TYPE(BARCREST_48STEP_REEL)\
MCFG_STEPPER_START_INDEX(4)\
MCFG_STEPPER_END_INDEX(12)\
MCFG_STEPPER_INDEX_PATTERN(0x00)\
MCFG_STEPPER_INIT_PHASE(2)
#define MCFG_MPU4_TYPE3_REEL_ADD(_tag)\
MCFG_STEPPER_ADD(_tag)\
MCFG_STEPPER_REEL_TYPE(BARCREST_48STEP_REEL)\
MCFG_STEPPER_START_INDEX(92)\
MCFG_STEPPER_END_INDEX(3)\
MCFG_STEPPER_INDEX_PATTERN(0x00)\
MCFG_STEPPER_INIT_PHASE(2)
#define MCFG_MPU4_TYPE4_REEL_ADD(_tag)\
MCFG_STEPPER_ADD(_tag)\
MCFG_STEPPER_REEL_TYPE(BARCREST_48STEP_REEL)\
MCFG_STEPPER_START_INDEX(93)\
MCFG_STEPPER_END_INDEX(2)\
MCFG_STEPPER_INDEX_PATTERN(0x00)\
MCFG_STEPPER_INIT_PHASE(2)
#define MCFG_MPU4_BWB_REEL_ADD(_tag)\
MCFG_STEPPER_ADD(_tag)\
MCFG_STEPPER_REEL_TYPE(BARCREST_48STEP_REEL)\
MCFG_STEPPER_START_INDEX(96)\
MCFG_STEPPER_END_INDEX(3)\
MCFG_STEPPER_INDEX_PATTERN(0x00)\
MCFG_STEPPER_INIT_PHASE(2)
MACHINE_CONFIG_START(mpu4_state::mpu4_std_3reel)
MCFG_MPU4_STD_REEL_ADD("reel0")
MCFG_DEVICE_ADD("reel0", REEL, BARCREST_48STEP_REEL, 1, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<0>))
MCFG_MPU4_STD_REEL_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, BARCREST_48STEP_REEL, 1, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<1>))
MCFG_MPU4_STD_REEL_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, BARCREST_48STEP_REEL, 1, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<2>))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mpu4_state::mpu4_type2_3reel)
MCFG_MPU4_TYPE2_REEL_ADD("reel0")
MCFG_DEVICE_ADD("reel0", REEL, BARCREST_48STEP_REEL, 4, 12, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<0>))
MCFG_MPU4_TYPE2_REEL_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, BARCREST_48STEP_REEL, 4, 12, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<1>))
MCFG_MPU4_TYPE2_REEL_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, BARCREST_48STEP_REEL, 4, 12, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<2>))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mpu4_state::mpu4_type3_3reel)
MCFG_MPU4_TYPE3_REEL_ADD("reel0")
MCFG_DEVICE_ADD("reel0", REEL, BARCREST_48STEP_REEL, 92, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<0>))
MCFG_MPU4_TYPE3_REEL_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, BARCREST_48STEP_REEL, 92, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<1>))
MCFG_MPU4_TYPE3_REEL_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, BARCREST_48STEP_REEL, 92, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<2>))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mpu4_state::mpu4_type4_3reel)
MCFG_MPU4_TYPE4_REEL_ADD("reel0")
MCFG_DEVICE_ADD("reel0", REEL, BARCREST_48STEP_REEL, 93, 2, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<0>))
MCFG_MPU4_TYPE4_REEL_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, BARCREST_48STEP_REEL, 93, 2, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<1>))
MCFG_MPU4_TYPE4_REEL_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, BARCREST_48STEP_REEL, 93, 2, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<2>))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mpu4_state::mpu4_bwb_3reel)
MCFG_MPU4_BWB_REEL_ADD("reel0")
MCFG_DEVICE_ADD("reel0", REEL, BARCREST_48STEP_REEL, 96, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<0>))
MCFG_MPU4_BWB_REEL_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, BARCREST_48STEP_REEL, 96, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<1>))
MCFG_MPU4_BWB_REEL_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, BARCREST_48STEP_REEL, 96, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<2>))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mpu4_state::mpu4_std_4reel)
MCFG_MPU4_STD_REEL_ADD("reel0")
MCFG_DEVICE_ADD("reel0", REEL, BARCREST_48STEP_REEL, 1, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<0>))
MCFG_MPU4_STD_REEL_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, BARCREST_48STEP_REEL, 1, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<1>))
MCFG_MPU4_STD_REEL_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, BARCREST_48STEP_REEL, 1, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<2>))
MCFG_MPU4_STD_REEL_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, BARCREST_48STEP_REEL, 1, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<3>))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mpu4_state::mpu4_type2_4reel)
MCFG_MPU4_TYPE2_REEL_ADD("reel0")
MCFG_DEVICE_ADD("reel0", REEL, BARCREST_48STEP_REEL, 4, 12, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<0>))
MCFG_MPU4_TYPE2_REEL_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, BARCREST_48STEP_REEL, 4, 12, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<1>))
MCFG_MPU4_TYPE2_REEL_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, BARCREST_48STEP_REEL, 4, 12, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<2>))
MCFG_MPU4_TYPE2_REEL_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, BARCREST_48STEP_REEL, 4, 12, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<3>))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mpu4_state::mpu4_type3_4reel)
MCFG_MPU4_TYPE3_REEL_ADD("reel0")
MCFG_DEVICE_ADD("reel0", REEL, BARCREST_48STEP_REEL, 92, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<0>))
MCFG_MPU4_TYPE3_REEL_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, BARCREST_48STEP_REEL, 92, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<1>))
MCFG_MPU4_TYPE3_REEL_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, BARCREST_48STEP_REEL, 92, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<2>))
MCFG_MPU4_TYPE3_REEL_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, BARCREST_48STEP_REEL, 92, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<3>))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mpu4_state::mpu4_type4_4reel)
MCFG_MPU4_TYPE4_REEL_ADD("reel0")
MCFG_DEVICE_ADD("reel0", REEL, BARCREST_48STEP_REEL, 93, 2, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<0>))
MCFG_MPU4_TYPE4_REEL_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, BARCREST_48STEP_REEL, 93, 2, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<1>))
MCFG_MPU4_TYPE4_REEL_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, BARCREST_48STEP_REEL, 93, 2, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<2>))
MCFG_MPU4_TYPE4_REEL_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, BARCREST_48STEP_REEL, 93, 2, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<3>))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mpu4_state::mpu4_bwb_4reel)
MCFG_MPU4_BWB_REEL_ADD("reel0")
MCFG_DEVICE_ADD("reel0", REEL, BARCREST_48STEP_REEL, 96, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<0>))
MCFG_MPU4_BWB_REEL_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, BARCREST_48STEP_REEL, 96, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<1>))
MCFG_MPU4_BWB_REEL_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, BARCREST_48STEP_REEL, 96, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<2>))
MCFG_MPU4_BWB_REEL_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, BARCREST_48STEP_REEL, 96, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<3>))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mpu4_state::mpu4_std_5reel)
MCFG_MPU4_STD_REEL_ADD("reel0")
MCFG_DEVICE_ADD("reel0", REEL, BARCREST_48STEP_REEL, 1, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<0>))
MCFG_MPU4_STD_REEL_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, BARCREST_48STEP_REEL, 1, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<1>))
MCFG_MPU4_STD_REEL_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, BARCREST_48STEP_REEL, 1, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<2>))
MCFG_MPU4_STD_REEL_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, BARCREST_48STEP_REEL, 1, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<3>))
MCFG_MPU4_STD_REEL_ADD("reel4")
MCFG_DEVICE_ADD("reel4", REEL, BARCREST_48STEP_REEL, 1, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<4>))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mpu4_state::mpu4_type2_5reel)
MCFG_MPU4_TYPE2_REEL_ADD("reel0")
MCFG_DEVICE_ADD("reel0", REEL, BARCREST_48STEP_REEL, 4, 12, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<0>))
MCFG_MPU4_TYPE2_REEL_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, BARCREST_48STEP_REEL, 4, 12, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<1>))
MCFG_MPU4_TYPE2_REEL_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, BARCREST_48STEP_REEL, 4, 12, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<2>))
MCFG_MPU4_TYPE2_REEL_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, BARCREST_48STEP_REEL, 4, 12, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<3>))
MCFG_MPU4_TYPE2_REEL_ADD("reel4")
MCFG_DEVICE_ADD("reel4", REEL, BARCREST_48STEP_REEL, 4, 12, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<4>))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mpu4_state::mpu4_type3_5reel)
MCFG_MPU4_TYPE3_REEL_ADD("reel0")
MCFG_DEVICE_ADD("reel0", REEL, BARCREST_48STEP_REEL, 92, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<0>))
MCFG_MPU4_TYPE3_REEL_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, BARCREST_48STEP_REEL, 92, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<1>))
MCFG_MPU4_TYPE3_REEL_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, BARCREST_48STEP_REEL, 92, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<2>))
MCFG_MPU4_TYPE3_REEL_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, BARCREST_48STEP_REEL, 92, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<3>))
MCFG_MPU4_TYPE3_REEL_ADD("reel4")
MCFG_DEVICE_ADD("reel4", REEL, BARCREST_48STEP_REEL, 92, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<4>))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mpu4_state::mpu4_type4_5reel)
MCFG_MPU4_TYPE4_REEL_ADD("reel0")
MCFG_DEVICE_ADD("reel0", REEL, BARCREST_48STEP_REEL, 93, 2, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<0>))
MCFG_MPU4_TYPE4_REEL_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, BARCREST_48STEP_REEL, 93, 2, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<1>))
MCFG_MPU4_TYPE4_REEL_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, BARCREST_48STEP_REEL, 93, 2, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<2>))
MCFG_MPU4_TYPE4_REEL_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, BARCREST_48STEP_REEL, 93, 2, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<3>))
MCFG_MPU4_TYPE4_REEL_ADD("reel4")
MCFG_DEVICE_ADD("reel4", REEL, BARCREST_48STEP_REEL, 93, 2, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<4>))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mpu4_state::mpu4_bwb_5reel)
MCFG_MPU4_BWB_REEL_ADD("reel0")
MCFG_DEVICE_ADD("reel0", REEL, BARCREST_48STEP_REEL, 96, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<0>))
MCFG_MPU4_BWB_REEL_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, BARCREST_48STEP_REEL, 96, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<1>))
MCFG_MPU4_BWB_REEL_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, BARCREST_48STEP_REEL, 96, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<2>))
MCFG_MPU4_BWB_REEL_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, BARCREST_48STEP_REEL, 96, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<3>))
MCFG_MPU4_BWB_REEL_ADD("reel4")
MCFG_DEVICE_ADD("reel4", REEL, BARCREST_48STEP_REEL, 96, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<4>))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mpu4_state::mpu4_std_6reel)
MCFG_MPU4_STD_REEL_ADD("reel0")
MCFG_DEVICE_ADD("reel0", REEL, BARCREST_48STEP_REEL, 1, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<0>))
MCFG_MPU4_STD_REEL_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, BARCREST_48STEP_REEL, 1, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<1>))
MCFG_MPU4_STD_REEL_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, BARCREST_48STEP_REEL, 1, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<2>))
MCFG_MPU4_STD_REEL_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, BARCREST_48STEP_REEL, 1, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<3>))
MCFG_MPU4_STD_REEL_ADD("reel4")
MCFG_DEVICE_ADD("reel4", REEL, BARCREST_48STEP_REEL, 1, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<4>))
MCFG_MPU4_STD_REEL_ADD("reel5")
MCFG_DEVICE_ADD("reel5", REEL, BARCREST_48STEP_REEL, 1, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<4>))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mpu4_state::mpu4_type2_6reel)
MCFG_MPU4_TYPE2_REEL_ADD("reel0")
MCFG_DEVICE_ADD("reel0", REEL, BARCREST_48STEP_REEL, 4, 12, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<0>))
MCFG_MPU4_TYPE2_REEL_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, BARCREST_48STEP_REEL, 4, 12, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<1>))
MCFG_MPU4_TYPE2_REEL_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, BARCREST_48STEP_REEL, 4, 12, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<2>))
MCFG_MPU4_TYPE2_REEL_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, BARCREST_48STEP_REEL, 4, 12, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<3>))
MCFG_MPU4_TYPE2_REEL_ADD("reel4")
MCFG_DEVICE_ADD("reel4", REEL, BARCREST_48STEP_REEL, 4, 12, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<4>))
MCFG_MPU4_TYPE2_REEL_ADD("reel5")
MCFG_DEVICE_ADD("reel5", REEL, BARCREST_48STEP_REEL, 4, 12, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<5>))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mpu4_state::mpu4_type3_6reel)
MCFG_MPU4_TYPE3_REEL_ADD("reel0")
MCFG_DEVICE_ADD("reel0", REEL, BARCREST_48STEP_REEL, 92, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<0>))
MCFG_MPU4_TYPE3_REEL_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, BARCREST_48STEP_REEL, 92, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<1>))
MCFG_MPU4_TYPE3_REEL_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, BARCREST_48STEP_REEL, 92, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<2>))
MCFG_MPU4_TYPE3_REEL_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, BARCREST_48STEP_REEL, 92, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<3>))
MCFG_MPU4_TYPE3_REEL_ADD("reel4")
MCFG_DEVICE_ADD("reel4", REEL, BARCREST_48STEP_REEL, 92, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<4>))
MCFG_MPU4_TYPE3_REEL_ADD("reel5")
MCFG_DEVICE_ADD("reel5", REEL, BARCREST_48STEP_REEL, 92, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<5>))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mpu4_state::mpu4_type4_6reel)
MCFG_MPU4_TYPE4_REEL_ADD("reel0")
MCFG_DEVICE_ADD("reel0", REEL, BARCREST_48STEP_REEL, 93, 2, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<0>))
MCFG_MPU4_TYPE4_REEL_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, BARCREST_48STEP_REEL, 93, 2, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<1>))
MCFG_MPU4_TYPE4_REEL_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, BARCREST_48STEP_REEL, 93, 2, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<2>))
MCFG_MPU4_TYPE4_REEL_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, BARCREST_48STEP_REEL, 93, 2, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<3>))
MCFG_MPU4_TYPE4_REEL_ADD("reel4")
MCFG_DEVICE_ADD("reel4", REEL, BARCREST_48STEP_REEL, 93, 2, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<4>))
MCFG_MPU4_TYPE4_REEL_ADD("reel5")
MCFG_DEVICE_ADD("reel5", REEL, BARCREST_48STEP_REEL, 93, 2, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<5>))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mpu4_state::mpu4_bwb_6reel)
MCFG_MPU4_BWB_REEL_ADD("reel0")
MCFG_DEVICE_ADD("reel0", REEL, BARCREST_48STEP_REEL, 96, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<0>))
MCFG_MPU4_BWB_REEL_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, BARCREST_48STEP_REEL, 96, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<1>))
MCFG_MPU4_BWB_REEL_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, BARCREST_48STEP_REEL, 96, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<2>))
MCFG_MPU4_BWB_REEL_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, BARCREST_48STEP_REEL, 96, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<3>))
MCFG_MPU4_BWB_REEL_ADD("reel4")
MCFG_DEVICE_ADD("reel4", REEL, BARCREST_48STEP_REEL, 96, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<4>))
MCFG_MPU4_BWB_REEL_ADD("reel5")
MCFG_DEVICE_ADD("reel5", REEL, BARCREST_48STEP_REEL, 96, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<5>))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mpu4_state::mpu4_std_7reel)
MCFG_MPU4_STD_REEL_ADD("reel0")
MCFG_DEVICE_ADD("reel0", REEL, BARCREST_48STEP_REEL, 1, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<0>))
MCFG_MPU4_STD_REEL_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, BARCREST_48STEP_REEL, 1, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<1>))
MCFG_MPU4_STD_REEL_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, BARCREST_48STEP_REEL, 1, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<2>))
MCFG_MPU4_STD_REEL_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, BARCREST_48STEP_REEL, 1, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<3>))
MCFG_MPU4_STD_REEL_ADD("reel4")
MCFG_DEVICE_ADD("reel4", REEL, BARCREST_48STEP_REEL, 1, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<4>))
MCFG_MPU4_STD_REEL_ADD("reel5")
MCFG_DEVICE_ADD("reel5", REEL, BARCREST_48STEP_REEL, 1, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<5>))
MCFG_MPU4_STD_REEL_ADD("reel6")
MCFG_DEVICE_ADD("reel6", REEL, BARCREST_48STEP_REEL, 1, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<6>))
MCFG_MPU4_STD_REEL_ADD("reel7")
MCFG_DEVICE_ADD("reel7", REEL, BARCREST_48STEP_REEL, 1, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<7>))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mpu4_state::mpu4_type2_7reel)
MCFG_MPU4_TYPE2_REEL_ADD("reel0")
MCFG_DEVICE_ADD("reel0", REEL, BARCREST_48STEP_REEL, 4, 12, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<0>))
MCFG_MPU4_TYPE2_REEL_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, BARCREST_48STEP_REEL, 4, 12, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<1>))
MCFG_MPU4_TYPE2_REEL_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, BARCREST_48STEP_REEL, 4, 12, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<2>))
MCFG_MPU4_TYPE2_REEL_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, BARCREST_48STEP_REEL, 4, 12, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<3>))
MCFG_MPU4_TYPE2_REEL_ADD("reel4")
MCFG_DEVICE_ADD("reel4", REEL, BARCREST_48STEP_REEL, 4, 12, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<4>))
MCFG_MPU4_TYPE2_REEL_ADD("reel5")
MCFG_DEVICE_ADD("reel5", REEL, BARCREST_48STEP_REEL, 4, 12, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<5>))
MCFG_MPU4_TYPE2_REEL_ADD("reel6")
MCFG_DEVICE_ADD("reel6", REEL, BARCREST_48STEP_REEL, 4, 12, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<6>))
MCFG_MPU4_TYPE2_REEL_ADD("reel7")
MCFG_DEVICE_ADD("reel7", REEL, BARCREST_48STEP_REEL, 4, 12, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<7>))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mpu4_state::mpu4_type3_7reel)
MCFG_MPU4_TYPE3_REEL_ADD("reel0")
MCFG_DEVICE_ADD("reel0", REEL, BARCREST_48STEP_REEL, 92, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<0>))
MCFG_MPU4_TYPE3_REEL_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, BARCREST_48STEP_REEL, 92, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<1>))
MCFG_MPU4_TYPE3_REEL_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, BARCREST_48STEP_REEL, 92, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<2>))
MCFG_MPU4_TYPE3_REEL_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, BARCREST_48STEP_REEL, 92, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<3>))
MCFG_MPU4_TYPE3_REEL_ADD("reel4")
MCFG_DEVICE_ADD("reel4", REEL, BARCREST_48STEP_REEL, 92, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<4>))
MCFG_MPU4_TYPE3_REEL_ADD("reel5")
MCFG_DEVICE_ADD("reel5", REEL, BARCREST_48STEP_REEL, 92, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<5>))
MCFG_MPU4_TYPE3_REEL_ADD("reel6")
MCFG_DEVICE_ADD("reel6", REEL, BARCREST_48STEP_REEL, 92, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<6>))
MCFG_MPU4_TYPE3_REEL_ADD("reel7")
MCFG_DEVICE_ADD("reel7", REEL, BARCREST_48STEP_REEL, 92, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<7>))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mpu4_state::mpu4_type4_7reel)
MCFG_MPU4_TYPE4_REEL_ADD("reel0")
MCFG_DEVICE_ADD("reel0", REEL, BARCREST_48STEP_REEL, 93, 2, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<0>))
MCFG_MPU4_TYPE4_REEL_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, BARCREST_48STEP_REEL, 93, 2, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<1>))
MCFG_MPU4_TYPE4_REEL_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, BARCREST_48STEP_REEL, 93, 2, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<2>))
MCFG_MPU4_TYPE4_REEL_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, BARCREST_48STEP_REEL, 93, 2, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<3>))
MCFG_MPU4_TYPE4_REEL_ADD("reel4")
MCFG_DEVICE_ADD("reel4", REEL, BARCREST_48STEP_REEL, 93, 2, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<4>))
MCFG_MPU4_TYPE4_REEL_ADD("reel5")
MCFG_DEVICE_ADD("reel5", REEL, BARCREST_48STEP_REEL, 93, 2, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<5>))
MCFG_MPU4_TYPE4_REEL_ADD("reel6")
MCFG_DEVICE_ADD("reel6", REEL, BARCREST_48STEP_REEL, 93, 2, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<6>))
MCFG_MPU4_TYPE4_REEL_ADD("reel7")
MCFG_DEVICE_ADD("reel7", REEL, BARCREST_48STEP_REEL, 93, 2, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<7>))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mpu4_state::mpu4_bwb_7reel)
MCFG_MPU4_BWB_REEL_ADD("reel0")
MCFG_DEVICE_ADD("reel0", REEL, BARCREST_48STEP_REEL, 96, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<0>))
MCFG_MPU4_BWB_REEL_ADD("reel1")
MCFG_DEVICE_ADD("reel1", REEL, BARCREST_48STEP_REEL, 96, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<1>))
MCFG_MPU4_BWB_REEL_ADD("reel2")
MCFG_DEVICE_ADD("reel2", REEL, BARCREST_48STEP_REEL, 96, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<2>))
MCFG_MPU4_BWB_REEL_ADD("reel3")
MCFG_DEVICE_ADD("reel3", REEL, BARCREST_48STEP_REEL, 96, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<3>))
MCFG_MPU4_BWB_REEL_ADD("reel4")
MCFG_DEVICE_ADD("reel4", REEL, BARCREST_48STEP_REEL, 96, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<4>))
MCFG_MPU4_BWB_REEL_ADD("reel5")
MCFG_DEVICE_ADD("reel5", REEL, BARCREST_48STEP_REEL, 96, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<5>))
MCFG_MPU4_BWB_REEL_ADD("reel6")
MCFG_DEVICE_ADD("reel6", REEL, BARCREST_48STEP_REEL, 96, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<6>))
MCFG_MPU4_BWB_REEL_ADD("reel7")
MCFG_DEVICE_ADD("reel7", REEL, BARCREST_48STEP_REEL, 96, 3, 0x00, 2)
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(*this, mpu4_state, reel_optic_cb<7>))
MACHINE_CONFIG_END