mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-06-03 18:06:02 -04:00
2342 lines
80 KiB
C++
2342 lines
80 KiB
C++
#include "Z2AudioLib/Z2SeqMgr.h"
|
|
#include "Z2AudioLib/Z2LinkMgr.h"
|
|
#include "Z2AudioLib/Z2Param.h"
|
|
#include "Z2AudioLib/Z2SceneMgr.h"
|
|
#include "Z2AudioLib/Z2SoundMgr.h"
|
|
#include "Z2AudioLib/Z2SoundObjMgr.h"
|
|
#include "Z2AudioLib/Z2StatusMgr.h"
|
|
#include "Z2AudioLib/Z2Calc.h"
|
|
#include "JSystem/JAudio2/JAISoundChild.h"
|
|
#include "JSystem/JAudio2/JAISeq.h"
|
|
|
|
static const char* sSpotName[] = {
|
|
"F_SP00",
|
|
"F_SP103",
|
|
"R_SP01",
|
|
"F_SP104",
|
|
"R_SP107",
|
|
"F_SP108",
|
|
"R_SP108",
|
|
"F_SP117",
|
|
"F_SP109",
|
|
"R_SP109",
|
|
"R_SP209",
|
|
"F_SP110",
|
|
"R_SP110",
|
|
"F_SP111",
|
|
"F_SP128",
|
|
"R_SP128",
|
|
"F_SP115",
|
|
"F_SP112",
|
|
"F_SP126",
|
|
"F_SP127",
|
|
"R_SP127",
|
|
"F_SP113",
|
|
"F_SP116",
|
|
"R_SP116",
|
|
"R_SP160",
|
|
"R_SP161",
|
|
"F_SP114",
|
|
"F_SP118",
|
|
"F_SP124",
|
|
"F_SP125",
|
|
"F_SP121",
|
|
"F_SP122",
|
|
"F_SP123",
|
|
"F_SP200",
|
|
"F_SP102",
|
|
"",
|
|
"R_SP300",
|
|
"R_SP301",
|
|
"T_ENEMY",
|
|
"D_MN54",
|
|
"D_MN05",
|
|
"D_MN05B",
|
|
"D_MN05A",
|
|
"D_MN04",
|
|
"D_MN04B",
|
|
"D_MN04A",
|
|
"D_MN01",
|
|
"D_MN01B",
|
|
"D_MN01A",
|
|
"D_MN10",
|
|
"D_MN10B",
|
|
"D_MN10A",
|
|
"D_MN11",
|
|
"D_MN11B",
|
|
"D_MN11A",
|
|
"D_MN06",
|
|
"D_MN06B",
|
|
"D_MN06A",
|
|
"D_MN07",
|
|
"D_MN07B",
|
|
"D_MN07A",
|
|
"D_MN08",
|
|
"D_MN08B",
|
|
"D_MN08C",
|
|
"D_MN08A",
|
|
"D_MN08D",
|
|
"D_MN09",
|
|
"D_MN09A",
|
|
"D_MN09B",
|
|
"D_MN09C",
|
|
"D_SB00",
|
|
"D_SB01",
|
|
"D_SB02",
|
|
"D_SB03",
|
|
"D_SB04",
|
|
"D_SB05",
|
|
"D_SB06",
|
|
"D_SB07",
|
|
"D_SB08",
|
|
"D_SB09",
|
|
"D_SB10",
|
|
};
|
|
|
|
Z2SeqMgr::Z2SeqMgr() : JASGlobalInstance<Z2SeqMgr>(true) {
|
|
mMainBgmMaster.forceIn();
|
|
mSubBgmMaster.forceIn();
|
|
mBgmPause.forceIn();
|
|
mSceneBgm.forceIn();
|
|
mFanfareMute.forceIn();
|
|
mStreamBgmMaster.forceIn();
|
|
field_0x84.forceIn();
|
|
mWindStone.forceIn();
|
|
mTwilightGateVol = 1.0f;
|
|
mAllBgmMaster.forceIn();
|
|
field_0xa4.forceIn();
|
|
|
|
#if DEBUG
|
|
field_0x00_debug = 1.0f;
|
|
field_0x04_debug = 0;
|
|
#endif
|
|
|
|
field_0xb8 = -1;
|
|
resetBattleBgmParams();
|
|
mBgmStatus = 0xff;
|
|
mSubBgmStatus = 0xff;
|
|
mFanfareCount = 0;
|
|
mDekuToadCount = 0;
|
|
mFanfareID.setAnonymous();
|
|
field_0xc4 = 0;
|
|
mFlags.mRiding = false;
|
|
field_0xc8 = 1.0f;
|
|
field_0xcc = 1.0f;
|
|
mRideCount = 0;
|
|
mFlags.mFieldBgmPlay = false;
|
|
mFlags.mBattleBgmOff = true;
|
|
mFlags.mHeightVolMod = false;
|
|
mFlags.mTimeProcVolMod = false;
|
|
}
|
|
|
|
void Z2SeqMgr::bgmStart(u32 bgmID, u32 fadeTime, s32 param_2) {
|
|
switch (bgmID) {
|
|
case 0xFFFFFFFF:
|
|
return;
|
|
case 0x200005D:
|
|
bgmAllUnMute(33);
|
|
bgmStreamPrepare(0x200005d);
|
|
bgmStreamPlay();
|
|
return;
|
|
case Z2BGM_BOSSBABA_1:
|
|
param_2 = 1;
|
|
mMainBgmMaster.forceIn();
|
|
break;
|
|
case Z2BGM_GAME_OVER:
|
|
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 &&
|
|
Z2GetLink()->getCurrentPos()->y > -10000.0f)
|
|
{
|
|
bgmID = Z2BGM_RAKKA_HOUSE;
|
|
}
|
|
break;
|
|
case Z2BGM_VS_GANON_01:
|
|
bgmAllUnMute(0);
|
|
// fallthrough
|
|
case Z2BGM_VS_GANON_02:
|
|
case Z2BGM_VS_GANON_04:
|
|
case Z2BGM_GOMA_BTL02:
|
|
if (mStreamBgmHandle) {
|
|
mStreamBgmHandle->stop(0);
|
|
}
|
|
mStreamBgmMaster.forceIn();
|
|
}
|
|
|
|
#if !PLATFORM_SHIELD
|
|
if (Z2GetStatusMgr()->getDemoStatus() == 9) {
|
|
if (mMainBgmHandle) {
|
|
mMainBgmHandle->stop(0);
|
|
}
|
|
|
|
if (param_2 == 0) {
|
|
if (mSubBgmHandle) {
|
|
mSubBgmHandle->stop(0);
|
|
}
|
|
mMainBgmMaster.forceIn();
|
|
}
|
|
} else
|
|
#endif
|
|
{
|
|
bgmStop(0, param_2);
|
|
}
|
|
|
|
if (bgmID == Z2BGM_FIELD_LINK_DAY || bgmID == Z2BGM_FIELD_LINK_NIGHT) {
|
|
fieldBgmStart();
|
|
} else {
|
|
Z2GetSoundMgr()->startSound(bgmID, &mMainBgmHandle, NULL);
|
|
mBgmStatus = 0xff;
|
|
}
|
|
|
|
if (param_2 == 0 && fadeTime != 0) {
|
|
mMainBgmMaster.fadeInFromOut(fadeTime);
|
|
}
|
|
|
|
if (bgmID == Z2BGM_BOSS_SNOWWOMAN_1 || bgmID == Z2BGM_HORSE_BATTLE
|
|
|| bgmID == Z2BGM_VS_GANON_02 || bgmID == Z2BGM_TOAL_VILLEGE)
|
|
{
|
|
changeBgmStatus(0);
|
|
}
|
|
|
|
if (mFlags.mTimeProcVolMod && !Z2GetStatusMgr()->checkDayTime()) {
|
|
field_0xa4.forceOut();
|
|
} else {
|
|
field_0xa4.forceIn();
|
|
}
|
|
|
|
#if DEBUG
|
|
if (bgmID == Z2BGM_HIDDEN_VILLAGE) {
|
|
OS_REPORT("[Z2SeqMgr::bgmStart] Z2BGM_HIDDEN_VILLAGE start(%d)\n", mMainBgmHandle.isSoundAttached());
|
|
OS_REPORT(" mainBgmMasterVol::%.2f \n", mMainBgmMaster.get());
|
|
OS_REPORT(" subBgmMasterVol::%.2f \n", mSubBgmMaster.get());
|
|
OS_REPORT(" allBgmMasterVol::%.2f \n", mAllBgmMaster.get());
|
|
OS_REPORT(" bgmPauseVol::%.2f \n", mBgmPause.get());
|
|
OS_REPORT(" fanfareMuteVol::%.2f \n", mFanfareMute.get());
|
|
OS_REPORT(" windStoneVol::%.2f \n", mWindStone.get());
|
|
OS_REPORT(" twilightGateVol::%.2f \n", mTwilightGateVol);
|
|
}
|
|
#endif
|
|
}
|
|
|
|
void Z2SeqMgr::bgmStop(u32 fadeTime, s32 param_1) {
|
|
if (mMainBgmHandle) {
|
|
mMainBgmHandle->stop(fadeTime);
|
|
}
|
|
|
|
if (mStreamBgmHandle) {
|
|
mStreamBgmHandle->stop(fadeTime);
|
|
}
|
|
|
|
if (param_1 == 0) {
|
|
if (mSubBgmHandle) {
|
|
mSubBgmHandle->stop(fadeTime);
|
|
}
|
|
mMainBgmMaster.forceIn();
|
|
}
|
|
}
|
|
|
|
void Z2SeqMgr::subBgmStart(u32 bgmID) {
|
|
if (bgmID == -1) {
|
|
return;
|
|
}
|
|
|
|
int fadeinTime = 0;
|
|
int fadeoutTime = 0;
|
|
|
|
switch (bgmID) {
|
|
case Z2BGM_ITEM_GET:
|
|
case Z2BGM_ITEM_GET_MINI:
|
|
case Z2BGM_OPEN_BOX:
|
|
case Z2BGM_ITEM_GET_ME:
|
|
case Z2BGM_HEART_GET:
|
|
case Z2BGM_FISHING_BARE:
|
|
case Z2BGM_FISHING_GET1:
|
|
case Z2BGM_FISHING_GET2:
|
|
case Z2BGM_FISHING_GET3:
|
|
case Z2BGM_HOWL_TOBIKUSA:
|
|
case Z2BGM_HOWL_UMAKUSA:
|
|
case Z2BGM_HOWL_ZELDASONG:
|
|
case Z2BGM_HOWL_LIGHT_PRLD:
|
|
case Z2BGM_LIGHT_PRLD_DUO:
|
|
case Z2BGM_SOUL_REQ_HOWL:
|
|
case Z2BGM_SOUL_REQ_DUO:
|
|
case Z2BGM_HEALING_HOWL:
|
|
case Z2BGM_HEALING_DUO:
|
|
case Z2BGM_NEW_01_HOWL:
|
|
case Z2BGM_NEW_01_DUO:
|
|
case Z2BGM_NEW_02_HOWL:
|
|
case Z2BGM_NEW_02_DUO:
|
|
case Z2BGM_NEW_03_HOWL:
|
|
case Z2BGM_NEW_03_DUO:
|
|
case Z2BGM_ITEM_GET_INSECT:
|
|
case Z2BGM_ITEM_GET_SMELL:
|
|
case Z2BGM_ITEM_GET_POU:
|
|
case Z2BGM_ITEM_GET_ME_S:
|
|
case Z2BGM_KOMONJO_GET_INTRO:
|
|
if (getSubBgmID() == Z2BGM_OBACHAN) {
|
|
subBgmStop();
|
|
}
|
|
mFanfareID = bgmID;
|
|
return;
|
|
case Z2BGM_FACE_OFF_BATTLE:
|
|
case Z2BGM_BOSS_OCTAEEL_D02:
|
|
case Z2BGM_DRAGON_D02:
|
|
case Z2BGM_FACE_OFF_BATTLE2:
|
|
case Z2BGM_FACE_OFF_BATTLE3:
|
|
fadeinTime = 0;
|
|
fadeoutTime = -1;
|
|
break;
|
|
case Z2BGM_LUTERA1:
|
|
case Z2BGM_BOSS_SNOWWOMAN_D1:
|
|
Z2GetStatusMgr()->setDemoName("force_start");
|
|
fadeinTime = 0;
|
|
fadeoutTime = Z2Param::BGM_CROSS_FADEOUT_TIME;
|
|
break;
|
|
case Z2BGM_TARO_RESCUE:
|
|
fadeinTime = 0;
|
|
fadeoutTime = 120;
|
|
bgmStop(0, 0);
|
|
break;
|
|
case Z2BGM_OBACHAN:
|
|
case Z2BGM_POSTMAN:
|
|
if (mSubBgmHandle) {
|
|
mSubBgmHandle->stop(0);
|
|
}
|
|
// fallthrough
|
|
case Z2BGM_FISHING_HIT:
|
|
case Z2BGM_SNOW_BOARD:
|
|
case Z2BGM_RIVER_GAME:
|
|
case Z2BGM_RIVER_GAME_00:
|
|
setBattleBgmOff(true);
|
|
// fallthrough
|
|
case Z2BGM_BOSSBABA_0:
|
|
case Z2BGM_WILD_GOAT:
|
|
case Z2BGM_EVENT01:
|
|
case Z2BGM_MAGNE_GORON:
|
|
case Z2BGM_MAGNE_GORON_D02:
|
|
case Z2BGM_SUMO:
|
|
case Z2BGM_DEKUTOAD:
|
|
case Z2BGM_RODEO:
|
|
case Z2BGM_BOSSFIREMAN_1:
|
|
case Z2BGM_SUMO_D1:
|
|
case Z2BGM_STATUE_GAME:
|
|
case Z2BGM_BOSS_OCTAEEL_D01:
|
|
case Z2BGM_HIDDEN_VIL_D1:
|
|
case Z2BGM_IB_MBOSS:
|
|
case Z2BGM_GG_MBOSS:
|
|
case Z2BGM_WCS_GAME:
|
|
case Z2BGM_HARAGIGANT_D01:
|
|
case Z2BGM_HARAGIGANT_D02:
|
|
case Z2BGM_DRAGON_D01:
|
|
case Z2BGM_KOROKORO_GAME:
|
|
case Z2BGM_YAMIMUSHI_B_D01:
|
|
case Z2BGM_GOMA_D01:
|
|
case Z2BGM_MINIGAME_WIN01:
|
|
case Z2BGM_MINIGAME_WIN02:
|
|
fadeinTime = 0;
|
|
fadeoutTime = 1;
|
|
break;
|
|
case Z2BGM_COWBOY_GAME:
|
|
bgmAllUnMute(0);
|
|
fadeinTime = 0;
|
|
fadeoutTime = 1;
|
|
break;
|
|
case Z2BGM_SNOWBOARD_WIN:
|
|
case Z2BGM_SNOWBOARD_LOSE:
|
|
if (mSubBgmHandle) {
|
|
mSubBgmHandle->stop(0);
|
|
}
|
|
// fallthrough
|
|
case Z2BGM_BOOMERAMG_MONKEY:
|
|
case Z2BGM_VARIANT:
|
|
case Z2BGM_TN_MBOSS:
|
|
case Z2BGM_P_ZANT:
|
|
if (mStreamBgmHandle) {
|
|
mStreamBgmHandle->stop(0);
|
|
}
|
|
// fallthrough
|
|
case Z2BGM_HORSE_BATTLE:
|
|
case Z2BGM_TN_MBOSS_LV9:
|
|
mStreamBgmMaster.forceIn();
|
|
fadeinTime = 0;
|
|
fadeoutTime = 1;
|
|
break;
|
|
case Z2BGM_MAGNE_GORON_D01:
|
|
case Z2BGM_DEKUTOAD_D01:
|
|
fadeinTime = 0;
|
|
fadeoutTime = 20;
|
|
break;
|
|
case Z2BGM_IB_MBOSS_D01:
|
|
case Z2BGM_GG_MBOSS_D01:
|
|
fadeinTime = 0;
|
|
fadeoutTime = Z2Param::BGM_CROSS_FADEOUT_TIME;
|
|
break;
|
|
default:
|
|
fadeinTime = Z2Param::BGM_CROSS_FADEIN_TIME;
|
|
fadeoutTime = Z2Param::BGM_CROSS_FADEOUT_TIME;
|
|
break;
|
|
}
|
|
|
|
if (bgmID == getSubBgmID()) {
|
|
if (bgmID == Z2BGM_SUMO
|
|
#if PLATFORM_GCN
|
|
|| bgmID == Z2BGM_COWBOY_GAME
|
|
#endif
|
|
) {
|
|
mSubBgmHandle->stop(0);
|
|
mSubBgmHandle.releaseSound();
|
|
} else {
|
|
field_0xb8 = -1;
|
|
return;
|
|
}
|
|
} else if (mSubBgmHandle) {
|
|
subBgmStop();
|
|
subBgmStopInner();
|
|
}
|
|
|
|
Z2GetSoundMgr()->startSound(bgmID, &mSubBgmHandle, NULL);
|
|
mSubBgmStatus = 0xff;
|
|
|
|
switch (bgmID) {
|
|
case Z2BGM_HORSE_BATTLE:
|
|
case Z2BGM_FACE_OFF_BATTLE2:
|
|
changeSubBgmStatus(0);
|
|
break;
|
|
case Z2BGM_VARIANT:
|
|
case Z2BGM_TN_MBOSS:
|
|
bgmStreamStop(0);
|
|
// fallthrough
|
|
case Z2BGM_TN_MBOSS_LV9:
|
|
mStreamBgmMaster.fadeIn(0);
|
|
// fallthrough
|
|
case Z2BGM_RODEO:
|
|
changeSubBgmStatus(1);
|
|
break;
|
|
}
|
|
|
|
if (fadeinTime != 0) {
|
|
mSubBgmMaster.fadeInFromOut(fadeinTime);
|
|
} else {
|
|
mSubBgmMaster.forceIn();
|
|
}
|
|
|
|
if (fadeoutTime >= 0) {
|
|
mMainBgmMaster.fadeOut(fadeoutTime);
|
|
}
|
|
|
|
field_0xb8 = -1;
|
|
|
|
#if DEBUG
|
|
if (bgmID == Z2BGM_HIDDEN_VIL_D1) {
|
|
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());
|
|
OS_REPORT(" windStoneVol::%.2f \n", mWindStone.get());
|
|
OS_REPORT(" twilightGateVol::%.2f \n", mTwilightGateVol);
|
|
}
|
|
#endif
|
|
}
|
|
|
|
void Z2SeqMgr::subBgmStop() {
|
|
switch (getSubBgmID()) {
|
|
case Z2BGM_ITEM_GET:
|
|
case Z2BGM_ITEM_GET_MINI:
|
|
case Z2BGM_OPEN_BOX:
|
|
case Z2BGM_ITEM_GET_ME:
|
|
case Z2BGM_HEART_GET:
|
|
case Z2BGM_FISHING_BARE:
|
|
case Z2BGM_FISHING_GET1:
|
|
case Z2BGM_FISHING_GET2:
|
|
case Z2BGM_FISHING_GET3:
|
|
case Z2BGM_ITEM_GET_INSECT:
|
|
case Z2BGM_ITEM_GET_SMELL:
|
|
case Z2BGM_ITEM_GET_POU:
|
|
case Z2BGM_SNOWBOARD_WIN:
|
|
case Z2BGM_SNOWBOARD_LOSE:
|
|
case Z2BGM_MINIGAME_WIN01:
|
|
case Z2BGM_MINIGAME_WIN02:
|
|
case Z2BGM_ITEM_GET_ME_S:
|
|
case Z2BGM_KOMONJO_GET_INTRO:
|
|
return;
|
|
case Z2BGM_LUTERA1:
|
|
case Z2BGM_BOSS_SNOWWOMAN_D1:
|
|
Z2GetStatusMgr()->setDemoName("force_end");
|
|
field_0xb8 = 0;
|
|
break;
|
|
case Z2BGM_HIDDEN_VIL_D1:
|
|
bgmStart(Z2BGM_HIDDEN_VILLAGE, 0, 0);
|
|
// fallthrough
|
|
case Z2BGM_BOSSBABA_0:
|
|
case Z2BGM_MAGNE_GORON:
|
|
case Z2BGM_MAGNE_GORON_D01:
|
|
case Z2BGM_MAGNE_GORON_D02:
|
|
case Z2BGM_DEKUTOAD:
|
|
case Z2BGM_DEKUTOAD_D01:
|
|
case Z2BGM_BOSSFIREMAN_1:
|
|
case Z2BGM_SUMO_D1:
|
|
case Z2BGM_BOSS_OCTAEEL_D01:
|
|
case Z2BGM_BOSS_OCTAEEL_D02:
|
|
case Z2BGM_VARIANT:
|
|
case Z2BGM_DEATH_MOUNTAIN02:
|
|
case Z2BGM_SNOW_BOARD:
|
|
case Z2BGM_IB_MBOSS_D01:
|
|
case Z2BGM_SUMOMO:
|
|
case Z2BGM_RIVER_GAME:
|
|
case Z2BGM_GG_MBOSS_D01:
|
|
case Z2BGM_HARAGIGANT_D01:
|
|
case Z2BGM_HARAGIGANT_D02:
|
|
case Z2BGM_DRAGON_D01:
|
|
case Z2BGM_DRAGON_D02:
|
|
case Z2BGM_YAMIMUSHI_B_D01:
|
|
case Z2BGM_GOMA_D01:
|
|
case Z2BGM_FACE_OFF_BATTLE3:
|
|
case Z2BGM_RIVER_GAME_00:
|
|
field_0xb8 = 0;
|
|
break;
|
|
case Z2BGM_FISHING_HIT:
|
|
setBattleBgmOff(false);
|
|
mSubBgmHandle->stop(23);
|
|
field_0xb8 = 55;
|
|
break;
|
|
case Z2BGM_IB_MBOSS:
|
|
field_0xb8 = 420;
|
|
mSubBgmHandle->stop(45);
|
|
break;
|
|
case Z2BGM_TN_MBOSS:
|
|
field_0xb8 = 510;
|
|
mSubBgmHandle->stop(45);
|
|
break;
|
|
case Z2BGM_TN_MBOSS_LV9:
|
|
field_0xb8 = 360;
|
|
mSubBgmHandle->stop(45);
|
|
break;
|
|
case Z2BGM_GG_MBOSS:
|
|
case Z2BGM_P_ZANT:
|
|
field_0xb8 = 420;
|
|
mSubBgmHandle->stop(45);
|
|
break;
|
|
case Z2BGM_OBACHAN:
|
|
case Z2BGM_POSTMAN:
|
|
setBattleBgmOff(false);
|
|
// fallthrough
|
|
default:
|
|
field_0xb8 = 15;
|
|
break;
|
|
}
|
|
|
|
#if DEBUG
|
|
if (getSubBgmID() == Z2BGM_HIDDEN_VIL_D1) {
|
|
OS_REPORT("[Z2SeqMgr::subBgmStop] HIDDEN_VIL_D01 stop\n");
|
|
}
|
|
#endif
|
|
}
|
|
|
|
void Z2SeqMgr::subBgmStopInner() {
|
|
if (field_0xb8 == -1) {
|
|
return;
|
|
}
|
|
|
|
if (!mSubBgmHandle) {
|
|
return;
|
|
}
|
|
|
|
int fadeTime = Z2Param::BGM_CROSS_FADEOUT_TIME;
|
|
switch (getSubBgmID()) {
|
|
case Z2BGM_MAGNE_GORON:
|
|
case Z2BGM_MAGNE_GORON_D01:
|
|
case Z2BGM_DEKUTOAD:
|
|
case Z2BGM_DEKUTOAD_D01:
|
|
case Z2BGM_SUMO_D1:
|
|
case Z2BGM_VARIANT:
|
|
case Z2BGM_IB_MBOSS_D01:
|
|
fadeTime = 10;
|
|
break;
|
|
case Z2BGM_LUTERA1:
|
|
fadeTime = 50;
|
|
break;
|
|
case Z2BGM_RIVER_GAME:
|
|
case Z2BGM_RIVER_GAME_00:
|
|
fadeTime = 33;
|
|
setBattleBgmOff(false);
|
|
break;
|
|
case Z2BGM_SNOW_BOARD:
|
|
fadeTime = 90;
|
|
setBattleBgmOff(false);
|
|
break;
|
|
}
|
|
|
|
mSubBgmHandle->stop(fadeTime);
|
|
mSubBgmHandle.releaseSound();
|
|
mMainBgmMaster.fadeIn(Z2Param::BGM_CROSS_FADEOUT_TIME);
|
|
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);
|
|
}
|
|
|
|
Z2GetSoundMgr()->startSound(bgmID, &mStreamBgmHandle, NULL);
|
|
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) {
|
|
return;
|
|
}
|
|
mMainBgmHandle->stop(Z2Param::BGM_CROSS_FADEOUT_TIME);
|
|
return;
|
|
case 0x2000038:
|
|
if (mMainBgmHandle) {
|
|
mMainBgmHandle->stop(0);
|
|
}
|
|
// fallthrough
|
|
case 0x2000003:
|
|
case 0x2000047:
|
|
case 0x200005f:
|
|
mStreamBgmMaster.fadeOut(0);
|
|
return;
|
|
case 0x200007c:
|
|
mStreamBgmMaster.fadeOut(45);
|
|
return;
|
|
case 0x200003f:
|
|
case 0x200005c:
|
|
Z2GetStatusMgr()->setDemoName("force_start");
|
|
break;
|
|
}
|
|
|
|
mStreamBgmMaster.fadeOut(Z2Param::BGM_CROSS_FADEOUT_TIME);
|
|
}
|
|
|
|
|
|
bool Z2SeqMgr::bgmStreamCheckReady() {
|
|
if (mStreamBgmHandle) {
|
|
return mStreamBgmHandle->isPrepared();
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
void Z2SeqMgr::bgmStreamPlay() {
|
|
if (mStreamBgmHandle) {
|
|
mStreamBgmHandle->unlockIfLocked();
|
|
}
|
|
|
|
if (getStreamBgmID() == -1) {
|
|
if (mMainBgmHandle) {
|
|
mMainBgmHandle->stop(30);
|
|
}
|
|
}
|
|
|
|
#if !PLATFORM_SHIELD
|
|
else if (getStreamBgmID() == 0x2000000) {
|
|
if (mStreamBgmHandle) {
|
|
mStreamBgmHandle->stop();
|
|
}
|
|
bgmStart(Z2BGM_MENU_SELECT, 0, 0);
|
|
}
|
|
#endif
|
|
}
|
|
|
|
void Z2SeqMgr::bgmStreamStop(u32 fadeTime) {
|
|
if (getStreamBgmID() == 0x200003f || getStreamBgmID() == 0x200005c) {
|
|
Z2GetStatusMgr()->setDemoName("force_end");
|
|
}
|
|
|
|
if (mStreamBgmHandle) {
|
|
mStreamBgmHandle->stop(fadeTime);
|
|
}
|
|
|
|
mStreamBgmHandle.releaseSound();
|
|
}
|
|
|
|
void Z2SeqMgr::changeBgmStatus(s32 status) {
|
|
if (mMainBgmHandle) {
|
|
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
|
|
|
|
switch (getMainBgmID()) {
|
|
case Z2BGM_TOAL_VILLEGE:
|
|
if (status == mBgmStatus) {
|
|
return;
|
|
}
|
|
|
|
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;
|
|
}
|
|
|
|
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;
|
|
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);
|
|
break;
|
|
default:
|
|
if (getSubBgmID() == Z2BGM_DEATH_MOUNTAIN02) {
|
|
subBgmStop();
|
|
}
|
|
}
|
|
return;
|
|
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;
|
|
}
|
|
|
|
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);
|
|
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 {
|
|
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;
|
|
} 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, 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) {
|
|
if (!mSubBgmHandle) {
|
|
return;
|
|
}
|
|
|
|
u32 moveTime = 0;
|
|
bool bvar2 = true;
|
|
|
|
switch (getSubBgmID()) {
|
|
case Z2BGM_DEKUTOAD:
|
|
if (status == 1 && mSubBgmStatus == 2) {
|
|
mSubBgmMaster.forceOut();
|
|
mDekuToadCount = 100;
|
|
} else if (status == 3) {
|
|
mSubBgmMaster.forceOut();
|
|
mDekuToadCount = 30;
|
|
}
|
|
break;
|
|
case Z2BGM_HORSE_BATTLE:
|
|
if (status == mSubBgmStatus) {
|
|
return;
|
|
}
|
|
|
|
if (status != 2) {
|
|
bvar2 = false;
|
|
if (mSubBgmStatus != 0xff) {
|
|
moveTime = 40;
|
|
}
|
|
}
|
|
|
|
if (status == 1) {
|
|
setChildTrackVolume(&mSubBgmHandle, 0, 0.0f, 60, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 1, 0.0f, 60, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 11, 1.0f, 60, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 12, 1.0f, 60, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 13, 1.0f, 60, -1.0f, -1.0f);
|
|
} else {
|
|
setChildTrackVolume(&mSubBgmHandle, 0, 1.0f, moveTime, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 1, 1.0f, moveTime, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 11, 0.0f, moveTime, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 12, 0.0f, moveTime, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 13, 0.0f, moveTime, -1.0f, -1.0f);
|
|
}
|
|
break;
|
|
case Z2BGM_FACE_OFF_BATTLE2:
|
|
if (status == mSubBgmStatus) {
|
|
return;
|
|
}
|
|
|
|
bvar2 = false;
|
|
if (mSubBgmStatus != 0xff) {
|
|
moveTime = 30;
|
|
}
|
|
|
|
if (status == 1) {
|
|
setChildTrackVolume(&mSubBgmHandle, 0, 0.0f, 10, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 10, 0.0f, 10, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 11, 1.0f, 10, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 12, 1.0f, 10, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 13, 1.0f, 10, -1.0f, -1.0f);
|
|
} else {
|
|
setChildTrackVolume(&mSubBgmHandle, 0, 1.0f, moveTime, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 10, 1.0f, moveTime, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 11, 0.0f, moveTime, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 12, 0.0f, moveTime, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 13, 0.0f, moveTime, -1.0f, -1.0f);
|
|
}
|
|
break;
|
|
case Z2BGM_RODEO:
|
|
if (status == mSubBgmStatus) {
|
|
break;
|
|
}
|
|
|
|
if (status == 1) {
|
|
if (mSubBgmStatus != 0xff) {
|
|
moveTime = 60;
|
|
}
|
|
setChildTrackVolume(&mSubBgmHandle, 9, 1.0f, moveTime, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 10, 0.0f, moveTime, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 11, 0.0f, moveTime, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 12, 0.0f, moveTime, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 13, 0.0f, moveTime, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 14, 0.0f, moveTime, -1.0f, -1.0f);
|
|
} else if (status == 2) {
|
|
if (mSubBgmStatus != 0xff) {
|
|
moveTime = 20;
|
|
}
|
|
setChildTrackVolume(&mSubBgmHandle, 9, 0.0f, moveTime, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 10, 1.0f, moveTime, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 11, 1.0f, moveTime, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 12, 1.0f, moveTime, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 13, 1.0f, moveTime, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 14, 1.0f, moveTime, -1.0f, -1.0f);
|
|
}
|
|
break;
|
|
case Z2BGM_VARIANT:
|
|
switch (status) {
|
|
case 1:
|
|
switch (mSubBgmStatus) {
|
|
case 2:
|
|
setChildTrackVolume(&mSubBgmHandle, 0, 1.0f, 15, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 8, 0.0f, 15, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 9, 0.0f, 15, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 10, 0.0f, 15, -1.0f, -1.0f);
|
|
break;
|
|
case 3:
|
|
Z2GetSoundStarter()->setPortData(&mSubBgmHandle, 9, 1, -1);
|
|
return;
|
|
}
|
|
break;
|
|
case 2:
|
|
setChildTrackVolume(&mSubBgmHandle, 0, 0.0f, 10, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 8, 1.0f, 10, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 9, 1.0f, 10, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 10, 1.0f, 10, -1.0f, -1.0f);
|
|
break;
|
|
}
|
|
break;
|
|
case Z2BGM_BATTLE_TWILIGHT:
|
|
if (mSubBgmStatus == status) {
|
|
return;
|
|
}
|
|
|
|
if (mSubBgmStatus != 0xff) {
|
|
moveTime = 25;
|
|
}
|
|
|
|
bvar2 = false;
|
|
if (status == 2) {
|
|
setChildTrackVolume(&mSubBgmHandle, 2, 1.0f, moveTime, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 3, 1.0f, moveTime, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 4, 1.0f, moveTime, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 5, 1.0f, moveTime, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 6, 0.0f, moveTime, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 7, 0.0f, moveTime, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 8, 0.0f, moveTime, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 9, 0.0f, moveTime, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 10, 0.0f, moveTime, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 11, 0.0f, moveTime, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 12, 0.0f, moveTime, -1.0f, -1.0f);
|
|
} else if (status == 3) {
|
|
setChildTrackVolume(&mSubBgmHandle, 2, 0.0f, 0, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 3, 0.0f, 0, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 4, 0.0f, 0, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 5, 1.0f, 0, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 6, 1.0f, 0, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 7, 1.0f, 0, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 8, 1.0f, 0, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 9, 1.0f, 0, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 10, 1.0f, 0, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 11, 1.0f, 0, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 12, 1.0f, 0, -1.0f, -1.0f);
|
|
} else {
|
|
setChildTrackVolume(&mSubBgmHandle, 2, 0.0f, moveTime, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 3, 0.0f, moveTime, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 4, 1.0f, moveTime, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 5, 0.0f, moveTime, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 6, 0.0f, moveTime, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 7, 0.0f, moveTime, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 8, 0.0f, moveTime, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 9, 0.0f, moveTime, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 10, 0.0f, moveTime, -1.0f, -1.0f);
|
|
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) {
|
|
Z2GetSoundStarter()->setPortData(&mSubBgmHandle, 9, status, -1);
|
|
}
|
|
|
|
mSubBgmStatus = status & 0xff;
|
|
}
|
|
|
|
void Z2SeqMgr::onVariantBgmJumpEnd(bool param_0) {
|
|
if (param_0) {
|
|
u32 moveTime = 0;
|
|
if (mSubBgmStatus == 3) {
|
|
moveTime = 45;
|
|
mSubBgmStatus = 1;
|
|
}
|
|
setChildTrackVolume(&mSubBgmHandle, 8, 0.0f, moveTime, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 9, 0.0f, moveTime, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 10, 0.0f, moveTime, -1.0f, -1.0f);
|
|
} else {
|
|
setChildTrackVolume(&mSubBgmHandle, 0, 1.0f, 0, -1.0f, -1.0f);
|
|
}
|
|
|
|
Z2GetSoundMgr()->getSeqMgr()->calc();
|
|
Z2GetSoundMgr()->getSeqMgr()->mixOut();
|
|
}
|
|
|
|
void Z2SeqMgr::changeFishingBgm(s32 param_0) {
|
|
switch (param_0) {
|
|
case 0:
|
|
if (getSubBgmID() == Z2BGM_FISHING_HIT) {
|
|
subBgmStop();
|
|
}
|
|
unMuteSceneBgm(Z2Param::BGM_CROSS_FADEOUT_TIME);
|
|
break;
|
|
case 1:
|
|
if (getSubBgmID() == Z2BGM_FISHING_HIT) {
|
|
subBgmStop();
|
|
}
|
|
muteSceneBgm(2, 0.5f);
|
|
break;
|
|
case 2:
|
|
subBgmStart(Z2BGM_FISHING_HIT);
|
|
muteSceneBgm(1, 0.0f);
|
|
break;
|
|
case 4:
|
|
if (getSubBgmID() == Z2BGM_FISHING_HIT) {
|
|
subBgmStop();
|
|
}
|
|
muteSceneBgm(1, 0.0f);
|
|
break;
|
|
}
|
|
}
|
|
|
|
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;
|
|
}
|
|
|
|
mBgmPause.move(Z2Param::VOL_BGM_TALKING, 2);
|
|
}
|
|
|
|
void Z2SeqMgr::talkOutBgm() {
|
|
mBgmPause.move(Z2Param::VOL_BGM_DEFAULT, 2);
|
|
}
|
|
|
|
void Z2SeqMgr::menuInBgm() {
|
|
mBgmPause.move(Z2Param::VOL_BGM_PAUSING, 2);
|
|
}
|
|
|
|
void Z2SeqMgr::menuOutBgm() {
|
|
mBgmPause.move(Z2Param::VOL_BGM_DEFAULT, 2);
|
|
}
|
|
|
|
void Z2SeqMgr::fanfareFramework() {
|
|
u8 r30;
|
|
switch (mFanfareID) {
|
|
case Z2BGM_OPEN_BOX:
|
|
mFanfareCount = 150;
|
|
// fallthrough
|
|
case Z2BGM_KOMONJO_GET_INTRO:
|
|
Z2GetSoundMgr()->startSound(mFanfareID, &mFanfareHandle, 0);
|
|
mFanfareMute.fadeOut(1);
|
|
mFanfareID.setAnonymous();
|
|
break;
|
|
case Z2BGM_ITEM_GET_ME:
|
|
if (mFanfareCount == 0) {
|
|
Z2GetSoundMgr()->startSound(mFanfareID, &mFanfareHandle, 0);
|
|
mFanfareCount = 25;
|
|
}
|
|
if (mFanfareCount == 1) {
|
|
mFanfareMute.fadeOut(1);
|
|
mFanfareID.setAnonymous();
|
|
mFanfareCount = 0;
|
|
}
|
|
break;
|
|
case Z2BGM_FISHING_BARE:
|
|
case Z2BGM_FISHING_GET1:
|
|
case Z2BGM_FISHING_GET2:
|
|
case Z2BGM_FISHING_GET3:
|
|
changeFishingBgm(0);
|
|
// fallthrough
|
|
case Z2BGM_ITEM_GET:
|
|
case Z2BGM_ITEM_GET_MINI:
|
|
case Z2BGM_HEART_GET:
|
|
case Z2BGM_ITEM_GET_INSECT:
|
|
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);
|
|
mFanfareID.setAnonymous();
|
|
}
|
|
break;
|
|
case Z2BGM_HOWL_TOBIKUSA:
|
|
case Z2BGM_HOWL_UMAKUSA:
|
|
case Z2BGM_HOWL_ZELDASONG:
|
|
case Z2BGM_HOWL_LIGHT_PRLD:
|
|
case Z2BGM_LIGHT_PRLD_DUO:
|
|
case Z2BGM_SOUL_REQ_HOWL:
|
|
case Z2BGM_SOUL_REQ_DUO:
|
|
case Z2BGM_HEALING_HOWL:
|
|
case Z2BGM_HEALING_DUO:
|
|
case Z2BGM_NEW_01_HOWL:
|
|
case Z2BGM_NEW_01_DUO:
|
|
case Z2BGM_NEW_02_HOWL:
|
|
case Z2BGM_NEW_02_DUO:
|
|
case Z2BGM_NEW_03_HOWL:
|
|
case Z2BGM_NEW_03_DUO:
|
|
if (mFanfareCount == 0) {
|
|
mFanfareCount = 50;
|
|
mFanfareMute.fadeOut(30);
|
|
} else if (mFanfareCount == 1) {
|
|
Z2GetSoundMgr()->startSound(mFanfareID, &mFanfareHandle, 0);
|
|
mFanfareID.setAnonymous();
|
|
}
|
|
break;
|
|
}
|
|
|
|
if (!isItemGetDemo() && mFanfareMute.getDest() != 1.0f) {
|
|
mFanfareMute.fadeIn(Z2Param::BGM_CROSS_FADEIN_TIME);
|
|
}
|
|
if (mFanfareCount != 0) {
|
|
mFanfareCount--;
|
|
}
|
|
}
|
|
|
|
void Z2SeqMgr::stopWolfHowlSong() {
|
|
switch (mFanfareID) {
|
|
case Z2BGM_HOWL_TOBIKUSA:
|
|
case Z2BGM_HOWL_UMAKUSA:
|
|
case Z2BGM_HOWL_ZELDASONG:
|
|
case Z2BGM_HOWL_LIGHT_PRLD:
|
|
case Z2BGM_LIGHT_PRLD_DUO:
|
|
case Z2BGM_SOUL_REQ_HOWL:
|
|
case Z2BGM_SOUL_REQ_DUO:
|
|
case Z2BGM_HEALING_HOWL:
|
|
case Z2BGM_HEALING_DUO:
|
|
case Z2BGM_NEW_01_HOWL:
|
|
case Z2BGM_NEW_01_DUO:
|
|
case Z2BGM_NEW_02_HOWL:
|
|
case Z2BGM_NEW_02_DUO:
|
|
case Z2BGM_NEW_03_HOWL:
|
|
case Z2BGM_NEW_03_DUO:
|
|
mFanfareID.setAnonymous();
|
|
mFanfareCount = 0;
|
|
break;
|
|
}
|
|
|
|
if (mFanfareHandle) {
|
|
switch (mFanfareHandle->getID()) {
|
|
case Z2BGM_HOWL_TOBIKUSA:
|
|
case Z2BGM_HOWL_UMAKUSA:
|
|
case Z2BGM_HOWL_ZELDASONG:
|
|
case Z2BGM_HOWL_LIGHT_PRLD:
|
|
case Z2BGM_LIGHT_PRLD_DUO:
|
|
case Z2BGM_SOUL_REQ_HOWL:
|
|
case Z2BGM_SOUL_REQ_DUO:
|
|
case Z2BGM_HEALING_HOWL:
|
|
case Z2BGM_HEALING_DUO:
|
|
case Z2BGM_NEW_01_HOWL:
|
|
case Z2BGM_NEW_01_DUO:
|
|
case Z2BGM_NEW_02_HOWL:
|
|
case Z2BGM_NEW_02_DUO:
|
|
case Z2BGM_NEW_03_HOWL:
|
|
case Z2BGM_NEW_03_DUO:
|
|
mFanfareHandle->stop(30);
|
|
}
|
|
}
|
|
}
|
|
|
|
void Z2SeqMgr::setHeightVolMod(bool isVolMod, u32 fadeTime) {
|
|
mFlags.mHeightVolMod = isVolMod;
|
|
if (!isVolMod) {
|
|
field_0x84.fadeIn(fadeTime);
|
|
}
|
|
}
|
|
|
|
void Z2SeqMgr::setTimeProcVolMod(bool isVolMod, u32 fadeTime) {
|
|
mFlags.mTimeProcVolMod = isVolMod;
|
|
}
|
|
|
|
static f32 sDeathMtBottom = -1000.0f;
|
|
|
|
static f32 sDeathMtTop = 3650.0f;
|
|
|
|
static f32 sUnderWaterDepthMax = 3500.0f;
|
|
|
|
void Z2SeqMgr::processBgmFramework() {
|
|
fanfareFramework();
|
|
battleBgmFramework();
|
|
mbossBgmMuteProcess();
|
|
fieldBgmFramework();
|
|
|
|
if (!mStreamBgmHandle && mStreamBgmMaster.getDest() != 1.0f) {
|
|
mStreamBgmMaster.fadeIn(Z2Param::BGM_CROSS_FADEIN_TIME);
|
|
}
|
|
|
|
if (field_0xb8 != -1) {
|
|
if (field_0xb8 > 0) {
|
|
field_0xb8--;
|
|
} else {
|
|
subBgmStopInner();
|
|
field_0xb8 = -1;
|
|
}
|
|
} else if (!mSubBgmHandle && mMainBgmMaster.getDest() != 1.0f) {
|
|
mMainBgmMaster.fadeIn(Z2Param::BGM_CROSS_FADEIN_TIME);
|
|
}
|
|
|
|
if (mFlags.mTimeProcVolMod) {
|
|
if (Z2GetStatusMgr()->checkDayTime() && field_0xa4.getDest() != 1.0f) {
|
|
field_0xa4.fadeIn(600);
|
|
} else if (!Z2GetStatusMgr()->checkDayTime() && field_0xa4.getDest() != 0.0f) {
|
|
field_0xa4.fadeOut(600);
|
|
}
|
|
}
|
|
|
|
if (mFlags.mHeightVolMod && Z2GetSceneMgr()->isSceneExist()
|
|
&& Z2GetLink() != NULL && Z2GetLink()->getCurrentPos() != NULL)
|
|
{
|
|
f32 link_y = Z2GetLink()->getCurrentPos()->y;
|
|
f32 depth;
|
|
switch (getMainBgmID()) {
|
|
case Z2BGM_DEATH_MOUNTAIN01:
|
|
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) {
|
|
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:
|
|
case Z2BGM_FIELD_LINK_NIGHT:
|
|
case Z2BGM_ZORA_VILLAGE:
|
|
case Z2BGM_FISHING:
|
|
case Z2BGM_LAKE:
|
|
depth = Z2GetStatusMgr()->getCameraInWaterDepth();
|
|
if (depth > sUnderWaterDepthMax) {
|
|
field_0x84.forceOut();
|
|
} else if (depth > 0.0f) {
|
|
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);
|
|
}
|
|
break;
|
|
case Z2BGM_SNOW_MOUNTAIN:
|
|
if (Z2GetSceneMgr()->getCurrentRoomNum() == 0) {
|
|
if (link_y > -1500.0f) {
|
|
field_0x84.move(0.3f, 0);
|
|
} else if (link_y > -13000.0f) {
|
|
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();
|
|
}
|
|
} else if (Z2GetSceneMgr()->getCurrentRoomNum() == 1) {
|
|
if (link_y > -4500.0f) {
|
|
field_0x84.fadeOut(30);
|
|
} else if (link_y > -45000.0f) {
|
|
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();
|
|
}
|
|
} else if (Z2GetSceneMgr()->getCurrentRoomNum() == 2) {
|
|
if (link_y > 900.0f) {
|
|
field_0x84.forceOut();
|
|
} else if (link_y > -1500.0f) {
|
|
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);
|
|
}
|
|
}
|
|
break;
|
|
case Z2BGM_DUNGEON_LV9_02:
|
|
changeBgmStatus(link_y);
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (mDekuToadCount != 0) {
|
|
mDekuToadCount--;
|
|
if (getSubBgmID() == Z2BGM_DEKUTOAD) {
|
|
if (mDekuToadCount == 60) {
|
|
mSubBgmMaster.fadeIn(60);
|
|
mDekuToadCount = 0;
|
|
} else if (mDekuToadCount == 0) {
|
|
mSubBgmMaster.fadeIn(30);
|
|
}
|
|
}
|
|
}
|
|
|
|
mAllBgmMaster.calc();
|
|
mBgmPause.calc();
|
|
mFanfareMute.calc();
|
|
mSceneBgm.calc();
|
|
mMainBgmMaster.calc();
|
|
mSubBgmMaster.calc();
|
|
mStreamBgmMaster.calc();
|
|
field_0x84.calc();
|
|
mWindStone.calc();
|
|
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) {
|
|
volume = base_vol * mMainBgmMaster.get() * mSceneBgm.get() * mStreamBgmMaster.get() * field_0x84.get() * field_0xa4.get();
|
|
}
|
|
mMainBgmHandle->getAuxiliary().moveVolume(volume, 0);
|
|
}
|
|
|
|
if (mSubBgmHandle) {
|
|
mSubBgmHandle->getAuxiliary().moveVolume(base_vol * mSubBgmMaster.get() * mStreamBgmMaster.get(), 0);
|
|
}
|
|
|
|
if (mStreamBgmHandle) {
|
|
mStreamBgmHandle->getAuxiliary().moveVolume(base_vol * mMainBgmMaster.get() * mSceneBgm.get(), 0);
|
|
}
|
|
|
|
setWindStoneVol(1.0f, 30);
|
|
}
|
|
|
|
bool Z2SeqMgr::checkBgmIDPlaying(u32 bgmID) {
|
|
if (getMainBgmID() == bgmID) {
|
|
return true;
|
|
}
|
|
|
|
if (getSubBgmID() == bgmID) {
|
|
return true;
|
|
}
|
|
|
|
if (getStreamBgmID() == bgmID) {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
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) {
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
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->getSound()->asSeq();
|
|
if (seq == NULL) {
|
|
return;
|
|
}
|
|
|
|
JASTrack* track = seq->getChildTrack(trackId);
|
|
if (track == NULL) {
|
|
r24 = trackId;
|
|
return;
|
|
}
|
|
|
|
JAISoundChild* child = seq->getChild(trackId);
|
|
if (child == NULL) {
|
|
return;
|
|
}
|
|
|
|
if (volume > 1.0f) {
|
|
volume = 1.0f;
|
|
} else if (volume < 0.0f) {
|
|
volume = 0.0f;
|
|
}
|
|
|
|
child->mMove.moveVolume(volume, moveTime);
|
|
u32 r23 = moveTime;
|
|
if (pan != -1.0f) {
|
|
child->mMove.movePan(pan, moveTime);
|
|
}
|
|
|
|
if (dolby != -1.0f) {
|
|
child->mMove.moveDolby(dolby, moveTime);
|
|
}
|
|
}
|
|
|
|
void Z2SeqMgr::resetBattleBgmParams() {
|
|
if (Z2GetSoundObjMgr() != NULL) {
|
|
Z2GetSoundObjMgr()->setForceBattleArea(false, 700, 1100, 1500);
|
|
}
|
|
}
|
|
|
|
void Z2SeqMgr::setBattleBgmOff(bool isBgmOff) {
|
|
if (mFlags.mBattleBgmOff != isBgmOff && isBgmOff &&
|
|
(getSubBgmID() == Z2BGM_BATTLE_NORMAL || getSubBgmID() == Z2BGM_BATTLE_TWILIGHT))
|
|
{
|
|
stopBattleBgm(Z2Param::BGM_CROSS_FADEOUT_TIME, Z2Param::BGM_CROSS_FADEIN_TIME);
|
|
}
|
|
|
|
mFlags.mBattleBgmOff = isBgmOff;
|
|
}
|
|
|
|
void Z2SeqMgr::setBattleSearched(bool isBattleSearched) {
|
|
if (!mFlags.mBattleBgmOff && Z2GetSceneMgr()->isSceneExist()
|
|
&& mFlags.mBattleSearched != isBattleSearched && mBattleSeqState != 3)
|
|
{
|
|
if (getSubBgmID() == Z2BGM_BATTLE_NORMAL && mBattleSeqState == 1) {
|
|
if (isBattleSearched) {
|
|
setChildTrackVolume(&mSubBgmHandle, 2, 1.0f, Z2Param::FOUND_TRACK_FI_TIME, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 3, 1.0f, Z2Param::FOUND_TRACK_FI_TIME, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 12, 1.0f, Z2Param::FOUND_TRACK_FI_TIME, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 14, 1.0f, Z2Param::FOUND_TRACK_FI_TIME, -1.0f, -1.0f);
|
|
} else {
|
|
setChildTrackVolume(&mSubBgmHandle, 2, 0.0f, Z2Param::FOUND_TRACK_FO_TIME, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 3, 0.0f, Z2Param::FOUND_TRACK_FO_TIME, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 12, 0.0f, Z2Param::FOUND_TRACK_FO_TIME, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mSubBgmHandle, 14, 0.0f, Z2Param::FOUND_TRACK_FO_TIME, -1.0f, -1.0f);
|
|
}
|
|
}
|
|
mFlags.mBattleSearched = isBattleSearched;
|
|
}
|
|
}
|
|
|
|
void Z2SeqMgr::setBattleDistIgnore(bool isBattleDistIgnore) {
|
|
mFlags.mBattleDistIgnore = isBattleDistIgnore;
|
|
}
|
|
|
|
void Z2SeqMgr::setBattleGhostMute(bool isBattleGhostMute) {
|
|
if (getSubBgmID() == Z2BGM_BATTLE_NORMAL) {
|
|
if (isBattleGhostMute) {
|
|
mSubBgmMaster.move(1.0f, 5);
|
|
} else {
|
|
mSubBgmMaster.move(0.4f, 5);
|
|
}
|
|
}
|
|
}
|
|
|
|
void Z2SeqMgr::setBattleDistState(u8 state) {
|
|
if (!mFlags.mBattleBgmOff && Z2GetSceneMgr()->isSceneExist()) {
|
|
if (!mFlags.mBattleDistIgnore) {
|
|
if (state < 2 && mBattleSeqCount != 0) {
|
|
mBattleSeqCount = 0;
|
|
if (getSubBgmID() == Z2BGM_BATTLE_TWILIGHT || getSubBgmID() == Z2BGM_BATTLE_NORMAL)
|
|
{
|
|
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) {
|
|
case 0:
|
|
if (mBattleSeqState == 0) {
|
|
startBattleBgm(true);
|
|
}
|
|
break;
|
|
case 1:
|
|
if (mBattleSeqState == 0) {
|
|
startBattleBgm(true);
|
|
}
|
|
break;
|
|
case 3:
|
|
if (mBattleSeqState != 0) {
|
|
stopBattleBgm(25, 25);
|
|
}
|
|
break;
|
|
}
|
|
} else if (getMainBgmID() != Z2BGM_FIELD_LINK_DAY) {
|
|
switch (state) {
|
|
case 0:
|
|
if (mBattleSeqState == 0) {
|
|
startBattleBgm(true);
|
|
} else if (mBattleSeqState == 1) {
|
|
setChildTrackVolume(&mSubBgmHandle, data_8045086C, 1.0f, Z2Param::CLOSE_BATTLE_TRACK_FI_TIME, -1.0f, -1.0f);
|
|
}
|
|
break;
|
|
case 1:
|
|
if (mBattleSeqState == 0) {
|
|
startBattleBgm(true);
|
|
} else if (mBattleSeqState == 1) {
|
|
setChildTrackVolume(&mSubBgmHandle, data_8045086C, 0.0f, Z2Param::CLOSE_BATTLE_TRACK_FO_TIME, -1.0f, -1.0f);
|
|
}
|
|
break;
|
|
case 2:
|
|
if (mBattleSeqState == 1) {
|
|
setChildTrackVolume(&mSubBgmHandle, data_8045086C, 0.0f, Z2Param::CLOSE_BATTLE_TRACK_FO_TIME, -1.0f, -1.0f);
|
|
}
|
|
break;
|
|
case 3:
|
|
if (mBattleSeqState == 1 || mBattleSeqState == 2) {
|
|
stopBattleBgm(Z2Param::BGM_CROSS_FADEOUT_TIME, Z2Param::BGM_CROSS_FADEIN_TIME);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
mBattleDistState = state;
|
|
}
|
|
}
|
|
|
|
void Z2SeqMgr::setBattleSeqState(u8 state) {
|
|
if (mFlags.mBattleBgmOff) {
|
|
return;
|
|
}
|
|
if (!Z2GetSceneMgr()->isSceneExist()) {
|
|
return;
|
|
}
|
|
if (mBattleSeqState == state) {
|
|
return;
|
|
}
|
|
|
|
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);
|
|
}
|
|
|
|
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;
|
|
}
|
|
}
|
|
|
|
void Z2SeqMgr::setBattleLastHit(u8 lastHit) {
|
|
if (getSubBgmID() == Z2BGM_BATTLE_NORMAL) {
|
|
setBattleDistIgnore(true);
|
|
mSubBgmMaster.move(Z2Param::ENEMY_LASTHIT_MUTE_VOLUME, Z2Param::ENDING_BLOW_VOL_DOWN_TIME);
|
|
field_0xc1 = Z2Param::ENDING_BLOW_MIN_FINISH_TIME;
|
|
mBattleLastHit = lastHit;
|
|
}
|
|
}
|
|
|
|
void Z2SeqMgr::battleBgmFramework() {
|
|
if (getSubBgmID() == Z2BGM_BATTLE_NORMAL || getSubBgmID() == Z2BGM_BATTLE_TWILIGHT) {
|
|
if (mBattleSeqCount != 0) {
|
|
mBattleSeqCount--;
|
|
if (mBattleSeqCount == 0) {
|
|
mSubBgmHandle->stop();
|
|
mBattleSeqState = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (!mFlags.mBattleBgmOff && Z2GetSceneMgr()->isSceneExist()) {
|
|
Z2GetSoundObjMgr()->searchEnemy();
|
|
switch (getSubBgmID()) {
|
|
case Z2BGM_BATTLE_TWILIGHT:
|
|
break;
|
|
case Z2BGM_BATTLE_NORMAL:
|
|
if (getMainBgmID() == Z2BGM_FIELD_LINK_DAY && !Z2GetSoundObjMgr()->isTwilightBattle()) {
|
|
return;
|
|
}
|
|
|
|
if (field_0xc1 != 0) {
|
|
field_0xc1--;
|
|
if (field_0xc1 < mBattleLastHit && mSubBgmMaster.getDest() != 1.0f) {
|
|
mSubBgmMaster.fadeIn(Z2Param::ENDING_BLOW_VOL_LOWER_RECOVER_TIME);
|
|
}
|
|
|
|
if (field_0xc1 == 0) {
|
|
setBattleDistIgnore(false);
|
|
if (Z2GetSoundObjMgr()->checkBattleFinish()) {
|
|
setBattleSeqState(3);
|
|
} else if (mSubBgmMaster.getDest() != 1.0f) {
|
|
mSubBgmMaster.fadeIn(Z2Param::ENDING_BLOW_VOL_LOWER_RECOVER_TIME);
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
default:
|
|
mBattleSeqState = 0;
|
|
setBattleDistIgnore(false);
|
|
mFlags.mBattleSearched = 0;
|
|
field_0xc1 = 0;
|
|
mBattleLastHit = Z2Param::ENDING_BLOW_VOL_LOWER_TIME;
|
|
}
|
|
}
|
|
}
|
|
|
|
void Z2SeqMgr::startBattleBgm(bool isFadeIn) {
|
|
if (mFlags.mBattleBgmOff) {
|
|
return;
|
|
}
|
|
if (!Z2GetSceneMgr()->isSceneExist()) {
|
|
return;
|
|
}
|
|
if (mBattleSeqState) {
|
|
return;
|
|
}
|
|
if (!mFlags.mBattleDistIgnore && mBattleDistState > 1) {
|
|
return;
|
|
}
|
|
|
|
JAISoundID bgm_id = Z2BGM_BATTLE_NORMAL;
|
|
if (Z2GetSceneMgr()->isInDarkness() || Z2GetSoundObjMgr()->isTwilightBattle()) {
|
|
bgm_id = Z2BGM_BATTLE_TWILIGHT;
|
|
}
|
|
|
|
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;
|
|
|
|
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) {
|
|
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() {
|
|
if (Z2GetSceneMgr()->isSceneExist() && mFlags.mFieldBgmPlay) {
|
|
if (Z2GetStatusMgr()->checkDayTime()) {
|
|
Z2GetSoundMgr()->startSound(Z2BGM_FIELD_LINK_DAY, &mMainBgmHandle, NULL);
|
|
changeBgmStatus(0);
|
|
field_0xc4 = 0;
|
|
|
|
if (Z2GetLink()->isRiding()) {
|
|
mFlags.mRiding = true;
|
|
mRideCount = 0;
|
|
fieldRidingMute();
|
|
} else {
|
|
mFlags.mRiding = false;
|
|
mRideCount = 0;
|
|
fieldRidingMute();
|
|
}
|
|
} else {
|
|
Z2GetSoundMgr()->startSound(Z2BGM_FIELD_LINK_NIGHT, &mMainBgmHandle, NULL);
|
|
mBgmStatus = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
void Z2SeqMgr::fieldRidingMute() {
|
|
f32 volume1, volume2;
|
|
if (Z2GetSceneMgr()->isSceneExist() && mMainBgmHandle) {
|
|
if (mFlags.mRiding) {
|
|
volume1 = 1.0f;
|
|
volume2 = 0.0f;
|
|
} else {
|
|
volume1 = 0.0f;
|
|
volume2 = 1.0f;
|
|
}
|
|
|
|
setChildTrackVolume(&mMainBgmHandle, 5, volume1, mRideCount, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mMainBgmHandle, 6, volume1, mRideCount, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mMainBgmHandle, 7, volume1, mRideCount, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mMainBgmHandle, 8, volume1, mRideCount, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mMainBgmHandle, 9, volume1, mRideCount, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mMainBgmHandle, 10, volume1, mRideCount, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mMainBgmHandle, 11, volume1, mRideCount, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mMainBgmHandle, 12, volume2, mRideCount, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mMainBgmHandle, 13, volume2, mRideCount, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mMainBgmHandle, 14, volume2, mRideCount, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mMainBgmHandle, 15, volume2, mRideCount, -1.0f, -1.0f);
|
|
}
|
|
}
|
|
|
|
void Z2SeqMgr::onFieldBgmJumpStart() {
|
|
field_0xc8 = getChildTrackVolume(&mMainBgmHandle, 5);
|
|
field_0xcc = getChildTrackVolume(&mMainBgmHandle, 12);
|
|
}
|
|
|
|
void Z2SeqMgr::onFieldBgmJumpEnd() {
|
|
setChildTrackVolume(&mMainBgmHandle, 5, field_0xc8, 0, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mMainBgmHandle, 6, field_0xc8, 0, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mMainBgmHandle, 7, field_0xc8, 0, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mMainBgmHandle, 8, field_0xc8, 0, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mMainBgmHandle, 9, field_0xc8, 0, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mMainBgmHandle, 10, field_0xc8, 0, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mMainBgmHandle, 11, field_0xc8, 0, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mMainBgmHandle, 12, field_0xcc, 0, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mMainBgmHandle, 13, field_0xcc, 0, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mMainBgmHandle, 14, field_0xcc, 0, -1.0f, -1.0f);
|
|
setChildTrackVolume(&mMainBgmHandle, 15, field_0xcc, 0, -1.0f, -1.0f);
|
|
|
|
Z2GetSoundMgr()->getSeqMgr()->calc();
|
|
Z2GetSoundMgr()->getSeqMgr()->mixOut();
|
|
|
|
if (mRideCount != 0) {
|
|
fieldRidingMute();
|
|
}
|
|
}
|
|
|
|
void Z2SeqMgr::fieldBgmFramework() {
|
|
if (Z2GetSceneMgr()->isSceneExist() && !Z2GetSceneMgr()->isInDarkness()
|
|
&& (Z2GetSceneMgr()->getCurrentSceneNum() == Z2SCENE_HYRULE_FIELD || Z2GetSceneMgr()->getCurrentSceneNum() == Z2SCENE_CASTLE_TOWN_GATES)
|
|
&& mFlags.mFieldBgmPlay)
|
|
{
|
|
if (mRideCount != 0) {
|
|
mRideCount--;
|
|
}
|
|
|
|
if (getMainBgmID() == Z2BGM_FIELD_LINK_DAY) {
|
|
field_0xc4 = Z2GetSoundStarter()->getPortData(&mMainBgmHandle, 10, -1);
|
|
if (Z2GetStatusMgr()->isPaused()) {
|
|
changeBgmStatus(13);
|
|
} else {
|
|
if (field_0xc4 != 16) {
|
|
if (mFlags.mRiding != Z2GetLink()->isRiding()) {
|
|
mFlags.mRiding = Z2GetLink()->isRiding();
|
|
mRideCount = 50;
|
|
fieldRidingMute();
|
|
}
|
|
}
|
|
|
|
if (field_0xc4 == 0 || field_0xc4 == 21 || field_0xc4 == 22
|
|
|| field_0xc4 == 23 || field_0xc4 == 24) {
|
|
return;
|
|
}
|
|
|
|
if (Z2GetStatusMgr()->getDemoStatus() == 10) {
|
|
switch (field_0xc4) {
|
|
case 7:
|
|
case 8:
|
|
case 9:
|
|
case 10:
|
|
case 11:
|
|
case 12:
|
|
case 13:
|
|
case 14:
|
|
case 15:
|
|
case 17:
|
|
case 18:
|
|
case 19:
|
|
case 20:
|
|
changeBgmStatus(2);
|
|
break;
|
|
default:
|
|
changeBgmStatus(13);
|
|
break;
|
|
}
|
|
} else if (mBattleDistState <= 2) {
|
|
if ((field_0xc4 < 7 || field_0xc4 > 15) && mBattleDistState <= 1) {
|
|
switch (field_0xc4) {
|
|
case 2:
|
|
changeBgmStatus(7);
|
|
break;
|
|
case 3:
|
|
changeBgmStatus(6);
|
|
break;
|
|
case 4:
|
|
changeBgmStatus(5);
|
|
break;
|
|
case 0:
|
|
case 1:
|
|
case 5:
|
|
case 7:
|
|
case 19:
|
|
case 20:
|
|
default:
|
|
changeBgmStatus(4);
|
|
break;
|
|
}
|
|
}
|
|
} else if (Z2GetStatusMgr()->checkDayTime()) {
|
|
if (Z2GetLink()->getMovingTime() < 150) {
|
|
switch (field_0xc4) {
|
|
case 3:
|
|
if (mFlags.mRiding && Z2GetSoundObjMgr()->getEnemyNumVeryFar() == 0) {
|
|
changeBgmStatus(3);
|
|
}
|
|
break;
|
|
case 7:
|
|
case 8:
|
|
case 9:
|
|
case 10:
|
|
case 11:
|
|
case 12:
|
|
case 13:
|
|
case 14:
|
|
case 15:
|
|
case 17:
|
|
case 18:
|
|
case 19:
|
|
case 20:
|
|
changeBgmStatus(2);
|
|
break;
|
|
default:
|
|
changeBgmStatus(13);
|
|
break;
|
|
}
|
|
} else {
|
|
switch (field_0xc4) {
|
|
case 2:
|
|
case 3:
|
|
changeBgmStatus(13);
|
|
break;
|
|
default:
|
|
changeBgmStatus(12);
|
|
break;
|
|
}
|
|
}
|
|
} else {
|
|
if (field_0xc4 >= 7 && field_0xc4 <= 15 && Z2GetStatusMgr()->getHour() >= 20) {
|
|
mMainBgmHandle->stop(60);
|
|
mMainBgmHandle.releaseSound();
|
|
} else {
|
|
switch (field_0xc4) {
|
|
case 2:
|
|
case 3:
|
|
break;
|
|
case 17:
|
|
case 18:
|
|
case 19:
|
|
case 20:
|
|
changeBgmStatus(11);
|
|
break;
|
|
default:
|
|
changeBgmStatus(10);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else if (getMainBgmID() == Z2BGM_FIELD_LINK_NIGHT) {
|
|
if (!Z2GetStatusMgr()->isPaused()) {
|
|
u8 hour = Z2GetStatusMgr()->getHour();
|
|
if (hour >= 5 && hour < 20) {
|
|
mMainBgmHandle->stop(60);
|
|
mMainBgmHandle.releaseSound();
|
|
}
|
|
}
|
|
} else if (getMainBgmID() == -1 && !Z2GetStatusMgr()->isPaused() && mBattleSeqState == 0) {
|
|
u8 hour = Z2GetStatusMgr()->getHour();
|
|
if (hour >= 6 && hour < 19) {
|
|
if (hour >= 8) {
|
|
Z2GetSoundMgr()->startSound(Z2BGM_FIELD_LINK_DAY, &mMainBgmHandle, NULL);
|
|
changeBgmStatus(9);
|
|
field_0xc4 = 24;
|
|
} else {
|
|
Z2GetSoundMgr()->startSound(Z2BGM_FIELD_LINK_DAY, &mMainBgmHandle, NULL);
|
|
changeBgmStatus(8);
|
|
field_0xc4 = 23;
|
|
}
|
|
|
|
if (Z2GetLink()->isRiding()) {
|
|
mFlags.mRiding = true;
|
|
mRideCount = 0;
|
|
fieldRidingMute();
|
|
} else {
|
|
mFlags.mRiding = false;
|
|
mRideCount = 0;
|
|
fieldRidingMute();
|
|
}
|
|
} else if (hour >= 20 || hour < 5) {
|
|
Z2GetSoundMgr()->startSound(Z2BGM_FIELD_LINK_NIGHT, &mMainBgmHandle, NULL);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void Z2SeqMgr::mbossBgmMuteProcess() {}
|
|
|
|
void Z2SeqMgr::bgmSetSwordUsing(s32 param_0) {}
|
|
|
|
void Z2SeqMgr::bgmNowBattle(f32 param_0) {}
|
|
|
|
void Z2SeqMgr::taktModeMute() {
|
|
mBgmPause.move(0.3f, 10);
|
|
}
|
|
|
|
void Z2SeqMgr::taktModeMuteOff() {
|
|
mBgmPause.fadeIn(10);
|
|
}
|