diff options
| author | Ac_K <Acoustik666@gmail.com> | 2023-01-08 13:13:39 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-01-08 12:13:39 +0000 |
| commit | 550747eac6c0f6da14070c8b6d208bde6f1d1eb9 (patch) | |
| tree | 1be203777156dae17a4221589c852c638b273d94 /Ryujinx.Horizon/Sdk/Account | |
| parent | 3ffceab1fb220c13f5982de599d788f2e3e7cc47 (diff) | |
Horizon: Impl Prepo, Fixes bugs, Clean things (#4220)
* Horizon: Impl Prepo, Fixes bugs, Clean things
* remove ToArray()
* resultCode > status
* Remove old services
* Addresses gdkchan's comments and more cleanup
* Addresses Gdkchan's feedback 2
* Reorganize services, make sure service are loaded before guest
Co-Authored-By: gdkchan <5624669+gdkchan@users.noreply.github.com>
* Create interfaces for lm and sm
Co-authored-by: gdkchan <5624669+gdkchan@users.noreply.github.com>
Diffstat (limited to 'Ryujinx.Horizon/Sdk/Account')
| -rw-r--r-- | Ryujinx.Horizon/Sdk/Account/Uid.cs | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/Ryujinx.Horizon/Sdk/Account/Uid.cs b/Ryujinx.Horizon/Sdk/Account/Uid.cs new file mode 100644 index 00000000..a0a39978 --- /dev/null +++ b/Ryujinx.Horizon/Sdk/Account/Uid.cs @@ -0,0 +1,62 @@ +using System; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices; + +namespace Ryujinx.Horizon.Sdk.Account +{ + [StructLayout(LayoutKind.Sequential)] + public readonly record struct Uid + { + public readonly long High; + public readonly long Low; + + public bool IsNull => (Low | High) == 0; + + public static Uid Null => new(0, 0); + + public Uid(long low, long high) + { + Low = low; + High = high; + } + + public Uid(byte[] bytes) + { + High = BitConverter.ToInt64(bytes, 0); + Low = BitConverter.ToInt64(bytes, 8); + } + + public Uid(string hex) + { + if (hex == null || hex.Length != 32 || !hex.All("0123456789abcdefABCDEF".Contains)) + { + throw new ArgumentException("Invalid Hex value!", nameof(hex)); + } + + Low = Convert.ToInt64(hex[16..], 16); + High = Convert.ToInt64(hex[..16], 16); + } + + public void Write(BinaryWriter binaryWriter) + { + binaryWriter.Write(High); + binaryWriter.Write(Low); + } + + public override string ToString() + { + return High.ToString("x16") + Low.ToString("x16"); + } + + public LibHac.Account.Uid ToLibHacUid() + { + return new LibHac.Account.Uid((ulong)High, (ulong)Low); + } + + public UInt128 ToUInt128() + { + return new UInt128((ulong)High, (ulong)Low); + } + } +}
\ No newline at end of file |
