s11: Added outputs,save-state. Fixed some display issues.

This commit is contained in:
Robbbert 2022-01-30 03:42:01 +11:00
parent 357d6b8f59
commit ad88106c81
6 changed files with 235 additions and 196 deletions

View File

@ -25,7 +25,7 @@ Status:
- All machines are playable
ToDo:
- Outputs
- Machanical sounds
*****************************************************************************************/
@ -170,10 +170,10 @@ void s11_state::device_timer(emu_timer &timer, device_timer_id id, int param)
{
#ifndef S11_W15
// W14 jumper present (Q7), W15 absent (Q10)
m_timer_irq_active = (BIT(m_timer_count, 7) && BIT(m_timer_count, 8) && BIT(m_timer_count, 9));
m_timer_irq_active = (BIT(m_timer_count, 7, 3) == 7);
#else
// W14 jumper absent (Q7), W15 present (Q10)
m_timer_irq_active = (BIT(m_timer_count, 10) && BIT(m_timer_count, 8) && BIT(m_timer_count, 9));
m_timer_irq_active = (BIT(m_timer_count, 8, 3) == 7);
#endif
}
@ -185,12 +185,6 @@ void s11_state::device_timer(emu_timer &timer, device_timer_id id, int param)
}
}
void s11_state::machine_reset()
{
membank("bank0")->set_entry(0);
membank("bank1")->set_entry(0);
}
INPUT_CHANGED_MEMBER( s11_state::main_nmi )
{
// Diagnostic button sends a pulse to NMI pin
@ -228,10 +222,6 @@ WRITE_LINE_MEMBER( s11_state::main_irq )
m_maincpu->set_input_line(M6802_IRQ_LINE, state);
}
void s11_state::sol3_w(u8 data)
{
}
void s11_state::sound_w(u8 data)
{
m_sound_data = data;
@ -246,14 +236,23 @@ WRITE_LINE_MEMBER( s11_state::pia21_ca2_w )
void s11_state::lamp0_w(u8 data)
{
m_lamp_data = data ^ 0xff;
}
void s11_state::lamp1_w(u8 data)
{
// find out which row is active
for (u8 i = 0; i < 8; i++)
if (BIT(data, i))
for (u8 j = 0; j < 8; j++)
m_io_outputs[16U+i*8U+j] = BIT(m_lamp_data, j);
}
void s11_state::dig0_w(u8 data)
{
static const u8 patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0x58, 0x4c, 0x62, 0x69, 0x78, 0 }; // 7447
data &= 0x7f;
m_strobe = data & 15;
m_diag = (data & 0x70) >> 4;
m_diag = BIT(data, 4, 3);
m_digits[60] = patterns[data>>4]; // diag digit
m_segment1 = 0;
m_segment2 = 0;
@ -263,11 +262,6 @@ void s11_state::dig1_w(u8 data)
{
m_segment2 |= data;
m_segment2 |= 0x20000;
if ((m_segment2 & 0x70000) == 0x30000)
{
m_digits[m_strobe+16] = bitswap<16>(m_segment2, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0);
m_segment2 |= 0x40000;
}
}
u8 s11_state::pia28_w7_r()
@ -298,18 +292,13 @@ void s11_state::pia2c_pb_w(u8 data)
{
m_segment1 |= data;
m_segment1 |= 0x20000;
if ((m_segment1 & 0x70000) == 0x30000)
{
m_digits[m_strobe] = bitswap<16>(m_segment1, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0);
m_segment1 |= 0x40000;
}
}
u8 s11_state::switch_r()
{
u8 data = 0;
// scan all 8 input columns, since multiple can be selected at once
for (int i = 0; i < 8; i++)
for (u8 i = 0; i < 8; i++)
if (BIT(m_row, i))
data |= m_io_keyboard[i]->read();
@ -319,8 +308,6 @@ u8 s11_state::switch_r()
void s11_state::switch_w(u8 data)
{
// this drives the pulldown 2N3904 NPN transistors Q42-Q49, each of which drives one column of the switch matrix low
// it is possible for multiple columns to be enabled at once, this is handled in switch_r above.
m_row = data;
}
@ -376,6 +363,38 @@ u8 s11_state::sound_r()
return m_sound_data;
}
void s11_state::machine_start()
{
genpin_class::machine_start();
m_io_outputs.resolve();
m_digits.resolve();
save_item(NAME(m_sound_data));
save_item(NAME(m_diag));
save_item(NAME(m_segment1));
save_item(NAME(m_segment2));
save_item(NAME(m_timer_count));
save_item(NAME(m_timer_irq_active));
save_item(NAME(m_pia_irq_active));
save_item(NAME(m_strobe));
save_item(NAME(m_row));
//save_item(NAME(m_data_ok));
save_item(NAME(m_lamp_data));
m_irq_timer = timer_alloc(TIMER_IRQ);
m_irq_timer->adjust(attotime::from_ticks(980,1e6),1);
}
void s11_state::machine_reset()
{
genpin_class::machine_reset();
for (u8 i = 0; i < m_io_outputs.size(); i++)
m_io_outputs[i] = 0;
membank("bank0")->set_entry(0);
membank("bank1")->set_entry(0);
}
void s11_state::init_s11()
{
u8 *ROM = memregion("audiocpu")->base();
@ -383,11 +402,8 @@ void s11_state::init_s11()
membank("bank1")->configure_entries(0, 2, &ROM[0x8000], 0x4000);
membank("bank0")->set_entry(0);
membank("bank1")->set_entry(0);
m_timer_count = 0;
m_irq_timer = timer_alloc(TIMER_IRQ);
m_irq_timer->adjust(attotime::from_ticks(32,E_CLOCK),0);
m_timer_irq_active = false;
m_pia_irq_active = false;
}
void s11_state::s11(machine_config &config)

View File

@ -132,13 +132,12 @@ static INPUT_PORTS_START( s11a )
PORT_CONFSETTING( 0x10, "English" )
INPUT_PORTS_END
void s11a_state::s11a_dig0_w(uint8_t data)
void s11a_state::s11a_dig0_w(u8 data)
{
data &= 0x7f;
set_strobe(data & 15);
set_diag((data & 0x70) >> 4);
set_diag(BIT(data, 4, 3));
m_digits[60] = 0; // +5VDC (always on)
m_digits[61] = get_diag() & 0x01; // connected to PA4
m_digits[61] = BIT(data, 4); // connected to PA4
m_digits[62] = 0; // Blanking (pretty much always on)
set_segment1(0);
set_segment2(0);

View File

@ -1,5 +1,5 @@
// license:BSD-3-Clause
// copyright-holders:Miodrag Milanovic
// copyright-holders:Miodrag Milanovic, Robbbert
/*************************************************************************************************************
PINBALL
@ -33,7 +33,6 @@ Status:
- All machines are playable
ToDo:
- Some machines use 7-segment displays for player 3/4, so need s new layout for them
- Some digits flicker
Known issues:
@ -52,7 +51,6 @@ Known issues:
the ram at 0x780-0x7ff, so it is possible that the protection being
active prevents the real machine from crashing)
- Black Knight 2000 LG-1 set reports U26 ROM FAILURE. Bad/hacked dump or original bug?
- Taxi and Police Force both have issues with the display showing garbage overlaid by the alphanumerics.
***************************************************************************************************************/
@ -147,17 +145,25 @@ static INPUT_PORTS_START( s11b )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PLUS_PAD) PORT_NAME("INP64")
PORT_START("DIAGS")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Audio Diag") PORT_CODE(KEYCODE_1_PAD) PORT_CHANGED_MEMBER(DEVICE_SELF, s11b_state, audio_nmi, 1)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Main Diag") PORT_CODE(KEYCODE_4_PAD) PORT_CHANGED_MEMBER(DEVICE_SELF, s11b_state, main_nmi, 1)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Advance") PORT_CODE(KEYCODE_5_PAD)
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Audio Diag") PORT_CODE(KEYCODE_9_PAD) PORT_CHANGED_MEMBER(DEVICE_SELF, s11b_state, audio_nmi, 1)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Main Diag") PORT_CODE(KEYCODE_0_PAD) PORT_CHANGED_MEMBER(DEVICE_SELF, s11b_state, main_nmi, 1)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Advance") PORT_CODE(KEYCODE_1_PAD)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Up/Down") PORT_CODE(KEYCODE_6_PAD) PORT_TOGGLE
PORT_CONFNAME( 0x10, 0x10, "Language" )
PORT_CONFSETTING( 0x00, "German" )
PORT_CONFSETTING( 0x10, "English" )
INPUT_PORTS_END
void s11b_state::machine_start()
{
s11_state::machine_start();
save_item(NAME(m_invert));
save_item(NAME(m_is7seg34));
}
void s11b_state::machine_reset()
{
s11_state::machine_reset();
membank("bank0")->set_entry(0);
membank("bank1")->set_entry(0);
// reset the CPUs again, so that the CPUs are starting with the right vectors (otherwise sound may die on reset)
@ -166,80 +172,84 @@ void s11b_state::machine_reset()
m_bg->device_reset();
}
void s11b_state::s11b_dig1_w(uint8_t data)
void s11b_state::s11b_dig1_w(u8 data)
{
uint32_t seg = get_segment2();
u32 seg = get_segment2();
seg |= data;
seg |= 0x20000;
if((seg & 0x70000) == 0x30000)
{
if(m_invert)
m_digits[get_strobe()+16] = bitswap<16>(~seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0);
else
m_digits[get_strobe()+16] = bitswap<16>(seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0);
seg |= 0x40000;
}
set_segment2(seg);
}
void s11b_state::s11b_pia2c_pa_w(uint8_t data)
void s11b_state::s11b_pia2c_pa_w(u8 data)
{
uint32_t seg = get_segment1();
u32 seg = get_segment1();
seg |= (data<<8);
seg |= 0x10000;
if((seg & 0x70000) == 0x30000)
{
if(m_invert)
m_digits[get_strobe()] = bitswap<16>(~seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0);
else
m_digits[get_strobe()] = bitswap<16>(seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0);
u16 segd = (m_invert) ? ~seg : seg;
m_digits[get_strobe()] = bitswap<16>(segd, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0);
seg |= 0x40000;
}
set_segment1(seg);
}
void s11b_state::s11b_pia2c_pb_w(uint8_t data)
void s11b_state::s11b_pia2c_pb_w(u8 data)
{
uint32_t seg = get_segment1();
u32 seg = get_segment1();
seg |= data;
seg |= 0x20000;
if((seg & 0x70000) == 0x30000)
{
if(m_invert)
m_digits[get_strobe()] = bitswap<16>(~seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0);
else
m_digits[get_strobe()] = bitswap<16>(seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0);
seg |= 0x40000;
}
set_segment1(seg);
}
void s11b_state::s11b_pia34_pa_w(uint8_t data)
void s11b_state::s11b_pia34_pa_w(u8 data)
{
uint32_t seg = get_segment2();
u32 seg = get_segment2();
seg |= (data<<8);
seg |= 0x10000;
if((seg & 0x70000) == 0x30000)
{
if(m_invert)
m_digits[get_strobe()+16] = bitswap<16>(~seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0);
else
m_digits[get_strobe()+16] = bitswap<16>(seg, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0);
u16 segd = (m_invert) ? ~seg : seg;
if (m_is7seg34)
{
segd &= 0xff; // discard diagonal segs
if (BIT(segd, 6))
segd |= 0x800; // fix g seg
if (BIT(segd, 7))
segd |= 0x8000; // fix comma
}
m_digits[get_strobe()+16] = bitswap<16>(segd, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0);
seg |= 0x40000;
}
set_segment2(seg);
}
void s11b_state::init_s11b()
void s11b_state::init_s11bnn()
{
s11a_state::init_s11a();
s11_state::init_s11();
m_invert = false;
m_is7seg34 = false;
}
void s11b_state::init_s11b_invert()
void s11b_state::init_s11bin()
{
s11a_state::init_s11a();
s11_state::init_s11();
m_invert = true;
m_is7seg34 = false;
}
void s11b_state::init_s11bn7()
{
s11_state::init_s11();
m_invert = false;
m_is7seg34 = true;
}
void s11b_state::init_s11bi7()
{
s11_state::init_s11();
m_invert = true;
m_is7seg34 = true;
}
void s11b_state::s11b_base(machine_config &config)
@ -1566,63 +1576,63 @@ ROM_START(whirl_l2)
ROM_RELOAD(0x58000,0x8000)
ROM_END
GAME(1989, bcats_l5, 0, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Williams", "Bad Cats (L-5)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, bcats_l2, bcats_l5, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Williams", "Bad Cats (LA-2)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, bcats_g4, bcats_l5, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Williams", "Bad Cats (LG-4)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, bnzai_l3, 0, s11b, s11b, s11b_state, init_s11b, ROT0, "Williams", "Banzai Run (L-3)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, bnzai_g3, bnzai_l3, s11b, s11b, s11b_state, init_s11b, ROT0, "Williams", "Banzai Run (L-3) Germany", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, bnzai_l1, bnzai_l3, s11b, s11b, s11b_state, init_s11b, ROT0, "Williams", "Banzai Run (L-1)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, bnzai_pa, bnzai_l3, s11b, s11b, s11b_state, init_s11b, ROT0, "Williams", "Banzai Run (P-A)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1987, bguns_l8, 0, s11b, s11b, s11b_state, init_s11b, ROT0, "Williams", "Big Guns (L-8)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1987, bguns_l7, bguns_l8, s11b, s11b, s11b_state, init_s11b, ROT0, "Williams", "Big Guns (L-7)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1987, bguns_la, bguns_l8, s11b, s11b, s11b_state, init_s11b, ROT0, "Williams", "Big Guns (L-A)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1987, bguns_p1, bguns_l8, s11b, s11b, s11b_state, init_s11b, ROT0, "Williams", "Big Guns (P-1)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, bk2k_l4, 0, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Williams", "Black Knight 2000 (L-4)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, bk2k_lg1, bk2k_l4, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Williams", "Black Knight 2000 (LG-1)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, bk2k_lg3, bk2k_l4, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Williams", "Black Knight 2000 (LG-3)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, bk2k_pu1, bk2k_l4, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Williams", "Black Knight 2000 (PU-1)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, bk2k_pf1, bk2k_l4, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Williams", "Black Knight 2000 (PF-1)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, bk2k_la2, bk2k_l4, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Williams", "Black Knight 2000 (LA-2)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, bk2k_pa7, bk2k_l4, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Williams", "Black Knight 2000 (PA-7)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, bk2k_pa5, bk2k_l4, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Williams", "Black Knight 2000 (PA-5)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, cycln_l5, 0, s11b, s11b, s11b_state, init_s11b, ROT0, "Williams", "Cyclone (L-5)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, cycln_l4, cycln_l5, s11b, s11b, s11b_state, init_s11b, ROT0, "Williams", "Cyclone (L-4)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, cycln_l1, cycln_l5, s11b, s11b, s11b_state, init_s11b, ROT0, "Williams", "Cyclone (L-1)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, esha_la3, 0, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Williams", "Earthshaker (LA-3)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, esha_ma3, esha_la3, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Williams", "Earthshaker (Metallica) (LA-3)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, esha_pr4, esha_la3, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Williams", "Earthshaker (Family version) (PR-4)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, esha_lg1, esha_la3, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Williams", "Earthshaker (German) (LG-1)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, esha_lg2, esha_la3, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Williams", "Earthshaker (German) (LG-2)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, esha_la1, esha_la3, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Williams", "Earthshaker (LA-1)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, esha_pa1, esha_la3, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Williams", "Earthshaker (Prototype) (PA-1)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, esha_pa4, esha_la3, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Williams", "Earthshaker (Prototype) (PA-4)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, eatpm_l4, 0, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Bally", "Elvira and the Party Monsters (LA-4)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, eatpm_l1, eatpm_l4, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Bally", "Elvira and the Party Monsters (LA-1)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, eatpm_l2, eatpm_l4, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Bally", "Elvira and the Party Monsters (LA-2)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, eatpm_4g, eatpm_l4, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Bally", "Elvira and the Party Monsters (LG-4)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, eatpm_4u, eatpm_l4, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Bally", "Elvira and the Party Monsters (LU-4)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, eatpm_f1, eatpm_l4, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Bally", "Elvira and the Party Monsters (LF-1) French", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, eatpm_p7, eatpm_l4, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Bally", "Elvira and the Party Monsters (PA-7)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, jokrz_l6, 0, s11b_jokerz, s11b, s11b_state, init_s11b_invert, ROT0, "Williams", "Jokerz! (L-6)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, jokrz_l3, jokrz_l6, s11b_jokerz, s11b, s11b_state, init_s11b_invert, ROT0, "Williams", "Jokerz! (L-3)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, jokrz_g4, jokrz_l6, s11b_jokerz, s11b, s11b_state, init_s11b_invert, ROT0, "Williams", "Jokerz! (G-4)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, mousn_l4, 0, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Bally", "Mousin' Around! (LA-4)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, mousn_l1, mousn_l4, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Bally", "Mousin' Around! (LA-1)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, mousn_lu, mousn_l4, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Bally", "Mousin' Around! (LU-1)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, mousn_lx, mousn_l4, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Bally", "Mousin' Around! (LX-1)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, polic_l4, 0, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Williams", "Police Force (LA-4)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, polic_l3, polic_l4, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Williams", "Police Force (LA-3)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, polic_l2, polic_l4, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Williams", "Police Force (LA-2)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, polic_g4, polic_l4, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Williams", "Police Force (LG-4) Germany", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, spstn_l5, 0, s11b, s11b, s11b_state, init_s11b, ROT0, "Williams", "Space Station (L-5)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, swrds_l2, 0, s11b, s11b, s11b_state, init_s11b, ROT0, "Williams", "Swords of Fury (L-2)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, swrds_l1, swrds_l2, s11b, s11b, s11b_state, init_s11b, ROT0, "Williams", "Swords of Fury (L-1)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, taxi_l4, 0, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Williams", "Taxi (Lola) (L-4)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, taxi_l3, taxi_l4, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Williams", "Taxi (Marilyn) (L-3)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, taxi_lu1, taxi_l4, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Williams", "Taxi (Marilyn) (LU-1)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, taxi_lg1, taxi_l4, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Williams", "Taxi (Marilyn) (L-1) Germany", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, taxi_p5, taxi_l4, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Williams", "Taxi (P-5)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, tsptr_l3, 0, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Bally", "Transporter the Rescue (L-3)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, whirl_l3, 0, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Williams", "Whirlwind (L-3)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, whirl_l2, whirl_l3, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Williams", "Whirlwind (L-2)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, whirl_lg3, whirl_l3, s11b, s11b, s11b_state, init_s11b_invert, ROT0, "Williams", "Whirlwind (LG-3)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, bcats_l5, 0, s11b, s11b, s11b_state, init_s11bin, ROT0, "Williams", "Bad Cats (L-5)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, bcats_l2, bcats_l5, s11b, s11b, s11b_state, init_s11bin, ROT0, "Williams", "Bad Cats (LA-2)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, bcats_g4, bcats_l5, s11b, s11b, s11b_state, init_s11bin, ROT0, "Williams", "Bad Cats (LG-4)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, bnzai_l3, 0, s11b, s11b, s11b_state, init_s11bn7, ROT0, "Williams", "Banzai Run (L-3)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, bnzai_g3, bnzai_l3, s11b, s11b, s11b_state, init_s11bn7, ROT0, "Williams", "Banzai Run (L-3) Germany", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, bnzai_l1, bnzai_l3, s11b, s11b, s11b_state, init_s11bn7, ROT0, "Williams", "Banzai Run (L-1)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, bnzai_pa, bnzai_l3, s11b, s11b, s11b_state, init_s11bn7, ROT0, "Williams", "Banzai Run (P-A)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1987, bguns_l8, 0, s11b, s11b, s11b_state, init_s11bnn, ROT0, "Williams", "Big Guns (L-8)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1987, bguns_l7, bguns_l8, s11b, s11b, s11b_state, init_s11bnn, ROT0, "Williams", "Big Guns (L-7)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1987, bguns_la, bguns_l8, s11b, s11b, s11b_state, init_s11bnn, ROT0, "Williams", "Big Guns (L-A)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1987, bguns_p1, bguns_l8, s11b, s11b, s11b_state, init_s11bnn, ROT0, "Williams", "Big Guns (P-1)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, bk2k_l4, 0, s11b, s11b, s11b_state, init_s11bin, ROT0, "Williams", "Black Knight 2000 (L-4)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, bk2k_lg1, bk2k_l4, s11b, s11b, s11b_state, init_s11bin, ROT0, "Williams", "Black Knight 2000 (LG-1)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, bk2k_lg3, bk2k_l4, s11b, s11b, s11b_state, init_s11bin, ROT0, "Williams", "Black Knight 2000 (LG-3)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, bk2k_pu1, bk2k_l4, s11b, s11b, s11b_state, init_s11bin, ROT0, "Williams", "Black Knight 2000 (PU-1)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, bk2k_pf1, bk2k_l4, s11b, s11b, s11b_state, init_s11bin, ROT0, "Williams", "Black Knight 2000 (PF-1)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, bk2k_la2, bk2k_l4, s11b, s11b, s11b_state, init_s11bin, ROT0, "Williams", "Black Knight 2000 (LA-2)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, bk2k_pa7, bk2k_l4, s11b, s11b, s11b_state, init_s11bin, ROT0, "Williams", "Black Knight 2000 (PA-7)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, bk2k_pa5, bk2k_l4, s11b, s11b, s11b_state, init_s11bin, ROT0, "Williams", "Black Knight 2000 (PA-5)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, cycln_l5, 0, s11b, s11b, s11b_state, init_s11bnn, ROT0, "Williams", "Cyclone (L-5)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, cycln_l4, cycln_l5, s11b, s11b, s11b_state, init_s11bnn, ROT0, "Williams", "Cyclone (L-4)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, cycln_l1, cycln_l5, s11b, s11b, s11b_state, init_s11bnn, ROT0, "Williams", "Cyclone (L-1)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, esha_la3, 0, s11b, s11b, s11b_state, init_s11bin, ROT0, "Williams", "Earthshaker (LA-3)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, esha_ma3, esha_la3, s11b, s11b, s11b_state, init_s11bin, ROT0, "Williams", "Earthshaker (Metallica) (LA-3)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, esha_pr4, esha_la3, s11b, s11b, s11b_state, init_s11bin, ROT0, "Williams", "Earthshaker (Family version) (PR-4)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, esha_lg1, esha_la3, s11b, s11b, s11b_state, init_s11bin, ROT0, "Williams", "Earthshaker (German) (LG-1)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, esha_lg2, esha_la3, s11b, s11b, s11b_state, init_s11bin, ROT0, "Williams", "Earthshaker (German) (LG-2)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, esha_la1, esha_la3, s11b, s11b, s11b_state, init_s11bin, ROT0, "Williams", "Earthshaker (LA-1)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, esha_pa1, esha_la3, s11b, s11b, s11b_state, init_s11bin, ROT0, "Williams", "Earthshaker (Prototype) (PA-1)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, esha_pa4, esha_la3, s11b, s11b, s11b_state, init_s11bin, ROT0, "Williams", "Earthshaker (Prototype) (PA-4)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, eatpm_l4, 0, s11b, s11b, s11b_state, init_s11bin, ROT0, "Bally", "Elvira and the Party Monsters (LA-4)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, eatpm_l1, eatpm_l4, s11b, s11b, s11b_state, init_s11bin, ROT0, "Bally", "Elvira and the Party Monsters (LA-1)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, eatpm_l2, eatpm_l4, s11b, s11b, s11b_state, init_s11bin, ROT0, "Bally", "Elvira and the Party Monsters (LA-2)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, eatpm_4g, eatpm_l4, s11b, s11b, s11b_state, init_s11bin, ROT0, "Bally", "Elvira and the Party Monsters (LG-4)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, eatpm_4u, eatpm_l4, s11b, s11b, s11b_state, init_s11bin, ROT0, "Bally", "Elvira and the Party Monsters (LU-4)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, eatpm_f1, eatpm_l4, s11b, s11b, s11b_state, init_s11bin, ROT0, "Bally", "Elvira and the Party Monsters (LF-1) French", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, eatpm_p7, eatpm_l4, s11b, s11b, s11b_state, init_s11bin, ROT0, "Bally", "Elvira and the Party Monsters (PA-7)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, jokrz_l6, 0, s11b_jokerz, s11b, s11b_state, init_s11bin, ROT0, "Williams", "Jokerz! (L-6)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, jokrz_l3, jokrz_l6, s11b_jokerz, s11b, s11b_state, init_s11bin, ROT0, "Williams", "Jokerz! (L-3)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, jokrz_g4, jokrz_l6, s11b_jokerz, s11b, s11b_state, init_s11bin, ROT0, "Williams", "Jokerz! (G-4)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, mousn_l4, 0, s11b, s11b, s11b_state, init_s11bin, ROT0, "Bally", "Mousin' Around! (LA-4)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, mousn_l1, mousn_l4, s11b, s11b, s11b_state, init_s11bin, ROT0, "Bally", "Mousin' Around! (LA-1)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, mousn_lu, mousn_l4, s11b, s11b, s11b_state, init_s11bin, ROT0, "Bally", "Mousin' Around! (LU-1)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, mousn_lx, mousn_l4, s11b, s11b, s11b_state, init_s11bin, ROT0, "Bally", "Mousin' Around! (LX-1)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, polic_l4, 0, s11b, s11b, s11b_state, init_s11bi7, ROT0, "Williams", "Police Force (LA-4)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, polic_l3, polic_l4, s11b, s11b, s11b_state, init_s11bi7, ROT0, "Williams", "Police Force (LA-3)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, polic_l2, polic_l4, s11b, s11b, s11b_state, init_s11bi7, ROT0, "Williams", "Police Force (LA-2)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, polic_g4, polic_l4, s11b, s11b, s11b_state, init_s11bi7, ROT0, "Williams", "Police Force (LG-4) Germany", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, spstn_l5, 0, s11b, s11b, s11b_state, init_s11bnn, ROT0, "Williams", "Space Station (L-5)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, swrds_l2, 0, s11b, s11b, s11b_state, init_s11bn7, ROT0, "Williams", "Swords of Fury (L-2)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, swrds_l1, swrds_l2, s11b, s11b, s11b_state, init_s11bn7, ROT0, "Williams", "Swords of Fury (L-1)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, taxi_l4, 0, s11b, s11b, s11b_state, init_s11bi7, ROT0, "Williams", "Taxi (Lola) (L-4)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, taxi_l3, taxi_l4, s11b, s11b, s11b_state, init_s11bi7, ROT0, "Williams", "Taxi (Marilyn) (L-3)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, taxi_lu1, taxi_l4, s11b, s11b, s11b_state, init_s11bi7, ROT0, "Williams", "Taxi (Marilyn) (LU-1)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, taxi_lg1, taxi_l4, s11b, s11b, s11b_state, init_s11bi7, ROT0, "Williams", "Taxi (Marilyn) (L-1) Germany", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1988, taxi_p5, taxi_l4, s11b, s11b, s11b_state, init_s11bi7, ROT0, "Williams", "Taxi (P-5)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, tsptr_l3, 0, s11b, s11b, s11b_state, init_s11bin, ROT0, "Bally", "Transporter the Rescue (L-3)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, whirl_l3, 0, s11b, s11b, s11b_state, init_s11bin, ROT0, "Williams", "Whirlwind (L-3)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, whirl_l2, whirl_l3, s11b, s11b, s11b_state, init_s11bin, ROT0, "Williams", "Whirlwind (L-2)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, whirl_lg3, whirl_l3, s11b, s11b, s11b_state, init_s11bin, ROT0, "Williams", "Whirlwind (LG-3)", MACHINE_IS_SKELETON_MECHANICAL)

View File

@ -1,5 +1,5 @@
// license:BSD-3-Clause
// copyright-holders:Miodrag Milanovic
// copyright-holders:Miodrag Milanovic, Robbbert
/*******************************************************************************************************************
PINBALL
@ -27,11 +27,11 @@ Star Trax --- unknown unknown
Status:
- All pinball machines are playable
- Star Trax requires many ball bearings (no pinball), so will not be able to run
- Star Trax has no pinball, but instead has many ball bearings (800 was mentioned), so will not be able to run
ToDo:
- Some machines use 7-segment displays for player 3/4, so need s new layout for them
- Riverboat Gambler: first 4 digits of Player 4 don't work. (see code around BBB8)
- Some digits flicker
- Star Trax: there's no documentation. Need manual, schematics, etc
@ -129,9 +129,9 @@ static INPUT_PORTS_START( s11c )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_PLUS_PAD) PORT_NAME("INP64")
PORT_START("DIAGS")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Audio Diag") PORT_CODE(KEYCODE_1_PAD) PORT_CHANGED_MEMBER(DEVICE_SELF, s11b_state, audio_nmi, 1)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Main Diag") PORT_CODE(KEYCODE_4_PAD) PORT_CHANGED_MEMBER(DEVICE_SELF, s11b_state, main_nmi, 1)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Advance") PORT_CODE(KEYCODE_5_PAD)
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Audio Diag") PORT_CODE(KEYCODE_9_PAD) PORT_CHANGED_MEMBER(DEVICE_SELF, s11b_state, audio_nmi, 1)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Main Diag") PORT_CODE(KEYCODE_0_PAD) PORT_CHANGED_MEMBER(DEVICE_SELF, s11b_state, main_nmi, 1)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Advance") PORT_CODE(KEYCODE_1_PAD)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Up/Down") PORT_CODE(KEYCODE_6_PAD) PORT_TOGGLE
PORT_CONFNAME( 0x10, 0x10, "Language" )
PORT_CONFSETTING( 0x00, "German" )
@ -151,6 +151,12 @@ void s11c_state::init_s11c()
timer->adjust(attotime::from_ticks(32,E_CLOCK),0);
}
void s11c_state::init_s11c7()
{
init_s11c();
set_7seg(true);
}
void s11c_state::s11c(machine_config &config)
{
/* basic machine hardware */
@ -727,38 +733,38 @@ ROM_START(strax_p7)
ROM_END
GAME(1990, bbnny_l2, 0, s11c, s11c, s11c_state, init_s11c, ROT0, "Bally", "Bugs Bunny Birthday Ball (L-2)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, bbnny_lu, bbnny_l2, s11c, s11c, s11c_state, init_s11c, ROT0, "Bally", "Bugs Bunny Birthday Ball (LU-2) European", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, diner_l4, 0, s11c, s11c, s11c_state, init_s11c, ROT0, "Williams", "Diner (LA-4)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, diner_l3, diner_l4, s11c, s11c, s11c_state, init_s11c, ROT0, "Williams", "Diner (LA-3)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, diner_l2, diner_l4, s11c, s11c, s11c_state, init_s11c, ROT0, "Williams", "Diner (LU-2) Europe", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, diner_f2, diner_l4, s11c, s11c, s11c_state, init_s11c, ROT0, "Williams", "Diner (LF-2) French", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, diner_l1, diner_l4, s11c, s11c, s11c_state, init_s11c, ROT0, "Williams", "Diner (LU-1) Europe", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, diner_p0, diner_l4, s11c, s11c, s11c_state, init_s11c, ROT0, "Williams", "Diner (PA-0 prototype)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, dd_l2, 0, s11c, s11c, s11c_state, init_s11c, ROT0, "Bally", "Dr. Dude (LA-2)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, dd_lu1, dd_l2, s11c, s11c, s11c_state, init_s11c, ROT0, "Bally", "Dr. Dude (LU-1) Europe", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, dd_p6, dd_l2, s11c, s11c, s11c_state, init_s11c, ROT0, "Bally", "Dr. Dude (PA-6)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, pool_l7, 0, s11c, s11c, s11c_state, init_s11c, ROT0, "Bally", "Pool Sharks (LA-7)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, pool_l6, pool_l7, s11c, s11c, s11c_state, init_s11c, ROT0, "Bally", "Pool Sharks (LA-6)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, pool_l5, pool_l7, s11c, s11c, s11c_state, init_s11c, ROT0, "Bally", "Pool Sharks (LA-5)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, pool_le2, pool_l7, s11c, s11c, s11c_state, init_s11c, ROT0, "Bally", "Pool Sharks (LE-2)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, pool_p7, pool_l7, s11c, s11c, s11c_state, init_s11c, ROT0, "Bally", "Pool Sharks (PA-7)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, radcl_l1, 0, s11c, s11c, s11c_state, init_s11c, ROT0, "Bally", "Radical! (L-1)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, radcl_g1, radcl_l1, s11c, s11c, s11c_state, init_s11c, ROT0, "Bally", "Radical! (G-1)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, radcl_p3, radcl_l1, s11c, s11c, s11c_state, init_s11c, ROT0, "Bally", "Radical! (P-3)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, rvrbt_l3, 0, s11c, s11c, s11c_state, init_s11c, ROT0, "Williams", "Riverboat Gambler (L-3)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, rvrbt_p7, rvrbt_l3, s11c, s11c, s11c_state, init_s11c, ROT0, "Williams", "Riverboat Gambler (PA-7)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, rollr_l2, 0, s11c, s11c, s11c_state, init_s11c, ROT0, "Williams", "Rollergames (L-2)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1991, rollr_ex, rollr_l2, s11c, s11c, s11c_state, init_s11c, ROT0, "Williams", "Rollergames (EXPERIMENTAL)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1991, rollr_e1, rollr_l2, s11c, s11c, s11c_state, init_s11c, ROT0, "Williams", "Rollergames (PU-1)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1991, rollr_p2, rollr_l2, s11c, s11c, s11c_state, init_s11c, ROT0, "Williams", "Rollergames (PA-2 / PA-1 Sound)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, rollr_l3, rollr_l2, s11c, s11c, s11c_state, init_s11c, ROT0, "Williams", "Rollergames (LU-3) Europe", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, rollr_g3, rollr_l2, s11c, s11c, s11c_state, init_s11c, ROT0, "Williams", "Rollergames (LG-3) Germany", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1991, rollr_f2, rollr_l2, s11c, s11c, s11c_state, init_s11c, ROT0, "Williams", "Rollergames (LF-2) French", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, rollr_f3, rollr_l2, s11c, s11c, s11c_state, init_s11c, ROT0, "Williams", "Rollergames (LF-3) French", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, rollr_d2, rollr_l2, s11c, s11c, s11c_state, init_s11c, ROT0, "Williams", "Rollergames (AD-2) Prototype", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, gs_lu4, 0, s11c, s11c, s11c_state, init_s11c, ROT0, "Bally", "The Bally Game Show (LU-4) Europe", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, gs_lu3, gs_lu4, s11c, s11c, s11c_state, init_s11c, ROT0, "Bally", "The Bally Game Show (LU-3) Europe", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, gs_la3, gs_lu4, s11c, s11c, s11c_state, init_s11c, ROT0, "Bally", "The Bally Game Show (LA-3)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, gs_lg6, gs_lu4, s11c, s11c, s11c_state, init_s11c, ROT0, "Bally", "The Bally Game Show (LG-6) Germany", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, strax_p7, 0, s11c, s11c, s11c_state, init_s11c, ROT0, "Krell Development", "Star Trax (domestic prototype)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, bbnny_l2, 0, s11c, s11c, s11c_state, init_s11c, ROT0, "Bally", "Bugs Bunny Birthday Ball (L-2)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, bbnny_lu, bbnny_l2, s11c, s11c, s11c_state, init_s11c, ROT0, "Bally", "Bugs Bunny Birthday Ball (LU-2) European", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, diner_l4, 0, s11c, s11c, s11c_state, init_s11c, ROT0, "Williams", "Diner (LA-4)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, diner_l3, diner_l4, s11c, s11c, s11c_state, init_s11c, ROT0, "Williams", "Diner (LA-3)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, diner_l2, diner_l4, s11c, s11c, s11c_state, init_s11c, ROT0, "Williams", "Diner (LU-2) Europe", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, diner_f2, diner_l4, s11c, s11c, s11c_state, init_s11c, ROT0, "Williams", "Diner (LF-2) French", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, diner_l1, diner_l4, s11c, s11c, s11c_state, init_s11c, ROT0, "Williams", "Diner (LU-1) Europe", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, diner_p0, diner_l4, s11c, s11c, s11c_state, init_s11c, ROT0, "Williams", "Diner (PA-0 prototype)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, dd_l2, 0, s11c, s11c, s11c_state, init_s11c, ROT0, "Bally", "Dr. Dude (LA-2)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, dd_lu1, dd_l2, s11c, s11c, s11c_state, init_s11c, ROT0, "Bally", "Dr. Dude (LU-1) Europe", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, dd_p6, dd_l2, s11c, s11c, s11c_state, init_s11c, ROT0, "Bally", "Dr. Dude (PA-6)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, pool_l7, 0, s11c, s11c, s11c_state, init_s11c, ROT0, "Bally", "Pool Sharks (LA-7)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, pool_l6, pool_l7, s11c, s11c, s11c_state, init_s11c, ROT0, "Bally", "Pool Sharks (LA-6)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, pool_l5, pool_l7, s11c, s11c, s11c_state, init_s11c, ROT0, "Bally", "Pool Sharks (LA-5)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, pool_le2, pool_l7, s11c, s11c, s11c_state, init_s11c, ROT0, "Bally", "Pool Sharks (LE-2)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1989, pool_p7, pool_l7, s11c, s11c, s11c_state, init_s11c, ROT0, "Bally", "Pool Sharks (PA-7)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, radcl_l1, 0, s11c, s11c, s11c_state, init_s11c, ROT0, "Bally", "Radical! (L-1)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, radcl_g1, radcl_l1, s11c, s11c, s11c_state, init_s11c, ROT0, "Bally", "Radical! (G-1)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, radcl_p3, radcl_l1, s11c, s11c, s11c_state, init_s11c, ROT0, "Bally", "Radical! (P-3)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, rvrbt_l3, 0, s11c, s11c, s11c_state, init_s11c7, ROT0, "Williams", "Riverboat Gambler (L-3)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, rvrbt_p7, rvrbt_l3, s11c, s11c, s11c_state, init_s11c7, ROT0, "Williams", "Riverboat Gambler (PA-7)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, rollr_l2, 0, s11c, s11c, s11c_state, init_s11c, ROT0, "Williams", "Rollergames (L-2)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1991, rollr_ex, rollr_l2, s11c, s11c, s11c_state, init_s11c, ROT0, "Williams", "Rollergames (EXPERIMENTAL)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1991, rollr_e1, rollr_l2, s11c, s11c, s11c_state, init_s11c, ROT0, "Williams", "Rollergames (PU-1)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1991, rollr_p2, rollr_l2, s11c, s11c, s11c_state, init_s11c, ROT0, "Williams", "Rollergames (PA-2 / PA-1 Sound)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, rollr_l3, rollr_l2, s11c, s11c, s11c_state, init_s11c, ROT0, "Williams", "Rollergames (LU-3) Europe", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, rollr_g3, rollr_l2, s11c, s11c, s11c_state, init_s11c, ROT0, "Williams", "Rollergames (LG-3) Germany", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1991, rollr_f2, rollr_l2, s11c, s11c, s11c_state, init_s11c, ROT0, "Williams", "Rollergames (LF-2) French", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, rollr_f3, rollr_l2, s11c, s11c, s11c_state, init_s11c, ROT0, "Williams", "Rollergames (LF-3) French", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, rollr_d2, rollr_l2, s11c, s11c, s11c_state, init_s11c, ROT0, "Williams", "Rollergames (AD-2) Prototype", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, gs_lu4, 0, s11c, s11c, s11c_state, init_s11c, ROT0, "Bally", "The Bally Game Show (LU-4) Europe", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, gs_lu3, gs_lu4, s11c, s11c, s11c_state, init_s11c, ROT0, "Bally", "The Bally Game Show (LU-3) Europe", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, gs_la3, gs_lu4, s11c, s11c, s11c_state, init_s11c, ROT0, "Bally", "The Bally Game Show (LA-3)", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, gs_lg6, gs_lu4, s11c, s11c, s11c_state, init_s11c, ROT0, "Bally", "The Bally Game Show (LG-6) Germany", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, strax_p7, 0, s11c, s11c, s11c_state, init_s11c, ROT0, "Krell Development", "Star Trax (domestic prototype)", MACHINE_IS_SKELETON_MECHANICAL)

View File

@ -98,10 +98,10 @@ private:
void main_map(address_map &map);
u8 m_strobe = 0;
u8 m_row = 0;
u8 m_strobe = 0U;
u8 m_row = 0U;
bool m_data_ok = 0;
u8 m_lamp_data = 0;
u8 m_lamp_data = 0U;
emu_timer* m_irq_timer;
static const device_timer_id TIMER_IRQ = 0;
required_device<cpu_device> m_maincpu;

View File

@ -3,7 +3,7 @@
/*
* s11.h
*
* Created on: 1/01/2013
* Created on: 2013-01-01
*/
#ifndef MAME_INCLUDES_S11_H
@ -61,6 +61,7 @@ public:
, m_ps88(*this, "ps88")
, m_digits(*this, "digit%d", 0U)
, m_io_keyboard(*this, "X%d", 0U)
, m_io_outputs(*this, "out%d", 0U)
{ }
void s11(machine_config &config);
@ -79,9 +80,9 @@ protected:
void bank_w(u8 data);
void dig1_w(u8 data);
void lamp0_w(u8 data);
void lamp1_w(u8 data) { }
void sol2_w(u8 data) { } // solenoids 8-15
void sol3_w(u8 data); // solenoids 0-7
void lamp1_w(u8 data);
void sol2_w(u8 data) { for (u8 i = 0; i < 8; i++) m_io_outputs[8U+i] = BIT(data, i); }; // solenoids 8-15
void sol3_w(u8 data) { for (u8 i = 0; i < 8; i++) m_io_outputs[i] = BIT(data, i); }; // solenoids 0-7
void sound_w(u8 data);
void pia2c_pa_w(u8 data);
@ -108,9 +109,9 @@ protected:
void s11_main_map(address_map &map);
void s11_audio_map(address_map &map);
virtual void machine_start() override { m_digits.resolve(); }
virtual void device_timer(emu_timer &timer, device_timer_id id, int param) override;
virtual void machine_start() override;
virtual void machine_reset() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param) override;
// devices
required_device<cpu_device> m_maincpu;
@ -135,6 +136,7 @@ protected:
optional_device<pinsnd88_device> m_ps88;
output_finder<63> m_digits;
required_ioport_array<8> m_io_keyboard;
output_finder<80> m_io_outputs; // 16 solenoids + 64 lamps
// getters/setters
u8 get_strobe() { return m_strobe; }
@ -142,25 +144,27 @@ protected:
u8 get_diag() { return m_diag; }
void set_diag(u8 d) { m_diag = d; }
u32 get_segment1() { return m_segment1; }
void set_segment1(uint32_t s) { m_segment1 = s; }
void set_segment1(u32 s) { m_segment1 = s; }
u32 get_segment2() { return m_segment2; }
void set_segment2(uint32_t s) { m_segment2 = s; }
void set_segment2(u32 s) { m_segment2 = s; }
void set_timer(emu_timer* t) { m_irq_timer = t; }
static const device_timer_id TIMER_IRQ = 0;
private:
void dig0_w(u8 data);
u8 m_sound_data = 0U;
u8 m_strobe = 0U;
u8 m_row = 0U;
u8 m_diag = 0U;
u8 m_lamp_data = 0U;
u32 m_segment1 = 0U;
u32 m_segment2 = 0U;
u32 m_timer_count = 0U;
emu_timer* m_irq_timer;
bool m_timer_irq_active = false;
bool m_pia_irq_active = false;
private:
void dig0_w(u8 data);
};
@ -193,19 +197,22 @@ public:
void s11b(machine_config &config);
void s11b_jokerz(machine_config &config);
void init_s11b();
void init_s11b_invert();
void init_s11bnn(); // normal
void init_s11bin(); // invert
void init_s11bn7(); // 7seg34
void init_s11bi7(); // invert and 7seg34
protected:
virtual void machine_start() override;
virtual void machine_reset() override;
void set_invert(bool inv) { m_invert = inv; }
void set_invert(bool i) { m_invert = i; }
void set_7seg(bool i) { m_is7seg34 = i; }
void s11b_dig1_w(u8 data);
void s11b_pia2c_pa_w(u8 data);
void s11b_pia2c_pb_w(u8 data);
void s11b_pia34_pa_w(u8 data);
private:
bool m_is7seg34 = false; // some games use 7-segment displays for players 3 and 4
bool m_invert = false; // later System 11B games start expecting inverted data to the display LED segments.
};
@ -220,6 +227,7 @@ public:
void s11c(machine_config &config);
void init_s11c();
void init_s11c7();
protected:
virtual void machine_reset() override;