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 },