From 1b66707daf032412062f1ffd874fdc56e2ea818d Mon Sep 17 00:00:00 2001 From: ParantezTech <12572227+par274@users.noreply.github.com> Date: Thu, 8 Oct 2026 17:26:53 +0300 Subject: [PATCH] [SharePlay] Report inactive share-play state Co-authored-by: Sekai <140012992+SekaixX@users.noreply.github.com> --- src/SharpEmu.Libs/Share/SharePlayExports.cs | 34 +++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/SharpEmu.Libs/Share/SharePlayExports.cs diff --git a/src/SharpEmu.Libs/Share/SharePlayExports.cs b/src/SharpEmu.Libs/Share/SharePlayExports.cs new file mode 100644 index 0000000..9baffec --- /dev/null +++ b/src/SharpEmu.Libs/Share/SharePlayExports.cs @@ -0,0 +1,34 @@ +// Copyright (C) 2026 SharpEmu Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +using SharpEmu.HLE; + +namespace SharpEmu.Libs.Share; + +public static class SharePlayExports +{ + private static int _controllerProhibited; + + [SysAbiExport( + Nid = "FzQS6DREDfk", + ExportName = "sceSharePlayProhibitController", + Target = Generation.Gen5, + LibraryName = "libSceSharePlay")] + public static int SharePlayProhibitController(CpuContext ctx) + { + var prohibited = ctx[CpuRegister.Rdi]; + if (prohibited > 1) + { + return ctx.SetReturn(OrbisGen2Result.ORBIS_GEN2_ERROR_INVALID_ARGUMENT); + } + + Volatile.Write(ref _controllerProhibited, unchecked((int)prohibited)); + return ctx.SetReturn(OrbisGen2Result.ORBIS_GEN2_OK); + } + + public static void ResetRuntimeState() => Volatile.Write(ref _controllerProhibited, 0); + + internal static bool IsControllerProhibited => Volatile.Read(ref _controllerProhibited) != 0; + + internal static void ResetForTests() => ResetRuntimeState(); +}