From 5b4382f459c1dcbd55dbc804ac1bce93fbba41c1 Mon Sep 17 00:00:00 2001 From: HorrorTroll Date: Fri, 7 Dec 2018 22:19:10 +0700 Subject: [PATCH] Fix InitializeOld & add FinalizeOld, SetAndWaitOld, GetOld on mm:u (#521) * Fix mm:u * Align some missing * Fix some uncorrect code --- Ryujinx.HLE/HOS/Services/Mm/IRequest.cs | 57 +++++++++++++++++++++++-- 1 file changed, 53 insertions(+), 4 deletions(-) diff --git a/Ryujinx.HLE/HOS/Services/Mm/IRequest.cs b/Ryujinx.HLE/HOS/Services/Mm/IRequest.cs index f1c6d6c9..9b051de0 100644 --- a/Ryujinx.HLE/HOS/Services/Mm/IRequest.cs +++ b/Ryujinx.HLE/HOS/Services/Mm/IRequest.cs @@ -14,7 +14,10 @@ namespace Ryujinx.HLE.HOS.Services.Mm { _commands = new Dictionary() { - { 1, InitializeOld }, + { 0, InitializeOld }, + { 1, FinalizeOld }, + { 2, SetAndWaitOld }, + { 3, GetOld }, { 4, Initialize }, { 5, Finalize }, { 6, SetAndWait }, @@ -29,11 +32,47 @@ namespace Ryujinx.HLE.HOS.Services.Mm int unknown1 = context.RequestData.ReadInt32(); int unknown2 = context.RequestData.ReadInt32(); + Logger.PrintStub(LogClass.ServiceMm, $"Stubbed. Unknown0: {unknown0} - " + + $"Unknown1: {unknown1} - Unknown2: {unknown2}"); + + return 0; + } + + // FinalizeOld(u32) + public long FinalizeOld(ServiceCtx context) + { + context.Device.Gpu.UninitializeVideoDecoder(); + Logger.PrintStub(LogClass.ServiceMm, "Stubbed."); return 0; } + // SetAndWaitOld(u32, u32, u32) + public long SetAndWaitOld(ServiceCtx context) + { + int unknown0 = context.RequestData.ReadInt32(); + int unknown1 = context.RequestData.ReadInt32(); + int unknown2 = context.RequestData.ReadInt32(); + + Logger.PrintStub(LogClass.ServiceMm, $"Stubbed. Unknown0: {unknown0} - " + + $"Unknown1: {unknown1} - Unknown2: {unknown2}"); + return 0; + } + + // GetOld(u32) -> u32 + public long GetOld(ServiceCtx context) + { + int unknown0 = context.RequestData.ReadInt32(); + + Logger.PrintStub(LogClass.ServiceMm, $"Stubbed. Unknown0: {unknown0}"); + + context.ResponseData.Write(0); + + return 0; + } + + // Initialize() public long Initialize(ServiceCtx context) { Logger.PrintStub(LogClass.ServiceMm, "Stubbed."); @@ -41,6 +80,7 @@ namespace Ryujinx.HLE.HOS.Services.Mm return 0; } + // Finalize(u32) public long Finalize(ServiceCtx context) { context.Device.Gpu.UninitializeVideoDecoder(); @@ -50,18 +90,27 @@ namespace Ryujinx.HLE.HOS.Services.Mm return 0; } + // SetAndWait(u32, u32, u32) public long SetAndWait(ServiceCtx context) { - Logger.PrintStub(LogClass.ServiceMm, "Stubbed."); + int unknown0 = context.RequestData.ReadInt32(); + int unknown1 = context.RequestData.ReadInt32(); + int unknown2 = context.RequestData.ReadInt32(); + + Logger.PrintStub(LogClass.ServiceMm, $"Stubbed. Unknown0: {unknown0} - " + + $"Unknown1: {unknown1} - Unknown2: {unknown2}"); return 0; } + // Get(u32) -> u32 public long Get(ServiceCtx context) { - context.ResponseData.Write(0); + int unknown0 = context.RequestData.ReadInt32(); - Logger.PrintStub(LogClass.ServiceMm, "Stubbed."); + Logger.PrintStub(LogClass.ServiceMm, $"Stubbed. Unknown0: {unknown0}"); + + context.ResponseData.Write(0); return 0; }