diff --git a/Core/Core.vcxproj b/Core/Core.vcxproj index 3b3b467c..83566727 100644 --- a/Core/Core.vcxproj +++ b/Core/Core.vcxproj @@ -412,6 +412,7 @@ + diff --git a/Core/Core.vcxproj.filters b/Core/Core.vcxproj.filters index 4db4af4a..85aa14a8 100644 --- a/Core/Core.vcxproj.filters +++ b/Core/Core.vcxproj.filters @@ -1174,6 +1174,9 @@ Nes\Mappers + + Nes\Mappers\Unnamed + diff --git a/Core/Mapper174.h b/Core/Mapper174.h new file mode 100644 index 00000000..878b316a --- /dev/null +++ b/Core/Mapper174.h @@ -0,0 +1,30 @@ +#pragma once +#include "stdafx.h" +#include "BaseMapper.h" + +//NTDec 5-in-1 cart - untested, based on Wiki description +class Mapper174 : public BaseMapper +{ +protected: + virtual uint16_t GetPRGPageSize() override { return 0x4000; } + virtual uint16_t GetCHRPageSize() override { return 0x2000; } + + void InitMapper() override + { + WriteRegister(0x8000, 0); + } + + void WriteRegister(uint16_t addr, uint8_t value) override + { + uint8_t prgBank = (addr >> 4) & 0x07; + if(addr & 0x80) { + SelectPrgPage2x(0, prgBank & 0xFE); + } else { + SelectPRGPage(0, prgBank); + SelectPRGPage(1, prgBank); + } + SelectCHRPage(0, (addr >> 1) & 0x07); + + SetMirroringType(addr & 0x01 ? MirroringType::Horizontal : MirroringType::Vertical); + } +}; diff --git a/Core/MapperFactory.cpp b/Core/MapperFactory.cpp index b438739f..4d9c5bbd 100644 --- a/Core/MapperFactory.cpp +++ b/Core/MapperFactory.cpp @@ -95,6 +95,7 @@ #include "Mapper117.h" #include "Mapper120.h" #include "Mapper170.h" +#include "Mapper174.h" #include "Mapper183.h" #include "Mapper200.h" #include "Mapper201.h" @@ -259,7 +260,7 @@ Supported mappers: |112|113|114|115| |117|118|119|120|121|===|123|===|125|126|===| |===|===|===|===|132|133|134|===|136|137|138|139|140|141|142|143| |144|145|146|147|148|149|150|151|152|153|154|155|156|157|158|159| -|---|===|162|163|164|165|166|167|168|===|170|171|172|173|===|175| +|---|===|162|163|164|165|166|167|168|===|170|171|172|173|174|175| |176|177|178|179|180|---|182|183|184|185|186|187|188|189|190|191| |192|193|194|195|196|197| |199|200|201|202|203|204|205|206|207| |???|209|210|211|212|213|214|215|216|217|218|219|220|221|222|???| @@ -431,6 +432,7 @@ BaseMapper* MapperFactory::GetMapperFromID(RomData &romData) case 171: return new Kaiser7058(); case 172: return new Txc22211B(); case 173: return new Txc22211C(); + case 174: return new Mapper174(); case 175: return new Kaiser7022(); case 176: return new Waixing176(); case 177: return new Henggedianzi177();