From 6cc753e0fc54c3672a780d4c82331047ee15466a Mon Sep 17 00:00:00 2001 From: ParantezTech <12572227+par274@users.noreply.github.com> Date: Thu, 8 Oct 2026 17:26:50 +0300 Subject: [PATCH] [AppContent] Report missing add-on content entitlements Co-authored-by: Sekai <140012992+SekaixX@users.noreply.github.com> --- .../AppContent/AppContentExports.cs | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/SharpEmu.Libs/AppContent/AppContentExports.cs b/src/SharpEmu.Libs/AppContent/AppContentExports.cs index cde7f1e..45dca7f 100644 --- a/src/SharpEmu.Libs/AppContent/AppContentExports.cs +++ b/src/SharpEmu.Libs/AppContent/AppContentExports.cs @@ -12,6 +12,9 @@ namespace SharpEmu.Libs.AppContent; public static class AppContentExports { private const ulong FallbackAvailableSpaceKb = 1024UL * 1024UL; // 1 GiB + private const int AppContentErrorParameter = unchecked((int)0x80D90002); + private const int AppContentErrorDrmNoEntitlement = unchecked((int)0x80D90007); + private const int MountPointSize = 16; private const ulong BootParamAttrOffset = 4; private const string Temp0MountPoint = "/temp0"; private const uint AppParamSkuFlag = 0; @@ -99,6 +102,29 @@ public static class AppContentExports return ctx.SetReturn(OrbisGen2Result.ORBIS_GEN2_OK); } + [SysAbiExport( + Nid = "VANhIWcqYak", + ExportName = "sceAppContentAddcontMount", + Target = Generation.Gen4 | Generation.Gen5, + LibraryName = "libSceAppContent")] + public static int AppContentAddcontMount(CpuContext ctx) + { + var entitlementLabelAddress = ctx[CpuRegister.Rsi]; + var mountPointAddress = ctx[CpuRegister.Rdx]; + if (entitlementLabelAddress == 0 || mountPointAddress == 0) + { + return ctx.SetReturn(AppContentErrorParameter); + } + + Span emptyMountPoint = stackalloc byte[MountPointSize]; + if (!ctx.Memory.TryWrite(mountPointAddress, emptyMountPoint)) + { + return ctx.SetReturn(OrbisGen2Result.ORBIS_GEN2_ERROR_MEMORY_FAULT); + } + + return ctx.SetReturn(AppContentErrorDrmNoEntitlement); + } + [SysAbiExport( Nid = "buYbeLOGWmA", ExportName = "sceAppContentTemporaryDataMount2",