Mapper 207 (TaitoX1005 with different mirroring) support

This commit is contained in:
Souryo 2016-01-23 21:33:28 -05:00
parent 0003edb90c
commit deeace8b2f
2 changed files with 20 additions and 2 deletions

View file

@ -138,7 +138,7 @@ BaseMapper* MapperFactory::GetMapperFromID(ROMLoader &romLoader)
case 77: return new IremLrog017();
case 78: return new JalecoJf16(romLoader.GetSubMapper() == 3);
case 79: return new Nina03_06(false);
case 80: return new TaitoX1005();
case 80: return new TaitoX1005(false);
case 87: return new JalecoJfxx(false);
case 88: return new Namco108_88();
case 89: return new Sunsoft89();
@ -179,6 +179,7 @@ BaseMapper* MapperFactory::GetMapperFromID(ROMLoader &romLoader)
case 203: return new Mapper203();
case 205: return new MMC3_205();
case 206: return new Namco108();
case 207: return new TaitoX1005(true);
case 225: return new Mapper225();
case 230: return new Mapper230();
case 231: return new Mapper231();

View file

@ -5,6 +5,7 @@
class TaitoX1005 : public BaseMapper
{
private:
bool _alternateMirroring;
uint8_t _ramPermission;
void UpdateRamAccess()
@ -44,10 +45,18 @@ protected:
case 0x7EF0:
SelectCHRPage(0, value);
SelectCHRPage(1, value + 1);
if(_alternateMirroring) {
SetPpuMemoryMapping(0x2000, 0x23FF, GetNametable(value >> 7));
SetPpuMemoryMapping(0x2400, 0x27FF, GetNametable(value >> 7));
}
break;
case 0x7EF1:
SelectCHRPage(2, value );
SelectCHRPage(3, value + 1);
if(_alternateMirroring) {
SetPpuMemoryMapping(0x2800, 0x2BFF, GetNametable(value >> 7));
SetPpuMemoryMapping(0x2C00, 0x2FFF, GetNametable(value >> 7));
}
break;
case 0x7EF2: SelectCHRPage(4, value); break;
@ -56,7 +65,9 @@ protected:
case 0x7EF5: SelectCHRPage(7, value); break;
case 0x7EF6: case 0x7EF7:
SetMirroringType((value & 0x01) == 0x01 ? MirroringType::Vertical : MirroringType::Horizontal);
if(!_alternateMirroring) {
SetMirroringType((value & 0x01) == 0x01 ? MirroringType::Vertical : MirroringType::Horizontal);
}
break;
case 0x7EF8: case 0x7EF9:
@ -87,4 +98,10 @@ protected:
UpdateRamAccess();
}
}
public:
TaitoX1005(bool alternateMirroring) : _alternateMirroring(alternateMirroring)
{
}
};