trunk/src/emu/bus/coco/coco_multi.c
| r243488 | r243489 | |
| 103 | 103 | |
| 104 | 104 | static MACHINE_CONFIG_FRAGMENT(coco_multi) |
| 105 | 105 | MCFG_COCO_CARTRIDGE_ADD(SLOT1_TAG, coco_cart_slot1_3, NULL) |
| 106 | | MCFG_COCO_CARTRIDGE_CART_CB(DEVWRITELINE(DEVICE_SELF_OWNER, coco_multipak_device, multi_cart_w)) |
| 107 | | MCFG_COCO_CARTRIDGE_NMI_CB(DEVWRITELINE(DEVICE_SELF_OWNER, coco_multipak_device, multi_nmi_w)) |
| 108 | | MCFG_COCO_CARTRIDGE_HALT_CB(DEVWRITELINE(DEVICE_SELF_OWNER, coco_multipak_device, multi_halt_w)) |
| 106 | MCFG_COCO_CARTRIDGE_CART_CB(DEVWRITELINE(DEVICE_SELF, coco_multipak_device, multi_cart_w)) |
| 107 | MCFG_COCO_CARTRIDGE_NMI_CB(DEVWRITELINE(DEVICE_SELF, coco_multipak_device, multi_nmi_w)) |
| 108 | MCFG_COCO_CARTRIDGE_HALT_CB(DEVWRITELINE(DEVICE_SELF, coco_multipak_device, multi_halt_w)) |
| 109 | 109 | MCFG_COCO_CARTRIDGE_ADD(SLOT2_TAG, coco_cart_slot1_3, NULL) |
| 110 | | MCFG_COCO_CARTRIDGE_CART_CB(DEVWRITELINE(DEVICE_SELF_OWNER, coco_multipak_device, multi_cart_w)) |
| 111 | | MCFG_COCO_CARTRIDGE_NMI_CB(DEVWRITELINE(DEVICE_SELF_OWNER, coco_multipak_device, multi_nmi_w)) |
| 112 | | MCFG_COCO_CARTRIDGE_HALT_CB(DEVWRITELINE(DEVICE_SELF_OWNER, coco_multipak_device, multi_halt_w)) |
| 110 | MCFG_COCO_CARTRIDGE_CART_CB(DEVWRITELINE(DEVICE_SELF, coco_multipak_device, multi_cart_w)) |
| 111 | MCFG_COCO_CARTRIDGE_NMI_CB(DEVWRITELINE(DEVICE_SELF, coco_multipak_device, multi_nmi_w)) |
| 112 | MCFG_COCO_CARTRIDGE_HALT_CB(DEVWRITELINE(DEVICE_SELF, coco_multipak_device, multi_halt_w)) |
| 113 | 113 | MCFG_COCO_CARTRIDGE_ADD(SLOT3_TAG, coco_cart_slot1_3, NULL) |
| 114 | | MCFG_COCO_CARTRIDGE_CART_CB(DEVWRITELINE(DEVICE_SELF_OWNER, coco_multipak_device, multi_cart_w)) |
| 115 | | MCFG_COCO_CARTRIDGE_NMI_CB(DEVWRITELINE(DEVICE_SELF_OWNER, coco_multipak_device, multi_nmi_w)) |
| 116 | | MCFG_COCO_CARTRIDGE_HALT_CB(DEVWRITELINE(DEVICE_SELF_OWNER, coco_multipak_device, multi_halt_w)) |
| 114 | MCFG_COCO_CARTRIDGE_CART_CB(DEVWRITELINE(DEVICE_SELF, coco_multipak_device, multi_cart_w)) |
| 115 | MCFG_COCO_CARTRIDGE_NMI_CB(DEVWRITELINE(DEVICE_SELF, coco_multipak_device, multi_nmi_w)) |
| 116 | MCFG_COCO_CARTRIDGE_HALT_CB(DEVWRITELINE(DEVICE_SELF, coco_multipak_device, multi_halt_w)) |
| 117 | 117 | MCFG_COCO_CARTRIDGE_ADD(SLOT4_TAG, coco_cart_slot4, "fdcv11") |
| 118 | | MCFG_COCO_CARTRIDGE_CART_CB(DEVWRITELINE(DEVICE_SELF_OWNER, coco_multipak_device, multi_cart_w)) |
| 119 | | MCFG_COCO_CARTRIDGE_NMI_CB(DEVWRITELINE(DEVICE_SELF_OWNER, coco_multipak_device, multi_nmi_w)) |
| 120 | | MCFG_COCO_CARTRIDGE_HALT_CB(DEVWRITELINE(DEVICE_SELF_OWNER, coco_multipak_device, multi_halt_w)) |
| 118 | MCFG_COCO_CARTRIDGE_CART_CB(DEVWRITELINE(DEVICE_SELF, coco_multipak_device, multi_cart_w)) |
| 119 | MCFG_COCO_CARTRIDGE_NMI_CB(DEVWRITELINE(DEVICE_SELF, coco_multipak_device, multi_nmi_w)) |
| 120 | MCFG_COCO_CARTRIDGE_HALT_CB(DEVWRITELINE(DEVICE_SELF, coco_multipak_device, multi_halt_w)) |
| 121 | 121 | MACHINE_CONFIG_END |
| 122 | 122 | |
| 123 | 123 | //************************************************************************** |
trunk/src/emu/cpu/ucom4/ucom4op.inc
| r243488 | r243489 | |
| 180 | 180 | void ucom4_cpu_device::op_adc() |
| 181 | 181 | { |
| 182 | 182 | // ADC: Add RAM and carry to ACC, store Carry F/F |
| 183 | | op_illegal(); |
| 183 | m_acc += ram_r() + m_carry_f; |
| 184 | m_carry_f = m_acc >> 4 & 1; |
| 185 | m_acc &= 0xf; |
| 184 | 186 | } |
| 185 | 187 | |
| 186 | 188 | void ucom4_cpu_device::op_ads() |
| 187 | 189 | { |
| 188 | 190 | // ADS: Add RAM and carry to ACC, store Carry F/F, skip next on carry |
| 189 | | op_illegal(); |
| 191 | op_adc(); |
| 192 | m_skip = (m_carry_f != 0); |
| 190 | 193 | } |
| 191 | 194 | |
| 192 | 195 | void ucom4_cpu_device::op_daa() |
| r243488 | r243489 | |
| 516 | 519 | if (!check_op_43()) return; |
| 517 | 520 | |
| 518 | 521 | // TAW: Transfer ACC to W |
| 519 | | op_illegal(); |
| 522 | m_icount--; |
| 523 | ucom43_reg_w(UCOM43_W, m_acc); |
| 520 | 524 | } |
| 521 | 525 | |
| 522 | 526 | void ucom4_cpu_device::op_taz() |
| r243488 | r243489 | |
| 524 | 528 | if (!check_op_43()) return; |
| 525 | 529 | |
| 526 | 530 | // TAZ: Transfer ACC to Z |
| 527 | | op_illegal(); |
| 531 | m_icount--; |
| 532 | ucom43_reg_w(UCOM43_Z, m_acc); |
| 528 | 533 | } |
| 529 | 534 | |
| 530 | 535 | void ucom4_cpu_device::op_thx() |
| r243488 | r243489 | |
| 532 | 537 | if (!check_op_43()) return; |
| 533 | 538 | |
| 534 | 539 | // THX: Transfer DPh to X |
| 535 | | op_illegal(); |
| 540 | m_icount--; |
| 541 | ucom43_reg_w(UCOM43_X, m_dph); |
| 536 | 542 | } |
| 537 | 543 | |
| 538 | 544 | void ucom4_cpu_device::op_tly() |
| r243488 | r243489 | |
| 540 | 546 | if (!check_op_43()) return; |
| 541 | 547 | |
| 542 | 548 | // TLY: Transfer DPl to Y |
| 543 | | op_illegal(); |
| 549 | m_icount--; |
| 550 | ucom43_reg_w(UCOM43_Y, m_dpl); |
| 544 | 551 | } |
| 545 | 552 | |
| 546 | 553 | |
| r243488 | r243489 | |
| 551 | 558 | if (!check_op_43()) return; |
| 552 | 559 | |
| 553 | 560 | // XAW: Exchange ACC with W |
| 554 | | op_illegal(); |
| 561 | m_icount--; |
| 562 | UINT8 old_acc = m_acc; |
| 563 | m_acc = ucom43_reg_r(UCOM43_W); |
| 564 | ucom43_reg_w(UCOM43_W, old_acc); |
| 555 | 565 | } |
| 556 | 566 | |
| 557 | 567 | void ucom4_cpu_device::op_xaz() |
| r243488 | r243489 | |
| 559 | 569 | if (!check_op_43()) return; |
| 560 | 570 | |
| 561 | 571 | // XAZ: Exchange ACC with Z |
| 562 | | op_illegal(); |
| 572 | m_icount--; |
| 573 | UINT8 old_acc = m_acc; |
| 574 | m_acc = ucom43_reg_r(UCOM43_Z); |
| 575 | ucom43_reg_w(UCOM43_Z, old_acc); |
| 563 | 576 | } |
| 564 | 577 | |
| 565 | 578 | void ucom4_cpu_device::op_xhr() |
| r243488 | r243489 | |
| 567 | 580 | if (!check_op_43()) return; |
| 568 | 581 | |
| 569 | 582 | // XHR: Exchange DPh with R |
| 570 | | op_illegal(); |
| 583 | m_icount--; |
| 584 | UINT8 old_dph = m_dph; |
| 585 | m_dph = ucom43_reg_r(UCOM43_R); |
| 586 | ucom43_reg_w(UCOM43_R, old_dph); |
| 571 | 587 | } |
| 572 | 588 | |
| 573 | 589 | void ucom4_cpu_device::op_xhx() |
| r243488 | r243489 | |
| 575 | 591 | if (!check_op_43()) return; |
| 576 | 592 | |
| 577 | 593 | // XHX: Exchange DPh with X |
| 578 | | op_illegal(); |
| 594 | m_icount--; |
| 595 | UINT8 old_dph = m_dph; |
| 596 | m_dph = ucom43_reg_r(UCOM43_X); |
| 597 | ucom43_reg_w(UCOM43_X, old_dph); |
| 579 | 598 | } |
| 580 | 599 | |
| 581 | 600 | void ucom4_cpu_device::op_xls() |
| r243488 | r243489 | |
| 583 | 602 | if (!check_op_43()) return; |
| 584 | 603 | |
| 585 | 604 | // XLS: Exchange DPl with S |
| 586 | | op_illegal(); |
| 605 | m_icount--; |
| 606 | UINT8 old_dpl = m_dpl; |
| 607 | m_dpl = ucom43_reg_r(UCOM43_S); |
| 608 | ucom43_reg_w(UCOM43_S, old_dpl); |
| 587 | 609 | } |
| 588 | 610 | |
| 589 | 611 | void ucom4_cpu_device::op_xly() |
| r243488 | r243489 | |
| 591 | 613 | if (!check_op_43()) return; |
| 592 | 614 | |
| 593 | 615 | // XLY: Exchange DPl with Y |
| 594 | | op_illegal(); |
| 616 | m_icount--; |
| 617 | UINT8 old_dpl = m_dpl; |
| 618 | m_dpl = ucom43_reg_r(UCOM43_Y); |
| 619 | ucom43_reg_w(UCOM43_Y, old_dpl); |
| 595 | 620 | } |
| 596 | 621 | |
| 597 | 622 | void ucom4_cpu_device::op_xc() |
| r243488 | r243489 | |
| 599 | 624 | if (!check_op_43()) return; |
| 600 | 625 | |
| 601 | 626 | // XC: Exchange Carry F/F with Carry Save F/F |
| 602 | | op_illegal(); |
| 627 | UINT8 c = m_carry_f; |
| 628 | m_carry_f = m_carry_s_f; |
| 629 | m_carry_s_f = c; |
| 603 | 630 | } |
| 604 | 631 | |
| 605 | 632 | |
| r243488 | r243489 | |
| 610 | 637 | if (!check_op_43()) return; |
| 611 | 638 | |
| 612 | 639 | // SFB B: Set a single bit of FLAG |
| 613 | | op_illegal(); |
| 640 | m_icount--; |
| 641 | ucom43_reg_w(UCOM43_F, ucom43_reg_r(UCOM43_F) | m_bitmask); |
| 614 | 642 | } |
| 615 | 643 | |
| 616 | 644 | void ucom4_cpu_device::op_rfb() |
| r243488 | r243489 | |
| 618 | 646 | if (!check_op_43()) return; |
| 619 | 647 | |
| 620 | 648 | // RFB B: Reset a single bit of FLAG |
| 621 | | op_illegal(); |
| 649 | m_icount--; |
| 650 | ucom43_reg_w(UCOM43_F, ucom43_reg_r(UCOM43_F) & ~m_bitmask); |
| 622 | 651 | } |
| 623 | 652 | |
| 624 | 653 | void ucom4_cpu_device::op_fbt() |
| r243488 | r243489 | |
| 626 | 655 | if (!check_op_43()) return; |
| 627 | 656 | |
| 628 | 657 | // FBT B: skip next on bit(FLAG) |
| 629 | | op_illegal(); |
| 658 | m_icount--; |
| 659 | m_skip = ((ucom43_reg_r(UCOM43_F) & m_bitmask) != 0); |
| 630 | 660 | } |
| 631 | 661 | |
| 632 | 662 | void ucom4_cpu_device::op_fbf() |
| r243488 | r243489 | |
| 634 | 664 | if (!check_op_43()) return; |
| 635 | 665 | |
| 636 | 666 | // FBF B: skip next on not bit(FLAG) |
| 637 | | op_illegal(); |
| 667 | m_icount--; |
| 668 | m_skip = ((ucom43_reg_r(UCOM43_F) & m_bitmask) == 0); |
| 638 | 669 | } |
| 639 | 670 | |
| 640 | 671 | |
| r243488 | r243489 | |
| 645 | 676 | if (!check_op_43()) return; |
| 646 | 677 | |
| 647 | 678 | // RAR: Rotate ACC Right through Carry F/F |
| 648 | | op_illegal(); |
| 679 | UINT8 c = m_acc & 1; |
| 680 | m_acc = m_acc >> 1 | m_carry_f << 3; |
| 681 | m_carry_f = c; |
| 649 | 682 | } |
| 650 | 683 | |
| 651 | 684 | |
| r243488 | r243489 | |
| 656 | 689 | if (!check_op_43()) return; |
| 657 | 690 | |
| 658 | 691 | // INM: Increment RAM, skip next on carry |
| 659 | | op_illegal(); |
| 692 | UINT8 val = (ram_r() + 1) & 0xf; |
| 693 | ram_w(val); |
| 694 | m_skip = (val == 0); |
| 660 | 695 | } |
| 661 | 696 | |
| 662 | 697 | void ucom4_cpu_device::op_dem() |
| r243488 | r243489 | |
| 664 | 699 | if (!check_op_43()) return; |
| 665 | 700 | |
| 666 | 701 | // DEM: Decrement RAM, skip next on carry |
| 667 | | op_illegal(); |
| 702 | UINT8 val = (ram_r() - 1) & 0xf; |
| 703 | ram_w(val); |
| 704 | m_skip = (val == 0xf); |
| 668 | 705 | } |
| 669 | 706 | |
| 670 | 707 | |
trunk/src/mame/drivers/cyclemb.c
| r243488 | r243489 | |
| 84 | 84 | : driver_device(mconfig, type, tag), |
| 85 | 85 | m_maincpu(*this, "maincpu"), |
| 86 | 86 | m_audiocpu(*this, "audiocpu"), |
| 87 | m_gfxdecode(*this, "gfxdecode"), |
| 88 | m_palette(*this, "palette"), |
| 87 | 89 | m_vram(*this, "vram"), |
| 88 | 90 | m_cram(*this, "cram"), |
| 89 | 91 | m_obj1_ram(*this, "obj1_ram"), |
| 90 | 92 | m_obj2_ram(*this, "obj2_ram"), |
| 91 | | m_obj3_ram(*this, "obj3_ram"), |
| 92 | | m_gfxdecode(*this, "gfxdecode"), |
| 93 | | m_palette(*this, "palette") |
| 93 | m_obj3_ram(*this, "obj3_ram") |
| 94 | 94 | { } |
| 95 | 95 | |
| 96 | 96 | required_device<cpu_device> m_maincpu; |
| 97 | 97 | required_device<cpu_device> m_audiocpu; |
| 98 | required_device<gfxdecode_device> m_gfxdecode; |
| 99 | required_device<palette_device> m_palette; |
| 100 | |
| 98 | 101 | required_shared_ptr<UINT8> m_vram; |
| 99 | 102 | required_shared_ptr<UINT8> m_cram; |
| 100 | 103 | required_shared_ptr<UINT8> m_obj1_ram; |
| 101 | 104 | required_shared_ptr<UINT8> m_obj2_ram; |
| 102 | 105 | required_shared_ptr<UINT8> m_obj3_ram; |
| 103 | | required_device<gfxdecode_device> m_gfxdecode; |
| 104 | | required_device<palette_device> m_palette; |
| 105 | 106 | |
| 106 | 107 | struct |
| 107 | 108 | { |
| r243488 | r243489 | |
| 120 | 121 | DECLARE_WRITE8_MEMBER(cyclemb_flip_w); |
| 121 | 122 | DECLARE_READ8_MEMBER(skydest_i8741_0_r); |
| 122 | 123 | DECLARE_WRITE8_MEMBER(skydest_i8741_0_w); |
| 124 | |
| 123 | 125 | DECLARE_DRIVER_INIT(skydest); |
| 124 | 126 | DECLARE_DRIVER_INIT(cyclemb); |
| 127 | virtual void machine_start(); |
| 125 | 128 | virtual void machine_reset(); |
| 126 | | virtual void video_start(); |
| 127 | 129 | DECLARE_PALETTE_INIT(cyclemb); |
| 130 | |
| 128 | 131 | UINT32 screen_update_cyclemb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 129 | 132 | UINT32 screen_update_skydest(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 130 | 133 | void cyclemb_draw_tilemap(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| r243488 | r243489 | |
| 164 | 167 | } |
| 165 | 168 | |
| 166 | 169 | |
| 167 | | void cyclemb_state::video_start() |
| 168 | | { |
| 169 | | } |
| 170 | | |
| 171 | 170 | void cyclemb_state::cyclemb_draw_tilemap(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 172 | 171 | { |
| 173 | 172 | gfx_element *gfx = m_gfxdecode->gfx(0); |
| r243488 | r243489 | |
| 593 | 592 | AM_RANGE(0x40, 0x40) AM_READ(soundlatch_byte_r) AM_WRITE(soundlatch2_byte_w) |
| 594 | 593 | ADDRESS_MAP_END |
| 595 | 594 | |
| 595 | |
| 596 | void cyclemb_state::machine_start() |
| 597 | { |
| 598 | for (int i = 0; i < 2; i++) |
| 599 | { |
| 600 | save_item(NAME(m_mcu[i].rxd), i); |
| 601 | save_item(NAME(m_mcu[i].txd), i); |
| 602 | save_item(NAME(m_mcu[i].rst), i); |
| 603 | save_item(NAME(m_mcu[i].state), i); |
| 604 | save_item(NAME(m_mcu[i].packet_type), i); |
| 605 | } |
| 606 | } |
| 607 | |
| 596 | 608 | void cyclemb_state::machine_reset() |
| 597 | 609 | { |
| 598 | 610 | skydest_i8741_reset(); |
| r243488 | r243489 | |
| 1030 | 1042 | m_dsw_pc_hack = 0x554; |
| 1031 | 1043 | } |
| 1032 | 1044 | |
| 1033 | | GAME( 1984, cyclemb, 0, cyclemb, cyclemb, cyclemb_state, cyclemb, ROT0, "Taito Corporation", "Cycle Maabou (Japan)", GAME_NO_COCKTAIL | GAME_NO_SOUND ) |
| 1034 | | GAME( 1985, skydest, 0, skydest, skydest, cyclemb_state, skydest, ROT0, "Taito Corporation", "Sky Destroyer (Japan)", GAME_NO_COCKTAIL | GAME_NO_SOUND ) |
| 1045 | GAME( 1984, cyclemb, 0, cyclemb, cyclemb, cyclemb_state, cyclemb, ROT0, "Taito Corporation", "Cycle Maabou (Japan)", GAME_NO_COCKTAIL | GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) |
| 1046 | GAME( 1985, skydest, 0, skydest, skydest, cyclemb_state, skydest, ROT0, "Taito Corporation", "Sky Destroyer (Japan)", GAME_NO_COCKTAIL | GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) |
trunk/src/mame/drivers/dlair2.c
| r243488 | r243489 | |
| 205 | 205 | ROM_START( dlair2 ) |
| 206 | 206 | ROM_REGION( 0x10000, "ipl", 0 ) |
| 207 | 207 | ROM_LOAD( "dl2_319.bin", 0x00000, 0x10000, CRC(e9453a1b) SHA1(eb1201abd0124f6edbabd49bec81af827369cb2c) ) |
| 208 | |
| 209 | DISK_REGION( "laserdisc" ) |
| 210 | DISK_IMAGE_READONLY( "C-910-00002-00", 0, NO_DUMP ) |
| 208 | 211 | ROM_END |
| 209 | 212 | |
| 210 | 213 | ROM_START( dlair2_319e ) |
| 211 | 214 | ROM_REGION( 0x10000, "ipl", 0 ) |
| 212 | 215 | ROM_LOAD( "dl2euro3.19.bin", 0x00000, 0x10000, CRC(cc23ad9f) SHA1(24add8f03749dcc27b1b166dc2e5d346534a0088) ) |
| 216 | |
| 217 | DISK_REGION( "laserdisc" ) |
| 218 | DISK_IMAGE_READONLY( "C-910-00002-00", 0, NO_DUMP ) |
| 213 | 219 | ROM_END |
| 214 | 220 | |
| 215 | 221 | ROM_START( dlair2_319s ) |
| 216 | 222 | ROM_REGION( 0x10000, "ipl", 0 ) |
| 217 | 223 | ROM_LOAD( "dl2-span.bin", 0x00000, 0x10000, CRC(4b9a811d) SHA1(6fe580f541305422f89edbbf475f7c5f17153738) ) |
| 224 | |
| 225 | DISK_REGION( "laserdisc" ) |
| 226 | DISK_IMAGE_READONLY( "dlair2_span", 0, NO_DUMP ) |
| 218 | 227 | ROM_END |
| 219 | 228 | |
| 220 | 229 | ROM_START( dlair2_318 ) |
| 221 | 230 | ROM_REGION( 0x10000, "ipl", 0 ) |
| 222 | 231 | ROM_LOAD( "dl2_318.bin", 0x00000, 0x10000, CRC(64706492) SHA1(99c92572c59ce1206847a5363d3791196fccd742) ) |
| 232 | |
| 233 | DISK_REGION( "laserdisc" ) |
| 234 | DISK_IMAGE_READONLY( "C-910-00002-00", 0, NO_DUMP ) |
| 223 | 235 | ROM_END |
| 224 | 236 | |
| 225 | 237 | ROM_START( dlair2_317e ) |
| 226 | 238 | ROM_REGION( 0x10000, "ipl", 0 ) |
| 227 | 239 | ROM_LOAD( "dl2euro3.17.bin", 0x00000, 0x10000, CRC(743f65a5) SHA1(45199983156c561b8e88c69bef454fd4042579bb) ) |
| 240 | |
| 241 | DISK_REGION( "laserdisc" ) |
| 242 | DISK_IMAGE_READONLY( "C-910-00002-00", 0, NO_DUMP ) |
| 228 | 243 | ROM_END |
| 229 | 244 | |
| 230 | 245 | ROM_START( dlair2_316e ) |
| 231 | 246 | ROM_REGION( 0x10000, "ipl", 0 ) |
| 232 | 247 | ROM_LOAD( "dl2euro.bin", 0x00000, 0x10000, CRC(d68f1b13) SHA1(cc9ee307b4d3caba049be6226163c810cf89ab44) ) |
| 248 | |
| 249 | DISK_REGION( "laserdisc" ) |
| 250 | DISK_IMAGE_READONLY( "C-910-00002-00", 0, NO_DUMP ) |
| 233 | 251 | ROM_END |
| 234 | 252 | |
| 235 | 253 | ROM_START( dlair2_315 ) |
| 236 | 254 | ROM_REGION( 0x10000, "ipl", 0 ) |
| 237 | 255 | ROM_LOAD( "dl2_315.rom", 0x00000, 0x10000, CRC(13ec0600) SHA1(9366dfac4508c4a723d688016b8cddb57aa6f5f1) ) |
| 256 | |
| 257 | DISK_REGION( "laserdisc" ) |
| 258 | DISK_IMAGE_READONLY( "C-910-00002-00", 0, NO_DUMP ) |
| 238 | 259 | ROM_END |
| 239 | 260 | |
| 240 | 261 | ROM_START( dlair2_315s ) |
| 241 | 262 | ROM_REGION( 0x10000, "ipl", 0 ) |
| 242 | 263 | ROM_LOAD( "315pi.bin", 0x00000, 0x10000, CRC(75d8861a) SHA1(56ab31a760f43f98fa40396ee7d7af7ce982d28d) ) |
| 264 | |
| 265 | DISK_REGION( "laserdisc" ) |
| 266 | DISK_IMAGE_READONLY( "dlair2_span", 0, NO_DUMP ) |
| 243 | 267 | ROM_END |
| 244 | 268 | |
| 245 | 269 | ROM_START( dlair2_314 ) |
| 246 | 270 | ROM_REGION( 0x10000, "ipl", 0 ) |
| 247 | 271 | ROM_LOAD( "dl2_314.bin", 0x00000, 0x10000, CRC(af92b612) SHA1(a0b986fa8a0f2206beedf1dcaed4d108599947ff) ) |
| 272 | |
| 273 | DISK_REGION( "laserdisc" ) |
| 274 | DISK_IMAGE_READONLY( "C-910-00002-00", 0, NO_DUMP ) |
| 248 | 275 | ROM_END |
| 249 | 276 | |
| 250 | 277 | ROM_START( dlair2_312 ) |
| 251 | 278 | ROM_REGION( 0x10000, "ipl", 0 ) |
| 252 | 279 | ROM_LOAD( "312.bin", 0x00000, 0x10000, CRC(c842be6b) SHA1(bf548ea3c6e98cd93f79408c3b9f0e1e22cc8bd1) ) |
| 280 | |
| 281 | DISK_REGION( "laserdisc" ) |
| 282 | DISK_IMAGE_READONLY( "C-910-00002-00", 0, NO_DUMP ) |
| 253 | 283 | ROM_END |
| 254 | 284 | |
| 255 | 285 | ROM_START( dlair2_300 ) |
| 256 | 286 | ROM_REGION( 0x10000, "ipl", 0 ) |
| 257 | 287 | ROM_LOAD( "dl2_300.bin", 0x00000, 0x10000, CRC(dec4f2e3) SHA1(fd96378c78df4aacd4b2190823ec5c1591199d44) ) |
| 288 | |
| 289 | DISK_REGION( "laserdisc" ) |
| 290 | DISK_IMAGE_READONLY( "C-910-00002-00", 0, NO_DUMP ) |
| 258 | 291 | ROM_END |
| 259 | 292 | |
| 260 | 293 | ROM_START( dlair2_211 ) |
| 261 | 294 | ROM_REGION( 0x10000, "ipl", 0 ) |
| 262 | 295 | ROM_LOAD( "dl2_211.bin", 0x00000, 0x10000, CRC(9f2660a3) SHA1(bf35356aab0138f86e6ea18c7bcf4f3f3c428d98) ) |
| 296 | |
| 297 | DISK_REGION( "laserdisc" ) |
| 298 | DISK_IMAGE_READONLY( "C-910-00001-00", 0, NO_DUMP ) |
| 263 | 299 | ROM_END |
| 264 | 300 | |
| 265 | 301 | ROM_START( dlair2_200 ) |
| r243488 | r243489 | |
| 269 | 305 | ROM_REGION( 0x2000, "bios", 0 ) /* BIOS for proto board */ |
| 270 | 306 | ROM_LOAD( "dl2_amoa_proto_bios_mod_56ee.bin",0x00000, 0x2000, CRC(1fc21576) SHA1(dc5443f6a8d80ec8148314244f05ac0290e380ea) ) |
| 271 | 307 | |
| 308 | DISK_REGION( "laserdisc" ) |
| 309 | DISK_IMAGE_READONLY( "dl2-sa91_proto", 0, NO_DUMP ) |
| 272 | 310 | ROM_END |
| 273 | 311 | |
| 274 | 312 | ROM_START( spacea91 ) |
| 275 | 313 | ROM_REGION( 0x10000, "ipl", 0 ) |
| 276 | 314 | ROM_LOAD( "ace.dat", 0x00000, 0x10000, CRC(de93a213) SHA1(1c95d5f45292f08149d749e1f7b5d9409d3a266e) ) |
| 315 | |
| 316 | DISK_REGION( "laserdisc" ) |
| 317 | DISK_IMAGE_READONLY( "spaceace91", 0, NO_DUMP ) |
| 277 | 318 | ROM_END |
| 278 | 319 | |
| 279 | 320 | ROM_START( spacea91_13e ) |
| 280 | 321 | ROM_REGION( 0x10000, "ipl", 0 ) |
| 281 | 322 | ROM_LOAD( "sa91euro1.3.bin", 0x00000, 0x10000, CRC(27dd0486) SHA1(8a57510b466381d9962e5397d89a7a3e73d757b0) ) |
| 323 | |
| 324 | DISK_REGION( "laserdisc" ) |
| 325 | DISK_IMAGE_READONLY( "spaceace91", 0, NO_DUMP ) |
| 282 | 326 | ROM_END |
| 283 | 327 | |
| 284 | 328 | |
trunk/src/mame/drivers/gladiatr.c
| r243488 | r243489 | |
| 9 | 9 | input port patches, panning fix, sprite banking, |
| 10 | 10 | Golden Castle Rom Set Support |
| 11 | 11 | - Phil Stroffolino: palette, sprites, misc video driver fixes |
| 12 | | - Tatsuyuki Satoh: YM2203 sound improvements, NEC 8741 simulation,ADPCM with MC6809 |
| 12 | - Tatsuyuki Satoh: YM2203 sound improvements, NEC 8741 simulation, ADPCM with MC6809 |
| 13 | 13 | - Tomasz Slanina preliminary Ping Pong King driver |
| 14 | 14 | - Nicola Salmoria clean up |
| 15 | 15 | |
| r243488 | r243489 | |
| 17 | 17 | - Camilty for precious hardware information and screenshots |
| 18 | 18 | - Jason Richmond for hardware information and misc. notes |
| 19 | 19 | - Joe Rounceville for schematics |
| 20 | | - and everyone else who'se offered support along the way! |
| 20 | - and everyone else who's offered support along the way! |
| 21 | 21 | |
| 22 | 22 | |
| 23 | 23 | *************************************************************************** |
| r243488 | r243489 | |
| 268 | 268 | } |
| 269 | 269 | |
| 270 | 270 | /*Sound Functions*/ |
| 271 | | WRITE8_MEMBER(gladiatr_state::glad_adpcm_w) |
| 271 | WRITE8_MEMBER(gladiatr_state::gladiator_adpcm_w) |
| 272 | 272 | { |
| 273 | 273 | UINT8 *rom = memregion("audiocpu")->base() + 0x10000; |
| 274 | 274 | |
| r243488 | r243489 | |
| 280 | 280 | m_msm->vclk_w (BIT(data, 4)); /* bit4 */ |
| 281 | 281 | } |
| 282 | 282 | |
| 283 | | WRITE8_MEMBER(gladiatr_state::glad_cpu_sound_command_w) |
| 283 | WRITE8_MEMBER(gladiatr_state::gladiator_cpu_sound_command_w) |
| 284 | 284 | { |
| 285 | 285 | soundlatch_byte_w(space,0,data); |
| 286 | 286 | m_audiocpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); |
| 287 | 287 | } |
| 288 | 288 | |
| 289 | | READ8_MEMBER(gladiatr_state::glad_cpu_sound_command_r) |
| 289 | READ8_MEMBER(gladiatr_state::gladiator_cpu_sound_command_r) |
| 290 | 290 | { |
| 291 | 291 | m_audiocpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); |
| 292 | 292 | return soundlatch_byte_r(space,0); |
| r243488 | r243489 | |
| 299 | 299 | |
| 300 | 300 | |
| 301 | 301 | #if 1 |
| 302 | | /* !!!!! patch to IRQ timming for 2nd CPU !!!!! */ |
| 302 | /* !!!!! patch to IRQ timing for 2nd CPU !!!!! */ |
| 303 | 303 | WRITE8_MEMBER(gladiatr_state::gladiatr_irq_patch_w) |
| 304 | 304 | { |
| 305 | 305 | m_subcpu->set_input_line(0, HOLD_LINE); |
| r243488 | r243489 | |
| 312 | 312 | |
| 313 | 313 | |
| 314 | 314 | |
| 315 | | WRITE8_MEMBER(gladiatr_state::qx0_w) |
| 315 | WRITE8_MEMBER(gladiatr_state::ppking_qx0_w) |
| 316 | 316 | { |
| 317 | 317 | if(!offset) |
| 318 | 318 | { |
| r243488 | r243489 | |
| 321 | 321 | } |
| 322 | 322 | } |
| 323 | 323 | |
| 324 | | WRITE8_MEMBER(gladiatr_state::qx1_w) |
| 324 | WRITE8_MEMBER(gladiatr_state::ppking_qx1_w) |
| 325 | 325 | { |
| 326 | 326 | if(!offset) |
| 327 | 327 | { |
| r243488 | r243489 | |
| 330 | 330 | } |
| 331 | 331 | } |
| 332 | 332 | |
| 333 | | WRITE8_MEMBER(gladiatr_state::qx2_w){ } |
| 333 | WRITE8_MEMBER(gladiatr_state::ppking_qx2_w){ } |
| 334 | 334 | |
| 335 | | WRITE8_MEMBER(gladiatr_state::qx3_w){ } |
| 335 | WRITE8_MEMBER(gladiatr_state::ppking_qx3_w){ } |
| 336 | 336 | |
| 337 | | READ8_MEMBER(gladiatr_state::qx2_r){ return machine().rand(); } |
| 337 | READ8_MEMBER(gladiatr_state::ppking_qx2_r){ return machine().rand(); } |
| 338 | 338 | |
| 339 | | READ8_MEMBER(gladiatr_state::qx3_r){ return machine().rand()&0xf; } |
| 339 | READ8_MEMBER(gladiatr_state::ppking_qx3_r){ return machine().rand()&0xf; } |
| 340 | 340 | |
| 341 | | READ8_MEMBER(gladiatr_state::qx0_r) |
| 341 | READ8_MEMBER(gladiatr_state::ppking_qx0_r) |
| 342 | 342 | { |
| 343 | 343 | if(!offset) |
| 344 | 344 | return m_data1; |
| r243488 | r243489 | |
| 346 | 346 | return m_flag2; |
| 347 | 347 | } |
| 348 | 348 | |
| 349 | | READ8_MEMBER(gladiatr_state::qx1_r) |
| 349 | READ8_MEMBER(gladiatr_state::ppking_qx1_r) |
| 350 | 350 | { |
| 351 | 351 | if(!offset) |
| 352 | 352 | return m_data2; |
| r243488 | r243489 | |
| 364 | 364 | AM_RANGE(0x0000, 0xbfff) AM_ROM |
| 365 | 365 | AM_RANGE(0xc000, 0xcbff) AM_RAM AM_SHARE("spriteram") |
| 366 | 366 | AM_RANGE(0xcc00, 0xcfff) AM_WRITE(ppking_video_registers_w) |
| 367 | | AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(gladiatr_paletteram_w) AM_SHARE("paletteram") |
| 368 | | AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(gladiatr_videoram_w) AM_SHARE("videoram") |
| 369 | | AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(gladiatr_colorram_w) AM_SHARE("colorram") |
| 370 | | AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(gladiatr_textram_w) AM_SHARE("textram") |
| 367 | AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") |
| 368 | AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") |
| 369 | AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") |
| 370 | AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(textram_w) AM_SHARE("textram") |
| 371 | 371 | AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */ |
| 372 | 372 | ADDRESS_MAP_END |
| 373 | 373 | |
| r243488 | r243489 | |
| 379 | 379 | |
| 380 | 380 | static ADDRESS_MAP_START( ppking_cpu1_io, AS_IO, 8, gladiatr_state ) |
| 381 | 381 | // ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 382 | | AM_RANGE(0xc000, 0xc000) AM_WRITE(gladiatr_spritebuffer_w) |
| 382 | AM_RANGE(0xc000, 0xc000) AM_WRITE(spritebuffer_w) |
| 383 | 383 | AM_RANGE(0xc004, 0xc004) AM_NOP // WRITE(ppking_irq_patch_w) |
| 384 | | AM_RANGE(0xc09e, 0xc09f) AM_READ(qx0_r) AM_WRITE(qx0_w) |
| 384 | AM_RANGE(0xc09e, 0xc09f) AM_READ(ppking_qx0_r) AM_WRITE(ppking_qx0_w) |
| 385 | 385 | AM_RANGE(0xc0bf, 0xc0bf) AM_NOP |
| 386 | 386 | ADDRESS_MAP_END |
| 387 | 387 | |
| 388 | 388 | static ADDRESS_MAP_START( ppking_cpu2_io, AS_IO, 8, gladiatr_state ) |
| 389 | 389 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 390 | 390 | AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) |
| 391 | | AM_RANGE(0x20, 0x21) AM_READ(qx1_r) AM_WRITE(qx1_w) |
| 391 | AM_RANGE(0x20, 0x21) AM_READ(ppking_qx1_r) AM_WRITE(ppking_qx1_w) |
| 392 | 392 | AM_RANGE(0x40, 0x40) AM_READNOP |
| 393 | | AM_RANGE(0x60, 0x61) AM_READWRITE(qx2_r,qx2_w) |
| 394 | | AM_RANGE(0x80, 0x81) AM_READWRITE(qx3_r,qx3_w) |
| 393 | AM_RANGE(0x60, 0x61) AM_READWRITE(ppking_qx2_r,ppking_qx2_w) |
| 394 | AM_RANGE(0x80, 0x81) AM_READWRITE(ppking_qx3_r,ppking_qx3_w) |
| 395 | 395 | ADDRESS_MAP_END |
| 396 | 396 | |
| 397 | 397 | |
| r243488 | r243489 | |
| 402 | 402 | AM_RANGE(0x6000, 0xbfff) AM_ROMBANK("bank1") |
| 403 | 403 | AM_RANGE(0xc000, 0xcbff) AM_RAM AM_SHARE("spriteram") |
| 404 | 404 | AM_RANGE(0xcc00, 0xcfff) AM_WRITE(gladiatr_video_registers_w) |
| 405 | | AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(gladiatr_paletteram_w) AM_SHARE("paletteram") |
| 406 | | AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(gladiatr_videoram_w) AM_SHARE("videoram") |
| 407 | | AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(gladiatr_colorram_w) AM_SHARE("colorram") |
| 408 | | AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(gladiatr_textram_w) AM_SHARE("textram") |
| 405 | AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") |
| 406 | AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") |
| 407 | AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") |
| 408 | AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(textram_w) AM_SHARE("textram") |
| 409 | 409 | AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("nvram") /* battery backed RAM */ |
| 410 | 410 | ADDRESS_MAP_END |
| 411 | 411 | |
| r243488 | r243489 | |
| 415 | 415 | ADDRESS_MAP_END |
| 416 | 416 | |
| 417 | 417 | static ADDRESS_MAP_START( gladiatr_cpu3_map, AS_PROGRAM, 8, gladiatr_state ) |
| 418 | | AM_RANGE(0x1000, 0x1fff) AM_WRITE(glad_adpcm_w) |
| 419 | | AM_RANGE(0x2000, 0x2fff) AM_READ(glad_cpu_sound_command_r) |
| 418 | AM_RANGE(0x1000, 0x1fff) AM_WRITE(gladiator_adpcm_w) |
| 419 | AM_RANGE(0x2000, 0x2fff) AM_READ(gladiator_cpu_sound_command_r) |
| 420 | 420 | AM_RANGE(0x4000, 0xffff) AM_ROMBANK("bank2") |
| 421 | 421 | ADDRESS_MAP_END |
| 422 | 422 | |
| 423 | 423 | |
| 424 | 424 | static ADDRESS_MAP_START( gladiatr_cpu1_io, AS_IO, 8, gladiatr_state ) |
| 425 | 425 | // ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 426 | | AM_RANGE(0xc000, 0xc000) AM_WRITE(gladiatr_spritebuffer_w) |
| 426 | AM_RANGE(0xc000, 0xc000) AM_WRITE(spritebuffer_w) |
| 427 | 427 | AM_RANGE(0xc001, 0xc001) AM_WRITE(gladiatr_spritebank_w) |
| 428 | 428 | AM_RANGE(0xc002, 0xc002) AM_WRITE(gladiatr_bankswitch_w) |
| 429 | 429 | AM_RANGE(0xc004, 0xc004) AM_WRITE(gladiatr_irq_patch_w) /* !!! patch to 2nd CPU IRQ !!! */ |
| r243488 | r243489 | |
| 440 | 440 | AM_RANGE(0x60, 0x61) AM_DEVREADWRITE("taito8741", taito8741_4pack_device, read_2, write_2) |
| 441 | 441 | AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("taito8741", taito8741_4pack_device, read_3, write_3) |
| 442 | 442 | AM_RANGE(0xa0, 0xa7) AM_NOP // filters on sound output |
| 443 | | AM_RANGE(0xe0, 0xe0) AM_WRITE(glad_cpu_sound_command_w) |
| 443 | AM_RANGE(0xe0, 0xe0) AM_WRITE(gladiator_cpu_sound_command_w) |
| 444 | 444 | ADDRESS_MAP_END |
| 445 | 445 | |
| 446 | 446 | |
| r243488 | r243489 | |
| 611 | 611 | |
| 612 | 612 | |
| 613 | 613 | |
| 614 | | READ8_MEMBER(gladiatr_state::f1_r) |
| 614 | READ8_MEMBER(gladiatr_state::ppking_f1_r) |
| 615 | 615 | { |
| 616 | 616 | return machine().rand(); |
| 617 | 617 | } |
| r243488 | r243489 | |
| 655 | 655 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 656 | 656 | |
| 657 | 657 | MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/8) /* verified on pcb */ |
| 658 | | MCFG_AY8910_PORT_A_READ_CB(READ8(gladiatr_state, f1_r)) |
| 659 | | MCFG_AY8910_PORT_B_READ_CB(READ8(gladiatr_state, f1_r)) |
| 658 | MCFG_AY8910_PORT_A_READ_CB(READ8(gladiatr_state, ppking_f1_r)) |
| 659 | MCFG_AY8910_PORT_B_READ_CB(READ8(gladiatr_state, ppking_f1_r)) |
| 660 | 660 | MCFG_SOUND_ROUTE(0, "mono", 0.60) |
| 661 | 661 | MCFG_SOUND_ROUTE(1, "mono", 0.60) |
| 662 | 662 | MCFG_SOUND_ROUTE(2, "mono", 0.60) |
| r243488 | r243489 | |
| 1001 | 1001 | } |
| 1002 | 1002 | |
| 1003 | 1003 | |
| 1004 | | READ8_MEMBER(gladiatr_state::f6a3_r) |
| 1004 | READ8_MEMBER(gladiatr_state::ppking_f6a3_r) |
| 1005 | 1005 | { |
| 1006 | 1006 | if(space.device().safe_pcbase()==0x8e) |
| 1007 | 1007 | m_nvram[0x6a3]=1; |
| r243488 | r243489 | |
| 1031 | 1031 | rom[i+2*j*0x2000] = rom[i+j*0x2000]; |
| 1032 | 1032 | } |
| 1033 | 1033 | } |
| 1034 | | m_maincpu->space(AS_PROGRAM).install_read_handler(0xf6a3,0xf6a3,read8_delegate(FUNC(gladiatr_state::f6a3_r),this)); |
| 1034 | m_maincpu->space(AS_PROGRAM).install_read_handler(0xf6a3,0xf6a3,read8_delegate(FUNC(gladiatr_state::ppking_f6a3_r),this)); |
| 1035 | |
| 1036 | save_item(NAME(m_data1)); |
| 1037 | save_item(NAME(m_data2)); |
| 1035 | 1038 | } |
| 1036 | 1039 | |
| 1037 | 1040 | |
| 1038 | 1041 | |
| 1039 | | GAME( 1985, ppking, 0, ppking, 0, gladiatr_state, ppking, ROT90, "Taito America Corporation", "Ping-Pong King", GAME_NOT_WORKING) |
| 1040 | | GAME( 1986, gladiatr, 0, gladiatr, gladiatr, gladiatr_state, gladiatr, ROT0, "Allumer / Taito America Corporation", "Gladiator (US)", 0 ) |
| 1041 | | GAME( 1986, ogonsiro, gladiatr, gladiatr, gladiatr, gladiatr_state, gladiatr, ROT0, "Allumer / Taito Corporation", "Ougon no Shiro (Japan)", 0 ) |
| 1042 | | GAME( 1986, greatgur, gladiatr, gladiatr, gladiatr, gladiatr_state, gladiatr, ROT0, "Allumer / Taito Corporation", "Great Gurianos (Japan?)", 0 ) |
| 1043 | | GAME( 1986, gcastle, gladiatr, gladiatr, gladiatr, gladiatr_state, gladiatr, ROT0, "Allumer / Taito Corporation", "Golden Castle (prototype?)", 0 ) // incomplete dump |
| 1042 | GAME( 1985, ppking, 0, ppking, 0, gladiatr_state, ppking, ROT90, "Taito America Corporation", "Ping-Pong King", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) |
| 1043 | GAME( 1986, gladiatr, 0, gladiatr, gladiatr, gladiatr_state, gladiatr, ROT0, "Allumer / Taito America Corporation", "Gladiator (US)", GAME_SUPPORTS_SAVE ) |
| 1044 | GAME( 1986, ogonsiro, gladiatr, gladiatr, gladiatr, gladiatr_state, gladiatr, ROT0, "Allumer / Taito Corporation", "Ougon no Shiro (Japan)", GAME_SUPPORTS_SAVE ) |
| 1045 | GAME( 1986, greatgur, gladiatr, gladiatr, gladiatr, gladiatr_state, gladiatr, ROT0, "Allumer / Taito Corporation", "Great Gurianos (Japan?)", GAME_SUPPORTS_SAVE ) |
| 1046 | GAME( 1986, gcastle, gladiatr, gladiatr, gladiatr, gladiatr_state, gladiatr, ROT0, "Allumer / Taito Corporation", "Golden Castle (prototype?)", GAME_SUPPORTS_SAVE ) // incomplete dump |
trunk/src/mame/drivers/gsword.c
| r243488 | r243489 | |
| 4 | 4 | |
| 5 | 5 | TODO: |
| 6 | 6 | |
| 7 | | -joshi vollyball |
| 7 | -joshi volleyball |
| 8 | 8 | -The incomplete graphic |
| 9 | 9 | -The implementation of DAC sound ? |
| 10 | 10 | -MCU code DUMP and emulation |
| r243488 | r243489 | |
| 14 | 14 | Credits: |
| 15 | 15 | - Steve Ellenoff: Original emulation and Mame driver |
| 16 | 16 | - Jarek Parchanski: Dip Switch Fixes, Color improvements, ADPCM Interface code |
| 17 | | - Tatsuyuki Satoh: sound improvements, NEC 8741 emulation,adpcm improvements, |
| 17 | - Tatsuyuki Satoh: sound improvements, NEC 8741 emulation, adpcm improvements, |
| 18 | 18 | josvollyvall 8741 emulation |
| 19 | 19 | - Charlie Miltenberger: sprite colors improvements & precious hardware |
| 20 | 20 | information and screenshots |
| r243488 | r243489 | |
| 144 | 144 | #include "emu.h" |
| 145 | 145 | #include "cpu/z80/z80.h" |
| 146 | 146 | #include "machine/tait8741.h" |
| 147 | | #include "sound/ay8910.h" |
| 148 | 147 | #include "sound/msm5205.h" |
| 149 | 148 | #include "includes/gsword.h" |
| 150 | 149 | |
| 151 | 150 | |
| 152 | 151 | #if 0 |
| 153 | | int gsword_state::gsword_coins_in(void) |
| 152 | int gsword_state::coins_in(void) |
| 154 | 153 | { |
| 155 | 154 | /* emulate 8741 coin slot */ |
| 156 | 155 | if (ioport("IN4")->read() & 0xc0) |
| r243488 | r243489 | |
| 165 | 164 | |
| 166 | 165 | #include "cpu/z80/z80.h" |
| 167 | 166 | |
| 167 | |
| 168 | 168 | /* CPU 2 memory hack */ |
| 169 | 169 | /* (402E) timeout upcount must be under 0AH */ |
| 170 | 170 | /* (4004,4005) clear down counter , if (4004,4005)==0 then (402E)=0 */ |
| r243488 | r243489 | |
| 174 | 174 | |
| 175 | 175 | /*if(offset==1)osd_printf_debug("CNT %02X%02X\n",m_cpu2_ram[5],m_cpu2_ram[4]); */ |
| 176 | 176 | |
| 177 | | /* speedup timeout cound down */ |
| 177 | /* speedup timeout count down */ |
| 178 | 178 | if(m_protect_hack) |
| 179 | 179 | { |
| 180 | 180 | switch(offset) |
| r243488 | r243489 | |
| 219 | 219 | return 0; |
| 220 | 220 | } |
| 221 | 221 | |
| 222 | | MACHINE_RESET_MEMBER(gsword_state,gsword) |
| 222 | void gsword_state::machine_start() |
| 223 | 223 | { |
| 224 | save_item(NAME(m_fake8910_0)); |
| 225 | save_item(NAME(m_fake8910_1)); |
| 226 | save_item(NAME(m_nmi_enable)); |
| 227 | save_item(NAME(m_protect_hack)); |
| 228 | } |
| 229 | |
| 230 | void gsword_state::machine_reset() |
| 231 | { |
| 224 | 232 | m_coins = 0; |
| 225 | 233 | |
| 226 | 234 | /* snd CPU mask NMI during reset phase */ |
| r243488 | r243489 | |
| 228 | 236 | m_protect_hack = 0; |
| 229 | 237 | } |
| 230 | 238 | |
| 231 | | MACHINE_RESET_MEMBER(gsword_state,josvolly) |
| 232 | | { |
| 233 | | } |
| 234 | | |
| 235 | 239 | INTERRUPT_GEN_MEMBER(gsword_state::gsword_snd_interrupt) |
| 236 | 240 | { |
| 237 | 241 | if(m_nmi_enable) |
| 238 | 242 | device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); |
| 239 | 243 | } |
| 240 | 244 | |
| 241 | | WRITE8_MEMBER(gsword_state::gsword_nmi_set_w) |
| 245 | WRITE8_MEMBER(gsword_state::nmi_set_w) |
| 242 | 246 | { |
| 243 | 247 | /* osd_printf_debug("AY write %02X\n",data);*/ |
| 244 | 248 | |
| r243488 | r243489 | |
| 253 | 257 | switch(data) |
| 254 | 258 | { |
| 255 | 259 | case 0xff: |
| 256 | | m_nmi_enable = 0; /* NMI must be disable */ |
| 260 | m_nmi_enable = 0; /* NMI must be disabled */ |
| 257 | 261 | break; |
| 258 | 262 | case 0x02: |
| 259 | 263 | m_nmi_enable = 0; /* ANY */ |
| r243488 | r243489 | |
| 262 | 266 | m_nmi_enable = 1; |
| 263 | 267 | break; |
| 264 | 268 | case 0x0f: |
| 265 | | m_nmi_enable = 1; /* NMI must be enable */ |
| 269 | m_nmi_enable = 1; /* NMI must be enabled */ |
| 266 | 270 | break; |
| 267 | 271 | case 0xfe: |
| 268 | | m_nmi_enable = 1; /* NMI must be enable */ |
| 272 | m_nmi_enable = 1; /* NMI must be enabled */ |
| 269 | 273 | break; |
| 270 | 274 | } |
| 271 | 275 | /* bit1= nmi disable , for ram check */ |
| r243488 | r243489 | |
| 273 | 277 | #endif |
| 274 | 278 | } |
| 275 | 279 | |
| 276 | | WRITE8_MEMBER(gsword_state::gsword_AY8910_control_port_0_w) |
| 280 | WRITE8_MEMBER(gsword_state::ay8910_control_port_0_w) |
| 277 | 281 | { |
| 278 | | ay8910_device *ay8910 = machine().device<ay8910_device>("ay1"); |
| 279 | | ay8910->address_w(space,offset,data); |
| 282 | m_ay0->address_w(space,offset,data); |
| 280 | 283 | m_fake8910_0 = data; |
| 281 | 284 | } |
| 282 | | WRITE8_MEMBER(gsword_state::gsword_AY8910_control_port_1_w) |
| 285 | WRITE8_MEMBER(gsword_state::ay8910_control_port_1_w) |
| 283 | 286 | { |
| 284 | | ay8910_device *ay8910 = machine().device<ay8910_device>("ay2"); |
| 285 | | ay8910->address_w(space,offset,data); |
| 287 | m_ay1->address_w(space,offset,data); |
| 286 | 288 | m_fake8910_1 = data; |
| 287 | 289 | } |
| 288 | 290 | |
| 289 | | READ8_MEMBER(gsword_state::gsword_fake_0_r) |
| 291 | READ8_MEMBER(gsword_state::fake_0_r) |
| 290 | 292 | { |
| 291 | 293 | return m_fake8910_0+1; |
| 292 | 294 | } |
| 293 | | READ8_MEMBER(gsword_state::gsword_fake_1_r) |
| 295 | READ8_MEMBER(gsword_state::fake_1_r) |
| 294 | 296 | { |
| 295 | 297 | return m_fake8910_1+1; |
| 296 | 298 | } |
| r243488 | r243489 | |
| 308 | 310 | m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); |
| 309 | 311 | } |
| 310 | 312 | |
| 313 | |
| 311 | 314 | static ADDRESS_MAP_START( cpu1_map, AS_PROGRAM , 8, gsword_state ) |
| 312 | 315 | AM_RANGE(0x0000, 0x8fff) AM_ROM |
| 313 | 316 | AM_RANGE(0x9000, 0x9fff) AM_RAM |
| r243488 | r243489 | |
| 315 | 318 | AM_RANGE(0xa380, 0xa3ff) AM_RAM AM_SHARE("spritetile_ram") |
| 316 | 319 | AM_RANGE(0xa400, 0xa77f) AM_RAM |
| 317 | 320 | AM_RANGE(0xa780, 0xa7ff) AM_RAM AM_SHARE("spritexy_ram") |
| 318 | | AM_RANGE(0xa980, 0xa980) AM_WRITE(gsword_charbank_w) |
| 319 | | AM_RANGE(0xaa80, 0xaa80) AM_WRITE(gsword_videoctrl_w) /* flip screen, char palette bank */ |
| 320 | | AM_RANGE(0xab00, 0xab00) AM_WRITE(gsword_scroll_w) |
| 321 | AM_RANGE(0xa980, 0xa980) AM_WRITE(charbank_w) |
| 322 | AM_RANGE(0xaa80, 0xaa80) AM_WRITE(videoctrl_w) /* flip screen, char palette bank */ |
| 323 | AM_RANGE(0xab00, 0xab00) AM_WRITE(scroll_w) |
| 321 | 324 | AM_RANGE(0xab80, 0xabff) AM_WRITEONLY AM_SHARE("spriteattram") |
| 322 | | AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(gsword_videoram_w) AM_SHARE("videoram") |
| 325 | AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") |
| 323 | 326 | ADDRESS_MAP_END |
| 324 | 327 | |
| 325 | 328 | static ADDRESS_MAP_START( cpu1_io_map, AS_IO, 8, gsword_state ) |
| r243488 | r243489 | |
| 344 | 347 | AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("taito8741", taito8741_4pack_device, read_2, write_2) |
| 345 | 348 | AM_RANGE(0x20, 0x21) AM_DEVREADWRITE("taito8741", taito8741_4pack_device, read_3, write_3) |
| 346 | 349 | AM_RANGE(0x40, 0x41) AM_DEVREADWRITE("taito8741", taito8741_4pack_device, read_1, write_1) |
| 347 | | AM_RANGE(0x60, 0x60) AM_READWRITE(gsword_fake_0_r, gsword_AY8910_control_port_0_w) |
| 350 | AM_RANGE(0x60, 0x60) AM_READWRITE(fake_0_r, ay8910_control_port_0_w) |
| 348 | 351 | AM_RANGE(0x61, 0x61) AM_DEVREADWRITE("ay1", ay8910_device, data_r, data_w) |
| 349 | | AM_RANGE(0x80, 0x80) AM_READWRITE(gsword_fake_1_r, gsword_AY8910_control_port_1_w) |
| 352 | AM_RANGE(0x80, 0x80) AM_READWRITE(fake_1_r, ay8910_control_port_1_w) |
| 350 | 353 | AM_RANGE(0x81, 0x81) AM_DEVREADWRITE("ay2", ay8910_device, data_r, data_w) |
| 351 | 354 | // |
| 352 | 355 | AM_RANGE(0xe0, 0xe0) AM_READNOP /* ?? */ |
| r243488 | r243489 | |
| 378 | 381 | |
| 379 | 382 | static ADDRESS_MAP_START( josvolly_cpu2_io_map, AS_IO, 8, gsword_state ) |
| 380 | 383 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 381 | | AM_RANGE(0x00, 0x00) AM_READWRITE(gsword_fake_0_r, gsword_AY8910_control_port_0_w) |
| 384 | AM_RANGE(0x00, 0x00) AM_READWRITE(fake_0_r, ay8910_control_port_0_w) |
| 382 | 385 | AM_RANGE(0x01, 0x01) AM_DEVREADWRITE("ay1", ay8910_device, data_r, data_w) |
| 383 | | AM_RANGE(0x40, 0x40) AM_READWRITE(gsword_fake_1_r, gsword_AY8910_control_port_1_w) |
| 386 | AM_RANGE(0x40, 0x40) AM_READWRITE(fake_1_r, ay8910_control_port_1_w) |
| 384 | 387 | AM_RANGE(0x41, 0x41) AM_DEVREADWRITE("ay2", ay8910_device, data_r, data_w) |
| 385 | 388 | |
| 386 | 389 | AM_RANGE(0x81, 0x81) AM_DEVWRITE("josvolly_8741", josvolly8741_4pack_device, nmi_enable_w) |
| r243488 | r243489 | |
| 638 | 641 | |
| 639 | 642 | MCFG_QUANTUM_TIME(attotime::from_hz(12000)) /* Allow time for 2nd cpu to interleave*/ |
| 640 | 643 | |
| 641 | | MCFG_MACHINE_RESET_OVERRIDE(gsword_state,gsword) |
| 642 | | |
| 643 | 644 | MCFG_TAITO8741_ADD("taito8741") |
| 644 | 645 | MCFG_TAITO8741_MODES(TAITO8741_MASTER,TAITO8741_SLAVE,TAITO8741_PORT,TAITO8741_PORT) |
| 645 | 646 | MCFG_TAITO8741_CONNECT(1,0,0,0) |
| r243488 | r243489 | |
| 670 | 671 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 671 | 672 | |
| 672 | 673 | MCFG_SOUND_ADD("ay2", AY8910, 1500000) |
| 673 | | MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(gsword_state, gsword_nmi_set_w)) /* portA write */ |
| 674 | MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(gsword_state, nmi_set_w)) /* portA write */ |
| 674 | 675 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 675 | 676 | |
| 676 | 677 | MCFG_SOUND_ADD("msm", MSM5205, XTAL_400kHz) /* verified on pcb */ |
| r243488 | r243489 | |
| 691 | 692 | MCFG_CPU_IO_MAP(josvolly_cpu2_io_map) |
| 692 | 693 | MCFG_CPU_VBLANK_INT_DRIVER("screen", gsword_state, irq0_line_hold) |
| 693 | 694 | |
| 694 | | MCFG_MACHINE_RESET_OVERRIDE(gsword_state,josvolly) |
| 695 | | |
| 696 | 695 | MCFG_JOSVOLLY8741_ADD("josvolly_8741") |
| 697 | 696 | MCFG_JOSVOLLY8741_CONNECT(1,0,0,0) |
| 698 | 697 | MCFG_JOSVOLLY8741_PORT_HANDLERS(IOPORT("DSW1"),IOPORT("DSW2"),IOPORT("DSW1"),IOPORT("DSW2")) |
| r243488 | r243489 | |
| 719 | 718 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 720 | 719 | |
| 721 | 720 | MCFG_SOUND_ADD("ay2", AY8910, 1500000) |
| 722 | | MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(gsword_state, gsword_nmi_set_w)) /* portA write */ |
| 721 | MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(gsword_state, nmi_set_w)) /* portA write */ |
| 723 | 722 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) |
| 724 | 723 | |
| 725 | 724 | #if 0 |
| r243488 | r243489 | |
| 901 | 900 | } |
| 902 | 901 | |
| 903 | 902 | |
| 904 | | GAME( 1983, josvolly, 0, josvolly, josvolly, driver_device, 0, ROT90, "Allumer / Taito Corporation", "Joshi Volleyball", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) |
| 905 | | GAME( 1984, gsword, 0, gsword, gsword, gsword_state, gsword, ROT0, "Allumer / Taito Corporation", "Great Swordsman (World?)", 0 ) |
| 906 | | GAME( 1984, gsword2, gsword, gsword, gsword, gsword_state, gsword2, ROT0, "Allumer / Taito Corporation", "Great Swordsman (Japan?)", 0 ) |
| 903 | GAME( 1983, josvolly, 0, josvolly, josvolly, driver_device, 0, ROT90, "Allumer / Taito Corporation", "Joshi Volleyball", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) |
| 904 | GAME( 1984, gsword, 0, gsword, gsword, gsword_state, gsword, ROT0, "Allumer / Taito Corporation", "Great Swordsman (World?)", GAME_SUPPORTS_SAVE ) |
| 905 | GAME( 1984, gsword2, gsword, gsword, gsword, gsword_state, gsword2, ROT0, "Allumer / Taito Corporation", "Great Swordsman (Japan?)", GAME_SUPPORTS_SAVE ) |
trunk/src/mame/drivers/hornet.c
| r243488 | r243489 | |
| 338 | 338 | m_gn680(*this, "gn680"), |
| 339 | 339 | m_dsp(*this, "dsp"), |
| 340 | 340 | m_dsp2(*this, "dsp2"), |
| 341 | | m_eeprom(*this, "eeprom"), |
| 342 | 341 | m_k037122_1(*this, "k037122_1"), |
| 343 | 342 | m_k037122_2(*this, "k037122_2" ), |
| 344 | 343 | m_adc12138(*this, "adc12138"), |
| 344 | m_konppc(*this, "konppc"), |
| 345 | m_lan_eeprom(*this, "lan_eeprom"), |
| 345 | 346 | m_in0(*this, "IN0"), |
| 346 | 347 | m_in1(*this, "IN1"), |
| 347 | 348 | m_in2(*this, "IN2"), |
| 348 | 349 | m_dsw(*this, "DSW"), |
| 349 | 350 | m_eepromout(*this, "EEPROMOUT"), |
| 350 | 351 | m_analog1(*this, "ANALOG1"), |
| 351 | | m_analog2(*this, "ANALOG2"), |
| 352 | | m_konppc(*this, "konppc"){ } |
| 352 | m_analog2(*this, "ANALOG2") |
| 353 | { } |
| 353 | 354 | |
| 354 | 355 | // TODO: Needs verification on real hardware |
| 355 | 356 | static const int m_sound_timer_usec = 2800; |
| r243488 | r243489 | |
| 363 | 364 | optional_device<cpu_device> m_gn680; |
| 364 | 365 | required_device<cpu_device> m_dsp; |
| 365 | 366 | optional_device<cpu_device> m_dsp2; |
| 366 | | required_device<eeprom_serial_93cxx_device> m_eeprom; |
| 367 | 367 | optional_device<k037122_device> m_k037122_1; |
| 368 | 368 | optional_device<k037122_device> m_k037122_2; |
| 369 | 369 | required_device<adc12138_device> m_adc12138; |
| 370 | | required_ioport m_in0, m_in1, m_in2, m_dsw, m_eepromout; |
| 371 | | optional_ioport m_analog1, m_analog2; |
| 372 | 370 | required_device<konppc_device> m_konppc; |
| 371 | optional_device<eeprom_serial_93cxx_device> m_lan_eeprom; |
| 372 | required_ioport m_in0, m_in1, m_in2, m_dsw; |
| 373 | optional_ioport m_eepromout, m_analog1, m_analog2; |
| 373 | 374 | |
| 374 | 375 | emu_timer *m_sound_irq_timer; |
| 375 | 376 | UINT8 m_led_reg0; |
| r243488 | r243489 | |
| 534 | 535 | 0x02 = ADDOR (ADC DOR) |
| 535 | 536 | 0x01 = ADDO (ADC DO) |
| 536 | 537 | */ |
| 537 | | r = 0xf0 | (m_eeprom->do_read() << 3); |
| 538 | r = 0xf0; |
| 539 | if (m_lan_eeprom) |
| 540 | r |= m_lan_eeprom->do_read() << 3; |
| 538 | 541 | r |= m_adc12138->do_r(space, 0) | (m_adc12138->eoc_r(space, 0) << 2); |
| 539 | 542 | break; |
| 540 | 543 | |
| r243488 | r243489 | |
| 572 | 575 | 0x02 = LAMP1 |
| 573 | 576 | 0x01 = LAMP0 |
| 574 | 577 | */ |
| 575 | | m_eepromout->write(data, 0xff); |
| 578 | if (m_eepromout) |
| 579 | m_eepromout->write(data, 0xff); |
| 576 | 580 | osd_printf_debug("System register 0 = %02X\n", data); |
| 577 | 581 | break; |
| 578 | 582 | |
| r243488 | r243489 | |
| 877 | 881 | PORT_DIPNAME( 0x01, 0x01, "Monitor Type" ) PORT_DIPLOCATION("SW:8") |
| 878 | 882 | PORT_DIPSETTING( 0x01, "24KHz" ) |
| 879 | 883 | PORT_DIPSETTING( 0x00, "15KHz" ) |
| 880 | | |
| 881 | | PORT_START( "EEPROMOUT" ) |
| 882 | | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) |
| 883 | | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) |
| 884 | | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) |
| 885 | 884 | INPUT_PORTS_END |
| 886 | 885 | |
| 887 | 886 | static INPUT_PORTS_START( sscope ) |
| r243488 | r243489 | |
| 902 | 901 | PORT_BIT( 0x7ff, 0x3ff, IPT_AD_STICK_Y ) PORT_MINMAX(0x000, 0x7ff) PORT_SENSITIVITY(35) PORT_KEYDELTA(5) PORT_INVERT |
| 903 | 902 | INPUT_PORTS_END |
| 904 | 903 | |
| 904 | static INPUT_PORTS_START( sscope2 ) |
| 905 | PORT_INCLUDE( sscope ) |
| 905 | 906 | |
| 907 | // LAN board EEPROM |
| 908 | PORT_START( "EEPROMOUT" ) |
| 909 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("lan_eeprom", eeprom_serial_93cxx_device, di_write) |
| 910 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("lan_eeprom", eeprom_serial_93cxx_device, clk_write) |
| 911 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("lan_eeprom", eeprom_serial_93cxx_device, cs_write) |
| 912 | INPUT_PORTS_END |
| 913 | |
| 914 | |
| 906 | 915 | /* PowerPC interrupts |
| 907 | 916 | |
| 908 | 917 | IRQ0: Vblank CG Board 0 |
| r243488 | r243489 | |
| 977 | 986 | |
| 978 | 987 | MCFG_QUANTUM_TIME(attotime::from_hz(6000)) |
| 979 | 988 | |
| 989 | // PCB description at top doesn't mention any EEPROM on the base board... |
| 990 | // MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") |
| 980 | 991 | |
| 981 | | MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") |
| 982 | | |
| 983 | 992 | MCFG_DEVICE_ADD("voodoo0", VOODOO_1, STD_VOODOO_1_CLOCK) |
| 984 | 993 | MCFG_VOODOO_FBMEM(2) |
| 985 | 994 | MCFG_VOODOO_TMUMEM(4,0) |
| r243488 | r243489 | |
| 1528 | 1537 | |
| 1529 | 1538 | /*************************************************************************/ |
| 1530 | 1539 | |
| 1531 | | GAME( 1998, gradius4, 0, hornet, hornet, hornet_state, hornet, ROT0, "Konami", "Gradius 4: Fukkatsu", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) |
| 1532 | | GAME( 1998, nbapbp, 0, hornet, hornet, hornet_state, hornet, ROT0, "Konami", "NBA Play By Play", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) |
| 1533 | | GAMEL( 1998, terabrst, 0, terabrst, hornet, hornet_state, hornet_2board, ROT0, "Konami", "Teraburst (1998/07/17 ver UEL)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_dualhsxs ) |
| 1534 | | GAMEL( 1998, terabrsta, terabrst, terabrst, hornet, hornet_state, hornet_2board, ROT0, "Konami", "Teraburst (1998/02/25 ver AAA)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_dualhsxs ) |
| 1540 | GAME( 1998, gradius4, 0, hornet, hornet, hornet_state, hornet, ROT0, "Konami", "Gradius 4: Fukkatsu", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) |
| 1541 | GAME( 1998, nbapbp, 0, hornet, hornet, hornet_state, hornet, ROT0, "Konami", "NBA Play By Play", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) |
| 1542 | GAMEL( 1998, terabrst, 0, terabrst, hornet, hornet_state, hornet_2board, ROT0, "Konami", "Teraburst (1998/07/17 ver UEL)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_dualhsxs ) |
| 1543 | GAMEL( 1998, terabrsta, terabrst, terabrst, hornet, hornet_state, hornet_2board, ROT0, "Konami", "Teraburst (1998/02/25 ver AAA)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_dualhsxs ) |
| 1535 | 1544 | |
| 1536 | 1545 | // The region comes from the Timekeeper NVRAM, without a valid default all sets except 'xxD, Ver 1.33' will init their NVRAM to UAx versions, the xxD set seems to incorrectly init it to JXD, which isn't a valid |
| 1537 | 1546 | // version, and thus can't be booted. If you copy the NVRAM from another already initialized set, it will boot as UAD. |
| 1538 | 1547 | // to get the actual game to boot you must calibrate the guns etc. |
| 1539 | | GAMEL( 2000, sscope, 0, hornet_2board, sscope, hornet_state, hornet_2board, ROT0, "Konami", "Silent Scope (ver xxD, Ver 1.33)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE, layout_dualhsxs ) |
| 1540 | | GAMEL( 2000, sscopec, sscope, hornet_2board, sscope, hornet_state, hornet_2board, ROT0, "Konami", "Silent Scope (ver xxC, Ver 1.30)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE, layout_dualhsxs ) |
| 1541 | | GAMEL( 2000, sscopeb, sscope, hornet_2board, sscope, hornet_state, hornet_2board, ROT0, "Konami", "Silent Scope (ver xxB, Ver 1.20)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE, layout_dualhsxs ) |
| 1542 | | GAMEL( 2000, sscopea, sscope, hornet_2board, sscope, hornet_state, hornet_2board, ROT0, "Konami", "Silent Scope (ver xxA, Ver 1.00)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE, layout_dualhsxs ) |
| 1548 | GAMEL( 2000, sscope, 0, hornet_2board, sscope, hornet_state, hornet_2board, ROT0, "Konami", "Silent Scope (ver xxD, Ver 1.33)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE, layout_dualhsxs ) |
| 1549 | GAMEL( 2000, sscopec, sscope, hornet_2board, sscope, hornet_state, hornet_2board, ROT0, "Konami", "Silent Scope (ver xxC, Ver 1.30)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE, layout_dualhsxs ) |
| 1550 | GAMEL( 2000, sscopeb, sscope, hornet_2board, sscope, hornet_state, hornet_2board, ROT0, "Konami", "Silent Scope (ver xxB, Ver 1.20)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE, layout_dualhsxs ) |
| 1551 | GAMEL( 2000, sscopea, sscope, hornet_2board, sscope, hornet_state, hornet_2board, ROT0, "Konami", "Silent Scope (ver xxA, Ver 1.00)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE, layout_dualhsxs ) |
| 1543 | 1552 | |
| 1544 | | GAMEL( 2000, sscope2, 0, sscope2, sscope, hornet_state, hornet_2board, ROT0, "Konami", "Silent Scope 2", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE, layout_dualhsxs ) |
| 1553 | GAMEL( 2000, sscope2, 0, sscope2, sscope2, hornet_state, hornet_2board, ROT0, "Konami", "Silent Scope 2", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE, layout_dualhsxs ) |
trunk/src/mame/drivers/mastboy.c
| r243488 | r243489 | |
| 445 | 445 | public: |
| 446 | 446 | mastboy_state(const machine_config &mconfig, device_type type, const char *tag) |
| 447 | 447 | : driver_device(mconfig, type, tag), |
| 448 | | m_nvram(*this, "nvram") , |
| 449 | | m_workram(*this, "workram"), |
| 450 | | m_tileram(*this, "tileram"), |
| 451 | | m_colram(*this, "colram"), |
| 452 | 448 | m_maincpu(*this, "maincpu"), |
| 453 | 449 | m_msm(*this, "msm"), |
| 454 | 450 | m_gfxdecode(*this, "gfxdecode"), |
| 455 | | m_palette(*this, "palette") { } |
| 451 | m_palette(*this, "palette"), |
| 452 | m_nvram(*this, "nvram") , |
| 453 | m_workram(*this, "workram"), |
| 454 | m_tileram(*this, "tileram"), |
| 455 | m_colram(*this, "colram") { } |
| 456 | 456 | |
| 457 | | required_shared_ptr<UINT8> m_nvram; |
| 457 | required_device<cpu_device> m_maincpu; |
| 458 | required_device<msm5205_device> m_msm; |
| 459 | required_device<gfxdecode_device> m_gfxdecode; |
| 460 | required_device<palette_device> m_palette; |
| 461 | |
| 462 | required_shared_ptr<UINT8> m_nvram; |
| 458 | 463 | required_shared_ptr<UINT8> m_workram; |
| 459 | 464 | required_shared_ptr<UINT8> m_tileram; |
| 460 | 465 | required_shared_ptr<UINT8> m_colram; |
| 466 | |
| 461 | 467 | UINT8* m_vram; |
| 462 | 468 | UINT8 m_bank; |
| 463 | 469 | int m_irq0_ack; |
| r243488 | r243489 | |
| 466 | 472 | int m_m5205_part; |
| 467 | 473 | int m_m5205_sambit0; |
| 468 | 474 | int m_m5205_sambit1; |
| 475 | |
| 469 | 476 | DECLARE_READ8_MEMBER(banked_ram_r); |
| 470 | 477 | DECLARE_WRITE8_MEMBER(banked_ram_w); |
| 471 | | DECLARE_WRITE8_MEMBER(mastboy_bank_w); |
| 472 | | DECLARE_READ8_MEMBER(mastboy_backupram_r); |
| 473 | | DECLARE_WRITE8_MEMBER(mastboy_backupram_w); |
| 478 | DECLARE_WRITE8_MEMBER(bank_w); |
| 479 | DECLARE_READ8_MEMBER(backupram_r); |
| 480 | DECLARE_WRITE8_MEMBER(backupram_w); |
| 474 | 481 | DECLARE_WRITE8_MEMBER(backupram_enable_w); |
| 475 | | DECLARE_WRITE8_MEMBER(msm5205_mastboy_m5205_sambit0_w); |
| 476 | | DECLARE_WRITE8_MEMBER(msm5205_mastboy_m5205_sambit1_w); |
| 477 | | DECLARE_WRITE8_MEMBER(mastboy_msm5205_data_w); |
| 478 | | DECLARE_WRITE8_MEMBER(mastboy_irq0_ack_w); |
| 479 | | DECLARE_READ8_MEMBER(mastboy_port_38_read); |
| 480 | | DECLARE_READ8_MEMBER(mastboy_nmi_read); |
| 481 | | DECLARE_WRITE8_MEMBER(mastboy_msm5205_reset_w); |
| 482 | | DECLARE_DRIVER_INIT(mastboy); |
| 482 | DECLARE_WRITE8_MEMBER(msm5205_sambit0_w); |
| 483 | DECLARE_WRITE8_MEMBER(msm5205_sambit1_w); |
| 484 | DECLARE_WRITE8_MEMBER(msm5205_data_w); |
| 485 | DECLARE_WRITE8_MEMBER(irq0_ack_w); |
| 486 | DECLARE_READ8_MEMBER(port_38_read); |
| 487 | DECLARE_READ8_MEMBER(nmi_read); |
| 488 | DECLARE_WRITE8_MEMBER(msm5205_reset_w); |
| 489 | DECLARE_WRITE_LINE_MEMBER(adpcm_int); |
| 490 | |
| 491 | virtual void machine_start(); |
| 483 | 492 | virtual void machine_reset(); |
| 484 | 493 | virtual void video_start(); |
| 485 | | UINT32 screen_update_mastboy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 486 | | INTERRUPT_GEN_MEMBER(mastboy_interrupt); |
| 487 | | DECLARE_WRITE_LINE_MEMBER(mastboy_adpcm_int); |
| 488 | | required_device<cpu_device> m_maincpu; |
| 489 | | required_device<msm5205_device> m_msm; |
| 490 | | required_device<gfxdecode_device> m_gfxdecode; |
| 491 | | required_device<palette_device> m_palette; |
| 494 | |
| 495 | UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 496 | |
| 497 | INTERRUPT_GEN_MEMBER(interrupt); |
| 492 | 498 | }; |
| 493 | 499 | |
| 494 | 500 | |
| r243488 | r243489 | |
| 497 | 503 | void mastboy_state::video_start() |
| 498 | 504 | { |
| 499 | 505 | m_gfxdecode->gfx(0)->set_source(m_vram); |
| 506 | |
| 507 | save_pointer(NAME(m_vram), 0x10000); |
| 500 | 508 | } |
| 501 | 509 | |
| 502 | | UINT32 mastboy_state::screen_update_mastboy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 510 | UINT32 mastboy_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 503 | 511 | { |
| 504 | 512 | int y,x,i; |
| 505 | 513 | int count = 0x000; |
| r243488 | r243489 | |
| 609 | 617 | } |
| 610 | 618 | } |
| 611 | 619 | |
| 612 | | WRITE8_MEMBER(mastboy_state::mastboy_bank_w) |
| 620 | WRITE8_MEMBER(mastboy_state::bank_w) |
| 613 | 621 | { |
| 614 | 622 | // controls access to banked ram / rom |
| 615 | 623 | m_bank = data; |
| r243488 | r243489 | |
| 617 | 625 | |
| 618 | 626 | /* Backup RAM access */ |
| 619 | 627 | |
| 620 | | READ8_MEMBER(mastboy_state::mastboy_backupram_r) |
| 628 | READ8_MEMBER(mastboy_state::backupram_r) |
| 621 | 629 | { |
| 622 | 630 | return m_nvram[offset]; |
| 623 | 631 | } |
| 624 | 632 | |
| 625 | | WRITE8_MEMBER(mastboy_state::mastboy_backupram_w) |
| 633 | WRITE8_MEMBER(mastboy_state::backupram_w) |
| 626 | 634 | { |
| 627 | 635 | // if (m_backupram_enabled) |
| 628 | 636 | // { |
| r243488 | r243489 | |
| 643 | 651 | |
| 644 | 652 | /* MSM5205 Related */ |
| 645 | 653 | |
| 646 | | WRITE8_MEMBER(mastboy_state::msm5205_mastboy_m5205_sambit0_w) |
| 654 | WRITE8_MEMBER(mastboy_state::msm5205_sambit0_w) |
| 647 | 655 | { |
| 648 | 656 | m_m5205_sambit0 = data & 1; |
| 649 | 657 | m_msm->playmode_w((1 << 2) | (m_m5205_sambit1 << 1) | (m_m5205_sambit0) ); |
| r243488 | r243489 | |
| 651 | 659 | logerror("msm5205 samplerate bit 0, set to %02x\n",data); |
| 652 | 660 | } |
| 653 | 661 | |
| 654 | | WRITE8_MEMBER(mastboy_state::msm5205_mastboy_m5205_sambit1_w) |
| 662 | WRITE8_MEMBER(mastboy_state::msm5205_sambit1_w) |
| 655 | 663 | { |
| 656 | 664 | m_m5205_sambit1 = data & 1; |
| 657 | 665 | |
| r243488 | r243489 | |
| 660 | 668 | logerror("msm5205 samplerate bit 0, set to %02x\n",data); |
| 661 | 669 | } |
| 662 | 670 | |
| 663 | | WRITE8_MEMBER(mastboy_state::mastboy_msm5205_reset_w) |
| 671 | WRITE8_MEMBER(mastboy_state::msm5205_reset_w) |
| 664 | 672 | { |
| 665 | 673 | m_m5205_part = 0; |
| 666 | 674 | m_msm->reset_w(data & 1); |
| 667 | 675 | } |
| 668 | 676 | |
| 669 | | WRITE8_MEMBER(mastboy_state::mastboy_msm5205_data_w) |
| 677 | WRITE8_MEMBER(mastboy_state::msm5205_data_w) |
| 670 | 678 | { |
| 671 | 679 | m_m5205_next = data; |
| 672 | 680 | } |
| 673 | 681 | |
| 674 | | WRITE_LINE_MEMBER(mastboy_state::mastboy_adpcm_int) |
| 682 | WRITE_LINE_MEMBER(mastboy_state::adpcm_int) |
| 675 | 683 | { |
| 676 | 684 | m_msm->data_w(m_m5205_next); |
| 677 | 685 | m_m5205_next >>= 4; |
| r243488 | r243489 | |
| 684 | 692 | |
| 685 | 693 | /* Interrupt Handling */ |
| 686 | 694 | |
| 687 | | WRITE8_MEMBER(mastboy_state::mastboy_irq0_ack_w) |
| 695 | WRITE8_MEMBER(mastboy_state::irq0_ack_w) |
| 688 | 696 | { |
| 689 | 697 | m_irq0_ack = data; |
| 690 | 698 | if ((data & 1) == 1) |
| 691 | 699 | m_maincpu->set_input_line(0, CLEAR_LINE); |
| 692 | 700 | } |
| 693 | 701 | |
| 694 | | INTERRUPT_GEN_MEMBER(mastboy_state::mastboy_interrupt) |
| 702 | INTERRUPT_GEN_MEMBER(mastboy_state::interrupt) |
| 695 | 703 | { |
| 696 | 704 | if ((m_irq0_ack & 1) == 1) |
| 697 | 705 | { |
| r243488 | r243489 | |
| 711 | 719 | |
| 712 | 720 | AM_RANGE(0xc000, 0xffff) AM_READWRITE(banked_ram_r,banked_ram_w) // mastboy bank area read / write |
| 713 | 721 | |
| 714 | | AM_RANGE(0xff000, 0xff7ff) AM_READWRITE(mastboy_backupram_r,mastboy_backupram_w) AM_SHARE("nvram") |
| 722 | AM_RANGE(0xff000, 0xff7ff) AM_READWRITE(backupram_r,backupram_w) AM_SHARE("nvram") |
| 715 | 723 | |
| 716 | 724 | AM_RANGE(0xff800, 0xff807) AM_READ_PORT("P1") |
| 717 | 725 | AM_RANGE(0xff808, 0xff80f) AM_READ_PORT("P2") |
| 718 | 726 | AM_RANGE(0xff810, 0xff817) AM_READ_PORT("DSW1") |
| 719 | 727 | AM_RANGE(0xff818, 0xff81f) AM_READ_PORT("DSW2") |
| 720 | 728 | |
| 721 | | AM_RANGE(0xff820, 0xff827) AM_WRITE(mastboy_bank_w) |
| 722 | | AM_RANGE(0xff828, 0xff828) AM_DEVWRITE("saa", saa1099_device, saa1099_data_w) |
| 723 | | AM_RANGE(0xff829, 0xff829) AM_DEVWRITE("saa", saa1099_device, saa1099_control_w) |
| 724 | | AM_RANGE(0xff830, 0xff830) AM_WRITE(mastboy_msm5205_data_w) |
| 725 | | AM_RANGE(0xff838, 0xff838) AM_WRITE(mastboy_irq0_ack_w) |
| 726 | | AM_RANGE(0xff839, 0xff839) AM_WRITE(msm5205_mastboy_m5205_sambit0_w) |
| 727 | | AM_RANGE(0xff83a, 0xff83a) AM_WRITE(msm5205_mastboy_m5205_sambit1_w) |
| 728 | | AM_RANGE(0xff83b, 0xff83b) AM_WRITE(mastboy_msm5205_reset_w) |
| 729 | AM_RANGE(0xff820, 0xff827) AM_WRITE(bank_w) |
| 730 | AM_RANGE(0xff828, 0xff828) AM_DEVWRITE("saa", saa1099_device, data_w) |
| 731 | AM_RANGE(0xff829, 0xff829) AM_DEVWRITE("saa", saa1099_device, control_w) |
| 732 | AM_RANGE(0xff830, 0xff830) AM_WRITE(msm5205_data_w) |
| 733 | AM_RANGE(0xff838, 0xff838) AM_WRITE(irq0_ack_w) |
| 734 | AM_RANGE(0xff839, 0xff839) AM_WRITE(msm5205_sambit0_w) |
| 735 | AM_RANGE(0xff83a, 0xff83a) AM_WRITE(msm5205_sambit1_w) |
| 736 | AM_RANGE(0xff83b, 0xff83b) AM_WRITE(msm5205_reset_w) |
| 729 | 737 | AM_RANGE(0xff83c, 0xff83c) AM_WRITE(backupram_enable_w) |
| 730 | 738 | |
| 731 | 739 | AM_RANGE(0xffc00, 0xfffff) AM_RAM // Internal RAM |
| r243488 | r243489 | |
| 733 | 741 | |
| 734 | 742 | /* Ports */ |
| 735 | 743 | |
| 736 | | READ8_MEMBER(mastboy_state::mastboy_port_38_read) |
| 744 | READ8_MEMBER(mastboy_state::port_38_read) |
| 737 | 745 | { |
| 738 | 746 | return 0x00; |
| 739 | 747 | } |
| 740 | 748 | |
| 741 | | READ8_MEMBER(mastboy_state::mastboy_nmi_read) |
| 749 | READ8_MEMBER(mastboy_state::nmi_read) |
| 742 | 750 | { |
| 743 | 751 | // this is read in the NMI, it's related to the Z180 MMU I think, must return right value or game jumps to 0000 |
| 744 | 752 | return 0x00; |
| 745 | 753 | } |
| 746 | 754 | |
| 747 | 755 | static ADDRESS_MAP_START( mastboy_io_map, AS_IO, 8, mastboy_state ) |
| 748 | | AM_RANGE(0x38, 0x38) AM_READ(mastboy_port_38_read) |
| 749 | | AM_RANGE(0x39, 0x39) AM_READ(mastboy_nmi_read) |
| 756 | AM_RANGE(0x38, 0x38) AM_READ(port_38_read) |
| 757 | AM_RANGE(0x39, 0x39) AM_READ(nmi_read) |
| 750 | 758 | ADDRESS_MAP_END |
| 751 | 759 | |
| 752 | 760 | /* Input Ports */ |
| r243488 | r243489 | |
| 866 | 874 | |
| 867 | 875 | /* Machine Functions / Driver */ |
| 868 | 876 | |
| 877 | void mastboy_state::machine_start() |
| 878 | { |
| 879 | m_vram = memregion( "gfx1" )->base(); // makes decoding the RAM based tiles easier this way |
| 880 | |
| 881 | save_item(NAME(m_bank)); |
| 882 | save_item(NAME(m_irq0_ack)); |
| 883 | save_item(NAME(m_backupram_enabled)); |
| 884 | save_item(NAME(m_m5205_next)); |
| 885 | save_item(NAME(m_m5205_part)); |
| 886 | save_item(NAME(m_m5205_sambit0)); |
| 887 | save_item(NAME(m_m5205_sambit1)); |
| 888 | } |
| 889 | |
| 869 | 890 | void mastboy_state::machine_reset() |
| 870 | 891 | { |
| 871 | 892 | /* clear some ram */ |
| r243488 | r243489 | |
| 885 | 906 | MCFG_CPU_ADD("maincpu", Z180, 12000000/2) /* HD647180X0CP6-1M1R */ |
| 886 | 907 | MCFG_CPU_PROGRAM_MAP(mastboy_map) |
| 887 | 908 | MCFG_CPU_IO_MAP(mastboy_io_map) |
| 888 | | MCFG_CPU_VBLANK_INT_DRIVER("screen", mastboy_state, mastboy_interrupt) |
| 909 | MCFG_CPU_VBLANK_INT_DRIVER("screen", mastboy_state, interrupt) |
| 889 | 910 | |
| 890 | 911 | MCFG_NVRAM_ADD_1FILL("nvram") |
| 891 | 912 | |
| r243488 | r243489 | |
| 896 | 917 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) |
| 897 | 918 | MCFG_SCREEN_SIZE(256, 256) |
| 898 | 919 | MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1) |
| 899 | | MCFG_SCREEN_UPDATE_DRIVER(mastboy_state, screen_update_mastboy) |
| 920 | MCFG_SCREEN_UPDATE_DRIVER(mastboy_state, screen_update) |
| 900 | 921 | MCFG_SCREEN_PALETTE("palette") |
| 901 | 922 | |
| 902 | 923 | MCFG_GFXDECODE_ADD("gfxdecode", "palette", mastboy) |
| r243488 | r243489 | |
| 909 | 930 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 910 | 931 | |
| 911 | 932 | MCFG_SOUND_ADD("msm", MSM5205, 384000) |
| 912 | | MCFG_MSM5205_VCLK_CB(WRITELINE(mastboy_state, mastboy_adpcm_int)) /* interrupt function */ |
| 933 | MCFG_MSM5205_VCLK_CB(WRITELINE(mastboy_state, adpcm_int)) /* interrupt function */ |
| 913 | 934 | MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_SEX_4B) /* 4KHz 4-bit */ |
| 914 | 935 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 915 | 936 | MACHINE_CONFIG_END |
| r243488 | r243489 | |
| 993 | 1014 | /* 0x1c0000 to 0x1fffff EMPTY */ |
| 994 | 1015 | ROM_END |
| 995 | 1016 | |
| 996 | | DRIVER_INIT_MEMBER(mastboy_state,mastboy) |
| 997 | | { |
| 998 | | m_vram = memregion( "gfx1" )->base(); // makes decoding the RAM based tiles easier this way |
| 999 | | } |
| 1000 | 1017 | |
| 1001 | | GAME( 1991, mastboy, 0, mastboy, mastboy, mastboy_state, mastboy, ROT0, "Gaelco", "Master Boy (Spanish, PCB Rev A)", 0 ) |
| 1002 | | GAME( 1991, mastboyi, mastboy, mastboy, mastboy, mastboy_state, mastboy, ROT0, "Gaelco", "Master Boy (Italian, PCB Rev A)", 0 ) |
| 1018 | GAME( 1991, mastboy, 0, mastboy, mastboy, driver_device, 0, ROT0, "Gaelco", "Master Boy (Spanish, PCB Rev A)", GAME_SUPPORTS_SAVE ) |
| 1019 | GAME( 1991, mastboyi, mastboy, mastboy, mastboy, driver_device, 0, ROT0, "Gaelco", "Master Boy (Italian, PCB Rev A)", GAME_SUPPORTS_SAVE ) |
trunk/src/mame/drivers/mpu4vid.c
| r243488 | r243489 | |
| 1283 | 1283 | AM_RANGE(0x000000, 0x7fffff) AM_ROM |
| 1284 | 1284 | AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("vid_mainram") |
| 1285 | 1285 | // AM_RANGE(0x810000, 0x81ffff) AM_RAM /* ? */ |
| 1286 | | AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, saa1099_data_w, 0x00ff) |
| 1287 | | AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, saa1099_control_w, 0x00ff) |
| 1286 | AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, data_w, 0x00ff) |
| 1287 | AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, control_w, 0x00ff) |
| 1288 | 1288 | AM_RANGE(0xa00000, 0xa00003) AM_READWRITE8(ef9369_r, ef9369_w,0x00ff) |
| 1289 | 1289 | /* AM_RANGE(0xa00004, 0xa0000f) AM_READWRITE(mpu4_vid_unmap_r, mpu4_vid_unmap_w) */ |
| 1290 | 1290 | |
| r243488 | r243489 | |
| 1303 | 1303 | AM_RANGE(0x600000, 0x63ffff) AM_RAM /* The Mating Game has an extra 256kB RAM on the program card */ |
| 1304 | 1304 | // AM_RANGE(0x640000, 0x7fffff) AM_NOP /* Possible bug, reads and writes here */ |
| 1305 | 1305 | AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("vid_mainram") |
| 1306 | | AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, saa1099_data_w, 0x00ff) |
| 1307 | | AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, saa1099_control_w, 0x00ff) |
| 1306 | AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, data_w, 0x00ff) |
| 1307 | AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, control_w, 0x00ff) |
| 1308 | 1308 | AM_RANGE(0xa00000, 0xa00003) AM_READWRITE8(ef9369_r, ef9369_w,0x00ff) |
| 1309 | 1309 | |
| 1310 | 1310 | AM_RANGE(0xb00000, 0xb0000f) AM_DEVREADWRITE8("scn2674_vid", scn2674_device, mpu4_vid_scn2674_r, mpu4_vid_scn2674_w,0x00ff) |
| r243488 | r243489 | |
| 1325 | 1325 | AM_RANGE(0x000000, 0x7fffff) AM_ROM |
| 1326 | 1326 | AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("vid_mainram") |
| 1327 | 1327 | AM_RANGE(0x810000, 0x81ffff) AM_RAM /* ? */ |
| 1328 | | AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, saa1099_data_w, 0x00ff) |
| 1329 | | AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, saa1099_control_w, 0x00ff) |
| 1328 | AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, data_w, 0x00ff) |
| 1329 | AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, control_w, 0x00ff) |
| 1330 | 1330 | AM_RANGE(0xa00000, 0xa00003) AM_READWRITE8(ef9369_r, ef9369_w,0x00ff) |
| 1331 | 1331 | // AM_RANGE(0xa00000, 0xa0000f) AM_READWRITE(bt471_r,bt471_w) //Some games use this |
| 1332 | 1332 | /* AM_RANGE(0xa00004, 0xa0000f) AM_READWRITE(mpu4_vid_unmap_r, mpu4_vid_unmap_w) */ |
| r243488 | r243489 | |
| 1343 | 1343 | AM_RANGE(0x000000, 0x7fffff) AM_ROM |
| 1344 | 1344 | AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("vid_mainram") |
| 1345 | 1345 | AM_RANGE(0x810000, 0x81ffff) AM_RAM /* ? */ |
| 1346 | | AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, saa1099_data_w, 0x00ff) |
| 1347 | | AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, saa1099_control_w, 0x00ff) |
| 1346 | AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, data_w, 0x00ff) |
| 1347 | AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, control_w, 0x00ff) |
| 1348 | 1348 | AM_RANGE(0xa00000, 0xa00003) AM_READWRITE8(ef9369_r, ef9369_w,0x00ff) |
| 1349 | 1349 | //AM_RANGE(0xa00000, 0xa00003) AM_READWRITE8(bt471_r,bt471_w,0x00ff) Some games use this |
| 1350 | 1350 | /* AM_RANGE(0xa00004, 0xa0000f) AM_READWRITE(mpu4_vid_unmap_r, mpu4_vid_unmap_w) */ |
trunk/src/mame/drivers/nwk-tr.c
| r243488 | r243489 | |
| 48 | 48 | SOIC8 chip (a secured PIC?) is not populated (the solder pads are there though). |
| 49 | 49 | There's an extra sound IC AN7395S (it's not populated on Hornet). |
| 50 | 50 | The PALs/PLDs are the same on NWK-TR and Hornet. |
| 51 | Both Racing JAM/Chapter 2 and Thrill Drive use two video boards. |
| 52 | The top video board is set to MASTER/TWIN, lower video board is set to SLAVE |
| 53 | They are otherwise identical. |
| 51 | 54 | |
| 52 | 55 | |
| 53 | | Top Board |
| 56 | Top Board (CPU PCB) |
| 54 | 57 | GN676 PWB(A)B |
| 55 | 58 | Konami 1997 |
| 56 | 59 | |--------------------------------------------------------------| |
| r243488 | r243489 | |
| 88 | 91 | DRM1M4SJ8 - Fujitsu 81C4256 256kx4 DRAM (SOJ24) |
| 89 | 92 | SRAM256K - Cypress CY7C199 32kx8 SRAM (SOJ28) |
| 90 | 93 | DRAM16X16 - Fujitsu 8118160A-60 16megx16 DRAM (SOJ42) |
| 91 | | M48T58Y-70PC1 - ST Timekeeper RAM |
| 94 | M48T58Y-70PC1 - ST Timekeeper RAM |
| 92 | 95 | RF5C400 - Ricoh RF5C400 PCM 32Ch, 44.1 kHz Stereo, 3D Effect Spatializer, clock input 16.9344MHz |
| 93 | 96 | 056800 - Konami Custom (QFP80) |
| 94 | 97 | 058232 - Konami Custom Ceramic Package (SIL14) |
| r243488 | r243489 | |
| 127 | 130 | CN6 - DIN96 joining connector to lower PCB |
| 128 | 131 | CN7 - Multi-pin connector (pads only, not used) |
| 129 | 132 | CN9 to CN13 - Power Connectors |
| 130 | | CN14 to CN17 - RCA Stereo Audio OUT |
| 133 | CN14 to CN17 - RCA Stereo Audio OUT |
| 131 | 134 | CN18 - RCA Mono Audio OUT |
| 132 | 135 | CN19 - USB Connector |
| 133 | 136 | |
| 134 | 137 | |
| 135 | 138 | ROM Usage |
| 136 | 139 | --------- |
| 137 | | |------------------------------- ROM Locations -------------------------------------| |
| 140 | |------------------------------- ROM Locations -------------------------------------| |
| 138 | 141 | Game 27P 25P 22P 16P 14P 12P 9P 16T 14T 12T 9T 7S |
| 139 | 142 | -------------------------------------------------------------------------------------------------- |
| 140 | 143 | Racing Jam 676NC01 - - 676A09 676A10 - - 676A04 676A05 - - 676A08 |
| r243488 | r243489 | |
| 142 | 145 | Thrill Drive 713BE01 - - 713A09 713A10 - - 713A04 713A05 - - 713A08 |
| 143 | 146 | |
| 144 | 147 | |
| 145 | | Bottom Board |
| 148 | Network PCB |
| 149 | ----------- |
| 150 | GN676-PWB(H)B |
| 151 | MADE IN JAPAN |
| 152 | (C)1998 KONAMI |
| 153 | sticker - GC713AC |
| 154 | |------------------------| |
| 155 | | CY7C199 N676H1 | |
| 156 | | 2G| |
| 157 | |CN3 | |
| 158 | | HYC2485S | |
| 159 | | XC5204 XC5210 | |
| 160 | |CN2 | |
| 161 | | CN1 | |
| 162 | |------------------------| |
| 163 | Notes: |
| 164 | CN1 - Connector joining to CPU board CN4 |
| 165 | CN2/3 - RCA jacks for network cable |
| 166 | 2G - Small SOIC8 chip with number 0038323 at location 2G. An identical chip is present on |
| 167 | *some* Hornet games on the GN715 CPU board at location 30C. It may be a PIC or EEPROM. |
| 168 | On Hornet, the chip seems to refresh the data in the Timekeeper RAM when the battery |
| 169 | dies and keeps the game working. It's purpose on the network board is unknown but it may |
| 170 | 'upgrade' the data in the NVRAM to the network version of the game for a twin cabinet set-up. |
| 171 | HYC2485S - Hybrid ceramic module for RS485 |
| 172 | CY7C199 - 32k x8 SRAM |
| 173 | XC5204 - Xilinx XC5204 FPGA |
| 174 | XC5210 - Xilink XC5210 FPGA |
| 175 | N676H1 - PALCE16V8Q-15 stamped 'N676H1' |
| 176 | |
| 177 | |
| 178 | Bottom Board (VIDEO PCB) |
| 146 | 179 | GN676 PWB(B)B |
| 147 | 180 | |-------------------------------------------------------------------------------------------| |
| 148 | 181 | |CN4 CN2 CN8 CN6 CN5| |
| r243488 | r243489 | |
| 182 | 215 | TEXELFX - 3DFX 500-0004-02 BD0665.1 TMU (QFP208) |
| 183 | 216 | PIXELFX - 3DFX 500-0003-03 F001701.1 FBI (QFP240) |
| 184 | 217 | 001604 - Konami Custom (QFP208) |
| 185 | | MC44200FT - Motorola MC44200FT 3 Channel Video D/A Converter (QFP44) |
| 218 | MC44200FT - Motorola MC44200FT 3 Channel Video D/A Converter (QFP44) |
| 186 | 219 | MACH111 - AMD MACH111 CPLD (Stamped '03161A', PLCC44) |
| 187 | | PLCC44_SOCKET- empty PLCC44 socket |
| 220 | PLCC44_SOCKET - empty PLCC44 socket |
| 188 | 221 | AV9170 - Integrated Circuit Systems Inc. Clock Multiplier (SOIC8) |
| 189 | 222 | AM7201 - AMD AM7201 FIFO (PLCC32) |
| 190 | 223 | PAL1 - AMD PALCE16V8 (stamped 'N676B4', DIP20) |
| 191 | 224 | PAL2 - AMD PALCE16V8 (stamped 'N676B5', DIP20) |
| 192 | 225 | PAL3 - AMD PALCE16V8 (stamped 'N676B2', DIP20) |
| 193 | | JP1 - SLV O O-O MST,TWN |
| 194 | | JP2 - SLV O O-O MST |
| 226 | JP1 - SLV O O-O MST,TWN (sets board to MASTER TWIN or SLAVE) |
| 227 | JP2 - SLV O O-O MST (sets board to MASTER or SLAVE) |
| 195 | 228 | CN1 - 96 Pin joining connector to upper PCB |
| 196 | 229 | CN2 - 8-Pin 24kHz RGB OUT |
| 197 | 230 | CN3 - 15-Pin DSUB VGA Video MAIN OUT |
| r243488 | r243489 | |
| 203 | 236 | |
| 204 | 237 | ROM Usage |
| 205 | 238 | --------- |
| 206 | | |------ ROM Locations -------| |
| 239 | |------ ROM Locations -------| |
| 207 | 240 | Game 8X 8Y 16X 16Y |
| 208 | 241 | ------------------------------------------- |
| 209 | 242 | Racing Jam 676A13 - 676A14 - |
trunk/src/mame/drivers/quizpani.c
| r243488 | r243489 | |
| 58 | 58 | AM_RANGE(0x10000a, 0x10000b) AM_READ_PORT("DSW2") |
| 59 | 59 | AM_RANGE(0x100014, 0x100015) AM_WRITENOP /* screen flipping? */ |
| 60 | 60 | AM_RANGE(0x100016, 0x100017) AM_WRITENOP /* IRQ enable? */ |
| 61 | | AM_RANGE(0x100018, 0x100019) AM_WRITE(quizpani_tilesbank_w) |
| 61 | AM_RANGE(0x100018, 0x100019) AM_WRITE(tilesbank_w) |
| 62 | 62 | AM_RANGE(0x104000, 0x104001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) |
| 63 | 63 | AM_RANGE(0x104020, 0x104027) AM_DEVWRITE8("nmk112", nmk112_device, okibank_w, 0x00ff) |
| 64 | 64 | AM_RANGE(0x108000, 0x1083ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") |
| 65 | 65 | AM_RANGE(0x108400, 0x1085ff) AM_WRITENOP |
| 66 | 66 | AM_RANGE(0x10c000, 0x10c007) AM_RAM AM_SHARE("scrollreg") |
| 67 | 67 | AM_RANGE(0x10c008, 0x10c403) AM_WRITENOP |
| 68 | | AM_RANGE(0x110000, 0x113fff) AM_RAM_WRITE(quizpani_bg_videoram_w) AM_SHARE("bg_videoram") |
| 69 | | AM_RANGE(0x11c000, 0x11ffff) AM_RAM_WRITE(quizpani_txt_videoram_w) AM_SHARE("txt_videoram") |
| 68 | AM_RANGE(0x110000, 0x113fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram") |
| 69 | AM_RANGE(0x11c000, 0x11ffff) AM_RAM_WRITE(txt_videoram_w) AM_SHARE("txt_videoram") |
| 70 | 70 | AM_RANGE(0x180000, 0x18ffff) AM_RAM |
| 71 | 71 | AM_RANGE(0x200000, 0x33ffff) AM_ROM |
| 72 | 72 | ADDRESS_MAP_END |
| r243488 | r243489 | |
| 202 | 202 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| 203 | 203 | MCFG_SCREEN_SIZE(64*8, 32*8) |
| 204 | 204 | MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 0*8, 28*8-1) |
| 205 | | MCFG_SCREEN_UPDATE_DRIVER(quizpani_state, screen_update_quizpani) |
| 205 | MCFG_SCREEN_UPDATE_DRIVER(quizpani_state, screen_update) |
| 206 | 206 | MCFG_SCREEN_PALETTE("palette") |
| 207 | 207 | |
| 208 | 208 | |
| r243488 | r243489 | |
| 242 | 242 | ROM_LOAD( "qz8.121", 0x200, 0x100, CRC(b4c19741) SHA1(a6d3686bad6ef2336463b89bc2d249003d9b4bcc) ) /* unknown */ |
| 243 | 243 | ROM_END |
| 244 | 244 | |
| 245 | | GAME( 1993, quizpani, 0, quizpani, quizpani, driver_device, 0, ROT0, "NMK", "Quiz Panicuru Fantasy", 0 ) |
| 245 | GAME( 1993, quizpani, 0, quizpani, quizpani, driver_device, 0, ROT0, "NMK", "Quiz Panicuru Fantasy", GAME_SUPPORTS_SAVE ) |
trunk/src/mame/drivers/vamphalf.c
| r243488 | r243489 | |
| 163 | 163 | DECLARE_WRITE32_MEMBER(wyvernwg_snd_w); |
| 164 | 164 | DECLARE_WRITE16_MEMBER(misncrft_snd_w); |
| 165 | 165 | |
| 166 | | DECLARE_READ32_MEMBER(yorizori_1c_r); |
| 167 | | DECLARE_WRITE32_MEMBER(yorizori_1c_w); |
| 168 | | DECLARE_READ32_MEMBER(yorizori_10_r); |
| 166 | DECLARE_READ32_MEMBER(yorijori_1c_r); |
| 167 | DECLARE_WRITE32_MEMBER(yorijori_1c_w); |
| 168 | DECLARE_READ32_MEMBER(yorijori_10_r); |
| 169 | 169 | |
| 170 | 170 | DECLARE_READ8_MEMBER(qs1000_p1_r); |
| 171 | 171 | DECLARE_WRITE8_MEMBER(qs1000_p3_w); |
| r243488 | r243489 | |
| 187 | 187 | DECLARE_DRIVER_INIT(misncrft); |
| 188 | 188 | DECLARE_DRIVER_INIT(boonggab); |
| 189 | 189 | DECLARE_DRIVER_INIT(wyvernwg); |
| 190 | | DECLARE_DRIVER_INIT(yorizori); |
| 190 | DECLARE_DRIVER_INIT(yorijori); |
| 191 | 191 | UINT32 screen_update_common(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 192 | 192 | UINT32 screen_update_aoh(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 193 | 193 | void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap); |
| r243488 | r243489 | |
| 377 | 377 | } |
| 378 | 378 | } |
| 379 | 379 | |
| 380 | | READ32_MEMBER(vamphalf_state::yorizori_10_r) |
| 380 | READ32_MEMBER(vamphalf_state::yorijori_10_r) |
| 381 | 381 | { |
| 382 | | printf("yorizori_10_r %08x\n", space.device().safe_pc()); |
| 382 | printf("yorijori_10_r %08x\n", space.device().safe_pc()); |
| 383 | 383 | return 0xffffffff; |
| 384 | 384 | } |
| 385 | | READ32_MEMBER(vamphalf_state::yorizori_1c_r) |
| 385 | READ32_MEMBER(vamphalf_state::yorijori_1c_r) |
| 386 | 386 | { |
| 387 | | // printf("yorizori_1c_r %08x\n", space.device().safe_pc()); |
| 387 | // printf("yorijori_1c_r %08x\n", space.device().safe_pc()); |
| 388 | 388 | return 0x00;// 0xaa; |
| 389 | 389 | } |
| 390 | | WRITE32_MEMBER(vamphalf_state::yorizori_1c_w) |
| 390 | WRITE32_MEMBER(vamphalf_state::yorijori_1c_w) |
| 391 | 391 | { |
| 392 | | // printf("yorizori_1c_w %08x %08x\n", space.device().safe_pc(), data); |
| 392 | // printf("yorijori_1c_w %08x %08x\n", space.device().safe_pc(), data); |
| 393 | 393 | } |
| 394 | 394 | |
| 395 | 395 | WRITE32_MEMBER( vamphalf_state::wyvernwg_snd_w ) |
| r243488 | r243489 | |
| 434 | 434 | AM_RANGE(0xfff00000, 0xffffffff) AM_ROM AM_REGION("user1",0) |
| 435 | 435 | ADDRESS_MAP_END |
| 436 | 436 | |
| 437 | | static ADDRESS_MAP_START( yorizori_32bit_map, AS_PROGRAM, 32, vamphalf_state ) |
| 437 | static ADDRESS_MAP_START( yorijori_32bit_map, AS_PROGRAM, 32, vamphalf_state ) |
| 438 | 438 | AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("wram32") |
| 439 | 439 | AM_RANGE(0x40000000, 0x4003ffff) AM_RAM AM_SHARE("tiles32") |
| 440 | 440 | AM_RANGE(0x80000000, 0x8000ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") |
| r243488 | r243489 | |
| 584 | 584 | ADDRESS_MAP_END |
| 585 | 585 | |
| 586 | 586 | |
| 587 | | static ADDRESS_MAP_START( yorizori_io, AS_IO, 32, vamphalf_state ) |
| 588 | | AM_RANGE(0x010, 0x013) AM_READ(yorizori_10_r) |
| 589 | | AM_RANGE(0x01c, 0x01f) AM_READWRITE(yorizori_1c_r,yorizori_1c_w) |
| 587 | static ADDRESS_MAP_START( yorijori_io, AS_IO, 32, vamphalf_state ) |
| 588 | AM_RANGE(0x010, 0x013) AM_READ(yorijori_10_r) |
| 589 | AM_RANGE(0x01c, 0x01f) AM_READWRITE(yorijori_1c_r,yorijori_1c_w) |
| 590 | 590 | ADDRESS_MAP_END |
| 591 | 591 | |
| 592 | 592 | /* |
| r243488 | r243489 | |
| 1160 | 1160 | MCFG_FRAGMENT_ADD(sound_ym_oki) |
| 1161 | 1161 | MACHINE_CONFIG_END |
| 1162 | 1162 | |
| 1163 | | static MACHINE_CONFIG_DERIVED( yorizori, common ) |
| 1163 | static MACHINE_CONFIG_DERIVED( yorijori, common ) |
| 1164 | 1164 | MCFG_CPU_REPLACE("maincpu", E132T, XTAL_50MHz) /* 50 MHz */ |
| 1165 | | MCFG_CPU_PROGRAM_MAP(yorizori_32bit_map) |
| 1166 | | MCFG_CPU_IO_MAP(yorizori_io) |
| 1165 | MCFG_CPU_PROGRAM_MAP(yorijori_32bit_map) |
| 1166 | MCFG_CPU_IO_MAP(yorijori_io) |
| 1167 | 1167 | MCFG_CPU_VBLANK_INT_DRIVER("screen", vamphalf_state, irq1_line_hold) |
| 1168 | 1168 | |
| 1169 | 1169 | MCFG_FRAGMENT_ADD(sound_qs1000) |
| r243488 | r243489 | |
| 2001 | 2001 | |
| 2002 | 2002 | /* |
| 2003 | 2003 | |
| 2004 | | Yori Zori Kuk Kuk |
| 2004 | Yori Jori Kuk Kuk |
| 2005 | 2005 | |
| 2006 | 2006 | |
| 2007 | 2007 | PCB Layout |
| r243488 | r243489 | |
| 2073 | 2073 | |
| 2074 | 2074 | */ |
| 2075 | 2075 | |
| 2076 | | ROM_START( yorizori ) |
| 2076 | ROM_START( yorijori ) |
| 2077 | 2077 | ROM_REGION32_BE( 0x200000, "user1", ROMREGION_ERASE00 ) /* Hyperstone CPU Code */ |
| 2078 | 2078 | ROM_LOAD( "prg1", 0x000000, 0x200000, CRC(0e04eb40) SHA1(0cec9dc91aaf9cf7c459c7baac200cf0fcfddc18) ) |
| 2079 | 2079 | |
| r243488 | r243489 | |
| 2762 | 2762 | membank("qs1000:data")->configure_entries(0, 16, memregion("qs1000:cpu")->base()+0x100, 0x8000-0x100); |
| 2763 | 2763 | } |
| 2764 | 2764 | |
| 2765 | | DRIVER_INIT_MEMBER(vamphalf_state,yorizori) |
| 2765 | DRIVER_INIT_MEMBER(vamphalf_state,yorijori) |
| 2766 | 2766 | { |
| 2767 | 2767 | // seesm close to Final Godori in terms of port mappings, possibly a SemiCom game? |
| 2768 | 2768 | |
| r243488 | r243489 | |
| 2895 | 2895 | GAME( 2001, wyvernwga, wivernwg, wyvernwg, common, vamphalf_state, wyvernwg, ROT270, "SemiCom (Game Vision license)", "Wyvern Wings (set 2)", GAME_IMPERFECT_SOUND ) |
| 2896 | 2896 | GAME( 2001, aoh, 0, aoh, aoh, vamphalf_state, aoh, ROT0, "Unico", "Age Of Heroes - Silkroad 2 (v0.63 - 2001/02/07)", 0 ) |
| 2897 | 2897 | GAME( 2001, boonggab, 0, boonggab, boonggab, vamphalf_state, boonggab, ROT270, "Taff System", "Boong-Ga Boong-Ga (Spank'em!)", 0 ) |
| 2898 | | GAME( 199?, yorizori, 0, yorizori, common, vamphalf_state, yorizori, ROT0, "<unknown>", "Yori Zori Kuk Kuk", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND ) |
| 2898 | GAME( 199?, yorijori, 0, yorijori, common, vamphalf_state, yorijori, ROT0, "Golden Bell Entertainment", "Yori Jori Kuk Kuk", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND ) |
trunk/src/mame/drivers/wrally.c
| r243488 | r243489 | |
| 103 | 103 | |
| 104 | 104 | static ADDRESS_MAP_START( wrally_map, AS_PROGRAM, 16, wrally_state ) |
| 105 | 105 | AM_RANGE(0x000000, 0x0fffff) AM_ROM /* ROM */ |
| 106 | | AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(wrally_vram_w) AM_SHARE("videoram") /* encrypted Video RAM */ |
| 106 | AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(vram_w) AM_SHARE("videoram") /* encrypted Video RAM */ |
| 107 | 107 | AM_RANGE(0x108000, 0x108007) AM_RAM AM_SHARE("vregs") /* Video Registers */ |
| 108 | 108 | AM_RANGE(0x10800c, 0x10800d) AM_WRITENOP /* CLR INT Video */ |
| 109 | 109 | AM_RANGE(0x200000, 0x203fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") /* Palette */ |
| r243488 | r243489 | |
| 112 | 112 | AM_RANGE(0x700002, 0x700003) AM_READ_PORT("P1_P2") |
| 113 | 113 | AM_RANGE(0x700004, 0x700005) AM_READ_PORT("WHEEL") |
| 114 | 114 | AM_RANGE(0x700008, 0x700009) AM_READ_PORT("SYSTEM") |
| 115 | | AM_RANGE(0x70000c, 0x70000d) AM_WRITE(OKIM6295_bankswitch_w) /* OKI6295 bankswitch */ |
| 115 | AM_RANGE(0x70000c, 0x70000d) AM_WRITE(okim6295_bankswitch_w) /* OKI6295 bankswitch */ |
| 116 | 116 | AM_RANGE(0x70000e, 0x70000f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) /* OKI6295 status/data register */ |
| 117 | 117 | AM_RANGE(0x70000a, 0x70001b) AM_WRITE(wrally_coin_lockout_w) /* Coin lockouts */ |
| 118 | 118 | AM_RANGE(0x70002a, 0x70003b) AM_WRITE(wrally_coin_counter_w) /* Coin counters */ |
| 119 | 119 | AM_RANGE(0x70004a, 0x70004b) AM_WRITENOP /* Sound muting */ |
| 120 | | AM_RANGE(0x70005a, 0x70005b) AM_WRITE(wrally_flipscreen_w) /* Flip screen */ |
| 120 | AM_RANGE(0x70005a, 0x70005b) AM_WRITE(flipscreen_w) /* Flip screen */ |
| 121 | 121 | AM_RANGE(0x70006a, 0x70007b) AM_WRITENOP /* ??? */ |
| 122 | 122 | AM_RANGE(0xfec000, 0xfeffff) AM_RAM AM_SHARE("shareram") /* Work RAM (shared with DS5002FP) */ |
| 123 | 123 | ADDRESS_MAP_END |
| r243488 | r243489 | |
| 255 | 255 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ |
| 256 | 256 | MCFG_SCREEN_SIZE(64*16, 32*16) |
| 257 | 257 | MCFG_SCREEN_VISIBLE_AREA(8, 24*16-8-1, 16, 16*16-8-1) |
| 258 | | MCFG_SCREEN_UPDATE_DRIVER(wrally_state, screen_update_wrally) |
| 258 | MCFG_SCREEN_UPDATE_DRIVER(wrally_state, screen_update) |
| 259 | 259 | MCFG_SCREEN_PALETTE("palette") |
| 260 | 260 | |
| 261 | 261 | MCFG_GFXDECODE_ADD("gfxdecode", "palette", wrally) |
| r243488 | r243489 | |
| 352 | 352 | ROM_END |
| 353 | 353 | |
| 354 | 354 | |
| 355 | | GAME( 1993, wrally, 0, wrally, wrally, driver_device, 0, ROT0, "Gaelco", "World Rally (set 1)", 0 ) /* Dallas DS5002FP power failure shows as: "Tension baja " */ |
| 356 | | GAME( 1993, wrallya, wrally, wrally, wrally, driver_device, 0, ROT0, "Gaelco", "World Rally (set 2)", 0 ) /* Dallas DS5002FP power failure shows as: "Power Failure" */ |
| 357 | | GAME( 1993, wrallyb, wrally, wrally, wrally, driver_device, 0, ROT0, "Gaelco (Atari license)", "World Rally (US, 930217)", 0 ) |
| 355 | GAME( 1993, wrally, 0, wrally, wrally, driver_device, 0, ROT0, "Gaelco", "World Rally (set 1)", GAME_SUPPORTS_SAVE ) /* Dallas DS5002FP power failure shows as: "Tension baja " */ |
| 356 | GAME( 1993, wrallya, wrally, wrally, wrally, driver_device, 0, ROT0, "Gaelco", "World Rally (set 2)", GAME_SUPPORTS_SAVE ) /* Dallas DS5002FP power failure shows as: "Power Failure" */ |
| 357 | GAME( 1993, wrallyb, wrally, wrally, wrally, driver_device, 0, ROT0, "Gaelco (Atari license)", "World Rally (US, 930217)", GAME_SUPPORTS_SAVE ) |
trunk/src/mame/drivers/xorworld.c
| r243488 | r243489 | |
| 62 | 62 | m_eeprom->di_write(data & 0x01); |
| 63 | 63 | } |
| 64 | 64 | |
| 65 | | WRITE16_MEMBER(xorworld_state::xorworld_irq2_ack_w) |
| 65 | WRITE16_MEMBER(xorworld_state::irq2_ack_w) |
| 66 | 66 | { |
| 67 | 67 | m_maincpu->set_input_line(2, CLEAR_LINE); |
| 68 | 68 | } |
| 69 | 69 | |
| 70 | | WRITE16_MEMBER(xorworld_state::xorworld_irq6_ack_w) |
| 70 | WRITE16_MEMBER(xorworld_state::irq6_ack_w) |
| 71 | 71 | { |
| 72 | 72 | m_maincpu->set_input_line(6, CLEAR_LINE); |
| 73 | 73 | } |
| r243488 | r243489 | |
| 77 | 77 | AM_RANGE(0x200000, 0x200001) AM_READ_PORT("P1") |
| 78 | 78 | AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P2") |
| 79 | 79 | AM_RANGE(0x600000, 0x600001) AM_READ_PORT("DSW") |
| 80 | | AM_RANGE(0x800000, 0x800001) AM_DEVWRITE8("saa", saa1099_device, saa1099_data_w, 0x00ff) |
| 81 | | AM_RANGE(0x800002, 0x800003) AM_DEVWRITE8("saa", saa1099_device, saa1099_control_w, 0x00ff) |
| 80 | AM_RANGE(0x800000, 0x800001) AM_DEVWRITE8("saa", saa1099_device, data_w, 0x00ff) |
| 81 | AM_RANGE(0x800002, 0x800003) AM_DEVWRITE8("saa", saa1099_device, control_w, 0x00ff) |
| 82 | 82 | AM_RANGE(0xa00008, 0xa00009) AM_WRITE(eeprom_chip_select_w) |
| 83 | 83 | AM_RANGE(0xa0000a, 0xa0000b) AM_WRITE(eeprom_serial_clock_w) |
| 84 | 84 | AM_RANGE(0xa0000c, 0xa0000d) AM_WRITE(eeprom_data_w) |
| 85 | | AM_RANGE(0xffc000, 0xffc7ff) AM_RAM_WRITE(xorworld_videoram16_w) AM_SHARE("videoram") |
| 85 | AM_RANGE(0xffc000, 0xffc7ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") |
| 86 | 86 | AM_RANGE(0xffc800, 0xffc87f) AM_RAM AM_SHARE("spriteram") |
| 87 | | AM_RANGE(0xffc880, 0xffc881) AM_WRITE(xorworld_irq2_ack_w) |
| 88 | | AM_RANGE(0xffc882, 0xffc883) AM_WRITE(xorworld_irq6_ack_w) |
| 87 | AM_RANGE(0xffc880, 0xffc881) AM_WRITE(irq2_ack_w) |
| 88 | AM_RANGE(0xffc882, 0xffc883) AM_WRITE(irq6_ack_w) |
| 89 | 89 | AM_RANGE(0xffc884, 0xffffff) AM_RAM |
| 90 | 90 | ADDRESS_MAP_END |
| 91 | 91 | |
| r243488 | r243489 | |
| 182 | 182 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) |
| 183 | 183 | MCFG_SCREEN_SIZE(32*8, 32*8) |
| 184 | 184 | MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) |
| 185 | | MCFG_SCREEN_UPDATE_DRIVER(xorworld_state, screen_update_xorworld) |
| 185 | MCFG_SCREEN_UPDATE_DRIVER(xorworld_state, screen_update) |
| 186 | 186 | MCFG_SCREEN_PALETTE("palette") |
| 187 | 187 | |
| 188 | 188 | MCFG_GFXDECODE_ADD("gfxdecode", "palette", xorworld) |
| r243488 | r243489 | |
| 235 | 235 | } |
| 236 | 236 | |
| 237 | 237 | |
| 238 | | GAME( 1990, xorworld, 0, xorworld, xorworld, xorworld_state, xorworld, ROT0, "Gaelco", "Xor World (prototype)", 0 ) |
| 238 | GAME( 1990, xorworld, 0, xorworld, xorworld, xorworld_state, xorworld, ROT0, "Gaelco", "Xor World (prototype)", GAME_SUPPORTS_SAVE ) |
trunk/src/mame/includes/gladiatr.h
| r243488 | r243489 | |
| 5 | 5 | public: |
| 6 | 6 | gladiatr_state(const machine_config &mconfig, device_type type, const char *tag) |
| 7 | 7 | : driver_device(mconfig, type, tag), |
| 8 | | m_nvram(*this, "nvram") , |
| 9 | | m_spriteram(*this, "spriteram"), |
| 10 | | m_videoram(*this, "videoram"), |
| 11 | | m_colorram(*this, "colorram"), |
| 12 | | m_textram(*this, "textram"), |
| 13 | 8 | m_maincpu(*this, "maincpu"), |
| 14 | 9 | m_audiocpu(*this, "audiocpu"), |
| 15 | 10 | m_subcpu(*this, "sub"), |
| 16 | 11 | m_msm(*this, "msm"), |
| 17 | 12 | m_gfxdecode(*this, "gfxdecode"), |
| 18 | 13 | m_palette(*this, "palette"), |
| 19 | | m_generic_paletteram_8(*this, "paletteram") { } |
| 14 | m_nvram(*this, "nvram") , |
| 15 | m_spriteram(*this, "spriteram"), |
| 16 | m_videoram(*this, "videoram"), |
| 17 | m_colorram(*this, "colorram"), |
| 18 | m_textram(*this, "textram"), |
| 19 | m_generic_paletteram_8(*this, "paletteram") { } |
| 20 | |
| 21 | required_device<cpu_device> m_maincpu; |
| 22 | required_device<cpu_device> m_audiocpu; |
| 23 | required_device<cpu_device> m_subcpu; |
| 24 | required_device<msm5205_device> m_msm; |
| 25 | required_device<gfxdecode_device> m_gfxdecode; |
| 26 | required_device<palette_device> m_palette; |
| 20 | 27 | |
| 21 | | required_shared_ptr<UINT8> m_nvram; |
| 28 | required_shared_ptr<UINT8> m_nvram; |
| 22 | 29 | required_shared_ptr<UINT8> m_spriteram; |
| 23 | 30 | required_shared_ptr<UINT8> m_videoram; |
| 24 | 31 | required_shared_ptr<UINT8> m_colorram; |
| 25 | 32 | required_shared_ptr<UINT8> m_textram; |
| 33 | required_shared_ptr<UINT8> m_generic_paletteram_8; |
| 26 | 34 | |
| 27 | 35 | int m_data1; |
| 28 | 36 | int m_data2; |
| r243488 | r243489 | |
| 40 | 48 | int m_fg_tile_bank; |
| 41 | 49 | int m_bg_tile_bank; |
| 42 | 50 | |
| 51 | // common |
| 52 | DECLARE_WRITE8_MEMBER(videoram_w); |
| 53 | DECLARE_WRITE8_MEMBER(colorram_w); |
| 54 | DECLARE_WRITE8_MEMBER(textram_w); |
| 55 | DECLARE_WRITE8_MEMBER(paletteram_w); |
| 56 | DECLARE_WRITE8_MEMBER(spritebuffer_w); |
| 43 | 57 | |
| 44 | | DECLARE_READ8_MEMBER( gladiator_dsw1_r ); |
| 45 | | DECLARE_READ8_MEMBER( gladiator_dsw2_r ); |
| 46 | | DECLARE_READ8_MEMBER( gladiator_controls_r ); |
| 47 | | DECLARE_READ8_MEMBER( gladiator_button3_r ); |
| 48 | | DECLARE_WRITE8_MEMBER(gladiatr_videoram_w); |
| 49 | | DECLARE_WRITE8_MEMBER(gladiatr_colorram_w); |
| 50 | | DECLARE_WRITE8_MEMBER(gladiatr_textram_w); |
| 51 | | DECLARE_WRITE8_MEMBER(gladiatr_paletteram_w); |
| 52 | | DECLARE_WRITE8_MEMBER(gladiatr_spritebuffer_w); |
| 58 | // gladiator specific |
| 59 | DECLARE_READ8_MEMBER(gladiator_dsw1_r); |
| 60 | DECLARE_READ8_MEMBER(gladiator_dsw2_r); |
| 61 | DECLARE_READ8_MEMBER(gladiator_controls_r); |
| 62 | DECLARE_READ8_MEMBER(gladiator_button3_r); |
| 53 | 63 | DECLARE_WRITE8_MEMBER(gladiatr_spritebank_w); |
| 54 | | DECLARE_WRITE8_MEMBER(ppking_video_registers_w); |
| 55 | 64 | DECLARE_WRITE8_MEMBER(gladiatr_video_registers_w); |
| 56 | 65 | DECLARE_WRITE8_MEMBER(gladiatr_bankswitch_w); |
| 57 | | DECLARE_WRITE8_MEMBER(glad_cpu_sound_command_w); |
| 58 | | DECLARE_READ8_MEMBER(glad_cpu_sound_command_r); |
| 66 | DECLARE_WRITE8_MEMBER(gladiator_cpu_sound_command_w); |
| 67 | DECLARE_READ8_MEMBER(gladiator_cpu_sound_command_r); |
| 59 | 68 | DECLARE_WRITE8_MEMBER(gladiatr_flipscreen_w); |
| 60 | 69 | DECLARE_WRITE8_MEMBER(gladiatr_irq_patch_w); |
| 61 | | DECLARE_WRITE8_MEMBER(qx0_w); |
| 62 | | DECLARE_WRITE8_MEMBER(qx1_w); |
| 63 | | DECLARE_WRITE8_MEMBER(qx2_w); |
| 64 | | DECLARE_WRITE8_MEMBER(qx3_w); |
| 65 | | DECLARE_READ8_MEMBER(qx2_r); |
| 66 | | DECLARE_READ8_MEMBER(qx3_r); |
| 67 | | DECLARE_READ8_MEMBER(qx0_r); |
| 68 | | DECLARE_READ8_MEMBER(qx1_r); |
| 69 | | DECLARE_READ8_MEMBER(f6a3_r); |
| 70 | 70 | DECLARE_WRITE8_MEMBER(gladiator_int_control_w); |
| 71 | | DECLARE_WRITE8_MEMBER(glad_adpcm_w); |
| 72 | | DECLARE_READ8_MEMBER(f1_r); |
| 71 | DECLARE_WRITE8_MEMBER(gladiator_adpcm_w); |
| 72 | DECLARE_WRITE_LINE_MEMBER(gladiator_ym_irq); |
| 73 | |
| 74 | // ppking specific |
| 75 | DECLARE_READ8_MEMBER(ppking_f1_r); |
| 76 | DECLARE_READ8_MEMBER(ppking_f6a3_r); |
| 77 | DECLARE_WRITE8_MEMBER(ppking_qx0_w); |
| 78 | DECLARE_WRITE8_MEMBER(ppking_qx1_w); |
| 79 | DECLARE_WRITE8_MEMBER(ppking_qx2_w); |
| 80 | DECLARE_WRITE8_MEMBER(ppking_qx3_w); |
| 81 | DECLARE_READ8_MEMBER(ppking_qx2_r); |
| 82 | DECLARE_READ8_MEMBER(ppking_qx3_r); |
| 83 | DECLARE_READ8_MEMBER(ppking_qx0_r); |
| 84 | DECLARE_READ8_MEMBER(ppking_qx1_r); |
| 85 | DECLARE_WRITE8_MEMBER(ppking_video_registers_w); |
| 86 | |
| 73 | 87 | DECLARE_DRIVER_INIT(gladiatr); |
| 74 | 88 | DECLARE_DRIVER_INIT(ppking); |
| 89 | |
| 75 | 90 | TILE_GET_INFO_MEMBER(bg_get_tile_info); |
| 76 | 91 | TILE_GET_INFO_MEMBER(fg_get_tile_info); |
| 92 | |
| 77 | 93 | DECLARE_MACHINE_RESET(ppking); |
| 78 | 94 | DECLARE_VIDEO_START(ppking); |
| 79 | 95 | DECLARE_MACHINE_RESET(gladiator); |
| 80 | 96 | DECLARE_VIDEO_START(gladiatr); |
| 97 | |
| 81 | 98 | UINT32 screen_update_ppking(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 82 | 99 | UINT32 screen_update_gladiatr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 83 | 100 | void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 84 | 101 | void swap_block(UINT8 *src1,UINT8 *src2,int len); |
| 85 | | DECLARE_WRITE_LINE_MEMBER(gladiator_ym_irq); |
| 86 | | required_device<cpu_device> m_maincpu; |
| 87 | | required_device<cpu_device> m_audiocpu; |
| 88 | | required_device<cpu_device> m_subcpu; |
| 89 | | required_device<msm5205_device> m_msm; |
| 90 | | required_device<gfxdecode_device> m_gfxdecode; |
| 91 | | required_device<palette_device> m_palette; |
| 92 | | required_shared_ptr<UINT8> m_generic_paletteram_8; |
| 93 | 102 | }; |
trunk/src/mame/includes/gsword.h
| r243488 | r243489 | |
| 1 | #include "sound/ay8910.h" |
| 1 | 2 | #include "sound/msm5205.h" |
| 2 | 3 | |
| 3 | 4 | class gsword_state : public driver_device |
| r243488 | r243489 | |
| 5 | 6 | public: |
| 6 | 7 | gsword_state(const machine_config &mconfig, device_type type, const char *tag) |
| 7 | 8 | : driver_device(mconfig, type, tag), |
| 8 | | m_spritetile_ram(*this, "spritetile_ram"), |
| 9 | | m_spritexy_ram(*this, "spritexy_ram"), |
| 10 | | m_spriteattrib_ram(*this, "spriteattram"), |
| 11 | | m_videoram(*this, "videoram"), |
| 12 | | m_cpu2_ram(*this, "cpu2_ram"), |
| 13 | 9 | m_maincpu(*this, "maincpu"), |
| 14 | 10 | m_audiocpu(*this, "audiocpu"), |
| 15 | 11 | m_subcpu(*this, "sub"), |
| 12 | m_ay0(*this, "ay1"), |
| 13 | m_ay1(*this, "ay2"), |
| 16 | 14 | m_msm(*this, "msm"), |
| 17 | 15 | m_gfxdecode(*this, "gfxdecode"), |
| 18 | | m_palette(*this, "palette") { } |
| 16 | m_palette(*this, "palette"), |
| 17 | m_spritetile_ram(*this, "spritetile_ram"), |
| 18 | m_spritexy_ram(*this, "spritexy_ram"), |
| 19 | m_spriteattrib_ram(*this, "spriteattram"), |
| 20 | m_videoram(*this, "videoram"), |
| 21 | m_cpu2_ram(*this, "cpu2_ram") { } |
| 19 | 22 | |
| 23 | required_device<cpu_device> m_maincpu; |
| 24 | required_device<cpu_device> m_audiocpu; |
| 25 | optional_device<cpu_device> m_subcpu; |
| 26 | required_device<ay8910_device> m_ay0; |
| 27 | required_device<ay8910_device> m_ay1; |
| 28 | optional_device<msm5205_device> m_msm; |
| 29 | required_device<gfxdecode_device> m_gfxdecode; |
| 30 | required_device<palette_device> m_palette; |
| 31 | |
| 20 | 32 | required_shared_ptr<UINT8> m_spritetile_ram; |
| 21 | 33 | required_shared_ptr<UINT8> m_spritexy_ram; |
| 22 | 34 | required_shared_ptr<UINT8> m_spriteattrib_ram; |
| 23 | 35 | required_shared_ptr<UINT8> m_videoram; |
| 24 | 36 | required_shared_ptr<UINT8> m_cpu2_ram; |
| 25 | 37 | |
| 26 | | int m_coins; |
| 38 | int m_coins; //currently initialized but not used |
| 27 | 39 | int m_fake8910_0; |
| 28 | 40 | int m_fake8910_1; |
| 29 | 41 | int m_nmi_enable; |
| r243488 | r243489 | |
| 33 | 45 | int m_flipscreen; |
| 34 | 46 | tilemap_t *m_bg_tilemap; |
| 35 | 47 | |
| 36 | | DECLARE_WRITE8_MEMBER(gsword_videoram_w); |
| 37 | | DECLARE_WRITE8_MEMBER(gsword_charbank_w); |
| 38 | | DECLARE_WRITE8_MEMBER(gsword_videoctrl_w); |
| 39 | | DECLARE_WRITE8_MEMBER(gsword_scroll_w); |
| 48 | // common |
| 49 | DECLARE_WRITE8_MEMBER(videoram_w); |
| 50 | DECLARE_WRITE8_MEMBER(charbank_w); |
| 51 | DECLARE_WRITE8_MEMBER(videoctrl_w); |
| 52 | DECLARE_WRITE8_MEMBER(scroll_w); |
| 53 | DECLARE_WRITE8_MEMBER(adpcm_soundcommand_w); |
| 54 | DECLARE_WRITE8_MEMBER(nmi_set_w); |
| 55 | DECLARE_WRITE8_MEMBER(ay8910_control_port_0_w); |
| 56 | DECLARE_WRITE8_MEMBER(ay8910_control_port_1_w); |
| 57 | DECLARE_READ8_MEMBER(fake_0_r); |
| 58 | DECLARE_READ8_MEMBER(fake_1_r); |
| 59 | |
| 60 | // gsword specific |
| 40 | 61 | DECLARE_READ8_MEMBER(gsword_hack_r); |
| 41 | | DECLARE_WRITE8_MEMBER(adpcm_soundcommand_w); |
| 42 | | DECLARE_WRITE8_MEMBER(gsword_nmi_set_w); |
| 43 | | DECLARE_WRITE8_MEMBER(gsword_AY8910_control_port_0_w); |
| 44 | | DECLARE_WRITE8_MEMBER(gsword_AY8910_control_port_1_w); |
| 45 | | DECLARE_READ8_MEMBER(gsword_fake_0_r); |
| 46 | | DECLARE_READ8_MEMBER(gsword_fake_1_r); |
| 47 | | DECLARE_READ8_MEMBER( gsword_8741_2_r ); |
| 48 | | DECLARE_READ8_MEMBER( gsword_8741_3_r ); |
| 49 | 62 | DECLARE_WRITE8_MEMBER(gsword_adpcm_data_w); |
| 63 | DECLARE_READ8_MEMBER(gsword_8741_2_r); |
| 64 | DECLARE_READ8_MEMBER(gsword_8741_3_r); |
| 65 | |
| 66 | TILE_GET_INFO_MEMBER(get_bg_tile_info); |
| 67 | |
| 50 | 68 | DECLARE_DRIVER_INIT(gsword); |
| 51 | 69 | DECLARE_DRIVER_INIT(gsword2); |
| 52 | | TILE_GET_INFO_MEMBER(get_bg_tile_info); |
| 70 | virtual void machine_start(); |
| 71 | virtual void machine_reset(); |
| 53 | 72 | virtual void video_start(); |
| 54 | | DECLARE_MACHINE_RESET(gsword); |
| 55 | 73 | DECLARE_PALETTE_INIT(gsword); |
| 56 | | DECLARE_MACHINE_RESET(josvolly); |
| 57 | 74 | DECLARE_PALETTE_INIT(josvolly); |
| 75 | |
| 58 | 76 | UINT32 screen_update_gsword(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 59 | 77 | INTERRUPT_GEN_MEMBER(gsword_snd_interrupt); |
| 60 | 78 | void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 61 | | int gsword_coins_in(void); |
| 62 | | required_device<cpu_device> m_maincpu; |
| 63 | | required_device<cpu_device> m_audiocpu; |
| 64 | | optional_device<cpu_device> m_subcpu; |
| 65 | | optional_device<msm5205_device> m_msm; |
| 66 | | required_device<gfxdecode_device> m_gfxdecode; |
| 67 | | required_device<palette_device> m_palette; |
| 79 | int coins_in(void); //if 0'd |
| 68 | 80 | }; |
trunk/src/mame/includes/wrally.h
| r243488 | r243489 | |
| 3 | 3 | public: |
| 4 | 4 | wrally_state(const machine_config &mconfig, device_type type, const char *tag) |
| 5 | 5 | : driver_device(mconfig, type, tag), |
| 6 | m_maincpu(*this, "maincpu"), |
| 7 | m_gfxdecode(*this, "gfxdecode"), |
| 8 | m_palette(*this, "palette"), |
| 6 | 9 | m_videoram(*this, "videoram"), |
| 7 | 10 | m_vregs(*this, "vregs"), |
| 8 | 11 | m_spriteram(*this, "spriteram"), |
| 9 | | m_shareram(*this, "shareram"), |
| 10 | | m_maincpu(*this, "maincpu"), |
| 11 | | m_gfxdecode(*this, "gfxdecode"), |
| 12 | | m_palette(*this, "palette") { } |
| 12 | m_shareram(*this, "shareram") { } |
| 13 | 13 | |
| 14 | | tilemap_t *m_pant[2]; |
| 14 | required_device<cpu_device> m_maincpu; |
| 15 | required_device<gfxdecode_device> m_gfxdecode; |
| 16 | required_device<palette_device> m_palette; |
| 17 | |
| 15 | 18 | required_shared_ptr<UINT16> m_videoram; |
| 16 | 19 | required_shared_ptr<UINT16> m_vregs; |
| 17 | 20 | required_shared_ptr<UINT16> m_spriteram; |
| 18 | 21 | required_shared_ptr<UINT16> m_shareram; |
| 22 | |
| 23 | tilemap_t *m_pant[2]; |
| 19 | 24 | |
| 20 | 25 | DECLARE_READ8_MEMBER(dallas_share_r); |
| 21 | 26 | DECLARE_WRITE8_MEMBER(dallas_share_w); |
| 22 | | DECLARE_WRITE16_MEMBER(wrally_vram_w); |
| 23 | | DECLARE_WRITE16_MEMBER(wrally_flipscreen_w); |
| 24 | | DECLARE_WRITE16_MEMBER(OKIM6295_bankswitch_w); |
| 27 | DECLARE_WRITE16_MEMBER(vram_w); |
| 28 | DECLARE_WRITE16_MEMBER(flipscreen_w); |
| 29 | DECLARE_WRITE16_MEMBER(okim6295_bankswitch_w); |
| 25 | 30 | DECLARE_WRITE16_MEMBER(wrally_coin_counter_w); |
| 26 | 31 | DECLARE_WRITE16_MEMBER(wrally_coin_lockout_w); |
| 27 | | TILE_GET_INFO_MEMBER(get_tile_info_wrally_screen0); |
| 28 | | TILE_GET_INFO_MEMBER(get_tile_info_wrally_screen1); |
| 32 | |
| 33 | TILE_GET_INFO_MEMBER(get_tile_info_screen0); |
| 34 | TILE_GET_INFO_MEMBER(get_tile_info_screen1); |
| 35 | |
| 29 | 36 | virtual void video_start(); |
| 30 | | UINT32 screen_update_wrally(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 37 | |
| 38 | UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 31 | 39 | void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int priority); |
| 32 | | required_device<cpu_device> m_maincpu; |
| 33 | | required_device<gfxdecode_device> m_gfxdecode; |
| 34 | | required_device<palette_device> m_palette; |
| 35 | 40 | }; |
trunk/src/mess/drivers/alesis.c
| r243488 | r243489 | |
| 8 | 8 | |
| 9 | 9 | http://www.vintagesynth.com/misc/hr16.php |
| 10 | 10 | http://www.vintagesynth.com/misc/sr16.php |
| 11 | http://www.vintagesynth.com/misc/mmt8.php |
| 11 | 12 | |
| 12 | 13 | ****************************************************************************/ |
| 13 | 14 | |
| r243488 | r243489 | |
| 73 | 74 | m_lcdc->write(space, BIT(m_kb_matrix,7), data); |
| 74 | 75 | } |
| 75 | 76 | |
| 77 | WRITE8_MEMBER( alesis_state::mmt8_led_w ) |
| 78 | { |
| 79 | output_set_value("play_led", data & 0x01 ? 0 : 1); |
| 80 | output_set_value("record_led" , data & 0x02 ? 0 : 1); |
| 81 | output_set_value("part_led", data & 0x04 ? 0 : 1); |
| 82 | output_set_value("edit_led", data & 0x08 ? 0 : 1); |
| 83 | output_set_value("song_led", data & 0x10 ? 0 : 1); |
| 84 | output_set_value("echo_led", data & 0x20 ? 0 : 1); |
| 85 | output_set_value("loop_led", data & 0x40 ? 0 : 1); |
| 86 | |
| 87 | m_leds = data; |
| 88 | } |
| 89 | |
| 90 | READ8_MEMBER( alesis_state::mmt8_led_r ) |
| 91 | { |
| 92 | return m_leds; |
| 93 | } |
| 94 | |
| 95 | WRITE8_MEMBER( alesis_state::track_led_w ) |
| 96 | { |
| 97 | for (int i=0; i<8; i++) |
| 98 | output_set_indexed_value("track_led", i + 1, BIT(data, i)); |
| 99 | } |
| 100 | |
| 101 | READ8_MEMBER( alesis_state::mmt8_p3_r ) |
| 102 | { |
| 103 | // ---- -x-- Tape in |
| 104 | // ---- x--- Start/Stop input |
| 105 | UINT8 data = 0xff; |
| 106 | |
| 107 | data &= ~(m_cassette->input() > 0.01 ? 0x00 : 0x04); |
| 108 | |
| 109 | return data; |
| 110 | } |
| 111 | |
| 112 | WRITE8_MEMBER( alesis_state::mmt8_p3_w ) |
| 113 | { |
| 114 | // ---x ---- Tape out |
| 115 | // --x- ---- Click out |
| 116 | |
| 117 | m_cassette->output(data & 0x10 ? -1.0 : +1.0); |
| 118 | } |
| 119 | |
| 76 | 120 | static ADDRESS_MAP_START(hr16_mem, AS_PROGRAM, 8, alesis_state) |
| 77 | 121 | ADDRESS_MAP_UNMAP_HIGH |
| 78 | 122 | AM_RANGE(0x0000, 0x7fff) AM_MIRROR(0x8000) AM_ROM |
| r243488 | r243489 | |
| 108 | 152 | AM_RANGE(0x8000, 0xffff) AM_RAM AM_SHARE("nvram") // 32Kx8 SRAM, (battery-backed) |
| 109 | 153 | ADDRESS_MAP_END |
| 110 | 154 | |
| 155 | static ADDRESS_MAP_START(mmt8_io, AS_IO, 8, alesis_state) |
| 156 | ADDRESS_MAP_UNMAP_HIGH |
| 157 | AM_RANGE(0xff02, 0xff02) AM_WRITE(track_led_w) |
| 158 | AM_RANGE(0xff04, 0xff04) AM_READWRITE(mmt8_led_r, mmt8_led_w) |
| 159 | AM_RANGE(0xff06, 0xff06) AM_WRITE(kb_matrix_w) |
| 160 | AM_RANGE(0xff08, 0xff09) AM_DEVREADWRITE("hd44780", hd44780_device, read, write) |
| 161 | AM_RANGE(0xff0e, 0xff0e) AM_READNOP |
| 162 | AM_RANGE(MCS51_PORT_P1, MCS51_PORT_P1) AM_READ(kb_r) |
| 163 | AM_RANGE(MCS51_PORT_P2, MCS51_PORT_P2) AM_WRITENOP |
| 164 | AM_RANGE(MCS51_PORT_P3, MCS51_PORT_P3) AM_READWRITE(mmt8_p3_r, mmt8_p3_w) |
| 165 | AM_RANGE(0x0000, 0xffff) AM_RAM AM_SHARE("nvram") // 2x32Kx8 SRAM, (battery-backed) |
| 166 | ADDRESS_MAP_END |
| 167 | |
| 111 | 168 | /* Input ports */ |
| 112 | 169 | static INPUT_PORTS_START( hr16 ) |
| 113 | 170 | PORT_START("COL1") |
| r243488 | r243489 | |
| 169 | 226 | PORT_BIT(0xff, 0x00, IPT_DIAL) PORT_NAME("SELECT Slider") PORT_SENSITIVITY(50) PORT_KEYDELTA(1) PORT_CODE_DEC(KEYCODE_DOWN) PORT_CODE_INC(KEYCODE_UP) |
| 170 | 227 | INPUT_PORTS_END |
| 171 | 228 | |
| 229 | static INPUT_PORTS_START( mmt8 ) |
| 230 | PORT_START("COL1") |
| 231 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("<<") PORT_CODE(KEYCODE_LEFT) |
| 232 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(">>") PORT_CODE(KEYCODE_RIGHT) |
| 233 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("ERASE") PORT_CODE(KEYCODE_DEL) |
| 234 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TRANS") PORT_CODE(KEYCODE_R) |
| 235 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("PLAY") PORT_CODE(KEYCODE_ENTER) |
| 236 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("STOP/CONTINUE") PORT_CODE(KEYCODE_END) |
| 237 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("COPY") PORT_CODE(KEYCODE_C) |
| 238 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("RECORD") PORT_CODE(KEYCODE_HOME) |
| 239 | PORT_START("COL2") |
| 240 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TRACK 1") PORT_CODE(KEYCODE_F1) |
| 241 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TRACK 2") PORT_CODE(KEYCODE_F2) |
| 242 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TRACK 3") PORT_CODE(KEYCODE_F3) |
| 243 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TRACK 4") PORT_CODE(KEYCODE_F4) |
| 244 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TRACK 5") PORT_CODE(KEYCODE_F5) |
| 245 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TRACK 6") PORT_CODE(KEYCODE_F6) |
| 246 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TRACK 7") PORT_CODE(KEYCODE_F7) |
| 247 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TRACK 8") PORT_CODE(KEYCODE_F8) |
| 248 | PORT_START("COL3") |
| 249 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TEMPO") PORT_CODE(KEYCODE_T) |
| 250 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("-") PORT_CODE(KEYCODE_MINUS) |
| 251 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("+") PORT_CODE(KEYCODE_PLUS_PAD) |
| 252 | PORT_BIT(0x38, IP_ACTIVE_LOW, IPT_UNUSED) |
| 253 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("PAGE DOWN") PORT_CODE(KEYCODE_DOWN) |
| 254 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("PAGE UP") PORT_CODE(KEYCODE_UP) |
| 255 | PORT_START("COL4") |
| 256 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("CLICK") PORT_CODE(KEYCODE_G) |
| 257 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("6") PORT_CODE(KEYCODE_6) |
| 258 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("7") PORT_CODE(KEYCODE_7) |
| 259 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("8") PORT_CODE(KEYCODE_8) |
| 260 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("9") PORT_CODE(KEYCODE_9) |
| 261 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("0") PORT_CODE(KEYCODE_0) |
| 262 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("MIDI CHAN") PORT_CODE(KEYCODE_I) |
| 263 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("TAPE") PORT_CODE(KEYCODE_Y) |
| 264 | PORT_START("COL5") |
| 265 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("CLOCK") PORT_CODE(KEYCODE_K) |
| 266 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("1") PORT_CODE(KEYCODE_1) |
| 267 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("2") PORT_CODE(KEYCODE_2) |
| 268 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("3") PORT_CODE(KEYCODE_3) |
| 269 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("4") PORT_CODE(KEYCODE_4) |
| 270 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("5") PORT_CODE(KEYCODE_5) |
| 271 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("SONG") PORT_CODE(KEYCODE_S) |
| 272 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("MERGE") PORT_CODE(KEYCODE_M) |
| 273 | PORT_START("COL6") |
| 274 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("MIDI FILTER") PORT_CODE(KEYCODE_F) |
| 275 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("MIDI ECHO") PORT_CODE(KEYCODE_H) |
| 276 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("LOOP") PORT_CODE(KEYCODE_J) |
| 277 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("QUANT") PORT_CODE(KEYCODE_Q) |
| 278 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("LENGTH") PORT_CODE(KEYCODE_L) |
| 279 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("PART") PORT_CODE(KEYCODE_P) |
| 280 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("EDIT") PORT_CODE(KEYCODE_E) |
| 281 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("NAME") PORT_CODE(KEYCODE_N) |
| 282 | INPUT_PORTS_END |
| 283 | |
| 172 | 284 | static INPUT_PORTS_START( sr16 ) |
| 173 | 285 | PORT_START("COL1") |
| 174 | 286 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("PRESET/USER") PORT_CODE(KEYCODE_U) |
| r243488 | r243489 | |
| 229 | 341 | void alesis_state::machine_reset() |
| 230 | 342 | { |
| 231 | 343 | m_kb_matrix = 0xff; |
| 344 | m_leds = 0; |
| 232 | 345 | memset(m_lcd_digits, 0, sizeof(m_lcd_digits)); |
| 233 | 346 | } |
| 234 | 347 | |
| r243488 | r243489 | |
| 292 | 405 | MCFG_HD44780_PIXEL_UPDATE_CB(sr16_pixel_update) |
| 293 | 406 | MACHINE_CONFIG_END |
| 294 | 407 | |
| 408 | static MACHINE_CONFIG_DERIVED( mmt8, hr16 ) |
| 409 | /* basic machine hardware */ |
| 410 | MCFG_CPU_MODIFY("maincpu") |
| 411 | MCFG_CPU_IO_MAP(mmt8_io) |
| 412 | |
| 413 | MCFG_DEVICE_REMOVE("dm3ag") |
| 414 | MACHINE_CONFIG_END |
| 415 | |
| 295 | 416 | /* ROM definition */ |
| 296 | 417 | ROM_START( hr16 ) |
| 297 | 418 | ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) |
| r243488 | r243489 | |
| 324 | 445 | ROM_LOAD( "2-27-0007.u15", 0x80000, 0x80000, CRC(319746db) SHA1(46b32a3ab2fbad67fb4566f607f578a2e9defd63)) |
| 325 | 446 | ROM_END |
| 326 | 447 | |
| 448 | ROM_START( mmt8 ) |
| 449 | ROM_REGION( 0x8000, "maincpu", ROMREGION_ERASEFF ) |
| 450 | ROM_SYSTEM_BIOS(0, "v111", "ver 1.11") |
| 451 | ROMX_LOAD( "mt8v1-11.bin", 0x00000, 0x08000, CRC(c9951946) SHA1(149bc5ea46466537de4074820c66a2296ea43bc1), ROM_BIOS(1)) |
| 452 | ROM_SYSTEM_BIOS(1, "v109", "ver 1.09") |
| 453 | ROMX_LOAD( "mt8v1-09.bin", 0x00000, 0x08000, CRC(0ec41dec) SHA1(2c283965e510b586a08f0290df4dd357e6b19b62), ROM_BIOS(2)) |
| 454 | ROM_SYSTEM_BIOS(2, "v108", "ver 1.08") |
| 455 | ROMX_LOAD( "mt8v1-08.bin", 0x00000, 0x08000, CRC(a0615455) SHA1(77395c837b356b34d6b96f6f46eca8c89b57434e), ROM_BIOS(3)) |
| 456 | ROM_END |
| 457 | |
| 327 | 458 | ROM_START( sr16 ) |
| 328 | 459 | ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) |
| 329 | 460 | ROM_SYSTEM_BIOS(0, "v104", "ver 1.04") |
| r243488 | r243489 | |
| 349 | 480 | /* Driver */ |
| 350 | 481 | /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ |
| 351 | 482 | SYST( 1987, hr16, 0, 0, hr16, hr16, alesis_state, hr16, "Alesis", "HR-16", GAME_NOT_WORKING | GAME_NO_SOUND) |
| 483 | SYST( 1987, mmt8, 0, 0, mmt8, mmt8, driver_device, 0, "Alesis", "MMT-8", GAME_NOT_WORKING | GAME_NO_SOUND) |
| 352 | 484 | SYST( 1989, hr16b, hr16, 0, hr16, hr16, alesis_state, hr16, "Alesis", "HR-16B", GAME_NOT_WORKING | GAME_NO_SOUND) |
| 353 | 485 | SYST( 1990, sr16, 0, 0, sr16, sr16, driver_device, 0, "Alesis", "SR-16", GAME_NOT_WORKING | GAME_NO_SOUND) |
trunk/src/mess/drivers/kaypro.c
| r243488 | r243489 | |
| 9 | 9 | telephone cord, complete with modular plug on each end. The keyboard carries |
| 10 | 10 | its own Intel 87C51 processor and is an intelligent device. |
| 11 | 11 | |
| 12 | Kaypro 10 notes: |
| 13 | - This machine comes with a 10MB hard drive, split into 2 5MB partitions. It also |
| 14 | has one floppy drive. The drive letters change depending on what drive it was booted |
| 15 | from. The boot drive is always A:. |
| 16 | If booted from floppy: |
| 17 | A: floppy |
| 18 | B: HD partition 1 |
| 19 | C: HD partition 2 |
| 20 | If booted from HD (presumably partition 1) |
| 21 | A: HD partition 1 |
| 22 | B: HD partition 2 |
| 23 | C: floppy |
| 24 | |
| 12 | 25 | ToDo: |
| 13 | 26 | |
| 14 | 27 | - See about getting keyboard to work as a serial device. |
| 15 | 28 | - Need dump of 87C51 cpu in the keyboard. |
| 16 | 29 | |
| 17 | 30 | - Kaypro 2x, 4a: floppy not working "No operating system present on this disk" |
| 18 | | - Kaypro 10: Boots from floppy, but B drive not working "Bdos Err on B: Bad Sector" |
| 31 | - Kaypro 10: Boots from floppy, but needs hard drive added. |
| 19 | 32 | - Kaypro 4p88: works as a normal Kaypro 4, extra hardware not done |
| 20 | 33 | - Kaypro Robie: has twin 2.6MB 5.25 floppy drives which we don't support, no software available |
| 21 | 34 | |
| r243488 | r243489 | |
| 299 | 312 | MCFG_FLOPPY_DRIVE_ADD("fdc:1", kaypro_floppies, "drive1", kaypro_state::kaypro2x_floppy_formats) |
| 300 | 313 | MACHINE_CONFIG_END |
| 301 | 314 | |
| 315 | static MACHINE_CONFIG_DERIVED( kaypro10, kaypro2x ) |
| 316 | MCFG_DEVICE_REMOVE("fdc:1") // only has 1 floppy drive |
| 317 | // need to add hard drive & controller |
| 318 | MACHINE_CONFIG_END |
| 319 | |
| 302 | 320 | static MACHINE_CONFIG_DERIVED( omni2, kaypro4 ) |
| 303 | 321 | MCFG_SCREEN_MODIFY("screen") |
| 304 | 322 | MCFG_SCREEN_UPDATE_DRIVER(kaypro_state, screen_update_omni2) |
| r243488 | r243489 | |
| 435 | 453 | COMP( 1984, kaypro2x, 0, 0, kaypro2x, kay_kbd, kaypro_state, kaypro, "Non Linear Systems", "Kaypro 2x" , GAME_NOT_WORKING ) // model 81-025 |
| 436 | 454 | COMP( 1984, kaypro4a, kaypro2x, 0, kaypro2x, kay_kbd, kaypro_state, kaypro, "Non Linear Systems", "Kaypro 4 - 4/84" , GAME_NOT_WORKING ) // model 81-015 |
| 437 | 455 | // Kaypro 4/84 plus 88 goes here, model 81-015 with an added 8088 daughterboard and rom |
| 438 | | COMP( 1983, kaypro10, 0, 0, kaypro2x, kay_kbd, kaypro_state, kaypro, "Non Linear Systems", "Kaypro 10" , GAME_NOT_WORKING ) // model 81-005 |
| 456 | COMP( 1983, kaypro10, 0, 0, kaypro10, kay_kbd, kaypro_state, kaypro, "Non Linear Systems", "Kaypro 10" , GAME_NOT_WORKING ) // model 81-005 |
| 439 | 457 | COMP( 1984, robie, 0, 0, kaypro2x, kay_kbd, kaypro_state, kaypro, "Non Linear Systems", "Kaypro Robie" , GAME_NOT_WORKING ) // model 81-005 |
trunk/src/mess/drivers/mbee.c
| r243488 | r243489 | |
| 55 | 55 | F000-F7FF Video RAM |
| 56 | 56 | F800-FFFF PCG RAM (graphics), Colour RAM (banked) |
| 57 | 57 | |
| 58 | Early machines have 'standard' video (128 hires characters). |
| 59 | Later machines had the option of 'premium' video which |
| 60 | provides thousands of hires characters, enough to simulate |
| 61 | bit-mapped graphics. |
| 62 | |
| 58 | 63 | Commands to call up built-in roms (depends on the model): |
| 59 | 64 | NET - Jump to E000, usually the Telcom communications program. |
| 60 | 65 | This rom can be replaced with the Dreamdisk Chip-8 rom. |
| 61 | 66 | Note that Telcom 3.21 is 8k, it uses a rombank switch |
| 62 | 67 | (by reading port 0A) to swap between the two halves. |
| 68 | Most parts of NET can be called up from Basic, e.g. |
| 69 | NET CLOCK will turn on the clock, NET CLOCKD will remove |
| 70 | the resultant status bar, NET TIME hhmm to set the time, etc. |
| 71 | Further, after doing a NET command, the 80x24 mode becomes |
| 72 | available to Basic. OUT#7 to turn it on, OUT#0 for 64x16. |
| 63 | 73 | |
| 64 | 74 | EDASM - Jump to C000, usually the editor/Assembler package. |
| 65 | 75 | |
| r243488 | r243489 | |
| 100 | 110 | crashes due to a bug in z80pio emulation. |
| 101 | 111 | |
| 102 | 112 | - 256tc: Keyboard ROM U60 needs to be dumped. |
| 103 | | - 128k: PROM PAL needs to be dumped for the bankswitching. |
| 113 | - 128k: GOLD PAL needs to be dumped for the bankswitching. |
| 114 | - 64k: RED PAL needs to be dumped for the bankswitching. |
| 104 | 115 | |
| 105 | | - Teleterm: keyboard is problematic, and cursor doesn't show. |
| 116 | - Teleterm: keyboard is problematic, and cursor doesn't show. Also, the |
| 117 | schematic shows it using the old-style keyboard, however this |
| 118 | must be wrong since the computer has function keys, which are |
| 119 | only available on the new keyboard. |
| 106 | 120 | |
| 121 | - Mouse: a few programs support the use of a serial mouse which interfaced |
| 122 | directly to the Z80PIO. However there's little info to be found. |
| 107 | 123 | |
| 108 | 124 | *************************************************************************** |
| 109 | 125 | |
| r243488 | r243489 | |
| 190 | 206 | AM_RANGE(0xf800, 0xffff) AM_READWRITE(mbeeic_high_r, mbeeic_high_w) |
| 191 | 207 | ADDRESS_MAP_END |
| 192 | 208 | |
| 193 | | static ADDRESS_MAP_START(mbee64_mem, AS_PROGRAM, 8, mbee_state) |
| 194 | | AM_RANGE(0x0000, 0x0fff) AM_RAMBANK("boot") |
| 195 | | AM_RANGE(0x1000, 0x7fff) AM_RAMBANK("bankl") |
| 196 | | AM_RANGE(0x8000, 0xefff) AM_RAMBANK("bankh") |
| 197 | | AM_RANGE(0xf000, 0xf7ff) AM_READWRITE(mbee_low_r, mbee_low_w) |
| 198 | | AM_RANGE(0xf800, 0xffff) AM_READWRITE(mbeeic_high_r, mbeeic_high_w) |
| 199 | | ADDRESS_MAP_END |
| 200 | | |
| 201 | 209 | static ADDRESS_MAP_START(mbee256_mem, AS_PROGRAM, 8, mbee_state) |
| 202 | 210 | AM_RANGE(0x0000, 0x0fff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0") |
| 203 | 211 | AM_RANGE(0x1000, 0x1fff) AM_READ_BANK("bankr1") AM_WRITE_BANK("bankw1") |
| r243488 | r243489 | |
| 295 | 303 | AM_RANGE(0x48, 0x4f) AM_READWRITE(mbee_fdc_status_r, mbee_fdc_motor_w) |
| 296 | 304 | ADDRESS_MAP_END |
| 297 | 305 | |
| 298 | | static ADDRESS_MAP_START(mbee64_io, AS_IO, 8, mbee_state) |
| 299 | | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 300 | | ADDRESS_MAP_UNMAP_HIGH |
| 301 | | AM_RANGE(0x00, 0x03) AM_MIRROR(0x10) AM_DEVREADWRITE("z80pio", z80pio_device, read_alt, write_alt) |
| 302 | | AM_RANGE(0x08, 0x08) AM_MIRROR(0x10) AM_READWRITE(mbeeic_08_r, mbeeic_08_w) |
| 303 | | AM_RANGE(0x0b, 0x0b) AM_MIRROR(0x10) AM_READWRITE(mbee_0b_r, mbee_0b_w) |
| 304 | | AM_RANGE(0x0c, 0x0c) AM_MIRROR(0x10) AM_READWRITE(m6545_status_r, m6545_index_w) |
| 305 | | AM_RANGE(0x0d, 0x0d) AM_MIRROR(0x10) AM_READWRITE(m6545_data_r, m6545_data_w) |
| 306 | | AM_RANGE(0x44, 0x47) AM_DEVREADWRITE("fdc", wd2793_t, read, write) |
| 307 | | AM_RANGE(0x48, 0x4f) AM_READWRITE(mbee_fdc_status_r, mbee_fdc_motor_w) |
| 308 | | AM_RANGE(0x50, 0x57) AM_WRITE(mbee64_50_w) |
| 309 | | ADDRESS_MAP_END |
| 310 | | |
| 311 | 306 | static ADDRESS_MAP_START(mbee128_io, AS_IO, 8, mbee_state) |
| 312 | 307 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 313 | 308 | ADDRESS_MAP_UNMAP_HIGH |
| r243488 | r243489 | |
| 780 | 775 | MCFG_FLOPPY_DRIVE_ADD("fdc:1", mbee_floppies, "drive5b", floppy_image_device::default_floppy_formats) |
| 781 | 776 | MACHINE_CONFIG_END |
| 782 | 777 | |
| 783 | | static MACHINE_CONFIG_DERIVED( mbee64, mbee56 ) |
| 778 | static MACHINE_CONFIG_DERIVED( mbee128p, mbeeppc ) |
| 784 | 779 | MCFG_CPU_MODIFY( "maincpu" ) |
| 785 | | MCFG_CPU_PROGRAM_MAP(mbee64_mem) |
| 786 | | MCFG_CPU_IO_MAP(mbee64_io) |
| 787 | | MCFG_MACHINE_RESET_OVERRIDE(mbee_state, mbee64) |
| 788 | | MACHINE_CONFIG_END |
| 789 | | |
| 790 | | static MACHINE_CONFIG_DERIVED( mbee128, mbeeppc ) |
| 791 | | MCFG_CPU_MODIFY( "maincpu" ) |
| 792 | 780 | MCFG_CPU_PROGRAM_MAP(mbee256_mem) |
| 793 | 781 | MCFG_CPU_IO_MAP(mbee128_io) |
| 794 | 782 | MCFG_MACHINE_RESET_OVERRIDE(mbee_state, mbee128) |
| r243488 | r243489 | |
| 799 | 787 | MCFG_FLOPPY_DRIVE_ADD("fdc:1", mbee_floppies, "drive5b", floppy_image_device::default_floppy_formats) |
| 800 | 788 | MACHINE_CONFIG_END |
| 801 | 789 | |
| 802 | | static MACHINE_CONFIG_DERIVED( mbee256, mbee128 ) |
| 790 | static MACHINE_CONFIG_DERIVED( mbee128, mbee128p ) |
| 791 | MCFG_VIDEO_START_OVERRIDE(mbee_state,mbeeic) |
| 792 | MACHINE_CONFIG_END |
| 793 | |
| 794 | static MACHINE_CONFIG_DERIVED( mbee256, mbee128p ) |
| 803 | 795 | MCFG_CPU_MODIFY( "maincpu" ) |
| 804 | 796 | MCFG_CPU_PROGRAM_MAP(mbee256_mem) |
| 805 | 797 | MCFG_CPU_IO_MAP(mbee256_io) |
| r243488 | r243489 | |
| 1084 | 1076 | ROM_REGION( 0x0800, "colorram", ROMREGION_ERASE00 ) |
| 1085 | 1077 | ROM_END |
| 1086 | 1078 | |
| 1087 | | ROM_START( mbee64 ) // CIAB (Computer-In-A-Book) |
| 1088 | | ROM_REGION(0x10000,"maincpu", ROMREGION_ERASEFF) |
| 1079 | ROM_START( mbee128 ) // Standard 128k (CIAB is the same thing with half the ram) |
| 1080 | ROM_REGION(0x10000, "rams", ROMREGION_ERASEFF) |
| 1089 | 1081 | |
| 1090 | | ROM_REGION(0x7000,"bootrom", ROMREGION_ERASEFF) |
| 1082 | ROM_REGION(0x7000, "roms", ROMREGION_ERASEFF) |
| 1091 | 1083 | ROM_LOAD("bn54.bin", 0x0000, 0x2000, CRC(995c53db) SHA1(46e1a5cfd5795b8cf528bacf9dc79398ff7d64af) ) |
| 1092 | 1084 | |
| 1093 | 1085 | ROM_REGION(0x2000, "gfx", 0) |
| 1094 | 1086 | ROM_LOAD("charrom.bin", 0x1000, 0x1000, CRC(1f9fcee4) SHA1(e57ac94e03638075dde68a0a8c834a4f84ba47b0) ) |
| 1095 | 1087 | ROM_RELOAD( 0x0000, 0x1000 ) |
| 1096 | 1088 | |
| 1089 | ROM_REGION(0x4000, "pals", 0) // undumped; using prom from 256tc for now |
| 1090 | ROM_LOAD( "silver.u39", 0x0000, 0x4000, BAD_DUMP CRC(c34aab64) SHA1(781fe648488dec90185760f8e081e488b73b68bf) ) |
| 1091 | |
| 1097 | 1092 | ROM_REGION( 0x0040, "proms", 0 ) |
| 1098 | 1093 | ROM_LOAD( "82s123.ic7", 0x0000, 0x0020, CRC(61b9c16c) SHA1(0ee72377831c21339360c376f7248861d476dc20) ) |
| 1099 | 1094 | ROM_LOAD_OPTIONAL( "82s123.ic16", 0x0020, 0x0020, CRC(4e779985) SHA1(cd2579cf65032c30b3fe7d6d07b89d4633687481) ) /* video switching prom, not needed for emulation purposes */ |
| r243488 | r243489 | |
| 1102 | 1097 | ROM_REGION( 0x0800, "colorram", ROMREGION_ERASE00 ) |
| 1103 | 1098 | ROM_END |
| 1104 | 1099 | |
| 1105 | | ROM_START( mbee128 ) // 128K |
| 1100 | ROM_START( mbee128p ) // Premium 128K |
| 1106 | 1101 | ROM_REGION(0x20000, "rams", ROMREGION_ERASEFF) |
| 1107 | 1102 | |
| 1108 | 1103 | ROM_REGION(0x8000, "roms", 0) // rom plus optional undumped roms plus dummy area |
| 1109 | | ROM_SYSTEM_BIOS( 0, "bn60", "Version 2.03" ) |
| 1110 | | ROMX_LOAD("bn60.rom", 0x0000, 0x2000, CRC(ed15d4ee) SHA1(3ea42b63d42b9a4c5402676dee8912ad1f906bda), ROM_BIOS(1) ) |
| 1104 | ROM_SYSTEM_BIOS( 0, "bn56", "bn56" ) |
| 1105 | ROMX_LOAD("bn56.rom", 0x0000, 0x2000, CRC(3f76769d) SHA1(cfae2069d739c26fe39f734d9f705a3c965d1e6f), ROM_BIOS(1) ) |
| 1111 | 1106 | ROM_SYSTEM_BIOS( 1, "bn59", "Version 2.02" ) |
| 1112 | 1107 | ROMX_LOAD("bn59.rom", 0x0000, 0x2000, CRC(97384116) SHA1(87f2c4ab1a1f2964ba4f2bb60e62dc9c163831ba), ROM_BIOS(2) ) |
| 1113 | | ROM_SYSTEM_BIOS( 2, "bn56", "bn56" ) |
| 1114 | | ROMX_LOAD("bn56.rom", 0x0000, 0x2000, CRC(3f76769d) SHA1(cfae2069d739c26fe39f734d9f705a3c965d1e6f), ROM_BIOS(3) ) |
| 1108 | ROM_SYSTEM_BIOS( 2, "bn60", "Version 2.03" ) |
| 1109 | ROMX_LOAD("bn60.rom", 0x0000, 0x2000, CRC(ed15d4ee) SHA1(3ea42b63d42b9a4c5402676dee8912ad1f906bda), ROM_BIOS(3) ) |
| 1115 | 1110 | ROM_SYSTEM_BIOS( 3, "bn55", "bn55" ) |
| 1116 | 1111 | ROMX_LOAD("bn55.rom", 0x0000, 0x2000, CRC(ca2c1073) SHA1(355d90d181de899cc7af892df96305fead9c81b4), ROM_BIOS(4) ) |
| 1117 | 1112 | ROM_SYSTEM_BIOS( 4, "bn54", "bn54" ) |
| r243488 | r243489 | |
| 1119 | 1114 | ROM_SYSTEM_BIOS( 5, "hd18", "Hard Disk System" ) |
| 1120 | 1115 | ROMX_LOAD("hd18.rom", 0x0000, 0x2000, CRC(ed53ace7) SHA1(534e2e00cc527197c76b3c106b3c9ff7f1328487), ROM_BIOS(6) ) |
| 1121 | 1116 | |
| 1122 | | ROM_REGION(0x4000, "proms", 0) // undumped; using prom from 256tc for now |
| 1117 | ROM_REGION(0x4000, "pals", 0) // undumped; using prom from 256tc for now |
| 1123 | 1118 | ROM_LOAD( "silver.u39", 0x0000, 0x4000, BAD_DUMP CRC(c34aab64) SHA1(781fe648488dec90185760f8e081e488b73b68bf) ) |
| 1124 | 1119 | |
| 1125 | 1120 | ROM_REGION(0x9800, "gfx", 0) |
| r243488 | r243489 | |
| 1140 | 1135 | ROM_SYSTEM_BIOS( 1, "1.15", "Version 1.15" ) |
| 1141 | 1136 | ROMX_LOAD("256tc_boot_1.15.u38", 0x0000, 0x4000, CRC(1902062d) SHA1(e4a1c0b3f4996e313da0bac0edb6d34e3270723e), ROM_BIOS(2) ) |
| 1142 | 1137 | |
| 1143 | | ROM_REGION(0x4000, "proms", 0) |
| 1138 | ROM_REGION(0x4000, "pals", 0) |
| 1144 | 1139 | ROM_LOAD( "silver.u39", 0x0000, 0x4000, CRC(c34aab64) SHA1(781fe648488dec90185760f8e081e488b73b68bf) ) |
| 1145 | 1140 | |
| 1146 | 1141 | ROM_REGION(0x9800, "gfx", 0) |
| r243488 | r243489 | |
| 1169 | 1164 | COMP( 1986, mbeeppc, mbee, 0, mbeeppc, mbee, mbee_state, mbeeppc, "Applied Technology", "Microbee Premium PC85" , 0 ) |
| 1170 | 1165 | COMP( 1986, mbeett, mbee, 0, mbeett, mbee256, mbee_state, mbeett, "Applied Technology", "Microbee Teleterm" , GAME_NOT_WORKING ) |
| 1171 | 1166 | COMP( 1986, mbee56, mbee, 0, mbee56, mbee, mbee_state, mbee56, "Applied Technology", "Microbee 56k" , GAME_NOT_WORKING ) |
| 1172 | | COMP( 1986, mbee64, mbee, 0, mbee64, mbee, mbee_state, mbee64, "Applied Technology", "Microbee 64k" , GAME_NOT_WORKING ) |
| 1173 | | COMP( 1986, mbee128, mbee, 0, mbee128, mbee, mbee_state, mbee128, "Applied Technology", "Microbee 128k" , GAME_NOT_WORKING ) |
| 1167 | COMP( 1986, mbee128, mbee, 0, mbee128, mbee, mbee_state, mbee128, "Applied Technology", "Microbee 128k Standard" , GAME_NOT_WORKING ) |
| 1168 | COMP( 1986, mbee128p, mbee, 0, mbee128p, mbee, mbee_state, mbee128, "Applied Technology", "Microbee 128k Premium" , GAME_NOT_WORKING ) |
| 1174 | 1169 | COMP( 1987, mbee256, mbee, 0, mbee256, mbee256, mbee_state, mbee256, "Applied Technology", "Microbee 256TC" , GAME_NOT_WORKING ) |
trunk/src/mess/drivers/pcd.c
| r243488 | r243489 | |
| 19 | 19 | #include "machine/wd_fdc.h" |
| 20 | 20 | #include "machine/mc146818.h" |
| 21 | 21 | #include "sound/speaker.h" |
| 22 | #include "video/scn2674.h" |
| 22 | 23 | |
| 23 | | |
| 24 | 24 | //************************************************************************** |
| 25 | 25 | // TYPE DEFINITIONS |
| 26 | 26 | //************************************************************************** |
| r243488 | r243489 | |
| 36 | 36 | m_speaker(*this, "speaker"), |
| 37 | 37 | m_sasi(*this, "sasi"), |
| 38 | 38 | m_fdc(*this, "fdc"), |
| 39 | | m_rtc(*this, "rtc") |
| 39 | m_rtc(*this, "rtc"), |
| 40 | m_crtc(*this, "crtc"), |
| 41 | m_vram(*this, "vram"), |
| 42 | m_charram(8*1024) |
| 40 | 43 | { } |
| 41 | 44 | |
| 42 | | DECLARE_WRITE_LINE_MEMBER( pic1_irq ); |
| 43 | | DECLARE_READ8_MEMBER( pic1_slave_ack_r ); |
| 45 | DECLARE_READ8_MEMBER( irq_callback ); |
| 44 | 46 | TIMER_DEVICE_CALLBACK_MEMBER( timer0_tick ); |
| 45 | 47 | DECLARE_WRITE_LINE_MEMBER( i186_timer1_w ); |
| 46 | 48 | |
| 47 | | DECLARE_READ8_MEMBER( crt_data_r ); |
| 48 | | DECLARE_WRITE8_MEMBER( crt_data_w ); |
| 49 | | DECLARE_READ8_MEMBER( crt_status_r ); |
| 49 | DECLARE_READ8_MEMBER( charram_r ); |
| 50 | DECLARE_WRITE8_MEMBER( charram_w ); |
| 51 | DECLARE_READ16_MEMBER( nmi_io_r ); |
| 52 | DECLARE_WRITE16_MEMBER( nmi_io_w ); |
| 53 | DECLARE_READ8_MEMBER( rtc_r ); |
| 54 | DECLARE_WRITE8_MEMBER( rtc_w ); |
| 55 | DECLARE_READ8_MEMBER( stat_r ); |
| 56 | DECLARE_WRITE8_MEMBER( stat_w ); |
| 57 | DECLARE_READ8_MEMBER( led_r ); |
| 58 | DECLARE_WRITE8_MEMBER( led_w ); |
| 59 | UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); |
| 50 | 60 | |
| 51 | 61 | protected: |
| 52 | 62 | // driver_device overrides |
| 53 | 63 | virtual void machine_start(); |
| 64 | virtual void machine_reset(); |
| 54 | 65 | |
| 55 | 66 | private: |
| 56 | 67 | required_device<i80186_cpu_device> m_maincpu; |
| r243488 | r243489 | |
| 60 | 71 | required_device<omti5100_device> m_sasi; |
| 61 | 72 | required_device<wd2793_t> m_fdc; |
| 62 | 73 | required_device<mc146818_device> m_rtc; |
| 74 | required_device<scn2674_device> m_crtc; |
| 75 | required_shared_ptr<UINT16> m_vram; |
| 76 | dynamic_buffer m_charram; |
| 77 | UINT8 m_stat, m_led; |
| 63 | 78 | }; |
| 64 | 79 | |
| 65 | 80 | |
| r243488 | r243489 | |
| 67 | 82 | // MACHINE EMULATION |
| 68 | 83 | //************************************************************************** |
| 69 | 84 | |
| 85 | static const gfx_layout pcd_charlayout = |
| 86 | { |
| 87 | 8, 14, /* 8 x 14 characters */ |
| 88 | 512, /* 512 characters */ |
| 89 | 1, /* 1 bits per pixel */ |
| 90 | { 0 }, /* no bitplanes */ |
| 91 | /* x offsets */ |
| 92 | { 0, 1, 2, 3, 4, 5, 6, 7 }, |
| 93 | /* y offsets */ |
| 94 | { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8 }, |
| 95 | 8*16 |
| 96 | }; |
| 70 | 97 | void pcd_state::machine_start() |
| 71 | 98 | { |
| 99 | machine().device<gfxdecode_device>("gfxdecode")->set_gfx(0, global_alloc(gfx_element(machine().device<palette_device>("palette"), pcd_charlayout, m_charram, 0, 2, 0))); |
| 72 | 100 | } |
| 73 | 101 | |
| 74 | | WRITE_LINE_MEMBER( pcd_state::pic1_irq ) |
| 102 | void pcd_state::machine_reset() |
| 75 | 103 | { |
| 76 | | logerror("pic1 irq: %d\n", state); |
| 77 | | m_maincpu->int0_w(state); // ? |
| 104 | m_stat = 0; |
| 105 | m_led = 0; |
| 78 | 106 | } |
| 79 | 107 | |
| 80 | | READ8_MEMBER( pcd_state::pic1_slave_ack_r ) |
| 108 | READ8_MEMBER( pcd_state::irq_callback ) |
| 81 | 109 | { |
| 82 | | if (offset == 0) // irq 0 |
| 83 | | return m_pic2->acknowledge(); |
| 84 | | |
| 85 | | return 0x00; |
| 110 | return (offset ? m_pic2 : m_pic1)->acknowledge(); |
| 86 | 111 | } |
| 87 | 112 | |
| 88 | 113 | TIMER_DEVICE_CALLBACK_MEMBER( pcd_state::timer0_tick ) |
| r243488 | r243489 | |
| 96 | 121 | m_speaker->level_w(state); |
| 97 | 122 | } |
| 98 | 123 | |
| 99 | | READ8_MEMBER( pcd_state::crt_data_r ) |
| 124 | READ8_MEMBER( pcd_state::charram_r ) |
| 100 | 125 | { |
| 101 | | logerror("crt_data_r @ %02x\n", offset); |
| 102 | | return 0xff; |
| 126 | return m_charram[offset >> 1]; |
| 103 | 127 | } |
| 104 | 128 | |
| 105 | | WRITE8_MEMBER( pcd_state::crt_data_w ) |
| 129 | WRITE8_MEMBER( pcd_state::charram_w ) |
| 106 | 130 | { |
| 107 | | logerror("crt_data_w %02x @ %02x\n", data, offset); |
| 131 | m_charram[offset >> 1] = data; |
| 108 | 132 | } |
| 109 | 133 | |
| 110 | | READ8_MEMBER( pcd_state::crt_status_r ) |
| 134 | READ16_MEMBER( pcd_state::nmi_io_r ) |
| 111 | 135 | { |
| 112 | | logerror("crt_status_r @ %02x\n", offset); |
| 113 | | return 0xff; |
| 136 | if(space.debugger_access()) |
| 137 | return 0; |
| 138 | logerror("%s: unmapped %s %04x\n", machine().describe_context(), space.name(), offset << 1); |
| 139 | m_stat |= 8; |
| 140 | m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); |
| 141 | return 0; |
| 114 | 142 | } |
| 115 | 143 | |
| 144 | WRITE16_MEMBER( pcd_state::nmi_io_w ) |
| 145 | { |
| 146 | if(space.debugger_access()) |
| 147 | return; |
| 148 | logerror("%s: unmapped %s %04x\n", machine().describe_context(), space.name(), offset << 1); |
| 149 | m_stat |= 8; |
| 150 | m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); |
| 151 | } |
| 116 | 152 | |
| 153 | READ8_MEMBER( pcd_state::rtc_r ) |
| 154 | { |
| 155 | m_rtc->write(space, 0, offset); |
| 156 | return m_rtc->read(space, 1); |
| 157 | } |
| 158 | |
| 159 | WRITE8_MEMBER( pcd_state::rtc_w ) |
| 160 | { |
| 161 | m_rtc->write(space, 0, offset); |
| 162 | m_rtc->write(space, 1, data); |
| 163 | } |
| 164 | |
| 165 | READ8_MEMBER( pcd_state::stat_r ) |
| 166 | { |
| 167 | return m_stat; |
| 168 | } |
| 169 | |
| 170 | WRITE8_MEMBER( pcd_state::stat_w ) |
| 171 | { |
| 172 | m_stat = data; |
| 173 | } |
| 174 | |
| 175 | READ8_MEMBER( pcd_state::led_r ) |
| 176 | { |
| 177 | return m_led; |
| 178 | } |
| 179 | |
| 180 | WRITE8_MEMBER( pcd_state::led_w ) |
| 181 | { |
| 182 | for(int i = 0; i < 6; i++) |
| 183 | logerror("%c", (data & (1 << i)) ? '-' : '*'); |
| 184 | logerror("\n"); |
| 185 | m_led = data; |
| 186 | } |
| 187 | |
| 188 | UINT32 pcd_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) |
| 189 | { |
| 190 | //bitmap.fill(0, cliprect); |
| 191 | m_crtc->scn2574_draw(machine(), bitmap, cliprect, m_vram); |
| 192 | return 0; |
| 193 | } |
| 194 | |
| 117 | 195 | //************************************************************************** |
| 118 | 196 | // ADDRESS MAPS |
| 119 | 197 | //************************************************************************** |
| 120 | 198 | |
| 121 | 199 | static ADDRESS_MAP_START( pcd_map, AS_PROGRAM, 16, pcd_state ) |
| 122 | 200 | AM_RANGE(0x00000, 0x3ffff) AM_RAM // fixed 256k for now |
| 201 | AM_RANGE(0xf0000, 0xf7fff) AM_RAM AM_SHARE("vram") |
| 202 | //AM_RANGE(0xf7000, 0xfbfff) AM_READWRITE8(charram_r, charram_w, 0xffff) |
| 123 | 203 | AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION("bios", 0) |
| 204 | AM_RANGE(0x00000, 0xfffff) AM_READWRITE(nmi_io_r, nmi_io_w) |
| 124 | 205 | ADDRESS_MAP_END |
| 125 | 206 | |
| 126 | 207 | static ADDRESS_MAP_START( pcd_io, AS_IO, 16, pcd_state ) |
| 127 | 208 | ADDRESS_MAP_UNMAP_HIGH |
| 128 | 209 | AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_SHARE("nvram") |
| 129 | | AM_RANGE(0xf840, 0xf841) AM_DEVREADWRITE8("pic1", pic8259_device, read, write, 0xff00) |
| 130 | | AM_RANGE(0xf900, 0xf907) AM_DEVREADWRITE8("fdc", wd2793_t, read, write, 0x00ff) |
| 131 | | // AM_RANGE(0xf940, 0xf941) // sasi controller here? |
| 132 | | AM_RANGE(0xf980, 0xf981) AM_READWRITE8(crt_data_r, crt_data_w, 0x00ff) AM_READ8(crt_status_r, 0xff00) |
| 133 | | // AM_RANGE(0xfa00, 0xfa7f) // pcs4-n (peripheral chip select) |
| 210 | AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE8("pic1", pic8259_device, read, write, 0xffff) |
| 211 | AM_RANGE(0xf820, 0xf821) AM_DEVREADWRITE8("pic2", pic8259_device, read, write, 0xffff) |
| 212 | AM_RANGE(0xf840, 0xf841) AM_READWRITE8(stat_r, stat_w, 0x00ff) |
| 213 | AM_RANGE(0xf840, 0xf841) AM_READWRITE8(led_r, led_w, 0xff00) |
| 214 | AM_RANGE(0xf880, 0xf8bf) AM_READWRITE8(rtc_r, rtc_w, 0xffff) |
| 215 | AM_RANGE(0xf900, 0xf907) AM_DEVREADWRITE8("fdc", wd2793_t, read, write, 0xffff) |
| 216 | //AM_RANGE(0xf940, 0xf943) scsi |
| 217 | AM_RANGE(0xf9c0, 0xf9c3) AM_DEVREADWRITE8("usart1",mc2661_device,read,write,0xffff) // UARTs |
| 218 | AM_RANGE(0xf9d0, 0xf9d3) AM_DEVREADWRITE8("usart2",mc2661_device,read,write,0xffff) |
| 219 | AM_RANGE(0xf9e0, 0xf9e3) AM_DEVREADWRITE8("usart3",mc2661_device,read,write,0xffff) |
| 220 | AM_RANGE(0xf980, 0xf987) AM_DEVWRITE8("crtc", scn2674_device, mpu4_vid_scn2674_w, 0x00ff) |
| 221 | AM_RANGE(0xf980, 0xf987) AM_DEVREAD8("crtc", scn2674_device, mpu4_vid_scn2674_r, 0xff00) |
| 222 | // AM_RANGE(0xfa00, 0xfa7f) // pcs4-n (peripheral chip select) |
| 223 | AM_RANGE(0x0000, 0xffff) AM_READWRITE(nmi_io_r, nmi_io_w) |
| 134 | 224 | ADDRESS_MAP_END |
| 135 | 225 | |
| 136 | 226 | |
| r243488 | r243489 | |
| 144 | 234 | SLOT_INTERFACE_END |
| 145 | 235 | |
| 146 | 236 | static MACHINE_CONFIG_START( pcd, pcd_state ) |
| 147 | | MCFG_CPU_ADD("maincpu", I80186, XTAL_16MHz / 2) |
| 237 | MCFG_CPU_ADD("maincpu", I80186, XTAL_16MHz) |
| 148 | 238 | MCFG_CPU_PROGRAM_MAP(pcd_map) |
| 149 | 239 | MCFG_CPU_IO_MAP(pcd_io) |
| 150 | 240 | MCFG_80186_TMROUT1_HANDLER(WRITELINE(pcd_state, i186_timer1_w)) |
| 241 | MCFG_80186_IRQ_SLAVE_ACK(READ8(pcd_state, irq_callback)) |
| 151 | 242 | |
| 152 | | MCFG_TIMER_DRIVER_ADD_PERIODIC("timer0_tick", pcd_state, timer0_tick, attotime::from_hz(XTAL_16MHz / 2 / 16)) |
| 243 | MCFG_TIMER_DRIVER_ADD_PERIODIC("timer0_tick", pcd_state, timer0_tick, attotime::from_hz(XTAL_16MHz / 24)) // adjusted to pass post |
| 153 | 244 | |
| 154 | | MCFG_PIC8259_ADD("pic1", WRITELINE(pcd_state, pic1_irq), VCC, READ8(pcd_state, pic1_slave_ack_r)) |
| 155 | | MCFG_PIC8259_ADD("pic2", DEVWRITELINE("pic1", pic8259_device, ir0_w), GND, NULL) |
| 245 | MCFG_PIC8259_ADD("pic1", DEVWRITELINE("maincpu", i80186_cpu_device, int0_w), VCC, NULL) |
| 246 | MCFG_PIC8259_ADD("pic2", DEVWRITELINE("maincpu", i80186_cpu_device, int1_w), VCC, NULL) |
| 156 | 247 | |
| 157 | 248 | #if 0 |
| 158 | 249 | MCFG_RAM_ADD(RAM_TAG) |
| r243488 | r243489 | |
| 167 | 258 | MCFG_OMTI5100_ADD("sasi") |
| 168 | 259 | |
| 169 | 260 | // floppy disk controller |
| 170 | | MCFG_WD2793x_ADD("fdc", XTAL_16MHz/2/8) |
| 261 | MCFG_WD2793x_ADD("fdc", XTAL_16MHz/8) |
| 171 | 262 | MCFG_WD_FDC_INTRQ_CALLBACK(DEVWRITELINE("pic1", pic8259_device, ir6_w)) |
| 172 | 263 | MCFG_WD_FDC_DRQ_CALLBACK(DEVWRITELINE("maincpu", i80186_cpu_device, drq1_w)) |
| 173 | 264 | |
| r243488 | r243489 | |
| 188 | 279 | MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) |
| 189 | 280 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 190 | 281 | |
| 282 | // video hardware |
| 283 | MCFG_SCREEN_ADD("screen", RASTER) |
| 284 | MCFG_SCREEN_SIZE(640, 350) |
| 285 | MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 349) |
| 286 | MCFG_SCREEN_REFRESH_RATE(50) |
| 287 | MCFG_SCREEN_UPDATE_DRIVER(pcd_state, screen_update) |
| 288 | |
| 289 | MCFG_GFXDECODE_ADD("gfxdecode", "palette", empty) |
| 290 | MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette") |
| 291 | |
| 292 | MCFG_SCN2674_VIDEO_ADD("crtc", 0, NULL); |
| 293 | MCFG_SCN2674_GFXDECODE("gfxdecode") |
| 294 | MCFG_SCN2674_PALETTE("palette") |
| 295 | |
| 191 | 296 | // rtc |
| 192 | 297 | MCFG_MC146818_ADD("rtc", XTAL_32_768kHz) |
| 193 | 298 | MCFG_MC146818_IRQ_HANDLER(DEVWRITELINE("pic1", pic8259_device, ir7_w)) |
| r243488 | r243489 | |
| 202 | 307 | ROM_REGION(0x4000, "bios", 0) |
| 203 | 308 | ROM_LOAD16_BYTE("s26361-d359.d42", 0x0001, 0x2000, CRC(e20244dd) SHA1(0ebc5ddb93baacd9106f1917380de58aac64fe73)) |
| 204 | 309 | ROM_LOAD16_BYTE("s26361-d359.d43", 0x0000, 0x2000, CRC(e03db2ec) SHA1(fcae8b0c9e7543706817b0a53872826633361fda)) |
| 310 | ROM_FILL(0xb64, 1, 0xe2) // post expects 0xd0 fdc command to be instant, give it a delay |
| 311 | ROM_FILL(0xb65, 1, 0xfe) |
| 312 | ROM_FILL(0x3ffe, 1, 0xb4) // fix csum |
| 313 | ROM_FILL(0x3fff, 1, 0x22) |
| 205 | 314 | |
| 206 | 315 | // gfx card (scn2674 with 8741), to be moved |
| 207 | 316 | ROM_REGION(0x400, "graphics", 0) |
trunk/src/mess/drivers/splitsec.c
| r243488 | r243489 | |
| 16 | 16 | *: higher number indicates higher difficulty |
| 17 | 17 | |
| 18 | 18 | |
| 19 | | **************************************************************************** |
| 19 | ---------------------------------------------------------------------------- |
| 20 | 20 | |
| 21 | | Parker Brothers Bank Shot (also released in other regions as Cue Ball) |
| 21 | Parker Brothers Bank Shot (known as Cue Ball in the UK), by Garry Kitchen |
| 22 | 22 | * TMS1400NLL MP7313-N2 (die labeled MP7313) |
| 23 | | |
| 24 | | x |
| 25 | 23 | |
| 24 | Bank Shot is an electronic pool game. To select a game, repeatedly press |
| 25 | the [SELECT] button, then press [CUE UP] to start. Refer to the official |
| 26 | manual for more information. The game selections are: |
| 27 | 1: Straight Pool (1 player) |
| 28 | 2: Straight Pool (2 players) |
| 29 | 3: Poison Pool |
| 30 | 4: Trick Shots |
| 26 | 31 | |
| 32 | |
| 33 | TODO: |
| 34 | - bankshot: the cue ball led is strobed more often than other leds, |
| 35 | making it look brighter. We need more accurate led decay simulation |
| 36 | for this to work. |
| 37 | - MCU clock is unknown |
| 38 | |
| 27 | 39 | ***************************************************************************/ |
| 28 | 40 | |
| 29 | 41 | #include "emu.h" |
| r243488 | r243489 | |
| 106 | 118 | 70 72 74 |
| 107 | 119 | |
| 108 | 120 | |
| 109 | | Bank Shot: |
| 121 | Bank Shot: pretty much linear, see bankshot.lay |
| 110 | 122 | |
| 111 | | x |
| 112 | | |
| 113 | 123 | */ |
| 114 | 124 | |
| 115 | 125 | void splitsec_state::leds_update() |
| r243488 | r243489 | |
| 234 | 244 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 235 | 245 | INPUT_PORTS_END |
| 236 | 246 | |
| 247 | |
| 248 | /* bankshot physical button layout and labels is like this: |
| 249 | |
| 250 | [SELECT [BALL UP] [BALL OVER] |
| 251 | SCORE] |
| 252 | |
| 253 | ------ led display ------ |
| 254 | |
| 255 | [ANGLE] [AIM] [CUE UP |
| 256 | SHOOT] |
| 257 | */ |
| 258 | |
| 237 | 259 | static INPUT_PORTS_START( bankshot ) |
| 238 | 260 | PORT_START("IN.0") // R2 |
| 239 | | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) |
| 240 | | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) |
| 241 | | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) |
| 261 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Angle") |
| 262 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Aim") |
| 263 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Cue Up / Shoot") |
| 242 | 264 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 243 | 265 | |
| 244 | 266 | PORT_START("IN.1") // R3 |
| 245 | | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON4 ) |
| 246 | | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON5 ) |
| 247 | | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON6 ) |
| 267 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("Select / Score") |
| 268 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("Ball Up") |
| 269 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("Ball Over") |
| 248 | 270 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 249 | 271 | INPUT_PORTS_END |
| 250 | 272 | |
| r243488 | r243489 | |
| 337 | 359 | |
| 338 | 360 | |
| 339 | 361 | CONS( 1980, splitsec, 0, 0, splitsec, splitsec, driver_device, 0, "Parker Brothers", "Split Second", GAME_SUPPORTS_SAVE ) |
| 340 | | CONS( 1980, bankshot, 0, 0, bankshot, bankshot, driver_device, 0, "Parker Brothers", "Bank Shot - Electronic Pool", GAME_SUPPORTS_SAVE | GAME_NOT_WORKING ) |
| 362 | CONS( 1980, bankshot, 0, 0, bankshot, bankshot, driver_device, 0, "Parker Brothers", "Bank Shot - Electronic Pool", GAME_SUPPORTS_SAVE ) |
trunk/src/mess/includes/mbee.h
| r243488 | r243489 | |
| 52 | 52 | , m_pak(*this, "pak") |
| 53 | 53 | , m_telcom(*this, "telcom") |
| 54 | 54 | , m_basic(*this, "basic") |
| 55 | | , m_bankl(*this, "bankl") |
| 56 | | , m_bankh(*this, "bankh") |
| 57 | | , m_bank1(*this, "bank1") |
| 58 | | , m_bank8l(*this, "bank8l") |
| 59 | | , m_bank8h(*this, "bank8h") |
| 60 | | , m_bank9(*this, "bank9") |
| 61 | | , m_bankfl(*this, "bankfl") |
| 62 | | , m_bankfh(*this, "bankfh") |
| 63 | 55 | , m_io_x0(*this, "X0") |
| 64 | 56 | , m_io_x1(*this, "X1") |
| 65 | 57 | , m_io_x2(*this, "X2") |
| r243488 | r243489 | |
| 129 | 121 | DECLARE_DRIVER_INIT(mbeepc); |
| 130 | 122 | DECLARE_DRIVER_INIT(mbeeic); |
| 131 | 123 | DECLARE_DRIVER_INIT(mbee128); |
| 132 | | DECLARE_DRIVER_INIT(mbee64); |
| 133 | 124 | DECLARE_MACHINE_RESET(mbee); |
| 134 | 125 | DECLARE_VIDEO_START(mbee); |
| 135 | 126 | DECLARE_VIDEO_START(mbeeic); |
| r243488 | r243489 | |
| 138 | 129 | DECLARE_VIDEO_START(mbeeppc); |
| 139 | 130 | DECLARE_PALETTE_INIT(mbeeppc); |
| 140 | 131 | DECLARE_MACHINE_RESET(mbee56); |
| 141 | | DECLARE_MACHINE_RESET(mbee64); |
| 142 | 132 | DECLARE_MACHINE_RESET(mbee128); |
| 143 | 133 | DECLARE_MACHINE_RESET(mbee256); |
| 144 | 134 | DECLARE_MACHINE_RESET(mbeett); |
| r243488 | r243489 | |
| 147 | 137 | TIMER_CALLBACK_MEMBER(mbee256_kbd); |
| 148 | 138 | TIMER_CALLBACK_MEMBER(mbee_rtc_irq); |
| 149 | 139 | TIMER_CALLBACK_MEMBER(mbee_reset); |
| 150 | | DECLARE_QUICKLOAD_LOAD_MEMBER( mbee ); |
| 151 | | DECLARE_QUICKLOAD_LOAD_MEMBER( mbee_z80bin ); |
| 140 | DECLARE_QUICKLOAD_LOAD_MEMBER(mbee); |
| 141 | DECLARE_QUICKLOAD_LOAD_MEMBER(mbee_z80bin); |
| 152 | 142 | WRITE_LINE_MEMBER(fdc_intrq_w); |
| 153 | 143 | WRITE_LINE_MEMBER(fdc_drq_w); |
| 154 | 144 | UINT8 *m_p_videoram; |
| r243488 | r243489 | |
| 169 | 159 | |
| 170 | 160 | required_device<palette_device> m_palette; |
| 171 | 161 | private: |
| 162 | bool m_is_premium; |
| 172 | 163 | size_t m_size; |
| 173 | 164 | UINT8 m_clock_pulse; |
| 174 | 165 | UINT8 m_mbee256_key_available; |
| r243488 | r243489 | |
| 177 | 168 | UINT8 m_mbee256_q_pos; |
| 178 | 169 | UINT8 m_0a; |
| 179 | 170 | UINT8 m_0b; |
| 180 | | UINT8 m_is_premium; |
| 181 | 171 | UINT8 m_sy6545_status; |
| 182 | 172 | UINT8 m_sy6545_reg[32]; |
| 183 | 173 | UINT8 m_sy6545_ind; |
| 184 | 174 | UINT8 m_fdc_rq; |
| 185 | 175 | UINT8 m_bank_array[33]; |
| 186 | | void mbee256_setup_banks(UINT8 data, bool first_time); |
| 176 | void setup_banks(UINT8 data, bool first_time, UINT8 b_mask); |
| 187 | 177 | void sy6545_cursor_configure(); |
| 188 | 178 | void keyboard_matrix_r(int offs); |
| 189 | 179 | void machine_reset_common_disk(); |
| r243488 | r243489 | |
| 204 | 194 | optional_memory_bank m_pak; |
| 205 | 195 | optional_memory_bank m_telcom; |
| 206 | 196 | optional_memory_bank m_basic; |
| 207 | | optional_memory_bank m_bankl; |
| 208 | | optional_memory_bank m_bankh; |
| 209 | | optional_memory_bank m_bank1; |
| 210 | | optional_memory_bank m_bank8l; |
| 211 | | optional_memory_bank m_bank8h; |
| 212 | | optional_memory_bank m_bank9; |
| 213 | | optional_memory_bank m_bankfl; |
| 214 | | optional_memory_bank m_bankfh; |
| 215 | 197 | required_ioport m_io_x0; |
| 216 | 198 | required_ioport m_io_x1; |
| 217 | 199 | required_ioport m_io_x2; |
trunk/src/mess/layout/bankshot.lay
| r243488 | r243489 | |
| 3 | 3 | |
| 4 | 4 | <!-- define elements --> |
| 5 | 5 | |
| 6 | | <element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element> |
| 6 | <element name="static_black"><rect><color red="0" green="0" blue="0" /></rect></element> |
| 7 | <element name="static_bg"><rect><color red="0.16" green="0.04" blue="0.05" /></rect></element> |
| 8 | <element name="disk_bg"><disk><color red="0.16" green="0.04" blue="0.05" /></disk></element> |
| 9 | <element name="static_white"><rect><color red="0.9" green="0.9" blue="0.9" /></rect></element> |
| 10 | <element name="disk_white"><disk><color red="0.9" green="0.9" blue="0.9" /></disk></element> |
| 7 | 11 | |
| 8 | 12 | <element name="led" defstate="0"> |
| 9 | | <disk state="1"><color red="1.0" green="0.24" blue="0.26" /></disk> |
| 10 | | <disk state="0"><color red="0.15" green="0.043" blue="0.047" /></disk> |
| 13 | <text string=""></text> |
| 14 | <disk state="0"> |
| 15 | <color red="0.16" green="0.04" blue="0.05" /> |
| 16 | <bounds x="0.05" y="0.05" width="0.9" height="0.9" /> |
| 17 | </disk> |
| 18 | <disk state="1"> |
| 19 | <color red="1.0" green="0.24" blue="0.27" /> |
| 20 | <bounds x="0.05" y="0.05" width="0.9" height="0.9" /> |
| 21 | </disk> |
| 11 | 22 | </element> |
| 12 | 23 | |
| 13 | 24 | |
| 25 | |
| 14 | 26 | <!-- build screen --> |
| 15 | 27 | |
| 16 | 28 | <view name="Internal Layout"> |
| 17 | | <bounds left="0" right="100" top="0" bottom="100" /> |
| 18 | | <bezel element="static_black"> |
| 19 | | <bounds left="0" right="100" top="0" bottom="100" /> |
| 20 | | </bezel> |
| 29 | <bounds left="0" right="17" top="0" bottom="11" /> |
| 21 | 30 | |
| 31 | <!-- note: background is dark-red to hide turned-off leds --> |
| 22 | 32 | |
| 33 | <bezel element="static_white"><bounds left="0" right="17" top="0" bottom="11" /></bezel> |
| 34 | <bezel element="static_bg"><bounds left="1" right="16" top="1" bottom="10" /></bezel> |
| 35 | |
| 36 | <!-- markings --> |
| 37 | |
| 38 | <bezel element="static_black"><bounds x="3.4" y="0.2" width="0.2" height="0.6" /></bezel> |
| 39 | <bezel element="static_black"><bounds x="5.4" y="0.2" width="0.2" height="0.6" /></bezel> |
| 40 | <bezel element="static_black"><bounds x="11.4" y="0.2" width="0.2" height="0.6" /></bezel> |
| 41 | <bezel element="static_black"><bounds x="13.4" y="0.2" width="0.2" height="0.6" /></bezel> |
| 42 | |
| 43 | <bezel element="static_black"><bounds x="3.4" y="10.2" width="0.2" height="0.6" /></bezel> |
| 44 | <bezel element="static_black"><bounds x="5.4" y="10.2" width="0.2" height="0.6" /></bezel> |
| 45 | <bezel element="static_black"><bounds x="11.4" y="10.2" width="0.2" height="0.6" /></bezel> |
| 46 | <bezel element="static_black"><bounds x="13.4" y="10.2" width="0.2" height="0.6" /></bezel> |
| 47 | |
| 48 | <bezel element="static_black"><bounds x="0.2" y="3.4" width="0.6" height="0.2" /></bezel> |
| 49 | <bezel element="static_black"><bounds x="0.2" y="5.4" width="0.6" height="0.2" /></bezel> |
| 50 | <bezel element="static_black"><bounds x="0.2" y="7.4" width="0.6" height="0.2" /></bezel> |
| 51 | |
| 52 | <bezel element="static_black"><bounds x="16.2" y="3.4" width="0.6" height="0.2" /></bezel> |
| 53 | <bezel element="static_black"><bounds x="16.2" y="5.4" width="0.6" height="0.2" /></bezel> |
| 54 | <bezel element="static_black"><bounds x="16.2" y="7.4" width="0.6" height="0.2" /></bezel> |
| 55 | |
| 56 | |
| 57 | <!-- top hole --> |
| 58 | |
| 59 | <bezel element="disk_bg"><bounds x="7.9" y="-0.1" width="1.2" height="1.2" /></bezel> |
| 60 | <bezel element="static_bg"><bounds x="7.9" y="0.5" width="1.2" height="1" /></bezel> |
| 61 | |
| 62 | <bezel element="static_bg"><bounds x="7.3" y="0.4" width="0.7" height="0.7" /></bezel> |
| 63 | <bezel element="disk_white"><bounds x="6.7" y="-0.2" width="1.2" height="1.2" /></bezel> |
| 64 | <bezel element="static_bg"><bounds x="9.0" y="0.4" width="0.7" height="0.7" /></bezel> |
| 65 | <bezel element="disk_white"><bounds x="9.1" y="-0.2" width="1.2" height="1.2" /></bezel> |
| 66 | |
| 67 | <!-- bottom hole --> |
| 68 | |
| 69 | <bezel element="disk_bg"><bounds x="7.9" y="9.9" width="1.2" height="1.2" /></bezel> |
| 70 | <bezel element="static_bg"><bounds x="7.9" y="9.6" width="1.2" height="1" /></bezel> |
| 71 | |
| 72 | <bezel element="static_bg"><bounds x="7.3" y="9.9" width="0.7" height="0.7" /></bezel> |
| 73 | <bezel element="disk_white"><bounds x="6.7" y="10" width="1.2" height="1.2" /></bezel> |
| 74 | <bezel element="static_bg"><bounds x="9.0" y="9.9" width="0.7" height="0.7" /></bezel> |
| 75 | <bezel element="disk_white"><bounds x="9.1" y="10" width="1.2" height="1.2" /></bezel> |
| 76 | |
| 77 | <!-- top-left hole --> |
| 78 | |
| 79 | <bezel element="disk_bg"><bounds x="0.10" y="0.10" width="1.2" height="1.2" /></bezel> |
| 80 | <bezel element="disk_bg"><bounds x="0.15" y="0.15" width="1.2" height="1.2" /></bezel> |
| 81 | <bezel element="disk_bg"><bounds x="0.20" y="0.20" width="1.2" height="1.2" /></bezel> |
| 82 | <bezel element="disk_bg"><bounds x="0.25" y="0.25" width="1.2" height="1.2" /></bezel> |
| 83 | <bezel element="disk_bg"><bounds x="0.30" y="0.30" width="1.2" height="1.2" /></bezel> |
| 84 | <bezel element="disk_bg"><bounds x="0.35" y="0.35" width="1.2" height="1.2" /></bezel> |
| 85 | <bezel element="disk_bg"><bounds x="0.40" y="0.40" width="1.2" height="1.2" /></bezel> |
| 86 | <bezel element="disk_bg"><bounds x="0.45" y="0.45" width="1.2" height="1.2" /></bezel> |
| 87 | <bezel element="disk_bg"><bounds x="0.50" y="0.50" width="1.2" height="1.2" /></bezel> |
| 88 | <bezel element="disk_bg"><bounds x="0.55" y="0.55" width="1.2" height="1.2" /></bezel> |
| 89 | <bezel element="disk_bg"><bounds x="0.60" y="0.60" width="1.2" height="1.2" /></bezel> |
| 90 | <bezel element="disk_bg"><bounds x="0.65" y="0.65" width="1.2" height="1.2" /></bezel> |
| 91 | <bezel element="disk_bg"><bounds x="0.70" y="0.70" width="1.2" height="1.2" /></bezel> |
| 92 | <bezel element="disk_bg"><bounds x="0.75" y="0.75" width="1.2" height="1.2" /></bezel> |
| 93 | <bezel element="disk_bg"><bounds x="0.80" y="0.80" width="1.2" height="1.2" /></bezel> |
| 94 | <bezel element="disk_bg"><bounds x="0.85" y="0.85" width="1.2" height="1.2" /></bezel> |
| 95 | <bezel element="disk_bg"><bounds x="0.90" y="0.90" width="1.2" height="1.2" /></bezel> |
| 96 | <bezel element="disk_bg"><bounds x="0.95" y="0.95" width="1.2" height="1.2" /></bezel> |
| 97 | <bezel element="disk_bg"><bounds x="1.00" y="1.00" width="1.2" height="1.2" /></bezel> |
| 98 | |
| 99 | <!-- bottom-left hole --> |
| 100 | |
| 101 | <bezel element="disk_bg"><bounds x="0.10" y="9.70" width="1.2" height="1.2" /></bezel> |
| 102 | <bezel element="disk_bg"><bounds x="0.15" y="9.65" width="1.2" height="1.2" /></bezel> |
| 103 | <bezel element="disk_bg"><bounds x="0.20" y="9.60" width="1.2" height="1.2" /></bezel> |
| 104 | <bezel element="disk_bg"><bounds x="0.25" y="9.55" width="1.2" height="1.2" /></bezel> |
| 105 | <bezel element="disk_bg"><bounds x="0.30" y="9.50" width="1.2" height="1.2" /></bezel> |
| 106 | <bezel element="disk_bg"><bounds x="0.35" y="9.45" width="1.2" height="1.2" /></bezel> |
| 107 | <bezel element="disk_bg"><bounds x="0.40" y="9.40" width="1.2" height="1.2" /></bezel> |
| 108 | <bezel element="disk_bg"><bounds x="0.45" y="9.35" width="1.2" height="1.2" /></bezel> |
| 109 | <bezel element="disk_bg"><bounds x="0.50" y="9.30" width="1.2" height="1.2" /></bezel> |
| 110 | <bezel element="disk_bg"><bounds x="0.55" y="9.25" width="1.2" height="1.2" /></bezel> |
| 111 | <bezel element="disk_bg"><bounds x="0.60" y="9.20" width="1.2" height="1.2" /></bezel> |
| 112 | <bezel element="disk_bg"><bounds x="0.65" y="9.15" width="1.2" height="1.2" /></bezel> |
| 113 | <bezel element="disk_bg"><bounds x="0.70" y="9.10" width="1.2" height="1.2" /></bezel> |
| 114 | <bezel element="disk_bg"><bounds x="0.75" y="9.05" width="1.2" height="1.2" /></bezel> |
| 115 | <bezel element="disk_bg"><bounds x="0.80" y="9.00" width="1.2" height="1.2" /></bezel> |
| 116 | <bezel element="disk_bg"><bounds x="0.85" y="8.95" width="1.2" height="1.2" /></bezel> |
| 117 | <bezel element="disk_bg"><bounds x="0.90" y="8.90" width="1.2" height="1.2" /></bezel> |
| 118 | <bezel element="disk_bg"><bounds x="0.95" y="8.85" width="1.2" height="1.2" /></bezel> |
| 119 | <bezel element="disk_bg"><bounds x="1.00" y="8.80" width="1.2" height="1.2" /></bezel> |
| 120 | |
| 121 | <!-- top-right hole --> |
| 122 | |
| 123 | <bezel element="disk_bg"><bounds x="15.70" y="0.10" width="1.2" height="1.2" /></bezel> |
| 124 | <bezel element="disk_bg"><bounds x="15.65" y="0.15" width="1.2" height="1.2" /></bezel> |
| 125 | <bezel element="disk_bg"><bounds x="15.60" y="0.20" width="1.2" height="1.2" /></bezel> |
| 126 | <bezel element="disk_bg"><bounds x="15.55" y="0.25" width="1.2" height="1.2" /></bezel> |
| 127 | <bezel element="disk_bg"><bounds x="15.50" y="0.30" width="1.2" height="1.2" /></bezel> |
| 128 | <bezel element="disk_bg"><bounds x="15.45" y="0.35" width="1.2" height="1.2" /></bezel> |
| 129 | <bezel element="disk_bg"><bounds x="15.40" y="0.40" width="1.2" height="1.2" /></bezel> |
| 130 | <bezel element="disk_bg"><bounds x="15.35" y="0.45" width="1.2" height="1.2" /></bezel> |
| 131 | <bezel element="disk_bg"><bounds x="15.30" y="0.50" width="1.2" height="1.2" /></bezel> |
| 132 | <bezel element="disk_bg"><bounds x="15.25" y="0.55" width="1.2" height="1.2" /></bezel> |
| 133 | <bezel element="disk_bg"><bounds x="15.20" y="0.60" width="1.2" height="1.2" /></bezel> |
| 134 | <bezel element="disk_bg"><bounds x="15.15" y="0.65" width="1.2" height="1.2" /></bezel> |
| 135 | <bezel element="disk_bg"><bounds x="15.10" y="0.70" width="1.2" height="1.2" /></bezel> |
| 136 | <bezel element="disk_bg"><bounds x="15.05" y="0.75" width="1.2" height="1.2" /></bezel> |
| 137 | <bezel element="disk_bg"><bounds x="15.00" y="0.80" width="1.2" height="1.2" /></bezel> |
| 138 | <bezel element="disk_bg"><bounds x="14.95" y="0.85" width="1.2" height="1.2" /></bezel> |
| 139 | <bezel element="disk_bg"><bounds x="14.90" y="0.90" width="1.2" height="1.2" /></bezel> |
| 140 | <bezel element="disk_bg"><bounds x="14.85" y="0.95" width="1.2" height="1.2" /></bezel> |
| 141 | <bezel element="disk_bg"><bounds x="14.80" y="1.00" width="1.2" height="1.2" /></bezel> |
| 142 | |
| 143 | <!-- bottom-right hole --> |
| 144 | |
| 145 | <bezel element="disk_bg"><bounds x="15.70" y="9.70" width="1.2" height="1.2" /></bezel> |
| 146 | <bezel element="disk_bg"><bounds x="15.65" y="9.65" width="1.2" height="1.2" /></bezel> |
| 147 | <bezel element="disk_bg"><bounds x="15.60" y="9.60" width="1.2" height="1.2" /></bezel> |
| 148 | <bezel element="disk_bg"><bounds x="15.55" y="9.55" width="1.2" height="1.2" /></bezel> |
| 149 | <bezel element="disk_bg"><bounds x="15.50" y="9.50" width="1.2" height="1.2" /></bezel> |
| 150 | <bezel element="disk_bg"><bounds x="15.45" y="9.45" width="1.2" height="1.2" /></bezel> |
| 151 | <bezel element="disk_bg"><bounds x="15.40" y="9.40" width="1.2" height="1.2" /></bezel> |
| 152 | <bezel element="disk_bg"><bounds x="15.35" y="9.35" width="1.2" height="1.2" /></bezel> |
| 153 | <bezel element="disk_bg"><bounds x="15.30" y="9.30" width="1.2" height="1.2" /></bezel> |
| 154 | <bezel element="disk_bg"><bounds x="15.25" y="9.25" width="1.2" height="1.2" /></bezel> |
| 155 | <bezel element="disk_bg"><bounds x="15.20" y="9.20" width="1.2" height="1.2" /></bezel> |
| 156 | <bezel element="disk_bg"><bounds x="15.15" y="9.15" width="1.2" height="1.2" /></bezel> |
| 157 | <bezel element="disk_bg"><bounds x="15.10" y="9.10" width="1.2" height="1.2" /></bezel> |
| 158 | <bezel element="disk_bg"><bounds x="15.05" y="9.05" width="1.2" height="1.2" /></bezel> |
| 159 | <bezel element="disk_bg"><bounds x="15.00" y="9.00" width="1.2" height="1.2" /></bezel> |
| 160 | <bezel element="disk_bg"><bounds x="14.95" y="8.95" width="1.2" height="1.2" /></bezel> |
| 161 | <bezel element="disk_bg"><bounds x="14.90" y="8.90" width="1.2" height="1.2" /></bezel> |
| 162 | <bezel element="disk_bg"><bounds x="14.85" y="8.85" width="1.2" height="1.2" /></bezel> |
| 163 | <bezel element="disk_bg"><bounds x="14.80" y="8.80" width="1.2" height="1.2" /></bezel> |
| 164 | |
| 165 | |
| 166 | <!-- led matrix --> |
| 167 | |
| 168 | <bezel name="lamp97" element="led"><bounds x="8" y="0" width="1" height="1" /></bezel> |
| 169 | |
| 170 | <bezel name="lamp107" element="led"><bounds x="1" y="1" width="1" height="1" /></bezel> |
| 171 | <bezel name="lamp106" element="led"><bounds x="3" y="1" width="1" height="1" /></bezel> |
| 172 | <bezel name="lamp105" element="led"><bounds x="5" y="1" width="1" height="1" /></bezel> |
| 173 | <bezel name="lamp104" element="led"><bounds x="7" y="1" width="1" height="1" /></bezel> |
| 174 | <bezel name="lamp103" element="led"><bounds x="9" y="1" width="1" height="1" /></bezel> |
| 175 | <bezel name="lamp102" element="led"><bounds x="11" y="1" width="1" height="1" /></bezel> |
| 176 | <bezel name="lamp101" element="led"><bounds x="13" y="1" width="1" height="1" /></bezel> |
| 177 | <bezel name="lamp100" element="led"><bounds x="15" y="1" width="1" height="1" /></bezel> |
| 178 | |
| 179 | <bezel name="lamp96" element="led"><bounds x="2" y="2" width="1" height="1" /></bezel> |
| 180 | <bezel name="lamp95" element="led"><bounds x="4" y="2" width="1" height="1" /></bezel> |
| 181 | <bezel name="lamp94" element="led"><bounds x="6" y="2" width="1" height="1" /></bezel> |
| 182 | <bezel name="lamp93" element="led"><bounds x="8" y="2" width="1" height="1" /></bezel> |
| 183 | <bezel name="lamp92" element="led"><bounds x="10" y="2" width="1" height="1" /></bezel> |
| 184 | <bezel name="lamp91" element="led"><bounds x="12" y="2" width="1" height="1" /></bezel> |
| 185 | <bezel name="lamp90" element="led"><bounds x="14" y="2" width="1" height="1" /></bezel> |
| 186 | |
| 187 | <bezel name="lamp87" element="led"><bounds x="1" y="3" width="1" height="1" /></bezel> |
| 188 | <bezel name="lamp86" element="led"><bounds x="3" y="3" width="1" height="1" /></bezel> |
| 189 | <bezel name="lamp85" element="led"><bounds x="5" y="3" width="1" height="1" /></bezel> |
| 190 | <bezel name="lamp84" element="led"><bounds x="7" y="3" width="1" height="1" /></bezel> |
| 191 | <bezel name="lamp83" element="led"><bounds x="9" y="3" width="1" height="1" /></bezel> |
| 192 | <bezel name="lamp82" element="led"><bounds x="11" y="3" width="1" height="1" /></bezel> |
| 193 | <bezel name="lamp81" element="led"><bounds x="13" y="3" width="1" height="1" /></bezel> |
| 194 | <bezel name="lamp80" element="led"><bounds x="15" y="3" width="1" height="1" /></bezel> |
| 195 | |
| 196 | <bezel name="lamp76" element="led"><bounds x="2" y="4" width="1" height="1" /></bezel> |
| 197 | <bezel name="lamp75" element="led"><bounds x="4" y="4" width="1" height="1" /></bezel> |
| 198 | <bezel name="lamp74" element="led"><bounds x="6" y="4" width="1" height="1" /></bezel> |
| 199 | <bezel name="lamp73" element="led"><bounds x="8" y="4" width="1" height="1" /></bezel> |
| 200 | <bezel name="lamp72" element="led"><bounds x="10" y="4" width="1" height="1" /></bezel> |
| 201 | <bezel name="lamp71" element="led"><bounds x="12" y="4" width="1" height="1" /></bezel> |
| 202 | <bezel name="lamp70" element="led"><bounds x="14" y="4" width="1" height="1" /></bezel> |
| 203 | |
| 204 | <bezel name="lamp67" element="led"><bounds x="1" y="5" width="1" height="1" /></bezel> |
| 205 | <bezel name="lamp66" element="led"><bounds x="3" y="5" width="1" height="1" /></bezel> |
| 206 | <bezel name="lamp65" element="led"><bounds x="5" y="5" width="1" height="1" /></bezel> |
| 207 | <bezel name="lamp64" element="led"><bounds x="7" y="5" width="1" height="1" /></bezel> |
| 208 | <bezel name="lamp63" element="led"><bounds x="9" y="5" width="1" height="1" /></bezel> |
| 209 | <bezel name="lamp62" element="led"><bounds x="11" y="5" width="1" height="1" /></bezel> |
| 210 | <bezel name="lamp61" element="led"><bounds x="13" y="5" width="1" height="1" /></bezel> |
| 211 | <bezel name="lamp60" element="led"><bounds x="15" y="5" width="1" height="1" /></bezel> |
| 212 | |
| 213 | <bezel name="lamp56" element="led"><bounds x="2" y="6" width="1" height="1" /></bezel> |
| 214 | <bezel name="lamp55" element="led"><bounds x="4" y="6" width="1" height="1" /></bezel> |
| 215 | <bezel name="lamp54" element="led"><bounds x="6" y="6" width="1" height="1" /></bezel> |
| 216 | <bezel name="lamp53" element="led"><bounds x="8" y="6" width="1" height="1" /></bezel> |
| 217 | <bezel name="lamp52" element="led"><bounds x="10" y="6" width="1" height="1" /></bezel> |
| 218 | <bezel name="lamp51" element="led"><bounds x="12" y="6" width="1" height="1" /></bezel> |
| 219 | <bezel name="lamp50" element="led"><bounds x="14" y="6" width="1" height="1" /></bezel> |
| 220 | |
| 221 | <bezel name="lamp47" element="led"><bounds x="1" y="7" width="1" height="1" /></bezel> |
| 222 | <bezel name="lamp46" element="led"><bounds x="3" y="7" width="1" height="1" /></bezel> |
| 223 | <bezel name="lamp45" element="led"><bounds x="5" y="7" width="1" height="1" /></bezel> |
| 224 | <bezel name="lamp44" element="led"><bounds x="7" y="7" width="1" height="1" /></bezel> |
| 225 | <bezel name="lamp43" element="led"><bounds x="9" y="7" width="1" height="1" /></bezel> |
| 226 | <bezel name="lamp42" element="led"><bounds x="11" y="7" width="1" height="1" /></bezel> |
| 227 | <bezel name="lamp41" element="led"><bounds x="13" y="7" width="1" height="1" /></bezel> |
| 228 | <bezel name="lamp40" element="led"><bounds x="15" y="7" width="1" height="1" /></bezel> |
| 229 | |
| 230 | <bezel name="lamp36" element="led"><bounds x="2" y="8" width="1" height="1" /></bezel> |
| 231 | <bezel name="lamp35" element="led"><bounds x="4" y="8" width="1" height="1" /></bezel> |
| 232 | <bezel name="lamp34" element="led"><bounds x="6" y="8" width="1" height="1" /></bezel> |
| 233 | <bezel name="lamp33" element="led"><bounds x="8" y="8" width="1" height="1" /></bezel> |
| 234 | <bezel name="lamp32" element="led"><bounds x="10" y="8" width="1" height="1" /></bezel> |
| 235 | <bezel name="lamp31" element="led"><bounds x="12" y="8" width="1" height="1" /></bezel> |
| 236 | <bezel name="lamp30" element="led"><bounds x="14" y="8" width="1" height="1" /></bezel> |
| 237 | |
| 238 | <bezel name="lamp27" element="led"><bounds x="1" y="9" width="1" height="1" /></bezel> |
| 239 | <bezel name="lamp26" element="led"><bounds x="3" y="9" width="1" height="1" /></bezel> |
| 240 | <bezel name="lamp25" element="led"><bounds x="5" y="9" width="1" height="1" /></bezel> |
| 241 | <bezel name="lamp24" element="led"><bounds x="7" y="9" width="1" height="1" /></bezel> |
| 242 | <bezel name="lamp23" element="led"><bounds x="9" y="9" width="1" height="1" /></bezel> |
| 243 | <bezel name="lamp22" element="led"><bounds x="11" y="9" width="1" height="1" /></bezel> |
| 244 | <bezel name="lamp21" element="led"><bounds x="13" y="9" width="1" height="1" /></bezel> |
| 245 | <bezel name="lamp20" element="led"><bounds x="15" y="9" width="1" height="1" /></bezel> |
| 246 | |
| 247 | <bezel name="lamp37" element="led"><bounds x="8" y="10" width="1" height="1" /></bezel> |
| 248 | |
| 249 | |
| 23 | 250 | </view> |
| 24 | 251 | </mamelayout> |
trunk/src/mess/machine/mbee.c
| r243488 | r243489 | |
| 272 | 272 | and (output = 22,21,20,19,18,17,16,15). The prom is also used to control |
| 273 | 273 | the refresh required by the dynamic rams, however we ignore this function. |
| 274 | 274 | |
| 275 | b_mask = total dynamic ram (1=64k; 3=128k; 7=256k) |
| 276 | |
| 275 | 277 | ************************************************************/ |
| 276 | 278 | |
| 277 | | void mbee_state::mbee256_setup_banks(UINT8 data, bool first_time) |
| 279 | void mbee_state::setup_banks(UINT8 data, bool first_time, UINT8 b_mask) |
| 278 | 280 | { |
| 279 | | // (bits 0-5 are referred to as S0-S5) |
| 281 | data &= 0x3f; // (bits 0-5 are referred to as S0-S5) |
| 280 | 282 | address_space &mem = m_maincpu->space(AS_PROGRAM); |
| 281 | | UINT8 *prom = memregion("proms")->base(); |
| 283 | UINT8 *prom = memregion("pals")->base(); |
| 282 | 284 | UINT8 b_data = BITSWAP8(data, 7,5,3,2,4,6,1,0) & 0x3b; // arrange data bits to S0,S1,-,S4,S2,S3 |
| 283 | 285 | UINT8 b_bank, b_byte, b_byte_t, b_addr, p_bank = 1; |
| 284 | 286 | UINT16 b_vid; |
| r243488 | r243489 | |
| 309 | 311 | if (!BIT(b_byte, 4)) |
| 310 | 312 | { |
| 311 | 313 | // select video |
| 312 | | mem.install_read_handler (b_vid, b_vid + 0x7ff, read8_delegate(FUNC(mbee_state::mbeeppc_low_r), this)); |
| 313 | | mem.install_read_handler (b_vid + 0x800, b_vid + 0xfff, read8_delegate(FUNC(mbee_state::mbeeppc_high_r), this)); |
| 314 | if (m_is_premium) |
| 315 | { |
| 316 | mem.install_read_handler (b_vid, b_vid + 0x7ff, read8_delegate(FUNC(mbee_state::mbeeppc_low_r), this)); |
| 317 | mem.install_read_handler (b_vid + 0x800, b_vid + 0xfff, read8_delegate(FUNC(mbee_state::mbeeppc_high_r), this)); |
| 318 | } |
| 319 | else |
| 320 | { |
| 321 | mem.install_read_handler (b_vid, b_vid + 0x7ff, read8_delegate(FUNC(mbee_state::mbee_low_r), this)); |
| 322 | mem.install_read_handler (b_vid + 0x800, b_vid + 0xfff, read8_delegate(FUNC(mbee_state::mbeeic_high_r), this)); |
| 323 | } |
| 314 | 324 | } |
| 315 | 325 | else |
| 316 | 326 | { |
| r243488 | r243489 | |
| 320 | 330 | if (!BIT(b_byte, 3)) |
| 321 | 331 | membank(banktag)->set_entry(64 + (b_bank & 3)); // read from rom |
| 322 | 332 | else |
| 323 | | membank(banktag)->set_entry((b_bank & 7) | ((b_byte & 7) << 3)); // ram |
| 333 | membank(banktag)->set_entry((b_bank & 7) | ((b_byte & b_mask) << 3)); // ram |
| 324 | 334 | } |
| 325 | 335 | } |
| 326 | 336 | p_bank++; |
| r243488 | r243489 | |
| 341 | 351 | if (!BIT(b_byte, 4)) |
| 342 | 352 | { |
| 343 | 353 | // select video |
| 344 | | mem.install_write_handler (b_vid, b_vid + 0x7ff, write8_delegate(FUNC(mbee_state::mbeeppc_low_w), this)); |
| 345 | | mem.install_write_handler (b_vid + 0x800, b_vid + 0xfff, write8_delegate(FUNC(mbee_state::mbeeppc_high_w), this)); |
| 354 | if (m_is_premium) |
| 355 | { |
| 356 | mem.install_write_handler (b_vid, b_vid + 0x7ff, write8_delegate(FUNC(mbee_state::mbeeppc_low_w), this)); |
| 357 | mem.install_write_handler (b_vid + 0x800, b_vid + 0xfff, write8_delegate(FUNC(mbee_state::mbeeppc_high_w), this)); |
| 358 | } |
| 359 | else |
| 360 | { |
| 361 | mem.install_write_handler (b_vid, b_vid + 0x7ff, write8_delegate(FUNC(mbee_state::mbee_low_w), this)); |
| 362 | mem.install_write_handler (b_vid + 0x800, b_vid + 0xfff, write8_delegate(FUNC(mbee_state::mbeeic_high_w), this)); |
| 363 | } |
| 346 | 364 | } |
| 347 | 365 | else |
| 348 | 366 | { |
| r243488 | r243489 | |
| 352 | 370 | if (!BIT(b_byte, 3)) |
| 353 | 371 | membank(banktag)->set_entry(64); // write to rom dummy area |
| 354 | 372 | else |
| 355 | | membank(banktag)->set_entry((b_bank & 7) | ((b_byte & 7) << 3)); // ram |
| 373 | membank(banktag)->set_entry((b_bank & 7) | ((b_byte & b_mask) << 3)); // ram |
| 356 | 374 | } |
| 357 | 375 | } |
| 358 | 376 | p_bank++; |
| r243488 | r243489 | |
| 362 | 380 | |
| 363 | 381 | WRITE8_MEMBER( mbee_state::mbee256_50_w ) |
| 364 | 382 | { |
| 365 | | mbee256_setup_banks(data & 0x3f, 0); |
| 383 | setup_banks(data, 0, 7); |
| 366 | 384 | } |
| 367 | 385 | |
| 368 | 386 | /*********************************************************** |
| r243488 | r243489 | |
| 380 | 398 | |
| 381 | 399 | WRITE8_MEMBER( mbee_state::mbee128_50_w ) |
| 382 | 400 | { |
| 383 | | mbee256_setup_banks(data & 0x1f, 0); // S5 not used |
| 401 | setup_banks(data, 0, 3); |
| 384 | 402 | } |
| 385 | 403 | |
| 386 | | |
| 387 | 404 | /*********************************************************** |
| 388 | 405 | |
| 389 | | 64k Memory Banking |
| 390 | | |
| 391 | | Bit 2 disables ROM, replacing it with RAM. |
| 392 | | |
| 393 | | Due to lack of documentation, it is not possible to know |
| 394 | | if other bits are used. |
| 395 | | |
| 396 | | ************************************************************/ |
| 397 | | |
| 398 | | WRITE8_MEMBER( mbee_state::mbee64_50_w ) |
| 399 | | { |
| 400 | | if BIT(data, 2) |
| 401 | | { |
| 402 | | m_boot->set_entry(0); |
| 403 | | m_bankl->set_entry(0); |
| 404 | | m_bankh->set_entry(0); |
| 405 | | } |
| 406 | | else |
| 407 | | { |
| 408 | | m_bankl->set_entry(1); |
| 409 | | m_bankh->set_entry(1); |
| 410 | | } |
| 411 | | } |
| 412 | | |
| 413 | | |
| 414 | | /*********************************************************** |
| 415 | | |
| 416 | 406 | ROM Banking on older models |
| 417 | 407 | |
| 418 | 408 | Set A to 0 or 1 then read the port to switch between the |
| r243488 | r243489 | |
| 489 | 479 | timer_set(attotime::from_usec(4), TIMER_MBEE_RESET); |
| 490 | 480 | } |
| 491 | 481 | |
| 492 | | MACHINE_RESET_MEMBER( mbee_state, mbee64 ) |
| 493 | | { |
| 494 | | machine_reset_common_disk(); |
| 495 | | m_boot->set_entry(1); |
| 496 | | m_bankl->set_entry(1); |
| 497 | | m_bankh->set_entry(1); |
| 498 | | } |
| 499 | | |
| 500 | 482 | MACHINE_RESET_MEMBER( mbee_state, mbee128 ) |
| 501 | 483 | { |
| 502 | 484 | machine_reset_common_disk(); |
| 503 | | mbee256_setup_banks(0, 1); // set banks to default |
| 485 | setup_banks(0, 1, 3); // set banks to default |
| 504 | 486 | m_maincpu->set_pc(0x8000); |
| 505 | 487 | } |
| 506 | 488 | |
| r243488 | r243489 | |
| 510 | 492 | for (i = 0; i < 15; i++) m_mbee256_was_pressed[i] = 0; |
| 511 | 493 | m_mbee256_q_pos = 0; |
| 512 | 494 | machine_reset_common_disk(); |
| 513 | | mbee256_setup_banks(0, 1); // set banks to default |
| 495 | setup_banks(0, 1, 7); // set banks to default |
| 514 | 496 | m_maincpu->set_pc(0x8000); |
| 515 | 497 | } |
| 516 | 498 | |
| r243488 | r243489 | |
| 625 | 607 | m_size = 0xe000; |
| 626 | 608 | } |
| 627 | 609 | |
| 628 | | DRIVER_INIT_MEMBER( mbee_state, mbee64 ) |
| 629 | | { |
| 630 | | UINT8 *RAM = memregion("maincpu")->base(); |
| 631 | | m_boot->configure_entry(0, &RAM[0x0000]); |
| 632 | | m_bankl->configure_entry(0, &RAM[0x1000]); |
| 633 | | m_bankl->configure_entry(1, &RAM[0x9000]); |
| 634 | | m_bankh->configure_entry(0, &RAM[0x8000]); |
| 635 | | |
| 636 | | RAM = memregion("bootrom")->base(); |
| 637 | | m_bankh->configure_entry(1, &RAM[0x0000]); |
| 638 | | m_boot->configure_entry(1, &RAM[0x0000]); |
| 639 | | |
| 640 | | m_size = 0xf000; |
| 641 | | } |
| 642 | | |
| 643 | 610 | DRIVER_INIT_MEMBER( mbee_state, mbee128 ) |
| 644 | 611 | { |
| 645 | 612 | UINT8 *RAM = memregion("rams")->base(); |
| r243488 | r243489 | |
| 656 | 623 | membank(banktag)->configure_entries(0, 32, &RAM[0x0000], 0x1000); // RAM banks |
| 657 | 624 | membank(banktag)->configure_entries(64, 1, &ROM[0x4000], 0x1000); // dummy rom |
| 658 | 625 | } |
| 659 | | |
| 660 | | m_size = 0x8000; |
| 626 | m_size = 0xf000; |
| 661 | 627 | } |
| 662 | 628 | |
| 663 | 629 | DRIVER_INIT_MEMBER( mbee_state, mbee256 ) |