diff --git a/Ryujinx.HLE/HOS/Applets/Error/ApplicationErrorArg.cs b/Ryujinx.HLE/HOS/Applets/Error/ApplicationErrorArg.cs
new file mode 100644
index 0000000000..931c5912ab
--- /dev/null
+++ b/Ryujinx.HLE/HOS/Applets/Error/ApplicationErrorArg.cs
@@ -0,0 +1,13 @@
+using System.Runtime.InteropServices;
+
+namespace Ryujinx.HLE.HOS.Applets.Error
+{
+    [StructLayout(LayoutKind.Sequential, Pack = 1)]
+    unsafe struct ApplicationErrorArg
+    {
+        public uint       ErrorNumber;
+        public ulong      LanguageCode;
+        public fixed byte MessageText[0x800];
+        public fixed byte DetailsText[0x800];
+    }
+} 
\ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Applets/Error/ErrorApplet.cs b/Ryujinx.HLE/HOS/Applets/Error/ErrorApplet.cs
index c78cbf3160..c8bdf3e19a 100644
--- a/Ryujinx.HLE/HOS/Applets/Error/ErrorApplet.cs
+++ b/Ryujinx.HLE/HOS/Applets/Error/ErrorApplet.cs
@@ -8,6 +8,7 @@ using Ryujinx.HLE.FileSystem;
 using Ryujinx.HLE.HOS.Services.Am.AppletAE;
 using Ryujinx.HLE.HOS.SystemState;
 using System;
+using System.Collections.Generic;
 using System.IO;
 using System.Linq;
 using System.Runtime.InteropServices;
@@ -51,6 +52,12 @@ namespace Ryujinx.HLE.HOS.Applets.Error
                     {
                         ParseErrorCommonArg();
 
+                        break;
+                    }
+                case ErrorType.ApplicationErrorArg:
+                    {
+                        ParseApplicationErrorArg();
+
                         break;
                     }
                 default: throw new NotImplementedException($"ErrorApplet type {_errorCommonHeader.Type} is not implemented.");
@@ -163,6 +170,41 @@ namespace Ryujinx.HLE.HOS.Applets.Error
             }
         }
 
+        private void ParseApplicationErrorArg()
+        {
+            ApplicationErrorArg applicationErrorArg = IApplet.ReadStruct<ApplicationErrorArg>(_errorStorage);
+
+            byte[] messageTextBuffer = new byte[0x800];
+            byte[] detailsTextBuffer = new byte[0x800];
+            unsafe
+            {
+                Marshal.Copy((IntPtr)applicationErrorArg.MessageText, messageTextBuffer, 0, 0x800);
+                Marshal.Copy((IntPtr)applicationErrorArg.DetailsText, detailsTextBuffer, 0, 0x800);
+            }
+
+            string messageText = Encoding.ASCII.GetString(messageTextBuffer.TakeWhile(b => !b.Equals(0)).ToArray());
+            string detailsText = Encoding.ASCII.GetString(detailsTextBuffer.TakeWhile(b => !b.Equals(0)).ToArray());
+
+            List<string> buttons = new List<string>();
+
+            // TODO: Handle the LanguageCode to return the translated "OK" and "Details".
+
+            if (detailsText.Trim() != "")
+            {
+                buttons.Add("Details");
+            }
+
+            buttons.Add("OK");
+
+            bool showDetails = _horizon.Device.UiHandler.DisplayErrorAppletDialog($"Error Number: {applicationErrorArg.ErrorNumber}", "\n" + messageText, buttons.ToArray());
+            if (showDetails)
+            {
+                buttons.RemoveAt(0);
+
+                _horizon.Device.UiHandler.DisplayErrorAppletDialog($"Error Number: {applicationErrorArg.ErrorNumber} (Details)", "\n" + detailsText, buttons.ToArray());
+            }
+        }
+
         public ResultCode GetResult()
         {
             return ResultCode.Success;