Просмотр исходного кода

am/ectx: Implement SetRequestExitToLibraryAppletAtExecuteNextProgramEnabled and add service placeholder (#2136)

* am/ectx: Implement SetRequestExitToLibraryAppletAtExecuteNextProgramEnabled and add service placeholder

This PR implements `am` service call `SetRequestExitToLibraryAppletAtExecuteNextProgramEnabled` (closes #2028) accordingly to RE and adds placeholder for the `ectx` service. Both were added in 11.0.0+ firmware and are needed to boots games which needs this version.
Some games are now playable/bootable:

* Remove unused warning
Ac_K 5 лет назад
Родитель
Сommit
53b9267b47

+ 13 - 0
Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/SystemAppletProxy/ICommonStateGetter.cs

@@ -13,7 +13,10 @@ namespace Ryujinx.HLE.HOS.Services.Am.AppletAE.AllSystemAppletProxiesService.Sys
         private Lbl.LblControllerServer _lblControllerServer;
         private Lbl.LblControllerServer _lblControllerServer;
 
 
         private bool _vrModeEnabled;
         private bool _vrModeEnabled;
+#pragma warning disable CS0169
         private bool _lcdBacklighOffEnabled;
         private bool _lcdBacklighOffEnabled;
+        private bool _requestExitToLibraryAppletAtExecuteNextProgramEnabled;
+#pragma warning restore CS0169
         private int  _messageEventHandle;
         private int  _messageEventHandle;
         private int  _displayResolutionChangedEventHandle;
         private int  _displayResolutionChangedEventHandle;
 
 
@@ -237,5 +240,15 @@ namespace Ryujinx.HLE.HOS.Services.Am.AppletAE.AllSystemAppletProxiesService.Sys
         {
         {
             return (ResultCode)_apmSystemManagerServer.GetCurrentPerformanceConfiguration(context);
             return (ResultCode)_apmSystemManagerServer.GetCurrentPerformanceConfiguration(context);
         }
         }
+
+        [Command(900)] // 11.0.0+
+        // SetRequestExitToLibraryAppletAtExecuteNextProgramEnabled()
+        public ResultCode SetRequestExitToLibraryAppletAtExecuteNextProgramEnabled(ServiceCtx context)
+        {
+            // TODO : Find where the field is used.
+            _requestExitToLibraryAppletAtExecuteNextProgramEnabled = true;
+
+            return ResultCode.Success;
+        }
     }
     }
 }
 }

+ 8 - 0
Ryujinx.HLE/HOS/Services/Ectx/IReaderForSystem.cs

@@ -0,0 +1,8 @@
+namespace Ryujinx.HLE.HOS.Services.Ectx
+{
+    [Service("ectx:r")] // 11.0.0+
+    class IReaderForSystem : IpcService
+    {
+        public IReaderForSystem(ServiceCtx context) { }
+    }
+}

+ 8 - 0
Ryujinx.HLE/HOS/Services/Ectx/IWriterForApplication.cs

@@ -0,0 +1,8 @@
+namespace Ryujinx.HLE.HOS.Services.Ectx
+{
+    [Service("ectx:aw")] // 11.0.0+
+    class IWriterForApplication : IpcService
+    {
+        public IWriterForApplication(ServiceCtx context) { }
+    }
+}

+ 8 - 0
Ryujinx.HLE/HOS/Services/Ectx/IWriterForSystem.cs

@@ -0,0 +1,8 @@
+namespace Ryujinx.HLE.HOS.Services.Ectx
+{
+    [Service("ectx:w")] // 11.0.0+
+    class IWriterForSystem : IpcService
+    {
+        public IWriterForSystem(ServiceCtx context) { }
+    }
+}