trunk/src/mame/drivers/mpu4hw.c
| r24040 | r24041 | |
| 468 | 468 | |
| 469 | 469 | |
| 470 | 470 | { |
| 471 | | UINT8 *rom = memregion("maincpu")->base(); |
| 472 | | size_t romsize = memregion("maincpu")->bytes(); |
| 471 | if (m_numbanks) |
| 472 | m_bank1->set_entry(m_numbanks); |
| 473 | 473 | |
| 474 | | if (romsize < 0x10000) |
| 475 | | fatalerror("maincpu ROM region is < 0x10000 bytes, check ROM\n"); |
| 476 | | |
| 477 | | int numbanks = romsize / 0x10000; |
| 478 | | |
| 479 | | m_bank1->configure_entries(0, 8, &rom[0x01000], 0x10000); |
| 480 | | |
| 481 | | // some Bwb games must default to the last bank, does anything not like this |
| 482 | | // behavior? |
| 483 | | // some Bwb games don't work anyway tho, they seem to dislike something else |
| 484 | | // about the way the regular banking behaves, not related to the CB2 stuff |
| 485 | | m_bank1->set_entry(numbanks-1); |
| 486 | | |
| 487 | 474 | m_maincpu->reset(); |
| 488 | 475 | } |
| 489 | 476 | } |
| r24040 | r24041 | |
| 529 | 516 | |
| 530 | 517 | // m_pageset is never even set?? |
| 531 | 518 | m_pageval = (data & 0x03); |
| 532 | | m_bank1->set_entry((m_pageval + (m_pageset ? 4 : 0)) & 0x07); |
| 519 | m_bank1->set_entry((m_pageval + (m_pageset ? 4 : 0)) & m_numbanks); |
| 533 | 520 | } |
| 534 | 521 | |
| 535 | 522 | |
| r24040 | r24041 | |
| 546 | 533 | // m_pageset is never even set?? |
| 547 | 534 | |
| 548 | 535 | m_pageval = (data - 2);//writes 2 and 3, to represent 0 and 1 - a hangover from the half page design? |
| 549 | | m_bank1->set_entry((m_pageval + (m_pageset ? 4 : 0)) & 0x07); |
| 536 | m_bank1->set_entry((m_pageval + (m_pageset ? 4 : 0)) & m_numbanks); |
| 550 | 537 | } |
| 551 | 538 | |
| 552 | 539 | |
| r24040 | r24041 | |
| 1537 | 1524 | { |
| 1538 | 1525 | //printf("pia_gb_cb2_w %d\n", state); |
| 1539 | 1526 | m_pageval = state; |
| 1540 | | m_bank1->set_entry((m_pageval + (m_pageset ? 4 : 0)) & 0x07); |
| 1527 | m_bank1->set_entry((m_pageval + (m_pageset ? 4 : 0)) & m_numbanks); |
| 1541 | 1528 | } |
| 1542 | 1529 | } |
| 1543 | 1530 | |
| r24040 | r24041 | |
| 2649 | 2636 | m_bwb_bank=1; |
| 2650 | 2637 | space.install_write_handler(0x0858, 0x0858, 0, 0, write8_delegate(FUNC(mpu4_state::bankswitch_w),this)); |
| 2651 | 2638 | space.install_write_handler(0x0878, 0x0878, 0, 0, write8_delegate(FUNC(mpu4_state::bankset_w),this)); |
| 2639 | UINT8 *rom = memregion("maincpu")->base(); |
| 2640 | |
| 2641 | m_numbanks = size / 0x10000; |
| 2642 | |
| 2643 | m_bank1->configure_entries(0, m_numbanks, &rom[0x01000], 0x10000); |
| 2644 | |
| 2645 | m_numbanks--; |
| 2646 | |
| 2647 | // some Bwb games must default to the last bank, does anything not like this |
| 2648 | // behavior? |
| 2649 | // some Bwb games don't work anyway tho, they seem to dislike something else |
| 2650 | // about the way the regular banking behaves, not related to the CB2 stuff |
| 2651 | m_bank1->set_entry(m_numbanks); |
| 2652 | 2652 | } |
| 2653 | 2653 | } |
| 2654 | 2654 | |