diff --git a/Ryujinx.HLE/HOS/Services/Lm/ILogger.cs b/Ryujinx.HLE/HOS/Services/Lm/ILogger.cs
index 42d57c6fcd..5d99970990 100644
--- a/Ryujinx.HLE/HOS/Services/Lm/ILogger.cs
+++ b/Ryujinx.HLE/HOS/Services/Lm/ILogger.cs
@@ -22,9 +22,9 @@ namespace Ryujinx.HLE.HOS.Services.Lm
 
         public long Log(ServiceCtx Context)
         {
-            byte[] LogBuffer = Context.Memory.ReadBytes(
-                Context.Request.PtrBuff[0].Position,
-                Context.Request.PtrBuff[0].Size);
+
+            (long BufPos, long BufSize) = Context.Request.GetBufferType0x21();
+            byte[] LogBuffer = Context.Memory.ReadBytes(BufPos, BufSize);
 
             using (MemoryStream MS = new MemoryStream(LogBuffer))
             {
@@ -50,20 +50,36 @@ namespace Ryujinx.HLE.HOS.Services.Lm
 
                     string FieldStr = string.Empty;
 
-                    if (Field == LmLogField.Skip)
+                    if (Field == LmLogField.Start)
                     {
-                        Reader.ReadByte();
+                        Reader.ReadBytes(Size);
 
                         continue;
                     }
+                    else if (Field == LmLogField.Stop)
+                    {
+                        break;
+                    }
                     else if (Field == LmLogField.Line)
                     {
                         FieldStr = Field + ": " + Reader.ReadInt32();
                     }
-                    else
+                    else if (Field == LmLogField.DropCount)
+                    {
+                        FieldStr = Field + ": " + Reader.ReadInt64();
+                    }
+                    else if (Field == LmLogField.Time)
+                    {
+                        FieldStr = Field + ": " + Reader.ReadInt64() + "s";
+                    }
+                    else if (Field < LmLogField.Count)
                     {
                         FieldStr = Field + ": \"" + Encoding.UTF8.GetString(Reader.ReadBytes(Size)) + "\"";
                     }
+                    else
+                    {
+                        FieldStr = "Field" + Field + ": \"" + Encoding.UTF8.GetString(Reader.ReadBytes(Size)) + "\"";
+                    }
 
                     SB.AppendLine(" " + FieldStr);
                 }
diff --git a/Ryujinx.HLE/HOS/Services/Lm/LmLogField.cs b/Ryujinx.HLE/HOS/Services/Lm/LmLogField.cs
index bd8c8e886a..9547463466 100644
--- a/Ryujinx.HLE/HOS/Services/Lm/LmLogField.cs
+++ b/Ryujinx.HLE/HOS/Services/Lm/LmLogField.cs
@@ -2,12 +2,17 @@ namespace Ryujinx.HLE.HOS.Services.Lm
 {
     enum LmLogField
     {
-        Skip     = 1,
-        Message  = 2,
-        Line     = 3,
-        Filename = 4,
-        Function = 5,
-        Module   = 6,
-        Thread   = 7
+        Start       = 0,
+        Stop        = 1,
+        Message     = 2,
+        Line        = 3,
+        Filename    = 4,
+        Function    = 5,
+        Module      = 6,
+        Thread      = 7,
+        DropCount   = 8,
+        Time        = 9,
+        ProgramName = 10,
+        Count
     }
 }
\ No newline at end of file