Previous 199869 Revisions Next

r18868 Tuesday 6th November, 2012 at 00:33:10 UTC by Robbbert
Williams System 11a : WIP
[src/mame]mame.mak
[src/mame/drivers]s11.c s11a.c
[src/mame/layout]s11a.lay*

trunk/src/mame/drivers/s11a.c
r18867r18868
1/*
2    Williams System 11a
3*/
1/****************************************************************************************
42
3    Pinball
4    Williams System 11A
55
6#include "emu.h"
6    Status of games:
7
8
9ToDo:
10- Determine what drives the background sound (atm it's a guess)
11- Can coin up but not start
12
13*****************************************************************************************/
14
15
16#include "machine/genpin.h"
717#include "cpu/m6800/m6800.h"
18#include "cpu/m6809/m6809.h"
19#include "machine/6821pia.h"
20#include "sound/hc55516.h"
21#include "sound/2151intf.h"
22#include "sound/dac.h"
23#include "s11a.lh"
824
9class williams_s11a_state : public driver_device
25
26class s11a_state : public genpin_class
1027{
1128public:
12   williams_s11a_state(const machine_config &mconfig, device_type type, const char *tag)
13      : driver_device(mconfig, type, tag),
14        m_maincpu(*this, "maincpu")
29   s11a_state(const machine_config &mconfig, device_type type, const char *tag)
30      : genpin_class(mconfig, type, tag),
31   m_maincpu(*this, "maincpu"),
32   m_audiocpu(*this, "audiocpu"),
33   m_bgcpu(*this, "bgcpu"),
34   m_dac(*this, "dac"),
35   m_dac1(*this, "dac1"),
36   m_hc55516(*this, "hc55516"),
37   m_pias(*this, "pias"),
38   m_pia21(*this, "pia21"),
39   m_pia24(*this, "pia24"),
40   m_pia28(*this, "pia28"),
41   m_pia2c(*this, "pia2c"),
42   m_pia30(*this, "pia30"),
43   m_pia34(*this, "pia34"),
44   m_pia40(*this, "pia40")
1545   { }
1646
47   DECLARE_READ8_MEMBER(dac_r);
48   DECLARE_WRITE8_MEMBER(dac_w);
49   DECLARE_WRITE8_MEMBER(bank_w);
50   DECLARE_WRITE8_MEMBER(dig0_w);
51   DECLARE_WRITE8_MEMBER(dig1_w);
52   DECLARE_WRITE8_MEMBER(lamp0_w);
53   DECLARE_WRITE8_MEMBER(lamp1_w) { };
54   DECLARE_WRITE8_MEMBER(sol2_w) { }; // solenoids 8-15
55   DECLARE_WRITE8_MEMBER(sol3_w); // solenoids 0-7
56   DECLARE_WRITE8_MEMBER(sound_w);
57   DECLARE_WRITE8_MEMBER(pia2c_pa_w);
58   DECLARE_WRITE8_MEMBER(pia2c_pb_w);
59   DECLARE_WRITE8_MEMBER(pia34_pa_w);
60   DECLARE_WRITE8_MEMBER(pia34_pb_w);
61   DECLARE_WRITE8_MEMBER(pia40_pa_w);
62   DECLARE_READ8_MEMBER(dips_r);
63   DECLARE_READ8_MEMBER(switch_r);
64   DECLARE_WRITE8_MEMBER(switch_w);
65   DECLARE_READ_LINE_MEMBER(pias_ca1_r);
66   DECLARE_READ_LINE_MEMBER(pia21_ca1_r);
67   DECLARE_READ_LINE_MEMBER(pia28_ca1_r);
68   DECLARE_READ_LINE_MEMBER(pia28_cb1_r);
69   DECLARE_WRITE_LINE_MEMBER(pias_ca2_w);
70   DECLARE_WRITE_LINE_MEMBER(pias_cb2_w);
71   DECLARE_WRITE_LINE_MEMBER(pia21_ca2_w);
72   DECLARE_WRITE_LINE_MEMBER(pia21_cb2_w) { }; // enable solenoids
73   DECLARE_WRITE_LINE_MEMBER(pia24_cb2_w) { }; // dummy to stop error log filling up
74   DECLARE_WRITE_LINE_MEMBER(pia28_ca2_w) { }; // comma3&4
75   DECLARE_WRITE_LINE_MEMBER(pia28_cb2_w) { }; // comma1&2
76   DECLARE_WRITE_LINE_MEMBER(pia30_cb2_w) { }; // dummy to stop error log filling up
77   DECLARE_WRITE_LINE_MEMBER(ym2151_irq_w);
78   TIMER_DEVICE_CALLBACK_MEMBER(irq);
79   DECLARE_INPUT_CHANGED_MEMBER(main_nmi);
80   DECLARE_INPUT_CHANGED_MEMBER(audio_nmi);
81   DECLARE_MACHINE_RESET(s11a);
82   DECLARE_DRIVER_INIT(s11a);
1783protected:
1884
1985   // devices
2086   required_device<cpu_device> m_maincpu;
21
22   // driver_device overrides
23   virtual void machine_reset();
24public:
25   DECLARE_DRIVER_INIT(williams_s11a);
87   required_device<cpu_device> m_audiocpu;
88   required_device<cpu_device> m_bgcpu;
89   required_device<dac_device> m_dac;
90   required_device<dac_device> m_dac1;
91   required_device<hc55516_device> m_hc55516;
92   required_device<pia6821_device> m_pias;
93   required_device<pia6821_device> m_pia21;
94   required_device<pia6821_device> m_pia24;
95   required_device<pia6821_device> m_pia28;
96   required_device<pia6821_device> m_pia2c;
97   required_device<pia6821_device> m_pia30;
98   required_device<pia6821_device> m_pia34;
99   required_device<pia6821_device> m_pia40;
100private:
101   UINT8 m_t_c;
102   UINT8 m_sound_data;
103   UINT8 m_strobe;
104   UINT8 m_kbdrow;
105   UINT32 m_segment1;
106   UINT32 m_segment2;
107   bool m_ca1;
26108};
27109
110static ADDRESS_MAP_START( s11a_main_map, AS_PROGRAM, 8, s11a_state )
111   AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("nvram")
112   AM_RANGE(0x2100, 0x2103) AM_DEVREADWRITE("pia21", pia6821_device, read, write) // sound+solenoids
113   AM_RANGE(0x2200, 0x2200) AM_WRITE(sol3_w) // solenoids
114   AM_RANGE(0x2400, 0x2403) AM_DEVREADWRITE("pia24", pia6821_device, read, write) // lamps
115   AM_RANGE(0x2800, 0x2803) AM_DEVREADWRITE("pia28", pia6821_device, read, write) // display
116   AM_RANGE(0x2c00, 0x2c03) AM_DEVREADWRITE("pia2c", pia6821_device, read, write) // alphanumeric display
117   AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("pia30", pia6821_device, read, write) // inputs
118   AM_RANGE(0x3400, 0x3403) AM_DEVREADWRITE("pia34", pia6821_device, read, write) // widget
119   AM_RANGE(0x4000, 0xffff) AM_ROM
120ADDRESS_MAP_END
28121
29static ADDRESS_MAP_START( williams_s11a_map, AS_PROGRAM, 8, williams_s11a_state )
30   AM_RANGE(0x0000, 0xffff) AM_NOP
122static ADDRESS_MAP_START( s11a_audio_map, AS_PROGRAM, 8, s11a_state )
123   AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x0800) AM_RAM
124   AM_RANGE(0x1000, 0x1fff) AM_WRITE(bank_w)
125   AM_RANGE(0x2000, 0x2003) AM_MIRROR(0x0ffc) AM_DEVREADWRITE("pias", pia6821_device, read, write)
126   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank0")
127   AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bank1")
31128ADDRESS_MAP_END
32129
33static INPUT_PORTS_START( williams_s11a )
130static ADDRESS_MAP_START( s11a_bg_map, AS_PROGRAM, 8, s11a_state )
131   AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x1800) AM_RAM
132   AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x1ffe) AM_DEVREADWRITE("ym2151", ym2151_device, read, write)
133   AM_RANGE(0x4000, 0x4003) AM_MIRROR(0x1ffc) AM_DEVREADWRITE("pia40", pia6821_device, read, write)
134   AM_RANGE(0x8000, 0xffff) AM_ROM
135ADDRESS_MAP_END
136
137static INPUT_PORTS_START( s11a )
138   PORT_START("X0")
139   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
140
141   PORT_START("X1")
142   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_TILT )
143   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER )
144   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START )
145   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN3 )
146   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 )
147   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
148   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER )
149   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER )
150
151   PORT_START("X2")
152   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_A)
153   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_S)
154   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_D)
155   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_F)
156   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_G)
157   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_H)
158   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_J)
159   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_K)
160
161   PORT_START("X4")
162   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_L)
163   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Z)
164   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_C)
165   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_V)
166   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_B)
167   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_N)
168   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_M)
169   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_COMMA)
170
171   PORT_START("X8")
172   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_STOP)
173   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_SLASH)
174   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_COLON)
175   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_QUOTE)
176   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_X)
177   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_MINUS)
178   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_EQUALS)
179   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSPACE)
180
181   PORT_START("X10")
182   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_OPENBRACE)
183   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_CLOSEBRACE)
184   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSLASH)
185   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_ENTER)
186   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_LEFT)
187   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_RIGHT)
188   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_UP)
189   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_DOWN)
190
191   PORT_START("X20")
192   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Q)
193   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_W)
194   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_E)
195   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_R)
196   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Y)
197   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_U)
198   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_I)
199   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_O)
200
201   PORT_START("X40")
202   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
203
204   PORT_START("X80")
205   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
206
207   PORT_START("DIAGS")
208   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)
209   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)
210   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Advance") PORT_CODE(KEYCODE_0)
211   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Up/Down") PORT_CODE(KEYCODE_9)
34212INPUT_PORTS_END
35213
36void williams_s11a_state::machine_reset()
214MACHINE_RESET_MEMBER( s11a_state, s11a )
37215{
216   m_t_c = 0;
217   membank("bank0")->set_entry(0);
218   membank("bank1")->set_entry(0);
38219}
39220
40DRIVER_INIT_MEMBER(williams_s11a_state,williams_s11a)
221INPUT_CHANGED_MEMBER( s11a_state::main_nmi )
41222{
223   // Diagnostic button sends a pulse to NMI pin
224   if (newval==CLEAR_LINE)
225      m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
42226}
43227
44static MACHINE_CONFIG_START( williams_s11a, williams_s11a_state )
228INPUT_CHANGED_MEMBER( s11a_state::audio_nmi )
229{
230   // Diagnostic button sends a pulse to NMI pin
231   if (newval==CLEAR_LINE)
232      m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
233}
234
235WRITE8_MEMBER( s11a_state::sol3_w )
236{
237
238}
239
240WRITE8_MEMBER( s11a_state::sound_w )
241{
242   m_sound_data = data;
243}
244
245WRITE_LINE_MEMBER( s11a_state::pia21_ca2_w )
246{
247// sound ns
248   m_ca1 = state;
249   m_pias->ca1_w(m_ca1);
250   m_pia40->cb2_w(m_ca1);
251}
252
253static const pia6821_interface pia21_intf =
254{
255   DEVCB_DRIVER_MEMBER(s11a_state, dac_r),      /* port A in */
256   DEVCB_NULL,      /* port B in */
257   DEVCB_NULL,      /* line CA1 in */
258   DEVCB_LINE_GND,      /* line CB1 in */
259   DEVCB_NULL,      /* line CA2 in */
260   DEVCB_NULL,      /* line CB2 in */
261   DEVCB_DRIVER_MEMBER(s11a_state, sound_w),      /* port A out */
262   DEVCB_DRIVER_MEMBER(s11a_state, sol2_w),      /* port B out */
263   DEVCB_DRIVER_LINE_MEMBER(s11a_state, pia21_ca2_w),      /* line CA2 out */
264   DEVCB_DRIVER_LINE_MEMBER(s11a_state, pia21_cb2_w),      /* line CB2 out */
265   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE),      /* IRQA */
266   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE)      /* IRQB */
267};
268
269WRITE8_MEMBER( s11a_state::lamp0_w )
270{
271   m_maincpu->set_input_line(M6800_IRQ_LINE, CLEAR_LINE);
272}
273
274static const pia6821_interface pia24_intf =
275{
276   DEVCB_NULL,      /* port A in */
277   DEVCB_NULL,      /* port B in */
278   DEVCB_LINE_GND,      /* line CA1 in */
279   DEVCB_LINE_GND,      /* line CB1 in */
280   DEVCB_LINE_VCC,      /* line CA2 in */
281   DEVCB_LINE_VCC,      /* line CB2 in */
282   DEVCB_DRIVER_MEMBER(s11a_state, lamp0_w),      /* port A out */
283   DEVCB_DRIVER_MEMBER(s11a_state, lamp1_w),      /* port B out */
284   DEVCB_NULL,      /* line CA2 out */
285   DEVCB_DRIVER_LINE_MEMBER(s11a_state, pia24_cb2_w),      /* line CB2 out */
286   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE),      /* IRQA */
287   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE)      /* IRQB */
288};
289
290READ_LINE_MEMBER( s11a_state::pia28_ca1_r )
291{
292   return BIT(ioport("DIAGS")->read(), 2); // advance button
293}
294
295READ_LINE_MEMBER( s11a_state::pia28_cb1_r )
296{
297   return BIT(ioport("DIAGS")->read(), 3); // up/down switch
298}
299
300WRITE8_MEMBER( s11a_state::dig0_w )
301{
302   static const UINT8 patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0x58, 0x4c, 0x62, 0x69, 0x78, 0 }; // 7447
303   data &= 0x7f;
304   m_strobe = data & 15;
305   output_set_digit_value(60, patterns[data>>4]); // diag digit
306   m_segment1 = 0;
307   m_segment2 = 0;
308}
309
310WRITE8_MEMBER( s11a_state::dig1_w )
311{
312   m_segment2 |= data;
313   m_segment2 |= 0x20000;
314   if ((m_segment2 & 0x70000) == 0x30000)
315   {
316      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));
317      m_segment2 |= 0x40000;
318   }
319}
320
321static const pia6821_interface pia28_intf =
322{
323   DEVCB_NULL,      /* port A in */
324   DEVCB_NULL,      /* port B in */
325   DEVCB_DRIVER_LINE_MEMBER(s11a_state, pia28_ca1_r),      /* line CA1 in */
326   DEVCB_DRIVER_LINE_MEMBER(s11a_state, pia28_cb1_r),      /* line CB1 in */
327   DEVCB_NULL,      /* line CA2 in */
328   DEVCB_NULL,      /* line CB2 in */
329   DEVCB_DRIVER_MEMBER(s11a_state, dig0_w),      /* port A out */
330   DEVCB_DRIVER_MEMBER(s11a_state, dig1_w),      /* port B out */
331   DEVCB_DRIVER_LINE_MEMBER(s11a_state, pia28_ca2_w),      /* line CA2 out */
332   DEVCB_DRIVER_LINE_MEMBER(s11a_state, pia28_cb2_w),      /* line CB2 out */
333   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE),      /* IRQA */
334   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE)      /* IRQB */
335};
336
337WRITE8_MEMBER( s11a_state::pia2c_pa_w )
338{
339   m_segment1 |= (data<<8);
340   m_segment1 |= 0x10000;
341   if ((m_segment1 & 0x70000) == 0x30000)
342   {
343      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));
344      m_segment1 |= 0x40000;
345   }
346}
347
348WRITE8_MEMBER( s11a_state::pia2c_pb_w )
349{
350   m_segment1 |= data;
351   m_segment1 |= 0x20000;
352   if ((m_segment1 & 0x70000) == 0x30000)
353   {
354      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));
355      m_segment1 |= 0x40000;
356   }
357}
358
359static const pia6821_interface pia2c_intf =
360{
361   DEVCB_NULL,      /* port A in */
362   DEVCB_NULL,      /* port B in */
363   DEVCB_NULL,      /* line CA1 in */
364   DEVCB_NULL,      /* line CB1 in */
365   DEVCB_NULL,      /* line CA2 in */
366   DEVCB_NULL,      /* line CB2 in */
367   DEVCB_DRIVER_MEMBER(s11a_state, pia2c_pa_w),      /* port A out */
368   DEVCB_DRIVER_MEMBER(s11a_state, pia2c_pb_w),      /* port B out */
369   DEVCB_NULL,      /* line CA2 out */
370   DEVCB_NULL,      /* line CB2 out */
371   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE),   /* IRQA */
372   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE)      /* IRQB */
373};
374
375READ8_MEMBER( s11a_state::switch_r )
376{
377   char kbdrow[8];
378   sprintf(kbdrow,"X%X",m_kbdrow);
379   return ~ioport(kbdrow)->read();
380}
381
382WRITE8_MEMBER( s11a_state::switch_w )
383{
384   m_kbdrow = data;
385}
386
387static const pia6821_interface pia30_intf =
388{
389   DEVCB_DRIVER_MEMBER(s11a_state, switch_r),      /* port A in */
390   DEVCB_NULL,      /* port B in */
391   DEVCB_LINE_GND,      /* line CA1 in */
392   DEVCB_LINE_GND,      /* line CB1 in */
393   DEVCB_LINE_VCC,      /* line CA2 in */
394   DEVCB_LINE_VCC,      /* line CB2 in */
395   DEVCB_NULL,      /* port A out */
396   DEVCB_DRIVER_MEMBER(s11a_state, switch_w),      /* port B out */
397   DEVCB_NULL,      /* line CA2 out */
398   DEVCB_DRIVER_LINE_MEMBER(s11a_state, pia30_cb2_w),      /* line CB2 out */
399   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE),   /* IRQA */
400   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE)      /* IRQB */
401};
402
403WRITE8_MEMBER( s11a_state::pia34_pa_w )
404{
405   m_segment2 |= (data<<8);
406   m_segment2 |= 0x10000;
407   if ((m_segment2 & 0x70000) == 0x30000)
408   {
409      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));
410      m_segment2 |= 0x40000;
411   }
412}
413
414WRITE8_MEMBER( s11a_state::pia34_pb_w )
415{
416}
417
418static const pia6821_interface pia34_intf =
419{
420   DEVCB_NULL,      /* port A in */
421   DEVCB_NULL,      /* port B in */
422   DEVCB_NULL,      /* line CA1 in */
423   DEVCB_NULL,      /* line CB1 in */
424   DEVCB_NULL,      /* line CA2 in */
425   DEVCB_NULL,      /* line CB2 in */
426   DEVCB_DRIVER_MEMBER(s11a_state, pia34_pa_w),      /* port A out */
427   DEVCB_DRIVER_MEMBER(s11a_state, pia34_pb_w),      /* port B out */
428   DEVCB_NULL,      /* line CA2 out */
429   DEVCB_NULL,      /* line CB2 out */
430   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE),   /* IRQA */
431   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE)      /* IRQB */
432};
433
434WRITE8_MEMBER( s11a_state::bank_w )
435{
436   membank("bank0")->set_entry(BIT(data, 1));
437   membank("bank1")->set_entry(BIT(data, 0));
438}
439
440READ_LINE_MEMBER( s11a_state::pias_ca1_r )
441{
442   return m_ca1;
443}
444
445WRITE_LINE_MEMBER( s11a_state::pias_ca2_w )
446{
447// speech clock
448   hc55516_clock_w(m_hc55516, state);
449}
450
451WRITE_LINE_MEMBER( s11a_state::pias_cb2_w )
452{
453// speech data
454   hc55516_digit_w(m_hc55516, state);
455}
456
457READ8_MEMBER( s11a_state::dac_r )
458{
459   return m_sound_data;
460}
461
462WRITE8_MEMBER( s11a_state::dac_w )
463{
464   m_dac->write_unsigned8(data);
465}
466
467static const pia6821_interface pias_intf =
468{
469   DEVCB_DRIVER_MEMBER(s11a_state, dac_r),      /* port A in */
470   DEVCB_NULL,      /* port B in */
471   DEVCB_DRIVER_LINE_MEMBER(s11a_state, pias_ca1_r),      /* line CA1 in */
472   DEVCB_NULL,      /* line CB1 in */
473   DEVCB_NULL,      /* line CA2 in */
474   DEVCB_NULL,      /* line CB2 in */
475   DEVCB_DRIVER_MEMBER(s11a_state, sound_w),      /* port A out */
476   DEVCB_DRIVER_MEMBER(s11a_state, dac_w),      /* port B out */
477   DEVCB_DRIVER_LINE_MEMBER(s11a_state, pias_ca2_w),      /* line CA2 out */
478   DEVCB_DRIVER_LINE_MEMBER(s11a_state, pias_cb2_w),      /* line CB2 out */
479   DEVCB_CPU_INPUT_LINE("audiocpu", M6800_IRQ_LINE),      /* IRQA */
480   DEVCB_CPU_INPUT_LINE("audiocpu", M6800_IRQ_LINE)      /* IRQB */
481};
482
483WRITE8_MEMBER( s11a_state::pia40_pa_w )
484{
485   m_dac1->write_unsigned8(data);
486}
487
488WRITE_LINE_MEMBER( s11a_state::ym2151_irq_w)
489{
490   m_pia40->ca1_w(!state);
491}
492
493static const pia6821_interface pia40_intf =
494{
495   DEVCB_NULL,      /* port A in */
496   DEVCB_DRIVER_MEMBER(s11a_state, dac_r),      /* port B in */
497   DEVCB_DRIVER_LINE_MEMBER(s11a_state, pias_ca1_r),      /* line CA1 in */
498   DEVCB_NULL,      /* line CB1 in */
499   DEVCB_LINE_VCC,      /* line CA2 in */
500   DEVCB_NULL,      /* line CB2 in */
501   DEVCB_DRIVER_MEMBER(s11a_state, pia40_pa_w),      /* port A out */
502   DEVCB_DRIVER_MEMBER(s11a_state, dac_w),      /* port B out */
503   DEVCB_DRIVER_LINE_MEMBER(s11a_state, pias_ca2_w),      /* line CA2 out */
504   DEVCB_DRIVER_LINE_MEMBER(s11a_state, pias_cb2_w),      /* line CB2 out */
505   DEVCB_CPU_INPUT_LINE("bgcpu", M6809_FIRQ_LINE),      /* IRQA */
506   DEVCB_CPU_INPUT_LINE("bgcpu", INPUT_LINE_NMI)      /* IRQB */
507};
508
509DRIVER_INIT_MEMBER( s11a_state, s11a )
510{
511   UINT8 *ROM = memregion("audiocpu")->base();
512   membank("bank0")->configure_entries(0, 2, &ROM[0x10000], 0x4000);
513   membank("bank1")->configure_entries(0, 2, &ROM[0x18000], 0x4000);
514   membank("bank0")->set_entry(0);
515   membank("bank1")->set_entry(0);
516}
517
518TIMER_DEVICE_CALLBACK_MEMBER( s11a_state::irq)
519{
520   if (m_t_c > 0x70)
521   {
522      m_maincpu->set_input_line(M6800_IRQ_LINE, ASSERT_LINE);
523      m_pias->cb1_w(0);
524   }
525   else
526      m_t_c++;
527}
528
529static MACHINE_CONFIG_START( s11a, s11a_state )
45530   /* basic machine hardware */
46   MCFG_CPU_ADD("maincpu", M6800, 1000000)
47   MCFG_CPU_PROGRAM_MAP(williams_s11a_map)
531   MCFG_CPU_ADD("maincpu", M6800, 4000000)
532   MCFG_CPU_PROGRAM_MAP(s11a_main_map)
533   MCFG_TIMER_DRIVER_ADD_PERIODIC("irq", s11a_state, irq, attotime::from_hz(250))
534   MCFG_MACHINE_RESET_OVERRIDE(s11a_state, s11a)
535
536   /* Video */
537   MCFG_DEFAULT_LAYOUT(layout_s11a)
538
539   /* Sound */
540   MCFG_FRAGMENT_ADD( genpin_audio )
541
542   /* Devices */
543   MCFG_PIA6821_ADD("pia21", pia21_intf)
544   MCFG_PIA6821_ADD("pia24", pia24_intf)
545   MCFG_PIA6821_ADD("pia28", pia28_intf)
546   MCFG_PIA6821_ADD("pia2c", pia2c_intf)
547   MCFG_PIA6821_ADD("pia30", pia30_intf)
548   MCFG_PIA6821_ADD("pia34", pia34_intf)
549   MCFG_NVRAM_ADD_1FILL("nvram")
550
551   /* Add the soundcard */
552   MCFG_CPU_ADD("audiocpu", M6808, 3580000)
553   MCFG_CPU_PROGRAM_MAP(s11a_audio_map)
554
555   MCFG_SPEAKER_STANDARD_MONO("mono")
556   MCFG_DAC_ADD("dac")
557   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
558
559   MCFG_SPEAKER_STANDARD_MONO("speech")
560   MCFG_SOUND_ADD("hc55516", HC55516, 0)
561   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speech", 0.50)
562
563   MCFG_PIA6821_ADD("pias", pias_intf)
564
565   /* Add the background music card */
566   MCFG_CPU_ADD("bgcpu", M6809E, 4000000) // MC68B09E
567   MCFG_CPU_PROGRAM_MAP(s11a_bg_map)
568
569   MCFG_SPEAKER_STANDARD_MONO("bg")
570   MCFG_YM2151_ADD("ym2151", 3580000)
571   MCFG_YM2151_IRQ_HANDLER(WRITELINE(s11a_state, ym2151_irq_w))
572   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.50)
573
574   MCFG_DAC_ADD("dac1")
575   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "bg", 0.50)
576
577   MCFG_PIA6821_ADD("pia40", pia40_intf)
48578MACHINE_CONFIG_END
49579
50/*--------------------
51/ F14 Tomcat 5/87
52/--------------------*/
580/*------------------------
581/ F14 Tomcat 5/87 (#554)
582/-------------------------*/
53583
54584ROM_START(f14_p3)
55585   ROM_REGION(0x10000, "maincpu", 0)
56586   ROM_LOAD("f14_l3.u26", 0x4000, 0x4000, CRC(cd607556) SHA1(2ec95085784370a071cbf5df7ae5c6b4749605e2))
57587   ROM_LOAD("f14_l3.u27", 0x8000, 0x8000, CRC(72951fd1) SHA1(b5f3fe1859e0abf9ab558b4b4f6754134d528c23))
58   ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
59   ROM_REGION(0x10000, "sound2", 0)
60   ROM_LOAD("f14_u21.l1", 0x0000, 0x8000, CRC(e412300c) SHA1(382d0cfa47abea295f0c7501bc0a010473e9d73b))
61   ROM_LOAD("f14_u22.l1", 0x8000, 0x8000, CRC(c9dd7496) SHA1(de3cb855d87033274cc912578b02d1593d2d69f9))
62   ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF)
63   ROM_REGION(0x30000, "sound1", 0)
588
589   ROM_REGION(0x20000, "audiocpu", ROMREGION_ERASEFF)
590   ROM_LOAD("f14_u21.l1", 0x18000, 0x8000, CRC(e412300c) SHA1(382d0cfa47abea295f0c7501bc0a010473e9d73b))
591   ROM_LOAD("f14_u22.l1", 0x10000, 0x8000, CRC(c9dd7496) SHA1(de3cb855d87033274cc912578b02d1593d2d69f9))
592
593   ROM_REGION(0x20000, "bgcpu", ROMREGION_ERASEFF)
64594   ROM_LOAD("f14_u4.l1", 0x00000, 0x8000, CRC(43ecaabf) SHA1(64b50dbff03cd556130d0cff47b951fdf37d397d))
65   ROM_RELOAD(0x00000+0x8000, 0x8000)
66595   ROM_LOAD("f14_u19.l1", 0x10000, 0x8000, CRC(d0de4a7c) SHA1(46ecd5786653add47751cc56b38d9db7c4622377))
67   ROM_RELOAD(0x10000+0x8000, 0x8000)
68596ROM_END
69597
70598ROM_START(f14_p4)
71599   ROM_REGION(0x10000, "maincpu", 0)
72600   ROM_LOAD("u26_l4.128", 0x4000, 0x4000, CRC(7b39706a) SHA1(0dc0b1a1dfd12bc73e6fd8b825fe72ddc8fc1497))
73601   ROM_LOAD("u27_l4.256", 0x8000, 0x8000, CRC(189f9488) SHA1(7536d56cb83bf29f8d8b03b226a5f60200776095))
74   ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
75   ROM_REGION(0x10000, "sound2", 0)
76   ROM_LOAD("f14_u21.l1", 0x0000, 0x8000, CRC(e412300c) SHA1(382d0cfa47abea295f0c7501bc0a010473e9d73b))
77   ROM_LOAD("f14_u22.l1", 0x8000, 0x8000, CRC(c9dd7496) SHA1(de3cb855d87033274cc912578b02d1593d2d69f9))
78   ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF)
79   ROM_REGION(0x30000, "sound1", 0)
602
603   ROM_REGION(0x20000, "audiocpu", ROMREGION_ERASEFF)
604   ROM_LOAD("f14_u21.l1", 0x18000, 0x8000, CRC(e412300c) SHA1(382d0cfa47abea295f0c7501bc0a010473e9d73b))
605   ROM_LOAD("f14_u22.l1", 0x10000, 0x8000, CRC(c9dd7496) SHA1(de3cb855d87033274cc912578b02d1593d2d69f9))
606
607   ROM_REGION(0x20000, "bgcpu", ROMREGION_ERASEFF)
80608   ROM_LOAD("f14_u4.l1", 0x00000, 0x8000, CRC(43ecaabf) SHA1(64b50dbff03cd556130d0cff47b951fdf37d397d))
81   ROM_RELOAD(0x00000+0x8000, 0x8000)
82609   ROM_LOAD("f14_u19.l1", 0x10000, 0x8000, CRC(d0de4a7c) SHA1(46ecd5786653add47751cc56b38d9db7c4622377))
83   ROM_RELOAD(0x10000+0x8000, 0x8000)
84610ROM_END
85611
86612ROM_START(f14_l1)
87613   ROM_REGION(0x10000, "maincpu", 0)
88614   ROM_LOAD("f14_u26.l1", 0x4000, 0x4000, CRC(62c2e615) SHA1(456ce0d1f74fa5e619c272880ba8ac6819848ddc))
89615   ROM_LOAD("f14_u27.l1", 0x8000, 0x8000, CRC(da1740f7) SHA1(1395a4f3891a043cfedc5426ec88af35eab8d4ea))
90   ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
91   ROM_REGION(0x10000, "sound2", 0)
92   ROM_LOAD("f14_u21.l1", 0x0000, 0x8000, CRC(e412300c) SHA1(382d0cfa47abea295f0c7501bc0a010473e9d73b))
93   ROM_LOAD("f14_u22.l1", 0x8000, 0x8000, CRC(c9dd7496) SHA1(de3cb855d87033274cc912578b02d1593d2d69f9))
94   ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF)
95   ROM_REGION(0x30000, "sound1", 0)
616
617   ROM_REGION(0x20000, "audiocpu", ROMREGION_ERASEFF)
618   ROM_LOAD("f14_u21.l1", 0x18000, 0x8000, CRC(e412300c) SHA1(382d0cfa47abea295f0c7501bc0a010473e9d73b))
619   ROM_LOAD("f14_u22.l1", 0x10000, 0x8000, CRC(c9dd7496) SHA1(de3cb855d87033274cc912578b02d1593d2d69f9))
620
621   ROM_REGION(0x20000, "bgcpu", ROMREGION_ERASEFF)
96622   ROM_LOAD("f14_u4.l1", 0x00000, 0x8000, CRC(43ecaabf) SHA1(64b50dbff03cd556130d0cff47b951fdf37d397d))
97   ROM_RELOAD(0x00000+0x8000, 0x8000)
98623   ROM_LOAD("f14_u19.l1", 0x10000, 0x8000, CRC(d0de4a7c) SHA1(46ecd5786653add47751cc56b38d9db7c4622377))
99   ROM_RELOAD(0x10000+0x8000, 0x8000)
100624ROM_END
101625
102626/*--------------------
103/ Fire! 8/87
627/ Fire! 8/87 (#556)
104628/--------------------*/
105629ROM_START(fire_l3)
106630   ROM_REGION(0x10000, "maincpu", 0)
107631   ROM_LOAD("fire_u26.l3", 0x4000, 0x4000, CRC(48abae33) SHA1(00ce24316aa007eec090ae74818003e11a141214))
108632   ROM_LOAD("fire_u27.l3", 0x8000, 0x8000, CRC(4ebf4888) SHA1(45dc0231404ed70be2ab5d599a673aac6271550e))
109   ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
110   ROM_REGION(0x10000, "sound2", 0)
111   ROM_LOAD("fire_u21.l2", 0x0000, 0x8000, CRC(2edde0a4) SHA1(de292a340a3a06b0b996fc69fee73eb7bbfbbe64))
112   ROM_LOAD("fire_u22.l2", 0x8000, 0x8000, CRC(16145c97) SHA1(523e99df3907a2c843c6e27df4d16799c4136a46))
113   ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF)
114   ROM_REGION(0x30000, "sound1", 0)
115   ROM_LOAD("fire_u4.l1", 0x00000, 0x8000, CRC(0e058918) SHA1(4d6bf2290141119174787f8dd653c47ea4c73693))
116   ROM_RELOAD(0x00000+0x8000, 0x8000)
633
634   ROM_REGION(0x20000, "audiocpu", ROMREGION_ERASEFF)
635   ROM_LOAD("fire_u21.l2", 0x18000, 0x8000, CRC(2edde0a4) SHA1(de292a340a3a06b0b996fc69fee73eb7bbfbbe64))
636   ROM_LOAD("fire_u22.l2", 0x10000, 0x8000, CRC(16145c97) SHA1(523e99df3907a2c843c6e27df4d16799c4136a46))
637
638   ROM_REGION(0x20000, "bgcpu", ROMREGION_ERASEFF)
639   ROM_LOAD("fire_u4.l1", 0x8000, 0x8000, CRC(0e058918) SHA1(4d6bf2290141119174787f8dd653c47ea4c73693))
117640ROM_END
118641
119/*--------------------
120/ Fire! Champagne Edition 9/87
121/--------------------*/
642/*--------------------------------------
643/ Fire! Champagne Edition 9/87 (#556SE)
644/---------------------------------------*/
122645
123/*--------------------
124/ Millionaire 1/87
125/--------------------*/
646/*-------------------------
647/ Millionaire 1/87 (#555)
648/--------------------------*/
126649ROM_START(milln_l3)
127650   ROM_REGION(0x10000, "maincpu", 0)
128651   ROM_LOAD("mill_u26.l3", 0x4000, 0x4000, CRC(07bc9fff) SHA1(b16082fb51df3e4d2fb786cb8894b1c232521ef3))
129652   ROM_LOAD("mill_u27.l3", 0x8000, 0x8000, CRC(ba789c43) SHA1(c066a304882bea4cba1e215642416fcb22585aa4))
130   ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
131   ROM_REGION(0x10000, "sound2", 0)
132   ROM_LOAD("mill_u21.l1", 0x0000, 0x8000, CRC(4cd1ee90) SHA1(4e24b96138ced16eff9036303ca6347e3423dbfc))
133   ROM_LOAD("mill_u22.l1", 0x8000, 0x8000, CRC(73735cfc) SHA1(f74c873a20990263e0d6b35609fc51c08c9f8e31))
134   ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF)
135   ROM_REGION(0x30000, "sound1", 0)
653
654   ROM_REGION(0x20000, "audiocpu", ROMREGION_ERASEFF)
655   ROM_LOAD("mill_u21.l1", 0x18000, 0x8000, CRC(4cd1ee90) SHA1(4e24b96138ced16eff9036303ca6347e3423dbfc))
656   ROM_LOAD("mill_u22.l1", 0x10000, 0x8000, CRC(73735cfc) SHA1(f74c873a20990263e0d6b35609fc51c08c9f8e31))
657
658   ROM_REGION(0x20000, "bgcpu", ROMREGION_ERASEFF)
136659   ROM_LOAD("mill_u4.l1", 0x00000, 0x8000, CRC(cf766506) SHA1(a6e4df19a513102abbce2653d4f72245f54407b1))
137   ROM_RELOAD(0x00000+0x8000, 0x8000)
138660   ROM_LOAD("mill_u19.l1", 0x10000, 0x8000, CRC(e073245a) SHA1(cbaddde6bb19292ace574a8329e18c97c2ee9763))
139   ROM_RELOAD(0x10000+0x8000, 0x8000)
140661ROM_END
141662
142663/*--------------------
143/ Pinbot 10/86
664/ Pinbot 10/86 (#549)
144665/--------------------*/
145666ROM_START(pb_l5)
146667   ROM_REGION(0x10000, "maincpu", 0)
147668   ROM_LOAD("pbot_u26.l5", 0x4000, 0x4000, CRC(daa0c8e4) SHA1(47289b350eb0d84aa0d37e53383e18625451bbe8))
148669   ROM_LOAD("pbot_u27.l5", 0x8000, 0x8000, CRC(e625d6ce) SHA1(1858dc2183954342b8e2e5eb9a14edcaa8dad5ae))
149   ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
150   ROM_REGION(0x10000, "sound2", 0)
151   ROM_LOAD("pbot_u21.l1", 0x0000, 0x8000, CRC(3eab88d9) SHA1(667e3b675e2ae8fec6a6faddb9b0dd5531d64f8f))
152   ROM_LOAD("pbot_u22.l1", 0x8000, 0x8000, CRC(a2d2c9cb) SHA1(46437dc54538f1626caf41a2818ddcf8000c44e4))
153   ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF)
154   ROM_REGION(0x30000, "sound1", 0)
670
671   ROM_REGION(0x20000, "audiocpu", ROMREGION_ERASEFF)
672   ROM_LOAD("pbot_u21.l1", 0x18000, 0x8000, CRC(3eab88d9) SHA1(667e3b675e2ae8fec6a6faddb9b0dd5531d64f8f))
673   ROM_LOAD("pbot_u22.l1", 0x10000, 0x8000, CRC(a2d2c9cb) SHA1(46437dc54538f1626caf41a2818ddcf8000c44e4))
674
675   ROM_REGION(0x20000, "bgcpu", ROMREGION_ERASEFF)
155676   ROM_LOAD("pbot_u4.l1", 0x00000, 0x8000, CRC(de5926bd) SHA1(3d111e27c5f0c8c0afc5fe5cc45bf77c12b69228))
156   ROM_RELOAD(0x00000+0x8000, 0x8000)
157677   ROM_LOAD("pbot_u19.l1", 0x10000, 0x8000, CRC(40eb4e9f) SHA1(07b0557b35599a2dd5aa66a306fbbe8f50eed998))
158   ROM_RELOAD(0x10000+0x8000, 0x8000)
159678ROM_END
160679
161680ROM_START(pb_l2)
162681   ROM_REGION(0x10000, "maincpu", 0)
163682   ROM_LOAD("u26-l2.rom", 0x4000, 0x4000, CRC(e3b94ca4) SHA1(1db2acb025941cc165cc7ec70a160e07ab1eeb2e))
164683   ROM_LOAD("u27-l2.rom", 0x8000, 0x8000, CRC(0a334fc5) SHA1(d08afe6ddc141e37f97ea588d184a316ff7f6db7))
165   ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
166   ROM_REGION(0x10000, "sound2", 0)
167   ROM_LOAD("pbot_u21.l1", 0x0000, 0x8000, CRC(3eab88d9) SHA1(667e3b675e2ae8fec6a6faddb9b0dd5531d64f8f))
168   ROM_LOAD("pbot_u22.l1", 0x8000, 0x8000, CRC(a2d2c9cb) SHA1(46437dc54538f1626caf41a2818ddcf8000c44e4))
169   ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF)
170   ROM_REGION(0x30000, "sound1", 0)
684
685   ROM_REGION(0x20000, "audiocpu", ROMREGION_ERASEFF)
686   ROM_LOAD("pbot_u21.l1", 0x18000, 0x8000, CRC(3eab88d9) SHA1(667e3b675e2ae8fec6a6faddb9b0dd5531d64f8f))
687   ROM_LOAD("pbot_u22.l1", 0x10000, 0x8000, CRC(a2d2c9cb) SHA1(46437dc54538f1626caf41a2818ddcf8000c44e4))
688
689   ROM_REGION(0x20000, "bgcpu", ROMREGION_ERASEFF)
171690   ROM_LOAD("pbot_u4.l1", 0x00000, 0x8000, CRC(de5926bd) SHA1(3d111e27c5f0c8c0afc5fe5cc45bf77c12b69228))
172   ROM_RELOAD(0x00000+0x8000, 0x8000)
173691   ROM_LOAD("pbot_u19.l1", 0x10000, 0x8000, CRC(40eb4e9f) SHA1(07b0557b35599a2dd5aa66a306fbbe8f50eed998))
174   ROM_RELOAD(0x10000+0x8000, 0x8000)
175692ROM_END
176693
177694ROM_START(pb_l3)
178695   ROM_REGION(0x10000, "maincpu", 0)
179696   ROM_LOAD("u26-l2.rom", 0x4000, 0x4000, CRC(e3b94ca4) SHA1(1db2acb025941cc165cc7ec70a160e07ab1eeb2e))
180697   ROM_LOAD("u27-l3.rom", 0x8000, 0x8000, CRC(6f40ee84) SHA1(85453137e3fdb1e422e3903dd053e04c9f2b9607))
181   ROM_REGION(0x10000, "cpu3", ROMREGION_ERASEFF)
182   ROM_REGION(0x10000, "sound2", 0)
183   ROM_LOAD("pbot_u21.l1", 0x0000, 0x8000, CRC(3eab88d9) SHA1(667e3b675e2ae8fec6a6faddb9b0dd5531d64f8f))
184   ROM_LOAD("pbot_u22.l1", 0x8000, 0x8000, CRC(a2d2c9cb) SHA1(46437dc54538f1626caf41a2818ddcf8000c44e4))
185   ROM_REGION(0x10000, "cpu2", ROMREGION_ERASEFF)
186   ROM_REGION(0x30000, "sound1", 0)
698
699   ROM_REGION(0x20000, "audiocpu", ROMREGION_ERASEFF)
700   ROM_LOAD("pbot_u21.l1", 0x18000, 0x8000, CRC(3eab88d9) SHA1(667e3b675e2ae8fec6a6faddb9b0dd5531d64f8f))
701   ROM_LOAD("pbot_u22.l1", 0x10000, 0x8000, CRC(a2d2c9cb) SHA1(46437dc54538f1626caf41a2818ddcf8000c44e4))
702
703   ROM_REGION(0x20000, "bgcpu", ROMREGION_ERASEFF)
187704   ROM_LOAD("pbot_u4.l1", 0x00000, 0x8000, CRC(de5926bd) SHA1(3d111e27c5f0c8c0afc5fe5cc45bf77c12b69228))
188   ROM_RELOAD(0x00000+0x8000, 0x8000)
189705   ROM_LOAD("pbot_u19.l1", 0x10000, 0x8000, CRC(40eb4e9f) SHA1(07b0557b35599a2dd5aa66a306fbbe8f50eed998))
190   ROM_RELOAD(0x10000+0x8000, 0x8000)
191706ROM_END
192707
193GAME(1987,   f14_l1,      0,      williams_s11a,   williams_s11a, williams_s11a_state,   williams_s11a,   ROT0,   "Williams",      "F14 Tomcat (L-1)",      GAME_IS_SKELETON_MECHANICAL)
194GAME(1987,   f14_p3,      f14_l1,   williams_s11a,   williams_s11a, williams_s11a_state,   williams_s11a,   ROT0,   "Williams",      "F14 Tomcat (P-3)",      GAME_IS_SKELETON_MECHANICAL)
195GAME(1987,   f14_p4,      f14_l1,   williams_s11a,   williams_s11a, williams_s11a_state,   williams_s11a,   ROT0,   "Williams",      "F14 Tomcat (P-4)",      GAME_IS_SKELETON_MECHANICAL)
196GAME(1987,   fire_l3,   0,      williams_s11a,   williams_s11a, williams_s11a_state,   williams_s11a,   ROT0,   "Williams",      "Fire! (L-3)",         GAME_IS_SKELETON_MECHANICAL)
197GAME(1987,   milln_l3,   0,      williams_s11a,   williams_s11a, williams_s11a_state,   williams_s11a,   ROT0,   "Williams",      "Millionaire (L-3)",   GAME_IS_SKELETON_MECHANICAL)
198GAME(1986,   pb_l5,      0,      williams_s11a,   williams_s11a, williams_s11a_state,   williams_s11a,   ROT0,   "Williams",      "Pin-Bot (L-5)",      GAME_IS_SKELETON_MECHANICAL)
199GAME(1986,   pb_l2,      pb_l5,   williams_s11a,   williams_s11a, williams_s11a_state,   williams_s11a,   ROT0,   "Williams",      "Pin-Bot (L-2)",      GAME_IS_SKELETON_MECHANICAL)
200GAME(1986,   pb_l3,      pb_l5,   williams_s11a,   williams_s11a, williams_s11a_state,   williams_s11a,   ROT0,   "Williams",      "Pin-Bot (L-3)",      GAME_IS_SKELETON_MECHANICAL)
708GAME(1987, f14_l1,   0,      s11a, s11a, s11a_state, s11a, ROT0, "Williams", "F14 Tomcat (L-1)", GAME_IS_SKELETON_MECHANICAL)
709GAME(1987, f14_p3,   f14_l1, s11a, s11a, s11a_state, s11a, ROT0, "Williams", "F14 Tomcat (P-3)", GAME_IS_SKELETON_MECHANICAL)
710GAME(1987, f14_p4,   f14_l1, s11a, s11a, s11a_state, s11a, ROT0, "Williams", "F14 Tomcat (P-4)", GAME_IS_SKELETON_MECHANICAL)
711GAME(1987, fire_l3,  0,      s11a, s11a, s11a_state, s11a, ROT0, "Williams", "Fire! (L-3)", GAME_IS_SKELETON_MECHANICAL)
712GAME(1987, milln_l3, 0,      s11a, s11a, s11a_state, s11a, ROT0, "Williams", "Millionaire (L-3)", GAME_IS_SKELETON_MECHANICAL)
713GAME(1986, pb_l5,    0,      s11a, s11a, s11a_state, s11a, ROT0, "Williams", "Pin-Bot (L-5)", GAME_IS_SKELETON_MECHANICAL)
714GAME(1986, pb_l2,    pb_l5,  s11a, s11a, s11a_state, s11a, ROT0, "Williams", "Pin-Bot (L-2)", GAME_IS_SKELETON_MECHANICAL)
715GAME(1986, pb_l3,    pb_l5,  s11a, s11a, s11a_state, s11a, ROT0, "Williams", "Pin-Bot (L-3)", GAME_IS_SKELETON_MECHANICAL)
trunk/src/mame/drivers/s11.c
r18867r18868
633633/*-------------------------
634634/ Road Kings 07/86 (#542)
635635/--------------------------*/
636ROM_START(rdkng_l5)
637   ROM_REGION(0x10000, "maincpu", 0)
638   ROM_LOAD("road_u26.l5", 0x4000, 0x4000, CRC(22bcc70e) SHA1(cf46e8c5e417999150403d6d40adf8c36b1c0347))
639   ROM_LOAD("road_u27.l1", 0x8000, 0x8000, CRC(3dcad794) SHA1(6438505bb335f670e0892126764819a48eec9b88))
640636
641   ROM_REGION(0x20000, "audiocpu", ROMREGION_ERASEFF)
642   ROM_LOAD("road_u21.l1", 0x18000, 0x8000, CRC(f34efbf4) SHA1(cb5ffe9818994f4681e3492a5cd46f410d2e5353))
643   ROM_LOAD("road_u22.l1", 0x10000, 0x8000, CRC(a9803804) SHA1(a400d4621c3f7a6e47546b2f33dc4920183a5a74))
644
645   ROM_REGION(0x10000, "bgcpu", ROMREGION_ERASEFF)
646   ROM_LOAD("road_u4.l1", 0x8000, 0x8000, CRC(4395b48f) SHA1(2325ce6ba7f6f92f884c302e6f053c31229dc774))
647ROM_END
648
649637ROM_START(rdkng_l1)
650638   ROM_REGION(0x10000, "maincpu", 0)
651639   ROM_LOAD("road_u26.l1", 0x4000, 0x4000, CRC(19abe96b) SHA1(d6c3b6dab328f23cc4506e4f56cd0beeb06fb3cb))
r18867r18868
775763GAME( 1986, grand_l4, 0,        s11, s11, s11_state, s11, ROT0, "Williams", "Grand Lizard (L-4)", GAME_MECHANICAL | GAME_NOT_WORKING)
776764GAME( 1986, hs_l4,    0,        s11, s11, s11_state, s11, ROT0, "Williams", "High Speed (L-4)", GAME_MECHANICAL | GAME_NOT_WORKING)
777765GAME( 1986, hs_l3,    hs_l4,    s11, s11, s11_state, s11, ROT0, "Williams", "High Speed (L-3)", GAME_MECHANICAL | GAME_NOT_WORKING)
778GAME( 1986, rdkng_l5, rdkng_l4, s11, s11, s11_state, s11, ROT0, "Williams", "Road Kings (L-5)", GAME_MECHANICAL | GAME_NOT_WORKING)
779766GAME( 1986, rdkng_l4, 0,        s11, s11, s11_state, s11, ROT0, "Williams", "Road Kings (L-4)", GAME_MECHANICAL | GAME_NOT_WORKING)
780767GAME( 1986, rdkng_l1, rdkng_l4, s11, s11, s11_state, s11, ROT0, "Williams", "Road Kings (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING)
781768GAME( 1986, rdkng_l2, rdkng_l4, s11, s11, s11_state, s11, ROT0, "Williams", "Road Kings (L-2)", GAME_MECHANICAL | GAME_NOT_WORKING)
trunk/src/mame/mame.mak
r18867r18868
22412241$(DRIVERS)/s9.o:   $(LAYOUT)/s9.lh
22422242
22432243$(DRIVERS)/s11.o:   $(LAYOUT)/s11.lh
2244$(DRIVERS)/s11a.o:   $(LAYOUT)/s11a.lh
22442245
22452246$(DRIVERS)/sbrkout.o:   $(LAYOUT)/sbrkout.lh
22462247
trunk/src/mame/layout/s11a.lay
r0r18868
1<!-- s11.lay -->
2
3<!-- 2012-11-04: Initial version.  [Robbbert] -->
4
5<mamelayout version="2">
6
7   <element name="digit" defstate="0">
8      <led14segsc>
9         <color red="1.0" green="0.0" blue="0.0" />
10      </led14segsc>
11   </element>
12   <element name="diag" defstate="0">
13      <led7seg>
14         <color red="1.0" green="0.0" blue="1.0" />
15      </led7seg>
16   </element>
17   <element name="background">
18      <rect>
19         <bounds left="0" top="0" right="1" bottom="1" />
20         <color red="0.0" green="0.0" blue="0.0" />
21      </rect>
22   </element>
23   <element name="P0"><text string="Ball / Match"><color red="1.0" green="1.0" blue="1.0" /></text></element>
24   <element name="P1"><text string="Credits"><color red="1.0" green="1.0" blue="1.0" /></text></element>
25   <element name="P3"><text string="Player 1"><color red="1.0" green="1.0" blue="1.0" /></text></element>
26   <element name="P4"><text string="Player 2"><color red="1.0" green="1.0" blue="1.0" /></text></element>
27   <element name="P5"><text string="Player 3"><color red="1.0" green="1.0" blue="1.0" /></text></element>
28   <element name="P6"><text string="Player 4"><color red="1.0" green="1.0" blue="1.0" /></text></element>
29
30   <view name="Default Layout">
31
32      <!-- Background -->
33      <backdrop element="background">
34         <bounds left="0" top="20" right="318" bottom="394" />
35      </backdrop>
36
37      <!-- LEDs -->
38
39      <!-- Player 1 Score -->
40
41      <bezel name="digit1" element="digit">
42         <bounds left="10" top="45" right="44" bottom="84" />
43      </bezel>
44      <bezel name="digit2" element="digit">
45         <bounds left="54" top="45" right="88" bottom="84" />
46      </bezel>
47      <bezel name="digit3" element="digit">
48         <bounds left="98" top="45" right="132" bottom="84" />
49      </bezel>
50      <bezel name="digit4" element="digit">
51         <bounds left="142" top="45" right="176" bottom="84" />
52      </bezel>
53      <bezel name="digit5" element="digit">
54         <bounds left="186" top="45" right="220" bottom="84" />
55      </bezel>
56      <bezel name="digit6" element="digit">
57         <bounds left="230" top="45" right="264" bottom="84" />
58      </bezel>
59      <bezel name="digit7" element="digit">
60         <bounds left="274" top="45" right="308" bottom="84" />
61      </bezel>
62
63      <!-- Player 2 Score -->
64      <bezel name="digit9" element="digit">
65         <bounds left="10" top="105" right="44" bottom="144" />
66      </bezel>
67      <bezel name="digit10" element="digit">
68         <bounds left="54" top="105" right="88" bottom="144" />
69      </bezel>
70      <bezel name="digit11" element="digit">
71         <bounds left="98" top="105" right="132" bottom="144" />
72      </bezel>
73      <bezel name="digit12" element="digit">
74         <bounds left="142" top="105" right="176" bottom="144" />
75      </bezel>
76      <bezel name="digit13" element="digit">
77         <bounds left="186" top="105" right="220" bottom="144" />
78      </bezel>
79      <bezel name="digit14" element="digit">
80         <bounds left="230" top="105" right="264" bottom="144" />
81      </bezel>
82      <bezel name="digit15" element="digit">
83         <bounds left="274" top="105" right="308" bottom="144" />
84      </bezel>
85
86      <!-- Player 3 Score -->
87      <bezel name="digit17" element="digit">
88         <bounds left="10" top="165" right="44" bottom="204" />
89      </bezel>
90      <bezel name="digit18" element="digit">
91         <bounds left="54" top="165" right="88" bottom="204" />
92      </bezel>
93      <bezel name="digit19" element="digit">
94         <bounds left="98" top="165" right="132" bottom="204" />
95      </bezel>
96      <bezel name="digit20" element="digit">
97         <bounds left="142" top="165" right="176" bottom="204" />
98      </bezel>
99      <bezel name="digit21" element="digit">
100         <bounds left="186" top="165" right="220" bottom="204" />
101      </bezel>
102      <bezel name="digit22" element="digit">
103         <bounds left="230" top="165" right="264" bottom="204" />
104      </bezel>
105      <bezel name="digit23" element="digit">
106         <bounds left="274" top="165" right="308" bottom="204" />
107      </bezel>
108
109      <!-- Player 4 Score -->
110      <bezel name="digit25" element="digit">
111         <bounds left="10" top="225" right="44" bottom="264" />
112      </bezel>
113      <bezel name="digit26" element="digit">
114         <bounds left="54" top="225" right="88" bottom="264" />
115      </bezel>
116      <bezel name="digit27" element="digit">
117         <bounds left="98" top="225" right="132" bottom="264" />
118      </bezel>
119      <bezel name="digit28" element="digit">
120         <bounds left="142" top="225" right="176" bottom="264" />
121      </bezel>
122      <bezel name="digit29" element="digit">
123         <bounds left="186" top="225" right="220" bottom="264" />
124      </bezel>
125      <bezel name="digit30" element="digit">
126         <bounds left="230" top="225" right="264" bottom="264" />
127      </bezel>
128      <bezel name="digit31" element="digit">
129         <bounds left="274" top="225" right="308" bottom="264" />
130      </bezel>
131
132      <!-- Credits and Balls -->
133      <bezel name="digit16" element="digit">
134         <bounds left="10" top="345" right="44" bottom="384" />
135      </bezel>
136      <bezel name="digit24" element="digit">
137         <bounds left="54" top="345" right="88" bottom="384" />
138      </bezel>
139      <bezel name="digit60" element="diag">
140         <bounds left="142" top="345" right="176" bottom="380" />
141      </bezel>
142      <bezel name="digit0" element="digit">
143         <bounds left="186" top="345" right="220" bottom="384" />
144      </bezel>
145      <bezel name="digit8" element="digit">
146         <bounds left="230" top="345" right="264" bottom="384" />
147      </bezel>
148      <bezel element="P0"><bounds left="200" right="258" top="330" bottom="342" /></bezel>
149      <bezel element="P1"><bounds left="30" right="88" top="330" bottom="342" /></bezel>
150      <bezel element="P3"><bounds left="100" right="180" top="30" bottom="42" /></bezel>
151      <bezel element="P4"><bounds left="100" right="180" top="90" bottom="102" /></bezel>
152      <bezel element="P5"><bounds left="100" right="180" top="150" bottom="162" /></bezel>
153      <bezel element="P6"><bounds left="100" right="180" top="210" bottom="222" /></bezel>
154   </view>
155</mamelayout>

Previous 199869 Revisions Next


© 1997-2024 The MAME Team