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="Mapper230.h" />
<ClInclude Include="Mapper241.h" /> <ClInclude Include="Mapper241.h" />
<ClInclude Include="Mapper60.h" /> <ClInclude Include="Mapper60.h" />
<ClInclude Include="MMC1_155.h" />
<ClInclude Include="MMC3_45.h" /> <ClInclude Include="MMC3_45.h" />
<ClInclude Include="Mapper57.h" /> <ClInclude Include="Mapper57.h" />
<ClInclude Include="Mapper61.h" /> <ClInclude Include="Mapper61.h" />

View File

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

View File

@ -1,3 +1,4 @@
#pragma once
#include "stdafx.h" #include "stdafx.h"
#include "CPU.h" #include "CPU.h"
#include "BaseMapper.h" #include "BaseMapper.h"
@ -44,13 +45,6 @@ class MMC1 : public BaseMapper
uint8_t _prgReg; uint8_t _prgReg;
int32_t _lastWriteCycle = -1; int32_t _lastWriteCycle = -1;
struct {
uint8_t Reg8000;
uint8_t RegA000;
uint8_t RegC000;
uint8_t RegE000;
} _state;
private: private:
bool HasResetFlag(uint8_t value) 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) { switch(_state.Reg8000 & 0x03) {
case 0: SetMirroringType(MirroringType::ScreenAOnly); break; case 0: SetMirroringType(MirroringType::ScreenAOnly); break;
@ -135,7 +138,6 @@ class MMC1 : public BaseMapper
} }
} }
protected:
void StreamState(bool saving) void StreamState(bool saving)
{ {
BaseMapper::StreamState(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 "Mapper242.h"
#include "Mapper246.h" #include "Mapper246.h"
#include "MMC1.h" #include "MMC1.h"
#include "MMC1_155.h"
#include "MMC2.h" #include "MMC2.h"
#include "MMC3.h" #include "MMC3.h"
#include "MMC3_12.h" #include "MMC3_12.h"
@ -202,6 +203,7 @@ BaseMapper* MapperFactory::GetMapperFromID(RomData &romData)
case 152: return new Bandai74161_7432(true); case 152: return new Bandai74161_7432(true);
case 153: return new BandaiFcg(); case 153: return new BandaiFcg();
case 154: return new Namco108_154(); case 154: return new Namco108_154();
case 155: return new MMC1_155();
case 156: return new DaouInfosys(); case 156: return new DaouInfosys();
case 157: return new BandaiFcg(); case 157: return new BandaiFcg();
case 159: return new BandaiFcg(); case 159: return new BandaiFcg();