Skip to content

Commit

Permalink
libgambatte: make mbc3 behave more like mbc1.
Browse files Browse the repository at this point in the history
map rom bank 0 to bank 1.

fixes pokemon red/blue name entry glitch that has gone unnoticed for
years.

found by anthonyjbentley.
  • Loading branch information
sinamas committed Jul 24, 2014
1 parent 4d04795 commit 7c92c6d
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions libgambatte/src/mem/cartridge.cpp
Expand Up @@ -278,7 +278,7 @@ class Mbc3 : public DefaultMbc {
break;
case 1:
rombank_ = data & 0x7F;
memptrs_.setRombank(rombank_ & (rombanks(memptrs_) - 1));
setRombank();
break;
case 2:
rambank_ = data;
Expand All @@ -303,7 +303,7 @@ class Mbc3 : public DefaultMbc {
rambank_ = ss.rambank;
enableRam_ = ss.enableRam;
setRambank();
memptrs_.setRombank(rombank_ & (rombanks(memptrs_) - 1));
setRombank();
}

private:
Expand All @@ -325,6 +325,10 @@ class Mbc3 : public DefaultMbc {

memptrs_.setRambank(flags, rambank_ & (rambanks(memptrs_) - 1));
}

void setRombank() const {
memptrs_.setRombank(std::max(rombank_ & (rombanks(memptrs_) - 1), 1u));
}
};

class HuC1 : public DefaultMbc {
Expand Down

0 comments on commit 7c92c6d

Please sign in to comment.