Z2AudioLib debug (#3016)

This commit is contained in:
Jcw87
2026-01-05 03:54:00 -08:00
committed by GitHub
parent 1d2a0d9568
commit 767e3ba17e
14 changed files with 790 additions and 714 deletions
+1
View File
@@ -13,6 +13,7 @@ struct JASSoundParams;
*/
struct JASNonCopyable {
JASNonCopyable() {}
~JASNonCopyable() {}
/* 0x0 */ int field_0x0;
}; // Size: 0x4
+1 -1
View File
@@ -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); }
+8
View File
@@ -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;
+3 -7
View File
@@ -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() {
+6
View File
@@ -9,6 +9,12 @@ u16 seqCallback(JASTrack* track, u16 command);
class Z2SoundMgr : public JASGlobalInstance<Z2SoundMgr> {
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);
+1 -1
View File
@@ -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<Z2CreatureEnemy>* getEnemyList() { return this; }
+1 -1
View File
@@ -37,7 +37,7 @@ struct Z2StatusMgr : public JASGlobalInstance<Z2StatusMgr> {
/* 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;
+4
View File
@@ -24,6 +24,7 @@ bool Z2AudioArcLoader::readCommandMore(u32 command) {
}
void Z2AudioArcLoader::readBFCA(const void* addr) {
{
JUT_ASSERT(76, addr);
JKRHeap* heap = JAUSectionHeap::getInstance()->getHeap();
@@ -33,10 +34,12 @@ void Z2AudioArcLoader::readBFCA(const void* addr) {
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<JAUSectionHeap>::getInstance();
JUT_ASSERT(97, sectionHeap);
@@ -72,5 +75,6 @@ void Z2AudioArcLoader::readBSTN(const void* addr, u32 param_1) {
sectionData.mBstnDst = bstnDst;
JKRSetCurrentHeap(heap);
}
#endif
}
+1 -1
View File
@@ -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;
}
+12
View File
@@ -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;
+15 -25
View File
@@ -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,7 +752,10 @@ void Z2SeMgr::messageSePlay(u16 param_0, Vec* param_1, s8 param_2) {
}
void Z2SeMgr::talkInSe() {
if (Z2GetSceneMgr()->isInGame()) {
if (!Z2GetSceneMgr()->isInGame()) {
return;
}
if (Z2GetStatusMgr()->getDemoStatus() == 13) {
seMoveVolumeAll(0.0f, 0);
}
@@ -771,11 +774,13 @@ void Z2SeMgr::talkInSe() {
if (Z2GetStatusMgr()->getDemoStatus() != 12) {
seMgr->getCategory(9)->getParams()->moveVolume(Z2Param::VOL_SE_ATMOSPHERE_TALKING, 2);
}
}
}
void Z2SeMgr::talkOutSe() {
if (Z2GetSceneMgr()->isInGame()) {
if (!Z2GetSceneMgr()->isInGame()) {
return;
}
if (Z2GetStatusMgr()->getDemoStatus() == 13) {
seMoveVolumeAll(0.0f, 0);
}
@@ -794,11 +799,13 @@ void Z2SeMgr::talkOutSe() {
if (Z2GetStatusMgr()->getDemoStatus() != 12) {
seMgr->getCategory(9)->getParams()->moveVolume(Z2Param::VOL_SE_ATMOSPHERE_DEFAULT, 2);
}
}
}
void Z2SeMgr::menuInSe() {
if (Z2GetSceneMgr()->isInGame()) {
if (!Z2GetSceneMgr()->isInGame()) {
return;
}
if (Z2GetStatusMgr()->getDemoStatus() == 13) {
seMoveVolumeAll(0.0f, 0);
}
@@ -817,7 +824,6 @@ void Z2SeMgr::menuInSe() {
if (Z2GetStatusMgr()->getDemoStatus() != 12) {
seMgr->getCategory(9)->getParams()->moveVolume(Z2Param::VOL_SE_ATMOSPHERE_PAUSING, 2);
}
}
}
void Z2SeMgr::setLevObjSE(u32 soundID, Vec* posPtr, s8 reverb) {
@@ -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;
}
+119 -63
View File
@@ -143,7 +143,9 @@ void Z2SeqMgr::bgmStart(u32 bgmID, u32 fadeTime, s32 param_2) {
mMainBgmMaster.forceIn();
break;
case Z2BGM_GAME_OVER:
if (getMainBgmID() != bgmID) {
if (getMainBgmID() == bgmID) {
return;
}
Z2GetSceneMgr()->setInGame(false);
Z2GetSceneMgr()->setSceneExist(false);
setBattleBgmOff(true);
@@ -151,7 +153,6 @@ void Z2SeqMgr::bgmStart(u32 bgmID, u32 fadeTime, s32 param_2) {
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,10 +680,7 @@ void Z2SeqMgr::bgmStreamStop(u32 fadeTime) {
}
void Z2SeqMgr::changeBgmStatus(s32 status) {
if (!mMainBgmHandle) {
return;
}
if (mMainBgmHandle) {
u32 moveTime = 0;
bool mute;
@@ -749,14 +756,13 @@ void Z2SeqMgr::changeBgmStatus(s32 status) {
case 0x10:
case 0x11:
subBgmStart(Z2BGM_DEATH_MOUNTAIN02);
return;
break;
default:
if (getSubBgmID() == Z2BGM_DEATH_MOUNTAIN02) {
subBgmStop();
}
return;
}
break;
return;
case Z2BGM_DUNGEON_LV5:
if (mBgmStatus != 0xff) {
moveTime = 45;
@@ -1117,6 +1123,7 @@ void Z2SeqMgr::changeBgmStatus(s32 status) {
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) {
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,10 +1868,21 @@ void Z2SeqMgr::setBattleDistState(u8 state) {
}
void Z2SeqMgr::setBattleSeqState(u8 state) {
if (!mFlags.mBattleBgmOff && Z2GetSceneMgr()->isSceneExist() && mBattleSeqState != 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);
} else if (getSubBgmID() == Z2BGM_BATTLE_NORMAL && !(getMainBgmID() == Z2BGM_FIELD_LINK_DAY && !Z2GetSoundObjMgr()->isTwilightBattle())) {
return;
}
if (getSubBgmID() == Z2BGM_BATTLE_NORMAL && !(getMainBgmID() == Z2BGM_FIELD_LINK_DAY && !Z2GetSoundObjMgr()->isTwilightBattle())) {
switch (state) {
case 2:
if (mBattleSeqState == 1) {
@@ -1852,7 +1896,8 @@ void Z2SeqMgr::setBattleSeqState(u8 state) {
if (mBattleSeqCount != 0) {
mBattleSeqCount = 0;
mSubBgmHandle->getFader().fadeIn(10);
JAISoundFader* fader = mSubBgmHandle->getFader();
fader->fadeIn(10);
mMainBgmMaster.fadeOut(10);
}
break;
@@ -1870,7 +1915,6 @@ void Z2SeqMgr::setBattleSeqState(u8 state) {
mBattleSeqState = state;
}
}
}
void Z2SeqMgr::setBattleLastHit(u8 lastHit) {
@@ -1930,22 +1974,34 @@ void Z2SeqMgr::battleBgmFramework() {
}
void Z2SeqMgr::startBattleBgm(bool isFadeIn) {
if (!mFlags.mBattleBgmOff && Z2GetSceneMgr()->isSceneExist()
&& mBattleSeqState == 0 && (mFlags.mBattleDistIgnore || mBattleDistState <= 1))
{
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;
s16 ivar2 = Z2GetLink()->getMoveSpeed() - 23;
ivar2 = Z2GetLink()->getMoveSpeed() - 23;
if (ivar2 < 0) {
ivar2 = 0;
}
@@ -1954,7 +2010,6 @@ void Z2SeqMgr::startBattleBgm(bool isFadeIn) {
ivar2 = Z2Param::BGM_CROSS_FADEIN_TIME;
}
u8 fadeinTime, fadeoutTime;
switch (bgm_id) {
case Z2BGM_BATTLE_NORMAL:
fadeinTime = Z2Param::BGM_CROSS_FADEIN_TIME - ivar2;
@@ -1985,11 +2040,13 @@ void Z2SeqMgr::startBattleBgm(bool isFadeIn) {
mMainBgmMaster.fadeOut(fadeoutTime);
}
}
}
}
void Z2SeqMgr::stopBattleBgm(u8 subFadeoutTime, u8 mainFadeinTime) {
if (mBattleSeqCount == 0) {
if (mBattleSeqCount) {
return;
}
s16 ivar6 = 0;
if (Z2GetLink() != NULL) {
ivar6 = Z2GetLink()->getMoveSpeed() - 23;
@@ -2025,7 +2082,6 @@ void Z2SeqMgr::stopBattleBgm(u8 subFadeoutTime, u8 mainFadeinTime) {
mBattleDistState = 3;
setBattleDistIgnore(false);
mFlags.mBattleSearched = false;
}
}
void Z2SeqMgr::fieldBgmStart() {
@@ -2052,8 +2108,8 @@ void Z2SeqMgr::fieldBgmStart() {
}
void Z2SeqMgr::fieldRidingMute() {
if (Z2GetSceneMgr()->isSceneExist() && mMainBgmHandle) {
f32 volume1, volume2;
if (Z2GetSceneMgr()->isSceneExist() && mMainBgmHandle) {
if (mFlags.mRiding) {
volume1 = 1.0f;
volume2 = 0.0f;
+1 -2
View File
@@ -120,8 +120,7 @@ void Z2SoundHandles::stopAllSounds(u32 fadeTime) {
}
bool Z2SoundHandles::isActive() const {
JSULink<Z2SoundHandlePool>* i;
for (i = getFirst(); i != NULL; i = i->getNext()) {
for (JSULink<Z2SoundHandlePool>*i = getFirst(); i != NULL; i = i->getNext()) {
if (i->getObject()->isSoundAttached()) {
return true;
}
+6 -2
View File
@@ -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) {