trunk/src/mess/drivers/prestige.c
| r29596 | r29597 | |
| 90 | 90 | prestige_state(const machine_config &mconfig, device_type type, const char *tag) |
| 91 | 91 | : driver_device(mconfig, type, tag), |
| 92 | 92 | m_maincpu(*this, "maincpu"), |
| 93 | | m_ram(*this, RAM_TAG) |
| 93 | m_ram(*this, RAM_TAG), |
| 94 | m_bank1(*this, "bank1"), |
| 95 | m_bank2(*this, "bank2"), |
| 96 | m_bank3(*this, "bank3"), |
| 97 | m_bank4(*this, "bank4"), |
| 98 | m_bank5(*this, "bank5") |
| 94 | 99 | { } |
| 95 | 100 | |
| 96 | 101 | required_device<cpu_device> m_maincpu; |
| 97 | 102 | required_device<ram_device> m_ram; |
| 103 | required_memory_bank m_bank1; |
| 104 | required_memory_bank m_bank2; |
| 105 | required_memory_bank m_bank3; |
| 106 | required_memory_bank m_bank4; |
| 107 | required_memory_bank m_bank5; |
| 98 | 108 | |
| 99 | 109 | UINT8 m_bank[7]; |
| 100 | 110 | UINT8 m_kb_matrix; |
| r29596 | r29597 | |
| 130 | 140 | switch (offset) |
| 131 | 141 | { |
| 132 | 142 | case 0: |
| 133 | | membank("bank1")->set_entry(data & 0x3f); |
| 143 | m_bank1->set_entry(data & 0x3f); |
| 134 | 144 | break; |
| 135 | 145 | |
| 136 | 146 | case 1: |
| 137 | | if (m_bank[5] & 0x08) |
| 138 | | membank("bank2")->set_entry(0x40 + (data & 1)); |
| 147 | if (m_bank[5] & 0x02) |
| 148 | m_bank2->set_entry(0x40 + (data & 0x1f)); |
| 139 | 149 | else |
| 140 | | membank("bank2")->set_entry(data & 0x3f); |
| 150 | m_bank2->set_entry(data & 0x3f); |
| 141 | 151 | break; |
| 142 | 152 | |
| 143 | 153 | case 2: |
| 144 | 154 | if (m_bank[5] & 0x04) |
| 145 | | membank("bank3")->set_entry(0x40 + (data & 1)); |
| 155 | m_bank3->set_entry(0x40 + (data & 0x1f)); |
| 146 | 156 | else |
| 147 | | membank("bank3")->set_entry(data & 0x3f); |
| 157 | m_bank3->set_entry(data & 0x3f); |
| 148 | 158 | break; |
| 149 | 159 | |
| 150 | 160 | case 3: |
| 151 | | if (m_bank[5] & 0x02) |
| 152 | | membank("bank4")->set_entry(0x04 + (data & 0x03)); |
| 153 | | else |
| 154 | | membank("bank4")->set_entry(data & 0x03); |
| 161 | m_bank4->set_entry(data & 0x03); |
| 155 | 162 | break; |
| 156 | 163 | |
| 157 | 164 | case 4: |
| 158 | | membank("bank5")->set_entry(data & 0x03); |
| 165 | m_bank5->set_entry(data & 0x03); |
| 159 | 166 | break; |
| 160 | 167 | |
| 161 | 168 | case 5: |
| 162 | 169 | if (ioport("CART_TYPE")->read() == 0x01) |
| 163 | 170 | { |
| 164 | 171 | //cartridge memory is writable |
| 165 | | if (data & 0x08) |
| 172 | if (data & 0x02) |
| 166 | 173 | program.install_readwrite_bank(0x4000, 0x7fff, "bank2"); |
| 167 | 174 | else |
| 168 | 175 | program.unmap_write(0x4000, 0x7fff); |
| r29596 | r29597 | |
| 171 | 178 | program.install_readwrite_bank(0x8000, 0xbfff, "bank3"); |
| 172 | 179 | else |
| 173 | 180 | program.unmap_write(0x8000, 0xbfff); |
| 174 | | |
| 175 | | program.install_readwrite_bank(0xc000, 0xdfff, "bank4"); |
| 176 | 181 | } |
| 177 | 182 | else |
| 178 | 183 | { |
| 179 | 184 | //cartridge memory is read-only |
| 180 | | if (data & 0x02) |
| 181 | | program.unmap_write(0xc000, 0xdfff); |
| 182 | | else |
| 183 | | program.install_readwrite_bank(0xc000, 0xdfff, "bank4"); |
| 184 | | |
| 185 | 185 | program.unmap_write(0x4000, 0xbfff); |
| 186 | 186 | } |
| 187 | 187 | break; |
| r29596 | r29597 | |
| 264 | 264 | /* Input ports */ |
| 265 | 265 | INPUT_PORTS_START( prestige ) |
| 266 | 266 | PORT_START("CART_TYPE") |
| 267 | | PORT_CONFNAME( 0x01, 0x01, "Cartridge Type" ) |
| 267 | PORT_CONFNAME( 0x01, 0x00, "Cartridge Type" ) |
| 268 | 268 | PORT_CONFSETTING( 0x00, "ROM" ) |
| 269 | 269 | PORT_CONFSETTING( 0x01, "RAM" ) |
| 270 | 270 | |
| 271 | 271 | PORT_START("MOUSEX") |
| 272 | | PORT_BIT( 0xff, 0x00, IPT_MOUSE_X ) PORT_SENSITIVITY(10) PORT_KEYDELTA(0) |
| 272 | PORT_BIT( 0xff, 0x00, IPT_MOUSE_X ) PORT_SENSITIVITY(20) PORT_KEYDELTA(2) |
| 273 | 273 | |
| 274 | 274 | PORT_START("MOUSEY") |
| 275 | | PORT_BIT( 0xff, 0x00, IPT_MOUSE_Y ) PORT_SENSITIVITY(10) PORT_KEYDELTA(0) |
| 275 | PORT_BIT( 0xff, 0x00, IPT_MOUSE_Y ) PORT_SENSITIVITY(20) PORT_KEYDELTA(2) |
| 276 | 276 | |
| 277 | 277 | PORT_START("LINE0") |
| 278 | 278 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Left mouse button") PORT_CODE(MOUSECODE_BUTTON1) |
| r29596 | r29597 | |
| 418 | 418 | |
| 419 | 419 | void prestige_state::machine_start() |
| 420 | 420 | { |
| 421 | UINT8 *rom = (UINT8 *)(*memregion("maincpu")); |
| 422 | UINT8 *cart = (UINT8 *)(*memregion("cart")); |
| 421 | 423 | UINT8 *ram = m_ram->pointer(); |
| 422 | 424 | memset(ram, 0x00, m_ram->size()); |
| 423 | 425 | |
| 424 | 426 | m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(prestige_state::prestige_int_ack),this)); |
| 425 | 427 | |
| 426 | | membank("bank1")->configure_entries(0, 64, memregion("maincpu")->base(), 0x4000); |
| 427 | | membank("bank2")->configure_entries(0, 64, memregion("maincpu")->base(), 0x4000); |
| 428 | | membank("bank2")->configure_entries(64, 2, memregion("cart")->base(), 0x4000); |
| 429 | | membank("bank3")->configure_entries(0, 64, memregion("maincpu")->base(), 0x4000); |
| 430 | | membank("bank3")->configure_entries(64, 2, memregion("cart")->base(), 0x4000); |
| 431 | | membank("bank4")->configure_entries(0, 4, ram, 0x2000); |
| 432 | | membank("bank4")->configure_entries(4, 4, memregion("cart")->base(), 0x2000); |
| 433 | | membank("bank5")->configure_entries(0, 4, ram, 0x2000); |
| 428 | m_bank1->configure_entries(0, 64, rom, 0x4000); |
| 429 | m_bank1->configure_entries(64,32, cart, 0x4000); |
| 430 | m_bank2->configure_entries(0, 64, rom, 0x4000); |
| 431 | m_bank2->configure_entries(64,32, cart, 0x4000); |
| 432 | m_bank3->configure_entries(0, 64, rom, 0x4000); |
| 433 | m_bank3->configure_entries(64,32, cart, 0x4000); |
| 434 | m_bank4->configure_entries(0, 4, ram, 0x2000); |
| 435 | m_bank5->configure_entries(0, 4, ram, 0x2000); |
| 434 | 436 | |
| 435 | | membank("bank1")->set_entry(0); |
| 436 | | membank("bank2")->set_entry(0); |
| 437 | | membank("bank3")->set_entry(0); |
| 438 | | membank("bank4")->set_entry(0); |
| 439 | | membank("bank5")->set_entry(0); |
| 437 | m_bank1->set_entry(0); |
| 438 | m_bank2->set_entry(0); |
| 439 | m_bank3->set_entry(0); |
| 440 | m_bank4->set_entry(0); |
| 441 | m_bank5->set_entry(0); |
| 440 | 442 | |
| 441 | 443 | //pointer to the videoram |
| 442 | 444 | m_vram = ram; |
| r29596 | r29597 | |
| 477 | 479 | m_maincpu->set_input_line(0, ASSERT_LINE); |
| 478 | 480 | } |
| 479 | 481 | |
| 480 | | static MACHINE_CONFIG_START( prestige, prestige_state ) |
| 482 | static MACHINE_CONFIG_START( prestige_base, prestige_state ) |
| 481 | 483 | /* basic machine hardware */ |
| 482 | 484 | MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz) |
| 483 | 485 | MCFG_CPU_PROGRAM_MAP(prestige_mem) |
| r29596 | r29597 | |
| 510 | 512 | MCFG_RAM_EXTRA_OPTIONS("64K") |
| 511 | 513 | MACHINE_CONFIG_END |
| 512 | 514 | |
| 513 | | static MACHINE_CONFIG_DERIVED( gl6000sl, prestige ) |
| 515 | static MACHINE_CONFIG_DERIVED( prestige, prestige_base ) |
| 516 | MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("gl6000sl_cart", "gl6000sl") |
| 517 | MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("misterx_cart", "misterx") |
| 518 | MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("gl2000_cart", "gl2000") |
| 519 | MACHINE_CONFIG_END |
| 520 | |
| 521 | static MACHINE_CONFIG_DERIVED( gl6000sl, prestige_base ) |
| 514 | 522 | MCFG_SOFTWARE_LIST_ADD("cart_list", "gl6000sl") |
| 515 | 523 | MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("misterx_cart", "misterx") |
| 516 | 524 | MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("gl2000_cart", "gl2000") |
| 517 | 525 | MACHINE_CONFIG_END |
| 518 | 526 | |
| 519 | | static MACHINE_CONFIG_DERIVED( gl7007sl, prestige ) |
| 527 | static MACHINE_CONFIG_DERIVED( gl7007sl, prestige_base ) |
| 520 | 528 | MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("gl6000sl_cart", "gl6000sl") |
| 521 | 529 | MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("gl2000_cart", "gl2000") |
| 522 | 530 | MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("misterx_cart", "misterx") |
| r29596 | r29597 | |
| 527 | 535 | ROM_REGION(0x100000, "maincpu", 0) |
| 528 | 536 | ROM_LOAD( "27-5894-01", 0x000000, 0x080000, CRC(7336231c) SHA1(35a1f739994b5c8fb67a7f76d423e50d8154e9ea) ) |
| 529 | 537 | |
| 530 | | ROM_REGION( 0x40000, "cart", ROMREGION_ERASEFF ) |
| 531 | | ROM_CART_LOAD( "cart", 0, 0x40000, 0 ) |
| 538 | ROM_REGION( 0x80000, "cart", ROMREGION_ERASEFF ) |
| 539 | ROM_CART_LOAD( "cart", 0, 0x80000, 0 ) |
| 532 | 540 | ROM_END |
| 533 | 541 | |
| 534 | 542 | ROM_START( gl7007sl ) |
| 535 | 543 | ROM_REGION(0x100000, "maincpu", 0) |
| 536 | 544 | ROM_LOAD( "27-6060-00", 0x000000, 0x100000, CRC(06b2a595) SHA1(654d00e55ee43627ff947d72676c8e48e0518123) ) |
| 537 | 545 | |
| 538 | | ROM_REGION( 0x40000, "cart", ROMREGION_ERASEFF ) |
| 539 | | ROM_CART_LOAD( "cart", 0, 0x40000, 0 ) |
| 546 | ROM_REGION( 0x80000, "cart", ROMREGION_ERASEFF ) |
| 547 | ROM_CART_LOAD( "cart", 0, 0x80000, 0 ) |
| 540 | 548 | ROM_END |
| 541 | 549 | |
| 542 | 550 | ROM_START( prestige ) |
| 543 | 551 | ROM_REGION( 0x100000, "maincpu", 0 ) |
| 544 | 552 | ROM_LOAD( "27-6020-02.u2", 0x00000, 0x100000, CRC(6bb6db14) SHA1(5d51fc3fd799e7f01ee99c453f9005fb07747b1e) ) |
| 545 | 553 | |
| 546 | | ROM_REGION( 0x40000, "cart", ROMREGION_ERASEFF ) |
| 547 | | ROM_CART_LOAD( "cart", 0, 0x40000, 0 ) |
| 554 | ROM_REGION( 0x80000, "cart", ROMREGION_ERASEFF ) |
| 555 | ROM_CART_LOAD( "cart", 0, 0x80000, 0 ) |
| 548 | 556 | ROM_END |
| 549 | 557 | |
| 550 | 558 | ROM_START( glcolor ) |
| 551 | 559 | ROM_REGION( 0x100000, "maincpu", 0 ) |
| 552 | 560 | ROM_LOAD( "27-5488-00.u5", 0x00000, 0x080000, CRC(e6cf7702) SHA1(ce40418a7777b331bf8c4c881d51732aeb384582) ) |
| 553 | 561 | |
| 554 | | ROM_REGION( 0x40000, "cart", ROMREGION_ERASEFF ) |
| 555 | | ROM_CART_LOAD( "cart", 0, 0x40000, 0 ) |
| 562 | ROM_REGION( 0x80000, "cart", ROMREGION_ERASEFF ) |
| 563 | ROM_CART_LOAD( "cart", 0, 0x80000, 0 ) |
| 556 | 564 | ROM_END |
| 557 | 565 | |
| 558 | 566 | /* Driver */ |