diff --git a/Core/BmcK3046.h b/Core/BmcK3046.h new file mode 100644 index 00000000..fa732ab4 --- /dev/null +++ b/Core/BmcK3046.h @@ -0,0 +1,26 @@ +#pragma once +#include "stdafx.h" +#include "BaseMapper.h" + +class BmcK3046 : public BaseMapper +{ +protected: + virtual uint16_t GetPRGPageSize() override { return 0x4000; } + virtual uint16_t GetCHRPageSize() override { return 0x2000; } + + void InitMapper() override + { + SelectPRGPage(0, 0); + SelectPRGPage(1, 7); + SelectCHRPage(0, 0); + } + + void WriteRegister(uint16_t addr, uint8_t value) override + { + uint8_t inner = value & 0x07; + uint8_t outer = value & 0x38; + + SelectPRGPage(0, outer | inner); + SelectPRGPage(1, outer | 7); + } +}; diff --git a/Core/Core.vcxproj b/Core/Core.vcxproj index 20bc6bdc..5cdae6d2 100644 --- a/Core/Core.vcxproj +++ b/Core/Core.vcxproj @@ -526,6 +526,7 @@ + diff --git a/Core/Core.vcxproj.filters b/Core/Core.vcxproj.filters index 590a2a3f..bc186139 100644 --- a/Core/Core.vcxproj.filters +++ b/Core/Core.vcxproj.filters @@ -1465,6 +1465,9 @@ Nes\Mappers\Unif + + Nes\Mappers\Unif + diff --git a/Core/MapperFactory.cpp b/Core/MapperFactory.cpp index 879284b7..910f6d5a 100644 --- a/Core/MapperFactory.cpp +++ b/Core/MapperFactory.cpp @@ -37,6 +37,7 @@ #include "BmcG146.h" #include "BmcGn45.h" #include "BmcHpxx.h" +#include "BmcK3046.h" #include "BmcNtd03.h" #include "BnRom.h" #include "Bs5.h" @@ -604,7 +605,7 @@ BaseMapper* MapperFactory::GetMapperFromID(RomData &romData) case 333: return new Bmc8in1(); // + NEWSTAR-GRM070-8IN1 //334 case 335: break; //CTC-09 - case 336: break; //K-3046 + case 336: return new BmcK3046(); case 337: break; //CTC-12IN1 case 338: break; //SA005-A case 339: break; //K-3006 diff --git a/Core/UnifLoader.cpp b/Core/UnifLoader.cpp index 044b4e0a..062ab2cf 100644 --- a/Core/UnifLoader.cpp +++ b/Core/UnifLoader.cpp @@ -57,6 +57,7 @@ std::unordered_map UnifLoader::_boardMappings = std::unordered_map< { "HKROM", 4 }, { "KOF97", 263 }, { "KONAMI-QTAI", 190 }, + { "K-3046", 336 }, { "KS7010", UnifBoards::UnknownBoard }, { "KS7012", 346 }, { "KS7013B", 312 },