mirror of
https://github.com/Ryubing/Ryujinx.git
synced 2025-11-29 02:12:52 -05:00
[Ryujinx.HLE] Address dotnet-format issues (#5380)
* dotnet format style --severity info Some changes were manually reverted. * dotnet format analyzers --serverity info Some changes have been minimally adapted. * Restore a few unused methods and variables * Silence dotnet format IDE0060 warnings * Silence dotnet format IDE0052 warnings * Address or silence dotnet format IDE1006 warnings * Address dotnet format CA1816 warnings * Address or silence dotnet format CA2208 warnings * Address or silence dotnet format CA1806 and a few CA1854 warnings * Address dotnet format CA2211 warnings * Address dotnet format CA1822 warnings * Address or silence dotnet format CA1069 warnings * Make dotnet format succeed in style mode * Address or silence dotnet format CA2211 warnings * Address review comments * Address dotnet format CA2208 warnings properly * Make ProcessResult readonly * Address most dotnet format whitespace warnings * Apply dotnet format whitespace formatting A few of them have been manually reverted and the corresponding warning was silenced * Add previously silenced warnings back I have no clue how these disappeared * Revert formatting changes for while and for-loops * Format if-blocks correctly * Run dotnet format style after rebase * Run dotnet format whitespace after rebase * Run dotnet format style after rebase * Run dotnet format analyzers after rebase * Run dotnet format after rebase and remove unused usings - analyzers - style - whitespace * Disable 'prefer switch expression' rule * Add comments to disabled warnings * Fix a few disabled warnings * Fix naming rule violation, Convert shader properties to auto-property and convert values to const * Simplify properties and array initialization, Use const when possible, Remove trailing commas * Start working on disabled warnings * Fix and silence a few dotnet-format warnings again * Run dotnet format after rebase * Use using declaration instead of block syntax * Address IDE0251 warnings * Address a few disabled IDE0060 warnings * Silence IDE0060 in .editorconfig * Revert "Simplify properties and array initialization, Use const when possible, Remove trailing commas" This reverts commit 9462e4136c0a2100dc28b20cf9542e06790aa67e. * dotnet format whitespace after rebase * First dotnet format pass * Fix naming rule violations * Fix typo * Add trailing commas, use targeted new and use array initializer * Fix build issues * Fix remaining build issues * Remove SuppressMessage for CA1069 where possible * Address dotnet format issues * Address formatting issues Co-authored-by: Ac_K <acoustik666@gmail.com> * Add GetHashCode implementation for RenderingSurfaceInfo * Explicitly silence CA1822 for every affected method in Syscall * Address formatting issues in Demangler.cs * Address review feedback Co-authored-by: Ac_K <acoustik666@gmail.com> * Revert marking service methods as static * Next dotnet format pass * Address review feedback --------- Co-authored-by: Ac_K <acoustik666@gmail.com>
This commit is contained in:
@@ -7,4 +7,4 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
|
||||
internal partial class AmiiboJsonSerializerContext : JsonSerializerContext
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,4 +16,4 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
|
||||
return ResultCode.Success;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,4 +16,4 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
|
||||
return ResultCode.Success;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,4 +16,4 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
|
||||
return ResultCode.Success;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,8 +18,10 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
|
||||
{
|
||||
class INfp : IpcService
|
||||
{
|
||||
private ulong _appletResourceUserId;
|
||||
private ulong _mcuVersionData;
|
||||
#pragma warning disable IDE0052 // Remove unread private member
|
||||
private ulong _appletResourceUserId;
|
||||
private ulong _mcuVersionData;
|
||||
#pragma warning restore IDE0052
|
||||
private byte[] _mcuData;
|
||||
|
||||
private State _state = State.NonInitialized;
|
||||
@@ -28,7 +30,7 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
|
||||
|
||||
private CancellationTokenSource _cancelTokenSource;
|
||||
|
||||
private NfpPermissionLevel _permissionLevel;
|
||||
private readonly NfpPermissionLevel _permissionLevel;
|
||||
|
||||
public INfp(NfpPermissionLevel permissionLevel)
|
||||
{
|
||||
@@ -40,10 +42,10 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
|
||||
public ResultCode Initialize(ServiceCtx context)
|
||||
{
|
||||
_appletResourceUserId = context.RequestData.ReadUInt64();
|
||||
_mcuVersionData = context.RequestData.ReadUInt64();
|
||||
_mcuVersionData = context.RequestData.ReadUInt64();
|
||||
|
||||
ulong inputPosition = context.Request.SendBuff[0].Position;
|
||||
ulong inputSize = context.Request.SendBuff[0].Size;
|
||||
ulong inputSize = context.Request.SendBuff[0].Size;
|
||||
|
||||
_mcuData = new byte[inputSize];
|
||||
|
||||
@@ -53,11 +55,11 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
|
||||
|
||||
// TODO: Handle this in a controller class directly.
|
||||
// Every functions which use the Handle call nn::hid::system::GetXcdHandleForNpadWithNfc().
|
||||
NfpDevice devicePlayer1 = new NfpDevice
|
||||
NfpDevice devicePlayer1 = new()
|
||||
{
|
||||
NpadIdType = NpadIdType.Player1,
|
||||
Handle = HidUtils.GetIndexFromNpadIdType(NpadIdType.Player1),
|
||||
State = NfpDeviceState.Initialized
|
||||
Handle = HidUtils.GetIndexFromNpadIdType(NpadIdType.Player1),
|
||||
State = NfpDeviceState.Initialized,
|
||||
};
|
||||
|
||||
context.Device.System.NfpDevices.Add(devicePlayer1);
|
||||
@@ -75,10 +77,7 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
|
||||
{
|
||||
if (_state == State.Initialized)
|
||||
{
|
||||
if (_cancelTokenSource != null)
|
||||
{
|
||||
_cancelTokenSource.Cancel();
|
||||
}
|
||||
_cancelTokenSource?.Cancel();
|
||||
|
||||
// NOTE: All events are destroyed here.
|
||||
context.Device.System.NfpDevices.Clear();
|
||||
@@ -99,7 +98,7 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
|
||||
}
|
||||
|
||||
ulong outputPosition = context.Request.RecvListBuff[0].Position;
|
||||
ulong outputSize = context.Request.RecvListBuff[0].Size;
|
||||
ulong outputSize = context.Request.RecvListBuff[0].Size;
|
||||
|
||||
if (context.Device.System.NfpDevices.Count == 0)
|
||||
{
|
||||
@@ -187,10 +186,7 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
|
||||
return resultCode;
|
||||
}
|
||||
|
||||
if (_cancelTokenSource != null)
|
||||
{
|
||||
_cancelTokenSource.Cancel();
|
||||
}
|
||||
_cancelTokenSource?.Cancel();
|
||||
|
||||
uint deviceHandle = (uint)context.RequestData.ReadUInt64();
|
||||
|
||||
@@ -218,9 +214,9 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
|
||||
return resultCode;
|
||||
}
|
||||
|
||||
uint deviceHandle = (uint)context.RequestData.ReadUInt64();
|
||||
DeviceType deviceType = (DeviceType)context.RequestData.ReadUInt32();
|
||||
MountTarget mountTarget = (MountTarget)context.RequestData.ReadUInt32();
|
||||
uint deviceHandle = (uint)context.RequestData.ReadUInt64();
|
||||
DeviceType deviceType = (DeviceType)context.RequestData.ReadUInt32();
|
||||
MountTarget mountTarget = (MountTarget)context.RequestData.ReadUInt32();
|
||||
|
||||
if (deviceType != 0)
|
||||
{
|
||||
@@ -382,7 +378,7 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
|
||||
}
|
||||
|
||||
ulong outputPosition = context.Request.ReceiveBuff[0].Position;
|
||||
ulong outputSize = context.Request.ReceiveBuff[0].Size;
|
||||
ulong outputSize = context.Request.ReceiveBuff[0].Size;
|
||||
|
||||
MemoryHelper.FillWithZeros(context.Memory, outputPosition, (int)outputSize);
|
||||
|
||||
@@ -450,7 +446,7 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
|
||||
}
|
||||
|
||||
ulong inputPosition = context.Request.SendBuff[0].Position;
|
||||
ulong inputSize = context.Request.SendBuff[0].Size;
|
||||
ulong inputSize = context.Request.SendBuff[0].Size;
|
||||
|
||||
byte[] applicationArea = new byte[inputSize];
|
||||
|
||||
@@ -489,7 +485,9 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
|
||||
// Flush(bytes<8, 4>)
|
||||
public ResultCode Flush(ServiceCtx context)
|
||||
{
|
||||
#pragma warning disable IDE0059 // Remove unnecessary value assignment
|
||||
uint deviceHandle = (uint)context.RequestData.ReadUInt64();
|
||||
#pragma warning restore IDE0059
|
||||
|
||||
if (context.Device.System.NfpDevices.Count == 0)
|
||||
{
|
||||
@@ -529,7 +527,7 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
|
||||
uint applicationAreaId = context.RequestData.ReadUInt32();
|
||||
|
||||
ulong inputPosition = context.Request.SendBuff[0].Position;
|
||||
ulong inputSize = context.Request.SendBuff[0].Size;
|
||||
ulong inputSize = context.Request.SendBuff[0].Size;
|
||||
|
||||
byte[] applicationArea = new byte[inputSize];
|
||||
|
||||
@@ -612,23 +610,23 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
|
||||
{
|
||||
if (context.Device.System.NfpDevices[i].State == NfpDeviceState.TagMounted || context.Device.System.NfpDevices[i].State == NfpDeviceState.TagFound)
|
||||
{
|
||||
byte[] Uuid = VirtualAmiibo.GenerateUuid(context.Device.System.NfpDevices[i].AmiiboId, context.Device.System.NfpDevices[i].UseRandomUuid);
|
||||
byte[] uuid = VirtualAmiibo.GenerateUuid(context.Device.System.NfpDevices[i].AmiiboId, context.Device.System.NfpDevices[i].UseRandomUuid);
|
||||
|
||||
if (Uuid.Length > AmiiboConstants.UuidMaxLength)
|
||||
if (uuid.Length > AmiiboConstants.UuidMaxLength)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException();
|
||||
throw new InvalidOperationException($"{nameof(uuid)} is too long: {uuid.Length}");
|
||||
}
|
||||
|
||||
TagInfo tagInfo = new TagInfo
|
||||
TagInfo tagInfo = new()
|
||||
{
|
||||
UuidLength = (byte)Uuid.Length,
|
||||
Reserved1 = new Array21<byte>(),
|
||||
Protocol = uint.MaxValue, // All Protocol
|
||||
TagType = uint.MaxValue, // All Type
|
||||
Reserved2 = new Array6<byte>()
|
||||
UuidLength = (byte)uuid.Length,
|
||||
Reserved1 = new Array21<byte>(),
|
||||
Protocol = uint.MaxValue, // All Protocol
|
||||
TagType = uint.MaxValue, // All Type
|
||||
Reserved2 = new Array6<byte>(),
|
||||
};
|
||||
|
||||
Uuid.CopyTo(tagInfo.Uuid.AsSpan());
|
||||
uuid.CopyTo(tagInfo.Uuid.AsSpan());
|
||||
|
||||
context.Memory.Write(outputPosition, tagInfo);
|
||||
|
||||
@@ -811,17 +809,16 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
|
||||
{
|
||||
if (context.Device.System.NfpDevices[i].State == NfpDeviceState.TagMounted)
|
||||
{
|
||||
ModelInfo modelInfo = new ModelInfo
|
||||
ModelInfo modelInfo = new()
|
||||
{
|
||||
Reserved = new Array57<byte>()
|
||||
Reserved = new Array57<byte>(),
|
||||
CharacterId = BinaryPrimitives.ReverseEndianness(ushort.Parse(context.Device.System.NfpDevices[i].AmiiboId.AsSpan(0, 4), NumberStyles.HexNumber)),
|
||||
CharacterVariant = byte.Parse(context.Device.System.NfpDevices[i].AmiiboId.AsSpan(4, 2), NumberStyles.HexNumber),
|
||||
Series = byte.Parse(context.Device.System.NfpDevices[i].AmiiboId.AsSpan(12, 2), NumberStyles.HexNumber),
|
||||
ModelNumber = ushort.Parse(context.Device.System.NfpDevices[i].AmiiboId.AsSpan(8, 4), NumberStyles.HexNumber),
|
||||
Type = byte.Parse(context.Device.System.NfpDevices[i].AmiiboId.AsSpan(6, 2), NumberStyles.HexNumber),
|
||||
};
|
||||
|
||||
modelInfo.CharacterId = BinaryPrimitives.ReverseEndianness(ushort.Parse(context.Device.System.NfpDevices[i].AmiiboId.AsSpan(0, 4), NumberStyles.HexNumber));
|
||||
modelInfo.CharacterVariant = byte.Parse(context.Device.System.NfpDevices[i].AmiiboId.AsSpan(4, 2), NumberStyles.HexNumber);
|
||||
modelInfo.Series = byte.Parse(context.Device.System.NfpDevices[i].AmiiboId.AsSpan(12, 2), NumberStyles.HexNumber);
|
||||
modelInfo.ModelNumber = ushort.Parse(context.Device.System.NfpDevices[i].AmiiboId.AsSpan(8, 4), NumberStyles.HexNumber);
|
||||
modelInfo.Type = byte.Parse(context.Device.System.NfpDevices[i].AmiiboId.AsSpan(6, 2), NumberStyles.HexNumber);
|
||||
|
||||
context.Memory.Write(outputPosition, modelInfo);
|
||||
|
||||
resultCode = ResultCode.Success;
|
||||
@@ -912,7 +909,7 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
|
||||
{
|
||||
if (context.Device.System.NfpDevices[i].State > NfpDeviceState.Finalized)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException();
|
||||
throw new InvalidOperationException($"{nameof(context.Device.System.NfpDevices)} contains an invalid state for device {i}: {context.Device.System.NfpDevices[i].State}");
|
||||
}
|
||||
|
||||
context.ResponseData.Write((uint)context.Device.System.NfpDevices[i].State);
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
{
|
||||
static class AmiiboConstants
|
||||
{
|
||||
public const int UuidMaxLength = 10;
|
||||
public const int UuidMaxLength = 10;
|
||||
public const int ApplicationAreaSize = 0xD8;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,12 +6,12 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp.NfpManager
|
||||
[StructLayout(LayoutKind.Sequential, Size = 0x40)]
|
||||
struct CommonInfo
|
||||
{
|
||||
public ushort LastWriteYear;
|
||||
public byte LastWriteMonth;
|
||||
public byte LastWriteDay;
|
||||
public ushort WriteCounter;
|
||||
public ushort Version;
|
||||
public uint ApplicationAreaSize;
|
||||
public ushort LastWriteYear;
|
||||
public byte LastWriteMonth;
|
||||
public byte LastWriteDay;
|
||||
public ushort WriteCounter;
|
||||
public ushort Version;
|
||||
public uint ApplicationAreaSize;
|
||||
public Array52<byte> Reserved;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,4 +4,4 @@
|
||||
{
|
||||
Amiibo
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,11 +6,11 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp.NfpManager
|
||||
[StructLayout(LayoutKind.Sequential, Size = 0x40)]
|
||||
struct ModelInfo
|
||||
{
|
||||
public ushort CharacterId;
|
||||
public byte CharacterVariant;
|
||||
public byte Series;
|
||||
public ushort ModelNumber;
|
||||
public byte Type;
|
||||
public ushort CharacterId;
|
||||
public byte CharacterVariant;
|
||||
public byte Series;
|
||||
public ushort ModelNumber;
|
||||
public byte Type;
|
||||
public Array57<byte> Reserved;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,6 @@
|
||||
{
|
||||
Rom = 1,
|
||||
Ram = 2,
|
||||
All = 3
|
||||
All = 3,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,16 +8,16 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp.NfpManager
|
||||
public KEvent ActivateEvent;
|
||||
public KEvent DeactivateEvent;
|
||||
|
||||
public void SignalActivate() => ActivateEvent.ReadableEvent.Signal();
|
||||
public void SignalActivate() => ActivateEvent.ReadableEvent.Signal();
|
||||
public void SignalDeactivate() => DeactivateEvent.ReadableEvent.Signal();
|
||||
|
||||
public NfpDeviceState State = NfpDeviceState.Unavailable;
|
||||
|
||||
public PlayerIndex Handle;
|
||||
public NpadIdType NpadIdType;
|
||||
public NpadIdType NpadIdType;
|
||||
|
||||
public string AmiiboId;
|
||||
|
||||
public bool UseRandomUuid;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
{
|
||||
enum NfpDeviceState
|
||||
{
|
||||
Initialized = 0,
|
||||
Initialized = 0,
|
||||
SearchingForTag = 1,
|
||||
TagFound = 2,
|
||||
TagRemoved = 3,
|
||||
TagMounted = 4,
|
||||
Unavailable = 5,
|
||||
Finalized = 6
|
||||
TagFound = 2,
|
||||
TagRemoved = 3,
|
||||
TagMounted = 4,
|
||||
Unavailable = 5,
|
||||
Finalized = 6,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,6 @@
|
||||
{
|
||||
Debug,
|
||||
User,
|
||||
System
|
||||
System,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,13 +7,13 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp.NfpManager
|
||||
[StructLayout(LayoutKind.Sequential, Size = 0x100)]
|
||||
struct RegisterInfo
|
||||
{
|
||||
public CharInfo MiiCharInfo;
|
||||
public ushort FirstWriteYear;
|
||||
public byte FirstWriteMonth;
|
||||
public byte FirstWriteDay;
|
||||
public CharInfo MiiCharInfo;
|
||||
public ushort FirstWriteYear;
|
||||
public byte FirstWriteMonth;
|
||||
public byte FirstWriteDay;
|
||||
public Array41<byte> Nickname;
|
||||
public byte FontRegion;
|
||||
public byte FontRegion;
|
||||
public Array64<byte> Reserved1;
|
||||
public Array58<byte> Reserved2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,6 @@
|
||||
enum State
|
||||
{
|
||||
NonInitialized = 0,
|
||||
Initialized = 1
|
||||
Initialized = 1,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,10 +7,10 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp.NfpManager
|
||||
struct TagInfo
|
||||
{
|
||||
public Array10<byte> Uuid;
|
||||
public byte UuidLength;
|
||||
public byte UuidLength;
|
||||
public Array21<byte> Reserved1;
|
||||
public uint Protocol;
|
||||
public uint TagType;
|
||||
public Array6<byte> Reserved2;
|
||||
public uint Protocol;
|
||||
public uint TagType;
|
||||
public Array6<byte> Reserved2;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,18 +5,18 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp.NfpManager
|
||||
{
|
||||
struct VirtualAmiiboFile
|
||||
{
|
||||
public uint FileVersion { get; set; }
|
||||
public byte[] TagUuid { get; set; }
|
||||
public string AmiiboId { get; set; }
|
||||
public uint FileVersion { get; set; }
|
||||
public byte[] TagUuid { get; set; }
|
||||
public string AmiiboId { get; set; }
|
||||
public DateTime FirstWriteDate { get; set; }
|
||||
public DateTime LastWriteDate { get; set; }
|
||||
public ushort WriteCounter { get; set; }
|
||||
public DateTime LastWriteDate { get; set; }
|
||||
public ushort WriteCounter { get; set; }
|
||||
public List<VirtualAmiiboApplicationArea> ApplicationAreas { get; set; }
|
||||
}
|
||||
|
||||
struct VirtualAmiiboApplicationArea
|
||||
{
|
||||
public uint ApplicationAreaId { get; set; }
|
||||
public byte[] ApplicationArea { get; set; }
|
||||
public uint ApplicationAreaId { get; set; }
|
||||
public byte[] ApplicationArea { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,17 +2,17 @@
|
||||
{
|
||||
public enum ResultCode
|
||||
{
|
||||
ModuleId = 115,
|
||||
ModuleId = 115,
|
||||
ErrorCodeShift = 9,
|
||||
|
||||
Success = 0,
|
||||
|
||||
DeviceNotFound = (64 << ErrorCodeShift) | ModuleId,
|
||||
WrongArgument = (65 << ErrorCodeShift) | ModuleId,
|
||||
WrongDeviceState = (73 << ErrorCodeShift) | ModuleId,
|
||||
NfcDisabled = (80 << ErrorCodeShift) | ModuleId,
|
||||
TagNotFound = (97 << ErrorCodeShift) | ModuleId,
|
||||
ApplicationAreaIsNull = (128 << ErrorCodeShift) | ModuleId,
|
||||
ApplicationAreaAlreadyCreated = (168 << ErrorCodeShift) | ModuleId
|
||||
DeviceNotFound = (64 << ErrorCodeShift) | ModuleId,
|
||||
WrongArgument = (65 << ErrorCodeShift) | ModuleId,
|
||||
WrongDeviceState = (73 << ErrorCodeShift) | ModuleId,
|
||||
NfcDisabled = (80 << ErrorCodeShift) | ModuleId,
|
||||
TagNotFound = (97 << ErrorCodeShift) | ModuleId,
|
||||
ApplicationAreaIsNull = (128 << ErrorCodeShift) | ModuleId,
|
||||
ApplicationAreaAlreadyCreated = (168 << ErrorCodeShift) | ModuleId,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,6 @@ using Ryujinx.HLE.HOS.Services.Nfc.Nfp.NfpManager;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
|
||||
namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
|
||||
{
|
||||
@@ -16,7 +15,7 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
|
||||
{
|
||||
private static uint _openedApplicationAreaId;
|
||||
|
||||
private static readonly AmiiboJsonSerializerContext SerializerContext = AmiiboJsonSerializerContext.Default;
|
||||
private static readonly AmiiboJsonSerializerContext _serializerContext = AmiiboJsonSerializerContext.Default;
|
||||
|
||||
public static byte[] GenerateUuid(string amiiboId, bool useRandomUuid)
|
||||
{
|
||||
@@ -43,7 +42,7 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
|
||||
|
||||
Random.Shared.NextBytes(uuid);
|
||||
|
||||
uuid[3] = (byte)(0x88 ^ uuid[0] ^ uuid[1] ^ uuid[2]);
|
||||
uuid[3] = (byte)(0x88 ^ uuid[0] ^ uuid[1] ^ uuid[2]);
|
||||
uuid[8] = (byte)(uuid[3] ^ uuid[4] ^ uuid[5] ^ uuid[6]);
|
||||
|
||||
return uuid;
|
||||
@@ -55,13 +54,13 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
|
||||
|
||||
return new CommonInfo()
|
||||
{
|
||||
LastWriteYear = (ushort)amiiboFile.LastWriteDate.Year,
|
||||
LastWriteMonth = (byte)amiiboFile.LastWriteDate.Month,
|
||||
LastWriteDay = (byte)amiiboFile.LastWriteDate.Day,
|
||||
WriteCounter = amiiboFile.WriteCounter,
|
||||
Version = 1,
|
||||
LastWriteYear = (ushort)amiiboFile.LastWriteDate.Year,
|
||||
LastWriteMonth = (byte)amiiboFile.LastWriteDate.Month,
|
||||
LastWriteDay = (byte)amiiboFile.LastWriteDate.Day,
|
||||
WriteCounter = amiiboFile.WriteCounter,
|
||||
Version = 1,
|
||||
ApplicationAreaSize = AmiiboConstants.ApplicationAreaSize,
|
||||
Reserved = new Array52<byte>()
|
||||
Reserved = new Array52<byte>(),
|
||||
};
|
||||
}
|
||||
|
||||
@@ -69,22 +68,22 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
|
||||
{
|
||||
VirtualAmiiboFile amiiboFile = LoadAmiiboFile(amiiboId);
|
||||
|
||||
UtilityImpl utilityImpl = new UtilityImpl(tickSource);
|
||||
CharInfo charInfo = new CharInfo();
|
||||
UtilityImpl utilityImpl = new(tickSource);
|
||||
CharInfo charInfo = new();
|
||||
|
||||
charInfo.SetFromStoreData(StoreData.BuildDefault(utilityImpl, 0));
|
||||
|
||||
charInfo.Nickname = Nickname.FromString(nickname);
|
||||
|
||||
RegisterInfo registerInfo = new RegisterInfo()
|
||||
RegisterInfo registerInfo = new()
|
||||
{
|
||||
MiiCharInfo = charInfo,
|
||||
FirstWriteYear = (ushort)amiiboFile.FirstWriteDate.Year,
|
||||
MiiCharInfo = charInfo,
|
||||
FirstWriteYear = (ushort)amiiboFile.FirstWriteDate.Year,
|
||||
FirstWriteMonth = (byte)amiiboFile.FirstWriteDate.Month,
|
||||
FirstWriteDay = (byte)amiiboFile.FirstWriteDate.Day,
|
||||
FontRegion = 0,
|
||||
Reserved1 = new Array64<byte>(),
|
||||
Reserved2 = new Array58<byte>()
|
||||
FirstWriteDay = (byte)amiiboFile.FirstWriteDate.Day,
|
||||
FontRegion = 0,
|
||||
Reserved1 = new Array64<byte>(),
|
||||
Reserved2 = new Array58<byte>(),
|
||||
};
|
||||
"Ryujinx"u8.CopyTo(registerInfo.Nickname.AsSpan());
|
||||
|
||||
@@ -132,7 +131,7 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
|
||||
virtualAmiiboFile.ApplicationAreas.Add(new VirtualAmiiboApplicationArea()
|
||||
{
|
||||
ApplicationAreaId = applicationAreaId,
|
||||
ApplicationArea = applicationAreaData
|
||||
ApplicationArea = applicationAreaData,
|
||||
});
|
||||
|
||||
SaveAmiiboFile(virtualAmiiboFile);
|
||||
@@ -153,7 +152,7 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
|
||||
virtualAmiiboFile.ApplicationAreas[i] = new VirtualAmiiboApplicationArea()
|
||||
{
|
||||
ApplicationAreaId = _openedApplicationAreaId,
|
||||
ApplicationArea = applicationAreaData
|
||||
ApplicationArea = applicationAreaData,
|
||||
};
|
||||
|
||||
break;
|
||||
@@ -174,19 +173,19 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
|
||||
|
||||
if (File.Exists(filePath))
|
||||
{
|
||||
virtualAmiiboFile = JsonHelper.DeserializeFromFile(filePath, SerializerContext.VirtualAmiiboFile);
|
||||
virtualAmiiboFile = JsonHelper.DeserializeFromFile(filePath, _serializerContext.VirtualAmiiboFile);
|
||||
}
|
||||
else
|
||||
{
|
||||
virtualAmiiboFile = new VirtualAmiiboFile()
|
||||
{
|
||||
FileVersion = 0,
|
||||
TagUuid = Array.Empty<byte>(),
|
||||
AmiiboId = amiiboId,
|
||||
FirstWriteDate = DateTime.Now,
|
||||
LastWriteDate = DateTime.Now,
|
||||
WriteCounter = 0,
|
||||
ApplicationAreas = new List<VirtualAmiiboApplicationArea>()
|
||||
FileVersion = 0,
|
||||
TagUuid = Array.Empty<byte>(),
|
||||
AmiiboId = amiiboId,
|
||||
FirstWriteDate = DateTime.Now,
|
||||
LastWriteDate = DateTime.Now,
|
||||
WriteCounter = 0,
|
||||
ApplicationAreas = new List<VirtualAmiiboApplicationArea>(),
|
||||
};
|
||||
|
||||
SaveAmiiboFile(virtualAmiiboFile);
|
||||
@@ -198,7 +197,7 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
|
||||
private static void SaveAmiiboFile(VirtualAmiiboFile virtualAmiiboFile)
|
||||
{
|
||||
string filePath = Path.Join(AppDataManager.BaseDirPath, "system", "amiibo", $"{virtualAmiiboFile.AmiiboId}.json");
|
||||
JsonHelper.SerializeToFile(filePath, virtualAmiiboFile, SerializerContext.VirtualAmiiboFile);
|
||||
JsonHelper.SerializeToFile(filePath, virtualAmiiboFile, _serializerContext.VirtualAmiiboFile);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user