From 4a3ed0cec791107d1fc49849eec81bf79179db84 Mon Sep 17 00:00:00 2001 From: emmaus Date: Tue, 24 Jul 2018 21:38:44 +0000 Subject: [PATCH] implemented ListDisplays --- .../Services/Vi/IApplicationDisplayService.cs | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/Ryujinx.HLE/OsHle/Services/Vi/IApplicationDisplayService.cs b/Ryujinx.HLE/OsHle/Services/Vi/IApplicationDisplayService.cs index 57848319f..17dc47e14 100644 --- a/Ryujinx.HLE/OsHle/Services/Vi/IApplicationDisplayService.cs +++ b/Ryujinx.HLE/OsHle/Services/Vi/IApplicationDisplayService.cs @@ -1,6 +1,8 @@ +using ChocolArm64.Memory; using Ryujinx.HLE.OsHle.Ipc; using System.Collections.Generic; using System.IO; +using System.Text; using static Ryujinx.HLE.OsHle.Services.Android.Parcel; @@ -22,6 +24,7 @@ namespace Ryujinx.HLE.OsHle.Services.Vi { 101, GetSystemDisplayService }, { 102, GetManagerDisplayService }, { 103, GetIndirectDisplayTransactionService }, + { 1000, ListDisplays }, { 1010, OpenDisplay }, { 1020, CloseDisplay }, { 1102, GetDisplayResolution }, @@ -64,6 +67,24 @@ namespace Ryujinx.HLE.OsHle.Services.Vi return 0; } + public long ListDisplays(ServiceCtx Context) + { + long RecBuffPtr = Context.Request.ReceiveBuff[0].Position; + + AMemoryHelper.FillWithZeros(Context.Memory, RecBuffPtr, 0x60); + + //Add only the default display to buffer + Context.Memory.WriteBytes(RecBuffPtr, Encoding.ASCII.GetBytes("Default")); + Context.Memory.WriteInt64(RecBuffPtr + 0x40, 0x1L); + Context.Memory.WriteInt64(RecBuffPtr + 0x48, 0x1L); + Context.Memory.WriteInt64(RecBuffPtr + 0x50, 1920L); + Context.Memory.WriteInt64(RecBuffPtr + 0x58, 1080L); + + Context.ResponseData.Write(1L); + + return 0; + } + public long OpenDisplay(ServiceCtx Context) { string Name = GetDisplayName(Context);