From 03f160a949f361e08c5e05b4e68da88658312ade Mon Sep 17 00:00:00 2001 From: Sour Date: Sat, 11 May 2019 09:26:56 -0400 Subject: [PATCH] UNROM512: Fixed mirroring logic to match changes on the wiki (fixes Black Box Challenge) --- Core/NESHeader.cpp | 11 +---------- Core/UnRom512.h | 11 +++++++---- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/Core/NESHeader.cpp b/Core/NESHeader.cpp index 818f3fb7..3a12dd77 100644 --- a/Core/NESHeader.cpp +++ b/Core/NESHeader.cpp @@ -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; } diff --git a/Core/UnRom512.h b/Core/UnRom512.h index 85fc061c..c46ab57c 100644 --- a/Core/UnRom512.h +++ b/Core/UnRom512.h @@ -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) {