Mapper 155 support (MMC1A)

This commit is contained in:
Souryo 2016-06-18 15:49:00 -04:00
parent 135d02955f
commit 184be6b1f8
5 changed files with 31 additions and 9 deletions

View file

@ -425,6 +425,7 @@
<ClInclude Include="Mapper230.h" />
<ClInclude Include="Mapper241.h" />
<ClInclude Include="Mapper60.h" />
<ClInclude Include="MMC1_155.h" />
<ClInclude Include="MMC3_45.h" />
<ClInclude Include="Mapper57.h" />
<ClInclude Include="Mapper61.h" />

View file

@ -637,6 +637,9 @@
<ClInclude Include="DaouInfosys.h">
<Filter>Nes\Mappers</Filter>
</ClInclude>
<ClInclude Include="MMC1_155.h">
<Filter>Nes\Mappers\MMC</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="stdafx.cpp">

View file

@ -1,3 +1,4 @@
#pragma once
#include "stdafx.h"
#include "CPU.h"
#include "BaseMapper.h"
@ -44,13 +45,6 @@ class MMC1 : public BaseMapper
uint8_t _prgReg;
int32_t _lastWriteCycle = -1;
struct {
uint8_t Reg8000;
uint8_t RegA000;
uint8_t RegC000;
uint8_t RegE000;
} _state;
private:
bool HasResetFlag(uint8_t value)
@ -85,7 +79,16 @@ class MMC1 : public BaseMapper
}
}
void UpdateState()
protected:
struct
{
uint8_t Reg8000;
uint8_t RegA000;
uint8_t RegC000;
uint8_t RegE000;
} _state;
virtual void UpdateState()
{
switch(_state.Reg8000 & 0x03) {
case 0: SetMirroringType(MirroringType::ScreenAOnly); break;
@ -135,7 +138,6 @@ class MMC1 : public BaseMapper
}
}
protected:
void StreamState(bool saving)
{
BaseMapper::StreamState(saving);

14
Core/MMC1_155.h Normal file
View file

@ -0,0 +1,14 @@
#pragma once
#include "MMC1.h"
class MMC1_155 : public MMC1
{
protected :
void UpdateState()
{
//WRAM disable bit does not exist in mapper 155
_state.RegE000 &= 0x0F;
MMC1::UpdateState();
}
};

View file

@ -47,6 +47,7 @@
#include "Mapper242.h"
#include "Mapper246.h"
#include "MMC1.h"
#include "MMC1_155.h"
#include "MMC2.h"
#include "MMC3.h"
#include "MMC3_12.h"
@ -202,6 +203,7 @@ BaseMapper* MapperFactory::GetMapperFromID(RomData &romData)
case 152: return new Bandai74161_7432(true);
case 153: return new BandaiFcg();
case 154: return new Namco108_154();
case 155: return new MMC1_155();
case 156: return new DaouInfosys();
case 157: return new BandaiFcg();
case 159: return new BandaiFcg();