Mapper 91 support

This commit is contained in:
Souryo 2016-01-23 16:20:28 -05:00
parent b5ca36f2d2
commit 12fc5e1c83
4 changed files with 50 additions and 0 deletions

View file

@ -382,6 +382,7 @@
<ClInclude Include="Mapper57.h" />
<ClInclude Include="Mapper61.h" />
<ClInclude Include="Mapper62.h" />
<ClInclude Include="Mapper91.h" />
<ClInclude Include="MMC3_12.h" />
<ClInclude Include="MMC3_205.h" />
<ClInclude Include="Mapper231.h" />

View file

@ -455,6 +455,9 @@
<ClInclude Include="JalecoJf11_14.h">
<Filter>Nes\Mappers</Filter>
</ClInclude>
<ClInclude Include="Mapper91.h">
<Filter>Nes\Mappers</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="stdafx.cpp">

44
Core/Mapper91.h Normal file
View file

@ -0,0 +1,44 @@
#pragma once
#include "stdafx.h"
#include "MMC3.h"
class Mapper91 : public MMC3
{
protected:
virtual uint16_t RegisterStartAddress() { return 0x6000; }
virtual uint16_t RegisterEndAddress() { return 0x7FFF; }
virtual uint16_t GetPRGPageSize() { return 0x2000; }
virtual uint16_t GetCHRPageSize() { return 0x800; }
void InitMapper()
{
SelectPRGPage(2, -2);
SelectPRGPage(3, -1);
}
void UpdateState()
{
//Do nothing, we are only using MMC3 code to emulate the IRQs
}
void WriteRegister(uint16_t addr, uint8_t value)
{
switch(addr & 0x7003) {
case 0x6000: SelectCHRPage(0, value); break;
case 0x6001: SelectCHRPage(1, value); break;
case 0x6002: SelectCHRPage(2, value); break;
case 0x6003: SelectCHRPage(3, value); break;
case 0x7000: SelectPRGPage(0, value & 0x0F); break;
case 0x7001: SelectPRGPage(1, value & 0x0F); break;
case 0x7002:
MMC3::WriteRegister(0xE000, value);
break;
case 0x7003:
MMC3::WriteRegister(0xC000, 0x07);
MMC3::WriteRegister(0xC001, value);
MMC3::WriteRegister(0xE001, value);
break;
}
}
};

View file

@ -23,6 +23,7 @@
#include "Mapper58.h"
#include "Mapper61.h"
#include "Mapper62.h"
#include "Mapper91.h"
#include "Mapper107.h"
#include "Mapper112.h"
#include "Mapper200.h"
@ -136,6 +137,7 @@ BaseMapper* MapperFactory::GetMapperFromID(ROMLoader &romLoader)
case 87: return new JalecoJfxx(false);
case 88: return new Namco108_88();
case 89: return new Sunsoft89();
case 91: return new Mapper91();
case 92: return new JalecoJf17_19(true);
case 93: return new Sunsoft93();
case 94: return new UnRom_94();