From eb300d0aa726e340df0feda1dfa688669642bcc4 Mon Sep 17 00:00:00 2001 From: Stephen Miller <56742918+StevenMiller123@users.noreply.github.com> Date: Tue, 1 Apr 2025 19:41:40 -0500 Subject: [PATCH] libraries: Proper ulobjmgr stubs (#2740) * Better ulobjmgr stubs Main goal is to stop all the Unknown stub spam in titles using libSceUlt. * Address review comments * Update ulobjmgr.cpp --- CMakeLists.txt | 2 ++ src/core/libraries/libs.cpp | 2 ++ src/core/libraries/ulobjmgr/ulobjmgr.cpp | 45 ++++++++++++++++++++++++ src/core/libraries/ulobjmgr/ulobjmgr.h | 14 ++++++++ 4 files changed, 63 insertions(+) create mode 100644 src/core/libraries/ulobjmgr/ulobjmgr.cpp create mode 100644 src/core/libraries/ulobjmgr/ulobjmgr.h diff --git a/CMakeLists.txt b/CMakeLists.txt index d50dc187d..b3aba5d13 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -578,6 +578,8 @@ set(MISC_LIBS src/core/libraries/screenshot/screenshot.cpp src/core/libraries/screenshot/screenshot.h src/core/libraries/move/move.cpp src/core/libraries/move/move.h + src/core/libraries/ulobjmgr/ulobjmgr.cpp + src/core/libraries/ulobjmgr/ulobjmgr.h ) set(DEV_TOOLS src/core/devtools/layer.cpp diff --git a/src/core/libraries/libs.cpp b/src/core/libraries/libs.cpp index cd0fe650b..d0f82556e 100644 --- a/src/core/libraries/libs.cpp +++ b/src/core/libraries/libs.cpp @@ -50,6 +50,7 @@ #include "core/libraries/system/sysmodule.h" #include "core/libraries/system/systemservice.h" #include "core/libraries/system/userservice.h" +#include "core/libraries/ulobjmgr/ulobjmgr.h" #include "core/libraries/usbd/usbd.h" #include "core/libraries/videodec/videodec.h" #include "core/libraries/videodec/videodec2.h" @@ -116,6 +117,7 @@ void InitHLELibs(Core::Loader::SymbolsResolver* sym) { Libraries::Zlib::RegisterlibSceZlib(sym); Libraries::Hmd::RegisterlibSceHmd(sym); Libraries::DiscMap::RegisterlibSceDiscMap(sym); + Libraries::Ulobjmgr::RegisterlibSceUlobjmgr(sym); } } // namespace Libraries diff --git a/src/core/libraries/ulobjmgr/ulobjmgr.cpp b/src/core/libraries/ulobjmgr/ulobjmgr.cpp new file mode 100644 index 000000000..cad6feda9 --- /dev/null +++ b/src/core/libraries/ulobjmgr/ulobjmgr.cpp @@ -0,0 +1,45 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "common/logging/log.h" +#include "core/libraries/error_codes.h" +#include "core/libraries/kernel/posix_error.h" +#include "core/libraries/libs.h" +#include "core/libraries/ulobjmgr/ulobjmgr.h" + +namespace Libraries::Ulobjmgr { + +s32 PS4_SYSV_ABI Func_046DBA8411A2365C(u64 arg0, s32 arg1, u32* arg2) { + if (arg0 == 0 || arg1 == 0 || arg2 == nullptr) { + return POSIX_EINVAL; + } + *arg2 = 0; + return ORBIS_OK; +} + +s32 PS4_SYSV_ABI Func_1D9F50D9CFB8054E() { + return ORBIS_OK; +} + +s32 PS4_SYSV_ABI Func_4A67FE7D435B94F7(u32 arg0) { + if (arg0 >= 0x4000) { + return POSIX_EINVAL; + } + return ORBIS_OK; +} + +s32 PS4_SYSV_ABI Func_4B07893BBB77A649(u64 arg0) { + if (arg0 == 0) { + return POSIX_EINVAL; + } + return ORBIS_OK; +} + +void RegisterlibSceUlobjmgr(Core::Loader::SymbolsResolver* sym) { + LIB_FUNCTION("BG26hBGiNlw", "ulobjmgr", 1, "ulobjmgr", 1, 1, Func_046DBA8411A2365C); + LIB_FUNCTION("HZ9Q2c+4BU4", "ulobjmgr", 1, "ulobjmgr", 1, 1, Func_1D9F50D9CFB8054E); + LIB_FUNCTION("Smf+fUNblPc", "ulobjmgr", 1, "ulobjmgr", 1, 1, Func_4A67FE7D435B94F7); + LIB_FUNCTION("SweJO7t3pkk", "ulobjmgr", 1, "ulobjmgr", 1, 1, Func_4B07893BBB77A649); +}; + +} // namespace Libraries::Ulobjmgr diff --git a/src/core/libraries/ulobjmgr/ulobjmgr.h b/src/core/libraries/ulobjmgr/ulobjmgr.h new file mode 100644 index 000000000..9a1440e5c --- /dev/null +++ b/src/core/libraries/ulobjmgr/ulobjmgr.h @@ -0,0 +1,14 @@ +// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "common/types.h" + +namespace Core::Loader { +class SymbolsResolver; +} + +namespace Libraries::Ulobjmgr { +void RegisterlibSceUlobjmgr(Core::Loader::SymbolsResolver* sym); +} // namespace Libraries::Ulobjmgr \ No newline at end of file