forked from Mirror/Ryujinx
Move logging to Ryujinx.Common and make it a static class (#413)
This commit is contained in:
parent
9b19ea3c87
commit
b3a4662be1
61 changed files with 612 additions and 585 deletions
|
@ -9,4 +9,8 @@
|
||||||
<PackageReference Include="OpenTK.NetStandard" Version="1.0.4" />
|
<PackageReference Include="OpenTK.NetStandard" Version="1.0.4" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\Ryujinx.Common\Ryujinx.Common.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
namespace Ryujinx.HLE.Logging
|
namespace Ryujinx.Common.Logging
|
||||||
{
|
{
|
||||||
public enum LogClass
|
public enum LogClass
|
||||||
{
|
{
|
|
@ -1,6 +1,6 @@
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace Ryujinx.HLE.Logging
|
namespace Ryujinx.Common.Logging
|
||||||
{
|
{
|
||||||
public class LogEventArgs : EventArgs
|
public class LogEventArgs : EventArgs
|
||||||
{
|
{
|
|
@ -1,4 +1,4 @@
|
||||||
namespace Ryujinx.HLE.Logging
|
namespace Ryujinx.Common.Logging
|
||||||
{
|
{
|
||||||
public enum LogLevel
|
public enum LogLevel
|
||||||
{
|
{
|
|
@ -2,18 +2,18 @@ using System;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Runtime.CompilerServices;
|
using System.Runtime.CompilerServices;
|
||||||
|
|
||||||
namespace Ryujinx.HLE.Logging
|
namespace Ryujinx.Common.Logging
|
||||||
{
|
{
|
||||||
public class Logger
|
public static class Logger
|
||||||
{
|
{
|
||||||
private bool[] EnabledLevels;
|
private static bool[] EnabledLevels;
|
||||||
private bool[] EnabledClasses;
|
private static bool[] EnabledClasses;
|
||||||
|
|
||||||
public event EventHandler<LogEventArgs> Updated;
|
public static event EventHandler<LogEventArgs> Updated;
|
||||||
|
|
||||||
private Stopwatch Time;
|
private static Stopwatch Time;
|
||||||
|
|
||||||
public Logger()
|
static Logger()
|
||||||
{
|
{
|
||||||
EnabledLevels = new bool[Enum.GetNames(typeof(LogLevel)).Length];
|
EnabledLevels = new bool[Enum.GetNames(typeof(LogLevel)).Length];
|
||||||
EnabledClasses = new bool[Enum.GetNames(typeof(LogClass)).Length];
|
EnabledClasses = new bool[Enum.GetNames(typeof(LogClass)).Length];
|
||||||
|
@ -33,50 +33,50 @@ namespace Ryujinx.HLE.Logging
|
||||||
Time.Start();
|
Time.Start();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetEnable(LogLevel Level, bool Enabled)
|
public static void SetEnable(LogLevel Level, bool Enabled)
|
||||||
{
|
{
|
||||||
EnabledLevels[(int)Level] = Enabled;
|
EnabledLevels[(int)Level] = Enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetEnable(LogClass Class, bool Enabled)
|
public static void SetEnable(LogClass Class, bool Enabled)
|
||||||
{
|
{
|
||||||
EnabledClasses[(int)Class] = Enabled;
|
EnabledClasses[(int)Class] = Enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void PrintDebug(LogClass Class, string Message, [CallerMemberName] string Caller = "")
|
public static void PrintDebug(LogClass Class, string Message, [CallerMemberName] string Caller = "")
|
||||||
{
|
{
|
||||||
Print(LogLevel.Debug, Class, GetFormattedMessage(Class, Message, Caller));
|
Print(LogLevel.Debug, Class, GetFormattedMessage(Class, Message, Caller));
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void PrintStub(LogClass Class, string Message, [CallerMemberName] string Caller = "")
|
public static void PrintStub(LogClass Class, string Message, [CallerMemberName] string Caller = "")
|
||||||
{
|
{
|
||||||
Print(LogLevel.Stub, Class, GetFormattedMessage(Class, Message, Caller));
|
Print(LogLevel.Stub, Class, GetFormattedMessage(Class, Message, Caller));
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void PrintInfo(LogClass Class, string Message, [CallerMemberName] string Caller = "")
|
public static void PrintInfo(LogClass Class, string Message, [CallerMemberName] string Caller = "")
|
||||||
{
|
{
|
||||||
Print(LogLevel.Info, Class, GetFormattedMessage(Class, Message, Caller));
|
Print(LogLevel.Info, Class, GetFormattedMessage(Class, Message, Caller));
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void PrintWarning(LogClass Class, string Message, [CallerMemberName] string Caller = "")
|
public static void PrintWarning(LogClass Class, string Message, [CallerMemberName] string Caller = "")
|
||||||
{
|
{
|
||||||
Print(LogLevel.Warning, Class, GetFormattedMessage(Class, Message, Caller));
|
Print(LogLevel.Warning, Class, GetFormattedMessage(Class, Message, Caller));
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void PrintError(LogClass Class, string Message, [CallerMemberName] string Caller = "")
|
public static void PrintError(LogClass Class, string Message, [CallerMemberName] string Caller = "")
|
||||||
{
|
{
|
||||||
Print(LogLevel.Error, Class, GetFormattedMessage(Class, Message, Caller));
|
Print(LogLevel.Error, Class, GetFormattedMessage(Class, Message, Caller));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Print(LogLevel Level, LogClass Class, string Message)
|
private static void Print(LogLevel Level, LogClass Class, string Message)
|
||||||
{
|
{
|
||||||
if (EnabledLevels[(int)Level] && EnabledClasses[(int)Class])
|
if (EnabledLevels[(int)Level] && EnabledClasses[(int)Class])
|
||||||
{
|
{
|
||||||
Updated?.Invoke(this, new LogEventArgs(Level, Time.Elapsed, Message));
|
Updated?.Invoke(null, new LogEventArgs(Level, Time.Elapsed, Message));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private string GetFormattedMessage(LogClass Class, string Message, string Caller)
|
private static string GetFormattedMessage(LogClass Class, string Message, string Caller)
|
||||||
{
|
{
|
||||||
return $"{Class} {Caller}: {Message}";
|
return $"{Class} {Caller}: {Message}";
|
||||||
}
|
}
|
16
Ryujinx.Common/Ryujinx.Common.csproj
Normal file
16
Ryujinx.Common/Ryujinx.Common.csproj
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>netcoreapp2.1</TargetFramework>
|
||||||
|
<RuntimeIdentifiers>win10-x64;osx-x64;linux-x64</RuntimeIdentifiers>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||||
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
|
||||||
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
</Project>
|
|
@ -19,6 +19,7 @@
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\ChocolArm64\ChocolArm64.csproj" />
|
<ProjectReference Include="..\ChocolArm64\ChocolArm64.csproj" />
|
||||||
|
<ProjectReference Include="..\Ryujinx.Common\Ryujinx.Common.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
using LibHac;
|
using LibHac;
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.HLE.HOS.Font;
|
using Ryujinx.HLE.HOS.Font;
|
||||||
using Ryujinx.HLE.HOS.Kernel;
|
using Ryujinx.HLE.HOS.Kernel;
|
||||||
using Ryujinx.HLE.HOS.SystemState;
|
using Ryujinx.HLE.HOS.SystemState;
|
||||||
using Ryujinx.HLE.Loaders.Executables;
|
using Ryujinx.HLE.Loaders.Executables;
|
||||||
using Ryujinx.HLE.Loaders.Npdm;
|
using Ryujinx.HLE.Loaders.Npdm;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
@ -104,7 +104,7 @@ namespace Ryujinx.HLE.HOS
|
||||||
|
|
||||||
if (File.Exists(NpdmFileName))
|
if (File.Exists(NpdmFileName))
|
||||||
{
|
{
|
||||||
Device.Log.PrintInfo(LogClass.Loader, $"Loading main.npdm...");
|
Logger.PrintInfo(LogClass.Loader, $"Loading main.npdm...");
|
||||||
|
|
||||||
using (FileStream Input = new FileStream(NpdmFileName, FileMode.Open))
|
using (FileStream Input = new FileStream(NpdmFileName, FileMode.Open))
|
||||||
{
|
{
|
||||||
|
@ -113,7 +113,7 @@ namespace Ryujinx.HLE.HOS
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.Loader, $"NPDM file not found, using default values!");
|
Logger.PrintWarning(LogClass.Loader, $"NPDM file not found, using default values!");
|
||||||
}
|
}
|
||||||
|
|
||||||
Process MainProcess = MakeProcess(MetaData);
|
Process MainProcess = MakeProcess(MetaData);
|
||||||
|
@ -127,7 +127,7 @@ namespace Ryujinx.HLE.HOS
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
Device.Log.PrintInfo(LogClass.Loader, $"Loading {Path.GetFileNameWithoutExtension(File)}...");
|
Logger.PrintInfo(LogClass.Loader, $"Loading {Path.GetFileNameWithoutExtension(File)}...");
|
||||||
|
|
||||||
using (FileStream Input = new FileStream(File, FileMode.Open))
|
using (FileStream Input = new FileStream(File, FileMode.Open))
|
||||||
{
|
{
|
||||||
|
@ -168,7 +168,7 @@ namespace Ryujinx.HLE.HOS
|
||||||
|
|
||||||
if (MainNca == null)
|
if (MainNca == null)
|
||||||
{
|
{
|
||||||
Device.Log.PrintError(LogClass.Loader, "Unable to load XCI");
|
Logger.PrintError(LogClass.Loader, "Unable to load XCI");
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -212,7 +212,7 @@ namespace Ryujinx.HLE.HOS
|
||||||
|
|
||||||
if (MainNca == null)
|
if (MainNca == null)
|
||||||
{
|
{
|
||||||
Device.Log.PrintError(LogClass.Loader, "Could not find an Application NCA in the provided XCI file");
|
Logger.PrintError(LogClass.Loader, "Could not find an Application NCA in the provided XCI file");
|
||||||
}
|
}
|
||||||
|
|
||||||
MainNca.SetBaseNca(PatchNca);
|
MainNca.SetBaseNca(PatchNca);
|
||||||
|
@ -292,7 +292,7 @@ namespace Ryujinx.HLE.HOS
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Device.Log.PrintError(LogClass.Loader, "Could not find an Application NCA in the provided NSP file");
|
Logger.PrintError(LogClass.Loader, "Could not find an Application NCA in the provided NSP file");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LoadNca(Nca MainNca, Nca ControlNca)
|
public void LoadNca(Nca MainNca, Nca ControlNca)
|
||||||
|
@ -302,14 +302,14 @@ namespace Ryujinx.HLE.HOS
|
||||||
|
|
||||||
if (ExefsSection == null)
|
if (ExefsSection == null)
|
||||||
{
|
{
|
||||||
Device.Log.PrintError(LogClass.Loader, "No ExeFS found in NCA");
|
Logger.PrintError(LogClass.Loader, "No ExeFS found in NCA");
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (RomfsSection == null)
|
if (RomfsSection == null)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.Loader, "No RomFS found in NCA");
|
Logger.PrintWarning(LogClass.Loader, "No RomFS found in NCA");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -326,13 +326,13 @@ namespace Ryujinx.HLE.HOS
|
||||||
|
|
||||||
if (Exefs.FileExists("main.npdm"))
|
if (Exefs.FileExists("main.npdm"))
|
||||||
{
|
{
|
||||||
Device.Log.PrintInfo(LogClass.Loader, "Loading main.npdm...");
|
Logger.PrintInfo(LogClass.Loader, "Loading main.npdm...");
|
||||||
|
|
||||||
MetaData = new Npdm(Exefs.OpenFile("main.npdm"));
|
MetaData = new Npdm(Exefs.OpenFile("main.npdm"));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.Loader, $"NPDM file not found, using default values!");
|
Logger.PrintWarning(LogClass.Loader, $"NPDM file not found, using default values!");
|
||||||
}
|
}
|
||||||
|
|
||||||
Process MainProcess = MakeProcess(MetaData);
|
Process MainProcess = MakeProcess(MetaData);
|
||||||
|
@ -346,7 +346,7 @@ namespace Ryujinx.HLE.HOS
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
Device.Log.PrintInfo(LogClass.Loader, $"Loading {Filename}...");
|
Logger.PrintInfo(LogClass.Loader, $"Loading {Filename}...");
|
||||||
|
|
||||||
string Name = Path.GetFileNameWithoutExtension(File.Name);
|
string Name = Path.GetFileNameWithoutExtension(File.Name);
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
using ChocolArm64.Events;
|
using ChocolArm64.Events;
|
||||||
using ChocolArm64.Memory;
|
using ChocolArm64.Memory;
|
||||||
using ChocolArm64.State;
|
using ChocolArm64.State;
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.HLE.HOS.Ipc;
|
using Ryujinx.HLE.HOS.Ipc;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
@ -109,11 +109,11 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (SvcFuncs.TryGetValue(e.Id, out SvcFunc Func))
|
if (SvcFuncs.TryGetValue(e.Id, out SvcFunc Func))
|
||||||
{
|
{
|
||||||
Device.Log.PrintDebug(LogClass.KernelSvc, $"{Func.Method.Name} called.");
|
Logger.PrintDebug(LogClass.KernelSvc, $"{Func.Method.Name} called.");
|
||||||
|
|
||||||
Func(ThreadState);
|
Func(ThreadState);
|
||||||
|
|
||||||
Device.Log.PrintDebug(LogClass.KernelSvc, $"{Func.Method.Name} ended.");
|
Logger.PrintDebug(LogClass.KernelSvc, $"{Func.Method.Name} ended.");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
using ChocolArm64.State;
|
using ChocolArm64.State;
|
||||||
using Ryujinx.HLE.Logging;
|
using Ryujinx.Common.Logging;
|
||||||
|
|
||||||
using static Ryujinx.HLE.HOS.ErrorCode;
|
using static Ryujinx.HLE.HOS.ErrorCode;
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if ((Size & 0xFFFFFFFE001FFFFF) != 0)
|
if ((Size & 0xFFFFFFFE001FFFFF) != 0)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Heap size 0x{Size:x16} is not aligned!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Heap size 0x{Size:x16} is not aligned!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidSize);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidSize);
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (!PageAligned(Position))
|
if (!PageAligned(Position))
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Address 0x{Position:x16} is not page aligned!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Address 0x{Position:x16} is not page aligned!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (!PageAligned(Size) || Size == 0)
|
if (!PageAligned(Size) || Size == 0)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Size 0x{Size:x16} is not page aligned or is zero!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Size 0x{Size:x16} is not page aligned or is zero!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidSize);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidSize);
|
||||||
|
|
||||||
|
@ -65,7 +65,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
if (Attributes != AttributeMask ||
|
if (Attributes != AttributeMask ||
|
||||||
(Attributes | MemoryAttribute.Uncached) != MemoryAttribute.Uncached)
|
(Attributes | MemoryAttribute.Uncached) != MemoryAttribute.Uncached)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, "Invalid memory attributes!");
|
Logger.PrintWarning(LogClass.KernelSvc, "Invalid memory attributes!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidMaskValue);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidMaskValue);
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (Result != 0)
|
if (Result != 0)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -98,7 +98,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (!PageAligned(Src | Dst))
|
if (!PageAligned(Src | Dst))
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, "Addresses are not page aligned!");
|
Logger.PrintWarning(LogClass.KernelSvc, "Addresses are not page aligned!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
|
||||||
|
|
||||||
|
@ -107,7 +107,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (!PageAligned(Size) || Size == 0)
|
if (!PageAligned(Size) || Size == 0)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Size 0x{Size:x16} is not page aligned or is zero!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Size 0x{Size:x16} is not page aligned or is zero!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidSize);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidSize);
|
||||||
|
|
||||||
|
@ -116,7 +116,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if ((ulong)(Src + Size) <= (ulong)Src || (ulong)(Dst + Size) <= (ulong)Dst)
|
if ((ulong)(Src + Size) <= (ulong)Src || (ulong)(Dst + Size) <= (ulong)Dst)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, "Addresses outside of range!");
|
Logger.PrintWarning(LogClass.KernelSvc, "Addresses outside of range!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
|
||||||
|
|
||||||
|
@ -125,7 +125,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (!InsideAddrSpace(Src, Size))
|
if (!InsideAddrSpace(Src, Size))
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Src address 0x{Src:x16} out of range!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Src address 0x{Src:x16} out of range!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
|
||||||
|
|
||||||
|
@ -134,7 +134,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (!InsideNewMapRegion(Dst, Size))
|
if (!InsideNewMapRegion(Dst, Size))
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Dst address 0x{Dst:x16} out of range!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Dst address 0x{Dst:x16} out of range!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidMemRange);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidMemRange);
|
||||||
|
|
||||||
|
@ -145,7 +145,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (Result != 0)
|
if (Result != 0)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
|
||||||
}
|
}
|
||||||
|
|
||||||
ThreadState.X0 = (ulong)Result;
|
ThreadState.X0 = (ulong)Result;
|
||||||
|
@ -159,7 +159,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (!PageAligned(Src | Dst))
|
if (!PageAligned(Src | Dst))
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, "Addresses are not page aligned!");
|
Logger.PrintWarning(LogClass.KernelSvc, "Addresses are not page aligned!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
|
||||||
|
|
||||||
|
@ -168,7 +168,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (!PageAligned(Size) || Size == 0)
|
if (!PageAligned(Size) || Size == 0)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Size 0x{Size:x16} is not page aligned or is zero!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Size 0x{Size:x16} is not page aligned or is zero!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidSize);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidSize);
|
||||||
|
|
||||||
|
@ -177,7 +177,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if ((ulong)(Src + Size) <= (ulong)Src || (ulong)(Dst + Size) <= (ulong)Dst)
|
if ((ulong)(Src + Size) <= (ulong)Src || (ulong)(Dst + Size) <= (ulong)Dst)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, "Addresses outside of range!");
|
Logger.PrintWarning(LogClass.KernelSvc, "Addresses outside of range!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
|
||||||
|
|
||||||
|
@ -186,7 +186,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (!InsideAddrSpace(Src, Size))
|
if (!InsideAddrSpace(Src, Size))
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Src address 0x{Src:x16} out of range!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Src address 0x{Src:x16} out of range!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
|
||||||
|
|
||||||
|
@ -195,7 +195,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (!InsideNewMapRegion(Dst, Size))
|
if (!InsideNewMapRegion(Dst, Size))
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Dst address 0x{Dst:x16} out of range!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Dst address 0x{Dst:x16} out of range!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidMemRange);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidMemRange);
|
||||||
|
|
||||||
|
@ -206,7 +206,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (Result != 0)
|
if (Result != 0)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
|
||||||
}
|
}
|
||||||
|
|
||||||
ThreadState.X0 = (ulong)Result;
|
ThreadState.X0 = (ulong)Result;
|
||||||
|
@ -240,7 +240,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (!PageAligned(Position))
|
if (!PageAligned(Position))
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Address 0x{Position:x16} is not page aligned!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Address 0x{Position:x16} is not page aligned!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
|
||||||
|
|
||||||
|
@ -249,7 +249,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (!PageAligned(Size) || Size == 0)
|
if (!PageAligned(Size) || Size == 0)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Size 0x{Size:x16} is not page aligned or is zero!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Size 0x{Size:x16} is not page aligned or is zero!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidSize);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidSize);
|
||||||
|
|
||||||
|
@ -258,7 +258,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if ((ulong)(Position + Size) <= (ulong)Position)
|
if ((ulong)(Position + Size) <= (ulong)Position)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Invalid region address 0x{Position:x16} / size 0x{Size:x16}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Invalid region address 0x{Position:x16} / size 0x{Size:x16}!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
|
||||||
|
|
||||||
|
@ -269,7 +269,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if ((Permission | MemoryPermission.Write) != MemoryPermission.ReadAndWrite)
|
if ((Permission | MemoryPermission.Write) != MemoryPermission.ReadAndWrite)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Invalid permission {Permission}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Invalid permission {Permission}!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidPermission);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidPermission);
|
||||||
|
|
||||||
|
@ -280,7 +280,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (SharedMemory == null)
|
if (SharedMemory == null)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Invalid shared memory handle 0x{Handle:x8}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Invalid shared memory handle 0x{Handle:x8}!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
|
||||||
|
|
||||||
|
@ -289,7 +289,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (!InsideAddrSpace(Position, Size) || InsideMapRegion(Position, Size) || InsideHeapRegion(Position, Size))
|
if (!InsideAddrSpace(Position, Size) || InsideMapRegion(Position, Size) || InsideHeapRegion(Position, Size))
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Address 0x{Position:x16} out of range!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Address 0x{Position:x16} out of range!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
|
||||||
|
|
||||||
|
@ -298,7 +298,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (SharedMemory.Size != Size)
|
if (SharedMemory.Size != Size)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Size 0x{Size:x16} does not match shared memory size 0x{SharedMemory.Size:16}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Size 0x{Size:x16} does not match shared memory size 0x{SharedMemory.Size:16}!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidSize);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidSize);
|
||||||
|
|
||||||
|
@ -309,7 +309,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (Result != 0)
|
if (Result != 0)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
|
||||||
}
|
}
|
||||||
|
|
||||||
ThreadState.X0 = (ulong)Result;
|
ThreadState.X0 = (ulong)Result;
|
||||||
|
@ -323,7 +323,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (!PageAligned(Position))
|
if (!PageAligned(Position))
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Address 0x{Position:x16} is not page aligned!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Address 0x{Position:x16} is not page aligned!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
|
||||||
|
|
||||||
|
@ -332,7 +332,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (!PageAligned(Size) || Size == 0)
|
if (!PageAligned(Size) || Size == 0)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Size 0x{Size:x16} is not page aligned or is zero!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Size 0x{Size:x16} is not page aligned or is zero!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidSize);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidSize);
|
||||||
|
|
||||||
|
@ -341,7 +341,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if ((ulong)(Position + Size) <= (ulong)Position)
|
if ((ulong)(Position + Size) <= (ulong)Position)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Invalid region address 0x{Position:x16} / size 0x{Size:x16}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Invalid region address 0x{Position:x16} / size 0x{Size:x16}!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
|
||||||
|
|
||||||
|
@ -352,7 +352,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (SharedMemory == null)
|
if (SharedMemory == null)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Invalid shared memory handle 0x{Handle:x8}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Invalid shared memory handle 0x{Handle:x8}!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
|
||||||
|
|
||||||
|
@ -361,7 +361,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (!InsideAddrSpace(Position, Size) || InsideMapRegion(Position, Size) || InsideHeapRegion(Position, Size))
|
if (!InsideAddrSpace(Position, Size) || InsideMapRegion(Position, Size) || InsideHeapRegion(Position, Size))
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Address 0x{Position:x16} out of range!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Address 0x{Position:x16} out of range!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
|
||||||
|
|
||||||
|
@ -372,7 +372,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (Result != 0)
|
if (Result != 0)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
|
||||||
}
|
}
|
||||||
|
|
||||||
ThreadState.X0 = (ulong)Result;
|
ThreadState.X0 = (ulong)Result;
|
||||||
|
@ -385,7 +385,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (!PageAligned(Position))
|
if (!PageAligned(Position))
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Address 0x{Position:x16} is not page aligned!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Address 0x{Position:x16} is not page aligned!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
|
||||||
|
|
||||||
|
@ -394,7 +394,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (!PageAligned(Size) || Size == 0)
|
if (!PageAligned(Size) || Size == 0)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Size 0x{Size:x16} is not page aligned or is zero!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Size 0x{Size:x16} is not page aligned or is zero!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
|
||||||
|
|
||||||
|
@ -403,7 +403,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if ((ulong)(Position + Size) <= (ulong)Position)
|
if ((ulong)(Position + Size) <= (ulong)Position)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Invalid region address 0x{Position:x16} / size 0x{Size:x16}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Invalid region address 0x{Position:x16} / size 0x{Size:x16}!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
|
||||||
|
|
||||||
|
@ -414,7 +414,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (Permission > MemoryPermission.ReadAndWrite || Permission == MemoryPermission.Write)
|
if (Permission > MemoryPermission.ReadAndWrite || Permission == MemoryPermission.Write)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Invalid permission {Permission}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Invalid permission {Permission}!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidPermission);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidPermission);
|
||||||
|
|
||||||
|
@ -438,7 +438,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (!PageAligned(Position))
|
if (!PageAligned(Position))
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Address 0x{Position:x16} is not page aligned!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Address 0x{Position:x16} is not page aligned!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
|
||||||
|
|
||||||
|
@ -447,7 +447,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (!PageAligned(Size) || Size == 0)
|
if (!PageAligned(Size) || Size == 0)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Size 0x{Size:x16} is not page aligned or is zero!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Size 0x{Size:x16} is not page aligned or is zero!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidSize);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidSize);
|
||||||
|
|
||||||
|
@ -456,7 +456,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if ((ulong)(Position + Size) <= (ulong)Position)
|
if ((ulong)(Position + Size) <= (ulong)Position)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Invalid region address 0x{Position:x16} / size 0x{Size:x16}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Invalid region address 0x{Position:x16} / size 0x{Size:x16}!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
|
||||||
|
|
||||||
|
@ -465,7 +465,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (!InsideAddrSpace(Position, Size))
|
if (!InsideAddrSpace(Position, Size))
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Invalid address {Position:x16}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Invalid address {Position:x16}!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
|
||||||
|
|
||||||
|
@ -476,7 +476,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (Result != 0)
|
if (Result != 0)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
|
||||||
}
|
}
|
||||||
|
|
||||||
ThreadState.X0 = (ulong)Result;
|
ThreadState.X0 = (ulong)Result;
|
||||||
|
@ -489,7 +489,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (!PageAligned(Position))
|
if (!PageAligned(Position))
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Address 0x{Position:x16} is not page aligned!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Address 0x{Position:x16} is not page aligned!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
|
||||||
|
|
||||||
|
@ -498,7 +498,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (!PageAligned(Size) || Size == 0)
|
if (!PageAligned(Size) || Size == 0)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Size 0x{Size:x16} is not page aligned or is zero!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Size 0x{Size:x16} is not page aligned or is zero!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidSize);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidSize);
|
||||||
|
|
||||||
|
@ -507,7 +507,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if ((ulong)(Position + Size) <= (ulong)Position)
|
if ((ulong)(Position + Size) <= (ulong)Position)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Invalid region address 0x{Position:x16} / size 0x{Size:x16}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Invalid region address 0x{Position:x16} / size 0x{Size:x16}!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
|
||||||
|
|
||||||
|
@ -516,7 +516,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (!InsideAddrSpace(Position, Size))
|
if (!InsideAddrSpace(Position, Size))
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Invalid address {Position:x16}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Invalid address {Position:x16}!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
|
||||||
|
|
||||||
|
@ -527,7 +527,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (Result != 0)
|
if (Result != 0)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
|
||||||
}
|
}
|
||||||
|
|
||||||
ThreadState.X0 = (ulong)Result;
|
ThreadState.X0 = (ulong)Result;
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
using ChocolArm64.Memory;
|
using ChocolArm64.Memory;
|
||||||
using ChocolArm64.State;
|
using ChocolArm64.State;
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.HLE.Exceptions;
|
using Ryujinx.HLE.Exceptions;
|
||||||
using Ryujinx.HLE.HOS.Ipc;
|
using Ryujinx.HLE.HOS.Ipc;
|
||||||
using Ryujinx.HLE.HOS.Services;
|
using Ryujinx.HLE.HOS.Services;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (Result != KernelResult.Success)
|
if (Result != KernelResult.Success)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, "Operation failed with error: " + Result + "!");
|
Logger.PrintWarning(LogClass.KernelSvc, "Operation failed with error: " + Result + "!");
|
||||||
}
|
}
|
||||||
|
|
||||||
return Result;
|
return Result;
|
||||||
|
@ -76,7 +76,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (Result != KernelResult.Success)
|
if (Result != KernelResult.Success)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, "Operation failed with error: " + Result + "!");
|
Logger.PrintWarning(LogClass.KernelSvc, "Operation failed with error: " + Result + "!");
|
||||||
}
|
}
|
||||||
|
|
||||||
return Result;
|
return Result;
|
||||||
|
@ -92,7 +92,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (Obj == null)
|
if (Obj == null)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Invalid handle 0x{Handle:x8}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Invalid handle 0x{Handle:x8}!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
|
||||||
|
|
||||||
|
@ -136,11 +136,11 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (Result == KernelResult.InvalidState)
|
if (Result == KernelResult.InvalidState)
|
||||||
{
|
{
|
||||||
Device.Log.PrintDebug(LogClass.KernelSvc, "Operation failed with error: " + Result + "!");
|
Logger.PrintDebug(LogClass.KernelSvc, "Operation failed with error: " + Result + "!");
|
||||||
}
|
}
|
||||||
else if (Result != KernelResult.Success)
|
else if (Result != KernelResult.Success)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, "Operation failed with error: " + Result + "!");
|
Logger.PrintWarning(LogClass.KernelSvc, "Operation failed with error: " + Result + "!");
|
||||||
}
|
}
|
||||||
|
|
||||||
return Result;
|
return Result;
|
||||||
|
@ -220,7 +220,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Invalid session handle 0x{Handle:x8}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Invalid session handle 0x{Handle:x8}!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
|
||||||
}
|
}
|
||||||
|
@ -255,7 +255,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Device.Log.PrintInfo(LogClass.KernelSvc, "Debugger triggered");
|
Logger.PrintInfo(LogClass.KernelSvc, "Debugger triggered");
|
||||||
Process.PrintStackTrace(ThreadState);
|
Process.PrintStackTrace(ThreadState);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -267,7 +267,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
string Str = AMemoryHelper.ReadAsciiString(Memory, Position, Size);
|
string Str = AMemoryHelper.ReadAsciiString(Memory, Position, Size);
|
||||||
|
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, Str);
|
Logger.PrintWarning(LogClass.KernelSvc, Str);
|
||||||
|
|
||||||
ThreadState.X0 = 0;
|
ThreadState.X0 = 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
using ChocolArm64.State;
|
using ChocolArm64.State;
|
||||||
using Ryujinx.HLE.Logging;
|
using Ryujinx.Common.Logging;
|
||||||
|
|
||||||
using static Ryujinx.HLE.HOS.ErrorCode;
|
using static Ryujinx.HLE.HOS.ErrorCode;
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if ((uint)Priority > 0x3f)
|
if ((uint)Priority > 0x3f)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Invalid priority 0x{Priority:x8}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Invalid priority 0x{Priority:x8}!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidPriority);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidPriority);
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
}
|
}
|
||||||
else if ((uint)ProcessorId > 3)
|
else if ((uint)ProcessorId > 3)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Invalid core id 0x{ProcessorId:x8}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Invalid core id 0x{ProcessorId:x8}!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidCoreId);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidCoreId);
|
||||||
|
|
||||||
|
@ -61,14 +61,14 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (Result != 0)
|
if (Result != 0)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
|
||||||
}
|
}
|
||||||
|
|
||||||
ThreadState.X0 = (ulong)Result;
|
ThreadState.X0 = (ulong)Result;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Invalid thread handle 0x{Handle:x8}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Invalid thread handle 0x{Handle:x8}!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
|
||||||
}
|
}
|
||||||
|
@ -87,7 +87,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
{
|
{
|
||||||
long Timeout = (long)ThreadState.X0;
|
long Timeout = (long)ThreadState.X0;
|
||||||
|
|
||||||
Device.Log.PrintDebug(LogClass.KernelSvc, "Timeout = 0x" + Timeout.ToString("x16"));
|
Logger.PrintDebug(LogClass.KernelSvc, "Timeout = 0x" + Timeout.ToString("x16"));
|
||||||
|
|
||||||
KThread CurrentThread = System.Scheduler.GetCurrentThread();
|
KThread CurrentThread = System.Scheduler.GetCurrentThread();
|
||||||
|
|
||||||
|
@ -121,7 +121,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Invalid thread handle 0x{Handle:x8}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Invalid thread handle 0x{Handle:x8}!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
|
||||||
}
|
}
|
||||||
|
@ -132,7 +132,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
int Handle = (int)ThreadState.X0;
|
int Handle = (int)ThreadState.X0;
|
||||||
int Priority = (int)ThreadState.X1;
|
int Priority = (int)ThreadState.X1;
|
||||||
|
|
||||||
Device.Log.PrintDebug(LogClass.KernelSvc,
|
Logger.PrintDebug(LogClass.KernelSvc,
|
||||||
"Handle = 0x" + Handle .ToString("x8") + ", " +
|
"Handle = 0x" + Handle .ToString("x8") + ", " +
|
||||||
"Priority = 0x" + Priority.ToString("x8"));
|
"Priority = 0x" + Priority.ToString("x8"));
|
||||||
|
|
||||||
|
@ -142,7 +142,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (Thread == null)
|
if (Thread == null)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Invalid thread handle 0x{Handle:x8}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Invalid thread handle 0x{Handle:x8}!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
|
||||||
|
|
||||||
|
@ -158,7 +158,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
{
|
{
|
||||||
int Handle = (int)ThreadState.X2;
|
int Handle = (int)ThreadState.X2;
|
||||||
|
|
||||||
Device.Log.PrintDebug(LogClass.KernelSvc, "Handle = 0x" + Handle.ToString("x8"));
|
Logger.PrintDebug(LogClass.KernelSvc, "Handle = 0x" + Handle.ToString("x8"));
|
||||||
|
|
||||||
KThread Thread = Process.HandleTable.GetKThread(Handle);
|
KThread Thread = Process.HandleTable.GetKThread(Handle);
|
||||||
|
|
||||||
|
@ -170,7 +170,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Invalid thread handle 0x{Handle:x8}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Invalid thread handle 0x{Handle:x8}!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
|
||||||
}
|
}
|
||||||
|
@ -182,7 +182,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
int PrefferedCore = (int)ThreadState.X1;
|
int PrefferedCore = (int)ThreadState.X1;
|
||||||
long AffinityMask = (long)ThreadState.X2;
|
long AffinityMask = (long)ThreadState.X2;
|
||||||
|
|
||||||
Device.Log.PrintDebug(LogClass.KernelSvc,
|
Logger.PrintDebug(LogClass.KernelSvc,
|
||||||
"Handle = 0x" + Handle .ToString("x8") + ", " +
|
"Handle = 0x" + Handle .ToString("x8") + ", " +
|
||||||
"PrefferedCore = 0x" + PrefferedCore.ToString("x8") + ", " +
|
"PrefferedCore = 0x" + PrefferedCore.ToString("x8") + ", " +
|
||||||
"AffinityMask = 0x" + AffinityMask .ToString("x16"));
|
"AffinityMask = 0x" + AffinityMask .ToString("x16"));
|
||||||
|
@ -202,7 +202,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
{
|
{
|
||||||
if ((PrefferedCore | 2) != -1)
|
if ((PrefferedCore | 2) != -1)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Invalid core id 0x{PrefferedCore:x8}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Invalid core id 0x{PrefferedCore:x8}!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidCoreId);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidCoreId);
|
||||||
|
|
||||||
|
@ -211,7 +211,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
}
|
}
|
||||||
else if ((AffinityMask & (1 << PrefferedCore)) == 0)
|
else if ((AffinityMask & (1 << PrefferedCore)) == 0)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Invalid core mask 0x{AffinityMask:x8}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Invalid core mask 0x{AffinityMask:x8}!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidMaskValue);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidMaskValue);
|
||||||
|
|
||||||
|
@ -223,7 +223,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (Thread == null)
|
if (Thread == null)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Invalid thread handle 0x{Handle:x8}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Invalid thread handle 0x{Handle:x8}!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
|
||||||
|
|
||||||
|
@ -234,7 +234,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (Result != 0)
|
if (Result != 0)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
|
||||||
}
|
}
|
||||||
|
|
||||||
ThreadState.X0 = (ulong)Result;
|
ThreadState.X0 = (ulong)Result;
|
||||||
|
@ -258,7 +258,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Invalid thread handle 0x{Handle:x8}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Invalid thread handle 0x{Handle:x8}!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
|
||||||
}
|
}
|
||||||
|
@ -273,7 +273,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (Thread == null)
|
if (Thread == null)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Invalid thread handle 0x{Handle:x8}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Invalid thread handle 0x{Handle:x8}!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
|
||||||
|
|
||||||
|
@ -282,7 +282,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (Thread.Owner != Process)
|
if (Thread.Owner != Process)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Invalid thread owner process!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Invalid thread owner process!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
|
||||||
|
|
||||||
|
@ -293,7 +293,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (Result != 0)
|
if (Result != 0)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
|
||||||
}
|
}
|
||||||
|
|
||||||
ThreadState.X0 = (ulong)Result;
|
ThreadState.X0 = (ulong)Result;
|
||||||
|
@ -308,7 +308,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (Thread == null)
|
if (Thread == null)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Invalid thread handle 0x{Handle:x8}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Invalid thread handle 0x{Handle:x8}!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
|
||||||
|
|
||||||
|
@ -317,7 +317,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (Process.GetThread(ThreadState.Tpidr) == Thread)
|
if (Process.GetThread(ThreadState.Tpidr) == Thread)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Thread handle 0x{Handle:x8} is current thread!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Thread handle 0x{Handle:x8} is current thread!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidThread);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidThread);
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
using ChocolArm64.State;
|
using ChocolArm64.State;
|
||||||
using Ryujinx.HLE.Logging;
|
using Ryujinx.Common.Logging;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
using static Ryujinx.HLE.HOS.ErrorCode;
|
using static Ryujinx.HLE.HOS.ErrorCode;
|
||||||
|
@ -14,7 +14,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
int HandlesCount = (int)ThreadState.X2;
|
int HandlesCount = (int)ThreadState.X2;
|
||||||
long Timeout = (long)ThreadState.X3;
|
long Timeout = (long)ThreadState.X3;
|
||||||
|
|
||||||
Device.Log.PrintDebug(LogClass.KernelSvc,
|
Logger.PrintDebug(LogClass.KernelSvc,
|
||||||
"HandlesPtr = 0x" + HandlesPtr .ToString("x16") + ", " +
|
"HandlesPtr = 0x" + HandlesPtr .ToString("x16") + ", " +
|
||||||
"HandlesCount = 0x" + HandlesCount.ToString("x8") + ", " +
|
"HandlesCount = 0x" + HandlesCount.ToString("x8") + ", " +
|
||||||
"Timeout = 0x" + Timeout .ToString("x16"));
|
"Timeout = 0x" + Timeout .ToString("x16"));
|
||||||
|
@ -53,11 +53,11 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
if (Result == MakeError(ErrorModule.Kernel, KernelErr.Timeout) ||
|
if (Result == MakeError(ErrorModule.Kernel, KernelErr.Timeout) ||
|
||||||
Result == MakeError(ErrorModule.Kernel, KernelErr.Cancelled))
|
Result == MakeError(ErrorModule.Kernel, KernelErr.Cancelled))
|
||||||
{
|
{
|
||||||
Device.Log.PrintDebug(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
|
Logger.PrintDebug(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,13 +69,13 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
{
|
{
|
||||||
int ThreadHandle = (int)ThreadState.X0;
|
int ThreadHandle = (int)ThreadState.X0;
|
||||||
|
|
||||||
Device.Log.PrintDebug(LogClass.KernelSvc, "ThreadHandle = 0x" + ThreadHandle.ToString("x8"));
|
Logger.PrintDebug(LogClass.KernelSvc, "ThreadHandle = 0x" + ThreadHandle.ToString("x8"));
|
||||||
|
|
||||||
KThread Thread = Process.HandleTable.GetKThread(ThreadHandle);
|
KThread Thread = Process.HandleTable.GetKThread(ThreadHandle);
|
||||||
|
|
||||||
if (Thread == null)
|
if (Thread == null)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Invalid thread handle 0x{ThreadHandle:x8}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Invalid thread handle 0x{ThreadHandle:x8}!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
|
||||||
|
|
||||||
|
@ -93,14 +93,14 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
long MutexAddress = (long)ThreadState.X1;
|
long MutexAddress = (long)ThreadState.X1;
|
||||||
int RequesterHandle = (int)ThreadState.X2;
|
int RequesterHandle = (int)ThreadState.X2;
|
||||||
|
|
||||||
Device.Log.PrintDebug(LogClass.KernelSvc,
|
Logger.PrintDebug(LogClass.KernelSvc,
|
||||||
"OwnerHandle = 0x" + OwnerHandle .ToString("x8") + ", " +
|
"OwnerHandle = 0x" + OwnerHandle .ToString("x8") + ", " +
|
||||||
"MutexAddress = 0x" + MutexAddress .ToString("x16") + ", " +
|
"MutexAddress = 0x" + MutexAddress .ToString("x16") + ", " +
|
||||||
"RequesterHandle = 0x" + RequesterHandle.ToString("x8"));
|
"RequesterHandle = 0x" + RequesterHandle.ToString("x8"));
|
||||||
|
|
||||||
if (IsPointingInsideKernel(MutexAddress))
|
if (IsPointingInsideKernel(MutexAddress))
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Invalid mutex address 0x{MutexAddress:x16}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Invalid mutex address 0x{MutexAddress:x16}!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (IsAddressNotWordAligned(MutexAddress))
|
if (IsAddressNotWordAligned(MutexAddress))
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Unaligned mutex address 0x{MutexAddress:x16}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Unaligned mutex address 0x{MutexAddress:x16}!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
|
||||||
|
|
||||||
|
@ -125,7 +125,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (Result != 0)
|
if (Result != 0)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
|
||||||
}
|
}
|
||||||
|
|
||||||
ThreadState.X0 = (ulong)Result;
|
ThreadState.X0 = (ulong)Result;
|
||||||
|
@ -135,11 +135,11 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
{
|
{
|
||||||
long MutexAddress = (long)ThreadState.X0;
|
long MutexAddress = (long)ThreadState.X0;
|
||||||
|
|
||||||
Device.Log.PrintDebug(LogClass.KernelSvc, "MutexAddress = 0x" + MutexAddress.ToString("x16"));
|
Logger.PrintDebug(LogClass.KernelSvc, "MutexAddress = 0x" + MutexAddress.ToString("x16"));
|
||||||
|
|
||||||
if (IsPointingInsideKernel(MutexAddress))
|
if (IsPointingInsideKernel(MutexAddress))
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Invalid mutex address 0x{MutexAddress:x16}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Invalid mutex address 0x{MutexAddress:x16}!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
|
||||||
|
|
||||||
|
@ -148,7 +148,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (IsAddressNotWordAligned(MutexAddress))
|
if (IsAddressNotWordAligned(MutexAddress))
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Unaligned mutex address 0x{MutexAddress:x16}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Unaligned mutex address 0x{MutexAddress:x16}!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
|
||||||
|
|
||||||
|
@ -159,7 +159,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (Result != 0)
|
if (Result != 0)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
|
||||||
}
|
}
|
||||||
|
|
||||||
ThreadState.X0 = (ulong)Result;
|
ThreadState.X0 = (ulong)Result;
|
||||||
|
@ -172,7 +172,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
int ThreadHandle = (int)ThreadState.X2;
|
int ThreadHandle = (int)ThreadState.X2;
|
||||||
long Timeout = (long)ThreadState.X3;
|
long Timeout = (long)ThreadState.X3;
|
||||||
|
|
||||||
Device.Log.PrintDebug(LogClass.KernelSvc,
|
Logger.PrintDebug(LogClass.KernelSvc,
|
||||||
"MutexAddress = 0x" + MutexAddress .ToString("x16") + ", " +
|
"MutexAddress = 0x" + MutexAddress .ToString("x16") + ", " +
|
||||||
"CondVarAddress = 0x" + CondVarAddress.ToString("x16") + ", " +
|
"CondVarAddress = 0x" + CondVarAddress.ToString("x16") + ", " +
|
||||||
"ThreadHandle = 0x" + ThreadHandle .ToString("x8") + ", " +
|
"ThreadHandle = 0x" + ThreadHandle .ToString("x8") + ", " +
|
||||||
|
@ -180,7 +180,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (IsPointingInsideKernel(MutexAddress))
|
if (IsPointingInsideKernel(MutexAddress))
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Invalid mutex address 0x{MutexAddress:x16}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Invalid mutex address 0x{MutexAddress:x16}!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
|
||||||
|
|
||||||
|
@ -189,7 +189,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (IsAddressNotWordAligned(MutexAddress))
|
if (IsAddressNotWordAligned(MutexAddress))
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Unaligned mutex address 0x{MutexAddress:x16}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Unaligned mutex address 0x{MutexAddress:x16}!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
|
||||||
|
|
||||||
|
@ -207,11 +207,11 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
{
|
{
|
||||||
if (Result == MakeError(ErrorModule.Kernel, KernelErr.Timeout))
|
if (Result == MakeError(ErrorModule.Kernel, KernelErr.Timeout))
|
||||||
{
|
{
|
||||||
Device.Log.PrintDebug(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
|
Logger.PrintDebug(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -223,7 +223,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
long Address = (long)ThreadState.X0;
|
long Address = (long)ThreadState.X0;
|
||||||
int Count = (int)ThreadState.X1;
|
int Count = (int)ThreadState.X1;
|
||||||
|
|
||||||
Device.Log.PrintDebug(LogClass.KernelSvc,
|
Logger.PrintDebug(LogClass.KernelSvc,
|
||||||
"Address = 0x" + Address.ToString("x16") + ", " +
|
"Address = 0x" + Address.ToString("x16") + ", " +
|
||||||
"Count = 0x" + Count .ToString("x8"));
|
"Count = 0x" + Count .ToString("x8"));
|
||||||
|
|
||||||
|
@ -239,7 +239,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
int Value = (int)ThreadState.X2;
|
int Value = (int)ThreadState.X2;
|
||||||
long Timeout = (long)ThreadState.X3;
|
long Timeout = (long)ThreadState.X3;
|
||||||
|
|
||||||
Device.Log.PrintDebug(LogClass.KernelSvc,
|
Logger.PrintDebug(LogClass.KernelSvc,
|
||||||
"Address = 0x" + Address.ToString("x16") + ", " +
|
"Address = 0x" + Address.ToString("x16") + ", " +
|
||||||
"Type = " + Type .ToString() + ", " +
|
"Type = " + Type .ToString() + ", " +
|
||||||
"Value = 0x" + Value .ToString("x8") + ", " +
|
"Value = 0x" + Value .ToString("x8") + ", " +
|
||||||
|
@ -247,7 +247,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (IsPointingInsideKernel(Address))
|
if (IsPointingInsideKernel(Address))
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Invalid address 0x{Address:x16}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Invalid address 0x{Address:x16}!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
|
||||||
|
|
||||||
|
@ -256,7 +256,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (IsAddressNotWordAligned(Address))
|
if (IsAddressNotWordAligned(Address))
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Unaligned address 0x{Address:x16}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Unaligned address 0x{Address:x16}!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
|
||||||
|
|
||||||
|
@ -286,7 +286,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (Result != 0)
|
if (Result != 0)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
|
||||||
}
|
}
|
||||||
|
|
||||||
ThreadState.X0 = (ulong)Result;
|
ThreadState.X0 = (ulong)Result;
|
||||||
|
@ -299,7 +299,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
int Value = (int)ThreadState.X2;
|
int Value = (int)ThreadState.X2;
|
||||||
int Count = (int)ThreadState.X3;
|
int Count = (int)ThreadState.X3;
|
||||||
|
|
||||||
Device.Log.PrintDebug(LogClass.KernelSvc,
|
Logger.PrintDebug(LogClass.KernelSvc,
|
||||||
"Address = 0x" + Address.ToString("x16") + ", " +
|
"Address = 0x" + Address.ToString("x16") + ", " +
|
||||||
"Type = " + Type .ToString() + ", " +
|
"Type = " + Type .ToString() + ", " +
|
||||||
"Value = 0x" + Value .ToString("x8") + ", " +
|
"Value = 0x" + Value .ToString("x8") + ", " +
|
||||||
|
@ -307,7 +307,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (IsPointingInsideKernel(Address))
|
if (IsPointingInsideKernel(Address))
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Invalid address 0x{Address:x16}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Invalid address 0x{Address:x16}!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
|
||||||
|
|
||||||
|
@ -316,7 +316,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (IsAddressNotWordAligned(Address))
|
if (IsAddressNotWordAligned(Address))
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Unaligned address 0x{Address:x16}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Unaligned address 0x{Address:x16}!");
|
||||||
|
|
||||||
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
|
ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
|
||||||
|
|
||||||
|
@ -346,7 +346,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
if (Result != 0)
|
if (Result != 0)
|
||||||
{
|
{
|
||||||
Device.Log.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
|
Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
|
||||||
}
|
}
|
||||||
|
|
||||||
ThreadState.X0 = (ulong)Result;
|
ThreadState.X0 = (ulong)Result;
|
||||||
|
|
|
@ -3,6 +3,7 @@ using ChocolArm64.Events;
|
||||||
using ChocolArm64.Memory;
|
using ChocolArm64.Memory;
|
||||||
using ChocolArm64.State;
|
using ChocolArm64.State;
|
||||||
using LibHac;
|
using LibHac;
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.HLE.Exceptions;
|
using Ryujinx.HLE.Exceptions;
|
||||||
using Ryujinx.HLE.HOS.Diagnostics.Demangler;
|
using Ryujinx.HLE.HOS.Diagnostics.Demangler;
|
||||||
using Ryujinx.HLE.HOS.Kernel;
|
using Ryujinx.HLE.HOS.Kernel;
|
||||||
|
@ -11,7 +12,6 @@ using Ryujinx.HLE.HOS.SystemState;
|
||||||
using Ryujinx.HLE.Loaders;
|
using Ryujinx.HLE.Loaders;
|
||||||
using Ryujinx.HLE.Loaders.Executables;
|
using Ryujinx.HLE.Loaders.Executables;
|
||||||
using Ryujinx.HLE.Loaders.Npdm;
|
using Ryujinx.HLE.Loaders.Npdm;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using Ryujinx.HLE.Utilities;
|
using Ryujinx.HLE.Utilities;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
|
@ -118,7 +118,7 @@ namespace Ryujinx.HLE.HOS
|
||||||
throw new ObjectDisposedException(nameof(Process));
|
throw new ObjectDisposedException(nameof(Process));
|
||||||
}
|
}
|
||||||
|
|
||||||
Device.Log.PrintInfo(LogClass.Loader, $"Image base at 0x{ExecutableBase:x16}.");
|
Logger.PrintInfo(LogClass.Loader, $"Image base at 0x{ExecutableBase:x16}.");
|
||||||
|
|
||||||
Executable Executable = new Executable(Program, MemoryManager, Memory, ExecutableBase);
|
Executable Executable = new Executable(Program, MemoryManager, Memory, ExecutableBase);
|
||||||
|
|
||||||
|
@ -319,7 +319,7 @@ namespace Ryujinx.HLE.HOS
|
||||||
|
|
||||||
string ExeNameWithAddr = $"{Exe.Name}:0x{Offset:x8}";
|
string ExeNameWithAddr = $"{Exe.Name}:0x{Offset:x8}";
|
||||||
|
|
||||||
Device.Log.PrintDebug(LogClass.Cpu, ExeNameWithAddr + " " + SubName);
|
Logger.PrintDebug(LogClass.Cpu, ExeNameWithAddr + " " + SubName);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ATranslator GetTranslator()
|
private ATranslator GetTranslator()
|
||||||
|
@ -374,7 +374,7 @@ namespace Ryujinx.HLE.HOS
|
||||||
FramePointer = Memory.ReadInt64(FramePointer);
|
FramePointer = Memory.ReadInt64(FramePointer);
|
||||||
}
|
}
|
||||||
|
|
||||||
Device.Log.PrintInfo(LogClass.Cpu, Trace.ToString());
|
Logger.PrintInfo(LogClass.Cpu, Trace.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool TryGetSubName(Executable Exe, long Position, out string Name)
|
private bool TryGetSubName(Executable Exe, long Position, out string Name)
|
||||||
|
@ -475,7 +475,7 @@ namespace Ryujinx.HLE.HOS
|
||||||
File.Delete(Executables[0].FilePath);
|
File.Delete(Executables[0].FilePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
Device.Log.PrintInfo(LogClass.Loader, $"Process {ProcessId} exiting...");
|
Logger.PrintInfo(LogClass.Loader, $"Process {ProcessId} exiting...");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.HLE.HOS.Ipc;
|
using Ryujinx.HLE.HOS.Ipc;
|
||||||
using Ryujinx.HLE.HOS.SystemState;
|
using Ryujinx.HLE.HOS.SystemState;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using Ryujinx.HLE.Utilities;
|
using Ryujinx.HLE.Utilities;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
@ -103,7 +103,7 @@ namespace Ryujinx.HLE.HOS.Services.Acc
|
||||||
|
|
||||||
if (!Context.Device.System.State.TryGetUser(Uuid, out UserProfile Profile))
|
if (!Context.Device.System.State.TryGetUser(Uuid, out UserProfile Profile))
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintWarning(LogClass.ServiceAcc, $"User 0x{Uuid} not found!");
|
Logger.PrintWarning(LogClass.ServiceAcc, $"User 0x{Uuid} not found!");
|
||||||
|
|
||||||
return MakeError(ErrorModule.Account, AccErr.UserNotFound);
|
return MakeError(ErrorModule.Account, AccErr.UserNotFound);
|
||||||
}
|
}
|
||||||
|
@ -118,7 +118,7 @@ namespace Ryujinx.HLE.HOS.Services.Acc
|
||||||
{
|
{
|
||||||
long Unknown = Context.RequestData.ReadInt64();
|
long Unknown = Context.RequestData.ReadInt64();
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAcc, $"Stubbed. Unknown: {Unknown}");
|
Logger.PrintStub(LogClass.ServiceAcc, $"Stubbed. Unknown: {Unknown}");
|
||||||
|
|
||||||
Context.ResponseData.Write(false);
|
Context.ResponseData.Write(false);
|
||||||
|
|
||||||
|
@ -130,7 +130,7 @@ namespace Ryujinx.HLE.HOS.Services.Acc
|
||||||
{
|
{
|
||||||
bool Unknown = Context.RequestData.ReadBoolean();
|
bool Unknown = Context.RequestData.ReadBoolean();
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAcc, $"Stubbed. Unknown: {Unknown}");
|
Logger.PrintStub(LogClass.ServiceAcc, $"Stubbed. Unknown: {Unknown}");
|
||||||
|
|
||||||
UserProfile Profile = Context.Device.System.State.LastOpenUser;
|
UserProfile Profile = Context.Device.System.State.LastOpenUser;
|
||||||
|
|
||||||
|
@ -144,7 +144,7 @@ namespace Ryujinx.HLE.HOS.Services.Acc
|
||||||
{
|
{
|
||||||
long Unknown = Context.RequestData.ReadInt64();
|
long Unknown = Context.RequestData.ReadInt64();
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAcc, $"Stubbed. Unknown: {Unknown}");
|
Logger.PrintStub(LogClass.ServiceAcc, $"Stubbed. Unknown: {Unknown}");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.HLE.HOS.Ipc;
|
using Ryujinx.HLE.HOS.Ipc;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using Ryujinx.HLE.Utilities;
|
using Ryujinx.HLE.Utilities;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ namespace Ryujinx.HLE.HOS.Services.Acc
|
||||||
// CheckAvailability()
|
// CheckAvailability()
|
||||||
public long CheckAvailability(ServiceCtx Context)
|
public long CheckAvailability(ServiceCtx Context)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAcc, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAcc, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -37,7 +37,7 @@ namespace Ryujinx.HLE.HOS.Services.Acc
|
||||||
{
|
{
|
||||||
long NetworkServiceAccountId = 0xcafe;
|
long NetworkServiceAccountId = 0xcafe;
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAcc, $"Stubbed. NetworkServiceAccountId: {NetworkServiceAccountId}");
|
Logger.PrintStub(LogClass.ServiceAcc, $"Stubbed. NetworkServiceAccountId: {NetworkServiceAccountId}");
|
||||||
|
|
||||||
Context.ResponseData.Write(NetworkServiceAccountId);
|
Context.ResponseData.Write(NetworkServiceAccountId);
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
using ChocolArm64.Memory;
|
using ChocolArm64.Memory;
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.HLE.HOS.Ipc;
|
using Ryujinx.HLE.HOS.Ipc;
|
||||||
using Ryujinx.HLE.HOS.SystemState;
|
using Ryujinx.HLE.HOS.SystemState;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using Ryujinx.HLE.Utilities;
|
using Ryujinx.HLE.Utilities;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
@ -37,7 +37,7 @@ namespace Ryujinx.HLE.HOS.Services.Acc
|
||||||
|
|
||||||
public long Get(ServiceCtx Context)
|
public long Get(ServiceCtx Context)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAcc, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAcc, "Stubbed.");
|
||||||
|
|
||||||
long Position = Context.Request.ReceiveBuff[0].Position;
|
long Position = Context.Request.ReceiveBuff[0].Position;
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.HLE.HOS.Ipc;
|
using Ryujinx.HLE.HOS.Ipc;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace Ryujinx.HLE.HOS.Services.Am
|
namespace Ryujinx.HLE.HOS.Services.Am
|
||||||
|
@ -39,7 +39,7 @@ namespace Ryujinx.HLE.HOS.Services.Am
|
||||||
long UIdLow = Context.RequestData.ReadInt64();
|
long UIdLow = Context.RequestData.ReadInt64();
|
||||||
long UIdHigh = Context.RequestData.ReadInt64();
|
long UIdHigh = Context.RequestData.ReadInt64();
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
||||||
|
|
||||||
Context.ResponseData.Write(0L);
|
Context.ResponseData.Write(0L);
|
||||||
|
|
||||||
|
@ -59,7 +59,7 @@ namespace Ryujinx.HLE.HOS.Services.Am
|
||||||
|
|
||||||
string Result = GetFormattedErrorCode(ErrorCode);
|
string Result = GetFormattedErrorCode(ErrorCode);
|
||||||
|
|
||||||
Context.Device.Log.PrintInfo(LogClass.ServiceAm, $"Result = 0x{ErrorCode:x8} ({Result}).");
|
Logger.PrintInfo(LogClass.ServiceAm, $"Result = 0x{ErrorCode:x8} ({Result}).");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -90,7 +90,7 @@ namespace Ryujinx.HLE.HOS.Services.Am
|
||||||
|
|
||||||
public long GetPseudoDeviceId(ServiceCtx Context)
|
public long GetPseudoDeviceId(ServiceCtx Context)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
||||||
|
|
||||||
Context.ResponseData.Write(0L);
|
Context.ResponseData.Write(0L);
|
||||||
Context.ResponseData.Write(0L);
|
Context.ResponseData.Write(0L);
|
||||||
|
@ -100,7 +100,7 @@ namespace Ryujinx.HLE.HOS.Services.Am
|
||||||
|
|
||||||
public long InitializeGamePlayRecording(ServiceCtx Context)
|
public long InitializeGamePlayRecording(ServiceCtx Context)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -109,7 +109,7 @@ namespace Ryujinx.HLE.HOS.Services.Am
|
||||||
{
|
{
|
||||||
int State = Context.RequestData.ReadInt32();
|
int State = Context.RequestData.ReadInt32();
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.HLE.HOS.Ipc;
|
using Ryujinx.HLE.HOS.Ipc;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace Ryujinx.HLE.HOS.Services.Am
|
namespace Ryujinx.HLE.HOS.Services.Am
|
||||||
|
@ -27,7 +27,7 @@ namespace Ryujinx.HLE.HOS.Services.Am
|
||||||
float AppletVolume = Context.RequestData.ReadSingle();
|
float AppletVolume = Context.RequestData.ReadSingle();
|
||||||
float LibraryAppletVolume = Context.RequestData.ReadSingle();
|
float LibraryAppletVolume = Context.RequestData.ReadSingle();
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -36,7 +36,7 @@ namespace Ryujinx.HLE.HOS.Services.Am
|
||||||
{
|
{
|
||||||
Context.ResponseData.Write(1f);
|
Context.ResponseData.Write(1f);
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,7 @@ namespace Ryujinx.HLE.HOS.Services.Am
|
||||||
{
|
{
|
||||||
Context.ResponseData.Write(1f);
|
Context.ResponseData.Write(1f);
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -55,7 +55,7 @@ namespace Ryujinx.HLE.HOS.Services.Am
|
||||||
float Unknown0 = Context.RequestData.ReadSingle();
|
float Unknown0 = Context.RequestData.ReadSingle();
|
||||||
long Unknown1 = Context.RequestData.ReadInt64();
|
long Unknown1 = Context.RequestData.ReadInt64();
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -64,7 +64,7 @@ namespace Ryujinx.HLE.HOS.Services.Am
|
||||||
{
|
{
|
||||||
float Unknown0 = Context.RequestData.ReadSingle();
|
float Unknown0 = Context.RequestData.ReadSingle();
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.HLE.HOS.Ipc;
|
using Ryujinx.HLE.HOS.Ipc;
|
||||||
using Ryujinx.HLE.HOS.Kernel;
|
using Ryujinx.HLE.HOS.Kernel;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
@ -85,7 +85,7 @@ namespace Ryujinx.HLE.HOS.Services.Am
|
||||||
{
|
{
|
||||||
Context.ResponseData.Write((byte)0); //Unknown value.
|
Context.ResponseData.Write((byte)0); //Unknown value.
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -114,7 +114,7 @@ namespace Ryujinx.HLE.HOS.Services.Am
|
||||||
|
|
||||||
Context.Response.HandleDesc = IpcHandleDesc.MakeCopy(Handle);
|
Context.Response.HandleDesc = IpcHandleDesc.MakeCopy(Handle);
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.HLE.HOS.Ipc;
|
using Ryujinx.HLE.HOS.Ipc;
|
||||||
using Ryujinx.HLE.HOS.Kernel;
|
using Ryujinx.HLE.HOS.Kernel;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ namespace Ryujinx.HLE.HOS.Services.Am
|
||||||
|
|
||||||
public long RequestToGetForeground(ServiceCtx Context)
|
public long RequestToGetForeground(ServiceCtx Context)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,7 @@ namespace Ryujinx.HLE.HOS.Services.Am
|
||||||
|
|
||||||
Context.Response.HandleDesc = IpcHandleDesc.MakeCopy(Handle);
|
Context.Response.HandleDesc = IpcHandleDesc.MakeCopy(Handle);
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
using Ryujinx.HLE.HOS.Ipc;
|
using Ryujinx.Common.Logging;
|
||||||
|
using Ryujinx.HLE.HOS.Ipc;
|
||||||
using Ryujinx.HLE.HOS.Kernel;
|
using Ryujinx.HLE.HOS.Kernel;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
@ -39,28 +39,28 @@ namespace Ryujinx.HLE.HOS.Services.Am
|
||||||
|
|
||||||
Context.Response.HandleDesc = IpcHandleDesc.MakeCopy(Handle);
|
Context.Response.HandleDesc = IpcHandleDesc.MakeCopy(Handle);
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long Start(ServiceCtx Context)
|
public long Start(ServiceCtx Context)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long GetResult(ServiceCtx Context)
|
public long GetResult(ServiceCtx Context)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long PushInData(ServiceCtx Context)
|
public long PushInData(ServiceCtx Context)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.HLE.HOS.Ipc;
|
using Ryujinx.HLE.HOS.Ipc;
|
||||||
using Ryujinx.HLE.HOS.Kernel;
|
using Ryujinx.HLE.HOS.Kernel;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
@ -41,21 +41,21 @@ namespace Ryujinx.HLE.HOS.Services.Am
|
||||||
|
|
||||||
public long Exit(ServiceCtx Context)
|
public long Exit(ServiceCtx Context)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long LockExit(ServiceCtx Context)
|
public long LockExit(ServiceCtx Context)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long UnlockExit(ServiceCtx Context)
|
public long UnlockExit(ServiceCtx Context)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -71,7 +71,7 @@ namespace Ryujinx.HLE.HOS.Services.Am
|
||||||
|
|
||||||
Context.Response.HandleDesc = IpcHandleDesc.MakeCopy(Handle);
|
Context.Response.HandleDesc = IpcHandleDesc.MakeCopy(Handle);
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -80,7 +80,7 @@ namespace Ryujinx.HLE.HOS.Services.Am
|
||||||
{
|
{
|
||||||
bool Enable = Context.RequestData.ReadByte() != 0 ? true : false;
|
bool Enable = Context.RequestData.ReadByte() != 0 ? true : false;
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -89,7 +89,7 @@ namespace Ryujinx.HLE.HOS.Services.Am
|
||||||
{
|
{
|
||||||
bool Enable = Context.RequestData.ReadByte() != 0 ? true : false;
|
bool Enable = Context.RequestData.ReadByte() != 0 ? true : false;
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -98,7 +98,7 @@ namespace Ryujinx.HLE.HOS.Services.Am
|
||||||
{
|
{
|
||||||
bool Enable = Context.RequestData.ReadByte() != 0 ? true : false;
|
bool Enable = Context.RequestData.ReadByte() != 0 ? true : false;
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -109,7 +109,7 @@ namespace Ryujinx.HLE.HOS.Services.Am
|
||||||
bool Flag2 = Context.RequestData.ReadByte() != 0 ? true : false;
|
bool Flag2 = Context.RequestData.ReadByte() != 0 ? true : false;
|
||||||
bool Flag3 = Context.RequestData.ReadByte() != 0 ? true : false;
|
bool Flag3 = Context.RequestData.ReadByte() != 0 ? true : false;
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -118,7 +118,7 @@ namespace Ryujinx.HLE.HOS.Services.Am
|
||||||
{
|
{
|
||||||
bool Enable = Context.RequestData.ReadByte() != 0 ? true : false;
|
bool Enable = Context.RequestData.ReadByte() != 0 ? true : false;
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -127,7 +127,7 @@ namespace Ryujinx.HLE.HOS.Services.Am
|
||||||
{
|
{
|
||||||
bool Enable = Context.RequestData.ReadByte() != 0 ? true : false;
|
bool Enable = Context.RequestData.ReadByte() != 0 ? true : false;
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -136,7 +136,7 @@ namespace Ryujinx.HLE.HOS.Services.Am
|
||||||
{
|
{
|
||||||
int Orientation = Context.RequestData.ReadInt32();
|
int Orientation = Context.RequestData.ReadInt32();
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -145,7 +145,7 @@ namespace Ryujinx.HLE.HOS.Services.Am
|
||||||
{
|
{
|
||||||
bool Enable = Context.RequestData.ReadByte() != 0 ? true : false;
|
bool Enable = Context.RequestData.ReadByte() != 0 ? true : false;
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -155,7 +155,7 @@ namespace Ryujinx.HLE.HOS.Services.Am
|
||||||
{
|
{
|
||||||
IdleTimeDetectionExtension = Context.RequestData.ReadInt32();
|
IdleTimeDetectionExtension = Context.RequestData.ReadInt32();
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAm, $"Stubbed. IdleTimeDetectionExtension: {IdleTimeDetectionExtension}");
|
Logger.PrintStub(LogClass.ServiceAm, $"Stubbed. IdleTimeDetectionExtension: {IdleTimeDetectionExtension}");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -165,7 +165,7 @@ namespace Ryujinx.HLE.HOS.Services.Am
|
||||||
{
|
{
|
||||||
Context.ResponseData.Write(IdleTimeDetectionExtension);
|
Context.ResponseData.Write(IdleTimeDetectionExtension);
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAm, $"Stubbed. IdleTimeDetectionExtension: {IdleTimeDetectionExtension}");
|
Logger.PrintStub(LogClass.ServiceAm, $"Stubbed. IdleTimeDetectionExtension: {IdleTimeDetectionExtension}");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.HLE.HOS.Ipc;
|
using Ryujinx.HLE.HOS.Ipc;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace Ryujinx.HLE.HOS.Services.Am
|
namespace Ryujinx.HLE.HOS.Services.Am
|
||||||
|
@ -21,7 +21,7 @@ namespace Ryujinx.HLE.HOS.Services.Am
|
||||||
|
|
||||||
public long GetAppletResourceUserId(ServiceCtx Context)
|
public long GetAppletResourceUserId(ServiceCtx Context)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
||||||
|
|
||||||
Context.ResponseData.Write(0L);
|
Context.ResponseData.Write(0L);
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ namespace Ryujinx.HLE.HOS.Services.Am
|
||||||
|
|
||||||
public long AcquireForegroundRights(ServiceCtx Context)
|
public long AcquireForegroundRights(ServiceCtx Context)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.HLE.HOS.Ipc;
|
using Ryujinx.HLE.HOS.Ipc;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace Ryujinx.HLE.HOS.Services.Apm
|
namespace Ryujinx.HLE.HOS.Services.Apm
|
||||||
|
@ -33,7 +33,7 @@ namespace Ryujinx.HLE.HOS.Services.Apm
|
||||||
|
|
||||||
Context.ResponseData.Write((uint)PerformanceConfiguration.PerformanceConfiguration1);
|
Context.ResponseData.Write((uint)PerformanceConfiguration.PerformanceConfiguration1);
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceApm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceApm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
using ChocolArm64.Memory;
|
using ChocolArm64.Memory;
|
||||||
using Ryujinx.Audio;
|
using Ryujinx.Audio;
|
||||||
using Ryujinx.Audio.Adpcm;
|
using Ryujinx.Audio.Adpcm;
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.HLE.HOS.Ipc;
|
using Ryujinx.HLE.HOS.Ipc;
|
||||||
using Ryujinx.HLE.HOS.Kernel;
|
using Ryujinx.HLE.HOS.Kernel;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using Ryujinx.HLE.Utilities;
|
using Ryujinx.HLE.Utilities;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
@ -107,7 +107,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud.AudioRenderer
|
||||||
{
|
{
|
||||||
Context.ResponseData.Write((int)PlayState);
|
Context.ResponseData.Write((int)PlayState);
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAudio, $"Stubbed. Renderer State: {Enum.GetName(typeof(PlayState), PlayState)}");
|
Logger.PrintStub(LogClass.ServiceAudio, $"Stubbed. Renderer State: {Enum.GetName(typeof(PlayState), PlayState)}");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -246,7 +246,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud.AudioRenderer
|
||||||
|
|
||||||
public long StartAudioRenderer(ServiceCtx Context)
|
public long StartAudioRenderer(ServiceCtx Context)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAudio, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAudio, "Stubbed.");
|
||||||
|
|
||||||
PlayState = PlayState.Playing;
|
PlayState = PlayState.Playing;
|
||||||
|
|
||||||
|
@ -255,7 +255,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud.AudioRenderer
|
||||||
|
|
||||||
public long StopAudioRenderer(ServiceCtx Context)
|
public long StopAudioRenderer(ServiceCtx Context)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAudio, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAudio, "Stubbed.");
|
||||||
|
|
||||||
PlayState = PlayState.Stopped;
|
PlayState = PlayState.Stopped;
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.HLE.HOS.Ipc;
|
using Ryujinx.HLE.HOS.Ipc;
|
||||||
using Ryujinx.HLE.HOS.Kernel;
|
using Ryujinx.HLE.HOS.Kernel;
|
||||||
using Ryujinx.HLE.HOS.SystemState;
|
using Ryujinx.HLE.HOS.SystemState;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
@ -56,7 +56,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud
|
||||||
|
|
||||||
if ((Position - BasePosition) + Buffer.Length > Size)
|
if ((Position - BasePosition) + Buffer.Length > Size)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintError(LogClass.ServiceAudio, $"Output buffer size {Size} too small!");
|
Logger.PrintError(LogClass.ServiceAudio, $"Output buffer size {Size} too small!");
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -80,7 +80,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud
|
||||||
|
|
||||||
string DeviceName = Encoding.ASCII.GetString(DeviceNameBuffer);
|
string DeviceName = Encoding.ASCII.GetString(DeviceNameBuffer);
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAudio, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAudio, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -100,7 +100,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintError(LogClass.ServiceAudio, $"Output buffer size {Size} too small!");
|
Logger.PrintError(LogClass.ServiceAudio, $"Output buffer size {Size} too small!");
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -115,7 +115,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud
|
||||||
|
|
||||||
Context.Response.HandleDesc = IpcHandleDesc.MakeCopy(Handle);
|
Context.Response.HandleDesc = IpcHandleDesc.MakeCopy(Handle);
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAudio, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAudio, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -124,7 +124,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud
|
||||||
{
|
{
|
||||||
Context.ResponseData.Write(2);
|
Context.ResponseData.Write(2);
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAudio, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAudio, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -145,7 +145,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud
|
||||||
|
|
||||||
if ((Position - BasePosition) + Buffer.Length > Size)
|
if ((Position - BasePosition) + Buffer.Length > Size)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintError(LogClass.ServiceAudio, $"Output buffer size {Size} too small!");
|
Logger.PrintError(LogClass.ServiceAudio, $"Output buffer size {Size} too small!");
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -168,7 +168,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud
|
||||||
|
|
||||||
string DeviceName = Encoding.UTF8.GetString(DeviceNameBuffer);
|
string DeviceName = Encoding.UTF8.GetString(DeviceNameBuffer);
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAudio, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAudio, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -177,7 +177,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud
|
||||||
{
|
{
|
||||||
Context.ResponseData.Write(1f);
|
Context.ResponseData.Write(1f);
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAudio, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAudio, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -196,7 +196,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintError(LogClass.ServiceAudio, $"Output buffer size {Size} too small!");
|
Logger.PrintError(LogClass.ServiceAudio, $"Output buffer size {Size} too small!");
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -211,7 +211,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud
|
||||||
|
|
||||||
Context.Response.HandleDesc = IpcHandleDesc.MakeCopy(Handle);
|
Context.Response.HandleDesc = IpcHandleDesc.MakeCopy(Handle);
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAudio, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAudio, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -225,7 +225,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud
|
||||||
|
|
||||||
Context.Response.HandleDesc = IpcHandleDesc.MakeCopy(Handle);
|
Context.Response.HandleDesc = IpcHandleDesc.MakeCopy(Handle);
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAudio, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceAudio, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
using ChocolArm64.Memory;
|
using ChocolArm64.Memory;
|
||||||
using Ryujinx.Audio;
|
using Ryujinx.Audio;
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.HLE.HOS.Ipc;
|
using Ryujinx.HLE.HOS.Ipc;
|
||||||
using Ryujinx.HLE.HOS.Kernel;
|
using Ryujinx.HLE.HOS.Kernel;
|
||||||
using Ryujinx.HLE.HOS.Services.Aud.AudioOut;
|
using Ryujinx.HLE.HOS.Services.Aud.AudioOut;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
|
@ -86,7 +86,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintError(LogClass.ServiceAudio, $"Output buffer size {Size} too small!");
|
Logger.PrintError(LogClass.ServiceAudio, $"Output buffer size {Size} too small!");
|
||||||
}
|
}
|
||||||
|
|
||||||
Context.ResponseData.Write(NameCount);
|
Context.ResponseData.Write(NameCount);
|
||||||
|
@ -108,7 +108,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud
|
||||||
|
|
||||||
if (DeviceName != DefaultAudioOutput)
|
if (DeviceName != DefaultAudioOutput)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintWarning(LogClass.Audio, "Invalid device name!");
|
Logger.PrintWarning(LogClass.Audio, "Invalid device name!");
|
||||||
|
|
||||||
return MakeError(ErrorModule.Audio, AudErr.DeviceNotFound);
|
return MakeError(ErrorModule.Audio, AudErr.DeviceNotFound);
|
||||||
}
|
}
|
||||||
|
@ -121,7 +121,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintError(LogClass.ServiceAudio, $"Output buffer size {ReceiveSize} too small!");
|
Logger.PrintError(LogClass.ServiceAudio, $"Output buffer size {ReceiveSize} too small!");
|
||||||
}
|
}
|
||||||
|
|
||||||
int SampleRate = Context.RequestData.ReadInt32();
|
int SampleRate = Context.RequestData.ReadInt32();
|
||||||
|
@ -134,7 +134,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud
|
||||||
|
|
||||||
if (SampleRate != DefaultSampleRate)
|
if (SampleRate != DefaultSampleRate)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintWarning(LogClass.Audio, "Invalid sample rate!");
|
Logger.PrintWarning(LogClass.Audio, "Invalid sample rate!");
|
||||||
|
|
||||||
return MakeError(ErrorModule.Audio, AudErr.UnsupportedSampleRate);
|
return MakeError(ErrorModule.Audio, AudErr.UnsupportedSampleRate);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
using Ryujinx.Audio;
|
using Ryujinx.Audio;
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.HLE.HOS.Ipc;
|
using Ryujinx.HLE.HOS.Ipc;
|
||||||
using Ryujinx.HLE.HOS.Services.Aud.AudioRenderer;
|
using Ryujinx.HLE.HOS.Services.Aud.AudioRenderer;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using Ryujinx.HLE.Utilities;
|
using Ryujinx.HLE.Utilities;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
@ -104,7 +104,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud
|
||||||
|
|
||||||
Context.ResponseData.Write(Size);
|
Context.ResponseData.Write(Size);
|
||||||
|
|
||||||
Context.Device.Log.PrintDebug(LogClass.ServiceAudio, $"WorkBufferSize is 0x{Size:x16}.");
|
Logger.PrintDebug(LogClass.ServiceAudio, $"WorkBufferSize is 0x{Size:x16}.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -112,7 +112,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud
|
||||||
{
|
{
|
||||||
Context.ResponseData.Write(0L);
|
Context.ResponseData.Write(0L);
|
||||||
|
|
||||||
Context.Device.Log.PrintWarning(LogClass.ServiceAudio, $"Library Revision 0x{Params.Revision:x8} is not supported!");
|
Logger.PrintWarning(LogClass.ServiceAudio, $"Library Revision 0x{Params.Revision:x8} is not supported!");
|
||||||
|
|
||||||
return MakeError(ErrorModule.Audio, AudErr.UnsupportedRevision);
|
return MakeError(ErrorModule.Audio, AudErr.UnsupportedRevision);
|
||||||
}
|
}
|
||||||
|
@ -179,7 +179,7 @@ namespace Ryujinx.HLE.HOS.Services.Aud
|
||||||
long AppletResourceUserId = Context.RequestData.ReadInt64();
|
long AppletResourceUserId = Context.RequestData.ReadInt64();
|
||||||
int RevisionInfo = Context.RequestData.ReadInt32();
|
int RevisionInfo = Context.RequestData.ReadInt32();
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceAudio, $"Stubbed. AppletResourceUserId: {AppletResourceUserId} - " +
|
Logger.PrintStub(LogClass.ServiceAudio, $"Stubbed. AppletResourceUserId: {AppletResourceUserId} - " +
|
||||||
$"RevisionInfo: {RevisionInfo}");
|
$"RevisionInfo: {RevisionInfo}");
|
||||||
|
|
||||||
return GetAudioDeviceService(Context);
|
return GetAudioDeviceService(Context);
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.HLE.HOS.Ipc;
|
using Ryujinx.HLE.HOS.Ipc;
|
||||||
using Ryujinx.HLE.HOS.SystemState;
|
using Ryujinx.HLE.HOS.SystemState;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using Ryujinx.HLE.Utilities;
|
using Ryujinx.HLE.Utilities;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
@ -46,15 +46,15 @@ namespace Ryujinx.HLE.HOS.Services.Friend
|
||||||
// There are no friends online, so we return 0 because the nn::account::NetworkServiceAccountId array is empty.
|
// There are no friends online, so we return 0 because the nn::account::NetworkServiceAccountId array is empty.
|
||||||
Context.ResponseData.Write(0);
|
Context.ResponseData.Write(0);
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceFriend, $"Stubbed. UserId: {Uuid.ToString()} - " +
|
Logger.PrintStub(LogClass.ServiceFriend, $"Stubbed. UserId: {Uuid.ToString()} - " +
|
||||||
$"Unknown0: {Unknown0} - " +
|
$"Unknown0: {Unknown0} - " +
|
||||||
$"PresenceStatus: {Filter.PresenceStatus} - " +
|
$"PresenceStatus: {Filter.PresenceStatus} - " +
|
||||||
$"IsFavoriteOnly: {Filter.IsFavoriteOnly} - " +
|
$"IsFavoriteOnly: {Filter.IsFavoriteOnly} - " +
|
||||||
$"IsSameAppPresenceOnly: {Filter.IsSameAppPresenceOnly} - " +
|
$"IsSameAppPresenceOnly: {Filter.IsSameAppPresenceOnly} - " +
|
||||||
$"IsSameAppPlayedOnly: {Filter.IsSameAppPlayedOnly} - " +
|
$"IsSameAppPlayedOnly: {Filter.IsSameAppPlayedOnly} - " +
|
||||||
$"IsArbitraryAppPlayedOnly: {Filter.IsArbitraryAppPlayedOnly} - " +
|
$"IsArbitraryAppPlayedOnly: {Filter.IsArbitraryAppPlayedOnly} - " +
|
||||||
$"PresenceGroupId: {Filter.PresenceGroupId} - " +
|
$"PresenceGroupId: {Filter.PresenceGroupId} - " +
|
||||||
$"Unknown1: {Unknown1}");
|
$"Unknown1: {Unknown1}");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -71,8 +71,8 @@ namespace Ryujinx.HLE.HOS.Services.Friend
|
||||||
Profile.OnlinePlayState = OpenCloseState.Closed;
|
Profile.OnlinePlayState = OpenCloseState.Closed;
|
||||||
}
|
}
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceFriend, $"Stubbed. Uuid: {Uuid.ToString()} - " +
|
Logger.PrintStub(LogClass.ServiceFriend, $"Stubbed. Uuid: {Uuid.ToString()} - " +
|
||||||
$"OnlinePlayState: {Profile.OnlinePlayState}");
|
$"OnlinePlayState: {Profile.OnlinePlayState}");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -91,8 +91,8 @@ namespace Ryujinx.HLE.HOS.Services.Friend
|
||||||
|
|
||||||
//Todo: Write the buffer content.
|
//Todo: Write the buffer content.
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceFriend, $"Stubbed. Uuid: {Uuid.ToString()} - " +
|
Logger.PrintStub(LogClass.ServiceFriend, $"Stubbed. Uuid: {Uuid.ToString()} - " +
|
||||||
$"Unknown0: {Unknown0}");
|
$"Unknown0: {Unknown0}");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,6 +1,6 @@
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.HLE.HOS.Ipc;
|
using Ryujinx.HLE.HOS.Ipc;
|
||||||
using Ryujinx.HLE.HOS.Kernel;
|
using Ryujinx.HLE.HOS.Kernel;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
@ -91,7 +91,7 @@ namespace Ryujinx.HLE.HOS.Services
|
||||||
{
|
{
|
||||||
Context.ResponseData.BaseStream.Seek(IsDomain ? 0x20 : 0x10, SeekOrigin.Begin);
|
Context.ResponseData.BaseStream.Seek(IsDomain ? 0x20 : 0x10, SeekOrigin.Begin);
|
||||||
|
|
||||||
Context.Device.Log.PrintDebug(LogClass.KernelIpc, $"{Service.GetType().Name}: {ProcessRequest.Method.Name}");
|
Logger.PrintDebug(LogClass.KernelIpc, $"{Service.GetType().Name}: {ProcessRequest.Method.Name}");
|
||||||
|
|
||||||
long Result = ProcessRequest(Context);
|
long Result = ProcessRequest(Context);
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
using Ryujinx.HLE.HOS.Ipc;
|
using Ryujinx.Common.Logging;
|
||||||
|
using Ryujinx.HLE.HOS.Ipc;
|
||||||
using Ryujinx.HLE.HOS.Kernel;
|
using Ryujinx.HLE.HOS.Kernel;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ namespace Ryujinx.HLE.HOS.Services.Irs
|
||||||
{
|
{
|
||||||
long AppletResourceUserId = Context.RequestData.ReadInt64();
|
long AppletResourceUserId = Context.RequestData.ReadInt64();
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceIrs, $"Stubbed. AppletResourceUserId: {AppletResourceUserId}");
|
Logger.PrintStub(LogClass.ServiceIrs, $"Stubbed. AppletResourceUserId: {AppletResourceUserId}");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,7 @@ namespace Ryujinx.HLE.HOS.Services.Irs
|
||||||
{
|
{
|
||||||
long AppletResourceUserId = Context.RequestData.ReadInt64();
|
long AppletResourceUserId = Context.RequestData.ReadInt64();
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceIrs, $"Stubbed. AppletResourceUserId: {AppletResourceUserId}");
|
Logger.PrintStub(LogClass.ServiceIrs, $"Stubbed. AppletResourceUserId: {AppletResourceUserId}");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.HLE.HOS.Ipc;
|
using Ryujinx.HLE.HOS.Ipc;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
@ -88,11 +88,11 @@ namespace Ryujinx.HLE.HOS.Services.Lm
|
||||||
|
|
||||||
switch((LmLogLevel)Level)
|
switch((LmLogLevel)Level)
|
||||||
{
|
{
|
||||||
case LmLogLevel.Trace: Context.Device.Log.PrintDebug (LogClass.ServiceLm, Text); break;
|
case LmLogLevel.Trace: Logger.PrintDebug (LogClass.ServiceLm, Text); break;
|
||||||
case LmLogLevel.Info: Context.Device.Log.PrintInfo (LogClass.ServiceLm, Text); break;
|
case LmLogLevel.Info: Logger.PrintInfo (LogClass.ServiceLm, Text); break;
|
||||||
case LmLogLevel.Warning: Context.Device.Log.PrintWarning(LogClass.ServiceLm, Text); break;
|
case LmLogLevel.Warning: Logger.PrintWarning(LogClass.ServiceLm, Text); break;
|
||||||
case LmLogLevel.Error: Context.Device.Log.PrintError (LogClass.ServiceLm, Text); break;
|
case LmLogLevel.Error: Logger.PrintError (LogClass.ServiceLm, Text); break;
|
||||||
case LmLogLevel.Critical: Context.Device.Log.PrintError (LogClass.ServiceLm, Text); break;
|
case LmLogLevel.Critical: Logger.PrintError (LogClass.ServiceLm, Text); break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.HLE.HOS.Ipc;
|
using Ryujinx.HLE.HOS.Ipc;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
@ -29,21 +29,21 @@ namespace Ryujinx.HLE.HOS.Services.Mm
|
||||||
int Unknown1 = Context.RequestData.ReadInt32();
|
int Unknown1 = Context.RequestData.ReadInt32();
|
||||||
int Unknown2 = Context.RequestData.ReadInt32();
|
int Unknown2 = Context.RequestData.ReadInt32();
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceMm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceMm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long Initialize(ServiceCtx Context)
|
public long Initialize(ServiceCtx Context)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceMm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceMm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long SetAndWait(ServiceCtx Context)
|
public long SetAndWait(ServiceCtx Context)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceMm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceMm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ namespace Ryujinx.HLE.HOS.Services.Mm
|
||||||
{
|
{
|
||||||
Context.ResponseData.Write(0);
|
Context.ResponseData.Write(0);
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceMm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceMm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
using Ryujinx.HLE.HOS.Ipc;
|
using Ryujinx.Common.Logging;
|
||||||
|
using Ryujinx.HLE.HOS.Ipc;
|
||||||
using Ryujinx.HLE.HOS.Kernel;
|
using Ryujinx.HLE.HOS.Kernel;
|
||||||
using Ryujinx.HLE.Input;
|
using Ryujinx.HLE.Input;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ namespace Ryujinx.HLE.HOS.Services.Nfp
|
||||||
|
|
||||||
public long Initialize(ServiceCtx Context)
|
public long Initialize(ServiceCtx Context)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceNfp, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceNfp, "Stubbed.");
|
||||||
|
|
||||||
State = State.Initialized;
|
State = State.Initialized;
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ namespace Ryujinx.HLE.HOS.Services.Nfp
|
||||||
|
|
||||||
public long AttachActivateEvent(ServiceCtx Context)
|
public long AttachActivateEvent(ServiceCtx Context)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceNfp, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceNfp, "Stubbed.");
|
||||||
|
|
||||||
if (Context.Process.HandleTable.GenerateHandle(ActivateEvent.ReadableEvent, out int Handle) != KernelResult.Success)
|
if (Context.Process.HandleTable.GenerateHandle(ActivateEvent.ReadableEvent, out int Handle) != KernelResult.Success)
|
||||||
{
|
{
|
||||||
|
@ -68,7 +68,7 @@ namespace Ryujinx.HLE.HOS.Services.Nfp
|
||||||
|
|
||||||
public long AttachDeactivateEvent(ServiceCtx Context)
|
public long AttachDeactivateEvent(ServiceCtx Context)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceNfp, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceNfp, "Stubbed.");
|
||||||
|
|
||||||
if (Context.Process.HandleTable.GenerateHandle(DeactivateEvent.ReadableEvent, out int Handle) != KernelResult.Success)
|
if (Context.Process.HandleTable.GenerateHandle(DeactivateEvent.ReadableEvent, out int Handle) != KernelResult.Success)
|
||||||
{
|
{
|
||||||
|
@ -84,7 +84,7 @@ namespace Ryujinx.HLE.HOS.Services.Nfp
|
||||||
{
|
{
|
||||||
Context.ResponseData.Write((int)State);
|
Context.ResponseData.Write((int)State);
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceNfp, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceNfp, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -93,7 +93,7 @@ namespace Ryujinx.HLE.HOS.Services.Nfp
|
||||||
{
|
{
|
||||||
Context.ResponseData.Write((int)DeviceState);
|
Context.ResponseData.Write((int)DeviceState);
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceNfp, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceNfp, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -102,14 +102,14 @@ namespace Ryujinx.HLE.HOS.Services.Nfp
|
||||||
{
|
{
|
||||||
Context.ResponseData.Write((int)NpadId);
|
Context.ResponseData.Write((int)NpadId);
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceNfp, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceNfp, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long AttachAvailabilityChangeEvent(ServiceCtx Context)
|
public long AttachAvailabilityChangeEvent(ServiceCtx Context)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceNfp, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceNfp, "Stubbed.");
|
||||||
|
|
||||||
if (Context.Process.HandleTable.GenerateHandle(AvailabilityChangeEvent.ReadableEvent, out int Handle) != KernelResult.Success)
|
if (Context.Process.HandleTable.GenerateHandle(AvailabilityChangeEvent.ReadableEvent, out int Handle) != KernelResult.Success)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.HLE.HOS.Ipc;
|
using Ryujinx.HLE.HOS.Ipc;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
@ -32,7 +32,7 @@ namespace Ryujinx.HLE.HOS.Services.Nifm
|
||||||
|
|
||||||
MakeObject(Context, new IRequest(Context.Device.System));
|
MakeObject(Context, new IRequest(Context.Device.System));
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceNifm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceNifm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -50,7 +50,7 @@ namespace Ryujinx.HLE.HOS.Services.Nifm
|
||||||
|
|
||||||
Context.ResponseData.Write(BitConverter.ToUInt32(Address.GetAddressBytes()));
|
Context.ResponseData.Write(BitConverter.ToUInt32(Address.GetAddressBytes()));
|
||||||
|
|
||||||
Context.Device.Log.PrintInfo(LogClass.ServiceNifm, $"Console's local IP is \"{Address}\".");
|
Logger.PrintInfo(LogClass.ServiceNifm, $"Console's local IP is \"{Address}\".");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.HLE.HOS.Ipc;
|
using Ryujinx.HLE.HOS.Ipc;
|
||||||
using Ryujinx.HLE.HOS.Kernel;
|
using Ryujinx.HLE.HOS.Kernel;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
@ -35,14 +35,14 @@ namespace Ryujinx.HLE.HOS.Services.Nifm
|
||||||
{
|
{
|
||||||
Context.ResponseData.Write(1);
|
Context.ResponseData.Write(1);
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceNifm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceNifm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long GetResult(ServiceCtx Context)
|
public long GetResult(ServiceCtx Context)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceNifm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceNifm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -66,21 +66,21 @@ namespace Ryujinx.HLE.HOS.Services.Nifm
|
||||||
|
|
||||||
public long Cancel(ServiceCtx Context)
|
public long Cancel(ServiceCtx Context)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceNifm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceNifm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long Submit(ServiceCtx Context)
|
public long Submit(ServiceCtx Context)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceNifm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceNifm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long SetConnectionConfirmationOption(ServiceCtx Context)
|
public long SetConnectionConfirmationOption(ServiceCtx Context)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceNifm, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceNifm, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.HLE.HOS.Ipc;
|
using Ryujinx.HLE.HOS.Ipc;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace Ryujinx.HLE.HOS.Services.Ns
|
namespace Ryujinx.HLE.HOS.Services.Ns
|
||||||
|
@ -23,14 +23,14 @@ namespace Ryujinx.HLE.HOS.Services.Ns
|
||||||
{
|
{
|
||||||
Context.ResponseData.Write(0);
|
Context.ResponseData.Write(0);
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceNs, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceNs, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static long ListAddOnContent(ServiceCtx Context)
|
public static long ListAddOnContent(ServiceCtx Context)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceNs, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceNs, "Stubbed.");
|
||||||
|
|
||||||
//TODO: This is supposed to write a u32 array aswell.
|
//TODO: This is supposed to write a u32 array aswell.
|
||||||
//It's unknown what it contains.
|
//It's unknown what it contains.
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
using ChocolArm64.Memory;
|
using ChocolArm64.Memory;
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.HLE.HOS.Ipc;
|
using Ryujinx.HLE.HOS.Ipc;
|
||||||
using Ryujinx.HLE.HOS.Kernel;
|
using Ryujinx.HLE.HOS.Kernel;
|
||||||
using Ryujinx.HLE.HOS.Services.Nv.NvGpuAS;
|
using Ryujinx.HLE.HOS.Services.Nv.NvGpuAS;
|
||||||
|
@ -6,7 +7,6 @@ using Ryujinx.HLE.HOS.Services.Nv.NvGpuGpu;
|
||||||
using Ryujinx.HLE.HOS.Services.Nv.NvHostChannel;
|
using Ryujinx.HLE.HOS.Services.Nv.NvHostChannel;
|
||||||
using Ryujinx.HLE.HOS.Services.Nv.NvHostCtrl;
|
using Ryujinx.HLE.HOS.Services.Nv.NvHostCtrl;
|
||||||
using Ryujinx.HLE.HOS.Services.Nv.NvMap;
|
using Ryujinx.HLE.HOS.Services.Nv.NvMap;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
@ -146,7 +146,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv
|
||||||
|
|
||||||
public long FinishInitialize(ServiceCtx Context)
|
public long FinishInitialize(ServiceCtx Context)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceNv, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceNv, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -180,14 +180,14 @@ namespace Ryujinx.HLE.HOS.Services.Nv
|
||||||
{
|
{
|
||||||
if (CmdIn(Cmd) && Context.Request.GetBufferType0x21().Position == 0)
|
if (CmdIn(Cmd) && Context.Request.GetBufferType0x21().Position == 0)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintError(LogClass.ServiceNv, "Input buffer is null!");
|
Logger.PrintError(LogClass.ServiceNv, "Input buffer is null!");
|
||||||
|
|
||||||
return NvResult.InvalidInput;
|
return NvResult.InvalidInput;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CmdOut(Cmd) && Context.Request.GetBufferType0x22().Position == 0)
|
if (CmdOut(Cmd) && Context.Request.GetBufferType0x22().Position == 0)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintError(LogClass.ServiceNv, "Output buffer is null!");
|
Logger.PrintError(LogClass.ServiceNv, "Output buffer is null!");
|
||||||
|
|
||||||
return NvResult.InvalidInput;
|
return NvResult.InvalidInput;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
using ChocolArm64.Memory;
|
using ChocolArm64.Memory;
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.Graphics.Memory;
|
using Ryujinx.Graphics.Memory;
|
||||||
using Ryujinx.HLE.HOS.Services.Nv.NvMap;
|
using Ryujinx.HLE.HOS.Services.Nv.NvMap;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvGpuAS
|
||||||
long InputPosition = Context.Request.GetBufferType0x21().Position;
|
long InputPosition = Context.Request.GetBufferType0x21().Position;
|
||||||
long OutputPosition = Context.Request.GetBufferType0x22().Position;
|
long OutputPosition = Context.Request.GetBufferType0x22().Position;
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceNv, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceNv, "Stubbed.");
|
||||||
|
|
||||||
return NvResult.Success;
|
return NvResult.Success;
|
||||||
}
|
}
|
||||||
|
@ -78,7 +78,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvGpuAS
|
||||||
{
|
{
|
||||||
Args.Offset = 0;
|
Args.Offset = 0;
|
||||||
|
|
||||||
Context.Device.Log.PrintWarning(LogClass.ServiceNv, $"Failed to allocate size {Size:x16}!");
|
Logger.PrintWarning(LogClass.ServiceNv, $"Failed to allocate size {Size:x16}!");
|
||||||
|
|
||||||
Result = NvResult.OutOfMemory;
|
Result = NvResult.OutOfMemory;
|
||||||
}
|
}
|
||||||
|
@ -115,7 +115,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvGpuAS
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintWarning(LogClass.ServiceNv,
|
Logger.PrintWarning(LogClass.ServiceNv,
|
||||||
$"Failed to free offset 0x{Args.Offset:x16} size 0x{Size:x16}!");
|
$"Failed to free offset 0x{Args.Offset:x16} size 0x{Size:x16}!");
|
||||||
|
|
||||||
Result = NvResult.InvalidInput;
|
Result = NvResult.InvalidInput;
|
||||||
|
@ -145,7 +145,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvGpuAS
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintWarning(LogClass.ServiceNv, $"Invalid buffer offset {Args.Offset:x16}!");
|
Logger.PrintWarning(LogClass.ServiceNv, $"Invalid buffer offset {Args.Offset:x16}!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -167,7 +167,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvGpuAS
|
||||||
|
|
||||||
if (Map == null)
|
if (Map == null)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintWarning(LogClass.ServiceNv, $"Invalid NvMap handle 0x{Args.NvMapHandle:x8}!");
|
Logger.PrintWarning(LogClass.ServiceNv, $"Invalid NvMap handle 0x{Args.NvMapHandle:x8}!");
|
||||||
|
|
||||||
return NvResult.InvalidInput;
|
return NvResult.InvalidInput;
|
||||||
}
|
}
|
||||||
|
@ -188,7 +188,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvGpuAS
|
||||||
{
|
{
|
||||||
string Msg = string.Format(MapErrorMsg, VA, Args.MappingSize);
|
string Msg = string.Format(MapErrorMsg, VA, Args.MappingSize);
|
||||||
|
|
||||||
Context.Device.Log.PrintWarning(LogClass.ServiceNv, Msg);
|
Logger.PrintWarning(LogClass.ServiceNv, Msg);
|
||||||
|
|
||||||
return NvResult.InvalidInput;
|
return NvResult.InvalidInput;
|
||||||
}
|
}
|
||||||
|
@ -197,7 +197,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvGpuAS
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintWarning(LogClass.ServiceNv, $"Address 0x{Args.Offset:x16} not mapped!");
|
Logger.PrintWarning(LogClass.ServiceNv, $"Address 0x{Args.Offset:x16} not mapped!");
|
||||||
|
|
||||||
return NvResult.InvalidInput;
|
return NvResult.InvalidInput;
|
||||||
}
|
}
|
||||||
|
@ -231,7 +231,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvGpuAS
|
||||||
{
|
{
|
||||||
string Msg = string.Format(MapErrorMsg, Args.Offset, Size);
|
string Msg = string.Format(MapErrorMsg, Args.Offset, Size);
|
||||||
|
|
||||||
Context.Device.Log.PrintWarning(LogClass.ServiceNv, Msg);
|
Logger.PrintWarning(LogClass.ServiceNv, Msg);
|
||||||
|
|
||||||
Result = NvResult.InvalidInput;
|
Result = NvResult.InvalidInput;
|
||||||
}
|
}
|
||||||
|
@ -245,7 +245,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvGpuAS
|
||||||
{
|
{
|
||||||
Args.Offset = 0;
|
Args.Offset = 0;
|
||||||
|
|
||||||
Context.Device.Log.PrintWarning(LogClass.ServiceNv, $"Failed to map size 0x{Size:x16}!");
|
Logger.PrintWarning(LogClass.ServiceNv, $"Failed to map size 0x{Size:x16}!");
|
||||||
|
|
||||||
Result = NvResult.InvalidInput;
|
Result = NvResult.InvalidInput;
|
||||||
}
|
}
|
||||||
|
@ -265,7 +265,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvGpuAS
|
||||||
long InputPosition = Context.Request.GetBufferType0x21().Position;
|
long InputPosition = Context.Request.GetBufferType0x21().Position;
|
||||||
long OutputPosition = Context.Request.GetBufferType0x22().Position;
|
long OutputPosition = Context.Request.GetBufferType0x22().Position;
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceNv, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceNv, "Stubbed.");
|
||||||
|
|
||||||
return NvResult.Success;
|
return NvResult.Success;
|
||||||
}
|
}
|
||||||
|
@ -275,7 +275,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvGpuAS
|
||||||
long InputPosition = Context.Request.GetBufferType0x21().Position;
|
long InputPosition = Context.Request.GetBufferType0x21().Position;
|
||||||
long OutputPosition = Context.Request.GetBufferType0x22().Position;
|
long OutputPosition = Context.Request.GetBufferType0x22().Position;
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceNv, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceNv, "Stubbed.");
|
||||||
|
|
||||||
return NvResult.Success;
|
return NvResult.Success;
|
||||||
}
|
}
|
||||||
|
@ -296,7 +296,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvGpuAS
|
||||||
|
|
||||||
if (Map == null)
|
if (Map == null)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintWarning(LogClass.ServiceNv, $"Invalid NvMap handle 0x{Args.NvMapHandle:x8}!");
|
Logger.PrintWarning(LogClass.ServiceNv, $"Invalid NvMap handle 0x{Args.NvMapHandle:x8}!");
|
||||||
|
|
||||||
return NvResult.InvalidInput;
|
return NvResult.InvalidInput;
|
||||||
}
|
}
|
||||||
|
@ -306,7 +306,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvGpuAS
|
||||||
|
|
||||||
if (Result < 0)
|
if (Result < 0)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintWarning(LogClass.ServiceNv,
|
Logger.PrintWarning(LogClass.ServiceNv,
|
||||||
$"Page 0x{Args.Offset:x16} size 0x{Args.Pages:x16} not allocated!");
|
$"Page 0x{Args.Offset:x16} size 0x{Args.Pages:x16} not allocated!");
|
||||||
|
|
||||||
return NvResult.InvalidInput;
|
return NvResult.InvalidInput;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
using ChocolArm64.Memory;
|
using ChocolArm64.Memory;
|
||||||
using Ryujinx.HLE.Logging;
|
using Ryujinx.Common.Logging;
|
||||||
using System;
|
using System;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvGpuGpu
|
||||||
|
|
||||||
AMemoryHelper.Write(Context.Memory, OutputPosition, Args);
|
AMemoryHelper.Write(Context.Memory, OutputPosition, Args);
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceNv, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceNv, "Stubbed.");
|
||||||
|
|
||||||
return NvResult.Success;
|
return NvResult.Success;
|
||||||
}
|
}
|
||||||
|
@ -70,7 +70,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvGpuGpu
|
||||||
|
|
||||||
AMemoryHelper.Write(Context.Memory, OutputPosition, Args);
|
AMemoryHelper.Write(Context.Memory, OutputPosition, Args);
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceNv, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceNv, "Stubbed.");
|
||||||
|
|
||||||
return NvResult.Success;
|
return NvResult.Success;
|
||||||
}
|
}
|
||||||
|
@ -80,7 +80,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvGpuGpu
|
||||||
long InputPosition = Context.Request.GetBufferType0x21().Position;
|
long InputPosition = Context.Request.GetBufferType0x21().Position;
|
||||||
long OutputPosition = Context.Request.GetBufferType0x22().Position;
|
long OutputPosition = Context.Request.GetBufferType0x22().Position;
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceNv, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceNv, "Stubbed.");
|
||||||
|
|
||||||
return NvResult.Success;
|
return NvResult.Success;
|
||||||
}
|
}
|
||||||
|
@ -163,7 +163,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvGpuGpu
|
||||||
|
|
||||||
AMemoryHelper.Write(Context.Memory, OutputPosition, Args);
|
AMemoryHelper.Write(Context.Memory, OutputPosition, Args);
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceNv, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceNv, "Stubbed.");
|
||||||
|
|
||||||
return NvResult.Success;
|
return NvResult.Success;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
using ChocolArm64.Memory;
|
using ChocolArm64.Memory;
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.Graphics.Memory;
|
using Ryujinx.Graphics.Memory;
|
||||||
using Ryujinx.HLE.HOS.Services.Nv.NvGpuAS;
|
using Ryujinx.HLE.HOS.Services.Nv.NvGpuAS;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvHostChannel
|
||||||
long InputPosition = Context.Request.GetBufferType0x21().Position;
|
long InputPosition = Context.Request.GetBufferType0x21().Position;
|
||||||
long OutputPosition = Context.Request.GetBufferType0x22().Position;
|
long OutputPosition = Context.Request.GetBufferType0x22().Position;
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceNv, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceNv, "Stubbed.");
|
||||||
|
|
||||||
return NvResult.Success;
|
return NvResult.Success;
|
||||||
}
|
}
|
||||||
|
@ -67,7 +67,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvHostChannel
|
||||||
long InputPosition = Context.Request.GetBufferType0x21().Position;
|
long InputPosition = Context.Request.GetBufferType0x21().Position;
|
||||||
long OutputPosition = Context.Request.GetBufferType0x22().Position;
|
long OutputPosition = Context.Request.GetBufferType0x22().Position;
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceNv, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceNv, "Stubbed.");
|
||||||
|
|
||||||
return NvResult.Success;
|
return NvResult.Success;
|
||||||
}
|
}
|
||||||
|
@ -110,7 +110,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvHostChannel
|
||||||
long InputPosition = Context.Request.GetBufferType0x21().Position;
|
long InputPosition = Context.Request.GetBufferType0x21().Position;
|
||||||
long OutputPosition = Context.Request.GetBufferType0x22().Position;
|
long OutputPosition = Context.Request.GetBufferType0x22().Position;
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceNv, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceNv, "Stubbed.");
|
||||||
|
|
||||||
return NvResult.Success;
|
return NvResult.Success;
|
||||||
}
|
}
|
||||||
|
@ -120,7 +120,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvHostChannel
|
||||||
long InputPosition = Context.Request.GetBufferType0x21().Position;
|
long InputPosition = Context.Request.GetBufferType0x21().Position;
|
||||||
long OutputPosition = Context.Request.GetBufferType0x22().Position;
|
long OutputPosition = Context.Request.GetBufferType0x22().Position;
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceNv, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceNv, "Stubbed.");
|
||||||
|
|
||||||
return NvResult.Success;
|
return NvResult.Success;
|
||||||
}
|
}
|
||||||
|
@ -130,7 +130,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvHostChannel
|
||||||
long InputPosition = Context.Request.GetBufferType0x21().Position;
|
long InputPosition = Context.Request.GetBufferType0x21().Position;
|
||||||
long OutputPosition = Context.Request.GetBufferType0x22().Position;
|
long OutputPosition = Context.Request.GetBufferType0x22().Position;
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceNv, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceNv, "Stubbed.");
|
||||||
|
|
||||||
return NvResult.Success;
|
return NvResult.Success;
|
||||||
}
|
}
|
||||||
|
@ -140,7 +140,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvHostChannel
|
||||||
long InputPosition = Context.Request.GetBufferType0x21().Position;
|
long InputPosition = Context.Request.GetBufferType0x21().Position;
|
||||||
long OutputPosition = Context.Request.GetBufferType0x22().Position;
|
long OutputPosition = Context.Request.GetBufferType0x22().Position;
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceNv, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceNv, "Stubbed.");
|
||||||
|
|
||||||
return NvResult.Success;
|
return NvResult.Success;
|
||||||
}
|
}
|
||||||
|
@ -150,7 +150,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvHostChannel
|
||||||
long InputPosition = Context.Request.GetBufferType0x21().Position;
|
long InputPosition = Context.Request.GetBufferType0x21().Position;
|
||||||
long OutputPosition = Context.Request.GetBufferType0x22().Position;
|
long OutputPosition = Context.Request.GetBufferType0x22().Position;
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceNv, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceNv, "Stubbed.");
|
||||||
|
|
||||||
return NvResult.Success;
|
return NvResult.Success;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
using ChocolArm64.Memory;
|
using ChocolArm64.Memory;
|
||||||
using Ryujinx.HLE.Logging;
|
using Ryujinx.Common.Logging;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
@ -95,7 +95,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvHostCtrl
|
||||||
{
|
{
|
||||||
if (StringValue.Length > 0x100)
|
if (StringValue.Length > 0x100)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintError(Logging.LogClass.ServiceNv, $"{Domain}!{Name} String value size is too big!");
|
Logger.PrintError(LogClass.ServiceNv, $"{Domain}!{Name} String value size is too big!");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -118,7 +118,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvHostCtrl
|
||||||
|
|
||||||
Context.Memory.WriteBytes(OutputPosition + 0x82, SettingBuffer);
|
Context.Memory.WriteBytes(OutputPosition + 0x82, SettingBuffer);
|
||||||
|
|
||||||
Context.Device.Log.PrintDebug(Logging.LogClass.ServiceNv, $"Got setting {Domain}!{Name}");
|
Logger.PrintDebug(LogClass.ServiceNv, $"Got setting {Domain}!{Name}");
|
||||||
}
|
}
|
||||||
|
|
||||||
return NvResult.Success;
|
return NvResult.Success;
|
||||||
|
@ -144,7 +144,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvHostCtrl
|
||||||
|
|
||||||
int EventId = Context.Memory.ReadInt32(InputPosition);
|
int EventId = Context.Memory.ReadInt32(InputPosition);
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceNv, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceNv, "Stubbed.");
|
||||||
|
|
||||||
return NvResult.Success;
|
return NvResult.Success;
|
||||||
}
|
}
|
||||||
|
@ -201,7 +201,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvHostCtrl
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintDebug(LogClass.ServiceNv, "Waiting syncpt with timeout of " + Args.Timeout + "ms...");
|
Logger.PrintDebug(LogClass.ServiceNv, "Waiting syncpt with timeout of " + Args.Timeout + "ms...");
|
||||||
|
|
||||||
using (ManualResetEvent WaitEvent = new ManualResetEvent(false))
|
using (ManualResetEvent WaitEvent = new ManualResetEvent(false))
|
||||||
{
|
{
|
||||||
|
@ -232,7 +232,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvHostCtrl
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Context.Device.Log.PrintDebug(LogClass.ServiceNv, "Resuming...");
|
Logger.PrintDebug(LogClass.ServiceNv, "Resuming...");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Extended)
|
if (Extended)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
using ChocolArm64.Memory;
|
using ChocolArm64.Memory;
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.Graphics.Memory;
|
using Ryujinx.Graphics.Memory;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using Ryujinx.HLE.Utilities;
|
using Ryujinx.HLE.Utilities;
|
||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvMap
|
||||||
case 0x010e: return GetId (Context);
|
case 0x010e: return GetId (Context);
|
||||||
}
|
}
|
||||||
|
|
||||||
Context.Device.Log.PrintWarning(LogClass.ServiceNv, $"Unsupported Ioctl command 0x{Cmd:x8}!");
|
Logger.PrintWarning(LogClass.ServiceNv, $"Unsupported Ioctl command 0x{Cmd:x8}!");
|
||||||
|
|
||||||
return NvResult.NotSupported;
|
return NvResult.NotSupported;
|
||||||
}
|
}
|
||||||
|
@ -43,7 +43,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvMap
|
||||||
|
|
||||||
if (Args.Size == 0)
|
if (Args.Size == 0)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintWarning(LogClass.ServiceNv, $"Invalid size 0x{Args.Size:x8}!");
|
Logger.PrintWarning(LogClass.ServiceNv, $"Invalid size 0x{Args.Size:x8}!");
|
||||||
|
|
||||||
return NvResult.InvalidInput;
|
return NvResult.InvalidInput;
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvMap
|
||||||
|
|
||||||
Args.Handle = AddNvMap(Context, new NvMapHandle(Size));
|
Args.Handle = AddNvMap(Context, new NvMapHandle(Size));
|
||||||
|
|
||||||
Context.Device.Log.PrintInfo(LogClass.ServiceNv, $"Created map {Args.Handle} with size 0x{Size:x8}!");
|
Logger.PrintInfo(LogClass.ServiceNv, $"Created map {Args.Handle} with size 0x{Size:x8}!");
|
||||||
|
|
||||||
AMemoryHelper.Write(Context.Memory, OutputPosition, Args);
|
AMemoryHelper.Write(Context.Memory, OutputPosition, Args);
|
||||||
|
|
||||||
|
@ -70,7 +70,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvMap
|
||||||
|
|
||||||
if (Map == null)
|
if (Map == null)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintWarning(LogClass.ServiceNv, $"Invalid handle 0x{Args.Handle:x8}!");
|
Logger.PrintWarning(LogClass.ServiceNv, $"Invalid handle 0x{Args.Handle:x8}!");
|
||||||
|
|
||||||
return NvResult.InvalidInput;
|
return NvResult.InvalidInput;
|
||||||
}
|
}
|
||||||
|
@ -95,14 +95,14 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvMap
|
||||||
|
|
||||||
if (Map == null)
|
if (Map == null)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintWarning(LogClass.ServiceNv, $"Invalid handle 0x{Args.Handle:x8}!");
|
Logger.PrintWarning(LogClass.ServiceNv, $"Invalid handle 0x{Args.Handle:x8}!");
|
||||||
|
|
||||||
return NvResult.InvalidInput;
|
return NvResult.InvalidInput;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((Args.Align & (Args.Align - 1)) != 0)
|
if ((Args.Align & (Args.Align - 1)) != 0)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintWarning(LogClass.ServiceNv, $"Invalid alignment 0x{Args.Align:x8}!");
|
Logger.PrintWarning(LogClass.ServiceNv, $"Invalid alignment 0x{Args.Align:x8}!");
|
||||||
|
|
||||||
return NvResult.InvalidInput;
|
return NvResult.InvalidInput;
|
||||||
}
|
}
|
||||||
|
@ -159,7 +159,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvMap
|
||||||
|
|
||||||
if (Map == null)
|
if (Map == null)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintWarning(LogClass.ServiceNv, $"Invalid handle 0x{Args.Handle:x8}!");
|
Logger.PrintWarning(LogClass.ServiceNv, $"Invalid handle 0x{Args.Handle:x8}!");
|
||||||
|
|
||||||
return NvResult.InvalidInput;
|
return NvResult.InvalidInput;
|
||||||
}
|
}
|
||||||
|
@ -168,7 +168,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvMap
|
||||||
{
|
{
|
||||||
DeleteNvMap(Context, Args.Handle);
|
DeleteNvMap(Context, Args.Handle);
|
||||||
|
|
||||||
Context.Device.Log.PrintInfo(LogClass.ServiceNv, $"Deleted map {Args.Handle}!");
|
Logger.PrintInfo(LogClass.ServiceNv, $"Deleted map {Args.Handle}!");
|
||||||
|
|
||||||
Args.Address = Map.Address;
|
Args.Address = Map.Address;
|
||||||
Args.Flags = 0;
|
Args.Flags = 0;
|
||||||
|
@ -197,7 +197,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvMap
|
||||||
|
|
||||||
if (Map == null)
|
if (Map == null)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintWarning(LogClass.ServiceNv, $"Invalid handle 0x{Args.Handle:x8}!");
|
Logger.PrintWarning(LogClass.ServiceNv, $"Invalid handle 0x{Args.Handle:x8}!");
|
||||||
|
|
||||||
return NvResult.InvalidInput;
|
return NvResult.InvalidInput;
|
||||||
}
|
}
|
||||||
|
@ -231,7 +231,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvMap
|
||||||
|
|
||||||
if (Map == null)
|
if (Map == null)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintWarning(LogClass.ServiceNv, $"Invalid handle 0x{Args.Handle:x8}!");
|
Logger.PrintWarning(LogClass.ServiceNv, $"Invalid handle 0x{Args.Handle:x8}!");
|
||||||
|
|
||||||
return NvResult.InvalidInput;
|
return NvResult.InvalidInput;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.HLE.HOS.Ipc;
|
using Ryujinx.HLE.HOS.Ipc;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace Ryujinx.HLE.HOS.Services.Pctl
|
namespace Ryujinx.HLE.HOS.Services.Pctl
|
||||||
|
@ -32,7 +32,7 @@ namespace Ryujinx.HLE.HOS.Services.Pctl
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintWarning(LogClass.ServicePctl, "Service is already initialized!");
|
Logger.PrintWarning(LogClass.ServicePctl, "Service is already initialized!");
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.HLE.HOS.Ipc;
|
using Ryujinx.HLE.HOS.Ipc;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace Ryujinx.HLE.HOS.Services.Prepo
|
namespace Ryujinx.HLE.HOS.Services.Prepo
|
||||||
|
@ -20,7 +20,7 @@ namespace Ryujinx.HLE.HOS.Services.Prepo
|
||||||
|
|
||||||
public static long SaveReportWithUser(ServiceCtx Context)
|
public static long SaveReportWithUser(ServiceCtx Context)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintStub(LogClass.ServicePrepo, "Stubbed.");
|
Logger.PrintStub(LogClass.ServicePrepo, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.HLE.HOS.Ipc;
|
using Ryujinx.HLE.HOS.Ipc;
|
||||||
using Ryujinx.HLE.HOS.SystemState;
|
using Ryujinx.HLE.HOS.SystemState;
|
||||||
using System;
|
using System;
|
||||||
|
@ -115,7 +116,7 @@ namespace Ryujinx.HLE.HOS.Services.Set
|
||||||
{
|
{
|
||||||
if (StringValue.Length + 1 > ReplySize)
|
if (StringValue.Length + 1 > ReplySize)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintError(Logging.LogClass.ServiceSet, $"{AskedSetting} String value size is too big!");
|
Logger.PrintError(LogClass.ServiceSet, $"{AskedSetting} String value size is too big!");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -138,11 +139,11 @@ namespace Ryujinx.HLE.HOS.Services.Set
|
||||||
|
|
||||||
Context.Memory.WriteBytes(ReplyPos, SettingBuffer);
|
Context.Memory.WriteBytes(ReplyPos, SettingBuffer);
|
||||||
|
|
||||||
Context.Device.Log.PrintDebug(Logging.LogClass.ServiceSet, $"{AskedSetting} set value: {NxSetting} as {NxSetting.GetType()}");
|
Logger.PrintDebug(LogClass.ServiceSet, $"{AskedSetting} set value: {NxSetting} as {NxSetting.GetType()}");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintError(Logging.LogClass.ServiceSet, $"{AskedSetting} not found!");
|
Logger.PrintError(LogClass.ServiceSet, $"{AskedSetting} not found!");
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.HLE.HOS.Ipc;
|
using Ryujinx.HLE.HOS.Ipc;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
@ -165,7 +166,7 @@ namespace Ryujinx.HLE.HOS.Services.Sfdnsres
|
||||||
long BufferSize = Context.Request.SendBuff[0].Size;
|
long BufferSize = Context.Request.SendBuff[0].Size;
|
||||||
|
|
||||||
// TODO: This is stubbed in 2.0.0+, reverse 1.0.0 version for the sake completeness.
|
// TODO: This is stubbed in 2.0.0+, reverse 1.0.0 version for the sake completeness.
|
||||||
Context.Device.Log.PrintStub(Logging.LogClass.ServiceSfdnsres, $"Stubbed. Unknown0: {Unknown0}");
|
Logger.PrintStub(LogClass.ServiceSfdnsres, $"Stubbed. Unknown0: {Unknown0}");
|
||||||
|
|
||||||
return MakeError(ErrorModule.Os, 1023);
|
return MakeError(ErrorModule.Os, 1023);
|
||||||
}
|
}
|
||||||
|
@ -176,7 +177,7 @@ namespace Ryujinx.HLE.HOS.Services.Sfdnsres
|
||||||
uint Unknown0 = Context.RequestData.ReadUInt32();
|
uint Unknown0 = Context.RequestData.ReadUInt32();
|
||||||
|
|
||||||
// TODO: This is stubbed in 2.0.0+, reverse 1.0.0 version for the sake completeness.
|
// TODO: This is stubbed in 2.0.0+, reverse 1.0.0 version for the sake completeness.
|
||||||
Context.Device.Log.PrintStub(Logging.LogClass.ServiceSfdnsres, $"Stubbed. Unknown0: {Unknown0}");
|
Logger.PrintStub(LogClass.ServiceSfdnsres, $"Stubbed. Unknown0: {Unknown0}");
|
||||||
|
|
||||||
return MakeError(ErrorModule.Os, 1023);
|
return MakeError(ErrorModule.Os, 1023);
|
||||||
}
|
}
|
||||||
|
@ -368,7 +369,7 @@ namespace Ryujinx.HLE.HOS.Services.Sfdnsres
|
||||||
|
|
||||||
Context.ResponseData.Write(0);
|
Context.ResponseData.Write(0);
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(Logging.LogClass.ServiceSfdnsres, $"Stubbed. Unknown0: {Unknown0}");
|
Logger.PrintStub(LogClass.ServiceSfdnsres, $"Stubbed. Unknown0: {Unknown0}");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -379,8 +380,8 @@ namespace Ryujinx.HLE.HOS.Services.Sfdnsres
|
||||||
uint Unknown0 = Context.RequestData.ReadUInt32();
|
uint Unknown0 = Context.RequestData.ReadUInt32();
|
||||||
ulong Unknown1 = Context.RequestData.ReadUInt64();
|
ulong Unknown1 = Context.RequestData.ReadUInt64();
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(Logging.LogClass.ServiceSfdnsres, $"Stubbed. Unknown0: {Unknown0} - " +
|
Logger.PrintStub(LogClass.ServiceSfdnsres, $"Stubbed. Unknown0: {Unknown0} - " +
|
||||||
$"Unknown1: {Unknown1}");
|
$"Unknown1: {Unknown1}");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -390,7 +391,7 @@ namespace Ryujinx.HLE.HOS.Services.Sfdnsres
|
||||||
{
|
{
|
||||||
uint Unknown0 = Context.RequestData.ReadUInt32();
|
uint Unknown0 = Context.RequestData.ReadUInt32();
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(Logging.LogClass.ServiceSfdnsres, $"Stubbed. Unknown0: {Unknown0}");
|
Logger.PrintStub(LogClass.ServiceSfdnsres, $"Stubbed. Unknown0: {Unknown0}");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.HLE.HOS.Ipc;
|
using Ryujinx.HLE.HOS.Ipc;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace Ryujinx.HLE.HOS.Services.Ssl
|
namespace Ryujinx.HLE.HOS.Services.Ssl
|
||||||
|
@ -25,7 +25,7 @@ namespace Ryujinx.HLE.HOS.Services.Ssl
|
||||||
int SslVersion = Context.RequestData.ReadInt32();
|
int SslVersion = Context.RequestData.ReadInt32();
|
||||||
long Unknown = Context.RequestData.ReadInt64();
|
long Unknown = Context.RequestData.ReadInt64();
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceSsl, $"Stubbed. SslVersion: {SslVersion} - Unknown: {Unknown}");
|
Logger.PrintStub(LogClass.ServiceSsl, $"Stubbed. SslVersion: {SslVersion} - Unknown: {Unknown}");
|
||||||
|
|
||||||
MakeObject(Context, new ISslContext());
|
MakeObject(Context, new ISslContext());
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ namespace Ryujinx.HLE.HOS.Services.Ssl
|
||||||
{
|
{
|
||||||
int Version = Context.RequestData.ReadInt32();
|
int Version = Context.RequestData.ReadInt32();
|
||||||
|
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceSsl, $"Stubbed. Version: {Version}");
|
Logger.PrintStub(LogClass.ServiceSsl, $"Stubbed. Version: {Version}");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.HLE.HOS.Ipc;
|
using Ryujinx.HLE.HOS.Ipc;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
@ -110,7 +110,7 @@ namespace Ryujinx.HLE.HOS.Services.Time
|
||||||
|
|
||||||
if (BufferSize != 0x4000)
|
if (BufferSize != 0x4000)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintWarning(LogClass.ServiceTime, $"TimeZoneRule buffer size is 0x{BufferSize:x} (expected 0x4000)");
|
Logger.PrintWarning(LogClass.ServiceTime, $"TimeZoneRule buffer size is 0x{BufferSize:x} (expected 0x4000)");
|
||||||
}
|
}
|
||||||
|
|
||||||
long ResultCode = 0;
|
long ResultCode = 0;
|
||||||
|
@ -132,7 +132,7 @@ namespace Ryujinx.HLE.HOS.Services.Time
|
||||||
}
|
}
|
||||||
catch (TimeZoneNotFoundException)
|
catch (TimeZoneNotFoundException)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintWarning(LogClass.ServiceTime, $"Timezone not found for string: {TzID} (len: {TzID.Length})");
|
Logger.PrintWarning(LogClass.ServiceTime, $"Timezone not found for string: {TzID} (len: {TzID.Length})");
|
||||||
|
|
||||||
ResultCode = MakeError(ErrorModule.Time, 0x3dd);
|
ResultCode = MakeError(ErrorModule.Time, 0x3dd);
|
||||||
}
|
}
|
||||||
|
@ -170,7 +170,7 @@ namespace Ryujinx.HLE.HOS.Services.Time
|
||||||
|
|
||||||
if (BufferSize != 0x4000)
|
if (BufferSize != 0x4000)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintWarning(LogClass.ServiceTime, $"TimeZoneRule buffer size is 0x{BufferSize:x} (expected 0x4000)");
|
Logger.PrintWarning(LogClass.ServiceTime, $"TimeZoneRule buffer size is 0x{BufferSize:x} (expected 0x4000)");
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Reverse the TZif2 conversion in PCV to make this match with real hardware.
|
// TODO: Reverse the TZif2 conversion in PCV to make this match with real hardware.
|
||||||
|
@ -189,7 +189,7 @@ namespace Ryujinx.HLE.HOS.Services.Time
|
||||||
}
|
}
|
||||||
catch (TimeZoneNotFoundException)
|
catch (TimeZoneNotFoundException)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintWarning(LogClass.ServiceTime, $"Timezone not found for string: {TzID} (len: {TzID.Length})");
|
Logger.PrintWarning(LogClass.ServiceTime, $"Timezone not found for string: {TzID} (len: {TzID.Length})");
|
||||||
|
|
||||||
ResultCode = MakeError(ErrorModule.Time, 0x3dd);
|
ResultCode = MakeError(ErrorModule.Time, 0x3dd);
|
||||||
}
|
}
|
||||||
|
@ -220,7 +220,7 @@ namespace Ryujinx.HLE.HOS.Services.Time
|
||||||
|
|
||||||
if (BufferSize != 0x4000)
|
if (BufferSize != 0x4000)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintWarning(LogClass.ServiceTime, $"TimeZoneRule buffer size is 0x{BufferSize:x} (expected 0x4000)");
|
Logger.PrintWarning(LogClass.ServiceTime, $"TimeZoneRule buffer size is 0x{BufferSize:x} (expected 0x4000)");
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Reverse the TZif2 conversion in PCV to make this match with real hardware.
|
// TODO: Reverse the TZif2 conversion in PCV to make this match with real hardware.
|
||||||
|
@ -239,7 +239,7 @@ namespace Ryujinx.HLE.HOS.Services.Time
|
||||||
}
|
}
|
||||||
catch (TimeZoneNotFoundException)
|
catch (TimeZoneNotFoundException)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintWarning(LogClass.ServiceTime, $"Timezone not found for string: {TzID} (len: {TzID.Length})");
|
Logger.PrintWarning(LogClass.ServiceTime, $"Timezone not found for string: {TzID} (len: {TzID.Length})");
|
||||||
|
|
||||||
ResultCode = MakeError(ErrorModule.Time, 0x3dd);
|
ResultCode = MakeError(ErrorModule.Time, 0x3dd);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.HLE.HOS.Ipc;
|
using Ryujinx.HLE.HOS.Ipc;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace Ryujinx.HLE.HOS.Services.Vi
|
namespace Ryujinx.HLE.HOS.Services.Vi
|
||||||
|
@ -23,7 +23,7 @@ namespace Ryujinx.HLE.HOS.Services.Vi
|
||||||
|
|
||||||
public static long CreateManagedLayer(ServiceCtx Context)
|
public static long CreateManagedLayer(ServiceCtx Context)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceVi, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceVi, "Stubbed.");
|
||||||
|
|
||||||
Context.ResponseData.Write(0L); //LayerId
|
Context.ResponseData.Write(0L); //LayerId
|
||||||
|
|
||||||
|
@ -32,21 +32,21 @@ namespace Ryujinx.HLE.HOS.Services.Vi
|
||||||
|
|
||||||
public long DestroyManagedLayer(ServiceCtx Context)
|
public long DestroyManagedLayer(ServiceCtx Context)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceVi, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceVi, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static long AddToLayerStack(ServiceCtx Context)
|
public static long AddToLayerStack(ServiceCtx Context)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceVi, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceVi, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static long SetLayerVisibility(ServiceCtx Context)
|
public static long SetLayerVisibility(ServiceCtx Context)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceVi, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceVi, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.HLE.HOS.Ipc;
|
using Ryujinx.HLE.HOS.Ipc;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace Ryujinx.HLE.HOS.Services.Vi
|
namespace Ryujinx.HLE.HOS.Services.Vi
|
||||||
|
@ -22,14 +22,14 @@ namespace Ryujinx.HLE.HOS.Services.Vi
|
||||||
|
|
||||||
public static long SetLayerZ(ServiceCtx Context)
|
public static long SetLayerZ(ServiceCtx Context)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceVi, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceVi, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static long SetLayerVisibility(ServiceCtx Context)
|
public static long SetLayerVisibility(ServiceCtx Context)
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintStub(LogClass.ServiceVi, "Stubbed.");
|
Logger.PrintStub(LogClass.ServiceVi, "Stubbed.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.Graphics.Gal;
|
using Ryujinx.Graphics.Gal;
|
||||||
using Ryujinx.Graphics.Memory;
|
using Ryujinx.Graphics.Memory;
|
||||||
using Ryujinx.HLE.HOS.Kernel;
|
using Ryujinx.HLE.HOS.Kernel;
|
||||||
using Ryujinx.HLE.HOS.Services.Nv.NvGpuAS;
|
using Ryujinx.HLE.HOS.Services.Nv.NvGpuAS;
|
||||||
using Ryujinx.HLE.HOS.Services.Nv.NvMap;
|
using Ryujinx.HLE.HOS.Services.Nv.NvMap;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
@ -114,7 +114,7 @@ namespace Ryujinx.HLE.HOS.Services.Android
|
||||||
|
|
||||||
if (Commands.TryGetValue((InterfaceName, Code), out ServiceProcessParcel ProcReq))
|
if (Commands.TryGetValue((InterfaceName, Code), out ServiceProcessParcel ProcReq))
|
||||||
{
|
{
|
||||||
Context.Device.Log.PrintDebug(LogClass.ServiceVi, $"{InterfaceName} {ProcReq.Method.Name}");
|
Logger.PrintDebug(LogClass.ServiceVi, $"{InterfaceName} {ProcReq.Method.Name}");
|
||||||
|
|
||||||
return ProcReq(Context, Reader);
|
return ProcReq(Context, Reader);
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\ChocolArm64\ChocolArm64.csproj" />
|
<ProjectReference Include="..\ChocolArm64\ChocolArm64.csproj" />
|
||||||
<ProjectReference Include="..\Ryujinx.Audio\Ryujinx.Audio.csproj" />
|
<ProjectReference Include="..\Ryujinx.Audio\Ryujinx.Audio.csproj" />
|
||||||
|
<ProjectReference Include="..\Ryujinx.Common\Ryujinx.Common.csproj" />
|
||||||
<ProjectReference Include="..\Ryujinx.Graphics\Ryujinx.Graphics.csproj" />
|
<ProjectReference Include="..\Ryujinx.Graphics\Ryujinx.Graphics.csproj" />
|
||||||
<PackageReference Include="LibHac" Version="0.1.2" />
|
<PackageReference Include="LibHac" Version="0.1.2" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
|
@ -4,7 +4,6 @@ using Ryujinx.Graphics.Gal;
|
||||||
using Ryujinx.HLE.FileSystem;
|
using Ryujinx.HLE.FileSystem;
|
||||||
using Ryujinx.HLE.HOS;
|
using Ryujinx.HLE.HOS;
|
||||||
using Ryujinx.HLE.Input;
|
using Ryujinx.HLE.Input;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using Ryujinx.HLE.Memory;
|
using Ryujinx.HLE.Memory;
|
||||||
using System;
|
using System;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
@ -15,8 +14,6 @@ namespace Ryujinx.HLE
|
||||||
{
|
{
|
||||||
internal IAalOutput AudioOut { get; private set; }
|
internal IAalOutput AudioOut { get; private set; }
|
||||||
|
|
||||||
public Logger Log { get; private set; }
|
|
||||||
|
|
||||||
internal DeviceMemory Memory { get; private set; }
|
internal DeviceMemory Memory { get; private set; }
|
||||||
|
|
||||||
internal NvGpu Gpu { get; private set; }
|
internal NvGpu Gpu { get; private set; }
|
||||||
|
@ -49,8 +46,6 @@ namespace Ryujinx.HLE
|
||||||
|
|
||||||
this.AudioOut = AudioOut;
|
this.AudioOut = AudioOut;
|
||||||
|
|
||||||
Log = new Logger();
|
|
||||||
|
|
||||||
Memory = new DeviceMemory();
|
Memory = new DeviceMemory();
|
||||||
|
|
||||||
Gpu = new NvGpu(Renderer);
|
Gpu = new NvGpu(Renderer);
|
||||||
|
|
10
Ryujinx.sln
10
Ryujinx.sln
|
@ -17,9 +17,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics", "Ryujinx
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Audio", "Ryujinx.Audio\Ryujinx.Audio.csproj", "{5C1D818E-682A-46A5-9D54-30006E26C270}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Audio", "Ryujinx.Audio\Ryujinx.Audio.csproj", "{5C1D818E-682A-46A5-9D54-30006E26C270}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ryujinx.ShaderTools", "Ryujinx.ShaderTools\Ryujinx.ShaderTools.csproj", "{3AB294D0-2230-468F-9EB3-BDFCAEAE99A5}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.ShaderTools", "Ryujinx.ShaderTools\Ryujinx.ShaderTools.csproj", "{3AB294D0-2230-468F-9EB3-BDFCAEAE99A5}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Luea", "Ryujinx.LLE\Luea.csproj", "{8E7D36DD-9626-47E2-8EF5-8F2F66751C9C}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Luea", "Ryujinx.LLE\Luea.csproj", "{8E7D36DD-9626-47E2-8EF5-8F2F66751C9C}"
|
||||||
|
EndProject
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Common", "Ryujinx.Common\Ryujinx.Common.csproj", "{5FD4E4F6-8928-4B3C-BE07-28A675C17226}"
|
||||||
EndProject
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
@ -63,6 +65,10 @@ Global
|
||||||
{8E7D36DD-9626-47E2-8EF5-8F2F66751C9C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{8E7D36DD-9626-47E2-8EF5-8F2F66751C9C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{8E7D36DD-9626-47E2-8EF5-8F2F66751C9C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{8E7D36DD-9626-47E2-8EF5-8F2F66751C9C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{8E7D36DD-9626-47E2-8EF5-8F2F66751C9C}.Release|Any CPU.Build.0 = Release|Any CPU
|
{8E7D36DD-9626-47E2-8EF5-8F2F66751C9C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{5FD4E4F6-8928-4B3C-BE07-28A675C17226}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{5FD4E4F6-8928-4B3C-BE07-28A675C17226}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{5FD4E4F6-8928-4B3C-BE07-28A675C17226}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{5FD4E4F6-8928-4B3C-BE07-28A675C17226}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.HLE;
|
using Ryujinx.HLE;
|
||||||
using Ryujinx.HLE.Logging;
|
|
||||||
using Ryujinx.UI.Input;
|
using Ryujinx.UI.Input;
|
||||||
using System;
|
using System;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
|
@ -25,11 +25,11 @@ namespace Ryujinx
|
||||||
|
|
||||||
GraphicsConfig.ShadersDumpPath = Parser.Value("Graphics_Shaders_Dump_Path");
|
GraphicsConfig.ShadersDumpPath = Parser.Value("Graphics_Shaders_Dump_Path");
|
||||||
|
|
||||||
Device.Log.SetEnable(LogLevel.Debug, Convert.ToBoolean(Parser.Value("Logging_Enable_Debug")));
|
Logger.SetEnable(LogLevel.Debug, Convert.ToBoolean(Parser.Value("Logging_Enable_Debug")));
|
||||||
Device.Log.SetEnable(LogLevel.Stub, Convert.ToBoolean(Parser.Value("Logging_Enable_Stub")));
|
Logger.SetEnable(LogLevel.Stub, Convert.ToBoolean(Parser.Value("Logging_Enable_Stub")));
|
||||||
Device.Log.SetEnable(LogLevel.Info, Convert.ToBoolean(Parser.Value("Logging_Enable_Info")));
|
Logger.SetEnable(LogLevel.Info, Convert.ToBoolean(Parser.Value("Logging_Enable_Info")));
|
||||||
Device.Log.SetEnable(LogLevel.Warning, Convert.ToBoolean(Parser.Value("Logging_Enable_Warn")));
|
Logger.SetEnable(LogLevel.Warning, Convert.ToBoolean(Parser.Value("Logging_Enable_Warn")));
|
||||||
Device.Log.SetEnable(LogLevel.Error, Convert.ToBoolean(Parser.Value("Logging_Enable_Error")));
|
Logger.SetEnable(LogLevel.Error, Convert.ToBoolean(Parser.Value("Logging_Enable_Error")));
|
||||||
|
|
||||||
string[] FilteredLogClasses = Parser.Value("Logging_Filtered_Classes").Split(',', StringSplitOptions.RemoveEmptyEntries);
|
string[] FilteredLogClasses = Parser.Value("Logging_Filtered_Classes").Split(',', StringSplitOptions.RemoveEmptyEntries);
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ namespace Ryujinx
|
||||||
{
|
{
|
||||||
foreach (LogClass Class in Enum.GetValues(typeof(LogClass)))
|
foreach (LogClass Class in Enum.GetValues(typeof(LogClass)))
|
||||||
{
|
{
|
||||||
Device.Log.SetEnable(Class, false);
|
Logger.SetEnable(Class, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ namespace Ryujinx
|
||||||
{
|
{
|
||||||
if (Class.ToString().ToLower().Contains(LogClass.Trim().ToLower()))
|
if (Class.ToString().ToLower().Contains(LogClass.Trim().ToLower()))
|
||||||
{
|
{
|
||||||
Device.Log.SetEnable(Class, true);
|
Logger.SetEnable(Class, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>netcoreapp2.1</TargetFramework>
|
<TargetFramework>netcoreapp2.1</TargetFramework>
|
||||||
|
@ -15,6 +15,7 @@
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\ChocolArm64\ChocolArm64.csproj" />
|
<ProjectReference Include="..\ChocolArm64\ChocolArm64.csproj" />
|
||||||
<ProjectReference Include="..\Ryujinx.Audio\Ryujinx.Audio.csproj" />
|
<ProjectReference Include="..\Ryujinx.Audio\Ryujinx.Audio.csproj" />
|
||||||
|
<ProjectReference Include="..\Ryujinx.Common\Ryujinx.Common.csproj" />
|
||||||
<ProjectReference Include="..\Ryujinx.Graphics\Ryujinx.Graphics.csproj" />
|
<ProjectReference Include="..\Ryujinx.Graphics\Ryujinx.Graphics.csproj" />
|
||||||
<ProjectReference Include="..\Ryujinx.HLE\Ryujinx.HLE.csproj" />
|
<ProjectReference Include="..\Ryujinx.HLE\Ryujinx.HLE.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
using Ryujinx.HLE.Logging;
|
using Ryujinx.Common.Logging;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
using Ryujinx.Audio;
|
using Ryujinx.Audio;
|
||||||
using Ryujinx.Audio.OpenAL;
|
using Ryujinx.Audio.OpenAL;
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.Graphics.Gal;
|
using Ryujinx.Graphics.Gal;
|
||||||
using Ryujinx.Graphics.Gal.OpenGL;
|
using Ryujinx.Graphics.Gal.OpenGL;
|
||||||
using Ryujinx.HLE;
|
using Ryujinx.HLE;
|
||||||
|
@ -22,7 +23,7 @@ namespace Ryujinx
|
||||||
|
|
||||||
Config.Read(Device);
|
Config.Read(Device);
|
||||||
|
|
||||||
Device.Log.Updated += ConsoleLog.Log;
|
Logger.Updated += ConsoleLog.Log;
|
||||||
|
|
||||||
if (args.Length == 1)
|
if (args.Length == 1)
|
||||||
{
|
{
|
||||||
|
|
Reference in a new issue