From 2c40173e44e11143d9e019c1ad09a1e67406c9ca Mon Sep 17 00:00:00 2001 From: TheRedDaemon <66257843+TheRedDaemon@users.noreply.github.com> Date: Sun, 12 Jul 2026 02:16:51 +0200 Subject: [PATCH] reimplement: SHC_3BB0A8C1_0x00449C40 100% --- src/OpenSHC/Audio/SFX/SFXState.hpp | 4 +-- .../Audio/SFX/SFXState/setUpSFXToPlayUnk.cpp | 31 +++++++++++++++++++ status/addresses-SHC-3BB0A8C1.txt | 2 +- 3 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 src/OpenSHC/Audio/SFX/SFXState/setUpSFXToPlayUnk.cpp diff --git a/src/OpenSHC/Audio/SFX/SFXState.hpp b/src/OpenSHC/Audio/SFX/SFXState.hpp index 2f4f7a7e..d1cfd00d 100644 --- a/src/OpenSHC/Audio/SFX/SFXState.hpp +++ b/src/OpenSHC/Audio/SFX/SFXState.hpp @@ -33,8 +33,8 @@ namespace Audio { // SIZE: 0x00008E90 class SFXState { public: - undefined4 DAT_SFXCounter1; // 0x00000000 length: 4 - undefined4 highestSFXCounter; // 0x00000004 length: 4 + int DAT_SFXCounter1; // 0x00000000 length: 4 + int highestSFXCounter; // 0x00000004 length: 4 pointer* DAT_SoundFileNameArrayMemoryPointer; // 0x00000008 length: 4 char* DAT_SoundFileNamePointersArray[1000]; // 0x0000000C length: 4000 int DAT_SoundVolumeArray[1000]; // 0x00000FAC length: 4000 diff --git a/src/OpenSHC/Audio/SFX/SFXState/setUpSFXToPlayUnk.cpp b/src/OpenSHC/Audio/SFX/SFXState/setUpSFXToPlayUnk.cpp new file mode 100644 index 00000000..09e34cb3 --- /dev/null +++ b/src/OpenSHC/Audio/SFX/SFXState/setUpSFXToPlayUnk.cpp @@ -0,0 +1,31 @@ +#include "../SFXState.func.hpp" + +namespace OpenSHC { +namespace Audio { + namespace SFX { + + // FUNCTION: STRONGHOLDCRUSADER 0x00449C40 + void SFXState::setUpSFXToPlayUnk(SoundEffectID sfxOffsetInArray) + { + if (this->DAT_SoundStructures2[sfxOffsetInArray].variationCount <= 0) { + return; + } + int const variantSoundId = this->DAT_SoundStructures2[sfxOffsetInArray].soundID + + this->DAT_SoundStructures2[sfxOffsetInArray].variationCounter++; + if (this->DAT_SoundStructures2[sfxOffsetInArray].variationCounter + >= this->DAT_SoundStructures2[sfxOffsetInArray].variationCount) { + this->DAT_SoundStructures2[sfxOffsetInArray].variationCounter = 0; + } + ++this->DAT_SoundStructures[variantSoundId].scheduledPlayCounter; + this->DAT_SoundStructures[variantSoundId].volumePercentage + = this->DAT_SoundStructures[variantSoundId].baseVolumePercentageUnk; + this->DAT_SoundStructures[variantSoundId].samplePan = 64; + ++this->DAT_SFXCounter1; + if (this->DAT_SFXCounter1 > this->highestSFXCounter) { + this->highestSFXCounter = this->DAT_SFXCounter1; + } + } + + } +} +} diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 9896e695..27019a9c 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -8124,7 +8124,7 @@ SHC_3BB0A8C1_0x00449B0C | 0.0% | Pending SHC_3BB0A8C1_0x00449B10 | 0.0% | Pending SHC_3BB0A8C1_0x00449B20 | 0.0% | Pending SHC_3BB0A8C1_0x00449B30 | 0.0% | Pending -SHC_3BB0A8C1_0x00449C40 | 0.0% | Pending +SHC_3BB0A8C1_0x00449C40 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00449CC0 | 0.0% | Pending SHC_3BB0A8C1_0x00449D50 | 0.0% | Pending SHC_3BB0A8C1_0x00449DC0 | 0.0% | Pending