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) |