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