summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorMatthew Parlane <parlane@gmail.com>2017-03-20 14:03:04 +1300
committerGitHub <noreply@github.com>2017-03-20 14:03:04 +1300
commit8eb26d298e383a56e8a0f2be580ed2c5f69eacbf (patch)
treef818d622ab56b91cb999a0ed6e93f638bc0c7fdb /Source
parent9da35edd159f7033becae637e47649a22d65824a (diff)
parent9d54e4a9de3b7f31a8df2e9fc6d9c3be3806aab4 (diff)
Merge pull request #5099 from JosJuice/wii-menu-strings
Display nicer version strings for the Wii Menu
Diffstat (limited to 'Source')
-rw-r--r--Source/Core/Core/IOS/ES/Formats.cpp2
-rw-r--r--Source/Core/DiscIO/Enums.cpp88
-rw-r--r--Source/Core/DiscIO/Enums.h6
-rw-r--r--Source/Core/DiscIO/VolumeWad.cpp2
-rw-r--r--Source/Core/DiscIO/VolumeWiiCrypted.cpp18
-rw-r--r--Source/Core/DolphinWX/MainMenuBar.cpp7
6 files changed, 95 insertions, 28 deletions
diff --git a/Source/Core/Core/IOS/ES/Formats.cpp b/Source/Core/Core/IOS/ES/Formats.cpp
index 4d4c8069eb..ab24da1002 100644
--- a/Source/Core/Core/IOS/ES/Formats.cpp
+++ b/Source/Core/Core/IOS/ES/Formats.cpp
@@ -129,7 +129,7 @@ u64 TMDReader::GetIOSId() const
DiscIO::Region TMDReader::GetRegion() const
{
if (GetTitleId() == 0x0000000100000002)
- return DiscIO::RegionSwitchWii(DiscIO::GetSysMenuRegion(GetTitleVersion()));
+ return DiscIO::GetSysMenuRegion(GetTitleVersion());
return DiscIO::RegionSwitchWii(static_cast<u8>(GetTitleId() & 0xff));
}
diff --git a/Source/Core/DiscIO/Enums.cpp b/Source/Core/DiscIO/Enums.cpp
index 2ef5b0e344..f6311422fe 100644
--- a/Source/Core/DiscIO/Enums.cpp
+++ b/Source/Core/DiscIO/Enums.cpp
@@ -18,6 +18,23 @@ bool IsNTSC(Region region)
// Increment CACHE_REVISION (ISOFile.cpp & GameFile.cpp) if the code below is modified
+Country TypicalCountryForRegion(Region region)
+{
+ switch (region)
+ {
+ case Region::NTSC_J:
+ return Country::COUNTRY_JAPAN;
+ case Region::NTSC_U:
+ return Country::COUNTRY_USA;
+ case Region::PAL:
+ return Country::COUNTRY_EUROPE;
+ case Region::NTSC_K:
+ return Country::COUNTRY_KOREA;
+ default:
+ return Country::COUNTRY_UNKNOWN;
+ }
+}
+
Region RegionSwitchGC(u8 country_code)
{
Region region = RegionSwitchWii(country_code);
@@ -124,20 +141,79 @@ Country CountrySwitch(u8 country_code)
}
}
-u8 GetSysMenuRegion(u16 title_version)
+Region GetSysMenuRegion(u16 title_version)
{
+ if (title_version == 33)
+ return Region::UNKNOWN_REGION; // 1.0 uses 33 as the version number in all regions
+
switch (title_version & 0xf)
{
case 0:
- return 'J';
+ return Region::NTSC_J;
case 1:
- return 'E';
+ return Region::NTSC_U;
case 2:
- return 'P';
+ return Region::PAL;
case 6:
- return 'K';
+ return Region::NTSC_K;
+ default:
+ return Region::UNKNOWN_REGION;
+ }
+}
+
+std::string GetSysMenuVersionString(u16 title_version)
+{
+ if (title_version == 33)
+ return "1.0"; // 1.0 uses 33 as the version number in all regions
+
+ std::string region_letter;
+
+ switch (GetSysMenuRegion(title_version))
+ {
+ case Region::NTSC_J:
+ region_letter = "J";
+ break;
+ case Region::NTSC_U:
+ region_letter = "U";
+ break;
+ case Region::PAL:
+ region_letter = "E";
+ break;
+ case Region::NTSC_K:
+ region_letter = "K";
+ break;
+ }
+
+ switch (title_version & ~0xf)
+ {
+ case 96:
+ case 128:
+ return "2.0" + region_letter;
+ case 160:
+ return "2.1" + region_letter;
+ case 192:
+ return "2.2" + region_letter;
+ case 224:
+ return "3.0" + region_letter;
+ case 256:
+ return "3.1" + region_letter;
+ case 288:
+ return "3.2" + region_letter;
+ case 320:
+ case 352:
+ return "3.3" + region_letter;
+ case 384:
+ return (region_letter != "K" ? "3.4" : "3.5") + region_letter;
+ case 416:
+ return "4.0" + region_letter;
+ case 448:
+ return "4.1" + region_letter;
+ case 480:
+ return "4.2" + region_letter;
+ case 512:
+ return "4.3" + region_letter;
default:
- return 'A';
+ return "?.?" + region_letter;
}
}
diff --git a/Source/Core/DiscIO/Enums.h b/Source/Core/DiscIO/Enums.h
index 8e7ee5259b..b06576c685 100644
--- a/Source/Core/DiscIO/Enums.h
+++ b/Source/Core/DiscIO/Enums.h
@@ -4,6 +4,8 @@
#pragma once
+#include <string>
+
#include "Common/CommonTypes.h"
namespace DiscIO
@@ -67,9 +69,11 @@ enum class Language
};
bool IsNTSC(Region region);
+Country TypicalCountryForRegion(Region region);
Region RegionSwitchGC(u8 country_code);
Region RegionSwitchWii(u8 country_code);
Country CountrySwitch(u8 country_code);
-u8 GetSysMenuRegion(u16 title_version);
+Region GetSysMenuRegion(u16 title_version);
+std::string GetSysMenuVersionString(u16 title_version);
std::string GetCompanyFromID(const std::string& company_id);
}
diff --git a/Source/Core/DiscIO/VolumeWad.cpp b/Source/Core/DiscIO/VolumeWad.cpp
index 13bc0f26c4..4e8185f4f6 100644
--- a/Source/Core/DiscIO/VolumeWad.cpp
+++ b/Source/Core/DiscIO/VolumeWad.cpp
@@ -78,7 +78,7 @@ Country CVolumeWAD::GetCountry() const
u8 country_code = static_cast<u8>(m_tmd.GetTitleId() & 0xff);
if (country_code == 2) // SYSMENU
- country_code = GetSysMenuRegion(m_tmd.GetTitleVersion());
+ return TypicalCountryForRegion(GetSysMenuRegion(m_tmd.GetTitleVersion()));
return CountrySwitch(country_code);
}
diff --git a/Source/Core/DiscIO/VolumeWiiCrypted.cpp b/Source/Core/DiscIO/VolumeWiiCrypted.cpp
index 4cf13ffa8f..31d13ba68b 100644
--- a/Source/Core/DiscIO/VolumeWiiCrypted.cpp
+++ b/Source/Core/DiscIO/VolumeWiiCrypted.cpp
@@ -174,22 +174,10 @@ Country CVolumeWiiCrypted::GetCountry() const
const Region region = GetRegion();
- if (RegionSwitchWii(country_byte) == region)
- return CountrySwitch(country_byte);
+ if (RegionSwitchWii(country_byte) != region)
+ return TypicalCountryForRegion(region);
- switch (region)
- {
- case Region::NTSC_J:
- return Country::COUNTRY_JAPAN;
- case Region::NTSC_U:
- return Country::COUNTRY_USA;
- case Region::PAL:
- return Country::COUNTRY_EUROPE;
- case Region::NTSC_K:
- return Country::COUNTRY_KOREA;
- default:
- return Country::COUNTRY_UNKNOWN;
- }
+ return CountrySwitch(country_byte);
}
std::string CVolumeWiiCrypted::GetMakerID() const
diff --git a/Source/Core/DolphinWX/MainMenuBar.cpp b/Source/Core/DolphinWX/MainMenuBar.cpp
index fe5a14c5cf..55cf2d378e 100644
--- a/Source/Core/DolphinWX/MainMenuBar.cpp
+++ b/Source/Core/DolphinWX/MainMenuBar.cpp
@@ -545,11 +545,10 @@ void MainMenuBar::RefreshWiiSystemMenuLabel() const
if (sys_menu_loader.IsValid())
{
- const u16 sys_menu_version = sys_menu_loader.GetTMD().GetTitleVersion();
- const char sys_menu_region = DiscIO::GetSysMenuRegion(sys_menu_version);
+ const u16 version_number = sys_menu_loader.GetTMD().GetTitleVersion();
+ const wxString version_string = StrToWxStr(DiscIO::GetSysMenuVersionString(version_number));
item->Enable();
- item->SetItemLabel(
- wxString::Format(_("Load Wii System Menu %u%c"), sys_menu_version, sys_menu_region));
+ item->SetItemLabel(wxString::Format(_("Load Wii System Menu %s"), version_string));
}
else
{