trunk/src/mame/drivers/s3.c
| r32425 | r32426 | |
| 20 | 20 | Each game has its own switches, you need to know the outhole and slam-tilt ones. |
| 21 | 21 | Note that T is also a tilt, but it may take 3 hits to activate it. |
| 22 | 22 | |
| 23 | | Game Tilt Outhole |
| 24 | | ----------------------------- |
| 25 | | Hot Tip S A |
| 26 | | Lucky Seven = M |
| 27 | | World Cup J H |
| 28 | | Contact , V |
| 29 | | Disco Enter N |
| 30 | | Phoenix M Left |
| 31 | | Pokerino , X |
| 23 | Game Outhole Tilt |
| 24 | ------------------------------------ |
| 25 | Hot Tip A S |
| 26 | Lucky Seven M = |
| 27 | World Cup H J |
| 28 | Contact V , |
| 29 | Disco N Enter - = |
| 30 | Phoenix Left M |
| 31 | Pokerino X , |
| 32 | 32 | |
| 33 | 33 | |
| 34 | 34 | ToDo: |
| r32425 | r32426 | |
| 73 | 73 | DECLARE_WRITE8_MEMBER(switch_w); |
| 74 | 74 | DECLARE_READ_LINE_MEMBER(pia28_ca1_r); |
| 75 | 75 | DECLARE_READ_LINE_MEMBER(pia28_cb1_r); |
| 76 | | DECLARE_READ_LINE_MEMBER(pias_cb1_r); |
| 77 | 76 | DECLARE_WRITE_LINE_MEMBER(pia22_ca2_w) { }; //ST5 |
| 78 | 77 | DECLARE_WRITE_LINE_MEMBER(pia22_cb2_w) { }; //ST-solenoids enable |
| 79 | 78 | DECLARE_WRITE_LINE_MEMBER(pia24_ca2_w) { }; //ST2 |
| r32425 | r32426 | |
| 92 | 91 | UINT8 m_sound_data; |
| 93 | 92 | UINT8 m_strobe; |
| 94 | 93 | UINT8 m_kbdrow; |
| 95 | | bool m_cb1; |
| 96 | 94 | bool m_data_ok; |
| 97 | 95 | bool m_chimes; |
| 98 | 96 | required_device<cpu_device> m_maincpu; |
| r32425 | r32426 | |
| 307 | 305 | } |
| 308 | 306 | else |
| 309 | 307 | { |
| 310 | | m_sound_data = ioport("SND")->read(); // 0xff or 0xbf |
| 308 | UINT8 sound_data = ioport("SND")->read(); // 0xff or 0xbf |
| 311 | 309 | if (BIT(data, 0)) |
| 312 | | m_sound_data &= 0xfe; |
| 310 | sound_data &= 0xfe; |
| 313 | 311 | |
| 314 | 312 | if (BIT(data, 1)) |
| 315 | | m_sound_data &= 0xfd; |
| 313 | sound_data &= 0xfd; |
| 316 | 314 | |
| 317 | 315 | if (BIT(data, 2)) |
| 318 | | m_sound_data &= 0xfb; |
| 316 | sound_data &= 0xfb; |
| 319 | 317 | |
| 320 | 318 | if (BIT(data, 3)) |
| 321 | | m_sound_data &= 0xf7; |
| 319 | sound_data &= 0xf7; |
| 322 | 320 | |
| 323 | 321 | if (BIT(data, 4)) |
| 324 | | m_sound_data &= 0x7f; |
| 322 | sound_data &= 0xef; |
| 325 | 323 | |
| 324 | bool cb1 = ((sound_data & 0xbf) != 0xbf); |
| 326 | 325 | |
| 327 | | m_cb1 = ((m_sound_data & 0x9f) != 0x9f); |
| 326 | if (cb1) |
| 327 | m_sound_data = sound_data; |
| 328 | 328 | |
| 329 | | m_pias->cb1_w(m_cb1); |
| 329 | m_pias->cb1_w(cb1); |
| 330 | 330 | } |
| 331 | 331 | |
| 332 | 332 | if (BIT(data, 5)) |
| r32425 | r32426 | |
| 375 | 375 | { |
| 376 | 376 | m_strobe = data & 15; |
| 377 | 377 | m_data_ok = true; |
| 378 | | output_set_value("led0", BIT(data, 4)); |
| 379 | | output_set_value("led1", BIT(data, 5)); |
| 378 | output_set_value("led0", !BIT(data, 4)); |
| 379 | output_set_value("led1", !BIT(data, 5)); |
| 380 | 380 | } |
| 381 | 381 | |
| 382 | 382 | WRITE8_MEMBER( s3_state::dig1_w ) |
| r32425 | r32426 | |
| 402 | 402 | m_kbdrow = data; |
| 403 | 403 | } |
| 404 | 404 | |
| 405 | | READ_LINE_MEMBER( s3_state::pias_cb1_r ) |
| 406 | | { |
| 407 | | return m_cb1; |
| 408 | | } |
| 409 | | |
| 410 | 405 | READ8_MEMBER( s3_state::dac_r ) |
| 411 | 406 | { |
| 412 | 407 | return m_sound_data; |
| r32425 | r32426 | |
| 417 | 412 | m_dac->write_unsigned8(data); |
| 418 | 413 | } |
| 419 | 414 | |
| 420 | | TIMER_DEVICE_CALLBACK_MEMBER( s3_state::irq) |
| 415 | TIMER_DEVICE_CALLBACK_MEMBER( s3_state::irq ) |
| 421 | 416 | { |
| 422 | 417 | if (m_t_c > 0x70) |
| 423 | 418 | m_maincpu->set_input_line(M6800_IRQ_LINE, ASSERT_LINE); |
| r32425 | r32426 | |
| 488 | 483 | |
| 489 | 484 | MCFG_DEVICE_ADD("pias", PIA6821, 0) |
| 490 | 485 | MCFG_PIA_READPB_HANDLER(READ8(s3_state, dac_r)) |
| 491 | | MCFG_PIA_READCB1_HANDLER(READLINE(s3_state, pias_cb1_r)) |
| 492 | 486 | MCFG_PIA_WRITEPA_HANDLER(WRITE8(s3_state, dac_w)) |
| 493 | 487 | MCFG_PIA_IRQA_HANDLER(DEVWRITELINE("audiocpu", m6800_cpu_device, irq_line)) |
| 494 | 488 | MCFG_PIA_IRQB_HANDLER(DEVWRITELINE("audiocpu", m6800_cpu_device, irq_line)) |