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="BaseSoundManager.h" />
|
||||||
<ClInclude Include="BatteryManager.h" />
|
<ClInclude Include="BatteryManager.h" />
|
||||||
<ClInclude Include="BattleBox.h" />
|
<ClInclude Include="BattleBox.h" />
|
||||||
|
<ClInclude Include="Bmc8in1.h" />
|
||||||
<ClInclude Include="ControlDeviceState.h" />
|
<ClInclude Include="ControlDeviceState.h" />
|
||||||
<ClInclude Include="DrawScreenBufferCommand.h" />
|
<ClInclude Include="DrawScreenBufferCommand.h" />
|
||||||
<ClInclude Include="FdsSystemActionManager.h" />
|
<ClInclude Include="FdsSystemActionManager.h" />
|
||||||
|
|
|
@ -1375,6 +1375,9 @@
|
||||||
<ClInclude Include="ServerInformationMessage.h">
|
<ClInclude Include="ServerInformationMessage.h">
|
||||||
<Filter>NetPlay\Messages</Filter>
|
<Filter>NetPlay\Messages</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="Bmc8in1.h">
|
||||||
|
<Filter>Nes\Mappers\Unif</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="stdafx.cpp">
|
<ClCompile Include="stdafx.cpp">
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
#include "Bmc235.h"
|
#include "Bmc235.h"
|
||||||
#include "Bmc255.h"
|
#include "Bmc255.h"
|
||||||
#include "Bmc810544CA1.h"
|
#include "Bmc810544CA1.h"
|
||||||
|
#include "Bmc8in1.h"
|
||||||
#include "BmcG146.h"
|
#include "BmcG146.h"
|
||||||
#include "BmcNtd03.h"
|
#include "BmcNtd03.h"
|
||||||
#include "BnRom.h"
|
#include "BnRom.h"
|
||||||
|
@ -521,6 +522,7 @@ BaseMapper* MapperFactory::GetMapperFromID(RomData &romData)
|
||||||
case UnifBoards::Bmc70in1B: return new Bmc70in1();
|
case UnifBoards::Bmc70in1B: return new Bmc70in1();
|
||||||
case UnifBoards::Bmc190in1: return new Bmc190in1();
|
case UnifBoards::Bmc190in1: return new Bmc190in1();
|
||||||
case UnifBoards::Bmc810544CA1: return new Bmc810544CA1();
|
case UnifBoards::Bmc810544CA1: return new Bmc810544CA1();
|
||||||
|
case UnifBoards::Bmc8in1: return new Bmc8in1();
|
||||||
case UnifBoards::BmcF15: return new MMC3_BmcF15();
|
case UnifBoards::BmcF15: return new MMC3_BmcF15();
|
||||||
case UnifBoards::BmcG146: return new BmcG146();
|
case UnifBoards::BmcG146: return new BmcG146();
|
||||||
case UnifBoards::BmdNtd03: return new BmcNtd03();
|
case UnifBoards::BmdNtd03: return new BmcNtd03();
|
||||||
|
|
|
@ -39,6 +39,7 @@ namespace UnifBoards {
|
||||||
Bmc12in1,
|
Bmc12in1,
|
||||||
Bmc64in1NoRepeat,
|
Bmc64in1NoRepeat,
|
||||||
Bmc810544CA1,
|
Bmc810544CA1,
|
||||||
|
Bmc8in1,
|
||||||
BmcF15,
|
BmcF15,
|
||||||
Lh10,
|
Lh10,
|
||||||
Ks7037,
|
Ks7037,
|
||||||
|
|
|
@ -153,6 +153,6 @@ std::unordered_map<string, int> UnifLoader::_boardMappings = std::unordered_map<
|
||||||
{ "F-15", UnifBoards::BmcF15 },
|
{ "F-15", UnifBoards::BmcF15 },
|
||||||
{ "RT-01", UnifBoards::Rt01 },
|
{ "RT-01", UnifBoards::Rt01 },
|
||||||
{ "81-01-31-C", UnifBoards::UnknownBoard },
|
{ "81-01-31-C", UnifBoards::UnknownBoard },
|
||||||
{ "8-IN-1", UnifBoards::UnknownBoard },
|
{ "8-IN-1", UnifBoards::Bmc8in1 },
|
||||||
{ "WS", UnifBoards::Super40in1Ws }
|
{ "WS", UnifBoards::Super40in1Ws }
|
||||||
};
|
};
|
Loading…
Add table
Reference in a new issue