summaryrefslogtreecommitdiff
path: root/libs/Z2AudioLib/Z2SoundMgr.cpp
diff options
context:
space:
mode:
authorCaroline Madsen <69010899+randomsalience@users.noreply.github.com>2024-01-30 19:08:37 -0500
committerGitHub <noreply@github.com>2024-01-30 16:08:37 -0800
commit255cc868e43f3754b29fa089a2a02e617ecb09bb (patch)
tree69d3e6252f436c8af94d96f6202a9041d0e4424d /libs/Z2AudioLib/Z2SoundMgr.cpp
parent1c891adeb8a58a62fb3e6a6ff5bb3ec8da00f883 (diff)
work on Z2SoundMgr and Z2SeMgr (#2055)
Diffstat (limited to 'libs/Z2AudioLib/Z2SoundMgr.cpp')
-rw-r--r--libs/Z2AudioLib/Z2SoundMgr.cpp449
1 files changed, 361 insertions, 88 deletions
diff --git a/libs/Z2AudioLib/Z2SoundMgr.cpp b/libs/Z2AudioLib/Z2SoundMgr.cpp
index fe7103627e..7060471381 100644
--- a/libs/Z2AudioLib/Z2SoundMgr.cpp
+++ b/libs/Z2AudioLib/Z2SoundMgr.cpp
@@ -4,34 +4,18 @@
//
#include "Z2AudioLib/Z2SoundMgr.h"
+#include "Z2AudioLib/Z2Param.h"
+#include "Z2AudioLib/Z2SceneMgr.h"
+#include "Z2AudioLib/Z2SeMgr.h"
+#include "Z2AudioLib/Z2SeqMgr.h"
+#include "Z2AudioLib/Z2SoundInfo.h"
+#include "Z2AudioLib/Z2SpeechMgr2.h"
+#include "JSystem/JAudio2/JASCalc.h"
+#include "JSystem/JAudio2/JASDriverIF.h"
+#include "JSystem/JAudio2/JAUSectionHeap.h"
#include "dol2asm.h"
//
-// Types:
-//
-
-struct Z2SpeechMgr2 {
- /* 802CC190 */ void speakOneWord(bool);
-};
-
-struct Z2SoundInfo {
- /* 802BBAC8 */ void getSwBit(JAISoundID) const;
-};
-
-struct JAUSectionHeap {
- /* 802A5EC0 */ void loadDynamicSeq(JAISoundID, bool);
- /* 802A5EF8 */ void releaseIdleDynamicSeqDataBlock();
-};
-
-struct JASDriver {
- /* 8029E188 */ void waitSubFrame();
-};
-
-struct JASCalc {
- static u8 const CUTOFF_TO_IIR_TABLE[1024];
-};
-
-//
// Forward References:
//
@@ -53,6 +37,8 @@ extern "C" void multiVolumeSoundID__10Z2SoundMgrF10JAISoundIDf();
extern "C" void isPlayingSoundID__10Z2SoundMgrF10JAISoundID();
extern "C" extern char const* const Z2SoundMgr__stringBase0;
+void dComIfGs_staffroll_next_go();
+
//
// External References:
//
@@ -106,7 +92,6 @@ extern "C" void _restgpr_25();
extern "C" void _restgpr_26();
extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
-extern "C" void sprintf();
extern "C" u8 const CUTOFF_TO_IIR_TABLE__7JASCalc[1024];
extern "C" extern u8 data_80450B4C[4];
extern "C" extern u8 data_80450B70[4];
@@ -114,7 +99,6 @@ extern "C" extern u8 data_80450B80[4];
extern "C" extern u8 data_80450B84[4];
extern "C" extern u8 data_80450B88[4];
extern "C" extern u8 data_80450CC0[4 + 4 /* padding */];
-extern "C" extern u8 struct_80451340[8];
extern "C" extern u8 __OSReport_disable;
//
@@ -155,6 +139,90 @@ SECTION_SDATA2 static f32 lit_3688 = 1.0f;
SECTION_SDATA2 static f32 lit_3689 = -1.0f;
/* 802A9BC8-802A9E80 2A4508 02B8+00 1/0 1/1 0/0 .text seqCallback__FP8JASTrackUs */
+#ifdef NONMATCHING
+// matches with literals
+u16 seqCallback(JASTrack* i_track, u16 param_1) {
+ JSUList<JAISe>* list;
+ switch (param_1) {
+ case 0x1000:
+ Z2GetSeqMgr()->setChildTrackVolume(Z2GetSeqMgr()->getSubBgmHandle(),
+ 3, 1.0f, 0, -1.0f, -1.0f);
+ Z2GetSoundMgr()->getSeqMgr()->calc();
+ Z2GetSoundMgr()->getSeqMgr()->mixOut();
+ break;
+ case 0x1001:
+ Z2GetSeqMgr()->onFieldBgmJumpStart();
+ break;
+ case 0x1002:
+ Z2GetSeqMgr()->onFieldBgmJumpEnd();
+ break;
+ case 0x1003:
+ Z2GetSpeechMgr2()->speakOneWord(true);
+ break;
+ case 0x1004:
+ Z2GetSeqMgr()->onVariantBgmJumpEnd(true);
+ break;
+ case 0x1005:
+ Z2GetSeqMgr()->onVariantBgmJumpEnd(false);
+ break;
+ case 0x1006:
+ list = Z2GetSoundMgr()->getSeMgr()->getCategory(5)->getSeList();
+ for (JSULink<JAISe>* link = list->getFirst(); link != NULL; link = link->getNext()) {
+ switch (link->getObject()->getID()) {
+ case Z2SE_GRO_MV_SINGING:
+ case Z2SE_GRR_MV_SINGING:
+ case Z2SE_CLERK_MV_SONG_HO:
+ case Z2SE_WAD_A_MV_DANCE:
+ case Z2SE_MCN_A_V_DANCE:
+ case Z2SE_WCN_A_V_DANCE:
+ link->getObject()->getTrack()->writePort(14, 1);
+ break;
+ }
+ }
+ break;
+ case 0x1015:
+ list = Z2GetSoundMgr()->getSeMgr()->getCategory(5)->getSeList();
+ for (JSULink<JAISe>* link = list->getFirst(); link != NULL; link = link->getNext()) {
+ switch (link->getObject()->getID()) {
+ case Z2SE_MCN_A_V_DANCE:
+ case Z2SE_WCN_A_V_DANCE:
+ link->getObject()->getTrack()->writePort(14, 1);
+ break;
+ }
+ }
+ break;
+ case 0x1007:
+ Z2GetSeqMgr()->changeBgmStatus(7);
+ break;
+ case 0x1008:
+ Z2GetSeqMgr()->changeBgmStatus(8);
+ break;
+ case 0x1014:
+ dComIfGs_staffroll_next_go();
+ break;
+ }
+ if (param_1 >= 0x1009 && param_1 <= 0x1013) {
+ JAISoundID sound_id = Z2SE_CSL_TOWN_BAND_VOCAL;
+ if (param_1 <= 0x100a) {
+ sound_id = Z2SE_CSL_TOWN_BAND_GT_1;
+ } else if (param_1 <= 0x100c) {
+ sound_id = Z2SE_CSL_TOWN_BAND_GT_2;
+ } else if (param_1 <= 0x100f) {
+ sound_id = Z2SE_CSL_TOWN_BAND_GT_3;
+ } else if (param_1 <= 0x1011) {
+ sound_id = Z2SE_CSL_TOWN_BAND_FLUTE;
+ }
+ list = Z2GetSoundMgr()->getSeMgr()->getCategory(6)->getSeList();
+ for (JSULink<JAISe>* link = list->getFirst(); link != NULL; link = link->getNext()) {
+ if (link->getObject()->getID() == sound_id) {
+ link->getObject()->getTrack()->writePort(14, param_1);
+ break;
+ }
+ }
+ }
+ return 0;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -163,6 +231,7 @@ asm u16 seqCallback(JASTrack* param_0, u16 param_1) {
#include "asm/Z2AudioLib/Z2SoundMgr/seqCallback__FP8JASTrackUs.s"
}
#pragma pop
+#endif
/* ############################################################################################## */
/* 803C9D70-803C9D80 026E90 000C+04 1/1 1/1 0/0 .data __vt__10Z2SoundMgr */
@@ -175,6 +244,17 @@ SECTION_DATA extern void* __vt__10Z2SoundMgr[3 + 1 /* padding */] = {
};
/* 802A9E80-802A9EE8 2A47C0 0068+00 0/0 1/1 0/0 .text __ct__10Z2SoundMgrFv */
+#ifdef NONMATCHING
+// matches but generates an extra weak function
+Z2SoundMgr::Z2SoundMgr() :
+ JASGlobalInstance<Z2SoundMgr>(this),
+ mSeMgr(true),
+ mSeqMgr(true),
+ mStreamMgr(true)
+{
+ mSoundID.setAnonymous();
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -183,6 +263,7 @@ asm Z2SoundMgr::Z2SoundMgr() {
#include "asm/Z2AudioLib/Z2SoundMgr/__ct__10Z2SoundMgrFv.s"
}
#pragma pop
+#endif
/* ############################################################################################## */
/* 8039B9D0-8039B9D0 028030 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
@@ -209,6 +290,64 @@ SECTION_SDATA2 static f64 lit_3909 = 4503599627370496.0 /* cast u32 to float */;
/* 802A9EE8-802AA1B0 2A4828 02C8+00 1/0 0/0 0/0 .text
* startSound__10Z2SoundMgrF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3<f> */
+#ifdef NONMATCHING
+// matches with literals
+bool Z2SoundMgr::startSound(JAISoundID i_soundID, JAISoundHandle* i_handle,
+ JGeometry::TVec3<f32> const* i_pos) {
+ switch (Z2GetSoundInfo()->getSoundType(i_soundID)) {
+ case 0:
+ if (Z2GetSoundInfo()->getSwBit(i_soundID) & 8) {
+ Z2GetSeqMgr()->bgmAllMute(3, 0.3f);
+ mSoundID = i_soundID;
+ }
+ return mSeMgr.startSound(i_soundID, i_handle, i_pos);
+ case 1:
+ if (i_soundID == Z2BGM_LUTERA_DEMO) {
+ Z2GetSeqMgr()->bgmStart(Z2BGM_LUTERA2, 0, 0);
+ Z2GetSeqMgr()->i_unMuteSceneBgm(0);
+ Z2GetSeqMgr()->changeBgmStatus(0);
+ return mSeMgr.startSound(Z2SE_NO_SOUND, i_handle, i_pos);
+ } else {
+ bool loaded = false;
+ JAUSectionHeap* heap = JASGlobalInstance<JAUSectionHeap>::getInstance();
+ JAUSeqDataBlocks const& loaded_blocks =
+ heap->getSectionHeapData().seqDataBlocks.getLoadedBlocks();
+ JSULink<JAUSeqDataBlock>* link;
+ for (link = loaded_blocks.getFirst(); link != NULL; link = link->getNext()) {
+ if (link->getObject()->field_0x10 == i_soundID) {
+ loaded = true;
+ break;
+ }
+ }
+ if (!loaded) {
+ heap->releaseIdleDynamicSeqDataBlock();
+ if (!heap->loadDynamicSeq(i_soundID, true)) {
+ JAUSeqDataBlocks const& free_blocks =
+ heap->getSectionHeapData().seqDataBlocks.getFreeBlocks();
+ for (link = free_blocks.getFirst(); link != NULL; link = link->getNext()) {
+ }
+ }
+
+ }
+ return mSeqMgr.startSound(i_soundID, i_handle, i_pos);
+ }
+ case 2:
+ if (i_soundID == 0x2000001 || i_soundID == 0x200004d) {
+ mStreamMgr.stop(180);
+ return mSeMgr.startSound(Z2SE_NO_SOUND, i_handle, i_pos);
+ }
+ if (i_soundID == 0x2000005) {
+ mSeMgr.getCategory(9)->pause(false);
+ mSeMgr.getCategory(9)->getParams()->moveVolume(1.0f, 45);
+ }
+ return mStreamMgr.startSound(i_soundID, i_handle, i_pos);
+ default:
+ char error[32];
+ sprintf(error, "Unknown Sound-Type id :%08x\n", (u32)i_soundID);
+ return false;
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -218,8 +357,22 @@ asm bool Z2SoundMgr::startSound(JAISoundID param_0, JAISoundHandle* param_1,
#include "asm/Z2AudioLib/Z2SoundMgr/func_802A9EE8.s"
}
#pragma pop
+#endif
/* 802AA1B0-802AA270 2A4AF0 00C0+00 2/2 0/0 0/0 .text calc__10Z2SoundMgrFv */
+#ifdef NONMATCHING
+void Z2SoundMgr::calc() {
+ mSeMgr.calc();
+ if (!mSoundID.isAnonymous() && !isPlayingSoundID(mSoundID)) {
+ if (Z2GetSceneMgr()->isSceneExist()) {
+ Z2GetSeqMgr()->bgmAllUnMute(3);
+ }
+ mSoundID.setAnonymous();
+ }
+ mSeqMgr.calc();
+ mStreamMgr.calc();
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -228,67 +381,148 @@ asm void Z2SoundMgr::calc() {
#include "asm/Z2AudioLib/Z2SoundMgr/calc__10Z2SoundMgrFv.s"
}
#pragma pop
+#endif
/* 802AA270-802AA33C 2A4BB0 00CC+00 1/1 2/2 0/0 .text setIIR__10Z2SoundMgrFP8JAISoundPCs
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void Z2SoundMgr::setIIR(JAISound* param_0, s16 const* param_1) {
- nofralloc
-#include "asm/Z2AudioLib/Z2SoundMgr/setIIR__10Z2SoundMgrFP8JAISoundPCs.s"
+void Z2SoundMgr::setIIR(JAISound* param_0, s16 const* param_1) {
+ if (param_0 != NULL) {
+ JASTrack* track = param_0->getTrack();
+ for (u32 i = 0; i < 4; i++) {
+ JASTrack* child = track->getChild(i);
+ if (child != NULL && child->getStatus() == 1) {
+ child->setIIR(param_1);
+ for (u32 j = 0; j < 4; j++) {
+ JASTrack* child2 = child->getChild(j);
+ if (child2 != NULL && child2->getStatus() == 1) {
+ child2->setIIR(param_1);
+ }
+ }
+ }
+ }
+ }
}
-#pragma pop
-/* ############################################################################################## */
/* 8039B9C0-8039B9D0 028020 0010+00 1/1 0/0 0/0 .rodata cResetFilterTable */
-SECTION_RODATA static u8 const cResetFilterTable[16] = {
- 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+static s16 const cResetFilterTable[8] = {
+ 0x7FFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
};
-COMPILER_STRIP_GATE(0x8039B9C0, &cResetFilterTable);
/* 802AA33C-802AA430 2A4C7C 00F4+00 1/1 0/0 0/0 .text setFilterOff__10Z2SoundMgrFP8JAISound */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void Z2SoundMgr::setFilterOff(JAISound* param_0) {
- nofralloc
-#include "asm/Z2AudioLib/Z2SoundMgr/setFilterOff__10Z2SoundMgrFP8JAISound.s"
+void Z2SoundMgr::setFilterOff(JAISound* param_0) {
+ if (param_0 != NULL) {
+ JASTrack* track = param_0->getTrack();
+ for (u32 i = 0; i < 4; i++) {
+ JASTrack* child = track->getChild(i);
+ if (child != NULL && child->getStatus() == 1) {
+ child->setIIR(cResetFilterTable);
+ child->setFIR(cResetFilterTable);
+ for (u32 j = 0; j < 4; j++) {
+ JASTrack* child2 = child->getChild(j);
+ if (child2 != NULL && child2->getStatus() == 1) {
+ child2->setIIR(cResetFilterTable);
+ child2->setFIR(cResetFilterTable);
+ }
+ }
+ }
+ }
+ }
}
-#pragma pop
/* 802AA430-802AA528 2A4D70 00F8+00 0/0 1/1 0/0 .text resetFilterAll__10Z2SoundMgrFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void Z2SoundMgr::resetFilterAll() {
- nofralloc
-#include "asm/Z2AudioLib/Z2SoundMgr/resetFilterAll__10Z2SoundMgrFv.s"
+void Z2SoundMgr::resetFilterAll() {
+ int i = 1;
+ if (struct_80451342 != 0) {
+ i = 0;
+ }
+ for (; i < 9; i++) {
+ JAISeCategoryMgr* category = mSeMgr.getCategory(i);
+ int se_count = category->getMaxActiveSe();
+ if (se_count > 0) {
+ for (JSULink<JAISe>* link = category->getSeList()->getFirst();
+ link != NULL && se_count > 0 && !link->getObject()->isFarAway();
+ link = link->getNext(), se_count--)
+ {
+ setFilterOff(link->getObject());
+ }
+ } else {
+ for (JSULink<JAISe>* link = category->getSeList()->getFirst();
+ link != NULL && !link->getObject()->isFarAway();
+ link = link->getNext())
+ {
+ setFilterOff(link->getObject());
+ }
+ }
+ }
}
-#pragma pop
/* 802AA528-802AA67C 2A4E68 0154+00 2/2 0/0 0/0 .text mixOut__10Z2SoundMgrFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void Z2SoundMgr::mixOut() {
- nofralloc
-#include "asm/Z2AudioLib/Z2SoundMgr/mixOut__10Z2SoundMgrFv.s"
+void Z2SoundMgr::mixOut() {
+ if (struct_80451340 != 0 && Z2GetSceneMgr()->isInDarkness()) {
+ int i = 1;
+ if (struct_80451342 != 0) {
+ i = 0;
+ }
+ for (; i < 9; i++) {
+ JAISeCategoryMgr* category = mSeMgr.getCategory(i);
+ int se_count = category->getMaxActiveSe();
+ if (se_count > 0) {
+ for (JSULink<JAISe>* link = category->getSeList()->getFirst();
+ link != NULL && se_count > 0 && !link->getObject()->isFarAway();
+ link = link->getNext(), se_count--)
+ {
+ setIIR(link->getObject(), JASCalc::CUTOFF_TO_IIR_TABLE[struct_80451341]);
+ }
+ } else {
+ for (JSULink<JAISe>* link = category->getSeList()->getFirst();
+ link != NULL && !link->getObject()->isFarAway();
+ link = link->getNext())
+ {
+ setIIR(link->getObject(), JASCalc::CUTOFF_TO_IIR_TABLE[struct_80451341]);
+ }
+ }
+ }
+ }
+ mSeMgr.mixOut();
+ mSeqMgr.mixOut();
+ mStreamMgr.mixOut();
}
-#pragma pop
/* 802AA67C-802AA6B0 2A4FBC 0034+00 0/0 1/1 0/0 .text framework__10Z2SoundMgrFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void Z2SoundMgr::framework() {
- nofralloc
-#include "asm/Z2AudioLib/Z2SoundMgr/framework__10Z2SoundMgrFv.s"
+void Z2SoundMgr::framework() {
+ calc();
+ mixOut();
}
-#pragma pop
/* 802AA6B0-802AA7DC 2A4FF0 012C+00 0/0 1/1 0/0 .text pauseAllGameSound__10Z2SoundMgrFb
*/
+#ifdef NONMATCHING
+// matches with literals
+void Z2SoundMgr::pauseAllGameSound(bool i_pause) {
+ mSeMgr.getCategory(0)->pause(i_pause);
+ mSeMgr.getCategory(1)->pause(i_pause);
+ mSeMgr.getCategory(2)->pause(i_pause);
+ mSeMgr.getCategory(3)->pause(i_pause);
+ mSeMgr.getCategory(4)->pause(i_pause);
+ mSeMgr.getCategory(5)->pause(i_pause);
+ mSeMgr.getCategory(6)->pause(i_pause);
+ mSeMgr.getCategory(7)->pause(i_pause);
+ mSeMgr.getCategory(8)->pause(i_pause);
+ mSeMgr.getCategory(9)->pause(i_pause);
+ mSeqMgr.pause(i_pause);
+ mStreamMgr.pause(i_pause);
+ if (i_pause) {
+ Z2GetSeMgr()->seMoveVolumeAll(0.0f, 10);
+ mSeqMgr.getParams()->moveVolume(0.0f, 10);
+ mStreamMgr.getParams()->moveVolume(0.0f, 10);
+ }
+ else {
+ Z2GetSeMgr()->seMoveVolumeAll(1.0f, 10);
+ mSeqMgr.getParams()->moveVolume(1.0f, 10);
+ mStreamMgr.getParams()->moveVolume(1.0f, 10);
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -297,36 +531,34 @@ asm void Z2SoundMgr::pauseAllGameSound(bool param_0) {
#include "asm/Z2AudioLib/Z2SoundMgr/pauseAllGameSound__10Z2SoundMgrFb.s"
}
#pragma pop
+#endif
/* 802AA7DC-802AA84C 2A511C 0070+00 0/0 1/1 0/0 .text stopSoundID__10Z2SoundMgrF10JAISoundID */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void Z2SoundMgr::stopSoundID(JAISoundID param_0) {
- nofralloc
-#include "asm/Z2AudioLib/Z2SoundMgr/stopSoundID__10Z2SoundMgrF10JAISoundID.s"
+void Z2SoundMgr::stopSoundID(JAISoundID i_soundID) {
+ mSeMgr.stopSoundID(i_soundID);
+ mSeqMgr.stopSoundID(i_soundID);
+ mStreamMgr.stopSoundID(i_soundID);
}
-#pragma pop
/* 802AA84C-802AA8C8 2A518C 007C+00 0/0 1/1 0/0 .text stopSync__10Z2SoundMgrFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void Z2SoundMgr::stopSync() {
- nofralloc
-#include "asm/Z2AudioLib/Z2SoundMgr/stopSync__10Z2SoundMgrFv.s"
+void Z2SoundMgr::stopSync() {
+ stop();
+ while (mSeMgr.getNumActiveSe() > 0 || mSeqMgr.getNumActiveSeqs() > 0) {
+ calc();
+ if (mSeMgr.getNumActiveSe() == 0 && mSeqMgr.getNumActiveSeqs() == 0) {
+ break;
+ }
+ mixOut();
+ JASDriver::waitSubFrame();
+ }
}
-#pragma pop
/* 802AA8C8-802AA908 2A5208 0040+00 1/1 0/0 0/0 .text stop__10Z2SoundMgrFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void Z2SoundMgr::stop() {
- nofralloc
-#include "asm/Z2AudioLib/Z2SoundMgr/stop__10Z2SoundMgrFv.s"
+void Z2SoundMgr::stop() {
+ mSeMgr.stop();
+ mSeqMgr.stop();
+ mStreamMgr.stop();
}
-#pragma pop
/* ############################################################################################## */
/* 80455850-80455858 003E50 0004+04 1/1 0/0 0/0 .sdata2 @4313 */
@@ -337,6 +569,14 @@ SECTION_SDATA2 static f32 lit_4313[1 + 1 /* padding */] = {
};
/* 802AA908-802AA9E8 2A5248 00E0+00 0/0 1/1 0/0 .text initParams__10Z2SoundMgrFv */
+#ifdef NONMATCHING
+// matches with literals
+void Z2SoundMgr::initParams() {
+ mSeMgr.initParams();
+ mSeqMgr.getParams()->init();
+ mStreamMgr.getParams()->init();
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -345,9 +585,23 @@ asm void Z2SoundMgr::initParams() {
#include "asm/Z2AudioLib/Z2SoundMgr/initParams__10Z2SoundMgrFv.s"
}
#pragma pop
+#endif
/* 802AA9E8-802AAAC4 2A5328 00DC+00 0/0 1/1 0/0 .text
* multiVolumeSoundID__10Z2SoundMgrF10JAISoundIDf */
+#ifdef NONMATCHING
+void Z2SoundMgr::multiVolumeSoundID(JAISoundID i_soundID, f32 i_multi) {
+ if (!i_soundID.isAnonymous() && Z2GetSoundInfo()->getSoundType(i_soundID) == 0) {
+ JSUList<JAISe>* list =
+ mSeMgr.getCategory(Z2GetSoundInfo()->getCategory(i_soundID))->getSeList();
+ for (JSULink<JAISe>* link = list->getFirst(); link != NULL; link = link->getNext()) {
+ if (link->getObject()->getID() == i_soundID) {
+ link->getObject()->getAuxiliary().mParams.mVolume *= i_multi;
+ }
+ }
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -356,16 +610,35 @@ asm void Z2SoundMgr::multiVolumeSoundID(JAISoundID param_0, f32 param_1) {
#include "asm/Z2AudioLib/Z2SoundMgr/multiVolumeSoundID__10Z2SoundMgrF10JAISoundIDf.s"
}
#pragma pop
+#endif
/* 802AAAC4-802AAB94 2A5404 00D0+00 1/1 0/0 0/0 .text isPlayingSoundID__10Z2SoundMgrF10JAISoundID
*/
+#ifdef NONMATCHING
+bool Z2SoundMgr::isPlayingSoundID(JAISoundID i_soundID) {
+ if (i_soundID.isAnonymous()) {
+ return 0;
+ }
+ if (Z2GetSoundInfo()->getSoundType(i_soundID) == 0) {
+ JSUList<JAISe>* list =
+ mSeMgr.getCategory(Z2GetSoundInfo()->getCategory(i_soundID))->getSeList();
+ for (JSULink<JAISe>* link = list->getFirst(); link != NULL; link = link->getNext()) {
+ if (link->getObject()->getID() == i_soundID) {
+ return true;
+ }
+ }
+ }
+ return false;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void Z2SoundMgr::isPlayingSoundID(JAISoundID param_0) {
+asm bool Z2SoundMgr::isPlayingSoundID(JAISoundID param_0) {
nofralloc
#include "asm/Z2AudioLib/Z2SoundMgr/isPlayingSoundID__10Z2SoundMgrF10JAISoundID.s"
}
#pragma pop
+#endif
/* 8039B9D0-8039B9D0 028030 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */