From 276b152fbcefdeddd6eac8fd71c8cabb1cc532ef Mon Sep 17 00:00:00 2001 From: Souryo Date: Sat, 23 Jul 2016 12:58:44 -0400 Subject: [PATCH] Mapper 197 support --- Core/Core.vcxproj | 1 + Core/Core.vcxproj.filters | 3 +++ Core/MMC3_197.h | 23 +++++++++++++++++++++++ Core/MapperFactory.cpp | 4 +++- 4 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 Core/MMC3_197.h diff --git a/Core/Core.vcxproj b/Core/Core.vcxproj index 04752c11..0b2bb2ff 100644 --- a/Core/Core.vcxproj +++ b/Core/Core.vcxproj @@ -466,6 +466,7 @@ + diff --git a/Core/Core.vcxproj.filters b/Core/Core.vcxproj.filters index 5f205177..1e4817b3 100644 --- a/Core/Core.vcxproj.filters +++ b/Core/Core.vcxproj.filters @@ -802,6 +802,9 @@ Nes\Mappers\Unnamed + + Nes\Mappers\MMC + diff --git a/Core/MMC3_197.h b/Core/MMC3_197.h new file mode 100644 index 00000000..93af5a14 --- /dev/null +++ b/Core/MMC3_197.h @@ -0,0 +1,23 @@ +#pragma once + +#include "stdafx.h" +#include "MMC3.h" + +class MMC3_197 : public MMC3 +{ +protected: + virtual void UpdateChrMapping() + { + if(_chrMode == 0) { + SelectChrPage4x(0, _registers[0] << 1); + + SelectChrPage2x(2, _registers[2] << 1); + SelectChrPage2x(3, _registers[3] << 1); + } else if(_chrMode == 1) { + SelectChrPage4x(0, _registers[2] << 1); + + SelectChrPage2x(2, _registers[0] << 1); + SelectChrPage2x(3, _registers[0] << 1); + } + } +}; \ No newline at end of file diff --git a/Core/MapperFactory.cpp b/Core/MapperFactory.cpp index 20952424..c79efea0 100644 --- a/Core/MapperFactory.cpp +++ b/Core/MapperFactory.cpp @@ -82,6 +82,7 @@ #include "MMC3_165.h" #include "MMC3_182.h" #include "MMC3_189.h" +#include "MMC3_197.h" #include "MMC3_205.h" #include "MMC3_245.h" #include "MMC3_ChrRam.h" @@ -159,7 +160,7 @@ Supported mappers: |144|145|146|147|148|149|150|151|152|153|154|155|156|157| |159| | | | |163|164|165|166|167| | |170|171|172|173| |175| |176|177|178|179|180| |182| |184|185| | | |189| |191| -|192|193|194|195| | | | |200|201|202|203| |205|206|207| +|192|193|194|195| |197| | |200|201|202|203| |205|206|207| | |209|210|211| | | | | | |218| | | | | | | |225|226|227|228| |230|231|232| |234|235| | | | | |240|241|242|243| |245|246| | | | | |252| | | | @@ -323,6 +324,7 @@ BaseMapper* MapperFactory::GetMapperFromID(RomData &romData) case 193: return new NtdecTc112(); case 194: return new MMC3_ChrRam(0x00, 0x01, 2); case 195: return new MMC3_ChrRam(0x00, 0x03, 4); + case 197: return new MMC3_197(); case 200: return new Mapper200(); case 201: return new Mapper201(); case 202: return new Mapper202();