Previous 199869 Revisions Next

r24041 Tuesday 2nd July, 2013 at 09:07:19 UTC by Robbbert
MT 04841: m4exotic, m4jflash, m4madmnc, m4mmm, m4przrfm, m4rhfev, m4spinbt, m4xch, m4xs, m4xtrm: [debug] Crash after OK [Robbbert]
(out of whatsnew): Modified banking so it doesn't try to select a bank beyond the end of memory. There are far too many sets to test to look for regressions elsewhere.
[src/mame/drivers]mpu4hw.c
[src/mame/includes]mpu4.h

trunk/src/mame/includes/mpu4.h
r24040r24041
198198   int m_t1;
199199   int m_t3l;
200200   int m_t3h;
201   UINT8 m_numbanks;
201202   mpu4_chr_table* m_current_chr_table;
202203   const bwb_chr_table* m_bwb_chr_table1;
203204
trunk/src/mame/drivers/mpu4hw.c
r24040r24041
468468
469469
470470   {
471      UINT8 *rom = memregion("maincpu")->base();
472      size_t romsize = memregion("maincpu")->bytes();
471      if (m_numbanks)
472         m_bank1->set_entry(m_numbanks);
473473
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
487474      m_maincpu->reset();
488475   }
489476}
r24040r24041
529516
530517   // m_pageset is never even set??
531518   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);
533520}
534521
535522
r24040r24041
546533   // m_pageset is never even set??
547534
548535   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);
550537}
551538
552539
r24040r24041
15371524   {
15381525      //printf("pia_gb_cb2_w %d\n", state);
15391526      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);
15411528   }
15421529}
15431530
r24040r24041
26492636      m_bwb_bank=1;
26502637      space.install_write_handler(0x0858, 0x0858, 0, 0, write8_delegate(FUNC(mpu4_state::bankswitch_w),this));
26512638      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);
26522652   }
26532653}
26542654

Previous 199869 Revisions Next


© 1997-2024 The MAME Team