UNIF AC08 board support

This commit is contained in:
Souryo 2016-11-10 17:14:59 -05:00
parent eb67d54e69
commit 1428aaeef4
6 changed files with 62 additions and 1 deletions

54
Core/Ac08.h Normal file
View file

@ -0,0 +1,54 @@
#pragma once
#include "stdafx.h"
#include "BaseMapper.h"
class Ac08 : public BaseMapper
{
private:
uint8_t _reg;
protected:
uint16_t GetPRGPageSize() override { return 0x2000; }
uint16_t GetCHRPageSize() override { return 0x2000; }
void InitMapper() override
{
AddRegisterRange(0x4025, 0x4025, MemoryOperation::Write);
_reg = 0;
SelectPrgPage4x(0, -4);
SelectCHRPage(0, 0);
UpdateState();
}
void StreamState(bool saving)
{
BaseMapper::StreamState(saving);
Stream(_reg);
if(!saving) {
UpdateState();
}
}
void UpdateState()
{
SetCpuMemoryMapping(0x6000, 0x7FFF, _reg, PrgMemoryType::PrgRom);
}
void WriteRegister(uint16_t addr, uint8_t value) override
{
if(addr == 0x4025) {
SetMirroringType(value & 0x08 ? MirroringType::Horizontal : MirroringType::Vertical);
} else {
if(addr == 0x8001) {
//Green beret
_reg = (value >> 1) & 0x0F;
} else {
//Castlevania?
_reg = value & 0x0F;
}
UpdateState();
}
}
};

View file

@ -399,6 +399,7 @@
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="A12Watcher.h" />
<ClInclude Include="Ac08.h" />
<ClInclude Include="Action53.h" />
<ClInclude Include="ActionEnterprises.h" />
<ClInclude Include="APU.h" />

View file

@ -1036,6 +1036,9 @@
<ClInclude Include="Bb.h">
<Filter>Nes\Mappers\Unif</Filter>
</ClInclude>
<ClInclude Include="Ac08.h">
<Filter>Nes\Mappers\Unif</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="stdafx.cpp">

View file

@ -5,6 +5,7 @@
#include "UnifBoards.h"
#include "A65AS.h"
#include "Ac08.h"
#include "Action53.h"
#include "ActionEnterprises.h"
#include "Ax5705.h"
@ -468,6 +469,7 @@ BaseMapper* MapperFactory::GetMapperFromID(RomData &romData)
case 255: return new Bmc255();
case UnifBoards::A65AS: return new A65AS();
case UnifBoards::Ac08: return new Ac08();
case UnifBoards::Ax5705: return new Ax5705();
case UnifBoards::Bb: return new Bb();
case UnifBoards::Bmc70in1: return new Bmc70in1();

View file

@ -31,5 +31,6 @@ namespace UnifBoards {
Rt01,
Hp898f,
Bb,
Ac08,
};
}

View file

@ -28,7 +28,7 @@ private:
{ "8237A", UnifBoards::UnknownBoard },
{ "830118C", UnifBoards::UnknownBoard },
{ "A65AS", UnifBoards::A65AS },
{ "AC08", UnifBoards::UnknownBoard },
{ "AC08", UnifBoards::Ac08 },
{ "ANROM", 7 },
{ "AX5705", UnifBoards::Ax5705 },
{ "BB", UnifBoards::Bb },