mirror of
https://github.com/holub/mame
synced 2025-04-24 01:11:11 +03:00
by17,hankin,st_mp100,st_mp200: used same display method as by35.
This commit is contained in:
parent
275270a66e
commit
acb2c7168e
@ -42,7 +42,6 @@ public:
|
||||
, m_io_x4(*this, "X4")
|
||||
{ }
|
||||
|
||||
DECLARE_DRIVER_INIT(by17);
|
||||
DECLARE_READ8_MEMBER(u10_a_r);
|
||||
DECLARE_WRITE8_MEMBER(u10_a_w);
|
||||
DECLARE_READ8_MEMBER(u10_b_r);
|
||||
@ -56,20 +55,21 @@ public:
|
||||
DECLARE_WRITE_LINE_MEMBER(u11_cb2_w);
|
||||
DECLARE_INPUT_CHANGED_MEMBER(activity_test);
|
||||
DECLARE_INPUT_CHANGED_MEMBER(self_test);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(u10_timer);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(timer_x);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(u11_timer);
|
||||
private:
|
||||
UINT8 m_u10;
|
||||
UINT8 m_u10_a;
|
||||
UINT8 m_u10_b;
|
||||
UINT8 m_u11_a;
|
||||
UINT8 m_u11_b;
|
||||
UINT8 m_u10a;
|
||||
UINT8 m_u10b;
|
||||
UINT8 m_u11a;
|
||||
UINT8 m_u11b;
|
||||
bool m_u10_ca2;
|
||||
bool m_u10_cb2;
|
||||
bool m_u10_timer;
|
||||
bool m_u11_cb2;
|
||||
bool m_timer_x;
|
||||
bool m_u11_timer;
|
||||
UINT8 m_digit;
|
||||
UINT8 m_segment;
|
||||
UINT8 m_counter;
|
||||
UINT8 m_segment[5];
|
||||
virtual void machine_reset();
|
||||
required_device<m6800_cpu_device> m_maincpu;
|
||||
required_device<pia6821_device> m_pia_u10;
|
||||
@ -308,8 +308,10 @@ INPUT_CHANGED_MEMBER( by17_state::self_test )
|
||||
WRITE_LINE_MEMBER( by17_state::u10_ca2_w )
|
||||
{
|
||||
m_u10_ca2 = state;
|
||||
if (!state)
|
||||
m_counter = 0;
|
||||
}
|
||||
|
||||
|
||||
WRITE_LINE_MEMBER( by17_state::u10_cb2_w )
|
||||
{
|
||||
}
|
||||
@ -321,36 +323,36 @@ WRITE_LINE_MEMBER( by17_state::u11_ca2_w )
|
||||
|
||||
WRITE_LINE_MEMBER( by17_state::u11_cb2_w )
|
||||
{
|
||||
m_u11_cb2 = state;
|
||||
}
|
||||
|
||||
READ8_MEMBER( by17_state::u10_a_r )
|
||||
{
|
||||
return m_u10_a;
|
||||
return m_u10a;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( by17_state::u10_a_w )
|
||||
{
|
||||
static const UINT8 patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0,0,0,0,0 }; // MC14543
|
||||
m_segment = data >> 4;
|
||||
m_u10_a = data;
|
||||
m_u10 = (data & 15) | (BIT(m_u11_a, 0) << 4);
|
||||
m_u10a = data;
|
||||
|
||||
if (!m_u10_ca2)
|
||||
{
|
||||
if (!BIT(m_u10, 0))
|
||||
output_set_digit_value(m_digit, patterns[m_segment]);
|
||||
m_counter++;
|
||||
|
||||
if (m_counter==1)
|
||||
m_segment[0] = data>>4;
|
||||
else
|
||||
if (m_u10==0x1d)
|
||||
output_set_digit_value(8+m_digit, patterns[m_segment]);
|
||||
if (m_counter==3)
|
||||
m_segment[1] = data>>4;
|
||||
else
|
||||
if (m_u10==0x1b)
|
||||
output_set_digit_value(16+m_digit, patterns[m_segment]);
|
||||
if (m_counter==5)
|
||||
m_segment[2] = data>>4;
|
||||
else
|
||||
if (m_u10==0x07)
|
||||
output_set_digit_value(24+m_digit, patterns[m_segment]);
|
||||
if (m_counter==7)
|
||||
m_segment[3] = data>>4;
|
||||
else
|
||||
if (!BIT(m_u10, 4))
|
||||
output_set_digit_value(32+m_digit, patterns[m_segment]);
|
||||
if (m_counter==9)
|
||||
m_segment[4] = data>>4;
|
||||
}
|
||||
}
|
||||
|
||||
@ -358,28 +360,28 @@ READ8_MEMBER( by17_state::u10_b_r )
|
||||
{
|
||||
UINT8 data = 0;
|
||||
|
||||
if (BIT(m_u10_a, 0))
|
||||
if (BIT(m_u10a, 0))
|
||||
data |= m_io_x0->read();
|
||||
|
||||
if (BIT(m_u10_a, 1))
|
||||
if (BIT(m_u10a, 1))
|
||||
data |= m_io_x1->read();
|
||||
|
||||
if (BIT(m_u10_a, 2))
|
||||
if (BIT(m_u10a, 2))
|
||||
data |= m_io_x2->read();
|
||||
|
||||
if (BIT(m_u10_a, 3))
|
||||
if (BIT(m_u10a, 3))
|
||||
data |= m_io_x3->read();
|
||||
|
||||
if (BIT(m_u10_a, 4))
|
||||
if (BIT(m_u10a, 4))
|
||||
data |= m_io_x4->read();
|
||||
|
||||
if (BIT(m_u10_a, 5))
|
||||
if (BIT(m_u10a, 5))
|
||||
data |= m_io_dsw0->read();
|
||||
|
||||
if (BIT(m_u10_a, 6))
|
||||
if (BIT(m_u10a, 6))
|
||||
data |= m_io_dsw1->read();
|
||||
|
||||
if (BIT(m_u10_a, 7))
|
||||
if (BIT(m_u10a, 7))
|
||||
data |= m_io_dsw2->read();
|
||||
|
||||
if (m_u10_cb2)
|
||||
@ -390,100 +392,111 @@ READ8_MEMBER( by17_state::u10_b_r )
|
||||
|
||||
WRITE8_MEMBER( by17_state::u10_b_w )
|
||||
{
|
||||
m_u10_b = data;
|
||||
m_u10b = data;
|
||||
}
|
||||
|
||||
READ8_MEMBER( by17_state::u11_a_r )
|
||||
{
|
||||
return m_u11_a;
|
||||
return m_u11a;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( by17_state::u11_a_w )
|
||||
{
|
||||
m_u11_a = data;
|
||||
m_u11a = data;
|
||||
|
||||
m_digit = 0xff;
|
||||
if BIT(data, 2)
|
||||
m_digit = 4;
|
||||
else
|
||||
if BIT(data, 3)
|
||||
m_digit = 3;
|
||||
else
|
||||
if BIT(data, 4)
|
||||
m_digit = 2;
|
||||
else
|
||||
if BIT(data, 5)
|
||||
m_digit = 1;
|
||||
else
|
||||
if BIT(data, 6)
|
||||
m_digit = 0;
|
||||
else
|
||||
if BIT(data, 7)
|
||||
m_digit = 5;
|
||||
if (!m_u10_ca2)
|
||||
{
|
||||
if BIT(data, 2)
|
||||
m_digit = 5;
|
||||
else
|
||||
if BIT(data, 3)
|
||||
m_digit = 4;
|
||||
else
|
||||
if BIT(data, 4)
|
||||
m_digit = 3;
|
||||
else
|
||||
if BIT(data, 5)
|
||||
m_digit = 2;
|
||||
else
|
||||
if BIT(data, 6)
|
||||
m_digit = 1;
|
||||
else
|
||||
if BIT(data, 7)
|
||||
m_digit = 0;
|
||||
|
||||
if (BIT(data, 0) && (m_counter > 8))
|
||||
{
|
||||
static const UINT8 patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0,0,0,0,0 }; // MC14543
|
||||
output_set_digit_value(m_digit, patterns[m_segment[0]]);
|
||||
output_set_digit_value(10+m_digit, patterns[m_segment[1]]);
|
||||
output_set_digit_value(20+m_digit, patterns[m_segment[2]]);
|
||||
output_set_digit_value(30+m_digit, patterns[m_segment[3]]);
|
||||
output_set_digit_value(40+m_digit, patterns[m_segment[4]]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( by17_state::u11_b_w )
|
||||
{
|
||||
m_u11_b = data;
|
||||
switch (data & 15)
|
||||
m_u11b = data;
|
||||
if (!m_u11_cb2)
|
||||
{
|
||||
case 0x0: // chime 10
|
||||
m_samples->start(1, 1);
|
||||
break;
|
||||
case 0x1: // chime 100
|
||||
m_samples->start(2, 2);
|
||||
break;
|
||||
case 0x2: // chime 1000
|
||||
m_samples->start(3, 3);
|
||||
break;
|
||||
case 0x3: // chime 10000
|
||||
m_samples->start(0, 4);
|
||||
break;
|
||||
case 0x4:
|
||||
break;
|
||||
case 0x5: // knocker
|
||||
m_samples->start(0, 6);
|
||||
break;
|
||||
case 0x6: // outhole
|
||||
m_samples->start(0, 5);
|
||||
break;
|
||||
// from here, vary per game
|
||||
case 0x7:
|
||||
case 0x8:
|
||||
case 0x9:
|
||||
break;
|
||||
case 0xa:
|
||||
case 0xb:
|
||||
case 0xc: // bumpers
|
||||
m_samples->start(0, 0);
|
||||
break;
|
||||
case 0xd:
|
||||
case 0xe:
|
||||
case 0xf:
|
||||
break;
|
||||
switch (data & 15)
|
||||
{
|
||||
case 0x0: // chime 10
|
||||
m_samples->start(1, 1);
|
||||
break;
|
||||
case 0x1: // chime 100
|
||||
m_samples->start(2, 2);
|
||||
break;
|
||||
case 0x2: // chime 1000
|
||||
m_samples->start(3, 3);
|
||||
break;
|
||||
case 0x3: // chime 10000
|
||||
m_samples->start(0, 4);
|
||||
break;
|
||||
case 0x4:
|
||||
break;
|
||||
case 0x5: // knocker
|
||||
m_samples->start(0, 6);
|
||||
break;
|
||||
case 0x6: // outhole
|
||||
m_samples->start(0, 5);
|
||||
break;
|
||||
// from here, vary per game
|
||||
case 0x7:
|
||||
case 0x8:
|
||||
case 0x9:
|
||||
break;
|
||||
case 0xa:
|
||||
case 0xb:
|
||||
case 0xc: // bumpers
|
||||
m_samples->start(0, 0);
|
||||
break;
|
||||
case 0xd:
|
||||
case 0xe:
|
||||
case 0xf:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void by17_state::machine_reset()
|
||||
{
|
||||
m_u10_a = 0;
|
||||
m_u10_b = 0;
|
||||
m_u10a = 0;
|
||||
m_u10b = 0;
|
||||
m_u10_cb2 = 0;
|
||||
m_u11_a = 0;
|
||||
m_u11_b = 0;
|
||||
m_u10_timer = 0;
|
||||
m_u11a = 0;
|
||||
m_u11b = 0;
|
||||
m_timer_x = 0;
|
||||
m_u11_timer = 0;
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER( by17_state, by17 )
|
||||
{
|
||||
}
|
||||
|
||||
// zero-cross detection
|
||||
TIMER_DEVICE_CALLBACK_MEMBER( by17_state::u10_timer )
|
||||
TIMER_DEVICE_CALLBACK_MEMBER( by17_state::timer_x )
|
||||
{
|
||||
m_u10_timer ^= 1;
|
||||
m_pia_u10->cb1_w(m_u10_timer);
|
||||
m_timer_x ^= 1;
|
||||
m_pia_u10->cb1_w(m_timer_x);
|
||||
}
|
||||
|
||||
// 555 timer for display refresh
|
||||
@ -516,7 +529,7 @@ static MACHINE_CONFIG_START( by17, by17_state )
|
||||
MCFG_PIA_CB2_HANDLER(WRITELINE(by17_state, u10_cb2_w))
|
||||
MCFG_PIA_IRQA_HANDLER(DEVWRITELINE("maincpu", m6800_cpu_device, irq_line))
|
||||
MCFG_PIA_IRQB_HANDLER(DEVWRITELINE("maincpu", m6800_cpu_device, irq_line))
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_z", by17_state, u10_timer, attotime::from_hz(120)) // mains freq*2
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_x", by17_state, timer_x, attotime::from_hz(120)) // mains freq*2
|
||||
|
||||
MCFG_DEVICE_ADD("pia_u11", PIA6821, 0)
|
||||
MCFG_PIA_READPA_HANDLER(READ8(by17_state, u11_a_r))
|
||||
@ -627,13 +640,13 @@ ROM_END
|
||||
/---------------------------------------------------------------*/
|
||||
|
||||
|
||||
GAME( 1976, bowarrow, 0, by17, by17, by17_state, by17, ROT0, "Bally", "Bow & Arrow (Prototype)", GAME_IS_SKELETON_MECHANICAL)
|
||||
GAME( 1977, freedom, 0, by17, by17, by17_state, by17, ROT0, "Bally", "Freedom", GAME_MECHANICAL)
|
||||
GAME( 1977, nightrdr, 0, by17, by17, by17_state, by17, ROT0, "Bally", "Night Rider (rev. 21)", GAME_MECHANICAL)
|
||||
GAME( 1977, nightr20, nightrdr, by17, by17, by17_state, by17, ROT0, "Bally", "Night Rider (rev. 20)", GAME_MECHANICAL)
|
||||
GAME( 1978, blackjck, 0, by17, by17, by17_state, by17, ROT0, "Bally", "Black Jack (Pinball)", GAME_MECHANICAL)
|
||||
GAME( 1977, evelknie, 0, by17, by17, by17_state, by17, ROT0, "Bally", "Evel Knievel", GAME_MECHANICAL)
|
||||
GAME( 1978, matahari, 0, by17, by17, by17_state, by17, ROT0, "Bally", "Mata Hari", GAME_MECHANICAL)
|
||||
GAME( 1977, eightbll, 0, by17, by17, by17_state, by17, ROT0, "Bally", "Eight Ball", GAME_MECHANICAL)
|
||||
GAME( 1978, pwerplay, 0, by17, by17, by17_state, by17, ROT0, "Bally", "Power Play (Pinball)", GAME_MECHANICAL)
|
||||
GAME( 1978, stk_sprs, 0, by17, by17, by17_state, by17, ROT0, "Bally", "Strikes and Spares", GAME_MECHANICAL)
|
||||
GAME( 1976, bowarrow, 0, by17, by17, driver_device, 0, ROT0, "Bally", "Bow & Arrow (Prototype)", GAME_IS_SKELETON_MECHANICAL)
|
||||
GAME( 1977, freedom, 0, by17, by17, driver_device, 0, ROT0, "Bally", "Freedom", GAME_MECHANICAL)
|
||||
GAME( 1977, nightrdr, 0, by17, by17, driver_device, 0, ROT0, "Bally", "Night Rider (rev. 21)", GAME_MECHANICAL)
|
||||
GAME( 1977, nightr20, nightrdr, by17, by17, driver_device, 0, ROT0, "Bally", "Night Rider (rev. 20)", GAME_MECHANICAL)
|
||||
GAME( 1978, blackjck, 0, by17, by17, driver_device, 0, ROT0, "Bally", "Black Jack (Pinball)", GAME_MECHANICAL)
|
||||
GAME( 1977, evelknie, 0, by17, by17, driver_device, 0, ROT0, "Bally", "Evel Knievel", GAME_MECHANICAL)
|
||||
GAME( 1978, matahari, 0, by17, by17, driver_device, 0, ROT0, "Bally", "Mata Hari", GAME_MECHANICAL)
|
||||
GAME( 1977, eightbll, 0, by17, by17, driver_device, 0, ROT0, "Bally", "Eight Ball", GAME_MECHANICAL)
|
||||
GAME( 1978, pwerplay, 0, by17, by17, driver_device, 0, ROT0, "Bally", "Power Play (Pinball)", GAME_MECHANICAL)
|
||||
GAME( 1978, stk_sprs, 0, by17, by17, driver_device, 0, ROT0, "Bally", "Strikes and Spares", GAME_MECHANICAL)
|
||||
|
@ -111,7 +111,7 @@ private:
|
||||
bool m_u11_cb2;
|
||||
bool m_timer_x;
|
||||
bool m_u11_timer;
|
||||
bool m_6d;
|
||||
bool m_7d;
|
||||
UINT8 m_digit;
|
||||
UINT8 m_counter;
|
||||
UINT8 m_segment[5];
|
||||
@ -449,7 +449,7 @@ WRITE8_MEMBER( by35_state::u11_a_w )
|
||||
|
||||
if (!m_u10_ca2)
|
||||
{
|
||||
if (!m_6d & BIT(data, 1))
|
||||
if (m_7d & BIT(data, 1))
|
||||
m_digit = 6;
|
||||
else
|
||||
if BIT(data, 2)
|
||||
@ -550,12 +550,12 @@ void by35_state::machine_reset()
|
||||
|
||||
DRIVER_INIT_MEMBER( by35_state, by35_6 )
|
||||
{
|
||||
m_6d = 1;
|
||||
m_7d = 0;
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER( by35_state, by35_7 )
|
||||
{
|
||||
m_6d = 0;
|
||||
m_7d = 1;
|
||||
}
|
||||
|
||||
// zero-cross detection
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
ToDo:
|
||||
- High score isn't saved or remembered
|
||||
- Display should be flouro blue 9-segment
|
||||
- Display should be flouro blue 12-segment
|
||||
- Sound
|
||||
- Mechanical
|
||||
|
||||
@ -52,13 +52,13 @@ public:
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(timer_x);
|
||||
private:
|
||||
bool m_timer_x;
|
||||
UINT8 m_ic10a;
|
||||
UINT8 m_ic11a;
|
||||
bool m_ic11_ca2;
|
||||
bool m_ic10_cb2;
|
||||
UINT8 m_counter;
|
||||
UINT8 m_digit;
|
||||
UINT8 m_segment;
|
||||
UINT8 m_ic10a;
|
||||
UINT8 m_ic11a;
|
||||
UINT8 m_segment[5];
|
||||
virtual void machine_reset();
|
||||
required_device<m6802_cpu_device> m_maincpu;
|
||||
required_device<m6802_cpu_device> m_audiocpu;
|
||||
@ -254,7 +254,15 @@ WRITE8_MEMBER( hankin_state::ic10_a_w )
|
||||
if BIT(data, 7)
|
||||
m_digit = 0;
|
||||
|
||||
m_counter++;
|
||||
if (BIT(data, 0) && (m_counter > 8))
|
||||
{
|
||||
static const UINT8 patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0,0,0,0,0 }; // MC14543
|
||||
output_set_digit_value(m_digit, patterns[m_segment[0]]);
|
||||
output_set_digit_value(10+m_digit, patterns[m_segment[1]]);
|
||||
output_set_digit_value(20+m_digit, patterns[m_segment[2]]);
|
||||
output_set_digit_value(30+m_digit, patterns[m_segment[3]]);
|
||||
output_set_digit_value(40+m_digit, patterns[m_segment[4]]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -298,28 +306,26 @@ WRITE_LINE_MEMBER( hankin_state::ic10_cb2_w )
|
||||
|
||||
WRITE8_MEMBER( hankin_state::ic11_a_w )
|
||||
{
|
||||
static const UINT8 patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0,0,0,0,0 }; // MC14543
|
||||
m_ic11a = data;
|
||||
|
||||
if (!m_ic11_ca2)
|
||||
{
|
||||
if (m_counter==3)
|
||||
output_set_digit_value(m_digit, patterns[m_segment]);
|
||||
|
||||
m_counter++;
|
||||
m_segment = data >> 4;
|
||||
|
||||
if (m_counter==4)
|
||||
output_set_digit_value(10+m_digit, patterns[m_segment]);
|
||||
if (m_counter==1)
|
||||
m_segment[0] = data>>4;
|
||||
else
|
||||
if (m_counter==6)
|
||||
output_set_digit_value(20+m_digit, patterns[m_segment]);
|
||||
if (m_counter==3)
|
||||
m_segment[1] = data>>4;
|
||||
else
|
||||
if (m_counter==8)
|
||||
output_set_digit_value(30+m_digit, patterns[m_segment]);
|
||||
if (m_counter==5)
|
||||
m_segment[2] = data>>4;
|
||||
else
|
||||
if (m_counter==10)
|
||||
output_set_digit_value(40+m_digit, patterns[m_segment]);
|
||||
if (m_counter==7)
|
||||
m_segment[3] = data>>4;
|
||||
else
|
||||
if (m_counter==9)
|
||||
m_segment[4] = data>>4;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -66,6 +66,7 @@ private:
|
||||
bool m_u11_timer;
|
||||
UINT8 m_digit;
|
||||
UINT8 m_counter;
|
||||
UINT8 m_segment[5];
|
||||
virtual void machine_reset();
|
||||
required_device<m6800_cpu_device> m_maincpu;
|
||||
required_device<pia6821_device> m_pia_u10;
|
||||
@ -519,28 +520,26 @@ READ8_MEMBER( st_mp100_state::u10_a_r )
|
||||
|
||||
WRITE8_MEMBER( st_mp100_state::u10_a_w )
|
||||
{
|
||||
static const UINT8 patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0,0,0,0,0 }; // MC14543
|
||||
m_u10a = data;
|
||||
|
||||
if (!m_u10_ca2)
|
||||
{
|
||||
m_counter++;
|
||||
UINT8 segment = data >> 4;
|
||||
|
||||
if (m_counter==1)
|
||||
output_set_digit_value(m_digit, patterns[segment]);
|
||||
|
||||
m_segment[0] = data>>4;
|
||||
else
|
||||
if (m_counter==3)
|
||||
output_set_digit_value(10+m_digit, patterns[segment]);
|
||||
m_segment[1] = data>>4;
|
||||
else
|
||||
if (m_counter==5)
|
||||
output_set_digit_value(20+m_digit, patterns[segment]);
|
||||
m_segment[2] = data>>4;
|
||||
else
|
||||
if (m_counter==8)
|
||||
output_set_digit_value(30+m_digit, patterns[segment]);
|
||||
if (m_counter==7)
|
||||
m_segment[3] = data>>4;
|
||||
else
|
||||
if (m_counter==10)
|
||||
output_set_digit_value(40+m_digit, patterns[segment]);
|
||||
if (m_counter==9)
|
||||
m_segment[4] = data>>4;
|
||||
}
|
||||
}
|
||||
|
||||
@ -612,7 +611,15 @@ WRITE8_MEMBER( st_mp100_state::u11_a_w )
|
||||
if BIT(data, 7)
|
||||
m_digit = 0;
|
||||
|
||||
m_counter++;
|
||||
if (BIT(data, 0) && (m_counter > 8))
|
||||
{
|
||||
static const UINT8 patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0,0,0,0,0 }; // MC14543
|
||||
output_set_digit_value(m_digit, patterns[m_segment[0]]);
|
||||
output_set_digit_value(10+m_digit, patterns[m_segment[1]]);
|
||||
output_set_digit_value(20+m_digit, patterns[m_segment[2]]);
|
||||
output_set_digit_value(30+m_digit, patterns[m_segment[3]]);
|
||||
output_set_digit_value(40+m_digit, patterns[m_segment[4]]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -72,9 +72,10 @@ private:
|
||||
bool m_timer_x;
|
||||
bool m_u11_timer;
|
||||
bool m_su; // speech unit fitted yes/no
|
||||
bool m_6d; // 6-digit display yes/no
|
||||
bool m_7d; // 7-digit display yes/no
|
||||
UINT8 m_digit;
|
||||
UINT8 m_counter;
|
||||
UINT8 m_segment[5];
|
||||
virtual void machine_reset();
|
||||
required_device<m6800_cpu_device> m_maincpu;
|
||||
optional_device<s14001a_device> m_s14001a;
|
||||
@ -362,31 +363,26 @@ READ8_MEMBER( st_mp200_state::u10_a_r )
|
||||
|
||||
WRITE8_MEMBER( st_mp200_state::u10_a_w )
|
||||
{
|
||||
static const UINT8 patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0,0,0,0,0 }; // MC14543
|
||||
m_u10a = data;
|
||||
|
||||
if (!m_u10_ca2)
|
||||
{
|
||||
m_counter++;
|
||||
UINT8 segment = data >> 4;
|
||||
|
||||
if (m_6d && !m_digit && (m_counter < 6))
|
||||
m_digit = 6; // handle 6-digit display
|
||||
|
||||
if (m_counter==1)
|
||||
output_set_digit_value(m_digit, patterns[segment]);
|
||||
m_segment[0] = data>>4;
|
||||
else
|
||||
if (m_counter==3)
|
||||
output_set_digit_value(10+m_digit, patterns[segment]);
|
||||
m_segment[1] = data>>4;
|
||||
else
|
||||
if (m_counter==5)
|
||||
output_set_digit_value(20+m_digit, patterns[segment]);
|
||||
m_segment[2] = data>>4;
|
||||
else
|
||||
if (m_counter==8)
|
||||
output_set_digit_value(30+m_digit, patterns[segment]);
|
||||
if (m_counter==7)
|
||||
m_segment[3] = data>>4;
|
||||
else
|
||||
if (m_counter==10)
|
||||
output_set_digit_value(40+m_digit, patterns[segment]);
|
||||
if (m_counter==9)
|
||||
m_segment[4] = data>>4;
|
||||
}
|
||||
}
|
||||
|
||||
@ -440,7 +436,7 @@ WRITE8_MEMBER( st_mp200_state::u11_a_w )
|
||||
|
||||
if (!m_u10_ca2)
|
||||
{
|
||||
if BIT(data, 1)
|
||||
if (m_7d & BIT(data, 1))
|
||||
m_digit = 6;
|
||||
else
|
||||
if BIT(data, 2)
|
||||
@ -461,7 +457,15 @@ WRITE8_MEMBER( st_mp200_state::u11_a_w )
|
||||
if BIT(data, 7)
|
||||
m_digit = 0;
|
||||
|
||||
m_counter++;
|
||||
if (BIT(data, 0) && (m_counter > 8))
|
||||
{
|
||||
static const UINT8 patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0,0,0,0,0 }; // MC14543
|
||||
output_set_digit_value(m_digit, patterns[m_segment[0]]);
|
||||
output_set_digit_value(10+m_digit, patterns[m_segment[1]]);
|
||||
output_set_digit_value(20+m_digit, patterns[m_segment[2]]);
|
||||
output_set_digit_value(30+m_digit, patterns[m_segment[3]]);
|
||||
output_set_digit_value(40+m_digit, patterns[m_segment[4]]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -531,19 +535,19 @@ void st_mp200_state::machine_reset()
|
||||
|
||||
DRIVER_INIT_MEMBER( st_mp200_state, st_mp200 )
|
||||
{
|
||||
m_6d = 0;
|
||||
m_7d = 1;
|
||||
m_su = 0;
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER( st_mp200_state, st_mp201 )
|
||||
{
|
||||
m_6d = 0;
|
||||
m_7d = 1;
|
||||
m_su = 1;
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER( st_mp200_state, st_mp202 )
|
||||
{
|
||||
m_6d = 1;
|
||||
m_7d = 0;
|
||||
m_su = 0;
|
||||
}
|
||||
|
||||
|
@ -57,76 +57,76 @@
|
||||
</bezel>
|
||||
|
||||
<!-- Player 2 Score -->
|
||||
<bezel name="digit13" element="digit">
|
||||
<bezel name="digit15" element="digit">
|
||||
<bounds left="10" top="105" right="44" bottom="144" />
|
||||
</bezel>
|
||||
<bezel name="digit12" element="digit">
|
||||
<bezel name="digit14" element="digit">
|
||||
<bounds left="54" top="105" right="88" bottom="144" />
|
||||
</bezel>
|
||||
<bezel name="digit11" element="digit">
|
||||
<bezel name="digit13" element="digit">
|
||||
<bounds left="98" top="105" right="132" bottom="144" />
|
||||
</bezel>
|
||||
<bezel name="digit10" element="digit">
|
||||
<bezel name="digit12" element="digit">
|
||||
<bounds left="142" top="105" right="176" bottom="144" />
|
||||
</bezel>
|
||||
<bezel name="digit9" element="digit">
|
||||
<bezel name="digit11" element="digit">
|
||||
<bounds left="186" top="105" right="220" bottom="144" />
|
||||
</bezel>
|
||||
<bezel name="digit8" element="digit">
|
||||
<bezel name="digit10" element="digit">
|
||||
<bounds left="230" top="105" right="264" bottom="144" />
|
||||
</bezel>
|
||||
|
||||
<!-- Player 3 Score -->
|
||||
<bezel name="digit21" element="digit">
|
||||
<bezel name="digit25" element="digit">
|
||||
<bounds left="10" top="165" right="44" bottom="204" />
|
||||
</bezel>
|
||||
<bezel name="digit20" element="digit">
|
||||
<bezel name="digit24" element="digit">
|
||||
<bounds left="54" top="165" right="88" bottom="204" />
|
||||
</bezel>
|
||||
<bezel name="digit19" element="digit">
|
||||
<bezel name="digit23" element="digit">
|
||||
<bounds left="98" top="165" right="132" bottom="204" />
|
||||
</bezel>
|
||||
<bezel name="digit18" element="digit">
|
||||
<bezel name="digit22" element="digit">
|
||||
<bounds left="142" top="165" right="176" bottom="204" />
|
||||
</bezel>
|
||||
<bezel name="digit17" element="digit">
|
||||
<bezel name="digit21" element="digit">
|
||||
<bounds left="186" top="165" right="220" bottom="204" />
|
||||
</bezel>
|
||||
<bezel name="digit16" element="digit">
|
||||
<bezel name="digit20" element="digit">
|
||||
<bounds left="230" top="165" right="264" bottom="204" />
|
||||
</bezel>
|
||||
|
||||
<!-- Player 4 Score -->
|
||||
<bezel name="digit28" element="digit">
|
||||
<bezel name="digit35" element="digit">
|
||||
<bounds left="10" top="225" right="44" bottom="264" />
|
||||
</bezel>
|
||||
<bezel name="digit27" element="digit">
|
||||
<bezel name="digit34" element="digit">
|
||||
<bounds left="54" top="225" right="88" bottom="264" />
|
||||
</bezel>
|
||||
<bezel name="digit26" element="digit">
|
||||
<bezel name="digit33" element="digit">
|
||||
<bounds left="98" top="225" right="132" bottom="264" />
|
||||
</bezel>
|
||||
<bezel name="digit25" element="digit">
|
||||
<bezel name="digit32" element="digit">
|
||||
<bounds left="142" top="225" right="176" bottom="264" />
|
||||
</bezel>
|
||||
<bezel name="digit24" element="digit">
|
||||
<bezel name="digit31" element="digit">
|
||||
<bounds left="186" top="225" right="220" bottom="264" />
|
||||
</bezel>
|
||||
<bezel name="digit29" element="digit">
|
||||
<bezel name="digit30" element="digit">
|
||||
<bounds left="230" top="225" right="264" bottom="264" />
|
||||
</bezel>
|
||||
|
||||
<!-- Credits and Balls -->
|
||||
<bezel name="digit35" element="digit">
|
||||
<bezel name="digit44" element="digit">
|
||||
<bounds left="10" top="345" right="44" bottom="384" />
|
||||
</bezel>
|
||||
<bezel name="digit34" element="digit">
|
||||
<bezel name="digit43" element="digit">
|
||||
<bounds left="54" top="345" right="88" bottom="384" />
|
||||
</bezel>
|
||||
<bezel name="digit32" element="digit">
|
||||
<bezel name="digit41" element="digit">
|
||||
<bounds left="186" top="345" right="220" bottom="384" />
|
||||
</bezel>
|
||||
<bezel name="digit37" element="digit">
|
||||
<bezel name="digit40" element="digit">
|
||||
<bounds left="230" top="345" right="264" bottom="384" />
|
||||
</bezel>
|
||||
|
||||
|
@ -37,62 +37,62 @@
|
||||
|
||||
<!-- Player 1 Score -->
|
||||
|
||||
<bezel name="digit0" element="digit">
|
||||
<bezel name="digit5" element="digit">
|
||||
<bounds left="10" top="45" right="44" bottom="84" />
|
||||
</bezel>
|
||||
<bezel name="digit5" element="digit">
|
||||
<bezel name="digit4" element="digit">
|
||||
<bounds left="54" top="45" right="88" bottom="84" />
|
||||
</bezel>
|
||||
<bezel name="digit4" element="digit">
|
||||
<bezel name="digit3" element="digit">
|
||||
<bounds left="98" top="45" right="132" bottom="84" />
|
||||
</bezel>
|
||||
<bezel name="digit3" element="digit">
|
||||
<bezel name="digit2" element="digit">
|
||||
<bounds left="142" top="45" right="176" bottom="84" />
|
||||
</bezel>
|
||||
<bezel name="digit2" element="digit">
|
||||
<bezel name="digit1" element="digit">
|
||||
<bounds left="186" top="45" right="220" bottom="84" />
|
||||
</bezel>
|
||||
<bezel name="digit1" element="digit">
|
||||
<bezel name="digit0" element="digit">
|
||||
<bounds left="230" top="45" right="264" bottom="84" />
|
||||
</bezel>
|
||||
|
||||
<!-- Player 2 Score -->
|
||||
<bezel name="digit10" element="digit">
|
||||
<bezel name="digit15" element="digit">
|
||||
<bounds left="10" top="105" right="44" bottom="144" />
|
||||
</bezel>
|
||||
<bezel name="digit15" element="digit">
|
||||
<bezel name="digit14" element="digit">
|
||||
<bounds left="54" top="105" right="88" bottom="144" />
|
||||
</bezel>
|
||||
<bezel name="digit14" element="digit">
|
||||
<bezel name="digit13" element="digit">
|
||||
<bounds left="98" top="105" right="132" bottom="144" />
|
||||
</bezel>
|
||||
<bezel name="digit13" element="digit">
|
||||
<bezel name="digit12" element="digit">
|
||||
<bounds left="142" top="105" right="176" bottom="144" />
|
||||
</bezel>
|
||||
<bezel name="digit12" element="digit">
|
||||
<bezel name="digit11" element="digit">
|
||||
<bounds left="186" top="105" right="220" bottom="144" />
|
||||
</bezel>
|
||||
<bezel name="digit11" element="digit">
|
||||
<bezel name="digit10" element="digit">
|
||||
<bounds left="230" top="105" right="264" bottom="144" />
|
||||
</bezel>
|
||||
|
||||
<!-- Player 3 Score -->
|
||||
<bezel name="digit20" element="digit">
|
||||
<bezel name="digit25" element="digit">
|
||||
<bounds left="10" top="165" right="44" bottom="204" />
|
||||
</bezel>
|
||||
<bezel name="digit25" element="digit">
|
||||
<bezel name="digit24" element="digit">
|
||||
<bounds left="54" top="165" right="88" bottom="204" />
|
||||
</bezel>
|
||||
<bezel name="digit24" element="digit">
|
||||
<bezel name="digit23" element="digit">
|
||||
<bounds left="98" top="165" right="132" bottom="204" />
|
||||
</bezel>
|
||||
<bezel name="digit23" element="digit">
|
||||
<bezel name="digit22" element="digit">
|
||||
<bounds left="142" top="165" right="176" bottom="204" />
|
||||
</bezel>
|
||||
<bezel name="digit22" element="digit">
|
||||
<bezel name="digit21" element="digit">
|
||||
<bounds left="186" top="165" right="220" bottom="204" />
|
||||
</bezel>
|
||||
<bezel name="digit21" element="digit">
|
||||
<bezel name="digit20" element="digit">
|
||||
<bounds left="230" top="165" right="264" bottom="204" />
|
||||
</bezel>
|
||||
|
||||
|
@ -37,71 +37,71 @@
|
||||
|
||||
<!-- Player 1 Score -->
|
||||
|
||||
<bezel name="digit0" element="digit">
|
||||
<bezel name="digit6" element="digit">
|
||||
<bounds left="10" top="45" right="44" bottom="84" />
|
||||
</bezel>
|
||||
<bezel name="digit6" element="digit">
|
||||
<bezel name="digit5" element="digit">
|
||||
<bounds left="54" top="45" right="88" bottom="84" />
|
||||
</bezel>
|
||||
<bezel name="digit5" element="digit">
|
||||
<bezel name="digit4" element="digit">
|
||||
<bounds left="98" top="45" right="132" bottom="84" />
|
||||
</bezel>
|
||||
<bezel name="digit4" element="digit">
|
||||
<bezel name="digit3" element="digit">
|
||||
<bounds left="142" top="45" right="176" bottom="84" />
|
||||
</bezel>
|
||||
<bezel name="digit3" element="digit">
|
||||
<bezel name="digit2" element="digit">
|
||||
<bounds left="186" top="45" right="220" bottom="84" />
|
||||
</bezel>
|
||||
<bezel name="digit2" element="digit">
|
||||
<bezel name="digit1" element="digit">
|
||||
<bounds left="230" top="45" right="264" bottom="84" />
|
||||
</bezel>
|
||||
<bezel name="digit1" element="digit">
|
||||
<bezel name="digit0" element="digit">
|
||||
<bounds left="274" top="45" right="308" bottom="84" />
|
||||
</bezel>
|
||||
|
||||
<!-- Player 2 Score -->
|
||||
<bezel name="digit10" element="digit">
|
||||
<bezel name="digit16" element="digit">
|
||||
<bounds left="10" top="105" right="44" bottom="144" />
|
||||
</bezel>
|
||||
<bezel name="digit16" element="digit">
|
||||
<bezel name="digit15" element="digit">
|
||||
<bounds left="54" top="105" right="88" bottom="144" />
|
||||
</bezel>
|
||||
<bezel name="digit15" element="digit">
|
||||
<bezel name="digit14" element="digit">
|
||||
<bounds left="98" top="105" right="132" bottom="144" />
|
||||
</bezel>
|
||||
<bezel name="digit14" element="digit">
|
||||
<bezel name="digit13" element="digit">
|
||||
<bounds left="142" top="105" right="176" bottom="144" />
|
||||
</bezel>
|
||||
<bezel name="digit13" element="digit">
|
||||
<bezel name="digit12" element="digit">
|
||||
<bounds left="186" top="105" right="220" bottom="144" />
|
||||
</bezel>
|
||||
<bezel name="digit12" element="digit">
|
||||
<bezel name="digit11" element="digit">
|
||||
<bounds left="230" top="105" right="264" bottom="144" />
|
||||
</bezel>
|
||||
<bezel name="digit11" element="digit">
|
||||
<bezel name="digit10" element="digit">
|
||||
<bounds left="274" top="105" right="308" bottom="144" />
|
||||
</bezel>
|
||||
|
||||
<!-- Player 3 Score -->
|
||||
<bezel name="digit20" element="digit">
|
||||
<bezel name="digit26" element="digit">
|
||||
<bounds left="10" top="165" right="44" bottom="204" />
|
||||
</bezel>
|
||||
<bezel name="digit26" element="digit">
|
||||
<bezel name="digit25" element="digit">
|
||||
<bounds left="54" top="165" right="88" bottom="204" />
|
||||
</bezel>
|
||||
<bezel name="digit25" element="digit">
|
||||
<bezel name="digit24" element="digit">
|
||||
<bounds left="98" top="165" right="132" bottom="204" />
|
||||
</bezel>
|
||||
<bezel name="digit24" element="digit">
|
||||
<bezel name="digit23" element="digit">
|
||||
<bounds left="142" top="165" right="176" bottom="204" />
|
||||
</bezel>
|
||||
<bezel name="digit23" element="digit">
|
||||
<bezel name="digit22" element="digit">
|
||||
<bounds left="186" top="165" right="220" bottom="204" />
|
||||
</bezel>
|
||||
<bezel name="digit22" element="digit">
|
||||
<bezel name="digit21" element="digit">
|
||||
<bounds left="230" top="165" right="264" bottom="204" />
|
||||
</bezel>
|
||||
<bezel name="digit21" element="digit">
|
||||
<bezel name="digit20" element="digit">
|
||||
<bounds left="274" top="165" right="308" bottom="204" />
|
||||
</bezel>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user