From 24096a2401adc214ce8663c0dd8527a71d5ac67d Mon Sep 17 00:00:00 2001 From: TheRedDaemon <66257843+TheRedDaemon@users.noreply.github.com> Date: Fri, 15 May 2026 16:33:14 +0200 Subject: [PATCH] reimplement: SHC_3BB0A8C1_0x00479AB0 100% --- .../SoundSystem/shouldSoundXNotBePlaying.cpp | 31 +++++++++++++++++++ src/OpenSHC/DirectPlay/EnumConnections.hpp | 4 ++- src/OpenSHC/Synchrony/GameSynchronyState.hpp | 1 - status/addresses-SHC-3BB0A8C1.txt | 2 +- 4 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 src/OpenSHC/Audio/mss/SoundSystem/shouldSoundXNotBePlaying.cpp diff --git a/src/OpenSHC/Audio/mss/SoundSystem/shouldSoundXNotBePlaying.cpp b/src/OpenSHC/Audio/mss/SoundSystem/shouldSoundXNotBePlaying.cpp new file mode 100644 index 0000000..14c9317 --- /dev/null +++ b/src/OpenSHC/Audio/mss/SoundSystem/shouldSoundXNotBePlaying.cpp @@ -0,0 +1,31 @@ +#include "OpenSHC/Audio/MSS/SoundSystem.hpp" + +#include "OpenSHC/Audio/MSS/SoundSystem.func.hpp" + +#include "OpenSHC/Globals/DAT_GameState.hpp" +#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" + +namespace OpenSHC { +namespace Audio { + namespace MSS { + + // FUNCTION: STRONGHOLDCRUSADER 0x00479AB0 + BOOLEnum SoundSystem::shouldSoundXNotBePlaying() + { + if (DAT_GameState::ptr->playerDataArray[DAT_GameSynchronyState::ptr->currentPlayerSlotID] + .playerDeathRelated) { + return FALSE; + } + + if (MACRO_CALL_MEMBER(SoundSystem_Func::isSampleOrStreamPlaying, this)(enums::SND_STR_SPEECH_1)) { + return TRUE; + } + if (MACRO_CALL_MEMBER(SoundSystem_Func::isSampleOrStreamPlaying, this)(enums::SND_STR_SPEECH_2)) { + return TRUE; + } + return FALSE; + } + + } +} +} diff --git a/src/OpenSHC/DirectPlay/EnumConnections.hpp b/src/OpenSHC/DirectPlay/EnumConnections.hpp index 80c067d..41d0936 100644 --- a/src/OpenSHC/DirectPlay/EnumConnections.hpp +++ b/src/OpenSHC/DirectPlay/EnumConnections.hpp @@ -12,11 +12,13 @@ #include "OpenSHC/DirectPlay/IDirectPlay4A.hpp" #include "WinDef.h" #include "winnt.h" + namespace OpenSHC { namespace DirectPlay { using OpenSHC::DirectPlay::EnumConnectionsCallback; - using OpenSHC::DirectPlay::IDirectPlay4A; + + struct IDirectPlay4A; typedef HRESULT(__stdcall EnumConnections)(IDirectPlay4A*, LPCGUID, EnumConnectionsCallback*, LPVOID, DWORD); } // namespace DirectPlay diff --git a/src/OpenSHC/Synchrony/GameSynchronyState.hpp b/src/OpenSHC/Synchrony/GameSynchronyState.hpp index cd0969b..8151eac 100644 --- a/src/OpenSHC/Synchrony/GameSynchronyState.hpp +++ b/src/OpenSHC/Synchrony/GameSynchronyState.hpp @@ -30,7 +30,6 @@ #include "basetsd.h" #include "crtdefs.h" #include "guiddef.h" -#include "inaddr.h" #include "mbstring.h" #include "winnt.h" diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index f1a6853..83ba9ef 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -10882,7 +10882,7 @@ SHC_3BB0A8C1_0x00479540 | 0.0% | Pending SHC_3BB0A8C1_0x00479790 | 0.0% | Pending SHC_3BB0A8C1_0x004799A0 | 0.0% | Pending SHC_3BB0A8C1_0x00479A60 | 0.0% | Pending -SHC_3BB0A8C1_0x00479AB0 | 0.0% | Pending +SHC_3BB0A8C1_0x00479AB0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00479AF0 | 0.0% | Pending SHC_3BB0A8C1_0x00479B70 | 0.0% | Pending SHC_3BB0A8C1_0x00479C20 | 0.0% | Pending