trunk/src/mame/drivers/s7.c
r32486 | r32487 | |
2 | 2 | // copyright-holders:Robbbert |
3 | 3 | /**************************************************************************************** |
4 | 4 | |
5 | | PINBALL |
6 | | Williams System 7 |
| 5 | PINBALL |
| 6 | Williams System 7 |
7 | 7 | |
8 | | Status of games: |
9 | | - Inputs don't work so unable to play. |
10 | | - Display works. |
11 | | - Sound test works. |
| 8 | When first started, it shows the game number and stops. Press F3 to initialise the |
| 9 | nvram. In theory you can then press the diagnostic buttons; or you then enter coins |
| 10 | and start playing. |
12 | 11 | |
| 12 | Each game has its own switches, you need to know the outhole and slam-tilt ones. |
| 13 | Note that T is also a tilt, but it may take 3 hits to activate it. |
| 14 | |
| 15 | A number of games are multiball therefore they either cannot start or the outhole |
| 16 | is ineffective/unknown. All games can coin up. |
| 17 | |
| 18 | |
| 19 | Game Outhole Tilt Notes |
| 20 | ---------------------------------------------------------------------------------- |
| 21 | Black Knight Cannot start |
| 22 | Firepower II Cannot start |
| 23 | Defender Cannot start |
| 24 | Pharoah Cannot start |
| 25 | Starlight Cannot start |
| 26 | Cosmic Gunfight Freezes when 1 pressed |
| 27 | Thunderball Speech is mixed up |
| 28 | Barracora No sound, cannot start |
| 29 | Solar Fire No sound, cannot start |
| 30 | Warlok X Works |
| 31 | Laser Cue X Works |
| 32 | Time Fantasy Up Q Works |
| 33 | Varkon Mostly works |
| 34 | Jungle Lord Q Mostly works |
| 35 | Joust Does something? Not a normal pinball |
| 36 | Hyperball Does something? Not a normal pinball |
| 37 | |
| 38 | |
13 | 39 | ToDo: |
| 40 | - Diagnostic buttons do not work |
| 41 | - Some games have an additional alphanumeric display; not emulated as yet. |
14 | 42 | |
| 43 | |
15 | 44 | *****************************************************************************************/ |
16 | 45 | |
17 | 46 | |
r32486 | r32487 | |
54 | 83 | DECLARE_READ8_MEMBER(dips_r); |
55 | 84 | DECLARE_READ8_MEMBER(switch_r); |
56 | 85 | DECLARE_WRITE8_MEMBER(switch_w); |
| 86 | DECLARE_READ8_MEMBER(nvram_r); |
| 87 | DECLARE_WRITE8_MEMBER(nvram_w); |
57 | 88 | DECLARE_READ_LINE_MEMBER(pia21_ca1_r); |
58 | 89 | DECLARE_READ_LINE_MEMBER(pia28_ca1_r); |
59 | 90 | DECLARE_READ_LINE_MEMBER(pia28_cb1_r); |
r32486 | r32487 | |
72 | 103 | DECLARE_INPUT_CHANGED_MEMBER(audio_nmi); |
73 | 104 | DECLARE_INPUT_CHANGED_MEMBER(diag_ca1); |
74 | 105 | DECLARE_INPUT_CHANGED_MEMBER(diag_cb1); |
| 106 | DECLARE_INPUT_CHANGED_MEMBER(diag_coin); |
75 | 107 | DECLARE_MACHINE_RESET(s7); |
76 | 108 | private: |
77 | 109 | UINT8 m_t_c; |
78 | 110 | UINT8 m_sound_data; |
79 | 111 | UINT8 m_strobe; |
80 | 112 | UINT8 m_kbdrow; |
| 113 | UINT8 m_nvram[0x100]; |
81 | 114 | bool m_data_ok; |
| 115 | bool m_memprotect; |
| 116 | virtual void machine_start(); |
82 | 117 | required_device<cpu_device> m_maincpu; |
83 | 118 | required_device<cpu_device> m_audiocpu; |
84 | 119 | required_device<dac_device> m_dac; |
r32486 | r32487 | |
93 | 128 | |
94 | 129 | static ADDRESS_MAP_START( s7_main_map, AS_PROGRAM, 8, s7_state ) |
95 | 130 | ADDRESS_MAP_GLOBAL_MASK(0x7fff) |
96 | | AM_RANGE(0x0000, 0x01ff) AM_RAM AM_SHARE("nvram") |
97 | | AM_RANGE(0x0200, 0x13ff) AM_RAM |
| 131 | AM_RANGE(0x0000, 0x00ff) AM_RAM AM_MIRROR(0x1000) |
| 132 | AM_RANGE(0x0100, 0x01ff) AM_READWRITE(nvram_r,nvram_w) |
| 133 | AM_RANGE(0x0200, 0x03ff) AM_RAM AM_MIRROR(0x1000) |
| 134 | AM_RANGE(0x1100, 0x11ff) AM_RAM |
98 | 135 | AM_RANGE(0x2100, 0x2103) AM_DEVREADWRITE("pia21", pia6821_device, read, write) // sound+solenoids |
99 | 136 | AM_RANGE(0x2200, 0x2203) AM_DEVREADWRITE("pia22", pia6821_device, read, write) // solenoids |
100 | 137 | AM_RANGE(0x2400, 0x2403) AM_DEVREADWRITE("pia24", pia6821_device, read, write) // lamps |
r32486 | r32487 | |
114 | 151 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
115 | 152 | |
116 | 153 | PORT_START("X1") |
117 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_TILT ) |
118 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) |
119 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START ) |
| 154 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_TILT ) // pendulum tilt |
| 155 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 ) // 2-player start |
| 156 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START ) // 1-player start |
120 | 157 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN3 ) |
121 | 158 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 ) |
122 | 159 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) |
123 | | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) |
124 | | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) |
| 160 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_TILT ) // slam tilt |
| 161 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_8) // high score reset |
125 | 162 | |
126 | 163 | PORT_START("X2") |
127 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_A) |
| 164 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_X) |
128 | 165 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_S) |
129 | 166 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_D) |
130 | 167 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_F) |
r32486 | r32487 | |
148 | 185 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_SLASH) |
149 | 186 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_COLON) |
150 | 187 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_QUOTE) |
151 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_X) |
| 188 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_A) |
152 | 189 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_MINUS) |
153 | 190 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_EQUALS) |
154 | 191 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSPACE) |
r32486 | r32487 | |
187 | 224 | PORT_START("DIAGS") |
188 | 225 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Audio Diag") PORT_CODE(KEYCODE_F1) PORT_CHANGED_MEMBER(DEVICE_SELF, s7_state, audio_nmi, 1) |
189 | 226 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Main Diag") PORT_CODE(KEYCODE_F2) PORT_CHANGED_MEMBER(DEVICE_SELF, s7_state, main_nmi, 1) |
190 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Advance") PORT_CODE(KEYCODE_0) PORT_CHANGED_MEMBER(DEVICE_SELF, s7_state, diag_ca1, 1) |
191 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Up/Down") PORT_CODE(KEYCODE_9) PORT_CHANGED_MEMBER(DEVICE_SELF, s7_state, diag_cb1, 1) |
| 227 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Advance") PORT_CODE(KEYCODE_0) PORT_CHANGED_MEMBER(DEVICE_SELF, s7_state, diag_ca1, 0) |
| 228 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Up/Down") PORT_CODE(KEYCODE_9) PORT_CHANGED_MEMBER(DEVICE_SELF, s7_state, diag_cb1, 0) PORT_TOGGLE |
| 229 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Coin Door") PORT_CODE(KEYCODE_8) PORT_CHANGED_MEMBER(DEVICE_SELF, s7_state, diag_coin, 1) PORT_TOGGLE |
192 | 230 | |
193 | 231 | PORT_START("DSW0") |
194 | 232 | PORT_DIPNAME( 0x01, 0x01, "SW01" ) |
r32486 | r32487 | |
243 | 281 | PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) |
244 | 282 | INPUT_PORTS_END |
245 | 283 | |
246 | | MACHINE_RESET_MEMBER( s7_state, s7 ) |
247 | | { |
248 | | m_t_c = 0; |
249 | | } |
250 | | |
251 | 284 | INPUT_CHANGED_MEMBER( s7_state::main_nmi ) |
252 | 285 | { |
253 | 286 | // Diagnostic button sends a pulse to NMI pin |
r32486 | r32487 | |
264 | 297 | |
265 | 298 | INPUT_CHANGED_MEMBER( s7_state::diag_ca1 ) |
266 | 299 | { |
267 | | // if (newval==CLEAR_LINE) |
268 | | m_pia28->ca1_w(!newval); |
| 300 | m_pia28->ca1_w(oldval); // newval inverted by ic5, so use oldval |
269 | 301 | } |
270 | 302 | |
271 | 303 | INPUT_CHANGED_MEMBER( s7_state::diag_cb1 ) |
272 | 304 | { |
273 | | // if (newval==CLEAR_LINE) |
274 | | m_pia28->cb1_w(!newval); |
| 305 | m_pia28->cb1_w(oldval); // newval inverted by ic5, so use oldval |
275 | 306 | } |
276 | 307 | |
| 308 | INPUT_CHANGED_MEMBER( s7_state::diag_coin ) |
| 309 | { |
| 310 | m_memprotect = newval; |
| 311 | } |
| 312 | |
277 | 313 | WRITE8_MEMBER( s7_state::sol2_w ) |
278 | 314 | { |
279 | 315 | m_pia21->ca1_w(BIT(data, 5)); |
r32486 | r32487 | |
287 | 323 | |
288 | 324 | WRITE8_MEMBER( s7_state::sound_w ) |
289 | 325 | { |
290 | | UINT8 sound_data = ioport("SND")->read(); |
291 | | if (BIT(data, 0)) |
292 | | sound_data &= 0xfe; |
| 326 | UINT8 sound_data = (ioport("SND")->read() & 0xe0) | (data & 0x1f); |
293 | 327 | |
294 | | if (BIT(data, 1)) |
295 | | sound_data &= 0xfd; |
296 | | |
297 | | if (BIT(data, 2)) |
298 | | sound_data &= 0xfb; |
299 | | |
300 | | if (BIT(data, 3)) |
301 | | sound_data &= 0xf7; |
302 | | |
303 | | if (BIT(data, 4)) |
304 | | sound_data &= 0xef; |
305 | | |
306 | 328 | bool cb1 = ((sound_data & 0x9f) != 0x9f); |
307 | 329 | |
308 | 330 | if (cb1) |
r32486 | r32487 | |
368 | 390 | { |
369 | 391 | char kbdrow[8]; |
370 | 392 | sprintf(kbdrow,"X%X",m_kbdrow); |
371 | | return ioport(kbdrow)->read(); |
| 393 | return ioport(kbdrow)->read() ^ 0xff; // comes in through inverter buffers |
372 | 394 | } |
373 | 395 | |
374 | 396 | WRITE8_MEMBER( s7_state::switch_w ) |
r32486 | r32487 | |
376 | 398 | m_kbdrow = data; |
377 | 399 | } |
378 | 400 | |
| 401 | READ8_MEMBER( s7_state::nvram_r ) |
| 402 | { |
| 403 | return m_nvram[offset] | 0xf0; |
| 404 | } |
| 405 | |
| 406 | WRITE8_MEMBER( s7_state::nvram_w ) |
| 407 | { |
| 408 | if ((m_memprotect) && (offset > 0x7f)) |
| 409 | {} |
| 410 | else |
| 411 | m_nvram[offset] = data; |
| 412 | } |
| 413 | |
379 | 414 | READ8_MEMBER( s7_state::dac_r ) |
380 | 415 | { |
381 | 416 | return m_sound_data; |
382 | 417 | } |
383 | 418 | |
384 | | TIMER_DEVICE_CALLBACK_MEMBER( s7_state::irq) |
| 419 | TIMER_DEVICE_CALLBACK_MEMBER( s7_state::irq ) |
385 | 420 | { |
386 | 421 | if (m_t_c > 0x70) |
387 | 422 | m_maincpu->set_input_line(M6800_IRQ_LINE, ASSERT_LINE); |
r32486 | r32487 | |
389 | 424 | m_t_c++; |
390 | 425 | } |
391 | 426 | |
| 427 | void s7_state::machine_start() |
| 428 | { |
| 429 | m_memprotect = 0; |
| 430 | save_item(NAME(m_nvram)); |
| 431 | machine().device<nvram_device>("nvram")->set_base(m_nvram, sizeof(m_nvram)); |
| 432 | } |
| 433 | |
| 434 | MACHINE_RESET_MEMBER( s7_state, s7 ) |
| 435 | { |
| 436 | m_t_c = 0; |
| 437 | } |
| 438 | |
392 | 439 | static MACHINE_CONFIG_START( s7, s7_state ) |
393 | 440 | /* basic machine hardware */ |
394 | | MCFG_CPU_ADD("maincpu", M6808, 4000000) |
| 441 | MCFG_CPU_ADD("maincpu", M6808, 3580000) |
395 | 442 | MCFG_CPU_PROGRAM_MAP(s7_main_map) |
396 | 443 | MCFG_TIMER_DRIVER_ADD_PERIODIC("irq", s7_state, irq, attotime::from_hz(250)) |
397 | 444 | MCFG_MACHINE_RESET_OVERRIDE(s7_state, s7) |
r32486 | r32487 | |
404 | 451 | |
405 | 452 | /* Devices */ |
406 | 453 | MCFG_DEVICE_ADD("pia21", PIA6821, 0) |
407 | | MCFG_PIA_READPA_HANDLER(READ8(s7_state, dac_r)) |
| 454 | MCFG_PIA_READPA_HANDLER(CONSTANT(0xff)) |
| 455 | MCFG_PIA_READPB_HANDLER(CONSTANT(0x3f)) |
408 | 456 | MCFG_PIA_WRITEPA_HANDLER(WRITE8(s7_state, sound_w)) |
409 | 457 | MCFG_PIA_WRITEPB_HANDLER(WRITE8(s7_state, sol2_w)) |
410 | 458 | MCFG_PIA_CA2_HANDLER(WRITELINE(s7_state, pia21_ca2_w)) |
r32486 | r32487 | |
450 | 498 | MCFG_NVRAM_ADD_0FILL("nvram") |
451 | 499 | |
452 | 500 | /* Add the soundcard */ |
453 | | MCFG_CPU_ADD("audiocpu", M6808, 4000000) |
| 501 | MCFG_CPU_ADD("audiocpu", M6808, 3580000) |
454 | 502 | MCFG_CPU_PROGRAM_MAP(s7_audio_map) |
455 | 503 | MCFG_SPEAKER_STANDARD_MONO("mono") |
456 | 504 | MCFG_SOUND_ADD("dac", DAC, 0) |
r32486 | r32487 | |
462 | 510 | MCFG_DEVICE_ADD("pias", PIA6821, 0) |
463 | 511 | MCFG_PIA_READPB_HANDLER(READ8(s7_state, dac_r)) |
464 | 512 | MCFG_PIA_WRITEPA_HANDLER(DEVWRITE8("dac", dac_device, write_unsigned8)) |
| 513 | MCFG_PIA_WRITEPB_HANDLER(NULL) |
| 514 | MCFG_PIA_READCA1_HANDLER(VCC) |
465 | 515 | MCFG_PIA_CA2_HANDLER(DEVWRITELINE("hc55516", hc55516_device, digit_w)) |
466 | 516 | MCFG_PIA_CB2_HANDLER(DEVWRITELINE("hc55516", hc55516_device, clock_w)) |
467 | 517 | MCFG_PIA_IRQA_HANDLER(DEVWRITELINE("audiocpu", m6808_cpu_device, irq_line)) |
r32486 | r32487 | |
803 | 853 | |
804 | 854 | |
805 | 855 | |
806 | | GAME( 1980, bk_l4, 0, s7, s7, driver_device, 0, ROT0, "Williams", "Black Knight (L-4)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND) |
807 | | GAME( 1980, bk_f4, bk_l4, s7, s7, driver_device, 0, ROT0, "Williams", "Black Knight (L-4, French speech)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND) |
808 | | GAME( 1980, bk_l3, bk_l4, s7, s7, driver_device, 0, ROT0, "Williams", "Black Knight (L-3)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND) |
809 | | GAME( 1980, csmic_l1, 0, s7, s7, driver_device, 0, ROT0, "Williams", "Cosmic Gunfight (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND) |
810 | | GAME( 1981, jngld_l2, 0, s7, s7, driver_device, 0, ROT0, "Williams", "Jungle Lord (L-2)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND) |
811 | | GAME( 1981, jngld_l1, jngld_l2, s7, s7, driver_device, 0, ROT0, "Williams", "Jungle Lord (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND) |
812 | | GAME( 1981, pharo_l2, 0, s7, s7, driver_device, 0, ROT0, "Williams", "Pharaoh (L-2)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND) |
| 856 | GAME( 1980, bk_l4, 0, s7, s7, driver_device, 0, ROT0, "Williams", "Black Knight (L-4)", GAME_MECHANICAL | GAME_NOT_WORKING ) |
| 857 | GAME( 1980, bk_f4, bk_l4, s7, s7, driver_device, 0, ROT0, "Williams", "Black Knight (L-4, French speech)", GAME_MECHANICAL | GAME_NOT_WORKING ) |
| 858 | GAME( 1980, bk_l3, bk_l4, s7, s7, driver_device, 0, ROT0, "Williams", "Black Knight (L-3)", GAME_MECHANICAL | GAME_NOT_WORKING ) |
| 859 | GAME( 1980, csmic_l1, 0, s7, s7, driver_device, 0, ROT0, "Williams", "Cosmic Gunfight (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING ) |
| 860 | GAME( 1981, jngld_l2, 0, s7, s7, driver_device, 0, ROT0, "Williams", "Jungle Lord (L-2)", GAME_MECHANICAL | GAME_NOT_WORKING ) |
| 861 | GAME( 1981, jngld_l1, jngld_l2, s7, s7, driver_device, 0, ROT0, "Williams", "Jungle Lord (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING ) |
| 862 | GAME( 1981, pharo_l2, 0, s7, s7, driver_device, 0, ROT0, "Williams", "Pharaoh (L-2)", GAME_MECHANICAL | GAME_NOT_WORKING ) |
813 | 863 | GAME( 1981, solar_l2, 0, s7, s7, driver_device, 0, ROT0, "Williams", "Solar Fire (L-2)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND) |
814 | | GAME( 1982, thund_p1, 0, s7, s7, driver_device, 0, ROT0, "Williams", "Thunderball (P-1)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND) |
815 | | GAME( 1982, thund_p2, thund_p1, s7, s7, driver_device, 0, ROT0, "Williams", "Thunderball (P-2)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND) |
816 | | GAME( 1982, thund_p3, thund_p1, s7, s7, driver_device, 0, ROT0, "Williams", "Thunderball (P-3)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND) |
817 | | GAME( 1981, hypbl_l4, 0, s7, s7, driver_device, 0, ROT0, "Williams", "HyperBall (L-4)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND) |
818 | | GAME( 1981, hypbl_l2, hypbl_l4, s7, s7, driver_device, 0, ROT0, "Williams", "HyperBall (L-2)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND) |
| 864 | GAME( 1982, thund_p1, 0, s7, s7, driver_device, 0, ROT0, "Williams", "Thunderball (P-1)", GAME_MECHANICAL | GAME_IMPERFECT_SOUND ) |
| 865 | GAME( 1982, thund_p2, thund_p1, s7, s7, driver_device, 0, ROT0, "Williams", "Thunderball (P-2)", GAME_MECHANICAL | GAME_IMPERFECT_SOUND ) |
| 866 | GAME( 1982, thund_p3, thund_p1, s7, s7, driver_device, 0, ROT0, "Williams", "Thunderball (P-3)", GAME_MECHANICAL | GAME_IMPERFECT_SOUND ) |
| 867 | GAME( 1981, hypbl_l4, 0, s7, s7, driver_device, 0, ROT0, "Williams", "HyperBall (L-4)", GAME_MECHANICAL | GAME_NOT_WORKING ) |
| 868 | GAME( 1981, hypbl_l2, hypbl_l4, s7, s7, driver_device, 0, ROT0, "Williams", "HyperBall (L-2)", GAME_MECHANICAL | GAME_NOT_WORKING ) |
819 | 869 | GAME( 1981, barra_l1, 0, s7, s7, driver_device, 0, ROT0, "Williams", "Barracora (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND) |
820 | | GAME( 1982, vrkon_l1, 0, s7, s7, driver_device, 0, ROT0, "Williams", "Varkon (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND) |
821 | | GAME( 1982, tmfnt_l5, 0, s7, s7, driver_device, 0, ROT0, "Williams", "Time Fantasy (L-5)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND) |
822 | | GAME( 1982, wrlok_l3, 0, s7, s7, driver_device, 0, ROT0, "Williams", "Warlok (L-3)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND) |
823 | | GAME( 1982, dfndr_l4, 0, s7, s7, driver_device, 0, ROT0, "Williams", "Defender (L-4)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND) |
824 | | GAME( 1983, jst_l2, 0, s7, s7, driver_device, 0, ROT0, "Williams", "Joust (L-2)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND) |
825 | | GAME( 1983, jst_l1, jst_l2, s7, s7, driver_device, 0, ROT0, "Williams", "Joust (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND) |
826 | | GAME( 1983, lsrcu_l2, 0, s7, s7, driver_device, 0, ROT0, "Williams", "Laser Cue (L-2)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND) |
827 | | GAME( 1983, fpwr2_l2, 0, s7, s7, driver_device, 0, ROT0, "Williams", "Firepower II (L-2)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND) |
828 | | GAME( 1984, strlt_l1, 0, s7, s7, driver_device, 0, ROT0, "Williams", "Star Light (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND) |
| 870 | GAME( 1982, vrkon_l1, 0, s7, s7, driver_device, 0, ROT0, "Williams", "Varkon (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING ) |
| 871 | GAME( 1982, tmfnt_l5, 0, s7, s7, driver_device, 0, ROT0, "Williams", "Time Fantasy (L-5)", GAME_MECHANICAL ) |
| 872 | GAME( 1982, wrlok_l3, 0, s7, s7, driver_device, 0, ROT0, "Williams", "Warlok (L-3)", GAME_MECHANICAL ) |
| 873 | GAME( 1982, dfndr_l4, 0, s7, s7, driver_device, 0, ROT0, "Williams", "Defender (L-4)", GAME_MECHANICAL | GAME_NOT_WORKING ) |
| 874 | GAME( 1983, jst_l2, 0, s7, s7, driver_device, 0, ROT0, "Williams", "Joust (L-2)", GAME_MECHANICAL | GAME_NOT_WORKING ) |
| 875 | GAME( 1983, jst_l1, jst_l2, s7, s7, driver_device, 0, ROT0, "Williams", "Joust (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING ) |
| 876 | GAME( 1983, lsrcu_l2, 0, s7, s7, driver_device, 0, ROT0, "Williams", "Laser Cue (L-2)", GAME_MECHANICAL ) |
| 877 | GAME( 1983, fpwr2_l2, 0, s7, s7, driver_device, 0, ROT0, "Williams", "Firepower II (L-2)", GAME_MECHANICAL | GAME_NOT_WORKING ) |
| 878 | GAME( 1984, strlt_l1, 0, s7, s7, driver_device, 0, ROT0, "Williams", "Star Light (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING ) |