mirror of
https://github.com/holub/mame
synced 2025-04-19 15:11:37 +03:00
s11: Added outputs,save-state. Fixed some display issues.
This commit is contained in:
parent
357d6b8f59
commit
ad88106c81
@ -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)
|
||||
|
@ -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);
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user