Procházet zdrojové kódy

Fix hbl 2.3.1 and hbmenu 3.3.0 (#1171)

* Fix hbl 2.3.1 and hbmenu 3.3.0

* log class: Add ServicePtm

* fix build issue

* do not cast titleId to byte

* Address Ac_K's comment
Thog před 6 roky
rodič
revize
486f3163f3

+ 1 - 0
Ryujinx.Common/Logging/LogClass.cs

@@ -40,6 +40,7 @@ namespace Ryujinx.Common.Logging
         ServicePl,
         ServicePrepo,
         ServicePsm,
+        ServicePtm,
         ServiceSet,
         ServiceSfdnsres,
         ServiceSm,

+ 1 - 1
Ryujinx.HLE/HOS/Services/Ns/IApplicationManagerInterface.cs

@@ -10,7 +10,7 @@
         public ResultCode GetApplicationControlData(ServiceCtx context)
         {
             byte  source  = (byte)context.RequestData.ReadInt64();
-            ulong titleId = (byte)context.RequestData.ReadUInt64();
+            ulong titleId = context.RequestData.ReadUInt64();
 
             long position = context.Request.ReceiveBuff[0].Position;
 

+ 23 - 0
Ryujinx.HLE/HOS/Services/Ns/IReadOnlyApplicationControlDataInterface.cs

@@ -0,0 +1,23 @@
+namespace Ryujinx.HLE.HOS.Services.Ns
+{
+    class IReadOnlyApplicationControlDataInterface : IpcService
+    {
+        public IReadOnlyApplicationControlDataInterface(ServiceCtx context) { }
+
+        [Command(0)]
+        // GetApplicationControlData(u8, u64) -> (unknown<4>, buffer<unknown, 6>)
+        public ResultCode GetApplicationControlData(ServiceCtx context)
+        {
+            byte source = (byte)context.RequestData.ReadInt64();
+            ulong titleId = context.RequestData.ReadUInt64();
+
+            long position = context.Request.ReceiveBuff[0].Position;
+
+            byte[] nacpData = context.Device.System.ControlData.ByteSpan.ToArray();
+
+            context.Memory.WriteBytes(position, nacpData);
+
+            return ResultCode.Success;
+        }
+    }
+}

+ 9 - 0
Ryujinx.HLE/HOS/Services/Ns/IServiceGetterInterface.cs

@@ -17,5 +17,14 @@ namespace Ryujinx.HLE.HOS.Services.Ns
 
             return ResultCode.Success;
         }
+
+        [Command(7989)]
+        // GetReadOnlyApplicationControlDataInterface() -> object<nn::ns::detail::IReadOnlyApplicationControlDataInterface>
+        public ResultCode GetReadOnlyApplicationControlDataInterface(ServiceCtx context)
+        {
+            MakeObject(context, new IReadOnlyApplicationControlDataInterface(context));
+
+            return ResultCode.Success;
+        }
     }
 }

+ 19 - 1
Ryujinx.HLE/HOS/Services/Ptm/Ts/IMeasurementServer.cs

@@ -1,8 +1,26 @@
-namespace Ryujinx.HLE.HOS.Services.Ptm.Ts
+using Ryujinx.Common.Logging;
+using Ryujinx.HLE.HOS.Services.Ptm.Ts.Types;
+
+namespace Ryujinx.HLE.HOS.Services.Ptm.Ts
 {
     [Service("ts")]
     class IMeasurementServer : IpcService
     {
+        private const uint DefaultTemperature = 42000u;
+
         public IMeasurementServer(ServiceCtx context) { }
+
+        [Command(3)]
+        // GetTemperatureMilliC(Location location) -> u32
+        public ResultCode GetTemperatureMilliC(ServiceCtx context)
+        {
+            Location location = (Location)context.RequestData.ReadByte();
+
+            Logger.PrintStub(LogClass.ServicePtm, new { location });
+
+            context.ResponseData.Write(DefaultTemperature);
+
+            return ResultCode.Success;
+        }
     }
 }

+ 8 - 0
Ryujinx.HLE/HOS/Services/Ptm/Ts/Types/Location.cs

@@ -0,0 +1,8 @@
+namespace Ryujinx.HLE.HOS.Services.Ptm.Ts.Types
+{
+    enum Location : byte
+    {
+        Internal,
+        External
+    }
+}