Convert steppers to device_t
This commit is contained in:
parent
a4bdd8af85
commit
824889c03a
@ -160,6 +160,10 @@ static MACHINE_CONFIG_FRAGMENT( epson_lx810l )
|
|||||||
|
|
||||||
/* 256-bit eeprom */
|
/* 256-bit eeprom */
|
||||||
MCFG_EEPROM_SERIAL_93C06_ADD("eeprom")
|
MCFG_EEPROM_SERIAL_93C06_ADD("eeprom")
|
||||||
|
|
||||||
|
/* steppers */
|
||||||
|
MCFG_DEVICE_ADD("pf_stepper", STEPPER, 0)
|
||||||
|
MCFG_DEVICE_ADD("cr_stepper", STEPPER, 0)
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
@ -278,6 +282,8 @@ epson_lx810l_t::epson_lx810l_t(const machine_config &mconfig, const char *tag, d
|
|||||||
device_t(mconfig, EPSON_LX810L, "Epson LX-810L", tag, owner, clock, "lx810l", __FILE__),
|
device_t(mconfig, EPSON_LX810L, "Epson LX-810L", tag, owner, clock, "lx810l", __FILE__),
|
||||||
device_centronics_peripheral_interface(mconfig, *this),
|
device_centronics_peripheral_interface(mconfig, *this),
|
||||||
m_maincpu(*this, "maincpu"),
|
m_maincpu(*this, "maincpu"),
|
||||||
|
m_pf_stepper(*this, "pf_stepper"),
|
||||||
|
m_cr_stepper(*this, "cr_stepper"),
|
||||||
m_eeprom(*this, "eeprom"),
|
m_eeprom(*this, "eeprom"),
|
||||||
m_speaker(*this, "speaker"),
|
m_speaker(*this, "speaker"),
|
||||||
m_e05a30(*this, "e05a30"),
|
m_e05a30(*this, "e05a30"),
|
||||||
@ -296,6 +302,8 @@ epson_lx810l_t::epson_lx810l_t(const machine_config &mconfig, device_type type,
|
|||||||
device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__),
|
device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__),
|
||||||
device_centronics_peripheral_interface(mconfig, *this),
|
device_centronics_peripheral_interface(mconfig, *this),
|
||||||
m_maincpu(*this, "maincpu"),
|
m_maincpu(*this, "maincpu"),
|
||||||
|
m_pf_stepper(*this, "pf_stepper"),
|
||||||
|
m_cr_stepper(*this, "cr_stepper"),
|
||||||
m_eeprom(*this, "eeprom"),
|
m_eeprom(*this, "eeprom"),
|
||||||
m_speaker(*this, "speaker"),
|
m_speaker(*this, "speaker"),
|
||||||
m_e05a30(*this, "e05a30"),
|
m_e05a30(*this, "e05a30"),
|
||||||
@ -339,8 +347,8 @@ static const stepper_interface lx810l_cr_stepper =
|
|||||||
|
|
||||||
void epson_lx810l_t::device_start()
|
void epson_lx810l_t::device_start()
|
||||||
{
|
{
|
||||||
stepper_config(machine(), 0, &lx810l_pf_stepper);
|
m_pf_stepper->configure(&lx810l_pf_stepper);
|
||||||
stepper_config(machine(), 1, &lx810l_cr_stepper);
|
m_cr_stepper->configure(&lx810l_cr_stepper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -515,8 +523,8 @@ WRITE16_MEMBER( epson_lx810l_t::printhead )
|
|||||||
|
|
||||||
WRITE8_MEMBER( epson_lx810l_t::pf_stepper )
|
WRITE8_MEMBER( epson_lx810l_t::pf_stepper )
|
||||||
{
|
{
|
||||||
stepper_update(0, data);
|
m_pf_stepper->update(data);
|
||||||
m_pf_pos_abs = 200 - stepper_get_absolute_position(0);
|
m_pf_pos_abs = 200 - m_pf_stepper->get_absolute_position();
|
||||||
|
|
||||||
LX810LLOG("%s: %s(%02x); abs %d\n", machine().describe_context(), __func__, data, m_pf_pos_abs);
|
LX810LLOG("%s: %s(%02x); abs %d\n", machine().describe_context(), __func__, data, m_pf_pos_abs);
|
||||||
}
|
}
|
||||||
@ -525,8 +533,8 @@ WRITE8_MEMBER( epson_lx810l_t::cr_stepper )
|
|||||||
{
|
{
|
||||||
int m_cr_pos_abs_prev = m_cr_pos_abs;
|
int m_cr_pos_abs_prev = m_cr_pos_abs;
|
||||||
|
|
||||||
stepper_update(1, data);
|
m_cr_stepper->update(data);
|
||||||
m_cr_pos_abs = 200 - stepper_get_absolute_position(1);
|
m_cr_pos_abs = 200 - m_cr_stepper->get_absolute_position();
|
||||||
|
|
||||||
if (m_cr_pos_abs > m_cr_pos_abs_prev) {
|
if (m_cr_pos_abs > m_cr_pos_abs_prev) {
|
||||||
/* going right */
|
/* going right */
|
||||||
|
@ -100,6 +100,8 @@ protected:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
|
required_device<stepper_device> m_pf_stepper;
|
||||||
|
required_device<stepper_device> m_cr_stepper;
|
||||||
required_device<eeprom_serial_93cxx_device> m_eeprom;
|
required_device<eeprom_serial_93cxx_device> m_eeprom;
|
||||||
required_device<speaker_sound_device> m_speaker;
|
required_device<speaker_sound_device> m_speaker;
|
||||||
required_device<e05a30_device> m_e05a30;
|
required_device<e05a30_device> m_e05a30;
|
||||||
|
@ -28,8 +28,6 @@
|
|||||||
// 05-03-2004: Re-Animator //
|
// 05-03-2004: Re-Animator //
|
||||||
// //
|
// //
|
||||||
// TODO: add further types of stepper motors if needed (Konami/IGT?) //
|
// TODO: add further types of stepper motors if needed (Konami/IGT?) //
|
||||||
// Someone who understands the device system may want to convert //
|
|
||||||
// this //
|
|
||||||
// 200 Step reels can alter their relative opto tab position, //
|
// 200 Step reels can alter their relative opto tab position, //
|
||||||
// may be worth adding the phase setting to the interface //
|
// may be worth adding the phase setting to the interface //
|
||||||
// There are reports that some games use a pulse that is too short//
|
// There are reports that some games use a pulse that is too short//
|
||||||
@ -41,34 +39,6 @@
|
|||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
#include "steppers.h"
|
#include "steppers.h"
|
||||||
|
|
||||||
/* local prototypes */
|
|
||||||
|
|
||||||
static void update_optic(int which);
|
|
||||||
|
|
||||||
/* local vars */
|
|
||||||
|
|
||||||
struct stepper
|
|
||||||
{
|
|
||||||
const stepper_interface *intf;
|
|
||||||
UINT8 pattern, /* coil pattern */
|
|
||||||
old_pattern, /* old coil pattern */
|
|
||||||
initphase,
|
|
||||||
phase, /* motor phase */
|
|
||||||
old_phase, /* old phase */
|
|
||||||
type; /* reel type */
|
|
||||||
INT16 step_pos, /* step position 0 - max_steps */
|
|
||||||
max_steps; /* maximum step position */
|
|
||||||
INT32 abs_step_pos; /* absolute step position */
|
|
||||||
|
|
||||||
INT16 index_start, /* start position of index (in half steps) */
|
|
||||||
index_end, /* end position of index (in half steps) */
|
|
||||||
index_patt; /* pattern needed on coils (0=don't care) */
|
|
||||||
|
|
||||||
UINT8 optic;
|
|
||||||
};
|
|
||||||
|
|
||||||
static stepper step[MAX_STEPPERS];
|
|
||||||
|
|
||||||
/* useful interfaces (Starpoint is a very common setup)*/
|
/* useful interfaces (Starpoint is a very common setup)*/
|
||||||
const stepper_interface starpoint_interface_48step =
|
const stepper_interface starpoint_interface_48step =
|
||||||
{
|
{
|
||||||
@ -108,148 +78,123 @@ const stepper_interface ecoin_interface_200step_reel =
|
|||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
void stepper_config(running_machine &machine, int which, const stepper_interface *intf)
|
void stepper_device::configure(const stepper_interface *intf)
|
||||||
{
|
{
|
||||||
assert_always(machine.phase() == MACHINE_PHASE_INIT, "Can only call stepper_config at init time!");
|
assert_always(machine().phase() == MACHINE_PHASE_INIT, "Can only call configure at init time!");
|
||||||
assert_always((which >= 0) && (which < MAX_STEPPERS), "stepper_config called on an invalid stepper motor!");
|
assert_always(intf, "configure called with an invalid interface!");
|
||||||
assert_always(intf, "stepper_config called with an invalid interface!");
|
|
||||||
|
|
||||||
step[which].intf = intf;
|
m_type = intf->type;
|
||||||
|
m_index_start = intf->index_start; /* location of first index value in half steps */
|
||||||
step[which].type = intf->type;
|
m_index_end = intf->index_end; /* location of last index value in half steps */
|
||||||
step[which].index_start = intf->index_start;/* location of first index value in half steps */
|
m_index_patt = intf->index_patt; /* hex value of coil pattern (0 if not needed)*/
|
||||||
step[which].index_end = intf->index_end; /* location of last index value in half steps */
|
m_initphase = intf->initphase; /* Phase at 0 steps, for alignment) */
|
||||||
step[which].index_patt = intf->index_patt; /* hex value of coil pattern (0 if not needed)*/
|
|
||||||
step[which].initphase = intf->initphase; /* Phase at 0 steps, for alignment) */
|
|
||||||
|
|
||||||
|
|
||||||
step[which].pattern = 0;
|
m_pattern = 0;
|
||||||
step[which].old_pattern = 0;
|
m_old_pattern = 0;
|
||||||
step[which].step_pos = 0;
|
m_step_pos = 0;
|
||||||
step[which].abs_step_pos= 0;
|
m_abs_step_pos = 0;
|
||||||
step[which].phase = step[which].initphase;
|
m_phase = m_initphase;
|
||||||
step[which].old_phase = step[which].initphase;
|
m_old_phase = m_initphase;
|
||||||
|
|
||||||
|
|
||||||
switch ( step[which].type )
|
switch ( m_type )
|
||||||
{ default:
|
{ default:
|
||||||
case STARPOINT_48STEP_REEL: /* STARPOINT RMxxx */
|
case STARPOINT_48STEP_REEL: /* STARPOINT RMxxx */
|
||||||
case BARCREST_48STEP_REEL : /* Barcrest Reel unit */
|
case BARCREST_48STEP_REEL : /* Barcrest Reel unit */
|
||||||
case MPU3_48STEP_REEL :
|
case MPU3_48STEP_REEL :
|
||||||
case GAMESMAN_48STEP_REEL : /* Gamesman GMxxxx */
|
case GAMESMAN_48STEP_REEL : /* Gamesman GMxxxx */
|
||||||
case PROJECT_48STEP_REEL :
|
case PROJECT_48STEP_REEL :
|
||||||
step[which].max_steps = (48*2);
|
m_max_steps = (48*2);
|
||||||
break;
|
break;
|
||||||
case GAMESMAN_100STEP_REEL :
|
case GAMESMAN_100STEP_REEL :
|
||||||
step[which].max_steps = (100*2);
|
m_max_steps = (100*2);
|
||||||
break;
|
break;
|
||||||
case STARPOINT_144STEP_DICE :/* STARPOINT 1DCU DICE mechanism */
|
case STARPOINT_144STEP_DICE :/* STARPOINT 1DCU DICE mechanism */
|
||||||
//Dice reels are 48 step motors, but complete three full cycles between opto updates
|
//Dice reels are 48 step motors, but complete three full cycles between opto updates
|
||||||
step[which].max_steps = ((48*3)*2);
|
m_max_steps = ((48*3)*2);
|
||||||
break;
|
break;
|
||||||
case STARPOINT_200STEP_REEL :
|
case STARPOINT_200STEP_REEL :
|
||||||
case GAMESMAN_200STEP_REEL :
|
case GAMESMAN_200STEP_REEL :
|
||||||
case ECOIN_200STEP_REEL :
|
case ECOIN_200STEP_REEL :
|
||||||
step[which].max_steps = (200*2);
|
m_max_steps = (200*2);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
state_save_register_item(machine, "stepper", NULL, which, step[which].index_start);
|
|
||||||
state_save_register_item(machine, "stepper", NULL, which, step[which].index_end);
|
|
||||||
state_save_register_item(machine, "stepper", NULL, which, step[which].index_patt);
|
|
||||||
state_save_register_item(machine, "stepper", NULL, which, step[which].initphase);
|
|
||||||
state_save_register_item(machine, "stepper", NULL, which, step[which].phase);
|
|
||||||
state_save_register_item(machine, "stepper", NULL, which, step[which].old_phase);
|
|
||||||
state_save_register_item(machine, "stepper", NULL, which, step[which].pattern);
|
|
||||||
state_save_register_item(machine, "stepper", NULL, which, step[which].old_pattern);
|
|
||||||
state_save_register_item(machine, "stepper", NULL, which, step[which].step_pos);
|
|
||||||
state_save_register_item(machine, "stepper", NULL, which, step[which].abs_step_pos);
|
|
||||||
state_save_register_item(machine, "stepper", NULL, which, step[which].max_steps);
|
|
||||||
state_save_register_item(machine, "stepper", NULL, which, step[which].type);
|
|
||||||
}
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
|
||||||
int stepper_get_position(int which)
|
|
||||||
{
|
|
||||||
return step[which].step_pos;
|
|
||||||
}
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
|
||||||
int stepper_get_absolute_position(int which)
|
|
||||||
{
|
|
||||||
return step[which].abs_step_pos;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
int stepper_get_max(int which)
|
void stepper_device::update_optic()
|
||||||
{
|
{
|
||||||
return step[which].max_steps;
|
int pos = m_step_pos,
|
||||||
}
|
start = m_index_start,
|
||||||
|
end = m_index_end;
|
||||||
///////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
static void update_optic(int which)
|
|
||||||
{
|
|
||||||
int pos = step[which].step_pos,
|
|
||||||
start = step[which].index_start,
|
|
||||||
end = step[which].index_end;
|
|
||||||
|
|
||||||
if (start > end) // cope with index patterns that wrap around
|
if (start > end) // cope with index patterns that wrap around
|
||||||
{
|
{
|
||||||
if ( (( pos > start ) || ( pos < end )) &&
|
if ( (( pos > start ) || ( pos < end )) &&
|
||||||
( ( step[which].pattern == step[which].index_patt || step[which].index_patt==0) ||
|
( ( m_pattern == m_index_patt || m_index_patt==0) ||
|
||||||
( step[which].pattern == 0 &&
|
( m_pattern == 0 &&
|
||||||
(step[which].old_pattern == step[which].index_patt || step[which].index_patt==0)
|
(m_old_pattern == m_index_patt || m_index_patt==0)
|
||||||
) ) )
|
) ) )
|
||||||
{
|
{
|
||||||
step[which].optic = 1;
|
m_optic = 1;
|
||||||
}
|
}
|
||||||
else step[which].optic = 0;
|
else m_optic = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( (( pos > start ) && ( pos < end )) &&
|
if ( (( pos > start ) && ( pos < end )) &&
|
||||||
( ( step[which].pattern == step[which].index_patt || step[which].index_patt==0) ||
|
( ( m_pattern == m_index_patt || m_index_patt==0) ||
|
||||||
( step[which].pattern == 0 &&
|
( m_pattern == 0 &&
|
||||||
(step[which].old_pattern == step[which].index_patt || step[which].index_patt==0)
|
(m_old_pattern == m_index_patt || m_index_patt==0)
|
||||||
) ) )
|
) ) )
|
||||||
{
|
{
|
||||||
step[which].optic = 1;
|
m_optic = 1;
|
||||||
}
|
}
|
||||||
else step[which].optic = 0;
|
else m_optic = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_optic_cb(m_optic);
|
||||||
}
|
}
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
void stepper_reset_position(int which)
|
void stepper_device::device_start()
|
||||||
{
|
{
|
||||||
step[which].step_pos = 0x00;
|
/* resolve callbacks */
|
||||||
step[which].abs_step_pos= 0x00;
|
m_optic_cb.resolve_safe();
|
||||||
step[which].pattern = 0x00;
|
|
||||||
step[which].old_pattern = 0x00;
|
/* register for state saving */
|
||||||
step[which].phase = step[which].initphase;
|
save_item(NAME(m_index_start));
|
||||||
step[which].old_phase = step[which].initphase;
|
save_item(NAME(m_index_end));
|
||||||
update_optic(which);
|
save_item(NAME(m_index_patt));
|
||||||
|
save_item(NAME(m_initphase));
|
||||||
|
save_item(NAME(m_phase));
|
||||||
|
save_item(NAME(m_old_phase));
|
||||||
|
save_item(NAME(m_pattern));
|
||||||
|
save_item(NAME(m_old_pattern));
|
||||||
|
save_item(NAME(m_step_pos));
|
||||||
|
save_item(NAME(m_abs_step_pos));
|
||||||
|
save_item(NAME(m_max_steps));
|
||||||
|
save_item(NAME(m_type));
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
int stepper_optic_state(int which)
|
void stepper_device::device_reset()
|
||||||
{
|
{
|
||||||
int result = 0;
|
m_step_pos = 0x00;
|
||||||
|
m_abs_step_pos = 0x00;
|
||||||
if ( which < MAX_STEPPERS )
|
m_pattern = 0x00;
|
||||||
{
|
m_old_pattern = 0x00;
|
||||||
result = step[which].optic;
|
m_phase = m_initphase;
|
||||||
}
|
m_old_phase = m_initphase;
|
||||||
|
update_optic();
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
int stepper_update(int which, UINT8 pattern)
|
int stepper_device::update(UINT8 pattern)
|
||||||
{
|
{
|
||||||
int changed = 0;
|
int changed = 0;
|
||||||
|
|
||||||
@ -271,11 +216,11 @@ int stepper_update(int which, UINT8 pattern)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
int pos,steps=0;
|
int pos,steps=0;
|
||||||
step[which].pattern = pattern;
|
m_pattern = pattern;
|
||||||
switch ( step[which].type )
|
switch ( m_type )
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
logerror("No reel type specified for %x!\n",which);
|
logerror("No reel type specified!\n");
|
||||||
break;
|
break;
|
||||||
case STARPOINT_48STEP_REEL : /* STARPOINT RMxxx */
|
case STARPOINT_48STEP_REEL : /* STARPOINT RMxxx */
|
||||||
case GAMESMAN_200STEP_REEL : /* Gamesman GMxxxx */
|
case GAMESMAN_200STEP_REEL : /* Gamesman GMxxxx */
|
||||||
@ -287,51 +232,51 @@ int stepper_update(int which, UINT8 pattern)
|
|||||||
switch (pattern)
|
switch (pattern)
|
||||||
{ //Black Blue Red Yellow
|
{ //Black Blue Red Yellow
|
||||||
case 0x02:// 0 0 1 0
|
case 0x02:// 0 0 1 0
|
||||||
step[which].phase = 7;
|
m_phase = 7;
|
||||||
break;
|
break;
|
||||||
case 0x06:// 0 1 1 0
|
case 0x06:// 0 1 1 0
|
||||||
step[which].phase = 6;
|
m_phase = 6;
|
||||||
break;
|
break;
|
||||||
case 0x04:// 0 1 0 0
|
case 0x04:// 0 1 0 0
|
||||||
step[which].phase = 5;
|
m_phase = 5;
|
||||||
break;
|
break;
|
||||||
case 0x05:// 0 1 0 1
|
case 0x05:// 0 1 0 1
|
||||||
step[which].phase = 4;
|
m_phase = 4;
|
||||||
break;
|
break;
|
||||||
case 0x01:// 0 0 0 1
|
case 0x01:// 0 0 0 1
|
||||||
step[which].phase = 3;
|
m_phase = 3;
|
||||||
break;
|
break;
|
||||||
case 0x09:// 1 0 0 1
|
case 0x09:// 1 0 0 1
|
||||||
step[which].phase = 2;
|
m_phase = 2;
|
||||||
break;
|
break;
|
||||||
case 0x08:// 1 0 0 0
|
case 0x08:// 1 0 0 0
|
||||||
step[which].phase = 1;
|
m_phase = 1;
|
||||||
break;
|
break;
|
||||||
case 0x0A:// 1 0 1 0
|
case 0x0A:// 1 0 1 0
|
||||||
step[which].phase = 0;
|
m_phase = 0;
|
||||||
break;
|
break;
|
||||||
// Black Blue Red Yellow
|
// Black Blue Red Yellow
|
||||||
case 0x03:// 0 0 1 1
|
case 0x03:// 0 0 1 1
|
||||||
{
|
{
|
||||||
if ((step[which].old_phase ==6)||(step[which].old_phase == 0)) // if the previous pattern had the drum in the northern quadrant, it will point north now
|
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
|
||||||
{
|
{
|
||||||
step[which].phase = 7;
|
m_phase = 7;
|
||||||
}
|
}
|
||||||
else //otherwise it will line up due south
|
else //otherwise it will line up due south
|
||||||
{
|
{
|
||||||
step[which].phase = 3;
|
m_phase = 3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 0x0C:// 1 1 0 0
|
case 0x0C:// 1 1 0 0
|
||||||
{
|
{
|
||||||
if ((step[which].old_phase ==6)||(step[which].old_phase == 4)) // if the previous pattern had the drum in the eastern quadrant, it will point east now
|
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
|
||||||
{
|
{
|
||||||
step[which].phase = 5;
|
m_phase = 5;
|
||||||
}
|
}
|
||||||
else //otherwise it will line up due west
|
else //otherwise it will line up due west
|
||||||
{
|
{
|
||||||
step[which].phase = 1;
|
m_phase = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -347,54 +292,54 @@ int stepper_update(int which, UINT8 pattern)
|
|||||||
{
|
{
|
||||||
// Yellow Brown Orange Black
|
// Yellow Brown Orange Black
|
||||||
case 0x01:// 0 0 0 1
|
case 0x01:// 0 0 0 1
|
||||||
step[which].phase = 7;
|
m_phase = 7;
|
||||||
break;
|
break;
|
||||||
case 0x03:// 0 0 1 1
|
case 0x03:// 0 0 1 1
|
||||||
step[which].phase = 6;
|
m_phase = 6;
|
||||||
break;
|
break;
|
||||||
case 0x02:// 0 0 1 0
|
case 0x02:// 0 0 1 0
|
||||||
step[which].phase = 5;
|
m_phase = 5;
|
||||||
break;
|
break;
|
||||||
case 0x06:// 0 1 1 0
|
case 0x06:// 0 1 1 0
|
||||||
step[which].phase = 4;
|
m_phase = 4;
|
||||||
break;
|
break;
|
||||||
case 0x04:// 0 1 0 0
|
case 0x04:// 0 1 0 0
|
||||||
step[which].phase = 3;
|
m_phase = 3;
|
||||||
break;
|
break;
|
||||||
case 0x0C:// 1 1 0 0
|
case 0x0C:// 1 1 0 0
|
||||||
step[which].phase = 2;
|
m_phase = 2;
|
||||||
break;
|
break;
|
||||||
case 0x08:// 1 0 0 0
|
case 0x08:// 1 0 0 0
|
||||||
step[which].phase = 1;
|
m_phase = 1;
|
||||||
break;//YOLB
|
break;//YOLB
|
||||||
case 0x09:// 1 0 0 1
|
case 0x09:// 1 0 0 1
|
||||||
step[which].phase = 0;
|
m_phase = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// The below values should not be used by anything sane, as they effectively ignore one stator side entirely
|
// The below values should not be used by anything sane, as they effectively ignore one stator side entirely
|
||||||
// Yellow Brown Orange Black
|
// Yellow Brown Orange Black
|
||||||
case 0x05:// 0 1 0 1
|
case 0x05:// 0 1 0 1
|
||||||
{
|
{
|
||||||
if ((step[which].old_phase ==6)||(step[which].old_phase == 0)) // if the previous pattern had the drum in the northern quadrant, it will point north now
|
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
|
||||||
{
|
{
|
||||||
step[which].phase = 7;
|
m_phase = 7;
|
||||||
}
|
}
|
||||||
else //otherwise it will line up due south
|
else //otherwise it will line up due south
|
||||||
{
|
{
|
||||||
step[which].phase = 3;
|
m_phase = 3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x0A:// 1 0 1 0
|
case 0x0A:// 1 0 1 0
|
||||||
{
|
{
|
||||||
if ((step[which].old_phase ==6)||(step[which].old_phase == 4)) // if the previous pattern had the drum in the eastern quadrant, it will point east now
|
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
|
||||||
{
|
{
|
||||||
step[which].phase = 5;
|
m_phase = 5;
|
||||||
}
|
}
|
||||||
else //otherwise it will line up due west
|
else //otherwise it will line up due west
|
||||||
{
|
{
|
||||||
step[which].phase = 1;
|
m_phase = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -410,16 +355,16 @@ int stepper_update(int which, UINT8 pattern)
|
|||||||
{
|
{
|
||||||
// Yellow(2) Brown(1) Orange(!2) Black(!1)
|
// Yellow(2) Brown(1) Orange(!2) Black(!1)
|
||||||
case 0x00 :// 0 0 1 1
|
case 0x00 :// 0 0 1 1
|
||||||
step[which].phase = 6;
|
m_phase = 6;
|
||||||
break;
|
break;
|
||||||
case 0x01 :// 0 1 1 0
|
case 0x01 :// 0 1 1 0
|
||||||
step[which].phase = 4;
|
m_phase = 4;
|
||||||
break;
|
break;
|
||||||
case 0x03 :// 1 1 0 0
|
case 0x03 :// 1 1 0 0
|
||||||
step[which].phase = 2;
|
m_phase = 2;
|
||||||
break;
|
break;
|
||||||
case 0x02 :// 1 0 0 1
|
case 0x02 :// 1 0 0 1
|
||||||
step[which].phase = 0;
|
m_phase = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -431,50 +376,50 @@ int stepper_update(int which, UINT8 pattern)
|
|||||||
switch (pattern)
|
switch (pattern)
|
||||||
{
|
{
|
||||||
case 0x08:// 0 0 1 0
|
case 0x08:// 0 0 1 0
|
||||||
step[which].phase = 7;
|
m_phase = 7;
|
||||||
break;
|
break;
|
||||||
case 0x0c:// 0 1 1 0
|
case 0x0c:// 0 1 1 0
|
||||||
step[which].phase = 6;
|
m_phase = 6;
|
||||||
break;
|
break;
|
||||||
case 0x04:// 0 1 0 0
|
case 0x04:// 0 1 0 0
|
||||||
step[which].phase = 5;
|
m_phase = 5;
|
||||||
break;
|
break;
|
||||||
case 0x06:// 0 1 0 1
|
case 0x06:// 0 1 0 1
|
||||||
step[which].phase = 4;
|
m_phase = 4;
|
||||||
break;
|
break;
|
||||||
case 0x02:// 0 0 0 1
|
case 0x02:// 0 0 0 1
|
||||||
step[which].phase = 3;
|
m_phase = 3;
|
||||||
break;
|
break;
|
||||||
case 0x03:// 1 0 0 1
|
case 0x03:// 1 0 0 1
|
||||||
step[which].phase = 2;
|
m_phase = 2;
|
||||||
break;
|
break;
|
||||||
case 0x01:// 1 0 0 0
|
case 0x01:// 1 0 0 0
|
||||||
step[which].phase = 1;
|
m_phase = 1;
|
||||||
break;
|
break;
|
||||||
case 0x09:// 1 0 1 0
|
case 0x09:// 1 0 1 0
|
||||||
step[which].phase = 0;
|
m_phase = 0;
|
||||||
break;
|
break;
|
||||||
case 0x0a:// 0 0 1 1
|
case 0x0a:// 0 0 1 1
|
||||||
{
|
{
|
||||||
if ((step[which].old_phase ==6)||(step[which].old_phase == 0)) // if the previous pattern had the drum in the northern quadrant, it will point north now
|
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
|
||||||
{
|
{
|
||||||
step[which].phase = 7;
|
m_phase = 7;
|
||||||
}
|
}
|
||||||
else //otherwise it will line up due south
|
else //otherwise it will line up due south
|
||||||
{
|
{
|
||||||
step[which].phase = 3;
|
m_phase = 3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 0x07:// 1 1 0 0
|
case 0x07:// 1 1 0 0
|
||||||
{
|
{
|
||||||
if ((step[which].old_phase ==6)||(step[which].old_phase == 4)) // if the previous pattern had the drum in the eastern quadrant, it will point east now
|
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
|
||||||
{
|
{
|
||||||
step[which].phase = 5;
|
m_phase = 5;
|
||||||
}
|
}
|
||||||
else //otherwise it will line up due west
|
else //otherwise it will line up due west
|
||||||
{
|
{
|
||||||
step[which].phase = 1;
|
m_phase = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -488,50 +433,50 @@ int stepper_update(int which, UINT8 pattern)
|
|||||||
switch (pattern)
|
switch (pattern)
|
||||||
{
|
{
|
||||||
case 0x08:// 0 0 1 0
|
case 0x08:// 0 0 1 0
|
||||||
step[which].phase = 7;
|
m_phase = 7;
|
||||||
break;
|
break;
|
||||||
case 0x0c:// 0 1 1 0
|
case 0x0c:// 0 1 1 0
|
||||||
step[which].phase = 6;
|
m_phase = 6;
|
||||||
break;
|
break;
|
||||||
case 0x04:// 0 1 0 0
|
case 0x04:// 0 1 0 0
|
||||||
step[which].phase = 5;
|
m_phase = 5;
|
||||||
break;
|
break;
|
||||||
case 0x05:// 0 1 0 1
|
case 0x05:// 0 1 0 1
|
||||||
step[which].phase = 4;
|
m_phase = 4;
|
||||||
break;
|
break;
|
||||||
case 0x01:// 0 0 0 1
|
case 0x01:// 0 0 0 1
|
||||||
step[which].phase = 3;
|
m_phase = 3;
|
||||||
break;
|
break;
|
||||||
case 0x03:// 1 0 0 1
|
case 0x03:// 1 0 0 1
|
||||||
step[which].phase = 2;
|
m_phase = 2;
|
||||||
break;
|
break;
|
||||||
case 0x02:// 1 0 0 0
|
case 0x02:// 1 0 0 0
|
||||||
step[which].phase = 1;
|
m_phase = 1;
|
||||||
break;
|
break;
|
||||||
case 0x0a:// 1 0 1 0
|
case 0x0a:// 1 0 1 0
|
||||||
step[which].phase = 0;
|
m_phase = 0;
|
||||||
break;
|
break;
|
||||||
case 0x09:// 0 0 1 1
|
case 0x09:// 0 0 1 1
|
||||||
{
|
{
|
||||||
if ((step[which].old_phase ==6)||(step[which].old_phase == 0)) // if the previous pattern had the drum in the northern quadrant, it will point north now
|
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
|
||||||
{
|
{
|
||||||
step[which].phase = 7;
|
m_phase = 7;
|
||||||
}
|
}
|
||||||
else //otherwise it will line up due south
|
else //otherwise it will line up due south
|
||||||
{
|
{
|
||||||
step[which].phase = 3;
|
m_phase = 3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 0x06:// 1 1 0 0
|
case 0x06:// 1 1 0 0
|
||||||
{
|
{
|
||||||
if ((step[which].old_phase ==6)||(step[which].old_phase == 4)) // if the previous pattern had the drum in the eastern quadrant, it will point east now
|
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
|
||||||
{
|
{
|
||||||
step[which].phase = 5;
|
m_phase = 5;
|
||||||
}
|
}
|
||||||
else //otherwise it will line up due west
|
else //otherwise it will line up due west
|
||||||
{
|
{
|
||||||
step[which].phase = 1;
|
m_phase = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -542,7 +487,7 @@ int stepper_update(int which, UINT8 pattern)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
steps = step[which].old_phase - step[which].phase;
|
steps = m_old_phase - m_phase;
|
||||||
|
|
||||||
if (steps < -4)
|
if (steps < -4)
|
||||||
{
|
{
|
||||||
@ -553,29 +498,25 @@ int stepper_update(int which, UINT8 pattern)
|
|||||||
steps = steps -8;
|
steps = steps -8;
|
||||||
}
|
}
|
||||||
|
|
||||||
step[which].old_phase = step[which].phase;
|
m_old_phase = m_phase;
|
||||||
step[which].old_pattern = step[which].pattern;
|
m_old_pattern = m_pattern;
|
||||||
|
|
||||||
int max = step[which].max_steps;
|
int max = m_max_steps;
|
||||||
pos = 0;
|
pos = 0;
|
||||||
|
|
||||||
if (max!=0)
|
if (max!=0)
|
||||||
{
|
{
|
||||||
step[which].abs_step_pos += steps;
|
m_abs_step_pos += steps;
|
||||||
pos = (step[which].step_pos + steps + max) % max;
|
pos = (m_step_pos + steps + max) % max;
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
logerror("step[%x].max_steps == 0\n",which);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pos != step[which].step_pos)
|
if (pos != m_step_pos)
|
||||||
{
|
{
|
||||||
changed++;
|
changed++;
|
||||||
}
|
}
|
||||||
|
|
||||||
step[which].step_pos = pos;
|
m_step_pos = pos;
|
||||||
update_optic(which);
|
update_optic();
|
||||||
|
|
||||||
return changed;
|
return changed;
|
||||||
}
|
}
|
||||||
|
@ -7,8 +7,6 @@
|
|||||||
// //
|
// //
|
||||||
// //
|
// //
|
||||||
// TODO: add further types of stepper motors if needed (Konami/IGT?) //
|
// TODO: add further types of stepper motors if needed (Konami/IGT?) //
|
||||||
// Someone who understands the device system may want to convert //
|
|
||||||
// this //
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
@ -49,17 +47,57 @@ extern const stepper_interface starpointrm20_interface_48step;
|
|||||||
extern const stepper_interface starpoint_interface_200step_reel;
|
extern const stepper_interface starpoint_interface_200step_reel;
|
||||||
extern const stepper_interface ecoin_interface_200step_reel;
|
extern const stepper_interface ecoin_interface_200step_reel;
|
||||||
|
|
||||||
void stepper_config(running_machine &machine, int which, const stepper_interface *intf);
|
|
||||||
|
|
||||||
void stepper_reset_position(int id); /* reset a motor to position 0 */
|
#define MCFG_STEPPER_OPTIC_CALLBACK(_write) \
|
||||||
|
devcb = &stepper_device::set_optic_handler(*device, DEVCB_##_write);
|
||||||
|
|
||||||
int stepper_optic_state( int id); /* read a motor's optics */
|
class stepper_device;
|
||||||
|
const device_type STEPPER = &device_creator<stepper_device>;
|
||||||
|
|
||||||
int stepper_update(int id, UINT8 pattern); /* update a motor */
|
class stepper_device : public device_t
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
stepper_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||||
|
: device_t(mconfig, STEPPER, "Stepper Motor", tag, owner, clock, "stepper", __FILE__),
|
||||||
|
m_optic_cb(*this)
|
||||||
|
{ }
|
||||||
|
|
||||||
int stepper_get_position(int id); /* get current position in half steps */
|
template<class _Object> static devcb_base &set_optic_handler(device_t &device, _Object object) { return downcast<stepper_device &>(device).m_optic_cb.set_callback(object); }
|
||||||
|
|
||||||
int stepper_get_absolute_position(int id); /* get current absolute position in half steps */
|
void configure(const stepper_interface *intf);
|
||||||
|
|
||||||
|
/* update a motor */
|
||||||
|
int update(UINT8 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();
|
||||||
|
virtual void device_reset();
|
||||||
|
|
||||||
|
private:
|
||||||
|
UINT8 m_pattern; /* coil pattern */
|
||||||
|
UINT8 m_old_pattern; /* old coil pattern */
|
||||||
|
UINT8 m_initphase;
|
||||||
|
UINT8 m_phase; /* motor phase */
|
||||||
|
UINT8 m_old_phase; /* old phase */
|
||||||
|
UINT8 m_type; /* reel type */
|
||||||
|
INT16 m_step_pos; /* step position 0 - max_steps */
|
||||||
|
INT16 m_max_steps; /* maximum step position */
|
||||||
|
INT32 m_abs_step_pos; /* absolute step position */
|
||||||
|
INT16 m_index_start; /* start position of index (in half steps) */
|
||||||
|
INT16 m_index_end; /* end position of index (in half steps) */
|
||||||
|
INT16 m_index_patt; /* pattern needed on coils (0=don't care) */
|
||||||
|
UINT8 m_optic;
|
||||||
|
|
||||||
|
void update_optic();
|
||||||
|
devcb_write_line m_optic_cb;
|
||||||
|
};
|
||||||
|
|
||||||
int stepper_get_max(int id); /* get maximum position in half steps */
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -38,6 +38,10 @@ public:
|
|||||||
aces1_state(const machine_config &mconfig, device_type type, const char *tag)
|
aces1_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
: driver_device(mconfig, type, tag),
|
: driver_device(mconfig, type, tag),
|
||||||
m_maincpu(*this, "maincpu"),
|
m_maincpu(*this, "maincpu"),
|
||||||
|
m_reel0(*this, "reel0"),
|
||||||
|
m_reel1(*this, "reel1"),
|
||||||
|
m_reel2(*this, "reel2"),
|
||||||
|
m_reel3(*this, "reel3"),
|
||||||
m_io1_port(*this, "IO1"),
|
m_io1_port(*this, "IO1"),
|
||||||
m_io2_port(*this, "IO2"),
|
m_io2_port(*this, "IO2"),
|
||||||
m_io3_port(*this, "IO3"),
|
m_io3_port(*this, "IO3"),
|
||||||
@ -53,6 +57,11 @@ public:
|
|||||||
int m_reel_clock[4];
|
int m_reel_clock[4];
|
||||||
int m_reel_phase[4];
|
int m_reel_phase[4];
|
||||||
int m_reel_count[4];
|
int m_reel_count[4];
|
||||||
|
int m_optic_pattern;
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel0_optic_cb) { if (state) m_optic_pattern |= 0x01; else m_optic_pattern &= ~0x01; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel1_optic_cb) { if (state) m_optic_pattern |= 0x02; else m_optic_pattern &= ~0x02; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel2_optic_cb) { if (state) m_optic_pattern |= 0x04; else m_optic_pattern &= ~0x04; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel3_optic_cb) { if (state) m_optic_pattern |= 0x08; else m_optic_pattern &= ~0x08; }
|
||||||
|
|
||||||
DECLARE_READ8_MEMBER( aces1_unk_r )
|
DECLARE_READ8_MEMBER( aces1_unk_r )
|
||||||
{
|
{
|
||||||
@ -148,7 +157,13 @@ public:
|
|||||||
{
|
{
|
||||||
int sense = ((data & (4 + (1<<reel))) ? -2:2);
|
int sense = ((data & (4 + (1<<reel))) ? -2:2);
|
||||||
m_reel_phase[reel] = ((m_reel_phase[reel] + sense + 8) % 8);
|
m_reel_phase[reel] = ((m_reel_phase[reel] + sense + 8) % 8);
|
||||||
stepper_update(reel, phases[m_reel_phase[reel]]);
|
switch (reel)
|
||||||
|
{
|
||||||
|
case 0: m_reel0->update(phases[m_reel_phase[reel]]); break;
|
||||||
|
case 1: m_reel1->update(phases[m_reel_phase[reel]]); break;
|
||||||
|
case 2: m_reel2->update(phases[m_reel_phase[reel]]); break;
|
||||||
|
case 3: m_reel3->update(phases[m_reel_phase[reel]]); break;
|
||||||
|
}
|
||||||
m_reel_clock[reel] = clock;
|
m_reel_clock[reel] = clock;
|
||||||
if ( m_reel_phase[reel] % 4 ==0)
|
if ( m_reel_phase[reel] % 4 ==0)
|
||||||
{
|
{
|
||||||
@ -187,19 +202,21 @@ public:
|
|||||||
|
|
||||||
DECLARE_READ8_MEMBER( ic37_read_c )
|
DECLARE_READ8_MEMBER( ic37_read_c )
|
||||||
{
|
{
|
||||||
int pattern =0;
|
|
||||||
int action =0;
|
int action =0;
|
||||||
for (int reel = 0; reel < 4; reel++)
|
for (int reel = 0; reel < 4; reel++)
|
||||||
{
|
{
|
||||||
if (stepper_optic_state(reel)) pattern |= 1<<reel;
|
|
||||||
if (m_reel_count[reel]) action |= 1<<reel;
|
if (m_reel_count[reel]) action |= 1<<reel;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ((pattern << 4) | action);
|
return ((m_optic_pattern << 4) | action);
|
||||||
}
|
}
|
||||||
|
|
||||||
// devices
|
// devices
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
|
required_device<stepper_device> m_reel0;
|
||||||
|
required_device<stepper_device> m_reel1;
|
||||||
|
required_device<stepper_device> m_reel2;
|
||||||
|
required_device<stepper_device> m_reel3;
|
||||||
required_ioport m_io1_port;
|
required_ioport m_io1_port;
|
||||||
required_ioport m_io2_port;
|
required_ioport m_io2_port;
|
||||||
required_ioport m_io3_port;
|
required_ioport m_io3_port;
|
||||||
@ -236,10 +253,10 @@ TIMER_CALLBACK_MEMBER(aces1_state::m_aces1_nmi_timer_callback)
|
|||||||
|
|
||||||
void aces1_state::machine_start()
|
void aces1_state::machine_start()
|
||||||
{
|
{
|
||||||
stepper_config(machine(), 0, &starpoint_interface_48step);
|
m_reel0->configure(&starpoint_interface_48step);
|
||||||
stepper_config(machine(), 1, &starpoint_interface_48step);
|
m_reel1->configure(&starpoint_interface_48step);
|
||||||
stepper_config(machine(), 2, &starpoint_interface_48step);
|
m_reel2->configure(&starpoint_interface_48step);
|
||||||
stepper_config(machine(), 3, &starpoint_interface_48step);
|
m_reel3->configure(&starpoint_interface_48step);
|
||||||
|
|
||||||
for (int reel=0; reel <4; reel++)
|
for (int reel=0; reel <4; reel++)
|
||||||
{
|
{
|
||||||
@ -452,6 +469,16 @@ static MACHINE_CONFIG_START( aces1, aces1_state )
|
|||||||
MCFG_AY8910_PORT_A_READ_CB(IOPORT("DSWA"))
|
MCFG_AY8910_PORT_A_READ_CB(IOPORT("DSWA"))
|
||||||
MCFG_AY8910_PORT_B_READ_CB(IOPORT("DSWB"))
|
MCFG_AY8910_PORT_B_READ_CB(IOPORT("DSWB"))
|
||||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
|
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
|
||||||
|
|
||||||
|
/* steppers */
|
||||||
|
MCFG_DEVICE_ADD("reel0", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(aces1_state, reel0_optic_cb))
|
||||||
|
MCFG_DEVICE_ADD("reel1", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(aces1_state, reel1_optic_cb))
|
||||||
|
MCFG_DEVICE_ADD("reel2", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(aces1_state, reel2_optic_cb))
|
||||||
|
MCFG_DEVICE_ADD("reel3", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(aces1_state, reel3_optic_cb))
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
|
||||||
|
@ -111,6 +111,12 @@ public:
|
|||||||
: driver_device(mconfig, type, tag),
|
: driver_device(mconfig, type, tag),
|
||||||
m_vfd0(*this, "vfd0"),
|
m_vfd0(*this, "vfd0"),
|
||||||
m_maincpu(*this, "maincpu"),
|
m_maincpu(*this, "maincpu"),
|
||||||
|
m_reel0(*this, "reel0"),
|
||||||
|
m_reel1(*this, "reel1"),
|
||||||
|
m_reel2(*this, "reel2"),
|
||||||
|
m_reel3(*this, "reel3"),
|
||||||
|
m_reel4(*this, "reel4"),
|
||||||
|
m_reel5(*this, "reel5"),
|
||||||
m_upd7759(*this, "upd") { }
|
m_upd7759(*this, "upd") { }
|
||||||
|
|
||||||
optional_device<bfm_bd1_t> m_vfd0;
|
optional_device<bfm_bd1_t> m_vfd0;
|
||||||
@ -120,6 +126,12 @@ public:
|
|||||||
int m_vfd_latch;
|
int m_vfd_latch;
|
||||||
int m_irq_status;
|
int m_irq_status;
|
||||||
int m_optic_pattern;
|
int m_optic_pattern;
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel0_optic_cb) { if (state) m_optic_pattern |= 0x01; else m_optic_pattern &= ~0x01; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel1_optic_cb) { if (state) m_optic_pattern |= 0x02; else m_optic_pattern &= ~0x02; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel2_optic_cb) { if (state) m_optic_pattern |= 0x04; else m_optic_pattern &= ~0x04; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel3_optic_cb) { if (state) m_optic_pattern |= 0x08; else m_optic_pattern &= ~0x08; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel4_optic_cb) { if (state) m_optic_pattern |= 0x10; else m_optic_pattern &= ~0x10; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel5_optic_cb) { if (state) m_optic_pattern |= 0x20; else m_optic_pattern &= ~0x20; }
|
||||||
int m_acia_status;
|
int m_acia_status;
|
||||||
int m_locked;
|
int m_locked;
|
||||||
int m_is_timer_enabled;
|
int m_is_timer_enabled;
|
||||||
@ -181,6 +193,12 @@ public:
|
|||||||
int Scorpion1_GetSwitchState(int strobe, int data);
|
int Scorpion1_GetSwitchState(int strobe, int data);
|
||||||
int sc1_find_project_string( );
|
int sc1_find_project_string( );
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
|
required_device<stepper_device> m_reel0;
|
||||||
|
required_device<stepper_device> m_reel1;
|
||||||
|
required_device<stepper_device> m_reel2;
|
||||||
|
required_device<stepper_device> m_reel3;
|
||||||
|
required_device<stepper_device> m_reel4;
|
||||||
|
required_device<stepper_device> m_reel5;
|
||||||
optional_device<upd7759_device> m_upd7759;
|
optional_device<upd7759_device> m_upd7759;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -251,16 +269,11 @@ WRITE8_MEMBER(bfm_sc1_state::reel12_w)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
stepper_update(0, (data>>4)&0x0f);
|
m_reel0->update((data>>4)&0x0f);
|
||||||
stepper_update(1, data&0x0f );
|
m_reel1->update( data &0x0f);
|
||||||
|
|
||||||
if ( stepper_optic_state(0) ) m_optic_pattern |= 0x01;
|
|
||||||
else m_optic_pattern &= ~0x01;
|
|
||||||
if ( stepper_optic_state(1) ) m_optic_pattern |= 0x02;
|
|
||||||
else m_optic_pattern &= ~0x02;
|
|
||||||
}
|
}
|
||||||
awp_draw_reel(0);
|
awp_draw_reel(0, m_reel0);
|
||||||
awp_draw_reel(1);
|
awp_draw_reel(1, m_reel1);
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
@ -273,31 +286,22 @@ WRITE8_MEMBER(bfm_sc1_state::reel34_w)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
stepper_update(2, (data>>4)&0x0f);
|
m_reel2->update((data>>4)&0x0f);
|
||||||
stepper_update(3, data&0x0f );
|
m_reel3->update( data &0x0f);
|
||||||
|
|
||||||
if ( stepper_optic_state(2) ) m_optic_pattern |= 0x04;
|
|
||||||
else m_optic_pattern &= ~0x04;
|
|
||||||
if ( stepper_optic_state(3) ) m_optic_pattern |= 0x08;
|
|
||||||
else m_optic_pattern &= ~0x08;
|
|
||||||
}
|
}
|
||||||
awp_draw_reel(2);
|
awp_draw_reel(2, m_reel2);
|
||||||
awp_draw_reel(3);
|
awp_draw_reel(3, m_reel3);
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
WRITE8_MEMBER(bfm_sc1_state::reel56_w)
|
WRITE8_MEMBER(bfm_sc1_state::reel56_w)
|
||||||
{
|
{
|
||||||
stepper_update(4, (data>>4)&0x0f);
|
m_reel4->update((data>>4)&0x0f);
|
||||||
stepper_update(5, data&0x0f );
|
m_reel5->update( data &0x0f);
|
||||||
|
|
||||||
if ( stepper_optic_state(4) ) m_optic_pattern |= 0x10;
|
awp_draw_reel(4, m_reel4);
|
||||||
else m_optic_pattern &= ~0x10;
|
awp_draw_reel(5, m_reel5);
|
||||||
if ( stepper_optic_state(5) ) m_optic_pattern |= 0x20;
|
|
||||||
else m_optic_pattern &= ~0x20;
|
|
||||||
awp_draw_reel(5);
|
|
||||||
awp_draw_reel(6);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
@ -612,20 +616,6 @@ void bfm_sc1_state::machine_reset()
|
|||||||
|
|
||||||
m_vfd0->reset();
|
m_vfd0->reset();
|
||||||
|
|
||||||
// reset stepper motors /////////////////////////////////////////////////////////////
|
|
||||||
{
|
|
||||||
int pattern =0, i;
|
|
||||||
|
|
||||||
for ( i = 0; i < 6; i++)
|
|
||||||
{
|
|
||||||
stepper_reset_position(i);
|
|
||||||
if ( stepper_optic_state(i) ) pattern |= 1<<i;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_optic_pattern = pattern;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
m_acia_status = 0x02; // MC6850 transmit buffer empty !!!
|
m_acia_status = 0x02; // MC6850 transmit buffer empty !!!
|
||||||
m_locked = 0x07; // hardware is locked
|
m_locked = 0x07; // hardware is locked
|
||||||
|
|
||||||
@ -1061,6 +1051,19 @@ static MACHINE_CONFIG_START( scorpion1, bfm_sc1_state )
|
|||||||
|
|
||||||
MCFG_NVRAM_ADD_0FILL("nvram")
|
MCFG_NVRAM_ADD_0FILL("nvram")
|
||||||
MCFG_DEFAULT_LAYOUT(layout_sc1_vfd)
|
MCFG_DEFAULT_LAYOUT(layout_sc1_vfd)
|
||||||
|
|
||||||
|
MCFG_DEVICE_ADD("reel0", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(bfm_sc1_state, reel0_optic_cb))
|
||||||
|
MCFG_DEVICE_ADD("reel1", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(bfm_sc1_state, reel1_optic_cb))
|
||||||
|
MCFG_DEVICE_ADD("reel2", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(bfm_sc1_state, reel2_optic_cb))
|
||||||
|
MCFG_DEVICE_ADD("reel3", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(bfm_sc1_state, reel3_optic_cb))
|
||||||
|
MCFG_DEVICE_ADD("reel4", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(bfm_sc1_state, reel4_optic_cb))
|
||||||
|
MCFG_DEVICE_ADD("reel5", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(bfm_sc1_state, reel5_optic_cb))
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////
|
||||||
@ -1092,14 +1095,17 @@ MACHINE_CONFIG_END
|
|||||||
|
|
||||||
void bfm_sc1_state::sc1_common_init(int reels, int decrypt, int defaultbank)
|
void bfm_sc1_state::sc1_common_init(int reels, int decrypt, int defaultbank)
|
||||||
{
|
{
|
||||||
UINT8 i;
|
|
||||||
|
|
||||||
memset(m_sc1_Inputs, 0, sizeof(m_sc1_Inputs));
|
memset(m_sc1_Inputs, 0, sizeof(m_sc1_Inputs));
|
||||||
|
|
||||||
// setup n default 96 half step reels ///////////////////////////////////////////
|
// setup n default 96 half step reels ///////////////////////////////////////////
|
||||||
for ( i = 0; i < reels; i++ )
|
switch (reels)
|
||||||
{
|
{
|
||||||
stepper_config(machine(), i, &starpoint_interface_48step);
|
case 6: m_reel5->configure(&starpoint_interface_48step);
|
||||||
|
case 5: m_reel4->configure(&starpoint_interface_48step);
|
||||||
|
case 4: m_reel3->configure(&starpoint_interface_48step);
|
||||||
|
case 3: m_reel2->configure(&starpoint_interface_48step);
|
||||||
|
case 2: m_reel1->configure(&starpoint_interface_48step);
|
||||||
|
case 1: m_reel0->configure(&starpoint_interface_48step);
|
||||||
}
|
}
|
||||||
if (decrypt) bfm_decode_mainrom(machine(),"maincpu", m_codec_data); // decode main rom
|
if (decrypt) bfm_decode_mainrom(machine(),"maincpu", m_codec_data); // decode main rom
|
||||||
|
|
||||||
|
@ -181,12 +181,24 @@ public:
|
|||||||
bfm_sc2_state(const machine_config &mconfig, device_type type, const char *tag)
|
bfm_sc2_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
: driver_device(mconfig, type, tag),
|
: driver_device(mconfig, type, tag),
|
||||||
m_maincpu(*this, "maincpu"),
|
m_maincpu(*this, "maincpu"),
|
||||||
|
m_reel0(*this, "reel0"),
|
||||||
|
m_reel1(*this, "reel1"),
|
||||||
|
m_reel2(*this, "reel2"),
|
||||||
|
m_reel3(*this, "reel3"),
|
||||||
|
m_reel4(*this, "reel4"),
|
||||||
|
m_reel5(*this, "reel5"),
|
||||||
m_upd7759(*this, "upd"),
|
m_upd7759(*this, "upd"),
|
||||||
m_vfd0(*this, "vfd0"),
|
m_vfd0(*this, "vfd0"),
|
||||||
m_vfd1(*this, "vfd1"),
|
m_vfd1(*this, "vfd1"),
|
||||||
m_dm01(*this, "dm01") { }
|
m_dm01(*this, "dm01") { }
|
||||||
|
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
|
required_device<stepper_device> m_reel0;
|
||||||
|
required_device<stepper_device> m_reel1;
|
||||||
|
required_device<stepper_device> m_reel2;
|
||||||
|
required_device<stepper_device> m_reel3;
|
||||||
|
required_device<stepper_device> m_reel4;
|
||||||
|
required_device<stepper_device> m_reel5;
|
||||||
required_device<upd7759_device> m_upd7759;
|
required_device<upd7759_device> m_upd7759;
|
||||||
optional_device<bfm_bd1_t> m_vfd0;
|
optional_device<bfm_bd1_t> m_vfd0;
|
||||||
optional_device<bfm_bd1_t> m_vfd1;
|
optional_device<bfm_bd1_t> m_vfd1;
|
||||||
@ -199,6 +211,12 @@ public:
|
|||||||
int m_mmtr_latch;
|
int m_mmtr_latch;
|
||||||
int m_irq_status;
|
int m_irq_status;
|
||||||
int m_optic_pattern;
|
int m_optic_pattern;
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel0_optic_cb) { if (state) m_optic_pattern |= 0x01; else m_optic_pattern &= ~0x01; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel1_optic_cb) { if (state) m_optic_pattern |= 0x02; else m_optic_pattern &= ~0x02; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel2_optic_cb) { if (state) m_optic_pattern |= 0x04; else m_optic_pattern &= ~0x04; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel3_optic_cb) { if (state) m_optic_pattern |= 0x08; else m_optic_pattern &= ~0x08; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel4_optic_cb) { if (state) m_optic_pattern |= 0x10; else m_optic_pattern &= ~0x10; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel5_optic_cb) { if (state) m_optic_pattern |= 0x20; else m_optic_pattern &= ~0x20; }
|
||||||
int m_uart1_data;
|
int m_uart1_data;
|
||||||
int m_uart2_data;
|
int m_uart2_data;
|
||||||
int m_data_to_uart1;
|
int m_data_to_uart1;
|
||||||
@ -386,20 +404,6 @@ void bfm_sc2_state::on_scorpion2_reset()
|
|||||||
|
|
||||||
machine().device("ymsnd")->reset();
|
machine().device("ymsnd")->reset();
|
||||||
|
|
||||||
// reset stepper motors /////////////////////////////////////////////////
|
|
||||||
{
|
|
||||||
int pattern =0, i;
|
|
||||||
|
|
||||||
for ( i = 0; i < m_reels; i++)
|
|
||||||
{
|
|
||||||
stepper_reset_position(i);
|
|
||||||
if ( stepper_optic_state(i) ) pattern |= 1<<i;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_optic_pattern = pattern;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// make sure no inputs are overidden ////////////////////////////////////
|
// make sure no inputs are overidden ////////////////////////////////////
|
||||||
memset(m_input_override, 0, sizeof(m_input_override));
|
memset(m_input_override, 0, sizeof(m_input_override));
|
||||||
|
|
||||||
@ -546,32 +550,22 @@ WRITE8_MEMBER(bfm_sc2_state::reel12_w)
|
|||||||
{
|
{
|
||||||
m_reel12_latch = data;
|
m_reel12_latch = data;
|
||||||
|
|
||||||
stepper_update(0, data&0x0f );
|
m_reel0->update( data &0x0f);
|
||||||
stepper_update(1, (data>>4)&0x0f );
|
m_reel1->update((data>>4)&0x0f);
|
||||||
|
|
||||||
if ( stepper_optic_state(0) ) m_optic_pattern |= 0x01;
|
awp_draw_reel(0, m_reel0);
|
||||||
else m_optic_pattern &= ~0x01;
|
awp_draw_reel(1, m_reel1);
|
||||||
if ( stepper_optic_state(1) ) m_optic_pattern |= 0x02;
|
|
||||||
else m_optic_pattern &= ~0x02;
|
|
||||||
|
|
||||||
awp_draw_reel(0);
|
|
||||||
awp_draw_reel(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(bfm_sc2_state::reel34_w)
|
WRITE8_MEMBER(bfm_sc2_state::reel34_w)
|
||||||
{
|
{
|
||||||
m_reel34_latch = data;
|
m_reel34_latch = data;
|
||||||
|
|
||||||
stepper_update(2, data&0x0f );
|
m_reel2->update( data &0x0f);
|
||||||
stepper_update(3, (data>>4)&0x0f);
|
m_reel3->update((data>>4)&0x0f);
|
||||||
|
|
||||||
if ( stepper_optic_state(2) ) m_optic_pattern |= 0x04;
|
awp_draw_reel(2, m_reel2);
|
||||||
else m_optic_pattern &= ~0x04;
|
awp_draw_reel(3, m_reel3);
|
||||||
if ( stepper_optic_state(3) ) m_optic_pattern |= 0x08;
|
|
||||||
else m_optic_pattern &= ~0x08;
|
|
||||||
|
|
||||||
awp_draw_reel(2);
|
|
||||||
awp_draw_reel(3);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
@ -580,16 +574,11 @@ WRITE8_MEMBER(bfm_sc2_state::reel56_w)
|
|||||||
{
|
{
|
||||||
m_reel56_latch = data;
|
m_reel56_latch = data;
|
||||||
|
|
||||||
stepper_update(4, data&0x0f );
|
m_reel4->update( data &0x0f);
|
||||||
stepper_update(5, (data>>4)&0x0f);
|
m_reel5->update((data>>4)&0x0f);
|
||||||
|
|
||||||
if ( stepper_optic_state(4) ) m_optic_pattern |= 0x10;
|
awp_draw_reel(4, m_reel4);
|
||||||
else m_optic_pattern &= ~0x10;
|
awp_draw_reel(5, m_reel5);
|
||||||
if ( stepper_optic_state(5) ) m_optic_pattern |= 0x20;
|
|
||||||
else m_optic_pattern &= ~0x20;
|
|
||||||
|
|
||||||
awp_draw_reel(4);
|
|
||||||
awp_draw_reel(5);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2174,6 +2163,20 @@ static MACHINE_CONFIG_START( scorpion2_vid, bfm_sc2_state )
|
|||||||
|
|
||||||
MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz)
|
MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz)
|
||||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||||
|
|
||||||
|
MCFG_DEVICE_ADD("reel0", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(bfm_sc2_state, reel0_optic_cb))
|
||||||
|
MCFG_DEVICE_ADD("reel1", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(bfm_sc2_state, reel1_optic_cb))
|
||||||
|
MCFG_DEVICE_ADD("reel2", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(bfm_sc2_state, reel2_optic_cb))
|
||||||
|
MCFG_DEVICE_ADD("reel3", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(bfm_sc2_state, reel3_optic_cb))
|
||||||
|
MCFG_DEVICE_ADD("reel4", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(bfm_sc2_state, reel4_optic_cb))
|
||||||
|
MCFG_DEVICE_ADD("reel5", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(bfm_sc2_state, reel5_optic_cb))
|
||||||
|
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
|
||||||
@ -3664,29 +3667,37 @@ MACHINE_CONFIG_END
|
|||||||
|
|
||||||
void bfm_sc2_state::sc2awp_common_init(int reels, int decrypt)
|
void bfm_sc2_state::sc2awp_common_init(int reels, int decrypt)
|
||||||
{
|
{
|
||||||
int n;
|
|
||||||
sc2_common_init(decrypt);
|
sc2_common_init(decrypt);
|
||||||
/* setup n default 96 half step reels */
|
/* setup n default 96 half step reels */
|
||||||
|
|
||||||
m_reels=reels;
|
m_reels=reels;
|
||||||
|
|
||||||
for ( n = 0; n < reels; n++ )
|
switch (reels)
|
||||||
{
|
{
|
||||||
stepper_config(machine(), n, &starpoint_interface_48step);
|
case 6: m_reel5->configure(&starpoint_interface_48step);
|
||||||
|
case 5: m_reel4->configure(&starpoint_interface_48step);
|
||||||
|
case 4: m_reel3->configure(&starpoint_interface_48step);
|
||||||
|
case 3: m_reel2->configure(&starpoint_interface_48step);
|
||||||
|
case 2: m_reel1->configure(&starpoint_interface_48step);
|
||||||
|
case 1: m_reel0->configure(&starpoint_interface_48step);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void bfm_sc2_state::sc2awpdmd_common_init(int reels, int decrypt)
|
void bfm_sc2_state::sc2awpdmd_common_init(int reels, int decrypt)
|
||||||
{
|
{
|
||||||
int n;
|
|
||||||
sc2_common_init(decrypt);
|
sc2_common_init(decrypt);
|
||||||
/* setup n default 96 half step reels */
|
/* setup n default 96 half step reels */
|
||||||
|
|
||||||
m_reels=reels;
|
m_reels=reels;
|
||||||
|
|
||||||
for ( n = 0; n < reels; n++ )
|
switch (reels)
|
||||||
{
|
{
|
||||||
stepper_config(machine(), n, &starpoint_interface_48step);
|
case 6: m_reel5->configure(&starpoint_interface_48step);
|
||||||
|
case 5: m_reel4->configure(&starpoint_interface_48step);
|
||||||
|
case 4: m_reel3->configure(&starpoint_interface_48step);
|
||||||
|
case 3: m_reel2->configure(&starpoint_interface_48step);
|
||||||
|
case 2: m_reel1->configure(&starpoint_interface_48step);
|
||||||
|
case 1: m_reel0->configure(&starpoint_interface_48step);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -517,40 +517,29 @@ void sc4_state::bfm_sc4_68307_porta_w(address_space &space, bool dedicated, UINT
|
|||||||
{
|
{
|
||||||
m_reel12_latch = data;
|
m_reel12_latch = data;
|
||||||
|
|
||||||
stepper_update(0, data&0x0f );
|
m_reel0->update( data &0x0f);
|
||||||
stepper_update(1, (data>>4)&0x0f );
|
m_reel1->update((data>>4)&0x0f);
|
||||||
|
|
||||||
if ( stepper_optic_state(0) ) m_optic_pattern |= 0x01;
|
awp_draw_reel(0, m_reel0);
|
||||||
else m_optic_pattern &= ~0x01;
|
awp_draw_reel(1, m_reel1);
|
||||||
if ( stepper_optic_state(1) ) m_optic_pattern |= 0x02;
|
|
||||||
else m_optic_pattern &= ~0x02;
|
|
||||||
|
|
||||||
awp_draw_reel(0);
|
|
||||||
awp_draw_reel(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER( sc4_state::bfm_sc4_reel3_w )
|
WRITE8_MEMBER( sc4_state::bfm_sc4_reel3_w )
|
||||||
{
|
{
|
||||||
m_reel3_latch = data;
|
m_reel3_latch = data;
|
||||||
|
|
||||||
stepper_update(2, data&0x0f );
|
m_reel2->update(data&0x0f);
|
||||||
|
|
||||||
if ( stepper_optic_state(2) ) m_optic_pattern |= 0x04;
|
awp_draw_reel(2, m_reel2);
|
||||||
else m_optic_pattern &= ~0x04;
|
|
||||||
|
|
||||||
awp_draw_reel(2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER( sc4_state::bfm_sc4_reel4_w )
|
WRITE8_MEMBER( sc4_state::bfm_sc4_reel4_w )
|
||||||
{
|
{
|
||||||
m_reel4_latch = data;
|
m_reel4_latch = data;
|
||||||
|
|
||||||
stepper_update(3, data&0x0f );
|
m_reel3->update(data&0x0f );
|
||||||
|
|
||||||
if ( stepper_optic_state(3) ) m_optic_pattern |= 0x08;
|
awp_draw_reel(3, m_reel3);
|
||||||
else m_optic_pattern &= ~0x08;
|
|
||||||
|
|
||||||
awp_draw_reel(3);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void sc4_state::bfm_sc4_68307_portb_w(address_space &space, bool dedicated, UINT16 data, UINT16 line_mask)
|
void sc4_state::bfm_sc4_68307_portb_w(address_space &space, bool dedicated, UINT16 data, UINT16 line_mask)
|
||||||
@ -591,17 +580,8 @@ UINT16 sc4_state::bfm_sc4_68307_portb_r(address_space &space, bool dedicated, UI
|
|||||||
|
|
||||||
MACHINE_RESET_MEMBER(sc4_state,sc4)
|
MACHINE_RESET_MEMBER(sc4_state,sc4)
|
||||||
{
|
{
|
||||||
int pattern =0, i;
|
|
||||||
|
|
||||||
for ( i = 0; i < m_reels; i++)
|
|
||||||
{
|
|
||||||
stepper_reset_position(i);
|
|
||||||
if ( stepper_optic_state(i) ) pattern |= 1<<i;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_dochk41 = true;
|
m_dochk41 = true;
|
||||||
|
|
||||||
m_optic_pattern = pattern;
|
|
||||||
sec.reset();
|
sec.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -620,10 +600,12 @@ MACHINE_START_MEMBER(sc4_state,sc4)
|
|||||||
int reels = 6;
|
int reels = 6;
|
||||||
m_reels=reels;
|
m_reels=reels;
|
||||||
|
|
||||||
for ( int n = 0; n < reels; n++ )
|
if (m_reel_setup[0]) m_reel0->configure(m_reel_setup[0]);
|
||||||
{
|
if (m_reel_setup[1]) m_reel1->configure(m_reel_setup[1]);
|
||||||
if (m_reel_setup[n]) stepper_config(machine(), n, m_reel_setup[n]);
|
if (m_reel_setup[2]) m_reel2->configure(m_reel_setup[2]);
|
||||||
}
|
if (m_reel_setup[3]) m_reel3->configure(m_reel_setup[3]);
|
||||||
|
if (m_reel_setup[4]) m_reel4->configure(m_reel_setup[4]);
|
||||||
|
if (m_reel_setup[5]) m_reel5->configure(m_reel_setup[5]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -663,16 +645,11 @@ WRITE8_MEMBER(sc4_state::bfm_sc4_duart_output_w)
|
|||||||
// logerror("bfm_sc4_duart_output_w\n");
|
// logerror("bfm_sc4_duart_output_w\n");
|
||||||
m_reel56_latch = data;
|
m_reel56_latch = data;
|
||||||
|
|
||||||
stepper_update(4, data&0x0f );
|
m_reel4->update( data &0x0f);
|
||||||
stepper_update(5, (data>>4)&0x0f);
|
m_reel5->update((data>>4)&0x0f);
|
||||||
|
|
||||||
if ( stepper_optic_state(4) ) m_optic_pattern |= 0x10;
|
awp_draw_reel(4, m_reel4);
|
||||||
else m_optic_pattern &= ~0x10;
|
awp_draw_reel(5, m_reel5);
|
||||||
if ( stepper_optic_state(5) ) m_optic_pattern |= 0x20;
|
|
||||||
else m_optic_pattern &= ~0x20;
|
|
||||||
|
|
||||||
awp_draw_reel(4);
|
|
||||||
awp_draw_reel(5);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -728,6 +705,19 @@ MACHINE_CONFIG_START( sc4, sc4_state )
|
|||||||
MCFG_SOUND_ADD("ymz", YMZ280B, 16000000) // ?? Mhz
|
MCFG_SOUND_ADD("ymz", YMZ280B, 16000000) // ?? Mhz
|
||||||
MCFG_YMZ280B_IRQ_HANDLER(WRITELINE(sc4_state, bfm_sc4_irqhandler))
|
MCFG_YMZ280B_IRQ_HANDLER(WRITELINE(sc4_state, bfm_sc4_irqhandler))
|
||||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||||
|
|
||||||
|
MCFG_DEVICE_ADD("reel0", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(sc4_state, reel0_optic_cb))
|
||||||
|
MCFG_DEVICE_ADD("reel1", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(sc4_state, reel1_optic_cb))
|
||||||
|
MCFG_DEVICE_ADD("reel2", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(sc4_state, reel2_optic_cb))
|
||||||
|
MCFG_DEVICE_ADD("reel3", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(sc4_state, reel3_optic_cb))
|
||||||
|
MCFG_DEVICE_ADD("reel4", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(sc4_state, reel4_optic_cb))
|
||||||
|
MCFG_DEVICE_ADD("reel5", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(sc4_state, reel5_optic_cb))
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
|
||||||
|
@ -74,6 +74,10 @@ public:
|
|||||||
bfmsys85_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag),
|
bfmsys85_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag),
|
||||||
m_vfd(*this, "vfd"),
|
m_vfd(*this, "vfd"),
|
||||||
m_maincpu(*this, "maincpu"),
|
m_maincpu(*this, "maincpu"),
|
||||||
|
m_reel0(*this, "reel0"),
|
||||||
|
m_reel1(*this, "reel1"),
|
||||||
|
m_reel2(*this, "reel2"),
|
||||||
|
m_reel3(*this, "reel3"),
|
||||||
m_acia6850_0(*this, "acia6850_0")
|
m_acia6850_0(*this, "acia6850_0")
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@ -84,6 +88,10 @@ public:
|
|||||||
int m_alpha_clock;
|
int m_alpha_clock;
|
||||||
int m_irq_status;
|
int m_irq_status;
|
||||||
int m_optic_pattern;
|
int m_optic_pattern;
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel0_optic_cb) { if (state) m_optic_pattern |= 0x01; else m_optic_pattern &= ~0x01; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel1_optic_cb) { if (state) m_optic_pattern |= 0x02; else m_optic_pattern &= ~0x02; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel2_optic_cb) { if (state) m_optic_pattern |= 0x04; else m_optic_pattern &= ~0x04; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel3_optic_cb) { if (state) m_optic_pattern |= 0x08; else m_optic_pattern &= ~0x08; }
|
||||||
int m_locked;
|
int m_locked;
|
||||||
int m_is_timer_enabled;
|
int m_is_timer_enabled;
|
||||||
int m_coin_inhibits;
|
int m_coin_inhibits;
|
||||||
@ -117,6 +125,10 @@ public:
|
|||||||
INTERRUPT_GEN_MEMBER(timer_irq);
|
INTERRUPT_GEN_MEMBER(timer_irq);
|
||||||
int b85_find_project_string( );
|
int b85_find_project_string( );
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
|
required_device<stepper_device> m_reel0;
|
||||||
|
required_device<stepper_device> m_reel1;
|
||||||
|
required_device<stepper_device> m_reel2;
|
||||||
|
required_device<stepper_device> m_reel3;
|
||||||
required_device<acia6850_device> m_acia6850_0;
|
required_device<acia6850_device> m_acia6850_0;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -158,17 +170,6 @@ void bfmsys85_state::machine_reset()
|
|||||||
|
|
||||||
m_vfd->reset(); // reset display1
|
m_vfd->reset(); // reset display1
|
||||||
|
|
||||||
// reset stepper motors ///////////////////////////////////////////////////
|
|
||||||
{
|
|
||||||
int pattern =0, i;
|
|
||||||
|
|
||||||
for ( i = 0; i < 6; i++)
|
|
||||||
{
|
|
||||||
stepper_reset_position(i);
|
|
||||||
if ( stepper_optic_state(i) ) pattern |= 1<<i;
|
|
||||||
}
|
|
||||||
m_optic_pattern = pattern;
|
|
||||||
}
|
|
||||||
m_locked = 0x00; // hardware is open
|
m_locked = 0x00; // hardware is open
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -204,30 +205,22 @@ READ8_MEMBER(bfmsys85_state::irqlatch_r)
|
|||||||
|
|
||||||
WRITE8_MEMBER(bfmsys85_state::reel12_w)
|
WRITE8_MEMBER(bfmsys85_state::reel12_w)
|
||||||
{
|
{
|
||||||
stepper_update(0, (data>>4)&0x0f);
|
m_reel0->update((data>>4)&0x0f);
|
||||||
stepper_update(1, data&0x0f );
|
m_reel1->update( data &0x0f);
|
||||||
|
|
||||||
if ( stepper_optic_state(0) ) m_optic_pattern |= 0x01;
|
awp_draw_reel(0, m_reel0);
|
||||||
else m_optic_pattern &= ~0x01;
|
awp_draw_reel(1, m_reel1);
|
||||||
if ( stepper_optic_state(1) ) m_optic_pattern |= 0x02;
|
|
||||||
else m_optic_pattern &= ~0x02;
|
|
||||||
awp_draw_reel(0);
|
|
||||||
awp_draw_reel(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
WRITE8_MEMBER(bfmsys85_state::reel34_w)
|
WRITE8_MEMBER(bfmsys85_state::reel34_w)
|
||||||
{
|
{
|
||||||
stepper_update(2, (data>>4)&0x0f);
|
m_reel2->update((data>>4)&0x0f);
|
||||||
stepper_update(3, data&0x0f );
|
m_reel3->update( data &0x0f);
|
||||||
|
|
||||||
if ( stepper_optic_state(2) ) m_optic_pattern |= 0x04;
|
awp_draw_reel(2, m_reel2);
|
||||||
else m_optic_pattern &= ~0x04;
|
awp_draw_reel(3, m_reel3);
|
||||||
if ( stepper_optic_state(3) ) m_optic_pattern |= 0x08;
|
|
||||||
else m_optic_pattern &= ~0x08;
|
|
||||||
awp_draw_reel(2);
|
|
||||||
awp_draw_reel(3);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
@ -353,12 +346,10 @@ READ8_MEMBER(bfmsys85_state::triac_r)
|
|||||||
|
|
||||||
void bfmsys85_state::machine_start()
|
void bfmsys85_state::machine_start()
|
||||||
{
|
{
|
||||||
int i;
|
m_reel0->configure(&starpoint_interface_48step);
|
||||||
for ( i = 0; i < 4; i++ )
|
m_reel1->configure(&starpoint_interface_48step);
|
||||||
{
|
m_reel2->configure(&starpoint_interface_48step);
|
||||||
stepper_config(machine(), i, &starpoint_interface_48step);
|
m_reel3->configure(&starpoint_interface_48step);
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// memory map for bellfruit system85 board ////////////////////////////////
|
// memory map for bellfruit system85 board ////////////////////////////////
|
||||||
@ -415,6 +406,15 @@ static MACHINE_CONFIG_START( bfmsys85, bfmsys85_state )
|
|||||||
|
|
||||||
MCFG_NVRAM_ADD_0FILL("nvram") // load/save nv RAM
|
MCFG_NVRAM_ADD_0FILL("nvram") // load/save nv RAM
|
||||||
|
|
||||||
|
MCFG_DEVICE_ADD("reel0", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(bfmsys85_state, reel0_optic_cb))
|
||||||
|
MCFG_DEVICE_ADD("reel1", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(bfmsys85_state, reel1_optic_cb))
|
||||||
|
MCFG_DEVICE_ADD("reel2", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(bfmsys85_state, reel2_optic_cb))
|
||||||
|
MCFG_DEVICE_ADD("reel3", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(bfmsys85_state, reel3_optic_cb))
|
||||||
|
|
||||||
MCFG_DEFAULT_LAYOUT(layout_bfmsys85)
|
MCFG_DEFAULT_LAYOUT(layout_bfmsys85)
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
@ -22,6 +22,10 @@ public:
|
|||||||
ecoinf2_state(const machine_config &mconfig, device_type type, const char *tag)
|
ecoinf2_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
: driver_device(mconfig, type, tag),
|
: driver_device(mconfig, type, tag),
|
||||||
m_maincpu(*this, "maincpu"),
|
m_maincpu(*this, "maincpu"),
|
||||||
|
m_reel0(*this, "reel0"),
|
||||||
|
m_reel1(*this, "reel1"),
|
||||||
|
m_reel2(*this, "reel2"),
|
||||||
|
m_reel3(*this, "reel3"),
|
||||||
m_coins(*this, "COINS"),
|
m_coins(*this, "COINS"),
|
||||||
m_key(*this, "PERKEY"),
|
m_key(*this, "PERKEY"),
|
||||||
m_panel(*this, "PANEL")
|
m_panel(*this, "PANEL")
|
||||||
@ -31,6 +35,10 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
|
required_device<stepper_device> m_reel0;
|
||||||
|
required_device<stepper_device> m_reel1;
|
||||||
|
required_device<stepper_device> m_reel2;
|
||||||
|
required_device<stepper_device> m_reel3;
|
||||||
required_ioport m_coins;
|
required_ioport m_coins;
|
||||||
required_ioport m_key;
|
required_ioport m_key;
|
||||||
required_ioport m_panel;
|
required_ioport m_panel;
|
||||||
@ -40,6 +48,10 @@ public:
|
|||||||
//UINT16 m_chars[14];
|
//UINT16 m_chars[14];
|
||||||
// void update_display();
|
// void update_display();
|
||||||
int m_optic_pattern;
|
int m_optic_pattern;
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel0_optic_cb) { if (state) m_optic_pattern |= 0x01; else m_optic_pattern &= ~0x01; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel1_optic_cb) { if (state) m_optic_pattern |= 0x02; else m_optic_pattern &= ~0x02; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel2_optic_cb) { if (state) m_optic_pattern |= 0x04; else m_optic_pattern &= ~0x04; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel3_optic_cb) { if (state) m_optic_pattern |= 0x08; else m_optic_pattern &= ~0x08; }
|
||||||
int strobe_addr;
|
int strobe_addr;
|
||||||
int strobe_amount;
|
int strobe_amount;
|
||||||
|
|
||||||
@ -187,30 +199,20 @@ public:
|
|||||||
|
|
||||||
DECLARE_WRITE8_MEMBER(ppi8255_ic23_write_a_reel01)
|
DECLARE_WRITE8_MEMBER(ppi8255_ic23_write_a_reel01)
|
||||||
{
|
{
|
||||||
stepper_update(0, data&0x0f);
|
m_reel0->update( data &0x0f);
|
||||||
stepper_update(1, (data>>4)&0x0f);
|
m_reel1->update((data>>4)&0x0f);
|
||||||
|
|
||||||
if ( stepper_optic_state(0) ) m_optic_pattern |= 0x10;
|
awp_draw_reel(0, m_reel0);
|
||||||
else m_optic_pattern &= ~0x10;
|
awp_draw_reel(1, m_reel1);
|
||||||
if ( stepper_optic_state(1) ) m_optic_pattern |= 0x20;
|
|
||||||
else m_optic_pattern &= ~0x20;
|
|
||||||
|
|
||||||
awp_draw_reel(0);
|
|
||||||
awp_draw_reel(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DECLARE_WRITE8_MEMBER(ppi8255_ic23_write_b_reel23)
|
DECLARE_WRITE8_MEMBER(ppi8255_ic23_write_b_reel23)
|
||||||
{
|
{
|
||||||
stepper_update(2, data&0x0f);
|
m_reel2->update( data &0x0f);
|
||||||
stepper_update(3, (data>>4)&0x0f);
|
m_reel3->update((data>>4)&0x0f);
|
||||||
|
|
||||||
if ( stepper_optic_state(2) ) m_optic_pattern |= 0x40;
|
awp_draw_reel(2, m_reel2);
|
||||||
else m_optic_pattern &= ~0x40;
|
awp_draw_reel(3, m_reel3);
|
||||||
if ( stepper_optic_state(3) ) m_optic_pattern |= 0x80;
|
|
||||||
else m_optic_pattern &= ~0x80;
|
|
||||||
|
|
||||||
awp_draw_reel(2);
|
|
||||||
awp_draw_reel(3);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DECLARE_READ8_MEMBER(ppi8255_ic23_read_c_key)
|
DECLARE_READ8_MEMBER(ppi8255_ic23_read_c_key)
|
||||||
@ -498,10 +500,10 @@ INPUT_PORTS_END
|
|||||||
MACHINE_START_MEMBER(ecoinf2_state,ecoinf2)
|
MACHINE_START_MEMBER(ecoinf2_state,ecoinf2)
|
||||||
{
|
{
|
||||||
MechMtr_config(machine(),8);
|
MechMtr_config(machine(),8);
|
||||||
for ( int n = 0; n < 4; n++ )
|
m_reel0->configure(&ecoin_interface_200step_reel);
|
||||||
{
|
m_reel1->configure(&ecoin_interface_200step_reel);
|
||||||
stepper_config(machine(), n, &ecoin_interface_200step_reel);
|
m_reel2->configure(&ecoin_interface_200step_reel);
|
||||||
}
|
m_reel3->configure(&ecoin_interface_200step_reel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -541,6 +543,15 @@ static MACHINE_CONFIG_START( ecoinf2_oxo, ecoinf2_state )
|
|||||||
MCFG_I8255_OUT_PORTB_CB(WRITE8(ecoinf2_state, ppi8255_ic13_write_b_strobedat1))
|
MCFG_I8255_OUT_PORTB_CB(WRITE8(ecoinf2_state, ppi8255_ic13_write_b_strobedat1))
|
||||||
MCFG_I8255_IN_PORTC_CB(READ8(ecoinf2_state, ppi8255_ic13_read_c_panel))
|
MCFG_I8255_IN_PORTC_CB(READ8(ecoinf2_state, ppi8255_ic13_read_c_panel))
|
||||||
|
|
||||||
|
MCFG_DEVICE_ADD("reel0", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(ecoinf2_state, reel0_optic_cb))
|
||||||
|
MCFG_DEVICE_ADD("reel1", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(ecoinf2_state, reel1_optic_cb))
|
||||||
|
MCFG_DEVICE_ADD("reel2", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(ecoinf2_state, reel2_optic_cb))
|
||||||
|
MCFG_DEVICE_ADD("reel3", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(ecoinf2_state, reel3_optic_cb))
|
||||||
|
|
||||||
// MCFG_DEVICE_ADD("ic25_dips", I8255, 0)
|
// MCFG_DEVICE_ADD("ic25_dips", I8255, 0)
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
@ -23,7 +23,11 @@ class ecoinf3_state : public driver_device
|
|||||||
public:
|
public:
|
||||||
ecoinf3_state(const machine_config &mconfig, device_type type, const char *tag)
|
ecoinf3_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
: driver_device(mconfig, type, tag),
|
: driver_device(mconfig, type, tag),
|
||||||
m_maincpu(*this, "maincpu")
|
m_maincpu(*this, "maincpu"),
|
||||||
|
m_reel0(*this, "reel0"),
|
||||||
|
m_reel1(*this, "reel1"),
|
||||||
|
m_reel2(*this, "reel2"),
|
||||||
|
m_reel3(*this, "reel3")
|
||||||
{
|
{
|
||||||
strobe_amount = 0;
|
strobe_amount = 0;
|
||||||
strobe_addr = 0;
|
strobe_addr = 0;
|
||||||
@ -31,6 +35,10 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
required_device<z180_device> m_maincpu;
|
required_device<z180_device> m_maincpu;
|
||||||
|
required_device<stepper_device> m_reel0;
|
||||||
|
required_device<stepper_device> m_reel1;
|
||||||
|
required_device<stepper_device> m_reel2;
|
||||||
|
required_device<stepper_device> m_reel3;
|
||||||
|
|
||||||
UINT16 m_lamps[16];
|
UINT16 m_lamps[16];
|
||||||
UINT16 m_chars[14];
|
UINT16 m_chars[14];
|
||||||
@ -39,6 +47,11 @@ public:
|
|||||||
int strobe_addr;
|
int strobe_addr;
|
||||||
int strobe_amount;
|
int strobe_amount;
|
||||||
int m_optic_pattern;
|
int m_optic_pattern;
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel0_optic_cb) { if (state) m_optic_pattern |= 0x01; else m_optic_pattern &= ~0x01; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel1_optic_cb) { if (state) m_optic_pattern |= 0x02; else m_optic_pattern &= ~0x02; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel2_optic_cb) { if (state) m_optic_pattern |= 0x04; else m_optic_pattern &= ~0x04; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel3_optic_cb) { if (state) m_optic_pattern |= 0x08; else m_optic_pattern &= ~0x08; }
|
||||||
|
|
||||||
int m_percent_mux;
|
int m_percent_mux;
|
||||||
|
|
||||||
DECLARE_READ8_MEMBER(ppi8255_intf_a_read_a) { int ret = 0x00; logerror("%04x - ppi8255_intf_a_read_a %02x\n", m_maincpu->pcbase(), ret); return ret; }
|
DECLARE_READ8_MEMBER(ppi8255_intf_a_read_a) { int ret = 0x00; logerror("%04x - ppi8255_intf_a_read_a %02x\n", m_maincpu->pcbase(), ret); return ret; }
|
||||||
@ -211,32 +224,22 @@ public:
|
|||||||
DECLARE_WRITE8_MEMBER(ppi8255_intf_d_write_a_reel01)
|
DECLARE_WRITE8_MEMBER(ppi8255_intf_d_write_a_reel01)
|
||||||
{
|
{
|
||||||
// logerror("%04x - ppi8255_intf_d_(used)write_a %02x\n", m_maincpu->pcbase(), data);
|
// logerror("%04x - ppi8255_intf_d_(used)write_a %02x\n", m_maincpu->pcbase(), data);
|
||||||
stepper_update(0, data&0x0f);
|
m_reel0->update( data &0x0f);
|
||||||
stepper_update(1, (data>>4)&0x0f);
|
m_reel1->update((data>>4)&0x0f);
|
||||||
|
|
||||||
if ( stepper_optic_state(0) ) m_optic_pattern |= 0x10;
|
awp_draw_reel(0, m_reel0);
|
||||||
else m_optic_pattern &= ~0x10;
|
awp_draw_reel(1, m_reel1);
|
||||||
if ( stepper_optic_state(1) ) m_optic_pattern |= 0x20;
|
|
||||||
else m_optic_pattern &= ~0x20;
|
|
||||||
|
|
||||||
awp_draw_reel(0);
|
|
||||||
awp_draw_reel(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DECLARE_WRITE8_MEMBER(ppi8255_intf_d_write_b_reel23)
|
DECLARE_WRITE8_MEMBER(ppi8255_intf_d_write_b_reel23)
|
||||||
{
|
{
|
||||||
// logerror("%04x - ppi8255_intf_d_(used)write_b %02x\n", m_maincpu->pcbase(), data);
|
// logerror("%04x - ppi8255_intf_d_(used)write_b %02x\n", m_maincpu->pcbase(), data);
|
||||||
|
|
||||||
stepper_update(2, data&0x0f);
|
m_reel2->update( data &0x0f);
|
||||||
stepper_update(3, (data>>4)&0x0f);
|
m_reel3->update((data>>4)&0x0f);
|
||||||
|
|
||||||
if ( stepper_optic_state(2) ) m_optic_pattern |= 0x40;
|
awp_draw_reel(2, m_reel2);
|
||||||
else m_optic_pattern &= ~0x40;
|
awp_draw_reel(3, m_reel3);
|
||||||
if ( stepper_optic_state(3) ) m_optic_pattern |= 0x80;
|
|
||||||
else m_optic_pattern &= ~0x80;
|
|
||||||
|
|
||||||
awp_draw_reel(2);
|
|
||||||
awp_draw_reel(3);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DECLARE_WRITE8_MEMBER(ppi8255_intf_d_write_c) { logerror("%04x - ppi8255_intf_d_(used)write_c %02x\n", m_maincpu->pcbase(), data);}
|
DECLARE_WRITE8_MEMBER(ppi8255_intf_d_write_c) { logerror("%04x - ppi8255_intf_d_(used)write_c %02x\n", m_maincpu->pcbase(), data);}
|
||||||
@ -654,10 +657,10 @@ INPUT_PORTS_END
|
|||||||
|
|
||||||
MACHINE_START_MEMBER(ecoinf3_state,ecoinf3)
|
MACHINE_START_MEMBER(ecoinf3_state,ecoinf3)
|
||||||
{
|
{
|
||||||
for ( int n = 0; n < 4; n++ )
|
m_reel0->configure(&ecoin_interface_200step_reel);
|
||||||
{
|
m_reel1->configure(&ecoin_interface_200step_reel);
|
||||||
stepper_config(machine(), n, &ecoin_interface_200step_reel);
|
m_reel2->configure(&ecoin_interface_200step_reel);
|
||||||
}
|
m_reel3->configure(&ecoin_interface_200step_reel);
|
||||||
}
|
}
|
||||||
|
|
||||||
static MACHINE_CONFIG_START( ecoinf3_pyramid, ecoinf3_state )
|
static MACHINE_CONFIG_START( ecoinf3_pyramid, ecoinf3_state )
|
||||||
@ -740,6 +743,15 @@ static MACHINE_CONFIG_START( ecoinf3_pyramid, ecoinf3_state )
|
|||||||
MCFG_I8255_OUT_PORTB_CB(WRITE8(ecoinf3_state, ppi8255_intf_h_write_b))
|
MCFG_I8255_OUT_PORTB_CB(WRITE8(ecoinf3_state, ppi8255_intf_h_write_b))
|
||||||
MCFG_I8255_IN_PORTC_CB(READ8(ecoinf3_state, ppi8255_intf_h_read_c))
|
MCFG_I8255_IN_PORTC_CB(READ8(ecoinf3_state, ppi8255_intf_h_read_c))
|
||||||
MCFG_I8255_OUT_PORTC_CB(WRITE8(ecoinf3_state, ppi8255_intf_h_write_c))
|
MCFG_I8255_OUT_PORTC_CB(WRITE8(ecoinf3_state, ppi8255_intf_h_write_c))
|
||||||
|
|
||||||
|
MCFG_DEVICE_ADD("reel0", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(ecoinf3_state, reel0_optic_cb))
|
||||||
|
MCFG_DEVICE_ADD("reel1", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(ecoinf3_state, reel1_optic_cb))
|
||||||
|
MCFG_DEVICE_ADD("reel2", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(ecoinf3_state, reel2_optic_cb))
|
||||||
|
MCFG_DEVICE_ADD("reel3", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(ecoinf3_state, reel3_optic_cb))
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
|
||||||
|
@ -53,10 +53,19 @@ class ecoinfr_state : public driver_device
|
|||||||
public:
|
public:
|
||||||
ecoinfr_state(const machine_config &mconfig, device_type type, const char *tag)
|
ecoinfr_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
: driver_device(mconfig, type, tag),
|
: driver_device(mconfig, type, tag),
|
||||||
m_maincpu(*this, "maincpu") { }
|
m_maincpu(*this, "maincpu"),
|
||||||
|
m_reel0(*this, "reel0"),
|
||||||
|
m_reel1(*this, "reel1"),
|
||||||
|
m_reel2(*this, "reel2"),
|
||||||
|
m_reel3(*this, "reel3")
|
||||||
|
{ }
|
||||||
|
|
||||||
int irq_toggle;
|
int irq_toggle;
|
||||||
int m_optic_pattern;
|
int m_optic_pattern;
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel0_optic_cb) { if (state) m_optic_pattern |= 0x01; else m_optic_pattern &= ~0x01; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel1_optic_cb) { if (state) m_optic_pattern |= 0x02; else m_optic_pattern &= ~0x02; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel2_optic_cb) { if (state) m_optic_pattern |= 0x04; else m_optic_pattern &= ~0x04; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel3_optic_cb) { if (state) m_optic_pattern |= 0x08; else m_optic_pattern &= ~0x08; }
|
||||||
|
|
||||||
UINT8 port09_value;
|
UINT8 port09_value;
|
||||||
UINT8 port10_value;
|
UINT8 port10_value;
|
||||||
@ -108,6 +117,10 @@ public:
|
|||||||
|
|
||||||
DECLARE_MACHINE_START(ecoinfr);
|
DECLARE_MACHINE_START(ecoinfr);
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
|
required_device<stepper_device> m_reel0;
|
||||||
|
required_device<stepper_device> m_reel1;
|
||||||
|
required_device<stepper_device> m_reel2;
|
||||||
|
required_device<stepper_device> m_reel3;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -151,12 +164,9 @@ WRITE8_MEMBER(ecoinfr_state::ec_port00_out_w)
|
|||||||
printf("ec_port0a_out_w (reel 1 port) unk bits used %02x\n", data);
|
printf("ec_port0a_out_w (reel 1 port) unk bits used %02x\n", data);
|
||||||
}
|
}
|
||||||
|
|
||||||
stepper_update(0, data&0x0f);
|
m_reel0->update(data&0x0f);
|
||||||
|
|
||||||
if ( stepper_optic_state(0) ) m_optic_pattern |= 0x01;
|
awp_draw_reel(0, m_reel0);
|
||||||
else m_optic_pattern &= ~0x01;
|
|
||||||
|
|
||||||
awp_draw_reel(0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(ecoinfr_state::ec_port01_out_w)
|
WRITE8_MEMBER(ecoinfr_state::ec_port01_out_w)
|
||||||
@ -166,12 +176,9 @@ WRITE8_MEMBER(ecoinfr_state::ec_port01_out_w)
|
|||||||
printf("ec_port01_out_w (reel 2 port) unk bits used %02x\n", data);
|
printf("ec_port01_out_w (reel 2 port) unk bits used %02x\n", data);
|
||||||
}
|
}
|
||||||
|
|
||||||
stepper_update(1, data&0x0f);
|
m_reel1->update(data&0x0f);
|
||||||
|
|
||||||
if ( stepper_optic_state(1) ) m_optic_pattern |= 0x02;
|
awp_draw_reel(1, m_reel1);
|
||||||
else m_optic_pattern &= ~0x02;
|
|
||||||
|
|
||||||
awp_draw_reel(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(ecoinfr_state::ec_port02_out_w)
|
WRITE8_MEMBER(ecoinfr_state::ec_port02_out_w)
|
||||||
@ -181,12 +188,9 @@ WRITE8_MEMBER(ecoinfr_state::ec_port02_out_w)
|
|||||||
printf("ec_port02_out_w (reel 3 port) unk bits used %02x\n", data);
|
printf("ec_port02_out_w (reel 3 port) unk bits used %02x\n", data);
|
||||||
}
|
}
|
||||||
|
|
||||||
stepper_update(2, data&0x0f);
|
m_reel2->update(data&0x0f);
|
||||||
|
|
||||||
if ( stepper_optic_state(2) ) m_optic_pattern |= 0x04;
|
awp_draw_reel(2, m_reel2);
|
||||||
else m_optic_pattern &= ~0x04;
|
|
||||||
|
|
||||||
awp_draw_reel(2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -766,10 +770,10 @@ void ecoinfr_state::machine_reset()
|
|||||||
|
|
||||||
MACHINE_START_MEMBER(ecoinfr_state,ecoinfr)
|
MACHINE_START_MEMBER(ecoinfr_state,ecoinfr)
|
||||||
{
|
{
|
||||||
for ( int n = 0; n < 4; n++ )
|
m_reel0->configure(&ecoin_interface_200step_reel);
|
||||||
{
|
m_reel1->configure(&ecoin_interface_200step_reel);
|
||||||
stepper_config(machine(), n, &ecoin_interface_200step_reel);
|
m_reel2->configure(&ecoin_interface_200step_reel);
|
||||||
}
|
m_reel3->configure(&ecoin_interface_200step_reel);
|
||||||
}
|
}
|
||||||
|
|
||||||
static MACHINE_CONFIG_START( ecoinfr, ecoinfr_state )
|
static MACHINE_CONFIG_START( ecoinfr, ecoinfr_state )
|
||||||
@ -784,6 +788,13 @@ static MACHINE_CONFIG_START( ecoinfr, ecoinfr_state )
|
|||||||
MCFG_MACHINE_START_OVERRIDE(ecoinfr_state, ecoinfr )
|
MCFG_MACHINE_START_OVERRIDE(ecoinfr_state, ecoinfr )
|
||||||
|
|
||||||
MCFG_DEVICE_ADD(UPD8251_TAG, I8251, 0)
|
MCFG_DEVICE_ADD(UPD8251_TAG, I8251, 0)
|
||||||
|
|
||||||
|
MCFG_DEVICE_ADD("reel0", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(ecoinfr_state, reel0_optic_cb))
|
||||||
|
MCFG_DEVICE_ADD("reel1", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(ecoinfr_state, reel1_optic_cb))
|
||||||
|
MCFG_DEVICE_ADD("reel2", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(ecoinfr_state, reel2_optic_cb))
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
|
||||||
|
@ -965,13 +965,12 @@ MACHINE_START_MEMBER(jpmimpct_state,impctawp)
|
|||||||
save_item(NAME(m_duart_1.IMR));
|
save_item(NAME(m_duart_1.IMR));
|
||||||
save_item(NAME(m_duart_1.CT));
|
save_item(NAME(m_duart_1.CT));
|
||||||
|
|
||||||
stepper_config(machine(), 0, &starpoint_interface_48step);
|
m_reel0->configure(&starpoint_interface_48step);
|
||||||
stepper_config(machine(), 1, &starpoint_interface_48step);
|
m_reel1->configure(&starpoint_interface_48step);
|
||||||
stepper_config(machine(), 2, &starpoint_interface_48step);
|
m_reel2->configure(&starpoint_interface_48step);
|
||||||
stepper_config(machine(), 3, &starpoint_interface_48step);
|
m_reel3->configure(&starpoint_interface_48step);
|
||||||
stepper_config(machine(), 4, &starpoint_interface_48step);
|
m_reel4->configure(&starpoint_interface_48step);
|
||||||
stepper_config(machine(), 5, &starpoint_interface_48step);
|
m_reel5->configure(&starpoint_interface_48step);
|
||||||
stepper_config(machine(), 6, &starpoint_interface_48step);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MACHINE_RESET_MEMBER(jpmimpct_state,impctawp)
|
MACHINE_RESET_MEMBER(jpmimpct_state,impctawp)
|
||||||
@ -1062,13 +1061,6 @@ READ16_MEMBER(jpmimpct_state::inputs1awp_r)
|
|||||||
|
|
||||||
READ16_MEMBER(jpmimpct_state::optos_r)
|
READ16_MEMBER(jpmimpct_state::optos_r)
|
||||||
{
|
{
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i=0; i<6; i++)
|
|
||||||
{
|
|
||||||
if ( stepper_optic_state(i) ) m_optic_pattern |= (1 << i);
|
|
||||||
else m_optic_pattern &= ~(1 << i);
|
|
||||||
}
|
|
||||||
return m_optic_pattern;
|
return m_optic_pattern;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1097,20 +1089,22 @@ WRITE16_MEMBER(jpmimpct_state::jpmioawp_w)
|
|||||||
|
|
||||||
case 0x02:
|
case 0x02:
|
||||||
{
|
{
|
||||||
for (i=0; i<4; i++)
|
m_reel0->update((data >> 0)& 0x0F);
|
||||||
{
|
m_reel1->update((data >> 1)& 0x0F);
|
||||||
stepper_update(i, (data >> i)& 0x0F );
|
m_reel2->update((data >> 2)& 0x0F);
|
||||||
awp_draw_reel(i);
|
m_reel3->update((data >> 3)& 0x0F);
|
||||||
}
|
awp_draw_reel(0, m_reel0);
|
||||||
|
awp_draw_reel(1, m_reel1);
|
||||||
|
awp_draw_reel(2, m_reel2);
|
||||||
|
awp_draw_reel(3, m_reel3);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 0x04:
|
case 0x04:
|
||||||
{
|
{
|
||||||
for (i=0; i<2; i++)
|
m_reel4->update((data >> 4)& 0x0F);
|
||||||
{
|
m_reel5->update((data >> 5)& 0x0F);
|
||||||
stepper_update(i+4, (data >> (i + 4)& 0x0F ));
|
awp_draw_reel(4, m_reel4);
|
||||||
awp_draw_reel(i+4);
|
awp_draw_reel(5, m_reel5);
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 0x06:
|
case 0x06:
|
||||||
|
@ -81,21 +81,9 @@
|
|||||||
// called if board is reset ///////////////////////////////////////////////
|
// called if board is reset ///////////////////////////////////////////////
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
void maygay1b_state::m1_stepper_reset()
|
|
||||||
{
|
|
||||||
int pattern = 0,i;
|
|
||||||
for ( i = 0; i < 6; i++)
|
|
||||||
{
|
|
||||||
stepper_reset_position(i);
|
|
||||||
if ( stepper_optic_state(i) ) pattern |= 1<<i;
|
|
||||||
}
|
|
||||||
m_optic_pattern = pattern;
|
|
||||||
}
|
|
||||||
|
|
||||||
void maygay1b_state::machine_reset()
|
void maygay1b_state::machine_reset()
|
||||||
{
|
{
|
||||||
m_vfd->reset(); // reset display1
|
m_vfd->reset(); // reset display1
|
||||||
m1_stepper_reset();
|
|
||||||
m_Vmm=false;
|
m_Vmm=false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -293,58 +281,43 @@ INPUT_PORTS_END
|
|||||||
|
|
||||||
void maygay1b_state::machine_start()
|
void maygay1b_state::machine_start()
|
||||||
{
|
{
|
||||||
int i;
|
|
||||||
|
|
||||||
// setup 8 mechanical meters ////////////////////////////////////////////
|
// setup 8 mechanical meters ////////////////////////////////////////////
|
||||||
MechMtr_config(machine(),8);
|
MechMtr_config(machine(),8);
|
||||||
|
|
||||||
// setup 6 default 96 half step reels ///////////////////////////////////
|
// setup 6 default 96 half step reels ///////////////////////////////////
|
||||||
for ( i = 0; i < 6; i++ )
|
m_reel0->configure(&starpoint_interface_48step);
|
||||||
{
|
m_reel1->configure(&starpoint_interface_48step);
|
||||||
stepper_config(machine(), i, &starpoint_interface_48step);
|
m_reel2->configure(&starpoint_interface_48step);
|
||||||
}
|
m_reel3->configure(&starpoint_interface_48step);
|
||||||
|
m_reel4->configure(&starpoint_interface_48step);
|
||||||
|
m_reel5->configure(&starpoint_interface_48step);
|
||||||
|
|
||||||
}
|
}
|
||||||
WRITE8_MEMBER(maygay1b_state::reel12_w)
|
WRITE8_MEMBER(maygay1b_state::reel12_w)
|
||||||
{
|
{
|
||||||
stepper_update(0, data & 0x0F );
|
m_reel0->update( data & 0x0F);
|
||||||
stepper_update(1, (data>>4) & 0x0F );
|
m_reel1->update((data>>4) & 0x0F);
|
||||||
|
|
||||||
if ( stepper_optic_state(0) ) m_optic_pattern |= 0x01;
|
awp_draw_reel(0, m_reel0);
|
||||||
else m_optic_pattern &= ~0x01;
|
awp_draw_reel(1, m_reel1);
|
||||||
if ( stepper_optic_state(1) ) m_optic_pattern |= 0x02;
|
|
||||||
else m_optic_pattern &= ~0x02;
|
|
||||||
|
|
||||||
awp_draw_reel(0);
|
|
||||||
awp_draw_reel(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(maygay1b_state::reel34_w)
|
WRITE8_MEMBER(maygay1b_state::reel34_w)
|
||||||
{
|
{
|
||||||
stepper_update(2, data & 0x0F );
|
m_reel2->update( data & 0x0F);
|
||||||
stepper_update(3, (data>>4) & 0x0F );
|
m_reel3->update((data>>4) & 0x0F);
|
||||||
|
|
||||||
if ( stepper_optic_state(2) ) m_optic_pattern |= 0x04;
|
awp_draw_reel(2, m_reel2);
|
||||||
else m_optic_pattern &= ~0x04;
|
awp_draw_reel(3, m_reel3);
|
||||||
if ( stepper_optic_state(3) ) m_optic_pattern |= 0x08;
|
|
||||||
else m_optic_pattern &= ~0x08;
|
|
||||||
|
|
||||||
awp_draw_reel(2);
|
|
||||||
awp_draw_reel(3);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(maygay1b_state::reel56_w)
|
WRITE8_MEMBER(maygay1b_state::reel56_w)
|
||||||
{
|
{
|
||||||
stepper_update(4, data & 0x0F );
|
m_reel4->update( data & 0x0F);
|
||||||
stepper_update(5, (data>>4) & 0x0F );
|
m_reel5->update((data>>4) & 0x0F);
|
||||||
|
|
||||||
if ( stepper_optic_state(4) ) m_optic_pattern |= 0x10;
|
awp_draw_reel(4, m_reel4);
|
||||||
else m_optic_pattern &= ~0x10;
|
awp_draw_reel(5, m_reel5);
|
||||||
if ( stepper_optic_state(5) ) m_optic_pattern |= 0x20;
|
|
||||||
else m_optic_pattern &= ~0x20;
|
|
||||||
|
|
||||||
awp_draw_reel(4);
|
|
||||||
awp_draw_reel(5);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
READ8_MEMBER(maygay1b_state::m1_duart_r)
|
READ8_MEMBER(maygay1b_state::m1_duart_r)
|
||||||
@ -651,6 +624,19 @@ MACHINE_CONFIG_START( maygay_m1, maygay1b_state )
|
|||||||
MCFG_DEVICE_ADD("i8279_2", I8279, M1_MASTER_CLOCK/4) // unknown clock
|
MCFG_DEVICE_ADD("i8279_2", I8279, M1_MASTER_CLOCK/4) // unknown clock
|
||||||
MCFG_I8279_OUT_DISP_CB(WRITE8(maygay1b_state, lamp_data_2_w)) // display A&B
|
MCFG_I8279_OUT_DISP_CB(WRITE8(maygay1b_state, lamp_data_2_w)) // display A&B
|
||||||
|
|
||||||
|
MCFG_DEVICE_ADD("reel0", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(maygay1b_state, reel0_optic_cb))
|
||||||
|
MCFG_DEVICE_ADD("reel1", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(maygay1b_state, reel1_optic_cb))
|
||||||
|
MCFG_DEVICE_ADD("reel2", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(maygay1b_state, reel2_optic_cb))
|
||||||
|
MCFG_DEVICE_ADD("reel3", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(maygay1b_state, reel3_optic_cb))
|
||||||
|
MCFG_DEVICE_ADD("reel4", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(maygay1b_state, reel4_optic_cb))
|
||||||
|
MCFG_DEVICE_ADD("reel5", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(maygay1b_state, reel5_optic_cb))
|
||||||
|
|
||||||
MCFG_NVRAM_ADD_0FILL("nvram")
|
MCFG_NVRAM_ADD_0FILL("nvram")
|
||||||
|
|
||||||
MCFG_DEFAULT_LAYOUT(layout_maygay1b)
|
MCFG_DEFAULT_LAYOUT(layout_maygay1b)
|
||||||
|
@ -132,7 +132,12 @@ public:
|
|||||||
mpu3_state(const machine_config &mconfig, device_type type, const char *tag)
|
mpu3_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
: driver_device(mconfig, type, tag),
|
: driver_device(mconfig, type, tag),
|
||||||
m_vfd(*this, "vfd"),
|
m_vfd(*this, "vfd"),
|
||||||
m_maincpu(*this, "maincpu") { }
|
m_maincpu(*this, "maincpu"),
|
||||||
|
m_reel0(*this, "reel0"),
|
||||||
|
m_reel1(*this, "reel1"),
|
||||||
|
m_reel2(*this, "reel2"),
|
||||||
|
m_reel3(*this, "reel3")
|
||||||
|
{ }
|
||||||
optional_device<roc10937_t> m_vfd;
|
optional_device<roc10937_t> m_vfd;
|
||||||
|
|
||||||
|
|
||||||
@ -165,6 +170,11 @@ int m_prot_col;
|
|||||||
|
|
||||||
int m_optic_pattern;
|
int m_optic_pattern;
|
||||||
|
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel0_optic_cb) { if (state) m_optic_pattern |= 0x01; else m_optic_pattern &= ~0x01; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel1_optic_cb) { if (state) m_optic_pattern |= 0x02; else m_optic_pattern &= ~0x02; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel2_optic_cb) { if (state) m_optic_pattern |= 0x04; else m_optic_pattern &= ~0x04; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel3_optic_cb) { if (state) m_optic_pattern |= 0x08; else m_optic_pattern &= ~0x08; }
|
||||||
|
|
||||||
emu_timer *m_ic21_timer;
|
emu_timer *m_ic21_timer;
|
||||||
DECLARE_WRITE8_MEMBER(characteriser_w);
|
DECLARE_WRITE8_MEMBER(characteriser_w);
|
||||||
DECLARE_READ8_MEMBER(characteriser_r);
|
DECLARE_READ8_MEMBER(characteriser_r);
|
||||||
@ -198,12 +208,15 @@ emu_timer *m_ic21_timer;
|
|||||||
TIMER_DEVICE_CALLBACK_MEMBER(gen_50hz);
|
TIMER_DEVICE_CALLBACK_MEMBER(gen_50hz);
|
||||||
TIMER_DEVICE_CALLBACK_MEMBER(ic10_callback);
|
TIMER_DEVICE_CALLBACK_MEMBER(ic10_callback);
|
||||||
void update_triacs();
|
void update_triacs();
|
||||||
void mpu3_stepper_reset();
|
|
||||||
void ic11_update();
|
void ic11_update();
|
||||||
void ic21_output(int data);
|
void ic21_output(int data);
|
||||||
void ic21_setup();
|
void ic21_setup();
|
||||||
void mpu3_config_common();
|
void mpu3_config_common();
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
|
required_device<stepper_device> m_reel0;
|
||||||
|
required_device<stepper_device> m_reel1;
|
||||||
|
required_device<stepper_device> m_reel2;
|
||||||
|
required_device<stepper_device> m_reel3;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define DISPLAY_PORT 0
|
#define DISPLAY_PORT 0
|
||||||
@ -224,23 +237,10 @@ void mpu3_state::update_triacs()
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* called if board is reset */
|
/* called if board is reset */
|
||||||
void mpu3_state::mpu3_stepper_reset()
|
|
||||||
{
|
|
||||||
int pattern = 0,reel;
|
|
||||||
for (reel = 0; reel < 6; reel++)
|
|
||||||
{
|
|
||||||
stepper_reset_position(reel);
|
|
||||||
if (stepper_optic_state(reel)) pattern |= 1<<reel;
|
|
||||||
}
|
|
||||||
m_optic_pattern = pattern;
|
|
||||||
}
|
|
||||||
|
|
||||||
void mpu3_state::machine_reset()
|
void mpu3_state::machine_reset()
|
||||||
{
|
{
|
||||||
m_vfd->reset();
|
m_vfd->reset();
|
||||||
|
|
||||||
mpu3_stepper_reset();
|
|
||||||
|
|
||||||
m_lamp_strobe = 0;
|
m_lamp_strobe = 0;
|
||||||
m_led_strobe = 0;
|
m_led_strobe = 0;
|
||||||
|
|
||||||
@ -509,29 +509,14 @@ WRITE_LINE_MEMBER(mpu3_state::pia_ic4_cb2_w)
|
|||||||
WRITE8_MEMBER(mpu3_state::pia_ic5_porta_w)
|
WRITE8_MEMBER(mpu3_state::pia_ic5_porta_w)
|
||||||
{
|
{
|
||||||
LOG(("%s: IC5 PIA Port A Set to %2x (Reel)\n", machine().describe_context(),data));
|
LOG(("%s: IC5 PIA Port A Set to %2x (Reel)\n", machine().describe_context(),data));
|
||||||
stepper_update(0, data & 0x03 );
|
m_reel0->update( data & 0x03);
|
||||||
stepper_update(1, (data>>2) & 0x03 );
|
m_reel1->update((data>>2) & 0x03);
|
||||||
stepper_update(2, (data>>4) & 0x03 );
|
m_reel2->update((data>>4) & 0x03);
|
||||||
stepper_update(3, (data>>6) & 0x03 );
|
m_reel3->update((data>>6) & 0x03);
|
||||||
awp_draw_reel(0);
|
awp_draw_reel(0, m_reel0);
|
||||||
awp_draw_reel(1);
|
awp_draw_reel(1, m_reel1);
|
||||||
awp_draw_reel(2);
|
awp_draw_reel(2, m_reel2);
|
||||||
awp_draw_reel(3);
|
awp_draw_reel(3, m_reel3);
|
||||||
|
|
||||||
{
|
|
||||||
if ( stepper_optic_state(0) ) m_optic_pattern |= 0x01;
|
|
||||||
else m_optic_pattern &= ~0x01;
|
|
||||||
|
|
||||||
if ( stepper_optic_state(1) ) m_optic_pattern |= 0x02;
|
|
||||||
else m_optic_pattern &= ~0x02;
|
|
||||||
if ( stepper_optic_state(2) ) m_optic_pattern |= 0x04;
|
|
||||||
else m_optic_pattern &= ~0x04;
|
|
||||||
|
|
||||||
if ( stepper_optic_state(3) ) m_optic_pattern |= 0x08;
|
|
||||||
else m_optic_pattern &= ~0x08;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
READ8_MEMBER(mpu3_state::pia_ic5_portb_r)
|
READ8_MEMBER(mpu3_state::pia_ic5_portb_r)
|
||||||
@ -723,10 +708,10 @@ void mpu3_state::machine_start()
|
|||||||
MechMtr_config(machine(),8);
|
MechMtr_config(machine(),8);
|
||||||
|
|
||||||
/* setup 4 reels */
|
/* setup 4 reels */
|
||||||
stepper_config(machine(), 0, &mpu3_reel_interface);
|
m_reel0->configure(&mpu3_reel_interface);
|
||||||
stepper_config(machine(), 1, &mpu3_reel_interface);
|
m_reel1->configure(&mpu3_reel_interface);
|
||||||
stepper_config(machine(), 2, &mpu3_reel_interface);
|
m_reel2->configure(&mpu3_reel_interface);
|
||||||
stepper_config(machine(), 3, &mpu3_reel_interface);
|
m_reel3->configure(&mpu3_reel_interface);
|
||||||
|
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
@ -871,6 +856,15 @@ static MACHINE_CONFIG_START( mpu3base, mpu3_state )
|
|||||||
MCFG_PIA_IRQA_HANDLER(WRITELINE(mpu3_state, cpu0_irq))
|
MCFG_PIA_IRQA_HANDLER(WRITELINE(mpu3_state, cpu0_irq))
|
||||||
MCFG_PIA_IRQB_HANDLER(WRITELINE(mpu3_state, cpu0_irq))
|
MCFG_PIA_IRQB_HANDLER(WRITELINE(mpu3_state, cpu0_irq))
|
||||||
|
|
||||||
|
MCFG_DEVICE_ADD("reel0", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu3_state, reel0_optic_cb))
|
||||||
|
MCFG_DEVICE_ADD("reel1", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu3_state, reel1_optic_cb))
|
||||||
|
MCFG_DEVICE_ADD("reel2", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu3_state, reel2_optic_cb))
|
||||||
|
MCFG_DEVICE_ADD("reel3", STEPPER, 0)
|
||||||
|
MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu3_state, reel3_optic_cb))
|
||||||
|
|
||||||
MCFG_NVRAM_ADD_0FILL("nvram")
|
MCFG_NVRAM_ADD_0FILL("nvram")
|
||||||
|
|
||||||
MCFG_DEFAULT_LAYOUT(layout_mpu3)
|
MCFG_DEFAULT_LAYOUT(layout_mpu3)
|
||||||
|
@ -171,8 +171,6 @@ MACHINE_RESET_MEMBER(mpu4dealem_state,dealem_vid)
|
|||||||
{
|
{
|
||||||
m_vfd->reset(); //for debug ports only
|
m_vfd->reset(); //for debug ports only
|
||||||
|
|
||||||
mpu4_stepper_reset();
|
|
||||||
|
|
||||||
m_lamp_strobe = 0;
|
m_lamp_strobe = 0;
|
||||||
m_lamp_strobe2 = 0;
|
m_lamp_strobe2 = 0;
|
||||||
m_led_strobe = 0;
|
m_led_strobe = 0;
|
||||||
|
@ -375,41 +375,41 @@ void mpu4_state::update_meters()
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case FIVE_REEL_5TO8:
|
case FIVE_REEL_5TO8:
|
||||||
stepper_update(4, ((data >> 4) & 0x0f));
|
m_reel4->update(((data >> 4) & 0x0f));
|
||||||
data = (data & 0x0F); //Strip reel data from meter drives, leaving active elements
|
data = (data & 0x0F); //Strip reel data from meter drives, leaving active elements
|
||||||
awp_draw_reel(4);
|
awp_draw_reel(4, m_reel4);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FIVE_REEL_8TO5:
|
case FIVE_REEL_8TO5:
|
||||||
stepper_update(4, (((data & 0x01) + ((data & 0x08) >> 2) + ((data & 0x20) >> 3) + ((data & 0x80) >> 4)) & 0x0f)) ;
|
m_reel4->update((((data & 0x01) + ((data & 0x08) >> 2) + ((data & 0x20) >> 3) + ((data & 0x80) >> 4)) & 0x0f)) ;
|
||||||
data = 0x00; //Strip all reel data from meter drives, nothing is connected
|
data = 0x00; //Strip all reel data from meter drives, nothing is connected
|
||||||
awp_draw_reel(4);
|
awp_draw_reel(4, m_reel4);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FIVE_REEL_3TO6:
|
case FIVE_REEL_3TO6:
|
||||||
stepper_update(4, ((data >> 2) & 0x0f));
|
m_reel4->update(((data >> 2) & 0x0f));
|
||||||
data = 0x00; //Strip all reel data from meter drives
|
data = 0x00; //Strip all reel data from meter drives
|
||||||
awp_draw_reel(4);
|
awp_draw_reel(4, m_reel4);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SIX_REEL_1TO8:
|
case SIX_REEL_1TO8:
|
||||||
stepper_update(4, (data & 0x0f));
|
m_reel4->update( data & 0x0f);
|
||||||
stepper_update(5, ((data >> 4) & 0x0f));
|
m_reel5->update((data >> 4) & 0x0f);
|
||||||
data = 0x00; //Strip all reel data from meter drives
|
data = 0x00; //Strip all reel data from meter drives
|
||||||
awp_draw_reel(4);
|
awp_draw_reel(4, m_reel4);
|
||||||
awp_draw_reel(5);
|
awp_draw_reel(5, m_reel5);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SIX_REEL_5TO8:
|
case SIX_REEL_5TO8:
|
||||||
stepper_update(4, ((data >> 4) & 0x0f));
|
m_reel4->update(((data >> 4) & 0x0f));
|
||||||
data = 0x00; //Strip all reel data from meter drives
|
data = 0x00; //Strip all reel data from meter drives
|
||||||
awp_draw_reel(4);
|
awp_draw_reel(4, m_reel4);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SEVEN_REEL:
|
case SEVEN_REEL:
|
||||||
stepper_update(0, (((data & 0x01) + ((data & 0x08) >> 2) + ((data & 0x20) >> 3) + ((data & 0x80) >> 4)) & 0x0f)) ;
|
m_reel0->update((((data & 0x01) + ((data & 0x08) >> 2) + ((data & 0x20) >> 3) + ((data & 0x80) >> 4)) & 0x0f)) ;
|
||||||
data = 0x00; //Strip all reel data from meter drives
|
data = 0x00; //Strip all reel data from meter drives
|
||||||
awp_draw_reel(0);
|
awp_draw_reel(0, m_reel0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FLUTTERBOX: //The backbox fan assembly fits in a reel unit sized box, wired to the remote meter pin, so we can handle it here
|
case FLUTTERBOX: //The backbox fan assembly fits in a reel unit sized box, wired to the remote meter pin, so we can handle it here
|
||||||
@ -433,27 +433,10 @@ void mpu4_state::update_meters()
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* called if board is reset */
|
/* called if board is reset */
|
||||||
void mpu4_state::mpu4_stepper_reset()
|
|
||||||
{
|
|
||||||
int pattern = 0,reel;
|
|
||||||
for (reel = 0; reel < 6; reel++)
|
|
||||||
{
|
|
||||||
stepper_reset_position(reel);
|
|
||||||
if(!m_reel_mux)
|
|
||||||
{
|
|
||||||
if (stepper_optic_state(reel)) pattern |= 1<<reel;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
m_optic_pattern = pattern;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
MACHINE_RESET_MEMBER(mpu4_state,mpu4)
|
MACHINE_RESET_MEMBER(mpu4_state,mpu4)
|
||||||
{
|
{
|
||||||
m_vfd->reset();
|
m_vfd->reset();
|
||||||
|
|
||||||
mpu4_stepper_reset();
|
|
||||||
|
|
||||||
m_lamp_strobe = 0;
|
m_lamp_strobe = 0;
|
||||||
m_lamp_strobe2 = 0;
|
m_lamp_strobe2 = 0;
|
||||||
m_led_strobe = 0;
|
m_led_strobe = 0;
|
||||||
@ -788,7 +771,7 @@ READ8_MEMBER(mpu4_state::pia_ic4_portb_r)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (stepper_optic_state(m_active_reel))
|
if (m_optic_pattern & (1<<m_active_reel))
|
||||||
{
|
{
|
||||||
m_ic4_input_b |= 0x08;
|
m_ic4_input_b |= 0x08;
|
||||||
}
|
}
|
||||||
@ -915,18 +898,18 @@ WRITE8_MEMBER(mpu4_state::pia_ic5_porta_w)
|
|||||||
}
|
}
|
||||||
if (m_reel_mux == SIX_REEL_5TO8)
|
if (m_reel_mux == SIX_REEL_5TO8)
|
||||||
{
|
{
|
||||||
stepper_update(4, data&0x0F);
|
m_reel4->update( data &0x0F);
|
||||||
stepper_update(5, (data >> 4)&0x0F);
|
m_reel5->update((data >> 4)&0x0F);
|
||||||
awp_draw_reel(4);
|
awp_draw_reel(4, m_reel4);
|
||||||
awp_draw_reel(5);
|
awp_draw_reel(5, m_reel5);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (m_reel_mux == SEVEN_REEL)
|
if (m_reel_mux == SEVEN_REEL)
|
||||||
{
|
{
|
||||||
stepper_update(1, data&0x0F);
|
m_reel1->update( data &0x0F);
|
||||||
stepper_update(2, (data >> 4)&0x0F);
|
m_reel2->update((data >> 4)&0x0F);
|
||||||
awp_draw_reel(1);
|
awp_draw_reel(1, m_reel1);
|
||||||
awp_draw_reel(2);
|
awp_draw_reel(2, m_reel2);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (core_stricmp(machine().system().name, "m4gambal") == 0)
|
if (core_stricmp(machine().system().name, "m4gambal") == 0)
|
||||||
@ -1139,26 +1122,17 @@ WRITE8_MEMBER(mpu4_state::pia_ic6_portb_w)
|
|||||||
|
|
||||||
if (m_reel_mux == SEVEN_REEL)
|
if (m_reel_mux == SEVEN_REEL)
|
||||||
{
|
{
|
||||||
stepper_update(3, data&0x0F);
|
m_reel3->update( data &0x0F);
|
||||||
stepper_update(4, (data >> 4)&0x0F);
|
m_reel4->update((data >> 4)&0x0F);
|
||||||
awp_draw_reel(3);
|
awp_draw_reel(3, m_reel3);
|
||||||
awp_draw_reel(4);
|
awp_draw_reel(4, m_reel4);
|
||||||
}
|
}
|
||||||
else if (m_reels)
|
else if (m_reels)
|
||||||
{
|
{
|
||||||
stepper_update(0, data & 0x0F );
|
m_reel0->update( data &0x0F);
|
||||||
stepper_update(1, (data>>4) & 0x0F );
|
m_reel1->update((data >> 4)&0x0F);
|
||||||
awp_draw_reel(0);
|
awp_draw_reel(0, m_reel0);
|
||||||
awp_draw_reel(1);
|
awp_draw_reel(1, m_reel1);
|
||||||
}
|
|
||||||
|
|
||||||
if (m_reel_flag && (m_reel_mux == STANDARD_REEL) && m_reels)
|
|
||||||
{
|
|
||||||
if ( stepper_optic_state(0) ) m_optic_pattern |= 0x01;
|
|
||||||
else m_optic_pattern &= ~0x01;
|
|
||||||
|
|
||||||
if ( stepper_optic_state(1) ) m_optic_pattern |= 0x02;
|
|
||||||
else m_optic_pattern &= ~0x02;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1204,25 +1178,17 @@ WRITE8_MEMBER(mpu4_state::pia_ic7_porta_w)
|
|||||||
LOG(("%s: IC7 PIA Port A Set to %2x (Reel C and D)\n", machine().describe_context(),data));
|
LOG(("%s: IC7 PIA Port A Set to %2x (Reel C and D)\n", machine().describe_context(),data));
|
||||||
if (m_reel_mux == SEVEN_REEL)
|
if (m_reel_mux == SEVEN_REEL)
|
||||||
{
|
{
|
||||||
stepper_update(5, data&0x0F);
|
m_reel5->update( data &0x0F);
|
||||||
stepper_update(6, (data >> 4)&0x0F);
|
m_reel6->update((data >> 4)&0x0F);
|
||||||
awp_draw_reel(5);
|
awp_draw_reel(5, m_reel5);
|
||||||
awp_draw_reel(6);
|
awp_draw_reel(6, m_reel6);
|
||||||
}
|
}
|
||||||
else if (m_reels)
|
else if (m_reels)
|
||||||
{
|
{
|
||||||
stepper_update(2, data & 0x0F );
|
m_reel2->update( data &0x0F);
|
||||||
stepper_update(3, (data>>4) & 0x0F );
|
m_reel3->update((data >> 4)&0x0F);
|
||||||
awp_draw_reel(2);
|
awp_draw_reel(2, m_reel2);
|
||||||
awp_draw_reel(3);
|
awp_draw_reel(3, m_reel3);
|
||||||
}
|
|
||||||
|
|
||||||
if (m_reel_flag && (m_reel_mux == STANDARD_REEL) && m_reels)
|
|
||||||
{
|
|
||||||
if ( stepper_optic_state(2) ) m_optic_pattern |= 0x04;
|
|
||||||
else m_optic_pattern &= ~0x04;
|
|
||||||
if ( stepper_optic_state(3) ) m_optic_pattern |= 0x08;
|
|
||||||
else m_optic_pattern &= ~0x08;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2230,16 +2196,6 @@ void mpu4_state::mpu4_config_common()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void mpu4_state::mpu4_config_common_reels(int reels)
|
|
||||||
{
|
|
||||||
int n;
|
|
||||||
/* setup n default 96 half step reels, using the standard optic flag */
|
|
||||||
for ( n = 0; n < reels; n++ )
|
|
||||||
{
|
|
||||||
stepper_config(machine(), n, &barcrest_reel_interface);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
MACHINE_START_MEMBER(mpu4_state,mod2)
|
MACHINE_START_MEMBER(mpu4_state,mod2)
|
||||||
{
|
{
|
||||||
mpu4_config_common();
|
mpu4_config_common();
|
||||||
@ -2368,12 +2324,12 @@ DRIVER_INIT_MEMBER(mpu4_state,m_oldtmr)
|
|||||||
m_reel_mux=SIX_REEL_1TO8;
|
m_reel_mux=SIX_REEL_1TO8;
|
||||||
m_reels = 6;
|
m_reels = 6;
|
||||||
|
|
||||||
stepper_config(machine(), 0, &barcrest_opto1_interface);
|
m_reel0->configure(&barcrest_opto1_interface);
|
||||||
stepper_config(machine(), 1, &barcrest_opto1_interface);
|
m_reel1->configure(&barcrest_opto1_interface);
|
||||||
stepper_config(machine(), 2, &barcrest_opto1_interface);
|
m_reel2->configure(&barcrest_opto1_interface);
|
||||||
stepper_config(machine(), 3, &barcrest_opto1_interface);
|
m_reel3->configure(&barcrest_opto1_interface);
|
||||||
stepper_config(machine(), 4, &barcrest_opto1_interface);
|
m_reel4->configure(&barcrest_opto1_interface);
|
||||||
stepper_config(machine(), 5, &barcrest_opto1_interface);
|
m_reel5->configure(&barcrest_opto1_interface);
|
||||||
DRIVER_INIT_CALL(m4default_banks);
|
DRIVER_INIT_CALL(m4default_banks);
|
||||||
|
|
||||||
m_current_chr_table = oldtmr_data;
|
m_current_chr_table = oldtmr_data;
|
||||||
@ -2384,12 +2340,12 @@ DRIVER_INIT_MEMBER(mpu4_state,m4altreels)
|
|||||||
m_reel_mux=SIX_REEL_1TO8;
|
m_reel_mux=SIX_REEL_1TO8;
|
||||||
m_reels = 6;
|
m_reels = 6;
|
||||||
|
|
||||||
stepper_config(machine(), 0, &barcrest_opto1_interface);
|
m_reel0->configure(&barcrest_opto1_interface);
|
||||||
stepper_config(machine(), 1, &barcrest_opto1_interface);
|
m_reel1->configure(&barcrest_opto1_interface);
|
||||||
stepper_config(machine(), 2, &barcrest_opto1_interface);
|
m_reel2->configure(&barcrest_opto1_interface);
|
||||||
stepper_config(machine(), 3, &barcrest_opto1_interface);
|
m_reel3->configure(&barcrest_opto1_interface);
|
||||||
stepper_config(machine(), 4, &barcrest_opto1_interface);
|
m_reel4->configure(&barcrest_opto1_interface);
|
||||||
stepper_config(machine(), 5, &barcrest_opto1_interface);
|
m_reel5->configure(&barcrest_opto1_interface);
|
||||||
DRIVER_INIT_CALL(m4default_banks);
|
DRIVER_INIT_CALL(m4default_banks);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2412,7 +2368,11 @@ DRIVER_INIT_MEMBER(mpu4_state,m_grtecp)
|
|||||||
m_reels = 5;
|
m_reels = 5;
|
||||||
m_lamp_extender=SMALL_CARD;
|
m_lamp_extender=SMALL_CARD;
|
||||||
// setup 4 default 96 half step reels with the mux board
|
// setup 4 default 96 half step reels with the mux board
|
||||||
mpu4_config_common_reels(5);
|
m_reel0->configure(&barcrest_reel_interface);
|
||||||
|
m_reel1->configure(&barcrest_reel_interface);
|
||||||
|
m_reel2->configure(&barcrest_reel_interface);
|
||||||
|
m_reel3->configure(&barcrest_reel_interface);
|
||||||
|
m_reel4->configure(&barcrest_reel_interface);
|
||||||
DRIVER_INIT_CALL(m4default_banks);
|
DRIVER_INIT_CALL(m4default_banks);
|
||||||
|
|
||||||
m_current_chr_table = grtecp_data;
|
m_current_chr_table = grtecp_data;
|
||||||
@ -2423,11 +2383,11 @@ DRIVER_INIT_MEMBER(mpu4_state,m_blsbys)
|
|||||||
m_bwb_bank=1;
|
m_bwb_bank=1;
|
||||||
m_reel_mux=FIVE_REEL_5TO8;
|
m_reel_mux=FIVE_REEL_5TO8;
|
||||||
m_reels = 5;
|
m_reels = 5;
|
||||||
stepper_config(machine(), 0, &bwb_opto1_interface);
|
m_reel0->configure(&bwb_opto1_interface);
|
||||||
stepper_config(machine(), 1, &bwb_opto1_interface);
|
m_reel1->configure(&bwb_opto1_interface);
|
||||||
stepper_config(machine(), 2, &bwb_opto1_interface);
|
m_reel2->configure(&bwb_opto1_interface);
|
||||||
stepper_config(machine(), 3, &bwb_opto1_interface);
|
m_reel3->configure(&bwb_opto1_interface);
|
||||||
stepper_config(machine(), 4, &bwb_opto1_interface);
|
m_reel4->configure(&bwb_opto1_interface);
|
||||||
m_bwb_chr_table1 = blsbys_data1;
|
m_bwb_chr_table1 = blsbys_data1;
|
||||||
m_current_chr_table = blsbys_data;
|
m_current_chr_table = blsbys_data;
|
||||||
DRIVER_INIT_CALL(m4default_big);
|
DRIVER_INIT_CALL(m4default_big);
|
||||||
@ -2437,7 +2397,10 @@ DRIVER_INIT_MEMBER(mpu4_state,m4default_reels)
|
|||||||
{
|
{
|
||||||
m_reel_mux=STANDARD_REEL;
|
m_reel_mux=STANDARD_REEL;
|
||||||
m_reels = 4;
|
m_reels = 4;
|
||||||
mpu4_config_common_reels(4);
|
m_reel0->configure(&barcrest_reel_interface);
|
||||||
|
m_reel1->configure(&barcrest_reel_interface);
|
||||||
|
m_reel2->configure(&barcrest_reel_interface);
|
||||||
|
m_reel3->configure(&barcrest_reel_interface);
|
||||||
m_bwb_bank=0;
|
m_bwb_bank=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2453,14 +2416,14 @@ DRIVER_INIT_MEMBER(mpu4_state,m4default_alt)
|
|||||||
{
|
{
|
||||||
m_reel_mux=STANDARD_REEL;
|
m_reel_mux=STANDARD_REEL;
|
||||||
m_reels = 8;
|
m_reels = 8;
|
||||||
stepper_config(machine(), 0, &barcrest_opto2_interface);
|
m_reel0->configure(&barcrest_opto2_interface);
|
||||||
stepper_config(machine(), 1, &barcrest_opto2_interface);
|
m_reel1->configure(&barcrest_opto2_interface);
|
||||||
stepper_config(machine(), 2, &barcrest_opto2_interface);
|
m_reel2->configure(&barcrest_opto2_interface);
|
||||||
stepper_config(machine(), 3, &barcrest_opto2_interface);
|
m_reel3->configure(&barcrest_opto2_interface);
|
||||||
stepper_config(machine(), 4, &barcrest_opto2_interface);
|
m_reel4->configure(&barcrest_opto2_interface);
|
||||||
stepper_config(machine(), 5, &barcrest_opto2_interface);
|
m_reel5->configure(&barcrest_opto2_interface);
|
||||||
stepper_config(machine(), 6, &barcrest_opto2_interface);
|
m_reel6->configure(&barcrest_opto2_interface);
|
||||||
stepper_config(machine(), 7, &barcrest_opto2_interface);
|
m_reel7->configure(&barcrest_opto2_interface);
|
||||||
DRIVER_INIT_CALL(m4default_banks);
|
DRIVER_INIT_CALL(m4default_banks);
|
||||||
|
|
||||||
m_bwb_bank=0;
|
m_bwb_bank=0;
|
||||||
|
@ -1263,8 +1263,6 @@ MACHINE_RESET_MEMBER(mpu4vid_state,mpu4_vid)
|
|||||||
{
|
{
|
||||||
m_vfd->reset(); //for debug ports only
|
m_vfd->reset(); //for debug ports only
|
||||||
|
|
||||||
mpu4_stepper_reset();
|
|
||||||
|
|
||||||
m_lamp_strobe = 0;
|
m_lamp_strobe = 0;
|
||||||
m_lamp_strobe2 = 0;
|
m_lamp_strobe2 = 0;
|
||||||
m_led_strobe = 0;
|
m_led_strobe = 0;
|
||||||
|
@ -101,6 +101,12 @@ public:
|
|||||||
m_maincpu(*this, "maincpu"),
|
m_maincpu(*this, "maincpu"),
|
||||||
m_cpuregion(*this, "maincpu"),
|
m_cpuregion(*this, "maincpu"),
|
||||||
m_nvram(*this, "nvram"),
|
m_nvram(*this, "nvram"),
|
||||||
|
m_reel0(*this, "reel0"),
|
||||||
|
m_reel1(*this, "reel1"),
|
||||||
|
m_reel2(*this, "reel2"),
|
||||||
|
m_reel3(*this, "reel3"),
|
||||||
|
m_reel4(*this, "reel4"),
|
||||||
|
m_reel5(*this, "reel5"),
|
||||||
m_io1(*this, "IN-0"),
|
m_io1(*this, "IN-0"),
|
||||||
m_io2(*this, "IN-1"),
|
m_io2(*this, "IN-1"),
|
||||||
m_io3(*this, "IN-2"),
|
m_io3(*this, "IN-2"),
|
||||||
@ -122,6 +128,12 @@ public:
|
|||||||
required_memory_region m_cpuregion;
|
required_memory_region m_cpuregion;
|
||||||
// devices
|
// devices
|
||||||
required_device<nvram_device> m_nvram;
|
required_device<nvram_device> m_nvram;
|
||||||
|
required_device<stepper_device> m_reel0;
|
||||||
|
required_device<stepper_device> m_reel1;
|
||||||
|
required_device<stepper_device> m_reel2;
|
||||||
|
required_device<stepper_device> m_reel3;
|
||||||
|
required_device<stepper_device> m_reel4;
|
||||||
|
required_device<stepper_device> m_reel5;
|
||||||
|
|
||||||
|
|
||||||
const stepper_interface **m_reel_setup;
|
const stepper_interface **m_reel_setup;
|
||||||
@ -131,6 +143,12 @@ public:
|
|||||||
int m_reel4_latch;
|
int m_reel4_latch;
|
||||||
int m_reel56_latch;
|
int m_reel56_latch;
|
||||||
int m_optic_pattern;
|
int m_optic_pattern;
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel0_optic_cb) { if (state) m_optic_pattern |= 0x01; else m_optic_pattern &= ~0x01; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel1_optic_cb) { if (state) m_optic_pattern |= 0x02; else m_optic_pattern &= ~0x02; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel2_optic_cb) { if (state) m_optic_pattern |= 0x04; else m_optic_pattern &= ~0x04; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel3_optic_cb) { if (state) m_optic_pattern |= 0x08; else m_optic_pattern &= ~0x08; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel4_optic_cb) { if (state) m_optic_pattern |= 0x10; else m_optic_pattern &= ~0x10; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel5_optic_cb) { if (state) m_optic_pattern |= 0x20; else m_optic_pattern &= ~0x20; }
|
||||||
SEC sec;
|
SEC sec;
|
||||||
|
|
||||||
int m_meterstatus;
|
int m_meterstatus;
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
#include "machine/roc10937.h"
|
#include "machine/roc10937.h"
|
||||||
|
#include "machine/steppers.h"
|
||||||
#include "cpu/tms34010/tms34010.h"
|
#include "cpu/tms34010/tms34010.h"
|
||||||
#include "sound/upd7759.h"
|
#include "sound/upd7759.h"
|
||||||
|
|
||||||
@ -62,7 +63,14 @@ public:
|
|||||||
m_maincpu(*this, "maincpu"),
|
m_maincpu(*this, "maincpu"),
|
||||||
m_upd7759(*this, "upd"),
|
m_upd7759(*this, "upd"),
|
||||||
m_palette(*this, "palette"),
|
m_palette(*this, "palette"),
|
||||||
m_dsp(*this, "dsp") { }
|
m_dsp(*this, "dsp"),
|
||||||
|
m_reel0(*this, "reel0"),
|
||||||
|
m_reel1(*this, "reel1"),
|
||||||
|
m_reel2(*this, "reel2"),
|
||||||
|
m_reel3(*this, "reel3"),
|
||||||
|
m_reel4(*this, "reel4"),
|
||||||
|
m_reel5(*this, "reel5")
|
||||||
|
{ }
|
||||||
|
|
||||||
UINT8 m_tms_irq;
|
UINT8 m_tms_irq;
|
||||||
UINT8 m_duart_1_irq;
|
UINT8 m_duart_1_irq;
|
||||||
@ -72,6 +80,12 @@ public:
|
|||||||
int m_lamp_strobe;
|
int m_lamp_strobe;
|
||||||
UINT8 m_Lamps[256];
|
UINT8 m_Lamps[256];
|
||||||
int m_optic_pattern;
|
int m_optic_pattern;
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel0_optic_cb) { if (state) m_optic_pattern |= 0x01; else m_optic_pattern &= ~0x01; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel1_optic_cb) { if (state) m_optic_pattern |= 0x02; else m_optic_pattern &= ~0x02; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel2_optic_cb) { if (state) m_optic_pattern |= 0x04; else m_optic_pattern &= ~0x04; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel3_optic_cb) { if (state) m_optic_pattern |= 0x08; else m_optic_pattern &= ~0x08; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel4_optic_cb) { if (state) m_optic_pattern |= 0x10; else m_optic_pattern &= ~0x10; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel5_optic_cb) { if (state) m_optic_pattern |= 0x20; else m_optic_pattern &= ~0x20; }
|
||||||
int m_payen;
|
int m_payen;
|
||||||
int m_alpha_clock;
|
int m_alpha_clock;
|
||||||
int m_hopinhibit;
|
int m_hopinhibit;
|
||||||
@ -123,4 +137,10 @@ public:
|
|||||||
required_device<upd7759_device> m_upd7759;
|
required_device<upd7759_device> m_upd7759;
|
||||||
optional_device<palette_device> m_palette;
|
optional_device<palette_device> m_palette;
|
||||||
optional_device<tms34010_device> m_dsp;
|
optional_device<tms34010_device> m_dsp;
|
||||||
|
required_device<stepper_device> m_reel0;
|
||||||
|
required_device<stepper_device> m_reel1;
|
||||||
|
required_device<stepper_device> m_reel2;
|
||||||
|
required_device<stepper_device> m_reel3;
|
||||||
|
required_device<stepper_device> m_reel4;
|
||||||
|
required_device<stepper_device> m_reel5;
|
||||||
};
|
};
|
||||||
|
@ -44,7 +44,13 @@ public:
|
|||||||
m_s5_port(*this, "STROBE5"),
|
m_s5_port(*this, "STROBE5"),
|
||||||
m_s6_port(*this, "STROBE6"),
|
m_s6_port(*this, "STROBE6"),
|
||||||
m_s7_port(*this, "STROBE7"),
|
m_s7_port(*this, "STROBE7"),
|
||||||
m_bank1(*this, "bank1")
|
m_bank1(*this, "bank1"),
|
||||||
|
m_reel0(*this, "reel0"),
|
||||||
|
m_reel1(*this, "reel1"),
|
||||||
|
m_reel2(*this, "reel2"),
|
||||||
|
m_reel3(*this, "reel3"),
|
||||||
|
m_reel4(*this, "reel4"),
|
||||||
|
m_reel5(*this, "reel5")
|
||||||
{}
|
{}
|
||||||
|
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
@ -63,6 +69,12 @@ public:
|
|||||||
required_ioport m_s6_port;
|
required_ioport m_s6_port;
|
||||||
required_ioport m_s7_port;
|
required_ioport m_s7_port;
|
||||||
required_memory_bank m_bank1;
|
required_memory_bank m_bank1;
|
||||||
|
required_device<stepper_device> m_reel0;
|
||||||
|
required_device<stepper_device> m_reel1;
|
||||||
|
required_device<stepper_device> m_reel2;
|
||||||
|
required_device<stepper_device> m_reel3;
|
||||||
|
required_device<stepper_device> m_reel4;
|
||||||
|
required_device<stepper_device> m_reel5;
|
||||||
|
|
||||||
UINT8 m_lamppos;
|
UINT8 m_lamppos;
|
||||||
int m_lamp_strobe;
|
int m_lamp_strobe;
|
||||||
@ -79,6 +91,12 @@ public:
|
|||||||
TIMER_DEVICE_CALLBACK_MEMBER( maygay1b_nmitimer_callback );
|
TIMER_DEVICE_CALLBACK_MEMBER( maygay1b_nmitimer_callback );
|
||||||
UINT8 m_Lamps[256];
|
UINT8 m_Lamps[256];
|
||||||
int m_optic_pattern;
|
int m_optic_pattern;
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel0_optic_cb) { if (state) m_optic_pattern |= 0x01; else m_optic_pattern &= ~0x01; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel1_optic_cb) { if (state) m_optic_pattern |= 0x02; else m_optic_pattern &= ~0x02; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel2_optic_cb) { if (state) m_optic_pattern |= 0x04; else m_optic_pattern &= ~0x04; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel3_optic_cb) { if (state) m_optic_pattern |= 0x08; else m_optic_pattern &= ~0x08; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel4_optic_cb) { if (state) m_optic_pattern |= 0x10; else m_optic_pattern &= ~0x10; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel5_optic_cb) { if (state) m_optic_pattern |= 0x20; else m_optic_pattern &= ~0x20; }
|
||||||
DECLARE_WRITE8_MEMBER(scanlines_w);
|
DECLARE_WRITE8_MEMBER(scanlines_w);
|
||||||
DECLARE_WRITE8_MEMBER(lamp_data_w);
|
DECLARE_WRITE8_MEMBER(lamp_data_w);
|
||||||
DECLARE_WRITE8_MEMBER(lamp_data_2_w);
|
DECLARE_WRITE8_MEMBER(lamp_data_2_w);
|
||||||
@ -111,7 +129,6 @@ public:
|
|||||||
virtual void machine_reset();
|
virtual void machine_reset();
|
||||||
void cpu0_firq(int data);
|
void cpu0_firq(int data);
|
||||||
void cpu0_nmi();
|
void cpu0_nmi();
|
||||||
void m1_stepper_reset();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
MACHINE_CONFIG_EXTERN( maygay_m1 );
|
MACHINE_CONFIG_EXTERN( maygay_m1 );
|
||||||
|
@ -113,6 +113,14 @@ public:
|
|||||||
m_aux2_port(*this, "AUX2"),
|
m_aux2_port(*this, "AUX2"),
|
||||||
m_bank1(*this, "bank1"),
|
m_bank1(*this, "bank1"),
|
||||||
m_msm6376(*this, "msm6376"),
|
m_msm6376(*this, "msm6376"),
|
||||||
|
m_reel0(*this, "reel0"),
|
||||||
|
m_reel1(*this, "reel1"),
|
||||||
|
m_reel2(*this, "reel2"),
|
||||||
|
m_reel3(*this, "reel3"),
|
||||||
|
m_reel4(*this, "reel4"),
|
||||||
|
m_reel5(*this, "reel5"),
|
||||||
|
m_reel6(*this, "reel6"),
|
||||||
|
m_reel7(*this, "reel7"),
|
||||||
m_palette(*this, "palette")
|
m_palette(*this, "palette")
|
||||||
{}
|
{}
|
||||||
|
|
||||||
@ -212,7 +220,6 @@ protected:
|
|||||||
void lamp_extend_large(int data,int column,int active);
|
void lamp_extend_large(int data,int column,int active);
|
||||||
void led_write_latch(int latch, int data, int column);
|
void led_write_latch(int latch, int data, int column);
|
||||||
void update_meters();
|
void update_meters();
|
||||||
void mpu4_stepper_reset();
|
|
||||||
void ic23_update();
|
void ic23_update();
|
||||||
void ic24_output(int data);
|
void ic24_output(int data);
|
||||||
void ic24_setup();
|
void ic24_setup();
|
||||||
@ -242,6 +249,14 @@ protected:
|
|||||||
required_ioport m_aux2_port;
|
required_ioport m_aux2_port;
|
||||||
optional_memory_bank m_bank1;
|
optional_memory_bank m_bank1;
|
||||||
optional_device<okim6376_device> m_msm6376;
|
optional_device<okim6376_device> m_msm6376;
|
||||||
|
required_device<stepper_device> m_reel0;
|
||||||
|
required_device<stepper_device> m_reel1;
|
||||||
|
required_device<stepper_device> m_reel2;
|
||||||
|
required_device<stepper_device> m_reel3;
|
||||||
|
required_device<stepper_device> m_reel4;
|
||||||
|
required_device<stepper_device> m_reel5;
|
||||||
|
required_device<stepper_device> m_reel6;
|
||||||
|
required_device<stepper_device> m_reel7;
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
@ -280,6 +295,14 @@ protected:
|
|||||||
UINT8 m_led_strobe;
|
UINT8 m_led_strobe;
|
||||||
UINT8 m_ay_data;
|
UINT8 m_ay_data;
|
||||||
int m_optic_pattern;
|
int m_optic_pattern;
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel0_optic_cb) { if (state) m_optic_pattern |= 0x01; else m_optic_pattern &= ~0x01; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel1_optic_cb) { if (state) m_optic_pattern |= 0x02; else m_optic_pattern &= ~0x02; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel2_optic_cb) { if (state) m_optic_pattern |= 0x04; else m_optic_pattern &= ~0x04; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel3_optic_cb) { if (state) m_optic_pattern |= 0x08; else m_optic_pattern &= ~0x08; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel4_optic_cb) { if (state) m_optic_pattern |= 0x10; else m_optic_pattern &= ~0x10; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel5_optic_cb) { if (state) m_optic_pattern |= 0x20; else m_optic_pattern &= ~0x20; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel6_optic_cb) { if (state) m_optic_pattern |= 0x40; else m_optic_pattern &= ~0x40; }
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(reel7_optic_cb) { if (state) m_optic_pattern |= 0x80; else m_optic_pattern &= ~0x80; }
|
||||||
int m_active_reel;
|
int m_active_reel;
|
||||||
int m_remote_meter;
|
int m_remote_meter;
|
||||||
int m_reel_mux;
|
int m_reel_mux;
|
||||||
|
@ -18,13 +18,13 @@
|
|||||||
|
|
||||||
static UINT16 reelpos[MAX_STEPPERS];
|
static UINT16 reelpos[MAX_STEPPERS];
|
||||||
|
|
||||||
void awp_draw_reel(int rno)
|
void awp_draw_reel(int rno, stepper_device &reel)
|
||||||
{
|
{
|
||||||
int x = rno + 1;
|
int x = rno + 1;
|
||||||
char rg[16];
|
char rg[16];
|
||||||
|
|
||||||
sprintf(rg,"reel%d", x);
|
sprintf(rg,"reel%d", x);
|
||||||
reelpos[rno] = stepper_get_position(rno);
|
reelpos[rno] = reel.get_position();
|
||||||
if (reelpos[rno] == output_get_value(rg))
|
if (reelpos[rno] == output_get_value(rg))
|
||||||
{
|
{
|
||||||
// Not moved, no need to update.
|
// Not moved, no need to update.
|
||||||
@ -34,11 +34,11 @@ void awp_draw_reel(int rno)
|
|||||||
output_set_value(rg,(reelpos[rno]));
|
output_set_value(rg,(reelpos[rno]));
|
||||||
|
|
||||||
// if the reel isn't configured don't do this, otherwise you'll get DIV0
|
// if the reel isn't configured don't do this, otherwise you'll get DIV0
|
||||||
if (stepper_get_max(rno))
|
if (reel.get_max())
|
||||||
{
|
{
|
||||||
sprintf(rg,"sreel%d", x); // our new scrolling reels are called 'sreel'
|
sprintf(rg,"sreel%d", x); // our new scrolling reels are called 'sreel'
|
||||||
// normalize the value
|
// normalize the value
|
||||||
int sreelpos = (reelpos[rno] * 0x10000) / stepper_get_max(rno);
|
int sreelpos = (reelpos[rno] * 0x10000) / reel.get_max();
|
||||||
|
|
||||||
output_set_value(rg,sreelpos);
|
output_set_value(rg,sreelpos);
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,8 @@
|
|||||||
#ifndef AWP_VIDEO
|
#ifndef AWP_VIDEO
|
||||||
#define AWP_VIDEO
|
#define AWP_VIDEO
|
||||||
|
|
||||||
void awp_draw_reel(int rno);
|
#include "machine/steppers.h"
|
||||||
|
|
||||||
|
void awp_draw_reel(int rno, stepper_device &reel);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user