Mapper 108 support

This commit is contained in:
Souryo 2016-07-23 13:17:06 -04:00
parent 276b152fbc
commit 69390ac1db
4 changed files with 54 additions and 1 deletions

View file

@ -444,6 +444,7 @@
<ClInclude Include="Kaiser7022.h" /> <ClInclude Include="Kaiser7022.h" />
<ClInclude Include="Kaiser7058.h" /> <ClInclude Include="Kaiser7058.h" />
<ClInclude Include="Mapper107.h" /> <ClInclude Include="Mapper107.h" />
<ClInclude Include="Mapper108.h" />
<ClInclude Include="Mapper112.h" /> <ClInclude Include="Mapper112.h" />
<ClInclude Include="Mapper15.h" /> <ClInclude Include="Mapper15.h" />
<ClInclude Include="Mapper170.h" /> <ClInclude Include="Mapper170.h" />

View file

@ -805,6 +805,9 @@
<ClInclude Include="MMC3_197.h"> <ClInclude Include="MMC3_197.h">
<Filter>Nes\Mappers\MMC</Filter> <Filter>Nes\Mappers\MMC</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="Mapper108.h">
<Filter>Nes\Mappers\Unnamed</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="stdafx.cpp"> <ClCompile Include="stdafx.cpp">

47
Core/Mapper108.h Normal file
View file

@ -0,0 +1,47 @@
#pragma once
#include "stdafx.h"
#include "BaseMapper.h"
class Mapper108 : public BaseMapper
{
private:
uint8_t _reg;
protected:
virtual uint16_t RegisterStartAddress() { return 0x8000; }
virtual uint16_t RegisterEndAddress() { return 0x8FFF; }
virtual uint16_t GetPRGPageSize() { return 0x2000; }
virtual uint16_t GetCHRPageSize() { return 0x2000; }
void InitMapper()
{
//Used by Bubble Bobble hack only
AddRegisterRange(0xF000, 0xFFFF, MemoryOperation::Write);
_reg = 0;
SelectPrgPage4x(0, -4);
SelectCHRPage(0, 0);
}
void StreamState(bool saving)
{
BaseMapper::StreamState(saving);
Stream(_reg);
if(!saving) {
UpdateState();
}
}
void UpdateState()
{
SetCpuMemoryMapping(0x6000, 0x7FFF, _reg, PrgMemoryType::PrgRom);
}
void WriteRegister(uint16_t addr, uint8_t value)
{
_reg = value;
UpdateState();
}
};

View file

@ -50,6 +50,7 @@
#include "Mapper62.h" #include "Mapper62.h"
#include "Mapper91.h" #include "Mapper91.h"
#include "Mapper107.h" #include "Mapper107.h"
#include "Mapper108.h"
#include "Mapper112.h" #include "Mapper112.h"
#include "Mapper170.h" #include "Mapper170.h"
#include "Mapper200.h" #include "Mapper200.h"
@ -154,7 +155,7 @@ Supported mappers:
| 48| 49| 50| 51| 52| | | | 56| 57| 58|===| 60| 61| 62| 63| | 48| 49| 50| 51| 52| | | | 56| 57| 58|===| 60| 61| 62| 63|
| 64| 65| 66| 67| 68| 69| 70| 71| 72| 73| 74| 75| 76| 77| 78| 79| | 64| 65| 66| 67| 68| 69| 70| 71| 72| 73| 74| 75| 76| 77| 78| 79|
| 80|===| 82| |===| 85| 86| 87| 88| 89| 90| 91| 92| 93| 94| 95| | 80|===| 82| |===| 85| 86| 87| 88| 89| 90| 91| 92| 93| 94| 95|
| | 97| | 99|...|101| | | | | |107| | | | | | | 97| | 99|...|101| | | | | |107|108| | | |
|112|113| |115| | |118|119| | | | | | | | | |112|113| |115| | |118|119| | | | | | | | |
| | | | |132|133| | | |137|138|139|140|141|142|143| | | | | |132|133| | | |137|138|139|140|141|142|143|
|144|145|146|147|148|149|150|151|152|153|154|155|156|157| |159| |144|145|146|147|148|149|150|151|152|153|154|155|156|157| |159|
@ -271,6 +272,7 @@ BaseMapper* MapperFactory::GetMapperFromID(RomData &romData)
case 101: return new JalecoJfxx(true); case 101: return new JalecoJfxx(true);
case 105: break; //NES World Champ - has dip switches case 105: break; //NES World Champ - has dip switches
case 107: return new Mapper107(); case 107: return new Mapper107();
case 108: return new Mapper108();
case 112: return new Mapper112(); case 112: return new Mapper112();
case 113: return new Nina03_06(true); case 113: return new Nina03_06(true);
case 115: return new MMC3_115(); case 115: return new MMC3_115();