trunk/src/mame/drivers/s11.c
| r18857 | r18858 | |
| 7 | 7 | |
| 8 | 8 | |
| 9 | 9 | ToDo: |
| 10 | - Determine what drives the background sound (atm it's a guess) |
| 11 | - Can coin up but not start |
| 10 | 12 | |
| 11 | 13 | *****************************************************************************************/ |
| 12 | 14 | |
| r18857 | r18858 | |
| 71 | 73 | DECLARE_WRITE_LINE_MEMBER(pia24_cb2_w) { }; // dummy to stop error log filling up |
| 72 | 74 | DECLARE_WRITE_LINE_MEMBER(pia28_ca2_w) { }; // comma3&4 |
| 73 | 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 |
| 74 | 77 | DECLARE_WRITE_LINE_MEMBER(ym2151_irq_w); |
| 75 | 78 | TIMER_DEVICE_CALLBACK_MEMBER(irq); |
| 76 | 79 | DECLARE_INPUT_CHANGED_MEMBER(main_nmi); |
| r18857 | r18858 | |
| 99 | 102 | UINT8 m_sound_data; |
| 100 | 103 | UINT8 m_strobe; |
| 101 | 104 | UINT8 m_kbdrow; |
| 105 | UINT32 m_segment1; |
| 106 | UINT32 m_segment2; |
| 102 | 107 | bool m_ca1; |
| 103 | | bool m_data_ok; |
| 104 | 108 | }; |
| 105 | 109 | |
| 106 | 110 | static ADDRESS_MAP_START( s11_main_map, AS_PROGRAM, 8, s11_state ) |
| r18857 | r18858 | |
| 243 | 247 | // sound ns |
| 244 | 248 | m_ca1 = state; |
| 245 | 249 | m_pias->ca1_w(m_ca1); |
| 250 | m_pia40->cb2_w(m_ca1); |
| 246 | 251 | } |
| 247 | 252 | |
| 248 | 253 | static const pia6821_interface pia21_intf = |
| r18857 | r18858 | |
| 296 | 301 | { |
| 297 | 302 | static const UINT8 patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0x58, 0x4c, 0x62, 0x69, 0x78, 0 }; // 7447 |
| 298 | 303 | data &= 0x7f; |
| 299 | | m_strobe = data & 15;printf("C=%X ",m_strobe); |
| 300 | | m_data_ok = true; |
| 304 | m_strobe = data & 15; |
| 301 | 305 | output_set_digit_value(60, patterns[data>>4]); // diag digit |
| 306 | m_segment1 = 0; |
| 307 | m_segment2 = 0; |
| 302 | 308 | } |
| 303 | 309 | |
| 304 | 310 | WRITE8_MEMBER( s11_state::dig1_w ) |
| 305 | 311 | { |
| 306 | | static const UINT8 patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0, 0, 0, 0, 0, 0 }; // MC14558 |
| 307 | | if (m_data_ok) |
| 312 | m_segment2 |= data; |
| 313 | m_segment2 |= 0x20000; |
| 314 | if ((m_segment2 & 0x70000) == 0x30000) |
| 308 | 315 | { |
| 309 | | output_set_digit_value(m_strobe+16, patterns[data&15]); |
| 310 | | output_set_digit_value(m_strobe, patterns[data>>4]); |
| 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; |
| 311 | 318 | } |
| 312 | | m_data_ok = false; |
| 313 | 319 | } |
| 314 | 320 | |
| 315 | 321 | static const pia6821_interface pia28_intf = |
| r18857 | r18858 | |
| 329 | 335 | }; |
| 330 | 336 | |
| 331 | 337 | WRITE8_MEMBER( s11_state::pia2c_pa_w ) |
| 332 | | {printf("0=%X ",data); |
| 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 | } |
| 333 | 346 | } |
| 334 | 347 | |
| 335 | 348 | WRITE8_MEMBER( s11_state::pia2c_pb_w ) |
| 336 | | {printf("1=%X ",data); |
| 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 | } |
| 337 | 357 | } |
| 338 | 358 | |
| 339 | 359 | static const pia6821_interface pia2c_intf = |
| r18857 | r18858 | |
| 375 | 395 | DEVCB_NULL, /* port A out */ |
| 376 | 396 | DEVCB_DRIVER_MEMBER(s11_state, switch_w), /* port B out */ |
| 377 | 397 | DEVCB_NULL, /* line CA2 out */ |
| 378 | | DEVCB_NULL, /* line CB2 out */ |
| 398 | DEVCB_DRIVER_LINE_MEMBER(s11_state, pia30_cb2_w), /* line CB2 out */ |
| 379 | 399 | DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE), /* IRQA */ |
| 380 | 400 | DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE) /* IRQB */ |
| 381 | 401 | }; |
| 382 | 402 | |
| 383 | 403 | WRITE8_MEMBER( s11_state::pia34_pa_w ) |
| 384 | | {printf("2=%X ",data); |
| 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 | } |
| 385 | 412 | } |
| 386 | 413 | |
| 387 | 414 | WRITE8_MEMBER( s11_state::pia34_pb_w ) |
| 388 | | {printf("3=%X ",data); |
| 415 | { |
| 389 | 416 | } |
| 390 | 417 | |
| 391 | 418 | static const pia6821_interface pia34_intf = |
| r18857 | r18858 | |
| 465 | 492 | |
| 466 | 493 | static const pia6821_interface pia40_intf = |
| 467 | 494 | { |
| 468 | | DEVCB_DRIVER_MEMBER(s11_state, dac_r), /* port A in */ |
| 469 | | DEVCB_NULL, /* port B in */ |
| 495 | DEVCB_NULL, /* port A in */ |
| 496 | DEVCB_DRIVER_MEMBER(s11_state, dac_r), /* port B in */ |
| 470 | 497 | DEVCB_DRIVER_LINE_MEMBER(s11_state, pias_ca1_r), /* line CA1 in */ |
| 471 | 498 | DEVCB_NULL, /* line CB1 in */ |
| 472 | 499 | DEVCB_LINE_VCC, /* line CA2 in */ |
| r18857 | r18858 | |
| 519 | 546 | MCFG_PIA6821_ADD("pia2c", pia2c_intf) |
| 520 | 547 | MCFG_PIA6821_ADD("pia30", pia30_intf) |
| 521 | 548 | MCFG_PIA6821_ADD("pia34", pia34_intf) |
| 522 | | MCFG_NVRAM_ADD_0FILL("nvram") |
| 549 | MCFG_NVRAM_ADD_1FILL("nvram") |
| 523 | 550 | |
| 524 | 551 | /* Add the soundcard */ |
| 525 | 552 | MCFG_CPU_ADD("audiocpu", M6808, 3580000) |
| r18857 | r18858 | |
| 559 | 586 | ROM_LOAD("lzrd_u26.l4", 0x4000, 0x2000, CRC(5fe50db6) SHA1(7e2adfefce5c33ad605606574dbdfb2642aa0e85)) |
| 560 | 587 | ROM_RELOAD( 0x6000, 0x2000) |
| 561 | 588 | ROM_LOAD("lzrd_u27.l4", 0x8000, 0x8000, CRC(6462ca55) SHA1(0ebfa998d3cefc213ada9ed815d44977120e5d6d)) |
| 589 | ROM_FILL(0x6035, 1, 0) // default to English |
| 562 | 590 | |
| 563 | 591 | // according to the manual these should be 32K roms just like the other games here |
| 564 | 592 | ROM_REGION(0x20000, "audiocpu", ROMREGION_ERASEFF) |
| r18857 | r18858 | |
| 670 | 698 | ROM_LOAD("road_u4.l1", 0x8000, 0x8000, CRC(4395b48f) SHA1(2325ce6ba7f6f92f884c302e6f053c31229dc774)) |
| 671 | 699 | ROM_END |
| 672 | 700 | |
| 673 | | |
| 674 | 701 | /************************ From here, not pinball machines **************************************/ |
| 675 | 702 | |
| 676 | 703 | /*-------------------- |
| r18857 | r18858 | |
| 745 | 772 | ROM_REGION(0x10000, "bgcpu", ROMREGION_ERASEFF) |
| 746 | 773 | ROM_END |
| 747 | 774 | |
| 748 | | GAME( 1986, grand_l4, 0, s11, s11, s11_state, s11, ROT0, "Williams", "Grand Lizard (L-4)", GAME_IS_SKELETON_MECHANICAL) |
| 749 | | GAME( 1986, hs_l4, 0, s11, s11, s11_state, s11, ROT0, "Williams", "High Speed (L-4)", GAME_IS_SKELETON_MECHANICAL) |
| 750 | | GAME( 1986, hs_l3, hs_l4, s11, s11, s11_state, s11, ROT0, "Williams", "High Speed (L-3)", GAME_IS_SKELETON_MECHANICAL) |
| 751 | | GAME( 1986, rdkng_l5, rdkng_l4, s11, s11, s11_state, s11, ROT0, "Williams", "Road Kings (L-5)", GAME_IS_SKELETON_MECHANICAL) |
| 752 | | GAME( 1986, rdkng_l4, 0, s11, s11, s11_state, s11, ROT0, "Williams", "Road Kings (L-4)", GAME_IS_SKELETON_MECHANICAL) |
| 753 | | GAME( 1986, rdkng_l1, rdkng_l4, s11, s11, s11_state, s11, ROT0, "Williams", "Road Kings (L-1)", GAME_IS_SKELETON_MECHANICAL) |
| 754 | | GAME( 1986, rdkng_l2, rdkng_l4, s11, s11, s11_state, s11, ROT0, "Williams", "Road Kings (L-2)", GAME_IS_SKELETON_MECHANICAL) |
| 755 | | GAME( 1986, rdkng_l3, rdkng_l4, s11, s11, s11_state, s11, ROT0, "Williams", "Road Kings (L-3)", GAME_IS_SKELETON_MECHANICAL) |
| 756 | | GAME( 1986, tts_l2, 0, s11, s11, s11_state, s11, ROT0, "Williams", "Tic-Tac-Strike (Shuffle) (L-2)", GAME_IS_SKELETON_MECHANICAL) |
| 757 | | GAME( 1986, tts_l1, tts_l2, s11, s11, s11_state, s11, ROT0, "Williams", "Tic-Tac-Strike (Shuffle) (L-1)", GAME_IS_SKELETON_MECHANICAL) |
| 758 | | GAME( 1987, gmine_l2, 0, s11, s11, s11_state, s11, ROT0, "Williams", "Gold Mine (Shuffle) (L-2)", GAME_IS_SKELETON_MECHANICAL) |
| 759 | | GAME( 1987, tdawg_l1, 0, s11, s11, s11_state, s11, ROT0, "Williams", "Top Dawg (Shuffle) (L-1)", GAME_IS_SKELETON_MECHANICAL) |
| 760 | | GAME( 1987, shfin_l1, 0, s11, s11, s11_state, s11, ROT0, "Williams", "Shuffle Inn (Shuffle) (L-1)", GAME_IS_SKELETON_MECHANICAL) |
| 775 | GAME( 1986, grand_l4, 0, s11, s11, s11_state, s11, ROT0, "Williams", "Grand Lizard (L-4)", GAME_MECHANICAL | GAME_NOT_WORKING) |
| 776 | GAME( 1986, hs_l4, 0, s11, s11, s11_state, s11, ROT0, "Williams", "High Speed (L-4)", GAME_MECHANICAL | GAME_NOT_WORKING) |
| 777 | GAME( 1986, hs_l3, hs_l4, s11, s11, s11_state, s11, ROT0, "Williams", "High Speed (L-3)", GAME_MECHANICAL | GAME_NOT_WORKING) |
| 778 | GAME( 1986, rdkng_l5, rdkng_l4, s11, s11, s11_state, s11, ROT0, "Williams", "Road Kings (L-5)", GAME_MECHANICAL | GAME_NOT_WORKING) |
| 779 | GAME( 1986, rdkng_l4, 0, s11, s11, s11_state, s11, ROT0, "Williams", "Road Kings (L-4)", GAME_MECHANICAL | GAME_NOT_WORKING) |
| 780 | GAME( 1986, rdkng_l1, rdkng_l4, s11, s11, s11_state, s11, ROT0, "Williams", "Road Kings (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING) |
| 781 | GAME( 1986, rdkng_l2, rdkng_l4, s11, s11, s11_state, s11, ROT0, "Williams", "Road Kings (L-2)", GAME_MECHANICAL | GAME_NOT_WORKING) |
| 782 | GAME( 1986, rdkng_l3, rdkng_l4, s11, s11, s11_state, s11, ROT0, "Williams", "Road Kings (L-3)", GAME_MECHANICAL | GAME_NOT_WORKING) |
| 783 | GAME( 1986, tts_l2, 0, s11, s11, s11_state, s11, ROT0, "Williams", "Tic-Tac-Strike (Shuffle) (L-2)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND) |
| 784 | GAME( 1986, tts_l1, tts_l2, s11, s11, s11_state, s11, ROT0, "Williams", "Tic-Tac-Strike (Shuffle) (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND) |
| 785 | GAME( 1987, gmine_l2, 0, s11, s11, s11_state, s11, ROT0, "Williams", "Gold Mine (Shuffle) (L-2)", GAME_MECHANICAL | GAME_NOT_WORKING) |
| 786 | GAME( 1987, tdawg_l1, 0, s11, s11, s11_state, s11, ROT0, "Williams", "Top Dawg (Shuffle) (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING) |
| 787 | GAME( 1987, shfin_l1, 0, s11, s11, s11_state, s11, ROT0, "Williams", "Shuffle Inn (Shuffle) (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING) |