UNIF: Added support for BMC 8-in-1 board
This commit is contained in:
parent
261828c5a3
commit
8c40a4616b
6 changed files with 54 additions and 1 deletions
46
Core/Bmc8in1.h
Normal file
46
Core/Bmc8in1.h
Normal file
|
@ -0,0 +1,46 @@
|
|||
#pragma once
|
||||
#include "stdafx.h"
|
||||
#include "MMC3.h"
|
||||
|
||||
class Bmc8in1 : public MMC3
|
||||
{
|
||||
private:
|
||||
uint8_t _reg;
|
||||
|
||||
protected:
|
||||
void InitMapper() override
|
||||
{
|
||||
_reg = 0;
|
||||
MMC3::InitMapper();
|
||||
}
|
||||
|
||||
void StreamState(bool saving) override
|
||||
{
|
||||
MMC3::StreamState(saving);
|
||||
Stream(_reg);
|
||||
}
|
||||
|
||||
void SelectCHRPage(uint16_t slot, uint16_t page, ChrMemoryType memoryType = ChrMemoryType::Default) override
|
||||
{
|
||||
MMC3::SelectCHRPage(slot, ((_reg & 0x0C) << 5) | (page & 0x7F), memoryType);
|
||||
}
|
||||
|
||||
void SelectPRGPage(uint16_t slot, uint16_t page, PrgMemoryType memoryType = PrgMemoryType::PrgRom) override
|
||||
{
|
||||
if(_reg & 0x10) {
|
||||
MMC3::SelectPRGPage(slot, ((_reg & 0x0C) << 2) | (page & 0x0F));
|
||||
} else {
|
||||
SelectPrgPage4x(0, (_reg & 0x0F) << 2);
|
||||
}
|
||||
}
|
||||
|
||||
void WriteRegister(uint16_t addr, uint8_t value) override
|
||||
{
|
||||
if(addr & 0x1000) {
|
||||
_reg = value;
|
||||
UpdateState();
|
||||
} else {
|
||||
MMC3::WriteRegister(addr, value);
|
||||
}
|
||||
}
|
||||
};
|
|
@ -518,6 +518,7 @@
|
|||
<ClInclude Include="BaseSoundManager.h" />
|
||||
<ClInclude Include="BatteryManager.h" />
|
||||
<ClInclude Include="BattleBox.h" />
|
||||
<ClInclude Include="Bmc8in1.h" />
|
||||
<ClInclude Include="ControlDeviceState.h" />
|
||||
<ClInclude Include="DrawScreenBufferCommand.h" />
|
||||
<ClInclude Include="FdsSystemActionManager.h" />
|
||||
|
|
|
@ -1375,6 +1375,9 @@
|
|||
<ClInclude Include="ServerInformationMessage.h">
|
||||
<Filter>NetPlay\Messages</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Bmc8in1.h">
|
||||
<Filter>Nes\Mappers\Unif</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="stdafx.cpp">
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#include "Bmc235.h"
|
||||
#include "Bmc255.h"
|
||||
#include "Bmc810544CA1.h"
|
||||
#include "Bmc8in1.h"
|
||||
#include "BmcG146.h"
|
||||
#include "BmcNtd03.h"
|
||||
#include "BnRom.h"
|
||||
|
@ -521,6 +522,7 @@ BaseMapper* MapperFactory::GetMapperFromID(RomData &romData)
|
|||
case UnifBoards::Bmc70in1B: return new Bmc70in1();
|
||||
case UnifBoards::Bmc190in1: return new Bmc190in1();
|
||||
case UnifBoards::Bmc810544CA1: return new Bmc810544CA1();
|
||||
case UnifBoards::Bmc8in1: return new Bmc8in1();
|
||||
case UnifBoards::BmcF15: return new MMC3_BmcF15();
|
||||
case UnifBoards::BmcG146: return new BmcG146();
|
||||
case UnifBoards::BmdNtd03: return new BmcNtd03();
|
||||
|
|
|
@ -39,6 +39,7 @@ namespace UnifBoards {
|
|||
Bmc12in1,
|
||||
Bmc64in1NoRepeat,
|
||||
Bmc810544CA1,
|
||||
Bmc8in1,
|
||||
BmcF15,
|
||||
Lh10,
|
||||
Ks7037,
|
||||
|
|
|
@ -153,6 +153,6 @@ std::unordered_map<string, int> UnifLoader::_boardMappings = std::unordered_map<
|
|||
{ "F-15", UnifBoards::BmcF15 },
|
||||
{ "RT-01", UnifBoards::Rt01 },
|
||||
{ "81-01-31-C", UnifBoards::UnknownBoard },
|
||||
{ "8-IN-1", UnifBoards::UnknownBoard },
|
||||
{ "8-IN-1", UnifBoards::Bmc8in1 },
|
||||
{ "WS", UnifBoards::Super40in1Ws }
|
||||
};
|
Loading…
Add table
Reference in a new issue