forked from Mirror/Ryujinx
Add internal Logging support (#3)
* Add internal Logging support
Add class Logging.
Replace all Console.WriteLine() to looks better.
Add informations inside Windows Titles.
* Revert "Add internal Logging support"
This reverts commit 275d363aaf
.
* Add internal Logging support
Add Logging Class.
Replace all Console.WriteLine() to looks better.
Add debug informations of IpcMessage.
Add informations inside Windows Titles.
* Add internal Logging support2
Add Logging Class.
Replace all Console.WriteLine() to looks better.
Add debug informations of IpcMessage.
Add informations inside Windows Titles.
This commit is contained in:
parent
ae91da5b60
commit
9e8f02b66d
7 changed files with 150 additions and 17 deletions
|
@ -351,7 +351,9 @@ void main(void) {
|
||||||
protected override void OnRenderFrame(FrameEventArgs e)
|
protected override void OnRenderFrame(FrameEventArgs e)
|
||||||
{
|
{
|
||||||
GL.Viewport(0, 0, 1280, 720);
|
GL.Viewport(0, 0, 1280, 720);
|
||||||
|
|
||||||
|
Title = $"Ryujinx Screen - (Vsync: {VSync} - FPS: {1f / e.Time:0})";
|
||||||
|
|
||||||
GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
|
GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
|
||||||
|
|
||||||
RenderFb();
|
RenderFb();
|
||||||
|
|
13
Program.cs
13
Program.cs
|
@ -9,6 +9,8 @@ namespace Ryujinx
|
||||||
{
|
{
|
||||||
static void Main(string[] args)
|
static void Main(string[] args)
|
||||||
{
|
{
|
||||||
|
Console.Title = "Ryujinx Console";
|
||||||
|
|
||||||
IGalRenderer Renderer = new OpenGLRenderer();
|
IGalRenderer Renderer = new OpenGLRenderer();
|
||||||
|
|
||||||
Switch Ns = new Switch(Renderer);
|
Switch Ns = new Switch(Renderer);
|
||||||
|
@ -21,27 +23,30 @@ namespace Ryujinx
|
||||||
|
|
||||||
if (RomFsFiles.Length > 0)
|
if (RomFsFiles.Length > 0)
|
||||||
{
|
{
|
||||||
Console.WriteLine("Loading as cart with RomFS.");
|
Logging.Info("Loading as cart with RomFS.");
|
||||||
|
|
||||||
|
Console.Title += " - Cart (with RomFS) - " + args[0];
|
||||||
Ns.Os.LoadCart(args[0], RomFsFiles[0]);
|
Ns.Os.LoadCart(args[0], RomFsFiles[0]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Console.WriteLine("Loading as cart WITHOUT RomFS.");
|
Logging.Info("Loading as cart WITHOUT RomFS.");
|
||||||
|
|
||||||
|
Console.Title += " - Cart (without RomFS) - " + args[0];
|
||||||
Ns.Os.LoadCart(args[0]);
|
Ns.Os.LoadCart(args[0]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (File.Exists(args[0]))
|
else if (File.Exists(args[0]))
|
||||||
{
|
{
|
||||||
Console.WriteLine("Loading as homebrew.");
|
Logging.Info("Loading as homebrew.");
|
||||||
|
|
||||||
|
Console.Title += " - Homebrew - " + args[0];
|
||||||
Ns.Os.LoadProgram(args[0]);
|
Ns.Os.LoadProgram(args[0]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Console.WriteLine("Please specify the folder with the NSOs/IStorage or a NSO/NRO.");
|
Logging.Error("Please specify the folder with the NSOs/IStorage or a NSO/NRO.");
|
||||||
}
|
}
|
||||||
|
|
||||||
using (GLScreen Screen = new GLScreen(Ns, Renderer))
|
using (GLScreen Screen = new GLScreen(Ns, Renderer))
|
||||||
|
|
128
Ryujinx/Logging.cs
Normal file
128
Ryujinx/Logging.cs
Normal file
|
@ -0,0 +1,128 @@
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.IO;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace Ryujinx
|
||||||
|
{
|
||||||
|
public static class Logging
|
||||||
|
{
|
||||||
|
private static Stopwatch ExecutionTime = new Stopwatch();
|
||||||
|
private static string LogFileName = "Ryujinx.log";
|
||||||
|
|
||||||
|
public static bool EnableInfo = true;
|
||||||
|
public static bool EnableTrace = true;
|
||||||
|
public static bool EnableDebug = true;
|
||||||
|
public static bool EnableWarn = true;
|
||||||
|
public static bool EnableError = true;
|
||||||
|
public static bool EnableFatal = true;
|
||||||
|
public static bool EnableLogFile = false;
|
||||||
|
|
||||||
|
static Logging()
|
||||||
|
{
|
||||||
|
ExecutionTime.Start();
|
||||||
|
|
||||||
|
if (File.Exists(LogFileName)) File.Delete(LogFileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string GetExecutionTime()
|
||||||
|
{
|
||||||
|
return ExecutionTime.ElapsedMilliseconds.ToString().PadLeft(8, '0') + "ms";
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void LogFile(string Message)
|
||||||
|
{
|
||||||
|
if (EnableLogFile)
|
||||||
|
{
|
||||||
|
using (StreamWriter Writer = File.AppendText(LogFileName))
|
||||||
|
{
|
||||||
|
Writer.WriteLine(Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Info(string Message)
|
||||||
|
{
|
||||||
|
if (EnableInfo)
|
||||||
|
{
|
||||||
|
string Text = $"{GetExecutionTime()} | INFO > {Message}";
|
||||||
|
|
||||||
|
Console.ForegroundColor = ConsoleColor.White;
|
||||||
|
Console.WriteLine(Text.PadLeft(Text.Length + 1, ' '));
|
||||||
|
Console.ResetColor();
|
||||||
|
|
||||||
|
LogFile(Text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Trace(string Message)
|
||||||
|
{
|
||||||
|
if (EnableTrace)
|
||||||
|
{
|
||||||
|
string Text = $"{GetExecutionTime()} | TRACE > {Message}";
|
||||||
|
|
||||||
|
Console.ForegroundColor = ConsoleColor.DarkGray;
|
||||||
|
Console.WriteLine(Text.PadLeft(Text.Length + 1, ' '));
|
||||||
|
Console.ResetColor();
|
||||||
|
|
||||||
|
LogFile(Text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Debug(string Message)
|
||||||
|
{
|
||||||
|
if (EnableDebug)
|
||||||
|
{
|
||||||
|
string Text = $"{GetExecutionTime()} | DEBUG > {Message}";
|
||||||
|
|
||||||
|
Console.ForegroundColor = ConsoleColor.Gray;
|
||||||
|
Console.WriteLine(Text.PadLeft(Text.Length + 1, ' '));
|
||||||
|
Console.ResetColor();
|
||||||
|
|
||||||
|
LogFile(Text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Warn(string Message)
|
||||||
|
{
|
||||||
|
if (EnableWarn)
|
||||||
|
{
|
||||||
|
string Text = $"{GetExecutionTime()} | WARN > {Message}";
|
||||||
|
|
||||||
|
Console.ForegroundColor = ConsoleColor.Yellow;
|
||||||
|
Console.WriteLine(Text.PadLeft(Text.Length + 1, ' '));
|
||||||
|
Console.ResetColor();
|
||||||
|
|
||||||
|
LogFile(Text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Error(string Message)
|
||||||
|
{
|
||||||
|
if (EnableError)
|
||||||
|
{
|
||||||
|
string Text = $"{GetExecutionTime()} | ERROR > {Message}";
|
||||||
|
|
||||||
|
Console.ForegroundColor = ConsoleColor.Red;
|
||||||
|
Console.WriteLine(Text.PadLeft(Text.Length + 1, ' '));
|
||||||
|
Console.ResetColor();
|
||||||
|
|
||||||
|
LogFile(Text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Fatal(string Message)
|
||||||
|
{
|
||||||
|
if (EnableFatal)
|
||||||
|
{
|
||||||
|
string Text = $"{GetExecutionTime()} | FATAL > {Message}";
|
||||||
|
|
||||||
|
Console.ForegroundColor = ConsoleColor.Magenta;
|
||||||
|
Console.WriteLine(Text.PadLeft(Text.Length + 1, ' '));
|
||||||
|
Console.ResetColor();
|
||||||
|
|
||||||
|
LogFile(Text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -262,6 +262,8 @@ namespace Ryujinx.OsHle.Ipc
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Logging.Debug($"IpcMessage: {DbgServiceName}");
|
||||||
|
|
||||||
if (ProcReq != null)
|
if (ProcReq != null)
|
||||||
{
|
{
|
||||||
using (MemoryStream ResMS = new MemoryStream())
|
using (MemoryStream ResMS = new MemoryStream())
|
||||||
|
|
|
@ -22,7 +22,7 @@ namespace Ryujinx.OsHle.Objects
|
||||||
|
|
||||||
//IAudioOut
|
//IAudioOut
|
||||||
private static AudioOutState State = AudioOutState.Stopped;
|
private static AudioOutState State = AudioOutState.Stopped;
|
||||||
private static List<long> KeysQueue = new List<long>();
|
private static Queue<long> KeysQueue = new Queue<long>();
|
||||||
|
|
||||||
//OpenAL
|
//OpenAL
|
||||||
private static bool OpenALInstalled = true;
|
private static bool OpenALInstalled = true;
|
||||||
|
@ -48,9 +48,9 @@ namespace Ryujinx.OsHle.Objects
|
||||||
{
|
{
|
||||||
AudioCtx = new AudioContext(); //Create the audio context
|
AudioCtx = new AudioContext(); //Create the audio context
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
Console.WriteLine("OpenAL Error! PS: Install OpenAL Core SDK!");
|
Logging.Warning("OpenAL Error! PS: Install OpenAL Core SDK!");
|
||||||
OpenALInstalled = false;
|
OpenALInstalled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -82,7 +82,7 @@ namespace Ryujinx.OsHle.Objects
|
||||||
{
|
{
|
||||||
long BufferId = Context.RequestData.ReadInt64();
|
long BufferId = Context.RequestData.ReadInt64();
|
||||||
|
|
||||||
KeysQueue.Insert(0, BufferId);
|
KeysQueue.Enqueue(BufferId);
|
||||||
|
|
||||||
byte[] AudioOutBuffer = AMemoryHelper.ReadBytes(Context.Memory, Context.Request.SendBuff[0].Position, 0x28);
|
byte[] AudioOutBuffer = AMemoryHelper.ReadBytes(Context.Memory, Context.Request.SendBuff[0].Position, 0x28);
|
||||||
using (MemoryStream MS = new MemoryStream(AudioOutBuffer))
|
using (MemoryStream MS = new MemoryStream(AudioOutBuffer))
|
||||||
|
@ -125,13 +125,9 @@ namespace Ryujinx.OsHle.Objects
|
||||||
{
|
{
|
||||||
long TempKey = 0;
|
long TempKey = 0;
|
||||||
|
|
||||||
if (KeysQueue.Count > 0)
|
if (KeysQueue.Count > 0) TempKey = KeysQueue.Dequeue();
|
||||||
{
|
|
||||||
TempKey = KeysQueue[KeysQueue.Count - 1];
|
|
||||||
KeysQueue.Remove(KeysQueue[KeysQueue.Count - 1]);
|
|
||||||
}
|
|
||||||
|
|
||||||
AMemoryHelper.WriteBytes(Context.Memory, Context.Request.ReceiveBuff[0].Position, System.BitConverter.GetBytes(TempKey));
|
AMemoryHelper.WriteBytes(Context.Memory, Context.Request.ReceiveBuff[0].Position, BitConverter.GetBytes(TempKey));
|
||||||
|
|
||||||
Context.ResponseData.Write((int)TempKey);
|
Context.ResponseData.Write((int)TempKey);
|
||||||
|
|
||||||
|
|
|
@ -563,7 +563,7 @@ namespace Ryujinx.OsHle.Services
|
||||||
NvMap.Kind = Kind;
|
NvMap.Kind = Kind;
|
||||||
}
|
}
|
||||||
|
|
||||||
Console.WriteLine($"NvMapIocAlloc at {NvMap.Address:x16}");
|
Logging.Debug($"NvMapIocAlloc at {NvMap.Address:x16}");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -121,7 +121,7 @@ namespace Ryujinx.OsHle.Svc
|
||||||
|
|
||||||
string Str = AMemoryHelper.ReadAsciiString(Memory, Position, (int)Size);
|
string Str = AMemoryHelper.ReadAsciiString(Memory, Position, (int)Size);
|
||||||
|
|
||||||
Console.WriteLine($"SvcOutputDebugString: {Str}");
|
Logging.Info($"SvcOutputDebugString: {Str}");
|
||||||
|
|
||||||
Registers.X0 = (int)SvcResult.Success;
|
Registers.X0 = (int)SvcResult.Success;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue