UNROM512: Fixed mirroring logic to match changes on the wiki (fixes Black Box Challenge)

This commit is contained in:
Sour 2019-05-11 09:26:56 -04:00
parent 893ea249ce
commit 03f160a949
2 changed files with 8 additions and 14 deletions

View file

@ -180,16 +180,7 @@ uint8_t NESHeader::GetSubMapper()
MirroringType NESHeader::GetMirroringType()
{
if(Byte6 & 0x08) {
if(GetRomHeaderVersion() == RomHeaderVersion::Nes2_0) {
if(Byte6 & 0x01) {
//Based on proposal by rainwarrior/Myask: http://wiki.nesdev.com/w/index.php/Talk:NES_2.0
return MirroringType::ScreenAOnly;
} else {
return MirroringType::FourScreens;
}
} else {
return MirroringType::FourScreens;
}
return MirroringType::FourScreens;
} else {
return Byte6 & 0x01 ? MirroringType::Vertical : MirroringType::Horizontal;
}

View file

@ -19,10 +19,13 @@ protected:
void InitMapper() override
{
SelectPRGPage(1, -1);
if(IsNes20()) {
_enableMirroringBit = GetMirroringType() == MirroringType::ScreenAOnly;
} else {
_enableMirroringBit = GetMirroringType() == MirroringType::FourScreens;
_enableMirroringBit = false;
switch(_romInfo.NesHeader.Byte6 & 0x09) {
case 0: SetMirroringType(MirroringType::Vertical); break;
case 1: SetMirroringType(MirroringType::Horizontal); break;
case 8: SetMirroringType(MirroringType::ScreenAOnly); _enableMirroringBit = true; break;
case 9: SetMirroringType(MirroringType::FourScreens); break;
}
if(GetMirroringType() == MirroringType::FourScreens && _chrRam && _chrRamSize >= 0x8000) {