UNIF: Added support for Sachen 9602B board
This commit is contained in:
parent
ec9a8d4330
commit
acf35a7ff1
6 changed files with 58 additions and 1 deletions
|
@ -534,6 +534,7 @@
|
||||||
<ClInclude Include="MovieRecorder.h" />
|
<ClInclude Include="MovieRecorder.h" />
|
||||||
<ClInclude Include="AsciiTurboFile.h" />
|
<ClInclude Include="AsciiTurboFile.h" />
|
||||||
<ClInclude Include="RawVideoFilter.h" />
|
<ClInclude Include="RawVideoFilter.h" />
|
||||||
|
<ClInclude Include="Sachen9602.h" />
|
||||||
<ClInclude Include="ServerInformationMessage.h" />
|
<ClInclude Include="ServerInformationMessage.h" />
|
||||||
<ClInclude Include="SystemActionManager.h" />
|
<ClInclude Include="SystemActionManager.h" />
|
||||||
<ClInclude Include="DatachBarcodeReader.h" />
|
<ClInclude Include="DatachBarcodeReader.h" />
|
||||||
|
|
|
@ -1384,6 +1384,9 @@
|
||||||
<ClInclude Include="Bmc8157.h">
|
<ClInclude Include="Bmc8157.h">
|
||||||
<Filter>Nes\Mappers\Unif</Filter>
|
<Filter>Nes\Mappers\Unif</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="Sachen9602.h">
|
||||||
|
<Filter>Nes\Mappers\Sachen</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="stdafx.cpp">
|
<ClCompile Include="stdafx.cpp">
|
||||||
|
|
|
@ -204,6 +204,7 @@
|
||||||
#include "Sachen74LS374N.h"
|
#include "Sachen74LS374N.h"
|
||||||
#include "Sachen74LS374NB.h"
|
#include "Sachen74LS374NB.h"
|
||||||
#include "Sachen8259.h"
|
#include "Sachen8259.h"
|
||||||
|
#include "Sachen9602.h"
|
||||||
#include "SealieComputing.h"
|
#include "SealieComputing.h"
|
||||||
#include "Smb2j.h"
|
#include "Smb2j.h"
|
||||||
#include "StudyBox.h"
|
#include "StudyBox.h"
|
||||||
|
@ -553,6 +554,7 @@ BaseMapper* MapperFactory::GetMapperFromID(RomData &romData)
|
||||||
case UnifBoards::MaliSB: return new MMC3_MaliSB();
|
case UnifBoards::MaliSB: return new MMC3_MaliSB();
|
||||||
case UnifBoards::NovelDiamond: return new NovelDiamond();
|
case UnifBoards::NovelDiamond: return new NovelDiamond();
|
||||||
case UnifBoards::Rt01: return new Rt01();
|
case UnifBoards::Rt01: return new Rt01();
|
||||||
|
case UnifBoards::Sachen9602: return new Sachen9602();
|
||||||
case UnifBoards::Smb2j: return new Smb2j();
|
case UnifBoards::Smb2j: return new Smb2j();
|
||||||
case UnifBoards::StreetHeroes: return new MMC3_StreetHeroes();
|
case UnifBoards::StreetHeroes: return new MMC3_StreetHeroes();
|
||||||
case UnifBoards::Super24in1Sc03: return new MMC3_Super24in1Sc03();
|
case UnifBoards::Super24in1Sc03: return new MMC3_Super24in1Sc03();
|
||||||
|
|
50
Core/Sachen9602.h
Normal file
50
Core/Sachen9602.h
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
#pragma once
|
||||||
|
#include "stdafx.h"
|
||||||
|
#include "MMC3.h"
|
||||||
|
|
||||||
|
class Sachen9602 : public MMC3
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
uint8_t _regs[2];
|
||||||
|
|
||||||
|
protected:
|
||||||
|
bool ForceChrBattery() override { return true; }
|
||||||
|
uint32_t GetChrRamSize() override { return 0x8000; }
|
||||||
|
|
||||||
|
void InitMapper() override
|
||||||
|
{
|
||||||
|
_regs[0] = _regs[1] = 0;
|
||||||
|
MMC3::InitMapper();
|
||||||
|
}
|
||||||
|
|
||||||
|
void StreamState(bool saving) override
|
||||||
|
{
|
||||||
|
MMC3::StreamState(saving);
|
||||||
|
Stream(_regs[0], _regs[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SelectPRGPage(uint16_t slot, uint16_t page, PrgMemoryType memoryType = PrgMemoryType::PrgRom) override
|
||||||
|
{
|
||||||
|
MMC3::SelectPRGPage(slot, (page & 0x3F) | (_regs[1] << 6));
|
||||||
|
MMC3::SelectPRGPage(_prgMode ? 0 : 2, 0x3E);
|
||||||
|
MMC3::SelectPRGPage(3, 0x3F);
|
||||||
|
}
|
||||||
|
|
||||||
|
void WriteRegister(uint16_t addr, uint8_t value) override
|
||||||
|
{
|
||||||
|
switch(addr & 0xE001) {
|
||||||
|
case 0x8000:
|
||||||
|
_regs[0] = value;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 0x8001:
|
||||||
|
if((_regs[0] & 0x07) < 6) {
|
||||||
|
_regs[1] = value >> 6;
|
||||||
|
value &= 0x1F;
|
||||||
|
UpdatePrgMapping();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
MMC3::WriteRegister(addr, value);
|
||||||
|
}
|
||||||
|
};
|
|
@ -56,5 +56,6 @@ namespace UnifBoards {
|
||||||
Fk23Ca,
|
Fk23Ca,
|
||||||
Unl255in1,
|
Unl255in1,
|
||||||
UnlD1038,
|
UnlD1038,
|
||||||
|
Sachen9602,
|
||||||
};
|
};
|
||||||
}
|
}
|
|
@ -91,7 +91,7 @@ std::unordered_map<string, int> UnifLoader::_boardMappings = std::unordered_map<
|
||||||
{ "SA-016-1M", 146 },
|
{ "SA-016-1M", 146 },
|
||||||
{ "SA-72007", 145 },
|
{ "SA-72007", 145 },
|
||||||
{ "SA-72008", 133 },
|
{ "SA-72008", 133 },
|
||||||
{ "SA-9602B", UnifBoards::UnknownBoard },
|
{ "SA-9602B", UnifBoards::Sachen9602 },
|
||||||
{ "SA-NROM", 143 },
|
{ "SA-NROM", 143 },
|
||||||
{ "SAROM", 1 },
|
{ "SAROM", 1 },
|
||||||
{ "SBROM", 1 },
|
{ "SBROM", 1 },
|
||||||
|
|
Loading…
Add table
Reference in a new issue