diff --git a/Core/Core.vcxproj b/Core/Core.vcxproj
index 6ca6a1b8..aac7b503 100644
--- a/Core/Core.vcxproj
+++ b/Core/Core.vcxproj
@@ -366,6 +366,7 @@
+
diff --git a/Core/Core.vcxproj.filters b/Core/Core.vcxproj.filters
index 81205fb5..2e52d743 100644
--- a/Core/Core.vcxproj.filters
+++ b/Core/Core.vcxproj.filters
@@ -392,6 +392,9 @@
Nes\Mappers
+
+ Nes\Mappers
+
diff --git a/Core/IremLrog017.h b/Core/IremLrog017.h
new file mode 100644
index 00000000..4d4040e0
--- /dev/null
+++ b/Core/IremLrog017.h
@@ -0,0 +1,32 @@
+#pragma once
+#include "stdafx.h"
+#include "BaseMapper.h"
+
+class IremLrog017 : public BaseMapper
+{
+protected:
+ virtual uint16_t GetPRGPageSize() { return 0x8000; }
+ virtual uint16_t GetCHRPageSize() { return 0x0800; }
+ virtual uint32_t GetChrRamSize() { return 0x1800; }
+ virtual uint16_t GetChrRamPageSize() { return 0x0800; }
+ virtual bool HasBusConflicts() { return true; }
+
+ void InitMapper()
+ {
+ InitializeChrRam();
+
+ SelectPRGPage(0, 0);
+ SelectCHRPage(0, 0);
+ SetMirroringType(MirroringType::FourScreens);
+
+ SelectCHRPage(1, 0, ChrMemoryType::ChrRam);
+ SelectCHRPage(2, 1, ChrMemoryType::ChrRam);
+ SelectCHRPage(3, 2, ChrMemoryType::ChrRam);
+ }
+
+ void WriteRegister(uint16_t addr, uint8_t value)
+ {
+ SelectPRGPage(0, value & 0x0F);
+ SelectCHRPage(0, (value >> 4) & 0x0F);
+ }
+};
\ No newline at end of file
diff --git a/Core/MapperFactory.cpp b/Core/MapperFactory.cpp
index d2d733e9..a0caad3c 100644
--- a/Core/MapperFactory.cpp
+++ b/Core/MapperFactory.cpp
@@ -12,6 +12,7 @@
#include "ColorDreams.h"
#include "GxRom.h"
#include "IremG101.h"
+#include "IremLrog017.h"
#include "IremTamS1.h"
#include "JalecoJf16.h"
#include "JalecoJf17_19.h"
@@ -97,6 +98,7 @@ BaseMapper* MapperFactory::GetMapperFromID(ROMLoader &romLoader)
case 74: return new MMC3_ChrRam(0x08, 0x09, 2);
case 75: return new VRC1();
case 76: return new Namco108_76();
+ case 77: return new IremLrog017();
case 78: return new JalecoJf16(romLoader.GetSubMapper() == 3);
case 79: return new Nina03_06(false);
case 80: return new TaitoX1005();