Эх сурвалжийг харах

Implement GetDefaultDisplayResolution/+ChangeEvent on ICommonStateGetter

Lordmau5 7 жил өмнө
parent
commit
f13be6429b

+ 28 - 1
Ryujinx.Core/OsHle/Services/Am/ICommonStateGetter.cs

@@ -13,6 +13,8 @@ namespace Ryujinx.Core.OsHle.Services.Am
 
         public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => m_Commands;
 
+        private KEvent DisplayResolutionChangeEvent;
+
         public ICommonStateGetter()
         {
             m_Commands = new Dictionary<int, ServiceProcessRequest>()
@@ -22,8 +24,12 @@ namespace Ryujinx.Core.OsHle.Services.Am
                 { 5, GetOperationMode     },
                 { 6, GetPerformanceMode   },
                 { 8, GetBootMode          },
-                { 9, GetCurrentFocusState }
+                { 9, GetCurrentFocusState },
+                { 60, GetDefaultDisplayResolution },
+                { 61, GetDefaultDisplayResolutionChangeEvent }
             };
+
+            DisplayResolutionChangeEvent = new KEvent();
         }
 
         public long GetEventHandle(ServiceCtx Context)
@@ -78,5 +84,26 @@ namespace Ryujinx.Core.OsHle.Services.Am
 
             return 0;
         }
+
+        public long GetDefaultDisplayResolution(ServiceCtx Context)
+        {
+            Context.ResponseData.Write(1280);
+            Context.ResponseData.Write(720);
+
+            // Context.Ns.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
+
+            return 0;
+        }
+
+        public long GetDefaultDisplayResolutionChangeEvent(ServiceCtx Context)
+        {
+            int Handle = Context.Process.HandleTable.OpenHandle(DisplayResolutionChangeEvent);
+
+            Context.Response.HandleDesc = IpcHandleDesc.MakeCopy(Handle);
+
+            Context.Ns.Log.PrintStub(LogClass.ServiceAm, "Stubbed.");
+
+            return 0;
+        }
     }
 }