diff --git a/Core/Bmc11160.h b/Core/Bmc11160.h new file mode 100644 index 00000000..d44987a5 --- /dev/null +++ b/Core/Bmc11160.h @@ -0,0 +1,28 @@ +#pragma once +#include "stdafx.h" +#include "BaseMapper.h" + +class Bmc11160 : public BaseMapper +{ +protected: + uint16_t GetPRGPageSize() override { return 0x8000; } + uint16_t GetCHRPageSize() override { return 0x2000; } + + void InitMapper() override + { + } + + void Reset(bool softReset) + { + BaseMapper::Reset(softReset); + WriteRegister(0x8000, 0); + } + + void WriteRegister(uint16_t addr, uint8_t value) override + { + uint8_t bank = (value >> 4) & 0x07; + SelectPRGPage(0, bank); + SelectCHRPage(0, (bank << 2) | (value & 0x03)); + SetMirroringType(value & 0x80 ? MirroringType::Vertical : MirroringType::Horizontal); + } +}; \ No newline at end of file diff --git a/Core/Core.vcxproj b/Core/Core.vcxproj index b1b4ab90..86c8cc8e 100644 --- a/Core/Core.vcxproj +++ b/Core/Core.vcxproj @@ -417,6 +417,7 @@ + diff --git a/Core/Core.vcxproj.filters b/Core/Core.vcxproj.filters index 56e9918d..aec41765 100644 --- a/Core/Core.vcxproj.filters +++ b/Core/Core.vcxproj.filters @@ -1045,6 +1045,9 @@ Nes\Mappers\Unif + + Nes\Mappers\Unif + diff --git a/Core/MapperFactory.cpp b/Core/MapperFactory.cpp index 1b987300..6157135a 100644 --- a/Core/MapperFactory.cpp +++ b/Core/MapperFactory.cpp @@ -16,6 +16,7 @@ #include "Bb.h" #include "BF909x.h" #include "BF9096.h" +#include "Bmc11160.h" #include "Bmc51.h" #include "Bmc63.h" #include "Bmc70in1.h" @@ -474,6 +475,7 @@ BaseMapper* MapperFactory::GetMapperFromID(RomData &romData) case UnifBoards::Ac08: return new Ac08(); case UnifBoards::Ax5705: return new Ax5705(); case UnifBoards::Bb: return new Bb(); + case UnifBoards::Bmc11160: return new Bmc11160(); case UnifBoards::Bmc70in1: return new Bmc70in1(); case UnifBoards::Bmc70in1B: return new Bmc70in1(); case UnifBoards::Bmc190in1: return new Bmc190in1(); diff --git a/Core/UnifBoards.h b/Core/UnifBoards.h index 0d983b92..f831db51 100644 --- a/Core/UnifBoards.h +++ b/Core/UnifBoards.h @@ -33,6 +33,7 @@ namespace UnifBoards { Bb, Ac08, BmcG146, - BmdNtd03 + BmdNtd03, + Bmc11160 }; } \ No newline at end of file diff --git a/Core/UnifLoader.h b/Core/UnifLoader.h index 32347ed4..2bf08547 100644 --- a/Core/UnifLoader.h +++ b/Core/UnifLoader.h @@ -9,7 +9,7 @@ class UnifLoader { private: std::unordered_map _boardMappings = { - { "11160", UnifBoards::UnknownBoard }, + { "11160", UnifBoards::Bmc11160 }, { "12-IN-1", UnifBoards::UnknownBoard }, { "13in1JY110", UnifBoards::UnknownBoard }, { "190in1", UnifBoards::Bmc190in1 },