trunk/src/mame/drivers/s6.c
r32436 | r32437 | |
2 | 2 | // copyright-holders:Robbbert |
3 | 3 | /*********************************************************************************** |
4 | 4 | |
5 | | PINBALL |
6 | | Williams System 6 |
| 5 | PINBALL |
| 6 | Williams System 6 |
7 | 7 | |
8 | | After starting a game, nothing much works. |
9 | | |
10 | | |
11 | 8 | Each game has its own switches, you need to know the outhole and slam-tilt ones. |
12 | 9 | Note that T is also a tilt, but it may take 3 hits to activate it. |
13 | 10 | |
r32436 | r32437 | |
24 | 21 | Blackout X Backspace |
25 | 22 | Firepower unknown |
26 | 23 | |
| 24 | Blackout: wait for the background sound before attempting to score. |
27 | 25 | |
28 | | |
29 | 26 | ToDo: |
30 | | - Speech not working in-game (works with test button) |
| 27 | - Diagnostic mode freezes |
31 | 28 | - Mechanical sounds |
32 | 29 | - Blackout: slow response at times |
33 | 30 | - Firepower: unable to start / unknown key combo? |
r32436 | r32437 | |
73 | 70 | DECLARE_WRITE8_MEMBER(pias_pb_w) { }; // dummy to stop log filling up |
74 | 71 | DECLARE_READ_LINE_MEMBER(pia28_ca1_r); |
75 | 72 | DECLARE_READ_LINE_MEMBER(pia28_cb1_r); |
76 | | DECLARE_WRITE_LINE_MEMBER(pias_ca2_w); |
77 | | DECLARE_WRITE_LINE_MEMBER(pias_cb2_w); |
78 | 73 | DECLARE_WRITE_LINE_MEMBER(pia22_ca2_w) { }; //ST5 |
79 | 74 | DECLARE_WRITE_LINE_MEMBER(pia22_cb2_w) { }; //ST-solenoids enable |
80 | 75 | DECLARE_WRITE_LINE_MEMBER(pia24_ca2_w) { }; //ST2 |
r32436 | r32437 | |
193 | 188 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
194 | 189 | |
195 | 190 | PORT_START("SND") |
196 | | PORT_BIT( 0xbf, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 191 | PORT_BIT( 0x9f, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 192 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Speech") PORT_CODE(KEYCODE_3) PORT_TOGGLE |
197 | 193 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Music") PORT_CODE(KEYCODE_4) PORT_TOGGLE |
198 | 194 | |
199 | 195 | PORT_START("DIAGS") |
r32436 | r32437 | |
299 | 295 | if (BIT(data, 4)) |
300 | 296 | sound_data &= 0xef; |
301 | 297 | |
302 | | bool cb1 = ((sound_data & 0xbf) != 0xbf); |
| 298 | bool cb1 = ((sound_data & 0x9f) != 0x9f); |
303 | 299 | |
304 | 300 | if (cb1) |
305 | 301 | m_sound_data = sound_data; |
r32436 | r32437 | |
379 | 375 | m_kbdrow = data; |
380 | 376 | } |
381 | 377 | |
382 | | WRITE_LINE_MEMBER( s6_state::pias_cb2_w ) |
383 | | { |
384 | | // speech clock |
385 | | m_hc55516->clock_w(state); |
386 | | } |
387 | | |
388 | | WRITE_LINE_MEMBER( s6_state::pias_ca2_w ) |
389 | | { |
390 | | // speech data |
391 | | m_hc55516->digit_w(state); |
392 | | } |
393 | | |
394 | 378 | READ8_MEMBER( s6_state::dac_r ) |
395 | 379 | { |
396 | 380 | return m_sound_data; |
r32436 | r32437 | |
469 | 453 | MCFG_PIA_READPB_HANDLER(READ8(s6_state, dac_r)) |
470 | 454 | MCFG_PIA_WRITEPA_HANDLER(DEVWRITE8("dac", dac_device, write_unsigned8)) |
471 | 455 | MCFG_PIA_WRITEPB_HANDLER(WRITE8(s6_state, pias_pb_w)) |
472 | | MCFG_PIA_CA2_HANDLER(WRITELINE(s6_state, pias_ca2_w)) |
473 | | MCFG_PIA_CB2_HANDLER(WRITELINE(s6_state, pias_cb2_w)) |
| 456 | MCFG_PIA_CA2_HANDLER(DEVWRITELINE("hc55516", hc55516_device, digit_w)) |
| 457 | MCFG_PIA_CB2_HANDLER(DEVWRITELINE("hc55516", hc55516_device, clock_w)) |
474 | 458 | MCFG_PIA_IRQA_HANDLER(DEVWRITELINE("audioroms", m6802_cpu_device, irq_line)) |
475 | 459 | MCFG_PIA_IRQB_HANDLER(DEVWRITELINE("audioroms", m6802_cpu_device, irq_line)) |
476 | 460 | MACHINE_CONFIG_END |
r32436 | r32437 | |
652 | 636 | GAME( 1980, lzbal_t2, lzbal_l2, s6, s6, driver_device, 0, ROT0, "Williams", "Laser Ball (T-2)", GAME_MECHANICAL ) |
653 | 637 | GAME( 1980, scrpn_l1, 0, s6, s6, driver_device, 0, ROT0, "Williams", "Scorpion (L-1)", GAME_MECHANICAL ) |
654 | 638 | GAME( 1980, scrpn_t1, scrpn_l1, s6, s6, driver_device, 0, ROT0, "Williams", "Scorpion (T-1)", GAME_MECHANICAL ) |
655 | | GAME( 1979, blkou_l1, 0, s6, s6, driver_device, 0, ROT0, "Williams", "Blackout (L-1)", GAME_MECHANICAL | GAME_IMPERFECT_SOUND) |
656 | | GAME( 1979, blkou_t1, blkou_l1, s6, s6, driver_device, 0, ROT0, "Williams", "Blackout (T-1)", GAME_MECHANICAL | GAME_IMPERFECT_SOUND) |
657 | | GAME( 1979, blkou_f1, blkou_l1, s6, s6, driver_device, 0, ROT0, "Williams", "Blackout (L-1, French Speech)", GAME_MECHANICAL | GAME_IMPERFECT_SOUND) |
658 | | GAME( 1979, grgar_l1, 0, s6, s6, driver_device, 0, ROT0, "Williams", "Gorgar (L-1)", GAME_MECHANICAL | GAME_IMPERFECT_SOUND) |
659 | | GAME( 1979, grgar_t1, grgar_l1, s6, s6, driver_device, 0, ROT0, "Williams", "Gorgar (T-1)", GAME_MECHANICAL | GAME_IMPERFECT_SOUND) |
| 639 | GAME( 1979, blkou_l1, 0, s6, s6, driver_device, 0, ROT0, "Williams", "Blackout (L-1)", GAME_MECHANICAL ) |
| 640 | GAME( 1979, blkou_t1, blkou_l1, s6, s6, driver_device, 0, ROT0, "Williams", "Blackout (T-1)", GAME_MECHANICAL ) |
| 641 | GAME( 1979, blkou_f1, blkou_l1, s6, s6, driver_device, 0, ROT0, "Williams", "Blackout (L-1, French Speech)", GAME_MECHANICAL ) |
| 642 | GAME( 1979, grgar_l1, 0, s6, s6, driver_device, 0, ROT0, "Williams", "Gorgar (L-1)", GAME_MECHANICAL ) |
| 643 | GAME( 1979, grgar_t1, grgar_l1, s6, s6, driver_device, 0, ROT0, "Williams", "Gorgar (T-1)", GAME_MECHANICAL ) |
660 | 644 | GAME( 1980, frpwr_l6, 0, s6, s6, driver_device, 0, ROT0, "Williams", "Firepower (L-6)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND) |
661 | 645 | GAME( 1980, frpwr_t6, frpwr_l6, s6, s6, driver_device, 0, ROT0, "Williams", "Firepower (T-6)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND) |
662 | 646 | GAME( 1980, frpwr_l2, frpwr_l6, s6, s6, driver_device, 0, ROT0, "Williams", "Firepower (L-2)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND) |