Removed some duplicate mapper implementations

This commit is contained in:
Sour 2018-07-08 14:09:27 -04:00
parent d2da208167
commit 3b94ed0352
13 changed files with 43 additions and 239 deletions

View file

@ -32,13 +32,14 @@ protected:
void UpdateState()
{
SetCpuMemoryMapping(0x6000, 0x7FFF, _prgReg & 0x03, PrgMemoryType::PrgRom);
SetCpuMemoryMapping(0x6000, 0x7FFF, _prgReg, PrgMemoryType::PrgRom);
SelectCHRPage(0, _chrReg);
}
void WriteRegister(uint16_t addr, uint8_t value) override
{
if((addr & 0x9000) == 0x8000){
if((addr & 0x9000) == 0x8000 || addr >= 0xF000){
//A version of Bubble Bobble expects writes to $F000+ to switch the PRG banks
_prgReg = _chrReg = value;
} else {
//For ProWres

View file

@ -687,14 +687,12 @@
<ClInclude Include="Mapper103.h" />
<ClInclude Include="Mapper106.h" />
<ClInclude Include="Mapper107.h" />
<ClInclude Include="Mapper108.h" />
<ClInclude Include="Mapper112.h" />
<ClInclude Include="Mapper117.h" />
<ClInclude Include="Mapper120.h" />
<ClInclude Include="Mapper15.h" />
<ClInclude Include="Mapper170.h" />
<ClInclude Include="Mapper200.h" />
<ClInclude Include="Mapper201.h" />
<ClInclude Include="Mapper202.h" />
<ClInclude Include="Mapper203.h" />
<ClInclude Include="Mapper204.h" />
@ -908,11 +906,9 @@
<ClInclude Include="UnifBoards.h" />
<ClInclude Include="UnifLoader.h" />
<ClInclude Include="Unl255in1.h" />
<ClInclude Include="Unl43272.h" />
<ClInclude Include="UnlDripGame.h" />
<ClInclude Include="UnlDripGameAudio.h" />
<ClInclude Include="UnlPuzzle.h" />
<ClInclude Include="UnlVrc7.h" />
<ClInclude Include="UnRom512.h" />
<ClInclude Include="VideoHud.h" />
<ClInclude Include="VideoRenderer.h" />

View file

@ -406,9 +406,6 @@
<ClInclude Include="Mapper200.h">
<Filter>Nes\Mappers\Unnamed</Filter>
</ClInclude>
<ClInclude Include="Mapper201.h">
<Filter>Nes\Mappers\Unnamed</Filter>
</ClInclude>
<ClInclude Include="Mapper202.h">
<Filter>Nes\Mappers\Unnamed</Filter>
</ClInclude>
@ -808,9 +805,6 @@
<ClInclude Include="MMC3_197.h">
<Filter>Nes\Mappers\MMC</Filter>
</ClInclude>
<ClInclude Include="Mapper108.h">
<Filter>Nes\Mappers\Unnamed</Filter>
</ClInclude>
<ClInclude Include="MMC3_187.h">
<Filter>Nes\Mappers\MMC</Filter>
</ClInclude>
@ -1075,9 +1069,6 @@
<ClInclude Include="MMC3_MaliSB.h">
<Filter>Nes\Mappers\Unif</Filter>
</ClInclude>
<ClInclude Include="Unl43272.h">
<Filter>Nes\Mappers\Unif</Filter>
</ClInclude>
<ClInclude Include="MMC3_Bmc411120C.h">
<Filter>Nes\Mappers\Unif</Filter>
</ClInclude>
@ -1408,9 +1399,6 @@
<ClInclude Include="MMC3_208.h">
<Filter>Nes\Mappers\MMC</Filter>
</ClInclude>
<ClInclude Include="UnlVrc7.h">
<Filter>Nes\Mappers\Unif</Filter>
</ClInclude>
<ClInclude Include="Yoko.h">
<Filter>Nes\Mappers\Unif</Filter>
</ClInclude>

View file

@ -1,47 +0,0 @@
#pragma once
#include "stdafx.h"
#include "BaseMapper.h"
class Mapper108 : public BaseMapper
{
private:
uint8_t _reg;
protected:
virtual uint16_t RegisterStartAddress() override { return 0x8000; }
virtual uint16_t RegisterEndAddress() override { return 0x8FFF; }
virtual uint16_t GetPRGPageSize() override { return 0x2000; }
virtual uint16_t GetCHRPageSize() override { return 0x2000; }
void InitMapper() override
{
//Used by Bubble Bobble hack only
AddRegisterRange(0xF000, 0xFFFF, MemoryOperation::Write);
_reg = 0;
SelectPrgPage4x(0, -4);
SelectCHRPage(0, 0);
}
void StreamState(bool saving) override
{
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
{
_reg = value;
UpdateState();
}
};

View file

@ -1,22 +0,0 @@
#pragma once
#include "stdafx.h"
#include "BaseMapper.h"
class Mapper201 : public BaseMapper
{
protected:
virtual uint16_t GetPRGPageSize() override { return 0x8000; }
virtual uint16_t GetCHRPageSize() override { return 0x2000; }
void InitMapper() override
{
SelectPRGPage(0, 0);
SelectCHRPage(0, 0);
}
void WriteRegister(uint16_t addr, uint8_t value) override
{
SelectCHRPage(0, addr & 0xFF);
SelectPRGPage(0, addr & 0xFF);
}
};

View file

@ -8,6 +8,7 @@ class Mapper42 : public BaseMapper
private:
uint16_t _irqCounter;
bool _irqEnabled;
uint8_t _prgReg;
protected:
virtual uint16_t GetPRGPageSize() override { return 0x2000; }
@ -17,18 +18,30 @@ protected:
{
_irqCounter = 0;
_irqEnabled = false;
_prgReg = 0;
SelectPRGPage(0, 0x0C);
SelectPRGPage(1, 0x0D);
SelectPRGPage(2, 0x0E);
SelectPRGPage(3, 0x0F);
SelectPRGPage(0, -4);
SelectPRGPage(1, -3);
SelectPRGPage(2, -2);
SelectPRGPage(3, -1);
SelectCHRPage(0, 0);
UpdateState();
}
void StreamState(bool saving) override
{
BaseMapper::StreamState(saving);
Stream(_irqCounter, _irqEnabled);
Stream(_irqCounter, _irqEnabled, _prgReg);
if(!saving) {
UpdateState();
}
}
void UpdateState()
{
SetCpuMemoryMapping(0x6000, 0x7FFF, _prgReg & 0x0F, PrgMemoryType::PrgRom);
}
void ProcessCpuClock() override
@ -56,7 +69,8 @@ protected:
break;
case 0xE000:
SetCpuMemoryMapping(0x6000, 0x7FFF, value & 0x0F, PrgMemoryType::PrgRom);
_prgReg = value & 0x0F;
UpdateState();
break;
case 0xE001:

View file

@ -106,7 +106,6 @@
#include "Mapper103.h"
#include "Mapper106.h"
#include "Mapper107.h"
#include "Mapper108.h"
#include "Mapper112.h"
#include "Mapper116.h"
#include "Mapper117.h"
@ -115,7 +114,6 @@
#include "Mapper174.h"
#include "Mapper183.h"
#include "Mapper200.h"
#include "Mapper201.h"
#include "Mapper202.h"
#include "Mapper203.h"
#include "Mapper204.h"
@ -245,13 +243,11 @@
#include "TxSRom.h"
#include "Unl158B.h"
#include "Unl255in1.h"
#include "Unl43272.h"
#include "Unl8237A.h"
#include "UnlD1038.h"
#include "UnlDripGame.h"
#include "UnlPci556.h"
#include "UnlPuzzle.h"
#include "UnlVrc7.h"
#include "UNROM.h"
#include "UnRom_94.h"
#include "UnRom_180.h"
@ -279,7 +275,7 @@ Supported mappers:
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11| 12| 13| 14| 15|
| 16| 17| 18| 19|...| 21| 22| 23| 24| 25| 26| 27| 28| 29| 30| 31|
| 32| 33| 34| 35| 36| 37| 38| 39| 40| 41| 42| 43| 44| 45| 46| 47|
| 48| 49| 50| 51| 52| 53| 54|???| 56| 57| 58|===| 60| 61| 62| 63|
| 48| 49| 50| 51| 52| 53| 54|???| 56| 57| 58| 59| 60| 61| 62| 63|
| 64| 65| 66| 67| 68| 69| 70| 71| 72| 73| 74| 75| 76| 77| 78| 79|
| 80|===| 82| 83|===| 85| 86| 87| 88| 89| 90| 91| 92| 93| 94| 95|
| 96| 97|===| 99|...|101|===|103|104|105|106|107|108|===|===|111|
@ -364,7 +360,8 @@ BaseMapper* MapperFactory::GetMapperFromID(RomData &romData)
case 56: return new Kaiser202();
case 57: return new Mapper57();
case 58: return new Mapper58();
case 60: return new Mapper60(); //Partial support?
case 59: return new UnlD1038();
case 60: return new Mapper60();
case 61: return new Mapper61();
case 62: return new Mapper62();
case 63: return new Bmc63();
@ -407,7 +404,7 @@ BaseMapper* MapperFactory::GetMapperFromID(RomData &romData)
case 105: return new MMC1_105(); break;
case 106: return new Mapper106();
case 107: return new Mapper107();
case 108: return new Mapper108();
case 108: return new Bb();
case 111: return new Cheapocabra();
case 112: return new Mapper112();
case 113: return new Nina03_06(true);
@ -486,7 +483,7 @@ BaseMapper* MapperFactory::GetMapperFromID(RomData &romData)
case 198: return new MMC3_198();
case 199: return new MMC3_199();
case 200: return new Mapper200();
case 201: return new Mapper201();
case 201: return new NovelDiamond();
case 202: return new Mapper202();
case 203: return new Mapper203();
case 204: return new Mapper204();
@ -633,24 +630,19 @@ BaseMapper* MapperFactory::GetMapperFromID(RomData &romData)
case 529: return new T230();
case 530: return new Ax5705();
case UnifBoards::Ac08: return new Ac08();
case UnifBoards::Bb: return new Bb();
case UnifBoards::Ac08: return new Ac08(); //mapper 42?
case UnifBoards::BmcGn45: return new BmcGn45();
case UnifBoards::Cc21: return new Cc21();
case UnifBoards::Fk23C: return new MMC3_Fk23C(false);
case UnifBoards::Fk23Ca: return new MMC3_Fk23C(true);
case UnifBoards::Ghostbusters63in1: return new Ghostbusters63in1();
case UnifBoards::Fk23C: return new MMC3_Fk23C(false); //mapper 176?
case UnifBoards::Fk23Ca: return new MMC3_Fk23C(true); //mapper 176?
case UnifBoards::Ghostbusters63in1: return new Ghostbusters63in1(); //mapper 226?
case UnifBoards::Gs2013: return new Gs2013();
case UnifBoards::Malee: return new Malee();
case UnifBoards::NovelDiamond: return new NovelDiamond();
case UnifBoards::Malee: return new Malee(); //mapper 42?
case UnifBoards::SssNrom256: return new FamicomBox();
case UnifBoards::Super24in1Sc03: return new MMC3_Super24in1Sc03();
case UnifBoards::Super24in1Sc03: return new MMC3_Super24in1Sc03(); //mapper 176?
case UnifBoards::Unl255in1: return new Unl255in1();
case UnifBoards::Unl43272: return new Unl43272();
case UnifBoards::Unl8237A: return new Unl8237A();
case UnifBoards::UnlD1038: return new UnlD1038();
case UnifBoards::Unl8237A: return new Unl8237A(); //mapper 215.1
case UnifBoards::UnlPuzzle: return new UnlPuzzle();
case UnifBoards::UnlVrc7: return new UnlVrc7();
case MapperFactory::NsfMapperID: return new NsfMapper();
case MapperFactory::FdsMapperID: return new FDS();

View file

@ -7,18 +7,14 @@ namespace UnifBoards {
UnknownBoard = 32768,
Malee,
Gs2013,
NovelDiamond,
Ghostbusters63in1,
Super24in1Sc03,
Cc21,
Bb,
Ac08,
Unl43272,
UnlPuzzle,
Fk23C,
Fk23Ca,
Unl255in1,
UnlD1038,
UnlVrc7,
Unl8237A,
BmcGn45,

View file

@ -11,7 +11,7 @@ std::unordered_map<string, int> UnifLoader::_boardMappings = std::unordered_map<
{ "3D-BLOCK", UnifBoards::UnknownBoard },
{ "411120-C", 287 },
{ "42in1ResetSwitch", 226 },
{ "43272", UnifBoards::Unl43272 },
{ "43272", 227 },
{ "603-5052", 238 },
{ "64in1NoRepeat", 314 },
{ "70in1", 236 },
@ -25,7 +25,7 @@ std::unordered_map<string, int> UnifLoader::_boardMappings = std::unordered_map<
{ "AC08", UnifBoards::Ac08 },
{ "ANROM", 7 },
{ "AX5705", 530 },
{ "BB", UnifBoards::Bb },
{ "BB", 108 },
{ "BS-5", 286 },
{ "CC-21", UnifBoards::Cc21 },
{ "CITYFIGHT", 266 },
@ -33,7 +33,7 @@ std::unordered_map<string, int> UnifLoader::_boardMappings = std::unordered_map<
{ "10-24-C-A1", UnifBoards::UnknownBoard },
{ "CNROM", 3 },
{ "CPROM", 13 },
{ "D1038", UnifBoards::UnlD1038 },
{ "D1038", 59 },
{ "DANCE", UnifBoards::UnknownBoard },
{ "DANCE2000", 518 },
{ "DREAMTECH01", 521 },
@ -77,7 +77,7 @@ std::unordered_map<string, int> UnifLoader::_boardMappings = std::unordered_map<
{ "NROM-256", 0 },
{ "NTBROM", 68 },
{ "NTD-03", 290 },
{ "NovelDiamond9999999in1", UnifBoards::NovelDiamond },
{ "NovelDiamond9999999in1", 201 },
{ "OneBus", UnifBoards::UnknownBoard },
{ "PEC-586", UnifBoards::UnknownBoard },
{ "PUZZLE", UnifBoards::UnlPuzzle }, //Doesn't actually exist as a UNIF file (used to reassign a new mapper number to the Puzzle beta)
@ -143,7 +143,7 @@ std::unordered_map<string, int> UnifLoader::_boardMappings = std::unordered_map<
{ "UNROM-512-16", 30 },
{ "UNROM-512-32", 30 },
{ "UOROM", 2 },
{ "VRC7", UnifBoards::UnlVrc7 },
{ "VRC7", 85 },
{ "YOKO", 264 },
{ "SB-2000", UnifBoards::UnknownBoard },
{ "158B", 258 },

View file

@ -1,46 +0,0 @@
#pragma once
#include "stdafx.h"
#include "BaseMapper.h"
class Unl43272 : public BaseMapper
{
private:
uint16_t _lastAddr;
protected:
uint16_t GetPRGPageSize() override { return 0x8000; }
uint16_t GetCHRPageSize() override { return 0x2000; }
bool AllowRegisterRead() override { return true; }
void InitMapper() override
{
SelectCHRPage(0, 0);
SetMirroringType(MirroringType::Horizontal);
}
void Reset(bool softReset) override
{
BaseMapper::Reset(softReset);
WriteRegister(0x8081, 0);
}
void StreamState(bool saving) override
{
BaseMapper::StreamState(saving);
Stream(_lastAddr);
}
uint8_t ReadRegister(uint16_t addr) override
{
return InternalReadRam(_lastAddr & 0x400 ? (addr & 0xFE) : addr);
}
void WriteRegister(uint16_t addr, uint8_t value) override
{
_lastAddr = addr;
if((addr & 0x81) == 0x81) {
SelectPRGPage(0, (addr & 0x38) >> 3);
}
}
};

View file

@ -1,68 +0,0 @@
#pragma once
#include "stdafx.h"
#include "BaseMapper.h"
#include "VrcIrq.h"
class UnlVrc7 : public BaseMapper
{
private:
unique_ptr<VrcIrq> _irq;
uint8_t _chrRegisters[8];
protected:
virtual uint16_t GetPRGPageSize() override { return 0x2000; }
virtual uint16_t GetCHRPageSize() override { return 0x0400; }
void InitMapper() override
{
_irq.reset(new VrcIrq(_console));
_irq->Reset();
memset(_chrRegisters, 0, sizeof(_chrRegisters));
SelectPRGPage(3, -1);
}
virtual void StreamState(bool saving) override
{
BaseMapper::StreamState(saving);
SnapshotInfo irq { _irq.get() };
ArrayInfo<uint8_t> chrRegisters = { _chrRegisters, 8 };
Stream(chrRegisters, irq);
}
void ProcessCpuClock() override
{
_irq->ProcessCpuClock();
}
void WriteRegister(uint16_t addr, uint8_t value) override
{
switch(addr & 0xF038) {
case 0x8000: SelectPRGPage(0, value & 0x3F); break;
case 0x8008: SelectPRGPage(1, value & 0x3F); break;
case 0x9000: SelectPRGPage(2, value & 0x3F); break;
case 0xA000: SelectCHRPage(0, value); break;
case 0xA008: SelectCHRPage(1, value); break;
case 0xB000: SelectCHRPage(2, value); break;
case 0xB008: SelectCHRPage(3, value); break;
case 0xC000: SelectCHRPage(4, value); break;
case 0xC008: SelectCHRPage(5, value); break;
case 0xD000: SelectCHRPage(6, value); break;
case 0xD008: SelectCHRPage(7, value); break;
case 0xE000:
switch(value & 0x03) {
case 0: SetMirroringType(MirroringType::Vertical); break;
case 1: SetMirroringType(MirroringType::Horizontal); break;
case 2: SetMirroringType(MirroringType::ScreenAOnly); break;
case 3: SetMirroringType(MirroringType::ScreenBOnly); break;
}
break;
case 0xE008: _irq->SetReloadValue(value + 8); break;
case 0xF000: _irq->SetControlValue(value & 0x03); break;
case 0xF008: _irq->AcknowledgeIrq(); break;
}
}
};

View file

@ -4,7 +4,7 @@
#
# Automatically generated database based on Nestopia's DB and NesCartDB
#
# Generated on 2018-07-07 using:
# Generated on 2018-07-08 using:
# -NesCartDB (dated 2017-08-21)
# -Nestopia UE's latest DB (dated 2015-10-22)
#
@ -6633,7 +6633,7 @@
6D6DBE6B,NesNtsc,UNK,,,0,32,8,,0,0,0,v,,,,,
6D78F836,NesNtsc,UNK,,,4,128,128,,0,0,0,v,,,,,
6D8908AC,NesNtsc,UNK,,,2,128,,,0,0,0,v,,,,,
6D92DFF1,Famicom,,,,60,128,64,,0,0,0,,,,,,
6D92DFF1,Famicom,,,,59,128,64,,0,0,0,,,,,,
6D9E4F4D,NesNtsc,UNK,,,4,256,128,,0,0,0,h,,,,,
6DA0F643,NesNtsc,UNK,,,4,256,128,,0,0,0,h,,,,,
6DA83F06,NesNtsc,UNK,,,4,128,128,,0,0,0,h,,,,,

View file

@ -6620,7 +6620,7 @@ u8"6D6AB0DA,NesNtsc,UNK,,,4,128,128,,0,0,0,h,,,,,",
u8"6D6DBE6B,NesNtsc,UNK,,,0,32,8,,0,0,0,v,,,,,",
u8"6D78F836,NesNtsc,UNK,,,4,128,128,,0,0,0,v,,,,,",
u8"6D8908AC,NesNtsc,UNK,,,2,128,,,0,0,0,v,,,,,",
u8"6D92DFF1,Famicom,,,,60,128,64,,0,0,0,,,,,,",
u8"6D92DFF1,Famicom,,,,59,128,64,,0,0,0,,,,,,",
u8"6D9E4F4D,NesNtsc,UNK,,,4,256,128,,0,0,0,h,,,,,",
u8"6DA0F643,NesNtsc,UNK,,,4,256,128,,0,0,0,h,,,,,",
u8"6DA83F06,NesNtsc,UNK,,,4,128,128,,0,0,0,h,,,,,",