From 2389e10a598ec036979480f54a0274ab1b67b9fd Mon Sep 17 00:00:00 2001 From: Sour Date: Sun, 8 Jul 2018 14:36:30 -0400 Subject: [PATCH] Added support for mapper 309 (LH-51) --- Core/Core.vcxproj | 1 + Core/Core.vcxproj.filters | 3 +++ Core/Lh51.h | 32 ++++++++++++++++++++++++++++++++ Core/MapperFactory.cpp | 3 ++- Core/UnifLoader.cpp | 1 + 5 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 Core/Lh51.h diff --git a/Core/Core.vcxproj b/Core/Core.vcxproj index 10180300..dc976b92 100644 --- a/Core/Core.vcxproj +++ b/Core/Core.vcxproj @@ -541,6 +541,7 @@ + diff --git a/Core/Core.vcxproj.filters b/Core/Core.vcxproj.filters index f3e87554..2025f63e 100644 --- a/Core/Core.vcxproj.filters +++ b/Core/Core.vcxproj.filters @@ -1450,6 +1450,9 @@ Nes\Mappers\Unif + + Nes\Mappers\Unif + diff --git a/Core/Lh51.h b/Core/Lh51.h new file mode 100644 index 00000000..96efa5f9 --- /dev/null +++ b/Core/Lh51.h @@ -0,0 +1,32 @@ +#pragma once +#include "stdafx.h" +#include "BaseMapper.h" + +class Lh51 : public BaseMapper +{ +protected: + virtual uint16_t GetPRGPageSize() override { return 0x2000; } + virtual uint16_t GetCHRPageSize() override { return 0x2000; } + + void InitMapper() override + { + SelectPRGPage(0, 0); + SelectPRGPage(1, 13); + SelectPRGPage(2, 14); + SelectPRGPage(3, 15); + SelectCHRPage(0, 0); + } + + void WriteRegister(uint16_t addr, uint8_t value) override + { + switch(addr & 0xE000) { + case 0x8000: + SelectPRGPage(0, value & 0x0F); + break; + + case 0xE000: + SetMirroringType(value & 0x08 ? MirroringType::Horizontal : MirroringType::Vertical); + break; + } + } +}; diff --git a/Core/MapperFactory.cpp b/Core/MapperFactory.cpp index 83863d51..0c1a48ff 100644 --- a/Core/MapperFactory.cpp +++ b/Core/MapperFactory.cpp @@ -88,6 +88,7 @@ #include "Kaiser7058.h" #include "Lh10.h" #include "Lh32.h" +#include "Lh51.h" #include "Malee.h" #include "MagicKidGooGoo.h" #include "Mapper15.h" @@ -576,7 +577,7 @@ BaseMapper* MapperFactory::GetMapperFromID(RomData &romData) case 306: return new Kaiser7016(); case 307: return new Kaiser7037(); case 308: break; //TH2131-1 - case 309: break; //LH51 + case 309: return new Lh51(); //310-311 case 312: return new Kaiser7013B(); case 313: break; //RESET-TXROM diff --git a/Core/UnifLoader.cpp b/Core/UnifLoader.cpp index b90bba8d..8e19db91 100644 --- a/Core/UnifLoader.cpp +++ b/Core/UnifLoader.cpp @@ -67,6 +67,7 @@ std::unordered_map UnifLoader::_boardMappings = std::unordered_map< { "LE05", UnifBoards::UnknownBoard }, { "LH10", 522 }, { "LH32", 125 }, + { "LH51", 309 }, { "LH53", UnifBoards::UnknownBoard }, { "MALISB", 325 }, { "MARIO1-MALEE2", UnifBoards::Malee },