Williams System 11a : WIP

This commit is contained in:
Robbbert 2012-11-06 00:33:10 +00:00
parent 7c476975bd
commit fa20d0f978
5 changed files with 777 additions and 118 deletions

1
.gitattributes vendored
View File

@ -4460,6 +4460,7 @@ src/mame/layout/roundup5.lay svneol=native#text/plain
src/mame/layout/rowamet.lay svneol=native#text/plain
src/mame/layout/royalcrd.lay svneol=native#text/plain
src/mame/layout/s11.lay svneol=native#text/plain
src/mame/layout/s11a.lay svneol=native#text/plain
src/mame/layout/s3.lay svneol=native#text/plain
src/mame/layout/s4.lay svneol=native#text/plain
src/mame/layout/s6.lay svneol=native#text/plain

View File

@ -633,18 +633,6 @@ ROM_END
/*-------------------------
/ Road Kings 07/86 (#542)
/--------------------------*/
ROM_START(rdkng_l5)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD("road_u26.l5", 0x4000, 0x4000, CRC(22bcc70e) SHA1(cf46e8c5e417999150403d6d40adf8c36b1c0347))
ROM_LOAD("road_u27.l1", 0x8000, 0x8000, CRC(3dcad794) SHA1(6438505bb335f670e0892126764819a48eec9b88))
ROM_REGION(0x20000, "audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("road_u21.l1", 0x18000, 0x8000, CRC(f34efbf4) SHA1(cb5ffe9818994f4681e3492a5cd46f410d2e5353))
ROM_LOAD("road_u22.l1", 0x10000, 0x8000, CRC(a9803804) SHA1(a400d4621c3f7a6e47546b2f33dc4920183a5a74))
ROM_REGION(0x10000, "bgcpu", ROMREGION_ERASEFF)
ROM_LOAD("road_u4.l1", 0x8000, 0x8000, CRC(4395b48f) SHA1(2325ce6ba7f6f92f884c302e6f053c31229dc774))
ROM_END
ROM_START(rdkng_l1)
ROM_REGION(0x10000, "maincpu", 0)
@ -775,7 +763,6 @@ ROM_END
GAME( 1986, grand_l4, 0, s11, s11, s11_state, s11, ROT0, "Williams", "Grand Lizard (L-4)", GAME_MECHANICAL | GAME_NOT_WORKING)
GAME( 1986, hs_l4, 0, s11, s11, s11_state, s11, ROT0, "Williams", "High Speed (L-4)", GAME_MECHANICAL | GAME_NOT_WORKING)
GAME( 1986, hs_l3, hs_l4, s11, s11, s11_state, s11, ROT0, "Williams", "High Speed (L-3)", GAME_MECHANICAL | GAME_NOT_WORKING)
GAME( 1986, rdkng_l5, rdkng_l4, s11, s11, s11_state, s11, ROT0, "Williams", "Road Kings (L-5)", GAME_MECHANICAL | GAME_NOT_WORKING)
GAME( 1986, rdkng_l4, 0, s11, s11, s11_state, s11, ROT0, "Williams", "Road Kings (L-4)", GAME_MECHANICAL | GAME_NOT_WORKING)
GAME( 1986, rdkng_l1, rdkng_l4, s11, s11, s11_state, s11, ROT0, "Williams", "Road Kings (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING)
GAME( 1986, rdkng_l2, rdkng_l4, s11, s11, s11_state, s11, ROT0, "Williams", "Road Kings (L-2)", GAME_MECHANICAL | GAME_NOT_WORKING)

View File

@ -1,200 +1,715 @@
/*
Williams System 11a
*/
/****************************************************************************************
Pinball
Williams System 11A
Status of games:
#include "emu.h"
ToDo:
- Determine what drives the background sound (atm it's a guess)
- Can coin up but not start
*****************************************************************************************/
#include "machine/genpin.h"
#include "cpu/m6800/m6800.h"
#include "cpu/m6809/m6809.h"
#include "machine/6821pia.h"
#include "sound/hc55516.h"
#include "sound/2151intf.h"
#include "sound/dac.h"
#include "s11a.lh"
class williams_s11a_state : public driver_device
class s11a_state : public genpin_class
{
public:
williams_s11a_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu")
s11a_state(const machine_config &mconfig, device_type type, const char *tag)
: genpin_class(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
m_bgcpu(*this, "bgcpu"),
m_dac(*this, "dac"),
m_dac1(*this, "dac1"),
m_hc55516(*this, "hc55516"),
m_pias(*this, "pias"),
m_pia21(*this, "pia21"),
m_pia24(*this, "pia24"),
m_pia28(*this, "pia28"),
m_pia2c(*this, "pia2c"),
m_pia30(*this, "pia30"),
m_pia34(*this, "pia34"),
m_pia40(*this, "pia40")
{ }
DECLARE_READ8_MEMBER(dac_r);
DECLARE_WRITE8_MEMBER(dac_w);
DECLARE_WRITE8_MEMBER(bank_w);
DECLARE_WRITE8_MEMBER(dig0_w);
DECLARE_WRITE8_MEMBER(dig1_w);
DECLARE_WRITE8_MEMBER(lamp0_w);
DECLARE_WRITE8_MEMBER(lamp1_w) { };
DECLARE_WRITE8_MEMBER(sol2_w) { }; // solenoids 8-15
DECLARE_WRITE8_MEMBER(sol3_w); // solenoids 0-7
DECLARE_WRITE8_MEMBER(sound_w);
DECLARE_WRITE8_MEMBER(pia2c_pa_w);
DECLARE_WRITE8_MEMBER(pia2c_pb_w);
DECLARE_WRITE8_MEMBER(pia34_pa_w);
DECLARE_WRITE8_MEMBER(pia34_pb_w);
DECLARE_WRITE8_MEMBER(pia40_pa_w);
DECLARE_READ8_MEMBER(dips_r);
DECLARE_READ8_MEMBER(switch_r);
DECLARE_WRITE8_MEMBER(switch_w);
DECLARE_READ_LINE_MEMBER(pias_ca1_r);
DECLARE_READ_LINE_MEMBER(pia21_ca1_r);
DECLARE_READ_LINE_MEMBER(pia28_ca1_r);
DECLARE_READ_LINE_MEMBER(pia28_cb1_r);
DECLARE_WRITE_LINE_MEMBER(pias_ca2_w);
DECLARE_WRITE_LINE_MEMBER(pias_cb2_w);
DECLARE_WRITE_LINE_MEMBER(pia21_ca2_w);
DECLARE_WRITE_LINE_MEMBER(pia21_cb2_w) { }; // enable solenoids
DECLARE_WRITE_LINE_MEMBER(pia24_cb2_w) { }; // dummy to stop error log filling up
DECLARE_WRITE_LINE_MEMBER(pia28_ca2_w) { }; // comma3&4
DECLARE_WRITE_LINE_MEMBER(pia28_cb2_w) { }; // comma1&2
DECLARE_WRITE_LINE_MEMBER(pia30_cb2_w) { }; // dummy to stop error log filling up
DECLARE_WRITE_LINE_MEMBER(ym2151_irq_w);
TIMER_DEVICE_CALLBACK_MEMBER(irq);
DECLARE_INPUT_CHANGED_MEMBER(main_nmi);
DECLARE_INPUT_CHANGED_MEMBER(audio_nmi);
DECLARE_MACHINE_RESET(s11a);
DECLARE_DRIVER_INIT(s11a);
protected:
// devices
required_device<cpu_device> m_maincpu;
// driver_device overrides
virtual void machine_reset();
public:
DECLARE_DRIVER_INIT(williams_s11a);
required_device<cpu_device> m_audiocpu;
required_device<cpu_device> m_bgcpu;
required_device<dac_device> m_dac;
required_device<dac_device> m_dac1;
required_device<hc55516_device> m_hc55516;
required_device<pia6821_device> m_pias;
required_device<pia6821_device> m_pia21;
required_device<pia6821_device> m_pia24;
required_device<pia6821_device> m_pia28;
required_device<pia6821_device> m_pia2c;
required_device<pia6821_device> m_pia30;
required_device<pia6821_device> m_pia34;
required_device<pia6821_device> m_pia40;
private:
UINT8 m_t_c;
UINT8 m_sound_data;
UINT8 m_strobe;
UINT8 m_kbdrow;
UINT32 m_segment1;
UINT32 m_segment2;
bool m_ca1;
};
static ADDRESS_MAP_START( williams_s11a_map, AS_PROGRAM, 8, williams_s11a_state )
AM_RANGE(0x0000, 0xffff) AM_NOP
static ADDRESS_MAP_START( s11a_main_map, AS_PROGRAM, 8, s11a_state )
AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x2100, 0x2103) AM_DEVREADWRITE("pia21", pia6821_device, read, write) // sound+solenoids
AM_RANGE(0x2200, 0x2200) AM_WRITE(sol3_w) // solenoids
AM_RANGE(0x2400, 0x2403) AM_DEVREADWRITE("pia24", pia6821_device, read, write) // lamps
AM_RANGE(0x2800, 0x2803) AM_DEVREADWRITE("pia28", pia6821_device, read, write) // display
AM_RANGE(0x2c00, 0x2c03) AM_DEVREADWRITE("pia2c", pia6821_device, read, write) // alphanumeric display
AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("pia30", pia6821_device, read, write) // inputs
AM_RANGE(0x3400, 0x3403) AM_DEVREADWRITE("pia34", pia6821_device, read, write) // widget
AM_RANGE(0x4000, 0xffff) AM_ROM
ADDRESS_MAP_END
static INPUT_PORTS_START( williams_s11a )
static ADDRESS_MAP_START( s11a_audio_map, AS_PROGRAM, 8, s11a_state )
AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x0800) AM_RAM
AM_RANGE(0x1000, 0x1fff) AM_WRITE(bank_w)
AM_RANGE(0x2000, 0x2003) AM_MIRROR(0x0ffc) AM_DEVREADWRITE("pias", pia6821_device, read, write)
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank0")
AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bank1")
ADDRESS_MAP_END
static ADDRESS_MAP_START( s11a_bg_map, AS_PROGRAM, 8, s11a_state )
AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x1800) AM_RAM
AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x1ffe) AM_DEVREADWRITE("ym2151", ym2151_device, read, write)
AM_RANGE(0x4000, 0x4003) AM_MIRROR(0x1ffc) AM_DEVREADWRITE("pia40", pia6821_device, read, write)
AM_RANGE(0x8000, 0xffff) AM_ROM
ADDRESS_MAP_END
static INPUT_PORTS_START( s11a )
PORT_START("X0")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("X1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_TILT )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN3 )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER )
PORT_START("X2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_A)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_S)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_D)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_F)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_G)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_H)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_J)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_K)
PORT_START("X4")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_L)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Z)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_C)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_V)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_B)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_N)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_M)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_COMMA)
PORT_START("X8")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_STOP)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_SLASH)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_COLON)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_QUOTE)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_X)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_MINUS)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_EQUALS)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSPACE)
PORT_START("X10")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_OPENBRACE)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_CLOSEBRACE)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSLASH)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_ENTER)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_LEFT)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_RIGHT)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_UP)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_DOWN)
PORT_START("X20")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Q)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_W)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_E)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_R)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Y)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_U)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_I)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_O)
PORT_START("X40")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("X80")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("DIAGS")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Audio Diag") PORT_CODE(KEYCODE_F1) PORT_CHANGED_MEMBER(DEVICE_SELF, s11a_state, audio_nmi, 1)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Main Diag") PORT_CODE(KEYCODE_F2) PORT_CHANGED_MEMBER(DEVICE_SELF, s11a_state, main_nmi, 1)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Advance") PORT_CODE(KEYCODE_0)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Up/Down") PORT_CODE(KEYCODE_9)
INPUT_PORTS_END
void williams_s11a_state::machine_reset()
MACHINE_RESET_MEMBER( s11a_state, s11a )
{
m_t_c = 0;
membank("bank0")->set_entry(0);
membank("bank1")->set_entry(0);
}
INPUT_CHANGED_MEMBER( s11a_state::main_nmi )
{
// Diagnostic button sends a pulse to NMI pin
if (newval==CLEAR_LINE)
m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
}
INPUT_CHANGED_MEMBER( s11a_state::audio_nmi )
{
// Diagnostic button sends a pulse to NMI pin
if (newval==CLEAR_LINE)
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
}
WRITE8_MEMBER( s11a_state::sol3_w )
{
}
WRITE8_MEMBER( s11a_state::sound_w )
{
m_sound_data = data;
}
WRITE_LINE_MEMBER( s11a_state::pia21_ca2_w )
{
// sound ns
m_ca1 = state;
m_pias->ca1_w(m_ca1);
m_pia40->cb2_w(m_ca1);
}
static const pia6821_interface pia21_intf =
{
DEVCB_DRIVER_MEMBER(s11a_state, dac_r), /* port A in */
DEVCB_NULL, /* port B in */
DEVCB_NULL, /* line CA1 in */
DEVCB_LINE_GND, /* line CB1 in */
DEVCB_NULL, /* line CA2 in */
DEVCB_NULL, /* line CB2 in */
DEVCB_DRIVER_MEMBER(s11a_state, sound_w), /* port A out */
DEVCB_DRIVER_MEMBER(s11a_state, sol2_w), /* port B out */
DEVCB_DRIVER_LINE_MEMBER(s11a_state, pia21_ca2_w), /* line CA2 out */
DEVCB_DRIVER_LINE_MEMBER(s11a_state, pia21_cb2_w), /* line CB2 out */
DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE), /* IRQA */
DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE) /* IRQB */
};
WRITE8_MEMBER( s11a_state::lamp0_w )
{
m_maincpu->set_input_line(M6800_IRQ_LINE, CLEAR_LINE);
}
static const pia6821_interface pia24_intf =
{
DEVCB_NULL, /* port A in */
DEVCB_NULL, /* port B in */
DEVCB_LINE_GND, /* line CA1 in */
DEVCB_LINE_GND, /* line CB1 in */
DEVCB_LINE_VCC, /* line CA2 in */
DEVCB_LINE_VCC, /* line CB2 in */
DEVCB_DRIVER_MEMBER(s11a_state, lamp0_w), /* port A out */
DEVCB_DRIVER_MEMBER(s11a_state, lamp1_w), /* port B out */
DEVCB_NULL, /* line CA2 out */
DEVCB_DRIVER_LINE_MEMBER(s11a_state, pia24_cb2_w), /* line CB2 out */
DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE), /* IRQA */
DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE) /* IRQB */
};
READ_LINE_MEMBER( s11a_state::pia28_ca1_r )
{
return BIT(ioport("DIAGS")->read(), 2); // advance button
}
READ_LINE_MEMBER( s11a_state::pia28_cb1_r )
{
return BIT(ioport("DIAGS")->read(), 3); // up/down switch
}
WRITE8_MEMBER( s11a_state::dig0_w )
{
static const UINT8 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;
output_set_digit_value(60, patterns[data>>4]); // diag digit
m_segment1 = 0;
m_segment2 = 0;
}
WRITE8_MEMBER( s11a_state::dig1_w )
{
m_segment2 |= data;
m_segment2 |= 0x20000;
if ((m_segment2 & 0x70000) == 0x30000)
{
output_set_digit_value(m_strobe+16, BITSWAP16(m_segment2, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
m_segment2 |= 0x40000;
}
}
static const pia6821_interface pia28_intf =
{
DEVCB_NULL, /* port A in */
DEVCB_NULL, /* port B in */
DEVCB_DRIVER_LINE_MEMBER(s11a_state, pia28_ca1_r), /* line CA1 in */
DEVCB_DRIVER_LINE_MEMBER(s11a_state, pia28_cb1_r), /* line CB1 in */
DEVCB_NULL, /* line CA2 in */
DEVCB_NULL, /* line CB2 in */
DEVCB_DRIVER_MEMBER(s11a_state, dig0_w), /* port A out */
DEVCB_DRIVER_MEMBER(s11a_state, dig1_w), /* port B out */
DEVCB_DRIVER_LINE_MEMBER(s11a_state, pia28_ca2_w), /* line CA2 out */
DEVCB_DRIVER_LINE_MEMBER(s11a_state, pia28_cb2_w), /* line CB2 out */
DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE), /* IRQA */
DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE) /* IRQB */
};
WRITE8_MEMBER( s11a_state::pia2c_pa_w )
{
m_segment1 |= (data<<8);
m_segment1 |= 0x10000;
if ((m_segment1 & 0x70000) == 0x30000)
{
output_set_digit_value(m_strobe, BITSWAP16(m_segment1, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
m_segment1 |= 0x40000;
}
}
WRITE8_MEMBER( s11a_state::pia2c_pb_w )
{
m_segment1 |= data;
m_segment1 |= 0x20000;
if ((m_segment1 & 0x70000) == 0x30000)
{
output_set_digit_value(m_strobe, BITSWAP16(m_segment1, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
m_segment1 |= 0x40000;
}
}
static const pia6821_interface pia2c_intf =
{
DEVCB_NULL, /* port A in */
DEVCB_NULL, /* port B in */
DEVCB_NULL, /* line CA1 in */
DEVCB_NULL, /* line CB1 in */
DEVCB_NULL, /* line CA2 in */
DEVCB_NULL, /* line CB2 in */
DEVCB_DRIVER_MEMBER(s11a_state, pia2c_pa_w), /* port A out */
DEVCB_DRIVER_MEMBER(s11a_state, pia2c_pb_w), /* port B out */
DEVCB_NULL, /* line CA2 out */
DEVCB_NULL, /* line CB2 out */
DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE), /* IRQA */
DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE) /* IRQB */
};
READ8_MEMBER( s11a_state::switch_r )
{
char kbdrow[8];
sprintf(kbdrow,"X%X",m_kbdrow);
return ~ioport(kbdrow)->read();
}
WRITE8_MEMBER( s11a_state::switch_w )
{
m_kbdrow = data;
}
static const pia6821_interface pia30_intf =
{
DEVCB_DRIVER_MEMBER(s11a_state, switch_r), /* port A in */
DEVCB_NULL, /* port B in */
DEVCB_LINE_GND, /* line CA1 in */
DEVCB_LINE_GND, /* line CB1 in */
DEVCB_LINE_VCC, /* line CA2 in */
DEVCB_LINE_VCC, /* line CB2 in */
DEVCB_NULL, /* port A out */
DEVCB_DRIVER_MEMBER(s11a_state, switch_w), /* port B out */
DEVCB_NULL, /* line CA2 out */
DEVCB_DRIVER_LINE_MEMBER(s11a_state, pia30_cb2_w), /* line CB2 out */
DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE), /* IRQA */
DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE) /* IRQB */
};
WRITE8_MEMBER( s11a_state::pia34_pa_w )
{
m_segment2 |= (data<<8);
m_segment2 |= 0x10000;
if ((m_segment2 & 0x70000) == 0x30000)
{
output_set_digit_value(m_strobe+16, BITSWAP16(m_segment2, 7, 15, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
m_segment2 |= 0x40000;
}
}
WRITE8_MEMBER( s11a_state::pia34_pb_w )
{
}
DRIVER_INIT_MEMBER(williams_s11a_state,williams_s11a)
static const pia6821_interface pia34_intf =
{
DEVCB_NULL, /* port A in */
DEVCB_NULL, /* port B in */
DEVCB_NULL, /* line CA1 in */
DEVCB_NULL, /* line CB1 in */
DEVCB_NULL, /* line CA2 in */
DEVCB_NULL, /* line CB2 in */
DEVCB_DRIVER_MEMBER(s11a_state, pia34_pa_w), /* port A out */
DEVCB_DRIVER_MEMBER(s11a_state, pia34_pb_w), /* port B out */
DEVCB_NULL, /* line CA2 out */
DEVCB_NULL, /* line CB2 out */
DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE), /* IRQA */
DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE) /* IRQB */
};
WRITE8_MEMBER( s11a_state::bank_w )
{
membank("bank0")->set_entry(BIT(data, 1));
membank("bank1")->set_entry(BIT(data, 0));
}
static MACHINE_CONFIG_START( williams_s11a, williams_s11a_state )
READ_LINE_MEMBER( s11a_state::pias_ca1_r )
{
return m_ca1;
}
WRITE_LINE_MEMBER( s11a_state::pias_ca2_w )
{
// speech clock
hc55516_clock_w(m_hc55516, state);
}
WRITE_LINE_MEMBER( s11a_state::pias_cb2_w )
{
// speech data
hc55516_digit_w(m_hc55516, state);
}
READ8_MEMBER( s11a_state::dac_r )
{
return m_sound_data;
}
WRITE8_MEMBER( s11a_state::dac_w )
{
m_dac->write_unsigned8(data);
}
static const pia6821_interface pias_intf =
{
DEVCB_DRIVER_MEMBER(s11a_state, dac_r), /* port A in */
DEVCB_NULL, /* port B in */
DEVCB_DRIVER_LINE_MEMBER(s11a_state, pias_ca1_r), /* line CA1 in */
DEVCB_NULL, /* line CB1 in */
DEVCB_NULL, /* line CA2 in */
DEVCB_NULL, /* line CB2 in */
DEVCB_DRIVER_MEMBER(s11a_state, sound_w), /* port A out */
DEVCB_DRIVER_MEMBER(s11a_state, dac_w), /* port B out */
DEVCB_DRIVER_LINE_MEMBER(s11a_state, pias_ca2_w), /* line CA2 out */
DEVCB_DRIVER_LINE_MEMBER(s11a_state, pias_cb2_w), /* line CB2 out */
DEVCB_CPU_INPUT_LINE("audiocpu", M6800_IRQ_LINE), /* IRQA */
DEVCB_CPU_INPUT_LINE("audiocpu", M6800_IRQ_LINE) /* IRQB */
};
WRITE8_MEMBER( s11a_state::pia40_pa_w )
{
m_dac1->write_unsigned8(data);
}
WRITE_LINE_MEMBER( s11a_state::ym2151_irq_w)
{
m_pia40->ca1_w(!state);
}
static const pia6821_interface pia40_intf =
{
DEVCB_NULL, /* port A in */
DEVCB_DRIVER_MEMBER(s11a_state, dac_r), /* port B in */
DEVCB_DRIVER_LINE_MEMBER(s11a_state, pias_ca1_r), /* line CA1 in */
DEVCB_NULL, /* line CB1 in */
DEVCB_LINE_VCC, /* line CA2 in */
DEVCB_NULL, /* line CB2 in */
DEVCB_DRIVER_MEMBER(s11a_state, pia40_pa_w), /* port A out */
DEVCB_DRIVER_MEMBER(s11a_state, dac_w), /* port B out */
DEVCB_DRIVER_LINE_MEMBER(s11a_state, pias_ca2_w), /* line CA2 out */
DEVCB_DRIVER_LINE_MEMBER(s11a_state, pias_cb2_w), /* line CB2 out */
DEVCB_CPU_INPUT_LINE("bgcpu", M6809_FIRQ_LINE), /* IRQA */
DEVCB_CPU_INPUT_LINE("bgcpu", INPUT_LINE_NMI) /* IRQB */
};
DRIVER_INIT_MEMBER( s11a_state, s11a )
{
UINT8 *ROM = memregion("audiocpu")->base();
membank("bank0")->configure_entries(0, 2, &ROM[0x10000], 0x4000);
membank("bank1")->configure_entries(0, 2, &ROM[0x18000], 0x4000);
membank("bank0")->set_entry(0);
membank("bank1")->set_entry(0);
}
TIMER_DEVICE_CALLBACK_MEMBER( s11a_state::irq)
{
if (m_t_c > 0x70)
{
m_maincpu->set_input_line(M6800_IRQ_LINE, ASSERT_LINE);
m_pias->cb1_w(0);
}
else
m_t_c++;
}
static MACHINE_CONFIG_START( s11a, s11a_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M6800, 1000000)
MCFG_CPU_PROGRAM_MAP(williams_s11a_map)
MCFG_CPU_ADD("maincpu", M6800, 4000000)
MCFG_CPU_PROGRAM_MAP(s11a_main_map)
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq", s11a_state, irq, attotime::from_hz(250))
MCFG_MACHINE_RESET_OVERRIDE(s11a_state, s11a)
/* Video */
MCFG_DEFAULT_LAYOUT(layout_s11a)
/* Sound */
MCFG_FRAGMENT_ADD( genpin_audio )
/* Devices */
MCFG_PIA6821_ADD("pia21", pia21_intf)
MCFG_PIA6821_ADD("pia24", pia24_intf)
MCFG_PIA6821_ADD("pia28", pia28_intf)
MCFG_PIA6821_ADD("pia2c", pia2c_intf)
MCFG_PIA6821_ADD("pia30", pia30_intf)
MCFG_PIA6821_ADD("pia34", pia34_intf)
MCFG_NVRAM_ADD_1FILL("nvram")
/* Add the soundcard */
MCFG_CPU_ADD("audiocpu", M6808, 3580000)
MCFG_CPU_PROGRAM_MAP(s11a_audio_map)
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_DAC_ADD("dac")
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MCFG_SPEAKER_STANDARD_MONO("speech")
MCFG_SOUND_ADD("hc55516", HC55516, 0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speech", 0.50)
MCFG_PIA6821_ADD("pias", pias_intf)
/* Add the background music card */
MCFG_CPU_ADD("bgcpu", M6809E, 4000000) // MC68B09E
MCFG_CPU_PROGRAM_MAP(s11a_bg_map)
MCFG_SPEAKER_STANDARD_MONO("bg")
MCFG_YM2151_ADD("ym2151", 3580000)
MCFG_YM2151_IRQ_HANDLER(WRITELINE(s11a_state, ym2151_irq_w))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.50)
MCFG_DAC_ADD("dac1")
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.50)
MCFG_PIA6821_ADD("pia40", pia40_intf)
MACHINE_CONFIG_END
/*--------------------
/ F14 Tomcat 5/87
/--------------------*/
/*------------------------
/ F14 Tomcat 5/87 (#554)
/-------------------------*/
ROM_START(f14_p3)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD("f14_l3.u26", 0x4000, 0x4000, CRC(cd607556) SHA1(2ec95085784370a071cbf5df7ae5c6b4749605e2))
ROM_LOAD("f14_l3.u27", 0x8000, 0x8000, CRC(72951fd1) SHA1(b5f3fe1859e0abf9ab558b4b4f6754134d528c23))
ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "sound2", 0)
ROM_LOAD("f14_u21.l1", 0x0000, 0x8000, CRC(e412300c) SHA1(382d0cfa47abea295f0c7501bc0a010473e9d73b))
ROM_LOAD("f14_u22.l1", 0x8000, 0x8000, CRC(c9dd7496) SHA1(de3cb855d87033274cc912578b02d1593d2d69f9))
ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF)
ROM_REGION(0x30000, "sound1", 0)
ROM_REGION(0x20000, "audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("f14_u21.l1", 0x18000, 0x8000, CRC(e412300c) SHA1(382d0cfa47abea295f0c7501bc0a010473e9d73b))
ROM_LOAD("f14_u22.l1", 0x10000, 0x8000, CRC(c9dd7496) SHA1(de3cb855d87033274cc912578b02d1593d2d69f9))
ROM_REGION(0x20000, "bgcpu", ROMREGION_ERASEFF)
ROM_LOAD("f14_u4.l1", 0x00000, 0x8000, CRC(43ecaabf) SHA1(64b50dbff03cd556130d0cff47b951fdf37d397d))
ROM_RELOAD(0x00000+0x8000, 0x8000)
ROM_LOAD("f14_u19.l1", 0x10000, 0x8000, CRC(d0de4a7c) SHA1(46ecd5786653add47751cc56b38d9db7c4622377))
ROM_RELOAD(0x10000+0x8000, 0x8000)
ROM_END
ROM_START(f14_p4)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD("u26_l4.128", 0x4000, 0x4000, CRC(7b39706a) SHA1(0dc0b1a1dfd12bc73e6fd8b825fe72ddc8fc1497))
ROM_LOAD("u27_l4.256", 0x8000, 0x8000, CRC(189f9488) SHA1(7536d56cb83bf29f8d8b03b226a5f60200776095))
ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "sound2", 0)
ROM_LOAD("f14_u21.l1", 0x0000, 0x8000, CRC(e412300c) SHA1(382d0cfa47abea295f0c7501bc0a010473e9d73b))
ROM_LOAD("f14_u22.l1", 0x8000, 0x8000, CRC(c9dd7496) SHA1(de3cb855d87033274cc912578b02d1593d2d69f9))
ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF)
ROM_REGION(0x30000, "sound1", 0)
ROM_REGION(0x20000, "audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("f14_u21.l1", 0x18000, 0x8000, CRC(e412300c) SHA1(382d0cfa47abea295f0c7501bc0a010473e9d73b))
ROM_LOAD("f14_u22.l1", 0x10000, 0x8000, CRC(c9dd7496) SHA1(de3cb855d87033274cc912578b02d1593d2d69f9))
ROM_REGION(0x20000, "bgcpu", ROMREGION_ERASEFF)
ROM_LOAD("f14_u4.l1", 0x00000, 0x8000, CRC(43ecaabf) SHA1(64b50dbff03cd556130d0cff47b951fdf37d397d))
ROM_RELOAD(0x00000+0x8000, 0x8000)
ROM_LOAD("f14_u19.l1", 0x10000, 0x8000, CRC(d0de4a7c) SHA1(46ecd5786653add47751cc56b38d9db7c4622377))
ROM_RELOAD(0x10000+0x8000, 0x8000)
ROM_END
ROM_START(f14_l1)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD("f14_u26.l1", 0x4000, 0x4000, CRC(62c2e615) SHA1(456ce0d1f74fa5e619c272880ba8ac6819848ddc))
ROM_LOAD("f14_u27.l1", 0x8000, 0x8000, CRC(da1740f7) SHA1(1395a4f3891a043cfedc5426ec88af35eab8d4ea))
ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "sound2", 0)
ROM_LOAD("f14_u21.l1", 0x0000, 0x8000, CRC(e412300c) SHA1(382d0cfa47abea295f0c7501bc0a010473e9d73b))
ROM_LOAD("f14_u22.l1", 0x8000, 0x8000, CRC(c9dd7496) SHA1(de3cb855d87033274cc912578b02d1593d2d69f9))
ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF)
ROM_REGION(0x30000, "sound1", 0)
ROM_REGION(0x20000, "audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("f14_u21.l1", 0x18000, 0x8000, CRC(e412300c) SHA1(382d0cfa47abea295f0c7501bc0a010473e9d73b))
ROM_LOAD("f14_u22.l1", 0x10000, 0x8000, CRC(c9dd7496) SHA1(de3cb855d87033274cc912578b02d1593d2d69f9))
ROM_REGION(0x20000, "bgcpu", ROMREGION_ERASEFF)
ROM_LOAD("f14_u4.l1", 0x00000, 0x8000, CRC(43ecaabf) SHA1(64b50dbff03cd556130d0cff47b951fdf37d397d))
ROM_RELOAD(0x00000+0x8000, 0x8000)
ROM_LOAD("f14_u19.l1", 0x10000, 0x8000, CRC(d0de4a7c) SHA1(46ecd5786653add47751cc56b38d9db7c4622377))
ROM_RELOAD(0x10000+0x8000, 0x8000)
ROM_END
/*--------------------
/ Fire! 8/87
/ Fire! 8/87 (#556)
/--------------------*/
ROM_START(fire_l3)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD("fire_u26.l3", 0x4000, 0x4000, CRC(48abae33) SHA1(00ce24316aa007eec090ae74818003e11a141214))
ROM_LOAD("fire_u27.l3", 0x8000, 0x8000, CRC(4ebf4888) SHA1(45dc0231404ed70be2ab5d599a673aac6271550e))
ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "sound2", 0)
ROM_LOAD("fire_u21.l2", 0x0000, 0x8000, CRC(2edde0a4) SHA1(de292a340a3a06b0b996fc69fee73eb7bbfbbe64))
ROM_LOAD("fire_u22.l2", 0x8000, 0x8000, CRC(16145c97) SHA1(523e99df3907a2c843c6e27df4d16799c4136a46))
ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF)
ROM_REGION(0x30000, "sound1", 0)
ROM_LOAD("fire_u4.l1", 0x00000, 0x8000, CRC(0e058918) SHA1(4d6bf2290141119174787f8dd653c47ea4c73693))
ROM_RELOAD(0x00000+0x8000, 0x8000)
ROM_REGION(0x20000, "audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("fire_u21.l2", 0x18000, 0x8000, CRC(2edde0a4) SHA1(de292a340a3a06b0b996fc69fee73eb7bbfbbe64))
ROM_LOAD("fire_u22.l2", 0x10000, 0x8000, CRC(16145c97) SHA1(523e99df3907a2c843c6e27df4d16799c4136a46))
ROM_REGION(0x20000, "bgcpu", ROMREGION_ERASEFF)
ROM_LOAD("fire_u4.l1", 0x8000, 0x8000, CRC(0e058918) SHA1(4d6bf2290141119174787f8dd653c47ea4c73693))
ROM_END
/*--------------------
/ Fire! Champagne Edition 9/87
/--------------------*/
/*--------------------------------------
/ Fire! Champagne Edition 9/87 (#556SE)
/---------------------------------------*/
/*--------------------
/ Millionaire 1/87
/--------------------*/
/*-------------------------
/ Millionaire 1/87 (#555)
/--------------------------*/
ROM_START(milln_l3)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD("mill_u26.l3", 0x4000, 0x4000, CRC(07bc9fff) SHA1(b16082fb51df3e4d2fb786cb8894b1c232521ef3))
ROM_LOAD("mill_u27.l3", 0x8000, 0x8000, CRC(ba789c43) SHA1(c066a304882bea4cba1e215642416fcb22585aa4))
ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "sound2", 0)
ROM_LOAD("mill_u21.l1", 0x0000, 0x8000, CRC(4cd1ee90) SHA1(4e24b96138ced16eff9036303ca6347e3423dbfc))
ROM_LOAD("mill_u22.l1", 0x8000, 0x8000, CRC(73735cfc) SHA1(f74c873a20990263e0d6b35609fc51c08c9f8e31))
ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF)
ROM_REGION(0x30000, "sound1", 0)
ROM_REGION(0x20000, "audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("mill_u21.l1", 0x18000, 0x8000, CRC(4cd1ee90) SHA1(4e24b96138ced16eff9036303ca6347e3423dbfc))
ROM_LOAD("mill_u22.l1", 0x10000, 0x8000, CRC(73735cfc) SHA1(f74c873a20990263e0d6b35609fc51c08c9f8e31))
ROM_REGION(0x20000, "bgcpu", ROMREGION_ERASEFF)
ROM_LOAD("mill_u4.l1", 0x00000, 0x8000, CRC(cf766506) SHA1(a6e4df19a513102abbce2653d4f72245f54407b1))
ROM_RELOAD(0x00000+0x8000, 0x8000)
ROM_LOAD("mill_u19.l1", 0x10000, 0x8000, CRC(e073245a) SHA1(cbaddde6bb19292ace574a8329e18c97c2ee9763))
ROM_RELOAD(0x10000+0x8000, 0x8000)
ROM_END
/*--------------------
/ Pinbot 10/86
/ Pinbot 10/86 (#549)
/--------------------*/
ROM_START(pb_l5)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD("pbot_u26.l5", 0x4000, 0x4000, CRC(daa0c8e4) SHA1(47289b350eb0d84aa0d37e53383e18625451bbe8))
ROM_LOAD("pbot_u27.l5", 0x8000, 0x8000, CRC(e625d6ce) SHA1(1858dc2183954342b8e2e5eb9a14edcaa8dad5ae))
ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "sound2", 0)
ROM_LOAD("pbot_u21.l1", 0x0000, 0x8000, CRC(3eab88d9) SHA1(667e3b675e2ae8fec6a6faddb9b0dd5531d64f8f))
ROM_LOAD("pbot_u22.l1", 0x8000, 0x8000, CRC(a2d2c9cb) SHA1(46437dc54538f1626caf41a2818ddcf8000c44e4))
ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF)
ROM_REGION(0x30000, "sound1", 0)
ROM_REGION(0x20000, "audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("pbot_u21.l1", 0x18000, 0x8000, CRC(3eab88d9) SHA1(667e3b675e2ae8fec6a6faddb9b0dd5531d64f8f))
ROM_LOAD("pbot_u22.l1", 0x10000, 0x8000, CRC(a2d2c9cb) SHA1(46437dc54538f1626caf41a2818ddcf8000c44e4))
ROM_REGION(0x20000, "bgcpu", ROMREGION_ERASEFF)
ROM_LOAD("pbot_u4.l1", 0x00000, 0x8000, CRC(de5926bd) SHA1(3d111e27c5f0c8c0afc5fe5cc45bf77c12b69228))
ROM_RELOAD(0x00000+0x8000, 0x8000)
ROM_LOAD("pbot_u19.l1", 0x10000, 0x8000, CRC(40eb4e9f) SHA1(07b0557b35599a2dd5aa66a306fbbe8f50eed998))
ROM_RELOAD(0x10000+0x8000, 0x8000)
ROM_END
ROM_START(pb_l2)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD("u26-l2.rom", 0x4000, 0x4000, CRC(e3b94ca4) SHA1(1db2acb025941cc165cc7ec70a160e07ab1eeb2e))
ROM_LOAD("u27-l2.rom", 0x8000, 0x8000, CRC(0a334fc5) SHA1(d08afe6ddc141e37f97ea588d184a316ff7f6db7))
ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "sound2", 0)
ROM_LOAD("pbot_u21.l1", 0x0000, 0x8000, CRC(3eab88d9) SHA1(667e3b675e2ae8fec6a6faddb9b0dd5531d64f8f))
ROM_LOAD("pbot_u22.l1", 0x8000, 0x8000, CRC(a2d2c9cb) SHA1(46437dc54538f1626caf41a2818ddcf8000c44e4))
ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF)
ROM_REGION(0x30000, "sound1", 0)
ROM_REGION(0x20000, "audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("pbot_u21.l1", 0x18000, 0x8000, CRC(3eab88d9) SHA1(667e3b675e2ae8fec6a6faddb9b0dd5531d64f8f))
ROM_LOAD("pbot_u22.l1", 0x10000, 0x8000, CRC(a2d2c9cb) SHA1(46437dc54538f1626caf41a2818ddcf8000c44e4))
ROM_REGION(0x20000, "bgcpu", ROMREGION_ERASEFF)
ROM_LOAD("pbot_u4.l1", 0x00000, 0x8000, CRC(de5926bd) SHA1(3d111e27c5f0c8c0afc5fe5cc45bf77c12b69228))
ROM_RELOAD(0x00000+0x8000, 0x8000)
ROM_LOAD("pbot_u19.l1", 0x10000, 0x8000, CRC(40eb4e9f) SHA1(07b0557b35599a2dd5aa66a306fbbe8f50eed998))
ROM_RELOAD(0x10000+0x8000, 0x8000)
ROM_END
ROM_START(pb_l3)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD("u26-l2.rom", 0x4000, 0x4000, CRC(e3b94ca4) SHA1(1db2acb025941cc165cc7ec70a160e07ab1eeb2e))
ROM_LOAD("u27-l3.rom", 0x8000, 0x8000, CRC(6f40ee84) SHA1(85453137e3fdb1e422e3903dd053e04c9f2b9607))
ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
ROM_REGION(0x10000, "sound2", 0)
ROM_LOAD("pbot_u21.l1", 0x0000, 0x8000, CRC(3eab88d9) SHA1(667e3b675e2ae8fec6a6faddb9b0dd5531d64f8f))
ROM_LOAD("pbot_u22.l1", 0x8000, 0x8000, CRC(a2d2c9cb) SHA1(46437dc54538f1626caf41a2818ddcf8000c44e4))
ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF)
ROM_REGION(0x30000, "sound1", 0)
ROM_REGION(0x20000, "audiocpu", ROMREGION_ERASEFF)
ROM_LOAD("pbot_u21.l1", 0x18000, 0x8000, CRC(3eab88d9) SHA1(667e3b675e2ae8fec6a6faddb9b0dd5531d64f8f))
ROM_LOAD("pbot_u22.l1", 0x10000, 0x8000, CRC(a2d2c9cb) SHA1(46437dc54538f1626caf41a2818ddcf8000c44e4))
ROM_REGION(0x20000, "bgcpu", ROMREGION_ERASEFF)
ROM_LOAD("pbot_u4.l1", 0x00000, 0x8000, CRC(de5926bd) SHA1(3d111e27c5f0c8c0afc5fe5cc45bf77c12b69228))
ROM_RELOAD(0x00000+0x8000, 0x8000)
ROM_LOAD("pbot_u19.l1", 0x10000, 0x8000, CRC(40eb4e9f) SHA1(07b0557b35599a2dd5aa66a306fbbe8f50eed998))
ROM_RELOAD(0x10000+0x8000, 0x8000)
ROM_END
GAME(1987, f14_l1, 0, williams_s11a, williams_s11a, williams_s11a_state, williams_s11a, ROT0, "Williams", "F14 Tomcat (L-1)", GAME_IS_SKELETON_MECHANICAL)
GAME(1987, f14_p3, f14_l1, williams_s11a, williams_s11a, williams_s11a_state, williams_s11a, ROT0, "Williams", "F14 Tomcat (P-3)", GAME_IS_SKELETON_MECHANICAL)
GAME(1987, f14_p4, f14_l1, williams_s11a, williams_s11a, williams_s11a_state, williams_s11a, ROT0, "Williams", "F14 Tomcat (P-4)", GAME_IS_SKELETON_MECHANICAL)
GAME(1987, fire_l3, 0, williams_s11a, williams_s11a, williams_s11a_state, williams_s11a, ROT0, "Williams", "Fire! (L-3)", GAME_IS_SKELETON_MECHANICAL)
GAME(1987, milln_l3, 0, williams_s11a, williams_s11a, williams_s11a_state, williams_s11a, ROT0, "Williams", "Millionaire (L-3)", GAME_IS_SKELETON_MECHANICAL)
GAME(1986, pb_l5, 0, williams_s11a, williams_s11a, williams_s11a_state, williams_s11a, ROT0, "Williams", "Pin-Bot (L-5)", GAME_IS_SKELETON_MECHANICAL)
GAME(1986, pb_l2, pb_l5, williams_s11a, williams_s11a, williams_s11a_state, williams_s11a, ROT0, "Williams", "Pin-Bot (L-2)", GAME_IS_SKELETON_MECHANICAL)
GAME(1986, pb_l3, pb_l5, williams_s11a, williams_s11a, williams_s11a_state, williams_s11a, ROT0, "Williams", "Pin-Bot (L-3)", GAME_IS_SKELETON_MECHANICAL)
GAME(1987, f14_l1, 0, s11a, s11a, s11a_state, s11a, ROT0, "Williams", "F14 Tomcat (L-1)", GAME_IS_SKELETON_MECHANICAL)
GAME(1987, f14_p3, f14_l1, s11a, s11a, s11a_state, s11a, ROT0, "Williams", "F14 Tomcat (P-3)", GAME_IS_SKELETON_MECHANICAL)
GAME(1987, f14_p4, f14_l1, s11a, s11a, s11a_state, s11a, ROT0, "Williams", "F14 Tomcat (P-4)", GAME_IS_SKELETON_MECHANICAL)
GAME(1987, fire_l3, 0, s11a, s11a, s11a_state, s11a, ROT0, "Williams", "Fire! (L-3)", GAME_IS_SKELETON_MECHANICAL)
GAME(1987, milln_l3, 0, s11a, s11a, s11a_state, s11a, ROT0, "Williams", "Millionaire (L-3)", GAME_IS_SKELETON_MECHANICAL)
GAME(1986, pb_l5, 0, s11a, s11a, s11a_state, s11a, ROT0, "Williams", "Pin-Bot (L-5)", GAME_IS_SKELETON_MECHANICAL)
GAME(1986, pb_l2, pb_l5, s11a, s11a, s11a_state, s11a, ROT0, "Williams", "Pin-Bot (L-2)", GAME_IS_SKELETON_MECHANICAL)
GAME(1986, pb_l3, pb_l5, s11a, s11a, s11a_state, s11a, ROT0, "Williams", "Pin-Bot (L-3)", GAME_IS_SKELETON_MECHANICAL)

155
src/mame/layout/s11a.lay Normal file
View File

@ -0,0 +1,155 @@
<!-- s11.lay -->
<!-- 2012-11-04: Initial version. [Robbbert] -->
<mamelayout version="2">
<element name="digit" defstate="0">
<led14segsc>
<color red="1.0" green="0.0" blue="0.0" />
</led14segsc>
</element>
<element name="diag" defstate="0">
<led7seg>
<color red="1.0" green="0.0" blue="1.0" />
</led7seg>
</element>
<element name="background">
<rect>
<bounds left="0" top="0" right="1" bottom="1" />
<color red="0.0" green="0.0" blue="0.0" />
</rect>
</element>
<element name="P0"><text string="Ball / Match"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<element name="P1"><text string="Credits"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<element name="P3"><text string="Player 1"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<element name="P4"><text string="Player 2"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<element name="P5"><text string="Player 3"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<element name="P6"><text string="Player 4"><color red="1.0" green="1.0" blue="1.0" /></text></element>
<view name="Default Layout">
<!-- Background -->
<backdrop element="background">
<bounds left="0" top="20" right="318" bottom="394" />
</backdrop>
<!-- LEDs -->
<!-- Player 1 Score -->
<bezel name="digit1" element="digit">
<bounds left="10" top="45" right="44" bottom="84" />
</bezel>
<bezel name="digit2" element="digit">
<bounds left="54" top="45" right="88" bottom="84" />
</bezel>
<bezel name="digit3" element="digit">
<bounds left="98" top="45" right="132" bottom="84" />
</bezel>
<bezel name="digit4" element="digit">
<bounds left="142" top="45" right="176" bottom="84" />
</bezel>
<bezel name="digit5" element="digit">
<bounds left="186" top="45" right="220" bottom="84" />
</bezel>
<bezel name="digit6" element="digit">
<bounds left="230" top="45" right="264" bottom="84" />
</bezel>
<bezel name="digit7" element="digit">
<bounds left="274" top="45" right="308" bottom="84" />
</bezel>
<!-- Player 2 Score -->
<bezel name="digit9" element="digit">
<bounds left="10" top="105" right="44" bottom="144" />
</bezel>
<bezel name="digit10" element="digit">
<bounds left="54" top="105" right="88" bottom="144" />
</bezel>
<bezel name="digit11" element="digit">
<bounds left="98" top="105" right="132" bottom="144" />
</bezel>
<bezel name="digit12" element="digit">
<bounds left="142" top="105" right="176" bottom="144" />
</bezel>
<bezel name="digit13" element="digit">
<bounds left="186" top="105" right="220" bottom="144" />
</bezel>
<bezel name="digit14" element="digit">
<bounds left="230" top="105" right="264" bottom="144" />
</bezel>
<bezel name="digit15" element="digit">
<bounds left="274" top="105" right="308" bottom="144" />
</bezel>
<!-- Player 3 Score -->
<bezel name="digit17" element="digit">
<bounds left="10" top="165" right="44" bottom="204" />
</bezel>
<bezel name="digit18" element="digit">
<bounds left="54" top="165" right="88" bottom="204" />
</bezel>
<bezel name="digit19" element="digit">
<bounds left="98" top="165" right="132" bottom="204" />
</bezel>
<bezel name="digit20" element="digit">
<bounds left="142" top="165" right="176" bottom="204" />
</bezel>
<bezel name="digit21" element="digit">
<bounds left="186" top="165" right="220" bottom="204" />
</bezel>
<bezel name="digit22" element="digit">
<bounds left="230" top="165" right="264" bottom="204" />
</bezel>
<bezel name="digit23" element="digit">
<bounds left="274" top="165" right="308" bottom="204" />
</bezel>
<!-- Player 4 Score -->
<bezel name="digit25" element="digit">
<bounds left="10" top="225" right="44" bottom="264" />
</bezel>
<bezel name="digit26" element="digit">
<bounds left="54" top="225" right="88" bottom="264" />
</bezel>
<bezel name="digit27" element="digit">
<bounds left="98" top="225" right="132" bottom="264" />
</bezel>
<bezel name="digit28" element="digit">
<bounds left="142" top="225" right="176" bottom="264" />
</bezel>
<bezel name="digit29" element="digit">
<bounds left="186" top="225" right="220" bottom="264" />
</bezel>
<bezel name="digit30" element="digit">
<bounds left="230" top="225" right="264" bottom="264" />
</bezel>
<bezel name="digit31" element="digit">
<bounds left="274" top="225" right="308" bottom="264" />
</bezel>
<!-- Credits and Balls -->
<bezel name="digit16" element="digit">
<bounds left="10" top="345" right="44" bottom="384" />
</bezel>
<bezel name="digit24" element="digit">
<bounds left="54" top="345" right="88" bottom="384" />
</bezel>
<bezel name="digit60" element="diag">
<bounds left="142" top="345" right="176" bottom="380" />
</bezel>
<bezel name="digit0" element="digit">
<bounds left="186" top="345" right="220" bottom="384" />
</bezel>
<bezel name="digit8" element="digit">
<bounds left="230" top="345" right="264" bottom="384" />
</bezel>
<bezel element="P0"><bounds left="200" right="258" top="330" bottom="342" /></bezel>
<bezel element="P1"><bounds left="30" right="88" top="330" bottom="342" /></bezel>
<bezel element="P3"><bounds left="100" right="180" top="30" bottom="42" /></bezel>
<bezel element="P4"><bounds left="100" right="180" top="90" bottom="102" /></bezel>
<bezel element="P5"><bounds left="100" right="180" top="150" bottom="162" /></bezel>
<bezel element="P6"><bounds left="100" right="180" top="210" bottom="222" /></bezel>
</view>
</mamelayout>

View File

@ -2241,6 +2241,7 @@ $(DRIVERS)/s8.o: $(LAYOUT)/s8.lh
$(DRIVERS)/s9.o: $(LAYOUT)/s9.lh
$(DRIVERS)/s11.o: $(LAYOUT)/s11.lh
$(DRIVERS)/s11a.o: $(LAYOUT)/s11a.lh
$(DRIVERS)/sbrkout.o: $(LAYOUT)/sbrkout.lh