From 1dc9d0e123881500072406380f8e7cf3446d9a2e Mon Sep 17 00:00:00 2001 From: MrWint Date: Sat, 25 May 2019 19:35:42 +0200 Subject: [PATCH] allow mapping rom bank0 in more cases --- libgambatte/src/mem/cartridge.cpp | 17 ++++++++++++----- output/dll/libgambatte.dll | Bin 141824 -> 141824 bytes 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/libgambatte/src/mem/cartridge.cpp b/libgambatte/src/mem/cartridge.cpp index 5d3dea9e4d..e1f570fdcc 100644 --- a/libgambatte/src/mem/cartridge.cpp +++ b/libgambatte/src/mem/cartridge.cpp @@ -92,7 +92,7 @@ class Mbc1 : public DefaultMbc { static unsigned adjustedRombank(unsigned bank) { return bank & 0x1F ? bank : bank | 1; } void setRambank() const { memptrs.setRambank(enableRam ? MemPtrs::READ_EN | MemPtrs::WRITE_EN : 0, rambank & (rambanks(memptrs) - 1)); } - void setRombank() const { memptrs.setRombank(adjustedRombank(rombank & (rombanks(memptrs) - 1))); } + void setRombank() const { memptrs.setRombank(adjustedRombank(rombank) & (rombanks(memptrs) - 1)); } public: explicit Mbc1(MemPtrs &memptrs) @@ -172,7 +172,7 @@ class Mbc1Multi64 : public Mbc { memptrs.setRombank(adjustedRombank(rb)); } else { memptrs.setRombank0(0); - memptrs.setRombank(adjustedRombank(rombank & (rombanks(memptrs) - 1))); + memptrs.setRombank(adjustedRombank(rombank) & (rombanks(memptrs) - 1)); } } @@ -193,7 +193,9 @@ public: break; case 1: rombank = (rombank & 0x60) | (data & 0x1F); - memptrs.setRombank(adjustedRombank(rombank0Mode ? toMulti64Rombank(rombank) : rombank & (rombanks(memptrs) - 1))); + memptrs.setRombank(rombank0Mode + ? adjustedRombank(toMulti64Rombank(rombank)) + : adjustedRombank(rombank) & (rombanks(memptrs) - 1)); break; case 2: rombank = (data << 5 & 0x60) | (rombank & 0x1F); @@ -433,8 +435,13 @@ class Mbc5 : public DefaultMbc { bool enableRam; static unsigned adjustedRombank(const unsigned bank) { return bank; } - void setRambank() const { memptrs.setRambank(enableRam ? MemPtrs::READ_EN | MemPtrs::WRITE_EN : 0, rambank & (rambanks(memptrs) - 1)); } - void setRombank() const { memptrs.setRombank(adjustedRombank(rombank & (rombanks(memptrs) - 1))); } + + void setRambank() const { + memptrs.setRambank(enableRam ? MemPtrs::READ_EN | MemPtrs::WRITE_EN : 0, + rambank & (rambanks(memptrs) - 1)); + } + + void setRombank() const { memptrs.setRombank(adjustedRombank(rombank) & (rombanks(memptrs) - 1)); } public: explicit Mbc5(MemPtrs &memptrs) diff --git a/output/dll/libgambatte.dll b/output/dll/libgambatte.dll index a871f98e63ae8c618c519c765adff6e10cab0465..4b53f609938abdf7c1054faf54c797ffd518d0dc 100644 GIT binary patch delta 467 zcmZp;!qISrV}k%A)9jkfLW~Bdm;yN_mt0a|l%IU?iWYl(+{T)}F?9R0lz8%QbLW`6>8!q3j3@&`cRfq@vF>xtCm0(Z z%JaK?c@fI9d0+w079P|NkNGaOF{9 z>~Q0H;Q|xkmuG0Z#UQW=hz)Kt2>3S_p5I=0p3zv2v0(esw~XgGtY+7|i~(B5zy!n| zK)geoiDAcoMvxE#OpXW026~!-K?0--gh6uC*L`D@0!G;OQ{NbwI2qZupZ(9+FU#1p KJyw=!F%JMMPN*yZ delta 579 zcmZp;!qISrV}k%AlXUfFAx48!I*uG+-GwaO(-tr=FlbMk10)+?F*GnR9DK#+rF^0L zRQI9g6O0WH<-5=EyG%~JuEw@PoPpuYna#6Ki!thUm$UG1bLSvhx5{M3v-5?5yKja! zRC6(Od$W|p@NaYG2%Eg|tbTp8C<8-xHB0xg?sE_;`CUGAw}V{NxqS_gJot={`B>cR zxb8-f7%PJVP@=H`$n0e7bY$st0x*EMPBheUF?1d5@Z$*Yt^