mirror of
https://github.com/cemu-project/Cemu.git
synced 2026-06-23 13:03:05 -05:00
CafeSystem: OR all of the base and overridden permission bits
This commit is contained in:
parent
baf1cfa2dc
commit
8e5ebb882e
|
|
@ -951,35 +951,29 @@ namespace CafeSystem
|
|||
if (sLaunchModeIsStandalone)
|
||||
return CosCapabilityBits::All;
|
||||
|
||||
uint64 resultMask = 0;
|
||||
for (const auto& pack : GraphicPack2::GetGraphicPacks())
|
||||
CosCapabilityBits resultMask = static_cast<CosCapabilityBits>(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<CosCapabilityBits>(permissionOverrides.second);
|
||||
}
|
||||
}
|
||||
|
||||
if (resultMask != 0)
|
||||
return static_cast<CosCapabilityBits>(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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -51,6 +51,18 @@ enum class CosCapabilityBits : uint64
|
|||
All = 0xFFFFFFFFFFFFFFFFull
|
||||
};
|
||||
|
||||
inline CosCapabilityBits operator|(CosCapabilityBits a, CosCapabilityBits b)
|
||||
{
|
||||
return static_cast<CosCapabilityBits>(
|
||||
static_cast<uint64>(a) | static_cast<uint64>(b));
|
||||
}
|
||||
|
||||
inline CosCapabilityBits& operator|=(CosCapabilityBits& a, CosCapabilityBits b)
|
||||
{
|
||||
a = a | b;
|
||||
return a;
|
||||
}
|
||||
|
||||
enum class CosCapabilityBitsFS : uint64
|
||||
{
|
||||
ODD_READ = (1llu << 0),
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user