From 7645820131e09cba88bad0df4782e7cd7cbf18a5 Mon Sep 17 00:00:00 2001 From: TheRedDaemon <66257843+TheRedDaemon@users.noreply.github.com> Date: Tue, 7 Jul 2026 21:14:07 +0200 Subject: [PATCH] reimplement: SHC_3BB0A8C1_0x0047B510 100% --- .../Audio/mss/SndSystemTimeCallback.cpp | 33 +++++++++++++++++++ status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 src/OpenSHC/Audio/mss/SndSystemTimeCallback.cpp diff --git a/src/OpenSHC/Audio/mss/SndSystemTimeCallback.cpp b/src/OpenSHC/Audio/mss/SndSystemTimeCallback.cpp new file mode 100644 index 0000000..9ea9801 --- /dev/null +++ b/src/OpenSHC/Audio/mss/SndSystemTimeCallback.cpp @@ -0,0 +1,33 @@ +#include "../mss.func.hpp" + +#include "OpenSHC/Audio/MSS/SoundSystem.func.hpp" + +#include "OpenSHC/Globals/DAT_SoundEffectsHelperData1.hpp" +#include "OpenSHC/Globals/DAT_SoundSystemState.hpp" + +namespace OpenSHC { +namespace Audio { + namespace MSS { + + // FUNCTION: STRONGHOLDCRUSADER 0x0047B510 + void __stdcall SndSystemTimeCallback(UINT uTimerID, UINT uMsg, DWORD_PTR dwUser, DWORD_PTR dw1, DWORD_PTR dw2) + { + if (DAT_SoundEffectsHelperData1::instance.field14_0x54 || DAT_SoundEffectsHelperData1::instance.field15_0x58 + || !DAT_SoundSystemState::instance.waveOutOpenUnk_0x8) { + return; + } + DAT_SoundEffectsHelperData1::instance.field15_0x58 = TRUE; + if (!DAT_SoundSystemState::instance.streamPaused_0x15c[0] + && DAT_SoundSystemState::instance.streamActiveUnk_0x20[0]) { + if (AIL_sample_status(DAT_SoundSystemState::instance.musicSampleUnk_0x170) != SMP_PLAYING) { + MACRO_CALL_MEMBER(SoundSystem_Func::stopMusicPlayback, DAT_SoundSystemState::ptr)(); + } else { + MACRO_CALL_MEMBER(SoundSystem_Func::playMusicUnk, DAT_SoundSystemState::ptr)(); + } + } + DAT_SoundEffectsHelperData1::instance.field15_0x58 = FALSE; + } + + } +} +} diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index bf59bb0..2456419 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -10926,7 +10926,7 @@ SHC_3BB0A8C1_0x0047B250 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0047B2F0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0047B3C0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0047B490 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0047B510 | 0.0% | Pending +SHC_3BB0A8C1_0x0047B510 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0047B590 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0047B5C0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0047B5F0 | 100.0% | Reimplemented