mirror of
https://github.com/ryujinx-mirror/ryujinx.git
synced 2024-10-19 19:01:41 +00:00
c6d05301aa
* Update readme to mention .NET 7 * infra: Migrate to .NET 7 .NET 7 is still in preview but this prepare for the release coming up next month. * Use Random.Shared in CreateRandom * Move UInt128Utils.cs to Ryujinx.Common project * Fix inverted parameters in System.UInt128 constructor * Fix Visual Studio complains on Ryujinx.Graphics.Vic * time: Fix missing alignment enforcement in SystemClockContext Fixes at least Smash * time: Fix missing alignment enforcement in SteadyClockContext Fix games (like recent version of Smash) using time shared memory * Switch to .NET 7.0.100 release * Enable Tiered PGO * Ensure CreateId validity requirements are meet when doing random generation Also enforce correct packing layout for other Mii structures. This fix a Mario Kart 8 crashes related to the default Miis.
45 lines
1.1 KiB
C#
45 lines
1.1 KiB
C#
using System;
|
|
using System.Runtime.InteropServices;
|
|
|
|
namespace Ryujinx.HLE.HOS.Services.Mii.Types
|
|
{
|
|
[StructLayout(LayoutKind.Sequential, Pack = 1, Size = 0x10)]
|
|
struct CreateId : IEquatable<CreateId>
|
|
{
|
|
public UInt128 Raw;
|
|
|
|
public bool IsNull => Raw == UInt128.Zero;
|
|
public bool IsValid => !IsNull && ((Raw >> 64) & 0xC0) == 0x80;
|
|
|
|
public CreateId(UInt128 raw)
|
|
{
|
|
Raw = raw;
|
|
}
|
|
|
|
public static bool operator ==(CreateId x, CreateId y)
|
|
{
|
|
return x.Equals(y);
|
|
}
|
|
|
|
public static bool operator !=(CreateId x, CreateId y)
|
|
{
|
|
return !x.Equals(y);
|
|
}
|
|
|
|
public override bool Equals(object obj)
|
|
{
|
|
return obj is CreateId createId && Equals(createId);
|
|
}
|
|
|
|
public bool Equals(CreateId cmpObj)
|
|
{
|
|
// Nintendo additionally check that the CreatorId is valid before doing the actual comparison.
|
|
return IsValid && Raw == cmpObj.Raw;
|
|
}
|
|
|
|
public override int GetHashCode()
|
|
{
|
|
return Raw.GetHashCode();
|
|
}
|
|
}
|
|
}
|