From fde27d6115476d8dbe4b812b2f18777eb877c0b8 Mon Sep 17 00:00:00 2001 From: Sour Date: Sat, 28 Dec 2019 09:18:40 -0500 Subject: [PATCH] Cart: Region code 0x12 is PAL Fixes Tintin in Tibet loading up as NTSC --- Core/BaseCartridge.cpp | 10 ++++++++++ Core/BaseCartridge.h | 2 ++ Core/Console.cpp | 11 +---------- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/Core/BaseCartridge.cpp b/Core/BaseCartridge.cpp index 83fd793..b594ede 100644 --- a/Core/BaseCartridge.cpp +++ b/Core/BaseCartridge.cpp @@ -8,6 +8,7 @@ #include "MessageManager.h" #include "Console.h" #include "EmuSettings.h" +#include "SettingTypes.h" #include "BatteryManager.h" #include "NecDsp.h" #include "Sa1.h" @@ -523,6 +524,15 @@ string BaseCartridge::GetCartName() } } +ConsoleRegion BaseCartridge::GetRegion() +{ + uint8_t destCode = _cartInfo.DestinationCode; + if((destCode >= 0x02 && destCode <= 0x0C) || destCode == 0x11 || destCode == 0x12) { + return ConsoleRegion::Pal; + } + return ConsoleRegion::Ntsc; +} + void BaseCartridge::DisplayCartInfo() { MessageManager::Log("-----------------------------"); diff --git a/Core/BaseCartridge.h b/Core/BaseCartridge.h index 0403315..9f96a68 100644 --- a/Core/BaseCartridge.h +++ b/Core/BaseCartridge.h @@ -14,6 +14,7 @@ class Gsu; class Cx4; class Console; class SpcFileData; +enum class ConsoleRegion; class BaseCartridge : public ISerializable { @@ -78,6 +79,7 @@ public: void Init(MemoryMappings &mm); RomInfo GetRomInfo(); + ConsoleRegion GetRegion(); string GetSha1Hash(); CartFlags::CartFlags GetCartFlags(); diff --git a/Core/Console.cpp b/Core/Console.cpp index 3f2e1cc..aaaceaa 100644 --- a/Core/Console.cpp +++ b/Core/Console.cpp @@ -465,16 +465,7 @@ ConsoleRegion Console::GetRegion() void Console::UpdateRegion() { switch(_settings->GetEmulationConfig().Region) { - case ConsoleRegion::Auto: - { - uint8_t destCode = _cart->GetRomInfo().Header.DestinationCode; - if((destCode >= 0x02 && destCode <= 0x0C) || destCode == 0x11) { - _region = ConsoleRegion::Pal; - } else { - _region = ConsoleRegion::Ntsc; - } - break; - } + case ConsoleRegion::Auto: _region = _cart->GetRegion(); break; default: case ConsoleRegion::Ntsc: _region = ConsoleRegion::Ntsc; break;