From 9354db6a163d217b4eaa6eae735c06b9b5b0c742 Mon Sep 17 00:00:00 2001 From: goeiecool9999 <7033575+goeiecool9999@users.noreply.github.com> Date: Sun, 17 Dec 2023 03:38:37 +0100 Subject: [PATCH] fix bugs and clean up --- src/Cafe/HW/Latte/Core/Latte.h | 6 ++- src/Cafe/HW/Latte/Core/LatteShaderCache.cpp | 28 +---------- src/Cafe/HW/Latte/Core/LatteThread.cpp | 53 +++++++++++++++++++++ src/Cafe/OS/libs/snd_core/ax_out.cpp | 3 +- src/audio/IAudioAPI.cpp | 3 ++ 5 files changed, 64 insertions(+), 29 deletions(-) diff --git a/src/Cafe/HW/Latte/Core/Latte.h b/src/Cafe/HW/Latte/Core/Latte.h index dc3cbc91..09a152a3 100644 --- a/src/Cafe/HW/Latte/Core/Latte.h +++ b/src/Cafe/HW/Latte/Core/Latte.h @@ -178,4 +178,8 @@ void LatteRenderTarget_updateViewport(); void Latte_Start(); void Latte_Stop(); bool Latte_GetStopSignal(); // returns true if stop was requested or if in stopped state -void LatteThread_Exit(); \ No newline at end of file +void LatteThread_Exit(); + +void LatteThread_InitBootSound(); +void LatteThread_StreamBootSound(); +void LatteThread_ShutdownBootSound(); diff --git a/src/Cafe/HW/Latte/Core/LatteShaderCache.cpp b/src/Cafe/HW/Latte/Core/LatteShaderCache.cpp index 04159f7c..827c7da9 100644 --- a/src/Cafe/HW/Latte/Core/LatteShaderCache.cpp +++ b/src/Cafe/HW/Latte/Core/LatteShaderCache.cpp @@ -376,25 +376,6 @@ void LatteShaderCache_ShowProgress(const std::function & loadUpdateF auto lastFrameUpdate = tick_cached(); - AudioAPIPtr audioDev; - const sint32 samplesPerBlock = 4800; - const sint32 audioBlockSize = samplesPerBlock * 2 * 2; - try - { - audioDev = IAudioAPI::CreateDeviceFromConfig(true, 48000, 2, samplesPerBlock, 16); - } - catch (const std::runtime_error& ex) - { - cemuLog_log(LogType::Force, "Failed to initialise audio device for bootup sound"); - } - audioDev->Play(); - - std::string sndPath = fmt::format("{}/meta/{}", CafeSystem::GetMlcStoragePath(CafeSystem::GetForegroundTitleId()), "bootSound.btsnd"); - sint32 fscStatus = FSC_STATUS_UNDEFINED; - static auto bootsndFile = fsc_open(sndPath.c_str(), FSC_ACCESS_FLAG::OPEN_FILE | FSC_ACCESS_FLAG::READ_PERMISSION, &fscStatus); - - static BootSoundReader reader{bootsndFile, audioBlockSize}; - while (true) { if (Latte_GetStopSignal()) @@ -516,15 +497,8 @@ void LatteShaderCache_ShowProgress(const std::function & loadUpdateF // finish frame g_renderer->SwapBuffers(true, true); - - if(audioDev && bootsndFile) - { - if (audioDev->NeedAdditionalBlocks()) - audioDev->FeedBlock(reader.getSamples()); - } - + LatteThread_StreamBootSound(); } - audioDev->Stop(); } void LatteShaderCache_LoadVulkanPipelineCache(uint64 cacheTitleId) diff --git a/src/Cafe/HW/Latte/Core/LatteThread.cpp b/src/Cafe/HW/Latte/Core/LatteThread.cpp index 60b32ec4..5423fbed 100644 --- a/src/Cafe/HW/Latte/Core/LatteThread.cpp +++ b/src/Cafe/HW/Latte/Core/LatteThread.cpp @@ -15,6 +15,9 @@ #include "util/helpers/helpers.h" #include +#include