trunk/src/mame/drivers/allied.c
| r31639 | r31640 | |
| 34 | 34 | |
| 35 | 35 | |
| 36 | 36 | ToDo: |
| 37 | | - Insert coins doesn't register (if you use debug to enter the number of |
| 38 | | credits into $1A, then the game is playable). |
| 37 | - Coin slot 3 not working. Pressing it a lot kills all the coin slots. |
| 39 | 38 | |
| 40 | 39 | |
| 41 | 40 | ***************************************************************************/ |
| r31639 | r31640 | |
| 58 | 57 | , m_ic5(*this, "ic5") |
| 59 | 58 | , m_ic6(*this, "ic6") |
| 60 | 59 | , m_ic7(*this, "ic7") |
| 60 | , m_ic8(*this, "ic8") |
| 61 | 61 | { } |
| 62 | 62 | |
| 63 | 63 | DECLARE_WRITE8_MEMBER(ic1_b_w); |
| r31639 | r31640 | |
| 78 | 78 | DECLARE_READ8_MEMBER(ic6_a_r); |
| 79 | 79 | DECLARE_READ8_MEMBER(ic6_b_r); |
| 80 | 80 | DECLARE_READ8_MEMBER(ic7_a_r); |
| 81 | DECLARE_WRITE_LINE_MEMBER(ic8_cb2_w); |
| 82 | TIMER_DEVICE_CALLBACK_MEMBER(timer_a); |
| 81 | 83 | private: |
| 82 | 84 | UINT32 m_player_score[6]; |
| 83 | 85 | UINT8 m_display; |
| r31639 | r31640 | |
| 88 | 90 | UINT8 m_ic6a1; |
| 89 | 91 | UINT8 m_ic6a2; |
| 90 | 92 | UINT8 m_ic6b4; |
| 93 | UINT8 m_ic6b7; |
| 91 | 94 | virtual void machine_reset(); |
| 92 | 95 | required_device<m6504_device> m_maincpu; |
| 93 | 96 | required_device<pia6821_device> m_ic1; |
| r31639 | r31640 | |
| 96 | 99 | required_device<mos6530_device> m_ic5; |
| 97 | 100 | required_device<mos6530_device> m_ic6; |
| 98 | 101 | required_device<pia6821_device> m_ic7; |
| 102 | required_device<pia6821_device> m_ic8; |
| 99 | 103 | }; |
| 100 | 104 | |
| 101 | 105 | |
| r31639 | r31640 | |
| 464 | 468 | // 1 adjustment, test switch |
| 465 | 469 | READ8_MEMBER( allied_state::ic6_b_r ) |
| 466 | 470 | { |
| 467 | | return m_ic6b4 | ioport("TEST")->read() | 0xcf; |
| 471 | return m_ic6b4 | ioport("TEST")->read() | m_ic6b7 | 0x4f; |
| 468 | 472 | } |
| 469 | 473 | |
| 470 | 474 | WRITE8_MEMBER( allied_state::ic6_b_w ) |
| r31639 | r31640 | |
| 561 | 565 | output_set_value("led6", !BIT(data, 5)); |
| 562 | 566 | } |
| 563 | 567 | |
| 568 | // this line not emulated in PinMAME, maybe it isn't needed |
| 569 | WRITE_LINE_MEMBER( allied_state::ic8_cb2_w ) |
| 570 | { |
| 571 | m_ic6b7 = state ? 128 : 0; // i think it's pb7, hard to tell |
| 572 | m_ic7->cb1_w(state); |
| 573 | } |
| 574 | |
| 575 | TIMER_DEVICE_CALLBACK_MEMBER( allied_state::timer_a ) |
| 576 | { |
| 577 | UINT8 data = ioport("X6A")->read(); |
| 578 | |
| 579 | m_ic8->ca1_w(BIT(data, 4)); |
| 580 | m_ic8->cb1_w(BIT(data, 5)); |
| 581 | m_ic8->ca2_w(BIT(data, 6)); |
| 582 | } |
| 583 | |
| 564 | 584 | void allied_state::machine_reset() |
| 565 | 585 | { |
| 566 | 586 | output_set_value("led0", 1); //1=off (diagnostic led still to be hooked up) |
| r31639 | r31640 | |
| 624 | 644 | //MCFG_PIA_READPB_HANDLER(READ8(allied_state, ic8_b_r)) |
| 625 | 645 | MCFG_PIA_WRITEPB_HANDLER(WRITE8(allied_state, ic8_b_w)) |
| 626 | 646 | //MCFG_PIA_CA2_HANDLER(WRITELINE(allied_state, ic8_ca2_w)) |
| 627 | | //MCFG_PIA_CB2_HANDLER(WRITELINE(allied_state, ic8_cb2_w)) |
| 647 | MCFG_PIA_CB2_HANDLER(WRITELINE(allied_state, ic8_cb2_w)) |
| 628 | 648 | MCFG_PIA_IRQA_HANDLER(DEVWRITELINE("maincpu", m6504_device, irq_line)) |
| 629 | 649 | MCFG_PIA_IRQB_HANDLER(DEVWRITELINE("maincpu", m6504_device, irq_line)) |
| 630 | 650 | |
| r31639 | r31640 | |
| 642 | 662 | //MCFG_MOS6530_OUT_PA_CB(WRITE8(allied_state, ic6_a_w)) |
| 643 | 663 | MCFG_MOS6530_IN_PB_CB(READ8(allied_state, ic6_b_r)) |
| 644 | 664 | MCFG_MOS6530_OUT_PB_CB(WRITE8(allied_state, ic6_b_w)) |
| 665 | |
| 666 | MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_a", allied_state, timer_a, attotime::from_hz(50)) |
| 645 | 667 | MACHINE_CONFIG_END |
| 646 | 668 | |
| 647 | 669 | |
| r31639 | r31640 | |
| 666 | 688 | |
| 667 | 689 | |
| 668 | 690 | GAME(1977, allied, 0, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Allied System", GAME_IS_BIOS_ROOT) |
| 669 | | GAME(1977, suprpick, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Super Picker", GAME_IS_SKELETON_MECHANICAL) |
| 670 | | GAME(1977, royclark, allied, allied, allied, driver_device, 0, ROT0, "Fascination Int.", "Roy Clark - The Entertainer", GAME_IS_SKELETON_MECHANICAL) |
| 671 | | GAME(1977, thndbolt, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Thunderbolt", GAME_IS_SKELETON_MECHANICAL) |
| 672 | | GAME(1978, hoedown, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Hoe Down", GAME_IS_SKELETON_MECHANICAL) |
| 673 | | GAME(1978, takefive, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Take Five", GAME_IS_SKELETON_MECHANICAL) |
| 674 | | GAME(1978, heartspd, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Hearts & Spades", GAME_IS_SKELETON_MECHANICAL) |
| 675 | | GAME(1978, foathens, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Flame of Athens", GAME_IS_SKELETON_MECHANICAL) |
| 676 | | GAME(1979, disco79, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Disco '79", GAME_IS_SKELETON_MECHANICAL) |
| 677 | | GAME(1979, erosone, allied, allied, allied, driver_device, 0, ROT0, "Fascination Int.", "Eros One", GAME_IS_SKELETON_MECHANICAL) |
| 678 | | GAME(1979, circa33, allied, allied, allied, driver_device, 0, ROT0, "Fascination Int.", "Circa 1933", GAME_IS_SKELETON_MECHANICAL) |
| 679 | | GAME(1979, starshot, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Star Shooter", GAME_IS_SKELETON_MECHANICAL) |
| 691 | GAME(1977, suprpick, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Super Picker", GAME_MECHANICAL) |
| 692 | GAME(1977, royclark, allied, allied, allied, driver_device, 0, ROT0, "Fascination Int.", "Roy Clark - The Entertainer", GAME_MECHANICAL) |
| 693 | GAME(1977, thndbolt, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Thunderbolt", GAME_MECHANICAL) |
| 694 | GAME(1978, hoedown, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Hoe Down", GAME_MECHANICAL) |
| 695 | GAME(1978, takefive, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Take Five", GAME_MECHANICAL) |
| 696 | GAME(1978, heartspd, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Hearts & Spades", GAME_MECHANICAL) |
| 697 | GAME(1978, foathens, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Flame of Athens", GAME_MECHANICAL) |
| 698 | GAME(1979, disco79, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Disco '79", GAME_MECHANICAL) |
| 699 | GAME(1979, erosone, allied, allied, allied, driver_device, 0, ROT0, "Fascination Int.", "Eros One", GAME_MECHANICAL) |
| 700 | GAME(1979, circa33, allied, allied, allied, driver_device, 0, ROT0, "Fascination Int.", "Circa 1933", GAME_MECHANICAL) |
| 701 | GAME(1979, starshot, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Star Shooter", GAME_MECHANICAL) |