UNIF MALISB board support

This commit is contained in:
Souryo 2016-11-12 11:05:45 -05:00
parent 8e7663e96c
commit 49d627525a
6 changed files with 35 additions and 1 deletions

View file

@ -558,6 +558,7 @@
<ClInclude Include="MMC3_ChrRam.h" />
<ClInclude Include="MMC3_Coolboy.h" />
<ClInclude Include="MMC3_Kof97.h" />
<ClInclude Include="MMC3_MaliSB.h" />
<ClInclude Include="MMC5Audio.h" />
<ClInclude Include="ModChannel.h" />
<ClInclude Include="Namco163.h" />

View file

@ -1078,6 +1078,9 @@
<ClInclude Include="Lh32.h">
<Filter>Nes\Mappers\Unif</Filter>
</ClInclude>
<ClInclude Include="MMC3_MaliSB.h">
<Filter>Nes\Mappers\Unif</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="stdafx.cpp">

27
Core/MMC3_MaliSB.h Normal file
View file

@ -0,0 +1,27 @@
#pragma once
#include "stdafx.h"
#include "MMC3.h"
class MMC3_MaliSB : public MMC3
{
protected:
void SelectCHRPage(uint16_t slot, uint16_t page, ChrMemoryType memoryType = ChrMemoryType::Default) override
{
MMC3::SelectCHRPage(slot, (page & 0xDD) | ((page & 0x20) >> 4) | ((page & 0x02) << 4), memoryType);
}
void SelectPRGPage(uint16_t slot, uint16_t page, PrgMemoryType memoryType = PrgMemoryType::PrgRom) override
{
MMC3::SelectPRGPage(slot, (page & 0x03) | ((page & 0x08) >> 1) | ((page & 0x04) << 1), memoryType);
}
void WriteRegister(uint16_t addr, uint8_t value) override
{
if(addr >= 0xC000) {
addr = (addr & 0xFFFE) | ((addr >> 2) & 0x01) | ((addr >> 3) & 0x01);
} else {
addr = (addr & 0xFFFE) | ((addr >> 3) & 0x01);
}
MMC3::WriteRegister(addr, value);
}
};

View file

@ -158,6 +158,7 @@
#include "MMC3_ChrRam.h"
#include "MMC3_Coolboy.h"
#include "MMC3_Kof97.h"
#include "MMC3_MaliSB.h"
#include "MMC3_StreetHeroes.h"
#include "MMC3_Super24in1Sc03.h"
#include "MMC4.h"
@ -513,6 +514,7 @@ BaseMapper* MapperFactory::GetMapperFromID(RomData &romData)
case UnifBoards::Ks7057: return new Kaiser7057();
case UnifBoards::Lh10: return new Lh10();
case UnifBoards::Malee: return new Malee();
case UnifBoards::MaliSB: return new MMC3_MaliSB();
case UnifBoards::NovelDiamond: return new NovelDiamond();
case UnifBoards::Rt01: return new Rt01();
case UnifBoards::Smb2j: return new Smb2j();

View file

@ -44,5 +44,6 @@ namespace UnifBoards {
Ks7057,
Ks7013B,
Ks7012,
MaliSB,
};
}

View file

@ -74,7 +74,7 @@ private:
{ "LH10", UnifBoards::Lh10 },
{ "LH32", 125 },
{ "LH53", UnifBoards::UnknownBoard },
{ "MALISB", UnifBoards::UnknownBoard },
{ "MALISB", UnifBoards::MaliSB },
{ "MARIO1-MALEE2", UnifBoards::Malee },
{ "MHROM", 66 },
{ "N625092", 221 },