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();