summaryrefslogtreecommitdiff
path: root/src/KingSystem/Sound
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2026-09-28 03:39:30 +0200
committerLéo Lam <leo@leolam.fr>2026-10-06 03:19:38 +0200
commita168b93bbcf603816bf718962fc4d706b5fc772d (patch)
treead3af063d67313243431beef39f4f58b6e6ce2b3 /src/KingSystem/Sound
parent7bc225838a580adea925fd56421f520db4c5d393 (diff)
snd: move sound actions and AIs to KingSystem/Sound
They link with KingSystem/Sound (0x7100fe8b54-0x7101060ed4) as sorted Action/AI passes of their own. The three area tag actions keep their game base AreaTagAction, which links in the Game/Actor/Area block. (AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
Diffstat (limited to 'src/KingSystem/Sound')
-rw-r--r--src/KingSystem/Sound/Actor/AI/CMakeLists.txt8
-rw-r--r--src/KingSystem/Sound/Actor/AI/aiEnvSeEmitPointRootAI.cpp26
-rw-r--r--src/KingSystem/Sound/Actor/AI/aiEnvSeEmitPointRootAI.h25
-rw-r--r--src/KingSystem/Sound/Actor/AI/aiSignaledSpotBgmTrigger.cpp26
-rw-r--r--src/KingSystem/Sound/Actor/AI/aiSignaledSpotBgmTrigger.h25
-rw-r--r--src/KingSystem/Sound/Actor/AI/aiSpotBgmTrigger.cpp26
-rw-r--r--src/KingSystem/Sound/Actor/AI/aiSpotBgmTrigger.h25
-rw-r--r--src/KingSystem/Sound/Actor/Action/CMakeLists.txt64
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionBattleDungeonBGMAction.cpp27
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionBattleDungeonBGMAction.h22
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionCustomDuckingEndAction.cpp15
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionCustomDuckingEndAction.h19
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionCustomDuckingStartAction.cpp23
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionCustomDuckingStartAction.h31
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionEnvSeEmitPointBirdPlayAction.cpp28
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionEnvSeEmitPointBirdPlayAction.h22
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionEnvSeEmitPointInsectPlayAction.cpp28
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionEnvSeEmitPointInsectPlayAction.h22
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionEventBgmCtrlAction.cpp17
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionEventBgmCtrlAction.h21
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionEventBgmStartAction.cpp17
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionEventBgmStartAction.h21
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionEventBgmStartAndKeepAction.cpp30
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionEventBgmStartAndKeepAction.h25
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionEventBgmStopAction.cpp18
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionEventBgmStopAction.h23
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionFrontierSpotBgmTriggerAction.cpp34
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionFrontierSpotBgmTriggerAction.h33
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionGroupAllowEmitAction.cpp17
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionGroupAllowEmitAction.h21
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionGroupDisallowEmitAction.cpp17
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionGroupDisallowEmitAction.h21
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionKillAllDemoSoundAction.cpp15
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionKillAllDemoSoundAction.h19
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionListenerFixPositionAction.cpp18
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionListenerFixPositionAction.h21
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionListenerSetModeAction.cpp17
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionListenerSetModeAction.h21
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionMusicianSpotBgmTriggerAction.cpp30
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionMusicianSpotBgmTriggerAction.h23
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionPlayerEmitEquipmentNoise.cpp19
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionPlayerEmitEquipmentNoise.h23
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionSceneBgmCtrlAction.cpp17
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionSceneBgmCtrlAction.h21
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionSceneSoundCtrlAction.cpp18
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionSceneSoundCtrlAction.h23
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionSceneSoundKillDuckingAction.cpp18
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionSceneSoundKillDuckingAction.h21
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionSceneSoundNotifyTalkAction.cpp18
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionSceneSoundNotifyTalkAction.h21
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionSceneSoundSetEndProcAction.cpp18
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionSceneSoundSetEndProcAction.h21
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionSceneSoundSetStartProcAction.cpp19
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionSceneSoundSetStartProcAction.h23
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionSceneSoundStartDuckingAction.cpp18
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionSceneSoundStartDuckingAction.h21
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionSceneSoundStopDuckingAction.cpp18
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionSceneSoundStopDuckingAction.h21
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionSoundOcclusionTagAction.cpp29
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionSoundOcclusionTagAction.h26
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionSoundProxyRootAction.cpp27
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionSoundProxyRootAction.h22
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionSoundReverbAreaTagAction.cpp34
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionSoundReverbAreaTagAction.h36
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionSoundShieldingAreaTagAction.cpp30
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionSoundShieldingAreaTagAction.h28
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionSpotBgmTriggerAction.cpp31
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionSpotBgmTriggerAction.h29
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionStopAllDemoSoundAction.cpp27
-rw-r--r--src/KingSystem/Sound/Actor/Action/actionStopAllDemoSoundAction.h22
-rw-r--r--src/KingSystem/Sound/Actor/CMakeLists.txt2
-rw-r--r--src/KingSystem/Sound/CMakeLists.txt2
72 files changed, 1644 insertions, 0 deletions
diff --git a/src/KingSystem/Sound/Actor/AI/CMakeLists.txt b/src/KingSystem/Sound/Actor/AI/CMakeLists.txt
new file mode 100644
index 00000000..726297a4
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/AI/CMakeLists.txt
@@ -0,0 +1,8 @@
+target_sources(uking PRIVATE
+ aiEnvSeEmitPointRootAI.cpp
+ aiEnvSeEmitPointRootAI.h
+ aiSignaledSpotBgmTrigger.cpp
+ aiSignaledSpotBgmTrigger.h
+ aiSpotBgmTrigger.cpp
+ aiSpotBgmTrigger.h
+)
diff --git a/src/KingSystem/Sound/Actor/AI/aiEnvSeEmitPointRootAI.cpp b/src/KingSystem/Sound/Actor/AI/aiEnvSeEmitPointRootAI.cpp
new file mode 100644
index 00000000..f63f9e15
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/AI/aiEnvSeEmitPointRootAI.cpp
@@ -0,0 +1,26 @@
+#include "KingSystem/Sound/Actor/AI/aiEnvSeEmitPointRootAI.h"
+
+namespace ksys::snd {
+
+EnvSeEmitPointRootAI::EnvSeEmitPointRootAI(const InitArg& arg) : ksys::act::ai::Ai(arg) {}
+
+EnvSeEmitPointRootAI::~EnvSeEmitPointRootAI() = default;
+
+bool EnvSeEmitPointRootAI::init_(sead::Heap* heap) {
+ return ksys::act::ai::Ai::init_(heap);
+}
+
+void EnvSeEmitPointRootAI::enter_(ksys::act::ai::InlineParamPack* params) {
+ ksys::act::ai::Ai::enter_(params);
+}
+
+void EnvSeEmitPointRootAI::leave_() {
+ ksys::act::ai::Ai::leave_();
+}
+
+void EnvSeEmitPointRootAI::loadParams_() {
+ getStaticParam(&mInvalidatePlayDistance_s, "InvalidatePlayDistance");
+ getStaticParam(&mPlayDistance_s, "PlayDistance");
+}
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/AI/aiEnvSeEmitPointRootAI.h b/src/KingSystem/Sound/Actor/AI/aiEnvSeEmitPointRootAI.h
new file mode 100644
index 00000000..dfbe0aba
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/AI/aiEnvSeEmitPointRootAI.h
@@ -0,0 +1,25 @@
+#pragma once
+
+#include "KingSystem/ActorSystem/actAiAi.h"
+
+namespace ksys::snd {
+
+class EnvSeEmitPointRootAI : public ksys::act::ai::Ai {
+ SEAD_RTTI_OVERRIDE(EnvSeEmitPointRootAI, ksys::act::ai::Ai)
+public:
+ explicit EnvSeEmitPointRootAI(const InitArg& arg);
+ ~EnvSeEmitPointRootAI() override;
+
+ bool init_(sead::Heap* heap) override;
+ void enter_(ksys::act::ai::InlineParamPack* params) override;
+ void leave_() override;
+ void loadParams_() override;
+
+protected:
+ // static_param at offset 0x38
+ const float* mInvalidatePlayDistance_s{};
+ // static_param at offset 0x40
+ const float* mPlayDistance_s{};
+};
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/AI/aiSignaledSpotBgmTrigger.cpp b/src/KingSystem/Sound/Actor/AI/aiSignaledSpotBgmTrigger.cpp
new file mode 100644
index 00000000..d9540710
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/AI/aiSignaledSpotBgmTrigger.cpp
@@ -0,0 +1,26 @@
+#include "KingSystem/Sound/Actor/AI/aiSignaledSpotBgmTrigger.h"
+
+namespace ksys::snd {
+
+SignaledSpotBgmTrigger::SignaledSpotBgmTrigger(const InitArg& arg) : ksys::act::ai::Ai(arg) {}
+
+SignaledSpotBgmTrigger::~SignaledSpotBgmTrigger() = default;
+
+bool SignaledSpotBgmTrigger::init_(sead::Heap* heap) {
+ return ksys::act::ai::Ai::init_(heap);
+}
+
+void SignaledSpotBgmTrigger::enter_(ksys::act::ai::InlineParamPack* params) {
+ ksys::act::ai::Ai::enter_(params);
+}
+
+void SignaledSpotBgmTrigger::leave_() {
+ ksys::act::ai::Ai::leave_();
+}
+
+void SignaledSpotBgmTrigger::loadParams_() {
+ getMapUnitParam(&mIsStopWithoutReductionY_m, "IsStopWithoutReductionY");
+ getMapUnitParam(&mSound_m, "Sound");
+}
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/AI/aiSignaledSpotBgmTrigger.h b/src/KingSystem/Sound/Actor/AI/aiSignaledSpotBgmTrigger.h
new file mode 100644
index 00000000..aafdb05b
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/AI/aiSignaledSpotBgmTrigger.h
@@ -0,0 +1,25 @@
+#pragma once
+
+#include "KingSystem/ActorSystem/actAiAi.h"
+
+namespace ksys::snd {
+
+class SignaledSpotBgmTrigger : public ksys::act::ai::Ai {
+ SEAD_RTTI_OVERRIDE(SignaledSpotBgmTrigger, ksys::act::ai::Ai)
+public:
+ explicit SignaledSpotBgmTrigger(const InitArg& arg);
+ ~SignaledSpotBgmTrigger() override;
+
+ bool init_(sead::Heap* heap) override;
+ void enter_(ksys::act::ai::InlineParamPack* params) override;
+ void leave_() override;
+ void loadParams_() override;
+
+protected:
+ // map_unit_param at offset 0x38
+ const bool* mIsStopWithoutReductionY_m{};
+ // map_unit_param at offset 0x40
+ sead::SafeString mSound_m{};
+};
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/AI/aiSpotBgmTrigger.cpp b/src/KingSystem/Sound/Actor/AI/aiSpotBgmTrigger.cpp
new file mode 100644
index 00000000..78e730c8
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/AI/aiSpotBgmTrigger.cpp
@@ -0,0 +1,26 @@
+#include "KingSystem/Sound/Actor/AI/aiSpotBgmTrigger.h"
+
+namespace ksys::snd {
+
+SpotBgmTrigger::SpotBgmTrigger(const InitArg& arg) : ksys::act::ai::Ai(arg) {}
+
+SpotBgmTrigger::~SpotBgmTrigger() = default;
+
+bool SpotBgmTrigger::init_(sead::Heap* heap) {
+ return ksys::act::ai::Ai::init_(heap);
+}
+
+void SpotBgmTrigger::enter_(ksys::act::ai::InlineParamPack* params) {
+ ksys::act::ai::Ai::enter_(params);
+}
+
+void SpotBgmTrigger::leave_() {
+ ksys::act::ai::Ai::leave_();
+}
+
+void SpotBgmTrigger::loadParams_() {
+ getMapUnitParam(&mIsStopWithoutReductionY_m, "IsStopWithoutReductionY");
+ getMapUnitParam(&mSound_m, "Sound");
+}
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/AI/aiSpotBgmTrigger.h b/src/KingSystem/Sound/Actor/AI/aiSpotBgmTrigger.h
new file mode 100644
index 00000000..4727c6c7
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/AI/aiSpotBgmTrigger.h
@@ -0,0 +1,25 @@
+#pragma once
+
+#include "KingSystem/ActorSystem/actAiAi.h"
+
+namespace ksys::snd {
+
+class SpotBgmTrigger : public ksys::act::ai::Ai {
+ SEAD_RTTI_OVERRIDE(SpotBgmTrigger, ksys::act::ai::Ai)
+public:
+ explicit SpotBgmTrigger(const InitArg& arg);
+ ~SpotBgmTrigger() override;
+
+ bool init_(sead::Heap* heap) override;
+ void enter_(ksys::act::ai::InlineParamPack* params) override;
+ void leave_() override;
+ void loadParams_() override;
+
+protected:
+ // map_unit_param at offset 0x38
+ const bool* mIsStopWithoutReductionY_m{};
+ // map_unit_param at offset 0x40
+ sead::SafeString mSound_m{};
+};
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/CMakeLists.txt b/src/KingSystem/Sound/Actor/Action/CMakeLists.txt
new file mode 100644
index 00000000..6adf2730
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/CMakeLists.txt
@@ -0,0 +1,64 @@
+target_sources(uking PRIVATE
+ actionBattleDungeonBGMAction.cpp
+ actionBattleDungeonBGMAction.h
+ actionCustomDuckingEndAction.cpp
+ actionCustomDuckingEndAction.h
+ actionCustomDuckingStartAction.cpp
+ actionCustomDuckingStartAction.h
+ actionEnvSeEmitPointBirdPlayAction.cpp
+ actionEnvSeEmitPointBirdPlayAction.h
+ actionEnvSeEmitPointInsectPlayAction.cpp
+ actionEnvSeEmitPointInsectPlayAction.h
+ actionEventBgmCtrlAction.cpp
+ actionEventBgmCtrlAction.h
+ actionEventBgmStartAction.cpp
+ actionEventBgmStartAction.h
+ actionEventBgmStartAndKeepAction.cpp
+ actionEventBgmStartAndKeepAction.h
+ actionEventBgmStopAction.cpp
+ actionEventBgmStopAction.h
+ actionFrontierSpotBgmTriggerAction.cpp
+ actionFrontierSpotBgmTriggerAction.h
+ actionGroupAllowEmitAction.cpp
+ actionGroupAllowEmitAction.h
+ actionGroupDisallowEmitAction.cpp
+ actionGroupDisallowEmitAction.h
+ actionKillAllDemoSoundAction.cpp
+ actionKillAllDemoSoundAction.h
+ actionListenerFixPositionAction.cpp
+ actionListenerFixPositionAction.h
+ actionListenerSetModeAction.cpp
+ actionListenerSetModeAction.h
+ actionMusicianSpotBgmTriggerAction.cpp
+ actionMusicianSpotBgmTriggerAction.h
+ actionPlayerEmitEquipmentNoise.cpp
+ actionPlayerEmitEquipmentNoise.h
+ actionSceneBgmCtrlAction.cpp
+ actionSceneBgmCtrlAction.h
+ actionSceneSoundCtrlAction.cpp
+ actionSceneSoundCtrlAction.h
+ actionSceneSoundKillDuckingAction.cpp
+ actionSceneSoundKillDuckingAction.h
+ actionSceneSoundNotifyTalkAction.cpp
+ actionSceneSoundNotifyTalkAction.h
+ actionSceneSoundSetEndProcAction.cpp
+ actionSceneSoundSetEndProcAction.h
+ actionSceneSoundSetStartProcAction.cpp
+ actionSceneSoundSetStartProcAction.h
+ actionSceneSoundStartDuckingAction.cpp
+ actionSceneSoundStartDuckingAction.h
+ actionSceneSoundStopDuckingAction.cpp
+ actionSceneSoundStopDuckingAction.h
+ actionSoundOcclusionTagAction.cpp
+ actionSoundOcclusionTagAction.h
+ actionSoundProxyRootAction.cpp
+ actionSoundProxyRootAction.h
+ actionSoundReverbAreaTagAction.cpp
+ actionSoundReverbAreaTagAction.h
+ actionSoundShieldingAreaTagAction.cpp
+ actionSoundShieldingAreaTagAction.h
+ actionSpotBgmTriggerAction.cpp
+ actionSpotBgmTriggerAction.h
+ actionStopAllDemoSoundAction.cpp
+ actionStopAllDemoSoundAction.h
+)
diff --git a/src/KingSystem/Sound/Actor/Action/actionBattleDungeonBGMAction.cpp b/src/KingSystem/Sound/Actor/Action/actionBattleDungeonBGMAction.cpp
new file mode 100644
index 00000000..f5e5aa6d
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionBattleDungeonBGMAction.cpp
@@ -0,0 +1,27 @@
+#include "KingSystem/Sound/Actor/Action/actionBattleDungeonBGMAction.h"
+
+namespace ksys::snd {
+
+BattleDungeonBGMAction::BattleDungeonBGMAction(const InitArg& arg) : ksys::act::ai::Action(arg) {}
+
+BattleDungeonBGMAction::~BattleDungeonBGMAction() = default;
+
+bool BattleDungeonBGMAction::init_(sead::Heap* heap) {
+ return ksys::act::ai::Action::init_(heap);
+}
+
+void BattleDungeonBGMAction::enter_(ksys::act::ai::InlineParamPack* params) {
+ ksys::act::ai::Action::enter_(params);
+}
+
+void BattleDungeonBGMAction::leave_() {
+ ksys::act::ai::Action::leave_();
+}
+
+void BattleDungeonBGMAction::loadParams_() {}
+
+void BattleDungeonBGMAction::calc_() {
+ ksys::act::ai::Action::calc_();
+}
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionBattleDungeonBGMAction.h b/src/KingSystem/Sound/Actor/Action/actionBattleDungeonBGMAction.h
new file mode 100644
index 00000000..51b58b0a
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionBattleDungeonBGMAction.h
@@ -0,0 +1,22 @@
+#pragma once
+
+#include "KingSystem/ActorSystem/actAiAction.h"
+
+namespace ksys::snd {
+
+class BattleDungeonBGMAction : public ksys::act::ai::Action {
+ SEAD_RTTI_OVERRIDE(BattleDungeonBGMAction, ksys::act::ai::Action)
+public:
+ explicit BattleDungeonBGMAction(const InitArg& arg);
+ ~BattleDungeonBGMAction() override;
+
+ bool init_(sead::Heap* heap) override;
+ void enter_(ksys::act::ai::InlineParamPack* params) override;
+ void leave_() override;
+ void loadParams_() override;
+
+protected:
+ void calc_() override;
+};
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionCustomDuckingEndAction.cpp b/src/KingSystem/Sound/Actor/Action/actionCustomDuckingEndAction.cpp
new file mode 100644
index 00000000..dad90ef4
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionCustomDuckingEndAction.cpp
@@ -0,0 +1,15 @@
+#include "KingSystem/Sound/Actor/Action/actionCustomDuckingEndAction.h"
+
+namespace ksys::snd {
+
+CustomDuckingEndAction::CustomDuckingEndAction(const InitArg& arg) : ksys::act::ai::Action(arg) {}
+
+CustomDuckingEndAction::~CustomDuckingEndAction() = default;
+
+bool CustomDuckingEndAction::init_(sead::Heap* heap) {
+ return ksys::act::ai::Action::init_(heap);
+}
+
+void CustomDuckingEndAction::loadParams_() {}
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionCustomDuckingEndAction.h b/src/KingSystem/Sound/Actor/Action/actionCustomDuckingEndAction.h
new file mode 100644
index 00000000..feb76e3b
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionCustomDuckingEndAction.h
@@ -0,0 +1,19 @@
+#pragma once
+
+#include "KingSystem/ActorSystem/actAiAction.h"
+
+namespace ksys::snd {
+
+class CustomDuckingEndAction : public ksys::act::ai::Action {
+ SEAD_RTTI_OVERRIDE(CustomDuckingEndAction, ksys::act::ai::Action)
+public:
+ explicit CustomDuckingEndAction(const InitArg& arg);
+ ~CustomDuckingEndAction() override;
+
+ bool init_(sead::Heap* heap) override;
+ void loadParams_() override;
+
+protected:
+};
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionCustomDuckingStartAction.cpp b/src/KingSystem/Sound/Actor/Action/actionCustomDuckingStartAction.cpp
new file mode 100644
index 00000000..1e63edb9
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionCustomDuckingStartAction.cpp
@@ -0,0 +1,23 @@
+#include "KingSystem/Sound/Actor/Action/actionCustomDuckingStartAction.h"
+
+namespace ksys::snd {
+
+CustomDuckingStartAction::CustomDuckingStartAction(const InitArg& arg)
+ : ksys::act::ai::Action(arg) {}
+
+CustomDuckingStartAction::~CustomDuckingStartAction() = default;
+
+bool CustomDuckingStartAction::init_(sead::Heap* heap) {
+ return ksys::act::ai::Action::init_(heap);
+}
+
+void CustomDuckingStartAction::loadParams_() {
+ getDynamicParam(&mVolume_d, "Volume");
+ getDynamicParam(&mFadeOutSec_d, "FadeOutSec");
+ getDynamicParam(&mFadeInSec_d, "FadeInSec");
+ getDynamicParam(&mStartDelaySec_d, "StartDelaySec");
+ getDynamicParam(&mTargetGroups_d, "TargetGroups");
+ getDynamicParam(&mExceptGroups_d, "ExceptGroups");
+}
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionCustomDuckingStartAction.h b/src/KingSystem/Sound/Actor/Action/actionCustomDuckingStartAction.h
new file mode 100644
index 00000000..2e52c8bf
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionCustomDuckingStartAction.h
@@ -0,0 +1,31 @@
+#pragma once
+
+#include "KingSystem/ActorSystem/actAiAction.h"
+
+namespace ksys::snd {
+
+class CustomDuckingStartAction : public ksys::act::ai::Action {
+ SEAD_RTTI_OVERRIDE(CustomDuckingStartAction, ksys::act::ai::Action)
+public:
+ explicit CustomDuckingStartAction(const InitArg& arg);
+ ~CustomDuckingStartAction() override;
+
+ bool init_(sead::Heap* heap) override;
+ void loadParams_() override;
+
+protected:
+ // dynamic_param at offset 0x20
+ float* mVolume_d{};
+ // dynamic_param at offset 0x28
+ float* mFadeOutSec_d{};
+ // dynamic_param at offset 0x30
+ float* mFadeInSec_d{};
+ // dynamic_param at offset 0x38
+ float* mStartDelaySec_d{};
+ // dynamic_param at offset 0x40
+ sead::SafeString mTargetGroups_d{};
+ // dynamic_param at offset 0x50
+ sead::SafeString mExceptGroups_d{};
+};
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionEnvSeEmitPointBirdPlayAction.cpp b/src/KingSystem/Sound/Actor/Action/actionEnvSeEmitPointBirdPlayAction.cpp
new file mode 100644
index 00000000..a6a9e18e
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionEnvSeEmitPointBirdPlayAction.cpp
@@ -0,0 +1,28 @@
+#include "KingSystem/Sound/Actor/Action/actionEnvSeEmitPointBirdPlayAction.h"
+
+namespace ksys::snd {
+
+EnvSeEmitPointBirdPlayAction::EnvSeEmitPointBirdPlayAction(const InitArg& arg)
+ : ksys::act::ai::Action(arg) {}
+
+EnvSeEmitPointBirdPlayAction::~EnvSeEmitPointBirdPlayAction() = default;
+
+bool EnvSeEmitPointBirdPlayAction::init_(sead::Heap* heap) {
+ return ksys::act::ai::Action::init_(heap);
+}
+
+void EnvSeEmitPointBirdPlayAction::enter_(ksys::act::ai::InlineParamPack* params) {
+ ksys::act::ai::Action::enter_(params);
+}
+
+void EnvSeEmitPointBirdPlayAction::leave_() {
+ ksys::act::ai::Action::leave_();
+}
+
+void EnvSeEmitPointBirdPlayAction::loadParams_() {}
+
+void EnvSeEmitPointBirdPlayAction::calc_() {
+ ksys::act::ai::Action::calc_();
+}
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionEnvSeEmitPointBirdPlayAction.h b/src/KingSystem/Sound/Actor/Action/actionEnvSeEmitPointBirdPlayAction.h
new file mode 100644
index 00000000..00fb4ff0
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionEnvSeEmitPointBirdPlayAction.h
@@ -0,0 +1,22 @@
+#pragma once
+
+#include "KingSystem/ActorSystem/actAiAction.h"
+
+namespace ksys::snd {
+
+class EnvSeEmitPointBirdPlayAction : public ksys::act::ai::Action {
+ SEAD_RTTI_OVERRIDE(EnvSeEmitPointBirdPlayAction, ksys::act::ai::Action)
+public:
+ explicit EnvSeEmitPointBirdPlayAction(const InitArg& arg);
+ ~EnvSeEmitPointBirdPlayAction() override;
+
+ bool init_(sead::Heap* heap) override;
+ void enter_(ksys::act::ai::InlineParamPack* params) override;
+ void leave_() override;
+ void loadParams_() override;
+
+protected:
+ void calc_() override;
+};
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionEnvSeEmitPointInsectPlayAction.cpp b/src/KingSystem/Sound/Actor/Action/actionEnvSeEmitPointInsectPlayAction.cpp
new file mode 100644
index 00000000..dc4be044
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionEnvSeEmitPointInsectPlayAction.cpp
@@ -0,0 +1,28 @@
+#include "KingSystem/Sound/Actor/Action/actionEnvSeEmitPointInsectPlayAction.h"
+
+namespace ksys::snd {
+
+EnvSeEmitPointInsectPlayAction::EnvSeEmitPointInsectPlayAction(const InitArg& arg)
+ : ksys::act::ai::Action(arg) {}
+
+EnvSeEmitPointInsectPlayAction::~EnvSeEmitPointInsectPlayAction() = default;
+
+bool EnvSeEmitPointInsectPlayAction::init_(sead::Heap* heap) {
+ return ksys::act::ai::Action::init_(heap);
+}
+
+void EnvSeEmitPointInsectPlayAction::enter_(ksys::act::ai::InlineParamPack* params) {
+ ksys::act::ai::Action::enter_(params);
+}
+
+void EnvSeEmitPointInsectPlayAction::leave_() {
+ ksys::act::ai::Action::leave_();
+}
+
+void EnvSeEmitPointInsectPlayAction::loadParams_() {}
+
+void EnvSeEmitPointInsectPlayAction::calc_() {
+ ksys::act::ai::Action::calc_();
+}
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionEnvSeEmitPointInsectPlayAction.h b/src/KingSystem/Sound/Actor/Action/actionEnvSeEmitPointInsectPlayAction.h
new file mode 100644
index 00000000..bce2adfc
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionEnvSeEmitPointInsectPlayAction.h
@@ -0,0 +1,22 @@
+#pragma once
+
+#include "KingSystem/ActorSystem/actAiAction.h"
+
+namespace ksys::snd {
+
+class EnvSeEmitPointInsectPlayAction : public ksys::act::ai::Action {
+ SEAD_RTTI_OVERRIDE(EnvSeEmitPointInsectPlayAction, ksys::act::ai::Action)
+public:
+ explicit EnvSeEmitPointInsectPlayAction(const InitArg& arg);
+ ~EnvSeEmitPointInsectPlayAction() override;
+
+ bool init_(sead::Heap* heap) override;
+ void enter_(ksys::act::ai::InlineParamPack* params) override;
+ void leave_() override;
+ void loadParams_() override;
+
+protected:
+ void calc_() override;
+};
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionEventBgmCtrlAction.cpp b/src/KingSystem/Sound/Actor/Action/actionEventBgmCtrlAction.cpp
new file mode 100644
index 00000000..f77d47bc
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionEventBgmCtrlAction.cpp
@@ -0,0 +1,17 @@
+#include "KingSystem/Sound/Actor/Action/actionEventBgmCtrlAction.h"
+
+namespace ksys::snd {
+
+EventBgmCtrlAction::EventBgmCtrlAction(const InitArg& arg) : ksys::act::ai::Action(arg) {}
+
+EventBgmCtrlAction::~EventBgmCtrlAction() = default;
+
+bool EventBgmCtrlAction::init_(sead::Heap* heap) {
+ return ksys::act::ai::Action::init_(heap);
+}
+
+void EventBgmCtrlAction::loadParams_() {
+ getDynamicParam(&mCtrlType_d, "CtrlType");
+}
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionEventBgmCtrlAction.h b/src/KingSystem/Sound/Actor/Action/actionEventBgmCtrlAction.h
new file mode 100644
index 00000000..5849aa9c
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionEventBgmCtrlAction.h
@@ -0,0 +1,21 @@
+#pragma once
+
+#include "KingSystem/ActorSystem/actAiAction.h"
+
+namespace ksys::snd {
+
+class EventBgmCtrlAction : public ksys::act::ai::Action {
+ SEAD_RTTI_OVERRIDE(EventBgmCtrlAction, ksys::act::ai::Action)
+public:
+ explicit EventBgmCtrlAction(const InitArg& arg);
+ ~EventBgmCtrlAction() override;
+
+ bool init_(sead::Heap* heap) override;
+ void loadParams_() override;
+
+protected:
+ // dynamic_param at offset 0x20
+ sead::SafeString mCtrlType_d{};
+};
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionEventBgmStartAction.cpp b/src/KingSystem/Sound/Actor/Action/actionEventBgmStartAction.cpp
new file mode 100644
index 00000000..4ef076a5
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionEventBgmStartAction.cpp
@@ -0,0 +1,17 @@
+#include "KingSystem/Sound/Actor/Action/actionEventBgmStartAction.h"
+
+namespace ksys::snd {
+
+EventBgmStartAction::EventBgmStartAction(const InitArg& arg) : ksys::act::ai::Action(arg) {}
+
+EventBgmStartAction::~EventBgmStartAction() = default;
+
+bool EventBgmStartAction::init_(sead::Heap* heap) {
+ return ksys::act::ai::Action::init_(heap);
+}
+
+void EventBgmStartAction::loadParams_() {
+ getDynamicParam(&mBgmName_d, "BgmName");
+}
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionEventBgmStartAction.h b/src/KingSystem/Sound/Actor/Action/actionEventBgmStartAction.h
new file mode 100644
index 00000000..fa1faaf9
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionEventBgmStartAction.h
@@ -0,0 +1,21 @@
+#pragma once
+
+#include "KingSystem/ActorSystem/actAiAction.h"
+
+namespace ksys::snd {
+
+class EventBgmStartAction : public ksys::act::ai::Action {
+ SEAD_RTTI_OVERRIDE(EventBgmStartAction, ksys::act::ai::Action)
+public:
+ explicit EventBgmStartAction(const InitArg& arg);
+ ~EventBgmStartAction() override;
+
+ bool init_(sead::Heap* heap) override;
+ void loadParams_() override;
+
+protected:
+ // dynamic_param at offset 0x20
+ sead::SafeString mBgmName_d{};
+};
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionEventBgmStartAndKeepAction.cpp b/src/KingSystem/Sound/Actor/Action/actionEventBgmStartAndKeepAction.cpp
new file mode 100644
index 00000000..f4d4f38c
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionEventBgmStartAndKeepAction.cpp
@@ -0,0 +1,30 @@
+#include "KingSystem/Sound/Actor/Action/actionEventBgmStartAndKeepAction.h"
+
+namespace ksys::snd {
+
+EventBgmStartAndKeepAction::EventBgmStartAndKeepAction(const InitArg& arg)
+ : ksys::act::ai::Action(arg) {}
+
+EventBgmStartAndKeepAction::~EventBgmStartAndKeepAction() = default;
+
+bool EventBgmStartAndKeepAction::init_(sead::Heap* heap) {
+ return ksys::act::ai::Action::init_(heap);
+}
+
+void EventBgmStartAndKeepAction::enter_(ksys::act::ai::InlineParamPack* params) {
+ ksys::act::ai::Action::enter_(params);
+}
+
+void EventBgmStartAndKeepAction::leave_() {
+ ksys::act::ai::Action::leave_();
+}
+
+void EventBgmStartAndKeepAction::loadParams_() {
+ getDynamicParam(&mBgmName_d, "BgmName");
+}
+
+void EventBgmStartAndKeepAction::calc_() {
+ ksys::act::ai::Action::calc_();
+}
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionEventBgmStartAndKeepAction.h b/src/KingSystem/Sound/Actor/Action/actionEventBgmStartAndKeepAction.h
new file mode 100644
index 00000000..5e3c8f1d
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionEventBgmStartAndKeepAction.h
@@ -0,0 +1,25 @@
+#pragma once
+
+#include "KingSystem/ActorSystem/actAiAction.h"
+
+namespace ksys::snd {
+
+class EventBgmStartAndKeepAction : public ksys::act::ai::Action {
+ SEAD_RTTI_OVERRIDE(EventBgmStartAndKeepAction, ksys::act::ai::Action)
+public:
+ explicit EventBgmStartAndKeepAction(const InitArg& arg);
+ ~EventBgmStartAndKeepAction() override;
+
+ bool init_(sead::Heap* heap) override;
+ void enter_(ksys::act::ai::InlineParamPack* params) override;
+ void leave_() override;
+ void loadParams_() override;
+
+protected:
+ void calc_() override;
+
+ // dynamic_param at offset 0x20
+ sead::SafeString mBgmName_d{};
+};
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionEventBgmStopAction.cpp b/src/KingSystem/Sound/Actor/Action/actionEventBgmStopAction.cpp
new file mode 100644
index 00000000..36c442b8
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionEventBgmStopAction.cpp
@@ -0,0 +1,18 @@
+#include "KingSystem/Sound/Actor/Action/actionEventBgmStopAction.h"
+
+namespace ksys::snd {
+
+EventBgmStopAction::EventBgmStopAction(const InitArg& arg) : ksys::act::ai::Action(arg) {}
+
+EventBgmStopAction::~EventBgmStopAction() = default;
+
+bool EventBgmStopAction::init_(sead::Heap* heap) {
+ return ksys::act::ai::Action::init_(heap);
+}
+
+void EventBgmStopAction::loadParams_() {
+ getDynamicParam(&mFadeSec_d, "FadeSec");
+ getDynamicParam(&mBgmName_d, "BgmName");
+}
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionEventBgmStopAction.h b/src/KingSystem/Sound/Actor/Action/actionEventBgmStopAction.h
new file mode 100644
index 00000000..36365211
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionEventBgmStopAction.h
@@ -0,0 +1,23 @@
+#pragma once
+
+#include "KingSystem/ActorSystem/actAiAction.h"
+
+namespace ksys::snd {
+
+class EventBgmStopAction : public ksys::act::ai::Action {
+ SEAD_RTTI_OVERRIDE(EventBgmStopAction, ksys::act::ai::Action)
+public:
+ explicit EventBgmStopAction(const InitArg& arg);
+ ~EventBgmStopAction() override;
+
+ bool init_(sead::Heap* heap) override;
+ void loadParams_() override;
+
+protected:
+ // dynamic_param at offset 0x20
+ float* mFadeSec_d{};
+ // dynamic_param at offset 0x28
+ sead::SafeString mBgmName_d{};
+};
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionFrontierSpotBgmTriggerAction.cpp b/src/KingSystem/Sound/Actor/Action/actionFrontierSpotBgmTriggerAction.cpp
new file mode 100644
index 00000000..1168c694
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionFrontierSpotBgmTriggerAction.cpp
@@ -0,0 +1,34 @@
+#include "KingSystem/Sound/Actor/Action/actionFrontierSpotBgmTriggerAction.h"
+
+namespace ksys::snd {
+
+FrontierSpotBgmTriggerAction::FrontierSpotBgmTriggerAction(const InitArg& arg)
+ : ksys::act::ai::Action(arg) {}
+
+FrontierSpotBgmTriggerAction::~FrontierSpotBgmTriggerAction() = default;
+
+bool FrontierSpotBgmTriggerAction::init_(sead::Heap* heap) {
+ return ksys::act::ai::Action::init_(heap);
+}
+
+void FrontierSpotBgmTriggerAction::enter_(ksys::act::ai::InlineParamPack* params) {
+ ksys::act::ai::Action::enter_(params);
+}
+
+void FrontierSpotBgmTriggerAction::leave_() {
+ ksys::act::ai::Action::leave_();
+}
+
+void FrontierSpotBgmTriggerAction::loadParams_() {
+ getDynamicParam(&mSound_d, "Sound");
+ getMapUnitParam(&mSpotBgmLifeScaleMargin_m, "SpotBgmLifeScaleMargin");
+ getMapUnitParam(&mIsStopWithoutReductionY_m, "IsStopWithoutReductionY");
+ getMapUnitParam(&mSound_m, "Sound");
+ getMapUnitParam(&mShape_m, "Shape");
+}
+
+void FrontierSpotBgmTriggerAction::calc_() {
+ ksys::act::ai::Action::calc_();
+}
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionFrontierSpotBgmTriggerAction.h b/src/KingSystem/Sound/Actor/Action/actionFrontierSpotBgmTriggerAction.h
new file mode 100644
index 00000000..d22a3d0e
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionFrontierSpotBgmTriggerAction.h
@@ -0,0 +1,33 @@
+#pragma once
+
+#include "KingSystem/ActorSystem/actAiAction.h"
+
+namespace ksys::snd {
+
+class FrontierSpotBgmTriggerAction : public ksys::act::ai::Action {
+ SEAD_RTTI_OVERRIDE(FrontierSpotBgmTriggerAction, ksys::act::ai::Action)
+public:
+ explicit FrontierSpotBgmTriggerAction(const InitArg& arg);
+ ~FrontierSpotBgmTriggerAction() override;
+
+ bool init_(sead::Heap* heap) override;
+ void enter_(ksys::act::ai::InlineParamPack* params) override;
+ void leave_() override;
+ void loadParams_() override;
+
+protected:
+ void calc_() override;
+
+ // dynamic_param at offset 0x20
+ sead::SafeString mSound_d{};
+ // map_unit_param at offset 0x30
+ const float* mSpotBgmLifeScaleMargin_m{};
+ // map_unit_param at offset 0x38
+ const bool* mIsStopWithoutReductionY_m{};
+ // map_unit_param at offset 0x40
+ sead::SafeString mSound_m{};
+ // map_unit_param at offset 0x50
+ sead::SafeString mShape_m{};
+};
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionGroupAllowEmitAction.cpp b/src/KingSystem/Sound/Actor/Action/actionGroupAllowEmitAction.cpp
new file mode 100644
index 00000000..e9f3de52
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionGroupAllowEmitAction.cpp
@@ -0,0 +1,17 @@
+#include "KingSystem/Sound/Actor/Action/actionGroupAllowEmitAction.h"
+
+namespace ksys::snd {
+
+GroupAllowEmitAction::GroupAllowEmitAction(const InitArg& arg) : ksys::act::ai::Action(arg) {}
+
+GroupAllowEmitAction::~GroupAllowEmitAction() = default;
+
+bool GroupAllowEmitAction::init_(sead::Heap* heap) {
+ return ksys::act::ai::Action::init_(heap);
+}
+
+void GroupAllowEmitAction::loadParams_() {
+ getDynamicParam(&mGroupName_d, "GroupName");
+}
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionGroupAllowEmitAction.h b/src/KingSystem/Sound/Actor/Action/actionGroupAllowEmitAction.h
new file mode 100644
index 00000000..d19c83da
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionGroupAllowEmitAction.h
@@ -0,0 +1,21 @@
+#pragma once
+
+#include "KingSystem/ActorSystem/actAiAction.h"
+
+namespace ksys::snd {
+
+class GroupAllowEmitAction : public ksys::act::ai::Action {
+ SEAD_RTTI_OVERRIDE(GroupAllowEmitAction, ksys::act::ai::Action)
+public:
+ explicit GroupAllowEmitAction(const InitArg& arg);
+ ~GroupAllowEmitAction() override;
+
+ bool init_(sead::Heap* heap) override;
+ void loadParams_() override;
+
+protected:
+ // dynamic_param at offset 0x20
+ sead::SafeString mGroupName_d{};
+};
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionGroupDisallowEmitAction.cpp b/src/KingSystem/Sound/Actor/Action/actionGroupDisallowEmitAction.cpp
new file mode 100644
index 00000000..bbd34145
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionGroupDisallowEmitAction.cpp
@@ -0,0 +1,17 @@
+#include "KingSystem/Sound/Actor/Action/actionGroupDisallowEmitAction.h"
+
+namespace ksys::snd {
+
+GroupDisallowEmitAction::GroupDisallowEmitAction(const InitArg& arg) : ksys::act::ai::Action(arg) {}
+
+GroupDisallowEmitAction::~GroupDisallowEmitAction() = default;
+
+bool GroupDisallowEmitAction::init_(sead::Heap* heap) {
+ return ksys::act::ai::Action::init_(heap);
+}
+
+void GroupDisallowEmitAction::loadParams_() {
+ getDynamicParam(&mGroupName_d, "GroupName");
+}
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionGroupDisallowEmitAction.h b/src/KingSystem/Sound/Actor/Action/actionGroupDisallowEmitAction.h
new file mode 100644
index 00000000..cb5c61c6
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionGroupDisallowEmitAction.h
@@ -0,0 +1,21 @@
+#pragma once
+
+#include "KingSystem/ActorSystem/actAiAction.h"
+
+namespace ksys::snd {
+
+class GroupDisallowEmitAction : public ksys::act::ai::Action {
+ SEAD_RTTI_OVERRIDE(GroupDisallowEmitAction, ksys::act::ai::Action)
+public:
+ explicit GroupDisallowEmitAction(const InitArg& arg);
+ ~GroupDisallowEmitAction() override;
+
+ bool init_(sead::Heap* heap) override;
+ void loadParams_() override;
+
+protected:
+ // dynamic_param at offset 0x20
+ sead::SafeString mGroupName_d{};
+};
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionKillAllDemoSoundAction.cpp b/src/KingSystem/Sound/Actor/Action/actionKillAllDemoSoundAction.cpp
new file mode 100644
index 00000000..5f39fe8c
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionKillAllDemoSoundAction.cpp
@@ -0,0 +1,15 @@
+#include "KingSystem/Sound/Actor/Action/actionKillAllDemoSoundAction.h"
+
+namespace ksys::snd {
+
+KillAllDemoSoundAction::KillAllDemoSoundAction(const InitArg& arg) : ksys::act::ai::Action(arg) {}
+
+KillAllDemoSoundAction::~KillAllDemoSoundAction() = default;
+
+bool KillAllDemoSoundAction::init_(sead::Heap* heap) {
+ return ksys::act::ai::Action::init_(heap);
+}
+
+void KillAllDemoSoundAction::loadParams_() {}
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionKillAllDemoSoundAction.h b/src/KingSystem/Sound/Actor/Action/actionKillAllDemoSoundAction.h
new file mode 100644
index 00000000..531059c3
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionKillAllDemoSoundAction.h
@@ -0,0 +1,19 @@
+#pragma once
+
+#include "KingSystem/ActorSystem/actAiAction.h"
+
+namespace ksys::snd {
+
+class KillAllDemoSoundAction : public ksys::act::ai::Action {
+ SEAD_RTTI_OVERRIDE(KillAllDemoSoundAction, ksys::act::ai::Action)
+public:
+ explicit KillAllDemoSoundAction(const InitArg& arg);
+ ~KillAllDemoSoundAction() override;
+
+ bool init_(sead::Heap* heap) override;
+ void loadParams_() override;
+
+protected:
+};
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionListenerFixPositionAction.cpp b/src/KingSystem/Sound/Actor/Action/actionListenerFixPositionAction.cpp
new file mode 100644
index 00000000..3ba032cf
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionListenerFixPositionAction.cpp
@@ -0,0 +1,18 @@
+#include "KingSystem/Sound/Actor/Action/actionListenerFixPositionAction.h"
+
+namespace ksys::snd {
+
+ListenerFixPositionAction::ListenerFixPositionAction(const InitArg& arg)
+ : ksys::act::ai::Action(arg) {}
+
+ListenerFixPositionAction::~ListenerFixPositionAction() = default;
+
+bool ListenerFixPositionAction::init_(sead::Heap* heap) {
+ return ksys::act::ai::Action::init_(heap);
+}
+
+void ListenerFixPositionAction::loadParams_() {
+ getDynamicParam(&mFixType_d, "FixType");
+}
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionListenerFixPositionAction.h b/src/KingSystem/Sound/Actor/Action/actionListenerFixPositionAction.h
new file mode 100644
index 00000000..3d4fbb29
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionListenerFixPositionAction.h
@@ -0,0 +1,21 @@
+#pragma once
+
+#include "KingSystem/ActorSystem/actAiAction.h"
+
+namespace ksys::snd {
+
+class ListenerFixPositionAction : public ksys::act::ai::Action {
+ SEAD_RTTI_OVERRIDE(ListenerFixPositionAction, ksys::act::ai::Action)
+public:
+ explicit ListenerFixPositionAction(const InitArg& arg);
+ ~ListenerFixPositionAction() override;
+
+ bool init_(sead::Heap* heap) override;
+ void loadParams_() override;
+
+protected:
+ // dynamic_param at offset 0x20
+ sead::SafeString mFixType_d{};
+};
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionListenerSetModeAction.cpp b/src/KingSystem/Sound/Actor/Action/actionListenerSetModeAction.cpp
new file mode 100644
index 00000000..38b72c9f
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionListenerSetModeAction.cpp
@@ -0,0 +1,17 @@
+#include "KingSystem/Sound/Actor/Action/actionListenerSetModeAction.h"
+
+namespace ksys::snd {
+
+ListenerSetModeAction::ListenerSetModeAction(const InitArg& arg) : ksys::act::ai::Action(arg) {}
+
+ListenerSetModeAction::~ListenerSetModeAction() = default;
+
+bool ListenerSetModeAction::init_(sead::Heap* heap) {
+ return ksys::act::ai::Action::init_(heap);
+}
+
+void ListenerSetModeAction::loadParams_() {
+ getDynamicParam(&mMode_d, "Mode");
+}
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionListenerSetModeAction.h b/src/KingSystem/Sound/Actor/Action/actionListenerSetModeAction.h
new file mode 100644
index 00000000..1d165767
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionListenerSetModeAction.h
@@ -0,0 +1,21 @@
+#pragma once
+
+#include "KingSystem/ActorSystem/actAiAction.h"
+
+namespace ksys::snd {
+
+class ListenerSetModeAction : public ksys::act::ai::Action {
+ SEAD_RTTI_OVERRIDE(ListenerSetModeAction, ksys::act::ai::Action)
+public:
+ explicit ListenerSetModeAction(const InitArg& arg);
+ ~ListenerSetModeAction() override;
+
+ bool init_(sead::Heap* heap) override;
+ void loadParams_() override;
+
+protected:
+ // dynamic_param at offset 0x20
+ sead::SafeString mMode_d{};
+};
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionMusicianSpotBgmTriggerAction.cpp b/src/KingSystem/Sound/Actor/Action/actionMusicianSpotBgmTriggerAction.cpp
new file mode 100644
index 00000000..5cf36231
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionMusicianSpotBgmTriggerAction.cpp
@@ -0,0 +1,30 @@
+#include "KingSystem/Sound/Actor/Action/actionMusicianSpotBgmTriggerAction.h"
+
+namespace ksys::snd {
+
+MusicianSpotBgmTriggerAction::MusicianSpotBgmTriggerAction(const InitArg& arg)
+ : SpotBgmTriggerAction(arg) {}
+
+MusicianSpotBgmTriggerAction::~MusicianSpotBgmTriggerAction() = default;
+
+bool MusicianSpotBgmTriggerAction::init_(sead::Heap* heap) {
+ return SpotBgmTriggerAction::init_(heap);
+}
+
+void MusicianSpotBgmTriggerAction::enter_(ksys::act::ai::InlineParamPack* params) {
+ SpotBgmTriggerAction::enter_(params);
+}
+
+void MusicianSpotBgmTriggerAction::leave_() {
+ SpotBgmTriggerAction::leave_();
+}
+
+void MusicianSpotBgmTriggerAction::loadParams_() {
+ SpotBgmTriggerAction::loadParams_();
+}
+
+void MusicianSpotBgmTriggerAction::calc_() {
+ SpotBgmTriggerAction::calc_();
+}
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionMusicianSpotBgmTriggerAction.h b/src/KingSystem/Sound/Actor/Action/actionMusicianSpotBgmTriggerAction.h
new file mode 100644
index 00000000..f62d3af5
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionMusicianSpotBgmTriggerAction.h
@@ -0,0 +1,23 @@
+#pragma once
+
+#include "KingSystem/ActorSystem/actAiAction.h"
+#include "KingSystem/Sound/Actor/Action/actionSpotBgmTriggerAction.h"
+
+namespace ksys::snd {
+
+class MusicianSpotBgmTriggerAction : public SpotBgmTriggerAction {
+ SEAD_RTTI_OVERRIDE(MusicianSpotBgmTriggerAction, SpotBgmTriggerAction)
+public:
+ explicit MusicianSpotBgmTriggerAction(const InitArg& arg);
+ ~MusicianSpotBgmTriggerAction() override;
+
+ bool init_(sead::Heap* heap) override;
+ void enter_(ksys::act::ai::InlineParamPack* params) override;
+ void leave_() override;
+ void loadParams_() override;
+
+protected:
+ void calc_() override;
+};
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionPlayerEmitEquipmentNoise.cpp b/src/KingSystem/Sound/Actor/Action/actionPlayerEmitEquipmentNoise.cpp
new file mode 100644
index 00000000..39f2000c
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionPlayerEmitEquipmentNoise.cpp
@@ -0,0 +1,19 @@
+#include "KingSystem/Sound/Actor/Action/actionPlayerEmitEquipmentNoise.h"
+
+namespace ksys::snd {
+
+PlayerEmitEquipmentNoise::PlayerEmitEquipmentNoise(const InitArg& arg)
+ : ksys::act::ai::Action(arg) {}
+
+PlayerEmitEquipmentNoise::~PlayerEmitEquipmentNoise() = default;
+
+bool PlayerEmitEquipmentNoise::init_(sead::Heap* heap) {
+ return ksys::act::ai::Action::init_(heap);
+}
+
+void PlayerEmitEquipmentNoise::loadParams_() {
+ getDynamicParam(&mSteppingFoot_d, "SteppingFoot");
+ getDynamicParam(&mSpeed_d, "Speed");
+}
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionPlayerEmitEquipmentNoise.h b/src/KingSystem/Sound/Actor/Action/actionPlayerEmitEquipmentNoise.h
new file mode 100644
index 00000000..9aa52305
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionPlayerEmitEquipmentNoise.h
@@ -0,0 +1,23 @@
+#pragma once
+
+#include "KingSystem/ActorSystem/actAiAction.h"
+
+namespace ksys::snd {
+
+class PlayerEmitEquipmentNoise : public ksys::act::ai::Action {
+ SEAD_RTTI_OVERRIDE(PlayerEmitEquipmentNoise, ksys::act::ai::Action)
+public:
+ explicit PlayerEmitEquipmentNoise(const InitArg& arg);
+ ~PlayerEmitEquipmentNoise() override;
+
+ bool init_(sead::Heap* heap) override;
+ void loadParams_() override;
+
+protected:
+ // dynamic_param at offset 0x20
+ sead::SafeString mSteppingFoot_d{};
+ // dynamic_param at offset 0x30
+ sead::SafeString mSpeed_d{};
+};
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionSceneBgmCtrlAction.cpp b/src/KingSystem/Sound/Actor/Action/actionSceneBgmCtrlAction.cpp
new file mode 100644
index 00000000..d3c6f632
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionSceneBgmCtrlAction.cpp
@@ -0,0 +1,17 @@
+#include "KingSystem/Sound/Actor/Action/actionSceneBgmCtrlAction.h"
+
+namespace ksys::snd {
+
+SceneBgmCtrlAction::SceneBgmCtrlAction(const InitArg& arg) : ksys::act::ai::Action(arg) {}
+
+SceneBgmCtrlAction::~SceneBgmCtrlAction() = default;
+
+bool SceneBgmCtrlAction::init_(sead::Heap* heap) {
+ return ksys::act::ai::Action::init_(heap);
+}
+
+void SceneBgmCtrlAction::loadParams_() {
+ getDynamicParam(&mCtrlType_d, "CtrlType");
+}
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionSceneBgmCtrlAction.h b/src/KingSystem/Sound/Actor/Action/actionSceneBgmCtrlAction.h
new file mode 100644
index 00000000..8976628f
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionSceneBgmCtrlAction.h
@@ -0,0 +1,21 @@
+#pragma once
+
+#include "KingSystem/ActorSystem/actAiAction.h"
+
+namespace ksys::snd {
+
+class SceneBgmCtrlAction : public ksys::act::ai::Action {
+ SEAD_RTTI_OVERRIDE(SceneBgmCtrlAction, ksys::act::ai::Action)
+public:
+ explicit SceneBgmCtrlAction(const InitArg& arg);
+ ~SceneBgmCtrlAction() override;
+
+ bool init_(sead::Heap* heap) override;
+ void loadParams_() override;
+
+protected:
+ // dynamic_param at offset 0x20
+ sead::SafeString mCtrlType_d{};
+};
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionSceneSoundCtrlAction.cpp b/src/KingSystem/Sound/Actor/Action/actionSceneSoundCtrlAction.cpp
new file mode 100644
index 00000000..27743b32
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionSceneSoundCtrlAction.cpp
@@ -0,0 +1,18 @@
+#include "KingSystem/Sound/Actor/Action/actionSceneSoundCtrlAction.h"
+
+namespace ksys::snd {
+
+SceneSoundCtrlAction::SceneSoundCtrlAction(const InitArg& arg) : ksys::act::ai::Action(arg) {}
+
+SceneSoundCtrlAction::~SceneSoundCtrlAction() = default;
+
+bool SceneSoundCtrlAction::init_(sead::Heap* heap) {
+ return ksys::act::ai::Action::init_(heap);
+}
+
+void SceneSoundCtrlAction::loadParams_() {
+ getDynamicParam(&mBgmCtrlType_d, "BgmCtrlType");
+ getDynamicParam(&mSeCtrlType_d, "SeCtrlType");
+}
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionSceneSoundCtrlAction.h b/src/KingSystem/Sound/Actor/Action/actionSceneSoundCtrlAction.h
new file mode 100644
index 00000000..6fce8483
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionSceneSoundCtrlAction.h
@@ -0,0 +1,23 @@
+#pragma once
+
+#include "KingSystem/ActorSystem/actAiAction.h"
+
+namespace ksys::snd {
+
+class SceneSoundCtrlAction : public ksys::act::ai::Action {
+ SEAD_RTTI_OVERRIDE(SceneSoundCtrlAction, ksys::act::ai::Action)
+public:
+ explicit SceneSoundCtrlAction(const InitArg& arg);
+ ~SceneSoundCtrlAction() override;
+
+ bool init_(sead::Heap* heap) override;
+ void loadParams_() override;
+
+protected:
+ // dynamic_param at offset 0x20
+ sead::SafeString mBgmCtrlType_d{};
+ // dynamic_param at offset 0x30
+ sead::SafeString mSeCtrlType_d{};
+};
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionSceneSoundKillDuckingAction.cpp b/src/KingSystem/Sound/Actor/Action/actionSceneSoundKillDuckingAction.cpp
new file mode 100644
index 00000000..c14c4885
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionSceneSoundKillDuckingAction.cpp
@@ -0,0 +1,18 @@
+#include "KingSystem/Sound/Actor/Action/actionSceneSoundKillDuckingAction.h"
+
+namespace ksys::snd {
+
+SceneSoundKillDuckingAction::SceneSoundKillDuckingAction(const InitArg& arg)
+ : ksys::act::ai::Action(arg) {}
+
+SceneSoundKillDuckingAction::~SceneSoundKillDuckingAction() = default;
+
+bool SceneSoundKillDuckingAction::init_(sead::Heap* heap) {
+ return ksys::act::ai::Action::init_(heap);
+}
+
+void SceneSoundKillDuckingAction::loadParams_() {
+ getDynamicParam(&mDuckerType_d, "DuckerType");
+}
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionSceneSoundKillDuckingAction.h b/src/KingSystem/Sound/Actor/Action/actionSceneSoundKillDuckingAction.h
new file mode 100644
index 00000000..ec7dcf23
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionSceneSoundKillDuckingAction.h
@@ -0,0 +1,21 @@
+#pragma once
+
+#include "KingSystem/ActorSystem/actAiAction.h"
+
+namespace ksys::snd {
+
+class SceneSoundKillDuckingAction : public ksys::act::ai::Action {
+ SEAD_RTTI_OVERRIDE(SceneSoundKillDuckingAction, ksys::act::ai::Action)
+public:
+ explicit SceneSoundKillDuckingAction(const InitArg& arg);
+ ~SceneSoundKillDuckingAction() override;
+
+ bool init_(sead::Heap* heap) override;
+ void loadParams_() override;
+
+protected:
+ // dynamic_param at offset 0x20
+ sead::SafeString mDuckerType_d{};
+};
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionSceneSoundNotifyTalkAction.cpp b/src/KingSystem/Sound/Actor/Action/actionSceneSoundNotifyTalkAction.cpp
new file mode 100644
index 00000000..58184fdd
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionSceneSoundNotifyTalkAction.cpp
@@ -0,0 +1,18 @@
+#include "KingSystem/Sound/Actor/Action/actionSceneSoundNotifyTalkAction.h"
+
+namespace ksys::snd {
+
+SceneSoundNotifyTalkAction::SceneSoundNotifyTalkAction(const InitArg& arg)
+ : ksys::act::ai::Action(arg) {}
+
+SceneSoundNotifyTalkAction::~SceneSoundNotifyTalkAction() = default;
+
+bool SceneSoundNotifyTalkAction::init_(sead::Heap* heap) {
+ return ksys::act::ai::Action::init_(heap);
+}
+
+void SceneSoundNotifyTalkAction::loadParams_() {
+ getDynamicParam(&mCtrlType_d, "CtrlType");
+}
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionSceneSoundNotifyTalkAction.h b/src/KingSystem/Sound/Actor/Action/actionSceneSoundNotifyTalkAction.h
new file mode 100644
index 00000000..598dcc7d
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionSceneSoundNotifyTalkAction.h
@@ -0,0 +1,21 @@
+#pragma once
+
+#include "KingSystem/ActorSystem/actAiAction.h"
+
+namespace ksys::snd {
+
+class SceneSoundNotifyTalkAction : public ksys::act::ai::Action {
+ SEAD_RTTI_OVERRIDE(SceneSoundNotifyTalkAction, ksys::act::ai::Action)
+public:
+ explicit SceneSoundNotifyTalkAction(const InitArg& arg);
+ ~SceneSoundNotifyTalkAction() override;
+
+ bool init_(sead::Heap* heap) override;
+ void loadParams_() override;
+
+protected:
+ // dynamic_param at offset 0x20
+ sead::SafeString mCtrlType_d{};
+};
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionSceneSoundSetEndProcAction.cpp b/src/KingSystem/Sound/Actor/Action/actionSceneSoundSetEndProcAction.cpp
new file mode 100644
index 00000000..5744565c
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionSceneSoundSetEndProcAction.cpp
@@ -0,0 +1,18 @@
+#include "KingSystem/Sound/Actor/Action/actionSceneSoundSetEndProcAction.h"
+
+namespace ksys::snd {
+
+SceneSoundSetEndProcAction::SceneSoundSetEndProcAction(const InitArg& arg)
+ : ksys::act::ai::Action(arg) {}
+
+SceneSoundSetEndProcAction::~SceneSoundSetEndProcAction() = default;
+
+bool SceneSoundSetEndProcAction::init_(sead::Heap* heap) {
+ return ksys::act::ai::Action::init_(heap);
+}
+
+void SceneSoundSetEndProcAction::loadParams_() {
+ getDynamicParam(&mCtrlType_d, "CtrlType");
+}
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionSceneSoundSetEndProcAction.h b/src/KingSystem/Sound/Actor/Action/actionSceneSoundSetEndProcAction.h
new file mode 100644
index 00000000..6e1d212e
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionSceneSoundSetEndProcAction.h
@@ -0,0 +1,21 @@
+#pragma once
+
+#include "KingSystem/ActorSystem/actAiAction.h"
+
+namespace ksys::snd {
+
+class SceneSoundSetEndProcAction : public ksys::act::ai::Action {
+ SEAD_RTTI_OVERRIDE(SceneSoundSetEndProcAction, ksys::act::ai::Action)
+public:
+ explicit SceneSoundSetEndProcAction(const InitArg& arg);
+ ~SceneSoundSetEndProcAction() override;
+
+ bool init_(sead::Heap* heap) override;
+ void loadParams_() override;
+
+protected:
+ // dynamic_param at offset 0x20
+ sead::SafeString mCtrlType_d{};
+};
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionSceneSoundSetStartProcAction.cpp b/src/KingSystem/Sound/Actor/Action/actionSceneSoundSetStartProcAction.cpp
new file mode 100644
index 00000000..8e3d47c5
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionSceneSoundSetStartProcAction.cpp
@@ -0,0 +1,19 @@
+#include "KingSystem/Sound/Actor/Action/actionSceneSoundSetStartProcAction.h"
+
+namespace ksys::snd {
+
+SceneSoundSetStartProcAction::SceneSoundSetStartProcAction(const InitArg& arg)
+ : ksys::act::ai::Action(arg) {}
+
+SceneSoundSetStartProcAction::~SceneSoundSetStartProcAction() = default;
+
+bool SceneSoundSetStartProcAction::init_(sead::Heap* heap) {
+ return ksys::act::ai::Action::init_(heap);
+}
+
+void SceneSoundSetStartProcAction::loadParams_() {
+ getDynamicParam(&mBgmCtrlType_d, "BgmCtrlType");
+ getDynamicParam(&mSeCtrlType_d, "SeCtrlType");
+}
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionSceneSoundSetStartProcAction.h b/src/KingSystem/Sound/Actor/Action/actionSceneSoundSetStartProcAction.h
new file mode 100644
index 00000000..50fb129f
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionSceneSoundSetStartProcAction.h
@@ -0,0 +1,23 @@
+#pragma once
+
+#include "KingSystem/ActorSystem/actAiAction.h"
+
+namespace ksys::snd {
+
+class SceneSoundSetStartProcAction : public ksys::act::ai::Action {
+ SEAD_RTTI_OVERRIDE(SceneSoundSetStartProcAction, ksys::act::ai::Action)
+public:
+ explicit SceneSoundSetStartProcAction(const InitArg& arg);
+ ~SceneSoundSetStartProcAction() override;
+
+ bool init_(sead::Heap* heap) override;
+ void loadParams_() override;
+
+protected:
+ // dynamic_param at offset 0x20
+ sead::SafeString mBgmCtrlType_d{};
+ // dynamic_param at offset 0x30
+ sead::SafeString mSeCtrlType_d{};
+};
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionSceneSoundStartDuckingAction.cpp b/src/KingSystem/Sound/Actor/Action/actionSceneSoundStartDuckingAction.cpp
new file mode 100644
index 00000000..35ce1f95
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionSceneSoundStartDuckingAction.cpp
@@ -0,0 +1,18 @@
+#include "KingSystem/Sound/Actor/Action/actionSceneSoundStartDuckingAction.h"
+
+namespace ksys::snd {
+
+SceneSoundStartDuckingAction::SceneSoundStartDuckingAction(const InitArg& arg)
+ : ksys::act::ai::Action(arg) {}
+
+SceneSoundStartDuckingAction::~SceneSoundStartDuckingAction() = default;
+
+bool SceneSoundStartDuckingAction::init_(sead::Heap* heap) {
+ return ksys::act::ai::Action::init_(heap);
+}
+
+void SceneSoundStartDuckingAction::loadParams_() {
+ getDynamicParam(&mDuckerType_d, "DuckerType");
+}
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionSceneSoundStartDuckingAction.h b/src/KingSystem/Sound/Actor/Action/actionSceneSoundStartDuckingAction.h
new file mode 100644
index 00000000..0eccf0f1
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionSceneSoundStartDuckingAction.h
@@ -0,0 +1,21 @@
+#pragma once
+
+#include "KingSystem/ActorSystem/actAiAction.h"
+
+namespace ksys::snd {
+
+class SceneSoundStartDuckingAction : public ksys::act::ai::Action {
+ SEAD_RTTI_OVERRIDE(SceneSoundStartDuckingAction, ksys::act::ai::Action)
+public:
+ explicit SceneSoundStartDuckingAction(const InitArg& arg);
+ ~SceneSoundStartDuckingAction() override;
+
+ bool init_(sead::Heap* heap) override;
+ void loadParams_() override;
+
+protected:
+ // dynamic_param at offset 0x20
+ sead::SafeString mDuckerType_d{};
+};
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionSceneSoundStopDuckingAction.cpp b/src/KingSystem/Sound/Actor/Action/actionSceneSoundStopDuckingAction.cpp
new file mode 100644
index 00000000..38e99383
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionSceneSoundStopDuckingAction.cpp
@@ -0,0 +1,18 @@
+#include "KingSystem/Sound/Actor/Action/actionSceneSoundStopDuckingAction.h"
+
+namespace ksys::snd {
+
+SceneSoundStopDuckingAction::SceneSoundStopDuckingAction(const InitArg& arg)
+ : ksys::act::ai::Action(arg) {}
+
+SceneSoundStopDuckingAction::~SceneSoundStopDuckingAction() = default;
+
+bool SceneSoundStopDuckingAction::init_(sead::Heap* heap) {
+ return ksys::act::ai::Action::init_(heap);
+}
+
+void SceneSoundStopDuckingAction::loadParams_() {
+ getDynamicParam(&mDuckerType_d, "DuckerType");
+}
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionSceneSoundStopDuckingAction.h b/src/KingSystem/Sound/Actor/Action/actionSceneSoundStopDuckingAction.h
new file mode 100644
index 00000000..782c1d61
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionSceneSoundStopDuckingAction.h
@@ -0,0 +1,21 @@
+#pragma once
+
+#include "KingSystem/ActorSystem/actAiAction.h"
+
+namespace ksys::snd {
+
+class SceneSoundStopDuckingAction : public ksys::act::ai::Action {
+ SEAD_RTTI_OVERRIDE(SceneSoundStopDuckingAction, ksys::act::ai::Action)
+public:
+ explicit SceneSoundStopDuckingAction(const InitArg& arg);
+ ~SceneSoundStopDuckingAction() override;
+
+ bool init_(sead::Heap* heap) override;
+ void loadParams_() override;
+
+protected:
+ // dynamic_param at offset 0x20
+ sead::SafeString mDuckerType_d{};
+};
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionSoundOcclusionTagAction.cpp b/src/KingSystem/Sound/Actor/Action/actionSoundOcclusionTagAction.cpp
new file mode 100644
index 00000000..d1c7d5e8
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionSoundOcclusionTagAction.cpp
@@ -0,0 +1,29 @@
+#include "KingSystem/Sound/Actor/Action/actionSoundOcclusionTagAction.h"
+
+namespace ksys::snd {
+
+SoundOcclusionTagAction::SoundOcclusionTagAction(const InitArg& arg) : AreaTagAction(arg) {}
+
+SoundOcclusionTagAction::~SoundOcclusionTagAction() = default;
+
+bool SoundOcclusionTagAction::init_(sead::Heap* heap) {
+ return AreaTagAction::init_(heap);
+}
+
+void SoundOcclusionTagAction::enter_(ksys::act::ai::InlineParamPack* params) {
+ AreaTagAction::enter_(params);
+}
+
+void SoundOcclusionTagAction::leave_() {
+ AreaTagAction::leave_();
+}
+
+void SoundOcclusionTagAction::loadParams_() {
+ getStaticParam(&mOcclusionLevel_s, "OcclusionLevel");
+}
+
+void SoundOcclusionTagAction::calc_() {
+ AreaTagAction::calc_();
+}
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionSoundOcclusionTagAction.h b/src/KingSystem/Sound/Actor/Action/actionSoundOcclusionTagAction.h
new file mode 100644
index 00000000..e277e87c
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionSoundOcclusionTagAction.h
@@ -0,0 +1,26 @@
+#pragma once
+
+#include "Game/Actor/Area/Action/actionAreaTagAction.h"
+#include "KingSystem/ActorSystem/actAiAction.h"
+
+namespace ksys::snd {
+
+class SoundOcclusionTagAction : public uking::action::AreaTagAction {
+ SEAD_RTTI_OVERRIDE(SoundOcclusionTagAction, uking::action::AreaTagAction)
+public:
+ explicit SoundOcclusionTagAction(const InitArg& arg);
+ ~SoundOcclusionTagAction() override;
+
+ bool init_(sead::Heap* heap) override;
+ void enter_(ksys::act::ai::InlineParamPack* params) override;
+ void leave_() override;
+ void loadParams_() override;
+
+protected:
+ void calc_() override;
+
+ // static_param at offset 0x48
+ const float* mOcclusionLevel_s{};
+};
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionSoundProxyRootAction.cpp b/src/KingSystem/Sound/Actor/Action/actionSoundProxyRootAction.cpp
new file mode 100644
index 00000000..f2ece975
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionSoundProxyRootAction.cpp
@@ -0,0 +1,27 @@
+#include "KingSystem/Sound/Actor/Action/actionSoundProxyRootAction.h"
+
+namespace ksys::snd {
+
+SoundProxyRootAction::SoundProxyRootAction(const InitArg& arg) : ksys::act::ai::Action(arg) {}
+
+SoundProxyRootAction::~SoundProxyRootAction() = default;
+
+bool SoundProxyRootAction::init_(sead::Heap* heap) {
+ return ksys::act::ai::Action::init_(heap);
+}
+
+void SoundProxyRootAction::enter_(ksys::act::ai::InlineParamPack* params) {
+ ksys::act::ai::Action::enter_(params);
+}
+
+void SoundProxyRootAction::leave_() {
+ ksys::act::ai::Action::leave_();
+}
+
+void SoundProxyRootAction::loadParams_() {}
+
+void SoundProxyRootAction::calc_() {
+ ksys::act::ai::Action::calc_();
+}
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionSoundProxyRootAction.h b/src/KingSystem/Sound/Actor/Action/actionSoundProxyRootAction.h
new file mode 100644
index 00000000..08a70394
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionSoundProxyRootAction.h
@@ -0,0 +1,22 @@
+#pragma once
+
+#include "KingSystem/ActorSystem/actAiAction.h"
+
+namespace ksys::snd {
+
+class SoundProxyRootAction : public ksys::act::ai::Action {
+ SEAD_RTTI_OVERRIDE(SoundProxyRootAction, ksys::act::ai::Action)
+public:
+ explicit SoundProxyRootAction(const InitArg& arg);
+ ~SoundProxyRootAction() override;
+
+ bool init_(sead::Heap* heap) override;
+ void enter_(ksys::act::ai::InlineParamPack* params) override;
+ void leave_() override;
+ void loadParams_() override;
+
+protected:
+ void calc_() override;
+};
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionSoundReverbAreaTagAction.cpp b/src/KingSystem/Sound/Actor/Action/actionSoundReverbAreaTagAction.cpp
new file mode 100644
index 00000000..cac7dde0
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionSoundReverbAreaTagAction.cpp
@@ -0,0 +1,34 @@
+#include "KingSystem/Sound/Actor/Action/actionSoundReverbAreaTagAction.h"
+
+namespace ksys::snd {
+
+SoundReverbAreaTagAction::SoundReverbAreaTagAction(const InitArg& arg) : AreaTagAction(arg) {}
+
+SoundReverbAreaTagAction::~SoundReverbAreaTagAction() = default;
+
+bool SoundReverbAreaTagAction::init_(sead::Heap* heap) {
+ return AreaTagAction::init_(heap);
+}
+
+void SoundReverbAreaTagAction::enter_(ksys::act::ai::InlineParamPack* params) {
+ AreaTagAction::enter_(params);
+}
+
+void SoundReverbAreaTagAction::leave_() {
+ AreaTagAction::leave_();
+}
+
+void SoundReverbAreaTagAction::loadParams_() {
+ getMapUnitParam(&mReverbSendAdd_m, "ReverbSendAdd");
+ getMapUnitParam(&mReverbTimeAdd_m, "ReverbTimeAdd");
+ getMapUnitParam(&mEarlyReflectionFeedbackAdd_m, "EarlyReflectionFeedbackAdd");
+ getMapUnitParam(&mRoomHfAdd_m, "RoomHfAdd");
+ getMapUnitParam(&mReverbAdd_m, "ReverbAdd");
+ getMapUnitParam(&mMerginDistance_m, "MerginDistance");
+}
+
+void SoundReverbAreaTagAction::calc_() {
+ AreaTagAction::calc_();
+}
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionSoundReverbAreaTagAction.h b/src/KingSystem/Sound/Actor/Action/actionSoundReverbAreaTagAction.h
new file mode 100644
index 00000000..a6d53e8e
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionSoundReverbAreaTagAction.h
@@ -0,0 +1,36 @@
+#pragma once
+
+#include "Game/Actor/Area/Action/actionAreaTagAction.h"
+#include "KingSystem/ActorSystem/actAiAction.h"
+
+namespace ksys::snd {
+
+class SoundReverbAreaTagAction : public uking::action::AreaTagAction {
+ SEAD_RTTI_OVERRIDE(SoundReverbAreaTagAction, uking::action::AreaTagAction)
+public:
+ explicit SoundReverbAreaTagAction(const InitArg& arg);
+ ~SoundReverbAreaTagAction() override;
+
+ bool init_(sead::Heap* heap) override;
+ void enter_(ksys::act::ai::InlineParamPack* params) override;
+ void leave_() override;
+ void loadParams_() override;
+
+protected:
+ void calc_() override;
+
+ // map_unit_param at offset 0x70
+ const float* mReverbSendAdd_m{};
+ // map_unit_param at offset 0x78
+ const float* mReverbTimeAdd_m{};
+ // map_unit_param at offset 0x80
+ const float* mEarlyReflectionFeedbackAdd_m{};
+ // map_unit_param at offset 0x88
+ const float* mRoomHfAdd_m{};
+ // map_unit_param at offset 0x90
+ const float* mReverbAdd_m{};
+ // map_unit_param at offset 0x98
+ const float* mMerginDistance_m{};
+};
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionSoundShieldingAreaTagAction.cpp b/src/KingSystem/Sound/Actor/Action/actionSoundShieldingAreaTagAction.cpp
new file mode 100644
index 00000000..0025a32a
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionSoundShieldingAreaTagAction.cpp
@@ -0,0 +1,30 @@
+#include "KingSystem/Sound/Actor/Action/actionSoundShieldingAreaTagAction.h"
+
+namespace ksys::snd {
+
+SoundShieldingAreaTagAction::SoundShieldingAreaTagAction(const InitArg& arg) : AreaTagAction(arg) {}
+
+SoundShieldingAreaTagAction::~SoundShieldingAreaTagAction() = default;
+
+bool SoundShieldingAreaTagAction::init_(sead::Heap* heap) {
+ return AreaTagAction::init_(heap);
+}
+
+void SoundShieldingAreaTagAction::enter_(ksys::act::ai::InlineParamPack* params) {
+ AreaTagAction::enter_(params);
+}
+
+void SoundShieldingAreaTagAction::leave_() {
+ AreaTagAction::leave_();
+}
+
+void SoundShieldingAreaTagAction::loadParams_() {
+ getMapUnitParam(&mMerginDistance_m, "MerginDistance");
+ getMapUnitParam(&mIsShieldChemicalWind_m, "IsShieldChemicalWind");
+}
+
+void SoundShieldingAreaTagAction::calc_() {
+ AreaTagAction::calc_();
+}
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionSoundShieldingAreaTagAction.h b/src/KingSystem/Sound/Actor/Action/actionSoundShieldingAreaTagAction.h
new file mode 100644
index 00000000..e0672e92
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionSoundShieldingAreaTagAction.h
@@ -0,0 +1,28 @@
+#pragma once
+
+#include "Game/Actor/Area/Action/actionAreaTagAction.h"
+#include "KingSystem/ActorSystem/actAiAction.h"
+
+namespace ksys::snd {
+
+class SoundShieldingAreaTagAction : public uking::action::AreaTagAction {
+ SEAD_RTTI_OVERRIDE(SoundShieldingAreaTagAction, uking::action::AreaTagAction)
+public:
+ explicit SoundShieldingAreaTagAction(const InitArg& arg);
+ ~SoundShieldingAreaTagAction() override;
+
+ bool init_(sead::Heap* heap) override;
+ void enter_(ksys::act::ai::InlineParamPack* params) override;
+ void leave_() override;
+ void loadParams_() override;
+
+protected:
+ void calc_() override;
+
+ // map_unit_param at offset 0x38
+ const float* mMerginDistance_m{};
+ // map_unit_param at offset 0x40
+ const bool* mIsShieldChemicalWind_m{};
+};
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionSpotBgmTriggerAction.cpp b/src/KingSystem/Sound/Actor/Action/actionSpotBgmTriggerAction.cpp
new file mode 100644
index 00000000..8cf51b3b
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionSpotBgmTriggerAction.cpp
@@ -0,0 +1,31 @@
+#include "KingSystem/Sound/Actor/Action/actionSpotBgmTriggerAction.h"
+
+namespace ksys::snd {
+
+SpotBgmTriggerAction::SpotBgmTriggerAction(const InitArg& arg) : ksys::act::ai::Action(arg) {}
+
+SpotBgmTriggerAction::~SpotBgmTriggerAction() = default;
+
+bool SpotBgmTriggerAction::init_(sead::Heap* heap) {
+ return ksys::act::ai::Action::init_(heap);
+}
+
+void SpotBgmTriggerAction::enter_(ksys::act::ai::InlineParamPack* params) {
+ ksys::act::ai::Action::enter_(params);
+}
+
+void SpotBgmTriggerAction::leave_() {
+ ksys::act::ai::Action::leave_();
+}
+
+void SpotBgmTriggerAction::loadParams_() {
+ getDynamicParam(&mSound_d, "Sound");
+ getMapUnitParam(&mIsStopWithoutReductionY_m, "IsStopWithoutReductionY");
+ getMapUnitParam(&mSound_m, "Sound");
+}
+
+void SpotBgmTriggerAction::calc_() {
+ ksys::act::ai::Action::calc_();
+}
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionSpotBgmTriggerAction.h b/src/KingSystem/Sound/Actor/Action/actionSpotBgmTriggerAction.h
new file mode 100644
index 00000000..701c0bcb
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionSpotBgmTriggerAction.h
@@ -0,0 +1,29 @@
+#pragma once
+
+#include "KingSystem/ActorSystem/actAiAction.h"
+
+namespace ksys::snd {
+
+class SpotBgmTriggerAction : public ksys::act::ai::Action {
+ SEAD_RTTI_OVERRIDE(SpotBgmTriggerAction, ksys::act::ai::Action)
+public:
+ explicit SpotBgmTriggerAction(const InitArg& arg);
+ ~SpotBgmTriggerAction() override;
+
+ bool init_(sead::Heap* heap) override;
+ void enter_(ksys::act::ai::InlineParamPack* params) override;
+ void leave_() override;
+ void loadParams_() override;
+
+protected:
+ void calc_() override;
+
+ // dynamic_param at offset 0x20
+ sead::SafeString mSound_d{};
+ // map_unit_param at offset 0x30
+ const bool* mIsStopWithoutReductionY_m{};
+ // map_unit_param at offset 0x38
+ sead::SafeString mSound_m{};
+};
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionStopAllDemoSoundAction.cpp b/src/KingSystem/Sound/Actor/Action/actionStopAllDemoSoundAction.cpp
new file mode 100644
index 00000000..4b8c9e4e
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionStopAllDemoSoundAction.cpp
@@ -0,0 +1,27 @@
+#include "KingSystem/Sound/Actor/Action/actionStopAllDemoSoundAction.h"
+
+namespace ksys::snd {
+
+StopAllDemoSoundAction::StopAllDemoSoundAction(const InitArg& arg) : ksys::act::ai::Action(arg) {}
+
+StopAllDemoSoundAction::~StopAllDemoSoundAction() = default;
+
+bool StopAllDemoSoundAction::init_(sead::Heap* heap) {
+ return ksys::act::ai::Action::init_(heap);
+}
+
+void StopAllDemoSoundAction::enter_(ksys::act::ai::InlineParamPack* params) {
+ ksys::act::ai::Action::enter_(params);
+}
+
+void StopAllDemoSoundAction::leave_() {
+ ksys::act::ai::Action::leave_();
+}
+
+void StopAllDemoSoundAction::loadParams_() {}
+
+void StopAllDemoSoundAction::calc_() {
+ ksys::act::ai::Action::calc_();
+}
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/Action/actionStopAllDemoSoundAction.h b/src/KingSystem/Sound/Actor/Action/actionStopAllDemoSoundAction.h
new file mode 100644
index 00000000..90d29086
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/Action/actionStopAllDemoSoundAction.h
@@ -0,0 +1,22 @@
+#pragma once
+
+#include "KingSystem/ActorSystem/actAiAction.h"
+
+namespace ksys::snd {
+
+class StopAllDemoSoundAction : public ksys::act::ai::Action {
+ SEAD_RTTI_OVERRIDE(StopAllDemoSoundAction, ksys::act::ai::Action)
+public:
+ explicit StopAllDemoSoundAction(const InitArg& arg);
+ ~StopAllDemoSoundAction() override;
+
+ bool init_(sead::Heap* heap) override;
+ void enter_(ksys::act::ai::InlineParamPack* params) override;
+ void leave_() override;
+ void loadParams_() override;
+
+protected:
+ void calc_() override;
+};
+
+} // namespace ksys::snd
diff --git a/src/KingSystem/Sound/Actor/CMakeLists.txt b/src/KingSystem/Sound/Actor/CMakeLists.txt
new file mode 100644
index 00000000..cb49b63b
--- /dev/null
+++ b/src/KingSystem/Sound/Actor/CMakeLists.txt
@@ -0,0 +1,2 @@
+add_subdirectory(Action)
+add_subdirectory(AI)
diff --git a/src/KingSystem/Sound/CMakeLists.txt b/src/KingSystem/Sound/CMakeLists.txt
index e86e8ff0..0e022d50 100644
--- a/src/KingSystem/Sound/CMakeLists.txt
+++ b/src/KingSystem/Sound/CMakeLists.txt
@@ -1,3 +1,5 @@
+add_subdirectory(Actor)
+
target_sources(uking PRIVATE
sndInfoData.cpp
sndInfoData.h