diff --git a/Core/Core.vcxproj b/Core/Core.vcxproj
index 1b32f9b6..b0fc177d 100644
--- a/Core/Core.vcxproj
+++ b/Core/Core.vcxproj
@@ -465,6 +465,7 @@
+
diff --git a/Core/Core.vcxproj.filters b/Core/Core.vcxproj.filters
index b77bfa77..420c3a2f 100644
--- a/Core/Core.vcxproj.filters
+++ b/Core/Core.vcxproj.filters
@@ -1069,6 +1069,9 @@
Nes\Mappers\Unif
+
+ Nes\Mappers\Unif
+
diff --git a/Core/Kaiser7013B.h b/Core/Kaiser7013B.h
new file mode 100644
index 00000000..75247f6f
--- /dev/null
+++ b/Core/Kaiser7013B.h
@@ -0,0 +1,29 @@
+#pragma once
+#include "stdafx.h"
+#include "BaseMapper.h"
+
+class Kaiser7013B : public BaseMapper
+{
+protected:
+ uint16_t GetPRGPageSize() override { return 0x4000; }
+ uint16_t GetCHRPageSize() override { return 0x2000; }
+ uint16_t RegisterStartAddress() override { return 0x6000; }
+ uint16_t RegisterEndAddress() override { return 0xFFFF; }
+
+ void InitMapper() override
+ {
+ SelectPRGPage(0, 0);
+ SelectPRGPage(1, -1);
+ SelectCHRPage(0, 0);
+ SetMirroringType(MirroringType::Vertical);
+ }
+
+ void WriteRegister(uint16_t addr, uint8_t value) override
+ {
+ if(addr < 0x8000) {
+ SelectPRGPage(0, value);
+ } else {
+ SetMirroringType(value & 0x01 ? MirroringType::Horizontal : MirroringType::Vertical);
+ }
+ }
+};
\ No newline at end of file
diff --git a/Core/MapperFactory.cpp b/Core/MapperFactory.cpp
index 73210267..dc3665b0 100644
--- a/Core/MapperFactory.cpp
+++ b/Core/MapperFactory.cpp
@@ -60,6 +60,7 @@
#include "JalecoSs88006.h"
#include "JyCompany.h"
#include "Kaiser202.h"
+#include "Kaiser7013B.h"
#include "Kaiser7016.h"
#include "Kaiser7022.h"
#include "Kaiser7037.h"
@@ -502,6 +503,7 @@ BaseMapper* MapperFactory::GetMapperFromID(RomData &romData)
case UnifBoards::Gs2013: return new Gs2013();
case UnifBoards::Hp898f: return new Hp898f();
case UnifBoards::Kof97: return new MMC3_Kof97();
+ case UnifBoards::Ks7013B: return new Kaiser7013B();
case UnifBoards::Ks7016: return new Kaiser7016();
case UnifBoards::Ks7037: return new Kaiser7037();
case UnifBoards::Ks7057: return new Kaiser7057();
diff --git a/Core/UnifBoards.h b/Core/UnifBoards.h
index 6d30de6c..cef3cbb5 100644
--- a/Core/UnifBoards.h
+++ b/Core/UnifBoards.h
@@ -42,5 +42,6 @@ namespace UnifBoards {
Lh10,
Ks7037,
Ks7057,
+ Ks7013B,
};
}
\ No newline at end of file
diff --git a/Core/UnifLoader.h b/Core/UnifLoader.h
index cd1ca2d1..55ec57cf 100644
--- a/Core/UnifLoader.h
+++ b/Core/UnifLoader.h
@@ -62,7 +62,7 @@ private:
{ "KONAMI-QTAI", UnifBoards::UnknownBoard },
{ "KS7010", UnifBoards::UnknownBoard },
{ "KS7012", UnifBoards::UnknownBoard },
- { "KS7013B", UnifBoards::UnknownBoard },
+ { "KS7013B", UnifBoards::Ks7013B },
{ "KS7016", UnifBoards::Ks7016 },
{ "KS7017", UnifBoards::UnknownBoard },
{ "KS7030", UnifBoards::UnknownBoard },