From bb684f87b168a9be414f27be2641dbfcda331000 Mon Sep 17 00:00:00 2001 From: DH Date: Thu, 21 Nov 2024 02:52:21 +0300 Subject: [PATCH] ps5: fix audiod failure thanks ga2mer for investigation --- orbis-kernel/src/sys/sys_sysctl.cpp | 5 +++-- rpcsx/main.cpp | 9 +++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/orbis-kernel/src/sys/sys_sysctl.cpp b/orbis-kernel/src/sys/sys_sysctl.cpp index a5b76a7..2eeb4c0 100644 --- a/orbis-kernel/src/sys/sys_sysctl.cpp +++ b/orbis-kernel/src/sys/sys_sysctl.cpp @@ -751,8 +751,9 @@ SysResult kern_sysctl(Thread *thread, ptr name, uint namelen, return ErrorCode::INVAL; } - if (std::string_view((char *)thread->tproc->appInfo.titleId) == - "NPXS20973") { + if (g_context.fwType != FwType::Ps5 && + std::string_view((char *)thread->tproc->appInfo.titleId.data()) == + "NPXS20973") { ORBIS_LOG_ERROR("get tsc freq: returning patched value"); *(uint64_t *)old = 1000000; } else { diff --git a/rpcsx/main.cpp b/rpcsx/main.cpp index 67010ee..0d38333 100644 --- a/rpcsx/main.cpp +++ b/rpcsx/main.cpp @@ -1162,7 +1162,7 @@ int main(int argc, const char *argv[]) { ipmi::createGnmCompositorObjects(initProcess); ipmi::createShellCoreObjects(initProcess); - if (enableAudioIpmi || orbis::g_context.fwType == orbis::FwType::Ps5) { + if (enableAudioIpmi) { ipmi::createAudioSystemObjects(initProcess); } @@ -1179,16 +1179,17 @@ int main(int argc, const char *argv[]) { initProcess->cwd = "/app0/"; - if (orbis::g_context.fwType != orbis::FwType::Ps5 && !enableAudioIpmi) { + if (!enableAudioIpmi) { launchDaemon(mainThread, "/system/sys/orbis_audiod.elf", {"/system/sys/orbis_audiod.elf"}, {}, { - .titleId = "NPXS20973", + .titleId = {"NPXS20973"}, .unk4 = orbis::slong(0x80000000'00000000), }); // confirmed to work and known method of initialization since 5.05 // version - if (orbis::g_context.fwSdkVersion >= 0x5050000) { + if (orbis::g_context.fwType != orbis::FwType::Ps5 && + orbis::g_context.fwSdkVersion >= 0x5050000) { auto fakeIpmiThread = createGuestThread(); ipmi::audioIpmiClient = ipmi::createIpmiClient(fakeIpmiThread, "SceSysAudioSystemIpc");