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="AsciiTurboFile.h" />
|
||||
<ClInclude Include="RawVideoFilter.h" />
|
||||
<ClInclude Include="Sachen9602.h" />
|
||||
<ClInclude Include="ServerInformationMessage.h" />
|
||||
<ClInclude Include="SystemActionManager.h" />
|
||||
<ClInclude Include="DatachBarcodeReader.h" />
|
||||
|
|
|
@ -1384,6 +1384,9 @@
|
|||
<ClInclude Include="Bmc8157.h">
|
||||
<Filter>Nes\Mappers\Unif</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Sachen9602.h">
|
||||
<Filter>Nes\Mappers\Sachen</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="stdafx.cpp">
|
||||
|
|
|
@ -204,6 +204,7 @@
|
|||
#include "Sachen74LS374N.h"
|
||||
#include "Sachen74LS374NB.h"
|
||||
#include "Sachen8259.h"
|
||||
#include "Sachen9602.h"
|
||||
#include "SealieComputing.h"
|
||||
#include "Smb2j.h"
|
||||
#include "StudyBox.h"
|
||||
|
@ -553,6 +554,7 @@ BaseMapper* MapperFactory::GetMapperFromID(RomData &romData)
|
|||
case UnifBoards::MaliSB: return new MMC3_MaliSB();
|
||||
case UnifBoards::NovelDiamond: return new NovelDiamond();
|
||||
case UnifBoards::Rt01: return new Rt01();
|
||||
case UnifBoards::Sachen9602: return new Sachen9602();
|
||||
case UnifBoards::Smb2j: return new Smb2j();
|
||||
case UnifBoards::StreetHeroes: return new MMC3_StreetHeroes();
|
||||
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,
|
||||
Unl255in1,
|
||||
UnlD1038,
|
||||
Sachen9602,
|
||||
};
|
||||
}
|
|
@ -91,7 +91,7 @@ std::unordered_map<string, int> UnifLoader::_boardMappings = std::unordered_map<
|
|||
{ "SA-016-1M", 146 },
|
||||
{ "SA-72007", 145 },
|
||||
{ "SA-72008", 133 },
|
||||
{ "SA-9602B", UnifBoards::UnknownBoard },
|
||||
{ "SA-9602B", UnifBoards::Sachen9602 },
|
||||
{ "SA-NROM", 143 },
|
||||
{ "SAROM", 1 },
|
||||
{ "SBROM", 1 },
|
||||
|
|
Loading…
Add table
Reference in a new issue