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()); } }