Mapper 61 support

This commit is contained in:
Souryo 2016-01-23 11:44:40 -05:00
parent e444b54d1e
commit d6ee666240
4 changed files with 37 additions and 0 deletions

View file

@ -376,6 +376,7 @@
<ClInclude Include="Mapper202.h" />
<ClInclude Include="Mapper203.h" />
<ClInclude Include="Mapper57.h" />
<ClInclude Include="Mapper61.h" />
<ClInclude Include="MMC3_12.h" />
<ClInclude Include="MMC3_205.h" />
<ClInclude Include="Mapper231.h" />

View file

@ -428,6 +428,9 @@
<ClInclude Include="Mapper57.h">
<Filter>Nes\Mappers</Filter>
</ClInclude>
<ClInclude Include="Mapper61.h">
<Filter>Nes\Mappers</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="stdafx.cpp">

31
Core/Mapper61.h Normal file
View file

@ -0,0 +1,31 @@
#pragma once
#include "stdafx.h"
#include "BaseMapper.h"
class Mapper61 : public BaseMapper
{
protected:
virtual uint16_t GetPRGPageSize() { return 0x4000; }
virtual uint16_t GetCHRPageSize() { return 0x2000; }
void InitMapper()
{
SelectPRGPage(0, 0);
SelectPRGPage(1, 1);
SelectCHRPage(0, 0);
}
void WriteRegister(uint16_t addr, uint8_t value)
{
uint8_t prgPage = ((addr & 0x0F) << 1) | ((addr >> 5) & 0x01);
if(addr & 0x10) {
SelectPRGPage(0, prgPage);
SelectPRGPage(1, prgPage);
} else {
SelectPRGPage(0, prgPage & 0xFE);
SelectPRGPage(1, (prgPage & 0xFE) + 1);
}
SetMirroringType(addr & 0x80 ? MirroringType::Horizontal : MirroringType::Vertical);
}
};

View file

@ -20,6 +20,7 @@
#include "JalecoSs88006.h"
#include "Mapper57.h"
#include "Mapper58.h"
#include "Mapper61.h"
#include "Mapper107.h"
#include "Mapper200.h"
#include "Mapper201.h"
@ -108,6 +109,7 @@ BaseMapper* MapperFactory::GetMapperFromID(ROMLoader &romLoader)
case 52: return new MMC3_52();
case 57: return new Mapper57();
case 58: return new Mapper58();
case 61: return new Mapper61();
case 66: return new GxRom();
case 70: return new Bandai74161_7432(false);
case 71: return new BF909x();