From 8406ec6272392a3f7f7672d85fdde333b6c70378 Mon Sep 17 00:00:00 2001 From: jduncanator <1518948+jduncanator@users.noreply.github.com> Date: Fri, 11 Jan 2019 11:11:46 +1100 Subject: [PATCH] Refactor Ryujinx.Common and HLE Stub Logging (#537) * Refactor Ryujinx.Common and HLE Stub Logging * Resolve review comments * Rename missed loop variable * Optimize PrintStub logging function * Pass the call-sites Thread ID through to the logger * Remove superfluous lock from ConsoleLog * Process logged data objects in the logger target Pass the data object all the way to the output logger targets, to allow them to "serialize" this in whatever appropriate format they're logging in. * Use existing StringBuilder to build the properties string * Add a ServiceNotImplemented Exception Useful for printing debug information about unimplemented service calls * Resolve Style Nits * Resolve Merge Issues * Fix typo and align declarations --- Ryujinx.Common/BitUtils.cs | 158 ++++----- Ryujinx.Common/HexUtils.cs | 90 +++++ Ryujinx.Common/Logging/LogEventArgs.cs | 24 +- Ryujinx.Common/Logging/Logger.cs | 83 +++-- .../ServiceNotImplementedException.cs | 163 +++++++++ .../HOS/Services/Acc/IAccountService.cs | 6 +- .../Services/Acc/IManagerForApplication.cs | 4 +- Ryujinx.HLE/HOS/Services/Acc/IProfile.cs | 2 +- .../HOS/Services/Am/IApplicationFunctions.cs | 8 +- .../HOS/Services/Am/IAudioController.cs | 10 +- .../HOS/Services/Am/ICommonStateGetter.cs | 4 +- .../HOS/Services/Am/IHomeMenuFunctions.cs | 4 +- .../HOS/Services/Am/ILibraryAppletAccessor.cs | 8 +- .../HOS/Services/Am/ISelfController.cs | 28 +- .../HOS/Services/Am/IWindowController.cs | 4 +- Ryujinx.HLE/HOS/Services/Apm/ISession.cs | 2 +- .../Aud/AudioRenderer/IAudioRenderer.cs | 6 +- Ryujinx.HLE/HOS/Services/Aud/IAudioDevice.cs | 14 +- .../HOS/Services/Aud/IAudioRendererManager.cs | 3 +- Ryujinx.HLE/HOS/Services/Bsd/IClient.cs | 11 +- .../HOS/Services/Friend/IFriendService.cs | 26 +- Ryujinx.HLE/HOS/Services/Hid/IHidServer.cs | 334 +++++++----------- Ryujinx.HLE/HOS/Services/IpcService.cs | 3 +- .../HOS/Services/Irs/IIrSensorServer.cs | 4 +- Ryujinx.HLE/HOS/Services/Mm/IRequest.cs | 19 +- Ryujinx.HLE/HOS/Services/Nfp/IUser.cs | 14 +- .../HOS/Services/Nifm/IGeneralService.cs | 2 +- Ryujinx.HLE/HOS/Services/Nifm/IRequest.cs | 10 +- .../HOS/Services/Ns/IAddOnContentManager.cs | 4 +- Ryujinx.HLE/HOS/Services/Nv/INvDrvServices.cs | 2 +- .../HOS/Services/Nv/NvGpuAS/NvGpuASIoctl.cs | 6 +- .../HOS/Services/Nv/NvGpuGpu/NvGpuGpuIoctl.cs | 8 +- .../Nv/NvHostChannel/NvHostChannelIoctl.cs | 14 +- .../Services/Nv/NvHostCtrl/NvHostCtrlIoctl.cs | 2 +- .../HOS/Services/Prepo/IPrepoService.cs | 2 +- Ryujinx.HLE/HOS/Services/Psm/IPsmServer.cs | 8 +- Ryujinx.HLE/HOS/Services/Psm/IPsmSession.cs | 10 +- .../HOS/Services/Sfdnsres/IResolver.cs | 11 +- Ryujinx.HLE/HOS/Services/Ssl/ISslService.cs | 4 +- .../HOS/Services/Vi/IManagerDisplayService.cs | 8 +- .../HOS/Services/Vi/ISystemDisplayService.cs | 4 +- Ryujinx/Ui/ConsoleLog.cs | 47 ++- 42 files changed, 696 insertions(+), 478 deletions(-) create mode 100644 Ryujinx.Common/HexUtils.cs create mode 100644 Ryujinx.HLE/Exceptions/ServiceNotImplementedException.cs diff --git a/Ryujinx.Common/BitUtils.cs b/Ryujinx.Common/BitUtils.cs index 5c858029b..135b397d3 100644 --- a/Ryujinx.Common/BitUtils.cs +++ b/Ryujinx.Common/BitUtils.cs @@ -2,103 +2,103 @@ namespace Ryujinx.Common { public static class BitUtils { - public static int AlignUp(int Value, int Size) - { - return (Value + (Size - 1)) & -Size; - } - - public static ulong AlignUp(ulong Value, int Size) - { - return (ulong)AlignUp((long)Value, Size); - } - - public static long AlignUp(long Value, int Size) - { - return (Value + (Size - 1)) & -(long)Size; - } - - public static int AlignDown(int Value, int Size) - { - return Value & -Size; - } - - public static ulong AlignDown(ulong Value, int Size) - { - return (ulong)AlignDown((long)Value, Size); - } - - public static long AlignDown(long Value, int Size) - { - return Value & -(long)Size; - } - - public static ulong DivRoundUp(ulong Value, uint Dividend) - { - return (Value + Dividend - 1) / Dividend; - } - - public static long DivRoundUp(long Value, int Dividend) - { - return (Value + Dividend - 1) / Dividend; - } - - public static bool IsPowerOfTwo32(int Value) - { - return Value != 0 && (Value & (Value - 1)) == 0; - } - - public static bool IsPowerOfTwo64(long Value) - { - return Value != 0 && (Value & (Value - 1)) == 0; - } - - public static int CountLeadingZeros32(int Value) - { - return (int)CountLeadingZeros((ulong)Value, 32); - } - - public static int CountLeadingZeros64(long Value) - { - return (int)CountLeadingZeros((ulong)Value, 64); - } - private static readonly byte[] ClzNibbleTbl = { 4, 3, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 }; - private static ulong CountLeadingZeros(ulong Value, int Size) // Size is 8, 16, 32 or 64 (SIMD&FP or Base Inst.). + public static int AlignUp(int value, int size) { - if (Value == 0ul) + return (value + (size - 1)) & -size; + } + + public static ulong AlignUp(ulong value, int size) + { + return (ulong)AlignUp((long)value, size); + } + + public static long AlignUp(long value, int size) + { + return (value + (size - 1)) & -(long)size; + } + + public static int AlignDown(int value, int size) + { + return value & -size; + } + + public static ulong AlignDown(ulong value, int size) + { + return (ulong)AlignDown((long)value, size); + } + + public static long AlignDown(long value, int size) + { + return value & -(long)size; + } + + public static ulong DivRoundUp(ulong value, uint dividend) + { + return (value + dividend - 1) / dividend; + } + + public static long DivRoundUp(long value, int dividend) + { + return (value + dividend - 1) / dividend; + } + + public static bool IsPowerOfTwo32(int value) + { + return value != 0 && (value & (value - 1)) == 0; + } + + public static bool IsPowerOfTwo64(long value) + { + return value != 0 && (value & (value - 1)) == 0; + } + + public static int CountLeadingZeros32(int value) + { + return (int)CountLeadingZeros((ulong)value, 32); + } + + public static int CountLeadingZeros64(long value) + { + return (int)CountLeadingZeros((ulong)value, 64); + } + + private static ulong CountLeadingZeros(ulong value, int size) + { + if (value == 0ul) { - return (ulong)Size; + return (ulong)size; } - int NibbleIdx = Size; - int PreCount, Count = 0; + int nibbleIdx = size; + int preCount, count = 0; do { - NibbleIdx -= 4; - PreCount = ClzNibbleTbl[(Value >> NibbleIdx) & 0b1111]; - Count += PreCount; + nibbleIdx -= 4; + preCount = ClzNibbleTbl[(value >> nibbleIdx) & 0b1111]; + count += preCount; } - while (PreCount == 4); + while (preCount == 4); - return (ulong)Count; + return (ulong)count; } - public static long ReverseBits64(long Value) + public static long ReverseBits64(long value) { - return (long)ReverseBits64((ulong)Value); + return (long)ReverseBits64((ulong)value); } - private static ulong ReverseBits64(ulong Value) + private static ulong ReverseBits64(ulong value) { - Value = ((Value & 0xaaaaaaaaaaaaaaaa) >> 1 ) | ((Value & 0x5555555555555555) << 1 ); - Value = ((Value & 0xcccccccccccccccc) >> 2 ) | ((Value & 0x3333333333333333) << 2 ); - Value = ((Value & 0xf0f0f0f0f0f0f0f0) >> 4 ) | ((Value & 0x0f0f0f0f0f0f0f0f) << 4 ); - Value = ((Value & 0xff00ff00ff00ff00) >> 8 ) | ((Value & 0x00ff00ff00ff00ff) << 8 ); - Value = ((Value & 0xffff0000ffff0000) >> 16) | ((Value & 0x0000ffff0000ffff) << 16); + value = ((value & 0xaaaaaaaaaaaaaaaa) >> 1 ) | ((value & 0x5555555555555555) << 1 ); + value = ((value & 0xcccccccccccccccc) >> 2 ) | ((value & 0x3333333333333333) << 2 ); + value = ((value & 0xf0f0f0f0f0f0f0f0) >> 4 ) | ((value & 0x0f0f0f0f0f0f0f0f) << 4 ); + value = ((value & 0xff00ff00ff00ff00) >> 8 ) | ((value & 0x00ff00ff00ff00ff) << 8 ); + value = ((value & 0xffff0000ffff0000) >> 16) | ((value & 0x0000ffff0000ffff) << 16); - return (Value >> 32) | (Value << 32); + return (value >> 32) | (value << 32); } } } \ No newline at end of file diff --git a/Ryujinx.Common/HexUtils.cs b/Ryujinx.Common/HexUtils.cs new file mode 100644 index 000000000..63587ceaa --- /dev/null +++ b/Ryujinx.Common/HexUtils.cs @@ -0,0 +1,90 @@ +using System; +using System.Text; + +namespace Ryujinx.Common +{ + public static class HexUtils + { + private static readonly char[] HexChars = "0123456789ABCDEF".ToCharArray(); + + private const int HexTableColumnWidth = 8; + private const int HexTableColumnSpace = 3; + + // Modified for Ryujinx + // Original by Pascal Ganaye - CPOL License + // https://www.codeproject.com/Articles/36747/Quick-and-Dirty-HexDump-of-a-Byte-Array + public static string HexTable(byte[] bytes, int bytesPerLine = 16) + { + if (bytes == null) + { + return ""; + } + + int bytesLength = bytes.Length; + + int firstHexColumn = + HexTableColumnWidth + + HexTableColumnSpace; + + int firstCharColumn = firstHexColumn + + bytesPerLine * HexTableColumnSpace + + (bytesPerLine - 1) / HexTableColumnWidth + + 2; + + int lineLength = firstCharColumn + + bytesPerLine + + Environment.NewLine.Length; + + char[] line = (new String(' ', lineLength - Environment.NewLine.Length) + Environment.NewLine).ToCharArray(); + + int expectedLines = (bytesLength + bytesPerLine - 1) / bytesPerLine; + + StringBuilder result = new StringBuilder(expectedLines * lineLength); + + for (int i = 0; i < bytesLength; i += bytesPerLine) + { + line[0] = HexChars[(i >> 28) & 0xF]; + line[1] = HexChars[(i >> 24) & 0xF]; + line[2] = HexChars[(i >> 20) & 0xF]; + line[3] = HexChars[(i >> 16) & 0xF]; + line[4] = HexChars[(i >> 12) & 0xF]; + line[5] = HexChars[(i >> 8) & 0xF]; + line[6] = HexChars[(i >> 4) & 0xF]; + line[7] = HexChars[(i >> 0) & 0xF]; + + int hexColumn = firstHexColumn; + int charColumn = firstCharColumn; + + for (int j = 0; j < bytesPerLine; j++) + { + if (j > 0 && (j & 7) == 0) + { + hexColumn++; + } + + if (i + j >= bytesLength) + { + line[hexColumn] = ' '; + line[hexColumn + 1] = ' '; + line[charColumn] = ' '; + } + else + { + byte b = bytes[i + j]; + + line[hexColumn] = HexChars[(b >> 4) & 0xF]; + line[hexColumn + 1] = HexChars[b & 0xF]; + line[charColumn] = (b < 32 ? '·' : (char)b); + } + + hexColumn += 3; + charColumn++; + } + + result.Append(line); + } + + return result.ToString(); + } + } +} diff --git a/Ryujinx.Common/Logging/LogEventArgs.cs b/Ryujinx.Common/Logging/LogEventArgs.cs index 7a479b71c..363a45b9a 100644 --- a/Ryujinx.Common/Logging/LogEventArgs.cs +++ b/Ryujinx.Common/Logging/LogEventArgs.cs @@ -4,16 +4,28 @@ namespace Ryujinx.Common.Logging { public class LogEventArgs : EventArgs { - public LogLevel Level { get; private set; } - public TimeSpan Time { get; private set; } + public LogLevel Level { get; private set; } + public TimeSpan Time { get; private set; } + public int ThreadId { get; private set; } public string Message { get; private set; } + public object Data { get; private set; } - public LogEventArgs(LogLevel Level, TimeSpan Time, string Message) + public LogEventArgs(LogLevel level, TimeSpan time, int threadId, string message) { - this.Level = Level; - this.Time = Time; - this.Message = Message; + this.Level = level; + this.Time = time; + this.ThreadId = threadId; + this.Message = message; + } + + public LogEventArgs(LogLevel level, TimeSpan time, int threadId, string message, object data) + { + this.Level = level; + this.Time = time; + this.ThreadId = threadId; + this.Message = message; + this.Data = data; } } } \ No newline at end of file diff --git a/Ryujinx.Common/Logging/Logger.cs b/Ryujinx.Common/Logging/Logger.cs index 6422f1131..5e58f8064 100644 --- a/Ryujinx.Common/Logging/Logger.cs +++ b/Ryujinx.Common/Logging/Logger.cs @@ -1,78 +1,97 @@ using System; using System.Diagnostics; +using System.Reflection; using System.Runtime.CompilerServices; +using System.Text; +using System.Threading; namespace Ryujinx.Common.Logging { public static class Logger { - private static bool[] EnabledLevels; - private static bool[] EnabledClasses; + private static Stopwatch m_Time; + + private static readonly bool[] m_EnabledLevels; + private static readonly bool[] m_EnabledClasses; public static event EventHandler Updated; - private static Stopwatch Time; - static Logger() { - EnabledLevels = new bool[Enum.GetNames(typeof(LogLevel)).Length]; - EnabledClasses = new bool[Enum.GetNames(typeof(LogClass)).Length]; + m_EnabledLevels = new bool[Enum.GetNames(typeof(LogLevel)).Length]; + m_EnabledClasses = new bool[Enum.GetNames(typeof(LogClass)).Length]; - EnabledLevels[(int)LogLevel.Stub] = true; - EnabledLevels[(int)LogLevel.Info] = true; - EnabledLevels[(int)LogLevel.Warning] = true; - EnabledLevels[(int)LogLevel.Error] = true; + m_EnabledLevels[(int)LogLevel.Stub] = true; + m_EnabledLevels[(int)LogLevel.Info] = true; + m_EnabledLevels[(int)LogLevel.Warning] = true; + m_EnabledLevels[(int)LogLevel.Error] = true; - for (int Index = 0; Index < EnabledClasses.Length; Index++) + for (int index = 0; index < m_EnabledClasses.Length; index++) { - EnabledClasses[Index] = true; + m_EnabledClasses[index] = true; } - Time = new Stopwatch(); - - Time.Start(); + m_Time = Stopwatch.StartNew(); } - public static void SetEnable(LogLevel Level, bool Enabled) + public static void SetEnable(LogLevel logLevel, bool enabled) { - EnabledLevels[(int)Level] = Enabled; + m_EnabledLevels[(int)logLevel] = enabled; } - public static void SetEnable(LogClass Class, bool Enabled) + public static void SetEnable(LogClass logClass, bool enabled) { - EnabledClasses[(int)Class] = Enabled; + m_EnabledClasses[(int)logClass] = enabled; } - public static void PrintDebug(LogClass Class, string Message, [CallerMemberName] string Caller = "") + public static void PrintDebug(LogClass logClass, string message, [CallerMemberName] string caller = "") { - Print(LogLevel.Debug, Class, GetFormattedMessage(Class, Message, Caller)); + Print(LogLevel.Debug, logClass, GetFormattedMessage(logClass, message, caller)); } - public static void PrintStub(LogClass Class, string Message, [CallerMemberName] string Caller = "") + public static void PrintInfo(LogClass logClass, string message, [CallerMemberName] string Caller = "") { - Print(LogLevel.Stub, Class, GetFormattedMessage(Class, Message, Caller)); + Print(LogLevel.Info, logClass, GetFormattedMessage(logClass, message, Caller)); } - public static void PrintInfo(LogClass Class, string Message, [CallerMemberName] string Caller = "") + public static void PrintWarning(LogClass logClass, string message, [CallerMemberName] string Caller = "") { - Print(LogLevel.Info, Class, GetFormattedMessage(Class, Message, Caller)); + Print(LogLevel.Warning, logClass, GetFormattedMessage(logClass, message, Caller)); } - public static void PrintWarning(LogClass Class, string Message, [CallerMemberName] string Caller = "") + public static void PrintError(LogClass logClass, string message, [CallerMemberName] string Caller = "") { - Print(LogLevel.Warning, Class, GetFormattedMessage(Class, Message, Caller)); + Print(LogLevel.Error, logClass, GetFormattedMessage(logClass, message, Caller)); } - public static void PrintError(LogClass Class, string Message, [CallerMemberName] string Caller = "") + public static void PrintStub(LogClass logClass, string message = "", [CallerMemberName] string caller = "") { - Print(LogLevel.Error, Class, GetFormattedMessage(Class, Message, Caller)); + Print(LogLevel.Stub, logClass, GetFormattedMessage(logClass, "Stubbed. " + message, caller)); } - private static void Print(LogLevel Level, LogClass Class, string Message) + public static void PrintStub(LogClass logClass, T obj, [CallerMemberName] string caller = "") { - if (EnabledLevels[(int)Level] && EnabledClasses[(int)Class]) + Print(LogLevel.Stub, logClass, GetFormattedMessage(logClass, "Stubbed.", caller), obj); + } + + public static void PrintStub(LogClass logClass, string message, T obj, [CallerMemberName] string caller = "") + { + Print(LogLevel.Stub, logClass, GetFormattedMessage(logClass, "Stubbed. " + message, caller), obj); + } + + private static void Print(LogLevel logLevel, LogClass logClass, string message) + { + if (m_EnabledLevels[(int)logLevel] && m_EnabledClasses[(int)logClass]) { - Updated?.Invoke(null, new LogEventArgs(Level, Time.Elapsed, Message)); + Updated?.Invoke(null, new LogEventArgs(logLevel, m_Time.Elapsed, Thread.CurrentThread.ManagedThreadId, message)); + } + } + + private static void Print(LogLevel logLevel, LogClass logClass, string message, object data) + { + if (m_EnabledLevels[(int)logLevel] && m_EnabledClasses[(int)logClass]) + { + Updated?.Invoke(null, new LogEventArgs(logLevel, m_Time.Elapsed, Thread.CurrentThread.ManagedThreadId, message, data)); } } diff --git a/Ryujinx.HLE/Exceptions/ServiceNotImplementedException.cs b/Ryujinx.HLE/Exceptions/ServiceNotImplementedException.cs new file mode 100644 index 000000000..18f41910b --- /dev/null +++ b/Ryujinx.HLE/Exceptions/ServiceNotImplementedException.cs @@ -0,0 +1,163 @@ +using Ryujinx.Common; +using Ryujinx.HLE.HOS; +using Ryujinx.HLE.HOS.Ipc; +using Ryujinx.HLE.HOS.Kernel.Ipc; +using Ryujinx.HLE.HOS.Services; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Reflection; +using System.Runtime.Serialization; +using System.Text; + +namespace Ryujinx.HLE.Exceptions +{ + [Serializable] + internal class ServiceNotImplementedException : Exception + { + public KSession Session { get; } + public IpcMessage Request { get; } + public ServiceCtx Context { get; } + + public ServiceNotImplementedException(ServiceCtx context) + : this(context, "The service call is not implemented.") + { } + + public ServiceNotImplementedException(ServiceCtx context, string message) + : base(message) + { + Context = context; + Session = context.Session; + Request = context.Request; + } + + public ServiceNotImplementedException(ServiceCtx context, string message, Exception inner) + : base(message, inner) + { + Context = context; + Session = context.Session; + Request = context.Request; + } + + protected ServiceNotImplementedException(SerializationInfo info, StreamingContext context) + : base(info, context) + { } + + public override string Message + { + get + { + return base.Message + + Environment.NewLine + + Environment.NewLine + + BuildMessage(); + } + } + + private string BuildMessage() + { + StringBuilder sb = new StringBuilder(); + + // Print the IPC command details (service name, command ID, and handler) + (Type callingType, MethodBase callingMethod) = WalkStackTrace(new StackTrace(this)); + + if (callingType != null && callingMethod != null) + { + var ipcService = Context.Session.Service; + var ipcCommands = ipcService.Commands; + + // Find the handler for the method called + var ipcHandler = ipcCommands.FirstOrDefault(x => x.Value.Method == callingMethod); + var ipcCommandId = ipcHandler.Key; + var ipcMethod = ipcHandler.Value; + + if (ipcMethod != null) + { + sb.AppendLine($"Service Command: {Session.ServiceName} {ipcService.GetType().Name}: {ipcCommandId} ({ipcMethod.Method.Name})"); + sb.AppendLine(); + } + } + + // Print buffer information + sb.AppendLine("Buffer Information"); + + if (Request.PtrBuff.Count > 0) + { + sb.AppendLine("\tPtrBuff:"); + + foreach (var buff in Request.PtrBuff) + { + sb.AppendLine($"\t[{buff.Index}] Position: 0x{buff.Position:x16} Size: 0x{buff.Size:x16}"); + } + } + + if (Request.SendBuff.Count > 0) + { + sb.AppendLine("\tSendBuff:"); + + foreach (var buff in Request.SendBuff) + { + sb.AppendLine($"\tPosition: 0x{buff.Position:x16} Size: 0x{buff.Size:x16} Flags: {buff.Flags}"); + } + } + + if (Request.ReceiveBuff.Count > 0) + { + sb.AppendLine("\tReceiveBuff:"); + + foreach (var buff in Request.ReceiveBuff) + { + sb.AppendLine($"\tPosition: 0x{buff.Position:x16} Size: 0x{buff.Size:x16} Flags: {buff.Flags}"); + } + } + + if (Request.ExchangeBuff.Count > 0) + { + sb.AppendLine("\tExchangeBuff:"); + + foreach (var buff in Request.ExchangeBuff) + { + sb.AppendLine($"\tPosition: 0x{buff.Position:x16} Size: 0x{buff.Size:x16} Flags: {buff.Flags}"); + } + } + + if (Request.RecvListBuff.Count > 0) + { + sb.AppendLine("\tRecvListBuff:"); + + foreach (var buff in Request.RecvListBuff) + { + sb.AppendLine($"\tPosition: 0x{buff.Position:x16} Size: 0x{buff.Size:x16}"); + } + } + + sb.AppendLine(); + + sb.AppendLine("Raw Request Data:"); + sb.Append(HexUtils.HexTable(Request.RawData)); + + return sb.ToString(); + } + + private (Type, MethodBase) WalkStackTrace(StackTrace trace) + { + int i = 0; + + StackFrame frame; + // Find the IIpcService method that threw this exception + while ((frame = trace.GetFrame(i++)) != null) + { + var method = frame.GetMethod(); + var declType = method.DeclaringType; + + if (typeof(IIpcService).IsAssignableFrom(declType)) + { + return (declType, method); + } + } + + return (null, null); + } + } +} diff --git a/Ryujinx.HLE/HOS/Services/Acc/IAccountService.cs b/Ryujinx.HLE/HOS/Services/Acc/IAccountService.cs index 7ff25c4be..f6c3cef96 100644 --- a/Ryujinx.HLE/HOS/Services/Acc/IAccountService.cs +++ b/Ryujinx.HLE/HOS/Services/Acc/IAccountService.cs @@ -118,7 +118,7 @@ namespace Ryujinx.HLE.HOS.Services.Acc { long unknown = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceAcc, $"Stubbed. Unknown: {unknown}"); + Logger.PrintStub(LogClass.ServiceAcc, new { unknown }); context.ResponseData.Write(false); @@ -130,7 +130,7 @@ namespace Ryujinx.HLE.HOS.Services.Acc { bool unknown = context.RequestData.ReadBoolean(); - Logger.PrintStub(LogClass.ServiceAcc, $"Stubbed. Unknown: {unknown}"); + Logger.PrintStub(LogClass.ServiceAcc, new { unknown }); UserProfile profile = context.Device.System.State.LastOpenUser; @@ -144,7 +144,7 @@ namespace Ryujinx.HLE.HOS.Services.Acc { long unknown = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceAcc, $"Stubbed. Unknown: {unknown}"); + Logger.PrintStub(LogClass.ServiceAcc, new { unknown }); return 0; } diff --git a/Ryujinx.HLE/HOS/Services/Acc/IManagerForApplication.cs b/Ryujinx.HLE/HOS/Services/Acc/IManagerForApplication.cs index 93b4b4a18..ba31bf4a9 100644 --- a/Ryujinx.HLE/HOS/Services/Acc/IManagerForApplication.cs +++ b/Ryujinx.HLE/HOS/Services/Acc/IManagerForApplication.cs @@ -27,7 +27,7 @@ namespace Ryujinx.HLE.HOS.Services.Acc // CheckAvailability() public long CheckAvailability(ServiceCtx context) { - Logger.PrintStub(LogClass.ServiceAcc, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAcc); return 0; } @@ -37,7 +37,7 @@ namespace Ryujinx.HLE.HOS.Services.Acc { long networkServiceAccountId = 0xcafe; - Logger.PrintStub(LogClass.ServiceAcc, $"Stubbed. NetworkServiceAccountId: {networkServiceAccountId}"); + Logger.PrintStub(LogClass.ServiceAcc, new { networkServiceAccountId }); context.ResponseData.Write(networkServiceAccountId); diff --git a/Ryujinx.HLE/HOS/Services/Acc/IProfile.cs b/Ryujinx.HLE/HOS/Services/Acc/IProfile.cs index c50e95409..18ac53bda 100644 --- a/Ryujinx.HLE/HOS/Services/Acc/IProfile.cs +++ b/Ryujinx.HLE/HOS/Services/Acc/IProfile.cs @@ -37,7 +37,7 @@ namespace Ryujinx.HLE.HOS.Services.Acc public long Get(ServiceCtx context) { - Logger.PrintStub(LogClass.ServiceAcc, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAcc); long position = context.Request.ReceiveBuff[0].Position; diff --git a/Ryujinx.HLE/HOS/Services/Am/IApplicationFunctions.cs b/Ryujinx.HLE/HOS/Services/Am/IApplicationFunctions.cs index fbc5dee5c..41bfb1c86 100644 --- a/Ryujinx.HLE/HOS/Services/Am/IApplicationFunctions.cs +++ b/Ryujinx.HLE/HOS/Services/Am/IApplicationFunctions.cs @@ -39,7 +39,7 @@ namespace Ryujinx.HLE.HOS.Services.Am long uIdLow = context.RequestData.ReadInt64(); long uIdHigh = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceAm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAm); context.ResponseData.Write(0L); @@ -90,7 +90,7 @@ namespace Ryujinx.HLE.HOS.Services.Am public long GetPseudoDeviceId(ServiceCtx context) { - Logger.PrintStub(LogClass.ServiceAm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAm); context.ResponseData.Write(0L); context.ResponseData.Write(0L); @@ -100,7 +100,7 @@ namespace Ryujinx.HLE.HOS.Services.Am public long InitializeGamePlayRecording(ServiceCtx context) { - Logger.PrintStub(LogClass.ServiceAm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAm); return 0; } @@ -109,7 +109,7 @@ namespace Ryujinx.HLE.HOS.Services.Am { int state = context.RequestData.ReadInt32(); - Logger.PrintStub(LogClass.ServiceAm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAm); return 0; } diff --git a/Ryujinx.HLE/HOS/Services/Am/IAudioController.cs b/Ryujinx.HLE/HOS/Services/Am/IAudioController.cs index a03a32663..5bb212252 100644 --- a/Ryujinx.HLE/HOS/Services/Am/IAudioController.cs +++ b/Ryujinx.HLE/HOS/Services/Am/IAudioController.cs @@ -27,7 +27,7 @@ namespace Ryujinx.HLE.HOS.Services.Am float appletVolume = context.RequestData.ReadSingle(); float libraryAppletVolume = context.RequestData.ReadSingle(); - Logger.PrintStub(LogClass.ServiceAm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAm); return 0; } @@ -36,7 +36,7 @@ namespace Ryujinx.HLE.HOS.Services.Am { context.ResponseData.Write(1f); - Logger.PrintStub(LogClass.ServiceAm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAm); return 0; } @@ -45,7 +45,7 @@ namespace Ryujinx.HLE.HOS.Services.Am { context.ResponseData.Write(1f); - Logger.PrintStub(LogClass.ServiceAm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAm); return 0; } @@ -55,7 +55,7 @@ namespace Ryujinx.HLE.HOS.Services.Am float unknown0 = context.RequestData.ReadSingle(); long unknown1 = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceAm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAm); return 0; } @@ -64,7 +64,7 @@ namespace Ryujinx.HLE.HOS.Services.Am { float unknown0 = context.RequestData.ReadSingle(); - Logger.PrintStub(LogClass.ServiceAm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAm); return 0; } diff --git a/Ryujinx.HLE/HOS/Services/Am/ICommonStateGetter.cs b/Ryujinx.HLE/HOS/Services/Am/ICommonStateGetter.cs index f143db2c2..7cd340180 100644 --- a/Ryujinx.HLE/HOS/Services/Am/ICommonStateGetter.cs +++ b/Ryujinx.HLE/HOS/Services/Am/ICommonStateGetter.cs @@ -86,7 +86,7 @@ namespace Ryujinx.HLE.HOS.Services.Am { context.ResponseData.Write((byte)0); //Unknown value. - Logger.PrintStub(LogClass.ServiceAm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAm); return 0; } @@ -115,7 +115,7 @@ namespace Ryujinx.HLE.HOS.Services.Am context.Response.HandleDesc = IpcHandleDesc.MakeCopy(handle); - Logger.PrintStub(LogClass.ServiceAm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAm); return 0; } diff --git a/Ryujinx.HLE/HOS/Services/Am/IHomeMenuFunctions.cs b/Ryujinx.HLE/HOS/Services/Am/IHomeMenuFunctions.cs index fdcd923db..e61fccb27 100644 --- a/Ryujinx.HLE/HOS/Services/Am/IHomeMenuFunctions.cs +++ b/Ryujinx.HLE/HOS/Services/Am/IHomeMenuFunctions.cs @@ -29,7 +29,7 @@ namespace Ryujinx.HLE.HOS.Services.Am public long RequestToGetForeground(ServiceCtx context) { - Logger.PrintStub(LogClass.ServiceAm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAm); return 0; } @@ -43,7 +43,7 @@ namespace Ryujinx.HLE.HOS.Services.Am context.Response.HandleDesc = IpcHandleDesc.MakeCopy(handle); - Logger.PrintStub(LogClass.ServiceAm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAm); return 0; } diff --git a/Ryujinx.HLE/HOS/Services/Am/ILibraryAppletAccessor.cs b/Ryujinx.HLE/HOS/Services/Am/ILibraryAppletAccessor.cs index faf522e41..7aead9f66 100644 --- a/Ryujinx.HLE/HOS/Services/Am/ILibraryAppletAccessor.cs +++ b/Ryujinx.HLE/HOS/Services/Am/ILibraryAppletAccessor.cs @@ -40,28 +40,28 @@ namespace Ryujinx.HLE.HOS.Services.Am context.Response.HandleDesc = IpcHandleDesc.MakeCopy(handle); - Logger.PrintStub(LogClass.ServiceAm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAm); return 0; } public long Start(ServiceCtx context) { - Logger.PrintStub(LogClass.ServiceAm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAm); return 0; } public long GetResult(ServiceCtx context) { - Logger.PrintStub(LogClass.ServiceAm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAm); return 0; } public long PushInData(ServiceCtx context) { - Logger.PrintStub(LogClass.ServiceAm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAm); return 0; } diff --git a/Ryujinx.HLE/HOS/Services/Am/ISelfController.cs b/Ryujinx.HLE/HOS/Services/Am/ISelfController.cs index e30e8d0d2..7d900d2e5 100644 --- a/Ryujinx.HLE/HOS/Services/Am/ISelfController.cs +++ b/Ryujinx.HLE/HOS/Services/Am/ISelfController.cs @@ -42,21 +42,21 @@ namespace Ryujinx.HLE.HOS.Services.Am public long Exit(ServiceCtx context) { - Logger.PrintStub(LogClass.ServiceAm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAm); return 0; } public long LockExit(ServiceCtx context) { - Logger.PrintStub(LogClass.ServiceAm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAm); return 0; } public long UnlockExit(ServiceCtx context) { - Logger.PrintStub(LogClass.ServiceAm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAm); return 0; } @@ -72,7 +72,7 @@ namespace Ryujinx.HLE.HOS.Services.Am context.Response.HandleDesc = IpcHandleDesc.MakeCopy(handle); - Logger.PrintStub(LogClass.ServiceAm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAm); return 0; } @@ -81,7 +81,7 @@ namespace Ryujinx.HLE.HOS.Services.Am { bool enable = context.RequestData.ReadByte() != 0; - Logger.PrintStub(LogClass.ServiceAm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAm); return 0; } @@ -90,7 +90,7 @@ namespace Ryujinx.HLE.HOS.Services.Am { bool enable = context.RequestData.ReadByte() != 0; - Logger.PrintStub(LogClass.ServiceAm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAm); return 0; } @@ -99,7 +99,7 @@ namespace Ryujinx.HLE.HOS.Services.Am { bool enable = context.RequestData.ReadByte() != 0; - Logger.PrintStub(LogClass.ServiceAm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAm); return 0; } @@ -110,7 +110,7 @@ namespace Ryujinx.HLE.HOS.Services.Am bool flag2 = context.RequestData.ReadByte() != 0; bool flag3 = context.RequestData.ReadByte() != 0; - Logger.PrintStub(LogClass.ServiceAm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAm); return 0; } @@ -119,7 +119,7 @@ namespace Ryujinx.HLE.HOS.Services.Am { bool enable = context.RequestData.ReadByte() != 0; - Logger.PrintStub(LogClass.ServiceAm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAm); return 0; } @@ -128,7 +128,7 @@ namespace Ryujinx.HLE.HOS.Services.Am { bool enable = context.RequestData.ReadByte() != 0; - Logger.PrintStub(LogClass.ServiceAm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAm); return 0; } @@ -137,7 +137,7 @@ namespace Ryujinx.HLE.HOS.Services.Am { int orientation = context.RequestData.ReadInt32(); - Logger.PrintStub(LogClass.ServiceAm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAm); return 0; } @@ -146,7 +146,7 @@ namespace Ryujinx.HLE.HOS.Services.Am { bool enable = context.RequestData.ReadByte() != 0; - Logger.PrintStub(LogClass.ServiceAm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAm); return 0; } @@ -156,7 +156,7 @@ namespace Ryujinx.HLE.HOS.Services.Am { _idleTimeDetectionExtension = context.RequestData.ReadInt32(); - Logger.PrintStub(LogClass.ServiceAm, $"Stubbed. IdleTimeDetectionExtension: {_idleTimeDetectionExtension}"); + Logger.PrintStub(LogClass.ServiceAm, new { _idleTimeDetectionExtension }); return 0; } @@ -166,7 +166,7 @@ namespace Ryujinx.HLE.HOS.Services.Am { context.ResponseData.Write(_idleTimeDetectionExtension); - Logger.PrintStub(LogClass.ServiceAm, $"Stubbed. IdleTimeDetectionExtension: {_idleTimeDetectionExtension}"); + Logger.PrintStub(LogClass.ServiceAm, new { _idleTimeDetectionExtension }); return 0; } diff --git a/Ryujinx.HLE/HOS/Services/Am/IWindowController.cs b/Ryujinx.HLE/HOS/Services/Am/IWindowController.cs index aca7a666e..94a53480c 100644 --- a/Ryujinx.HLE/HOS/Services/Am/IWindowController.cs +++ b/Ryujinx.HLE/HOS/Services/Am/IWindowController.cs @@ -21,7 +21,7 @@ namespace Ryujinx.HLE.HOS.Services.Am public long GetAppletResourceUserId(ServiceCtx context) { - Logger.PrintStub(LogClass.ServiceAm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAm); context.ResponseData.Write(0L); @@ -30,7 +30,7 @@ namespace Ryujinx.HLE.HOS.Services.Am public long AcquireForegroundRights(ServiceCtx context) { - Logger.PrintStub(LogClass.ServiceAm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAm); return 0; } diff --git a/Ryujinx.HLE/HOS/Services/Apm/ISession.cs b/Ryujinx.HLE/HOS/Services/Apm/ISession.cs index cef343831..faf557a0a 100644 --- a/Ryujinx.HLE/HOS/Services/Apm/ISession.cs +++ b/Ryujinx.HLE/HOS/Services/Apm/ISession.cs @@ -33,7 +33,7 @@ namespace Ryujinx.HLE.HOS.Services.Apm context.ResponseData.Write((uint)PerformanceConfiguration.PerformanceConfiguration1); - Logger.PrintStub(LogClass.ServiceApm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceApm); return 0; } diff --git a/Ryujinx.HLE/HOS/Services/Aud/AudioRenderer/IAudioRenderer.cs b/Ryujinx.HLE/HOS/Services/Aud/AudioRenderer/IAudioRenderer.cs index bc069436b..72839c2bf 100644 --- a/Ryujinx.HLE/HOS/Services/Aud/AudioRenderer/IAudioRenderer.cs +++ b/Ryujinx.HLE/HOS/Services/Aud/AudioRenderer/IAudioRenderer.cs @@ -110,7 +110,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud.AudioRenderer { context.ResponseData.Write((int)_playState); - Logger.PrintStub(LogClass.ServiceAudio, $"Stubbed. Renderer State: {Enum.GetName(typeof(PlayState), _playState)}"); + Logger.PrintStub(LogClass.ServiceAudio, new { State = Enum.GetName(typeof(PlayState), _playState) }); return 0; } @@ -249,7 +249,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud.AudioRenderer public long StartAudioRenderer(ServiceCtx context) { - Logger.PrintStub(LogClass.ServiceAudio, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAudio); _playState = PlayState.Playing; @@ -258,7 +258,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud.AudioRenderer public long StopAudioRenderer(ServiceCtx context) { - Logger.PrintStub(LogClass.ServiceAudio, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAudio); _playState = PlayState.Stopped; diff --git a/Ryujinx.HLE/HOS/Services/Aud/IAudioDevice.cs b/Ryujinx.HLE/HOS/Services/Aud/IAudioDevice.cs index 0d68fe138..4be183fab 100644 --- a/Ryujinx.HLE/HOS/Services/Aud/IAudioDevice.cs +++ b/Ryujinx.HLE/HOS/Services/Aud/IAudioDevice.cs @@ -81,7 +81,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud string deviceName = Encoding.ASCII.GetString(deviceNameBuffer); - Logger.PrintStub(LogClass.ServiceAudio, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAudio); return 0; } @@ -116,7 +116,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud context.Response.HandleDesc = IpcHandleDesc.MakeCopy(handle); - Logger.PrintStub(LogClass.ServiceAudio, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAudio); return 0; } @@ -125,7 +125,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud { context.ResponseData.Write(2); - Logger.PrintStub(LogClass.ServiceAudio, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAudio); return 0; } @@ -169,7 +169,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud string deviceName = Encoding.UTF8.GetString(deviceNameBuffer); - Logger.PrintStub(LogClass.ServiceAudio, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAudio); return 0; } @@ -178,7 +178,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud { context.ResponseData.Write(1f); - Logger.PrintStub(LogClass.ServiceAudio, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAudio); return 0; } @@ -212,7 +212,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud context.Response.HandleDesc = IpcHandleDesc.MakeCopy(handle); - Logger.PrintStub(LogClass.ServiceAudio, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAudio); return 0; } @@ -226,7 +226,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud context.Response.HandleDesc = IpcHandleDesc.MakeCopy(handle); - Logger.PrintStub(LogClass.ServiceAudio, "Stubbed."); + Logger.PrintStub(LogClass.ServiceAudio); return 0; } diff --git a/Ryujinx.HLE/HOS/Services/Aud/IAudioRendererManager.cs b/Ryujinx.HLE/HOS/Services/Aud/IAudioRendererManager.cs index a319537a9..fb1409f43 100644 --- a/Ryujinx.HLE/HOS/Services/Aud/IAudioRendererManager.cs +++ b/Ryujinx.HLE/HOS/Services/Aud/IAudioRendererManager.cs @@ -178,8 +178,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud long appletResourceUserId = context.RequestData.ReadInt64(); int revisionInfo = context.RequestData.ReadInt32(); - Logger.PrintStub(LogClass.ServiceAudio, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"RevisionInfo: {revisionInfo}"); + Logger.PrintStub(LogClass.ServiceAudio, new { appletResourceUserId, revisionInfo }); return GetAudioDeviceService(context); } diff --git a/Ryujinx.HLE/HOS/Services/Bsd/IClient.cs b/Ryujinx.HLE/HOS/Services/Bsd/IClient.cs index aac85021c..86d914d4d 100644 --- a/Ryujinx.HLE/HOS/Services/Bsd/IClient.cs +++ b/Ryujinx.HLE/HOS/Services/Bsd/IClient.cs @@ -277,7 +277,7 @@ namespace Ryujinx.HLE.HOS.Services.Bsd // bsd_error context.ResponseData.Write(0); - Logger.PrintStub(LogClass.ServiceBsd, "Stubbed."); + Logger.PrintStub(LogClass.ServiceBsd); return 0; } @@ -287,7 +287,7 @@ namespace Ryujinx.HLE.HOS.Services.Bsd { ulong unknown0 = context.RequestData.ReadUInt64(); - Logger.PrintStub(LogClass.ServiceBsd, $"Stubbed. Unknown0: {unknown0}"); + Logger.PrintStub(LogClass.ServiceBsd, new { unknown0 }); return 0; } @@ -316,8 +316,7 @@ namespace Ryujinx.HLE.HOS.Services.Bsd WriteBsdResult(context, -1, LinuxError.EOPNOTSUPP); - Logger.PrintStub(LogClass.ServiceBsd, $"Stubbed. Path: {path} - " + - $"Flags: {flags}"); + Logger.PrintStub(LogClass.ServiceBsd, new { path, flags }); return 0; } @@ -327,7 +326,7 @@ namespace Ryujinx.HLE.HOS.Services.Bsd { WriteBsdResult(context, -1, LinuxError.EOPNOTSUPP); - Logger.PrintStub(LogClass.ServiceBsd, $"Stubbed."); + Logger.PrintStub(LogClass.ServiceBsd); return 0; } @@ -462,7 +461,7 @@ namespace Ryujinx.HLE.HOS.Services.Bsd { WriteBsdResult(context, -1, LinuxError.EOPNOTSUPP); - Logger.PrintStub(LogClass.ServiceBsd, $"Stubbed."); + Logger.PrintStub(LogClass.ServiceBsd); return 0; } diff --git a/Ryujinx.HLE/HOS/Services/Friend/IFriendService.cs b/Ryujinx.HLE/HOS/Services/Friend/IFriendService.cs index 983481253..54d85ea59 100644 --- a/Ryujinx.HLE/HOS/Services/Friend/IFriendService.cs +++ b/Ryujinx.HLE/HOS/Services/Friend/IFriendService.cs @@ -46,15 +46,17 @@ namespace Ryujinx.HLE.HOS.Services.Friend // There are no friends online, so we return 0 because the nn::account::NetworkServiceAccountId array is empty. context.ResponseData.Write(0); - Logger.PrintStub(LogClass.ServiceFriend, $"Stubbed. UserId: {uuid.ToString()} - " + - $"Unknown0: {unknown0} - " + - $"PresenceStatus: {filter.PresenceStatus} - " + - $"IsFavoriteOnly: {filter.IsFavoriteOnly} - " + - $"IsSameAppPresenceOnly: {filter.IsSameAppPresenceOnly} - " + - $"IsSameAppPlayedOnly: {filter.IsSameAppPlayedOnly} - " + - $"IsArbitraryAppPlayedOnly: {filter.IsArbitraryAppPlayedOnly} - " + - $"PresenceGroupId: {filter.PresenceGroupId} - " + - $"Unknown1: {unknown1}"); + Logger.PrintStub(LogClass.ServiceFriend, new { + UserId = uuid.ToString(), + unknown0, + filter.PresenceStatus, + filter.IsFavoriteOnly, + filter.IsSameAppPresenceOnly, + filter.IsSameAppPlayedOnly, + filter.IsArbitraryAppPlayedOnly, + filter.PresenceGroupId, + unknown1 + }); return 0; } @@ -71,8 +73,7 @@ namespace Ryujinx.HLE.HOS.Services.Friend profile.OnlinePlayState = OpenCloseState.Closed; } - Logger.PrintStub(LogClass.ServiceFriend, $"Stubbed. Uuid: {uuid.ToString()} - " + - $"OnlinePlayState: {profile.OnlinePlayState}"); + Logger.PrintStub(LogClass.ServiceFriend, new { UserId = uuid.ToString(), profile.OnlinePlayState }); return 0; } @@ -91,8 +92,7 @@ namespace Ryujinx.HLE.HOS.Services.Friend //Todo: Write the buffer content. - Logger.PrintStub(LogClass.ServiceFriend, $"Stubbed. Uuid: {uuid.ToString()} - " + - $"Unknown0: {unknown0}"); + Logger.PrintStub(LogClass.ServiceFriend, new { UserId = uuid.ToString(), unknown0 }); return 0; } diff --git a/Ryujinx.HLE/HOS/Services/Hid/IHidServer.cs b/Ryujinx.HLE/HOS/Services/Hid/IHidServer.cs index cc75e99be..e5b56a609 100644 --- a/Ryujinx.HLE/HOS/Services/Hid/IHidServer.cs +++ b/Ryujinx.HLE/HOS/Services/Hid/IHidServer.cs @@ -182,7 +182,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid { long appletResourceUserId = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId }); return 0; } @@ -192,7 +192,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid { long appletResourceUserId = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId }); return 0; } @@ -202,7 +202,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid { long appletResourceUserId = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId }); return 0; } @@ -212,7 +212,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid { long appletResourceUserId = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId }); return 0; } @@ -229,7 +229,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid context.Response.HandleDesc = IpcHandleDesc.MakeCopy(_xpadIdEventHandle); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. XpadId: {xpadId}"); + Logger.PrintStub(LogClass.ServiceHid, new { xpadId }); return 0; } @@ -241,7 +241,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid context.Process.HandleTable.CloseHandle(_xpadIdEventHandle); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. XpadId: {xpadId}"); + Logger.PrintStub(LogClass.ServiceHid, new { xpadId }); return 0; } @@ -252,8 +252,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid int basicXpadId = context.RequestData.ReadInt32(); long appletResourceUserId = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"BasicXpadId: {basicXpadId}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, basicXpadId }); return 0; } @@ -264,7 +263,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid // There is any Xpad, so we return 0 and write nothing inside the type-0xa buffer. context.ResponseData.Write(0L); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed."); + Logger.PrintStub(LogClass.ServiceHid); return 0; } @@ -274,7 +273,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid { int joyXpadId = context.RequestData.ReadInt32(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. JoyXpadId: {joyXpadId}"); + Logger.PrintStub(LogClass.ServiceHid, new { joyXpadId }); return 0; } @@ -288,7 +287,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid context.Response.HandleDesc = IpcHandleDesc.MakeCopy(handle); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. JoyXpadId: {joyXpadId}"); + Logger.PrintStub(LogClass.ServiceHid, new { joyXpadId }); return 0; } @@ -299,7 +298,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid // There is any JoyXpad, so we return 0 and write nothing inside the type-0xa buffer. context.ResponseData.Write(0L); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed."); + Logger.PrintStub(LogClass.ServiceHid); return 0; } @@ -309,7 +308,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid { int basicXpadId = context.RequestData.ReadInt32(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. BasicXpadId: {basicXpadId}"); + Logger.PrintStub(LogClass.ServiceHid, new { basicXpadId }); return 0; } @@ -319,7 +318,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid { int basicXpadId = context.RequestData.ReadInt32(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. BasicXpadId: {basicXpadId}"); + Logger.PrintStub(LogClass.ServiceHid, new { basicXpadId }); return 0; } @@ -333,7 +332,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid context.Response.HandleDesc = IpcHandleDesc.MakeCopy(handle); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. BasicXpadId: {basicXpadId}"); + Logger.PrintStub(LogClass.ServiceHid, new { basicXpadId }); return 0; } @@ -343,7 +342,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid { int joyXpadId = context.RequestData.ReadInt32(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. JoyXpadId: {joyXpadId}"); + Logger.PrintStub(LogClass.ServiceHid, new { joyXpadId }); return 0; } @@ -353,7 +352,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid { int joyXpadId = context.RequestData.ReadInt32(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. JoyXpadId: {joyXpadId}"); + Logger.PrintStub(LogClass.ServiceHid, new { joyXpadId }); return 0; } @@ -367,7 +366,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid context.Response.HandleDesc = IpcHandleDesc.MakeCopy(handle); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. JoyXpadId: {joyXpadId}"); + Logger.PrintStub(LogClass.ServiceHid, new { joyXpadId }); return 0; } @@ -378,8 +377,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid int sixAxisSensorHandle = context.RequestData.ReadInt32(); long appletResourceUserId = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"SixAxisSensorHandle: {sixAxisSensorHandle}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, sixAxisSensorHandle }); return 0; } @@ -390,8 +388,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid int sixAxisSensorHandle = context.RequestData.ReadInt32(); long appletResourceUserId = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"SixAxisSensorHandle: {sixAxisSensorHandle}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, sixAxisSensorHandle }); return 0; } @@ -404,9 +401,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid context.ResponseData.Write(_sixAxisSensorFusionEnabled); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"SixAxisSensorHandle: {sixAxisSensorHandle} - " + - $"SixAxisSensorFusionEnabled: {_sixAxisSensorFusionEnabled}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, sixAxisSensorHandle, _sixAxisSensorFusionEnabled }); return 0; } @@ -418,9 +413,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid int sixAxisSensorHandle = context.RequestData.ReadInt32(); long appletResourceUserId = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"SixAxisSensorHandle: {sixAxisSensorHandle} - " + - $"SixAxisSensorFusionEnabled: {_sixAxisSensorFusionEnabled}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, sixAxisSensorHandle, _sixAxisSensorFusionEnabled }); return 0; } @@ -438,10 +431,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid long appletResourceUserId = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"SixAxisSensorHandle: {sixAxisSensorHandle} - " + - $"RevisePower: {_sensorFusionParams.RevisePower} - " + - $"ReviseRange: {_sensorFusionParams.ReviseRange}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, sixAxisSensorHandle, _sensorFusionParams.RevisePower, _sensorFusionParams.ReviseRange }); return 0; } @@ -455,10 +445,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid context.ResponseData.Write(_sensorFusionParams.RevisePower); context.ResponseData.Write(_sensorFusionParams.ReviseRange); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"SixAxisSensorHandle: {sixAxisSensorHandle} - " + - $"RevisePower: {_sensorFusionParams.RevisePower} - " + - $"ReviseRange: {_sensorFusionParams.ReviseRange}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, sixAxisSensorHandle, _sensorFusionParams.RevisePower, _sensorFusionParams.ReviseRange }); return 0; } @@ -472,10 +459,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid _sensorFusionParams.RevisePower = 0; _sensorFusionParams.ReviseRange = 0; - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"SixAxisSensorHandle: {sixAxisSensorHandle} - " + - $"RevisePower: {_sensorFusionParams.RevisePower} - " + - $"ReviseRange: {_sensorFusionParams.ReviseRange}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, sixAxisSensorHandle, _sensorFusionParams.RevisePower, _sensorFusionParams.ReviseRange }); return 0; } @@ -493,10 +477,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid long appletResourceUserId = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"SixAxisSensorHandle: {sixAxisSensorHandle} - " + - $"X: {_accelerometerParams.X} - " + - $"Y: {_accelerometerParams.Y}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, sixAxisSensorHandle, _accelerometerParams.X, _accelerometerParams.Y }); return 0; } @@ -510,10 +491,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid context.ResponseData.Write(_accelerometerParams.X); context.ResponseData.Write(_accelerometerParams.Y); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"SixAxisSensorHandle: {sixAxisSensorHandle} - " + - $"X: {_accelerometerParams.X} - " + - $"Y: {_accelerometerParams.Y}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, sixAxisSensorHandle, _accelerometerParams.X, _accelerometerParams.Y }); return 0; } @@ -527,10 +505,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid _accelerometerParams.X = 0; _accelerometerParams.Y = 0; - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"SixAxisSensorHandle: {sixAxisSensorHandle} - " + - $"X: {_accelerometerParams.X} - " + - $"Y: {_accelerometerParams.Y}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, sixAxisSensorHandle, _accelerometerParams.X, _accelerometerParams.Y }); return 0; } @@ -542,9 +517,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid _accelerometerPlayMode = context.RequestData.ReadUInt32(); long appletResourceUserId = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"SixAxisSensorHandle: {sixAxisSensorHandle} - " + - $"PlayMode: {_accelerometerPlayMode}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, sixAxisSensorHandle, _accelerometerPlayMode }); return 0; } @@ -557,9 +530,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid context.ResponseData.Write(_accelerometerPlayMode); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"SixAxisSensorHandle: {sixAxisSensorHandle} - " + - $"PlayMode: {_accelerometerPlayMode}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, sixAxisSensorHandle, _accelerometerPlayMode }); return 0; } @@ -572,9 +543,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid _accelerometerPlayMode = 0; - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"SixAxisSensorHandle: {sixAxisSensorHandle} - " + - $"PlayMode: {_accelerometerPlayMode}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, sixAxisSensorHandle, _accelerometerPlayMode }); return 0; } @@ -586,9 +555,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid _gyroscopeZeroDriftMode = (HidGyroscopeZeroDriftMode)context.RequestData.ReadInt32(); long appletResourceUserId = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"SixAxisSensorHandle: {sixAxisSensorHandle} - " + - $"GyroscopeZeroDriftMode: {_gyroscopeZeroDriftMode}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, sixAxisSensorHandle, _gyroscopeZeroDriftMode }); return 0; } @@ -601,9 +568,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid context.ResponseData.Write((int)_gyroscopeZeroDriftMode); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"SixAxisSensorHandle: {sixAxisSensorHandle} - " + - $"GyroscopeZeroDriftMode: {_gyroscopeZeroDriftMode}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, sixAxisSensorHandle, _gyroscopeZeroDriftMode }); return 0; } @@ -616,9 +581,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid _gyroscopeZeroDriftMode = HidGyroscopeZeroDriftMode.Standard; - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"SixAxisSensorHandle: {sixAxisSensorHandle} - " + - $"GyroscopeZeroDriftMode: {_gyroscopeZeroDriftMode}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, sixAxisSensorHandle, _gyroscopeZeroDriftMode }); return 0; } @@ -633,9 +596,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid context.ResponseData.Write(isAtRest); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"SixAxisSensorHandle: {sixAxisSensorHandle} - " + - $"IsAtRest: {isAtRest}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, sixAxisSensorHandle, isAtRest }); return 0; } @@ -646,8 +607,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid long appletResourceUserId = context.RequestData.ReadInt64(); int unknown0 = context.RequestData.ReadInt32(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"Unknown0: {unknown0}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, unknown0 }); return 0; } @@ -660,8 +620,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid long appletResourceUserId = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"NpadStyleSet: {_npadStyleSet}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, _npadStyleSet }); _npadStyleSetUpdateEvent.ReadableEvent.Signal(); @@ -675,8 +634,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid context.ResponseData.Write((int)_npadStyleSet); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"NpadStyleSet: {_npadStyleSet}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, _npadStyleSet }); return 0; } @@ -687,8 +645,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid long appletResourceUserId = context.RequestData.ReadInt64(); HidControllerId npadIdType = (HidControllerId)context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"NpadIdType: {npadIdType}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, npadIdType }); return 0; } @@ -698,7 +655,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid { long appletResourceUserId = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId }); return 0; } @@ -708,7 +665,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid { long appletResourceUserId = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId }); return 0; } @@ -727,9 +684,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid context.Response.HandleDesc = IpcHandleDesc.MakeCopy(handle); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"NpadId: {npadId} - " + - $"NpadStyleSet: {npadStyleSet}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, npadId, npadStyleSet }); return 0; } @@ -740,8 +695,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid long appletResourceUserId = context.RequestData.ReadInt64(); int npadIdType = context.RequestData.ReadInt32(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"NpadIdType: {npadIdType}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, npadIdType }); return 0; } @@ -755,7 +709,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid context.ResponseData.Write(ledPattern); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. NpadId: {npadId} - Pattern: {ledPattern}"); + Logger.PrintStub(LogClass.ServiceHid, new { npadId, ledPattern }); return 0; } @@ -766,7 +720,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid long appletResourceUserId = context.RequestData.ReadInt64(); int unknown = context.RequestData.ReadInt32(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - Unknown: {unknown}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, unknown }); return 0; } @@ -777,8 +731,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid long appletResourceUserId = context.RequestData.ReadInt64(); _npadJoyHoldType = (HidNpadJoyHoldType)context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"NpadJoyHoldType: {_npadJoyHoldType}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, _npadJoyHoldType }); return 0; } @@ -790,8 +743,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid context.ResponseData.Write((long)_npadJoyHoldType); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"NpadJoyHoldTypeValue: {_npadJoyHoldType}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, _npadJoyHoldType }); return 0; } @@ -804,9 +756,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid _npadJoyAssignmentMode = HidNpadJoyAssignmentMode.Single; - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"HidControllerId: {hidControllerId} - " + - $"NpadJoyAssignmentModeValue: {_npadJoyAssignmentMode}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, hidControllerId, _npadJoyAssignmentMode }); return 0; } @@ -820,10 +770,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid _npadJoyAssignmentMode = HidNpadJoyAssignmentMode.Single; - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"HidControllerId: {hidControllerId} - " + - $"HidNpadJoyDeviceType: {hidNpadJoyDeviceType} - " + - $"NpadJoyAssignmentModeValue: {_npadJoyAssignmentMode}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, hidControllerId, hidNpadJoyDeviceType, _npadJoyAssignmentMode }); return 0; } @@ -836,9 +783,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid _npadJoyAssignmentMode = HidNpadJoyAssignmentMode.Dual; - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"HidControllerId: {hidControllerId} - " + - $"NpadJoyAssignmentModeValue: {_npadJoyAssignmentMode}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, hidControllerId, _npadJoyAssignmentMode }); return 0; } @@ -850,9 +795,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid long singleJoyId1 = context.RequestData.ReadInt32(); long appletResourceUserId = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"SingleJoyId0: {singleJoyId0} - " + - $"SingleJoyId1: {singleJoyId1}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, singleJoyId0, singleJoyId1 }); return 0; } @@ -862,7 +805,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid { long appletResourceUserId = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId }); return 0; } @@ -872,7 +815,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid { long appletResourceUserId = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId }); return 0; } @@ -883,8 +826,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid long appletResourceUserId = context.RequestData.ReadInt64(); _npadHandheldActivationMode = (HidNpadHandheldActivationMode)context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"NpadHandheldActivationMode: {_npadHandheldActivationMode}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, _npadHandheldActivationMode }); return 0; } @@ -896,8 +838,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid context.ResponseData.Write((long)_npadHandheldActivationMode); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"NpadHandheldActivationMode: {_npadHandheldActivationMode}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, _npadHandheldActivationMode }); return 0; } @@ -909,9 +850,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid int newNpadAssignment = context.RequestData.ReadInt32(); long appletResourceUserId = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"OldNpadAssignment: {oldNpadAssignment} - " + - $"NewNpadAssignment: {newNpadAssignment}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, oldNpadAssignment, newNpadAssignment }); return 0; } @@ -924,9 +863,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid context.ResponseData.Write(_unintendedHomeButtonInputProtectionEnabled); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"Unknown0: {unknown0} - " + - $"UnintendedHomeButtonInputProtectionEnabled: {_unintendedHomeButtonInputProtectionEnabled}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, unknown0, _unintendedHomeButtonInputProtectionEnabled }); return 0; } @@ -938,9 +875,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid uint unknown0 = context.RequestData.ReadUInt32(); long appletResourceUserId = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"Unknown0: {unknown0} - " + - $"UnintendedHomeButtonInputProtectionEnable: {_unintendedHomeButtonInputProtectionEnabled}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, unknown0, _unintendedHomeButtonInputProtectionEnabled }); return 0; } @@ -957,12 +892,14 @@ namespace Ryujinx.HLE.HOS.Services.Hid context.ResponseData.Write(0); //Unknown0 context.ResponseData.Write(0); //Unknown1 - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"HidControllerId: {hidControllerId} - " + - $"HidNpadJoyDeviceType: {hidNpadJoyDeviceType} - " + - $"NpadJoyAssignmentModeValue: {_npadJoyAssignmentMode} - " + - $"Unknown0: 0 - " + - $"Unknown1: 0"); + Logger.PrintStub(LogClass.ServiceHid, new { + appletResourceUserId, + hidControllerId, + hidNpadJoyDeviceType, + _npadJoyAssignmentMode, + Unknown0 = 0, + Unknown1 = 0 + }); return 0; } @@ -981,9 +918,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid context.ResponseData.Write((int)deviceInfo.DeviceType); context.ResponseData.Write((int)deviceInfo.Position); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. VibrationDeviceHandle: {vibrationDeviceHandle} - " + - $"DeviceType: {deviceInfo.DeviceType} - " + - $"Position: {deviceInfo.Position}"); + Logger.PrintStub(LogClass.ServiceHid, new { vibrationDeviceHandle, deviceInfo.DeviceType, deviceInfo.Position }); return 0; } @@ -1003,12 +938,14 @@ namespace Ryujinx.HLE.HOS.Services.Hid long appletResourceUserId = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"VibrationDeviceHandle: {vibrationDeviceHandle} - " + - $"AmplitudeLow: {_vibrationValue.AmplitudeLow} - " + - $"FrequencyLow: {_vibrationValue.FrequencyLow} - " + - $"AmplitudeHigh: {_vibrationValue.AmplitudeHigh} - " + - $"FrequencyHigh: {_vibrationValue.FrequencyHigh}"); + Logger.PrintStub(LogClass.ServiceHid, new { + appletResourceUserId, + vibrationDeviceHandle, + _vibrationValue.AmplitudeLow, + _vibrationValue.FrequencyLow, + _vibrationValue.AmplitudeHigh, + _vibrationValue.FrequencyHigh + }); return 0; } @@ -1024,12 +961,14 @@ namespace Ryujinx.HLE.HOS.Services.Hid context.ResponseData.Write(_vibrationValue.AmplitudeHigh); context.ResponseData.Write(_vibrationValue.FrequencyHigh); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"VibrationDeviceHandle: {vibrationDeviceHandle} - " + - $"AmplitudeLow: {_vibrationValue.AmplitudeLow} - " + - $"FrequencyLow: {_vibrationValue.FrequencyLow} - " + - $"AmplitudeHigh: {_vibrationValue.AmplitudeHigh} - " + - $"FrequencyHigh: {_vibrationValue.FrequencyHigh}"); + Logger.PrintStub(LogClass.ServiceHid, new { + appletResourceUserId, + vibrationDeviceHandle, + _vibrationValue.AmplitudeLow, + _vibrationValue.FrequencyLow, + _vibrationValue.AmplitudeHigh, + _vibrationValue.FrequencyHigh + }); return 0; } @@ -1047,7 +986,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid { _vibrationPermitted = context.RequestData.ReadBoolean(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. VibrationPermitted: {_vibrationPermitted}"); + Logger.PrintStub(LogClass.ServiceHid, new { _vibrationPermitted }); return 0; } @@ -1057,7 +996,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid { context.ResponseData.Write(_vibrationPermitted); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. VibrationPermitted: {_vibrationPermitted}"); + Logger.PrintStub(LogClass.ServiceHid, new { _vibrationPermitted }); return 0; } @@ -1077,9 +1016,11 @@ namespace Ryujinx.HLE.HOS.Services.Hid //Todo: Read all handles and values from buffer. - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"VibrationDeviceHandleBufferLength: {vibrationDeviceHandleBuffer.Length} - " + - $"VibrationValueBufferLength: {vibrationValueBuffer.Length}"); + Logger.PrintStub(LogClass.ServiceHid, new { + appletResourceUserId, + VibrationDeviceHandleBufferLength = vibrationDeviceHandleBuffer.Length, + VibrationValueBufferLength = vibrationValueBuffer.Length + }); return 0; } @@ -1091,9 +1032,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid long vibrationGcErmCommand = context.RequestData.ReadInt64(); long appletResourceUserId = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"VibrationDeviceHandle: {vibrationDeviceHandle} - " + - $"VibrationGcErmCommand: {vibrationGcErmCommand}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, vibrationDeviceHandle, vibrationGcErmCommand }); return 0; } @@ -1106,9 +1045,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid context.ResponseData.Write(_vibrationGcErmCommand); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"VibrationDeviceHandle: {vibrationDeviceHandle} - " + - $"VibrationGcErmCommand: {_vibrationGcErmCommand}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, vibrationDeviceHandle, _vibrationGcErmCommand }); return 0; } @@ -1118,7 +1055,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid { long appletResourceUserId = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId }); return 0; } @@ -1126,7 +1063,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid // EndPermitVibrationSession() public long EndPermitVibrationSession(ServiceCtx context) { - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed."); + Logger.PrintStub(LogClass.ServiceHid); return 0; } @@ -1136,7 +1073,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid { long appletResourceUserId = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId }); return 0; } @@ -1147,8 +1084,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid int consoleSixAxisSensorHandle = context.RequestData.ReadInt32(); long appletResourceUserId = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"ConsoleSixAxisSensorHandle: {consoleSixAxisSensorHandle}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, consoleSixAxisSensorHandle }); return 0; } @@ -1159,8 +1095,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid int consoleSixAxisSensorHandle = context.RequestData.ReadInt32(); long appletResourceUserId = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"ConsoleSixAxisSensorHandle: {consoleSixAxisSensorHandle}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, consoleSixAxisSensorHandle }); return 0; } @@ -1170,7 +1105,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid { long appletResourceUserId = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId }); return 0; } @@ -1180,7 +1115,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid { long appletResourceUserId = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId }); return 0; } @@ -1190,7 +1125,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid { long appletResourceUserId = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId }); return 0; } @@ -1204,9 +1139,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid // Todo: Determine if array is a buffer or not... - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"Counter0: {counter0} - " + - $"Counter1: {counter1}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, counter0, counter1 }); return 0; } @@ -1216,7 +1149,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid { long appletResourceUserId = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId }); return 0; } @@ -1227,8 +1160,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid _sevenSixAxisSensorFusionStrength = context.RequestData.ReadSingle(); long appletResourceUserId = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"SevenSixAxisSensorFusionStrength: {_sevenSixAxisSensorFusionStrength}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, _sevenSixAxisSensorFusionStrength }); return 0; } @@ -1240,8 +1172,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid context.ResponseData.Write(_sevenSixAxisSensorFusionStrength); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"SevenSixAxisSensorFusionStrength: {_sevenSixAxisSensorFusionStrength}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, _sevenSixAxisSensorFusionStrength }); return 0; } @@ -1251,7 +1182,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid { context.ResponseData.Write(_usbFullKeyControllerEnabled); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. UsbFullKeyControllerEnabled: {_usbFullKeyControllerEnabled}"); + Logger.PrintStub(LogClass.ServiceHid, new { _usbFullKeyControllerEnabled }); return 0; } @@ -1261,7 +1192,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid { _usbFullKeyControllerEnabled = context.RequestData.ReadBoolean(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. UsbFullKeyControllerEnabled: {_usbFullKeyControllerEnabled}"); + Logger.PrintStub(LogClass.ServiceHid, new { _usbFullKeyControllerEnabled }); return 0; } @@ -1273,7 +1204,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid context.ResponseData.Write(true); //FullKeyController is always connected ? - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. Unknown0: {unknown0} - Connected: true"); + Logger.PrintStub(LogClass.ServiceHid, new { unknown0, Connected = true }); return 0; } @@ -1285,7 +1216,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid context.ResponseData.Write(true); //Npad always got a battery ? - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. NpadId: {npadId} - HasBattery: true"); + Logger.PrintStub(LogClass.ServiceHid, new { npadId, HasBattery = true }); return 0; } @@ -1298,7 +1229,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid context.ResponseData.Write(true); //Npad always got a left battery ? context.ResponseData.Write(true); //Npad always got a right battery ? - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. NpadId: {npadId} - HasLeftBattery: true - HasRightBattery: true"); + Logger.PrintStub(LogClass.ServiceHid, new { npadId, HasLeftBattery = true, HasRightBattery = true }); return 0; } @@ -1310,7 +1241,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid context.ResponseData.Write((byte)0); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. NpadId: {npadId} - NpadInterfaceType: 0"); + Logger.PrintStub(LogClass.ServiceHid, new { npadId, NpadInterfaceType = 0 }); return 0; } @@ -1323,9 +1254,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid context.ResponseData.Write((byte)0); context.ResponseData.Write((byte)0); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. NpadId: {npadId} - " + - $"LeftInterfaceType: 0 - " + - $"RightInterfaceType: 0"); + Logger.PrintStub(LogClass.ServiceHid, new { npadId, LeftInterfaceType = 0, RightInterfaceType = 0 }); return 0; } @@ -1340,9 +1269,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid context.ResponseData.Write(palmaConnectionHandle); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"Unknown0: {unknown0} - " + - $"PalmaConnectionHandle: {palmaConnectionHandle}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId , unknown0, palmaConnectionHandle }); return 0; } @@ -1352,7 +1279,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid { int palmaConnectionHandle = context.RequestData.ReadInt32(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. PalmaConnectionHandle: {palmaConnectionHandle}"); + Logger.PrintStub(LogClass.ServiceHid, new { palmaConnectionHandle }); _palmaOperationCompleteEvent.ReadableEvent.Signal(); @@ -1371,7 +1298,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid context.Response.HandleDesc = IpcHandleDesc.MakeCopy(handle); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. PalmaConnectionHandle: {palmaConnectionHandle}"); + Logger.PrintStub(LogClass.ServiceHid, new { palmaConnectionHandle }); return 0; } @@ -1385,8 +1312,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid context.ResponseData.Write(unknown0); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. PalmaConnectionHandle: {palmaConnectionHandle} - " + - $"Unknown0: {unknown0}"); + Logger.PrintStub(LogClass.ServiceHid, new { palmaConnectionHandle, unknown0 }); return 0; } @@ -1397,8 +1323,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid int palmaConnectionHandle = context.RequestData.ReadInt32(); long unknown0 = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. PalmaConnectionHandle: {palmaConnectionHandle} - " + - $"Unknown0: {unknown0}"); + Logger.PrintStub(LogClass.ServiceHid, new { palmaConnectionHandle, unknown0 }); _palmaOperationCompleteEvent.ReadableEvent.Signal(); @@ -1411,8 +1336,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid int palmaConnectionHandle = context.RequestData.ReadInt32(); long frModeType = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. PalmaConnectionHandle: {palmaConnectionHandle} - " + - $"FrModeType: {frModeType}"); + Logger.PrintStub(LogClass.ServiceHid, new { palmaConnectionHandle, frModeType }); _palmaOperationCompleteEvent.ReadableEvent.Signal(); @@ -1424,7 +1348,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid { int palmaConnectionHandle = context.RequestData.ReadInt32(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. PalmaConnectionHandle: {palmaConnectionHandle}"); + Logger.PrintStub(LogClass.ServiceHid, new { palmaConnectionHandle }); return 0; } @@ -1435,8 +1359,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid int palmaConnectionHandle = context.RequestData.ReadInt32(); bool enabledPalmaStep = context.RequestData.ReadBoolean(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. PalmaConnectionHandle: {palmaConnectionHandle} - " + - $"EnabledPalmaStep: {enabledPalmaStep}"); + Logger.PrintStub(LogClass.ServiceHid, new { palmaConnectionHandle, enabledPalmaStep }); _palmaOperationCompleteEvent.ReadableEvent.Signal(); @@ -1448,7 +1371,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid { int palmaConnectionHandle = context.RequestData.ReadInt32(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. PalmaConnectionHandle: {palmaConnectionHandle}"); + Logger.PrintStub(LogClass.ServiceHid, new { palmaConnectionHandle }); _palmaOperationCompleteEvent.ReadableEvent.Signal(); @@ -1460,7 +1383,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid { int palmaConnectionHandle = context.RequestData.ReadInt32(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. PalmaConnectionHandle: {palmaConnectionHandle}"); + Logger.PrintStub(LogClass.ServiceHid, new { palmaConnectionHandle }); _palmaOperationCompleteEvent.ReadableEvent.Signal(); @@ -1474,9 +1397,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid long unknown0 = context.RequestData.ReadInt64(); long unknown1 = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. PalmaConnectionHandle: {palmaConnectionHandle} - " + - $"Unknown0: {unknown0} - " + - $"Unknown1: {unknown1}"); + Logger.PrintStub(LogClass.ServiceHid, new { palmaConnectionHandle, unknown0, unknown1 }); return 0; } @@ -1489,9 +1410,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid long unknown1 = context.RequestData.ReadInt64(); // nn::hid::PalmaApplicationSectionAccessBuffer cast is unknown - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. PalmaConnectionHandle: {palmaConnectionHandle} - " + - $"Unknown0: {unknown0} - " + - $"Unknown1: {unknown1}"); + Logger.PrintStub(LogClass.ServiceHid, new { palmaConnectionHandle, unknown0, unknown1 }); _palmaOperationCompleteEvent.ReadableEvent.Signal(); @@ -1503,7 +1422,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid { int palmaConnectionHandle = context.RequestData.ReadInt32(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. PalmaConnectionHandle: {palmaConnectionHandle}"); + Logger.PrintStub(LogClass.ServiceHid, new { palmaConnectionHandle }); return 0; } @@ -1513,7 +1432,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid { int palmaConnectionHandle = context.RequestData.ReadInt32(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. PalmaConnectionHandle: {palmaConnectionHandle}"); + Logger.PrintStub(LogClass.ServiceHid, new { palmaConnectionHandle }); return 0; } @@ -1524,8 +1443,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid _npadCommunicationMode = context.RequestData.ReadInt64(); long appletResourceUserId = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. AppletResourceUserId: {appletResourceUserId} - " + - $"NpadCommunicationMode: {_npadCommunicationMode}"); + Logger.PrintStub(LogClass.ServiceHid, new { appletResourceUserId, _npadCommunicationMode }); return 0; } @@ -1535,7 +1453,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid { context.ResponseData.Write(_npadCommunicationMode); - Logger.PrintStub(LogClass.ServiceHid, $"Stubbed. CommunicationMode: {_npadCommunicationMode}"); + Logger.PrintStub(LogClass.ServiceHid, new { _npadCommunicationMode }); return 0; } diff --git a/Ryujinx.HLE/HOS/Services/IpcService.cs b/Ryujinx.HLE/HOS/Services/IpcService.cs index 8d2036ea0..5c7fa18d1 100644 --- a/Ryujinx.HLE/HOS/Services/IpcService.cs +++ b/Ryujinx.HLE/HOS/Services/IpcService.cs @@ -1,4 +1,5 @@ using Ryujinx.Common.Logging; +using Ryujinx.HLE.Exceptions; using Ryujinx.HLE.HOS.Ipc; using Ryujinx.HLE.HOS.Kernel.Common; using Ryujinx.HLE.HOS.Kernel.Ipc; @@ -117,7 +118,7 @@ namespace Ryujinx.HLE.HOS.Services { string dbgMessage = $"{context.Session.ServiceName} {service.GetType().Name}: {commandId}"; - throw new NotImplementedException(dbgMessage); + throw new ServiceNotImplementedException(context, dbgMessage); } } diff --git a/Ryujinx.HLE/HOS/Services/Irs/IIrSensorServer.cs b/Ryujinx.HLE/HOS/Services/Irs/IIrSensorServer.cs index d6683877f..e6521c041 100644 --- a/Ryujinx.HLE/HOS/Services/Irs/IIrSensorServer.cs +++ b/Ryujinx.HLE/HOS/Services/Irs/IIrSensorServer.cs @@ -26,7 +26,7 @@ namespace Ryujinx.HLE.HOS.Services.Irs { long appletResourceUserId = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceIrs, $"Stubbed. AppletResourceUserId: {appletResourceUserId}"); + Logger.PrintStub(LogClass.ServiceIrs, new { appletResourceUserId }); return 0; } @@ -36,7 +36,7 @@ namespace Ryujinx.HLE.HOS.Services.Irs { long appletResourceUserId = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceIrs, $"Stubbed. AppletResourceUserId: {appletResourceUserId}"); + Logger.PrintStub(LogClass.ServiceIrs, new { appletResourceUserId }); return 0; } diff --git a/Ryujinx.HLE/HOS/Services/Mm/IRequest.cs b/Ryujinx.HLE/HOS/Services/Mm/IRequest.cs index 9b051de01..932e5b0d6 100644 --- a/Ryujinx.HLE/HOS/Services/Mm/IRequest.cs +++ b/Ryujinx.HLE/HOS/Services/Mm/IRequest.cs @@ -32,8 +32,7 @@ namespace Ryujinx.HLE.HOS.Services.Mm int unknown1 = context.RequestData.ReadInt32(); int unknown2 = context.RequestData.ReadInt32(); - Logger.PrintStub(LogClass.ServiceMm, $"Stubbed. Unknown0: {unknown0} - " + - $"Unknown1: {unknown1} - Unknown2: {unknown2}"); + Logger.PrintStub(LogClass.ServiceMm, new { unknown0, unknown1, unknown2 }); return 0; } @@ -43,7 +42,7 @@ namespace Ryujinx.HLE.HOS.Services.Mm { context.Device.Gpu.UninitializeVideoDecoder(); - Logger.PrintStub(LogClass.ServiceMm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceMm); return 0; } @@ -55,8 +54,7 @@ namespace Ryujinx.HLE.HOS.Services.Mm int unknown1 = context.RequestData.ReadInt32(); int unknown2 = context.RequestData.ReadInt32(); - Logger.PrintStub(LogClass.ServiceMm, $"Stubbed. Unknown0: {unknown0} - " + - $"Unknown1: {unknown1} - Unknown2: {unknown2}"); + Logger.PrintStub(LogClass.ServiceMm, new { unknown0, unknown1, unknown2 }); return 0; } @@ -65,7 +63,7 @@ namespace Ryujinx.HLE.HOS.Services.Mm { int unknown0 = context.RequestData.ReadInt32(); - Logger.PrintStub(LogClass.ServiceMm, $"Stubbed. Unknown0: {unknown0}"); + Logger.PrintStub(LogClass.ServiceMm, new { unknown0 }); context.ResponseData.Write(0); @@ -75,7 +73,7 @@ namespace Ryujinx.HLE.HOS.Services.Mm // Initialize() public long Initialize(ServiceCtx context) { - Logger.PrintStub(LogClass.ServiceMm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceMm); return 0; } @@ -85,7 +83,7 @@ namespace Ryujinx.HLE.HOS.Services.Mm { context.Device.Gpu.UninitializeVideoDecoder(); - Logger.PrintStub(LogClass.ServiceMm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceMm); return 0; } @@ -97,8 +95,7 @@ namespace Ryujinx.HLE.HOS.Services.Mm int unknown1 = context.RequestData.ReadInt32(); int unknown2 = context.RequestData.ReadInt32(); - Logger.PrintStub(LogClass.ServiceMm, $"Stubbed. Unknown0: {unknown0} - " + - $"Unknown1: {unknown1} - Unknown2: {unknown2}"); + Logger.PrintStub(LogClass.ServiceMm, new { unknown0, unknown1, unknown2 }); return 0; } @@ -108,7 +105,7 @@ namespace Ryujinx.HLE.HOS.Services.Mm { int unknown0 = context.RequestData.ReadInt32(); - Logger.PrintStub(LogClass.ServiceMm, $"Stubbed. Unknown0: {unknown0}"); + Logger.PrintStub(LogClass.ServiceMm, new { unknown0 }); context.ResponseData.Write(0); diff --git a/Ryujinx.HLE/HOS/Services/Nfp/IUser.cs b/Ryujinx.HLE/HOS/Services/Nfp/IUser.cs index 42ef48297..66bff1a7e 100644 --- a/Ryujinx.HLE/HOS/Services/Nfp/IUser.cs +++ b/Ryujinx.HLE/HOS/Services/Nfp/IUser.cs @@ -46,7 +46,7 @@ namespace Ryujinx.HLE.HOS.Services.Nfp public long Initialize(ServiceCtx context) { - Logger.PrintStub(LogClass.ServiceNfp, "Stubbed."); + Logger.PrintStub(LogClass.ServiceNfp); _state = State.Initialized; @@ -55,7 +55,7 @@ namespace Ryujinx.HLE.HOS.Services.Nfp public long AttachActivateEvent(ServiceCtx context) { - Logger.PrintStub(LogClass.ServiceNfp, "Stubbed."); + Logger.PrintStub(LogClass.ServiceNfp); if (context.Process.HandleTable.GenerateHandle(_activateEvent.ReadableEvent, out int handle) != KernelResult.Success) { @@ -69,7 +69,7 @@ namespace Ryujinx.HLE.HOS.Services.Nfp public long AttachDeactivateEvent(ServiceCtx context) { - Logger.PrintStub(LogClass.ServiceNfp, "Stubbed."); + Logger.PrintStub(LogClass.ServiceNfp); if (context.Process.HandleTable.GenerateHandle(_deactivateEvent.ReadableEvent, out int handle) != KernelResult.Success) { @@ -85,7 +85,7 @@ namespace Ryujinx.HLE.HOS.Services.Nfp { context.ResponseData.Write((int)_state); - Logger.PrintStub(LogClass.ServiceNfp, "Stubbed."); + Logger.PrintStub(LogClass.ServiceNfp); return 0; } @@ -94,7 +94,7 @@ namespace Ryujinx.HLE.HOS.Services.Nfp { context.ResponseData.Write((int)_deviceState); - Logger.PrintStub(LogClass.ServiceNfp, "Stubbed."); + Logger.PrintStub(LogClass.ServiceNfp); return 0; } @@ -103,14 +103,14 @@ namespace Ryujinx.HLE.HOS.Services.Nfp { context.ResponseData.Write((int)NpadId); - Logger.PrintStub(LogClass.ServiceNfp, "Stubbed."); + Logger.PrintStub(LogClass.ServiceNfp); return 0; } public long AttachAvailabilityChangeEvent(ServiceCtx context) { - Logger.PrintStub(LogClass.ServiceNfp, "Stubbed."); + Logger.PrintStub(LogClass.ServiceNfp); if (context.Process.HandleTable.GenerateHandle(_availabilityChangeEvent.ReadableEvent, out int handle) != KernelResult.Success) { diff --git a/Ryujinx.HLE/HOS/Services/Nifm/IGeneralService.cs b/Ryujinx.HLE/HOS/Services/Nifm/IGeneralService.cs index 4b87c2c73..636e9384a 100644 --- a/Ryujinx.HLE/HOS/Services/Nifm/IGeneralService.cs +++ b/Ryujinx.HLE/HOS/Services/Nifm/IGeneralService.cs @@ -32,7 +32,7 @@ namespace Ryujinx.HLE.HOS.Services.Nifm MakeObject(context, new IRequest(context.Device.System)); - Logger.PrintStub(LogClass.ServiceNifm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceNifm); return 0; } diff --git a/Ryujinx.HLE/HOS/Services/Nifm/IRequest.cs b/Ryujinx.HLE/HOS/Services/Nifm/IRequest.cs index d2c646be9..b5691a435 100644 --- a/Ryujinx.HLE/HOS/Services/Nifm/IRequest.cs +++ b/Ryujinx.HLE/HOS/Services/Nifm/IRequest.cs @@ -36,14 +36,14 @@ namespace Ryujinx.HLE.HOS.Services.Nifm { context.ResponseData.Write(1); - Logger.PrintStub(LogClass.ServiceNifm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceNifm); return 0; } public long GetResult(ServiceCtx context) { - Logger.PrintStub(LogClass.ServiceNifm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceNifm); return 0; } @@ -67,21 +67,21 @@ namespace Ryujinx.HLE.HOS.Services.Nifm public long Cancel(ServiceCtx context) { - Logger.PrintStub(LogClass.ServiceNifm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceNifm); return 0; } public long Submit(ServiceCtx context) { - Logger.PrintStub(LogClass.ServiceNifm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceNifm); return 0; } public long SetConnectionConfirmationOption(ServiceCtx context) { - Logger.PrintStub(LogClass.ServiceNifm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceNifm); return 0; } diff --git a/Ryujinx.HLE/HOS/Services/Ns/IAddOnContentManager.cs b/Ryujinx.HLE/HOS/Services/Ns/IAddOnContentManager.cs index 8bbd0deac..94c0e8103 100644 --- a/Ryujinx.HLE/HOS/Services/Ns/IAddOnContentManager.cs +++ b/Ryujinx.HLE/HOS/Services/Ns/IAddOnContentManager.cs @@ -23,14 +23,14 @@ namespace Ryujinx.HLE.HOS.Services.Ns { context.ResponseData.Write(0); - Logger.PrintStub(LogClass.ServiceNs, "Stubbed."); + Logger.PrintStub(LogClass.ServiceNs); return 0; } public static long ListAddOnContent(ServiceCtx context) { - Logger.PrintStub(LogClass.ServiceNs, "Stubbed."); + Logger.PrintStub(LogClass.ServiceNs); //TODO: This is supposed to write a u32 array aswell. //It's unknown what it contains. diff --git a/Ryujinx.HLE/HOS/Services/Nv/INvDrvServices.cs b/Ryujinx.HLE/HOS/Services/Nv/INvDrvServices.cs index 3a00f5145..d93372e22 100644 --- a/Ryujinx.HLE/HOS/Services/Nv/INvDrvServices.cs +++ b/Ryujinx.HLE/HOS/Services/Nv/INvDrvServices.cs @@ -150,7 +150,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv public long FinishInitialize(ServiceCtx context) { - Logger.PrintStub(LogClass.ServiceNv, "Stubbed."); + Logger.PrintStub(LogClass.ServiceNv); return 0; } diff --git a/Ryujinx.HLE/HOS/Services/Nv/NvGpuAS/NvGpuASIoctl.cs b/Ryujinx.HLE/HOS/Services/Nv/NvGpuAS/NvGpuASIoctl.cs index 2a5f1b180..577283821 100644 --- a/Ryujinx.HLE/HOS/Services/Nv/NvGpuAS/NvGpuASIoctl.cs +++ b/Ryujinx.HLE/HOS/Services/Nv/NvGpuAS/NvGpuASIoctl.cs @@ -43,7 +43,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvGpuAS long inputPosition = context.Request.GetBufferType0x21().Position; long outputPosition = context.Request.GetBufferType0x22().Position; - Logger.PrintStub(LogClass.ServiceNv, "Stubbed."); + Logger.PrintStub(LogClass.ServiceNv); return NvResult.Success; } @@ -266,7 +266,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvGpuAS long inputPosition = context.Request.GetBufferType0x21().Position; long outputPosition = context.Request.GetBufferType0x22().Position; - Logger.PrintStub(LogClass.ServiceNv, "Stubbed."); + Logger.PrintStub(LogClass.ServiceNv); return NvResult.Success; } @@ -276,7 +276,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvGpuAS long inputPosition = context.Request.GetBufferType0x21().Position; long outputPosition = context.Request.GetBufferType0x22().Position; - Logger.PrintStub(LogClass.ServiceNv, "Stubbed."); + Logger.PrintStub(LogClass.ServiceNv); return NvResult.Success; } diff --git a/Ryujinx.HLE/HOS/Services/Nv/NvGpuGpu/NvGpuGpuIoctl.cs b/Ryujinx.HLE/HOS/Services/Nv/NvGpuGpu/NvGpuGpuIoctl.cs index 5680fb8eb..4f276d5d9 100644 --- a/Ryujinx.HLE/HOS/Services/Nv/NvGpuGpu/NvGpuGpuIoctl.cs +++ b/Ryujinx.HLE/HOS/Services/Nv/NvGpuGpu/NvGpuGpuIoctl.cs @@ -46,7 +46,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvGpuGpu MemoryHelper.Write(context.Memory, outputPosition, args); - Logger.PrintStub(LogClass.ServiceNv, "Stubbed."); + Logger.PrintStub(LogClass.ServiceNv); return NvResult.Success; } @@ -70,7 +70,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvGpuGpu MemoryHelper.Write(context.Memory, outputPosition, args); - Logger.PrintStub(LogClass.ServiceNv, "Stubbed."); + Logger.PrintStub(LogClass.ServiceNv); return NvResult.Success; } @@ -80,7 +80,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvGpuGpu long inputPosition = context.Request.GetBufferType0x21().Position; long outputPosition = context.Request.GetBufferType0x22().Position; - Logger.PrintStub(LogClass.ServiceNv, "Stubbed."); + Logger.PrintStub(LogClass.ServiceNv); return NvResult.Success; } @@ -163,7 +163,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvGpuGpu MemoryHelper.Write(context.Memory, outputPosition, args); - Logger.PrintStub(LogClass.ServiceNv, "Stubbed."); + Logger.PrintStub(LogClass.ServiceNv); return NvResult.Success; } diff --git a/Ryujinx.HLE/HOS/Services/Nv/NvHostChannel/NvHostChannelIoctl.cs b/Ryujinx.HLE/HOS/Services/Nv/NvHostChannel/NvHostChannelIoctl.cs index a6681441f..a13f0fcb8 100644 --- a/Ryujinx.HLE/HOS/Services/Nv/NvHostChannel/NvHostChannelIoctl.cs +++ b/Ryujinx.HLE/HOS/Services/Nv/NvHostChannel/NvHostChannelIoctl.cs @@ -179,7 +179,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvHostChannel long inputPosition = context.Request.GetBufferType0x21().Position; long outputPosition = context.Request.GetBufferType0x22().Position; - Logger.PrintStub(LogClass.ServiceNv, "Stubbed."); + Logger.PrintStub(LogClass.ServiceNv); return NvResult.Success; } @@ -189,7 +189,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvHostChannel long inputPosition = context.Request.GetBufferType0x21().Position; long outputPosition = context.Request.GetBufferType0x22().Position; - Logger.PrintStub(LogClass.ServiceNv, "Stubbed."); + Logger.PrintStub(LogClass.ServiceNv); return NvResult.Success; } @@ -232,7 +232,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvHostChannel long inputPosition = context.Request.GetBufferType0x21().Position; long outputPosition = context.Request.GetBufferType0x22().Position; - Logger.PrintStub(LogClass.ServiceNv, "Stubbed."); + Logger.PrintStub(LogClass.ServiceNv); return NvResult.Success; } @@ -242,7 +242,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvHostChannel long inputPosition = context.Request.GetBufferType0x21().Position; long outputPosition = context.Request.GetBufferType0x22().Position; - Logger.PrintStub(LogClass.ServiceNv, "Stubbed."); + Logger.PrintStub(LogClass.ServiceNv); return NvResult.Success; } @@ -252,7 +252,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvHostChannel long inputPosition = context.Request.GetBufferType0x21().Position; long outputPosition = context.Request.GetBufferType0x22().Position; - Logger.PrintStub(LogClass.ServiceNv, "Stubbed."); + Logger.PrintStub(LogClass.ServiceNv); return NvResult.Success; } @@ -262,7 +262,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvHostChannel long inputPosition = context.Request.GetBufferType0x21().Position; long outputPosition = context.Request.GetBufferType0x22().Position; - Logger.PrintStub(LogClass.ServiceNv, "Stubbed."); + Logger.PrintStub(LogClass.ServiceNv); return NvResult.Success; } @@ -272,7 +272,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvHostChannel long inputPosition = context.Request.GetBufferType0x21().Position; long outputPosition = context.Request.GetBufferType0x22().Position; - Logger.PrintStub(LogClass.ServiceNv, "Stubbed."); + Logger.PrintStub(LogClass.ServiceNv); return NvResult.Success; } diff --git a/Ryujinx.HLE/HOS/Services/Nv/NvHostCtrl/NvHostCtrlIoctl.cs b/Ryujinx.HLE/HOS/Services/Nv/NvHostCtrl/NvHostCtrlIoctl.cs index ddef456cc..e05ea77ce 100644 --- a/Ryujinx.HLE/HOS/Services/Nv/NvHostCtrl/NvHostCtrlIoctl.cs +++ b/Ryujinx.HLE/HOS/Services/Nv/NvHostCtrl/NvHostCtrlIoctl.cs @@ -145,7 +145,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvHostCtrl int eventId = context.Memory.ReadInt32(inputPosition); - Logger.PrintStub(LogClass.ServiceNv, "Stubbed."); + Logger.PrintStub(LogClass.ServiceNv); return NvResult.Success; } diff --git a/Ryujinx.HLE/HOS/Services/Prepo/IPrepoService.cs b/Ryujinx.HLE/HOS/Services/Prepo/IPrepoService.cs index f8198fa95..a3cb5cc90 100644 --- a/Ryujinx.HLE/HOS/Services/Prepo/IPrepoService.cs +++ b/Ryujinx.HLE/HOS/Services/Prepo/IPrepoService.cs @@ -20,7 +20,7 @@ namespace Ryujinx.HLE.HOS.Services.Prepo public static long SaveReportWithUser(ServiceCtx context) { - Logger.PrintStub(LogClass.ServicePrepo, "Stubbed."); + Logger.PrintStub(LogClass.ServicePrepo); return 0; } diff --git a/Ryujinx.HLE/HOS/Services/Psm/IPsmServer.cs b/Ryujinx.HLE/HOS/Services/Psm/IPsmServer.cs index c7f6083c4..02bc5524e 100644 --- a/Ryujinx.HLE/HOS/Services/Psm/IPsmServer.cs +++ b/Ryujinx.HLE/HOS/Services/Psm/IPsmServer.cs @@ -34,7 +34,7 @@ namespace Ryujinx.HLE.HOS.Services.Psm context.ResponseData.Write(chargePercentage); - Logger.PrintStub(LogClass.ServicePsm, $"Stubbed. ChargePercentage: {chargePercentage}"); + Logger.PrintStub(LogClass.ServicePsm, new { chargePercentage }); return 0; } @@ -42,9 +42,11 @@ namespace Ryujinx.HLE.HOS.Services.Psm // GetChargerType() -> u32 public static long GetChargerType(ServiceCtx context) { - context.ResponseData.Write((int)ChargerType.ChargerOrDock); + ChargerType chargerType = ChargerType.ChargerOrDock; - Logger.PrintStub(LogClass.ServicePsm, $"Stubbed. ChargerType: {ChargerType.ChargerOrDock}"); + context.ResponseData.Write((int)chargerType); + + Logger.PrintStub(LogClass.ServicePsm, new { chargerType }); return 0; } diff --git a/Ryujinx.HLE/HOS/Services/Psm/IPsmSession.cs b/Ryujinx.HLE/HOS/Services/Psm/IPsmSession.cs index 0c304b417..aeeeb052c 100644 --- a/Ryujinx.HLE/HOS/Services/Psm/IPsmSession.cs +++ b/Ryujinx.HLE/HOS/Services/Psm/IPsmSession.cs @@ -45,7 +45,7 @@ namespace Ryujinx.HLE.HOS.Services.Psm context.Response.HandleDesc = IpcHandleDesc.MakeCopy(_stateChangeEventHandle); - Logger.PrintStub(LogClass.ServicePsm, "Stubbed."); + Logger.PrintStub(LogClass.ServicePsm); return 0; } @@ -59,7 +59,7 @@ namespace Ryujinx.HLE.HOS.Services.Psm _stateChangeEventHandle = -1; } - Logger.PrintStub(LogClass.ServicePsm, "Stubbed."); + Logger.PrintStub(LogClass.ServicePsm); return 0; } @@ -69,7 +69,7 @@ namespace Ryujinx.HLE.HOS.Services.Psm { bool chargerTypeChangeEventEnabled = context.RequestData.ReadBoolean(); - Logger.PrintStub(LogClass.ServicePsm, $"Stubbed. ChargerTypeChangeEventEnabled: {chargerTypeChangeEventEnabled}"); + Logger.PrintStub(LogClass.ServicePsm, new { chargerTypeChangeEventEnabled }); return 0; } @@ -79,7 +79,7 @@ namespace Ryujinx.HLE.HOS.Services.Psm { bool powerSupplyChangeEventEnabled = context.RequestData.ReadBoolean(); - Logger.PrintStub(LogClass.ServicePsm, $"Stubbed. PowerSupplyChangeEventEnabled: {powerSupplyChangeEventEnabled}"); + Logger.PrintStub(LogClass.ServicePsm, new { powerSupplyChangeEventEnabled }); return 0; } @@ -89,7 +89,7 @@ namespace Ryujinx.HLE.HOS.Services.Psm { bool batteryVoltageStateChangeEventEnabled = context.RequestData.ReadBoolean(); - Logger.PrintStub(LogClass.ServicePsm, $"Stubbed. BatteryVoltageStateChangeEventEnabled: {batteryVoltageStateChangeEventEnabled}"); + Logger.PrintStub(LogClass.ServicePsm, new { batteryVoltageStateChangeEventEnabled }); return 0; } diff --git a/Ryujinx.HLE/HOS/Services/Sfdnsres/IResolver.cs b/Ryujinx.HLE/HOS/Services/Sfdnsres/IResolver.cs index 5de035515..5a7b9f459 100644 --- a/Ryujinx.HLE/HOS/Services/Sfdnsres/IResolver.cs +++ b/Ryujinx.HLE/HOS/Services/Sfdnsres/IResolver.cs @@ -166,7 +166,7 @@ namespace Ryujinx.HLE.HOS.Services.Sfdnsres long bufferSize = context.Request.SendBuff[0].Size; // TODO: This is stubbed in 2.0.0+, reverse 1.0.0 version for the sake completeness. - Logger.PrintStub(LogClass.ServiceSfdnsres, $"Stubbed. Unknown0: {unknown0}"); + Logger.PrintStub(LogClass.ServiceSfdnsres, new { unknown0 }); return MakeError(ErrorModule.Os, 1023); } @@ -177,7 +177,7 @@ namespace Ryujinx.HLE.HOS.Services.Sfdnsres uint unknown0 = context.RequestData.ReadUInt32(); // TODO: This is stubbed in 2.0.0+, reverse 1.0.0 version for the sake completeness. - Logger.PrintStub(LogClass.ServiceSfdnsres, $"Stubbed. Unknown0: {unknown0}"); + Logger.PrintStub(LogClass.ServiceSfdnsres, new { unknown0 }); return MakeError(ErrorModule.Os, 1023); } @@ -369,7 +369,7 @@ namespace Ryujinx.HLE.HOS.Services.Sfdnsres context.ResponseData.Write(0); - Logger.PrintStub(LogClass.ServiceSfdnsres, $"Stubbed. Unknown0: {unknown0}"); + Logger.PrintStub(LogClass.ServiceSfdnsres, new { unknown0 }); return 0; } @@ -380,8 +380,7 @@ namespace Ryujinx.HLE.HOS.Services.Sfdnsres uint unknown0 = context.RequestData.ReadUInt32(); ulong unknown1 = context.RequestData.ReadUInt64(); - Logger.PrintStub(LogClass.ServiceSfdnsres, $"Stubbed. Unknown0: {unknown0} - " + - $"Unknown1: {unknown1}"); + Logger.PrintStub(LogClass.ServiceSfdnsres, new { unknown0, unknown1 }); return 0; } @@ -391,7 +390,7 @@ namespace Ryujinx.HLE.HOS.Services.Sfdnsres { uint unknown0 = context.RequestData.ReadUInt32(); - Logger.PrintStub(LogClass.ServiceSfdnsres, $"Stubbed. Unknown0: {unknown0}"); + Logger.PrintStub(LogClass.ServiceSfdnsres, new { unknown0 }); return 0; } diff --git a/Ryujinx.HLE/HOS/Services/Ssl/ISslService.cs b/Ryujinx.HLE/HOS/Services/Ssl/ISslService.cs index b40e94733..5afc8c72e 100644 --- a/Ryujinx.HLE/HOS/Services/Ssl/ISslService.cs +++ b/Ryujinx.HLE/HOS/Services/Ssl/ISslService.cs @@ -25,7 +25,7 @@ namespace Ryujinx.HLE.HOS.Services.Ssl int sslVersion = context.RequestData.ReadInt32(); long unknown = context.RequestData.ReadInt64(); - Logger.PrintStub(LogClass.ServiceSsl, $"Stubbed. SslVersion: {sslVersion} - Unknown: {unknown}"); + Logger.PrintStub(LogClass.ServiceSsl, new { sslVersion, unknown }); MakeObject(context, new ISslContext()); @@ -37,7 +37,7 @@ namespace Ryujinx.HLE.HOS.Services.Ssl { int version = context.RequestData.ReadInt32(); - Logger.PrintStub(LogClass.ServiceSsl, $"Stubbed. Version: {version}"); + Logger.PrintStub(LogClass.ServiceSsl, new { version }); return 0; } diff --git a/Ryujinx.HLE/HOS/Services/Vi/IManagerDisplayService.cs b/Ryujinx.HLE/HOS/Services/Vi/IManagerDisplayService.cs index 369c376f9..c655e26cc 100644 --- a/Ryujinx.HLE/HOS/Services/Vi/IManagerDisplayService.cs +++ b/Ryujinx.HLE/HOS/Services/Vi/IManagerDisplayService.cs @@ -23,7 +23,7 @@ namespace Ryujinx.HLE.HOS.Services.Vi public static long CreateManagedLayer(ServiceCtx context) { - Logger.PrintStub(LogClass.ServiceVi, "Stubbed."); + Logger.PrintStub(LogClass.ServiceVi); context.ResponseData.Write(0L); //LayerId @@ -32,21 +32,21 @@ namespace Ryujinx.HLE.HOS.Services.Vi public long DestroyManagedLayer(ServiceCtx context) { - Logger.PrintStub(LogClass.ServiceVi, "Stubbed."); + Logger.PrintStub(LogClass.ServiceVi); return 0; } public static long AddToLayerStack(ServiceCtx context) { - Logger.PrintStub(LogClass.ServiceVi, "Stubbed."); + Logger.PrintStub(LogClass.ServiceVi); return 0; } public static long SetLayerVisibility(ServiceCtx context) { - Logger.PrintStub(LogClass.ServiceVi, "Stubbed."); + Logger.PrintStub(LogClass.ServiceVi); return 0; } diff --git a/Ryujinx.HLE/HOS/Services/Vi/ISystemDisplayService.cs b/Ryujinx.HLE/HOS/Services/Vi/ISystemDisplayService.cs index 070277ff3..6d001588f 100644 --- a/Ryujinx.HLE/HOS/Services/Vi/ISystemDisplayService.cs +++ b/Ryujinx.HLE/HOS/Services/Vi/ISystemDisplayService.cs @@ -23,14 +23,14 @@ namespace Ryujinx.HLE.HOS.Services.Vi public static long SetLayerZ(ServiceCtx context) { - Logger.PrintStub(LogClass.ServiceVi, "Stubbed."); + Logger.PrintStub(LogClass.ServiceVi); return 0; } public static long SetLayerVisibility(ServiceCtx context) { - Logger.PrintStub(LogClass.ServiceVi, "Stubbed."); + Logger.PrintStub(LogClass.ServiceVi); return 0; } diff --git a/Ryujinx/Ui/ConsoleLog.cs b/Ryujinx/Ui/ConsoleLog.cs index 67eaa0e35..ac3d41c9e 100644 --- a/Ryujinx/Ui/ConsoleLog.cs +++ b/Ryujinx/Ui/ConsoleLog.cs @@ -2,6 +2,8 @@ using Ryujinx.Common.Logging; using System; using System.Collections.Concurrent; using System.Collections.Generic; +using System.Reflection; +using System.Text; using System.Threading; namespace Ryujinx @@ -14,8 +16,6 @@ namespace Ryujinx private static Dictionary _logColors; - private static object _consoleLock; - static ConsoleLog() { _logColors = new Dictionary() @@ -28,8 +28,6 @@ namespace Ryujinx _messageQueue = new BlockingCollection(10); - _consoleLock = new object(); - _messageThread = new Thread(() => { while (!_messageQueue.IsCompleted) @@ -55,25 +53,46 @@ namespace Ryujinx private static void PrintLog(LogEventArgs e) { - string formattedTime = e.Time.ToString(@"hh\:mm\:ss\.fff"); + StringBuilder sb = new StringBuilder(); - string currentThread = Thread.CurrentThread.ManagedThreadId.ToString("d4"); + sb.AppendFormat(@"{0:hh\:mm\:ss\.fff}", e.Time); + sb.Append(" | "); + sb.AppendFormat("{0:d4}", e.ThreadId); + sb.Append(' '); + sb.Append(e.Message); - string message = formattedTime + " | " + currentThread + " " + e.Message; + if (e.Data != null) + { + PropertyInfo[] props = e.Data.GetType().GetProperties(); + + sb.Append(' '); + + foreach (var prop in props) + { + sb.Append(prop.Name); + sb.Append(": "); + sb.Append(prop.GetValue(e.Data)); + sb.Append(" - "); + } + + // We remove the final '-' from the string + if (props.Length > 0) + { + sb.Remove(sb.Length - 3, 3); + } + } if (_logColors.TryGetValue(e.Level, out ConsoleColor color)) { - lock (_consoleLock) - { - Console.ForegroundColor = color; + Console.ForegroundColor = color; - Console.WriteLine(message); - Console.ResetColor(); - } + Console.WriteLine(sb.ToString()); + + Console.ResetColor(); } else { - Console.WriteLine(message); + Console.WriteLine(sb.ToString()); } }