aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/HOS/Applets/Controller
diff options
context:
space:
mode:
authorTSR Berry <20988865+TSRBerry@users.noreply.github.com>2023-04-08 01:22:00 +0200
committerMary <thog@protonmail.com>2023-04-27 23:51:14 +0200
commitcee712105850ac3385cd0091a923438167433f9f (patch)
tree4a5274b21d8b7f938c0d0ce18736d3f2993b11b1 /Ryujinx.HLE/HOS/Applets/Controller
parentcd124bda587ef09668a971fa1cac1c3f0cfc9f21 (diff)
Move solution and projects to src
Diffstat (limited to 'Ryujinx.HLE/HOS/Applets/Controller')
-rw-r--r--Ryujinx.HLE/HOS/Applets/Controller/ControllerApplet.cs147
-rw-r--r--Ryujinx.HLE/HOS/Applets/Controller/ControllerAppletUiArgs.cs14
-rw-r--r--Ryujinx.HLE/HOS/Applets/Controller/ControllerSupportArgHeader.cs18
-rw-r--r--Ryujinx.HLE/HOS/Applets/Controller/ControllerSupportArgPrivate.cs16
-rw-r--r--Ryujinx.HLE/HOS/Applets/Controller/ControllerSupportArgV7.cs26
-rw-r--r--Ryujinx.HLE/HOS/Applets/Controller/ControllerSupportArgVPre7.cs26
-rw-r--r--Ryujinx.HLE/HOS/Applets/Controller/ControllerSupportMode.cs9
-rw-r--r--Ryujinx.HLE/HOS/Applets/Controller/ControllerSupportResultInfo.cs16
8 files changed, 0 insertions, 272 deletions
diff --git a/Ryujinx.HLE/HOS/Applets/Controller/ControllerApplet.cs b/Ryujinx.HLE/HOS/Applets/Controller/ControllerApplet.cs
deleted file mode 100644
index 5d5a26c2..00000000
--- a/Ryujinx.HLE/HOS/Applets/Controller/ControllerApplet.cs
+++ /dev/null
@@ -1,147 +0,0 @@
-using Ryujinx.Common.Logging;
-using Ryujinx.Common.Memory;
-using Ryujinx.HLE.HOS.Services.Am.AppletAE;
-using Ryujinx.HLE.HOS.Services.Hid;
-using Ryujinx.HLE.HOS.Services.Hid.Types;
-using System;
-using System.IO;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using static Ryujinx.HLE.HOS.Services.Hid.HidServer.HidUtils;
-
-namespace Ryujinx.HLE.HOS.Applets
-{
- internal class ControllerApplet : IApplet
- {
- private Horizon _system;
-
- private AppletSession _normalSession;
-
- public event EventHandler AppletStateChanged;
-
- public ControllerApplet(Horizon system)
- {
- _system = system;
- }
-
- public ResultCode Start(AppletSession normalSession, AppletSession interactiveSession)
- {
- _normalSession = normalSession;
-
- byte[] launchParams = _normalSession.Pop();
- byte[] controllerSupportArgPrivate = _normalSession.Pop();
- ControllerSupportArgPrivate privateArg = IApplet.ReadStruct<ControllerSupportArgPrivate>(controllerSupportArgPrivate);
-
- Logger.Stub?.PrintStub(LogClass.ServiceHid, $"ControllerApplet ArgPriv {privateArg.PrivateSize} {privateArg.ArgSize} {privateArg.Mode} " +
- $"HoldType:{(NpadJoyHoldType)privateArg.NpadJoyHoldType} StyleSets:{(ControllerType)privateArg.NpadStyleSet}");
-
- if (privateArg.Mode != ControllerSupportMode.ShowControllerSupport)
- {
- _normalSession.Push(BuildResponse()); // Dummy response for other modes
- AppletStateChanged?.Invoke(this, null);
-
- return ResultCode.Success;
- }
-
- byte[] controllerSupportArg = _normalSession.Pop();
-
- ControllerSupportArgHeader argHeader;
-
- if (privateArg.ArgSize == Marshal.SizeOf<ControllerSupportArgV7>())
- {
- ControllerSupportArgV7 arg = IApplet.ReadStruct<ControllerSupportArgV7>(controllerSupportArg);
- argHeader = arg.Header;
-
- Logger.Stub?.PrintStub(LogClass.ServiceHid, $"ControllerSupportArg Version 7 EnableExplainText={arg.EnableExplainText != 0}");
- // Read enable text here?
- }
- else if (privateArg.ArgSize == Marshal.SizeOf<ControllerSupportArgVPre7>())
- {
- ControllerSupportArgVPre7 arg = IApplet.ReadStruct<ControllerSupportArgVPre7>(controllerSupportArg);
- argHeader = arg.Header;
-
- Logger.Stub?.PrintStub(LogClass.ServiceHid, $"ControllerSupportArg Version Pre-7 EnableExplainText={arg.EnableExplainText != 0}");
- // Read enable text here?
- }
- else
- {
- Logger.Stub?.PrintStub(LogClass.ServiceHid, $"ControllerSupportArg Version Unknown");
-
- argHeader = IApplet.ReadStruct<ControllerSupportArgHeader>(controllerSupportArg); // Read just the header
- }
-
- int playerMin = argHeader.PlayerCountMin;
- int playerMax = argHeader.PlayerCountMax;
- bool singleMode = argHeader.EnableSingleMode != 0;
-
- Logger.Stub?.PrintStub(LogClass.ServiceHid, $"ControllerApplet Arg {playerMin} {playerMax} {argHeader.EnableTakeOverConnection} {argHeader.EnableSingleMode}");
-
- if (singleMode)
- {
- // Applications can set an arbitrary player range even with SingleMode, so clamp it
- playerMin = playerMax = 1;
- }
-
- int configuredCount = 0;
- PlayerIndex primaryIndex = PlayerIndex.Unknown;
- while (!_system.Device.Hid.Npads.Validate(playerMin, playerMax, (ControllerType)privateArg.NpadStyleSet, out configuredCount, out primaryIndex))
- {
- ControllerAppletUiArgs uiArgs = new ControllerAppletUiArgs
- {
- PlayerCountMin = playerMin,
- PlayerCountMax = playerMax,
- SupportedStyles = (ControllerType)privateArg.NpadStyleSet,
- SupportedPlayers = _system.Device.Hid.Npads.GetSupportedPlayers(),
- IsDocked = _system.State.DockedMode
- };
-
- if (!_system.Device.UiHandler.DisplayMessageDialog(uiArgs))
- {
- break;
- }
- }
-
- ControllerSupportResultInfo result = new ControllerSupportResultInfo
- {
- PlayerCount = (sbyte)configuredCount,
- SelectedId = (uint)GetNpadIdTypeFromIndex(primaryIndex)
- };
-
- Logger.Stub?.PrintStub(LogClass.ServiceHid, $"ControllerApplet ReturnResult {result.PlayerCount} {result.SelectedId}");
-
- _normalSession.Push(BuildResponse(result));
- AppletStateChanged?.Invoke(this, null);
-
- _system.ReturnFocus();
-
- return ResultCode.Success;
- }
-
- public ResultCode GetResult()
- {
- return ResultCode.Success;
- }
-
- private byte[] BuildResponse(ControllerSupportResultInfo result)
- {
- using (MemoryStream stream = MemoryStreamManager.Shared.GetStream())
- using (BinaryWriter writer = new BinaryWriter(stream))
- {
- writer.Write(MemoryMarshal.AsBytes(MemoryMarshal.CreateReadOnlySpan(ref result, Unsafe.SizeOf<ControllerSupportResultInfo>())));
-
- return stream.ToArray();
- }
- }
-
- private byte[] BuildResponse()
- {
- using (MemoryStream stream = MemoryStreamManager.Shared.GetStream())
- using (BinaryWriter writer = new BinaryWriter(stream))
- {
- writer.Write((ulong)ResultCode.Success);
-
- return stream.ToArray();
- }
- }
- }
-}
diff --git a/Ryujinx.HLE/HOS/Applets/Controller/ControllerAppletUiArgs.cs b/Ryujinx.HLE/HOS/Applets/Controller/ControllerAppletUiArgs.cs
deleted file mode 100644
index cc15a406..00000000
--- a/Ryujinx.HLE/HOS/Applets/Controller/ControllerAppletUiArgs.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using Ryujinx.HLE.HOS.Services.Hid;
-using System.Collections.Generic;
-
-namespace Ryujinx.HLE.HOS.Applets
-{
- public struct ControllerAppletUiArgs
- {
- public int PlayerCountMin;
- public int PlayerCountMax;
- public ControllerType SupportedStyles;
- public IEnumerable<PlayerIndex> SupportedPlayers;
- public bool IsDocked;
- }
-} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Applets/Controller/ControllerSupportArgHeader.cs b/Ryujinx.HLE/HOS/Applets/Controller/ControllerSupportArgHeader.cs
deleted file mode 100644
index 141994a8..00000000
--- a/Ryujinx.HLE/HOS/Applets/Controller/ControllerSupportArgHeader.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace Ryujinx.HLE.HOS.Applets
-{
-#pragma warning disable CS0649
- [StructLayout(LayoutKind.Sequential, Pack = 1)]
- struct ControllerSupportArgHeader
- {
- public sbyte PlayerCountMin;
- public sbyte PlayerCountMax;
- public byte EnableTakeOverConnection;
- public byte EnableLeftJustify;
- public byte EnablePermitJoyDual;
- public byte EnableSingleMode;
- public byte EnableIdentificationColor;
- }
-#pragma warning restore CS0649
-} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Applets/Controller/ControllerSupportArgPrivate.cs b/Ryujinx.HLE/HOS/Applets/Controller/ControllerSupportArgPrivate.cs
deleted file mode 100644
index d4c8177e..00000000
--- a/Ryujinx.HLE/HOS/Applets/Controller/ControllerSupportArgPrivate.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-namespace Ryujinx.HLE.HOS.Applets
-{
-#pragma warning disable CS0649
- struct ControllerSupportArgPrivate
- {
- public uint PrivateSize;
- public uint ArgSize;
- public byte Flag0;
- public byte Flag1;
- public ControllerSupportMode Mode;
- public byte ControllerSupportCaller;
- public uint NpadStyleSet;
- public uint NpadJoyHoldType;
- }
-#pragma warning restore CS0649
-} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Applets/Controller/ControllerSupportArgV7.cs b/Ryujinx.HLE/HOS/Applets/Controller/ControllerSupportArgV7.cs
deleted file mode 100644
index 98c413be..00000000
--- a/Ryujinx.HLE/HOS/Applets/Controller/ControllerSupportArgV7.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-using Ryujinx.Common.Memory;
-using System;
-using System.Runtime.InteropServices;
-
-namespace Ryujinx.HLE.HOS.Applets
-{
-#pragma warning disable CS0649
- // (8.0.0+ version)
- [StructLayout(LayoutKind.Sequential, Pack = 1)]
- struct ControllerSupportArgV7
- {
- public ControllerSupportArgHeader Header;
- public Array8<uint> IdentificationColor;
- public byte EnableExplainText;
- public ExplainTextStruct ExplainText;
-
- [StructLayout(LayoutKind.Sequential, Size = 8 * 0x81)]
- public struct ExplainTextStruct
- {
- private byte element;
-
- public Span<byte> AsSpan() => MemoryMarshal.CreateSpan(ref element, 8 * 0x81);
- }
- }
-#pragma warning restore CS0649
-} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Applets/Controller/ControllerSupportArgVPre7.cs b/Ryujinx.HLE/HOS/Applets/Controller/ControllerSupportArgVPre7.cs
deleted file mode 100644
index 87417e16..00000000
--- a/Ryujinx.HLE/HOS/Applets/Controller/ControllerSupportArgVPre7.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-using Ryujinx.Common.Memory;
-using System;
-using System.Runtime.InteropServices;
-
-namespace Ryujinx.HLE.HOS.Applets
-{
-#pragma warning disable CS0649
- // (1.0.0+ version)
- [StructLayout(LayoutKind.Sequential, Pack = 1)]
- struct ControllerSupportArgVPre7
- {
- public ControllerSupportArgHeader Header;
- public Array4<uint> IdentificationColor;
- public byte EnableExplainText;
- public ExplainTextStruct ExplainText;
-
- [StructLayout(LayoutKind.Sequential, Size = 4 * 0x81)]
- public struct ExplainTextStruct
- {
- private byte element;
-
- public Span<byte> AsSpan() => MemoryMarshal.CreateSpan(ref element, 4 * 0x81);
- }
- }
-#pragma warning restore CS0649
-} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Applets/Controller/ControllerSupportMode.cs b/Ryujinx.HLE/HOS/Applets/Controller/ControllerSupportMode.cs
deleted file mode 100644
index 9496c1dd..00000000
--- a/Ryujinx.HLE/HOS/Applets/Controller/ControllerSupportMode.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-namespace Ryujinx.HLE.HOS.Applets
-{
- enum ControllerSupportMode : byte
- {
- ShowControllerSupport = 0,
- ShowControllerStrapGuide = 1,
- ShowControllerFirmwareUpdate = 2
- }
-} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Applets/Controller/ControllerSupportResultInfo.cs b/Ryujinx.HLE/HOS/Applets/Controller/ControllerSupportResultInfo.cs
deleted file mode 100644
index 689a54de..00000000
--- a/Ryujinx.HLE/HOS/Applets/Controller/ControllerSupportResultInfo.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-using Ryujinx.Common.Memory;
-using System.Runtime.InteropServices;
-
-namespace Ryujinx.HLE.HOS.Applets
-{
-#pragma warning disable CS0649
- [StructLayout(LayoutKind.Sequential, Pack = 1)]
- struct ControllerSupportResultInfo
- {
- public sbyte PlayerCount;
- private Array3<byte> _padding;
- public uint SelectedId;
- public uint Result;
- }
-#pragma warning restore CS0649
-} \ No newline at end of file