From 7c7b87670e2a3fef90ebd01e6db72bc6ed63cf78 Mon Sep 17 00:00:00 2001 From: norill Date: Wed, 8 Apr 2020 04:28:19 +0200 Subject: [PATCH] Mapper 15: Improved accuracy (#800) fixed 2 inaccuracies: - not making CHR read only in modes 0 and 3 - always using last bank in mode 1 instead of using bank B | 7 --- Core/Mapper15.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Core/Mapper15.h b/Core/Mapper15.h index ec0ba695..d503d16e 100644 --- a/Core/Mapper15.h +++ b/Core/Mapper15.h @@ -24,7 +24,11 @@ protected: uint8_t subBank = value >> 7; uint8_t bank = (value & 0x7F) << 1; - switch(addr & 0x03) { + uint8_t mode = addr & 0x03; + + SetPpuMemoryMapping(0, 0x1FFF, 0, ChrMemoryType::Default, (mode == 0 || mode == 3) ? MemoryAccessType::Read : MemoryAccessType::ReadWrite); + + switch(mode) { case 0: SelectPRGPage(0, bank ^ subBank); SelectPRGPage(1, (bank + 1) ^ subBank); @@ -37,7 +41,7 @@ protected: bank |= subBank; SelectPRGPage(0, bank); SelectPRGPage(1, bank + 1); - bank = ((addr & 0x02) ? bank : 0xFE) | subBank; + bank = ((mode == 3) ? bank : (bank | 0x14)) | subBank; SelectPRGPage(2, bank + 0); SelectPRGPage(3, bank + 1); break;