UNIF: Added support for Sachen 9602B board

This commit is contained in:
Sour 2018-06-16 21:02:36 -04:00
parent ec9a8d4330
commit acf35a7ff1
6 changed files with 58 additions and 1 deletions

View file

@ -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" />

View file

@ -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">

View file

@ -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
View 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);
}
};

View file

@ -56,5 +56,6 @@ namespace UnifBoards {
Fk23Ca, Fk23Ca,
Unl255in1, Unl255in1,
UnlD1038, UnlD1038,
Sachen9602,
}; };
} }

View file

@ -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 },