Mapper 112 support

This commit is contained in:
Souryo 2016-01-23 14:38:54 -05:00
parent b139870226
commit dd4f7d8131
4 changed files with 58 additions and 0 deletions

View file

@ -371,6 +371,7 @@
<ClInclude Include="JalecoJf16.h" />
<ClInclude Include="JalecoJf17_19.h" />
<ClInclude Include="Mapper107.h" />
<ClInclude Include="Mapper112.h" />
<ClInclude Include="Mapper200.h" />
<ClInclude Include="Mapper201.h" />
<ClInclude Include="Mapper202.h" />

View file

@ -443,6 +443,9 @@
<ClInclude Include="SunSoft4.h">
<Filter>Nes\Mappers</Filter>
</ClInclude>
<ClInclude Include="Mapper112.h">
<Filter>Nes\Mappers</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="stdafx.cpp">

52
Core/Mapper112.h Normal file
View file

@ -0,0 +1,52 @@
#pragma once
#include "stdafx.h"
#include "MMC3.h"
class Mapper112 : public MMC3
{
private:
uint8_t _currentReg;
protected:
void InitMapper()
{
MMC3::InitMapper();
SetMirroringType(MirroringType::Vertical);
}
void UpdateMirroring()
{
}
void StreamState(bool saving)
{
MMC3::StreamState(saving);
Stream<uint8_t>(_currentReg);
}
void WriteRegister(uint16_t addr, uint8_t value)
{
switch(addr & 0xE001) {
case 0x8000:
//Adjust register numbers to match MMC3
_currentReg = value & 0x07;
if(_currentReg >= 2) {
_currentReg -= 2;
} else {
_currentReg += 6;
}
break;
case 0xA000:
_registers[_currentReg] = value;
break;
case 0xE000:
SetMirroringType(value & 0x01 ? MirroringType::Horizontal : MirroringType::Vertical);
break;
}
UpdateState();
}
};

View file

@ -23,6 +23,7 @@
#include "Mapper61.h"
#include "Mapper62.h"
#include "Mapper107.h"
#include "Mapper112.h"
#include "Mapper200.h"
#include "Mapper201.h"
#include "Mapper202.h"
@ -139,6 +140,7 @@ BaseMapper* MapperFactory::GetMapperFromID(ROMLoader &romLoader)
case 97: return new IremTamS1();
case 101: return new JalecoJfxx(true);
case 107: return new Mapper107();
case 112: return new Mapper112();
case 113: return new Nina03_06(true);
case 115: return new MMC3_115();
case 119: return new MMC3_ChrRam(0x40, 0x7F, 8);