From bf623d4f855e4d04a8596ac43370045caded7546 Mon Sep 17 00:00:00 2001 From: Stephen Miller <56742918+StevenMiller123@users.noreply.github.com> Date: Tue, 15 Jul 2025 07:48:05 -0500 Subject: [PATCH] Libraries: Implement sceAudio3dTerminate (#3247) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * sceAudio3dTerminate My First Gran Turismo® (CUSA49696) uses this while initializing it's audio system. Without it, the game spams errored sceAudio3dInitialize calls. * Properly close AudioOut handle Based on library decompilation. --- src/core/libraries/audio3d/audio3d.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/core/libraries/audio3d/audio3d.cpp b/src/core/libraries/audio3d/audio3d.cpp index 646c28949..81befc5bf 100644 --- a/src/core/libraries/audio3d/audio3d.cpp +++ b/src/core/libraries/audio3d/audio3d.cpp @@ -526,7 +526,14 @@ s32 PS4_SYSV_ABI sceAudio3dStrError() { } s32 PS4_SYSV_ABI sceAudio3dTerminate() { - LOG_ERROR(Lib_Audio3d, "(STUBBED) called"); + LOG_INFO(Lib_Audio3d, "called"); + if (!state) { + return ORBIS_AUDIO3D_ERROR_NOT_READY; + } + + AudioOut::sceAudioOutOutput(state->audio_out_handle, nullptr); + AudioOut::sceAudioOutClose(state->audio_out_handle); + state.release(); return ORBIS_OK; }