diff --git a/src/Cafe/CafeSystem.cpp b/src/Cafe/CafeSystem.cpp index af1a54bd..fba9134f 100644 --- a/src/Cafe/CafeSystem.cpp +++ b/src/Cafe/CafeSystem.cpp @@ -951,35 +951,29 @@ namespace CafeSystem if (sLaunchModeIsStandalone) return CosCapabilityBits::All; - uint64 resultMask = 0; - for (const auto& pack : GraphicPack2::GetGraphicPacks()) + CosCapabilityBits resultMask = static_cast(0); + for (const auto& pack : GraphicPack2::GetActiveGraphicPacks()) { - if (pack->IsEnabled()) - { - for (const auto& permissionOverrides : pack->GetPermissionOverrides()) - { - if (permissionOverrides.first == group) - resultMask |= permissionOverrides.second; - } + for (const auto& permissionOverrides : pack->GetPermissionOverrides()) + { + if (permissionOverrides.first == group) + resultMask |= static_cast(permissionOverrides.second); } } - if (resultMask != 0) - return static_cast(resultMask); - auto& update = sGameInfo_ForegroundTitle.GetUpdate(); if (update.IsValid()) { ParsedCosXml* cosXml = update.GetCosInfo(); if (cosXml) - return cosXml->GetCapabilityBits(group); + return cosXml->GetCapabilityBits(group) | resultMask; } auto& base = sGameInfo_ForegroundTitle.GetBase(); if(base.IsValid()) { ParsedCosXml* cosXml = base.GetCosInfo(); if (cosXml) - return cosXml->GetCapabilityBits(group); + return cosXml->GetCapabilityBits(group) | resultMask; } return CosCapabilityBits::All; } diff --git a/src/Cafe/TitleList/TitleInfo.h b/src/Cafe/TitleList/TitleInfo.h index fa5b9c89..79379472 100644 --- a/src/Cafe/TitleList/TitleInfo.h +++ b/src/Cafe/TitleList/TitleInfo.h @@ -51,6 +51,18 @@ enum class CosCapabilityBits : uint64 All = 0xFFFFFFFFFFFFFFFFull }; +inline CosCapabilityBits operator|(CosCapabilityBits a, CosCapabilityBits b) +{ + return static_cast( + static_cast(a) | static_cast(b)); +} + +inline CosCapabilityBits& operator|=(CosCapabilityBits& a, CosCapabilityBits b) +{ + a = a | b; + return a; +} + enum class CosCapabilityBitsFS : uint64 { ODD_READ = (1llu << 0),