From 15188e3b9e54260a6410ab3e734586eeb4b2ea21 Mon Sep 17 00:00:00 2001 From: HorrorTroll Date: Mon, 3 Dec 2018 14:39:27 +0700 Subject: [PATCH] Fix mm:u --- Ryujinx.HLE/HOS/Services/Mm/IRequest.cs | 55 +++++++++++++++++++++++-- 1 file changed, 51 insertions(+), 4 deletions(-) diff --git a/Ryujinx.HLE/HOS/Services/Mm/IRequest.cs b/Ryujinx.HLE/HOS/Services/Mm/IRequest.cs index 72067d71af..2719549909 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 { m_Commands = new Dictionary() { - { 1, InitializeOld }, + { 0, InitializeOld }, + { 1, FinalizeOld }, + { 2, SetAndWaitOld }, + { 3, GetOld }, { 4, Initialize }, { 5, Finalize }, { 6, SetAndWait }, @@ -29,11 +32,46 @@ 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; + } + + 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."); @@ -50,18 +88,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; }