@@ -362,7 +362,7 @@ Region GetSysMenuRegion(u16 title_version)
}
}

std::string GetSysMenuVersionString(u16 title_version)
std::string GetSysMenuVersionString(u16 title_version, bool is_vwii)
{
std::string version;
char region_letter = '\0';
@@ -386,52 +386,74 @@ std::string GetSysMenuVersionString(u16 title_version)
break;
}

switch (title_version & 0xff0)
if (is_vwii)
{
case 32:
version = "1.0";
break;
case 96:
case 128:
version = "2.0";
break;
case 160:
version = "2.1";
break;
case 192:
version = "2.2";
break;
case 224:
version = "3.0";
break;
case 256:
version = "3.1";
break;
case 288:
version = "3.2";
break;
case 320:
case 352:
version = "3.3";
break;
case 384:
version = (region_letter != 'K' ? "3.4" : "3.5");
break;
case 416:
version = "4.0";
break;
case 448:
version = "4.1";
break;
case 480:
version = "4.2";
break;
case 512:
version = "4.3";
break;
default:
version = "?.?";
break;
// For vWii return the Wii U version which installed the menu
switch (title_version & 0xff0)
{
case 512:
version = "1.0.0";
break;
case 544:
version = "4.0.0";
break;
case 608:
version = "5.2.0";
break;
default:
version = "?.?.?";
break;
}
}
else
{
switch (title_version & 0xff0)
{
case 32:
version = "1.0";
break;
case 96:
case 128:
version = "2.0";
break;
case 160:
version = "2.1";
break;
case 192:
version = "2.2";
break;
case 224:
version = "3.0";
break;
case 256:
version = "3.1";
break;
case 288:
version = "3.2";
break;
case 320:
case 352:
version = "3.3";
break;
case 384:
version = (region_letter != 'K' ? "3.4" : "3.5");
break;
case 416:
version = "4.0";
break;
case 448:
version = "4.1";
break;
case 480:
version = "4.2";
break;
case 512:
version = "4.3";
break;
default:
version = "?.?";
break;
}
}

if (region_letter != '\0')
@@ -88,7 +88,7 @@ Country CountryCodeToCountry(u8 country_code, Platform platform, Region region =
std::optional<u16> revision = {});

Region GetSysMenuRegion(u16 title_version);
std::string GetSysMenuVersionString(u16 title_version);
std::string GetSysMenuVersionString(u16 title_version, bool is_vwii);

const std::string& GetCompanyFromID(const std::string& company_id);
} // namespace DiscIO
@@ -1010,10 +1010,14 @@ void MenuBar::UpdateToolsMenu(bool emulation_started)
const auto tmd = ios.GetES()->FindInstalledTMD(Titles::SYSTEM_MENU);

const QString sysmenu_version =
tmd.IsValid() ?
QString::fromStdString(DiscIO::GetSysMenuVersionString(tmd.GetTitleVersion())) :
QString{};
m_boot_sysmenu->setText(tr("Load Wii System Menu %1").arg(sysmenu_version));
tmd.IsValid() ? QString::fromStdString(
DiscIO::GetSysMenuVersionString(tmd.GetTitleVersion(), tmd.IsvWii())) :
QString{};

const QString sysmenu_text = (tmd.IsValid() && tmd.IsvWii()) ? tr("Load vWii System Menu %1") :
tr("Load Wii System Menu %1");

m_boot_sysmenu->setText(sysmenu_text.arg(sysmenu_version));

m_boot_sysmenu->setEnabled(tmd.IsValid());