diff --git a/include/JSystem/JAudio2/JAISeMgr.h b/include/JSystem/JAudio2/JAISeMgr.h index a2f1fff791..50f81fb1b4 100644 --- a/include/JSystem/JAudio2/JAISeMgr.h +++ b/include/JSystem/JAudio2/JAISeMgr.h @@ -13,6 +13,7 @@ struct JASSoundParams; */ struct JASNonCopyable { JASNonCopyable() {} + ~JASNonCopyable() {} /* 0x0 */ int field_0x0; }; // Size: 0x4 diff --git a/include/JSystem/JAudio2/JAISound.h b/include/JSystem/JAudio2/JAISound.h index 50c45562b9..3e1e36b9ad 100644 --- a/include/JSystem/JAudio2/JAISound.h +++ b/include/JSystem/JAudio2/JAISound.h @@ -349,7 +349,7 @@ public: return audible_ != NULL; } - JAISoundFader& getFader() { return fader_; } + JAISoundFader* getFader() const { return (JAISoundFader*)&fader_; } void fadeIn(u32 maxSteps) { fader_.fadeInFromOut(maxSteps); } void fadeOut(u32 maxSteps) { fader_.fadeOut(maxSteps); } diff --git a/include/Z2AudioLib/Z2Param.h b/include/Z2AudioLib/Z2Param.h index 541bbb9556..aceb09ce97 100644 --- a/include/Z2AudioLib/Z2Param.h +++ b/include/Z2AudioLib/Z2Param.h @@ -47,6 +47,10 @@ struct Z2Param { static u8 BGM_CROSS_FADEOUT_TIME; static u8 BATTLE_BGM_WAIT_TIME; + static f32 ENEMY_NEARBY_DIST; + static f32 BATTLE_FADEIN_DIST; + static f32 BATTLE_FADEOUT_DIST; + static u8 FOUND_TRACK_FI_TIME; static u8 FOUND_TRACK_FO_TIME; static u8 CLOSE_BATTLE_TRACK_FI_TIME; @@ -60,6 +64,10 @@ struct Z2Param { static u8 DARK_SE_FILTER_ON; static u8 DARK_SE_LOW_PASS_FILTER_SETTING; static u8 SYSTEM_SE_USE_DARK_SE_SETTING; + + static f32 AUDIBLE_DELTA_RANGE_VOLUME; + static f32 AUDIBLE_DELTA_RANGE_PAN; + static f32 AUDIBLE_DELTA_RANGE_DOLBY; }; extern u8 data_8045086C; diff --git a/include/Z2AudioLib/Z2SeqMgr.h b/include/Z2AudioLib/Z2SeqMgr.h index eadb0e0675..76c2674697 100644 --- a/include/Z2AudioLib/Z2SeqMgr.h +++ b/include/Z2AudioLib/Z2SeqMgr.h @@ -45,7 +45,7 @@ struct Z2SoundFader { fadeIn(fadeTime); } - u32 getCount() { + u32 getCount() const { return transition_.remainingSteps_; } @@ -53,12 +53,8 @@ struct Z2SoundFader { return intensity_; } - f32 getDest() { - if (getCount() != 0) { - return transition_.targetValue_; - } else { - return intensity_; - } + f32 getDest() const { + return getCount() != 0 ? transition_.targetValue_ : getIntensity(); } void calc() { diff --git a/include/Z2AudioLib/Z2SoundMgr.h b/include/Z2AudioLib/Z2SoundMgr.h index e8fd244eca..cd6341b2cb 100644 --- a/include/Z2AudioLib/Z2SoundMgr.h +++ b/include/Z2AudioLib/Z2SoundMgr.h @@ -9,6 +9,12 @@ u16 seqCallback(JASTrack* track, u16 command); class Z2SoundMgr : public JASGlobalInstance { public: +#if PLATFORM_GCN + static const int MAX_CATEGORIES = 9; +#else + static const int MAX_CATEGORIES = 10; +#endif + Z2SoundMgr(); void calc(); void setIIR(JAISound* sound, const s16* iir); diff --git a/include/Z2AudioLib/Z2SoundObjMgr.h b/include/Z2AudioLib/Z2SoundObjMgr.h index da709d2e34..a353ff1bcc 100644 --- a/include/Z2AudioLib/Z2SoundObjMgr.h +++ b/include/Z2AudioLib/Z2SoundObjMgr.h @@ -96,7 +96,7 @@ public: u8 isTwilightBattle(); u8 getEnemyNumNear() const { return enemuNumNear_; } - u8 getEnemyNumVeryFar() { return enemuNumVeryFar_; } + u8 getEnemyNumVeryFar() const { return enemuNumVeryFar_; } bool isForceBattle() { return forceBattle_; } JSUList* getEnemyList() { return this; } diff --git a/include/Z2AudioLib/Z2StatusMgr.h b/include/Z2AudioLib/Z2StatusMgr.h index 6532801576..615374f2be 100644 --- a/include/Z2AudioLib/Z2StatusMgr.h +++ b/include/Z2AudioLib/Z2StatusMgr.h @@ -37,7 +37,7 @@ struct Z2StatusMgr : public JASGlobalInstance { /* 0x01 */ u8 mMinute; /* 0x02 */ u8 mWeekday; /* 0x03 */ u8 field_0x03; - /* 0x04 */ s16 mTime; + /* 0x04 */ u16 mTime; /* 0x08 */ void* mEventBit; /* 0x0C */ u8 mPauseFlag; /* 0x10 */ u32 mCameraMapInfo; diff --git a/src/Z2AudioLib/Z2AudioArcLoader.cpp b/src/Z2AudioLib/Z2AudioArcLoader.cpp index d16a9d82ab..93343014c5 100644 --- a/src/Z2AudioLib/Z2AudioArcLoader.cpp +++ b/src/Z2AudioLib/Z2AudioArcLoader.cpp @@ -24,53 +24,57 @@ bool Z2AudioArcLoader::readCommandMore(u32 command) { } void Z2AudioArcLoader::readBFCA(const void* addr) { - JUT_ASSERT(76, addr); + { + JUT_ASSERT(76, addr); - JKRHeap* heap = JAUSectionHeap::getInstance()->getHeap(); - JUT_ASSERT(78, heap); - JUT_ASSERT(79, Z2GetFxLineMgr()); + JKRHeap* heap = JAUSectionHeap::getInstance()->getHeap(); + JUT_ASSERT(78, heap); + JUT_ASSERT(79, Z2GetFxLineMgr()); - JKRArchive* archive = JKRMountArchive((void*)addr, JKRGetCurrentHeap(), JKRArchive::MOUNT_DIRECTION_TAIL); - Z2GetFxLineMgr()->initDataArc(archive, heap); - JKRUnmountArchive(archive); + JKRArchive* archive = JKRMountArchive((void*)addr, JKRGetCurrentHeap(), JKRArchive::MOUNT_DIRECTION_TAIL); + Z2GetFxLineMgr()->initDataArc(archive, heap); + JKRUnmountArchive(archive); + } } void Z2AudioArcLoader::readBSTN(const void* addr, u32 param_1) { #if VERSION == VERSION_SHIELD_DEBUG - JAUSectionHeap* sectionHeap = JASGlobalInstance::getInstance(); - JUT_ASSERT(97, sectionHeap); + { + JAUSectionHeap* sectionHeap = JASGlobalInstance::getInstance(); + JUT_ASSERT(97, sectionHeap); - JUT_ASSERT(99, sectionHeap->isOpen()); - JUT_ASSERT(100, sectionHeap->isBuilding()); - JUT_ASSERT(101, addr); + JUT_ASSERT(99, sectionHeap->isOpen()); + JUT_ASSERT(100, sectionHeap->isBuilding()); + JUT_ASSERT(101, addr); - JUT_ASSERT(103, sectionHeap->getSectionHeapData().soundNameTable == 0); + JUT_ASSERT(103, sectionHeap->getSectionHeapData().soundNameTable == 0); - JKRHeap* heap = JKRHeap::getCurrentHeap(); - JKRHeap* gameHeap = (JKRHeap*)mDoExt_getGameHeap(); - JKRSetCurrentHeap(gameHeap); + JKRHeap* heap = JKRHeap::getCurrentHeap(); + JKRHeap* gameHeap = (JKRHeap*)mDoExt_getGameHeap(); + JKRSetCurrentHeap(gameHeap); - u8* bstnDst = (u8*)addr; - if (param_1 != 0) { - bstnDst = new (gameHeap, 4) u8[param_1]; - if (bstnDst != NULL) { - memcpy(bstnDst, addr, param_1); + u8* bstnDst = (u8*)addr; + if (param_1 != 0) { + bstnDst = new (gameHeap, 4) u8[param_1]; + if (bstnDst != NULL) { + memcpy(bstnDst, addr, param_1); + } + + JUT_ASSERT(122, bstnDst); } - JUT_ASSERT(122, bstnDst); + JAUSoundNameTable* soundNameTable = new (gameHeap, 0) JAUSoundNameTable(true); + JUT_ASSERT(125, soundNameTable); + + soundNameTable->init(bstnDst); + + JAUSectionHeap::TSectionHeapData& sectionHeapData = (JAUSectionHeap::TSectionHeapData&)sectionHeap->getSectionHeapData(); + sectionHeapData.soundNameTable = soundNameTable; + + JAUSection::TSectionData& sectionData = (JAUSection::TSectionData&)sectionHeap->getSectionData(); + sectionData.mBstnDst = bstnDst; + + JKRSetCurrentHeap(heap); } - - JAUSoundNameTable* soundNameTable = new (gameHeap, 0) JAUSoundNameTable(true); - JUT_ASSERT(125, soundNameTable); - - soundNameTable->init(bstnDst); - - JAUSectionHeap::TSectionHeapData& sectionHeapData = (JAUSectionHeap::TSectionHeapData&)sectionHeap->getSectionHeapData(); - sectionHeapData.soundNameTable = soundNameTable; - - JAUSection::TSectionData& sectionData = (JAUSection::TSectionData&)sectionHeap->getSectionData(); - sectionData.mBstnDst = bstnDst; - - JKRSetCurrentHeap(heap); #endif } diff --git a/src/Z2AudioLib/Z2Calc.cpp b/src/Z2AudioLib/Z2Calc.cpp index 3f0ab802e0..a55a14c753 100644 --- a/src/Z2AudioLib/Z2Calc.cpp +++ b/src/Z2AudioLib/Z2Calc.cpp @@ -46,7 +46,7 @@ f32 Z2Calc::getRandom(f32 magnitude, f32 exponent, f32 bias) { f32 negBias = (1.0f - bias) * -2.0f; magnitude *= Z2Calc::getRandom_0_1() < bias ? posBias : negBias; - f32 exprnd = pow(Z2Calc::getRandom_0_1(), exponent); + f32 exprnd = powf(Z2Calc::getRandom_0_1(), exponent); return exprnd * magnitude; } diff --git a/src/Z2AudioLib/Z2Param.cpp b/src/Z2AudioLib/Z2Param.cpp index 064a1e0521..d081c73b07 100644 --- a/src/Z2AudioLib/Z2Param.cpp +++ b/src/Z2AudioLib/Z2Param.cpp @@ -80,7 +80,13 @@ u8 Z2Param::BGM_CROSS_FADEIN_TIME = 60; u8 Z2Param::BGM_CROSS_FADEOUT_TIME = 60; u8 Z2Param::BATTLE_BGM_WAIT_TIME = 30; +#if DEBUG +f32 Z2Param::ENEMY_NEARBY_DIST = 700.0f; +f32 Z2Param::BATTLE_FADEIN_DIST = 1100.0f; + +f32 Z2Param::BATTLE_FADEOUT_DIST = 1500.0f; +#endif u8 Z2Param::FOUND_TRACK_FI_TIME = 20; u8 Z2Param::FOUND_TRACK_FO_TIME = 30; @@ -98,7 +104,13 @@ u8 Z2Param::ENDING_BLOW_VOL_LOWER_RECOVER_TIME = 30; u8 Z2Param::ENDING_BLOW_MIN_FINISH_TIME = 20; u8 data_8045086C = 1; +#if DEBUG +f32 Z2Param::AUDIBLE_DELTA_RANGE_VOLUME = 0.25f; +f32 Z2Param::AUDIBLE_DELTA_RANGE_PAN = 0.15f; + +f32 Z2Param::AUDIBLE_DELTA_RANGE_DOLBY = 0.15f; +#endif f32 Z2Param::MIN_DISTANCE_VOLUME; f32 Z2Param::ENEMY_LASTHIT_MUTE_VOLUME; diff --git a/src/Z2AudioLib/Z2SeMgr.cpp b/src/Z2AudioLib/Z2SeMgr.cpp index c53af03ece..03cee56fb9 100644 --- a/src/Z2AudioLib/Z2SeMgr.cpp +++ b/src/Z2AudioLib/Z2SeMgr.cpp @@ -77,7 +77,7 @@ void Z2SeMgr::modHeightAtCamera(const Vec** param_0) { for (i = 0; i < 8; i++) { if (mModY[i] == NULL) { idx = i; - mModY[i] = *param_0; + mModY[idx] = *param_0; break; } } @@ -752,71 +752,77 @@ void Z2SeMgr::messageSePlay(u16 param_0, Vec* param_1, s8 param_2) { } void Z2SeMgr::talkInSe() { - if (Z2GetSceneMgr()->isInGame()) { - if (Z2GetStatusMgr()->getDemoStatus() == 13) { - seMoveVolumeAll(0.0f, 0); - } + if (!Z2GetSceneMgr()->isInGame()) { + return; + } - JAISeMgr* seMgr = Z2GetSoundMgr()->getSeMgr(); - seMgr->getCategory(0)->getParams()->moveVolume(Z2Param::VOL_SE_SYSTEM_TALKING, 2); - seMgr->getCategory(1)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_VOICE_TALKING, 2); - seMgr->getCategory(2)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_MOTION_TALKING, 2); - seMgr->getCategory(3)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_FOOTNOTE_TALKING, 2); - seMgr->getCategory(4)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_TALKING, 2); - seMgr->getCategory(5)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_TALKING, 2); - seMgr->getCategory(6)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_MOVE_TALKING, 2); - seMgr->getCategory(7)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_TALKING, 2); - seMgr->getCategory(8)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_TALKING, 2); + if (Z2GetStatusMgr()->getDemoStatus() == 13) { + seMoveVolumeAll(0.0f, 0); + } - if (Z2GetStatusMgr()->getDemoStatus() != 12) { - seMgr->getCategory(9)->getParams()->moveVolume(Z2Param::VOL_SE_ATMOSPHERE_TALKING, 2); - } + JAISeMgr* seMgr = Z2GetSoundMgr()->getSeMgr(); + seMgr->getCategory(0)->getParams()->moveVolume(Z2Param::VOL_SE_SYSTEM_TALKING, 2); + seMgr->getCategory(1)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_VOICE_TALKING, 2); + seMgr->getCategory(2)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_MOTION_TALKING, 2); + seMgr->getCategory(3)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_FOOTNOTE_TALKING, 2); + seMgr->getCategory(4)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_TALKING, 2); + seMgr->getCategory(5)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_TALKING, 2); + seMgr->getCategory(6)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_MOVE_TALKING, 2); + seMgr->getCategory(7)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_TALKING, 2); + seMgr->getCategory(8)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_TALKING, 2); + + if (Z2GetStatusMgr()->getDemoStatus() != 12) { + seMgr->getCategory(9)->getParams()->moveVolume(Z2Param::VOL_SE_ATMOSPHERE_TALKING, 2); } } void Z2SeMgr::talkOutSe() { - if (Z2GetSceneMgr()->isInGame()) { - if (Z2GetStatusMgr()->getDemoStatus() == 13) { - seMoveVolumeAll(0.0f, 0); - } + if (!Z2GetSceneMgr()->isInGame()) { + return; + } - JAISeMgr* seMgr = Z2GetSoundMgr()->getSeMgr(); - seMgr->getCategory(0)->getParams()->moveVolume(Z2Param::VOL_SE_SYSTEM_DEFAULT, 2); - seMgr->getCategory(1)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_VOICE_DEFAULT, 2); - seMgr->getCategory(2)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_MOTION_DEFAULT, 2); - seMgr->getCategory(3)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_FOOTNOTE_DEFAULT, 2); - seMgr->getCategory(4)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_DEFAULT, 2); - seMgr->getCategory(5)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_DEFAULT, 2); - seMgr->getCategory(6)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_MOVE_DEFAULT, 2); - seMgr->getCategory(7)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_DEFAULT, 2); - seMgr->getCategory(8)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_DEFAULT, 2); + if (Z2GetStatusMgr()->getDemoStatus() == 13) { + seMoveVolumeAll(0.0f, 0); + } - if (Z2GetStatusMgr()->getDemoStatus() != 12) { - seMgr->getCategory(9)->getParams()->moveVolume(Z2Param::VOL_SE_ATMOSPHERE_DEFAULT, 2); - } + JAISeMgr* seMgr = Z2GetSoundMgr()->getSeMgr(); + seMgr->getCategory(0)->getParams()->moveVolume(Z2Param::VOL_SE_SYSTEM_DEFAULT, 2); + seMgr->getCategory(1)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_VOICE_DEFAULT, 2); + seMgr->getCategory(2)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_MOTION_DEFAULT, 2); + seMgr->getCategory(3)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_FOOTNOTE_DEFAULT, 2); + seMgr->getCategory(4)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_DEFAULT, 2); + seMgr->getCategory(5)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_DEFAULT, 2); + seMgr->getCategory(6)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_MOVE_DEFAULT, 2); + seMgr->getCategory(7)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_DEFAULT, 2); + seMgr->getCategory(8)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_DEFAULT, 2); + + if (Z2GetStatusMgr()->getDemoStatus() != 12) { + seMgr->getCategory(9)->getParams()->moveVolume(Z2Param::VOL_SE_ATMOSPHERE_DEFAULT, 2); } } void Z2SeMgr::menuInSe() { - if (Z2GetSceneMgr()->isInGame()) { - if (Z2GetStatusMgr()->getDemoStatus() == 13) { - seMoveVolumeAll(0.0f, 0); - } + if (!Z2GetSceneMgr()->isInGame()) { + return; + } - JAISeMgr* seMgr = Z2GetSoundMgr()->getSeMgr(); - seMgr->getCategory(0)->getParams()->moveVolume(Z2Param::VOL_SE_SYSTEM_PAUSING, 2); - seMgr->getCategory(1)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_VOICE_PAUSING, 2); - seMgr->getCategory(2)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_MOTION_PAUSING, 2); - seMgr->getCategory(3)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_FOOTNOTE_PAUSING, 2); - seMgr->getCategory(4)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_PAUSING, 2); - seMgr->getCategory(5)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_PAUSING, 2); - seMgr->getCategory(6)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_MOVE_PAUSING, 2); - seMgr->getCategory(7)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_PAUSING, 2); - seMgr->getCategory(8)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_PAUSING, 2); + if (Z2GetStatusMgr()->getDemoStatus() == 13) { + seMoveVolumeAll(0.0f, 0); + } - if (Z2GetStatusMgr()->getDemoStatus() != 12) { - seMgr->getCategory(9)->getParams()->moveVolume(Z2Param::VOL_SE_ATMOSPHERE_PAUSING, 2); - } + JAISeMgr* seMgr = Z2GetSoundMgr()->getSeMgr(); + seMgr->getCategory(0)->getParams()->moveVolume(Z2Param::VOL_SE_SYSTEM_PAUSING, 2); + seMgr->getCategory(1)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_VOICE_PAUSING, 2); + seMgr->getCategory(2)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_MOTION_PAUSING, 2); + seMgr->getCategory(3)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_FOOTNOTE_PAUSING, 2); + seMgr->getCategory(4)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_PAUSING, 2); + seMgr->getCategory(5)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_PAUSING, 2); + seMgr->getCategory(6)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_MOVE_PAUSING, 2); + seMgr->getCategory(7)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_PAUSING, 2); + seMgr->getCategory(8)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_PAUSING, 2); + + if (Z2GetStatusMgr()->getDemoStatus() != 12) { + seMgr->getCategory(9)->getParams()->moveVolume(Z2Param::VOL_SE_ATMOSPHERE_PAUSING, 2); } } @@ -1231,25 +1237,9 @@ void Z2MultiSeMgr::resetMultiSePos() { } f32 Z2MultiSeMgr::getPanPower() { - f32 pow_r = getMaxPowR(); - f32 pow_l = getMaxPowL(); - if (pow_l + pow_r > 0.0f) { - f32 pow_r = getMaxPowR(); - f32 pow_l = getMaxPowL(); - return getMaxPowR() / (pow_l + pow_r); - } else { - return 0.5f; - } + return getMaxPowL() + getMaxPowR() > 0.0f ? getMaxPowR() / (getMaxPowL() + getMaxPowR()) : 0.5f; } f32 Z2MultiSeMgr::getDolbyPower() { - f32 pow_b = getMaxPowB(); - f32 pow_f = getMaxPowF(); - if (pow_f + pow_b > 0.0f) { - f32 pow_b = getMaxPowB(); - f32 pow_f = getMaxPowF(); - return getMaxPowB() / (pow_f + pow_b); - } else { - return 0.5f; - } + return getMaxPowF() + getMaxPowB() > 0.0f ? getMaxPowB() / (getMaxPowF() + getMaxPowB()) : 0.5f; } diff --git a/src/Z2AudioLib/Z2SeqMgr.cpp b/src/Z2AudioLib/Z2SeqMgr.cpp index cd90349a97..a9cad68b5e 100644 --- a/src/Z2AudioLib/Z2SeqMgr.cpp +++ b/src/Z2AudioLib/Z2SeqMgr.cpp @@ -143,15 +143,16 @@ void Z2SeqMgr::bgmStart(u32 bgmID, u32 fadeTime, s32 param_2) { mMainBgmMaster.forceIn(); break; case Z2BGM_GAME_OVER: - if (getMainBgmID() != bgmID) { - Z2GetSceneMgr()->setInGame(false); - Z2GetSceneMgr()->setSceneExist(false); - setBattleBgmOff(true); - Z2GetSoundMgr()->getSeqMgr()->stop(0); - Z2GetSoundMgr()->getStreamMgr()->stop(0); - Z2GetSoundMgr()->startSound(bgmID, &mMainBgmHandle, NULL); - mBgmStatus = 0xff; + if (getMainBgmID() == bgmID) { + return; } + Z2GetSceneMgr()->setInGame(false); + Z2GetSceneMgr()->setSceneExist(false); + setBattleBgmOff(true); + Z2GetSoundMgr()->getSeqMgr()->stop(0); + Z2GetSoundMgr()->getStreamMgr()->stop(0); + Z2GetSoundMgr()->startSound(bgmID, &mMainBgmHandle, NULL); + mBgmStatus = 0xff; return; case Z2BGM_LAKE: if (Z2GetLink() != NULL && Z2GetLink()->getCurrentPos() != NULL && @@ -245,10 +246,6 @@ void Z2SeqMgr::bgmStop(u32 fadeTime, s32 param_1) { } void Z2SeqMgr::subBgmStart(u32 bgmID) { - #if DEBUG - const char** spotName = sSpotName; - #endif - if (bgmID == -1) { return; } @@ -350,7 +347,7 @@ void Z2SeqMgr::subBgmStart(u32 bgmID) { fadeoutTime = 1; break; case Z2BGM_COWBOY_GAME: - mAllBgmMaster.forceIn(); + bgmAllUnMute(0); fadeinTime = 0; fadeoutTime = 1; break; @@ -391,7 +388,11 @@ void Z2SeqMgr::subBgmStart(u32 bgmID) { } if (bgmID == getSubBgmID()) { - if (bgmID == Z2BGM_SUMO || bgmID == Z2BGM_COWBOY_GAME) { + if (bgmID == Z2BGM_SUMO +#if PLATFORM_GCN + || bgmID == Z2BGM_COWBOY_GAME +#endif + ) { mSubBgmHandle->stop(0); mSubBgmHandle.releaseSound(); } else { @@ -416,7 +417,7 @@ void Z2SeqMgr::subBgmStart(u32 bgmID) { bgmStreamStop(0); // fallthrough case Z2BGM_TN_MBOSS_LV9: - mStreamBgmMaster.forceIn(); + mStreamBgmMaster.fadeIn(0); // fallthrough case Z2BGM_RODEO: changeSubBgmStatus(1); @@ -437,9 +438,9 @@ void Z2SeqMgr::subBgmStart(u32 bgmID) { #if DEBUG if (bgmID == Z2BGM_HIDDEN_VIL_D1) { - OS_REPORT("[Z2SeqMgr::subBgmStart] HIDDEN_VIL_D01 start(%d)\n", mMainBgmHandle.isSoundAttached()); - OS_REPORT(" mainBgmMasterVol::%.2f \n", mMainBgmMaster.get()); + OS_REPORT("[Z2SeqMgr::subBgmStart] HIDDEN_VIL_D01 start(%d)\n", mSubBgmHandle.isSoundAttached()); OS_REPORT(" subBgmMasterVol::%.2f \n", mSubBgmMaster.get()); + OS_REPORT(" mainBgmMasterVol::%.2f \n", mMainBgmMaster.get()); OS_REPORT(" allBgmMasterVol::%.2f \n", mAllBgmMaster.get()); OS_REPORT(" bgmPauseVol::%.2f \n", mBgmPause.get()); OS_REPORT(" fanfareMuteVol::%.2f \n", mFanfareMute.get()); @@ -583,7 +584,13 @@ void Z2SeqMgr::subBgmStopInner() { field_0xb8 = -1; } +static void dummy1() { + OS_REPORT("[Z2SeqMgr::bgmStreamPrepare] %08x\n"); + OS_REPORT("[Z2SeqMgr::bgmStreamPlay] \n"); +} + void Z2SeqMgr::bgmStreamPrepare(u32 bgmID) { + u32 bgmID2 = bgmID; if (mStreamBgmHandle) { bgmStreamStop(0); } @@ -592,18 +599,21 @@ void Z2SeqMgr::bgmStreamPrepare(u32 bgmID) { mStreamBgmHandle->lockWhenPrepared(); switch (bgmID) { +#if PLATFORM_GCN case 0x2000010: mAllBgmMaster.forceIn(); // fallthrough +#endif case 0x200000f: return; case 0x2000014: Z2GetSceneMgr()->setSceneExist(true); return; case 0x2000023: - if (mMainBgmHandle) { - mMainBgmHandle->stop(Z2Param::BGM_CROSS_FADEOUT_TIME); + if (!mMainBgmHandle) { + return; } + mMainBgmHandle->stop(Z2Param::BGM_CROSS_FADEOUT_TIME); return; case 0x2000038: if (mMainBgmHandle) { @@ -613,7 +623,7 @@ void Z2SeqMgr::bgmStreamPrepare(u32 bgmID) { case 0x2000003: case 0x2000047: case 0x200005f: - mStreamBgmMaster.forceOut(); + mStreamBgmMaster.fadeOut(0); return; case 0x200007c: mStreamBgmMaster.fadeOut(45); @@ -670,453 +680,450 @@ void Z2SeqMgr::bgmStreamStop(u32 fadeTime) { } void Z2SeqMgr::changeBgmStatus(s32 status) { - if (!mMainBgmHandle) { - return; - } + if (mMainBgmHandle) { + u32 moveTime = 0; + bool mute; - u32 moveTime = 0; - bool mute; + #if PLATFORM_SHIELD + f32 volume1 = 1.0f; + f32 volume2 = 1.0f; + f32 volume3 = 1.0f; + f32 volume4 = 1.0f; + #else + f32 volume1, volume2, volume3, volume4; + #endif - #if PLATFORM_SHIELD - f32 volume1 = 1.0f; - f32 volume2 = 1.0f; - f32 volume3 = 1.0f; - f32 volume4 = 1.0f; - #else - f32 volume1, volume2, volume3, volume4; - #endif + switch (getMainBgmID()) { + case Z2BGM_TOAL_VILLEGE: + if (status == mBgmStatus) { + return; + } - switch (getMainBgmID()) { - case Z2BGM_TOAL_VILLEGE: - if (status == mBgmStatus) { - return; - } + if (mBgmStatus != 0xff) { + moveTime = 60; + } - if (mBgmStatus != 0xff) { - moveTime = 60; - } + if (status == 1) { + volume1 = 0.65f; + volume2 = 0.0f; + volume3 = 1.0f; + moveTime = 30; + } else { + volume1 = 1.0f; + volume2 = 1.0f; + volume3 = 0.0f; + } - if (status == 1) { - volume1 = 0.65f; - volume2 = 0.0f; - volume3 = 1.0f; - moveTime = 30; - } else { - volume1 = 1.0f; - volume2 = 1.0f; - volume3 = 0.0f; - } - - setChildTrackVolume(&mMainBgmHandle, 0, volume1, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 1, volume1, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 2, volume1, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 3, volume1, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 4, volume1, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 5, volume1, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 6, volume1, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 7, volume1, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 8, volume2, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 9, volume3, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 10, volume3, moveTime, -1.0f, -1.0f); - break; - case Z2BGM_HORSE_BATTLE: - setChildTrackVolume(&mMainBgmHandle, 11, 0.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 12, 0.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 13, 0.0f, moveTime, -1.0f, -1.0f); - break; - case Z2BGM_DUNGEON_FOREST: - mute = false; - switch (status) { - case 4: - case 0xc: - muteSceneBgm(Z2Param::SCENE_CHANGE_BGM_FADEOUT_TIME, 0.0f); - // fallthrough - case 7: - mute = true; + setChildTrackVolume(&mMainBgmHandle, 0, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 1, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 2, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 3, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 4, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 5, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 6, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 7, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 8, volume2, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 9, volume3, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 10, volume3, moveTime, -1.0f, -1.0f); break; - case 2: - Z2GetSoundObjMgr()->setForceBattleArea(true, 1500, 5000, 10000); + case Z2BGM_HORSE_BATTLE: + setChildTrackVolume(&mMainBgmHandle, 11, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 12, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 13, 0.0f, moveTime, -1.0f, -1.0f); break; - } + case Z2BGM_DUNGEON_FOREST: + mute = false; + switch (status) { + case 4: + case 0xc: + muteSceneBgm(Z2Param::SCENE_CHANGE_BGM_FADEOUT_TIME, 0.0f); + // fallthrough + case 7: + mute = true; + break; + case 2: + Z2GetSoundObjMgr()->setForceBattleArea(true, 1500, 5000, 10000); + break; + } - if (!mute) { - unMuteSceneBgm(Z2Param::SCENE_CHANGE_BGM_FADEOUT_TIME); - } - break; - case Z2BGM_DUNGEON_LV2: - switch (status) { - case 0xe: - case 0x10: - case 0x11: - subBgmStart(Z2BGM_DEATH_MOUNTAIN02); - return; - default: - if (getSubBgmID() == Z2BGM_DEATH_MOUNTAIN02) { - subBgmStop(); + if (!mute) { + unMuteSceneBgm(Z2Param::SCENE_CHANGE_BGM_FADEOUT_TIME); + } + break; + case Z2BGM_DUNGEON_LV2: + switch (status) { + case 0xe: + case 0x10: + case 0x11: + subBgmStart(Z2BGM_DEATH_MOUNTAIN02); + break; + default: + if (getSubBgmID() == Z2BGM_DEATH_MOUNTAIN02) { + subBgmStop(); + } } return; - } - break; - case Z2BGM_DUNGEON_LV5: - if (mBgmStatus != 0xff) { - moveTime = 45; - } + case Z2BGM_DUNGEON_LV5: + if (mBgmStatus != 0xff) { + moveTime = 45; + } - if (status == 2 || status == 1) { - volume1 = 0.0f; - volume2 = 1.0f; - } else { - volume1 = 1.0f; - volume2 = 0.0f; - } + if (status == 2 || status == 1) { + volume1 = 0.0f; + volume2 = 1.0f; + } else { + volume1 = 1.0f; + volume2 = 0.0f; + } - setChildTrackVolume(&mMainBgmHandle, 0, volume1, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 1, volume1, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 2, volume1, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 3, volume1, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 4, volume1, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 8, volume2, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 9, volume2, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 10, volume2, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 11, volume2, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 12, volume2, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 13, volume2, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 0, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 1, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 2, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 3, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 4, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 8, volume2, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 9, volume2, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 10, volume2, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 11, volume2, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 12, volume2, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 13, volume2, moveTime, -1.0f, -1.0f); - if (status == 4) { - muteSceneBgm(60, 0.29f); - } else { - unMuteSceneBgm(60); - } - break; - case Z2BGM_CASTLE_TOWN: - if (mBgmStatus != 0xff) { - moveTime = 45; - } - - switch (status) { - case 0: - case 1: - case 5: - setChildTrackVolume(&mMainBgmHandle, 0, 1.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 1, 1.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 2, 1.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 3, 1.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 4, 1.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 5, 0.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 6, 0.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 7, 0.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 8, 0.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 9, 0.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 10, 0.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 11, 0.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 12, 0.0f, moveTime, -1.0f, -1.0f); + if (status == 4) { + muteSceneBgm(60, 0.29f); + } else { + unMuteSceneBgm(60); + } break; - case 2: - setChildTrackVolume(&mMainBgmHandle, 0, 0.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 1, 0.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 2, 1.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 3, 1.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 4, 1.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 5, 1.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 6, 1.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 7, 0.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 8, 0.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 9, 0.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 10, 0.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 11, 0.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 12, 0.0f, moveTime, -1.0f, -1.0f); - break; - case 3: - setChildTrackVolume(&mMainBgmHandle, 0, 1.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 1, 1.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 2, 0.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 3, 0.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 4, 1.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 5, 0.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 6, 0.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 7, 0.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 8, 0.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 9, 0.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 10, 1.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 11, 1.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 12, 1.0f, moveTime, -1.0f, -1.0f); - break; - case 4: - setChildTrackVolume(&mMainBgmHandle, 0, 0.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 1, 0.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 2, 0.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 3, 1.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 4, 0.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 5, 0.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 6, 0.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 7, 1.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 8, 1.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 9, 1.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 10, 0.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 11, 0.0f, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 12, 0.0f, moveTime, -1.0f, -1.0f); - break; - } + case Z2BGM_CASTLE_TOWN: + if (mBgmStatus != 0xff) { + moveTime = 45; + } - if (status == 5) { - muteSceneBgm(moveTime, 0.35f); - mFlags.mHeightVolMod = false; - } else { - unMuteSceneBgm(moveTime); - if (status < 2) { + switch (status) { + case 0: + case 1: + case 5: + setChildTrackVolume(&mMainBgmHandle, 0, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 1, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 2, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 3, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 4, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 5, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 6, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 7, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 8, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 9, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 10, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 11, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 12, 0.0f, moveTime, -1.0f, -1.0f); + break; + case 2: + setChildTrackVolume(&mMainBgmHandle, 0, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 1, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 2, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 3, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 4, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 5, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 6, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 7, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 8, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 9, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 10, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 11, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 12, 0.0f, moveTime, -1.0f, -1.0f); + break; + case 3: + setChildTrackVolume(&mMainBgmHandle, 0, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 1, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 2, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 3, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 4, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 5, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 6, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 7, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 8, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 9, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 10, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 11, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 12, 1.0f, moveTime, -1.0f, -1.0f); + break; + case 4: + setChildTrackVolume(&mMainBgmHandle, 0, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 1, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 2, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 3, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 4, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 5, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 6, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 7, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 8, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 9, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 10, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 11, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 12, 0.0f, moveTime, -1.0f, -1.0f); + break; + } + + if (status == 5) { + muteSceneBgm(moveTime, 0.35f); mFlags.mHeightVolMod = false; } else { - mFlags.mHeightVolMod = true; + unMuteSceneBgm(moveTime); + if (status < 2) { + mFlags.mHeightVolMod = false; + } else { + mFlags.mHeightVolMod = true; + } } - } - break; - case Z2BGM_HOLY_FOREST: - if (mBgmStatus != 0xff) { - moveTime = 45; - setChildTrackVolume(&mMainBgmHandle, 7, 0.0f, 5, -1.0f, -1.0f); - } else { - setChildTrackVolume(&mMainBgmHandle, 7, 0.0f, 0, -1.0f, -1.0f); - } - - if (status == 1) { - volume1 = 0.6f; - volume2 = 1.0f; - } else { - volume1 = 1.0f; - volume2 = 0.0f; - } - - setChildTrackVolume(&mMainBgmHandle, 0, volume1, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 1, volume1, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 2, volume1, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 3, volume1, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 4, volume2, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 5, volume2, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 6, volume2, moveTime, -1.0f, -1.0f); - break; - case Z2BGM_LUTERA2: - if (status == 0) { - muteSceneBgm(0, 0.5f); - } else if (status == 1) { - unMuteSceneBgm(80); - } - break; - case Z2BGM_DEMO08: - if (status == 1) { - setChildTrackVolume(&mMainBgmHandle, 4, 1.0f, 90, -1.0f, -1.0f); - } else if (status == 2) { - bgmStop(90, 0); - } else { - setChildTrackVolume(&mMainBgmHandle, 4, 0.0f, 0, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 5, 0.0f, 0, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 6, 0.0f, 0, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 7, 0.0f, 0, -1.0f, -1.0f); - } - break; - case Z2BGM_DEMO10: - if (status == 1) { - setChildTrackVolume(&mMainBgmHandle, 0, 0.3f, 143, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 1, 0.3f, 143, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 2, 0.6f, 143, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 3, 0.6f, 143, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 4, 0.0f, 143, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 5, 1.0f, 143, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 6, 1.0f, 143, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 7, 1.0f, 143, -1.0f, -1.0f); - } else { - setChildTrackVolume(&mMainBgmHandle, 5, 0.0f, 0, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 6, 0.0f, 0, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 7, 0.0f, 0, -1.0f, -1.0f); - } - break; - case Z2BGM_BOSS_SNOWWOMAN_1: - if (status == 1) { - setChildTrackVolume(&mMainBgmHandle, 9, 0.0f, 60, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 10, 1.0f, 60, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 11, 1.0f, 60, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 12, 1.0f, 60, -1.0f, -1.0f); - } else { - setChildTrackVolume(&mMainBgmHandle, 10, 0.0f, 0, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 11, 0.0f, 0, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 12, 0.0f, 0, -1.0f, -1.0f); - } - break; - case Z2BGM_DUNGEON_LV8: - if (status == mBgmStatus) { - return; - } - - if (mBgmStatus != 0xff) { - moveTime = 45; - } - - if (status == 0 || status == 0xb) { - volume1 = 1.0f; - volume2 = 0.0f; - volume3 = 0.0f; - volume4 = 0.0f; - } else if (status >= 100) { - volume1 = 0.0f; - volume2 = 1.0f; - - volume3 = status < 200 ? 1.0f : - status > 3100 ? 0.0f : - Z2Calc::getParamByExp(status, 3100.0f, 200.0f, 0.3f, 0.0f, 1.0f, - Z2Calc::CURVE_POSITIVE); - - volume4 = status < 200 ? 1.0f : - status > 1600 ? 0.0f : - Z2Calc::getParamByExp(status, 1600.0f, 200.0f, 0.3f, 0.0f, 1.0f, - Z2Calc::CURVE_POSITIVE); - } else { - volume1 = 0.0f; - volume2 = 1.0f; - volume3 = 0.0f; - volume4 = 0.0f; - } - - setChildTrackVolume(&mMainBgmHandle, 2, volume1, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 3, volume1, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 4, volume1, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 5, volume1, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 6, volume2, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 7, volume2, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 8, volume2, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 9, volume2, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 10, volume2, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 11, volume3, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 12, volume3, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 13, volume4, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 14, volume4, moveTime, -1.0f, -1.0f); - break; - case Z2BGM_BOSS_ZANT: - if (status == 0xd) { - mSceneBgm.move(0.3f, 134); - } else { - mSceneBgm.forceIn(); - if (status > 6) { - status = (status - 7) * 2; + break; + case Z2BGM_HOLY_FOREST: + if (mBgmStatus != 0xff) { + moveTime = 45; + setChildTrackVolume(&mMainBgmHandle, 7, 0.0f, 5, -1.0f, -1.0f); } else { - status = status * 2 - 1; - } - } - break; - case Z2BGM_FORTUNE: - if (status == 1) { - muteSceneBgm(45, 0.5f); - } else { - unMuteSceneBgm(45); - } - break; - case Z2BGM_DUNGEON_LV9_02: - if (mBgmStatus != 0xff) { - moveTime = 30; - } - - if (status == 0xc) { - volume4 = 1.0f; - volume1 = 0.0f; - volume2 = 0.5f; - volume3 = 0.0f; - } else if (status == 8) { - volume4 = 0.0f; - volume1 = 0.5f; - volume2 = 1.0f; - volume3 = 0.8f; - } else if (status > 3000) { - volume4 = Z2Calc::linearTransform(status, 3150.0f, 6150.0f, 1.0f, 0.0f, false); - volume1 = Z2Calc::linearTransform(status, 3150.0f, 6150.0f, 0.0f, 1.0f, false); - volume2 = Z2Calc::linearTransform(status, 3150.0f, 6150.0f, 0.5f, 1.0f, false); - volume3 = Z2Calc::linearTransform(status, 3150.0f, 6150.0f, 0.0f, 1.0f, false); - } - - setChildTrackVolume(&mMainBgmHandle, 0, volume4, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 1, volume4, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 2, volume4, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 3, volume1, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 4, volume1, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 5, volume1, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 6, volume1, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 7, volume2, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 8, volume2, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 9, volume3, moveTime, -1.0f, -1.0f); - break; - case Z2BGM_VS_GANON_02: - if (status == mBgmStatus) { - return; - } - - if (mBgmStatus != 0xff) { - moveTime = 45; - } - - if (status == 1) { - volume1 = 0.0f; - volume2 = 1.0f; - } else { - volume1 = 1.0f; - volume2 = 0.0f; - } - - setChildTrackVolume(&mMainBgmHandle, 0, volume1, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 1, volume1, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 2, volume1, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 3, volume1, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 4, volume1, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 5, volume1, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 6, volume1, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 7, volume1, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 10, volume2, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 11, volume2, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 12, volume2, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 13, volume2, moveTime, -1.0f, -1.0f); - break; - case Z2BGM_TOAL_NIGHT: - case Z2BGM_FILONE_FOREST: - if (status == 1) { - muteSceneBgm(45, 0.5f); - } else if (status == 2) { - muteSceneBgm(0, 0.5f); - } else { - unMuteSceneBgm(45); - } - break; - case Z2BGM_VS_GANON_04: - if (status == mBgmStatus) { - return; - } - - if (status >= 4) { - moveTime = 50; - if (status == 4) { - volume4 = 1.0f; - volume1 = 0.0f; - } else if (status == 5) { - volume4 = 0.0f; - volume1 = 1.0f; - } else if (status == 6) { - volume4 = 0.0f; - volume1 = 0.0f; - } else if (status == 7) { - volume4 = 0.0f; - volume1 = 0.0f; - moveTime = 0; - } else if (status == 8) { - volume4 = 1.0f; - volume1 = 1.0f; - moveTime = 0; + setChildTrackVolume(&mMainBgmHandle, 7, 0.0f, 0, -1.0f, -1.0f); } - setChildTrackVolume(&mMainBgmHandle, 12, volume4, moveTime, -1.0f, -1.0f); + if (status == 1) { + volume1 = 0.6f; + volume2 = 1.0f; + } else { + volume1 = 1.0f; + volume2 = 0.0f; + } + + setChildTrackVolume(&mMainBgmHandle, 0, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 1, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 2, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 3, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 4, volume2, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 5, volume2, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 6, volume2, moveTime, -1.0f, -1.0f); + break; + case Z2BGM_LUTERA2: + if (status == 0) { + muteSceneBgm(0, 0.5f); + } else if (status == 1) { + unMuteSceneBgm(80); + } + break; + case Z2BGM_DEMO08: + if (status == 1) { + setChildTrackVolume(&mMainBgmHandle, 4, 1.0f, 90, -1.0f, -1.0f); + } else if (status == 2) { + bgmStop(90, 0); + } else { + setChildTrackVolume(&mMainBgmHandle, 4, 0.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 5, 0.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 6, 0.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 7, 0.0f, 0, -1.0f, -1.0f); + } + break; + case Z2BGM_DEMO10: + if (status == 1) { + setChildTrackVolume(&mMainBgmHandle, 0, 0.3f, 143, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 1, 0.3f, 143, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 2, 0.6f, 143, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 3, 0.6f, 143, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 4, 0.0f, 143, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 5, 1.0f, 143, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 6, 1.0f, 143, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 7, 1.0f, 143, -1.0f, -1.0f); + } else { + setChildTrackVolume(&mMainBgmHandle, 5, 0.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 6, 0.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 7, 0.0f, 0, -1.0f, -1.0f); + } + break; + case Z2BGM_BOSS_SNOWWOMAN_1: + if (status == 1) { + setChildTrackVolume(&mMainBgmHandle, 9, 0.0f, 60, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 10, 1.0f, 60, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 11, 1.0f, 60, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 12, 1.0f, 60, -1.0f, -1.0f); + } else { + setChildTrackVolume(&mMainBgmHandle, 10, 0.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 11, 0.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 12, 0.0f, 0, -1.0f, -1.0f); + } + break; + case Z2BGM_DUNGEON_LV8: + if (status == mBgmStatus) { + return; + } + + if (mBgmStatus != 0xff) { + moveTime = 45; + } + + if (status == 0 || status == 0xb) { + volume1 = 1.0f; + volume2 = 0.0f; + volume3 = 0.0f; + volume4 = 0.0f; + } else if (status >= 100) { + volume1 = 0.0f; + volume2 = 1.0f; + + volume3 = status < 200 ? 1.0f : + status > 3100 ? 0.0f : + Z2Calc::getParamByExp(status, 3100.0f, 200.0f, 0.3f, 0.0f, 1.0f, + Z2Calc::CURVE_POSITIVE); + + volume4 = status < 200 ? 1.0f : + status > 1600 ? 0.0f : + Z2Calc::getParamByExp(status, 1600.0f, 200.0f, 0.3f, 0.0f, 1.0f, + Z2Calc::CURVE_POSITIVE); + } else { + volume1 = 0.0f; + volume2 = 1.0f; + volume3 = 0.0f; + volume4 = 0.0f; + } + + setChildTrackVolume(&mMainBgmHandle, 2, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 3, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 4, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 5, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 6, volume2, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 7, volume2, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 8, volume2, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 9, volume2, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 10, volume2, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 11, volume3, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 12, volume3, moveTime, -1.0f, -1.0f); setChildTrackVolume(&mMainBgmHandle, 13, volume4, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 14, volume1, moveTime, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 15, volume1, moveTime, -1.0f, -1.0f); - } - break; - } + setChildTrackVolume(&mMainBgmHandle, 14, volume4, moveTime, -1.0f, -1.0f); + break; + case Z2BGM_BOSS_ZANT: + if (status == 0xd) { + mSceneBgm.move(0.3f, 134); + } else { + mSceneBgm.forceIn(); + if (status > 6) { + status = (status - 7) * 2; + } else { + status = status * 2 - 1; + } + } + break; + case Z2BGM_FORTUNE: + if (status == 1) { + muteSceneBgm(45, 0.5f); + } else { + unMuteSceneBgm(45); + } + break; + case Z2BGM_DUNGEON_LV9_02: + if (mBgmStatus != 0xff) { + moveTime = 30; + } - Z2GetSoundStarter()->setPortData(&mMainBgmHandle, 9, status, -1); - mBgmStatus = status & 0xff; + if (status == 0xc) { + volume4 = 1.0f; + volume1 = 0.0f; + volume2 = 0.5f; + volume3 = 0.0f; + } else if (status == 8) { + volume4 = 0.0f; + volume1 = 0.5f; + volume2 = 1.0f; + volume3 = 0.8f; + } else if (status > 3000) { + volume4 = Z2Calc::linearTransform(status, 3150.0f, 6150.0f, 1.0f, 0.0f, false); + volume1 = Z2Calc::linearTransform(status, 3150.0f, 6150.0f, 0.0f, 1.0f, false); + volume2 = Z2Calc::linearTransform(status, 3150.0f, 6150.0f, 0.5f, 1.0f, false); + volume3 = Z2Calc::linearTransform(status, 3150.0f, 6150.0f, 0.0f, 1.0f, false); + } + + setChildTrackVolume(&mMainBgmHandle, 0, volume4, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 1, volume4, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 2, volume4, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 3, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 4, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 5, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 6, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 7, volume2, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 8, volume2, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 9, volume3, moveTime, -1.0f, -1.0f); + break; + case Z2BGM_VS_GANON_02: + if (status == mBgmStatus) { + return; + } + + if (mBgmStatus != 0xff) { + moveTime = 45; + } + + if (status == 1) { + volume1 = 0.0f; + volume2 = 1.0f; + } else { + volume1 = 1.0f; + volume2 = 0.0f; + } + + setChildTrackVolume(&mMainBgmHandle, 0, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 1, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 2, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 3, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 4, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 5, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 6, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 7, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 10, volume2, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 11, volume2, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 12, volume2, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 13, volume2, moveTime, -1.0f, -1.0f); + break; + case Z2BGM_TOAL_NIGHT: + case Z2BGM_FILONE_FOREST: + if (status == 1) { + muteSceneBgm(45, 0.5f); + } else if (status == 2) { + muteSceneBgm(0, 0.5f); + } else { + unMuteSceneBgm(45); + } + break; + case Z2BGM_VS_GANON_04: + if (status == mBgmStatus) { + return; + } + + if (status >= 4) { + moveTime = 50; + if (status == 4) { + volume4 = 1.0f; + volume1 = 0.0f; + } else if (status == 5) { + volume4 = 0.0f; + volume1 = 1.0f; + } else if (status == 6) { + volume4 = 0.0f; + volume1 = 0.0f; + } else if (status == 7) { + volume4 = 0.0f; + volume1 = 0.0f; + moveTime = 0; + } else if (status == 8) { + volume4 = 1.0f; + volume1 = 1.0f; + moveTime = 0; + } + + setChildTrackVolume(&mMainBgmHandle, 12, volume4, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 13, volume4, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 14, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 15, volume1, moveTime, -1.0f, -1.0f); + } + break; + } + + Z2GetSoundStarter()->setPortData(&mMainBgmHandle, 9, status, -1); + mBgmStatus = status & 0xff; + } } void Z2SeqMgr::changeSubBgmStatus(s32 status) { @@ -1284,9 +1291,11 @@ void Z2SeqMgr::changeSubBgmStatus(s32 status) { setChildTrackVolume(&mSubBgmHandle, 11, 0.0f, moveTime, -1.0f, -1.0f); setChildTrackVolume(&mSubBgmHandle, 12, 0.0f, moveTime, -1.0f, -1.0f); } +#if PLATFORM_GCN break; case Z2BGM_BATTLE_NORMAL: return; +#endif } if (bvar2) { @@ -1341,6 +1350,14 @@ void Z2SeqMgr::changeFishingBgm(s32 param_0) { } } +static void dummy2() { + OS_REPORT("[Z2SeqMgr::talkInBgm]\n"); + OS_REPORT("[Z2SeqMgr::talkOutBgm]\n"); + OS_REPORT("[Z2SeqMgr::menuInBgm]\n"); + OS_REPORT("[Z2SeqMgr::menuOutBgm]\n"); + OS_REPORT("[Z2SeqMgr::fanfareFramework] mOpenBoxWait = %d\n"); +} + void Z2SeqMgr::talkInBgm() { if (getStreamBgmID() == 0x2000038 || getStreamBgmID() == 0x200007c || getMainBgmID() == Z2BGM_WCS_D01) { return; @@ -1362,6 +1379,7 @@ void Z2SeqMgr::menuOutBgm() { } void Z2SeqMgr::fanfareFramework() { + u8 r30; switch (mFanfareID) { case Z2BGM_OPEN_BOX: mFanfareCount = 150; @@ -1395,6 +1413,7 @@ void Z2SeqMgr::fanfareFramework() { case Z2BGM_ITEM_GET_SMELL: case Z2BGM_ITEM_GET_POU: case Z2BGM_ITEM_GET_ME_S: + r30 = mFanfareCount; if (mFanfareCount == 0) { Z2GetSoundMgr()->startSound(mFanfareID, &mFanfareHandle, 0); mFanfareMute.fadeOut(1); @@ -1420,7 +1439,7 @@ void Z2SeqMgr::fanfareFramework() { mFanfareCount = 50; mFanfareMute.fadeOut(30); } else if (mFanfareCount == 1) { - Z2GetSoundMgr()->startSound((u32)mFanfareID, &mFanfareHandle, 0); + Z2GetSoundMgr()->startSound(mFanfareID, &mFanfareHandle, 0); mFanfareID.setAnonymous(); } break; @@ -1528,21 +1547,17 @@ void Z2SeqMgr::processBgmFramework() { && Z2GetLink() != NULL && Z2GetLink()->getCurrentPos() != NULL) { f32 link_y = Z2GetLink()->getCurrentPos()->y; - f32 volume, depth; + f32 depth; switch (getMainBgmID()) { case Z2BGM_DEATH_MOUNTAIN01: - volume = Z2Calc::getParamByExp(link_y, sDeathMtTop, sDeathMtBottom, 0.3f, 0.0f, 1.0f, - Z2Calc::CURVE_NEGATIVE); - field_0x84.move(volume, 0); + field_0x84.move(Z2Calc::getParamByExp(link_y, sDeathMtTop, sDeathMtBottom, 0.3f, 0.0f, 1.0f, Z2Calc::CURVE_NEGATIVE), 0); break; case Z2BGM_RAKKA_HOUSE: if (link_y < -10500.0f) { bgmStart(Z2BGM_LAKE, 150, 0); field_0x84.forceIn(); } else if (link_y < -7500.0f) { - volume = Z2Calc::getParamByExp(link_y, -10500.0f, -7500.0f, 0.3f, 0.0f, 1.0f, - Z2Calc::CURVE_POSITIVE); - field_0x84.move(volume, 0); + field_0x84.move(Z2Calc::getParamByExp(link_y, -10500.0f, -7500.0f, 0.3f, 0.0f, 1.0f, Z2Calc::CURVE_POSITIVE), 0); } break; case Z2BGM_FIELD_LINK_DAY: @@ -1554,9 +1569,7 @@ void Z2SeqMgr::processBgmFramework() { if (depth > sUnderWaterDepthMax) { field_0x84.forceOut(); } else if (depth > 0.0f) { - volume = Z2Calc::getParamByExp(depth, sUnderWaterDepthMax, 0.0f, 0.3f, 0.1f, 1.0f, - Z2Calc::CURVE_POSITIVE); - field_0x84.move(volume, 0); + field_0x84.move(Z2Calc::getParamByExp(depth, sUnderWaterDepthMax, 0.0f, 0.3f, 0.1f, 1.0f, Z2Calc::CURVE_POSITIVE), 0); } else if (field_0x84.getDest() != 1.0f) { field_0x84.fadeIn(30); } @@ -1566,9 +1579,7 @@ void Z2SeqMgr::processBgmFramework() { if (link_y > -1500.0f) { field_0x84.move(0.3f, 0); } else if (link_y > -13000.0f) { - volume = Z2Calc::getParamByExp(link_y, -1500.0f, -13000.0f, 0.3f, 0.3f, 1.0f, - Z2Calc::CURVE_NEGATIVE); - field_0x84.move(volume, 0); + field_0x84.move(Z2Calc::getParamByExp(link_y, -1500.0f, -13000.0f, 0.3f, 0.3f, 1.0f, Z2Calc::CURVE_NEGATIVE), 0); } else { field_0x84.forceIn(); } @@ -1576,9 +1587,7 @@ void Z2SeqMgr::processBgmFramework() { if (link_y > -4500.0f) { field_0x84.fadeOut(30); } else if (link_y > -45000.0f) { - volume = Z2Calc::getParamByExp(link_y, -3000.0f, -45000.0f, 0.3f, 0.0f, 1.0f, - Z2Calc::CURVE_NEGATIVE); - field_0x84.move(volume, 0); + field_0x84.move(Z2Calc::getParamByExp(link_y, -3000.0f, -45000.0f, 0.3f, 0.0f, 1.0f, Z2Calc::CURVE_NEGATIVE), 0); } else { field_0x84.forceIn(); } @@ -1586,9 +1595,7 @@ void Z2SeqMgr::processBgmFramework() { if (link_y > 900.0f) { field_0x84.forceOut(); } else if (link_y > -1500.0f) { - volume = Z2Calc::getParamByExp(link_y, 900.0f, -1500.0f, 0.3f, 0.0f, 0.3f, - Z2Calc::CURVE_NEGATIVE); - field_0x84.move(volume, 0); + field_0x84.move(Z2Calc::getParamByExp(link_y, 900.0f, -1500.0f, 0.3f, 0.0f, 0.3f, Z2Calc::CURVE_NEGATIVE), 0); } else { field_0x84.move(0.3f, 0); } @@ -1624,7 +1631,11 @@ void Z2SeqMgr::processBgmFramework() { field_0xa4.calc(); f32 base_vol = mAllBgmMaster.get() * mBgmPause.get() * mFanfareMute.get() * mWindStone.get() * mTwilightGateVol; - +#if DEBUG + if (field_0x04_debug) { + base_vol *= field_0x00_debug; + } +#endif if (mMainBgmHandle) { f32 volume = 1.0f; if (getMainBgmID() != Z2BGM_GAME_OVER) { @@ -1634,13 +1645,11 @@ void Z2SeqMgr::processBgmFramework() { } if (mSubBgmHandle) { - f32 volume = base_vol * mSubBgmMaster.get() * mStreamBgmMaster.get(); - mSubBgmHandle->getAuxiliary().moveVolume(volume, 0); + mSubBgmHandle->getAuxiliary().moveVolume(base_vol * mSubBgmMaster.get() * mStreamBgmMaster.get(), 0); } if (mStreamBgmHandle) { - f32 volume = base_vol * mMainBgmMaster.get() * mSceneBgm.get(); - mStreamBgmHandle->getAuxiliary().moveVolume(volume, 0); + mStreamBgmHandle->getAuxiliary().moveVolume(base_vol * mMainBgmMaster.get() * mSceneBgm.get(), 0); } setWindStoneVol(1.0f, 30); @@ -1663,13 +1672,20 @@ bool Z2SeqMgr::checkBgmIDPlaying(u32 bgmID) { } f32 Z2SeqMgr::getChildTrackVolume(JAISoundHandle* handle, int trackId) { + JUT_ASSERT(2030, handle); f32 volume = 0.0f; if (*handle) { JAISeq* seq = handle->getSound()->asSeq(); - if (seq != NULL && seq->getChildTrack(trackId) != NULL) { - JAISoundChild* child = seq->getChild(trackId); - if (child != NULL) { - volume = child->mMove.params_.mVolume; + if (seq != NULL) { + JASTrack* track = seq->getChildTrack(trackId); + if (!track) { + int r24 = trackId; + } else { + JAISoundChild* child = seq->getChild(trackId); + if (child != NULL) { + volume = child->mMove.params_.mVolume; + f32 f30 = volume; + } } } } @@ -1677,18 +1693,31 @@ f32 Z2SeqMgr::getChildTrackVolume(JAISoundHandle* handle, int trackId) { return volume; } +static void dummy3() { + OS_REPORT("[Z2SeqMgr::getChildTrackVolume]シーケンスがないですよ。\n"); + OS_REPORT("[Z2SeqMgr::getChildTrackVolume]子トラック%dがオープンしてませんよ\n"); + OS_REPORT("[Z2SeqMgr::getChildTrackVolume]子トラック%dのボリューム%.2f\n"); + OS_REPORT("[Z2SeqMgr::setChildTrackVolume]シーケンスがないですよ。\n"); + OS_REPORT("[Z2SeqMgr::setChildTrackVolume]子トラック%dがオープンしてませんよ\n"); + OS_REPORT("[Z2SeqMgr::setChildTrackVolume]子トラック%dのボリューム%.2f → %.2f カウント %d\n"); +} + void Z2SeqMgr::setChildTrackVolume(JAISoundHandle* handle, int trackId, f32 volume, u32 moveTime, f32 pan, f32 dolby) { + int r24; + JUT_ASSERT(2064, handle); if (!*handle) { return; } - JAISeq* seq = (*handle)->asSeq(); + JAISeq* seq = handle->getSound()->asSeq(); if (seq == NULL) { return; } - if (seq->getChildTrack(trackId) == NULL) { + JASTrack* track = seq->getChildTrack(trackId); + if (track == NULL) { + r24 = trackId; return; } @@ -1704,6 +1733,7 @@ void Z2SeqMgr::setChildTrackVolume(JAISoundHandle* handle, int trackId, f32 volu } child->mMove.moveVolume(volume, moveTime); + u32 r23 = moveTime; if (pan != -1.0f) { child->mMove.movePan(pan, moveTime); } @@ -1771,17 +1801,20 @@ void Z2SeqMgr::setBattleDistState(u8 state) { mBattleSeqCount = 0; if (getSubBgmID() == Z2BGM_BATTLE_TWILIGHT || getSubBgmID() == Z2BGM_BATTLE_NORMAL) { - mSubBgmHandle->getFader().fadeIn(10); + JAISoundFader* fader = mSubBgmHandle->getFader(); + fader->fadeIn(10); mMainBgmMaster.fadeOut(10); } } +#if !DEBUG if ((Z2GetSoundObjMgr()->isTwilightBattle() && getSubBgmID() == Z2BGM_BATTLE_NORMAL) || (!Z2GetSoundObjMgr()->isTwilightBattle() && getSubBgmID() == Z2BGM_BATTLE_TWILIGHT)) { mSubBgmHandle->stop(30); mSubBgmHandle->releaseHandle(); } +#endif if (Z2GetSoundObjMgr()->isTwilightBattle() || getSubBgmID() == Z2BGM_BATTLE_TWILIGHT) { switch (state) { @@ -1835,41 +1868,52 @@ void Z2SeqMgr::setBattleDistState(u8 state) { } void Z2SeqMgr::setBattleSeqState(u8 state) { - if (!mFlags.mBattleBgmOff && Z2GetSceneMgr()->isSceneExist() && mBattleSeqState != state) { - if (state == 0) { - stopBattleBgm(Z2Param::BGM_CROSS_FADEOUT_TIME, Z2Param::BGM_CROSS_FADEIN_TIME); - } else if (getSubBgmID() == Z2BGM_BATTLE_NORMAL && !(getMainBgmID() == Z2BGM_FIELD_LINK_DAY && !Z2GetSoundObjMgr()->isTwilightBattle())) { - switch (state) { - case 2: - if (mBattleSeqState == 1) { - Z2GetSoundStarter()->setPortData(&mSubBgmHandle, 9, 1, -1); - setChildTrackVolume(&mSubBgmHandle, data_8045086C, 1.0f, 0, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 2, 1.0f, 0, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 3, 1.0f, 0, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 12, 1.0f, 0, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 14, 1.0f, 0, -1.0f, -1.0f); - } + if (mFlags.mBattleBgmOff) { + return; + } + if (!Z2GetSceneMgr()->isSceneExist()) { + return; + } + if (mBattleSeqState == state) { + return; + } - if (mBattleSeqCount != 0) { - mBattleSeqCount = 0; - mSubBgmHandle->getFader().fadeIn(10); - mMainBgmMaster.fadeOut(10); - } - break; - case 3: - mMainBgmMaster.forceOut(); - mSubBgmMaster.forceIn(); - - if (mBattleSeqState == 1) { - Z2GetSoundStarter()->setPortData(&mSubBgmHandle, 9, 3, -1); - } else if (mBattleSeqState == 2) { - Z2GetSoundStarter()->setPortData(&mSubBgmHandle, 9, 2, -1); - } - break; + if (state == 0) { + stopBattleBgm(Z2Param::BGM_CROSS_FADEOUT_TIME, Z2Param::BGM_CROSS_FADEIN_TIME); + return; + } + if (getSubBgmID() == Z2BGM_BATTLE_NORMAL && !(getMainBgmID() == Z2BGM_FIELD_LINK_DAY && !Z2GetSoundObjMgr()->isTwilightBattle())) { + switch (state) { + case 2: + if (mBattleSeqState == 1) { + Z2GetSoundStarter()->setPortData(&mSubBgmHandle, 9, 1, -1); + setChildTrackVolume(&mSubBgmHandle, data_8045086C, 1.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 2, 1.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 3, 1.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 12, 1.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 14, 1.0f, 0, -1.0f, -1.0f); } - mBattleSeqState = state; + if (mBattleSeqCount != 0) { + mBattleSeqCount = 0; + JAISoundFader* fader = mSubBgmHandle->getFader(); + fader->fadeIn(10); + mMainBgmMaster.fadeOut(10); + } + break; + case 3: + mMainBgmMaster.forceOut(); + mSubBgmMaster.forceIn(); + + if (mBattleSeqState == 1) { + Z2GetSoundStarter()->setPortData(&mSubBgmHandle, 9, 3, -1); + } else if (mBattleSeqState == 2) { + Z2GetSoundStarter()->setPortData(&mSubBgmHandle, 9, 2, -1); + } + break; } + + mBattleSeqState = state; } } @@ -1930,102 +1974,114 @@ void Z2SeqMgr::battleBgmFramework() { } void Z2SeqMgr::startBattleBgm(bool isFadeIn) { - if (!mFlags.mBattleBgmOff && Z2GetSceneMgr()->isSceneExist() - && mBattleSeqState == 0 && (mFlags.mBattleDistIgnore || mBattleDistState <= 1)) - { - JAISoundID bgm_id = Z2BGM_BATTLE_NORMAL; - if (Z2GetSceneMgr()->isInDarkness() || Z2GetSoundObjMgr()->isTwilightBattle()) { - bgm_id = Z2BGM_BATTLE_TWILIGHT; - } + if (mFlags.mBattleBgmOff) { + return; + } + if (!Z2GetSceneMgr()->isSceneExist()) { + return; + } + if (mBattleSeqState) { + return; + } + if (!mFlags.mBattleDistIgnore && mBattleDistState > 1) { + return; + } - u32 subBgmID = getSubBgmID(); - if (subBgmID != bgm_id) { - mBattleSeqState = 1; - if (Z2GetSoundMgr()->startSound(bgm_id, &mSubBgmHandle, NULL)) { - Z2GetSoundObjMgr()->setBattleInit(); - mSubBgmStatus = 0xff; + JAISoundID bgm_id = Z2BGM_BATTLE_NORMAL; + if (Z2GetSceneMgr()->isInDarkness() || Z2GetSoundObjMgr()->isTwilightBattle()) { + bgm_id = Z2BGM_BATTLE_TWILIGHT; + } - s16 ivar2 = Z2GetLink()->getMoveSpeed() - 23; - if (ivar2 < 0) { - ivar2 = 0; - } + u32 subBgmID = getSubBgmID(); + s16 ivar2; + u8 fadeinTime, fadeoutTime; + if (subBgmID != bgm_id) { + mBattleSeqState = 1; + if (Z2GetSoundMgr()->startSound(bgm_id, &mSubBgmHandle, NULL)) { + Z2GetSoundObjMgr()->setBattleInit(); + mSubBgmStatus = 0xff; - if (ivar2 > Z2Param::BGM_CROSS_FADEIN_TIME) { - ivar2 = Z2Param::BGM_CROSS_FADEIN_TIME; - } - - u8 fadeinTime, fadeoutTime; - switch (bgm_id) { - case Z2BGM_BATTLE_NORMAL: - fadeinTime = Z2Param::BGM_CROSS_FADEIN_TIME - ivar2; - fadeoutTime = Z2Param::BGM_CROSS_FADEOUT_TIME - ivar2 / 2; - if (!mFlags.mBattleSearched) { - setChildTrackVolume(&mSubBgmHandle, 2, 0.0f, 0, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 3, 0.0f, 0, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 12, 0.0f, 0, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 14, 0.0f, 0, -1.0f, -1.0f); - } - if (mBattleDistState != 0) { - setChildTrackVolume(&mSubBgmHandle, data_8045086C, 0.0f, 0, -1.0f, -1.0f); - } - break; - case Z2BGM_BATTLE_TWILIGHT: - changeSubBgmStatus(Z2GetSoundObjMgr()->isTwilightBattle()); - fadeinTime = 25 - ivar2 / 4; - fadeoutTime = 25 - ivar2 / 4; - break; - } - - if (isFadeIn) { - mSubBgmMaster.fadeInFromOut(fadeinTime); - } else { - mSubBgmMaster.forceIn(); - } - - mMainBgmMaster.fadeOut(fadeoutTime); + ivar2 = Z2GetLink()->getMoveSpeed() - 23; + if (ivar2 < 0) { + ivar2 = 0; } + + if (ivar2 > Z2Param::BGM_CROSS_FADEIN_TIME) { + ivar2 = Z2Param::BGM_CROSS_FADEIN_TIME; + } + + switch (bgm_id) { + case Z2BGM_BATTLE_NORMAL: + fadeinTime = Z2Param::BGM_CROSS_FADEIN_TIME - ivar2; + fadeoutTime = Z2Param::BGM_CROSS_FADEOUT_TIME - ivar2 / 2; + if (!mFlags.mBattleSearched) { + setChildTrackVolume(&mSubBgmHandle, 2, 0.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 3, 0.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 12, 0.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 14, 0.0f, 0, -1.0f, -1.0f); + } + if (mBattleDistState != 0) { + setChildTrackVolume(&mSubBgmHandle, data_8045086C, 0.0f, 0, -1.0f, -1.0f); + } + break; + case Z2BGM_BATTLE_TWILIGHT: + changeSubBgmStatus(Z2GetSoundObjMgr()->isTwilightBattle()); + fadeinTime = 25 - ivar2 / 4; + fadeoutTime = 25 - ivar2 / 4; + break; + } + + if (isFadeIn) { + mSubBgmMaster.fadeInFromOut(fadeinTime); + } else { + mSubBgmMaster.forceIn(); + } + + mMainBgmMaster.fadeOut(fadeoutTime); } } } void Z2SeqMgr::stopBattleBgm(u8 subFadeoutTime, u8 mainFadeinTime) { - if (mBattleSeqCount == 0) { - s16 ivar6 = 0; - if (Z2GetLink() != NULL) { - ivar6 = Z2GetLink()->getMoveSpeed() - 23; - } - - if (ivar6 < 0) { - ivar6 = 0; - } - - if (ivar6 > Z2Param::BGM_CROSS_FADEIN_TIME) { - ivar6 = Z2Param::BGM_CROSS_FADEIN_TIME; - } - - if (getSubBgmID() == Z2BGM_BATTLE_NORMAL) { - subFadeoutTime = Z2Param::BGM_CROSS_FADEIN_TIME + ivar6; - mainFadeinTime = Z2Param::BGM_CROSS_FADEOUT_TIME + ivar6 / 2; - mSubBgmHandle->fadeOut(subFadeoutTime); - mBattleSeqCount = subFadeoutTime; - } else if (getSubBgmID() == Z2BGM_BATTLE_TWILIGHT) { - if (mSubBgmStatus > 1) { - subFadeoutTime = Z2Param::BGM_CROSS_FADEIN_TIME + ivar6 / 4; - mainFadeinTime = Z2Param::BGM_CROSS_FADEIN_TIME + ivar6 / 4; - } else { - subFadeoutTime = 25 + ivar6 / 4; - mainFadeinTime = 25 + ivar6 / 4; - } - - mSubBgmHandle->fadeOut(subFadeoutTime); - mBattleSeqCount = subFadeoutTime; - } - - mMainBgmMaster.fadeIn(mainFadeinTime); - mBattleDistState = 3; - setBattleDistIgnore(false); - mFlags.mBattleSearched = false; + if (mBattleSeqCount) { + return; } + + s16 ivar6 = 0; + if (Z2GetLink() != NULL) { + ivar6 = Z2GetLink()->getMoveSpeed() - 23; + } + + if (ivar6 < 0) { + ivar6 = 0; + } + + if (ivar6 > Z2Param::BGM_CROSS_FADEIN_TIME) { + ivar6 = Z2Param::BGM_CROSS_FADEIN_TIME; + } + + if (getSubBgmID() == Z2BGM_BATTLE_NORMAL) { + subFadeoutTime = Z2Param::BGM_CROSS_FADEIN_TIME + ivar6; + mainFadeinTime = Z2Param::BGM_CROSS_FADEOUT_TIME + ivar6 / 2; + mSubBgmHandle->fadeOut(subFadeoutTime); + mBattleSeqCount = subFadeoutTime; + } else if (getSubBgmID() == Z2BGM_BATTLE_TWILIGHT) { + if (mSubBgmStatus > 1) { + subFadeoutTime = Z2Param::BGM_CROSS_FADEIN_TIME + ivar6 / 4; + mainFadeinTime = Z2Param::BGM_CROSS_FADEIN_TIME + ivar6 / 4; + } else { + subFadeoutTime = 25 + ivar6 / 4; + mainFadeinTime = 25 + ivar6 / 4; + } + + mSubBgmHandle->fadeOut(subFadeoutTime); + mBattleSeqCount = subFadeoutTime; + } + + mMainBgmMaster.fadeIn(mainFadeinTime); + mBattleDistState = 3; + setBattleDistIgnore(false); + mFlags.mBattleSearched = false; } void Z2SeqMgr::fieldBgmStart() { @@ -2052,8 +2108,8 @@ void Z2SeqMgr::fieldBgmStart() { } void Z2SeqMgr::fieldRidingMute() { + f32 volume1, volume2; if (Z2GetSceneMgr()->isSceneExist() && mMainBgmHandle) { - f32 volume1, volume2; if (mFlags.mRiding) { volume1 = 1.0f; volume2 = 0.0f; diff --git a/src/Z2AudioLib/Z2SoundHandles.cpp b/src/Z2AudioLib/Z2SoundHandles.cpp index bbd1dba50f..8990cd4fd1 100644 --- a/src/Z2AudioLib/Z2SoundHandles.cpp +++ b/src/Z2AudioLib/Z2SoundHandles.cpp @@ -120,8 +120,7 @@ void Z2SoundHandles::stopAllSounds(u32 fadeTime) { } bool Z2SoundHandles::isActive() const { - JSULink* i; - for (i = getFirst(); i != NULL; i = i->getNext()) { + for (JSULink*i = getFirst(); i != NULL; i = i->getNext()) { if (i->getObject()->isSoundAttached()) { return true; } diff --git a/src/Z2AudioLib/Z2SoundMgr.cpp b/src/Z2AudioLib/Z2SoundMgr.cpp index 8e32d68196..9d3b4825f0 100644 --- a/src/Z2AudioLib/Z2SoundMgr.cpp +++ b/src/Z2AudioLib/Z2SoundMgr.cpp @@ -14,6 +14,10 @@ #include "Z2AudioLib/Z2AudioCS.h" #endif +static void dummy() { + OS_REPORT("seqCallBack!!!!!\n"); +} + u16 seqCallback(JASTrack* track, u16 command) { switch (command) { case 0x1000: @@ -246,7 +250,7 @@ void Z2SoundMgr::resetFilterAll() { i = 0; } - for (; i < 9; i++) { + for (; i < MAX_CATEGORIES; i++) { JAISeCategoryMgr* category = seMgr_.getCategory(i); int se_count = category->getMaxActiveSe(); if (se_count > 0) { @@ -274,7 +278,7 @@ void Z2SoundMgr::mixOut() { i = 0; } - for (; i < 9; i++) { + for (; i < MAX_CATEGORIES; i++) { JAISeCategoryMgr* category = seMgr_.getCategory(i); int se_count = category->getMaxActiveSe(); if (se_count > 0) {