summaryrefslogtreecommitdiff
path: root/src/Z2AudioLib
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2025-11-27 21:19:33 -0800
committerGitHub <noreply@github.com>2025-11-27 21:19:33 -0800
commit6f96e665186c87f15acb6f5cb8d27665afee3130 (patch)
tree3ea70fe7d635a0f55aae44b1a386814766a46597 /src/Z2AudioLib
parent767caeecc3e374779cccc9960b6546b74e7a9e50 (diff)
various Z2Audio / JAudio debug cleanup (#2876)
* some JAudio work * audio cleanup checkpoint * checkpoint more audio cleanup * fix symbols * more z2 cleanup * fix regression * fix build * some fixes
Diffstat (limited to 'src/Z2AudioLib')
-rw-r--r--src/Z2AudioLib/Z2Audience.cpp549
-rw-r--r--src/Z2AudioLib/Z2AudioArcLoader.cpp70
-rw-r--r--src/Z2AudioLib/Z2AudioMgr.cpp161
-rw-r--r--src/Z2AudioLib/Z2Calc.cpp164
-rw-r--r--src/Z2AudioLib/Z2Creature.cpp688
-rw-r--r--src/Z2AudioLib/Z2EnvSeMgr.cpp754
-rw-r--r--src/Z2AudioLib/Z2FxLineMgr.cpp121
-rw-r--r--src/Z2AudioLib/Z2LinkMgr.cpp373
-rw-r--r--src/Z2AudioLib/Z2Param.cpp52
-rw-r--r--src/Z2AudioLib/Z2SceneMgr.cpp471
-rw-r--r--src/Z2AudioLib/Z2SeMgr.cpp691
-rw-r--r--src/Z2AudioLib/Z2SeqMgr.cpp1400
-rw-r--r--src/Z2AudioLib/Z2SoundHandles.cpp121
-rw-r--r--src/Z2AudioLib/Z2SoundInfo.cpp271
-rw-r--r--src/Z2AudioLib/Z2SoundMgr.cpp318
-rw-r--r--src/Z2AudioLib/Z2SoundObjMgr.cpp260
-rw-r--r--src/Z2AudioLib/Z2SoundObject.cpp587
-rw-r--r--src/Z2AudioLib/Z2SoundStarter.cpp111
-rw-r--r--src/Z2AudioLib/Z2SpeechMgr2.cpp389
-rw-r--r--src/Z2AudioLib/Z2StatusMgr.cpp219
-rw-r--r--src/Z2AudioLib/Z2WolfHowlMgr.cpp553
21 files changed, 4503 insertions, 3820 deletions
diff --git a/src/Z2AudioLib/Z2Audience.cpp b/src/Z2AudioLib/Z2Audience.cpp
index 8a200729ba..a2491c9762 100644
--- a/src/Z2AudioLib/Z2Audience.cpp
+++ b/src/Z2AudioLib/Z2Audience.cpp
@@ -1,8 +1,3 @@
-//
-// Generated By: dol2asm
-// Translation Unit: Z2Audience
-//
-
#include "Z2AudioLib/Z2Audience.h"
#include "Z2AudioLib/Z2SoundInfo.h"
#include "Z2AudioLib/Z2Calc.h"
@@ -15,134 +10,146 @@
/* 802BBCDC-802BBD18 2B661C 003C+00 1/1 0/0 0/0 .text
* calc__15Z2AudibleAbsPosFRCQ29JGeometry8TVec3<f> */
-void Z2AudibleAbsPos::calc(JGeometry::TVec3<f32> const& param_0) {
- field_0xc.sub(param_0, field_0x0);
- field_0x0.set(param_0);
+void Z2AudibleAbsPos::calc(const JGeometry::TVec3<f32>& pos) {
+ velocity_.sub(pos, field_0x0);
+ field_0x0.set(pos);
}
/* 802BBD18-802BBD94 2B6658 007C+00 1/1 0/0 0/0 .text
* init__15Z2AudibleAbsPosFPQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>PCQ29JGeometry8TVec3<f> */
-void Z2AudibleAbsPos::init(JGeometry::TVec3<f32>* param_0, JGeometry::TVec3<f32> const& param_1,
- JGeometry::TVec3<f32> const* param_2) {
+void Z2AudibleAbsPos::init(JGeometry::TVec3<f32>* param_0, const JGeometry::TVec3<f32>& param_1,
+ const JGeometry::TVec3<f32>* param_2) {
param_0->set(param_1);
+
if (param_2 != NULL) {
field_0x0.set(*param_2);
- field_0xc.sub(param_1, field_0x0);
- return;
+ velocity_.sub(param_1, field_0x0);
+ } else {
+ field_0x0.set(param_1);
+ velocity_.zero();
}
- field_0x0.set(param_1);
- field_0xc.zero();
}
/* 802BBD94-802BBE74 2B66D4 00E0+00 1/1 0/0 0/0 .text
* __ct__9Z2AudibleFRCQ29JGeometry8TVec3<f>PCQ29JGeometry8TVec3<f>Ulb */
-Z2Audible::Z2Audible(JGeometry::TVec3<f32> const& param_0, JGeometry::TVec3<f32> const* param_1,
- u32 param_2, bool param_3) {
- field_0x10.field_0x0.raw = 0xffffffff;
- field_0x14.init(&mPos, param_0, param_1);
+Z2Audible::Z2Audible(const JGeometry::TVec3<f32>& pos, const JGeometry::TVec3<f32>* param_1,
+ u32 channel, bool param_3) {
+ mParam.field_0x0.raw = 0xFFFFFFFF;
+ mAbsPos.init(&mPos, pos, param_1);
+
for (int i = 0; i < 1; i++) {
- if ((param_2 & (1 << i)) == 0) {
- field_0x2c[i].init();
+ if ((channel & (1 << i)) == 0) {
+ mChannel[i].init();
}
}
+
for (int i = 0; i < 1; i = i + 1) {
field_0x64[i] = 0.0f;
}
}
-
/* 802BBE74-802BBE98 2B67B4 0024+00 1/1 0/0 0/0 .text __ct__16Z2AudibleChannelFv */
-Z2AudibleChannel::Z2AudibleChannel() {
-}
-
+Z2AudibleChannel::Z2AudibleChannel() {}
/* 802BBE98-802BBED0 2B67D8 0038+00 1/0 0/0 0/0 .text calc__9Z2AudibleFv */
void Z2Audible::calc() {
if (isDoppler()) {
- field_0x14.calc(mPos);
+ mAbsPos.calc(mPos);
}
}
/* 802BBED0-802BBEE4 2B6810 0014+00 1/0 0/0 0/0 .text getOuterParams__9Z2AudibleFi */
-JASSoundParams* Z2Audible::getOuterParams(int param_0) {
- return &field_0x2c[param_0].field_0x0;
+JASSoundParams* Z2Audible::getOuterParams(int index) {
+ JUT_ASSERT(80, index >= 0);
+ JUT_ASSERT(81, index < 1);
+ return &mChannel[index].mParams;
}
/* 802BBEE4-802BC204 2B6824 0320+00 1/1 0/0 0/0 .text
* setOuterParams__9Z2AudibleFRC14JASSoundParamsRC14JASSoundParamsi */
-void Z2Audible::setOuterParams(JASSoundParams const& param_0, JASSoundParams const& param_1,
- int index) {
+void Z2Audible::setOuterParams(const JASSoundParams& outParams, const JASSoundParams& inParams,
+ int index) {
JUT_ASSERT(89, index >= 0);
JUT_ASSERT(90, index < 1);
- Z2AudibleChannel* this_01 = &field_0x2c[index];
- u8 iStack_94 = (field_0x10.field_0x0.half.f1 & 0xf00) >> 8;
+
+ Z2AudibleChannel* channel = &mChannel[index];
+ u8 iStack_94 = (mParam.field_0x0.half.f1 & 0xf00) >> 8;
if (iStack_94 == 0) {
- this_01->field_0x0.combine(param_0, param_1);
+ channel->mParams.combine(outParams, inParams);
return;
}
- if (this_01->field_0x28 < 0.0f) {
- this_01->field_0x28 = 1.0f;
- this_01->mPan = param_1.mPan;
- this_01->mDolby = param_1.mDolby;
- this_01->field_0x0.combine(param_0, param_1);
+ if (channel->field_0x28 < 0.0f) {
+ channel->field_0x28 = 1.0f;
+ channel->mPan = inParams.mPan;
+ channel->mDolby = inParams.mDolby;
+ channel->mParams.combine(outParams, inParams);
return;
}
- JASSoundParams local_b0;
- local_b0.mFxMix = param_1.mFxMix;
- local_b0.mPitch = param_1.mPitch;
+ JASSoundParams params;
+ params.mFxMix = inParams.mFxMix;
+ params.mPitch = inParams.mPitch;
JGeometry::TVec2<f32> local_b8;
- local_b8.x = param_1.mPan - this_01->mPan;
- local_b8.y = param_1.mDolby - this_01->mDolby;
- f32 dVar9 = param_1.mVolume * local_b8.length();
+ local_b8.x = inParams.mPan - channel->mPan;
+ local_b8.y = inParams.mDolby - channel->mDolby;
+
+ f32 dVar9 = inParams.mVolume * local_b8.length();
f32 dVar10 = 1.0f;
f32 dVar12 = Z2Calc::linearTransform(iStack_94, 0.0f, 15.0f, 1.0f, 0.3f, true);
- if (param_1.mVolume > dVar12 && dVar9 > 0.001f) {
+ if (inParams.mVolume > dVar12 && dVar9 > 0.001f) {
dVar10 = Z2Calc::getParamByExp(dVar9, 0.3f, 0.001f, 0.1f, dVar12, 1.0f,
- Z2Calc::CURVE_SIGN_1);
+ Z2Calc::CURVE_POSITIVE);
if (dVar10 < 0.0f) {
dVar10 = 0.0f;
}
}
- f32 dVar15 = dVar10 - this_01->field_0x28;
+
+ f32 dVar15 = dVar10 - channel->field_0x28;
f32 dVar11 = 1.0f;
if (dVar15 > 0.0f) {
- dVar11 = Z2Calc::getParamByExp(J3DUD::JMAAbs(dVar15), 1.0f, 0.0f, 0.1f, 0.1f, 0.5f, Z2Calc::CURVE_SIGN_1);
+ dVar11 = Z2Calc::getParamByExp(J3DUD::JMAAbs(dVar15), 1.0f, 0.0f, 0.1f, 0.1f, 0.5f, Z2Calc::CURVE_POSITIVE);
} else {
- dVar11 = Z2Calc::getParamByExp(J3DUD::JMAAbs(dVar15), -1.0f, 0.0f, 0.1f, 1.0f / 30.0f, 0.5f, Z2Calc::CURVE_SIGN_1);
+ dVar11 = Z2Calc::getParamByExp(J3DUD::JMAAbs(dVar15), -1.0f, 0.0f, 0.1f, 1.0f / 30.0f, 0.5f, Z2Calc::CURVE_POSITIVE);
}
- dVar10 = this_01->field_0x28 + (dVar15 * dVar11);
+
+ dVar10 = channel->field_0x28 + (dVar15 * dVar11);
if (dVar10 < 0.0f) {
dVar10 = 0.0f;
} else if (dVar10 > 1.0f) {
dVar10 = 1.0f;
}
- local_b0.mVolume = param_1.mVolume * dVar10;
- this_01->field_0x28 = dVar10;
- f32 dVar13 = Z2Calc::getParamByExp(local_b0.mVolume * J3DUD::JMAAbs(local_b8.x), 1.0f, 0.0f, 0.1f,
- 1.0f / 30.0f, 1.0 / 3.0f, Z2Calc::CURVE_SIGN_1);
- f32 dVar14 = Z2Calc::getParamByExp(local_b0.mVolume * J3DUD::JMAAbs(local_b8.y), 1.0f,
+
+ params.mVolume = inParams.mVolume * dVar10;
+ channel->field_0x28 = dVar10;
+
+ f32 dVar13 = Z2Calc::getParamByExp(params.mVolume * J3DUD::JMAAbs(local_b8.x), 1.0f, 0.0f, 0.1f,
+ 1.0f / 30.0f, 1.0 / 3.0f, Z2Calc::CURVE_POSITIVE);
+ f32 dVar14 = Z2Calc::getParamByExp(params.mVolume * J3DUD::JMAAbs(local_b8.y), 1.0f,
0.0f, 0.1f,
- 1.0f / 30.0f, 1.0f / 3.0f, Z2Calc::CURVE_SIGN_1);
+ 1.0f / 30.0f, 1.0f / 3.0f, Z2Calc::CURVE_POSITIVE);
if (dVar13 > 1.0f / 3.0f) {
dVar13 = 1.0f / 3.0f;
}
if (dVar14 > 1.0f / 3.0f) {
dVar14 = 1.0f / 3.0f;
}
- local_b0.mPan = this_01->mPan + (local_b8.x * dVar13);
- local_b0.mDolby = this_01->mDolby + (local_b8.y * dVar14);
- local_b0.clamp();
- this_01->field_0x0.combine(param_0, local_b0);
- this_01->mPan = local_b0.mPan;
- this_01->mDolby = local_b0.mDolby;
+
+ params.mPan = channel->mPan + (local_b8.x * dVar13);
+ params.mDolby = channel->mDolby + (local_b8.y * dVar14);
+ params.clamp();
+
+ channel->mParams.combine(outParams, params);
+ channel->mPan = params.mPan;
+ channel->mDolby = params.mDolby;
}
/* 802BC204-802BC218 2B6B44 0014+00 4/4 0/0 0/0 .text getChannel__9Z2AudibleFi */
-Z2AudibleChannel* Z2Audible::getChannel(int param_0) {
- return &field_0x2c[param_0];
+Z2AudibleChannel* Z2Audible::getChannel(int index) {
+ JUT_ASSERT(220, index >= 0);
+ JUT_ASSERT(221, index < 1);
+ return &mChannel[index];
}
/* 802BC218-802BC248 2B6B58 0030+00 3/3 0/0 0/0 .text getDistVolBit__9Z2AudibleFv */
@@ -156,6 +163,7 @@ u32 Z2Audible::getDistVolBit() {
return ((int)(uVar1 & 0x70) >> 4) + 7;
}
}
+
return 0;
}
@@ -178,6 +186,7 @@ void Z2Audience3DSetting::init() {
field_0x64 = 0xff;
field_0x5c = Z2Param::SONIC_SPEED;
field_0x60 = 1.5f;
+
initVolumeDist();
initDolbyDist();
}
@@ -188,9 +197,11 @@ void Z2Audience3DSetting::initVolumeDist() {
field_0x0[0] = Z2Param::DISTANCE_MAX;
field_0x3c = Z2Param::MAX_VOLUME_DISTANCE;
+
calcVolumeFactorAll();
calcPriorityFactorAll();
calcFxMixFactorAll();
+
mVolumeDistInit = true;
}
@@ -200,14 +211,17 @@ static f32 cNearFarRatio = Z2Param::MAX_VOLUME_DISTANCE / Z2Param::DISTANCE_MAX;
/* 802BC4D0-802BC6A4 2B6E10 01D4+00 1/1 0/0 0/0 .text updateVolumeDist__19Z2Audience3DSettingFf */
void Z2Audience3DSetting::updateVolumeDist(f32 param_0) {
field_0x0[0] = param_0;
+
if (param_0 > Z2Param::DISTANCE_MAX) {
field_0x3c = cNearFarRatio * param_0;
} else {
field_0x3c = Z2Param::MAX_VOLUME_DISTANCE;
}
+
calcVolumeFactorAll();
calcPriorityFactorAll();
calcFxMixFactorAll();
+
mVolumeDistInit = false;
}
@@ -229,14 +243,17 @@ void Z2Audience3DSetting::updateDolbyDist(f32 param_0, f32 param_1) {
} else {
field_0x44 = Z2Param::DOLBY_FLONT_DISTANCE_MAX;
}
+
if (param_1 < 2.0f * field_0x44) {
param_1 = 2.0f * field_0x44;
}
+
if (param_1 > Z2Param::DOLBY_BEHIND_DISTANCE_MAX) {
field_0x48 = param_1;
} else {
field_0x48 = Z2Param::DOLBY_BEHIND_DISTANCE_MAX;
}
+
mDolbyDistInit = false;
}
@@ -263,26 +280,27 @@ void Z2AudioCamera::init() {
/* 802BC7DC-802BC8AC 2B711C 00D0+00 2/2 0/0 0/0 .text setCameraState__13Z2AudioCameraFPA4_CfR3Vecb
*/
-void Z2AudioCamera::setCameraState(f32 const (*param_0)[4], Vec& param_1, bool param_2) {
+void Z2AudioCamera::setCameraState(f32 const (*param_0)[4], Vec& pos, bool param_2) {
field_0x0.set(param_0);
if (param_2) {
- mPos.set(param_1);
+ mPos.set(pos);
field_0x48.set(mPos);
mVel.zero();
} else {
field_0x48.set(mPos);
- mPos.set(param_1);
+ mPos.set(pos);
mVel.sub(mPos, field_0x48);
}
}
/* 802BC8AC-802BCBEC 2B71EC 0340+00 1/1 0/0 0/0 .text
* setCameraState__13Z2AudioCameraFPA4_fR3VecR3Vecffbb */
-void Z2AudioCamera::setCameraState(f32 (*param_0)[4], Vec& param_1, Vec& param_2, f32 param_3,
- f32 param_4, bool param_5, bool param_6) {
+void Z2AudioCamera::setCameraState(f32 (*param_0)[4], Vec& pos, Vec& param_2, f32 param_3,
+ f32 param_4, bool param_5, bool param_6) {
JGeometry::TVec3<f32> aTStack_c0;
- VECSubtract(&param_2, &param_1, aTStack_c0);
+ VECSubtract(&param_2, &pos, (Vec*)&aTStack_c0);
mCamDist = aTStack_c0.length();
+
f32 dVar10 = 0.5f * param_3;
mFovySin = JMASinDegree(dVar10);
f32 fVar8 = JMACosDegree(dVar10);
@@ -302,8 +320,7 @@ void Z2AudioCamera::setCameraState(f32 (*param_0)[4], Vec& param_1, Vec& param_2
}
if (mSetMainCamera && mTargetVolume > 0.0f) {
- if (dVar11 > (Z2Param::DISTANCE_MAX * (1.0f - mTargetVolume)))
- {
+ if (dVar11 > (Z2Param::DISTANCE_MAX * (1.0f - mTargetVolume))) {
Z2GetAudience()->getSetting()->updateVolumeDist(dVar11 / (1.0f - mTargetVolume));
} else {
Z2GetAudience()->getSetting()->initVolumeDist();
@@ -327,30 +344,36 @@ void Z2AudioCamera::setCameraState(f32 (*param_0)[4], Vec& param_1, Vec& param_2
Z2GetAudience()->getSetting()->updateDolbyDist(mCamDist - mDolbyCenterZ, mCamDist + mDolbyCenterZ);
}
}
- setCameraState(param_0, param_1, param_6);
+
+ setCameraState(param_0, pos, param_6);
}
/* 802BCBEC-802BCC7C 2B752C 0090+00 2/2 0/0 0/0 .text
* convertAbsToRel__13Z2AudioCameraFP9Z2Audiblei */
-void Z2AudioCamera::convertAbsToRel(Z2Audible* param_0, int param_1) {
- Z2AudibleChannel* iVar2 = param_0->getChannel(param_1);
- if (iVar2 == NULL) {
+void Z2AudioCamera::convertAbsToRel(Z2Audible* audible, int channelNum) {
+ JUT_ASSERT(508, audible);
+ JUT_ASSERT(509, channelNum >= 0);
+ JUT_ASSERT(510, channelNum < 1);
+
+ Z2AudibleChannel* channel = audible->getChannel(channelNum);
+ if (channel == NULL) {
return;
}
- Z2AudibleRelPos* relPos = &iVar2->field_0x14;
- MTXMultVec(field_0x0, param_0->mPos, relPos->field_0x00);
+
+ Z2AudibleRelPos* relPos = &channel->field_0x14;
+ MTXMultVec(field_0x0, (Vec*)&audible->getPos(), (Vec*)&relPos->field_0x00);
relPos->field_0xC = relPos->field_0x00.length();
- JGeometry::TVec3<f32> aTStack_38;
- JGeometry::setTVec3f(*(Vec*)&relPos->field_0x00, *(Vec*)&aTStack_38);
+
+ JGeometry::TVec3<f32> aTStack_38(relPos->field_0x00);
aTStack_38.z += mVolCenterZ;
relPos->field_0x10 = aTStack_38.length();
}
/* 802BCC7C-802BCCC0 2B75BC 0044+00 2/2 0/0 0/0 .text convertAbsToRel__13Z2AudioCameraCFR3VecP3Vec
*/
-bool Z2AudioCamera::convertAbsToRel(Vec& param_0, Vec* param_1) const {
- MTXMultVec(field_0x0, &param_0, param_1);
- return isInSight(*param_1);
+bool Z2AudioCamera::convertAbsToRel(Vec& src, Vec* dst) const {
+ MTXMultVec(field_0x0, &src, dst);
+ return isInSight(*dst);
}
/* 802BCCC0-802BCD28 2B7600 0068+00 1/1 0/0 0/0 .text isInSight__13Z2AudioCameraCFR3Vec
@@ -360,15 +383,11 @@ bool Z2AudioCamera::isInSight(Vec& param_0) const {
return false;
}
- f32 zabs = J3DUD::JMAAbs(param_0.z);
- f32 xabs = J3DUD::JMAAbs(param_0.x);
-
- if (xabs > field_0x68 * zabs) {
+ if (J3DUD::JMAAbs(param_0.x) > field_0x68 * J3DUD::JMAAbs(param_0.z)) {
return false;
}
- f32 yabs = J3DUD::JMAAbs(param_0.y);
- if (yabs > field_0x6c * zabs) {
+ if (J3DUD::JMAAbs(param_0.y) > field_0x6c * J3DUD::JMAAbs(param_0.z)) {
return false;
}
@@ -385,67 +404,75 @@ Z2SpotMic::Z2SpotMic() {
mIgnoreIfOut = true;
mMicOn = true;
field_0x1c = 255.0f / (field_0x4 - field_0x0);
- clearMicState(0);
+
+ for (int i = 0; i < 1; i++) {
+ clearMicState(i);
+ }
}
/* 802BCDA8-802BCDE8 2B76E8 0040+00 2/2 0/0 0/0 .text clearMicState__9Z2SpotMicFi */
-void Z2SpotMic::clearMicState(int param_0) {
- field_0x10[param_0] = NULL;
- field_0x18[param_0] = field_0xc;
- field_0x26[param_0] = 0;
- calcVolumeFactor(param_0);
+void Z2SpotMic::clearMicState(int camID) {
+ field_0x10[camID] = NULL;
+ field_0x18[camID] = field_0xc;
+ field_0x26[camID] = 0;
+ calcVolumeFactor(camID);
}
/* 802BCDE8-802BCE14 2B7728 002C+00 2/2 0/0 0/0 .text calcVolumeFactor__9Z2SpotMicFi */
-void Z2SpotMic::calcVolumeFactor(int param_0) {
- field_0x20[param_0] = (field_0x8 - field_0x18[param_0]) / (field_0x4 - field_0x0);
+void Z2SpotMic::calcVolumeFactor(int camID) {
+ field_0x20[camID] = (field_0x8 - field_0x18[camID]) / (field_0x4 - field_0x0);
}
/* 802BCE14-802BCF5C 2B7754 0148+00 1/1 0/0 0/0 .text setMicState__9Z2SpotMicFP13Z2AudioCamerai */
-void Z2SpotMic::setMicState(Z2AudioCamera* param_0, int param_1) {
- if (mMicOn && mPosPtr != 0 && param_0 != NULL) {
- clearMicState(param_1);
+void Z2SpotMic::setMicState(Z2AudioCamera* camera, int camID) {
+ JUT_ASSERT(622, camID >= 0);
+ JUT_ASSERT(623, camID < 1);
+
+ if (mMicOn && mPosPtr != 0 && camera != NULL) {
+ clearMicState(camID);
JGeometry::TVec3<f32> aVStack_58;
- field_0x26[param_1] = param_0->convertAbsToRel(*mPosPtr, aVStack_58);
- if (!mIgnoreIfOut || field_0x26[param_1]) {
- field_0x10[param_1] = param_0;
- aVStack_58.z = aVStack_58[0].z + param_0->getVolCenterZ();
+ field_0x26[camID] = camera->convertAbsToRel(*mPosPtr, (Vec*)&aVStack_58);
+ if (!mIgnoreIfOut || field_0x26[camID]) {
+ field_0x10[camID] = camera;
+ aVStack_58.z += camera->getVolCenterZ();
+
f32 dVar10 = aVStack_58.length();
f32 dVar11 = Z2GetAudience()->getSetting()->field_0x0[0];
f32 dVar12 = Z2GetAudience()->getSetting()->field_0x3c;
if (dVar10 > dVar11) {
- field_0x18[param_1] = field_0xc;
+ field_0x18[camID] = field_0xc;
} else {
if (dVar10 < dVar12) {
- field_0x18[param_1] = 1.0f;
+ field_0x18[camID] = 1.0f;
} else {
- field_0x18[param_1] = JGeometry::TUtil<f32>::clamp(
+ field_0x18[camID] = JGeometry::TUtil<f32>::clamp(
1.0f + ((field_0xc - 1.0f) / (dVar11 - dVar12)) * (dVar10 - dVar12),
0.0f, 1.0f);
}
}
- calcVolumeFactor(param_1);
+
+ calcVolumeFactor(camID);
}
}
}
/* 802BCF5C-802BCFE4 2B789C 0088+00 2/2 0/0 0/0 .text calcMicDist__9Z2SpotMicFP9Z2Audible
*/
-f32 Z2SpotMic::calcMicDist(Z2Audible* param_0) {
+f32 Z2SpotMic::calcMicDist(Z2Audible* audible) {
if (!mMicOn) {
return 0.0f;
}
if (mPosPtr == NULL) {
return 0.0f;
}
- if (param_0 == NULL) {
+ if (audible == NULL) {
return 0.0f;
}
JGeometry::TVec3<f32> aTStack_1c;
- JGeometry::TVec3<f32> aTStack_28;
- JGeometry::setTVec3f(*mPosPtr, *(Vec*)&aTStack_28);
- aTStack_1c.sub(param_0->getPos(), aTStack_28);
+ JGeometry::TVec3<f32> aTStack_28(*mPosPtr);
+
+ aTStack_1c.sub(audible->getPos(), aTStack_28);
return aTStack_1c.length();
}
@@ -463,7 +490,10 @@ u32 Z2SpotMic::calcMicPriority(f32 param_0) {
}
/* 802BD03C-802BD130 2B797C 00F4+00 1/1 0/0 0/0 .text calcMicVolume__9Z2SpotMicFfif */
-f32 Z2SpotMic::calcMicVolume(f32 param_0, int param_1, f32 param_2) {
+f32 Z2SpotMic::calcMicVolume(f32 param_0, int camID, f32 param_2) {
+ JUT_ASSERT(687, camID >= 0);
+ JUT_ASSERT(688, camID < 1);
+
if (mMicOn == NULL) {
return param_2;
}
@@ -472,11 +502,11 @@ f32 Z2SpotMic::calcMicVolume(f32 param_0, int param_1, f32 param_2) {
return param_2;
}
- if (field_0x10[param_1] == NULL) {
+ if (field_0x10[camID] == NULL) {
return param_2;
}
- if (mIgnoreIfOut && field_0x26[param_1] == 0) {
+ if (mIgnoreIfOut && field_0x26[camID] == 0) {
return param_2;
}
@@ -484,17 +514,17 @@ f32 Z2SpotMic::calcMicVolume(f32 param_0, int param_1, f32 param_2) {
return -1.0f;
}
- if (param_2 >= field_0x18[param_1]) {
+ if (param_2 >= field_0x18[camID]) {
return param_2;
}
if (param_0 < field_0x0) {
- return field_0x18[param_1];
+ return field_0x18[camID];
}
f32 dVar7 = JGeometry::TUtil<f32>::clamp(
- field_0x18[param_1] + field_0x20[param_1] * (param_0 - field_0x0),
- field_0x8, field_0x18[param_1]);
+ field_0x18[camID] + field_0x20[camID] * (param_0 - field_0x0),
+ field_0x8, field_0x18[camID]);
if (param_2 < dVar7) {
param_2 = dVar7;
}
@@ -503,96 +533,104 @@ f32 Z2SpotMic::calcMicVolume(f32 param_0, int param_1, f32 param_2) {
/* 802BD130-802BD1FC 2B7A70 00CC+00 0/0 1/1 0/0 .text __ct__10Z2AudienceFv */
Z2Audience::Z2Audience() : JASGlobalInstance<Z2Audience>(true), field_0x4(1.0f), field_0x8(0x7f) {
- mMaxChannels = 1;
+ mNumPlayers = 1;
mUsingOffMicVol = false;
mAudioCamera[0].init();
- mAudioCamera[0].setMainCamera();
+ mAudioCamera[0].setMainCamera(true);
mLinkMic = mSpotMic;
}
/* 802BD1FC-802BD288 2B7B3C 008C+00 1/0 1/1 0/0 .text __dt__10Z2AudienceFv */
Z2Audience::~Z2Audience() {
- //JUT_ASSERT(751, !isActive());
+ // JUT_ASSERT(751, !isActive()); // TODO: need to setup rest of JASMemPool stuff
}
/* 802BD2DC-802BD338 2B7C1C 005C+00 0/0 1/1 0/0 .text
* setAudioCamera__10Z2AudienceFPA4_fR3VecR3Vecffbib */
-void Z2Audience::setAudioCamera(f32 (*param_0)[4], Vec& param_1, Vec& param_2, f32 param_3,
- f32 param_4, bool param_5, int param_6, bool param_7) {
- mAudioCamera[param_6].setCameraState(param_0, param_1, param_2, param_3, param_4, param_5, param_7);
- mLinkMic->setMicState(&mAudioCamera[param_6], param_6);
+void Z2Audience::setAudioCamera(f32 (*param_0)[4], Vec& pos, Vec& param_2, f32 param_3,
+ f32 param_4, bool param_5, int camID, bool param_7) {
+ JUT_ASSERT(687, camID >= 0);
+ JUT_ASSERT(688, camID < mNumPlayers);
+ mAudioCamera[camID].setCameraState(param_0, pos, param_2, param_3, param_4, param_5, param_7);
+ mLinkMic->setMicState(&mAudioCamera[camID], camID);
}
/* 802BD338-802BD4D4 2B7C78 019C+00 1/0 0/0 0/0 .text
* newAudible__10Z2AudienceFRCQ29JGeometry8TVec3<f>10JAISoundIDPCQ29JGeometry8TVec3<f>Ul */
-JAIAudible* Z2Audience::newAudible(JGeometry::TVec3<f32> const& param_0, JAISoundID param_1,
- JGeometry::TVec3<f32> const* param_2, u32 param_3) {
- u32 uVar4 = param_3 | ~((1 << mMaxChannels) + -1);
- if (uVar4 == 0xffffffff) {
+JAIAudible* Z2Audience::newAudible(const JGeometry::TVec3<f32>& pos, JAISoundID soundID,
+ const JGeometry::TVec3<f32>* param_2, u32 param_3) {
+ u32 channelNum = param_3 | ~((1 << mNumPlayers) + -1);
+ if (channelNum == 0xFFFFFFFF) {
+ JUT_WARN(826, "%s", "You masked all audible channels !");
return NULL;
}
- JAUAudibleParam local_34 = Z2GetSoundInfo()->getAudibleSwFull(param_1);
- bool x = local_34.field_0x0.bytes.b0_0 != 0;
- Z2Audible* this_01 = new Z2Audible(param_0, param_2, uVar4, x);
- if (this_01 == NULL) {
+
+ JAUAudibleParam params = Z2GetSoundInfo()->getAudibleSwFull(soundID);
+ bool x = params.field_0x0.bytes.b0_0 != 0;
+
+ Z2Audible* audible = new Z2Audible(pos, param_2, channelNum, x);
+ if (audible == NULL) {
return NULL;
}
- this_01->setAudibleParam(local_34);
- for (int iVar5 = 0; iVar5 < mMaxChannels; iVar5++) {
- Z2AudibleChannel* iVar2 = this_01->getChannel(iVar5);
- if (iVar2 != NULL) {
- u32 local_38 = this_01->getDistVolBit();
- mAudioCamera[iVar5].convertAbsToRel(this_01, iVar5);
- calcDeltaPriority_(iVar2->field_0x14.field_0x10, local_38, false);
+ audible->setAudibleParam(params);
+
+ for (int i = 0; i < mNumPlayers; i++) {
+ Z2AudibleChannel* channel = audible->getChannel(i);
+ if (channel != NULL) {
+ u32 distVolBit = audible->getDistVolBit();
+ mAudioCamera[i].convertAbsToRel(audible, i);
+ calcDeltaPriority_(channel->field_0x14.field_0x10, distVolBit, false);
}
}
- for (int iVar5 = 0; iVar5 < 1; iVar5++) {
- if (mSpotMic[iVar5].isOn()) {
- this_01->field_0x64[iVar5] = mSpotMic[iVar5].calcMicDist(this_01);
+
+ for (int i = 0; i < 1; i++) {
+ if (mSpotMic[i].isOn()) {
+ audible->field_0x64[i] = mSpotMic[i].calcMicDist(audible);
}
}
- return this_01;
+ return audible;
}
/* 802BD4D4-802BD510 2B7E14 003C+00 1/0 0/0 0/0 .text deleteAudible__10Z2AudienceFP10JAIAudible */
-void Z2Audience::deleteAudible(JAIAudible* param_0) {
- delete param_0;
+void Z2Audience::deleteAudible(JAIAudible* audible) {
+ delete audible;
}
/* 802BD510-802BD5B8 2B7E50 00A8+00 1/0 0/0 0/0 .text __dt__9Z2AudibleFv */
-Z2Audible::~Z2Audible() {
-}
+Z2Audible::~Z2Audible() {}
/* 802BD5B8-802BD704 2B7EF8 014C+00 1/0 0/0 0/0 .text calcPriority__10Z2AudienceFP10JAIAudible */
-u32 Z2Audience::calcPriority(JAIAudible* param_0) {
- Z2Audible* z2Audible = (Z2Audible*)param_0;
- if (!z2Audible->getAudibleParam()->field_0x0.bytes.b0_4) {
- for (int i = 0; i < mMaxChannels; i++) {
- mAudioCamera[i].convertAbsToRel(z2Audible, i);
+u32 Z2Audience::calcPriority(JAIAudible* audible) {
+ Z2Audible* Z2audible = (Z2Audible*)audible;
+
+ if (!Z2audible->getAudibleParam()->field_0x0.bytes.b0_4) {
+ for (int i = 0; i < mNumPlayers; i++) {
+ mAudioCamera[i].convertAbsToRel(Z2audible, i);
}
return 0;
}
u32 deltaPriority[1];
- u32 rv = 0xffffffff;
- for (int i = 0; i < mMaxChannels; i++) {
- Z2AudibleChannel* iVar4 = (z2Audible)->getChannel(i);
- if (iVar4 != NULL) {
- mAudioCamera[i].convertAbsToRel(z2Audible, i);
- u32 distvolBit = z2Audible->getDistVolBit();
- const JAUAudibleParam* puVar1 = z2Audible->getAudibleParam();
- deltaPriority[i] = calcDeltaPriority_(iVar4->field_0x14.field_0x10, distvolBit, puVar1->field_0x0.bytes.b0_7);
+ u32 rv = 0xFFFFFFFF;
+ for (int i = 0; i < mNumPlayers; i++) {
+ Z2AudibleChannel* channel = (Z2audible)->getChannel(i);
+ if (channel != NULL) {
+ mAudioCamera[i].convertAbsToRel(Z2audible, i);
+ u32 distvolBit = Z2audible->getDistVolBit();
+ const JAUAudibleParam* puVar1 = Z2audible->getAudibleParam();
+ deltaPriority[i] = calcDeltaPriority_(channel->field_0x14.field_0x10, distvolBit, puVar1->field_0x0.bytes.b0_7);
if (deltaPriority[i] < rv) {
rv = deltaPriority[i];
}
}
}
+
for (int i = 0; i < 1; i++) {
if (mSpotMic[i].isOn()) {
- z2Audible->field_0x64[i] = mSpotMic[i].calcMicDist(z2Audible);
- u32 micPriority = mSpotMic[i].calcMicPriority(z2Audible->field_0x64[i]);
+ Z2audible->field_0x64[i] = mSpotMic[i].calcMicDist(Z2audible);
+ u32 micPriority = mSpotMic[i].calcMicPriority(Z2audible->field_0x64[i]);
if (micPriority < rv) {
rv = micPriority;
}
@@ -613,63 +651,63 @@ f32 Z2Audience::calcOffMicSound(f32 param_0) {
/* 802BD71C-802BD90C 2B805C 01F0+00 1/0 0/0 0/0 .text
* mixChannelOut__10Z2AudienceFRC14JASSoundParamsP10JAIAudiblei */
-void Z2Audience::mixChannelOut(JASSoundParams const& param_0, JAIAudible* param_1,
- int param_2) {
- Z2Audible* z2Audible = (Z2Audible*)param_1;
- Z2AudibleChannel* pZVar5 = z2Audible->getChannel(param_2);
- if (pZVar5 == NULL) {
+void Z2Audience::mixChannelOut(const JASSoundParams& outParams, JAIAudible* audible, int channelNum) {
+ Z2Audible* Z2audible = (Z2Audible*)audible;
+ Z2AudibleChannel* channel = Z2audible->getChannel(channelNum);
+ if (channel == NULL) {
return;
}
JASSoundParams local_60;
- u32 iVar6 = z2Audible->getDistVolBit();
- if (z2Audible->getAudibleParam()->field_0x0.bytes.b0_5) {
- local_60.mVolume = calcVolume_(pZVar5->field_0x14.field_0x10, iVar6);
- f32 dVar9 = mLinkMic->calcMicVolume(z2Audible->field_0x64[0], param_2, local_60.mVolume);
+ u32 distVolBit = Z2audible->getDistVolBit();
+ if (Z2audible->getAudibleParam()->field_0x0.bytes.b0_5) {
+ local_60.mVolume = calcVolume_(channel->field_0x14.field_0x10, distVolBit);
+ f32 dVar9 = mLinkMic->calcMicVolume(Z2audible->field_0x64[0], channelNum, local_60.mVolume);
if (dVar9 < 0.0f) {
dVar9 = calcOffMicSound(local_60.mVolume);
}
local_60.mVolume = dVar9;
- JAUAudibleParam* puVar7 = z2Audible->getAudibleParam();
- if ((puVar7->field_0x0.bytes.b1_2_7 & 8) && (local_60.mVolume <= 0.2f)) {
+
+ JAUAudibleParam* params = Z2audible->getAudibleParam();
+ if ((params->field_0x0.bytes.b1_2_7 & 8) && (local_60.mVolume <= 0.2f)) {
local_60.mVolume = 0.2f;
}
} else {
local_60.mVolume = 1.0f;
}
- if (z2Audible->getAudibleParam()->field_0x0.bytes.b1_1 && mMaxChannels == 1) {
- local_60.mDolby = calcRelPosDolby(*(Vec*)&pZVar5->field_0x14.field_0x00, param_2);
+ if (Z2audible->getAudibleParam()->field_0x0.bytes.b1_1 && mNumPlayers == 1) {
+ local_60.mDolby = calcRelPosDolby(*(Vec*)&channel->field_0x14.field_0x00, channelNum);
} else {
local_60.mDolby = 0.5f;
}
- if (z2Audible->getAudibleParam()->field_0x0.bytes.b1_0) {
- if (mMaxChannels > 2) {
+ if (Z2audible->getAudibleParam()->field_0x0.bytes.b1_0) {
+ if (mNumPlayers > 2) {
f32 fVar1;
- if (param_2 & 1) {
+ if (channelNum & 1) {
fVar1 = 1.0f;
} else {
fVar1 = 0.0f;
}
local_60.mPan = fVar1;
} else {
- local_60.mPan = calcRelPosPan(*(Vec*)&pZVar5->field_0x14.field_0x00, param_2);
+ local_60.mPan = calcRelPosPan(*(Vec*)&channel->field_0x14.field_0x00, channelNum);
}
} else {
local_60.mPan = 0.5f;
}
- local_60.mPitch = calcPitch_(pZVar5, z2Audible, &mAudioCamera[param_2]);
+ local_60.mPitch = calcPitch_(channel, Z2audible, &mAudioCamera[channelNum]);
f32 dVar9;
- if (z2Audible->getAudibleParam()->field_0x0.bytes.b0_6) {
- dVar9 = calcFxMix_(pZVar5->field_0x14.field_0xC, iVar6);
+ if (Z2audible->getAudibleParam()->field_0x0.bytes.b0_6) {
+ dVar9 = calcFxMix_(channel->field_0x14.field_0xC, distVolBit);
} else {
dVar9 = 0.0f;
}
local_60.mFxMix = dVar9;
local_60.clamp();
- z2Audible->setOuterParams(param_0, local_60, param_2);
+ Z2audible->setOuterParams(outParams, local_60, channelNum);
}
@@ -678,38 +716,41 @@ void Z2Audience::setTargetVolume(f32 volume, int index) {
mAudioCamera[index].setTargetVolume(volume);
}
-
/* 802BD92C-802BD95C 2B826C 0030+00 0/0 4/4 0/0 .text convertAbsToRel__10Z2AudienceFR3VecP3Veci */
-bool Z2Audience::convertAbsToRel(Vec& param_0, Vec* param_1, int param_2) {
- return mAudioCamera[param_2].convertAbsToRel(param_0, param_1);
+bool Z2Audience::convertAbsToRel(Vec& src, Vec* dst, int camID) {
+ JUT_ASSERT(1036, camID >= 0);
+ JUT_ASSERT(1037, camID < mNumPlayers);
+ return getAudioCamera(camID)->convertAbsToRel(src, dst);
}
/* 802BD95C-802BDA44 2B829C 00E8+00 0/0 3/3 0/0 .text calcRelPosVolume__10Z2AudienceFRC3Vecfi */
-f32 Z2Audience::calcRelPosVolume(Vec const& param_0, f32 param_1, int param_2) {
- JGeometry::TVec3<f32> aTStack_3c;
- JGeometry::setTVec3f(param_0, *(Vec*)&aTStack_3c);
- aTStack_3c.z += mAudioCamera[param_2].getVolCenterZ();
+f32 Z2Audience::calcRelPosVolume(const Vec& param_0, f32 param_1, int camID) {
+ JGeometry::TVec3<f32> aTStack_3c(param_0);
+ aTStack_3c.z += mAudioCamera[camID].getVolCenterZ();
aTStack_3c.y *= 1.5f;
- f32 this_00 = aTStack_3c.length();
- if (this_00 > mSetting.field_0x0[0] * param_1) {
+
+ f32 len = aTStack_3c.length();
+ if (len > mSetting.field_0x0[0] * param_1) {
return mSetting.field_0x40;
}
- if (this_00 < mSetting.field_0x3c) {
+ if (len < mSetting.field_0x3c) {
return 1.0f;
}
+
return JGeometry::TUtil<f32>::clamp(
1.0f + ((mSetting.field_0x40 - 1.0f) /
((mSetting.field_0x0[0] * param_1) - mSetting.field_0x3c)) *
- (this_00 - mSetting.field_0x3c),
+ (len - mSetting.field_0x3c),
0.0f, 1.0f);
}
/* 802BDA44-802BDB44 2B8384 0100+00 1/1 3/3 0/0 .text calcRelPosPan__10Z2AudienceFRC3Veci
*/
-f32 Z2Audience::calcRelPosPan(Vec const& param_0, int param_1) {
+f32 Z2Audience::calcRelPosPan(const Vec& param_0, int camID) {
Vec local_54 = param_0;
local_54.y = 0.0f;
+
f32 dVar6 = VECMag(&local_54);
if (dVar6 < 0.1f) {
return 0.5f;
@@ -717,17 +758,18 @@ f32 Z2Audience::calcRelPosPan(Vec const& param_0, int param_1) {
dVar6 = (0.5f + mSetting.field_0x58 * (local_54.x / dVar6));
if (local_54.z <= 0.0f) {
- f32 dVar7 = mAudioCamera[param_1].getFovySin();
+ f32 fovySin = mAudioCamera[camID].getFovySin();
if (dVar6 < 0.5f) {
dVar6 = Z2Calc::getParamByExp(
dVar6, 0.0f, 0.5f,
- dVar7, 0.0f, 0.5f, Z2Calc::CURVE_SIGN_1);
+ fovySin, 0.0f, 0.5f, Z2Calc::CURVE_POSITIVE);
} else {
dVar6 = Z2Calc::getParamByExp(
dVar6, 0.5f, 1.0f,
- dVar7, 0.5f, 1.0f, Z2Calc::CURVE_SIGN_0);
+ fovySin, 0.5f, 1.0f, Z2Calc::CURVE_NEGATIVE);
}
}
+
if (dVar6 > 1.0f) {
return 1.0f;
}
@@ -735,33 +777,37 @@ f32 Z2Audience::calcRelPosPan(Vec const& param_0, int param_1) {
if (dVar6 < 0.0f) {
return 0.0f;
}
+
return dVar6;
}
/* 802BDB44-802BDBDC 2B8484 0098+00 1/1 3/3 0/0 .text calcRelPosDolby__10Z2AudienceFRC3Veci */
-f32 Z2Audience::calcRelPosDolby(Vec const& param_0, int param_1) {
- f32 fVar1 = param_0.z + mAudioCamera[param_1].getDolbyCenterZ();
+f32 Z2Audience::calcRelPosDolby(const Vec& param_0, int camID) {
+ f32 fVar1 = param_0.z + mAudioCamera[camID].getDolbyCenterZ();
if (fVar1 > mSetting.field_0x48) {
return 1.0f;
}
+
if (fVar1 < mSetting.field_0x44) {
return 0.0f;
}
+
if (fVar1 < 0.0f) {
return Z2Calc::getParamByExp(
fVar1, mSetting.field_0x44, 0.0f,
0.3f, 0.0f,
- mSetting.field_0x4c, Z2Calc::CURVE_SIGN_1);
+ mSetting.field_0x4c, Z2Calc::CURVE_POSITIVE);
}
+
return Z2Calc::getParamByExp(
fVar1, 0.0f, mSetting.field_0x48,
0.3f, mSetting.field_0x4c,
- 1.0f, Z2Calc::CURVE_SIGN_0);
+ 1.0f, Z2Calc::CURVE_NEGATIVE);
}
/* 802BDBDC-802BDC44 2B851C 0068+00 1/1 0/0 0/0 .text calcVolume___10Z2AudienceCFfi */
-f32 Z2Audience::calcVolume_(f32 param_0, int param_1) const {
- if (param_0 > mSetting.field_0x0[param_1]) {
+f32 Z2Audience::calcVolume_(f32 param_0, int distVolBit) const {
+ if (param_0 > mSetting.field_0x0[distVolBit]) {
return mSetting.field_0x40;
}
@@ -769,20 +815,12 @@ f32 Z2Audience::calcVolume_(f32 param_0, int param_1) const {
return 1.0f;
}
- f32 volume = 1.0f + mSetting.field_0x70[param_1] * (param_0 - mSetting.field_0x3c);
- if (volume < 0.0f) {
- return 0.0f;
- }
-
- if (volume > 1.0f) {
- return 1.0f;
- }
- return volume;
+ return JGeometry::TUtil<f32>::clamp((mSetting.field_0x70[distVolBit] * (param_0 - mSetting.field_0x3c)) + 1.0f, 0.0f, 1.0f);
}
/* 802BDC44-802BDCB0 2B8584 006C+00 2/2 0/0 0/0 .text calcDeltaPriority___10Z2AudienceCFfib */
-u32 Z2Audience::calcDeltaPriority_(f32 param_0, int param_1, bool param_2) const {
- if (param_0 > mSetting.field_0x0[param_1]) {
+u32 Z2Audience::calcDeltaPriority_(f32 param_0, int distVolBit, bool param_2) const {
+ if (param_0 > mSetting.field_0x0[distVolBit]) {
if (param_2) {
return -1;
}
@@ -793,83 +831,66 @@ u32 Z2Audience::calcDeltaPriority_(f32 param_0, int param_1, bool param_2) const
return 0;
}
- return mSetting.field_0xac[param_1] * (param_0 - mSetting.field_0x3c);
+ return mSetting.field_0xac[distVolBit] * (param_0 - mSetting.field_0x3c);
}
/* 802BDCB0-802BDD00 2B85F0 0050+00 1/1 0/0 0/0 .text
* calcPitchDoppler___10Z2AudienceCFRCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>f
*/
-f32 Z2Audience::calcPitchDoppler_(JGeometry::TVec3<f32> const& param_0,
- JGeometry::TVec3<f32> const& param_1,
- JGeometry::TVec3<f32> const& param_2, f32 param_3) const {
+f32 Z2Audience::calcPitchDoppler_(const JGeometry::TVec3<f32>& param_0,
+ const JGeometry::TVec3<f32>& param_1,
+ const JGeometry::TVec3<f32>& param_2, f32 param_3) const {
f32 dVar8 = param_0.dot(param_1);
f32 dVar7 = param_0.dot(param_2);
return (mSetting.field_0x5c + param_3 * dVar8) / (mSetting.field_0x5c + param_3 * dVar7);
}
/* 802BDD00-802BDD48 2B8640 0048+00 1/1 0/0 0/0 .text calcFxMix___10Z2AudienceCFfi */
-f32 Z2Audience::calcFxMix_(f32 param_0, int param_1) const {
- if (param_0 > mSetting.field_0x0[param_1]) {
+f32 Z2Audience::calcFxMix_(f32 param_0, int distVolBit) const {
+ if (param_0 > mSetting.field_0x0[distVolBit]) {
return mSetting.field_0x54;
}
if (param_0 < mSetting.field_0x3c) {
return mSetting.field_0x50;
}
- return mSetting.field_0x50 + mSetting.field_0xe8[param_1] * (param_0 - mSetting.field_0x3c);
+ return mSetting.field_0x50 + mSetting.field_0xe8[distVolBit] * (param_0 - mSetting.field_0x3c);
}
/* 802BDD48-802BDED4 2B8688 018C+00 1/1 0/0 0/0 .text
* calcPitch___10Z2AudienceCFP16Z2AudibleChannelPC9Z2AudiblePC13Z2AudioCamera */
-f32 Z2Audience::calcPitch_(Z2AudibleChannel* param_0, Z2Audible const* param_1,
- Z2AudioCamera const* param_2) const {
- JAUAudibleParam audParam = *param_1->getAudibleParam();
+f32 Z2Audience::calcPitch_(Z2AudibleChannel* channel, const Z2Audible* audible, const Z2AudioCamera* camera) const {
+ JAUAudibleParam audParam = *audible->getAudibleParam();
if ((*(u8*)&audParam.field_0x0.raw >> 4) & 0xf) {
JGeometry::TVec3<f32> aTStack_4c;
- aTStack_4c.normalize(param_0->field_0x14.field_0x00);
- JAUAudibleParam audParam = *param_1->getAudibleParam();
- f32 dVar7 = audParam.getDopplerPower();
- dVar7 = calcPitchDoppler_(aTStack_4c, *param_2->getVel(), *param_1->getVel(), dVar7);
- if (param_0->field_0x34 > 0.0f) {
- if (param_0->field_0x34 > (dVar7 * mSetting.field_0x60)) {
- return param_0->field_0x34;
+ aTStack_4c.normalize(channel->field_0x14.field_0x00);
+ JAUAudibleParam audParam = *audible->getAudibleParam();
+
+ f32 doppler = audParam.getDopplerPower();
+ doppler = calcPitchDoppler_(aTStack_4c, *camera->getVel(), *audible->getVel(), doppler);
+
+ if (channel->field_0x34 > 0.0f) {
+ if (channel->field_0x34 > (doppler * mSetting.field_0x60)) {
+ return channel->field_0x34;
}
- if (dVar7 > (param_0->field_0x34 * mSetting.field_0x60)) {
- return param_0->field_0x34;
+ if (doppler > (channel->field_0x34 * mSetting.field_0x60)) {
+ return channel->field_0x34;
}
- param_0->field_0x34 = dVar7;
- return dVar7;
- }
- if (dVar7 > 0.0f) {
- param_0->field_0x34 = dVar7;
- return dVar7;
+ channel->field_0x34 = doppler;
+ return doppler;
+ }
+
+ if (doppler > 0.0f) {
+ channel->field_0x34 = doppler;
+ return doppler;
}
+
return 1.0f;
}
+
return 1.0f;
}
-
/* 802BDED4-802BDEDC 2B8814 0008+00 1/0 0/0 0/0 .text getMaxChannels__10Z2AudienceFv */
int Z2Audience::getMaxChannels() {
- return mMaxChannels;
-}
-
-static void dummyMempool() {
-
+ return mNumPlayers;
}
-
-
-
-// padding (???)
-s8 data_80451355;
-s8 data_80451356;
-s8 data_80451357;
-
-/* ############################################################################################## */
-/* 80451358-80451360 -00001 0008+00 0/0 1/1 0/0 .sbss None */
-/* 80451358 0001+00 data_80451358 None */
-/* 80451359 0007+00 data_80451359 None */
-// extern u8 struct_80451358[8];
-// u8 struct_80451358[8];
-s8 data_80451358;
-s8 data_80451359;
diff --git a/src/Z2AudioLib/Z2AudioArcLoader.cpp b/src/Z2AudioLib/Z2AudioArcLoader.cpp
index 6e1a38d8b9..6281f1d197 100644
--- a/src/Z2AudioLib/Z2AudioArcLoader.cpp
+++ b/src/Z2AudioLib/Z2AudioArcLoader.cpp
@@ -1,41 +1,81 @@
-//
-// Generated By: dol2asm
-// Translation Unit: Z2AudioArcLoader
-//
-
#include "Z2AudioLib/Z2AudioArcLoader.h"
#include "JSystem/JAudio2/JAUSectionHeap.h"
+#include "JSystem/JAudio2/JAUSoundTable.h"
#include "JSystem/JKernel/JKRArchive.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "Z2AudioLib/Z2FxLineMgr.h"
+#include "m_Do/m_Do_ext.h"
/* 802A9A34-802A9A70 2A4374 003C+00 0/0 1/1 0/0 .text __ct__16Z2AudioArcLoaderFP10JAUSection */
-Z2AudioArcLoader::Z2AudioArcLoader(JAUSection* param_0) : JAUAudioArcLoader(param_0) {
- /* empty function */
-}
+Z2AudioArcLoader::Z2AudioArcLoader(JAUSection* section) : JAUAudioArcLoader(section) {}
/* 802A9A70-802A9AC8 2A43B0 0058+00 1/0 0/0 0/0 .text readCommandMore__16Z2AudioArcLoaderFUl */
-bool Z2AudioArcLoader::readCommandMore(u32 param_0) {
+bool Z2AudioArcLoader::readCommandMore(u32 command) {
bool rv = false;
- switch (param_0) {
+ u32 read = 0;
+
+ switch (command) {
case 'bfca':
- readBFCA(getContent_(readU32_()));
+ read = readU32_();
+ readBFCA(getContent_(read));
rv = true;
break;
}
+
return rv;
}
/* 802A9AC8-802A9B54 2A4408 008C+00 1/1 0/0 0/0 .text readBFCA__16Z2AudioArcLoaderFPCv */
-void Z2AudioArcLoader::readBFCA(void const* param_0) {
+void Z2AudioArcLoader::readBFCA(const void* addr) {
+ JUT_ASSERT(76, addr);
+
JKRHeap* heap = JAUSectionHeap::getInstance()->getHeap();
- JKRArchive* archive = JKRMountArchive((void*)param_0, JKRGetCurrentHeap(), JKRArchive::MOUNT_DIRECTION_TAIL);
+ JUT_ASSERT(78, heap);
+ JUT_ASSERT(79, Z2GetFxLineMgr());
+
+ JKRArchive* archive = JKRMountArchive((void*)addr, JKRGetCurrentHeap(), JKRArchive::MOUNT_DIRECTION_TAIL);
Z2GetFxLineMgr()->initDataArc(archive, heap);
JKRUnmountArchive(archive);
}
/* 802A9B54-802A9B58 2A4494 0004+00 1/0 0/0 0/0 .text readBSTN__16Z2AudioArcLoaderFPCvUl
*/
-void Z2AudioArcLoader::readBSTN(void const* param_0, u32 param_1) {
- /* empty function */
+void Z2AudioArcLoader::readBSTN(const void* addr, u32 param_1) {
+#if VERSION == VERSION_SHIELD_DEBUG
+ JAUSectionHeap* sectionHeap = JASGlobalInstance<JAUSectionHeap>::getInstance();
+ JUT_ASSERT(97, sectionHeap);
+
+ JUT_ASSERT(99, sectionHeap->isOpen());
+ JUT_ASSERT(100, sectionHeap->isBuilding());
+ JUT_ASSERT(101, addr);
+
+ JUT_ASSERT(103, sectionHeap->getSectionHeapData().soundNameTable == 0);
+
+ JKRHeap* heap = JKRHeap::getCurrentHeap();
+ JKRHeap* gameHeap = (JKRHeap*)mDoExt_getGameHeap();
+ JKRSetCurrentHeap(gameHeap);
+
+ u8* bstnDst = (u8*)addr;
+ if (param_1 != 0) {
+ bstnDst = new (gameHeap, 4) u8[param_1];
+ if (bstnDst != NULL) {
+ memcpy(bstnDst, addr, param_1);
+ }
+
+ JUT_ASSERT(122, bstnDst);
+ }
+
+ JAUSoundNameTable* soundNameTable = new (gameHeap, 0) JAUSoundNameTable(true);
+ JUT_ASSERT(125, soundNameTable);
+
+ soundNameTable->init(bstnDst);
+
+ JAUSectionHeap::TSectionHeapData& sectionHeapData = (JAUSectionHeap::TSectionHeapData&)sectionHeap->getSectionHeapData();
+ sectionHeapData.soundNameTable = soundNameTable;
+
+ JAUSection::TSectionData& sectionData = (JAUSection::TSectionData&)sectionHeap->getSectionData();
+ sectionData.mBstnDst = bstnDst;
+
+ JKRSetCurrentHeap(heap);
+#endif
}
diff --git a/src/Z2AudioLib/Z2AudioMgr.cpp b/src/Z2AudioLib/Z2AudioMgr.cpp
index 7366ea5094..15039ca082 100644
--- a/src/Z2AudioLib/Z2AudioMgr.cpp
+++ b/src/Z2AudioLib/Z2AudioMgr.cpp
@@ -1,8 +1,3 @@
-//
-// Generated By: dol2asm
-// Translation Unit: Z2AudioMgr
-//
-
#include "Z2AudioLib/Z2AudioMgr.h"
#include "JSystem/JAudio2/JASAiCtrl.h"
#include "JSystem/JAudio2/JASDriverIF.h"
@@ -11,13 +6,15 @@
#include "JSystem/JAudio2/JAUInitializer.h"
#include "JSystem/JAudio2/JAUSectionHeap.h"
#include "JSystem/JAudio2/JAUStreamAramMgr.h"
+#include "JSystem/JAudio2/JAUSeqCollection.h"
#include "JSystem/JKernel/JKRSolidHeap.h"
#include "Z2AudioLib/Z2AudioArcLoader.h"
#include "Z2AudioLib/Z2Param.h"
#include "Z2AudioLib/Z2SoundHandles.h"
-#include "stdio.h"
-#include "stdlib.h"
-#include "dolphin/os.h"
+
+#if PLATFORM_WII || PLATFORM_SHIELD
+#include "Z2AudioLib/Z2AudioCS.h"
+#endif
/* 80451368-80451370 000868 0004+04 1/1 251/251 900/900 .sbss mAudioMgrPtr__10Z2AudioMgr
*/
@@ -32,45 +29,46 @@ Z2AudioMgr::Z2AudioMgr() : mSoundStarter(true) {
/* 802CD34C-802CD7F8 2C7C8C 04AC+00 0/0 1/1 0/0 .text
* init__10Z2AudioMgrFP12JKRSolidHeapUlPvP10JKRArchive */
-void Z2AudioMgr::init(JKRSolidHeap* param_0, u32 param_1, void* param_2, JKRArchive* param_3) {
- JAU_JASInitializer stack_60;
- stack_60.field_0x04 = param_1;
- stack_60.field_0x1c = 0x8c;
- stack_60.field_0x2c = 1.3f;
- stack_60.field_0x30 = "Audiores/Waves/";
- stack_60.initJASystem(param_0);
-
- JAU_JAIInitializer stack_90;
- stack_90.field_0x0 = 0x4e;
- stack_90.field_0x4 = 4;
- stack_90.field_0xc = 0x30;
- stack_90.initJAInterface();
+// NONMATCHING JASPoolAllocObject<_> locations
+void Z2AudioMgr::init(JKRSolidHeap* heap, u32 memSize, void* baaData, JKRArchive* seqArc) {
+ JAU_JASInitializer JASInitializer;
+ JASInitializer.audioMemSize_ = memSize;
+ JASInitializer.field_0x1c = 140;
+ JASInitializer.dspLevel_ = 1.3f;
+ JASInitializer.waveArcDir_ = "Audiores/Waves/";
+ JASInitializer.initJASystem(heap);
+
+ JAU_JAIInitializer JAIInitializer;
+ JAIInitializer.field_0x0 = 78;
+ JAIInitializer.field_0x4 = 4;
+ JAIInitializer.field_0xc = 48;
+ JAIInitializer.initJAInterface();
- JAISeMgr *seMgr = mSoundMgr.getSeMgr();
-
- JAISeCategoryArrangement stack_80;
- stack_80.mItems[0].mMaxActiveSe = 4;
- stack_80.mItems[0].mMaxInactiveSe = 2;
- stack_80.mItems[1].mMaxActiveSe = 2;
- stack_80.mItems[1].mMaxInactiveSe = 1;
- stack_80.mItems[2].mMaxActiveSe = 6;
- stack_80.mItems[2].mMaxInactiveSe = 3;
- stack_80.mItems[3].mMaxActiveSe = 16;
- stack_80.mItems[3].mMaxInactiveSe = 8;
- stack_80.mItems[4].mMaxActiveSe = 8;
- stack_80.mItems[4].mMaxInactiveSe = 4;
- stack_80.mItems[5].mMaxActiveSe = 6;
- stack_80.mItems[5].mMaxInactiveSe = 3;
- stack_80.mItems[6].mMaxActiveSe = 6;
- stack_80.mItems[6].mMaxInactiveSe = 3;
- stack_80.mItems[7].mMaxActiveSe = 12;
- stack_80.mItems[7].mMaxInactiveSe = 8;
- stack_80.mItems[8].mMaxActiveSe = 10;
- stack_80.mItems[8].mMaxInactiveSe = 5;
- stack_80.mItems[9].mMaxActiveSe = 8;
- stack_80.mItems[9].mMaxInactiveSe = 4;
-
- seMgr->setCategoryArrangement(stack_80);
+ JAISeMgr* seMgr = mSoundMgr.getSeMgr();
+
+ JAISeCategoryArrangement categoryArrangement;
+ categoryArrangement.mItems[0].mMaxActiveSe = 4;
+ categoryArrangement.mItems[0].mMaxInactiveSe = 2;
+ categoryArrangement.mItems[1].mMaxActiveSe = 2;
+ categoryArrangement.mItems[1].mMaxInactiveSe = 1;
+ categoryArrangement.mItems[2].mMaxActiveSe = 6;
+ categoryArrangement.mItems[2].mMaxInactiveSe = 3;
+ categoryArrangement.mItems[3].mMaxActiveSe = 16;
+ categoryArrangement.mItems[3].mMaxInactiveSe = 8;
+ categoryArrangement.mItems[4].mMaxActiveSe = 8;
+ categoryArrangement.mItems[4].mMaxInactiveSe = 4;
+ categoryArrangement.mItems[5].mMaxActiveSe = 6;
+ categoryArrangement.mItems[5].mMaxInactiveSe = 3;
+ categoryArrangement.mItems[6].mMaxActiveSe = 6;
+ categoryArrangement.mItems[6].mMaxInactiveSe = 3;
+ categoryArrangement.mItems[7].mMaxActiveSe = 12;
+ categoryArrangement.mItems[7].mMaxInactiveSe = 8;
+ categoryArrangement.mItems[8].mMaxActiveSe = 10;
+ categoryArrangement.mItems[8].mMaxInactiveSe = 5;
+ categoryArrangement.mItems[9].mMaxActiveSe = 8;
+ categoryArrangement.mItems[9].mMaxInactiveSe = 4;
+ seMgr->setCategoryArrangement(categoryArrangement);
+
seMgr->getCategory(0)->getParams()->moveVolume(Z2Param::VOL_SE_SYSTEM_DEFAULT, 0);
seMgr->getCategory(1)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_VOICE_DEFAULT, 0);
seMgr->getCategory(2)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_MOTION_DEFAULT, 0);
@@ -81,33 +79,48 @@ void Z2AudioMgr::init(JKRSolidHeap* param_0, u32 param_1, void* param_2, JKRArch
seMgr->getCategory(7)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_DEFAULT, 0);
seMgr->getCategory(8)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_DEFAULT, 0);
seMgr->getCategory(9)->getParams()->moveVolume(Z2Param::VOL_SE_ATMOSPHERE_DEFAULT, 0);
+
seMgr->getParams()->moveVolume(1.0f, 0);
JAISeqMgr* seqMgr = mSoundMgr.getSeqMgr();
seqMgr->getParams()->moveVolume(Z2Param::VOL_BGM_DEFAULT, 0);
+
JAIStreamMgr* streamMgr = mSoundMgr.getStreamMgr();
- JAUStreamStaticAramMgr_<1>* streamStaticAramMgr = new(param_0, 0) JAUStreamStaticAramMgr_<1>();
+ JAUStreamStaticAramMgr_<1>* streamStaticAramMgr = new(heap, 0) JAUStreamStaticAramMgr_<1>();
streamStaticAramMgr->reserveAram(NULL, 0, 0x14);
streamMgr->setStreamAramMgr(streamStaticAramMgr);
streamMgr->getParams()->moveVolume(Z2Param::VOL_BGM_DEFAULT, 0);
+
JASPoolAllocObject<Z2Audible>::newMemPool(0x4e);
mSoundMgr.getSeMgr()->setAudience(&mAudience);
mSoundMgr.getSeqMgr()->setAudience(&mAudience);
+
+ #if PLATFORM_WII || PLATFORM_SHIELD
+ Z2AudioCS::newSpkSoundMemPool();
+ #endif
+
JASPoolAllocObject<Z2SoundHandlePool>::newMemPool(0x4e);
- // OSReport("[Z2AudioMgr::init]before Create Section: %d\n", param_0->getFreeSize());
+ OS_REPORT("[Z2AudioMgr::init]before Create Section: %d\n", heap->getFreeSize());
JAUSectionHeap* sectionHeap = JAUNewSectionHeap(true);
- sectionHeap->setSeqDataArchive(param_3);
- size_t resMaxSize = JASResArcLoader::getResMaxSize(param_3);
- sectionHeap->newDynamicSeqBlock(0xe00);
- sectionHeap->newDynamicSeqBlock(0x17e0);
+ sectionHeap->setSeqDataArchive(seqArc);
+ size_t resMaxSize = JASResArcLoader::getResMaxSize(seqArc);
+ sectionHeap->newDynamicSeqBlock(0xE00);
+ sectionHeap->newDynamicSeqBlock(0x17E0);
sectionHeap->newDynamicSeqBlock(0x5380);
sectionHeap->newDynamicSeqBlock(resMaxSize);
- Z2AudioArcLoader stack_a0(sectionHeap);
- bool baaLoadResult = stack_a0.load(param_2);
+
+ Z2AudioArcLoader audioArcLoader(sectionHeap);
+ bool baaLoadResult = audioArcLoader.load(baaData);
JUT_ASSERT(252, baaLoadResult);
+
+ #if DEBUG
+ seMgr->setSeqDataMgr(mDebugSys.initSeSeqDataMgr(((JAUSeqDataMgr_SeqCollection*)sectionHeap->getSeSeqDataMgr())->getResource()));
+ #else
seMgr->setSeqDataMgr(sectionHeap->getSeSeqDataMgr());
+ #endif
seqMgr->setSeqDataMgr(sectionHeap->getSeqSeqDataMgr());
+
if (sectionHeap->getStreamDataMgr()) {
// The following is to force stack reg to be r31 in dbg:
int unused;
@@ -115,15 +128,21 @@ void Z2AudioMgr::init(JKRSolidHeap* param_0, u32 param_1, void* param_2, JKRArch
} else {
streamMgr->setStreamDataMgr(&mSoundInfo);
}
+
sectionHeap->finishBuild();
initSe();
JASSeqParser::registerSeqCallback(seqCallback);
+
+ #if DEBUG
+ mDebugSys.initSoundHioNode();
+ mDebugSys.initJAW();
+ #endif
}
/* 802CD888-802CD8B4 2C81C8 002C+00 0/0 5/5 0/0 .text setOutputMode__10Z2AudioMgrFUl */
void Z2AudioMgr::setOutputMode(u32 mode) {
if (mode <= 2) {
- JASDriver::setOutputMode(mode);
+ JAISetOutputMode(mode);
}
}
@@ -134,11 +153,16 @@ void Z2AudioMgr::zeldaGFrameWork() {
processSeFramework();
processBgmFramework();
processHeartGaugeSound();
+
+ #if DEBUG
+ mDebugSys.debugframework();
+ #endif
}
/* 802CD904-802CD974 2C8244 0070+00 0/0 1/1 0/0 .text gframeProcess__10Z2AudioMgrFv */
void Z2AudioMgr::gframeProcess() {
zeldaGFrameWork();
+
if (mResettingFlag && mAudioReseter.checkDone()) {
if (!field_0x519) {
mSoundMgr.stopSync();
@@ -151,6 +175,8 @@ void Z2AudioMgr::gframeProcess() {
/* 802CD974-802CD9CC 2C82B4 0058+00 0/0 3/3 0/0 .text resetProcess__10Z2AudioMgrFUlb */
void Z2AudioMgr::resetProcess(u32 param_0, bool param_1) {
+ JUT_ASSERT(413, !mResettingFlag);
+
mAudioReseter.start(param_0 * JASDriver::getSubFrames(), param_1);
field_0x519 = param_1;
mResettingFlag = true;
@@ -158,6 +184,9 @@ void Z2AudioMgr::resetProcess(u32 param_0, bool param_1) {
/* 802CD9CC-802CDA6C 2C830C 00A0+00 0/0 1/1 0/0 .text resetRecover__10Z2AudioMgrFv */
void Z2AudioMgr::resetRecover() {
+ JUT_ASSERT(427, mResettingFlag);
+ JUT_ASSERT(428, mAudioReseter.checkDone());
+
mAudioReseter.resume();
mSoundMgr.initParams();
mResettingFlag = false;
@@ -172,18 +201,26 @@ void Z2AudioMgr::resetRecover() {
/* 802CDA6C-802CDB1C 2C83AC 00B0+00 0/0 2/2 0/0 .text hasReset__10Z2AudioMgrCFv */
bool Z2AudioMgr::hasReset() const {
- return mResettingFlag && mAudioReseter.checkDone()
- && (field_0x519
- || (mSoundMgr.getSeMgr()->getNumActiveSe() == 0
- && mSoundMgr.getSeqMgr()->getNumActiveSeqs() == 0));
+ return mResettingFlag && mAudioReseter.checkDone() &&
+ (field_0x519 || (mSoundMgr.getSeMgr()->getNumActiveSe() == 0 && mSoundMgr.getSeqMgr()->getNumActiveSeqs() == 0));
}
/* 802CDB1C-802CDB68 2C845C 004C+00 1/0 1/0 0/0 .text
* startSound__10Z2AudioMgrF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3<f> */
-bool Z2AudioMgr::startSound(JAISoundID param_0, JAISoundHandle* param_1,
- JGeometry::TVec3<f32> const* param_2) {
+bool Z2AudioMgr::startSound(JAISoundID soundID, JAISoundHandle* handle,
+ const JGeometry::TVec3<f32>* posPtr) {
+ if (mResettingFlag) {
+ return 0;
+ }
+
+ return mSoundMgr.startSound(soundID, handle, posPtr);
+}
+
+bool Z2AudioMgr::startLevelSound(JAISoundID soundID, JAISoundHandle* handle,
+ const JGeometry::TVec3<f32>* posPtr) {
if (mResettingFlag) {
return 0;
}
- return mSoundMgr.startSound(param_0, param_1, param_2);
+
+ return mSoundMgr.startSound(soundID, handle, posPtr);
}
diff --git a/src/Z2AudioLib/Z2Calc.cpp b/src/Z2AudioLib/Z2Calc.cpp
index eb12401057..9ba1fb58ec 100644
--- a/src/Z2AudioLib/Z2Calc.cpp
+++ b/src/Z2AudioLib/Z2Calc.cpp
@@ -1,138 +1,112 @@
-//
-// Generated By: dol2asm
-// Translation Unit: Z2Calc
-//
-
#include "Z2AudioLib/Z2Calc.h"
#include "JSystem/JMath/random.h"
-#include "math.h"
-#include "dol2asm.h"
+#include <math.h>
/* 802A968C-802A96F4 2A3FCC 0068+00 1/1 16/16 0/0 .text linearTransform__6Z2CalcFfffffb
*/
-f32 Z2Calc::linearTransform(f32 param1, f32 param2, f32 param3, f32 param4, f32 param5,
- bool param6) {
- f32 temp;
-
- temp = param4 + (param1 - param2) * ((param5 - param4) / (param3 - param2));
-
- if (param6) {
- return temp;
- } else if (param4 < param5) {
- if (temp > param5) {
- return param5;
- } else if (temp < param4) {
- return param4;
- } else {
- return temp;
- }
- } else if (temp > param4) {
- return param4;
- } else if (temp < param5) {
- return param5;
+f32 Z2Calc::linearTransform(f32 inValue, f32 inMin, f32 inMax, f32 outMin, f32 outMax, bool noClamp) {
+ f32 transformed = outMin + ((inValue - inMin) * ((outMax - outMin) / (inMax - inMin)));
+ if (noClamp) {
+ return transformed;
+ }
+
+ if (outMin < outMax) {
+ return transformed > outMax ? outMax :
+ transformed < outMin ? outMin :
+ transformed;
} else {
- return temp;
+ return transformed > outMin ? outMin :
+ transformed < outMax ? outMax :
+ transformed;
}
}
-/* ############################################################################################## */
/* 80455820-80455824 003E20 0004+00 0/0 1/1 0/0 .sdata2 cEqualCSlope__6Z2Calc */
-SECTION_SDATA2 f32 Z2Calc::cEqualCSlope = 1.0f;
+const f32 Z2Calc::cEqualCSlope = 1.0f;
/* 80455824-80455828 003E24 0004+00 0/0 1/1 0/0 .sdata2 cEqualPSlope__6Z2Calc */
-SECTION_SDATA2 f32 Z2Calc::cEqualPSlope = 0.5f;
+const f32 Z2Calc::cEqualPSlope = 0.5f;
/* 802A96F4-802A9814 2A4034 0120+00 0/0 29/29 0/0 .text
* getParamByExp__6Z2CalcFffffffQ26Z2Calc9CurveSign */
-f32 Z2Calc::getParamByExp(f32 f1, f32 f2, f32 f3, f32 f4, f32 f5, f32 f6, Z2Calc::CurveSign sign) {
- f32 out;
- if (sign == Z2Calc::CURVE_SIGN_1) {
- f32 tmp = exp(Z2Calc::linearTransform(f1, f2, f3, 0.0f, f4, true));
- out = Z2Calc::linearTransform(tmp, 1.0f, exp(f4), f5, f6, true);
- } else if (sign == Z2Calc::CURVE_SIGN_0) {
- f32 tmp = exp(Z2Calc::linearTransform(f1, f2, f3, f4, 0.0f, true));
- out = Z2Calc::linearTransform(tmp, exp(f4), 1.0f, f5, f6, true);
+f32 Z2Calc::getParamByExp(f32 value, f32 inMin, f32 inMax, f32 exponent, f32 outMin, f32 outMax, Z2Calc::CurveSign curveSign) {
+ if (curveSign == Z2Calc::CURVE_POSITIVE) {
+ value = linearTransform(value, inMin, inMax, 0.0f, exponent, true);
+ value = expf(value);
+ value = linearTransform(value, 1.0f, expf(exponent), outMin, outMax, true);
+ } else if (curveSign == Z2Calc::CURVE_NEGATIVE) {
+ value = linearTransform(value, inMin, inMax, exponent, 0.0f, true);
+ value = expf(value);
+ value = linearTransform(value, expf(exponent), 1.0f, outMin, outMax, true);
} else {
- out = Z2Calc::linearTransform(f1, f2, f3, f5, f6, false);
- }
- if (out > f6) {
- return f6;
+ value = linearTransform(value, inMin, inMax, outMin, outMax, false);
}
- if (out < f5) {
- return f5;
- }
- return out;
+
+ return value > outMax ? outMax :
+ value < outMin ? outMin :
+ value;
}
/* 802A9814-802A98D4 2A4154 00C0+00 0/0 2/2 0/0 .text getRandom__6Z2CalcFfff */
-f32 Z2Calc::getRandom(f32 f1, f32 f2, f32 f3) {
- f32 tmp = 2.0f * f3;
- f32 tmp2 = (1.0f - f3) * -2.0f;
- f1 *= Z2Calc::getRandom_0_1() < f3 ? tmp : tmp2;
- f32 tmp3 = pow(Z2Calc::getRandom_0_1(), f2);
- return tmp3 * f1;
+f32 Z2Calc::getRandom(f32 magnitude, f32 exponent, f32 bias) {
+ f32 posBias = 2.0f * bias;
+ f32 negBias = (1.0f - bias) * -2.0f;
+ magnitude *= Z2Calc::getRandom_0_1() < bias ? posBias : negBias;
+
+ f32 exprnd = pow(Z2Calc::getRandom_0_1(), exponent);
+ return exprnd * magnitude;
}
/* 802A98D4-802A9944 2A4214 0070+00 1/1 1/1 0/0 .text getRandom_0_1__6Z2CalcFv */
-f32 Z2Calc::getRandom_0_1(void) {
- static JMath::TRandom_fast_ oRandom(0);
+f32 Z2Calc::getRandom_0_1() {
+ static JMath::TRandom_<JMath::TRandom_fast_> oRandom(0);
return oRandom.get_ufloat_1();
}
/* 802A9944-802A9958 2A4284 0014+00 0/0 1/1 0/0 .text setParam__Q26Z2Calc8FNoise1fFfff */
-void Z2Calc::FNoise1f::setParam(f32 param1, f32 param2, f32 param3) {
- this->unk0 = param1;
- this->unk4 = param1;
- this->unk12 = param2;
- this->unk8 = param3;
+void Z2Calc::FNoise1f::setParam(f32 value, f32 threshold, f32 step) {
+ value_ = value;
+ targetValue_ = value;
+ threshold_ = threshold;
+ step_ = step;
}
/* 802A9958-802A99A0 2A4298 0048+00 1/1 0/0 0/0 .text tau__Q26Z2Calc8FNoise1fFf */
-f32 Z2Calc::FNoise1f::tau(f32 param1) {
- f32 temp1;
- f32 temp2;
-
- temp1 = param1;
- temp2 = temp1 + (temp1 * temp1);
-
- if (temp2 > 1.0f) {
- temp2 = temp2 - 1.0f;
-
- if (temp1 < this->unk12) {
- temp2 = temp2 + this->unk12;
+f32 Z2Calc::FNoise1f::tau(f32 input) {
+ f32 var_f30 = 1.0f;
+
+ f32 result = input + (input * input);
+ if (result > var_f30) {
+ result = result - var_f30;
+ if (input < threshold_) {
+ result += threshold_;
}
+ return result;
+ }
- return temp2;
- } else if (temp1 < this->unk12) {
- temp2 = temp2 + this->unk12;
+ if (input < threshold_) {
+ result += threshold_;
}
- return temp2;
+
+ return result;
}
/* 802A99A0-802A9A34 2A42E0 0094+00 0/0 5/5 0/0 .text calcNoise1f__Q26Z2Calc8FNoise1fFv
*/
-f32 Z2Calc::FNoise1f::calcNoise1f(void) {
- f32 temp1;
- f32 temp2;
-
- temp1 = this->unk0;
-
- if (this->unk0 < this->unk4) {
- this->unk0 = temp1 + this->unk8;
-
- if (this->unk0 < this->unk4) {
- return this->unk0;
+f32 Z2Calc::FNoise1f::calcNoise1f() {
+ if (value_ < targetValue_) {
+ value_ += step_;
+ if (value_ < targetValue_) {
+ return value_;
}
} else {
- this->unk0 = temp1 - this->unk8;
-
- if (this->unk0 > this->unk4) {
- return this->unk0;
+ value_ -= step_;
+ if (value_ > targetValue_) {
+ return value_;
}
}
- this->unk0 = this->unk4;
- temp2 = tau(this->unk0);
- this->unk4 = temp2;
- return this->unk0;
+ value_ = targetValue_;
+ targetValue_ = tau(value_);
+ return value_;
}
diff --git a/src/Z2AudioLib/Z2Creature.cpp b/src/Z2AudioLib/Z2Creature.cpp
index d5f057b102..fb7023503f 100644
--- a/src/Z2AudioLib/Z2Creature.cpp
+++ b/src/Z2AudioLib/Z2Creature.cpp
@@ -1,10 +1,4 @@
-/**
- * Z2Creature.cpp
- * Z2AudioLib - Creatures
- */
-
#include "Z2AudioLib/Z2Creature.h"
-#include "SSystem/SComponent/c_xyz.h"
#include "Z2AudioLib/Z2Param.h"
#include "Z2AudioLib/Z2Calc.h"
#include "Z2AudioLib/Z2AudioMgr.h"
@@ -117,50 +111,52 @@ Z2Creature::~Z2Creature() {
/* 802C04E8-802C0530 2BAE28 0048+00 4/2 2/2 0/0 .text deleteObject__10Z2CreatureFv */
void Z2Creature::deleteObject() {
- mSoundObjAnime.mpAnimation = NULL;
+ mSoundObjAnime.stopAnime();
mSoundObjAnime.deleteObject();
mSoundObjSimple1.deleteObject();
mSoundObjSimple2.deleteObject();
}
/* 802C0530-802C05B0 2BAE70 0080+00 5/5 1/1 125/125 .text init__10Z2CreatureFP3VecP3VecUcUc */
-void Z2Creature::init(Vec* param_0, Vec* param_1, u8 param_2, u8 param_3) {
- if (param_0) {
- mSoundObjAnime.init(param_0, param_2);
- mpPos = param_0;
+void Z2Creature::init(Vec* animePosPtr, Vec* simplePosPtr, u8 animeHandleNum, u8 simpleHandleNum) {
+ if (animePosPtr) {
+ mSoundObjAnime.init(animePosPtr, animeHandleNum);
+ mpPos = animePosPtr;
}
- if (param_1) {
- mSoundObjSimple1.init(param_1, param_3);
+
+ if (simplePosPtr) {
+ mSoundObjSimple1.init(simplePosPtr, simpleHandleNum);
}
}
/* 802C05B0-802C0618 2BAEF0 0068+00 2/2 1/1 0/0 .text init__10Z2CreatureFP3VecP3VecP3VecUcUcUc */
-void Z2Creature::init(Vec* param_0, Vec* param_1, Vec* param_2, u8 param_3, u8 param_4,
- u8 param_5) {
- init(param_0, param_1, param_3, param_4);
- if (param_2) {
- mSoundObjSimple2.init(param_2, param_5);
+void Z2Creature::init(Vec* animePosPtr, Vec* simplePosPtr, Vec* simple2PosPtr, u8 animeHandleNum, u8 simpleHandleNum,
+ u8 simple2HandleNum) {
+ init(animePosPtr, simplePosPtr, animeHandleNum, simpleHandleNum);
+
+ if (simple2PosPtr) {
+ mSoundObjSimple2.init(simple2PosPtr, simple2HandleNum);
}
}
/* 802C0618-802C0628 2BAF58 0010+00 7/0 2/0 0/0 .text
* setSoundStarter__10Z2CreatureFP14Z2SoundStarter */
-void Z2Creature::setSoundStarter(Z2SoundStarter* i_starter) {
- mSoundObjAnime.setSoundStarter(i_starter);
- mSoundObjSimple1.setSoundStarter(i_starter);
- mSoundObjSimple2.setSoundStarter(i_starter);
+void Z2Creature::setSoundStarter(Z2SoundStarter* soundStarter) {
+ mSoundObjAnime.setSoundStarter(soundStarter);
+ mSoundObjSimple1.setSoundStarter(soundStarter);
+ mSoundObjSimple2.setSoundStarter(soundStarter);
}
/* 802C0628-802C064C 2BAF68 0024+00 0/0 4/4 2/2 .text initAnime__10Z2CreatureFPvbff */
-void Z2Creature::initAnime(void* param_0, bool param_1, f32 param_2, f32 param_3) {
- mSoundObjAnime.initAnime(param_0, param_1, param_2, param_3);
+void Z2Creature::initAnime(void* animation, bool param_1, f32 startFrame, f32 param_3) {
+ mSoundObjAnime.initAnime(animation, param_1, startFrame, param_3);
}
/* 802C064C-802C06D0 2BAF8C 0084+00 7/3 2/1 0/0 .text framework__10Z2CreatureFUlSc */
-void Z2Creature::framework(u32 param_0, s8 param_1) {
- mSoundObjAnime.framework(param_0, param_1);
- mSoundObjSimple1.framework(param_0, param_1);
- mSoundObjSimple2.framework(param_0, param_1);
+void Z2Creature::framework(u32 mapinfo, s8 reverb) {
+ mSoundObjAnime.framework(mapinfo, reverb);
+ mSoundObjSimple1.framework(mapinfo, reverb);
+ mSoundObjSimple2.framework(mapinfo, reverb);
}
/* 802C06D0-802C06F4 2BB010 0024+00 0/0 3/3 2/2 .text updateAnime__10Z2CreatureFff */
@@ -175,115 +171,118 @@ void Z2Creature::stopAnime() {
/* 802C0720-802C087C 2BB060 015C+00 4/0 2/0 0/0 .text
* startCreatureSound__10Z2CreatureF10JAISoundIDUlSc */
-Z2SoundHandlePool* Z2Creature::startCreatureSound(JAISoundID i_soundID, u32 param_1, s8 param_2) {
- switch (i_soundID) {
- case Z2SE_KOSARU_V_KAGO_WAIT:
- return mSoundObjSimple1.startSound(i_soundID, param_1, 0);
- default:
- Z2SoundHandlePool* handle = mSoundObjAnime.startSound(i_soundID, param_1, param_2);
- if (handle != NULL && *handle) {
- switch (i_soundID) {
- case Z2SE_FAIRY_S_FLY:
- f32 pitch = Z2Calc::getParamByExp((f32)param_1, 30.0f, 100.0f, 0.3f,
- 0.8f, 1.2f, Z2Calc::CURVE_SIGN_0);
- f32 volume = Z2Calc::getParamByExp((f32)param_1, 30.0f, 100.0f, 0.3f,
- 0.5f, 1.0f, Z2Calc::CURVE_SIGN_0);
- (*handle)->getAuxiliary().moveVolume(volume, 0);
- (*handle)->getAuxiliary().movePitch(pitch, 0);
- }
+Z2SoundHandlePool* Z2Creature::startCreatureSound(JAISoundID soundID, u32 mapinfo, s8 reverb) {
+ switch (soundID) {
+ case Z2SE_KOSARU_V_KAGO_WAIT:
+ return mSoundObjSimple1.startSound(soundID, mapinfo, 0);
+ default:
+ Z2SoundHandlePool* handle = mSoundObjAnime.startSound(soundID, mapinfo, reverb);
+ if (handle != NULL && *handle) {
+ switch (soundID) {
+ case Z2SE_FAIRY_S_FLY:
+ f32 pitch = Z2Calc::getParamByExp((f32)mapinfo, 30.0f, 100.0f, 0.3f,
+ 0.8f, 1.2f, Z2Calc::CURVE_NEGATIVE);
+ f32 volume = Z2Calc::getParamByExp((f32)mapinfo, 30.0f, 100.0f, 0.3f,
+ 0.5f, 1.0f, Z2Calc::CURVE_NEGATIVE);
+ (*handle)->getAuxiliary().moveVolume(volume, 0);
+ (*handle)->getAuxiliary().movePitch(pitch, 0);
}
- return handle;
+ }
+ return handle;
}
}
/* 802C087C-802C0A4C 2BB1BC 01D0+00 4/0 2/0 0/0 .text
* startCreatureSoundLevel__10Z2CreatureF10JAISoundIDUlSc */
-Z2SoundHandlePool* Z2Creature::startCreatureSoundLevel(JAISoundID i_soundID, u32 param_1, s8 param_2) {
- switch (i_soundID) {
- case Z2SE_FAIRY_S_LV:
- Z2GetAudioMgr()->seStartLevel(i_soundID, mpPos, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
- return NULL;
- default:
- Z2SoundHandlePool* handle = mSoundObjAnime.startLevelSound(i_soundID, param_1, param_2);
- if (handle != NULL && *handle) {
- if (i_soundID == Z2SE_YM_SNOBO_RIDE || i_soundID == Z2SE_YW_SNOBO_RIDE) {
- f32 volume = 0.0f;
- if (param_1 != 0) {
- volume = Z2Calc::getParamByExp((f32)param_1, 0.0f, 92.0f, 0.25f,
- 0.4f, 1.0f, Z2Calc::CURVE_SIGN_0);
- }
- f32 pitch = Z2Calc::getParamByExp((f32)param_1, 0.0f, 92.0f, 0.3f,
- 0.5f, 1.2f, Z2Calc::CURVE_SIGN_0);
-
- (*handle)->getAuxiliary().moveVolume(volume, 0);
- (*handle)->getAuxiliary().movePitch(pitch, 0);
- } else if (i_soundID == Z2SE_ZRZ_MV) {
- (*handle)->getAuxiliary().moveVolume((f32)param_1 / 100.0f, 0);
+Z2SoundHandlePool* Z2Creature::startCreatureSoundLevel(JAISoundID soundID, u32 mapinfo, s8 reverb) {
+ switch (soundID) {
+ case Z2SE_FAIRY_S_LV:
+ Z2GetAudioMgr()->seStartLevel(soundID, mpPos, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
+ return NULL;
+ default:
+ Z2SoundHandlePool* handle = mSoundObjAnime.startLevelSound(soundID, mapinfo, reverb);
+ if (handle != NULL && *handle) {
+ if (soundID == Z2SE_YM_SNOBO_RIDE || soundID == Z2SE_YW_SNOBO_RIDE) {
+ f32 volume = 0.0f;
+ if (mapinfo != 0) {
+ volume = Z2Calc::getParamByExp((f32)mapinfo, 0.0f, 92.0f, 0.25f,
+ 0.4f, 1.0f, Z2Calc::CURVE_NEGATIVE);
}
+ f32 pitch = Z2Calc::getParamByExp((f32)mapinfo, 0.0f, 92.0f, 0.3f,
+ 0.5f, 1.2f, Z2Calc::CURVE_NEGATIVE);
+
+ (*handle)->getAuxiliary().moveVolume(volume, 0);
+ (*handle)->getAuxiliary().movePitch(pitch, 0);
+ } else if (soundID == Z2SE_ZRZ_MV) {
+ f32 volume = (f32)mapinfo / 100.0f;
+ (*handle)->getAuxiliary().moveVolume(volume, 0);
}
- return handle;
+ }
+ return handle;
}
}
/* 802C0A4C-802C0AF8 2BB38C 00AC+00 4/1 2/0 0/0 .text
* startCreatureVoice__10Z2CreatureF10JAISoundIDSc */
-Z2SoundHandlePool* Z2Creature::startCreatureVoice(JAISoundID i_soundID, s8 param_1) {
- switch (i_soundID) {
- case Z2SE_MDN_V_FLY_OUT:
- case Z2SE_MDN_V_MGN_TAME:
- case Z2SE_MDN_V_CLINGST:
- case Z2SE_MDN_V_LV_PANIC:
- case Z2SE_MDN_V_HIT:
- case Z2SE_MDN_V_LOOKABOUT_1:
- case Z2SE_MDN_V_WLSWIMDIE:
- case Z2SE_MDN_V_WAITD:
- case Z2SE_MDN_V_SWAITA:
- case Z2SE_MDN_V_SWAITB_1:
- case Z2SE_MDN_V_SWAITB_3:
- case Z2SE_MDN_V_SWAITC:
- case Z2SE_MDN_V_SWAITD:
- case Z2SE_MDN_V_LEADSWAIT:
- case Z2SE_MDN_V_HIP:
- case Z2SE_MDN_V_WLDIEA:
- case Z2SE_MDN_V_ENTRANCE:
- case Z2SE_MDN_V_DOOROP:
- case Z2SE_MDN_V_ROPEWAIT_1:
- case Z2SE_MDN_V_ROPEWAIT_2:
- case Z2SE_MDN_V_ROPEFALTER:
- case Z2SE_MDN_V_WAITTP:
- if (Z2GetSpeechMgr2()->isMidnaSpeak()) {
- return NULL;
- }
+Z2SoundHandlePool* Z2Creature::startCreatureVoice(JAISoundID soundID, s8 reverb) {
+ switch (soundID) {
+ case Z2SE_MDN_V_FLY_OUT:
+ case Z2SE_MDN_V_MGN_TAME:
+ case Z2SE_MDN_V_CLINGST:
+ case Z2SE_MDN_V_LV_PANIC:
+ case Z2SE_MDN_V_HIT:
+ case Z2SE_MDN_V_LOOKABOUT_1:
+ case Z2SE_MDN_V_WLSWIMDIE:
+ case Z2SE_MDN_V_WAITD:
+ case Z2SE_MDN_V_SWAITA:
+ case Z2SE_MDN_V_SWAITB_1:
+ case Z2SE_MDN_V_SWAITB_3:
+ case Z2SE_MDN_V_SWAITC:
+ case Z2SE_MDN_V_SWAITD:
+ case Z2SE_MDN_V_LEADSWAIT:
+ case Z2SE_MDN_V_HIP:
+ case Z2SE_MDN_V_WLDIEA:
+ case Z2SE_MDN_V_ENTRANCE:
+ case Z2SE_MDN_V_DOOROP:
+ case Z2SE_MDN_V_ROPEWAIT_1:
+ case Z2SE_MDN_V_ROPEWAIT_2:
+ case Z2SE_MDN_V_ROPEFALTER:
+ case Z2SE_MDN_V_WAITTP:
+ if (Z2GetSpeechMgr2()->isMidnaSpeak()) {
+ return NULL;
+ }
}
- return mSoundObjSimple1.startSound(i_soundID, 0, param_1);
+
+ return mSoundObjSimple1.startSound(soundID, 0, reverb);
}
/* 802C0AF8-802C0B70 2BB438 0078+00 3/0 2/0 0/0 .text
* startCreatureVoiceLevel__10Z2CreatureF10JAISoundIDSc */
-Z2SoundHandlePool* Z2Creature::startCreatureVoiceLevel(JAISoundID i_soundID, s8 param_1) {
- if (i_soundID == Z2SE_MDN_V_WAITD) {
+Z2SoundHandlePool* Z2Creature::startCreatureVoiceLevel(JAISoundID soundID, s8 reverb) {
+ if (soundID == Z2SE_MDN_V_WAITD) {
if (Z2GetStatusMgr()->getDemoStatus() == 2 || !Z2GetSceneMgr()->isInGame()) {
return NULL;
}
}
- return mSoundObjSimple1.startLevelSound((u32)i_soundID, 0, param_1);
+
+ return mSoundObjSimple1.startLevelSound((u32)soundID, 0, reverb);
}
/* 802C0B70-802C0BAC 2BB4B0 003C+00 4/0 2/0 0/0 .text
* startCreatureExtraSound__10Z2CreatureF10JAISoundIDUlSc */
-Z2SoundHandlePool* Z2Creature::startCreatureExtraSound(JAISoundID param_0, u32 param_1, s8 param_2) {
- return mSoundObjSimple2.startSound(param_0, param_1, param_2);
+Z2SoundHandlePool* Z2Creature::startCreatureExtraSound(JAISoundID soundID, u32 mapinfo, s8 reverb) {
+ return mSoundObjSimple2.startSound(soundID, mapinfo, reverb);
}
/* 802C0BAC-802C0BE8 2BB4EC 003C+00 4/0 2/0 0/0 .text
* startCreatureExtraSoundLevel__10Z2CreatureF10JAISoundIDUlSc */
-Z2SoundHandlePool* Z2Creature::startCreatureExtraSoundLevel(JAISoundID param_0, u32 param_1, s8 param_2) {
- return mSoundObjSimple2.startLevelSound(param_0, param_1, param_2);
+Z2SoundHandlePool* Z2Creature::startCreatureExtraSoundLevel(JAISoundID soundID, u32 mapinfo, s8 reverb) {
+ return mSoundObjSimple2.startLevelSound(soundID, mapinfo, reverb);
}
/* 802C0BE8-802C0C10 2BB528 0028+00 4/0 2/0 0/0 .text startCollisionSE__10Z2CreatureFUlUl */
-Z2SoundHandlePool* Z2Creature::startCollisionSE(u32 param_0, u32 param_1) {
- return mSoundObjAnime.startCollisionSE(param_0, param_1, NULL);
+Z2SoundHandlePool* Z2Creature::startCollisionSE(u32 hitID, u32 mapinfo) {
+ return mSoundObjAnime.startCollisionSE(hitID, mapinfo, NULL);
}
/* 802C0C10-802C0C6C 2BB550 005C+00 0/0 0/0 12/12 .text __ct__17Z2CreatureCitizenFv */
@@ -292,18 +291,14 @@ Z2CreatureCitizen::Z2CreatureCitizen() :
mCitizenID(-1),
field_0xa1(-1),
mLinkSearch(false)
-{
- /* empty function */
-}
+{}
/* 802C0C6C-802C0CE4 2BB5AC 0078+00 0/0 0/0 12/12 .text __dt__17Z2CreatureCitizenFv */
-Z2CreatureCitizen::~Z2CreatureCitizen() {
- /* empty function */
-}
+Z2CreatureCitizen::~Z2CreatureCitizen() {}
/* 802C0CE4-802C0D04 2BB624 0020+00 0/0 2/2 7/7 .text init__17Z2CreatureCitizenFP3VecP3VecUcUc */
-void Z2CreatureCitizen::init(Vec* param_0, Vec* param_1, u8 param_2, u8 param_3) {
- Z2Creature::init(param_0, param_1, param_2, param_3);
+void Z2CreatureCitizen::init(Vec* animePosPtr, Vec* simplePosPtr, u8 animeHandleNum, u8 simpleHandleNum) {
+ Z2Creature::init(animePosPtr, simplePosPtr, animeHandleNum, simpleHandleNum);
}
/* 802C0D04-802C0D48 2BB644 0044+00 1/0 0/0 0/0 .text deleteObject__17Z2CreatureCitizenFv */
@@ -311,6 +306,7 @@ void Z2CreatureCitizen::deleteObject() {
if (mLinkSearch == false) {
Z2GetSeMgr()->decrCrowdSize();
}
+
Z2Creature::deleteObject();
}
@@ -320,24 +316,24 @@ void Z2CreatureCitizen::setMdlType(s8 param_0, bool param_1, bool param_2) {
s8 b = param_1 ? 0x40 : 0;
s8 c = param_2 ? 0x80 : 0;
mCitizenID = a + c + b;
+
if (!param_2) {
Z2GetSeMgr()->incrCrowdSize();
}
+
if (param_0 == 0) {
field_0xa1 = data_80451358;
- data_80451358 = !data_80451358;
- }
- else if (param_0 == 1) {
+ data_80451358 = !data_80451358 ? 1 : 0;
+ } else if (param_0 == 1) {
field_0xa1 = data_80451359;
- data_80451359 = !data_80451359;
+ data_80451359 = !data_80451359 ? 1 : 0;
}
}
/* 802C0E18-802C0ED8 2BB758 00C0+00 0/0 0/0 21/21 .text playVoice__17Z2CreatureCitizenFi
*/
void Z2CreatureCitizen::playVoice(int i_sound) {
- u32 tmp = mCitizenID;
- u32 sound_id = Z2SE_MAN_A1_V_AWAY + 6 * tmp + i_sound;
+ u32 sound_id = Z2SE_MAN_A1_V_AWAY + 6 * (s8)mCitizenID + i_sound;
switch (mCitizenID) {
case 0:
case 1:
@@ -346,6 +342,7 @@ void Z2CreatureCitizen::playVoice(int i_sound) {
}
break;
}
+
mSoundObjSimple1.startSound(sound_id, 0, -1);
if ((i_sound == 0 || i_sound == 2) && !mLinkSearch) {
Z2GetSeMgr()->decrCrowdSize();
@@ -355,8 +352,8 @@ void Z2CreatureCitizen::playVoice(int i_sound) {
/* 802C0ED8-802C0F64 2BB818 008C+00 1/0 0/0 0/0 .text
* startCreatureVoice__17Z2CreatureCitizenF10JAISoundIDSc */
-Z2SoundHandlePool* Z2CreatureCitizen::startCreatureVoice(JAISoundID i_soundID, s8 param_1) {
- switch (i_soundID) {
+Z2SoundHandlePool* Z2CreatureCitizen::startCreatureVoice(JAISoundID soundID, s8 reverb) {
+ switch (soundID) {
case Z2SE_KIU_V_FEAR:
case Z2SE_HANA_V_FEAR:
case Z2SE_MICH_V_FEAR:
@@ -366,7 +363,8 @@ Z2SoundHandlePool* Z2CreatureCitizen::startCreatureVoice(JAISoundID i_soundID, s
}
break;
}
- return Z2Creature::startCreatureVoice(i_soundID, -1);
+
+ return Z2Creature::startCreatureVoice(soundID, -1);
}
/* 802C0F64-802C0FC4 2BB8A4 0060+00 2/2 0/0 100/100 .text __ct__15Z2CreatureEnemyFv */
@@ -376,19 +374,19 @@ Z2CreatureEnemy::Z2CreatureEnemy() :
field_0xa1(1),
mLinkSearch(false),
field_0xa3(0)
-{
- /* empty function */
-}
+{}
/* 802C0FC4-802C1094 2BB904 00D0+00 3/2 0/0 0/0 .text deleteObject__15Z2CreatureEnemyFv
*/
void Z2CreatureEnemy::deleteObject() {
- if (mEnemyID == 0x2c) {
- Z2GetSeqMgr()->unMuteSceneBgm(0x21);
+ if (mEnemyID == Z2_ENEMY_GB) {
+ Z2GetSeqMgr()->unMuteSceneBgm(33);
}
+
if (getSupervisor() != NULL) {
Z2GetSoundObjMgr()->removeEnemy(this);
}
+
mSoundObjAnime.stopAnime();
mSoundObjAnime.deleteObject();
mSoundObjSimple1.deleteObject();
@@ -396,71 +394,79 @@ void Z2CreatureEnemy::deleteObject() {
}
/* 802C1094-802C10B4 2BB9D4 0020+00 0/0 0/0 98/98 .text init__15Z2CreatureEnemyFP3VecP3VecUcUc */
-void Z2CreatureEnemy::init(Vec* param_0, Vec* param_1, u8 param_2, u8 param_3) {
- Z2Creature::init(param_0, param_1, param_2, param_3);
+void Z2CreatureEnemy::init(Vec* animePosPtr, Vec* simplePosPtr, u8 animeHandleNum, u8 simpleHandleNum) {
+ Z2Creature::init(animePosPtr, simplePosPtr, animeHandleNum, simpleHandleNum);
}
/* 802C10B4-802C10D4 2BB9F4 0020+00 0/0 0/0 3/3 .text init__15Z2CreatureEnemyFP3VecP3VecP3VecUcUcUc
*/
-void Z2CreatureEnemy::init(Vec* param_0, Vec* param_1, Vec* param_2, u8 param_3, u8 param_4,
- u8 param_5) {
- Z2Creature::init(param_0, param_1, param_2, param_3, param_4, param_5);
+void Z2CreatureEnemy::init(Vec* animePosPtr, Vec* simplePosPtr, Vec* simple2PosPtr, u8 animeHandleNum, u8 simpleHandleNum,
+ u8 simple2HandleNum) {
+ Z2Creature::init(animePosPtr, simplePosPtr, simple2PosPtr, animeHandleNum, simpleHandleNum, simple2HandleNum);
}
/* 802C10D4-802C110C 2BBA14 0038+00 1/0 0/0 0/0 .text framework__15Z2CreatureEnemyFUlSc */
-void Z2CreatureEnemy::framework(u32 param_0, s8 param_1) {
+void Z2CreatureEnemy::framework(u32 mapinfo, s8 reverb) {
if (field_0xa1 < 1) {
- field_0xa1 += 1;
+ field_0xa1++;
}
- Z2Creature::framework(param_0, param_1);
+
+ Z2Creature::framework(mapinfo, reverb);
}
/* 802C110C-802C136C 2BBA4C 0260+00 4/0 0/0 0/0 .text
* startCreatureSound__15Z2CreatureEnemyF10JAISoundIDUlSc */
-Z2SoundHandlePool* Z2CreatureEnemy::startCreatureSound(JAISoundID i_soundID, u32 param_1, s8 param_2) {
- Z2SoundHandlePool* handle = mSoundObjAnime.startSound(i_soundID, param_1, param_2);
+Z2SoundHandlePool* Z2CreatureEnemy::startCreatureSound(JAISoundID soundID, u32 mapinfo, s8 reverb) {
+ Z2SoundHandlePool* handle = mSoundObjAnime.startSound(soundID, mapinfo, reverb);
switch (mEnemyID) {
case Z2_ENEMY_SF:
- if (i_soundID == Z2SE_EN_SF_BREAK_DOWN) {
+ if (soundID == Z2SE_EN_SF_BREAK_DOWN) {
field_0xa3 = 1;
Z2GetSoundObjMgr()->getEnemyList()->remove(this);
- } else if (field_0xa3 != 0 && i_soundID == Z2SE_EN_SF_BUILD_UP) {
+ } else if (field_0xa3 != 0 && soundID == Z2SE_EN_SF_BUILD_UP) {
field_0xa3 = 0;
Z2GetSoundObjMgr()->getEnemyList()->append(this);
}
break;
case Z2_ENEMY_FZ:
- if (handle != NULL && handle->isSoundAttached() && i_soundID == Z2SE_EN_FZ_BOUND) {
- f32 volume = Z2Calc::linearTransform(param_1, 10.0f, 50.0f, 0.1f, 1.0f, false);
- f32 pitch = Z2Calc::linearTransform(param_1, 10.0f, 50.0f, 0.8f, 1.2f, false);
+ if (handle != NULL && *handle && soundID == Z2SE_EN_FZ_BOUND) {
+ f32 volume = Z2Calc::linearTransform(mapinfo, 10.0f, 50.0f, 0.1f, 1.0f, false);
+ f32 pitch = Z2Calc::linearTransform(mapinfo, 10.0f, 50.0f, 0.8f, 1.2f, false);
(*handle)->getAuxiliary().moveVolume(volume, 0);
(*handle)->getAuxiliary().movePitch(pitch, 0);
}
break;
- case Z2_ENEMY_MS:
- Z2_E_ms_modVol(handle, mSoundObjAnime.field_0x1c);
+ case Z2_ENEMY_MS: {
+ u32 var_r24 = mSoundObjAnime.field_0x1c;
+ Z2_E_ms_modVol(handle, var_r24);
break;
+ }
case Z2_ENEMY_SW:
- Z2_E_sw_modPitch(handle, param_1);
+ Z2_E_sw_modPitch(handle, mapinfo);
break;
- case Z2_ENEMY_MM:
- Z2_E_mm_modPitch(handle, mSoundObjAnime.field_0x1c);
+ case Z2_ENEMY_MM: {
+ u32 var_r23 = mSoundObjAnime.field_0x1c;
+ Z2_E_mm_modPitch(handle, var_r23);
break;
+ }
case Z2_ENEMY_SM2:
- if (i_soundID == Z2SE_EN_SM_HIT) {
+ if (soundID == Z2SE_EN_SM_HIT) {
field_0xa3 = 1;
- Z2GetSeqMgr()->setBattleLastHit(struct_80450869);
+ Z2GetSeqMgr()->setBattleLastHit(Z2Param::ENDING_BLOW_VOL_LOWER_TIME);
}
break;
}
- switch (i_soundID) {
- case Z2SE_EN_ZAN_YO_LAND:
- Z2_B_zan_modPitch(handle, mSoundObjAnime.field_0x1c);
+ switch (soundID) {
+ case Z2SE_EN_ZAN_YO_LAND: {
+ u32 var_r22 = mSoundObjAnime.field_0x1c;
+ Z2_B_zan_modPitch(handle, var_r22);
break;
+ }
case Z2SE_EN_ZAN_YO_FLOAT_WAIT:
- if (mSoundObjAnime.field_0x1c > 100) {
+ u32 var_r21 = mSoundObjAnime.field_0x1c;
+ if (var_r21 > 100) {
return NULL;
}
break;
@@ -471,9 +477,9 @@ Z2SoundHandlePool* Z2CreatureEnemy::startCreatureSound(JAISoundID i_soundID, u32
/* 802C136C-802C168C 2BBCAC 0320+00 2/0 0/0 0/0 .text
* startCreatureSoundLevel__15Z2CreatureEnemyF10JAISoundIDUlSc */
-Z2SoundHandlePool* Z2CreatureEnemy::startCreatureSoundLevel(JAISoundID i_soundID, u32 param_1, s8 param_2) {
- if (i_soundID == 0x7FFFF) {
- cXyz pos;
+Z2SoundHandlePool* Z2CreatureEnemy::startCreatureSoundLevel(JAISoundID soundID, u32 mapinfo, s8 reverb) {
+ if (soundID == 0x7FFFF) {
+ Vec pos;
Z2GetAudience()->convertAbsToRel(*mpPos, &pos, 0);
f32 volume = Z2GetAudience()->calcRelPosVolume(pos, 2.0f, 0);
f32 pan = Z2GetAudience()->calcRelPosPan(pos, 0);
@@ -483,36 +489,36 @@ Z2SoundHandlePool* Z2CreatureEnemy::startCreatureSoundLevel(JAISoundID i_soundID
return NULL;
}
- Z2SoundHandlePool* handle = mSoundObjAnime.startLevelSound(i_soundID, param_1, param_2);
+ Z2SoundHandlePool* handle = mSoundObjAnime.startLevelSound(soundID, mapinfo, reverb);
switch (mEnemyID) {
case Z2_ENEMY_FZ:
- if (handle != NULL && *handle && i_soundID == Z2SE_EN_FZ_MOVE) {
- f32 volume = Z2Calc::getParamByExp(param_1, 1.0f, 50.0f, 0.4f, 0.1f, 1.1f,
- Z2Calc::CURVE_SIGN_1);
+ if (handle != NULL && *handle && soundID == Z2SE_EN_FZ_MOVE) {
+ f32 volume = Z2Calc::getParamByExp(mapinfo, 1.0f, 50.0f, 0.4f, 0.1f, 1.1f,
+ Z2Calc::CURVE_POSITIVE);
(*handle)->getAuxiliary().moveVolume(volume, 0);
}
break;
case Z2_ENEMY_SW:
- Z2_E_sw_modPitch(handle, param_1);
+ Z2_E_sw_modPitch(handle, mapinfo);
break;
case Z2_ENEMY_RB:
- if (handle != NULL && *handle && i_soundID == Z2SE_EN_RB_MOVE) {
- f32 volume = Z2Calc::getParamByExp(param_1, 4.0f, 35.0f, 0.6f, 0.7f, 1.0f,
- Z2Calc::CURVE_SIGN_1);
- f32 pitch = Z2Calc::getParamByExp(param_1, 4.0f, 35.0f, 0.4f, 0.8f, 1.0f,
- Z2Calc::CURVE_SIGN_1);
+ if (handle != NULL && *handle && soundID == Z2SE_EN_RB_MOVE) {
+ f32 volume = Z2Calc::getParamByExp(mapinfo, 4.0f, 35.0f, 0.6f, 0.7f, 1.0f,
+ Z2Calc::CURVE_POSITIVE);
+ f32 pitch = Z2Calc::getParamByExp(mapinfo, 4.0f, 35.0f, 0.4f, 0.8f, 1.0f,
+ Z2Calc::CURVE_POSITIVE);
(*handle)->getAuxiliary().moveVolume(volume, 0);
(*handle)->getAuxiliary().movePitch(pitch, 0);
break;
}
- // no break
+ // fallthrough
default:
- if (handle != NULL && *handle && i_soundID == Z2SE_EN_PH_PROPELLER) {
- f32 volume = Z2Calc::getParamByExp(param_1, 0.0f, 30.0f, 0.4f, 0.0f, 1.0f,
- Z2Calc::CURVE_SIGN_1);
- f32 pitch = Z2Calc::getParamByExp(param_1, 4000.0f, 13000.0f, 0.4f, 0.8f, 1.2f,
- Z2Calc::CURVE_SIGN_1);
+ if (handle != NULL && *handle && soundID == Z2SE_EN_PH_PROPELLER) {
+ f32 volume = Z2Calc::getParamByExp(mapinfo, 0.0f, 30.0f, 0.4f, 0.0f, 1.0f,
+ Z2Calc::CURVE_POSITIVE);
+ f32 pitch = Z2Calc::getParamByExp(mapinfo, 4000.0f, 13000.0f, 0.4f, 0.8f, 1.2f,
+ Z2Calc::CURVE_POSITIVE);
(*handle)->getAuxiliary().moveVolume(volume, 0);
(*handle)->getAuxiliary().movePitch(pitch, 0);
}
@@ -524,7 +530,7 @@ Z2SoundHandlePool* Z2CreatureEnemy::startCreatureSoundLevel(JAISoundID i_soundID
/* 802C168C-802C1948 2BBFCC 02BC+00 4/0 0/0 0/0 .text
* startCreatureVoice__15Z2CreatureEnemyF10JAISoundIDSc */
-Z2SoundHandlePool* Z2CreatureEnemy::startCreatureVoice(JAISoundID i_soundID, s8 param_1) {
+Z2SoundHandlePool* Z2CreatureEnemy::startCreatureVoice(JAISoundID soundID, s8 reverb) {
if (Z2GetSeqMgr()->getMainBgmID() == Z2BGM_BOSS_ZANT) {
switch (Z2GetSeqMgr()->mBgmStatus) {
case 0:
@@ -532,88 +538,95 @@ Z2SoundHandlePool* Z2CreatureEnemy::startCreatureVoice(JAISoundID i_soundID, s8
break;
case 2:
case 3:
- switch (i_soundID) {
+ switch (soundID) {
case Z2SE_EN_ZAN_V_ATK_BALL:
- i_soundID = Z2SE_EN_ZAN_V_ATK_BALL_MG;
+ soundID = Z2SE_EN_ZAN_V_ATK_BALL_MG;
break;
case Z2SE_EN_ZAN_V_DMG:
- i_soundID = Z2SE_EN_ZAN_V_DMG_MG;
+ soundID = Z2SE_EN_ZAN_V_DMG_MG;
break;
}
break;
case 4:
case 5:
- switch (i_soundID) {
+ switch (soundID) {
case Z2SE_EN_ZAN_V_ATK_BALL:
- i_soundID = Z2SE_EN_ZAN_V_ATK_BALL_OI;
+ soundID = Z2SE_EN_ZAN_V_ATK_BALL_OI;
break;
case Z2SE_EN_ZAN_V_DMG:
- i_soundID = Z2SE_EN_ZAN_V_DMG_OI;
+ soundID = Z2SE_EN_ZAN_V_DMG_OI;
break;
}
break;
case 6:
case 7:
- switch (i_soundID) {
+ switch (soundID) {
case Z2SE_EN_ZAN_V_ATK_BALL:
- i_soundID = Z2SE_EN_ZAN_V_ATK_BALL_MK;
+ soundID = Z2SE_EN_ZAN_V_ATK_BALL_MK;
break;
case Z2SE_EN_ZAN_V_DMG:
- i_soundID = Z2SE_EN_ZAN_V_DMG_MK;
+ soundID = Z2SE_EN_ZAN_V_DMG_MK;
break;
}
break;
case 8:
case 9:
- switch (i_soundID) {
+ switch (soundID) {
case Z2SE_EN_ZAN_V_DMG:
- i_soundID = Z2SE_EN_ZAN_V_DMG_YO;
+ soundID = Z2SE_EN_ZAN_V_DMG_YO;
break;
}
break;
case 10:
case 11:
- switch (i_soundID) {
+ switch (soundID) {
case Z2SE_EN_ZAN_V_DMG:
- i_soundID = Z2SE_EN_ZAN_V_DMG_CTL;
+ soundID = Z2SE_EN_ZAN_V_DMG_CTL;
break;
}
break;
}
}
- u32 var1 = 0;
- if (mEnemyID == 7) {
- var1 = 1;
+ u32 mapinfo = 0;
+ if (mEnemyID == Z2_ENEMY_RDY) {
+ mapinfo = 1;
}
- Z2SoundHandlePool* handle = mSoundObjSimple1.startSound(i_soundID, var1, param_1);
+
+ Z2SoundHandlePool* handle = mSoundObjSimple1.startSound(soundID, mapinfo, reverb);
switch (mEnemyID) {
case Z2_ENEMY_SH:
- if (i_soundID == Z2SE_EN_SH_V_DEAD) {
+ if (soundID == Z2SE_EN_SH_V_DEAD) {
field_0xa3 = 1;
- Z2GetSeqMgr()->setBattleLastHit(struct_80450869);
+ Z2GetSeqMgr()->setBattleLastHit(Z2Param::ENDING_BLOW_VOL_LOWER_TIME);
}
break;
case Z2_ENEMY_BS:
- if (i_soundID == Z2SE_EN_BS_V_DEAD) {
+ if (soundID == Z2SE_EN_BS_V_DEAD) {
field_0xa3 = 1;
- Z2GetSeqMgr()->setBattleLastHit(struct_80450869);
+ Z2GetSeqMgr()->setBattleLastHit(Z2Param::ENDING_BLOW_VOL_LOWER_TIME);
}
break;
- case Z2_ENEMY_MS:
- Z2_E_ms_modVol(handle, mSoundObjSimple1.field_0x1c);
- break;
- case Z2_ENEMY_SW:
- Z2_E_sw_modPitch(handle, mSoundObjSimple1.field_0x1c);
+ case Z2_ENEMY_MS: {
+ u32 var_r26 = mSoundObjSimple1.field_0x1c;
+ Z2_E_ms_modVol(handle, var_r26);
break;
- case Z2_ENEMY_MM:
- Z2_E_mm_modPitch(handle, mSoundObjSimple1.field_0x1c);
+ }
+ case Z2_ENEMY_SW: {
+ u32 var_r25 = mSoundObjSimple1.field_0x1c;
+ Z2_E_sw_modPitch(handle, var_r25);
break;
}
+ case Z2_ENEMY_MM: {
+ u32 var_r24 = mSoundObjSimple1.field_0x1c;
+ Z2_E_mm_modPitch(handle, var_r24);
+ }
+ }
- if (i_soundID == Z2SE_EN_ZAN_YO_V_KENKEN) {
- Z2_B_zan_modPitch(handle, mSoundObjSimple1.field_0x1c);
+ if (soundID == Z2SE_EN_ZAN_YO_V_KENKEN) {
+ u32 var_r23 = mSoundObjSimple1.field_0x1c;
+ Z2_B_zan_modPitch(handle, var_r23);
}
return handle;
@@ -621,43 +634,41 @@ Z2SoundHandlePool* Z2CreatureEnemy::startCreatureVoice(JAISoundID i_soundID, s8
/* 802C1948-802C199C 2BC288 0054+00 3/0 0/0 0/0 .text
* startCreatureVoiceLevel__15Z2CreatureEnemyF10JAISoundIDSc */
-Z2SoundHandlePool* Z2CreatureEnemy::startCreatureVoiceLevel(JAISoundID i_soundID, s8 param_1) {
- u32 var1 = 0;
+Z2SoundHandlePool* Z2CreatureEnemy::startCreatureVoiceLevel(JAISoundID soundID, s8 reverb) {
+ u32 mapinfo = 0;
if (mEnemyID == Z2_ENEMY_RDY) {
- var1 = 1;
+ mapinfo = 1;
}
- return mSoundObjSimple1.startLevelSound(i_soundID, var1, param_1);
+ return mSoundObjSimple1.startLevelSound(soundID, mapinfo, reverb);
}
/* 802C199C-802C19D8 2BC2DC 003C+00 3/0 0/0 0/0 .text
* startCreatureExtraSound__15Z2CreatureEnemyF10JAISoundIDUlSc */
-Z2SoundHandlePool* Z2CreatureEnemy::startCreatureExtraSound(JAISoundID i_soundID, u32 param_1,
- s8 param_2) {
- return mSoundObjSimple2.startSound(i_soundID, param_1, param_2);
+Z2SoundHandlePool* Z2CreatureEnemy::startCreatureExtraSound(JAISoundID soundID, u32 mapinfo, s8 reverb) {
+ return mSoundObjSimple2.startSound(soundID, mapinfo, reverb);
}
/* 802C19D8-802C1A14 2BC318 003C+00 3/0 0/0 0/0 .text
* startCreatureExtraSoundLevel__15Z2CreatureEnemyF10JAISoundIDUlSc */
-Z2SoundHandlePool* Z2CreatureEnemy::startCreatureExtraSoundLevel(JAISoundID i_soundID, u32 param_1,
- s8 param_2) {
- return mSoundObjSimple2.startLevelSound(i_soundID, param_1, param_2);
+Z2SoundHandlePool* Z2CreatureEnemy::startCreatureExtraSoundLevel(JAISoundID soundID, u32 mapinfo, s8 reverb) {
+ return mSoundObjSimple2.startLevelSound(soundID, mapinfo, reverb);
}
/* 802C1A14-802C1B7C 2BC354 0168+00 4/0 0/0 0/0 .text startCollisionSE__15Z2CreatureEnemyFUlUl */
-Z2SoundHandlePool* Z2CreatureEnemy::startCollisionSE(u32 param_0, u32 param_1) {
+Z2SoundHandlePool* Z2CreatureEnemy::startCollisionSE(u32 hitID, u32 mapinfo) {
u8 var1;
switch (mEnemyID) {
case Z2_ENEMY_WS:
field_0xa3 = 1;
- Z2GetSeqMgr()->setBattleLastHit(struct_80450869);
- return mSoundObjAnime.startCollisionSE(param_0, param_1, NULL);
+ Z2GetSeqMgr()->setBattleLastHit(Z2Param::ENDING_BLOW_VOL_LOWER_TIME);
+ return mSoundObjAnime.startCollisionSE(hitID, mapinfo, NULL);
case Z2_ENEMY_BI:
if (getSupervisor() != NULL) {
Z2GetSoundObjMgr()->removeEnemy(this);
}
- return mSoundObjAnime.startCollisionSE(param_0, param_1, NULL);
+ return mSoundObjAnime.startCollisionSE(hitID, mapinfo, NULL);
default:
- switch (param_1) {
+ switch (mapinfo) {
case 0x1e:
case 0x1f:
case 0x22:
@@ -668,61 +679,60 @@ Z2SoundHandlePool* Z2CreatureEnemy::startCollisionSE(u32 param_0, u32 param_1) {
case 0x2a:
case 0x2d:
case 0x34:
- Z2GetSeqMgr()->setBattleSeqState(2);
+ Z2GetSeqMgr()->onEnemyDamage();
break;
case 0x20:
case 0x24:
field_0xa3 = 1;
- var1 = struct_80450869;
- if (param_0 == Z2SE_HIT_SWORD || param_0 == Z2SE_HIT_SWORD_STAB
- || param_0 == Z2SE_HIT_WOLFBITE) {
- var1 = 0x14;
+ var1 = Z2Param::ENDING_BLOW_VOL_LOWER_TIME;
+ if (hitID == Z2SE_HIT_SWORD || hitID == Z2SE_HIT_SWORD_STAB || hitID == Z2SE_HIT_WOLFBITE) {
+ var1 = 20;
}
Z2GetSeqMgr()->setBattleLastHit(var1);
break;
case 0x21:
- if (mEnemyID == 0x2b) {
+ if (mEnemyID == Z2_ENEMY_HB) {
field_0xa3 = 1;
- Z2GetSeqMgr()->setBattleLastHit(struct_80450869);
- } else if (mEnemyID == 0x16) {
- Z2GetSeqMgr()->setBattleSeqState(2);
+ Z2GetSeqMgr()->setBattleLastHit(Z2Param::ENDING_BLOW_VOL_LOWER_TIME);
+ } else if (mEnemyID == Z2_ENEMY_DB) {
+ Z2GetSeqMgr()->onEnemyDamage();
}
break;
}
- return mSoundObjAnime.startCollisionSE(param_0, param_1, NULL);
+
+ return mSoundObjAnime.startCollisionSE(hitID, mapinfo, NULL);
}
}
/* 802C1B7C-802C1B90 2BC4BC 0014+00 0/0 0/0 55/55 .text setLinkSearch__15Z2CreatureEnemyFb */
-void Z2CreatureEnemy::setLinkSearch(bool b_search) {
- if (field_0xa3 != 0) {
- return;
+void Z2CreatureEnemy::setLinkSearch(bool isLinkSearch) {
+ if (field_0xa3 == 0) {
+ mLinkSearch = isLinkSearch;
}
- mLinkSearch = b_search;
}
/* 802C1B90-802C1BE8 2BC4D0 0058+00 0/0 0/0 72/72 .text setEnemyName__15Z2CreatureEnemyFPCc */
-void Z2CreatureEnemy::setEnemyName(char const* i_name) {
- if (i_name == NULL) {
+void Z2CreatureEnemy::setEnemyName(const char* enemyName) {
+ if (enemyName == NULL) {
field_0xa1 = -1;
} else {
- mEnemyID = Z2GetSoundObjMgr()->getEnemyID(i_name, this);
+ mEnemyID = Z2GetSoundObjMgr()->getEnemyID(enemyName, this);
}
}
/* 802C1BE8-802C1C24 2BC528 003C+00 0/0 0/0 1/1 .text __ct__16Z2CreatureSumomoFv */
-Z2CreatureSumomo::Z2CreatureSumomo() {
- /* empty function */
-}
+Z2CreatureSumomo::Z2CreatureSumomo() {}
/* 802C1C24-802C1CA0 2BC564 007C+00 0/0 0/0 8/8 .text playSumomoBgm__16Z2CreatureSumomoFUl */
-void Z2CreatureSumomo::playSumomoBgm(u32 param_0) {
+void Z2CreatureSumomo::playSumomoBgm(u32 dist) {
if (Z2GetSeqMgr()->getSubBgmID() != Z2BGM_SUMOMO) {
- if (param_0 < 700) {
+ if (dist < 700) {
Z2GetSeqMgr()->subBgmStart(Z2BGM_SUMOMO);
+ OS_REPORT("SUMOMO_BGM_START dist:%d\n", dist);
}
- } else if (param_0 >= 1000 && Z2GetStatusMgr()->getDemoStatus() != 6) {
+ } else if (dist >= 1000 && Z2GetStatusMgr()->getDemoStatus() != 6) {
Z2GetSeqMgr()->subBgmStop();
+ OS_REPORT("SUMOMO_BGM_STOP dist:%d\n", dist);
}
}
@@ -731,32 +741,31 @@ void Z2CreatureSumomo::playSumomoBgm(u32 param_0) {
void Z2CreatureSumomo::deleteObject() {
if (Z2GetSeqMgr()->getSubBgmID() == Z2BGM_SUMOMO && Z2GetStatusMgr()->getDemoStatus() != 6) {
Z2GetSeqMgr()->subBgmStop();
+ OS_REPORT("SUMOMO_BGM_STOP (DELETE)\n");
}
+
Z2Creature::deleteObject();
}
/* 802C1D10-802C1D4C 2BC650 003C+00 0/0 0/0 3/3 .text __ct__18Z2SoundObjBeeGroupFv */
-Z2SoundObjBeeGroup::Z2SoundObjBeeGroup() {
- /* empty function */
-}
+Z2SoundObjBeeGroup::Z2SoundObjBeeGroup() {}
/* 802C1D4C-802C1D6C 2BC68C 0020+00 1/0 0/0 0/0 .text init__18Z2SoundObjBeeGroupFP3VecUc
*/
-void Z2SoundObjBeeGroup::init(Vec* param_0, u8 param_1) {
- Z2SoundObjBase::init(param_0, param_1);
+void Z2SoundObjBeeGroup::init(Vec* posPtr, u8 handleNum) {
+ Z2SoundObjBase::init(posPtr, handleNum);
}
/* 802C1D6C-802C1F54 2BC6AC 01E8+00 0/0 0/0 2/2 .text
* playBeeGroupSound__18Z2SoundObjBeeGroupF10JAISoundIDUc */
-void Z2SoundObjBeeGroup::playBeeGroupSound(JAISoundID i_soundID, u8 param_1) {
+void Z2SoundObjBeeGroup::playBeeGroupSound(JAISoundID soundID, u8 param_1) {
if (param_1 == 0) {
return;
}
- u32 sound_id = (u32)i_soundID;
JAISoundID sound_id2;
- switch (sound_id) {
+ switch ((u32)soundID) {
case Z2SE_EN_BE_STAY:
sound_id2 = Z2SE_EN_BE_STAY_GROUP;
break;
@@ -774,7 +783,7 @@ void Z2SoundObjBeeGroup::playBeeGroupSound(JAISoundID i_soundID, u8 param_1) {
break;
}
- Z2SoundHandlePool* handle1 = startLevelSound(sound_id, 0, -1);
+ Z2SoundHandlePool* handle1 = startLevelSound((u32)soundID, 0, -1);
Z2SoundHandlePool* handle2 = startLevelSound(sound_id2, 0, -1);
if (handle1 != NULL && *handle1 != NULL) {
@@ -788,9 +797,7 @@ void Z2SoundObjBeeGroup::playBeeGroupSound(JAISoundID i_soundID, u8 param_1) {
}
/* 802C1F54-802C1FB0 2BC894 005C+00 0/0 0/0 1/1 .text __ct__12Z2CreatureFMFv */
-Z2CreatureFM::Z2CreatureFM() {
- /* empty function */
-}
+Z2CreatureFM::Z2CreatureFM() {}
/* 802C1FB0-802C1FFC 2BC8F0 004C+00 1/0 0/0 0/0 .text deleteObject__12Z2CreatureFMFv */
void Z2CreatureFM::deleteObject() {
@@ -803,10 +810,10 @@ void Z2CreatureFM::deleteObject() {
/* 802C1FFC-802C20E8 2BC93C 00EC+00 0/0 0/0 1/1 .text
* init__12Z2CreatureFMFP3VecP3VecP3VecP3VecP3VecP3VecUcUcUcUcUcUc */
-void Z2CreatureFM::init(Vec* param_0, Vec* param_1, Vec* param_2, Vec* param_3, Vec* param_4,
- Vec* param_5, u8 param_6, u8 param_7, u8 param_8, u8 param_9,
+void Z2CreatureFM::init(Vec* animePosPtr, Vec* simplePosPtr, Vec* param_2, Vec* param_3, Vec* param_4,
+ Vec* param_5, u8 animeHandleNum, u8 simpleHandleNum, u8 param_8, u8 param_9,
u8 param_10, u8 param_11) {
- Z2Creature::init(param_0, param_1, param_6, param_7);
+ Z2Creature::init(animePosPtr, simplePosPtr, animeHandleNum, simpleHandleNum);
if (param_2 != NULL) {
field_0xa4.init(param_2, param_8);
}
@@ -822,27 +829,27 @@ void Z2CreatureFM::init(Vec* param_0, Vec* param_1, Vec* param_2, Vec* param_3,
}
/* 802C20E8-802C2194 2BCA28 00AC+00 1/0 0/0 0/0 .text framework__12Z2CreatureFMFUlSc */
-void Z2CreatureFM::framework(u32 param_0, s8 param_1) {
- Z2Creature::framework(param_0, param_1);
- field_0xa4.framework(param_0, param_1);
- field_0xc4.framework(param_0, param_1);
- field_0xe4.framework(param_0, param_1);
- field_0x104.framework(param_0, param_1);
+void Z2CreatureFM::framework(u32 mapinfo, s8 reverb) {
+ Z2Creature::framework(mapinfo, reverb);
+ field_0xa4.framework(mapinfo, reverb);
+ field_0xc4.framework(mapinfo, reverb);
+ field_0xe4.framework(mapinfo, reverb);
+ field_0x104.framework(mapinfo, reverb);
}
/* 802C2194-802C2290 2BCAD4 00FC+00 0/0 0/0 1/1 .text
* startChainSound__12Z2CreatureFMF10JAISoundIDUcfUlSc */
-Z2SoundHandlePool* Z2CreatureFM::startChainSound(JAISoundID i_soundID, u8 param_1, f32 param_2,
- u32 param_3, s8 param_4) {
+Z2SoundHandlePool* Z2CreatureFM::startChainSound(JAISoundID soundID, u8 param_1, f32 param_2,
+ u32 mapinfo, s8 reverb) {
switch (param_1) {
case 0:
- return field_0xa4.startSound(i_soundID, param_3, param_4);
+ return field_0xa4.startSound(soundID, mapinfo, reverb);
case 1:
- return field_0xc4.startSound(i_soundID, param_3, param_4);
+ return field_0xc4.startSound(soundID, mapinfo, reverb);
case 2:
- return field_0xe4.startSound(i_soundID, param_3, param_4);
+ return field_0xe4.startSound(soundID, mapinfo, reverb);
case 3:
- return field_0x104.startSound(i_soundID, param_3, param_4);
+ return field_0x104.startSound(soundID, mapinfo, reverb);
default:
return NULL;
}
@@ -850,13 +857,13 @@ Z2SoundHandlePool* Z2CreatureFM::startChainSound(JAISoundID i_soundID, u8 param_
/* 802C2290-802C24B0 2BCBD0 0220+00 0/0 0/0 1/1 .text
* startChainSoundLevel__12Z2CreatureFMF10JAISoundIDUcfUlSc */
-Z2SoundHandlePool* Z2CreatureFM::startChainSoundLevel(JAISoundID i_soundID, u8 param_1, f32 param_2,
- u32 param_3, s8 param_4) {
+Z2SoundHandlePool* Z2CreatureFM::startChainSoundLevel(JAISoundID soundID, u8 param_1, f32 param_2,
+ u32 mapinfo, s8 reverb) {
Z2SoundHandlePool* handle;
f32 pitch;
switch (param_1) {
case 0:
- handle = field_0xa4.startLevelSound(i_soundID, param_3, param_4);
+ handle = field_0xa4.startLevelSound(soundID, mapinfo, reverb);
if (handle != NULL && *handle) {
if (param_2 > 30.0f) {
pitch = 1.06f;
@@ -872,7 +879,7 @@ Z2SoundHandlePool* Z2CreatureFM::startChainSoundLevel(JAISoundID i_soundID, u8 p
}
return NULL;
case 1:
- handle = field_0xa4.startLevelSound(i_soundID, param_3, param_4);
+ handle = field_0xa4.startLevelSound(soundID, mapinfo, reverb);
if (handle != NULL && *handle) {
if (param_2 > 30.0f) {
pitch = 1.06f;
@@ -888,9 +895,9 @@ Z2SoundHandlePool* Z2CreatureFM::startChainSoundLevel(JAISoundID i_soundID, u8 p
}
return NULL;
case 2:
- return field_0xe4.startLevelSound(i_soundID, param_3, param_4);
+ return field_0xe4.startLevelSound(soundID, mapinfo, reverb);
case 3:
- return field_0x104.startLevelSound(i_soundID, param_3, param_4);
+ return field_0x104.startLevelSound(soundID, mapinfo, reverb);
default:
return NULL;
}
@@ -898,26 +905,25 @@ Z2SoundHandlePool* Z2CreatureFM::startChainSoundLevel(JAISoundID i_soundID, u8 p
/* 802C24B0-802C24D0 2BCDF0 0020+00 0/0 0/0 1/1 .text init__13Z2CreatureGobFP3VecP3VecP3VecUcUcUc
*/
-void Z2CreatureGob::init(Vec* param_0, Vec* param_1, Vec* param_2, u8 param_3, u8 param_4,
- u8 param_5) {
- Z2Creature::init(param_0, param_1, param_2, param_3, param_4, param_5);
+void Z2CreatureGob::init(Vec* animePosPtr, Vec* simplePosPtr, Vec* simple2PosPtr, u8 animeHandleNum, u8 simpleHandleNum,
+ u8 simple2HandleNum) {
+ Z2Creature::init(animePosPtr, simplePosPtr, simple2PosPtr, animeHandleNum, simpleHandleNum, simple2HandleNum);
}
/* 802C24D0-802C2578 2BCE10 00A8+00 1/0 0/0 0/0 .text
* startCreatureVoiceLevel__13Z2CreatureGobF10JAISoundIDSc */
-Z2SoundHandlePool* Z2CreatureGob::startCreatureVoiceLevel(JAISoundID i_soundID, s8 param_1) {
+Z2SoundHandlePool* Z2CreatureGob::startCreatureVoiceLevel(JAISoundID soundID, s8 reverb) {
if (mSoundObjSimple1.getHandleSoundID(Z2SE_EN_GOB_V_DAMAGE) != NULL ||
mSoundObjSimple1.getHandleSoundID(Z2SE_EN_GOB_V_STOMACH) != NULL)
{
return NULL;
}
- return mSoundObjSimple1.startLevelSound(i_soundID, 0, param_1);
+
+ return mSoundObjSimple1.startLevelSound(soundID, 0, reverb);
}
/* 802C2578-802C25EC 2BCEB8 0074+00 0/0 0/0 1/1 .text __ct__12Z2CreatureOIFv */
-Z2CreatureOI::Z2CreatureOI() {
- /* empty function */
-}
+Z2CreatureOI::Z2CreatureOI() {}
/* 802C25EC-802C2670 2BCF2C 0084+00 1/0 0/0 0/0 .text deleteObject__12Z2CreatureOIFv */
void Z2CreatureOI::deleteObject() {
@@ -977,35 +983,34 @@ void Z2CreatureOI::init(Vec* param_0, Vec* param_1, Vec* param_2, Vec* param_3,
}
/* 802C2864-802C29D4 2BD1A4 0170+00 1/0 0/0 0/0 .text framework__12Z2CreatureOIFUlSc */
-void Z2CreatureOI::framework(u32 param_0, s8 param_1) {
- Z2Creature::framework(param_0, param_1);
- field_0xa4.framework(param_0, param_1);
- field_0xc4.framework(param_0, param_1);
- field_0xe4.framework(param_0, param_1);
- mTentacleSounds[0].framework(param_0, param_1);
- mTentacleSounds[1].framework(param_0, param_1);
- mTentacleSounds[2].framework(param_0, param_1);
- mTentacleSounds[3].framework(param_0, param_1);
- mTentacleSounds[4].framework(param_0, param_1);
- mTentacleSounds[5].framework(param_0, param_1);
- mTentacleSounds[6].framework(param_0, param_1);
- mTentacleSounds[7].framework(param_0, param_1);
+void Z2CreatureOI::framework(u32 mapinfo, s8 reverb) {
+ Z2Creature::framework(mapinfo, reverb);
+ field_0xa4.framework(mapinfo, reverb);
+ field_0xc4.framework(mapinfo, reverb);
+ field_0xe4.framework(mapinfo, reverb);
+ mTentacleSounds[0].framework(mapinfo, reverb);
+ mTentacleSounds[1].framework(mapinfo, reverb);
+ mTentacleSounds[2].framework(mapinfo, reverb);
+ mTentacleSounds[3].framework(mapinfo, reverb);
+ mTentacleSounds[4].framework(mapinfo, reverb);
+ mTentacleSounds[5].framework(mapinfo, reverb);
+ mTentacleSounds[6].framework(mapinfo, reverb);
+ mTentacleSounds[7].framework(mapinfo, reverb);
}
/* 802C29D4-802C2C84 2BD314 02B0+00 1/0 0/0 0/0 .text
* startCreatureSoundLevel__12Z2CreatureOIF10JAISoundIDUlSc */
-Z2SoundHandlePool* Z2CreatureOI::startCreatureSoundLevel(JAISoundID i_soundID, u32 param_1,
- s8 param_2) {
- if (i_soundID == Z2SE_EN_OI_MOVE) {
- Z2SoundHandlePool* handle1 = mSoundObjAnime.startLevelSound(i_soundID, param_1, param_2);
- Z2SoundHandlePool* handle2 = field_0xa4.startLevelSound(i_soundID, param_1, param_2);
- Z2SoundHandlePool* handle3 = field_0xc4.startLevelSound(i_soundID, param_1, param_2);
- Z2SoundHandlePool* handle4 = field_0xe4.startLevelSound(i_soundID, param_1, param_2);
-
- f32 volume = Z2Calc::getParamByExp(param_1, 0.0f, 42.0f, 0.4f, 0.0f, 1.0f,
- Z2Calc::CURVE_SIGN_1);
- f32 pitch = Z2Calc::getParamByExp(param_1, 0.0f, 42.0f, 0.4f, 0.9f, 1.1f,
- Z2Calc::CURVE_SIGN_1);
+Z2SoundHandlePool* Z2CreatureOI::startCreatureSoundLevel(JAISoundID soundID, u32 mapinfo, s8 reverb) {
+ if (soundID == Z2SE_EN_OI_MOVE) {
+ Z2SoundHandlePool* handle1 = mSoundObjAnime.startLevelSound(soundID, mapinfo, reverb);
+ Z2SoundHandlePool* handle2 = field_0xa4.startLevelSound(soundID, mapinfo, reverb);
+ Z2SoundHandlePool* handle3 = field_0xc4.startLevelSound(soundID, mapinfo, reverb);
+ Z2SoundHandlePool* handle4 = field_0xe4.startLevelSound(soundID, mapinfo, reverb);
+
+ f32 volume = Z2Calc::getParamByExp(mapinfo, 0.0f, 42.0f, 0.4f, 0.0f, 1.0f,
+ Z2Calc::CURVE_POSITIVE);
+ f32 pitch = Z2Calc::getParamByExp(mapinfo, 0.0f, 42.0f, 0.4f, 0.9f, 1.1f,
+ Z2Calc::CURVE_POSITIVE);
if (handle1 != NULL && *handle1 != NULL) {
(*handle1)->getAuxiliary().moveVolume(volume, 0);
@@ -1036,28 +1041,27 @@ Z2SoundHandlePool* Z2CreatureOI::startCreatureSoundLevel(JAISoundID i_soundID, u
return NULL;
}
} else {
- return mSoundObjAnime.startLevelSound(i_soundID, param_1, param_2);
+ return mSoundObjAnime.startLevelSound(soundID, mapinfo, reverb);
}
}
/* 802C2C84-802C2CD4 2BD5C4 0050+00 0/0 0/0 1/1 .text
* startTentacleSound__12Z2CreatureOIF10JAISoundIDUcUlSc */
-Z2SoundHandlePool* Z2CreatureOI::startTentacleSound(JAISoundID i_soundID, u8 param_1, u32 param_2,
- s8 param_3) {
- return mTentacleSounds[param_1].startSound(i_soundID, param_2, param_3);
+Z2SoundHandlePool* Z2CreatureOI::startTentacleSound(JAISoundID soundID, u8 tentacleIndex, u32 mapinfo, s8 reverb) {
+ return mTentacleSounds[tentacleIndex].startSound(soundID, mapinfo, reverb);
}
/* 802C2CD4-802C2DE0 2BD614 010C+00 0/0 0/0 1/1 .text
* startTentacleSoundLevel__12Z2CreatureOIF10JAISoundIDUcfUlSc */
-Z2SoundHandlePool* Z2CreatureOI::startTentacleSoundLevel(JAISoundID i_soundID, u8 param_1,
- f32 param_2, u32 param_3, s8 param_4) {
- Z2SoundHandlePool* handle =
- mTentacleSounds[param_1].startLevelSound(i_soundID, param_3, param_4);
+Z2SoundHandlePool* Z2CreatureOI::startTentacleSoundLevel(JAISoundID soundID, u8 tentacleIndex,
+ f32 param_2, u32 mapinfo, s8 reverb) {
+ Z2SoundHandlePool* handle = NULL;
+ handle = mTentacleSounds[tentacleIndex].startLevelSound(soundID, mapinfo, reverb);
if (handle != NULL && *handle) {
f32 volume = Z2Calc::getParamByExp(param_2, 0.0f, 60.0f, 0.4f, 0.0f, 1.0f,
- Z2Calc::CURVE_SIGN_1);
+ Z2Calc::CURVE_POSITIVE);
f32 pitch = Z2Calc::getParamByExp(param_2, 0.0f, 60.0f, 0.4f, 0.9f, 1.1f,
- Z2Calc::CURVE_SIGN_1);
+ Z2Calc::CURVE_POSITIVE);
(*handle)->getAuxiliary().moveVolume(volume, 0);
(*handle)->getAuxiliary().movePitch(pitch, 0);
return handle;
@@ -1067,10 +1071,10 @@ Z2SoundHandlePool* Z2CreatureOI::startTentacleSoundLevel(JAISoundID i_soundID, u
}
/* 802C2DE0-802C2E54 2BD720 0074+00 3/3 0/0 0/0 .text Z2_E_sw_modPitch__FP17Z2SoundHandlePoolUl */
-static void Z2_E_sw_modPitch(Z2SoundHandlePool* i_handle, u32 param_1) {
- if (i_handle != NULL && *i_handle != NULL) {
+static void Z2_E_sw_modPitch(Z2SoundHandlePool* handle, u32 mapinfo) {
+ if (handle != NULL && *handle != NULL) {
f32 pitch = 1.0f;
- switch (param_1) {
+ switch (mapinfo) {
case 1:
pitch = 1.1f;
break;
@@ -1078,41 +1082,47 @@ static void Z2_E_sw_modPitch(Z2SoundHandlePool* i_handle, u32 param_1) {
pitch = 0.8f;
break;
}
- (*i_handle)->getAuxiliary().movePitch(pitch, 0);
+ (*handle)->getAuxiliary().movePitch(pitch, 0);
}
}
/* 802C2E54-802C2E9C 2BD794 0048+00 2/2 0/0 0/0 .text Z2_E_ms_modVol__FP17Z2SoundHandlePoolUl */
-static void Z2_E_ms_modVol(Z2SoundHandlePool* i_handle, u32 param_1) {
- if (i_handle != NULL && *i_handle != NULL && param_1 == 1) {
- (*i_handle)->getAuxiliary().moveVolume(0.2f, 0);
+static void Z2_E_ms_modVol(Z2SoundHandlePool* handle, u32 mapinfo) {
+ if (handle != NULL && *handle != NULL) {
+ f32 var_f31 = 0.2f;
+ if (mapinfo == 1) {
+ (*handle)->getAuxiliary().moveVolume(var_f31, 0);
+ }
}
}
/* 802C2E9C-802C2EE4 2BD7DC 0048+00 2/2 0/0 0/0 .text Z2_E_mm_modPitch__FP17Z2SoundHandlePoolUl */
-static void Z2_E_mm_modPitch(Z2SoundHandlePool* i_handle, u32 param_1) {
- if (i_handle != NULL && *i_handle != NULL && param_1 == 3) {
- (*i_handle)->getAuxiliary().movePitch(0.7f, 0);
+static void Z2_E_mm_modPitch(Z2SoundHandlePool* handle, u32 mapinfo) {
+ if (handle != NULL && *handle != NULL) {
+ f32 var_f31 = 0.7f;
+ if (mapinfo == 3) {
+ (*handle)->getAuxiliary().movePitch(var_f31, 0);
+ }
}
}
/* 802C2EE4-802C3040 2BD824 015C+00 2/2 0/0 0/0 .text Z2_B_zan_modPitch__FP17Z2SoundHandlePoolUl */
-static void Z2_B_zan_modPitch(Z2SoundHandlePool* i_handle, u32 param_1) {
- if (i_handle != NULL && *i_handle != NULL) {
- f32 pitch;
+static void Z2_B_zan_modPitch(Z2SoundHandlePool* handle, u32 mapinfo) {
+ if (handle != NULL && *handle != NULL) {
+ f32 pitch = 1.0f;
f32 volume = 1.0f;
- if (param_1 > 400) {
+ if (mapinfo > 400) {
pitch = 0.5f;
- } else if (param_1 > 100) {
- pitch = Z2Calc::getParamByExp(400 - param_1, 0.0f, 300.0f, 0.4f, 0.5f, 1.0f,
- Z2Calc::CURVE_SIGN_0);
+ } else if (mapinfo > 100) {
+ pitch = Z2Calc::getParamByExp(400 - mapinfo, 0.0f, 300.0f, 0.4f, 0.5f, 1.0f,
+ Z2Calc::CURVE_NEGATIVE);
} else {
- pitch = Z2Calc::getParamByExp(100 - param_1, 0.0f, 50.0f, 0.4f, 1.0f, 1.5f,
- Z2Calc::CURVE_SIGN_0);
- volume = Z2Calc::getParamByExp(param_1, 50.0f, 100.0f, 0.4f, 0.4f, 1.0f,
- Z2Calc::CURVE_SIGN_0);
+ pitch = Z2Calc::getParamByExp(100 - mapinfo, 0.0f, 50.0f, 0.4f, 1.0f, 1.5f,
+ Z2Calc::CURVE_NEGATIVE);
+ volume = Z2Calc::getParamByExp(mapinfo, 50.0f, 100.0f, 0.4f, 0.4f, 1.0f,
+ Z2Calc::CURVE_NEGATIVE);
}
- (*i_handle)->getAuxiliary().movePitch(pitch, 0);
- (*i_handle)->getAuxiliary().moveVolume(volume, 0);
+ (*handle)->getAuxiliary().movePitch(pitch, 0);
+ (*handle)->getAuxiliary().moveVolume(volume, 0);
}
}
diff --git a/src/Z2AudioLib/Z2EnvSeMgr.cpp b/src/Z2AudioLib/Z2EnvSeMgr.cpp
index f996afc50a..11917dda9c 100644
--- a/src/Z2AudioLib/Z2EnvSeMgr.cpp
+++ b/src/Z2AudioLib/Z2EnvSeMgr.cpp
@@ -1,23 +1,98 @@
-//
-// Generated By: dol2asm
-// Translation Unit: Z2EnvSeMgr
-//
-
#include "Z2AudioLib/Z2EnvSeMgr.h"
#include "Z2AudioLib/Z2Calc.h"
#include "JSystem/JAudio2/JASCalc.h"
-#include "Z2AudioLib/Z2Creature.h"
#include "d/d_save.h"
#include "d/d_com_inf_game.h"
#ifdef DEBUG
-// Should be in data section
-static char sSpotName[144] = {0};
+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",
+};
#endif
/* 802C589C-802C58AC 2C01DC 0010+00 3/3 0/0 0/0 .text __ct__11Z2EnvSeBaseFP3Vec */
-Z2EnvSeBase::Z2EnvSeBase(Vec* param_0) {
- mPos = param_0;
+Z2EnvSeBase::Z2EnvSeBase(Vec* posPtr) {
+ mPos = posPtr;
}
/* 802C58AC-802C5908 2C01EC 005C+00 3/3 0/0 0/0 .text __dt__11Z2EnvSeBaseFv */
@@ -25,22 +100,22 @@ Z2EnvSeBase::~Z2EnvSeBase() {}
/* 802C5908-802C5AB4 2C0248 01AC+00 2/2 0/0 0/0 .text
* startEnvSe__11Z2EnvSeBaseF10JAISoundIDfffffUl */
-bool Z2EnvSeBase::startEnvSe(JAISoundID param_1, f32 param_2, f32 param_3, f32 param_4, f32 param_5,
- f32 param_6, u32 param_7) {
+bool Z2EnvSeBase::startEnvSe(JAISoundID soundID, f32 fxMix, f32 volume, f32 pan, f32 dolby, f32 pitch, u32 moveSteps) {
if (Z2GetStatusMgr()->isPaused()) {
- param_3 *= 0.33f;
+ volume *= 0.33f;
}
+
f32 dVar16 = 1.0f;
- bool uStack_44 = Z2GetStatusMgr()->getCameraInWaterDepth() > 0.0f;
- f32 fVar1 = uStack_44;
+ f32 fVar1 = Z2GetStatusMgr()->getCameraInWaterDepth() > 0.0f;
if (fVar1) {
dVar16 = Z2Calc::getParamByExp(
fVar1, 1500.0f, 0.0f,
0.1f, 0.0f,
- dVar16, Z2Calc::CURVE_SIGN_0);
- param_3 *= dVar16;
+ 1.0f, Z2Calc::CURVE_NEGATIVE);
+ volume *= dVar16;
}
- bool rv = Z2GetSoundStarter()->startSound(param_1, &mHandle, (JGeometry::TVec3<f32>*)mPos, 0, param_2, param_6, param_3, param_4, param_5, param_7);
+
+ bool rv = Z2GetSoundStarter()->startSound(soundID, &mHandle, (JGeometry::TVec3<f32>*)mPos, 0, fxMix, pitch, volume, pan, dolby, moveSteps);
if (mHandle) {
if (dVar16 < 1.0f) {
Z2GetSoundMgr()->setIIR(mHandle.getSound(), JASCalc::CUTOFF_TO_IIR_TABLE[64]);
@@ -48,27 +123,29 @@ bool Z2EnvSeBase::startEnvSe(JAISoundID param_1, f32 param_2, f32 param_3, f32 p
Z2GetSoundMgr()->setIIR(mHandle.getSound(), JASCalc::CUTOFF_TO_IIR_TABLE[127]);
}
}
+
return rv;
}
/* 802C5AB4-802C5C9C 2C03F4 01E8+00 9/9 0/0 0/0 .text
* startEnvSeLevel__11Z2EnvSeBaseF10JAISoundIDfffffUl */
-bool Z2EnvSeBase::startEnvSeLevel(JAISoundID param_1, f32 param_2, f32 param_3, f32 param_4,
- f32 param_5, f32 param_6, u32 param_7) {
+bool Z2EnvSeBase::startEnvSeLevel(JAISoundID soundID, f32 fxMix, f32 volume, f32 pan,
+ f32 dolby, f32 pitch, u32 moveSteps) {
if (Z2GetStatusMgr()->isPaused()) {
- param_3 *= 0.33f;
+ volume *= 0.33f;
}
+
f32 dVar16 = 1.0f;
- bool uStack_44 = Z2GetStatusMgr()->getCameraInWaterDepth() > 0.0f;
- f32 fVar1 = uStack_44;
+ f32 fVar1 = Z2GetStatusMgr()->getCameraInWaterDepth() > 0.0f;
if (fVar1) {
dVar16 = Z2Calc::getParamByExp(
fVar1, 1500.0f, 0.0f,
0.1f, 0.0f,
- dVar16, Z2Calc::CURVE_SIGN_0);
- param_3 *= dVar16;
+ 1.0f, Z2Calc::CURVE_NEGATIVE);
+ volume *= dVar16;
}
- bool rv = Z2GetSoundStarter()->startLevelSound(param_1, &mHandle, (JGeometry::TVec3<f32>*)mPos);
+
+ bool rv = Z2GetSoundStarter()->startLevelSound(soundID, &mHandle, (JGeometry::TVec3<f32>*)mPos);
if (mHandle) {
if (dVar16 < 1.0f) {
Z2GetSoundMgr()->setIIR(mHandle.getSound(), JASCalc::CUTOFF_TO_IIR_TABLE[64]);
@@ -76,21 +153,23 @@ bool Z2EnvSeBase::startEnvSeLevel(JAISoundID param_1, f32 param_2, f32 param_3,
Z2GetSoundMgr()->setIIR(mHandle.getSound(), JASCalc::CUTOFF_TO_IIR_TABLE[127]);
}
- mHandle->getAuxiliary().moveVolume(param_3, param_7);
- mHandle->getAuxiliary().movePan(param_4, param_7);
- mHandle->getAuxiliary().moveDolby(param_5, param_7);
- mHandle->getAuxiliary().moveFxMix(param_2, param_7);
- mHandle->getAuxiliary().movePitch(param_6, param_7);
+ mHandle->getAuxiliary().moveVolume(volume, moveSteps);
+ mHandle->getAuxiliary().movePan(pan, moveSteps);
+ mHandle->getAuxiliary().moveDolby(dolby, moveSteps);
+ mHandle->getAuxiliary().moveFxMix(fxMix, moveSteps);
+ mHandle->getAuxiliary().movePitch(pitch, moveSteps);
}
+
return rv;
}
/* 802C5C9C-802C5D1C 2C05DC 0080+00 1/1 0/0 0/0 .text __ct__10Z2EnvSeDirFP3Vec */
-Z2EnvSeDir::Z2EnvSeDir(Vec* param_0) {
- field_0x8 = 0.5f;
- field_0xc = 0.5f;
- if (param_0) {
- setPanDir(param_0);
+Z2EnvSeDir::Z2EnvSeDir(Vec* dir) {
+ mPan = 0.5f;
+ mDolby = 0.5f;
+
+ if (dir) {
+ setPanDir(dir);
} else {
mPanDir = Z2Calc::cNullVec;
}
@@ -101,6 +180,7 @@ Z2EnvSeDir::~Z2EnvSeDir() {}
/* 802C5D70-802C5D9C 2C06B0 002C+00 2/2 0/0 0/0 .text setPanDir__10Z2EnvSeDirFP3Vec */
void Z2EnvSeDir::setPanDir(Vec* dir) {
+ JUT_ASSERT(249, dir);
mPanDir.x = dir->x * -1000.0f;
mPanDir.y = dir->y * -1000.0f;
mPanDir.z = dir->z * -1000.0f;
@@ -114,25 +194,28 @@ void Z2EnvSeDir::calcPan(f32 param_0) {
(*getHandle())->getAuxiliary().moveDolby(0.5f, 0);
} else {
Z2GetAudience()->convertAbsToRel(mPanDir, &mPanDir, 0);
- JMAFastVECNormalize(&mPanDir, &mPanDir);
- field_0x8 = Z2GetAudience()->calcRelPosPan(mPanDir, 0);
- field_0xc = Z2GetAudience()->calcRelPosDolby(mPanDir, 0);
- (*getHandle())->getAuxiliary().movePan(field_0x8, 0);
- (*getHandle())->getAuxiliary().moveDolby(field_0xc, 0);
+ JMath::fastVECNormalize(&mPanDir, &mPanDir);
+
+ mPan = Z2GetAudience()->calcRelPosPan(mPanDir, 0);
+ mDolby = Z2GetAudience()->calcRelPosDolby(mPanDir, 0);
+
+ (*getHandle())->getAuxiliary().movePan(mPan, 0);
+ (*getHandle())->getAuxiliary().moveDolby(mDolby, 0);
}
}
}
/* 802C5E90-802C5ECC 2C07D0 003C+00 1/1 0/0 0/0 .text
* startEnvSeDirLevel__10Z2EnvSeDirF10JAISoundIDff */
-bool Z2EnvSeDir::startEnvSeDirLevel(JAISoundID param_1, f32 param_2, f32 param_3) {
- return Z2EnvSeBase::startEnvSeLevel(param_1, param_2, param_3, field_0x8, field_0xc, 1.0f, 0);
+bool Z2EnvSeDir::startEnvSeDirLevel(JAISoundID soundID, f32 fxMix, f32 volume) {
+ f32 var_f31 = mDolby;
+ return Z2EnvSeBase::startEnvSeLevel(soundID, fxMix, volume, mPan, mDolby, 1.0f, 0);
}
/* 802C5ECC-802C5F28 2C080C 005C+00 1/1 0/0 0/0 .text __ct__14Z2EnvSeAutoPanFv */
Z2EnvSeAutoPan::Z2EnvSeAutoPan() {
- field_0x8 = 0.5f;
- field_0xc = 0.5f;
+ mPan = 0.5f;
+ mDolby = 0.5f;
field_0x10 = 0.0018554000416770577f;
field_0x14 = 0.0008553999941796064f;
field_0x18 = 1;
@@ -143,10 +226,10 @@ Z2EnvSeAutoPan::Z2EnvSeAutoPan() {
Z2EnvSeAutoPan::~Z2EnvSeAutoPan() {}
/* 802C5F7C-802C5F98 2C08BC 001C+00 2/2 0/0 0/0 .text setPanParam__14Z2EnvSeAutoPanFffbbff */
-void Z2EnvSeAutoPan::setPanParam(f32 param_1, f32 param_2, bool param_3, bool param_4, f32 param_5,
+void Z2EnvSeAutoPan::setPanParam(f32 pan, f32 dolby, bool param_3, bool param_4, f32 param_5,
f32 param_6) {
- field_0x8 = param_1;
- field_0xc = param_2;
+ mPan = pan;
+ mDolby = dolby;
field_0x10 = param_5;
field_0x14 = param_6;
field_0x18 = param_3;
@@ -156,54 +239,57 @@ void Z2EnvSeAutoPan::setPanParam(f32 param_1, f32 param_2, bool param_3, bool pa
/* 802C5F98-802C60E0 2C08D8 0148+00 2/2 0/0 0/0 .text calcPan__14Z2EnvSeAutoPanFv */
void Z2EnvSeAutoPan::calcPan() {
if (field_0x18) {
- field_0x8 += field_0x10;
- if (field_0x8 > 1.0f) {
- field_0x8 = 2.0f - field_0x8;
+ mPan += field_0x10;
+ if (mPan > 1.0f) {
+ mPan = 2.0f - mPan;
field_0x18 = false;
}
} else {
- field_0x8 = field_0x8 - field_0x10;
- if (field_0x8 < 0.0f) {
- field_0x8 *= -1.0f;
+ mPan -= field_0x10;
+ if (mPan < 0.0f) {
+ mPan *= -1.0f;
field_0x18 = true;
}
}
+
if (field_0x19) {
- field_0xc = field_0xc + field_0x14;
- if (field_0xc > 1.0f) {
- field_0xc = 2.0f - field_0xc;
+ mDolby += field_0x14;
+ if (mDolby > 1.0f) {
+ mDolby = 2.0f - mDolby;
field_0x19 = false;
}
} else {
- field_0xc = field_0xc - field_0x14;
- if (field_0xc < 0.0f) {
- field_0xc *= -1.0f;
+ mDolby -= field_0x14;
+ if (mDolby < 0.0f) {
+ mDolby *= -1.0f;
field_0x19 = true;
}
}
+
if (*getHandle()) {
- (*getHandle())->getAuxiliary().movePan(field_0x8, 0);
- (*getHandle())->getAuxiliary().moveDolby(field_0xc, 0);
+ (*getHandle())->getAuxiliary().movePan(mPan, 0);
+ (*getHandle())->getAuxiliary().moveDolby(mDolby, 0);
}
}
/* 802C60E0-802C611C 2C0A20 003C+00 2/2 0/0 0/0 .text
* startEnvSeAutoPanLevel__14Z2EnvSeAutoPanF10JAISoundIDfff */
-bool Z2EnvSeAutoPan::startEnvSeAutoPanLevel(JAISoundID param_1, f32 param_2, f32 param_3,
- f32 param_4) {
- return Z2EnvSeBase::startEnvSeLevel(param_1, param_2, param_3, field_0x8, field_0xc, param_4,
- 0);
+bool Z2EnvSeAutoPan::startEnvSeAutoPanLevel(JAISoundID soundID, f32 fxMix, f32 volume,
+ f32 pitch) {
+ f32 var_f31 = mDolby;
+ return Z2EnvSeBase::startEnvSeLevel(soundID, fxMix, volume, mPan, mDolby, pitch, 0);
}
/* 802C611C-802C6540 2C0A5C 0424+00 0/0 1/1 0/0 .text __ct__10Z2EnvSeMgrFv */
Z2EnvSeMgr::Z2EnvSeMgr()
- : JASGlobalInstance<Z2EnvSeMgr>(this), field_0x38(), field_0x48(1.0f), field_0x4c(1.0f),
+ : JASGlobalInstance<Z2EnvSeMgr>(true), field_0x38(), field_0x48(1.0f), field_0x4c(1.0f),
field_0x50(1.0f), field_0x140(), mSnowPower(), mWindType(), field_0x188(), field_0x1ac(1.0f),
field_0x1b0(1.0f), field_0x1b4(1.0f), field_0x1b8(), field_0x1e0(), field_0x1e4(1.0f),
field_0x1e8(1.0f), field_0x1ec(1.0f), field_0x214(), field_0x218(1.0f), field_0x21c(1.0f),
field_0x220(1.0f), field_0x248(), field_0x24c(1.0f), field_0x250(1.0f), field_0x254(1.0f),
field_0x27c(), field_0x280(1.0f), field_0x284(1.0f), field_0x288(1.0f), field_0x2b0(),
- field_0x2b4(1.0f), field_0x2b8(1.0f), field_0x2bc(1.0f), field_0x2e4(), mFogDensity() {
+ field_0x2b4(1.0f), field_0x2b8(1.0f), field_0x2bc(1.0f), field_0x2e4(), mFogDensity()
+{
field_0x3c.x = 0.0f;
field_0x3c.y = 0.0f;
field_0x3c.z = 0.0f;
@@ -243,51 +329,58 @@ void Z2EnvSeMgr::framework() {
&& !dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[250])))
{
int lVar12 = 0;
- if (sceneNum == 0x17 || sceneNum == 0x18 || (sceneNum == 0x19)) {
+ if (sceneNum == Z2SCENE_CASTLE_TOWN_INTERIOR || sceneNum == Z2SCENE_CASTLE_TOWN_SHOPS || (sceneNum == Z2SCENE_STAR_TENT)) {
lVar12 = 1;
}
startRainSe(lVar12, 100);
}
+
field_0x64.resetMultiSePos();
}
- if (sceneNum == 0x2e) {
+
+ if (sceneNum == Z2SCENE_LAKEBED_TEMPLE) {
startLv3WaterSe(-1);
field_0x140 = 0;
}
+
if (Z2GetSceneMgr()->isSceneExist()) {
playSceneEnvSe();
if (field_0x140 > 0 && mSnowPower == 0) {
- JAISoundHandle* pJVar8 = field_0x80.getHandle();
- if (*pJVar8) {
- (*pJVar8)->updateLifeTime(field_0x140);
+ JAISoundHandle* handle = field_0x80.getHandle();
+ if (*handle) {
+ (*handle)->updateLifeTime(field_0x140);
}
- pJVar8 = field_0x88.getHandle();
- if (*pJVar8) {
- (*pJVar8)->updateLifeTime(field_0x140);
+ handle = field_0x88.getHandle();
+ if (*handle) {
+ (*handle)->updateLifeTime(field_0x140);
}
field_0x140 = 0;
}
}
- if (mFogDensity > 0.0f)
- {
+
+ if (mFogDensity > 0.0f) {
mFogDensity -= 0.01f;
if (mFogDensity < 0.0f) {
mFogDensity = 0.0f;
}
}
+
if (field_0x1b8 > 0 && field_0x1b8 < 100) {
field_0x1b8++;
} else if (field_0x1b8 < 0 && field_0x1b8 > -100) {
field_0x1b8--;
}
+
if (mSnowPower > 0) {
mSnowPower--;
}
+
if (Z2GetLink() != NULL) {
- if (Z2GetLink()->isWolfSmellOpen() != 0) {
- if (field_0x2e4 < 0x1e) {
+ if (Z2GetLink()->isWolfSmellOpen()) {
+ if (field_0x2e4 < 30) {
field_0x2e4++;
}
+
if (mWolfSmellSeMgr.getPosCount() >= 0) {
f32 maxVolume = mWolfSmellSeMgr.getMaxVolume();
field_0x2dc.startEnvSeLevel(Z2SE_ENV_SCENT_GRAVE, 0.0f,
@@ -297,15 +390,14 @@ void Z2EnvSeMgr::framework() {
return;
}
}
+
if (field_0x2e4 != 0) {
field_0x2e4--;
}
}
/* 802C6998-802C699C 2C12D8 0004+00 0/0 1/1 0/0 .text resetScene__10Z2EnvSeMgrFv */
-void Z2EnvSeMgr::resetScene() {
- /* empty function */
-}
+void Z2EnvSeMgr::resetScene() {}
/* 802C699C-802C6AC0 2C12DC 0124+00 0/0 1/1 0/0 .text resetSceneInner__10Z2EnvSeMgrFv */
void Z2EnvSeMgr::resetSceneInner() {
@@ -322,6 +414,7 @@ void Z2EnvSeMgr::resetSceneInner() {
field_0x3c.y = 0.0f;
field_0x3c.z = 0.0f;
}
+
field_0x140 = 0;
mWindType = WIND_TYPE_0;
field_0x188 = 0;
@@ -349,6 +442,7 @@ void Z2EnvSeMgr::resetSceneInner() {
field_0x2b4 = 1.0f;
field_0x2b8 = 1.0f;
field_0x2bc = 1.0f;
+
mRiverSeMgr.resetMultiSePos();
mFallSeMgr.resetMultiSePos();
mEtcSeMgr.resetMultiSePos();
@@ -361,50 +455,52 @@ void Z2EnvSeMgr::resetSceneInner() {
/* 802C6AC0-802C6C1C 2C1400 015C+00 0/0 1/1 0/0 .text initSceneEnvSe__10Z2EnvSeMgrFlScf
*/
-void Z2EnvSeMgr::initSceneEnvSe(s32 param_1, s8 param_2, f32 param_3) {
+void Z2EnvSeMgr::initSceneEnvSe(s32 sceneID, s8 room, f32 param_3) {
field_0x60 = -1.0f;
if (-1.0f == param_3) {
return;
}
+
u8 r6 = 100.0f * param_3;
u8 uVar3 = 0;
- switch(param_1) {
- case 0x1e:
- switch(param_2) {
- case 0xd:
+
+ switch(sceneID) {
+ case Z2SCENE_HYRULE_FIELD:
+ switch(room) {
+ case 13:
uVar3 = 10;
break;
case 7:
case 9:
- case 0xb:
- case 0xc:
+ case 11:
+ case 12:
uVar3 = 2;
break;
case 8:
- case 0xa:
+ case 10:
default:
uVar3 = 6;
break;
}
break;
- case 0x1f:
- switch(param_2) {
+ case Z2SCENE_CASTLE_TOWN_GATES:
+ switch(room) {
case 8:
- case 0x10:
+ case 16:
uVar3 = 6;
break;
- case 0x11:
+ case 17:
uVar3 = 10;
break;
}
break;
- case 0x20:
+ case Z2SCENE_HYLIA_BRIDGE_BATTLE:
uVar3 = 10;
break;
- case 0x22:
+ case Z2SCENE_ELDIN_BRIDGE_BATTLE:
uVar3 = 6;
break;
- case 0x45:
+ case Z2SCENE_FINAL_BATTLE_CUTSCENE:
uVar3 = 7;
break;
}
@@ -429,23 +525,27 @@ void Z2EnvSeMgr::initStaticEnvSe(u8 param_1, u8 param_2, u8 param_3, u8 param_4,
f32 dVar7;
f32 dVar6;
f32 fVar1;
+
if (-1.0f == field_0x60) {
if (param_2 >= 100) {
dVar7 = 1.0f;
} else {
dVar7 = 0.01f * param_2;
}
+
if (param_3 == 0xff) {
dVar6 = 1.0f;
} else {
dVar6 = 0.01f * param_3;
}
+
if (param_4 == 0xff) {
fVar1 = 0.0f;
} else {
field_0x3c = *param_5;
fVar1 = 0.1f * param_4;
}
+
if (field_0x38 != 0 && field_0x38 == param_1) {
field_0x39 = 100;
if (dVar7 != field_0x48) {
@@ -455,6 +555,7 @@ void Z2EnvSeMgr::initStaticEnvSe(u8 param_1, u8 param_2, u8 param_3, u8 param_4,
field_0x48 = dVar7;
field_0x54 = 0.0f;
}
+
if (dVar6 != field_0x4c) {
field_0x58 =
(dVar6 - field_0x4c) / 100.0f;
@@ -462,6 +563,7 @@ void Z2EnvSeMgr::initStaticEnvSe(u8 param_1, u8 param_2, u8 param_3, u8 param_4,
field_0x4c = dVar6;
field_0x58 = 0.0f;
}
+
if (fVar1 != field_0x50) {
field_0x5c =
(fVar1 - field_0x50) / 100.0f;
@@ -477,6 +579,7 @@ void Z2EnvSeMgr::initStaticEnvSe(u8 param_1, u8 param_2, u8 param_3, u8 param_4,
field_0x58 = 0.0f;
field_0x5c = 0.0f;
}
+
switch (param_1) {
case 1:
field_0x0.setPanParam(
@@ -561,15 +664,17 @@ void Z2EnvSeMgr::initStaticEnvSe(u8 param_1, u8 param_2, u8 param_3, u8 param_4,
1.0f, false, true, 0.0018554000416770577f,
0.0008553999941796064f);
}
+
field_0x38 = param_1;
}
}
/* 802C70C8-802C780C 2C1A08 0744+00 2/1 1/1 0/0 .text startStaticEnvSe__10Z2EnvSeMgrFSc
*/
-bool Z2EnvSeMgr::startStaticEnvSe(s8 param_1) {
+bool Z2EnvSeMgr::startStaticEnvSe(s8 reverb) {
field_0x1b8 = 100;
- f32 local_90 = param_1 / 127.0f;
+
+ f32 local_90 = reverb / 127.0f;
if (field_0x39 != 0) {
field_0x48 += field_0x54;
field_0x4c += field_0x58;
@@ -581,26 +686,30 @@ bool Z2EnvSeMgr::startStaticEnvSe(s8 param_1) {
field_0x5c = 0.0f;
}
}
+
field_0x0.calcPan();
field_0x1c.calcPan();
+
JAISoundID aJStack_94;
- JAISoundID aJStack_98 = 0xffffffff;
+ JAISoundID aJStack_98 = 0xFFFFFFFF;
f32 local_9c = 1.0f;
if (0.0f != field_0x50) {
Vec VStack_8c;
Z2GetAudience()->convertAbsToRel(field_0x3c, &VStack_8c, 0);
local_9c = Z2GetAudience()->calcRelPosVolume(VStack_8c, field_0x50, 0);
}
+
f32 dVar22 = field_0x48 * local_9c;
f32 dVar21 = field_0x48 * local_9c;
f32 dVar20 = field_0x4c;
f32 dVar18 = field_0x4c;
- u8 bVar15 = Z2GetStatusMgr()->getHour();
+ u8 hour = Z2GetStatusMgr()->getHour();
+
switch (field_0x38) {
case 0:
return false;
case 1:
- if (bVar15 >= 6 && bVar15 <= 18) {
+ if (hour >= 6 && hour <= 18) {
aJStack_94 = Z2SE_ENV_FOREST_DAY;
aJStack_98 = Z2SE_ENV_FORESTWIND;
dVar21 *= 0.7f;
@@ -610,7 +719,7 @@ bool Z2EnvSeMgr::startStaticEnvSe(s8 param_1) {
}
break;
case 2:
- if (bVar15 >= 6 && bVar15 <= 18) {
+ if (hour >= 6 && hour <= 18) {
dVar22 *= 0.7f;
dVar21 *= 0.7f;
}
@@ -630,36 +739,36 @@ bool Z2EnvSeMgr::startStaticEnvSe(s8 param_1) {
dVar22 *= Z2Calc::getParamByExp(mSnowPower,
64.0f, 127.0f,
0.4f, 0.35f,
- 1.0f, Z2Calc::CURVE_SIGN_1);
+ 1.0f, Z2Calc::CURVE_POSITIVE);
dVar20 *= Z2Calc::getParamByExp(mSnowPower,
64.0f, 127.0f,
0.4f, 1.15f,
- 1.6f, Z2Calc::CURVE_SIGN_1);
+ 1.6f, Z2Calc::CURVE_POSITIVE);
dVar21 *= Z2Calc::getParamByExp(mSnowPower,
64.0f, 127.0f,
0.3f, 0.2f,
- 1.0f, Z2Calc::CURVE_SIGN_1);
+ 1.0f, Z2Calc::CURVE_POSITIVE);
dVar18 *= Z2Calc::getParamByExp(mSnowPower,
127.0f, 64.0f,
0.4f, 0.65f,
- 0.9f, Z2Calc::CURVE_SIGN_0);
+ 0.9f, Z2Calc::CURVE_NEGATIVE);
} else {
dVar22 *= Z2Calc::getParamByExp(mSnowPower,
0.0f, 64.0f,
0.4f, 0.2f,
- 0.35f, Z2Calc::CURVE_SIGN_0);
+ 0.35f, Z2Calc::CURVE_NEGATIVE);
dVar20 *= Z2Calc::getParamByExp(mSnowPower,
0.0f, 64.0f,
0.3f, 1.0f,
- 1.15f, Z2Calc::CURVE_SIGN_0);
+ 1.15f, Z2Calc::CURVE_NEGATIVE);
dVar21 *= Z2Calc::getParamByExp(mSnowPower,
0.0f, 64.0f,
0.3f, 0.1f,
- 0.2f, Z2Calc::CURVE_SIGN_0);
+ 0.2f, Z2Calc::CURVE_NEGATIVE);
dVar18 *= ::Z2Calc::getParamByExp(mSnowPower,
64.0f, 0.0f,
0.4f, 0.9f,
- 1.0f, Z2Calc::CURVE_SIGN_1);
+ 1.0f, Z2Calc::CURVE_POSITIVE);
}
break;
case 11:
@@ -670,7 +779,7 @@ bool Z2EnvSeMgr::startStaticEnvSe(s8 param_1) {
aJStack_98 = Z2SE_ENV_WINDTAG_SLOW;
break;
case 6:
- if (bVar15 >= 6 && bVar15 <= 18) {
+ if (hour >= 6 && hour <= 18) {
dVar22 *= 0.1f;
dVar21 *= 0.12f;
} else {
@@ -681,7 +790,7 @@ bool Z2EnvSeMgr::startStaticEnvSe(s8 param_1) {
aJStack_98 = Z2SE_ENV_FIELD_WIND_R;
break;
case 10:
- if (bVar15 >= 6 && bVar15 <= 18) {
+ if (hour >= 6 && hour <= 18) {
dVar22 *= 0.1f;
dVar21 *= 0.6f;
} else {
@@ -707,51 +816,51 @@ bool Z2EnvSeMgr::startStaticEnvSe(s8 param_1) {
default:
return false;
}
+
dVar22 *= 1.0f - getFogDensity();
dVar21 *= 1.0f - getFogDensity();
if (Z2GetSceneMgr()->isInDarkness()) {
dVar22 *= 0.75f;
dVar21 *= 0.75f;
}
- JAISoundHandle* pJVar10 = field_0x0.getHandle();
- if (*pJVar10) {
- if ((u32)(*pJVar10)->getID() != (u32)aJStack_94) {
- (*pJVar10)->stop(0x1e);
- (*pJVar10)->releaseHandle();
+
+ JAISoundHandle* handle = field_0x0.getHandle();
+ if (*handle) {
+ if ((u32)(*handle)->getID() != (u32)aJStack_94) {
+ (*handle)->stop(30);
+ (*handle)->releaseHandle();
}
}
- pJVar10 = field_0x1c.getHandle();
- if (*pJVar10) {
- if ((u32)(*pJVar10)->getID() != (u32)aJStack_98) {
- (*pJVar10)->stop(0x1e);
- (*pJVar10)->releaseHandle();
+
+ handle = field_0x1c.getHandle();
+ if (*handle) {
+ if ((u32)(*handle)->getID() != (u32)aJStack_98) {
+ (*handle)->stop(30);
+ (*handle)->releaseHandle();
}
}
- bool iVar9 = field_0x0.startEnvSeAutoPanLevel(aJStack_94, local_90,
- dVar22, dVar20);
- bool iVar11 = field_0x1c.startEnvSeAutoPanLevel(aJStack_98,
- local_90, dVar21, dVar18);
+
+ bool iVar9 = field_0x0.startEnvSeAutoPanLevel(aJStack_94, local_90, dVar22, dVar20);
+ bool iVar11 = field_0x1c.startEnvSeAutoPanLevel(aJStack_98, local_90, dVar21, dVar18);
+
if (field_0x38 == 4) {
- JAISoundHandle* pJVar10 = field_0x0.getHandle();
- JAISoundHandle* this_02 = field_0x1c.getHandle();
- if (*pJVar10) {
- Z2GetSoundStarter()->setPortData(pJVar10, 6, mSnowPower, -1);
+ JAISoundHandle* handle = field_0x0.getHandle();
+ JAISoundHandle* handle2 = field_0x1c.getHandle();
+ if (*handle) {
+ Z2GetSoundStarter()->setPortData(handle, 6, mSnowPower, -1);
}
- if (*this_02) {
- Z2GetSoundStarter()->setPortData(this_02, 6, mSnowPower, -1);
+ if (*handle2) {
+ Z2GetSoundStarter()->setPortData(handle2, 6, mSnowPower, -1);
}
}
- bool rv = 0;
- if (iVar9 && iVar11) {
- rv = 1;
- }
- return rv;
+
+ return iVar9 && iVar11;
}
/* 802C780C-802C7830 2C214C 0024+00 0/0 1/1 0/0 .text registWindowPos__10Z2EnvSeMgrFP3Vec
*/
-void Z2EnvSeMgr::registWindowPos(Vec* param_0) {
- field_0x64.registMultiSePos(param_0);
+void Z2EnvSeMgr::registWindowPos(Vec* posPtr) {
+ field_0x64.registMultiSePos(posPtr);
}
/* 802C7830-802C7CF4 2C2170 04C4+00 1/1 1/1 0/0 .text startRainSe__10Z2EnvSeMgrFlSc */
@@ -759,12 +868,15 @@ bool Z2EnvSeMgr::startRainSe(s32 param_1, s8 param_2) {
if (mSnowPower > 0) {
return false;
}
+
mSnowPower = 1;
+
JAISoundID aJStack_118 = 0xffffffff;
JAISoundID aJStack_11c = 0xffffffff;
JAISoundID aJStack_120 = 0xffffffff;
f32 dVar21 = param_2 / 127.0f;
s8 unaff_r29;
+
switch (param_1) {
case 0:
aJStack_118 = Z2SE_ENV_RAIN_NORMAL_L;
@@ -787,60 +899,49 @@ bool Z2EnvSeMgr::startRainSe(s32 param_1, s8 param_2) {
}
if (field_0x64.getPosCount() < 0) {
- f32 dVar13 =
- Z2Calc::linearTransform(field_0x90.calcNoise1f(), 0.0f, 1.0f, 0.7f, 1.0f, true);
- f32 dVar14 =
- Z2Calc::linearTransform(field_0xa0.calcNoise1f(), 0.0f, 1.0f, 0.7f, 1.0f, true);
- f32 dVar15 =
- Z2Calc::linearTransform(field_0xd0.calcNoise1f(), 0.0f, 1.0f, 0.8f, 1.1f, true);
- f32 dVar16 =
- Z2Calc::linearTransform(field_0xe0.calcNoise1f(), 0.0f, 1.0f, 0.8f, 1.1f, true);
- f32 dVar17 = Z2Calc::getParamByExp(field_0xb0.calcNoise1f(), 0.0f, 1.0f, 0.3f, 0.0f, 0.3f,
- Z2Calc::CURVE_SIGN_1);
- f32 dVar18 = Z2Calc::getParamByExp(field_0xc0.calcNoise1f(), 0.0f, 1.0f, 0.3f, 1.0f, 0.7f,
- Z2Calc::CURVE_SIGN_1);
- f32 dVar19 = Z2Calc::getParamByExp(field_0xf0.calcNoise1f(), 0.0f, 1.0f, 0.3f, 0.0f, 1.0f,
- Z2Calc::CURVE_SIGN_1);
- f32 dVar20 = Z2Calc::getParamByExp(field_0x100.calcNoise1f(), 0.0f, 1.0f, 0.3f, 0.0f, 1.0f,
- Z2Calc::CURVE_SIGN_1);
+ f32 dVar13 = Z2Calc::linearTransform(field_0x90.calcNoise1f(), 0.0f, 1.0f, 0.7f, 1.0f, true);
+ f32 dVar14 = Z2Calc::linearTransform(field_0xa0.calcNoise1f(), 0.0f, 1.0f, 0.7f, 1.0f, true);
+ f32 dVar15 = Z2Calc::linearTransform(field_0xd0.calcNoise1f(), 0.0f, 1.0f, 0.8f, 1.1f, true);
+ f32 dVar16 = Z2Calc::linearTransform(field_0xe0.calcNoise1f(), 0.0f, 1.0f, 0.8f, 1.1f, true);
+ f32 dVar17 = Z2Calc::getParamByExp(field_0xb0.calcNoise1f(), 0.0f, 1.0f, 0.3f, 0.0f, 0.3f, Z2Calc::CURVE_POSITIVE);
+ f32 dVar18 = Z2Calc::getParamByExp(field_0xc0.calcNoise1f(), 0.0f, 1.0f, 0.3f, 1.0f, 0.7f, Z2Calc::CURVE_POSITIVE);
+ f32 dVar19 = Z2Calc::getParamByExp(field_0xf0.calcNoise1f(), 0.0f, 1.0f, 0.3f, 0.0f, 1.0f, Z2Calc::CURVE_POSITIVE);
+ f32 dVar20 = Z2Calc::getParamByExp(field_0x100.calcNoise1f(), 0.0f, 1.0f, 0.3f, 0.0f, 1.0f, Z2Calc::CURVE_POSITIVE);
+
if (Z2GetSceneMgr()->isInDarkness()) {
dVar13 *= 0.5f;
dVar14 *= 0.5f;
}
- JAISoundHandle* pJVar8 = field_0x80.getHandle();
- if (*pJVar8) {
- if ((*pJVar8)->getID() != (u32)aJStack_118) {
- (*pJVar8)->stop(0x1e);
- (*pJVar8)->releaseHandle();
+
+ JAISoundHandle* handle = field_0x80.getHandle();
+ if (*handle) {
+ if ((*handle)->getID() != (u32)aJStack_118) {
+ (*handle)->stop(30);
+ (*handle)->releaseHandle();
}
}
- pJVar8 = field_0x88.getHandle();
- if (*pJVar8) {
- if ((*pJVar8)->getID() != (u32)aJStack_11c) {
- (*pJVar8)->stop(0x1e);
- (*pJVar8)->releaseHandle();
+
+ handle = field_0x88.getHandle();
+ if (*handle) {
+ if ((*handle)->getID() != (u32)aJStack_11c) {
+ (*handle)->stop(30);
+ (*handle)->releaseHandle();
}
}
- bool iVar7 =
- field_0x80.startEnvSeLevel(aJStack_118, dVar21, dVar13, dVar17, dVar19, dVar15, 0);
- bool iVar9 =
- field_0x88.startEnvSeLevel(aJStack_11c, dVar21, dVar14, dVar18, dVar20, dVar16, 0);
- bool uVar5 = 0;
- if (iVar7 && iVar9) {
- uVar5 = 1;
- }
- return uVar5;
+ bool iVar7 = field_0x80.startEnvSeLevel(aJStack_118, dVar21, dVar13, dVar17, dVar19, dVar15, 0);
+ bool iVar9 = field_0x88.startEnvSeLevel(aJStack_11c, dVar21, dVar14, dVar18, dVar20, dVar16, 0);
+ return iVar7 && iVar9;
}
f32 dVar13 = Z2Calc::linearTransform(field_0x90.calcNoise1f(), 0.0f, 1.0f, 0.7f, 1.0f, true);
f32 dVar14 = Z2Calc::linearTransform(field_0xd0.calcNoise1f(), 0.0f, 1.0f, 0.8f, 1.1f, true);
- JAISoundHandle* pJVar8 = field_0x80.getHandle();
- if (*pJVar8) {
- if ((*pJVar8)->getID() != (u32)aJStack_120) {
- (*pJVar8)->stop(0x1e);
- (*pJVar8)->releaseHandle();
+ JAISoundHandle* handle = field_0x80.getHandle();
+ if (*handle) {
+ if ((*handle)->getID() != (u32)aJStack_120) {
+ (*handle)->stop(30);
+ (*handle)->releaseHandle();
}
}
@@ -858,8 +959,7 @@ void Z2EnvSeMgr::startNearThunderSe(s8 param_1) {
dVar10 += 0.5f;
f32 dVar8 = Z2Calc::getRandom(0.25f, Z2Calc::cEqualCSlope, Z2Calc::cEqualPSlope);
dVar8 += 0.5f;
- field_0x118.startEnvSe(Z2SE_ENV_THUNDER_NEAR, param_1 / 127.0f, 1.0f, dVar10, dVar8, 1.0f,
- 0);
+ field_0x118.startEnvSe(Z2SE_ENV_THUNDER_NEAR, param_1 / 127.0f, 1.0f, dVar10, dVar8, 1.0f, 0);
} else {
f32 maxVolume = field_0x64.getMaxVolume();
field_0x118.startEnvSe(Z2SE_ENV_THUND_NEAR_WIN, param_1 / 127.0f, maxVolume,
@@ -868,20 +968,20 @@ void Z2EnvSeMgr::startNearThunderSe(s8 param_1) {
}
/* 802C7E68-802C7FB4 2C27A8 014C+00 0/0 2/2 0/0 .text startFarThunderSe__10Z2EnvSeMgrFP3VecSc */
-void Z2EnvSeMgr::startFarThunderSe(Vec* param_1, s8 param_2) {
+void Z2EnvSeMgr::startFarThunderSe(Vec* posPtr, s8 reverb) {
if (field_0x64.getPosCount() < 0) {
- field_0x110.setPos(param_1);
- field_0x110.startEnvSe(Z2SE_ENV_THUNDER_FAR, param_2 / 127.0f, 1.0f, 0.5f, 0.0f, 1.0f, 0);
+ field_0x110.setPos(posPtr);
+ field_0x110.startEnvSe(Z2SE_ENV_THUNDER_FAR, reverb / 127.0f, 1.0f, 0.5f, 0.0f, 1.0f, 0);
} else {
f32 maxVolume = field_0x64.getMaxVolume();
- field_0x110.startEnvSe(Z2SE_ENV_THUND_FAR_WIN, param_2 / 127.0f, maxVolume,
+ field_0x110.startEnvSe(Z2SE_ENV_THUND_FAR_WIN, reverb / 127.0f, maxVolume,
field_0x64.getPanPower(), field_0x64.getDolbyPower(), 1.0f, 0);
}
}
/* 802C7FB4-802C7FBC -00001 0008+00 0/0 0/0 0/0 .text setSnowPower__10Z2EnvSeMgrFSc */
-void Z2EnvSeMgr::setSnowPower(s8 param_0) {
- mSnowPower = param_0;
+void Z2EnvSeMgr::setSnowPower(s8 power) {
+ mSnowPower = power;
}
/* 802C7FBC-802C7FC8 2C28FC 000C+00 0/0 1/1 1/1 .text initStrongWindSe__10Z2EnvSeMgrFv */
@@ -890,18 +990,19 @@ void Z2EnvSeMgr::initStrongWindSe() {
}
/* 802C7FC8-802C800C 2C2908 0044+00 0/0 1/1 1/1 .text setWindDirection__10Z2EnvSeMgrFP3Vec */
-void Z2EnvSeMgr::setWindDirection(Vec* param_0) {
+void Z2EnvSeMgr::setWindDirection(Vec* dir) {
if (mWindType == WIND_TYPE_3) {
field_0x144.setPanDir(const_cast<Vec*>(&Z2Calc::cNullVec));
} else {
- field_0x144.setPanDir(param_0);
+ field_0x144.setPanDir(dir);
}
}
/* 802C800C-802C80F8 2C294C 00EC+00 0/0 1/1 1/1 .text startStrongWindSe__10Z2EnvSeMgrFSc
*/
-bool Z2EnvSeMgr::startStrongWindSe(s8 param_1) {
+bool Z2EnvSeMgr::startStrongWindSe(s8 reverb) {
field_0x144.calcPan(1.0f);
+
JAISoundID aJStack_24 = 0xffffffff;
switch (mWindType) {
case WIND_TYPE_1:
@@ -917,7 +1018,8 @@ bool Z2EnvSeMgr::startStrongWindSe(s8 param_1) {
return false;
}
- return field_0x144.startEnvSeDirLevel(aJStack_24, param_1 / 127.0f, 1.0f);
+ f32 fxMix = reverb / 127.0f;
+ return field_0x144.startEnvSeDirLevel(aJStack_24, fxMix, 1.0f);
}
/* 802C80F8-802C8234 2C2A38 013C+00 0/0 1/1 0/0 .text initRiverSe__10Z2EnvSeMgrFUcUcUcUc
@@ -929,16 +1031,19 @@ void Z2EnvSeMgr::initRiverSe(u8 param_1, u8 param_2, u8 param_3, u8 param_4) {
} else {
field_0x1ac = 0.01f * param_2;
}
+
if (param_3 == 0xff) {
field_0x1b0 = 1.0f;
} else {
field_0x1b0 = 0.01f * param_3;
}
+
if (param_4 == 0xff) {
field_0x1b4 = 1.0f;
} else {
field_0x1b4 = 0.1f * param_4;
}
+
switch (param_1) {
case 1:
mRiverSeMgr.setVolumeScale(1.5f * field_0x1b4);
@@ -956,14 +1061,21 @@ void Z2EnvSeMgr::initRiverSe(u8 param_1, u8 param_2, u8 param_3, u8 param_4) {
}
/* 802C8234-802C8258 2C2B74 0024+00 1/1 1/1 0/0 .text registRiverSePos__10Z2EnvSeMgrFP3Vec */
-void Z2EnvSeMgr::registRiverSePos(Vec* param_0) {
- mRiverSeMgr.registMultiSePos(param_0);
+void Z2EnvSeMgr::registRiverSePos(Vec* posPtr) {
+ f32 var_f31;
+ if (posPtr != NULL) {
+
+ } else {
+ var_f31 = posPtr->z;
+ }
+
+ mRiverSeMgr.registMultiSePos(posPtr);
}
/* 802C8258-802C8300 2C2B98 00A8+00 0/0 0/0 1/1 .text setHyrulSewerOpen__10Z2EnvSeMgrFb
*/
-void Z2EnvSeMgr::setHyrulSewerOpen(bool param_0) {
- if (param_0) {
+void Z2EnvSeMgr::setHyrulSewerOpen(bool isSewerOpen) {
+ if (isSewerOpen) {
field_0x1b8 = 1;
Z2GetSeMgr()->seStart(Z2SE_ENV_SEWER_FILL, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
} else {
@@ -975,16 +1087,16 @@ void Z2EnvSeMgr::setHyrulSewerOpen(bool param_0) {
/* 802C8300-802C8730 2C2C40 0430+00 2/1 1/1 0/0 .text startRiverSe__10Z2EnvSeMgrFSc */
bool Z2EnvSeMgr::startRiverSe(s8 param_1) {
#ifdef DEBUG
- char* spotName = sSpotName;
+ const char** spotName = sSpotName;
#endif
if (Z2GetStatusMgr()->mCameraMapInfo == 6) {
switch (Z2GetSceneMgr()->getCurrentSceneNum()) {
- case 5:
+ case Z2SCENE_FARON_WOODS:
if (Z2GetSceneMgr()->getCurrentRoomNum() != 1) {
break;
}
- case 0x10:
+ case Z2SCENE_LAKE_HYLIA:
if (Z2GetStatusMgr()->mPolygonPosition.y < -14500.0f) {
break;
}
@@ -992,16 +1104,17 @@ bool Z2EnvSeMgr::startRiverSe(s8 param_1) {
if ((Z2GetStatusMgr()->mPolygonPosition.y > 2000.0f)) {
break;
}
- case 0x15:
- case 0x1e:
- case 0x1f:
- case 0x2e:
+ case Z2SCENE_ZORAS_DOMAIN:
+ case Z2SCENE_HYRULE_FIELD:
+ case Z2SCENE_CASTLE_TOWN_GATES:
+ case Z2SCENE_LAKEBED_TEMPLE:
break;
default:
registRiverSePos(&Z2GetStatusMgr()->mPolygonPosition);
break;
}
}
+
if (mRiverSeMgr.getPosCount() < 0) {
return false;
}
@@ -1080,16 +1193,19 @@ void Z2EnvSeMgr::initFallSe(u8 param_1, u8 param_2, u8 param_3, u8 param_4) {
} else {
field_0x1e4 = 0.01f * param_2;
}
+
if (param_3 == 0xff) {
field_0x1e8 = 1.0f;
} else {
field_0x1e8 = 0.01f * param_3;
}
+
if (param_4 == 0xff) {
field_0x1ec = 1.0f;
} else {
field_0x1ec = 0.1f * param_4;
}
+
switch (param_1) {
case 8:
mFallSeMgr.setVolumeScale(3.0f * field_0x1ec);
@@ -1108,40 +1224,49 @@ void Z2EnvSeMgr::initFallSe(u8 param_1, u8 param_2, u8 param_3, u8 param_4) {
/* 802C886C-802C8890 2C31AC 0024+00 0/0 1/1 0/0 .text registFallSePos__10Z2EnvSeMgrFP3Vec
*/
-void Z2EnvSeMgr::registFallSePos(Vec* param_0) {
- mFallSeMgr.registMultiSePos(param_0);
+void Z2EnvSeMgr::registFallSePos(Vec* posPtr) {
+ f32 var_f31;
+ if (posPtr != NULL) {
+
+ } else {
+ var_f31 = posPtr->z;
+ }
+
+ mFallSeMgr.registMultiSePos(posPtr);
}
/* 802C8890-802C8A90 2C31D0 0200+00 1/1 1/1 0/0 .text startFallSe__10Z2EnvSeMgrFSc */
-bool Z2EnvSeMgr::startFallSe(s8 param_1) {
+bool Z2EnvSeMgr::startFallSe(s8 reverb) {
if (mFallSeMgr.getPosCount() < 0) {
return false;
}
- JAISoundID aJStack_80 = 0xffffffff;
- f32 dVar14 = param_1 / 127.0f;
- f32 dVar13 = ((field_0x1e4 * mFallSeMgr.getMaxVolume()) *
- Z2Calc::linearTransform(field_0x90.calcNoise1f(), 0.0f, 1.0f, 0.7f, 1.0f, true));
- f32 dVar15 = (field_0x1e8 *
- Z2Calc::linearTransform(field_0xd0.calcNoise1f(), 0.0f, 1.0f, 0.8f, 1.1f, true));
- f32 dVar11 = mFallSeMgr.getPanPower();
- f32 dVar12 = mFallSeMgr.getDolbyPower();
+
+ JAISoundID soundID = 0xffffffff;
+ bool rv = false;
+
+ f32 fxMix = reverb / 127.0f;
+ f32 volume = ((field_0x1e4 * mFallSeMgr.getMaxVolume()) * Z2Calc::linearTransform(field_0x90.calcNoise1f(), 0.0f, 1.0f, 0.7f, 1.0f, true));
+ f32 pitch = (field_0x1e8 * Z2Calc::linearTransform(field_0xd0.calcNoise1f(), 0.0f, 1.0f, 0.8f, 1.1f, true));
+ f32 pan = mFallSeMgr.getPanPower();
+ f32 dolby = mFallSeMgr.getDolbyPower();
+
switch (field_0x1e0) {
case 8:
- aJStack_80 = Z2SE_ENV_WATERFALL_NORMAL;
+ soundID = Z2SE_ENV_WATERFALL_NORMAL;
break;
case 9:
- aJStack_80 = Z2SE_ENV_FALL_LV1BOSS;
+ soundID = Z2SE_ENV_FALL_LV1BOSS;
break;
case 10:
- aJStack_80 = Z2SE_ENV_SPIRIT_FALL;
- dVar15 *= 0.75f;
+ soundID = Z2SE_ENV_SPIRIT_FALL;
+ pitch *= 0.75f;
break;
case 11:
- aJStack_80 = Z2SE_ENV_SAND_FALL;
+ soundID = Z2SE_ENV_SAND_FALL;
break;
}
- bool rv = field_0x1d8.startEnvSeLevel(aJStack_80, dVar14, dVar13, dVar11, dVar12, dVar15, 0);
+ rv = field_0x1d8.startEnvSeLevel(soundID, fxMix, volume, pan, dolby, pitch, 0);
mFallSeMgr.resetMultiSePos();
return rv;
}
@@ -1154,16 +1279,19 @@ void Z2EnvSeMgr::initEtcSe(u8 param_1, u8 param_2, u8 param_3, u8 param_4) {
} else {
field_0x218 = 0.01f * param_2;
}
+
if (param_3 == 0xff) {
field_0x21c = 1.0f;
} else {
field_0x21c = 0.01f * param_3;
}
+
if (param_4 == 0xff) {
field_0x220 = 1.0f;
} else {
field_0x220 = 0.1f * param_4;
}
+
switch (param_1) {
case 17:
mEtcSeMgr.setVolumeScale(2.0f * field_0x220);
@@ -1193,13 +1321,17 @@ void Z2EnvSeMgr::initEtcSe(u8 param_1, u8 param_2, u8 param_3, u8 param_4) {
/* 802C8C24-802C8C48 2C3564 0024+00 1/1 1/1 0/0 .text registEtcSePos__10Z2EnvSeMgrFP3Vec
*/
-void Z2EnvSeMgr::registEtcSePos(Vec* param_0) {
- mEtcSeMgr.registMultiSePos(param_0);
+void Z2EnvSeMgr::registEtcSePos(Vec* posPtr) {
+ mEtcSeMgr.registMultiSePos(posPtr);
}
/* 802C8C48-802C92C8 2C3588 0680+00 2/1 1/1 0/0 .text startEtcSe__10Z2EnvSeMgrFSc */
-bool Z2EnvSeMgr::startEtcSe(s8 param_1) {
- f32 dVar17 = param_1 / 127.0f;
+bool Z2EnvSeMgr::startEtcSe(s8 reverb) {
+ #ifdef DEBUG
+ const char** spotName = sSpotName;
+ #endif
+
+ f32 dVar17 = reverb / 127.0f;
f32 dVar19 = (field_0x218 * mEtcSeMgr.getMaxVolume());
f32 dVar14 = mEtcSeMgr.getPanPower();
f32 dVar15 = mEtcSeMgr.getDolbyPower();
@@ -1207,6 +1339,7 @@ bool Z2EnvSeMgr::startEtcSe(s8 param_1) {
f32 dVar18 = field_0x21c;
f32 local_90, local_98, local_9c, local_a0;
bool iVar5, iVar6, iVar7, iVar8;
+
switch (field_0x214) {
case 0x11:
local_90 = Z2Calc::linearTransform(field_0x120.calcNoise1f(), 0.0f, 1.0f, 0.01f, 1.0f,
@@ -1221,11 +1354,7 @@ bool Z2EnvSeMgr::startEtcSe(s8 param_1) {
iVar6 = field_0x0.startEnvSeAutoPanLevel(JA_SE_ATM_WIND_1, dVar17, local_90, dVar18);
iVar7 = field_0x1c.startEnvSeAutoPanLevel(JA_SE_ATM_WIND_1, dVar17, 0.7f * local_90,
(0.8f * dVar18));
- iVar5 = false;
- if (iVar8 && iVar6 && iVar7) {
- iVar5 = true;
- }
- rv = iVar5;
+ rv = iVar8 && iVar6 && iVar7;
break;
case 0x12:
local_90 = ::Z2Calc::linearTransform(field_0x120.calcNoise1f(), 0.0f, 1.0f, 0.4f, 0.8f,
@@ -1291,9 +1420,9 @@ bool Z2EnvSeMgr::startEtcSe(s8 param_1) {
break;
case 0x10:
local_98 = Z2Calc::getParamByExp(getFogDensity(), 0.4f, 1.0f, 0.2f, 0.2f, 1.0f,
- Z2Calc::CURVE_SIGN_0);
+ Z2Calc::CURVE_NEGATIVE);
local_9c = Z2Calc::getParamByExp(getFogDensity(), 0.4f, 1.0f, 0.2f, 0.75f, 1.0f,
- Z2Calc::CURVE_SIGN_0);
+ Z2Calc::CURVE_NEGATIVE);
local_a0 = field_0x2e8.calcNoise1f();
rv = field_0x240.startEnvSeLevel(Z2SE_ENV_PUPPET_FOG_L, 0.3f,
(dVar19 * ((0.332f + 0.668f * local_a0) * local_98)),
@@ -1306,37 +1435,40 @@ bool Z2EnvSeMgr::startEtcSe(s8 param_1) {
default:
return false;
}
+
mEtcSeMgr.resetMultiSePos();
return rv;
}
/* 802C92C8-802C92EC 2C3C08 0024+00 0/0 0/0 1/1 .text registWolfSmellSePos__10Z2EnvSeMgrFP3Vec */
-void Z2EnvSeMgr::registWolfSmellSePos(Vec* param_0) {
- mWolfSmellSeMgr.registMultiSePos(param_0);
+void Z2EnvSeMgr::registWolfSmellSePos(Vec* posPtr) {
+ mWolfSmellSeMgr.registMultiSePos(posPtr);
}
/* 802C92EC-802C93A0 2C3C2C 00B4+00 0/0 0/0 1/1 .text startFogWipeTrigger__10Z2EnvSeMgrFP3Vec */
-bool Z2EnvSeMgr::startFogWipeTrigger(Vec* param_0) {
+void Z2EnvSeMgr::startFogWipeTrigger(Vec* pos) {
+ JUT_ASSERT(1919, pos);
+
if (*field_0x240.getHandle()) {
f32 fogDensity = getFogDensity();
u32 fogDensity2 = 340.0f * getFogDensity();
- return Z2GetSoundStarter()->startSound(Z2SE_ENV_FOG_WIPE, field_0x20c.getHandle(),
- (JGeometry::TVec3<f32>*)param_0, fogDensity2, 0.3f,
+ Z2GetSoundStarter()->startSound(Z2SE_ENV_FOG_WIPE, field_0x20c.getHandle(),
+ (JGeometry::TVec3<f32>*)pos, fogDensity2, 0.3f,
1.0f, fogDensity, -1.0f, -1.0f, 0);
}
- //! @bug does not always return a value
}
/* 802C93A0-802C93E4 2C3CE0 0044+00 0/0 0/0 1/1 .text setFogWipeWidth__10Z2EnvSeMgrFf */
-void Z2EnvSeMgr::setFogWipeWidth(f32 param_0) {
- mFogDensity = Z2Calc::linearTransform(param_0, 0.0f, 1.0f, 1.0f, 0.4f, true);
+void Z2EnvSeMgr::setFogWipeWidth(f32 width) {
+ mFogDensity = Z2Calc::linearTransform(width, 0.0f, 1.0f, 1.0f, 0.4f, true);
}
/* 802C93E4-802C9400 2C3D24 001C+00 3/3 2/2 0/0 .text getFogDensity__10Z2EnvSeMgrFv */
f32 Z2EnvSeMgr::getFogDensity() {
- if (field_0x214 == 0x10) {
+ if (field_0x214 == 16) {
return mFogDensity;
}
+
return 0.0f;
}
@@ -1352,16 +1484,15 @@ bool Z2EnvSeMgr::startFogSe() {
f32 dVar12 = 0.5f - (dVar10 * fVar2) / 2;
int iVar1 = 20;
f32 fVar3 = 0.5f;
- bool iVar6 =
- field_0x240.startEnvSeLevel(Z2SE_ENV_PUPPET_FOG_L, iVar1, dVar14, dVar12, fVar3, dVar13, 0);
+ bool iVar6 = field_0x240.startEnvSeLevel(Z2SE_ENV_PUPPET_FOG_L, iVar1, dVar14, dVar12, fVar3, dVar13, 0);
+
dVar10 = field_0x2f8.calcNoise1f();
dVar14 = (ratio + ((1.0f - ratio) * dVar10));
dVar13 = ((1.0f - fVar1) + dVar10 * fVar1);
dVar12 = (0.5f + (dVar10 * fVar2) / 2);
iVar1 = 20;
fVar3 = 0.5f;
- iVar5 = field_0x274.startEnvSeLevel(Z2SE_ENV_PUPPET_FOG_R, iVar1, dVar14, dVar12, fVar3,
- dVar13, 0);
+ iVar5 = field_0x274.startEnvSeLevel(Z2SE_ENV_PUPPET_FOG_R, iVar1, dVar14, dVar12, fVar3, dVar13, 0);
return (iVar6 && iVar5);
}
@@ -1396,11 +1527,13 @@ void Z2EnvSeMgr::initLv3WaterSe(u8 param_1, u8 param_2, u8 param_3, u8 param_4)
} else {
field_0x24c = 0.01f * param_2;
}
+
if (param_3 == 0xff) {
field_0x250 = 1.0f;
} else {
field_0x250 = 0.01f * param_3;
}
+
if (param_4 == 0xff) {
field_0x254 = 1.0f;
} else {
@@ -1415,16 +1548,19 @@ void Z2EnvSeMgr::initLv3WaterSe(u8 param_1, u8 param_2, u8 param_3, u8 param_4)
} else {
field_0x280 = 0.01f * param_2;
}
+
if (param_3 == 0xff) {
field_0x284 = 1.0f;
} else {
field_0x284 = 0.01f * param_3;
}
+
if (param_4 == 0xff) {
field_0x288 = 1.0f;
} else {
field_0x288 = 0.1f * param_4;
}
+
field_0x258.setVolumeScale(2.0f * field_0x288);
break;
case 116:
@@ -1434,16 +1570,19 @@ void Z2EnvSeMgr::initLv3WaterSe(u8 param_1, u8 param_2, u8 param_3, u8 param_4)
} else {
field_0x280 = 0.01f * param_2;
}
+
if (param_3 == 0xff) {
field_0x284 = 1.0f;
} else {
field_0x284 = 0.01f * param_3;
}
+
if (param_4 == 0xff) {
field_0x288 = 1.0f;
} else {
field_0x288 = 0.1f * param_4;
}
+
field_0x258.setVolumeScale(1.5f * field_0x288);
break;
case 112:
@@ -1453,16 +1592,19 @@ void Z2EnvSeMgr::initLv3WaterSe(u8 param_1, u8 param_2, u8 param_3, u8 param_4)
} else {
field_0x2b4 = 0.01f *param_2;
}
+
if (param_3 == 0xff) {
field_0x2b8 = 1.0f;
} else {
field_0x2b8 = 0.01f * param_3;
}
+
if (param_4 == 0xff) {
field_0x2bc = 1.0f;
} else {
field_0x2bc = 0.1f * param_4;
}
+
field_0x28c.setVolumeScale(2.0f * field_0x2bc);
break;
case 117:
@@ -1472,39 +1614,45 @@ void Z2EnvSeMgr::initLv3WaterSe(u8 param_1, u8 param_2, u8 param_3, u8 param_4)
} else {
field_0x2b4 = 0.01f * param_2;
}
+
if (param_3 == 0xff) {
field_0x2b8 = 1.0f;
} else {
field_0x2b8 = 0.01f * param_3;
}
+
if (param_4 == 0xff) {
field_0x2bc = 1.0f;
} else {
field_0x2bc = 0.1f * param_4;
}
+
field_0x28c.setVolumeScale(1.5f * field_0x2bc);
break;
- case 'w':
+ case 0x77:
field_0x2b0 = param_1;
if (param_2 >= 100) {
field_0x2b4 = 1.0f;
} else {
field_0x2b4 = 0.01f * param_2;
}
+
if (param_3 == 0xff) {
field_0x2b8 = 1.0f;
} else {
field_0x2b8 = 0.01f * param_3;
}
+
if (param_4 == 0xff) {
field_0x2bc = 1.0f;
} else {
field_0x2bc = 0.1f * param_4;
}
+
field_0x28c.setVolumeScale(3.0f * field_0x2bc);
break;
default:
- if (Z2GetSceneMgr()->getCurrentSceneNum() == 46) {
+ if (Z2GetSceneMgr()->getCurrentSceneNum() == Z2SCENE_LAKEBED_TEMPLE) {
switch (Z2GetSceneMgr()->getCurrentRoomNum()) {
case 1:
if (param_1 == 107) {
@@ -1565,7 +1713,7 @@ void Z2EnvSeMgr::initLv3WaterSe(u8 param_1, u8 param_2, u8 param_3, u8 param_4)
initFallSe(9, param_2, 0xa0, param_4);
}
break;
- case 0xb:
+ case 11:
if (param_1 == 100 || param_1 == 101) {
initEtcSe(0x1e, param_2, param_3, param_4);
} else if (param_1 == 103) {
@@ -1574,14 +1722,14 @@ void Z2EnvSeMgr::initLv3WaterSe(u8 param_1, u8 param_2, u8 param_3, u8 param_4)
initFallSe(9, param_2, 0x82, param_4);
}
break;
- case 0xc:
+ case 12:
if (param_1 == 103) {
initLv3WaterSe(115, param_2, param_3, param_4);
} else if (param_1 == 107) {
initLv3WaterSe(111, param_2, 0x82, param_4);
}
break;
- case 0xd:
+ case 13:
if ((param_1 == 100) || (param_1 == 101)) {
initEtcSe(0x1e, param_2, param_3, param_4);
} else if (param_1 == 103) {
@@ -1599,163 +1747,165 @@ void Z2EnvSeMgr::initLv3WaterSe(u8 param_1, u8 param_2, u8 param_3, u8 param_4)
}
/* 802C9F58-802CA794 2C4898 083C+00 2/0 1/1 0/0 .text registLv3WaterSePos__10Z2EnvSeMgrFUcP3Vec */
-void Z2EnvSeMgr::registLv3WaterSePos(u8 param_1, Vec* param_2) {
+void Z2EnvSeMgr::registLv3WaterSePos(u8 param_1, Vec* posPtr) {
switch (param_1) {
case 110:
case 115:
- field_0x224.registMultiSePos(param_2);
+ field_0x224.registMultiSePos(posPtr);
break;
case 111:
case 116:
- field_0x258.registMultiSePos(param_2);
+ field_0x258.registMultiSePos(posPtr);
break;
case 112:
case 117:
case 119:
- field_0x28c.registMultiSePos(param_2);
+ field_0x28c.registMultiSePos(posPtr);
break;
default:
switch (Z2GetSceneMgr()->getCurrentRoomNum()) {
case 1:
if (param_1 == 107) {
- mFallSeMgr.registMultiSePos(param_2);
+ mFallSeMgr.registMultiSePos(posPtr);
}
case 0:
case 5:
case 6:
case 9:
if (param_1 == 100) {
- mEtcSeMgr.registMultiSePos(param_2);
+ mEtcSeMgr.registMultiSePos(posPtr);
}
break;
case 2:
if (param_1 == 100) {
- mEtcSeMgr.registMultiSePos(param_2);
+ mEtcSeMgr.registMultiSePos(posPtr);
} else if (param_1 == 103 && dComIfGs_isSaveSwitch(8)) {
- field_0x224.registMultiSePos(param_2);
+ field_0x224.registMultiSePos(posPtr);
} else if (param_1 == 104 && dComIfGs_isSaveSwitch(9)) {
- field_0x224.registMultiSePos(param_2);
+ field_0x224.registMultiSePos(posPtr);
} else if (param_1 == 105 && dComIfGs_isSaveSwitch(8) && dComIfGs_isSaveSwitch(3)) {
- field_0x224.registMultiSePos(param_2);
+ field_0x224.registMultiSePos(posPtr);
} else if (param_1 == 106 && dComIfGs_isSaveSwitch(9) && dComIfGs_isSaveSwitch(1)) {
- field_0x224.registMultiSePos(param_2);
+ field_0x224.registMultiSePos(posPtr);
}
break;
case 3:
if (param_1 == 100 && !dComIfGs_isSaveSwitch(8) && !dComIfGs_isSaveSwitch(9)) {
- mEtcSeMgr.registMultiSePos(param_2);
+ mEtcSeMgr.registMultiSePos(posPtr);
} else if ((param_1 == 101 && dComIfGs_isSaveSwitch(8) &&
(!dComIfGs_isSaveSwitch(9))) ||
(!dComIfGs_isSaveSwitch(8) && dComIfGs_isSaveSwitch(9)))
{
- mEtcSeMgr.registMultiSePos(param_2);
+ mEtcSeMgr.registMultiSePos(posPtr);
} else if (param_1 == 102 && dComIfGs_isSaveSwitch(8) && dComIfGs_isSaveSwitch(9)) {
- mEtcSeMgr.registMultiSePos(param_2);
+ mEtcSeMgr.registMultiSePos(posPtr);
}
if (param_1 == 103 && dComIfGs_isSaveSwitch(8)) {
- field_0x224.registMultiSePos(param_2);
+ field_0x224.registMultiSePos(posPtr);
}
if (param_1 == 104 && dComIfGs_isSaveSwitch(9)) {
- field_0x224.registMultiSePos(param_2);
+ field_0x224.registMultiSePos(posPtr);
}
if (param_1 == 105 && dComIfGs_isSaveSwitch(8) && dComIfGs_isSaveSwitch(3)) {
- field_0x28c.registMultiSePos(param_2);
+ field_0x28c.registMultiSePos(posPtr);
} else if (param_1 == 107 && dComIfGs_isSaveSwitch(8) && !dComIfGs_isSaveSwitch(3)) {
- field_0x258.registMultiSePos(param_2);
+ field_0x258.registMultiSePos(posPtr);
}
if (param_1 == 106 && dComIfGs_isSaveSwitch(9) && dComIfGs_isSaveSwitch(1)) {
- field_0x28c.registMultiSePos(param_2);
+ field_0x28c.registMultiSePos(posPtr);
} else if (param_1 == 108 && dComIfGs_isSaveSwitch(9) && !dComIfGs_isSaveSwitch(1)) {
- field_0x258.registMultiSePos(param_2);
+ field_0x258.registMultiSePos(posPtr);
}
break;
case 7:
if (dComIfGs_isSaveSwitch(8)) {
if (param_1 == 103) {
- field_0x224.registMultiSePos(param_2);
+ field_0x224.registMultiSePos(posPtr);
} else if (param_1 == 107) {
- mFallSeMgr.registMultiSePos(param_2);
+ mFallSeMgr.registMultiSePos(posPtr);
}
}
break;
case 8:
if (dComIfGs_isSaveSwitch(9) && dComIfGs_isSaveSwitch(1)) {
if (param_1 == 101) {
- mEtcSeMgr.registMultiSePos(param_2);
+ mEtcSeMgr.registMultiSePos(posPtr);
} else if (param_1 == 103) {
- field_0x224.registMultiSePos(param_2);
+ field_0x224.registMultiSePos(posPtr);
} else if (param_1 == 107) {
- field_0x258.registMultiSePos(param_2);
+ field_0x258.registMultiSePos(posPtr);
}
} else if (param_1 == 100) {
- mEtcSeMgr.registMultiSePos(param_2);
+ mEtcSeMgr.registMultiSePos(posPtr);
}
break;
case 10:
if ((param_1 == 100) && dComIfGs_isSaveSwitch(0x31)) {
- mEtcSeMgr.registMultiSePos(param_2);
+ mEtcSeMgr.registMultiSePos(posPtr);
} else if (param_1 == 103 && dComIfGs_isSaveSwitch(0x31)) {
- field_0x28c.registMultiSePos(param_2);
+ field_0x28c.registMultiSePos(posPtr);
} else if (param_1 == 104 && (dComIfGs_isSaveSwitch(8))) {
- field_0x258.registMultiSePos(param_2);
+ field_0x258.registMultiSePos(posPtr);
} else if (param_1 == 107 && dComIfGs_isSaveSwitch(0x31)) {
- mFallSeMgr.registMultiSePos(param_2);
+ mFallSeMgr.registMultiSePos(posPtr);
}
break;
case 11:
if (dComIfGs_isSaveSwitch(9)) {
if (param_1 == 101) {
- mEtcSeMgr.registMultiSePos(param_2);
+ mEtcSeMgr.registMultiSePos(posPtr);
} else if (param_1 == 103) {
- field_0x224.registMultiSePos(param_2);
+ field_0x224.registMultiSePos(posPtr);
} else if (param_1 == 107) {
- mFallSeMgr.registMultiSePos(param_2);
+ mFallSeMgr.registMultiSePos(posPtr);
}
} else if (param_1 == 100) {
- mEtcSeMgr.registMultiSePos(param_2);
+ mEtcSeMgr.registMultiSePos(posPtr);
}
break;
case 12:
if (dComIfGs_isSaveSwitch(8) && dComIfGs_isSaveSwitch(3)) {
if (param_1 == 103) {
- field_0x224.registMultiSePos(param_2);
+ field_0x224.registMultiSePos(posPtr);
} else if (param_1 == 107) {
- field_0x258.registMultiSePos(param_2);
+ field_0x258.registMultiSePos(posPtr);
}
}
break;
case 13:
if (dComIfGs_isSaveSwitch(0x30)) {
if (param_1 == 101) {
- mEtcSeMgr.registMultiSePos(param_2);
+ mEtcSeMgr.registMultiSePos(posPtr);
} else if (param_1 == 103) {
- field_0x28c.registMultiSePos(param_2);
+ field_0x28c.registMultiSePos(posPtr);
} else if ((param_1 == 104) && (dComIfGs_isSaveSwitch(9))) {
- field_0x258.registMultiSePos(param_2);
+ field_0x258.registMultiSePos(posPtr);
} else if (param_1 == 107) {
- mFallSeMgr.registMultiSePos(param_2);
+ mFallSeMgr.registMultiSePos(posPtr);
}
} else if (param_1 == 100) {
- mEtcSeMgr.registMultiSePos(param_2);
+ mEtcSeMgr.registMultiSePos(posPtr);
}
}
}
}
/* 802CA794-802CAAC0 2C50D4 032C+00 1/1 1/1 0/0 .text startLv3WaterSe__10Z2EnvSeMgrFSc */
-void Z2EnvSeMgr::startLv3WaterSe(s8 param_1) {
- if (Z2GetSceneMgr()->getCurrentSceneNum() == 0x2e) {
- if (param_1 >= 0) {
- field_0x140 = param_1;
+void Z2EnvSeMgr::startLv3WaterSe(s8 reverb) {
+ if (Z2GetSceneMgr()->getCurrentSceneNum() == Z2SCENE_LAKEBED_TEMPLE) {
+ if (reverb >= 0) {
+ field_0x140 = reverb;
return;
}
- param_1 = field_0x140;
+ reverb = field_0x140;
}
+
JAISoundID aJStack_60 = 0xffffffff;
- f32 dVar12 = param_1 / 127.0f;
+ f32 dVar12 = reverb / 127.0f;
f32 maxVolume;
f32 panPower;
f32 dolbyPower;
+
if (field_0x224.getPosCount() >= 0) {
if (field_0x248 == 0x73) {
aJStack_60 = Z2SE_ENV_WATER_WAY;
@@ -1770,12 +1920,14 @@ void Z2EnvSeMgr::startLv3WaterSe(s8 param_1) {
field_0x250, 0);
field_0x224.resetMultiSePos();
}
+
if (field_0x258.getPosCount() >= 0) {
if (field_0x27c == 0x74) {
aJStack_60 = Z2SE_ENV_WATER_WAY;
} else if (field_0x27c == 0x6f) {
aJStack_60 = Z2SE_ENV_WATERFALL_CALM;
}
+
maxVolume = field_0x280 * field_0x258.getMaxVolume();
panPower = field_0x258.getPanPower();
dolbyPower = field_0x258.getDolbyPower();
@@ -1784,6 +1936,7 @@ void Z2EnvSeMgr::startLv3WaterSe(s8 param_1) {
field_0x284, 0);
field_0x258.resetMultiSePos();
}
+
if (field_0x28c.getPosCount() >= 0) {
if (field_0x2b0 == 0x75) {
aJStack_60 = Z2SE_ENV_WATER_WAY_L;
@@ -1800,7 +1953,8 @@ void Z2EnvSeMgr::startLv3WaterSe(s8 param_1) {
field_0x2b8, 0);
field_0x28c.resetMultiSePos();
}
- startRiverSe(param_1);
- startFallSe(param_1);
- startEtcSe(param_1);
+
+ startRiverSe(reverb);
+ startFallSe(reverb);
+ startEtcSe(reverb);
}
diff --git a/src/Z2AudioLib/Z2FxLineMgr.cpp b/src/Z2AudioLib/Z2FxLineMgr.cpp
index c1a7d1645c..d0f9a1d9a0 100644
--- a/src/Z2AudioLib/Z2FxLineMgr.cpp
+++ b/src/Z2AudioLib/Z2FxLineMgr.cpp
@@ -1,8 +1,3 @@
-//
-// Generated By: dol2asm
-// Translation Unit: Z2FxLineMgr
-//
-
#include "Z2AudioLib/Z2FxLineMgr.h"
#include "Z2AudioLib/Z2SceneMgr.h"
#include "JSystem/JAudio2/JASDSPInterface.h"
@@ -11,25 +6,40 @@
#include "JSystem/JSupport/JSUMemoryStream.h"
/* 802BA7DC-802BA7FC 2B511C 0020+00 0/0 1/1 0/0 .text __ct__11Z2FxLineMgrFv */
-Z2FxLineMgr::Z2FxLineMgr() : JASGlobalInstance<Z2FxLineMgr>(this) {
+Z2FxLineMgr::Z2FxLineMgr() : JASGlobalInstance<Z2FxLineMgr>(true) {
mConfig = NULL;
mLineID = -1;
mFxDataNum = 0;
mSetUnderWaterFx = false;
+
+ #if DEBUG
+ mHIOEdit = NULL;
+ #endif
}
/* 802BA7FC-802BAC28 2B513C 042C+00 0/0 1/1 0/0 .text
* initDataArc__11Z2FxLineMgrFP10JKRArchiveP7JKRHeap */
void Z2FxLineMgr::initDataArc(JKRArchive* arc, JKRHeap* heap) {
+ JUT_ASSERT(44, arc);
+ JUT_ASSERT(45, heap);
+
mFxLineBuffer[0] = new (heap, 0x20) u8[0x2800];
mFxLineBuffer[1] = new (heap, 0x20) u8[0x2800];
mFxLineBuffer[2] = new (heap, 0x20) u8[0x4B00];
mFxLineBuffer[3] = new (heap, 0x20) u8[0x4B00];
+
+ JUT_ASSERT(53, mFxLineBuffer[0]);
+ JUT_ASSERT(54, mFxLineBuffer[1]);
+ JUT_ASSERT(55, mFxLineBuffer[2]);
+ JUT_ASSERT(56, mFxLineBuffer[3]);
+
mFxDataNum = arc->countResource();
mConfig = new (heap, 0) Z2FxLineConfig[mFxDataNum];
+
for (u8 i = 0; i < mFxDataNum; i++) {
void* res = arc->getResource(i);
u32 size = (arc->getResSize(res) + 0x1f) & ~0x1f;
+
JSUMemoryInputStream stream(res, size);
stream >> mConfig[i].field_0x0;
stream >> mConfig[i].field_0x1;
@@ -61,23 +71,29 @@ void Z2FxLineMgr::initDataArc(JKRArchive* arc, JKRHeap* heap) {
stream >> mConfig[i].field_0x20[7];
JKRFree(res);
}
+
setLineID(-1, false, false);
setLineID(-1, true, false);
}
/* 802BAC28-802BAC74 2B5568 004C+00 4/4 0/0 0/0 .text setLineID__11Z2FxLineMgrFScbb */
void Z2FxLineMgr::setLineID(s8 fxID, bool param_1, bool param_2) {
+ JUT_ASSERT(109, fxID < mFxDataNum);
+
if (fxID < 0) {
mLineID = 0;
} else {
mLineID = fxID;
}
+
setLine(&mConfig[mLineID], param_1, param_2);
}
/* 802BAC74-802BAE1C 2B55B4 01A8+00 1/1 0/0 0/0 .text setLine__11Z2FxLineMgrFP14Z2FxLineConfigbb
*/
void Z2FxLineMgr::setLine(Z2FxLineConfig* config, bool param_1, bool param_2) {
+ JUT_ASSERT(121, config);
+
u8 buf1 = 0;
u8 buf2 = 1;
if (param_1) {
@@ -86,6 +102,7 @@ void Z2FxLineMgr::setLine(Z2FxLineConfig* config, bool param_1, bool param_2) {
}
if (mFxLineBuffer[buf1] == NULL || mFxLineBuffer[buf2] == NULL) {
+ OS_REPORT("[Z2FxLineMgr::setLine] FxBuffer is NOT CREATED!!\n");
return;
}
@@ -93,6 +110,7 @@ void Z2FxLineMgr::setLine(Z2FxLineConfig* config, bool param_1, bool param_2) {
dsp_config.field_0x0 = config->field_0x0;
dsp_config.field_0x2 = config->field_0x1;
dsp_config.field_0x6 = config->field_0x2;
+
if (param_2) {
dsp_config.field_0x4 = 0;
dsp_config.field_0x8 = 0;
@@ -100,6 +118,7 @@ void Z2FxLineMgr::setLine(Z2FxLineConfig* config, bool param_1, bool param_2) {
dsp_config.field_0x4 = config->field_0x4;
dsp_config.field_0x8 = config->field_0x6;
}
+
dsp_config.field_0xc = config->field_0x3;
dsp_config.field_0x10[0] = config->field_0x8[0];
dsp_config.field_0x10[1] = config->field_0x8[1];
@@ -114,6 +133,7 @@ void Z2FxLineMgr::setLine(Z2FxLineConfig* config, bool param_1, bool param_2) {
dsp_config.field_0x0 = config->field_0x18;
dsp_config.field_0x2 = config->field_0x19;
dsp_config.field_0x6 = config->field_0x1a;
+
if (param_2) {
dsp_config.field_0x4 = 0;
dsp_config.field_0x8 = 0;
@@ -121,6 +141,7 @@ void Z2FxLineMgr::setLine(Z2FxLineConfig* config, bool param_1, bool param_2) {
dsp_config.field_0x4 = config->field_0x1c;
dsp_config.field_0x8 = config->field_0x1e;
}
+
dsp_config.field_0xc = config->field_0x1b;
dsp_config.field_0x10[0] = config->field_0x20[0];
dsp_config.field_0x10[1] = config->field_0x20[1];
@@ -139,84 +160,86 @@ void Z2FxLineMgr::setFxForceOff(bool param_0) {
}
/* 802BAE48-802BAEB8 2B5788 0070+00 0/0 1/1 0/0 .text setUnderWaterFx__11Z2FxLineMgrFb */
-void Z2FxLineMgr::setUnderWaterFx(bool param_0) {
- if (mSetUnderWaterFx != param_0) {
- if (param_0) {
+void Z2FxLineMgr::setUnderWaterFx(bool isUnderWaterFx) {
+ if (mSetUnderWaterFx != isUnderWaterFx) {
+ if (isUnderWaterFx) {
+ OS_REPORT("[Z2FxLineMgr::setUnderWaterFx] → underWaterFx!\n");
setLineID(12, true, false);
} else {
+ OS_REPORT("[Z2FxLineMgr::setUnderWaterFx] → sceneFx!\n");
setSceneFx(Z2GetSceneMgr()->getCurrentSceneNum());
}
- mSetUnderWaterFx = param_0;
+ mSetUnderWaterFx = isUnderWaterFx;
}
}
/* 802BAEB8-802BB00C 2B57F8 0154+00 2/1 1/1 0/0 .text setSceneFx__11Z2FxLineMgrFl */
-void Z2FxLineMgr::setSceneFx(s32 sceneNum) {
+void Z2FxLineMgr::setSceneFx(s32 sceneNo) {
if (Z2GetSceneMgr()->isInDarkness()) {
setLineID(11, true, false);
} else {
- switch (sceneNum) {
- case SPOT_SHADES_REALM:
+ switch (sceneNo) {
+ case Z2SCENE_SHADES_REALM:
setLineID(9, true, false);
break;
- case SPOT_KAKARIKO_VILLAGE:
- case SPOT_DEATH_MOUNTAIN:
- case SPOT_HIDDEN_VILLAGE:
- case SPOT_ZORAS_RIVER:
- case SPOT_HYRULE_FIELD:
+ case Z2SCENE_KAKARIKO_VILLAGE:
+ case Z2SCENE_DEATH_MOUNTAIN:
+ case Z2SCENE_HIDDEN_VILLAGE:
+ case Z2SCENE_ZORAS_RIVER:
+ case Z2SCENE_HYRULE_FIELD:
setLineID(10, true, false);
break;
- case SPOT_SACRED_GROVE:
- case SPOT_FOREST_TEMPLE:
- case SPOT_FOREST_TEMPLE_MINIBOSS:
- case SPOT_FOREST_TEMPLE_BOSS:
- case SPOT_GORGE_LANTERN_CAVE:
- case SPOT_LAKE_LANTERN_CAVE:
- case SPOT_FARON_WOODS_CAVE:
+ case Z2SCENE_SACRED_GROVE:
+ case Z2SCENE_FOREST_TEMPLE:
+ case Z2SCENE_FOREST_TEMPLE_MINIBOSS:
+ case Z2SCENE_FOREST_TEMPLE_BOSS:
+ case Z2SCENE_GORGE_LANTERN_CAVE:
+ case Z2SCENE_LAKE_LANTERN_CAVE:
+ case Z2SCENE_FARON_WOODS_CAVE:
if (Z2GetSceneMgr()->getCurrentRoomNum() == 2) {
return;
}
// fallthrough
- case SPOT_FARON_WOODS:
+ case Z2SCENE_FARON_WOODS:
setLineID(1, true, false);
break;
- case SPOT_GORON_MINES:
- case SPOT_GORON_MINES_MINIBOSS:
- case SPOT_GORON_MINES_BOSS:
- case SPOT_ELDIN_MAGNET_CAVE:
+ case Z2SCENE_GORON_MINES:
+ case Z2SCENE_GORON_MINES_MINIBOSS:
+ case Z2SCENE_GORON_MINES_BOSS:
+ case Z2SCENE_ELDIN_MAGNET_CAVE:
setLineID(2, true, false);
break;
- case SPOT_LAKE_HYLIA:
- case SPOT_LAKEBED_TEMPLE:
- case SPOT_LAKEBED_TEMPLE_MINIBOSS:
- case SPOT_LAKEBED_TEMPLE_BOSS:
+ case Z2SCENE_LAKE_HYLIA:
+ case Z2SCENE_LAKEBED_TEMPLE:
+ case Z2SCENE_LAKEBED_TEMPLE_MINIBOSS:
+ case Z2SCENE_LAKEBED_TEMPLE_BOSS:
if (Z2GetSceneMgr()->getCurrentRoomNum() == 1) {
setLineID(3, true, false);
}
break;
- case SPOT_ARBITERS_GROUNDS:
- case SPOT_ARBITERS_GROUNDS_MINIBOSS:
- case SPOT_ARBITERS_GROUNDS_BOSS:
+ case Z2SCENE_ARBITERS_GROUNDS:
+ case Z2SCENE_ARBITERS_GROUNDS_MINIBOSS:
+ case Z2SCENE_ARBITERS_GROUNDS_BOSS:
setLineID(4, true, false);
break;
- case SPOT_SNOWPEAK_RUINS:
- case SPOT_SNOWPEAK_RUINS_MINIBOSS:
- case SPOT_SNOWPEAK_RUINS_BOSS:
- case SPOT_ICE_BLOCK_PUZZLE:
+ case Z2SCENE_SNOWPEAK_RUINS:
+ case Z2SCENE_SNOWPEAK_RUINS_MINIBOSS:
+ case Z2SCENE_SNOWPEAK_RUINS_BOSS:
+ case Z2SCENE_ICE_BLOCK_PUZZLE:
setLineID(5, true, false);
break;
- case SPOT_TEMPLE_OF_TIME:
- case SPOT_TEMPLE_OF_TIME_MINIBOSS:
- case SPOT_TEMPLE_OF_TIME_BOSS:
+ case Z2SCENE_TEMPLE_OF_TIME:
+ case Z2SCENE_TEMPLE_OF_TIME_MINIBOSS:
+ case Z2SCENE_TEMPLE_OF_TIME_BOSS:
setLineID(6, true, false);
break;
- case SPOT_CITY_IN_THE_SKY:
- case SPOT_CITY_IN_THE_SKY_MINIBOSS:
- case SPOT_CITY_IN_THE_SKY_BOSS:
+ case Z2SCENE_CITY_IN_THE_SKY:
+ case Z2SCENE_CITY_IN_THE_SKY_MINIBOSS:
+ case Z2SCENE_CITY_IN_THE_SKY_BOSS:
setLineID(7, true, false);
break;
- case SPOT_HYRULE_CASTLE:
- case SPOT_FINAL_BATTLE_THRONE_ROOM:
+ case Z2SCENE_HYRULE_CASTLE:
+ case Z2SCENE_FINAL_BATTLE_THRONE_ROOM:
setLineID(8, true, false);
break;
default:
diff --git a/src/Z2AudioLib/Z2LinkMgr.cpp b/src/Z2AudioLib/Z2LinkMgr.cpp
index 9d4ac0ca88..d916aa34af 100644
--- a/src/Z2AudioLib/Z2LinkMgr.cpp
+++ b/src/Z2AudioLib/Z2LinkMgr.cpp
@@ -1,23 +1,21 @@
-//
-// Generated By: dol2asm
-// Translation Unit: Z2LinkMgr
-//
-
#include "Z2AudioLib/Z2LinkMgr.h"
-#include "Z2AudioLib/Z2AudioCS.h"
#include "d/d_com_inf_game.h"
+#if PLATFORM_WII || PLATFORM_SHIELD
+#include "Z2AudioLib/Z2AudioCS.h"
+#endif
+
/* 802C321C-802C3220 2BDB5C 0004+00 0/0 1/1 0/0 .text setLinkGroupInfo__14Z2CreatureLinkFUc */
void Z2CreatureLink::setLinkGroupInfo(u8) {}
/* 802C3220-802C3228 -00001 0008+00 0/0 0/0 0/0 .text setLinkHp__14Z2CreatureLinkFll */
-void Z2CreatureLink::setLinkHp(s32 i_hp, s32) {
- mLinkHp = i_hp;
+void Z2CreatureLink::setLinkHp(s32 linkHp, s32) {
+ mLinkHp = linkHp;
}
/* 802C3228-802C328C 2BDB68 0064+00 0/0 1/1 0/0 .text setLinkSwordType__14Z2CreatureLinkFll */
-void Z2CreatureLink::setLinkSwordType(s32 i_swordType, s32 param_1) {
- mLinkSwordType = i_swordType;
+void Z2CreatureLink::setLinkSwordType(s32 swordType, s32 param_1) {
+ mLinkSwordType = swordType;
mFlag3 = param_1 == 1;
if (mLinkSwordType != 0) {
@@ -31,8 +29,8 @@ void Z2CreatureLink::setLinkSwordType(s32 i_swordType, s32 param_1) {
}
/* 802C328C-802C32F0 2BDBCC 0064+00 0/0 1/1 0/0 .text setLinkShieldType__14Z2CreatureLinkFll */
-void Z2CreatureLink::setLinkShieldType(s32 i_shieldType, s32 param_1) {
- mLinkShieldType = i_shieldType;
+void Z2CreatureLink::setLinkShieldType(s32 shieldType, s32 param_1) {
+ mLinkShieldType = shieldType;
mFlag4 = param_1 == 1;
if (mLinkSwordType != 0) {
@@ -46,8 +44,8 @@ void Z2CreatureLink::setLinkShieldType(s32 i_shieldType, s32 param_1) {
}
/* 802C32F0-802C333C 2BDC30 004C+00 0/0 1/1 0/0 .text setLinkBootsType__14Z2CreatureLinkFl */
-void Z2CreatureLink::setLinkBootsType(s32 i_bootsType) {
- mLinkBootsType = i_bootsType;
+void Z2CreatureLink::setLinkBootsType(s32 bootsType) {
+ mLinkBootsType = bootsType;
if (Z2GetSceneMgr()->isSceneExist()) {
startLinkSound(Z2SE_AL_CHANGE_BOOTS, 0, -1);
@@ -102,10 +100,10 @@ void Z2CreatureLink::deleteObject() {
}
/* 802C3638-802C3710 2BDF78 00D8+00 0/0 1/1 0/0 .text init__14Z2CreatureLinkFP3VecP3VecP3Vec */
-void Z2CreatureLink::init(Vec* param_0, Vec* param_1, Vec* param_2) {
+void Z2CreatureLink::init(Vec* animePosPtr, Vec* simplePosPtr, Vec* simple2PosPtr) {
OS_REPORT("[Z2CreatureLink::init]");
- Z2Creature::init(param_0, param_1, param_2, 6, 1, 2);
+ Z2Creature::init(animePosPtr, simplePosPtr, simple2PosPtr, 6, 1, 2);
Z2GetAudience()->getLinkMic()->setPosPtr(getCurrentPos());
field_0xc1 = 0xFF;
@@ -117,7 +115,7 @@ void Z2CreatureLink::init(Vec* param_0, Vec* param_1, Vec* param_2) {
mRiding = false;
mMagnetized = false;
mUsingIronBall = false;
- field_0xb4 = *param_0;
+ field_0xb4 = *animePosPtr;
mMoveSpeed = 0;
mMovingTime = 0;
mSinkDepth = -1;
@@ -125,9 +123,9 @@ void Z2CreatureLink::init(Vec* param_0, Vec* param_1, Vec* param_2) {
/* 802C3710-802C374C 2BE050 003C+00 0/0 1/1 0/0 .text initKantera__14Z2CreatureLinkFP3Vec
*/
-void Z2CreatureLink::initKantera(Vec* i_pos) {
+void Z2CreatureLink::initKantera(Vec* posPtr) {
mKanteraState = 0;
- mKantera.init(i_pos, 2);
+ mKantera.init(posPtr, 2);
}
/* 802C374C-802C3778 2BE08C 002C+00 1/1 1/1 0/0 .text deleteKantera__14Z2CreatureLinkFv
@@ -138,16 +136,16 @@ void Z2CreatureLink::deleteKantera() {
}
/* 802C3778-802C3780 -00001 0008+00 0/0 0/0 0/0 .text setKanteraState__14Z2CreatureLinkFUc */
-void Z2CreatureLink::setKanteraState(u8 i_state) {
- mKanteraState = i_state;
+void Z2CreatureLink::setKanteraState(u8 state) {
+ mKanteraState = state;
}
/* 802C3780-802C3A64 2BE0C0 02E4+00 1/0 0/0 0/0 .text framework__14Z2CreatureLinkFUlSc */
-void Z2CreatureLink::framework(u32 param_0, s8 param_1) {
- Z2Creature::framework(param_0, param_1);
+void Z2CreatureLink::framework(u32 mapinfo, s8 reverb) {
+ Z2Creature::framework(mapinfo, reverb);
if (mKantera.isAlive()) {
- mKantera.framework(param_0, param_1);
+ mKantera.framework(mapinfo, reverb);
}
if (field_0xc1 != 0xFF) {
@@ -194,39 +192,53 @@ void Z2CreatureLink::framework(u32 param_0, s8 param_1) {
/* 802C3A64-802C3A6C -00001 0008+00 0/0 0/0 0/0 .text setSinkDepth__14Z2CreatureLinkFSc
*/
-void Z2CreatureLink::setSinkDepth(s8 i_sinkDepth) {
- mSinkDepth = i_sinkDepth;
+void Z2CreatureLink::setSinkDepth(s8 sinkDepth) {
+ mSinkDepth = sinkDepth;
}
/* 802C3A6C-802C3AEC 2BE3AC 0080+00 0/0 4/4 0/0 .text setRiding__14Z2CreatureLinkFb */
-void Z2CreatureLink::setRiding(bool i_isRiding) {
- if (mRiding != i_isRiding) {
- if (i_isRiding) {
+void Z2CreatureLink::setRiding(bool isRiding) {
+ if (mRiding != isRiding) {
+ if (isRiding) {
+ OS_REPORT("[Z2CreatureLink::setRiding] true targetVol = 0.35f\n");
Z2GetAudience()->setTargetVolume(0.35f, 0);
} else {
+ OS_REPORT("[Z2CreatureLink::setRiding] false targetVol = 0.0f\n");
Z2GetAudience()->setTargetVolume(0.0f, 0);
}
- mRiding = i_isRiding;
+ mRiding = isRiding;
}
}
/* 802C3AEC-802C3AFC 2BE42C 0010+00 0/0 5/5 0/0 .text setMagnetized__14Z2CreatureLinkFb
*/
-void Z2CreatureLink::setMagnetized(bool i_isMagnetized) {
- mMagnetized = i_isMagnetized;
+void Z2CreatureLink::setMagnetized(bool isMagnetized) {
+ mMagnetized = isMagnetized;
}
/* 802C3AFC-802C3BD4 2BE43C 00D8+00 0/0 2/2 0/0 .text setWolfEyeOpen__14Z2CreatureLinkFb
*/
-void Z2CreatureLink::setWolfEyeOpen(bool i_wolfEyeOpen) {
- mWolfEyeOpen = i_wolfEyeOpen;
+void Z2CreatureLink::setWolfEyeOpen(bool wolfEyeOpen) {
+ mWolfEyeOpen = wolfEyeOpen;
if (mWolfEyeOpen) {
+ #if PLATFORM_WII || PLATFORM_SHIELD
+ if (Z2GetSceneMgr()->isSceneExist()) {
+ Z2AudioCS::start(0x55, 0);
+ }
+ #endif
+
Z2GetSeMgr()->seStart(Z2SE_WOLF_SENSE_OPEN_START, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
Z2GetFxLineMgr()->setFxForceOff(true);
Z2GetSoundObjMgr()->setGhostEnemyState(32);
} else {
+ #if PLATFORM_WII || PLATFORM_SHIELD
+ if (Z2GetSceneMgr()->isSceneExist()) {
+ Z2AudioCS::start(0x56, 0);
+ }
+ #endif
+
Z2GetSeMgr()->seStart(Z2SE_WOLF_SENSE_CLOSE, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
Z2GetFxLineMgr()->setFxForceOff(false);
Z2GetSoundObjMgr()->setGhostEnemyState(16);
@@ -235,11 +247,10 @@ void Z2CreatureLink::setWolfEyeOpen(bool i_wolfEyeOpen) {
/* 802C3BD4-802C3E68 2BE514 0294+00 3/3 3/3 0/0 .text
* startLinkSound__14Z2CreatureLinkF10JAISoundIDUlSc */
-// stopSound seems to store to the stack twice
-Z2SoundHandlePool* Z2CreatureLink::startLinkSound(JAISoundID i_soundID, u32 param_1, s8 param_2) {
- Z2SoundHandlePool* var_r30 = startCreatureSound(i_soundID, param_1, param_2);
+Z2SoundHandlePool* Z2CreatureLink::startLinkSound(JAISoundID soundID, u32 mapinfo, s8 reverb) {
+ Z2SoundHandlePool* handle = startCreatureSound(soundID, mapinfo, reverb);
- switch (i_soundID) {
+ switch (soundID) {
case Z2SE_AL_DAMAGE_NORMAL:
case Z2SE_AL_DAMAGE_LARGE:
case Z2SE_AL_FREEZE:
@@ -249,35 +260,35 @@ Z2SoundHandlePool* Z2CreatureLink::startLinkSound(JAISoundID i_soundID, u32 para
mSoundObjAnime.stopSound(Z2SE_AL_HS_OPEN, 0);
break;
case Z2SE_AL_SINK_SAND_OUT:
- if (var_r30 != NULL && *var_r30) {
- f32 var_f31 = Z2Calc::linearTransform(mSinkDepth, 32.0f, 127.0f, 0.4f, 1.0f, false);
- f32 var_f30 = Z2Calc::linearTransform(mSinkDepth, 32.0f, 127.0f, 1.0f, 0.7f, false);
+ if (handle != NULL && *handle) {
+ f32 volume = Z2Calc::linearTransform(mSinkDepth, 32.0f, 127.0f, 0.4f, 1.0f, false);
+ f32 pitch = Z2Calc::linearTransform(mSinkDepth, 32.0f, 127.0f, 1.0f, 0.7f, false);
- (*var_r30)->getAuxiliary().moveVolume(var_f31, 0);
- (*var_r30)->getAuxiliary().movePitch(var_f30, 0);
+ (*handle)->getAuxiliary().moveVolume(volume, 0);
+ (*handle)->getAuxiliary().movePitch(pitch, 0);
}
break;
case Z2SE_AL_SINK_SNOW_OUT:
- if (var_r30 != NULL && *var_r30) {
- f32 var_f29 = Z2Calc::linearTransform(mSinkDepth, 0.0f, 23.0f, 0.5f, 1.0f, false);
- f32 var_f28 = Z2Calc::linearTransform(mSinkDepth, 0.0f, 23.0f, 1.0f, 0.7f, false);
+ if (handle != NULL && *handle) {
+ f32 volume = Z2Calc::linearTransform(mSinkDepth, 0.0f, 23.0f, 0.5f, 1.0f, false);
+ f32 pitch = Z2Calc::linearTransform(mSinkDepth, 0.0f, 23.0f, 1.0f, 0.7f, false);
- (*var_r30)->getAuxiliary().moveVolume(var_f29, 0);
- (*var_r30)->getAuxiliary().movePitch(var_f28, 0);
+ (*handle)->getAuxiliary().moveVolume(volume, 0);
+ (*handle)->getAuxiliary().movePitch(pitch, 0);
}
break;
}
- return var_r30;
+ return handle;
}
/* 802C3E68-802C4320 2BE7A8 04B8+00 1/1 3/3 0/0 .text
* startLinkSoundLevel__14Z2CreatureLinkF10JAISoundIDUlSc */
-JAISoundHandle* Z2CreatureLink::startLinkSoundLevel(JAISoundID i_soundID, u32 param_1, s8 param_2) {
- #if VERSION == VERSION_SHIELD_DEBUG
+JAISoundHandle* Z2CreatureLink::startLinkSoundLevel(JAISoundID soundID, u32 mapinfo, s8 reverb) {
+ #if PLATFORM_WII || PLATFORM_SHIELD
if (Z2GetSceneMgr()->isSceneExist()) {
int iVar3 = -1;
- switch((u32)i_soundID) {
+ switch((u32)soundID) {
case Z2SE_AL_REEL_SLOW_LOOP:
iVar3 = 0x16;
break;
@@ -296,81 +307,81 @@ JAISoundHandle* Z2CreatureLink::startLinkSoundLevel(JAISoundID i_soundID, u32 pa
}
#endif
- if (i_soundID == Z2SE_AL_LIGHTNING_SW_GLOW && (Z2GetStatusMgr()->getDemoStatus() == 2 || !Z2GetSceneMgr()->isInGame())) {
+ if (soundID == Z2SE_AL_LIGHTNING_SW_GLOW && (Z2GetStatusMgr()->getDemoStatus() == 2 || !Z2GetSceneMgr()->isInGame())) {
return NULL;
}
- Z2SoundHandlePool* temp_r3 = startCreatureSoundLevel((u32)i_soundID, param_1, param_2);
- if (temp_r3 != NULL && *temp_r3) {
- f32 var_f31 = 1.0f;
- f32 var_f30 = 1.0f;
- int var_r30 = 0;
+ Z2SoundHandlePool* handle = startCreatureSoundLevel((u32)soundID, mapinfo, reverb);
+ if (handle != NULL && *handle) {
+ f32 volume = 1.0f;
+ f32 pitch = 1.0f;
+ int volumeMoveSteps = 0;
- switch (i_soundID) {
+ switch (soundID) {
case Z2SE_AL_SINK_SAND_LEVEL:
if (mSinkDepth > 0) {
- var_f31 = Z2Calc::linearTransform(mSinkDepth, 0.0f, 127.0f, 0.4f, 1.0f, true);
- var_f30 = Z2Calc::linearTransform(mSinkDepth, 0.0f, 127.0f, 1.0f, 0.7f, true);
+ volume = Z2Calc::linearTransform(mSinkDepth, 0.0f, 127.0f, 0.4f, 1.0f, true);
+ pitch = Z2Calc::linearTransform(mSinkDepth, 0.0f, 127.0f, 1.0f, 0.7f, true);
}
break;
case Z2SE_AL_SINK_SNOW_LEVEL:
if (mSinkDepth > 0) {
- var_f31 = Z2Calc::linearTransform(mSinkDepth, 0.0f, 23.0f, 0.7f, 1.0f, true);
- var_f30 = Z2Calc::linearTransform(mSinkDepth, 0.0f, 23.0f, 1.0f, 0.7f, true);
+ volume = Z2Calc::linearTransform(mSinkDepth, 0.0f, 23.0f, 0.7f, 1.0f, true);
+ pitch = Z2Calc::linearTransform(mSinkDepth, 0.0f, 23.0f, 1.0f, 0.7f, true);
}
break;
case Z2SE_AL_SPINNER_RIDE:
- var_f30 = Z2Calc::getParamByExp(mMoveSpeed, 0.0f, 30.0f, 0.3f, 0.8f, 1.0f, Z2Calc::CURVE_SIGN_0);
+ pitch = Z2Calc::getParamByExp(mMoveSpeed, 0.0f, 30.0f, 0.3f, 0.8f, 1.0f, Z2Calc::CURVE_NEGATIVE);
if (mMoveSpeed == 0 && mMovingTime > 120) {
- var_f31 = Z2Calc::getParamByExp(mMovingTime, 180.0f, 120.0f, 0.6f, 0.0f, 0.4f, Z2Calc::CURVE_SIGN_0);
+ volume = Z2Calc::getParamByExp(mMovingTime, 180.0f, 120.0f, 0.6f, 0.0f, 0.4f, Z2Calc::CURVE_NEGATIVE);
} else {
- var_f31 = Z2Calc::getParamByExp(mMoveSpeed, 0.0f, 30.0f, 0.6f, 0.4f, 1.0f, Z2Calc::CURVE_SIGN_0);
+ volume = Z2Calc::getParamByExp(mMoveSpeed, 0.0f, 30.0f, 0.6f, 0.4f, 1.0f, Z2Calc::CURVE_NEGATIVE);
}
break;
case Z2SE_AL_SPINNER_RAIL:
- var_f30 = Z2Calc::getParamByExp(mMoveSpeed, 0.0f, 80.0f, 0.3f, 0.8f, 1.2f, Z2Calc::CURVE_SIGN_0);
+ pitch = Z2Calc::getParamByExp(mMoveSpeed, 0.0f, 80.0f, 0.3f, 0.8f, 1.2f, Z2Calc::CURVE_NEGATIVE);
break;
case Z2SE_AL_SNOBO_RIDE:
case Z2SE_AL_SNOBO_BREAK:
/* dSv_event_flag_c::F_0266 - Snowpeak Ruins - Snowpeak Ruins clear */
if (dComIfGs_isEventBit((u16)dSv_event_flag_c::saveBitLabels[266])
&& Z2GetSeqMgr()->getSubBgmID() != Z2BGM_SNOW_BOARD) {
- var_f31 = 0.0f;
- var_r30 = 0;
+ volume = 0.0f;
+ volumeMoveSteps = 0;
} else if (mMoveSpeed == 0) {
- var_f31 = 0.0f;
- var_r30 = 10;
+ volume = 0.0f;
+ volumeMoveSteps = 10;
} else {
- var_f31 = Z2Calc::getParamByExp(mMoveSpeed, 0.0f, 80.0f, 0.25f, 0.4f, 1.0f, Z2Calc::CURVE_SIGN_0);
+ volume = Z2Calc::getParamByExp(mMoveSpeed, 0.0f, 80.0f, 0.25f, 0.4f, 1.0f, Z2Calc::CURVE_NEGATIVE);
}
- var_f30 = Z2Calc::getParamByExp(mMoveSpeed, 0.0f, 80.0f, 0.3f, 0.5f, 1.1f, Z2Calc::CURVE_SIGN_0);
+ pitch = Z2Calc::getParamByExp(mMoveSpeed, 0.0f, 80.0f, 0.3f, 0.5f, 1.1f, Z2Calc::CURVE_NEGATIVE);
break;
case Z2SE_AL_LIGHTNING_SW_GLOW:
- f32 temp_f1_2 = (*temp_r3)->getAuxiliary().mTransition.mVolume.mDest;
+ f32 temp_f1_2 = (*handle)->getAuxiliary().transition_.volume_.targetValue_;
if (Z2GetStatusMgr()->getDemoStatus() == 2 && temp_f1_2 != 0.3f) {
- var_f31 = 0.3f;
- var_r30 = 45;
+ volume = 0.3f;
+ volumeMoveSteps = 45;
} else if (temp_f1_2 != 1.0f) {
- var_f31 = 1.0f;
- var_r30 = 45;
+ volume = 1.0f;
+ volumeMoveSteps = 45;
}
break;
}
- (*temp_r3)->getAuxiliary().moveVolume(var_f31, var_r30);
- (*temp_r3)->getAuxiliary().movePitch(var_f30, 0);
+ (*handle)->getAuxiliary().moveVolume(volume, volumeMoveSteps);
+ (*handle)->getAuxiliary().movePitch(pitch, 0);
}
- return temp_r3;
+ return handle;
}
/* 802C4320-802C45B0 2BEC60 0290+00 1/1 1/1 0/0 .text
* startLinkVoice__14Z2CreatureLinkF10JAISoundIDSc */
-Z2SoundHandlePool* Z2CreatureLink::startLinkVoice(JAISoundID i_soundID, s8 param_1) {
+Z2SoundHandlePool* Z2CreatureLink::startLinkVoice(JAISoundID soundID, s8 reverb) {
if (mLinkState == 1) {
- switch (i_soundID) {
+ switch (soundID) {
case Z2SE_WL_V_BREATH_WAIT:
case Z2SE_WL_V_BREATH_TIRED:
case Z2SE_WL_V_BREATH_SIT:
@@ -392,57 +403,56 @@ Z2SoundHandlePool* Z2CreatureLink::startLinkVoice(JAISoundID i_soundID, s8 param
break;
}
} else {
- if (i_soundID == Z2SE_AL_V_ATTACK_RUN) {
+ if (soundID == Z2SE_AL_V_ATTACK_RUN) {
if (field_0xc1 < 10) {
return NULL;
}
field_0xc1 = 0;
}
- if (mMarkState != 3 && Z2GetSoundObjMgr()->getEnemyNumNear() == 0
- && !Z2GetSoundObjMgr()->isForceBattle())
+ if (mMarkState != 3 && Z2GetSoundObjMgr()->getEnemyNumNear() == 0 && !Z2GetSoundObjMgr()->isForceBattle())
{
- switch (i_soundID) {
+ switch (soundID) {
case Z2SE_AL_V_ATTACK_S:
- i_soundID = Z2SE_AL_V_ATTACK_S_FREE;
+ soundID = Z2SE_AL_V_ATTACK_S_FREE;
break;
case Z2SE_AL_V_ATTACK_M:
case Z2SE_AL_V_TATE_OSHI:
- i_soundID = Z2SE_AL_V_ATTACK_M_FREE;
+ soundID = Z2SE_AL_V_ATTACK_M_FREE;
break;
case Z2SE_AL_V_ATTACK_L:
- i_soundID = Z2SE_AL_V_ATTACK_L_FREE;
+ soundID = Z2SE_AL_V_ATTACK_L_FREE;
break;
case Z2SE_AL_V_KAITEN:
- i_soundID = Z2SE_AL_V_KAITEN_FREE;
+ soundID = Z2SE_AL_V_KAITEN_FREE;
break;
case Z2SE_AL_V_BACKTEN:
case Z2SE_AL_V_SOTOMO_ROLL:
- i_soundID = Z2SE_AL_V_BACKTEN_FREE;
+ soundID = Z2SE_AL_V_BACKTEN_FREE;
break;
case Z2SE_AL_V_ATTACK_RUN:
- i_soundID = Z2SE_AL_V_ATTACK_RUN_FREE;
+ soundID = Z2SE_AL_V_ATTACK_RUN_FREE;
break;
}
} else {
- if (i_soundID == Z2SE_AL_V_JUMP_S) {
- i_soundID = Z2SE_AL_V_BACKTEN;
+ if (soundID == Z2SE_AL_V_JUMP_S) {
+ soundID = Z2SE_AL_V_BACKTEN;
}
}
if (isInWater()) {
- i_soundID = Z2SE_AL_V_UNDER_WATER;
+ soundID = Z2SE_AL_V_UNDER_WATER;
}
}
- return startCreatureVoice(i_soundID, param_1);
+ return startCreatureVoice(soundID, reverb);
}
/* 802C45B0-802C46F0 2BEEF0 0140+00 0/0 1/1 0/0 .text
* startLinkVoiceLevel__14Z2CreatureLinkF10JAISoundIDSc */
-Z2SoundHandlePool* Z2CreatureLink::startLinkVoiceLevel(JAISoundID i_soundID, s8 param_1) {
+Z2SoundHandlePool* Z2CreatureLink::startLinkVoiceLevel(JAISoundID soundID, s8 reverb) {
if (mLinkState == 1) {
- switch (i_soundID) {
+ switch (soundID) {
case Z2SE_WL_V_ROAR:
f32 volume = 0.0f;
u8 port_data = 0;
@@ -465,7 +475,7 @@ Z2SoundHandlePool* Z2CreatureLink::startLinkVoiceLevel(JAISoundID i_soundID, s8
break;
}
- Z2SoundHandlePool* handle = startCreatureVoiceLevel(Z2SE_WL_V_ROAR, param_1);
+ Z2SoundHandlePool* handle = startCreatureVoiceLevel(Z2SE_WL_V_ROAR, reverb);
if (handle != NULL && *handle) {
(*handle)->getAuxiliary().moveVolume(volume, 0);
Z2GetSoundStarter()->setPortData(handle, 8, port_data, -1);
@@ -474,23 +484,33 @@ Z2SoundHandlePool* Z2CreatureLink::startLinkVoiceLevel(JAISoundID i_soundID, s8
}
}
- return startCreatureVoiceLevel(i_soundID, param_1);
+ return startCreatureVoiceLevel(soundID, reverb);
}
/* 802C46F0-802C4784 2BF030 0094+00 0/0 2/2 0/0 .text
* startLinkSwordSound__14Z2CreatureLinkF10JAISoundIDUlSc */
-void Z2CreatureLink::startLinkSwordSound(JAISoundID i_soundID, u32 id, s8 ch) {
- u32 soundID = i_soundID;
+void Z2CreatureLink::startLinkSwordSound(JAISoundID soundID, u32 mapinfo, s8 reverb) {
+ u32 sound_ID = soundID; // fakematch
- switch (soundID) {
+ switch (sound_ID) {
case Z2SE_SWORD_POWER_COME:
- startCreatureExtraSoundLevel(soundID, id, ch);
+ #if PLATFORM_WII || PLATFORM_SHIELD
+ if (Z2GetSceneMgr()->isSceneExist()) {
+ Z2AudioCS::startLevel(0x2F, 0);
+ }
+ #endif
+ startCreatureExtraSoundLevel(sound_ID, mapinfo, reverb);
break;
case Z2SE_WOLF_POWER_COME:
- startCreatureExtraSoundLevel(soundID, id, ch);
+ #if PLATFORM_WII || PLATFORM_SHIELD
+ if (Z2GetSceneMgr()->isSceneExist()) {
+ Z2AudioCS::startLevel(0x6B, 0);
+ }
+ #endif
+ startCreatureExtraSoundLevel(sound_ID, mapinfo, reverb);
break;
default:
- startCreatureExtraSound(soundID, id, ch);
+ startCreatureExtraSound(sound_ID, mapinfo, reverb);
break;
}
}
@@ -515,30 +535,33 @@ Z2SoundHandlePool* Z2CreatureLink::startCollisionSE(u32 hitID, u32 mapinfo) {
/* 802C4814-802C48D8 2BF154 00C4+00 0/0 4/4 2/2 .text
* startHitItemSE__14Z2CreatureLinkFUlUlP14Z2SoundObjBasef */
-Z2SoundHandlePool* Z2CreatureLink::startHitItemSE(u32 i_soundID, u32 param_1,
- Z2SoundObjBase* param_2, f32 speed) {
- if (param_2 == NULL) {
- param_2 = &mSoundObjSimple2;
+Z2SoundHandlePool* Z2CreatureLink::startHitItemSE(u32 soundID, u32 mapinfo, Z2SoundObjBase* other, f32 speed) {
+ if (other == NULL) {
+ other = &mSoundObjSimple2;
}
- if (i_soundID == Z2SE_HIT_SHIELD_ATTACK) {
- return mSoundObjAnime.startCollisionSE(i_soundID, param_1, NULL);
+ if (soundID == Z2SE_HIT_SHIELD_ATTACK) {
+ return mSoundObjAnime.startCollisionSE(soundID, mapinfo, NULL);
}
- Z2SoundHandlePool* handle = param_2->startCollisionSE(i_soundID, param_1, NULL);
+ Z2SoundHandlePool* handle = other->startCollisionSE(soundID, mapinfo, NULL);
if (speed >= 0.0f && handle != NULL && *handle) {
+ OS_REPORT("[Z2CreatureLink::startHitItemSE] speed:%.3f\n", speed);
if (speed >= 100.0f) {
speed = 100.0f;
}
- (*handle)->getAuxiliary().moveVolume(speed / 100.0f, 0);
+
+ f32 volume = speed / 100.0f;
+ (*handle)->getAuxiliary().moveVolume(volume, 0);
}
+
return handle;
}
/* 802C48D8-802C48E8 2BF218 0010+00 0/0 1/1 0/0 .text setResumeAttack__14Z2CreatureLinkFb
*/
-void Z2CreatureLink::setResumeAttack(bool i_resumeAttack) {
- mResumeAttack = i_resumeAttack;
+void Z2CreatureLink::setResumeAttack(bool resumeAttack) {
+ mResumeAttack = resumeAttack;
}
/* 802C48E8-802C4928 2BF228 0040+00 1/1 0/0 0/0 .text __ct__18Z2LinkSoundStarterFv */
@@ -546,47 +569,47 @@ Z2LinkSoundStarter::Z2LinkSoundStarter() : Z2SoundStarter(false) {}
/* 802C4928-802C4FFC 2BF268 06D4+00 2/0 0/0 0/0 .text
* startSound__18Z2LinkSoundStarterF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3<f>UlfffffUl */
-bool Z2LinkSoundStarter::startSound(JAISoundID i_soundID, JAISoundHandle* param_1,
- JGeometry::TVec3<f32> const* param_2, u32 param_3,
- f32 param_4, f32 param_5, f32 param_6, f32 param_7,
- f32 param_8, u32 param_9) {
+bool Z2LinkSoundStarter::startSound(JAISoundID soundID, JAISoundHandle* handle,
+ const JGeometry::TVec3<f32>* posPtr, u32 mapinfo,
+ f32 fxMix, f32 pitch, f32 volume, f32 pan,
+ f32 dolby, u32 moveSteps) {
bool bVar2 = false;
bool bVar3 = false;
if (Z2GetLink()->isInWater() && Z2GetStatusMgr()->getCameraInWaterDepthRatio() > 0.0f) {
- switch (i_soundID) {
+ switch (soundID) {
case Z2SE_AL_SWIM:
case Z2SE_AL_DIVE_SWIM:
- i_soundID = Z2SE_AL_SWIM_UNDERWATER;
+ soundID = Z2SE_AL_SWIM_UNDERWATER;
break;
case Z2SE_AL_SWORD_SWING_S:
case Z2SE_AL_FINISH_SWING1:
case Z2SE_AL_FINISH_SWING2:
case Z2SE_AL_WAIT_SWORD_SWING:
- i_soundID = Z2SE_AL_WATER_STROKE_S;
+ soundID = Z2SE_AL_WATER_STROKE_S;
break;
case Z2SE_AL_SWORD_SWING_L:
- i_soundID = Z2SE_AL_WATER_STROKE_L;
+ soundID = Z2SE_AL_WATER_STROKE_L;
break;
case Z2SE_AL_SWORD_THRUST:
- i_soundID = Z2SE_AL_WATER_STROKE_FAST;
+ soundID = Z2SE_AL_WATER_STROKE_FAST;
break;
case Z2SE_AL_KAITENGIRI:
- i_soundID = Z2SE_AL_WATER_STROKE_CIRCLE;
+ soundID = Z2SE_AL_WATER_STROKE_CIRCLE;
break;
}
}
- if (i_soundID.mId.mBytes.b1 == 3 && param_3 > 26) {
- if (param_3 == 44) {
- param_3 = 23;
+ if (soundID.id_.info.type.parts.groupID == 3 && mapinfo > 26) {
+ if (mapinfo == 44) {
+ mapinfo = 23;
} else {
JUT_WARN_DEVICE(929, 1, "%s", "mapinfo > 26\n");
- param_3 = 0;
+ mapinfo = 0;
}
}
- switch (i_soundID) {
+ switch (soundID) {
case Z2SE_AL_INTO_WATER:
case Z2SE_AL_DIVE_INTO_WATER:
case Z2SE_WL_INTO_WATER:
@@ -602,9 +625,9 @@ bool Z2LinkSoundStarter::startSound(JAISoundID i_soundID, JAISoundHandle* param_
case Z2SE_GORON_FOOTNOTE:
case Z2SE_FN_GOB_JUMP:
if (Z2GetLink()->mLinkBootsType == 1) {
- i_soundID = Z2SE_FN_WALK_HEAVY;
+ soundID = Z2SE_FN_WALK_HEAVY;
if (Z2GetLink()->mMagnetized) {
- param_3 = 127;
+ mapinfo = 127;
}
}
bVar3 = true;
@@ -613,9 +636,9 @@ bool Z2LinkSoundStarter::startSound(JAISoundID i_soundID, JAISoundHandle* param_
bVar2 = true;
bVar3 = true;
if (Z2GetLink()->mLinkBootsType == 1) {
- i_soundID = Z2SE_FN_JUMP_HEAVY;
+ soundID = Z2SE_FN_JUMP_HEAVY;
if (Z2GetLink()->mMagnetized) {
- param_3 = 127;
+ mapinfo = 127;
}
}
if (Z2GetLink()->mSoundObjSimple1.getHandleSoundID(Z2SE_AL_V_FALL) != NULL) {
@@ -640,7 +663,7 @@ bool Z2LinkSoundStarter::startSound(JAISoundID i_soundID, JAISoundHandle* param_
}
if (Z2GetLink()->mSinkDepth > 0) {
- switch (i_soundID) {
+ switch (soundID) {
case Z2SE_FN_WALK_DUMMY:
case Z2SE_FN_JUMP_DUMMY:
case Z2SE_FN_BOUND_DUMMY:
@@ -651,32 +674,32 @@ bool Z2LinkSoundStarter::startSound(JAISoundID i_soundID, JAISoundHandle* param_
case Z2SE_WL_WALK_R_DUMMY:
case Z2SE_WL_RUN_L_DUMMY:
case Z2SE_WL_RUN_R_DUMMY:
- if (param_3 == 3) {
- param_5 *= Z2Calc::linearTransform(Z2GetLink()->mSinkDepth,
+ if (mapinfo == 3) {
+ pitch *= Z2Calc::linearTransform(Z2GetLink()->mSinkDepth,
0.0f, 127.0f, 1.0f, 0.5f, true);
- } else if (param_3 == 25) {
- param_5 *= Z2Calc::linearTransform(Z2GetLink()->mSinkDepth,
+ } else if (mapinfo == 25) {
+ pitch *= Z2Calc::linearTransform(Z2GetLink()->mSinkDepth,
0.0f, 23.0f, 1.0f, 0.7f, true);
}
break;
}
}
- bool ret = Z2SoundStarter::startSound(i_soundID, param_1, param_2, param_3, param_4, param_5,
- param_6, param_7, param_8, param_9);
+ bool ret = Z2SoundStarter::startSound(soundID, handle, posPtr, mapinfo, fxMix, pitch,
+ volume, pan, dolby, moveSteps);
if (bVar2 && Z2GetSceneMgr()->getDemoSeWaveNum() != 114) {
if (Z2GetLink()->mFlag5) {
- Z2GetLink()->startLinkSound(Z2SE_AL_SWORD_SHIELD_ADD, 0, param_4 * 127.0f);
+ Z2GetLink()->startLinkSound(Z2SE_AL_SWORD_SHIELD_ADD, 0, fxMix * 127.0f);
}
if (Z2GetLink()->mUsingIronBall) {
- Z2GetLink()->startLinkSound(Z2SE_AL_IB_CHAIN_ADD, 0, param_4 * 127.0f);
+ Z2GetLink()->startLinkSound(Z2SE_AL_IB_CHAIN_ADD, 0, fxMix * 127.0f);
}
if (Z2GetLink()->mKanteraState != 0) {
Z2SoundHandlePool* handle =
- Z2GetLink()->mKantera.startSound(Z2SE_AL_KANTERA_SWING_ADD, 0, param_4 * 127.0f);
+ Z2GetLink()->mKantera.startSound(Z2SE_AL_KANTERA_SWING_ADD, 0, fxMix * 127.0f);
if (Z2GetLink()->mKanteraState == 2 && handle != NULL && *handle) {
(*handle)->getAuxiliary().moveVolume(0.6f, 0);
(*handle)->getAuxiliary().movePitch(0.9f, 0);
@@ -686,9 +709,9 @@ bool Z2LinkSoundStarter::startSound(JAISoundID i_soundID, JAISoundHandle* param_
if (bVar3) {
if (Z2GetLink()->getLinkState() == 4) {
- Z2GetLink()->startLinkSound(Z2SE_FN_ARMER_LIGHT_ADD, 0, param_4 * 127.0f);
+ Z2GetLink()->startLinkSound(Z2SE_FN_ARMER_LIGHT_ADD, 0, fxMix * 127.0f);
} else if (Z2GetLink()->getLinkState() == 5) {
- Z2GetLink()->startLinkSound(Z2SE_FN_ARMER_HEAVY_ADD, 0, param_4 * 127.0f);
+ Z2GetLink()->startLinkSound(Z2SE_FN_ARMER_HEAVY_ADD, 0, fxMix * 127.0f);
}
}
@@ -713,8 +736,8 @@ void Z2CreatureRide::deleteObject() {
}
/* 802C520C-802C522C 2BFB4C 0020+00 0/0 0/0 3/3 .text init__14Z2CreatureRideFP3VecP3VecUcUc */
-void Z2CreatureRide::init(Vec* param_0, Vec* param_1, u8 param_2, u8 param_3) {
- Z2Creature::init(param_0, param_1, param_2, param_3);
+void Z2CreatureRide::init(Vec* animePosPtr, Vec* simplePosPtr, u8 animeHandleNum, u8 simpleHandleNum) {
+ Z2Creature::init(animePosPtr, simplePosPtr, animeHandleNum, simpleHandleNum);
}
/* 802C522C-802C5234 -00001 0008+00 0/0 0/0 0/0 .text setLinkRiding__14Z2CreatureRideFb
@@ -727,20 +750,21 @@ void Z2CreatureRide::setLinkRiding(bool isRiding) {
*/
Z2RideSoundStarter::Z2RideSoundStarter(Z2CreatureRide* ride) : Z2SoundStarter(false) {
mRide = ride;
+ JUT_ASSERT(1294, ride);
}
/* 802C5284-802C54B8 2BFBC4 0234+00 2/0 0/0 0/0 .text
* startSound__18Z2RideSoundStarterF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3<f>UlfffffUl */
-bool Z2RideSoundStarter::startSound(JAISoundID i_soundID, JAISoundHandle* param_1,
- JGeometry::TVec3<f32> const* param_2, u32 param_3,
- f32 param_4, f32 param_5, f32 param_6, f32 param_7,
- f32 param_8, u32 param_9) {
+bool Z2RideSoundStarter::startSound(JAISoundID soundID, JAISoundHandle* handle,
+ const JGeometry::TVec3<f32>* posPtr, u32 mapinfo,
+ f32 fxMix, f32 pitch, f32 volume, f32 pan,
+ f32 dolby, u32 moveSteps) {
if (!Z2GetSceneMgr()->isInGame()) {
return false;
}
u8 uVar3 = 0;
- switch (i_soundID) {
+ switch (soundID) {
case Z2SE_HS_WALK_L_DUMMY:
case Z2SE_HS_WALK_R_DUMMY:
case Z2SE_HS_TROT_L_DUMMY:
@@ -755,17 +779,17 @@ bool Z2RideSoundStarter::startSound(JAISoundID i_soundID, JAISoundHandle* param_
break;
}
- bool ret = Z2SoundStarter::startSound((u32)i_soundID, param_1, param_2, param_3, param_4, param_5,
- param_6, param_7, param_8, param_9);
+ bool ret = Z2SoundStarter::startSound((u32)soundID, handle, posPtr, mapinfo, fxMix, pitch,
+ volume, pan, dolby, moveSteps);
if (mRide->isLinkRiding() && uVar3 != 0) {
if (Z2GetLink()->mFlag5) {
- Z2GetLink()->startLinkSound(Z2SE_AL_SWORD_SHIELD_ADD, 0, param_4 * 127.0f);
+ Z2GetLink()->startLinkSound(Z2SE_AL_SWORD_SHIELD_ADD, 0, fxMix * 127.0f);
}
if (Z2GetLink()->mKanteraState != 0) {
Z2SoundHandlePool* handle =
- Z2GetLink()->mKantera.startSound(Z2SE_AL_KANTERA_SWING_ADD, 0, param_4 * 127.0f);
+ Z2GetLink()->mKantera.startSound(Z2SE_AL_KANTERA_SWING_ADD, 0, fxMix * 127.0f);
if (Z2GetLink()->mKanteraState == 2 && handle != NULL && *handle) {
(*handle)->getAuxiliary().moveVolume(0.6f, 0);
(*handle)->getAuxiliary().movePitch(0.9f, 0);
@@ -774,11 +798,10 @@ bool Z2RideSoundStarter::startSound(JAISoundID i_soundID, JAISoundHandle* param_
switch (uVar3) {
case 1:
- Z2GetLink()->startLinkSound(Z2SE_AL_HARNESS_ADD_HS, 0, param_4 * 127.0f);
+ Z2GetLink()->startLinkSound(Z2SE_AL_HARNESS_ADD_HS, 0, fxMix * 127.0f);
break;
-
case 2:
- Z2GetLink()->startLinkSound(Z2SE_AL_HARNESS_ADD_WB, 0, param_4 * 127.0f);
+ Z2GetLink()->startLinkSound(Z2SE_AL_HARNESS_ADD_WB, 0, fxMix * 127.0f);
break;
}
}
@@ -792,8 +815,8 @@ Z2SoundObjCoach::Z2SoundObjCoach() {
}
/* 802C54FC-802C551C 2BFE3C 0020+00 1/0 0/0 0/0 .text init__15Z2SoundObjCoachFP3VecUc */
-void Z2SoundObjCoach::init(Vec* i_soundPos, u8 i_numHandles) {
- Z2SoundObjBase::init(i_soundPos, i_numHandles);
+void Z2SoundObjCoach::init(Vec* posPtr, u8 handleNum) {
+ Z2SoundObjBase::init(posPtr, handleNum);
}
/* 802C551C-802C56C0 2BFE5C 01A4+00 0/0 0/0 1/1 .text startWheelSound__15Z2SoundObjCoachFf */
@@ -805,20 +828,20 @@ Z2SoundHandlePool* Z2SoundObjCoach::startWheelSound(f32 param_0) {
handle = startLevelSound(Z2SE_COACH_WHEEL_ROLL_A, 0, -1);
if (handle != NULL && *handle) {
f32 pitch = Z2Calc::getParamByExp(param_0, 0.0f, 35.0f, 0.25f, 0.88f, 1.25f,
- Z2Calc::CURVE_SIGN_1);
+ Z2Calc::CURVE_POSITIVE);
(*handle)->getAuxiliary().movePitch(pitch, 0);
f32 volume = Z2Calc::getParamByExp(param_0, 0.0f, 35.0f, 0.3f, 0.7f, 1.0f,
- Z2Calc::CURVE_SIGN_1);
+ Z2Calc::CURVE_POSITIVE);
(*handle)->getAuxiliary().moveVolume(volume, 0);
}
} else {
handle = startLevelSound(Z2SE_COACH_WHEEL_ROLL_B, 0, -1);
if (handle != NULL && *handle) {
f32 pitch = Z2Calc::getParamByExp(param_0, 35.0f, 50.0f, 0.25f, 0.88f, 1.25f,
- Z2Calc::CURVE_SIGN_1);
+ Z2Calc::CURVE_POSITIVE);
(*handle)->getAuxiliary().movePitch(pitch, 0);
f32 volume = Z2Calc::getParamByExp(param_0, 35.0f, 50.0f, 0.3f, 0.8f, 1.0f,
- Z2Calc::CURVE_SIGN_1);
+ Z2Calc::CURVE_POSITIVE);
(*handle)->getAuxiliary().moveVolume(volume, 0);
}
}
@@ -834,10 +857,10 @@ Z2SoundHandlePool* Z2SoundObjCoach::startFireSound(u16 param_0) {
if (handle != NULL && *handle) {
f32 pitch = Z2Calc::getParamByExp(param_0, 0.0f, 1500.0f, 0.2f, 0.85f, 1.25f,
- Z2Calc::CURVE_SIGN_1);
+ Z2Calc::CURVE_POSITIVE);
(*handle)->getAuxiliary().movePitch(pitch, 0);
f32 volume = Z2Calc::getParamByExp(param_0, 0.0f, 1500.0f, 0.2f, 0.6f, 1.0f,
- Z2Calc::CURVE_SIGN_1);
+ Z2Calc::CURVE_POSITIVE);
(*handle)->getAuxiliary().moveVolume(volume, 0);
}
@@ -846,15 +869,15 @@ Z2SoundHandlePool* Z2SoundObjCoach::startFireSound(u16 param_0) {
/* 802C57C0-802C588C 2C0100 00CC+00 1/0 0/0 0/0 .text
* startSound__15Z2SoundObjCoachF10JAISoundIDUlSc */
-Z2SoundHandlePool* Z2SoundObjCoach::startSound(JAISoundID i_soundID, u32 param_1, s8 param_2) {
- Z2SoundHandlePool* handle = Z2SoundObjBase::startSound(i_soundID, param_1, param_2);
+Z2SoundHandlePool* Z2SoundObjCoach::startSound(JAISoundID soundID, u32 mapinfo, s8 reverb) {
+ Z2SoundHandlePool* handle = Z2SoundObjBase::startSound(soundID, mapinfo, reverb);
- if (handle != NULL && *handle && i_soundID == Z2SE_COACH_SHAKE) {
+ if (handle != NULL && *handle && soundID == Z2SE_COACH_SHAKE) {
f32 pitch = Z2Calc::getParamByExp(field_0x20, 0.0f, 50.0f, 0.2f, 0.85f, 1.25f,
- Z2Calc::CURVE_SIGN_1);
+ Z2Calc::CURVE_POSITIVE);
(*handle)->getAuxiliary().movePitch(pitch, 0);
f32 volume = Z2Calc::getParamByExp(field_0x20, 0.0f, 50.0f, 0.2f, 0.8f, 1.0f,
- Z2Calc::CURVE_SIGN_1);
+ Z2Calc::CURVE_POSITIVE);
(*handle)->getAuxiliary().moveVolume(volume, 0);
}
diff --git a/src/Z2AudioLib/Z2Param.cpp b/src/Z2AudioLib/Z2Param.cpp
index a720929182..5b71d16a38 100644
--- a/src/Z2AudioLib/Z2Param.cpp
+++ b/src/Z2AudioLib/Z2Param.cpp
@@ -5,7 +5,6 @@
#include "Z2AudioLib/Z2Param.h"
-/* ############################################################################################## */
/* 804507D8-804507DC 000258 0004+00 0/0 4/4 0/0 .sdata DISTANCE_MAX__7Z2Param */
f32 Z2Param::DISTANCE_MAX = 2000.0f;
@@ -123,28 +122,31 @@ f32 Z2Param::VOL_SE_OBJECT_PAUSING = 72.0f / 127.0f;
f32 Z2Param::VOL_SE_ATMOSPHERE_PAUSING = 72.0f / 127.0f;
/* 80450860-80450864 -00001 0004+00 0/0 15/15 0/0 .sdata None */
-u8 struct_80450860 = 0x21;
-u8 struct_80450861 = 0x3C;
-u8 struct_80450862 = 0x3C;
-u8 struct_80450863 = 0x1E;
+u8 Z2Param::SCENE_CHANGE_BGM_FADEOUT_TIME = 33;
+
+u8 Z2Param::BGM_CROSS_FADEIN_TIME = 60;
+
+u8 Z2Param::BGM_CROSS_FADEOUT_TIME = 60;
+
+u8 Z2Param::BATTLE_BGM_WAIT_TIME = 30;
/* 80450864-80450868 -00001 0004+00 0/0 2/2 0/0 .sdata None */
-#pragma push
-#pragma force_active on
-u8 struct_80450864 = 0x14;
-u8 struct_80450865 = 0x1E;
-u8 struct_80450866 = 0x0A;
-u8 struct_80450867 = 0x1E;
-#pragma pop
+u8 Z2Param::FOUND_TRACK_FI_TIME = 20;
+
+u8 Z2Param::FOUND_TRACK_FO_TIME = 30;
+
+u8 Z2Param::CLOSE_BATTLE_TRACK_FI_TIME = 10;
+
+u8 Z2Param::CLOSE_BATTLE_TRACK_FO_TIME = 30;
/* 80450868-8045086C -00001 0004+00 0/0 5/5 0/0 .sdata None */
-#pragma push
-#pragma force_active on
-u8 struct_80450868 = 0x01;
-u8 struct_80450869 = 0x0A;
-u8 struct_8045086A = 0x1E;
-u8 struct_8045086B = 0x14;
-#pragma pop
+u8 Z2Param::ENDING_BLOW_VOL_DOWN_TIME = 1;
+
+u8 Z2Param::ENDING_BLOW_VOL_LOWER_TIME = 10;
+
+u8 Z2Param::ENDING_BLOW_VOL_LOWER_RECOVER_TIME = 30;
+
+u8 Z2Param::ENDING_BLOW_MIN_FINISH_TIME = 20;
/* 8045086C-80450870 0002EC 0004+00 0/0 3/3 0/0 .sdata None */
u8 data_8045086C = 1;
@@ -158,12 +160,10 @@ f32 Z2Param::ENEMY_LASTHIT_MUTE_VOLUME;
/* 80451340-80451348 -00001 0008+00 0/0 2/2 0/0 .sbss None */
/* 80451340 0001+00 data_80451340 None */
+u8 Z2Param::DARK_SE_FILTER_ON;
+
/* 80451341 0001+00 data_80451341 None */
+u8 Z2Param::DARK_SE_LOW_PASS_FILTER_SETTING;
+
/* 80451342 0006+00 data_80451342 None */
-#pragma push
-#pragma force_active on
-u8 struct_80451340;
-u8 struct_80451341;
-u8 struct_80451342;
-u8 pad_80451344[4];
-#pragma pop
+u8 Z2Param::SYSTEM_SE_USE_DARK_SE_SETTING;
diff --git a/src/Z2AudioLib/Z2SceneMgr.cpp b/src/Z2AudioLib/Z2SceneMgr.cpp
index 4b07ca8cce..14751161b0 100644
--- a/src/Z2AudioLib/Z2SceneMgr.cpp
+++ b/src/Z2AudioLib/Z2SceneMgr.cpp
@@ -1,8 +1,3 @@
-//
-// Generated By: dol2asm
-// Translation Unit: Z2SceneMgr
-//
-
#include "JSystem/JAudio2/JASBasicWaveBank.h"
#include "JSystem/JAudio2/JAUSectionHeap.h"
#include "JSystem/JAudio2/JAUSoundTable.h"
@@ -16,7 +11,7 @@
#include "d/d_com_inf_game.h"
/* 802B6840-802B68B0 2B1180 0070+00 0/0 1/1 0/0 .text __ct__10Z2SceneMgrFv */
-Z2SceneMgr::Z2SceneMgr(void) : JASGlobalInstance<Z2SceneMgr>(this) {
+Z2SceneMgr::Z2SceneMgr() : JASGlobalInstance<Z2SceneMgr>(true) {
sceneNum = -1;
BGM_ID = -1;
roomNum = -1;
@@ -36,14 +31,16 @@ Z2SceneMgr::Z2SceneMgr(void) : JASGlobalInstance<Z2SceneMgr>(this) {
field_0x1b = false;
sceneExist = 0;
inGame = 0;
- inDarkness = false;
+ inDarkness_ = false;
load1stWait = 0;
}
/* 802B68B0-802B68E0 2B11F0 0030+00 0/0 1/1 0/0 .text setInDarkness__10Z2SceneMgrFb */
-void Z2SceneMgr::setInDarkness(bool param_0) {
- inDarkness = param_0;
- if (!param_0) {
+void Z2SceneMgr::setInDarkness(bool inDarkness) {
+ OS_REPORT("[Z2SceneMgr::setInDarkness] inDarkness = %d\n", inDarkness);
+
+ inDarkness_ = inDarkness;
+ if (!inDarkness) {
Z2GetSoundMgr()->resetFilterAll();
}
}
@@ -133,14 +130,14 @@ static char* sSpotName[81] = {
};
/* 802B68E0-802B697C 2B1220 009C+00 3/3 2/2 2/2 .text setSceneExist__10Z2SceneMgrFb */
-void Z2SceneMgr::setSceneExist(bool param_1) {
- sceneExist = param_1;
+void Z2SceneMgr::setSceneExist(bool isSceneExist) {
+ sceneExist = isSceneExist;
timer = 0;
JAISeMgr* seMgr = Z2GetSoundMgr()->getSeMgr();
- if (param_1) {
- inGame = 1;
+ if (isSceneExist) {
+ inGame = true;
if (requestDemoWave == 0x85) {
seMgr->getCategory(9)->getParams()->moveVolume(0.0f, 0);
@@ -155,7 +152,9 @@ void Z2SceneMgr::setSceneExist(bool param_1) {
}
/* 802B697C-802B6A18 2B12BC 009C+00 0/0 1/1 0/0 .text setFadeOutStart__10Z2SceneMgrFUc */
-void Z2SceneMgr::setFadeOutStart(u8 param_0) {
+void Z2SceneMgr::setFadeOutStart(u8 fadeType) {
+ OS_REPORT("[Z2SceneMgr::setFadeOutStart] fadeType = %d\n", fadeType);
+
setSceneExist(false);
Z2GetSeqMgr()->bgmAllMute(33, 3.0f / 10.0f);
Z2GetSeMgr()->seMoveVolumeAll(0.0f, 33);
@@ -165,43 +164,51 @@ void Z2SceneMgr::setFadeOutStart(u8 param_0) {
}
/* 802B6A18-802B6AF8 2B1358 00E0+00 0/0 1/1 0/0 .text setFadeInStart__10Z2SceneMgrFUc */
-void Z2SceneMgr::setFadeInStart(u8 param_0) {
+void Z2SceneMgr::setFadeInStart(u8 fadeType) {
+ OS_REPORT("[Z2SceneMgr::setFadeInStart] fadeType = %d\n", fadeType);
+
if (requestDemoWave == 0x7f) {
Z2GetSeMgr()->seMoveVolumeAll(0.0f, 0);
} else {
Z2GetSeMgr()->seMoveVolumeAll(1.0f, 33);
if (requestDemoWave == 0x85) {
- JAISeMgr* seMgr = Z2GetSoundMgr()->getSeMgr();
- seMgr->getCategory(9)->getParams()->moveVolume(0.0f, 0);
+ Z2GetSoundMgr()->getSeMgr()->getCategory(9)->getParams()->moveVolume(0.0f, 0);
}
}
+
Z2GetSeqMgr()->setTwilightGateVol(1.0f);
Z2GetStatusMgr()->menuOut();
if (!field_0x1a) {
- Z2GetSeqMgr()->bgmAllMute(33, 1.0f);
+ Z2GetSeqMgr()->bgmAllUnMute(33);
}
inGame = true;
}
/* 802B6AF8-802B995C 2B1438 2E64+00 8/0 1/1 0/0 .text setSceneName__10Z2SceneMgrFPcll */
-void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
+// NONMATCHING JSULink<JAIStream>::getNext() inlining
+void Z2SceneMgr::setSceneName(char* spot, s32 room, s32 layer) {
+ OS_REPORT("[Z2SceneMgr::setSceneName] spot = %s, room = %d, layer = %d\n", spot, room, layer);
JAISoundID bgm_id = -1;
JAISound* sound;
- int spot = 0;
+
+ int spotNo = 0;
+
u8 se_wave1 = 0;
u8 se_wave2 = 0;
u8 bgm_wave1 = 0;
u8 bgm_wave2 = 0;
u8 demo_wave = 0;
+
bool bVar6 = false;
bool height_vol_mod = false;
bool field_bgm_play = false;
bool time_proc_vol_mod = false;
bool bVar2 = false;
field_0x1b = false;
+
f32 fVar1 = -1.0f;
Z2GetSeqMgr()->resetBattleBgmParams();
@@ -210,23 +217,25 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
Z2GetSeMgr()->resetCrowdSize();
Z2GetSoundObjMgr()->setGhostEnemyState(0);
Z2GetSeMgr()->resetModY();
+
if (Z2GetStatusMgr()->getDemoStatus() == 8) {
Z2GetStatusMgr()->setDemoName("force_end");
}
- if (spotName != NULL) {
- for (spot = 0; spot < ARRAY_SIZE(sSpotName); spot++) {
- if (!strcmp(spotName, sSpotName[spot])) {
+ if (spot != NULL) {
+ for (spotNo = 0; spotNo < ARRAY_SIZE(sSpotName); spotNo++) {
+ if (strcmp(spot, sSpotName[spotNo]) == 0) {
break;
}
}
- if (spot == ARRAY_SIZE(sSpotName)) {
- spot = SPOT_NONE;
+
+ if (spotNo == ARRAY_SIZE(sSpotName)) {
+ spotNo = Z2SCENE_NONE;
}
}
- switch (spot) {
- case SPOT_ENEMY_TEST:
+ switch (spotNo) {
+ case Z2SCENE_ENEMY_TEST:
bgm_wave2 = 2;
if (room < 30) {
se_wave1 = 0x8a;
@@ -234,8 +243,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
se_wave1 = 0x8b;
}
break;
-
- case SPOT_ORDON_RANCH:
+ case Z2SCENE_ORDON_RANCH:
if (layer == 1) {
if (dComIfGs_isSaveSwitch(0x67)) {
bgm_id = Z2BGM_TOAL_NIGHT;
@@ -251,14 +259,15 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
bgm_wave2 = 2;
time_proc_vol_mod = true;
}
+
se_wave1 = 0x26;
se_wave2 = 0x25;
field_0x1b = true;
break;
-
- case SPOT_ORDON_VILLAGE:
+ case Z2SCENE_ORDON_VILLAGE:
field_0x1b = true;
se_wave1 = 0x26;
+
if (room == 0) {
se_wave2 = 0x27;
switch (layer) {
@@ -336,9 +345,9 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
}
}
break;
-
- case SPOT_ORDON_INTERIOR:
+ case Z2SCENE_ORDON_INTERIOR:
se_wave1 = 0x26;
+
switch (room) {
case 0:
bgm_id = Z2BGM_INDOOR;
@@ -417,10 +426,10 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
}
field_0x1b = true;
break;
-
- case SPOT_ORDON_SPRING:
+ case Z2SCENE_ORDON_SPRING:
se_wave1 = 0x26;
se_wave2 = 0x2d;
+
switch (layer) {
case 4:
field_0x1b = false;
@@ -469,10 +478,9 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
break;
}
break;
-
- case SPOT_TWILIGHT_HYRULE_CASTLE:
+ case Z2SCENE_TWILIGHT_HYRULE_CASTLE:
se_wave1 = 0x2e;
- if (inDarkness) {
+ if (inDarkness_) {
se_wave2 = 0x30;
if (room == 0) {
if (layer == 11) {
@@ -506,18 +514,16 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
se_wave2 = 0x2f;
}
break;
-
- case SPOT_CASTLE_THRONE_ROOM:
+ case Z2SCENE_CASTLE_THRONE_ROOM:
if (layer == 8) {
demo_wave = 0x68;
} else if (layer == 9) {
demo_wave = 0x7f;
}
break;
-
- case SPOT_CORO_SHOP:
+ case Z2SCENE_CORO_SHOP:
se_wave1 = 0x31;
- if (inDarkness) {
+ if (inDarkness_) {
bgm_id = Z2BGM_TWILIGHT;
bgm_wave1 = 0xe;
se_wave2 = 0x33;
@@ -535,15 +541,14 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
}
}
break;
-
- case SPOT_FARON_WOODS:
+ case Z2SCENE_FARON_WOODS:
se_wave1 = 0x31;
if (layer == 11) {
demo_wave = 0x6c;
- inDarkness = false;
+ inDarkness_ = false;
} else if (layer == 9) {
demo_wave = 0x6a;
- } else if (inDarkness) {
+ } else if (inDarkness_) {
if (layer == 7) {
demo_wave = 0x78;
} else if (layer == 8) {
@@ -584,7 +589,8 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
bgm_id = Z2BGM_FILONE_FOREST;
bgm_wave1 = 0xf;
time_proc_vol_mod = true;
- if (room == 0xe) {
+
+ if (room == 14) {
Z2GetSeqMgr()->changeBgmStatus(1);
} else {
Z2GetSeqMgr()->changeBgmStatus(0);
@@ -593,13 +599,12 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
}
}
break;
-
- case SPOT_KAKARIKO_VILLAGE:
+ case Z2SCENE_KAKARIKO_VILLAGE:
se_wave1 = 0x34;
if (layer == 8) {
demo_wave = 0x6e;
- inDarkness = false;
- } else if (inDarkness) {
+ inDarkness_ = false;
+ } else if (inDarkness_) {
bgm_id = Z2BGM_TWILIGHT;
bgm_wave1 = 0xe;
se_wave2 = 0x36;
@@ -655,10 +660,9 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
}
}
break;
-
- case SPOT_KAKARIKO_INTERIOR:
+ case Z2SCENE_KAKARIKO_INTERIOR:
se_wave1 = 0x34;
- if (inDarkness) {
+ if (inDarkness_) {
se_wave2 = 0x36;
if (room == 0 && layer == 8) {
demo_wave = 0x6d;
@@ -722,10 +726,9 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
se_wave2 = 0x86;
}
break;
-
- case SPOT_SANCTUARY_BASEMENT:
+ case Z2SCENE_SANCTUARY_BASEMENT:
se_wave1 = 0x34;
- if (inDarkness) {
+ if (inDarkness_) {
bgm_id = Z2BGM_TWILIGHT;
bgm_wave1 = 0xe;
se_wave2 = 0x36;
@@ -736,10 +739,9 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
Z2GetSeqMgr()->muteSceneBgm(30, 0.5f);
}
break;
-
- case SPOT_KAKARIKO_GRAVEYARD:
+ case Z2SCENE_KAKARIKO_GRAVEYARD:
se_wave1 = 0x34;
- if (inDarkness) {
+ if (inDarkness_) {
bgm_id = Z2BGM_TWILIGHT;
bgm_wave1 = 0xe;
se_wave2 = 0x36;
@@ -757,14 +759,13 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
se_wave2 = 0x37;
}
break;
-
- case SPOT_DEATH_MOUNTAIN:
+ case Z2SCENE_DEATH_MOUNTAIN:
se_wave1 = 0x34;
if (layer == 8) {
demo_wave = 0x7f;
se_wave1 = 0;
se_wave2 = 0;
- } else if (inDarkness) {
+ } else if (inDarkness_) {
bgm_id = Z2BGM_TWILIGHT;
bgm_wave1 = 0xe;
se_wave2 = 0x39;
@@ -778,8 +779,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
}
}
break;
-
- case SPOT_HIDDEN_VILLAGE:
+ case Z2SCENE_HIDDEN_VILLAGE:
if (layer == 0) {
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
if (dComIfGs_isSwitch(0x2e, 0) && !dComIfGs_isSwitch(0x11, 0)) {
@@ -793,16 +793,14 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
se_wave1 = 0x34;
se_wave2 = 0x4f;
break;
-
- case SPOT_IMPAZ_HOUSE:
+ case Z2SCENE_IMPAZ_HOUSE:
bgm_id = Z2BGM_INDOOR;
bgm_wave1 = 8;
se_wave1 = 0x34;
se_wave2 = 0x4f;
field_0x1b = true;
break;
-
- case SPOT_SUMO_HALL:
+ case Z2SCENE_SUMO_HALL:
if (layer == 8) {
demo_wave = 0x7f;
se_wave1 = 0;
@@ -815,19 +813,18 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
se_wave2 = 0x3a;
}
break;
-
- case SPOT_LAKE_HYLIA:
+ case Z2SCENE_LAKE_HYLIA:
se_wave1 = 0x3b;
if (layer == 8) {
demo_wave = 0x72;
- inDarkness = false;
+ inDarkness_ = false;
} else if (room == 1 && layer == 9) {
demo_wave = 0x74;
} else if (layer == 10 || layer == 11) {
demo_wave = 0x7f;
se_wave1 = 0;
se_wave2 = 0;
- } else if (inDarkness) {
+ } else if (inDarkness_) {
bgm_id = Z2BGM_TWILIGHT;
bgm_wave1 = 0xe;
se_wave2 = 0x3d;
@@ -850,14 +847,13 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
se_wave2 = 0x3c;
}
break;
-
- case SPOT_UPPER_ZORAS_RIVER:
+ case Z2SCENE_UPPER_ZORAS_RIVER:
se_wave1 = 0x55;
if (layer == 8) {
demo_wave = 0x7f;
se_wave1 = 0;
se_wave2 = 0;
- } else if (inDarkness) {
+ } else if (inDarkness_) {
bgm_id = Z2BGM_TWILIGHT;
bgm_wave1 = 0xe;
se_wave2 = 0x3f;
@@ -867,8 +863,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
height_vol_mod = true;
}
break;
-
- case SPOT_FISHING_POND:
+ case Z2SCENE_FISHING_POND:
if (layer == 8) {
demo_wave = 0x7f;
se_wave1 = 0;
@@ -882,18 +877,16 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
time_proc_vol_mod = true;
}
break;
-
- case SPOT_HENA_CABIN:
+ case Z2SCENE_HENA_CABIN:
se_wave1 = 0x3b;
bgm_id = Z2BGM_INDOOR;
bgm_wave1 = 8;
bgm_wave2 = 0x47;
se_wave2 = 0x3e;
break;
-
- case SPOT_ZORAS_RIVER:
+ case Z2SCENE_ZORAS_RIVER:
se_wave1 = 0x55;
- if (inDarkness) {
+ if (inDarkness_) {
bgm_id = Z2BGM_CARGO_GAME_TW;
bgm_wave1 = 0x24;
se_wave2 = 0x41;
@@ -911,8 +904,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
se_wave2 = 0x40;
}
break;
-
- case SPOT_ZORAS_DOMAIN:
+ case Z2SCENE_ZORAS_DOMAIN:
se_wave1 = 0x3b;
if (layer == 8 || layer == 9) {
demo_wave = 0x82;
@@ -920,7 +912,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
se_wave1 = 0;
se_wave2 = 0;
demo_wave = 0x7f;
- } else if (inDarkness) {
+ } else if (inDarkness_) {
bgm_id = Z2BGM_TWILIGHT;
bgm_wave1 = 0x0e;
bgm_wave2 = 0x2c;
@@ -933,12 +925,11 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
time_proc_vol_mod = true;
}
break;
-
- case SPOT_CASTLE_TOWN:
+ case Z2SCENE_CASTLE_TOWN:
se_wave1 = 0x42;
if (layer == 8) {
demo_wave = 0x68;
- } else if (inDarkness) {
+ } else if (inDarkness_) {
bgm_id = Z2BGM_TWILIGHT;
bgm_wave1 = 0xe;
se_wave2 = 0x44;
@@ -961,14 +952,13 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
}
}
break;
-
- case SPOT_CASTLE_TOWN_INTERIOR:
+ case Z2SCENE_CASTLE_TOWN_INTERIOR:
if (room == 6) {
se_wave1 = 0x2e;
se_wave2 = 0x2f;
} else {
se_wave1 = 0x42;
- if (inDarkness) {
+ if (inDarkness_) {
bgm_id = Z2BGM_TWILIGHT;
bgm_wave1 = 0xe;
se_wave2 = 0x44;
@@ -989,10 +979,10 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
}
}
break;
-
- case SPOT_CASTLE_TOWN_SHOPS:
+ case Z2SCENE_CASTLE_TOWN_SHOPS:
se_wave1 = 0x42;
se_wave2 = 0x5b;
+
switch (room) {
case 0:
if (layer == 1) {
@@ -1027,8 +1017,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
break;
}
break;
-
- case SPOT_STAR_TENT:
+ case Z2SCENE_STAR_TENT:
se_wave1 = 0x42;
se_wave2 = 0x87;
/* dSv_event_flag_c::F_289 - Castle Town - Heard conversation about entering Star Game 1 */
@@ -1037,11 +1026,11 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
}
bgm_wave1 = 0x46;
break;
-
- case SPOT_SACRED_GROVE:
+ case Z2SCENE_SACRED_GROVE:
se_wave1 = 0x31;
bgm_wave2 = 0x1b;
se_wave2 = 0x45;
+
if (room == 3) {
bgm_id = Z2BGM_HOLY_FOREST;
bgm_wave1 = 0x2a;
@@ -1066,8 +1055,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
}
}
break;
-
- case SPOT_SNOWPEAK:
+ case Z2SCENE_SNOWPEAK:
if (layer == 8) {
se_wave1 = 0;
se_wave2 = 0;
@@ -1081,8 +1069,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
}
height_vol_mod = true;
break;
-
- case SPOT_GERUDO_DESERT:
+ case Z2SCENE_GERUDO_DESERT:
se_wave1 = 0x48;
se_wave2 = 0x49;
if (layer == 8 || layer == 9 || layer == 10) {
@@ -1096,8 +1083,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
bgm_wave1 = 0x1f;
}
break;
-
- case SPOT_ARBITERS_GROUNDS_EXTERIOR:
+ case Z2SCENE_ARBITERS_GROUNDS_EXTERIOR:
if (room == 1) {
Z2GetSoundObjMgr()->setForceBattleArea(true, 1000, 2000, 9000);
bgm_wave1 = 0x3d;
@@ -1106,8 +1092,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
se_wave1 = 0x48;
se_wave2 = 0x49;
break;
-
- case SPOT_MIRROR_CHAMBER:
+ case Z2SCENE_MIRROR_CHAMBER:
switch (layer) {
case 7:
case 8:
@@ -1131,8 +1116,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
se_wave1 = 0x48;
se_wave2 = 0x49;
break;
-
- case SPOT_HYRULE_FIELD:
+ case Z2SCENE_HYRULE_FIELD:
se_wave1 = 0x4a;
if (room == 10 && layer == 11) {
demo_wave = 0x74;
@@ -1149,13 +1133,14 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
field_0x1b = true;
fVar1 = 1.0f;
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
- } else if (inDarkness) {
+ } else if (inDarkness_) {
if (layer == 12) {
demo_wave = 0x6a;
} else {
bgm_id = Z2BGM_TWILIGHT;
bgm_wave1 = 0xe;
}
+
se_wave2 = 0x4c;
if (room == 13 && layer == 14) {
bgm_wave2 = 0x1c;
@@ -1167,6 +1152,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
} else {
bgm_id = Z2BGM_FIELD_LINK_NIGHT;
}
+
bgm_wave1 = 0x19;
switch (room) {
case 2:
@@ -1220,8 +1206,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
}
}
break;
-
- case SPOT_CASTLE_TOWN_GATES:
+ case Z2SCENE_CASTLE_TOWN_GATES:
se_wave1 = 0x4a;
if (layer == 8) {
demo_wave = 0x73;
@@ -1233,7 +1218,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
se_wave1 = 0;
se_wave2 = 0;
demo_wave = 0x7f;
- } else if (inDarkness) {
+ } else if (inDarkness_) {
bgm_id = Z2BGM_TWILIGHT;
bgm_wave1 = 0xe;
se_wave2 = 0x4c;
@@ -1248,6 +1233,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
se_wave2 = 0x89;
fVar1 = 1.0f;
}
+
field_bgm_play = true;
if (Z2GetStatusMgr()->checkDayTime()) {
bgm_id = Z2BGM_FIELD_LINK_DAY;
@@ -1257,8 +1243,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
bgm_wave1 = 0x19;
}
break;
-
- case SPOT_HYLIA_BRIDGE_BATTLE:
+ case Z2SCENE_HYLIA_BRIDGE_BATTLE:
se_wave1 = 0x54;
bgm_wave1 = 0x3d;
se_wave2 = 0x4e;
@@ -1266,8 +1251,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
field_0x1b = true;
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
break;
-
- case SPOT_ELDIN_BRIDGE_BATTLE:
+ case Z2SCENE_ELDIN_BRIDGE_BATTLE:
se_wave1 = 0x4a;
if (layer == 11) {
se_wave1 = 0;
@@ -1286,8 +1270,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
}
break;
-
- case SPOT_SHADES_REALM:
+ case Z2SCENE_SHADES_REALM:
se_wave1 = 0x4a;
if (dComIfGs_getStartPoint() == 2) {
bgm_wave2 = 0x50;
@@ -1304,12 +1287,13 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
} else {
bgm_wave1 = 0x44;
}
+
se_wave2 = 0x5d;
field_0x1b = true;
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
break;
- case SPOT_FOREST_TEMPLE:
+ case Z2SCENE_FOREST_TEMPLE:
bgm_id = Z2BGM_DUNGEON_FOREST;
bgm_wave1 = 0xa;
bgm_wave2 = 0x40;
@@ -1317,8 +1301,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
se_wave2 = 2;
Z2GetSeqMgr()->changeBgmStatus(room);
break;
-
- case SPOT_FOREST_TEMPLE_MINIBOSS:
+ case Z2SCENE_FOREST_TEMPLE_MINIBOSS:
bgm_id = Z2BGM_DUNGEON_FOREST;
bgm_wave1 = 0xa;
bgm_wave2 = 0xb;
@@ -1326,10 +1309,9 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
se_wave2 = 3;
field_0x1b = true;
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
- Z2GetSeqMgr()->unMuteSceneBgm(struct_80450860);
+ Z2GetSeqMgr()->unMuteSceneBgm(Z2Param::SCENE_CHANGE_BGM_FADEOUT_TIME);
break;
-
- case SPOT_FOREST_TEMPLE_BOSS:
+ case Z2SCENE_FOREST_TEMPLE_BOSS:
se_wave1 = 1;
if (dComIfGs_isStageSwitch(2, 1)) {
bgm_id = Z2BGM_DUNGEON_FOREST;
@@ -1343,10 +1325,9 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
field_0x1b = true;
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
}
- Z2GetSeqMgr()->unMuteSceneBgm(struct_80450860);
+ Z2GetSeqMgr()->unMuteSceneBgm(Z2Param::SCENE_CHANGE_BGM_FADEOUT_TIME);
break;
-
- case SPOT_GORON_MINES:
+ case Z2SCENE_GORON_MINES:
bgm_id = Z2BGM_DUNGEON_LV2;
bgm_wave1 = 0x13;
bgm_wave2 = 0x3c;
@@ -1354,8 +1335,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
se_wave1 = 5;
se_wave2 = 6;
break;
-
- case SPOT_GORON_MINES_MINIBOSS:
+ case Z2SCENE_GORON_MINES_MINIBOSS:
bgm_id = Z2BGM_DUNGEON_LV2;
bgm_wave1 = 0x13;
se_wave1 = 5;
@@ -1364,8 +1344,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
field_0x1b = true;
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
break;
-
- case SPOT_GORON_MINES_BOSS:
+ case Z2SCENE_GORON_MINES_BOSS:
se_wave1 = 5;
if (dComIfGs_isStageSwitch(3, 0x7c)) {
bgm_id = Z2BGM_DUNGEON_LV2;
@@ -1380,16 +1359,14 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
}
break;
-
- case SPOT_LAKEBED_TEMPLE:
+ case Z2SCENE_LAKEBED_TEMPLE:
bgm_id = Z2BGM_DUNGEON_LV3;
bgm_wave1 = 0x15;
bgm_wave2 = 0x40;
se_wave1 = 9;
se_wave2 = 0xa;
break;
-
- case SPOT_LAKEBED_TEMPLE_MINIBOSS:
+ case Z2SCENE_LAKEBED_TEMPLE_MINIBOSS:
bgm_id = Z2BGM_DUNGEON_LV3;
bgm_wave1 = 0x15;
bgm_wave2 = 0x17;
@@ -1398,8 +1375,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
field_0x1b = true;
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
break;
-
- case SPOT_LAKEBED_TEMPLE_BOSS:
+ case Z2SCENE_LAKEBED_TEMPLE_BOSS:
se_wave1 = 9;
if (dComIfGs_isStageSwitch(4, 0xe)) {
bgm_id = Z2BGM_DUNGEON_LV3;
@@ -1414,8 +1390,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
}
break;
-
- case SPOT_ARBITERS_GROUNDS:
+ case Z2SCENE_ARBITERS_GROUNDS:
bgm_id = Z2BGM_DUNGEON_LV4;
bgm_wave1 = 0x1a;
bgm_wave2 = 0x41;
@@ -1425,8 +1400,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
}
break;
-
- case SPOT_ARBITERS_GROUNDS_MINIBOSS:
+ case Z2SCENE_ARBITERS_GROUNDS_MINIBOSS:
bgm_id = Z2BGM_DUNGEON_LV4;
bgm_wave1 = 0x1a;
bgm_wave2 = 0x22;
@@ -1435,8 +1409,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
field_0x1b = true;
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
break;
-
- case SPOT_ARBITERS_GROUNDS_BOSS:
+ case Z2SCENE_ARBITERS_GROUNDS_BOSS:
se_wave1 = 0xd;
if (dComIfGs_isStageSwitch(0xa, 0xa)) {
bgm_id = Z2BGM_DUNGEON_LV4;
@@ -1451,8 +1424,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
}
break;
-
- case SPOT_SNOWPEAK_RUINS:
+ case Z2SCENE_SNOWPEAK_RUINS:
bgm_id = Z2BGM_DUNGEON_LV5;
bgm_wave1 = 0x1d;
bgm_wave2 = 0x40;
@@ -1460,8 +1432,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
se_wave2 = 0x12;
Z2GetSeqMgr()->changeBgmStatus(room);
break;
-
- case SPOT_SNOWPEAK_RUINS_MINIBOSS:
+ case Z2SCENE_SNOWPEAK_RUINS_MINIBOSS:
bgm_id = Z2BGM_DUNGEON_LV5;
bgm_wave1 = 0x1d;
bgm_wave2 = 0x38;
@@ -1471,8 +1442,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
Z2GetSeqMgr()->changeBgmStatus(room);
break;
-
- case SPOT_SNOWPEAK_RUINS_BOSS:
+ case Z2SCENE_SNOWPEAK_RUINS_BOSS:
Z2GetSeqMgr()->unMuteSceneBgm(60);
se_wave1 = 0x11;
if (dComIfGs_isStageSwitch(8, 0x19)) {
@@ -1488,16 +1458,14 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
}
break;
-
- case SPOT_TEMPLE_OF_TIME:
+ case Z2SCENE_TEMPLE_OF_TIME:
bgm_id = Z2BGM_DUNGEON_LV6;
bgm_wave1 = 0x26;
bgm_wave2 = 0x40;
se_wave1 = 0x15;
se_wave2 = 0x16;
break;
-
- case SPOT_TEMPLE_OF_TIME_MINIBOSS:
+ case Z2SCENE_TEMPLE_OF_TIME_MINIBOSS:
bgm_id = Z2BGM_DUNGEON_LV6;
bgm_wave1 = 0x26;
bgm_wave2 = 0x3f;
@@ -1506,8 +1474,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
field_0x1b = true;
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
break;
-
- case SPOT_TEMPLE_OF_TIME_BOSS:
+ case Z2SCENE_TEMPLE_OF_TIME_BOSS:
se_wave1 = 0x15;
if (dComIfGs_isStageSwitch(7, 0x18)) {
bgm_id = Z2BGM_DUNGEON_LV6;
@@ -1522,8 +1489,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
}
break;
-
- case SPOT_CITY_IN_THE_SKY:
+ case Z2SCENE_CITY_IN_THE_SKY:
if (room == 16) {
bgm_id = Z2BGM_OBACHAN;
bgm_wave1 = 0x40;
@@ -1534,8 +1500,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
se_wave1 = 0x19;
se_wave2 = 0x1a;
break;
-
- case SPOT_CITY_IN_THE_SKY_MINIBOSS:
+ case Z2SCENE_CITY_IN_THE_SKY_MINIBOSS:
bgm_id = Z2BGM_DUNGEON_LV7;
bgm_wave1 = 0x27;
bgm_wave2 = 0x43;
@@ -1544,8 +1509,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
field_0x1b = true;
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
break;
-
- case SPOT_CITY_IN_THE_SKY_BOSS:
+ case Z2SCENE_CITY_IN_THE_SKY_BOSS:
se_wave1 = 0x19;
if (dComIfGs_isStageSwitch(0x16, 0x25)) {
bgm_id = Z2BGM_DUNGEON_LV7;
@@ -1560,8 +1524,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
}
break;
-
- case SPOT_PALACE_OF_TWILIGHT:
+ case Z2SCENE_PALACE_OF_TWILIGHT:
if (layer == 8) {
if (room == 0 || room == 9) {
demo_wave = 0x77;
@@ -1579,9 +1542,8 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
se_wave1 = 0x1d;
se_wave2 = 0x1e;
break;
-
- case SPOT_PALACE_OF_TWILIGHT_MINIBOSS_A:
- case SPOT_PALACE_OF_TWILIGHT_MINIBOSS_B:
+ case Z2SCENE_PALACE_OF_TWILIGHT_MINIBOSS_A:
+ case Z2SCENE_PALACE_OF_TWILIGHT_MINIBOSS_B:
bgm_id = Z2BGM_DUNGEON_LV8;
bgm_wave1 = 0x28;
bgm_wave2 = 0x48;
@@ -1590,8 +1552,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
field_0x1b = true;
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
break;
-
- case SPOT_PALACE_OF_TWILIGHT_THRONE_ROOM:
+ case Z2SCENE_PALACE_OF_TWILIGHT_THRONE_ROOM:
if (layer == 8) {
demo_wave = 0x81;
} else if (layer == 9) {
@@ -1611,19 +1572,19 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
}
}
break;
-
- case SPOT_PALACE_OF_TWILIGHT_BOSS:
+ case Z2SCENE_PALACE_OF_TWILIGHT_BOSS:
se_wave1 = 0x1d;
bgm_wave1 = 0x39;
se_wave2 = 0x20;
+
if (room == 50) {
- inDarkness = true;
+ inDarkness_ = true;
}
+
field_0x1b = true;
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
break;
-
- case SPOT_HYRULE_CASTLE:
+ case Z2SCENE_HYRULE_CASTLE:
if (room >= 1 && room <= 6) {
bgm_id = 0x2000040;
bgm_wave2 = 0x58;
@@ -1635,13 +1596,13 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
Z2GetSeqMgr()->bgmStop(45, 0);
bgm_wave2 = 0x3d;
}
+
se_wave1 = 0x21;
se_wave2 = 0x22;
field_0x1b = true;
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
break;
-
- case SPOT_FINAL_BATTLE_THRONE_ROOM:
+ case Z2SCENE_FINAL_BATTLE_THRONE_ROOM:
if (room == 50) {
if (layer == 8) {
demo_wave = 0x7b;
@@ -1657,20 +1618,19 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
demo_wave = 0x7c;
}
}
+
se_wave1 = 0x56;
field_0x1b = true;
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
break;
-
- case SPOT_FINAL_BATTLE_FIELD:
+ case Z2SCENE_FINAL_BATTLE_FIELD:
bgm_wave1 = 0x4b;
se_wave2 = 0x63;
se_wave1 = 0x8c;
field_0x1b = true;
Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500);
break;
-
- case SPOT_FINAL_BATTLE_CUTSCENE:
+ case Z2SCENE_FINAL_BATTLE_CUTSCENE:
if (layer == 8) {
demo_wave = 0x7c;
fVar1 = 0.1f;
@@ -1683,53 +1643,46 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
demo_wave = 0x7f;
}
break;
-
- case SPOT_LIGHT_SPIRIT_CHAMBER:
+ case Z2SCENE_LIGHT_SPIRIT_CHAMBER:
demo_wave = 0x7c;
break;
-
- case SPOT_CAVE_OF_ORDEALS:
+ case Z2SCENE_CAVE_OF_ORDEALS:
se_wave2 = 0x51;
if (room != 49 || layer < 5 || layer > 8) {
bgm_id = Z2BGM_SUB_DUNGEON;
bgm_wave1 = 0x45;
}
break;
-
- case SPOT_ICE_BLOCK_PUZZLE:
+ case Z2SCENE_ICE_BLOCK_PUZZLE:
se_wave1 = 0x11;
se_wave2 = 0x12;
bgm_id = Z2BGM_SUB_DUNGEON;
bgm_wave1 = 0x45;
break;
-
- case SPOT_GORGE_LANTERN_CAVE:
- case SPOT_LAKE_LANTERN_CAVE:
+ case Z2SCENE_GORGE_LANTERN_CAVE:
+ case Z2SCENE_LAKE_LANTERN_CAVE:
se_wave2 = 0x52;
bgm_id = Z2BGM_SUB_DUNGEON;
bgm_wave1 = 0x45;
break;
-
- case SPOT_ELDIN_MAGNET_CAVE:
+ case Z2SCENE_ELDIN_MAGNET_CAVE:
se_wave1 = 5;
se_wave2 = 6;
bgm_id = Z2BGM_SUB_DUNGEON;
bgm_wave1 = 0x45;
break;
-
- case SPOT_GROTTO_GRASS_1:
- case SPOT_GROTTO_GRASS_2:
- case SPOT_GROTTO_ROCK_1:
- case SPOT_GROTTO_ROCK_2:
- case SPOT_GROTTO_POND:
+ case Z2SCENE_GROTTO_GRASS_1:
+ case Z2SCENE_GROTTO_GRASS_2:
+ case Z2SCENE_GROTTO_ROCK_1:
+ case Z2SCENE_GROTTO_ROCK_2:
+ case Z2SCENE_GROTTO_POND:
se_wave2 = 0x50;
bgm_id = Z2BGM_SUB_DUNGEON;
bgm_wave1 = 0x45;
break;
-
- case SPOT_FARON_WOODS_CAVE:
+ case Z2SCENE_FARON_WOODS_CAVE:
se_wave2 = 0x53;
- if (inDarkness) {
+ if (inDarkness_) {
bgm_id = Z2BGM_TWILIGHT;
bgm_wave1 = 0xe;
} else {
@@ -1743,25 +1696,24 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[104])
/* dSv_event_flag_c::F_0250 - Cutscene - [cutscene: 21] reunion with Zelda / Midna revived (Hyrule Castle barrier appears) */
&& !dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[250])
- && demo_wave == 0 && spot != SPOT_ELDIN_BRIDGE_BATTLE)
+ && demo_wave == 0 && spotNo != Z2SCENE_ELDIN_BRIDGE_BATTLE)
{
bgm_wave1 = 0x36;
- if (spot == SPOT_CASTLE_TOWN_SHOPS && room == 5) {
+ if (spotNo == Z2SCENE_CASTLE_TOWN_SHOPS && room == 5) {
bgm_id = -1;
} else {
bgm_id = Z2BGM_MIDNA_SOS;
- if ((spot == SPOT_CASTLE_TOWN_INTERIOR && room == 5)
- || spot == SPOT_CASTLE_TOWN_SHOPS || spot == SPOT_STAR_TENT)
+ if ((spotNo == Z2SCENE_CASTLE_TOWN_INTERIOR && room == 5)
+ || spotNo == Z2SCENE_CASTLE_TOWN_SHOPS || spotNo == Z2SCENE_STAR_TENT)
{
Z2GetSeqMgr()->muteSceneBgm(33, 0.5f);
} else {
Z2GetSeqMgr()->unMuteSceneBgm(33);
}
}
+
time_proc_vol_mod = false;
- } else if (sceneNum == SPOT_CASTLE_TOWN_SHOPS && roomNum == 1
- && !(spot == SPOT_CASTLE_TOWN && room == 3))
- {
+ } else if (sceneNum == Z2SCENE_CASTLE_TOWN_SHOPS && roomNum == 1 && !(spotNo == Z2SCENE_CASTLE_TOWN && room == 3)) {
bgm_id = Z2BGM_FORTUNE;
bgm_wave1 = 0x37;
Z2GetSeqMgr()->changeBgmStatus(1);
@@ -1774,7 +1726,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
JSULink<JAIStream>* stream;
for (stream = stream_list->getFirst(); stream != NULL; stream = stream->getNext()) {
if (bVar2 || sound_table->getTypeID(stream->getObject()->getID()) != 0x71) {
- stream->getObject()->stop(struct_80450860);
+ stream->getObject()->stop(Z2Param::SCENE_CHANGE_BGM_FADEOUT_TIME);
}
}
}
@@ -1782,15 +1734,16 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
Z2GetSeqMgr()->setHeightVolMod(height_vol_mod, 30);
Z2GetSeqMgr()->setTimeProcVolMod(time_proc_vol_mod, 0);
Z2GetSeqMgr()->setFieldBgmPlay(field_bgm_play);
- Z2GetEnvSeMgr()->initSceneEnvSe(spot, room, fVar1);
+ Z2GetEnvSeMgr()->initSceneEnvSe(spotNo, room, fVar1);
- if (sceneNum != spot || bgm_id != BGM_ID || se_wave1 != loadedSeWave_1
+ if (sceneNum != spotNo || bgm_id != BGM_ID || se_wave1 != loadedSeWave_1
|| se_wave2 != loadedSeWave_2 || bgm_wave1 != loadedBgmWave_1
|| bgm_wave2 != loadedBgmWave_2 || demo_wave != loadedDemoWave)
{
- sceneNum = spot;
+ sceneNum = spotNo;
sceneChange(bgm_id, se_wave1, se_wave2, bgm_wave1, bgm_wave2, demo_wave, false);
}
+
roomNum = room;
}
@@ -1798,6 +1751,9 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) {
* sceneChange__10Z2SceneMgrF10JAISoundIDUcUcUcUcUcb */
void Z2SceneMgr::sceneChange(JAISoundID bgm, u8 seWave1, u8 seWave2, u8 bgmWave1, u8 bgmWave2,
u8 demoWave, bool param_6) {
+ OS_REPORT("[Z2SceneMgr::sceneChange] bgm:0x%08x, SeWave1:%d, SeWave2:%d BgmWave1:%d BgmWave2:%d demoWave:%d (%d)\n",
+ *(u32*)&bgm, seWave1, seWave2, bgmWave1, bgmWave2, demoWave, param_6);
+
if (bgm != BGM_ID) {
if (Z2GetSeqMgr()->getMainBgmID() == bgm) {
field_0x1a = false;
@@ -1843,7 +1799,7 @@ void Z2SceneMgr::framework() {
if (timer < 10000) {
timer++;
}
- if (!field_0x1b && Z2GetStatusMgr()->getDemoStatus() != 3 && timer == struct_80450863) {
+ if (!field_0x1b && Z2GetStatusMgr()->getDemoStatus() != 3 && timer == Z2Param::BATTLE_BGM_WAIT_TIME) {
Z2GetSeqMgr()->setBattleBgmOff(false);
}
} else {
@@ -1854,6 +1810,8 @@ void Z2SceneMgr::framework() {
/* 802B9D40-802B9D98 2B4680 0058+00 0/0 1/1 0/0 .text load1stDynamicWave__10Z2SceneMgrFv
*/
void Z2SceneMgr::load1stDynamicWave() {
+ OS_REPORT("[Z2SceneMgr::load1stDynamicWave] load1stWait:%d\n", load1stWait);
+
timer = 0;
Z2GetSoundObjMgr()->deleteEnemyAll();
setSceneExist(false);
@@ -1864,6 +1822,8 @@ void Z2SceneMgr::load1stDynamicWave() {
/* 802B9D98-802B9FC8 2B46D8 0230+00 2/2 0/0 0/0 .text _load1stWaveInner_1__10Z2SceneMgrFv */
void Z2SceneMgr::_load1stWaveInner_1() {
+ OS_REPORT("[Z2SceneMgr::_load1stWaveInner_1] requestSe:%d loadedSe:%d\n", requestSeWave_1, loadedSeWave_1);
+
Z2GetSeMgr()->seStopAll(0);
Z2GetEnvSeMgr()->resetSceneInner();
/* dSv_event_flag_c::M_071 - Cutscene - [cutscene: 20] Zant appears (during Midna's desperate hour) */
@@ -1903,7 +1863,8 @@ void Z2SceneMgr::_load1stWaveInner_1() {
}
if (field_0x1a && Z2GetSeqMgr()->checkBgmPlaying()) {
- Z2GetSeqMgr()->bgmStop(0xf, 0);
+ OS_REPORT("[Z2SceneMgr::load1stDynamicWave]bgm StopCount = %d\n", 15);
+ Z2GetSeqMgr()->bgmStop(15, 0);
load1stWait = -15;
} else {
_load1stWaveInner_2();
@@ -1913,6 +1874,8 @@ void Z2SceneMgr::_load1stWaveInner_1() {
/* 802B9FC8-802BA09C 2B4908 00D4+00 2/2 0/0 0/0 .text _load1stWaveInner_2__10Z2SceneMgrFv
*/
void Z2SceneMgr::_load1stWaveInner_2() {
+ OS_REPORT("[Z2SceneMgr::_load1stWaveInner_2] requestBgm:%d loadedBgm:%d\n", requestBgmWave_1, loadedBgmWave_1);
+
if (loadedBgmWave_2 != 0 && requestBgmWave_2 != loadedBgmWave_2) {
eraseBgmWave(loadedBgmWave_2);
loadedBgmWave_2 = 0;
@@ -1936,13 +1899,15 @@ void Z2SceneMgr::_load1stWaveInner_2() {
/* 802BA09C-802BA120 2B49DC 0084+00 0/0 1/1 0/0 .text check1stDynamicWave__10Z2SceneMgrFv
*/
bool Z2SceneMgr::check1stDynamicWave() {
- return load1stWait != 0 || getSeLoadStatus(requestSeWave_1) == 1
- || getBgmLoadStatus(requestBgmWave_1) == 1;
+ return load1stWait != 0 || getSeLoadStatus(requestSeWave_1) == 1 || getBgmLoadStatus(requestBgmWave_1) == 1;
}
/* 802BA120-802BA294 2B4A60 0174+00 0/0 2/2 0/0 .text load2ndDynamicWave__10Z2SceneMgrFv
*/
void Z2SceneMgr::load2ndDynamicWave() {
+ OS_REPORT("[Z2SceneMgr::load2ndDynamicWave] requestSe:%d, loadedSe:%d requestBgm:%d loadedBgm:%d requestDemo:%d loadedDemo:%d\n",
+ requestSeWave_2, loadedSeWave_2, requestBgmWave_2, loadedBgmWave_2, requestDemoWave, loadedDemoWave);
+
if (requestDemoWave != loadedDemoWave) {
if (loadedSeWave_2 != 0 && eraseSeWave(loadedSeWave_2)) {
loadedSeWave_2 = 0;
@@ -1983,10 +1948,10 @@ void Z2SceneMgr::load2ndDynamicWave() {
/* 802BA294-802BA56C 2B4BD4 02D8+00 1/0 2/2 0/0 .text sceneBgmStart__10Z2SceneMgrFv */
// NONMATCHING - extra BGM_ID load
void Z2SceneMgr::sceneBgmStart() {
- OS_REPORT("[Z2SceneMgr::sceneBgmStart] %08x", BGM_ID.mId.mFullId);
-
+ OS_REPORT("[Z2SceneMgr::sceneBgmStart] %08x\n", *(u32*)&BGM_ID);
inGame = true;
- BOOL r28 = FALSE;
+
+ int var_r28 = 0;
setSceneExist(true);
Z2GetStatusMgr()->setPauseFlag(0);
@@ -1994,9 +1959,10 @@ void Z2SceneMgr::sceneBgmStart() {
return;
}
- if (!BGM_ID.isAnonymous() && !r28 && Z2GetStatusMgr()->getDemoStatus() != 11) {
+ if (!BGM_ID.isAnonymous() && var_r28 == 0 && Z2GetStatusMgr()->getDemoStatus() != 11) {
bool var;
- switch (BGM_ID.mId.mBytes.b0) {
+ int section = BGM_ID.id_.info.type.parts.sectionID;
+ switch (section) {
case 1:
var = false;
switch (Z2GetSeqMgr()->getSubBgmID()) {
@@ -2017,7 +1983,7 @@ void Z2SceneMgr::sceneBgmStart() {
case Z2BGM_DUNGEON_LV8:
case Z2BGM_DUNGEON_LV9_02:
case Z2BGM_SNOW_MOUNTAIN:
- if (sceneNum == SPOT_CASTLE_TOWN_SHOPS) {
+ if (sceneNum == Z2SCENE_CASTLE_TOWN_SHOPS) {
Z2GetSeqMgr()->changeBgmStatus(5);
} else {
Z2GetSeqMgr()->changeBgmStatus(roomNum);
@@ -2030,27 +1996,27 @@ void Z2SceneMgr::sceneBgmStart() {
Z2GetSeqMgr()->changeBgmStatus(0);
break;
case Z2BGM_CHURCH2:
- if (sceneNum == SPOT_SANCTUARY_BASEMENT) {
+ if (sceneNum == Z2SCENE_SANCTUARY_BASEMENT) {
Z2GetSeqMgr()->muteSceneBgm(0, 0.5f);
}
break;
case Z2BGM_MIDNA_SOS:
- if ((sceneNum == SPOT_CASTLE_TOWN_INTERIOR && roomNum == 5)
- || sceneNum == SPOT_CASTLE_TOWN_SHOPS || sceneNum == SPOT_STAR_TENT)
+ if ((sceneNum == Z2SCENE_CASTLE_TOWN_INTERIOR && roomNum == 5)
+ || sceneNum == Z2SCENE_CASTLE_TOWN_SHOPS || sceneNum == Z2SCENE_STAR_TENT)
{
Z2GetSeqMgr()->muteSceneBgm(0, 0.5f);
}
break;
case Z2BGM_TOAL_NIGHT:
- if (sceneNum == SPOT_ORDON_INTERIOR && roomNum == 2) {
+ if (sceneNum == Z2SCENE_ORDON_INTERIOR && roomNum == 2) {
Z2GetSeqMgr()->changeBgmStatus(2);
} else {
Z2GetSeqMgr()->changeBgmStatus(0);
}
break;
case Z2BGM_FILONE_FOREST:
- if (sceneNum == SPOT_CORO_SHOP
- || (sceneNum == SPOT_FARON_WOODS && roomNum == 14))
+ if (sceneNum == Z2SCENE_CORO_SHOP
+ || (sceneNum == Z2SCENE_FARON_WOODS && roomNum == 14))
{
Z2GetSeqMgr()->changeBgmStatus(2);
} else {
@@ -2075,6 +2041,10 @@ void Z2SceneMgr::sceneBgmStart() {
/* 802BA56C-802BA5C0 2B4EAC 0054+00 0/0 1/1 0/0 .text loadStaticWaves__10Z2SceneMgrFv */
void Z2SceneMgr::loadStaticWaves() {
+ OS_REPORT("[Z2SceneMgr::loadStaticWaves] 常駐シーン波形を読み込みます\n");
+ #if PLATFORM_SHIELD
+ loadSceneWave(0, 2);
+ #endif
loadSeWave(0);
loadBgmWave(0);
loadSeWave(0x58);
@@ -2089,7 +2059,10 @@ BOOL Z2SceneMgr::checkFirstWaves() {
/* 802BA5C8-802BA630 2B4F08 0068+00 2/2 0/0 0/0 .text eraseSeWave__10Z2SceneMgrFUl */
bool Z2SceneMgr::eraseSeWave(u32 wave) {
- JASWaveBank* wave_bank = JAUSectionHeap::getInstance()->getWaveBankTable().getWaveBank(0);
+ JAUSectionHeap* sectionHeap = JASGlobalInstance<JAUSectionHeap>::getInstance();
+ JUT_ASSERT(2976, sectionHeap);
+
+ JASWaveBank* wave_bank = sectionHeap->getWaveBankTable().getWaveBank(0);
if (wave_bank != NULL) {
JASWaveArc* wave_arc = wave_bank->getWaveArc(wave);
if (wave_arc != NULL) {
@@ -2101,7 +2074,10 @@ bool Z2SceneMgr::eraseSeWave(u32 wave) {
/* 802BA630-802BA698 2B4F70 0068+00 2/2 0/0 0/0 .text eraseBgmWave__10Z2SceneMgrFUl */
bool Z2SceneMgr::eraseBgmWave(u32 wave) {
- JASWaveBank* wave_bank = JAUSectionHeap::getInstance()->getWaveBankTable().getWaveBank(1);
+ JAUSectionHeap* sectionHeap = JASGlobalInstance<JAUSectionHeap>::getInstance();
+ JUT_ASSERT(2988, sectionHeap);
+
+ JASWaveBank* wave_bank = sectionHeap->getWaveBankTable().getWaveBank(1);
if (wave_bank != NULL) {
JASWaveArc* wave_arc = wave_bank->getWaveArc(wave);
if (wave_arc != NULL) {
@@ -2113,7 +2089,10 @@ bool Z2SceneMgr::eraseBgmWave(u32 wave) {
/* 802BA698-802BA704 2B4FD8 006C+00 1/1 0/0 0/0 .text getWaveLoadStatus__10Z2SceneMgrFUlUl */
s32 Z2SceneMgr::getWaveLoadStatus(u32 wave, u32 bank) {
- JASWaveBank* wave_bank = JAUSectionHeap::getInstance()->getWaveBankTable().getWaveBank(bank);
+ JAUSectionHeap* sectionHeap = JASGlobalInstance<JAUSectionHeap>::getInstance();
+ JUT_ASSERT(3001, sectionHeap);
+
+ JASWaveBank* wave_bank = sectionHeap->getWaveBankTable().getWaveBank(bank);
if (wave_bank != NULL) {
JASWaveArc* wave_arc = wave_bank->getWaveArc(wave);
if (wave_arc != NULL) {
@@ -2123,26 +2102,52 @@ s32 Z2SceneMgr::getWaveLoadStatus(u32 wave, u32 bank) {
return 0;
}
+#if PLATFORM_SHIELD
+bool Z2SceneMgr::loadSceneWave(u32 wave, u32 bank) {
+ JAUSectionHeap* sectionHeap = JASGlobalInstance<JAUSectionHeap>::getInstance();
+ JUT_ASSERT(3014, sectionHeap);
+
+ JASWaveBank* wave_bank = sectionHeap->getWaveBankTable().getWaveBank(bank);
+ if (wave_bank != NULL) {
+ JASWaveArc* wave_arc = wave_bank->getWaveArc(wave);
+ if (wave_arc != NULL) {
+ return wave_arc->load(NULL);
+ }
+ }
+ return false;
+}
+#endif
+
/* 802BA704-802BA770 2B5044 006C+00 3/3 0/0 0/0 .text loadSeWave__10Z2SceneMgrFUl */
bool Z2SceneMgr::loadSeWave(u32 wave) {
- JASWaveBank* wave_bank = JAUSectionHeap::getInstance()->getWaveBankTable().getWaveBank(0);
+ JAUSectionHeap* sectionHeap = JASGlobalInstance<JAUSectionHeap>::getInstance();
+ JUT_ASSERT(3030, sectionHeap);
+
+ JASWaveBank* wave_bank = sectionHeap->getWaveBankTable().getWaveBank(0);
if (wave_bank != NULL) {
JASWaveArc* wave_arc = wave_bank->getWaveArc(wave);
if (wave_arc != NULL) {
return wave_arc->load(NULL);
}
}
+
+ JUT_WARN_DEVICE(3038, 1, "Z2SceneMgr::cannot load SE wave:%d\n", wave);
return false;
}
/* 802BA770-802BA7DC 2B50B0 006C+00 3/3 0/0 0/0 .text loadBgmWave__10Z2SceneMgrFUl */
bool Z2SceneMgr::loadBgmWave(u32 wave) {
- JASWaveBank* wave_bank = JAUSectionHeap::getInstance()->getWaveBankTable().getWaveBank(1);
+ JAUSectionHeap* sectionHeap = JASGlobalInstance<JAUSectionHeap>::getInstance();
+ JUT_ASSERT(3047, sectionHeap);
+
+ JASWaveBank* wave_bank = sectionHeap->getWaveBankTable().getWaveBank(1);
if (wave_bank != NULL) {
JASWaveArc* wave_arc = wave_bank->getWaveArc(wave);
if (wave_arc != NULL) {
return wave_arc->loadTail(NULL);
}
}
+
+ JUT_WARN_DEVICE(3055, 1, "Z2SceneMgr::cannot load BGM wave:%d\n", wave);
return false;
}
diff --git a/src/Z2AudioLib/Z2SeMgr.cpp b/src/Z2AudioLib/Z2SeMgr.cpp
index cbb20a3614..f4f02fe6e9 100644
--- a/src/Z2AudioLib/Z2SeMgr.cpp
+++ b/src/Z2AudioLib/Z2SeMgr.cpp
@@ -1,8 +1,3 @@
-//
-// Generated By: dol2asm
-// Translation Unit: Z2SeMgr
-//
-
#include "Z2AudioLib/Z2SeMgr.h"
#include "Z2AudioLib/Z2Audience.h"
#include "Z2AudioLib/Z2Calc.h"
@@ -16,7 +11,7 @@
#include "JSystem/J3DU/J3DUD.h"
/* 802AB64C-802AB710 2A5F8C 00C4+00 0/0 1/1 0/0 .text __ct__7Z2SeMgrFv */
-Z2SeMgr::Z2SeMgr() : JASGlobalInstance(this), mSoundHandles(mSoundHandle, 0x18) {
+Z2SeMgr::Z2SeMgr() : JASGlobalInstance(true), mSoundHandles(mSoundHandle, 24) {
field_0x3c0 = 0;
field_0x3c1 = 0;
field_0x3c2 = 0;
@@ -31,24 +26,34 @@ Z2SeMgr::Z2SeMgr() : JASGlobalInstance(this), mSoundHandles(mSoundHandle, 0x18)
}
Z2MultiSeObj::Z2MultiSeObj() {
- mSoundID = 0xFFFFFFFF;
- field_0x20 = 0;
+ soundID_ = 0xFFFFFFFF;
+ reverb_ = 0;
}
/* 802AB750-802AB80C 2A6090 00BC+00 0/0 1/1 0/0 .text initSe__7Z2SeMgrFv */
void Z2SeMgr::initSe() {
+ #if VERSION == VERSION_SHIELD_DEBUG
+ dbg_field_0x68.releaseSound();
+ dbg_field_0x6c = 0.5f;
+ dbg_field_0x70 = 0.0f;
+ dbg_field_0x74 = 0.0f;
+ dbg_field_0x78 = 0.0f;
+ #endif
+
for (u8 i = 0; i < 10; i++) {
mLevelObjSe[i].resetMultiSePos();
- mLevelObjSe[i].mSoundID = 0xffffffff;
- mLevelObjSe[i].field_0x20 = 0;
+ mLevelObjSe[i].soundID_ = 0xFFFFFFFF;
+ mLevelObjSe[i].reverb_ = 0;
}
+
mLevelObjectSeCount = 0;
for (u8 i = 0; i < 10; i++) {
mMultiTriggerSe[i].resetMultiSePos();
- mMultiTriggerSe[i].mSoundID = 0xffffffff;
- mMultiTriggerSe[i].field_0x20 = 0;
+ mMultiTriggerSe[i].soundID_ = 0xFFFFFFFF;
+ mMultiTriggerSe[i].reverb_ = 0;
}
+
mMultiTriggerSeCount = 0;
resetModY();
}
@@ -61,7 +66,7 @@ void Z2SeMgr::resetModY() {
/* 802AB830-802AB93C 2A6170 010C+00 1/1 0/0 0/0 .text modHeightAtCamera__7Z2SeMgrFPPC3Vec
*/
-void Z2SeMgr::modHeightAtCamera(Vec const** param_0) {
+void Z2SeMgr::modHeightAtCamera(const Vec** param_0) {
if (*param_0 != NULL) {
int idx = 9999;
for (int i = 0; i < 8; i++) {
@@ -70,8 +75,9 @@ void Z2SeMgr::modHeightAtCamera(Vec const** param_0) {
break;
}
}
+
if (idx == 9999) {
- int i;
+ int i = 0;
for (i = 0; i < 8; i++) {
if (mModY[i] == NULL) {
idx = i;
@@ -79,15 +85,19 @@ void Z2SeMgr::modHeightAtCamera(Vec const** param_0) {
break;
}
}
+
if (i == 8) {
+ JUT_WARN_DEVICE(126, 1, "%s", "Z2SeMgr: cannot mod cam_y");
return;
}
}
+
field_0x340[idx] = **param_0;
Vec cam_pos = Z2GetAudience()->getAudioCamPos(0);
if (field_0x340[idx].y > cam_pos.y) {
field_0x340[idx].y = cam_pos.y;
}
+
*param_0 = &field_0x340[idx];
}
}
@@ -110,14 +120,14 @@ void Z2SeMgr::decrCrowdSize() {
/* 802AB984-802AC50C 2A62C4 0B88+00 1/1 196/196 549/549 .text
* seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc */
-bool Z2SeMgr::seStart(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, s8 i_reverb,
- f32 i_pitch, f32 i_volume, f32 i_pan, f32 i_dolby, u8 param_8) {
- if (i_soundID == 0xffffffff) {
+bool Z2SeMgr::seStart(JAISoundID soundID, const Vec* posPtr, u32 param_2, s8 reverb,
+ f32 pitch, f32 volume, f32 pan, f32 dolby, u8 param_8) {
+ if (soundID == 0xFFFFFFFF) {
return false;
}
if (param_8 != 1) {
- switch (i_soundID) {
+ switch (soundID) {
case Z2SE_OBJ_L8_STAIR_ON:
case Z2SE_OBJ_L8_STAIR_MV_UP:
case Z2SE_OBJ_L8_STAIR_MV_DW:
@@ -126,12 +136,12 @@ bool Z2SeMgr::seStart(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, s8 i_
case Z2SE_OBJ_L8_L_BALL_SW_ON:
case Z2SE_OBJ_L8_L_LIFT_ON:
case Z2SE_OBJ_GANON_BARRIER_APPR:
- setMultiTriggerSE(i_soundID, const_cast<Vec*>(i_pos), i_reverb);
+ setMultiTriggerSE(soundID, const_cast<Vec*>(posPtr), reverb);
return false;
}
}
- switch (i_soundID) {
+ switch (soundID) {
case Z2SE_QUIT_GAME:
Z2GetStatusMgr()->menuOut();
break;
@@ -181,28 +191,26 @@ bool Z2SeMgr::seStart(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, s8 i_
return false;
}
param_2 = param_2 * param_2;
- i_volume = param_2 / 10000.0f;
+ volume = param_2 / 10000.0f;
break;
case Z2SE_OBJ_BOMB_BOUND:
- if (i_volume >= 100.0f) {
- i_volume = 100.0f;
+ if (volume >= 100.0f) {
+ volume = 100.0f;
}
- if (i_volume <= 0.0f) {
+ if (volume <= 0.0f) {
return false;
}
- i_volume = (i_volume * i_volume) / 10000.0f;
+ volume = (volume * volume) / 10000.0f;
break;
case Z2SE_OBJ_KEY_BOUND:
if (param_2 == 0) {
return false;
}
- i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 100.0f, 0.2f, 0.0f, 1.0f,
- Z2Calc::CURVE_SIGN_0);
+ volume = Z2Calc::getParamByExp(param_2, 0.0f, 100.0f, 0.2f, 0.0f, 1.0f,
+ Z2Calc::CURVE_NEGATIVE);
break;
case Z2SE_MAGIC_METER_DEC:
- if (mSoundHandles.getHandleSoundID(Z2SE_MAGIC_METER_DEC) != NULL
- || mSoundHandles.getHandleSoundID(Z2SE_MAGIC_METER_FINISH) != NULL)
- {
+ if (mSoundHandles.getHandleSoundID(Z2SE_MAGIC_METER_DEC) != NULL || mSoundHandles.getHandleSoundID(Z2SE_MAGIC_METER_FINISH) != NULL) {
return false;
}
break;
@@ -223,11 +231,11 @@ bool Z2SeMgr::seStart(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, s8 i_
case Z2SE_OBJ_BOARD_BOUND:
case Z2SE_OBJ_BOARD_PUT:
if (param_2 < 90) {
- i_volume = 0.7f;
- i_pitch = 1.25f;
+ volume = 0.7f;
+ pitch = 1.25f;
} else if (param_2 < 60) {
- i_volume = 0.4f;
- i_pitch = 1.5f;
+ volume = 0.4f;
+ pitch = 1.5f;
}
break;
case Z2SE_SY_TALK_START:
@@ -238,14 +246,14 @@ bool Z2SeMgr::seStart(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, s8 i_
break;
case Z2SE_SY_TALK_NEXT:
if (Z2GetStatusMgr()->isMovieDemo()) {
- i_soundID = Z2SE_SY_DEMO_MESSAGE_NEXT;
+ soundID = Z2SE_SY_DEMO_MESSAGE_NEXT;
}
break;
case Z2SE_SY_TALK_WIN_CLOSE:
if (Z2GetStatusMgr()->getDemoStatus() == 1) {
- i_soundID = Z2SE_SY_TALK_END;
+ soundID = Z2SE_SY_TALK_END;
} else if (Z2GetStatusMgr()->isMovieDemo()) {
- i_soundID = Z2SE_SY_DEMO_MESSAGE_END;
+ soundID = Z2SE_SY_DEMO_MESSAGE_END;
}
break;
case Z2SE_HP_GAUGE_INC:
@@ -255,34 +263,34 @@ bool Z2SeMgr::seStart(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, s8 i_
break;
case Z2SE_OBJ_CHANDELIER_SWING: {
Vec tmp = Z2GetAudience()->getAudioCamPos(0);
- if (i_pos->y > tmp.y) {
+ if (posPtr->y > tmp.y) {
return false;
}
break;
}
case Z2SE_OBJ_CHANDLV5_SWING:
- i_volume = Z2Calc::getParamByExp(param_2, 35.0f, 261.0f, 0.4f, 0.05f, 1.0f,
- Z2Calc::CURVE_SIGN_2);
+ volume = Z2Calc::getParamByExp(param_2, 35.0f, 261.0f, 0.4f, 0.05f, 1.0f,
+ Z2Calc::CURVE_LINEAR);
break;
case Z2SE_OBJ_IRONBALL_HIT:
if (param_2 > 150) {
- i_volume = 1.4f;
+ volume = 1.4f;
} else {
- i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 47.0f, 0.4f, 0.5f, 0.9f,
- Z2Calc::CURVE_SIGN_2);
+ volume = Z2Calc::getParamByExp(param_2, 0.0f, 47.0f, 0.4f, 0.5f, 0.9f,
+ Z2Calc::CURVE_LINEAR);
}
break;
case Z2SE_OBJ_IRONBALL_HIT_SNOW:
- i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 41.0f, 0.4f, 0.3f, 1.0f,
- Z2Calc::CURVE_SIGN_2);
+ volume = Z2Calc::getParamByExp(param_2, 0.0f, 41.0f, 0.4f, 0.3f, 1.0f,
+ Z2Calc::CURVE_LINEAR);
break;
case Z2SE_OBJ_IRONBALL_HIT_ICE:
- i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 41.0f, 0.4f, 0.3f, 1.0f,
- Z2Calc::CURVE_SIGN_2);
+ volume = Z2Calc::getParamByExp(param_2, 0.0f, 41.0f, 0.4f, 0.3f, 1.0f,
+ Z2Calc::CURVE_LINEAR);
break;
case Z2SE_OBJ_L8_B_FOG_FLY: {
Vec tmp = Z2GetAudience()->getAudioCamPos(0);
- if (i_pos->y > tmp.y) {
+ if (posPtr->y > tmp.y) {
return false;
}
break;
@@ -296,29 +304,29 @@ bool Z2SeMgr::seStart(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, s8 i_
seStart(param_2 + 0x8C, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
break;
case Z2SE_OBJ_AMATA_ACTION:
- i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 400.0f, 0.4f, 0.5f, 1.0f,
- Z2Calc::CURVE_SIGN_0);
- i_pitch = Z2Calc::getParamByExp(param_2, 0.0f, 400.0f, 0.4f, 0.8f, 1.1f,
- Z2Calc::CURVE_SIGN_0);
+ volume = Z2Calc::getParamByExp(param_2, 0.0f, 400.0f, 0.4f, 0.5f, 1.0f,
+ Z2Calc::CURVE_NEGATIVE);
+ pitch = Z2Calc::getParamByExp(param_2, 0.0f, 400.0f, 0.4f, 0.8f, 1.1f,
+ Z2Calc::CURVE_NEGATIVE);
break;
case Z2SE_OBJ_TOY_BONE_BOUND:
- i_volume = Z2Calc::getParamByExp(param_2, 15.0f, 60.0f, 0.4f, 0.0f, 1.0f,
- Z2Calc::CURVE_SIGN_1);
+ volume = Z2Calc::getParamByExp(param_2, 15.0f, 60.0f, 0.4f, 0.0f, 1.0f,
+ Z2Calc::CURVE_POSITIVE);
break;
case Z2SE_FN_ROPE_CREAK_ADD:
param_2 = Z2Calc::getParamByExp(param_2, 0.0f, 127.0f, 0.2f, 0.0f, 127.0f,
- Z2Calc::CURVE_SIGN_0);
- i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 127.0f, 0.2f, 0.2f, 1.0f,
- Z2Calc::CURVE_SIGN_0);
- i_pitch = Z2Calc::getParamByExp(param_2, 127.0f, 0.0f, 0.2f, 0.8f, 1.2f,
- Z2Calc::CURVE_SIGN_1);
+ Z2Calc::CURVE_NEGATIVE);
+ volume = Z2Calc::getParamByExp(param_2, 0.0f, 127.0f, 0.2f, 0.2f, 1.0f,
+ Z2Calc::CURVE_NEGATIVE);
+ pitch = Z2Calc::getParamByExp(param_2, 127.0f, 0.0f, 0.2f, 0.8f, 1.2f,
+ Z2Calc::CURVE_POSITIVE);
break;
case Z2SE_OBJ_DARK_GATE_RIPPLE:
if (Z2GetSceneMgr()->getCurrentSceneNum() == 3) {
- i_soundID = Z2SE_OBJ_DARK_GATE_RIPPLE_WLF;
+ soundID = Z2SE_OBJ_DARK_GATE_RIPPLE_WLF;
} else if (Z2GetSceneMgr()->getCurrentSceneNum() == 30
&& Z2GetSceneMgr()->getCurrentRoomNum() == 7) {
- i_soundID = Z2SE_OBJ_DARK_GATE_RIPPLE_WLF;
+ soundID = Z2SE_OBJ_DARK_GATE_RIPPLE_WLF;
}
break;
case Z2SE_OBJ_ARMOR_SWING:
@@ -326,12 +334,12 @@ bool Z2SeMgr::seStart(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, s8 i_
break;
}
- if (isLevelSe(i_soundID)) {
- return seStartLevel(i_soundID, i_pos, param_2, i_reverb, i_pitch,
- i_volume, i_pan, i_dolby, param_8);
+ if (isLevelSe(soundID)) {
+ return seStartLevel(soundID, posPtr, param_2, reverb, pitch,
+ volume, pan, dolby, param_8);
}
- if (isSoundCulling(i_soundID)) {
+ if (isSoundCulling(soundID)) {
return false;
}
@@ -340,17 +348,17 @@ bool Z2SeMgr::seStart(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, s8 i_
return false;
}
- return Z2GetSoundStarter()->startSound(i_soundID, handle, (JGeometry::TVec3<f32>*)i_pos,
- param_2, i_reverb / 127.0f,
- i_pitch, i_volume, i_pan, i_dolby, 0);
+ return Z2GetSoundStarter()->startSound(soundID, handle, (JGeometry::TVec3<f32>*)posPtr,
+ param_2, reverb / 127.0f,
+ pitch, volume, pan, dolby, 0);
}
/* 802AC50C-802AD8B0 2A6E4C 13A4+00 3/2 19/19 199/199 .text
* seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc */
-bool Z2SeMgr::seStartLevel(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, s8 i_reverb,
- f32 i_pitch, f32 i_volume, f32 i_pan, f32 i_dolby, u8 param_8) {
+bool Z2SeMgr::seStartLevel(JAISoundID soundID, const Vec* posPtr, u32 param_2, s8 reverb,
+ f32 pitch, f32 volume, f32 pan, f32 dolby, u8 param_8) {
if (param_8 != 1) {
- switch (i_soundID) {
+ switch (soundID) {
case Z2SE_OBJ_FIRE_BURNING:
if (Z2GetStatusMgr()->getDemoStatus() == 2 || !Z2GetSceneMgr()->isInGame()) {
return false;
@@ -361,36 +369,36 @@ bool Z2SeMgr::seStartLevel(JAISoundID i_soundID, Vec const* i_pos, u32 param_2,
case Z2SE_OBJ_L8_L_BALL_SW:
case Z2SE_OBJ_GANON_BARRIER:
case Z2SE_OBJ_CRVN_BURNING:
- setLevObjSE(i_soundID, const_cast<Vec*>(i_pos), i_reverb);
+ setLevObjSE(soundID, const_cast<Vec*>(posPtr), reverb);
return false;
}
}
- switch (i_soundID) {
+ switch (soundID) {
case Z2SE_OBJ_FLAG_TRAILING:
- i_volume = Z2Calc::getParamByExp(param_2, 25.0f, 127.0f, 0.4f, 0.1f, 1.0f,
- Z2Calc::CURVE_SIGN_0);
- i_pitch = Z2Calc::getParamByExp(param_2, 25.0f, 127.0f, 0.4f, 0.7f, 1.2f,
- Z2Calc::CURVE_SIGN_0);
+ volume = Z2Calc::getParamByExp(param_2, 25.0f, 127.0f, 0.4f, 0.1f, 1.0f,
+ Z2Calc::CURVE_NEGATIVE);
+ pitch = Z2Calc::getParamByExp(param_2, 25.0f, 127.0f, 0.4f, 0.7f, 1.2f,
+ Z2Calc::CURVE_NEGATIVE);
break;
case Z2SE_OBJ_BRIDGE_TRAILING:
case Z2SE_OBJ_BROKENBRIDGE:
- i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 127.0f, 0.4f, 0.1f, 1.0f,
- Z2Calc::CURVE_SIGN_0);
- i_pitch = Z2Calc::getParamByExp(param_2, 0.0f, 127.0f, 0.4f, 0.7f, 1.2f,
- Z2Calc::CURVE_SIGN_0);
+ volume = Z2Calc::getParamByExp(param_2, 0.0f, 127.0f, 0.4f, 0.1f, 1.0f,
+ Z2Calc::CURVE_NEGATIVE);
+ pitch = Z2Calc::getParamByExp(param_2, 0.0f, 127.0f, 0.4f, 0.7f, 1.2f,
+ Z2Calc::CURVE_NEGATIVE);
break;
case Z2SE_OBJ_BOOMSHTR_SWITCH:
if (param_2 < 10) {
param_2 = 10;
}
- i_volume = Z2Calc::getParamByExp(param_2, 10.0f, 127.0f, 2.0f, 0.0f, 1.0f,
- Z2Calc::CURVE_SIGN_1);
- i_pitch = Z2Calc::getParamByExp(param_2, 10.0f, 127.0f, 2.0f, 0.7f, 1.2f,
- Z2Calc::CURVE_SIGN_1);
+ volume = Z2Calc::getParamByExp(param_2, 10.0f, 127.0f, 2.0f, 0.0f, 1.0f,
+ Z2Calc::CURVE_POSITIVE);
+ pitch = Z2Calc::getParamByExp(param_2, 10.0f, 127.0f, 2.0f, 0.7f, 1.2f,
+ Z2Calc::CURVE_POSITIVE);
break;
case Z2SE_OBJ_FAN_WIND_S:
- modHeightAtCamera(&i_pos);
+ modHeightAtCamera(&posPtr);
break;
case Z2SE_OBJ_FAN_ROLL_S:
case Z2SE_OBJ_FAN_ROLL_M:
@@ -398,175 +406,174 @@ bool Z2SeMgr::seStartLevel(JAISoundID i_soundID, Vec const* i_pos, u32 param_2,
if (param_2 < 10) {
param_2 = 10;
}
- i_volume = Z2Calc::getParamByExp(param_2, 10.0f, 127.0f, 2.0f, 0.0f, 1.0f,
- Z2Calc::CURVE_SIGN_1);
- i_pitch = Z2Calc::getParamByExp(param_2, 10.0f, 127.0f, 2.0f, 0.7f, 1.2f,
- Z2Calc::CURVE_SIGN_1);
+ volume = Z2Calc::getParamByExp(param_2, 10.0f, 127.0f, 2.0f, 0.0f, 1.0f,
+ Z2Calc::CURVE_POSITIVE);
+ pitch = Z2Calc::getParamByExp(param_2, 10.0f, 127.0f, 2.0f, 0.7f, 1.2f,
+ Z2Calc::CURVE_POSITIVE);
break;
case Z2SE_OBJ_AMI_ROLL:
if (param_2 < 10) {
param_2 = 10;
}
- i_volume = Z2Calc::getParamByExp(param_2, 10.0f, 127.0f, 2.0f, 0.0f, 1.0f,
- Z2Calc::CURVE_SIGN_1);
- i_pitch = Z2Calc::getParamByExp(param_2, 10.0f, 127.0f, 2.0f, 0.7f, 1.2f,
- Z2Calc::CURVE_SIGN_1);
+ volume = Z2Calc::getParamByExp(param_2, 10.0f, 127.0f, 2.0f, 0.0f, 1.0f,
+ Z2Calc::CURVE_POSITIVE);
+ pitch = Z2Calc::getParamByExp(param_2, 10.0f, 127.0f, 2.0f, 0.7f, 1.2f,
+ Z2Calc::CURVE_POSITIVE);
break;
case Z2SE_OBJ_BRDG_MOVE:
- i_pitch = Z2Calc::getParamByExp(param_2, 0.0f, 127.0f, 2.0f, 0.7f, 1.2f,
- Z2Calc::CURVE_SIGN_1);
+ pitch = Z2Calc::getParamByExp(param_2, 0.0f, 127.0f, 2.0f, 0.7f, 1.2f,
+ Z2Calc::CURVE_POSITIVE);
break;
case Z2SE_ENV_WIND_SARUDAN:
- i_volume = Z2Calc::getParamByExp(param_2, 25.0f, 127.0f, 0.4f, 0.4f, 1.0f,
- Z2Calc::CURVE_SIGN_0);
- i_pitch = Z2Calc::getParamByExp(param_2, 25.0f, 127.0f, 0.4f, 0.8f, 1.0f,
- Z2Calc::CURVE_SIGN_0);
+ volume = Z2Calc::getParamByExp(param_2, 25.0f, 127.0f, 0.4f, 0.4f, 1.0f,
+ Z2Calc::CURVE_NEGATIVE);
+ pitch = Z2Calc::getParamByExp(param_2, 25.0f, 127.0f, 0.4f, 0.8f, 1.0f,
+ Z2Calc::CURVE_NEGATIVE);
break;
case Z2SE_OBJ_CHANDLV9_SWING:
if (param_2 < 10) {
param_2 = 10;
}
- i_volume = Z2Calc::getParamByExp(param_2, 10.0f, 127.0f, 2.0f, 0.0f, 1.0f,
- Z2Calc::CURVE_SIGN_1);
- i_pitch = Z2Calc::getParamByExp(param_2, 10.0f, 127.0f, 2.0f, 0.7f, 1.2f,
- Z2Calc::CURVE_SIGN_1);
+ volume = Z2Calc::getParamByExp(param_2, 10.0f, 127.0f, 2.0f, 0.0f, 1.0f,
+ Z2Calc::CURVE_POSITIVE);
+ pitch = Z2Calc::getParamByExp(param_2, 10.0f, 127.0f, 2.0f, 0.7f, 1.2f,
+ Z2Calc::CURVE_POSITIVE);
break;
case Z2SE_OBJ_BOMB_HOUSE_BURN:
if (param_2 > 300) {
seStartLevel(Z2SE_OBJ_BOMB_HOUSE_BURN_S, NULL, param_2, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
}
if (param_2 > 500) {
- i_volume = 1.0f;
- i_pitch = 1.3f;
+ volume = 1.0f;
+ pitch = 1.3f;
} else {
- i_volume = param_2 * 0.0006 + 0.7;
- i_pitch = param_2 * 0.0006 + 1.0;
+ volume = param_2 * 0.0006 + 0.7;
+ pitch = param_2 * 0.0006 + 1.0;
}
break;
case Z2SE_OBJ_BOMB_HOUSE_BURN_S:
if (param_2 > 500) {
- i_volume = 1.0f;
- i_pitch = (param_2 - 500) * 0.0015 + 1.0;
+ volume = 1.0f;
+ pitch = (param_2 - 500) * 0.0015 + 1.0;
} else if (param_2 < 300) {
- i_volume = 0.0f;
+ volume = 0.0f;
} else {
- i_volume = (param_2 - 300) * 0.005;
+ volume = (param_2 - 300) * 0.005;
}
break;
case Z2SE_OBJ_WTR_CLMN_UP:
if (param_2 <= 500) {
- i_pitch = 0.8f;
+ pitch = 0.8f;
} else if (param_2 > 500 && param_2 <= 1000) {
- i_pitch = 1.0f;
+ pitch = 1.0f;
} else if (param_2 > 1000 && param_2 <= 1500) {
- i_pitch = 1.0f;
+ pitch = 1.0f;
} else {
- i_pitch = 1.2f;
+ pitch = 1.2f;
}
- modHeightAtCamera(&i_pos);
+ modHeightAtCamera(&posPtr);
break;
case Z2SE_OBJ_WTR_CLMN_DOWN:
if (param_2 > 700) {
- i_pitch = 1.0f;
+ pitch = 1.0f;
} else {
- i_pitch = param_2 * 0.001 + 0.3;
+ pitch = param_2 * 0.001 + 0.3;
}
- modHeightAtCamera(&i_pos);
+ modHeightAtCamera(&posPtr);
break;
case Z2SE_OBJ_STN_SPRL_RAIL:
case Z2SE_OBJ_STN_SPRL_RAIL_DW:
- modHeightAtCamera(&i_pos);
+ modHeightAtCamera(&posPtr);
break;
case Z2SE_OBJ_SPNR_GEAR_S:
- i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 4000.0f, 0.4f, 0.3f, 1.0f,
- Z2Calc::CURVE_SIGN_0);
- i_pitch = Z2Calc::getParamByExp(param_2, 0.0f, 4000.0f, 0.4f, 0.7f, 1.2f,
- Z2Calc::CURVE_SIGN_0);
+ volume = Z2Calc::getParamByExp(param_2, 0.0f, 4000.0f, 0.4f, 0.3f, 1.0f,
+ Z2Calc::CURVE_NEGATIVE);
+ pitch = Z2Calc::getParamByExp(param_2, 0.0f, 4000.0f, 0.4f, 0.7f, 1.2f,
+ Z2Calc::CURVE_NEGATIVE);
break;
case Z2SE_OBJ_SPNR_GEAR_L:
- i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 3500.0f, 0.4f, 0.3f, 1.0f,
- Z2Calc::CURVE_SIGN_0);
- i_pitch = Z2Calc::getParamByExp(param_2, 0.0f, 3500.0f, 0.4f, 0.7f, 1.2f,
- Z2Calc::CURVE_SIGN_0);
+ volume = Z2Calc::getParamByExp(param_2, 0.0f, 3500.0f, 0.4f, 0.3f, 1.0f,
+ Z2Calc::CURVE_NEGATIVE);
+ pitch = Z2Calc::getParamByExp(param_2, 0.0f, 3500.0f, 0.4f, 0.7f, 1.2f,
+ Z2Calc::CURVE_NEGATIVE);
break;
case Z2SE_OBJ_TOGE_SPIN:
- i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 26.0f, 0.4f, 0.6f, 1.0f,
- Z2Calc::CURVE_SIGN_0);
- i_pitch = Z2Calc::getParamByExp(param_2, 0.0f, 26.0f, 0.4f, 0.8f, 1.2f,
- Z2Calc::CURVE_SIGN_0);
+ volume = Z2Calc::getParamByExp(param_2, 0.0f, 26.0f, 0.4f, 0.6f, 1.0f,
+ Z2Calc::CURVE_NEGATIVE);
+ pitch = Z2Calc::getParamByExp(param_2, 0.0f, 26.0f, 0.4f, 0.8f, 1.2f,
+ Z2Calc::CURVE_NEGATIVE);
break;
case Z2SE_OBJ_STN_WL_RL:
case Z2SE_OBJ_STN_WL_RL_OP:
- i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 64.0f, 0.4f, 0.3f, 1.0f,
- Z2Calc::CURVE_SIGN_0);
- i_pitch = Z2Calc::getParamByExp(param_2, 0.0f, 64.0f, 0.4f, 0.6f, 1.2f,
- Z2Calc::CURVE_SIGN_0);
+ volume = Z2Calc::getParamByExp(param_2, 0.0f, 64.0f, 0.4f, 0.3f, 1.0f,
+ Z2Calc::CURVE_NEGATIVE);
+ pitch = Z2Calc::getParamByExp(param_2, 0.0f, 64.0f, 0.4f, 0.6f, 1.2f,
+ Z2Calc::CURVE_NEGATIVE);
break;
case Z2SE_OBJ_SPNR_SW_RL:
- i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 4500.0f, 0.4f, 0.6f, 1.0f,
- Z2Calc::CURVE_SIGN_0);
- i_pitch = Z2Calc::getParamByExp(param_2, 0.0f, 4500.0f, 0.4f, 0.7f, 1.2f,
- Z2Calc::CURVE_SIGN_0);
+ volume = Z2Calc::getParamByExp(param_2, 0.0f, 4500.0f, 0.4f, 0.6f, 1.0f,
+ Z2Calc::CURVE_NEGATIVE);
+ pitch = Z2Calc::getParamByExp(param_2, 0.0f, 4500.0f, 0.4f, 0.7f, 1.2f,
+ Z2Calc::CURVE_NEGATIVE);
break;
case Z2SE_OBJ_TOGE_ROLL_MV:
- i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 40.0f, 0.4f, 0.0f, 1.0f,
- Z2Calc::CURVE_SIGN_0);
- i_pitch = Z2Calc::getParamByExp(param_2, 0.0f, 40.0f, 0.4f, 0.8f, 1.2f,
- Z2Calc::CURVE_SIGN_0);
+ volume = Z2Calc::getParamByExp(param_2, 0.0f, 40.0f, 0.4f, 0.0f, 1.0f,
+ Z2Calc::CURVE_NEGATIVE);
+ pitch = Z2Calc::getParamByExp(param_2, 0.0f, 40.0f, 0.4f, 0.8f, 1.2f,
+ Z2Calc::CURVE_NEGATIVE);
break;
case Z2SE_OBJ_L8_L_TORCH_SW:
- i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 120.0f, 0.4f, 0.0f, 1.0f,
- Z2Calc::CURVE_SIGN_0);
- i_pitch = Z2Calc::getParamByExp(param_2, 0.0f, 120.0f, 0.4f, 0.9f, 1.0f,
- Z2Calc::CURVE_SIGN_0);
+ volume = Z2Calc::getParamByExp(param_2, 0.0f, 120.0f, 0.4f, 0.0f, 1.0f,
+ Z2Calc::CURVE_NEGATIVE);
+ pitch = Z2Calc::getParamByExp(param_2, 0.0f, 120.0f, 0.4f, 0.9f, 1.0f,
+ Z2Calc::CURVE_NEGATIVE);
break;
case Z2SE_OBJ_L8_B_FOG_STAY:
- i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 100.0f, 0.4f, 0.0f, 1.0f,
- Z2Calc::CURVE_SIGN_0);
+ volume = Z2Calc::getParamByExp(param_2, 0.0f, 100.0f, 0.4f, 0.0f, 1.0f,
+ Z2Calc::CURVE_NEGATIVE);
break;
case Z2SE_OBJ_L8_B_FALL_S:
- i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 100.0f, 0.4f, 0.0f, 1.0f,
- Z2Calc::CURVE_SIGN_0);
+ volume = Z2Calc::getParamByExp(param_2, 0.0f, 100.0f, 0.4f, 0.0f, 1.0f,
+ Z2Calc::CURVE_NEGATIVE);
break;
case Z2SE_OBJ_L8_B_FALL_L:
- i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 100.0f, 0.4f, 0.0f, 1.0f,
- Z2Calc::CURVE_SIGN_0);
+ volume = Z2Calc::getParamByExp(param_2, 0.0f, 100.0f, 0.4f, 0.0f, 1.0f,
+ Z2Calc::CURVE_NEGATIVE);
break;
case Z2SE_OBJ_L8_L_LIFT_MV:
- i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 5.0f, 0.4f, 0.5f, 1.0f,
- Z2Calc::CURVE_SIGN_0);
- i_pitch = Z2Calc::getParamByExp(param_2, 0.0f, 5.0f, 0.4f, 0.7f, 1.0f,
- Z2Calc::CURVE_SIGN_0);
+ volume = Z2Calc::getParamByExp(param_2, 0.0f, 5.0f, 0.4f, 0.5f, 1.0f,
+ Z2Calc::CURVE_NEGATIVE);
+ pitch = Z2Calc::getParamByExp(param_2, 0.0f, 5.0f, 0.4f, 0.7f, 1.0f,
+ Z2Calc::CURVE_NEGATIVE);
break;
case Z2SE_OBJ_AMATA_CRK:
- i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 400.0f, 0.4f, 0.5f, 1.0f,
- Z2Calc::CURVE_SIGN_0);
- i_pitch = Z2Calc::getParamByExp(param_2, 0.0f, 400.0f, 0.4f, 0.8f, 1.1f,
- Z2Calc::CURVE_SIGN_0);
+ volume = Z2Calc::getParamByExp(param_2, 0.0f, 400.0f, 0.4f, 0.5f, 1.0f,
+ Z2Calc::CURVE_NEGATIVE);
+ pitch = Z2Calc::getParamByExp(param_2, 0.0f, 400.0f, 0.4f, 0.8f, 1.1f,
+ Z2Calc::CURVE_NEGATIVE);
break;
case Z2SE_OBJ_HYRULE_BARRIER:
- if (Z2GetSceneMgr()->getCurrentSceneNum() != 0x16) {
+ if (Z2GetSceneMgr()->getCurrentSceneNum() != Z2SCENE_CASTLE_TOWN) {
break;
}
// fallthrough
case Z2SE_OBJ_DARK_GATE:
- if (!Z2GetSceneMgr()->isInDarkness() && i_pos != NULL
- && Z2GetLink() != NULL && Z2GetLink()->getCurrentPos() != NULL)
+ if (!Z2GetSceneMgr()->isInDarkness() && posPtr != NULL && Z2GetLink() != NULL && Z2GetLink()->getCurrentPos() != NULL)
{
- f32 dist = sqrtf(VECSquareDistance(i_pos, Z2GetLink()->getCurrentPos()));
+ f32 dist = sqrtf(VECSquareDistance(posPtr, Z2GetLink()->getCurrentPos()));
f32 gate_volume = 1.0f;
if (dist < 2000.0f) {
gate_volume = 0.0f;
} else if (dist < 4000.0f) {
gate_volume = Z2Calc::getParamByExp(dist, 2000.0f, 5000.0f, 0.45f, 0.0f, 1.0f,
- Z2Calc::CURVE_SIGN_0);
+ Z2Calc::CURVE_NEGATIVE);
}
Z2GetSeqMgr()->setTwilightGateVol(gate_volume);
}
break;
case Z2SE_OBJ_HASU_WTR:
- i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 50.0f, 0.4f, 0.5f, 1.0f,
- Z2Calc::CURVE_SIGN_0);
+ volume = Z2Calc::getParamByExp(param_2, 0.0f, 50.0f, 0.4f, 0.5f, 1.0f,
+ Z2Calc::CURVE_NEGATIVE);
break;
case Z2SE_ENV_PEOPLE_CROWD: {
f32 scale = 1.0f;
@@ -574,6 +581,7 @@ bool Z2SeMgr::seStartLevel(JAISoundID i_soundID, Vec const* i_pos, u32 param_2,
scale = Z2Calc::linearTransform(J3DUD::JMAAbs(Z2GetLink()->getCurrentPos()->x),
600.0f, 3500.0f, 1.0f, 0.1f, false);
}
+
switch (Z2GetStatusMgr()->getHour()) {
case 0:
case 1:
@@ -624,8 +632,8 @@ bool Z2SeMgr::seStartLevel(JAISoundID i_soundID, Vec const* i_pos, u32 param_2,
scale *= 0.2f;
break;
}
- i_volume = Z2Calc::getParamByExp(mCrowdSize * scale, 5.0f, 90.0f, 0.2f, 0.0f, 1.0f,
- Z2Calc::CURVE_SIGN_0);
+ volume = Z2Calc::getParamByExp(mCrowdSize * scale, 5.0f, 90.0f, 0.2f, 0.0f, 1.0f,
+ Z2Calc::CURVE_NEGATIVE);
break;
}
case Z2SE_AL_COPYROD_WAIT:
@@ -634,17 +642,15 @@ bool Z2SeMgr::seStartLevel(JAISoundID i_soundID, Vec const* i_pos, u32 param_2,
}
for (int i = 0; i < 24; i++) {
- if (mSoundHandles[i] && mSoundHandles[i]->getID() == i_soundID
- && i_pos == (Vec*)mSoundHandles[i]->getUserData())
- {
+ if (mSoundHandles[i] && mSoundHandles[i]->getID() == soundID && posPtr == (Vec*)mSoundHandles[i]->getUserData()) {
if (param_8 == 1) {
- i_volume = Z2GetAudience()->calcOffMicSound(i_volume);
+ volume = Z2GetAudience()->calcOffMicSound(volume);
}
mSoundHandles[i]->updateLifeTime(1);
- if (i_pos != NULL) {
- mSoundHandles[i]->setPos((JGeometry::TVec3<f32>)*i_pos);
+ if (posPtr != NULL) {
+ mSoundHandles[i]->setPos((JGeometry::TVec3<f32>)*posPtr);
}
if (param_2 != 0) {
@@ -652,27 +658,27 @@ bool Z2SeMgr::seStartLevel(JAISoundID i_soundID, Vec const* i_pos, u32 param_2,
Z2GetSoundStarter()->setPortData(handle, 6, param_2, -1);
}
- if (i_reverb != 0) {
- mSoundHandles[i]->getAuxiliary().moveFxMix(i_reverb / 127.0f, 0);
+ if (reverb != 0) {
+ mSoundHandles[i]->getAuxiliary().moveFxMix(reverb / 127.0f, 0);
}
- if (i_pitch != 1.0f) {
- mSoundHandles[i]->getAuxiliary().movePitch(i_pitch, 0);
+ if (pitch != 1.0f) {
+ mSoundHandles[i]->getAuxiliary().movePitch(pitch, 0);
}
- if (i_volume != 1.0f) {
- mSoundHandles[i]->getAuxiliary().moveVolume(i_volume, 0);
+ if (volume != 1.0f) {
+ mSoundHandles[i]->getAuxiliary().moveVolume(volume, 0);
}
- if (i_pan != -1.0f) {
- mSoundHandles[i]->getAuxiliary().movePan(i_pan, 0);
+ if (pan != -1.0f) {
+ mSoundHandles[i]->getAuxiliary().movePan(pan, 0);
}
- if (i_dolby != -1.0f) {
- mSoundHandles[i]->getAuxiliary().moveDolby(i_dolby, 0);
+ if (dolby != -1.0f) {
+ mSoundHandles[i]->getAuxiliary().moveDolby(dolby, 0);
}
return true;
}
}
- if (isSoundCulling(i_soundID)) {
+ if (isSoundCulling(soundID)) {
return false;
}
@@ -681,20 +687,20 @@ bool Z2SeMgr::seStartLevel(JAISoundID i_soundID, Vec const* i_pos, u32 param_2,
return false;
}
- bool ret = Z2GetSoundStarter()->startSound(i_soundID, handle, (JGeometry::TVec3<f32>*)i_pos,
- param_2, i_reverb / 127.0f, i_pitch, i_volume,
- i_pan, i_dolby, false);
+ bool ret = Z2GetSoundStarter()->startSound(soundID, handle, (JGeometry::TVec3<f32>*)posPtr,
+ param_2, reverb / 127.0f, pitch, volume,
+ pan, dolby, false);
if (handle != NULL && *handle) {
- if (i_soundID == Z2SE_OBJ_BOMB_HOUSE_BURN) {
+ if (soundID == Z2SE_OBJ_BOMB_HOUSE_BURN) {
Z2GetSeqMgr()->bgmStart(Z2BGM_EVENT02, 0, 0);
}
if (param_8 == 1) {
- Z2GetAudience()->calcOffMicSound(i_volume);
+ Z2GetAudience()->calcOffMicSound(volume);
}
- (*handle)->setUserData((uintptr_t)i_pos);
+ (*handle)->setUserData((uintptr_t)posPtr);
if (ret) {
(*handle)->setLifeTime(1, false);
@@ -705,11 +711,11 @@ bool Z2SeMgr::seStartLevel(JAISoundID i_soundID, Vec const* i_pos, u32 param_2,
}
/* 802AD8B0-802AD94C 2A81F0 009C+00 1/1 0/0 4/4 .text seStop__7Z2SeMgrF10JAISoundIDUl */
-void Z2SeMgr::seStop(JAISoundID i_soundID, u32 i_count) {
- if (i_soundID != -1) {
+void Z2SeMgr::seStop(JAISoundID soundID, u32 fadeTime) {
+ if (soundID != -1) {
for (u8 i = 0; i < 24; i++) {
- if (mSoundHandles[i] && mSoundHandles[i]->getID() == i_soundID) {
- mSoundHandles[i]->stop(i_count);
+ if (mSoundHandles[i] && mSoundHandles[i]->getID() == soundID) {
+ mSoundHandles[i]->stop(fadeTime);
mSoundHandles[i].releaseSound();
}
}
@@ -717,45 +723,38 @@ void Z2SeMgr::seStop(JAISoundID i_soundID, u32 i_count) {
}
/* 802AD94C-802AD9F4 2A828C 00A8+00 0/0 1/1 0/0 .text seStopAll__7Z2SeMgrFUl */
-void Z2SeMgr::seStopAll(u32 i_count) {
- JAISeMgr* se_mgr = Z2GetSoundMgr()->getSeMgr();
- se_mgr->getCategory(0)->stop(i_count);
- se_mgr->getCategory(1)->stop(i_count);
- se_mgr->getCategory(2)->stop(i_count);
- se_mgr->getCategory(3)->stop(i_count);
- se_mgr->getCategory(4)->stop(i_count);
- se_mgr->getCategory(5)->stop(i_count);
- se_mgr->getCategory(6)->stop(i_count);
- se_mgr->getCategory(7)->stop(i_count);
- se_mgr->getCategory(8)->stop(i_count);
- se_mgr->getCategory(9)->stop(i_count);
+void Z2SeMgr::seStopAll(u32 fadeTime) {
+ JAISeMgr* seMgr = Z2GetSoundMgr()->getSeMgr();
+ seMgr->getCategory(0)->stop(fadeTime);
+ seMgr->getCategory(1)->stop(fadeTime);
+ seMgr->getCategory(2)->stop(fadeTime);
+ seMgr->getCategory(3)->stop(fadeTime);
+ seMgr->getCategory(4)->stop(fadeTime);
+ seMgr->getCategory(5)->stop(fadeTime);
+ seMgr->getCategory(6)->stop(fadeTime);
+ seMgr->getCategory(7)->stop(fadeTime);
+ seMgr->getCategory(8)->stop(fadeTime);
+ seMgr->getCategory(9)->stop(fadeTime);
}
/* 802AD9F4-802ADB14 2A8334 0120+00 3/3 5/5 1/1 .text seMoveVolumeAll__7Z2SeMgrFfUl */
-void Z2SeMgr::seMoveVolumeAll(f32 i_volume, u32 i_count) {
+void Z2SeMgr::seMoveVolumeAll(f32 volume, u32 moveTime) {
if (Z2GetStatusMgr()->getDemoStatus() == 13) {
- i_volume = 0.0f;
+ volume = 0.0f;
}
- JAISeMgr* se_mgr = Z2GetSoundMgr()->getSeMgr();
- se_mgr->getCategory(1)->getParams()
- ->moveVolume(Z2Param::VOL_SE_LINK_VOICE_DEFAULT * i_volume, i_count);
- se_mgr->getCategory(2)->getParams()
- ->moveVolume(Z2Param::VOL_SE_LINK_MOTION_DEFAULT * i_volume, i_count);
- se_mgr->getCategory(3)->getParams()
- ->moveVolume(Z2Param::VOL_SE_LINK_FOOTNOTE_DEFAULT * i_volume, i_count);
- se_mgr->getCategory(4)->getParams()
- ->moveVolume(Z2Param::VOL_SE_OBJECT_DEFAULT * i_volume, i_count);
- se_mgr->getCategory(5)->getParams()
- ->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_DEFAULT * i_volume, i_count);
- se_mgr->getCategory(6)->getParams()
- ->moveVolume(Z2Param::VOL_SE_CHAR_MOVE_DEFAULT * i_volume, i_count);
- se_mgr->getCategory(7)->getParams()
- ->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_DEFAULT * i_volume, i_count);
- se_mgr->getCategory(8)->getParams()
- ->moveVolume(Z2Param::VOL_SE_OBJECT_DEFAULT * i_volume, i_count);
+
+ JAISeMgr* seMgr = Z2GetSoundMgr()->getSeMgr();
+ seMgr->getCategory(1)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_VOICE_DEFAULT * volume, moveTime);
+ seMgr->getCategory(2)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_MOTION_DEFAULT * volume, moveTime);
+ seMgr->getCategory(3)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_FOOTNOTE_DEFAULT * volume, moveTime);
+ seMgr->getCategory(4)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_DEFAULT * volume, moveTime);
+ seMgr->getCategory(5)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_DEFAULT * volume, moveTime);
+ seMgr->getCategory(6)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_MOVE_DEFAULT * volume, moveTime);
+ seMgr->getCategory(7)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_DEFAULT * volume, moveTime);
+ seMgr->getCategory(8)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_DEFAULT * volume, moveTime);
+
if (Z2GetStatusMgr()->getDemoStatus() != 12) {
- se_mgr->getCategory(9)->getParams()
- ->moveVolume(Z2Param::VOL_SE_ATMOSPHERE_DEFAULT * i_volume, i_count);
+ seMgr->getCategory(9)->getParams()->moveVolume(Z2Param::VOL_SE_ATMOSPHERE_DEFAULT * volume, moveTime);
}
}
@@ -771,18 +770,20 @@ void Z2SeMgr::talkInSe() {
if (Z2GetStatusMgr()->getDemoStatus() == 13) {
seMoveVolumeAll(0.0f, 0);
}
- JAISeMgr* se_mgr = Z2GetSoundMgr()->getSeMgr();
- se_mgr->getCategory(0)->getParams()->moveVolume(Z2Param::VOL_SE_SYSTEM_TALKING, 2);
- se_mgr->getCategory(1)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_VOICE_TALKING, 2);
- se_mgr->getCategory(2)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_MOTION_TALKING, 2);
- se_mgr->getCategory(3)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_FOOTNOTE_TALKING, 2);
- se_mgr->getCategory(4)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_TALKING, 2);
- se_mgr->getCategory(5)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_TALKING, 2);
- se_mgr->getCategory(6)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_MOVE_TALKING, 2);
- se_mgr->getCategory(7)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_TALKING, 2);
- se_mgr->getCategory(8)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_TALKING, 2);
+
+ JAISeMgr* seMgr = Z2GetSoundMgr()->getSeMgr();
+ seMgr->getCategory(0)->getParams()->moveVolume(Z2Param::VOL_SE_SYSTEM_TALKING, 2);
+ seMgr->getCategory(1)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_VOICE_TALKING, 2);
+ seMgr->getCategory(2)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_MOTION_TALKING, 2);
+ seMgr->getCategory(3)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_FOOTNOTE_TALKING, 2);
+ seMgr->getCategory(4)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_TALKING, 2);
+ seMgr->getCategory(5)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_TALKING, 2);
+ seMgr->getCategory(6)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_MOVE_TALKING, 2);
+ seMgr->getCategory(7)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_TALKING, 2);
+ seMgr->getCategory(8)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_TALKING, 2);
+
if (Z2GetStatusMgr()->getDemoStatus() != 12) {
- se_mgr->getCategory(9)->getParams()->moveVolume(Z2Param::VOL_SE_ATMOSPHERE_TALKING, 2);
+ seMgr->getCategory(9)->getParams()->moveVolume(Z2Param::VOL_SE_ATMOSPHERE_TALKING, 2);
}
}
}
@@ -793,18 +794,20 @@ void Z2SeMgr::talkOutSe() {
if (Z2GetStatusMgr()->getDemoStatus() == 13) {
seMoveVolumeAll(0.0f, 0);
}
- JAISeMgr* se_mgr = Z2GetSoundMgr()->getSeMgr();
- se_mgr->getCategory(0)->getParams()->moveVolume(Z2Param::VOL_SE_SYSTEM_DEFAULT, 2);
- se_mgr->getCategory(1)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_VOICE_DEFAULT, 2);
- se_mgr->getCategory(2)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_MOTION_DEFAULT, 2);
- se_mgr->getCategory(3)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_FOOTNOTE_DEFAULT, 2);
- se_mgr->getCategory(4)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_DEFAULT, 2);
- se_mgr->getCategory(5)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_DEFAULT, 2);
- se_mgr->getCategory(6)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_MOVE_DEFAULT, 2);
- se_mgr->getCategory(7)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_DEFAULT, 2);
- se_mgr->getCategory(8)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_DEFAULT, 2);
+
+ JAISeMgr* seMgr = Z2GetSoundMgr()->getSeMgr();
+ seMgr->getCategory(0)->getParams()->moveVolume(Z2Param::VOL_SE_SYSTEM_DEFAULT, 2);
+ seMgr->getCategory(1)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_VOICE_DEFAULT, 2);
+ seMgr->getCategory(2)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_MOTION_DEFAULT, 2);
+ seMgr->getCategory(3)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_FOOTNOTE_DEFAULT, 2);
+ seMgr->getCategory(4)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_DEFAULT, 2);
+ seMgr->getCategory(5)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_DEFAULT, 2);
+ seMgr->getCategory(6)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_MOVE_DEFAULT, 2);
+ seMgr->getCategory(7)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_DEFAULT, 2);
+ seMgr->getCategory(8)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_DEFAULT, 2);
+
if (Z2GetStatusMgr()->getDemoStatus() != 12) {
- se_mgr->getCategory(9)->getParams()->moveVolume(Z2Param::VOL_SE_ATMOSPHERE_DEFAULT, 2);
+ seMgr->getCategory(9)->getParams()->moveVolume(Z2Param::VOL_SE_ATMOSPHERE_DEFAULT, 2);
}
}
}
@@ -815,48 +818,50 @@ void Z2SeMgr::menuInSe() {
if (Z2GetStatusMgr()->getDemoStatus() == 13) {
seMoveVolumeAll(0.0f, 0);
}
- JAISeMgr* se_mgr = Z2GetSoundMgr()->getSeMgr();
- se_mgr->getCategory(0)->getParams()->moveVolume(Z2Param::VOL_SE_SYSTEM_PAUSING, 2);
- se_mgr->getCategory(1)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_VOICE_PAUSING, 2);
- se_mgr->getCategory(2)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_MOTION_PAUSING, 2);
- se_mgr->getCategory(3)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_FOOTNOTE_PAUSING, 2);
- se_mgr->getCategory(4)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_PAUSING, 2);
- se_mgr->getCategory(5)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_PAUSING, 2);
- se_mgr->getCategory(6)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_MOVE_PAUSING, 2);
- se_mgr->getCategory(7)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_PAUSING, 2);
- se_mgr->getCategory(8)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_PAUSING, 2);
+
+ JAISeMgr* seMgr = Z2GetSoundMgr()->getSeMgr();
+ seMgr->getCategory(0)->getParams()->moveVolume(Z2Param::VOL_SE_SYSTEM_PAUSING, 2);
+ seMgr->getCategory(1)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_VOICE_PAUSING, 2);
+ seMgr->getCategory(2)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_MOTION_PAUSING, 2);
+ seMgr->getCategory(3)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_FOOTNOTE_PAUSING, 2);
+ seMgr->getCategory(4)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_PAUSING, 2);
+ seMgr->getCategory(5)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_PAUSING, 2);
+ seMgr->getCategory(6)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_MOVE_PAUSING, 2);
+ seMgr->getCategory(7)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_PAUSING, 2);
+ seMgr->getCategory(8)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_PAUSING, 2);
+
if (Z2GetStatusMgr()->getDemoStatus() != 12) {
- se_mgr->getCategory(9)->getParams()->moveVolume(Z2Param::VOL_SE_ATMOSPHERE_PAUSING, 2);
+ seMgr->getCategory(9)->getParams()->moveVolume(Z2Param::VOL_SE_ATMOSPHERE_PAUSING, 2);
}
}
}
/* 802ADE5C-802ADFF4 2A879C 0198+00 1/1 0/0 0/0 .text setLevObjSE__7Z2SeMgrFUlP3VecSc */
-void Z2SeMgr::setLevObjSE(u32 i_soundID, Vec* i_pos, s8 param_2) {
+void Z2SeMgr::setLevObjSE(u32 soundID, Vec* posPtr, s8 reverb) {
u8 i = 0;
for (; i < mLevelObjectSeCount; i++) {
- if (mLevelObjSe[i].mSoundID == i_soundID) {
+ if (mLevelObjSe[i].soundID_ == soundID) {
break;
}
}
+
if (i == mLevelObjectSeCount) {
if (mLevelObjectSeCount == 10) {
return;
}
- mLevelObjSe[i].mSoundID = i_soundID;
+ mLevelObjSe[i].soundID_ = soundID;
mLevelObjectSeCount++;
}
+
f32 volume_scale = 1.0f;
Vec pos = {0.0f, 0.0f, -50.0f};
- if (i_pos != NULL) {
- pos = *i_pos;
+ if (posPtr != NULL) {
+ pos = *posPtr;
} else {
- // fake match, should be something like pos = Z2GetAudience()->getAudioCamPos();
- Vec tmp;
- JGeometry::setTVec3f(*(Vec*)Z2GetAudience()->mAudioCamera[0].getPos(), tmp);
- pos = tmp;
+ pos = Z2GetAudience()->getAudioCamPos(0);
}
- switch (i_soundID) {
+
+ switch (soundID) {
case Z2SE_OBJ_FIRE_BURNING:
volume_scale = 0.7f;
break;
@@ -867,39 +872,40 @@ void Z2SeMgr::setLevObjSE(u32 i_soundID, Vec* i_pos, s8 param_2) {
case Z2SE_OBJ_L8_L_BALL_SW:
break;
}
- mLevelObjSe[i].mVolumeScale = volume_scale;
+
+ mLevelObjSe[i].setVolumeScale(volume_scale);
mLevelObjSe[i].registMultiSePos((Vec*)&pos);
- if (mLevelObjSe[i].field_0x20 < param_2) {
- mLevelObjSe[i].field_0x20 = param_2;
+ if (mLevelObjSe[i].reverb_ < reverb) {
+ mLevelObjSe[i].reverb_ = reverb;
}
}
/* 802ADFF4-802AE184 2A8934 0190+00 1/1 0/0 0/0 .text setMultiTriggerSE__7Z2SeMgrFUlP3VecSc */
-void Z2SeMgr::setMultiTriggerSE(u32 i_soundID, Vec* i_pos, s8 param_2) {
+void Z2SeMgr::setMultiTriggerSE(u32 soundID, Vec* posPtr, s8 reverb) {
u8 i = 0;
for (; i < mMultiTriggerSeCount; i++) {
- if (mMultiTriggerSe[i].mSoundID == i_soundID) {
+ if (mMultiTriggerSe[i].soundID_ == soundID) {
break;
}
}
+
if (i == mMultiTriggerSeCount) {
if (mMultiTriggerSeCount == 10) {
return;
}
- mMultiTriggerSe[i].mSoundID = i_soundID;
+ mMultiTriggerSe[i].soundID_ = soundID;
mMultiTriggerSeCount++;
}
+
f32 volume_scale = 1.0f;
Vec pos = {0.0f, 0.0f, -50.0f};
- if (i_pos != NULL) {
- pos = *i_pos;
+ if (posPtr != NULL) {
+ pos = *posPtr;
} else {
- // fake match, should be something like pos = Z2GetAudience()->getAudioCamPos();
- Vec tmp;
- JGeometry::setTVec3f(*(Vec*)Z2GetAudience()->mAudioCamera[0].getPos(), tmp);
- pos = tmp;
+ pos = Z2GetAudience()->getAudioCamPos(0);
}
- switch (i_soundID) {
+
+ switch (soundID) {
case Z2SE_OBJ_L8_STAIR_ON:
case Z2SE_OBJ_L8_STAIR_MV_UP:
case Z2SE_OBJ_L8_STAIR_MV_DW:
@@ -912,10 +918,11 @@ void Z2SeMgr::setMultiTriggerSE(u32 i_soundID, Vec* i_pos, s8 param_2) {
volume_scale = 1.3f;
break;
}
- mMultiTriggerSe[i].mVolumeScale = volume_scale;
+
+ mMultiTriggerSe[i].setVolumeScale(volume_scale);
mMultiTriggerSe[i].registMultiSePos((Vec*)&pos);
- if (mMultiTriggerSe[i].field_0x20 < param_2) {
- mMultiTriggerSe[i].field_0x20 = param_2;
+ if (mMultiTriggerSe[i].reverb_ < reverb) {
+ mMultiTriggerSe[i].reverb_ = reverb;
}
}
@@ -924,72 +931,86 @@ void Z2SeMgr::processSeFramework() {
if (Z2GetSceneMgr()->isSceneExist() && mCrowdSize != 0) {
seStartLevel(Z2SE_ENV_PEOPLE_CROWD, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
}
+
for (u8 i = 0; i < mLevelObjectSeCount; i++) {
f32 volume = mLevelObjSe[i].getMaxVolume();
- seStartLevel(mLevelObjSe[i].mSoundID, NULL, 0, mLevelObjSe[i].field_0x20, 1.0f,
+ seStartLevel(mLevelObjSe[i].soundID_, NULL, 0, mLevelObjSe[i].reverb_, 1.0f,
volume, mLevelObjSe[i].getPanPower(), mLevelObjSe[i].getDolbyPower(), 1);
}
+
for (u8 i = 0; i < 10; i++) {
mLevelObjSe[i].resetMultiSePos();
- mLevelObjSe[i].mSoundID = -1;
- mLevelObjSe[i].field_0x20 = 0;
+ mLevelObjSe[i].soundID_ = -1;
+ mLevelObjSe[i].reverb_ = 0;
}
+
mLevelObjectSeCount = 0;
for (u8 i = 0; i < mMultiTriggerSeCount; i++) {
f32 volume = mMultiTriggerSe[i].getMaxVolume();
- seStart(mMultiTriggerSe[i].mSoundID, NULL, 0, mMultiTriggerSe[i].field_0x20, 1.0f,
+ seStart(mMultiTriggerSe[i].soundID_, NULL, 0, mMultiTriggerSe[i].reverb_, 1.0f,
volume, mMultiTriggerSe[i].getPanPower(),
mMultiTriggerSe[i].getDolbyPower(), 1);
}
+
for (u8 i = 0; i < 10; i++) {
mMultiTriggerSe[i].resetMultiSePos();
- mMultiTriggerSe[i].mSoundID = -1;
- mMultiTriggerSe[i].field_0x20 = 0;
+ mMultiTriggerSe[i].soundID_ = -1;
+ mMultiTriggerSe[i].reverb_ = 0;
}
+
mMultiTriggerSeCount = 0;
field_0x3c9 = 0;
field_0x3ca = 0;
field_0x3cb = 0;
+
if (field_0x3c2 != 0) {
field_0x3c2--;
} else {
field_0x3c2 = 0;
}
+
if (field_0x3c3 != 0) {
field_0x3c3--;
} else {
field_0x3c3 = 0;
}
+
if (field_0x3c4 != 0) {
field_0x3c4--;
} else {
field_0x3c4 = 0;
}
+
if (field_0x3c5 != 0) {
field_0x3c5--;
} else {
field_0x3c5 = 0;
}
+
if (field_0x3c0 != 0) {
field_0x3c0--;
} else {
field_0x3c0 = 0;
}
+
if (field_0x3c1 != 0) {
field_0x3c1--;
} else {
field_0x3c1 = 0;
}
+
if (field_0x3c6 != 0) {
field_0x3c6--;
} else {
field_0x3c6 = 0;
}
+
if (field_0x3c7 != 0) {
field_0x3c7--;
} else {
field_0x3c7 = 0;
}
+
if (field_0x3c8 != 0) {
field_0x3c8--;
} else {
@@ -999,8 +1020,8 @@ void Z2SeMgr::processSeFramework() {
/* 802AE524-802AE5B0 2A8E64 008C+00 1/1 0/0 0/0 .text isLevelSe__7Z2SeMgrF10JAISoundID */
-bool Z2SeMgr::isLevelSe(JAISoundID i_soundID) {
- switch (i_soundID) {
+bool Z2SeMgr::isLevelSe(JAISoundID soundID) {
+ switch (soundID) {
case JA_SE_LK_MOVE_ROCK:
case JA_SE_LK_MOVE_WBLOCK:
case Z2SE_OBJ_FIRE_BURNING:
@@ -1016,9 +1037,9 @@ bool Z2SeMgr::isLevelSe(JAISoundID i_soundID) {
}
/* 802AE5B0-802AEB04 2A8EF0 0554+00 2/2 3/3 0/0 .text isSoundCulling__7Z2SeMgrF10JAISoundID */
-bool Z2SeMgr::isSoundCulling(JAISoundID i_soundID) {
+bool Z2SeMgr::isSoundCulling(JAISoundID soundID) {
if (Z2GetSeqMgr()->isItemGetDemo()) {
- switch (i_soundID) {
+ switch (soundID) {
case Z2SE_HP_GAUGE_INC:
case Z2SE_SY_TALK_NEXT:
case Z2SE_SY_TALK_END:
@@ -1041,7 +1062,8 @@ bool Z2SeMgr::isSoundCulling(JAISoundID i_soundID) {
return true;
}
}
- switch (i_soundID) {
+
+ switch (soundID) {
case Z2SE_MIDNA_APPEAR:
case Z2SE_MIDNA_DISAPPEAR:
if (!Z2GetSceneMgr()->isSceneExist()) {
@@ -1097,15 +1119,15 @@ bool Z2SeMgr::isSoundCulling(JAISoundID i_soundID) {
return true;
}
field_0x3ca = 1;
- Z2GetSoundMgr()->multiVolumeSoundID(i_soundID, 0.5f);
+ Z2GetSoundMgr()->multiVolumeSoundID(soundID, 0.5f);
break;
case Z2SE_DARK_VANISH:
if (field_0x3cb != 0) {
return true;
}
field_0x3cb = 1;
- Z2GetSoundMgr()->stopSoundID(i_soundID);
- Z2GetSoundMgr()->multiVolumeSoundID(i_soundID, 0.5f);
+ Z2GetSoundMgr()->stopSoundID(soundID);
+ Z2GetSoundMgr()->multiVolumeSoundID(soundID, 0.5f);
break;
case Z2SE_EN_BS_V_DEAD:
case Z2SE_EN_FZ_BOUND:
@@ -1159,6 +1181,7 @@ bool Z2SeMgr::isSoundCulling(JAISoundID i_soundID) {
case Z2SE_EN_BS_APPEAR:
break;
}
+
return false;
}
@@ -1170,52 +1193,57 @@ Z2MultiSeMgr::Z2MultiSeMgr() {
Z2MultiSeMgr::~Z2MultiSeMgr() {}
/* 802AEB70-802AECBC 2A94B0 014C+00 2/2 6/6 0/0 .text registMultiSePos__12Z2MultiSeMgrFP3Vec */
-s8 Z2MultiSeMgr::registMultiSePos(Vec* i_pos) {
- if (i_pos == NULL) {
+s8 Z2MultiSeMgr::registMultiSePos(Vec* posPtr) {
+ if (posPtr == NULL) {
return 0;
}
- if (mPosCount < 0) {
- mPosCount = 0;
+
+ if (posCount_ < 0) {
+ posCount_ = 0;
}
+
Vec rel_pos;
- Z2GetAudience()->convertAbsToRel(*i_pos, &rel_pos, 0);
- f32 volume = Z2GetAudience()->calcRelPosVolume(rel_pos, mVolumeScale, 0);
+ Z2GetAudience()->convertAbsToRel(*posPtr, &rel_pos, 0);
+
+ f32 volume = Z2GetAudience()->calcRelPosVolume(rel_pos, volumeScale_, 0);
if (volume <= 0.0f) {
- return mPosCount;
+ return posCount_;
}
+
f32 pan = Z2GetAudience()->calcRelPosPan(rel_pos, 0);
f32 dolby = Z2GetAudience()->calcRelPosDolby(rel_pos, 0);
f32 pow_l = (1.0f - pan) * volume;
f32 pow_r = pan * volume;
f32 pow_f = (1.0f - dolby) * volume;
f32 pow_b = dolby * volume;
- if (volume > mMaxVolume) {
- mMaxVolume = volume;
+ if (volume > maxVolume_) {
+ maxVolume_ = volume;
}
- if (pow_l > mMaxPowL) {
- mMaxPowL = pow_l;
+ if (pow_l > maxPowL_) {
+ maxPowL_ = pow_l;
}
- if (pow_r > mMaxPowR) {
- mMaxPowR = pow_r;
+ if (pow_r > maxPowR_) {
+ maxPowR_ = pow_r;
}
- if (pow_f > mMaxPowF) {
- mMaxPowF = pow_f;
+ if (pow_f > maxPowF_) {
+ maxPowF_ = pow_f;
}
- if (pow_b > mMaxPowB) {
- mMaxPowB = pow_b;
+ if (pow_b > maxPowB_) {
+ maxPowB_ = pow_b;
}
- mPosCount++;
- return mPosCount;
+
+ posCount_++;
+ return posCount_;
}
-void Z2MultiSeMgr::resetMultiSePos(void) {
- mPosCount = -1;
- mMaxPowL = 0.0f;
- mMaxPowR = 0.0f;
- mMaxPowF = 0.0f;
- mMaxPowB = 0.0f;
- mMaxVolume = 0.0f;
+void Z2MultiSeMgr::resetMultiSePos() {
+ posCount_ = -1;
+ maxPowL_ = 0.0f;
+ maxPowR_ = 0.0f;
+ maxPowF_ = 0.0f;
+ maxPowB_ = 0.0f;
+ maxVolume_ = 0.0f;
}
/* 802AECE0-802AEDC0 2A9620 00E0+00 1/1 8/8 0/0 .text getPanPower__12Z2MultiSeMgrFv */
@@ -1231,7 +1259,6 @@ f32 Z2MultiSeMgr::getPanPower() {
}
}
-
/* 802AEDC0-802AEEA0 2A9700 00E0+00 1/1 8/8 0/0 .text getDolbyPower__12Z2MultiSeMgrFv */
f32 Z2MultiSeMgr::getDolbyPower() {
f32 pow_b = getMaxPowB();
diff --git a/src/Z2AudioLib/Z2SeqMgr.cpp b/src/Z2AudioLib/Z2SeqMgr.cpp
index 82f91fd01e..da9f8b1ced 100644
--- a/src/Z2AudioLib/Z2SeqMgr.cpp
+++ b/src/Z2AudioLib/Z2SeqMgr.cpp
@@ -1,8 +1,3 @@
-//
-// Generated By: dol2asm
-// Translation Unit: Z2SeqMgr
-//
-
#include "Z2AudioLib/Z2SeqMgr.h"
#include "Z2AudioLib/Z2LinkMgr.h"
#include "Z2AudioLib/Z2Param.h"
@@ -13,7 +8,90 @@
#include "Z2AudioLib/Z2Calc.h"
#include "JSystem/JAudio2/JAISoundChild.h"
#include "JSystem/JAudio2/JAISeq.h"
-#include "dol2asm.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",
+};
/* 802AEEA0-802AF010 2A97E0 0170+00 0/0 1/1 0/0 .text __ct__8Z2SeqMgrFv */
Z2SeqMgr::Z2SeqMgr() : JASGlobalInstance<Z2SeqMgr>(true) {
@@ -53,12 +131,12 @@ Z2SeqMgr::Z2SeqMgr() : JASGlobalInstance<Z2SeqMgr>(true) {
}
/* 802AF010-802AF408 2A9950 03F8+00 3/3 5/5 38/38 .text bgmStart__8Z2SeqMgrFUlUll */
-void Z2SeqMgr::bgmStart(u32 i_bgmID, u32 i_count, s32 param_2) {
- switch (i_bgmID) {
+void Z2SeqMgr::bgmStart(u32 bgmID, u32 fadeTime, s32 param_2) {
+ switch (bgmID) {
case -1:
return;
case 0x200005D:
- bgmAllUnMute(0x21);
+ bgmAllUnMute(33);
bgmStreamPrepare(0x200005d);
bgmStreamPlay();
return;
@@ -67,13 +145,13 @@ void Z2SeqMgr::bgmStart(u32 i_bgmID, u32 i_count, s32 param_2) {
mMainBgmMaster.forceIn();
break;
case Z2BGM_GAME_OVER:
- if (getMainBgmID() != i_bgmID) {
+ if (getMainBgmID() != bgmID) {
Z2GetSceneMgr()->setInGame(false);
Z2GetSceneMgr()->setSceneExist(false);
setBattleBgmOff(true);
Z2GetSoundMgr()->getSeqMgr()->stop(0);
Z2GetSoundMgr()->getStreamMgr()->stop(0);
- Z2GetSoundMgr()->startSound(i_bgmID, &mMainBgmHandle, NULL);
+ Z2GetSoundMgr()->startSound(bgmID, &mMainBgmHandle, NULL);
mBgmStatus = 0xff;
}
return;
@@ -81,7 +159,7 @@ void Z2SeqMgr::bgmStart(u32 i_bgmID, u32 i_count, s32 param_2) {
if (Z2GetLink() != NULL && Z2GetLink()->getCurrentPos() != NULL &&
Z2GetLink()->getCurrentPos()->y > -10000.0f)
{
- i_bgmID = Z2BGM_RAKKA_HOUSE;
+ bgmID = Z2BGM_RAKKA_HOUSE;
}
break;
case Z2BGM_VS_GANON_01:
@@ -96,33 +174,37 @@ void Z2SeqMgr::bgmStart(u32 i_bgmID, u32 i_count, s32 param_2) {
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 {
+ } else
+ #endif
+ {
bgmStop(0, param_2);
}
- if (i_bgmID == Z2BGM_FIELD_LINK_DAY || i_bgmID == Z2BGM_FIELD_LINK_NIGHT) {
+ if (bgmID == Z2BGM_FIELD_LINK_DAY || bgmID == Z2BGM_FIELD_LINK_NIGHT) {
fieldBgmStart();
} else {
- Z2GetSoundMgr()->startSound(i_bgmID, &mMainBgmHandle, NULL);
+ Z2GetSoundMgr()->startSound(bgmID, &mMainBgmHandle, NULL);
mBgmStatus = 0xff;
}
- if (param_2 == 0 && i_count != 0) {
- mMainBgmMaster.fadeInFromOut(i_count);
+ if (param_2 == 0 && fadeTime != 0) {
+ mMainBgmMaster.fadeInFromOut(fadeTime);
}
- if (i_bgmID == Z2BGM_BOSS_SNOWWOMAN_1 || i_bgmID == Z2BGM_HORSE_BATTLE
- || i_bgmID == Z2BGM_VS_GANON_02 || i_bgmID == Z2BGM_TOAL_VILLEGE)
+ if (bgmID == Z2BGM_BOSS_SNOWWOMAN_1 || bgmID == Z2BGM_HORSE_BATTLE
+ || bgmID == Z2BGM_VS_GANON_02 || bgmID == Z2BGM_TOAL_VILLEGE)
{
changeBgmStatus(0);
}
@@ -132,116 +214,53 @@ void Z2SeqMgr::bgmStart(u32 i_bgmID, u32 i_count, s32 param_2) {
} 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
}
/* 802AF408-802AF49C 2A9D48 0094+00 3/3 5/5 30/30 .text bgmStop__8Z2SeqMgrFUll */
-void Z2SeqMgr::bgmStop(u32 i_count, s32 param_1) {
+void Z2SeqMgr::bgmStop(u32 fadeTime, s32 param_1) {
if (mMainBgmHandle) {
- mMainBgmHandle->stop(i_count);
+ mMainBgmHandle->stop(fadeTime);
}
+
if (mStreamBgmHandle) {
- mStreamBgmHandle->stop(i_count);
+ mStreamBgmHandle->stop(fadeTime);
}
+
if (param_1 == 0) {
if (mSubBgmHandle) {
- mSubBgmHandle->stop(i_count);
+ mSubBgmHandle->stop(fadeTime);
}
mMainBgmMaster.forceIn();
}
}
-static void dummyString() {
- DEAD_STRING("F_SP00");
- DEAD_STRING("F_SP103");
- DEAD_STRING("R_SP01");
- DEAD_STRING("F_SP104");
- DEAD_STRING("R_SP107");
- DEAD_STRING("F_SP108");
- DEAD_STRING("R_SP108");
- DEAD_STRING("F_SP117");
- DEAD_STRING("F_SP109");
- DEAD_STRING("R_SP109");
- DEAD_STRING("R_SP209");
- DEAD_STRING("F_SP110");
- DEAD_STRING("R_SP110");
- DEAD_STRING("F_SP111");
- DEAD_STRING("F_SP128");
- DEAD_STRING("R_SP128");
- DEAD_STRING("F_SP115");
- DEAD_STRING("F_SP112");
- DEAD_STRING("F_SP126");
- DEAD_STRING("F_SP127");
- DEAD_STRING("R_SP127");
- DEAD_STRING("F_SP113");
- DEAD_STRING("F_SP116");
- DEAD_STRING("R_SP116");
- DEAD_STRING("R_SP160");
- DEAD_STRING("R_SP161");
- DEAD_STRING("F_SP114");
- DEAD_STRING("F_SP118");
- DEAD_STRING("F_SP124");
- DEAD_STRING("F_SP125");
- DEAD_STRING("F_SP121");
- DEAD_STRING("F_SP122");
- DEAD_STRING("F_SP123");
- DEAD_STRING("F_SP200");
- DEAD_STRING("F_SP102");
- DEAD_STRING("");
- DEAD_STRING("R_SP300");
- DEAD_STRING("R_SP301");
- DEAD_STRING("T_ENEMY");
- DEAD_STRING("D_MN54");
- DEAD_STRING("D_MN05");
- DEAD_STRING("D_MN05B");
- DEAD_STRING("D_MN05A");
- DEAD_STRING("D_MN04");
- DEAD_STRING("D_MN04B");
- DEAD_STRING("D_MN04A");
- DEAD_STRING("D_MN01");
- DEAD_STRING("D_MN01B");
- DEAD_STRING("D_MN01A");
- DEAD_STRING("D_MN10");
- DEAD_STRING("D_MN10B");
- DEAD_STRING("D_MN10A");
- DEAD_STRING("D_MN11");
- DEAD_STRING("D_MN11B");
- DEAD_STRING("D_MN11A");
- DEAD_STRING("D_MN06");
- DEAD_STRING("D_MN06B");
- DEAD_STRING("D_MN06A");
- DEAD_STRING("D_MN07");
- DEAD_STRING("D_MN07B");
- DEAD_STRING("D_MN07A");
- DEAD_STRING("D_MN08");
- DEAD_STRING("D_MN08B");
- DEAD_STRING("D_MN08C");
- DEAD_STRING("D_MN08A");
- DEAD_STRING("D_MN08D");
- DEAD_STRING("D_MN09");
- DEAD_STRING("D_MN09A");
- DEAD_STRING("D_MN09B");
- DEAD_STRING("D_MN09C");
- DEAD_STRING("D_SB00");
- DEAD_STRING("D_SB01");
- DEAD_STRING("D_SB02");
- DEAD_STRING("D_SB03");
- DEAD_STRING("D_SB04");
- DEAD_STRING("D_SB05");
- DEAD_STRING("D_SB06");
- DEAD_STRING("D_SB07");
- DEAD_STRING("D_SB08");
- DEAD_STRING("D_SB09");
- DEAD_STRING("D_SB10");
-}
-
/* 802AF49C-802AF884 2A9DDC 03E8+00 3/2 6/6 65/65 .text subBgmStart__8Z2SeqMgrFUl */
-void Z2SeqMgr::subBgmStart(u32 i_bgmID) {
- if (i_bgmID == -1) {
+void Z2SeqMgr::subBgmStart(u32 bgmID) {
+ #if DEBUG
+ const char** spotName = sSpotName;
+ #endif
+
+ if (bgmID == -1) {
return;
}
- int count_in, count_out;
- switch (i_bgmID) {
+ int fadeinTime = 0;
+ int fadeoutTime = 0;
+
+ switch (bgmID) {
case Z2BGM_ITEM_GET:
case Z2BGM_ITEM_GET_MINI:
case Z2BGM_OPEN_BOX:
@@ -274,25 +293,25 @@ void Z2SeqMgr::subBgmStart(u32 i_bgmID) {
if (getSubBgmID() == Z2BGM_OBACHAN) {
subBgmStop();
}
- mFanfareID = i_bgmID;
+ 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:
- count_in = 0;
- count_out = -1;
+ fadeinTime = 0;
+ fadeoutTime = -1;
break;
case Z2BGM_LUTERA1:
case Z2BGM_BOSS_SNOWWOMAN_D1:
Z2GetStatusMgr()->setDemoName("force_start");
- count_in = 0;
- count_out = struct_80450862;
+ fadeinTime = 0;
+ fadeoutTime = Z2Param::BGM_CROSS_FADEOUT_TIME;
break;
case Z2BGM_TARO_RESCUE:
- count_in = 0;
- count_out = 120;
+ fadeinTime = 0;
+ fadeoutTime = 120;
bgmStop(0, 0);
break;
case Z2BGM_OBACHAN:
@@ -331,13 +350,13 @@ void Z2SeqMgr::subBgmStart(u32 i_bgmID) {
case Z2BGM_GOMA_D01:
case Z2BGM_MINIGAME_WIN01:
case Z2BGM_MINIGAME_WIN02:
- count_in = 0;
- count_out = 1;
+ fadeinTime = 0;
+ fadeoutTime = 1;
break;
case Z2BGM_COWBOY_GAME:
mAllBgmMaster.forceIn();
- count_in = 0;
- count_out = 1;
+ fadeinTime = 0;
+ fadeoutTime = 1;
break;
case Z2BGM_SNOWBOARD_WIN:
case Z2BGM_SNOWBOARD_LOSE:
@@ -356,27 +375,27 @@ void Z2SeqMgr::subBgmStart(u32 i_bgmID) {
case Z2BGM_HORSE_BATTLE:
case Z2BGM_TN_MBOSS_LV9:
mStreamBgmMaster.forceIn();
- count_in = 0;
- count_out = 1;
+ fadeinTime = 0;
+ fadeoutTime = 1;
break;
case Z2BGM_MAGNE_GORON_D01:
case Z2BGM_DEKUTOAD_D01:
- count_in = 0;
- count_out = 20;
+ fadeinTime = 0;
+ fadeoutTime = 20;
break;
case Z2BGM_IB_MBOSS_D01:
case Z2BGM_GG_MBOSS_D01:
- count_in = 0;
- count_out = struct_80450862;
+ fadeinTime = 0;
+ fadeoutTime = Z2Param::BGM_CROSS_FADEOUT_TIME;
break;
default:
- count_in = struct_80450861;
- count_out = struct_80450862;
+ fadeinTime = Z2Param::BGM_CROSS_FADEIN_TIME;
+ fadeoutTime = Z2Param::BGM_CROSS_FADEOUT_TIME;
break;
}
- if (i_bgmID == getSubBgmID()) {
- if (i_bgmID == Z2BGM_SUMO || i_bgmID == Z2BGM_COWBOY_GAME) {
+ if (bgmID == getSubBgmID()) {
+ if (bgmID == Z2BGM_SUMO || bgmID == Z2BGM_COWBOY_GAME) {
mSubBgmHandle->stop(0);
mSubBgmHandle.releaseSound();
} else {
@@ -388,10 +407,10 @@ void Z2SeqMgr::subBgmStart(u32 i_bgmID) {
subBgmStopInner();
}
- Z2GetSoundMgr()->startSound(i_bgmID, &mSubBgmHandle, NULL);
+ Z2GetSoundMgr()->startSound(bgmID, &mSubBgmHandle, NULL);
mSubBgmStatus = 0xff;
- switch (i_bgmID) {
+ switch (bgmID) {
case Z2BGM_HORSE_BATTLE:
case Z2BGM_FACE_OFF_BATTLE2:
changeSubBgmStatus(0);
@@ -408,119 +427,138 @@ void Z2SeqMgr::subBgmStart(u32 i_bgmID) {
break;
}
- if (count_in != 0) {
- mSubBgmMaster.fadeInFromOut(count_in);
+ if (fadeinTime != 0) {
+ mSubBgmMaster.fadeInFromOut(fadeinTime);
} else {
mSubBgmMaster.forceIn();
}
- if (count_out >= 0) {
- mMainBgmMaster.fadeOut(count_out);
+ 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", 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
}
/* 802AF884-802AF9D0 2AA1C4 014C+00 4/3 4/4 42/42 .text subBgmStop__8Z2SeqMgrFv */
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;
+ 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
+}
/* 802AF9D0-802AFB94 2AA310 01C4+00 2/2 0/0 0/0 .text subBgmStopInner__8Z2SeqMgrFv */
void Z2SeqMgr::subBgmStopInner() {
if (field_0xb8 == -1) {
return;
}
+
if (!mSubBgmHandle) {
return;
}
- int count = struct_80450862;
+ int fadeTime = Z2Param::BGM_CROSS_FADEOUT_TIME;
switch (getSubBgmID()) {
case Z2BGM_MAGNE_GORON:
case Z2BGM_MAGNE_GORON_D01:
@@ -529,37 +567,38 @@ void Z2SeqMgr::subBgmStopInner() {
case Z2BGM_SUMO_D1:
case Z2BGM_VARIANT:
case Z2BGM_IB_MBOSS_D01:
- count = 10;
+ fadeTime = 10;
break;
case Z2BGM_LUTERA1:
- count = 50;
+ fadeTime = 50;
break;
case Z2BGM_RIVER_GAME:
case Z2BGM_RIVER_GAME_00:
- count = 33;
+ fadeTime = 33;
setBattleBgmOff(false);
break;
case Z2BGM_SNOW_BOARD:
- count = 90;
+ fadeTime = 90;
setBattleBgmOff(false);
break;
}
- mSubBgmHandle->stop(count);
+ mSubBgmHandle->stop(fadeTime);
mSubBgmHandle.releaseSound();
- mMainBgmMaster.fadeIn(struct_80450862);
+ mMainBgmMaster.fadeIn(Z2Param::BGM_CROSS_FADEOUT_TIME);
field_0xb8 = -1;
}
/* 802AFB94-802AFDEC 2AA4D4 0258+00 1/1 3/3 46/46 .text bgmStreamPrepare__8Z2SeqMgrFUl */
-void Z2SeqMgr::bgmStreamPrepare(u32 i_bgmID) {
+void Z2SeqMgr::bgmStreamPrepare(u32 bgmID) {
if (mStreamBgmHandle) {
bgmStreamStop(0);
}
- Z2GetSoundMgr()->startSound(i_bgmID, &mStreamBgmHandle, NULL);
+
+ Z2GetSoundMgr()->startSound(bgmID, &mStreamBgmHandle, NULL);
mStreamBgmHandle->lockWhenPrepared();
- switch (i_bgmID) {
+ switch (bgmID) {
case 0x2000010:
mAllBgmMaster.forceIn();
// fallthrough
@@ -570,7 +609,7 @@ void Z2SeqMgr::bgmStreamPrepare(u32 i_bgmID) {
return;
case 0x2000023:
if (mMainBgmHandle) {
- mMainBgmHandle->stop(struct_80450862);
+ mMainBgmHandle->stop(Z2Param::BGM_CROSS_FADEOUT_TIME);
}
return;
case 0x2000038:
@@ -592,7 +631,7 @@ void Z2SeqMgr::bgmStreamPrepare(u32 i_bgmID) {
break;
}
- mStreamBgmMaster.fadeOut(struct_80450862);
+ mStreamBgmMaster.fadeOut(Z2Param::BGM_CROSS_FADEOUT_TIME);
}
@@ -610,79 +649,98 @@ void Z2SeqMgr::bgmStreamPlay() {
if (mStreamBgmHandle) {
mStreamBgmHandle->unlockIfLocked();
}
+
if (getStreamBgmID() == -1) {
if (mMainBgmHandle) {
mMainBgmHandle->stop(30);
}
- } else if (getStreamBgmID() == 0x2000000) {
+ }
+
+ #if !PLATFORM_SHIELD
+ else if (getStreamBgmID() == 0x2000000) {
if (mStreamBgmHandle) {
mStreamBgmHandle->stop();
}
bgmStart(Z2BGM_MENU_SELECT, 0, 0);
}
+ #endif
}
/* 802AFEDC-802AFF8C 2AA81C 00B0+00 2/2 1/1 27/27 .text bgmStreamStop__8Z2SeqMgrFUl */
-void Z2SeqMgr::bgmStreamStop(u32 i_count) {
+void Z2SeqMgr::bgmStreamStop(u32 fadeTime) {
if (getStreamBgmID() == 0x200003f || getStreamBgmID() == 0x200005c) {
Z2GetStatusMgr()->setDemoName("force_end");
}
+
if (mStreamBgmHandle) {
- mStreamBgmHandle->stop(i_count);
+ mStreamBgmHandle->stop(fadeTime);
}
+
mStreamBgmHandle.releaseSound();
}
/* 802AFF8C-802B1DF4 2AA8CC 1E68+00 5/4 8/7 26/26 .text changeBgmStatus__8Z2SeqMgrFl */
-void Z2SeqMgr::changeBgmStatus(s32 param_0) {
+void Z2SeqMgr::changeBgmStatus(s32 status) {
if (!mMainBgmHandle) {
return;
}
- u32 count = 0;
+ 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 (param_0 == mBgmStatus) {
+ if (status == mBgmStatus) {
return;
}
+
if (mBgmStatus != 0xff) {
- count = 60;
+ moveTime = 60;
}
- if (param_0 == 1) {
+
+ if (status == 1) {
volume1 = 0.65f;
volume2 = 0.0f;
volume3 = 1.0f;
- count = 30;
+ moveTime = 30;
} else {
volume1 = 1.0f;
volume2 = 1.0f;
volume3 = 0.0f;
}
- setChildTrackVolume(&mMainBgmHandle, 0, volume1, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 1, volume1, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 2, volume1, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 3, volume1, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 4, volume1, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 5, volume1, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 6, volume1, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 7, volume1, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 8, volume2, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 9, volume3, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 10, volume3, count, -1.0f, -1.0f);
+
+ setChildTrackVolume(&mMainBgmHandle, 0, volume1, moveTime, -1.0f, -1.0f);
+ setChildTrackVolume(&mMainBgmHandle, 1, volume1, moveTime, -1.0f, -1.0f);
+ setChildTrackVolume(&mMainBgmHandle, 2, volume1, moveTime, -1.0f, -1.0f);
+ setChildTrackVolume(&mMainBgmHandle, 3, volume1, moveTime, -1.0f, -1.0f);
+ setChildTrackVolume(&mMainBgmHandle, 4, volume1, moveTime, -1.0f, -1.0f);
+ setChildTrackVolume(&mMainBgmHandle, 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, 0, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 12, 0.0f, 0, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 13, 0.0f, 0, -1.0f, -1.0f);
+ 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 (param_0) {
+ switch (status) {
case 4:
case 0xc:
- muteSceneBgm(struct_80450860, 0.0f);
+ muteSceneBgm(Z2Param::SCENE_CHANGE_BGM_FADEOUT_TIME, 0.0f);
// fallthrough
case 7:
mute = true;
@@ -691,12 +749,13 @@ void Z2SeqMgr::changeBgmStatus(s32 param_0) {
Z2GetSoundObjMgr()->setForceBattleArea(true, 1500, 5000, 10000);
break;
}
+
if (!mute) {
- unMuteSceneBgm(struct_80450860);
+ unMuteSceneBgm(Z2Param::SCENE_CHANGE_BGM_FADEOUT_TIME);
}
break;
case Z2BGM_DUNGEON_LV2:
- switch (param_0) {
+ switch (status) {
case 0xe:
case 0x10:
case 0x11:
@@ -711,27 +770,30 @@ void Z2SeqMgr::changeBgmStatus(s32 param_0) {
break;
case Z2BGM_DUNGEON_LV5:
if (mBgmStatus != 0xff) {
- count = 45;
+ moveTime = 45;
}
- if (param_0 == 2 || param_0 == 1) {
+
+ if (status == 2 || status == 1) {
volume1 = 0.0f;
volume2 = 1.0f;
} else {
volume1 = 1.0f;
volume2 = 0.0f;
}
- setChildTrackVolume(&mMainBgmHandle, 0, volume1, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 1, volume1, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 2, volume1, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 3, volume1, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 4, volume1, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 8, volume2, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 9, volume2, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 10, volume2, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 11, volume2, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 12, volume2, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 13, volume2, count, -1.0f, -1.0f);
- if (param_0 == 4) {
+
+ 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);
@@ -739,78 +801,80 @@ void Z2SeqMgr::changeBgmStatus(s32 param_0) {
break;
case Z2BGM_CASTLE_TOWN:
if (mBgmStatus != 0xff) {
- count = 45;
+ moveTime = 45;
}
- switch (param_0) {
+
+ switch (status) {
case 0:
case 1:
case 5:
- setChildTrackVolume(&mMainBgmHandle, 0, 1.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 1, 1.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 2, 1.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 3, 1.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 4, 1.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 5, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 6, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 7, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 8, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 9, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 10, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 11, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 12, 0.0f, count, -1.0f, -1.0f);
+ 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, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 1, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 2, 1.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 3, 1.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 4, 1.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 5, 1.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 6, 1.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 7, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 8, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 9, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 10, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 11, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 12, 0.0f, count, -1.0f, -1.0f);
+ 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, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 1, 1.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 2, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 3, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 4, 1.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 5, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 6, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 7, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 8, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 9, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 10, 1.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 11, 1.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 12, 1.0f, count, -1.0f, -1.0f);
+ 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, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 1, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 2, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 3, 1.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 4, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 5, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 6, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 7, 1.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 8, 1.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 9, 1.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 10, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 11, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 12, 0.0f, count, -1.0f, -1.0f);
+ 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 (param_0 == 5) {
- muteSceneBgm(count, 0.35f);
+
+ if (status == 5) {
+ muteSceneBgm(moveTime, 0.35f);
mFlags.mHeightVolMod = false;
} else {
- unMuteSceneBgm(count);
- if (param_0 < 2) {
+ unMuteSceneBgm(moveTime);
+ if (status < 2) {
mFlags.mHeightVolMod = false;
} else {
mFlags.mHeightVolMod = true;
@@ -819,37 +883,39 @@ void Z2SeqMgr::changeBgmStatus(s32 param_0) {
break;
case Z2BGM_HOLY_FOREST:
if (mBgmStatus != 0xff) {
- count = 45;
+ moveTime = 45;
setChildTrackVolume(&mMainBgmHandle, 7, 0.0f, 5, -1.0f, -1.0f);
} else {
setChildTrackVolume(&mMainBgmHandle, 7, 0.0f, 0, -1.0f, -1.0f);
}
- if (param_0 == 1) {
+
+ if (status == 1) {
volume1 = 0.6f;
volume2 = 1.0f;
} else {
volume1 = 1.0f;
volume2 = 0.0f;
}
- setChildTrackVolume(&mMainBgmHandle, 0, volume1, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 1, volume1, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 2, volume1, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 3, volume1, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 4, volume2, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 5, volume2, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 6, volume2, count, -1.0f, -1.0f);
+
+ setChildTrackVolume(&mMainBgmHandle, 0, volume1, moveTime, -1.0f, -1.0f);
+ setChildTrackVolume(&mMainBgmHandle, 1, volume1, moveTime, -1.0f, -1.0f);
+ setChildTrackVolume(&mMainBgmHandle, 2, volume1, moveTime, -1.0f, -1.0f);
+ setChildTrackVolume(&mMainBgmHandle, 3, volume1, moveTime, -1.0f, -1.0f);
+ setChildTrackVolume(&mMainBgmHandle, 4, 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 (param_0 == 0) {
+ if (status == 0) {
muteSceneBgm(0, 0.5f);
- } else if (param_0 == 1) {
+ } else if (status == 1) {
unMuteSceneBgm(80);
}
break;
case Z2BGM_DEMO08:
- if (param_0 == 1) {
+ if (status == 1) {
setChildTrackVolume(&mMainBgmHandle, 4, 1.0f, 90, -1.0f, -1.0f);
- } else if (param_0 == 2) {
+ } else if (status == 2) {
bgmStop(90, 0);
} else {
setChildTrackVolume(&mMainBgmHandle, 4, 0.0f, 0, -1.0f, -1.0f);
@@ -859,7 +925,7 @@ void Z2SeqMgr::changeBgmStatus(s32 param_0) {
}
break;
case Z2BGM_DEMO10:
- if (param_0 == 1) {
+ 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);
@@ -875,7 +941,7 @@ void Z2SeqMgr::changeBgmStatus(s32 param_0) {
}
break;
case Z2BGM_BOSS_SNOWWOMAN_1:
- if (param_0 == 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);
@@ -887,73 +953,67 @@ void Z2SeqMgr::changeBgmStatus(s32 param_0) {
}
break;
case Z2BGM_DUNGEON_LV8:
- if (param_0 == mBgmStatus) {
+ if (status == mBgmStatus) {
return;
}
+
if (mBgmStatus != 0xff) {
- count = 45;
+ moveTime = 45;
}
- if (param_0 == 0 || param_0 == 0xb) {
+
+ if (status == 0 || status == 0xb) {
volume1 = 1.0f;
volume2 = 0.0f;
volume3 = 0.0f;
volume4 = 0.0f;
- } else if (param_0 >= 100) {
+ } else if (status >= 100) {
volume1 = 0.0f;
volume2 = 1.0f;
- f32 volume;
- if (param_0 < 200) {
- volume = 1.0f;
- } else if (param_0 > 3100) {
- volume = 0.0f;
- } else {
- volume = Z2Calc::getParamByExp(param_0, 3100.0f, 200.0f, 0.3f, 0.0f, 1.0f,
- Z2Calc::CURVE_SIGN_1);
- }
- volume3 = volume;
- if (param_0 < 200) {
- volume = 1.0f;
- } else if (param_0 > 1600) {
- volume = 0.0f;
- } else {
- volume = Z2Calc::getParamByExp(param_0, 1600.0f, 200.0f, 0.3f, 0.0f, 1.0f,
- Z2Calc::CURVE_SIGN_1);
- }
- volume4 = volume;
+
+ 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, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 3, volume1, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 4, volume1, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 5, volume1, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 6, volume2, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 7, volume2, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 8, volume2, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 9, volume2, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 10, volume2, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 11, volume3, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 12, volume3, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 13, volume4, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 14, volume4, count, -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, 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 (param_0 == 0xd) {
+ if (status == 0xd) {
mSceneBgm.move(0.3f, 134);
} else {
mSceneBgm.forceIn();
- if (param_0 > 6) {
- param_0 = (param_0 - 7) * 2;
+ if (status > 6) {
+ status = (status - 7) * 2;
} else {
- param_0 = param_0 * 2 - 1;
+ status = status * 2 - 1;
}
}
break;
case Z2BGM_FORTUNE:
- if (param_0 == 1) {
+ if (status == 1) {
muteSceneBgm(45, 0.5f);
} else {
unMuteSceneBgm(45);
@@ -961,201 +1021,214 @@ void Z2SeqMgr::changeBgmStatus(s32 param_0) {
break;
case Z2BGM_DUNGEON_LV9_02:
if (mBgmStatus != 0xff) {
- count = 30;
+ moveTime = 30;
}
- if (param_0 == 0xc) {
+
+ if (status == 0xc) {
volume4 = 1.0f;
volume1 = 0.0f;
volume2 = 0.5f;
volume3 = 0.0f;
- } else if (param_0 == 8) {
+ } else if (status == 8) {
volume4 = 0.0f;
volume1 = 0.5f;
volume2 = 1.0f;
volume3 = 0.8f;
- } else if (param_0 > 3000) {
- volume4 = Z2Calc::linearTransform(param_0, 3150.0f, 6150.0f, 1.0f, 0.0f, false);
- volume1 = Z2Calc::linearTransform(param_0, 3150.0f, 6150.0f, 0.0f, 1.0f, false);
- volume2 = Z2Calc::linearTransform(param_0, 3150.0f, 6150.0f, 0.5f, 1.0f, false);
- volume3 = Z2Calc::linearTransform(param_0, 3150.0f, 6150.0f, 0.0f, 1.0f, false);
- }
- setChildTrackVolume(&mMainBgmHandle, 0, volume4, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 1, volume4, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 2, volume4, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 3, volume1, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 4, volume1, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 5, volume1, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 6, volume1, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 7, volume2, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 8, volume2, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 9, volume3, count, -1.0f, -1.0f);
+ } 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 (param_0 == mBgmStatus) {
+ if (status == mBgmStatus) {
return;
}
+
if (mBgmStatus != 0xff) {
- count = 45;
+ moveTime = 45;
}
- if (param_0 == 1) {
+
+ if (status == 1) {
volume1 = 0.0f;
volume2 = 1.0f;
} else {
volume1 = 1.0f;
volume2 = 0.0f;
}
- setChildTrackVolume(&mMainBgmHandle, 0, volume1, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 1, volume1, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 2, volume1, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 3, volume1, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 4, volume1, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 5, volume1, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 6, volume1, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 7, volume1, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 10, volume2, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 11, volume2, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 12, volume2, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 13, volume2, count, -1.0f, -1.0f);
+
+ setChildTrackVolume(&mMainBgmHandle, 0, volume1, moveTime, -1.0f, -1.0f);
+ setChildTrackVolume(&mMainBgmHandle, 1, volume1, moveTime, -1.0f, -1.0f);
+ setChildTrackVolume(&mMainBgmHandle, 2, volume1, moveTime, -1.0f, -1.0f);
+ setChildTrackVolume(&mMainBgmHandle, 3, volume1, moveTime, -1.0f, -1.0f);
+ setChildTrackVolume(&mMainBgmHandle, 4, volume1, moveTime, -1.0f, -1.0f);
+ setChildTrackVolume(&mMainBgmHandle, 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 (param_0 == 1) {
+ if (status == 1) {
muteSceneBgm(45, 0.5f);
- } else if (param_0 == 2) {
+ } else if (status == 2) {
muteSceneBgm(0, 0.5f);
} else {
unMuteSceneBgm(45);
}
break;
case Z2BGM_VS_GANON_04:
- if (param_0 == mBgmStatus) {
+ if (status == mBgmStatus) {
return;
}
- if (param_0 >= 4) {
- count = 50;
- if (param_0 == 4) {
+
+ if (status >= 4) {
+ moveTime = 50;
+ if (status == 4) {
volume4 = 1.0f;
volume1 = 0.0f;
- } else if (param_0 == 5) {
+ } else if (status == 5) {
volume4 = 0.0f;
volume1 = 1.0f;
- } else if (param_0 == 6) {
+ } else if (status == 6) {
volume4 = 0.0f;
volume1 = 0.0f;
- } else if (param_0 == 7) {
+ } else if (status == 7) {
volume4 = 0.0f;
volume1 = 0.0f;
- count = 0;
- } else if (param_0 == 8) {
+ moveTime = 0;
+ } else if (status == 8) {
volume4 = 1.0f;
volume1 = 1.0f;
- count = 0;
+ moveTime = 0;
}
- setChildTrackVolume(&mMainBgmHandle, 12, volume4, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 13, volume4, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 14, volume1, count, -1.0f, -1.0f);
- setChildTrackVolume(&mMainBgmHandle, 15, volume1, count, -1.0f, -1.0f);
+
+ 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, param_0, -1);
- mBgmStatus = param_0 & 0xff;
+ Z2GetSoundStarter()->setPortData(&mMainBgmHandle, 9, status, -1);
+ mBgmStatus = status & 0xff;
}
/* 802B1DF4-802B299C 2AC734 0BA8+00 2/2 3/3 31/31 .text changeSubBgmStatus__8Z2SeqMgrFl
*/
-void Z2SeqMgr::changeSubBgmStatus(s32 param_0) {
+void Z2SeqMgr::changeSubBgmStatus(s32 status) {
if (!mSubBgmHandle) {
return;
}
- u32 count = 0;
+ u32 moveTime = 0;
bool bvar2 = true;
+
switch (getSubBgmID()) {
case Z2BGM_DEKUTOAD:
- if (param_0 == 1 && mSubBgmStatus == 2) {
+ if (status == 1 && mSubBgmStatus == 2) {
mSubBgmMaster.forceOut();
mDekuToadCount = 100;
- } else if (param_0 == 3) {
+ } else if (status == 3) {
mSubBgmMaster.forceOut();
mDekuToadCount = 30;
}
break;
case Z2BGM_HORSE_BATTLE:
- if (param_0 == mSubBgmStatus) {
+ if (status == mSubBgmStatus) {
return;
}
- if (param_0 != 2) {
+
+ if (status != 2) {
bvar2 = false;
if (mSubBgmStatus != 0xff) {
- count = 40;
+ moveTime = 40;
}
}
- if (param_0 == 1) {
+
+ 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, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 1, 1.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 11, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 12, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 13, 0.0f, count, -1.0f, -1.0f);
+ 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 (param_0 == mSubBgmStatus) {
+ if (status == mSubBgmStatus) {
return;
}
+
bvar2 = false;
if (mSubBgmStatus != 0xff) {
- count = 30;
+ moveTime = 30;
}
- if (param_0 == 1) {
+
+ 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, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 10, 1.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 11, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 12, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 13, 0.0f, count, -1.0f, -1.0f);
+ 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 (param_0 == mSubBgmStatus) {
+ if (status == mSubBgmStatus) {
break;
}
- if (param_0 == 1) {
+
+ if (status == 1) {
if (mSubBgmStatus != 0xff) {
- count = 60;
+ moveTime = 60;
}
- setChildTrackVolume(&mSubBgmHandle, 9, 1.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 10, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 11, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 12, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 13, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 14, 0.0f, count, -1.0f, -1.0f);
- } else if (param_0 == 2) {
+ 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) {
- count = 20;
+ moveTime = 20;
}
- setChildTrackVolume(&mSubBgmHandle, 9, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 10, 1.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 11, 1.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 12, 1.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 13, 1.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 14, 1.0f, count, -1.0f, -1.0f);
+ 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 (param_0) {
+ switch (status) {
case 1:
switch (mSubBgmStatus) {
case 2:
@@ -1178,26 +1251,28 @@ void Z2SeqMgr::changeSubBgmStatus(s32 param_0) {
}
break;
case Z2BGM_BATTLE_TWILIGHT:
- if (mSubBgmStatus == param_0) {
+ if (mSubBgmStatus == status) {
return;
}
+
if (mSubBgmStatus != 0xff) {
- count = 25;
+ moveTime = 25;
}
+
bvar2 = false;
- if (param_0 == 2) {
- setChildTrackVolume(&mSubBgmHandle, 2, 1.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 3, 1.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 4, 1.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 5, 1.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 6, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 7, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 8, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 9, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 10, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 11, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 12, 0.0f, count, -1.0f, -1.0f);
- } else if (param_0 == 3) {
+ 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);
@@ -1210,17 +1285,17 @@ void Z2SeqMgr::changeSubBgmStatus(s32 param_0) {
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, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 3, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 4, 1.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 5, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 6, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 7, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 8, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 9, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 10, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 11, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 12, 0.0f, count, -1.0f, -1.0f);
+ 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);
}
break;
case Z2BGM_BATTLE_NORMAL:
@@ -1228,25 +1303,27 @@ void Z2SeqMgr::changeSubBgmStatus(s32 param_0) {
}
if (bvar2) {
- Z2GetSoundStarter()->setPortData(&mSubBgmHandle, 9, param_0, -1);
+ Z2GetSoundStarter()->setPortData(&mSubBgmHandle, 9, status, -1);
}
- mSubBgmStatus = param_0 & 0xff;
+
+ mSubBgmStatus = status & 0xff;
}
/* 802B299C-802B2A88 2AD2DC 00EC+00 0/0 1/1 0/0 .text onVariantBgmJumpEnd__8Z2SeqMgrFb */
void Z2SeqMgr::onVariantBgmJumpEnd(bool param_0) {
if (param_0) {
- u32 count = 0;
+ u32 moveTime = 0;
if (mSubBgmStatus == 3) {
- count = 45;
+ moveTime = 45;
mSubBgmStatus = 1;
}
- setChildTrackVolume(&mSubBgmHandle, 8, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 9, 0.0f, count, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 10, 0.0f, count, -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);
} else {
setChildTrackVolume(&mSubBgmHandle, 0, 1.0f, 0, -1.0f, -1.0f);
}
+
Z2GetSoundMgr()->getSeqMgr()->calc();
Z2GetSoundMgr()->getSeqMgr()->mixOut();
}
@@ -1258,7 +1335,7 @@ void Z2SeqMgr::changeFishingBgm(s32 param_0) {
if (getSubBgmID() == Z2BGM_FISHING_HIT) {
subBgmStop();
}
- unMuteSceneBgm(struct_80450862);
+ unMuteSceneBgm(Z2Param::BGM_CROSS_FADEOUT_TIME);
break;
case 1:
if (getSubBgmID() == Z2BGM_FISHING_HIT) {
@@ -1281,11 +1358,10 @@ void Z2SeqMgr::changeFishingBgm(s32 param_0) {
/* 802B2CA4-802B2D64 2AD5E4 00C0+00 0/0 1/1 0/0 .text talkInBgm__8Z2SeqMgrFv */
void Z2SeqMgr::talkInBgm() {
- if (getStreamBgmID() == 0x2000038 || getStreamBgmID() == 0x200007c
- || getMainBgmID() == Z2BGM_WCS_D01)
- {
+ if (getStreamBgmID() == 0x2000038 || getStreamBgmID() == 0x200007c || getMainBgmID() == Z2BGM_WCS_D01) {
return;
}
+
mBgmPause.move(Z2Param::VOL_BGM_TALKING, 2);
}
@@ -1371,7 +1447,7 @@ void Z2SeqMgr::fanfareFramework() {
}
if (!isItemGetDemo() && mFanfareMute.getDest() != 1.0f) {
- mFanfareMute.fadeIn(struct_80450861);
+ mFanfareMute.fadeIn(Z2Param::BGM_CROSS_FADEIN_TIME);
}
if (mFanfareCount != 0) {
mFanfareCount--;
@@ -1424,16 +1500,16 @@ void Z2SeqMgr::stopWolfHowlSong() {
}
/* 802B3318-802B3398 2ADC58 0080+00 0/0 1/1 0/0 .text setHeightVolMod__8Z2SeqMgrFbUl */
-void Z2SeqMgr::setHeightVolMod(bool i_value, u32 i_count) {
- mFlags.mHeightVolMod = i_value;
- if (!i_value) {
- field_0x84.fadeIn(i_count);
+void Z2SeqMgr::setHeightVolMod(bool isVolMod, u32 fadeTime) {
+ mFlags.mHeightVolMod = isVolMod;
+ if (!isVolMod) {
+ field_0x84.fadeIn(fadeTime);
}
}
/* 802B3398-802B33A8 2ADCD8 0010+00 0/0 1/1 0/0 .text setTimeProcVolMod__8Z2SeqMgrFbUl */
-void Z2SeqMgr::setTimeProcVolMod(bool i_value, u32 i_count) {
- mFlags.mTimeProcVolMod = i_value;
+void Z2SeqMgr::setTimeProcVolMod(bool isVolMod, u32 fadeTime) {
+ mFlags.mTimeProcVolMod = isVolMod;
}
/* 80450870-80450874 0002F0 0004+00 1/1 0/0 0/0 .sdata sDeathMtBottom */
@@ -1453,7 +1529,7 @@ void Z2SeqMgr::processBgmFramework() {
fieldBgmFramework();
if (!mStreamBgmHandle && mStreamBgmMaster.getDest() != 1.0f) {
- mStreamBgmMaster.fadeIn(struct_80450861);
+ mStreamBgmMaster.fadeIn(Z2Param::BGM_CROSS_FADEIN_TIME);
}
if (field_0xb8 != -1) {
@@ -1464,7 +1540,7 @@ void Z2SeqMgr::processBgmFramework() {
field_0xb8 = -1;
}
} else if (!mSubBgmHandle && mMainBgmMaster.getDest() != 1.0f) {
- mMainBgmMaster.fadeIn(struct_80450861);
+ mMainBgmMaster.fadeIn(Z2Param::BGM_CROSS_FADEIN_TIME);
}
if (mFlags.mTimeProcVolMod) {
@@ -1483,7 +1559,7 @@ void Z2SeqMgr::processBgmFramework() {
switch (getMainBgmID()) {
case Z2BGM_DEATH_MOUNTAIN01:
volume = Z2Calc::getParamByExp(link_y, sDeathMtTop, sDeathMtBottom, 0.3f, 0.0f, 1.0f,
- Z2Calc::CURVE_SIGN_0);
+ Z2Calc::CURVE_NEGATIVE);
field_0x84.move(volume, 0);
break;
case Z2BGM_RAKKA_HOUSE:
@@ -1492,7 +1568,7 @@ void Z2SeqMgr::processBgmFramework() {
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_SIGN_1);
+ Z2Calc::CURVE_POSITIVE);
field_0x84.move(volume, 0);
}
break;
@@ -1506,7 +1582,7 @@ void Z2SeqMgr::processBgmFramework() {
field_0x84.forceOut();
} else if (depth > 0.0f) {
volume = Z2Calc::getParamByExp(depth, sUnderWaterDepthMax, 0.0f, 0.3f, 0.1f, 1.0f,
- Z2Calc::CURVE_SIGN_1);
+ Z2Calc::CURVE_POSITIVE);
field_0x84.move(volume, 0);
} else if (field_0x84.getDest() != 1.0f) {
field_0x84.fadeIn(30);
@@ -1518,7 +1594,7 @@ void Z2SeqMgr::processBgmFramework() {
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_SIGN_0);
+ Z2Calc::CURVE_NEGATIVE);
field_0x84.move(volume, 0);
} else {
field_0x84.forceIn();
@@ -1528,7 +1604,7 @@ void Z2SeqMgr::processBgmFramework() {
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_SIGN_0);
+ Z2Calc::CURVE_NEGATIVE);
field_0x84.move(volume, 0);
} else {
field_0x84.forceIn();
@@ -1538,7 +1614,7 @@ void Z2SeqMgr::processBgmFramework() {
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_SIGN_0);
+ Z2Calc::CURVE_NEGATIVE);
field_0x84.move(volume, 0);
} else {
field_0x84.move(0.3f, 0);
@@ -1574,86 +1650,98 @@ void Z2SeqMgr::processBgmFramework() {
mWindStone.calc();
field_0xa4.calc();
- f32 base_vol = mAllBgmMaster.get() * mBgmPause.get() * mFanfareMute.get()
- * mWindStone.get() * mTwilightGateVol;
+ f32 base_vol = mAllBgmMaster.get() * mBgmPause.get() * mFanfareMute.get() * mWindStone.get() * mTwilightGateVol;
+
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();
+ volume = base_vol * mMainBgmMaster.get() * mSceneBgm.get() * mStreamBgmMaster.get() * field_0x84.get() * field_0xa4.get();
}
mMainBgmHandle->getAuxiliary().moveVolume(volume, 0);
}
+
if (mSubBgmHandle) {
f32 volume = base_vol * mSubBgmMaster.get() * mStreamBgmMaster.get();
mSubBgmHandle->getAuxiliary().moveVolume(volume, 0);
}
+
if (mStreamBgmHandle) {
f32 volume = base_vol * mMainBgmMaster.get() * mSceneBgm.get();
mStreamBgmHandle->getAuxiliary().moveVolume(volume, 0);
}
+
setWindStoneVol(1.0f, 30);
}
/* 802B3EAC-802B3F40 2AE7EC 0094+00 0/0 2/2 0/0 .text checkBgmIDPlaying__8Z2SeqMgrFUl */
-bool Z2SeqMgr::checkBgmIDPlaying(u32 i_bgmID) {
- if (getMainBgmID() == i_bgmID) {
+bool Z2SeqMgr::checkBgmIDPlaying(u32 bgmID) {
+ if (getMainBgmID() == bgmID) {
return true;
}
- if (getSubBgmID() == i_bgmID) {
+
+ if (getSubBgmID() == bgmID) {
return true;
}
- if (getStreamBgmID() == i_bgmID) {
+
+ if (getStreamBgmID() == bgmID) {
return true;
}
+
return false;
}
/* 802B3F40-802B3FEC 2AE880 00AC+00 1/1 0/0 0/0 .text
* getChildTrackVolume__8Z2SeqMgrFP14JAISoundHandlei */
-f32 Z2SeqMgr::getChildTrackVolume(JAISoundHandle* i_handle, int i_track) {
+f32 Z2SeqMgr::getChildTrackVolume(JAISoundHandle* handle, int trackId) {
f32 volume = 0.0f;
- if (*i_handle) {
- JAISeq* seq = i_handle->getSound()->asSeq();
- if (seq != NULL && seq->getChildTrack(i_track) != NULL) {
- JAISoundChild* child = seq->getChild(i_track);
+ if (*handle) {
+ JAISeq* seq = handle->getSound()->asSeq();
+ if (seq != NULL && seq->getChildTrack(trackId) != NULL) {
+ JAISoundChild* child = seq->getChild(trackId);
if (child != NULL) {
- volume = child->mMove.mParams.mVolume;
+ volume = child->mMove.params_.mVolume;
}
}
}
+
return volume;
}
/* 802B3FEC-802B4128 2AE92C 013C+00 9/9 2/2 0/0 .text
* setChildTrackVolume__8Z2SeqMgrFP14JAISoundHandleifUlff */
-void Z2SeqMgr::setChildTrackVolume(JAISoundHandle* i_handle, int i_track, f32 i_volume,
- u32 i_count, f32 i_pan, f32 i_dolby) {
- if (!*i_handle) {
+void Z2SeqMgr::setChildTrackVolume(JAISoundHandle* handle, int trackId, f32 volume,
+ u32 moveTime, f32 pan, f32 dolby) {
+ if (!*handle) {
return;
}
- JAISeq* seq = (*i_handle)->asSeq();
+
+ JAISeq* seq = (*handle)->asSeq();
if (seq == NULL) {
return;
}
- if (seq->getChildTrack(i_track) == NULL) {
+
+ if (seq->getChildTrack(trackId) == NULL) {
return;
}
- JAISoundChild* child = seq->getChild(i_track);
+
+ JAISoundChild* child = seq->getChild(trackId);
if (child == NULL) {
return;
}
- if (i_volume > 1.0f) {
- i_volume = 1.0f;
- } else if (i_volume < 0.0f) {
- i_volume = 0.0f;
+
+ if (volume > 1.0f) {
+ volume = 1.0f;
+ } else if (volume < 0.0f) {
+ volume = 0.0f;
}
- child->mMove.moveVolume(i_volume, i_count);
- if (i_pan != -1.0f) {
- child->mMove.movePan(i_pan, i_count);
+
+ child->mMove.moveVolume(volume, moveTime);
+ if (pan != -1.0f) {
+ child->mMove.movePan(pan, moveTime);
}
- if (i_dolby != -1.0f) {
- child->mMove.moveDolby(i_dolby, i_count);
+
+ if (dolby != -1.0f) {
+ child->mMove.moveDolby(dolby, moveTime);
}
}
@@ -1666,46 +1754,47 @@ void Z2SeqMgr::resetBattleBgmParams() {
}
/* 802B4164-802B421C 2AEAA4 00B8+00 4/4 3/3 10/10 .text setBattleBgmOff__8Z2SeqMgrFb */
-void Z2SeqMgr::setBattleBgmOff(bool i_value) {
- if (mFlags.mBattleBgmOff != i_value && i_value &&
+void Z2SeqMgr::setBattleBgmOff(bool isBgmOff) {
+ if (mFlags.mBattleBgmOff != isBgmOff && isBgmOff &&
(getSubBgmID() == Z2BGM_BATTLE_NORMAL || getSubBgmID() == Z2BGM_BATTLE_TWILIGHT))
{
- stopBattleBgm(struct_80450862, struct_80450861);
+ stopBattleBgm(Z2Param::BGM_CROSS_FADEOUT_TIME, Z2Param::BGM_CROSS_FADEIN_TIME);
}
- mFlags.mBattleBgmOff = i_value;
+
+ mFlags.mBattleBgmOff = isBgmOff;
}
/* 802B421C-802B43D0 2AEB5C 01B4+00 0/0 1/1 0/0 .text setBattleSearched__8Z2SeqMgrFb */
-void Z2SeqMgr::setBattleSearched(bool i_value) {
+void Z2SeqMgr::setBattleSearched(bool isBattleSearched) {
if (!mFlags.mBattleBgmOff && Z2GetSceneMgr()->isSceneExist()
- && mFlags.mBattleSearched != i_value && mBattleSeqState != 3)
+ && mFlags.mBattleSearched != isBattleSearched && mBattleSeqState != 3)
{
if (getSubBgmID() == Z2BGM_BATTLE_NORMAL && mBattleSeqState == 1) {
- if (i_value) {
- setChildTrackVolume(&mSubBgmHandle, 2, 1.0f, struct_80450864, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 3, 1.0f, struct_80450864, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 12, 1.0f, struct_80450864, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 14, 1.0f, struct_80450864, -1.0f, -1.0f);
+ 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, struct_80450865, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 3, 0.0f, struct_80450865, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 12, 0.0f, struct_80450865, -1.0f, -1.0f);
- setChildTrackVolume(&mSubBgmHandle, 14, 0.0f, struct_80450865, -1.0f, -1.0f);
+ 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 = i_value;
+ mFlags.mBattleSearched = isBattleSearched;
}
}
/* 802B43D0-802B43E0 2AED10 0010+00 3/3 0/0 0/0 .text setBattleDistIgnore__8Z2SeqMgrFb */
-void Z2SeqMgr::setBattleDistIgnore(bool i_value) {
- mFlags.mBattleDistIgnore = i_value;
+void Z2SeqMgr::setBattleDistIgnore(bool isBattleDistIgnore) {
+ mFlags.mBattleDistIgnore = isBattleDistIgnore;
}
/* 802B43E0-802B4498 2AED20 00B8+00 0/0 2/2 0/0 .text setBattleGhostMute__8Z2SeqMgrFb */
-void Z2SeqMgr::setBattleGhostMute(bool i_value) {
+void Z2SeqMgr::setBattleGhostMute(bool isBattleGhostMute) {
if (getSubBgmID() == Z2BGM_BATTLE_NORMAL) {
- if (i_value) {
+ if (isBattleGhostMute) {
mSubBgmMaster.move(1.0f, 5);
} else {
mSubBgmMaster.move(0.4f, 5);
@@ -1714,26 +1803,27 @@ void Z2SeqMgr::setBattleGhostMute(bool i_value) {
}
/* 802B4498-802B4844 2AEDD8 03AC+00 0/0 1/1 0/0 .text setBattleDistState__8Z2SeqMgrFUc */
-void Z2SeqMgr::setBattleDistState(u8 i_state) {
+void Z2SeqMgr::setBattleDistState(u8 state) {
if (!mFlags.mBattleBgmOff && Z2GetSceneMgr()->isSceneExist()) {
if (!mFlags.mBattleDistIgnore) {
- if (i_state < 2 && mBattleSeqCount != 0) {
+ if (state < 2 && mBattleSeqCount != 0) {
mBattleSeqCount = 0;
- if (getSubBgmID() == Z2BGM_BATTLE_TWILIGHT
- || getSubBgmID() == Z2BGM_BATTLE_NORMAL)
+ if (getSubBgmID() == Z2BGM_BATTLE_TWILIGHT || getSubBgmID() == Z2BGM_BATTLE_NORMAL)
{
mSubBgmHandle->getFader().fadeIn(10);
mMainBgmMaster.fadeOut(10);
}
}
+
if ((Z2GetSoundObjMgr()->isTwilightBattle() && getSubBgmID() == Z2BGM_BATTLE_NORMAL) ||
(!Z2GetSoundObjMgr()->isTwilightBattle() && getSubBgmID() == Z2BGM_BATTLE_TWILIGHT))
{
mSubBgmHandle->stop(30);
mSubBgmHandle->releaseHandle();
}
+
if (Z2GetSoundObjMgr()->isTwilightBattle() || getSubBgmID() == Z2BGM_BATTLE_TWILIGHT) {
- switch (i_state) {
+ switch (state) {
case 0:
if (mBattleSeqState == 0) {
startBattleBgm(true);
@@ -1751,47 +1841,45 @@ void Z2SeqMgr::setBattleDistState(u8 i_state) {
break;
}
} else if (getMainBgmID() != Z2BGM_FIELD_LINK_DAY) {
- switch (i_state) {
+ switch (state) {
case 0:
if (mBattleSeqState == 0) {
startBattleBgm(true);
} else if (mBattleSeqState == 1) {
- setChildTrackVolume(&mSubBgmHandle, data_8045086C, 1.0f, struct_80450866, -1.0f, -1.0f);
+ 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, struct_80450867, -1.0f, -1.0f);
+ 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, struct_80450867, -1.0f, -1.0f);
+ 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(struct_80450862, struct_80450861);
+ stopBattleBgm(Z2Param::BGM_CROSS_FADEOUT_TIME, Z2Param::BGM_CROSS_FADEIN_TIME);
}
break;
}
}
}
- mBattleDistState = i_state;
+ mBattleDistState = state;
}
}
/* 802B4844-802B4AFC 2AF184 02B8+00 1/1 3/3 1/1 .text setBattleSeqState__8Z2SeqMgrFUc */
-void Z2SeqMgr::setBattleSeqState(u8 i_state) {
- if (!mFlags.mBattleBgmOff && Z2GetSceneMgr()->isSceneExist() && mBattleSeqState != i_state) {
- if (i_state == 0) {
- stopBattleBgm(struct_80450862, struct_80450861);
- } else if (getSubBgmID() == Z2BGM_BATTLE_NORMAL &&
- !(getMainBgmID() == Z2BGM_FIELD_LINK_DAY && !Z2GetSoundObjMgr()->isTwilightBattle()))
- {
- switch (i_state) {
+void Z2SeqMgr::setBattleSeqState(u8 state) {
+ if (!mFlags.mBattleBgmOff && Z2GetSceneMgr()->isSceneExist() && mBattleSeqState != state) {
+ if (state == 0) {
+ stopBattleBgm(Z2Param::BGM_CROSS_FADEOUT_TIME, Z2Param::BGM_CROSS_FADEIN_TIME);
+ } else if (getSubBgmID() == Z2BGM_BATTLE_NORMAL && !(getMainBgmID() == Z2BGM_FIELD_LINK_DAY && !Z2GetSoundObjMgr()->isTwilightBattle())) {
+ switch (state) {
case 2:
if (mBattleSeqState == 1) {
Z2GetSoundStarter()->setPortData(&mSubBgmHandle, 9, 1, -1);
@@ -1801,6 +1889,7 @@ void Z2SeqMgr::setBattleSeqState(u8 i_state) {
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;
mSubBgmHandle->getFader().fadeIn(10);
@@ -1810,6 +1899,7 @@ void Z2SeqMgr::setBattleSeqState(u8 i_state) {
case 3:
mMainBgmMaster.forceOut();
mSubBgmMaster.forceIn();
+
if (mBattleSeqState == 1) {
Z2GetSoundStarter()->setPortData(&mSubBgmHandle, 9, 3, -1);
} else if (mBattleSeqState == 2) {
@@ -1817,18 +1907,19 @@ void Z2SeqMgr::setBattleSeqState(u8 i_state) {
}
break;
}
- mBattleSeqState = i_state;
+
+ mBattleSeqState = state;
}
}
}
/* 802B4AFC-802B4BD0 2AF43C 00D4+00 0/0 4/4 0/0 .text setBattleLastHit__8Z2SeqMgrFUc */
-void Z2SeqMgr::setBattleLastHit(u8 param_0) {
+void Z2SeqMgr::setBattleLastHit(u8 lastHit) {
if (getSubBgmID() == Z2BGM_BATTLE_NORMAL) {
setBattleDistIgnore(true);
- mSubBgmMaster.move(Z2Param::ENEMY_LASTHIT_MUTE_VOLUME, struct_80450868);
- field_0xc1 = struct_8045086B;
- mBattleLastHit = param_0;
+ mSubBgmMaster.move(Z2Param::ENEMY_LASTHIT_MUTE_VOLUME, Z2Param::ENDING_BLOW_VOL_DOWN_TIME);
+ field_0xc1 = Z2Param::ENDING_BLOW_MIN_FINISH_TIME;
+ mBattleLastHit = lastHit;
}
}
@@ -1843,6 +1934,7 @@ void Z2SeqMgr::battleBgmFramework() {
}
}
}
+
if (!mFlags.mBattleBgmOff && Z2GetSceneMgr()->isSceneExist()) {
Z2GetSoundObjMgr()->searchEnemy();
switch (getSubBgmID()) {
@@ -1852,17 +1944,19 @@ void Z2SeqMgr::battleBgmFramework() {
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(struct_8045086A);
+ 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(struct_8045086A);
+ mSubBgmMaster.fadeIn(Z2Param::ENDING_BLOW_VOL_LOWER_RECOVER_TIME);
}
}
}
@@ -1872,13 +1966,13 @@ void Z2SeqMgr::battleBgmFramework() {
setBattleDistIgnore(false);
mFlags.mBattleSearched = 0;
field_0xc1 = 0;
- mBattleLastHit = struct_80450869;
+ mBattleLastHit = Z2Param::ENDING_BLOW_VOL_LOWER_TIME;
}
}
}
/* 802B4EB0-802B5204 2AF7F0 0354+00 1/1 0/0 0/0 .text startBattleBgm__8Z2SeqMgrFb */
-void Z2SeqMgr::startBattleBgm(bool i_fade) {
+void Z2SeqMgr::startBattleBgm(bool isFadeIn) {
if (!mFlags.mBattleBgmOff && Z2GetSceneMgr()->isSceneExist()
&& mBattleSeqState == 0 && (mFlags.mBattleDistIgnore || mBattleDistState <= 1))
{
@@ -1886,24 +1980,28 @@ void Z2SeqMgr::startBattleBgm(bool i_fade) {
if (Z2GetSceneMgr()->isInDarkness() || Z2GetSoundObjMgr()->isTwilightBattle()) {
bgm_id = Z2BGM_BATTLE_TWILIGHT;
}
+
u32 subBgmID = getSubBgmID();
if (subBgmID != bgm_id) {
mBattleSeqState = 1;
if (Z2GetSoundMgr()->startSound(bgm_id, &mSubBgmHandle, NULL)) {
Z2GetSoundObjMgr()->setBattleInit();
mSubBgmStatus = 0xff;
+
s16 ivar2 = Z2GetLink()->getMoveSpeed() - 23;
if (ivar2 < 0) {
ivar2 = 0;
}
- if (ivar2 > struct_80450861) {
- ivar2 = struct_80450861;
+
+ if (ivar2 > Z2Param::BGM_CROSS_FADEIN_TIME) {
+ ivar2 = Z2Param::BGM_CROSS_FADEIN_TIME;
}
- u8 count_in, count_out;
+
+ u8 fadeinTime, fadeoutTime;
switch (bgm_id) {
case Z2BGM_BATTLE_NORMAL:
- count_in = struct_80450861 - ivar2;
- count_out = struct_80450862 - ivar2 / 2;
+ 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);
@@ -1916,51 +2014,58 @@ void Z2SeqMgr::startBattleBgm(bool i_fade) {
break;
case Z2BGM_BATTLE_TWILIGHT:
changeSubBgmStatus(Z2GetSoundObjMgr()->isTwilightBattle());
- count_in = 25 - ivar2 / 4;
- count_out = 25 - ivar2 / 4;
+ fadeinTime = 25 - ivar2 / 4;
+ fadeoutTime = 25 - ivar2 / 4;
break;
}
- if (i_fade) {
- mSubBgmMaster.fadeInFromOut(count_in);
+
+ if (isFadeIn) {
+ mSubBgmMaster.fadeInFromOut(fadeinTime);
} else {
mSubBgmMaster.forceIn();
}
- mMainBgmMaster.fadeOut(count_out);
+
+ mMainBgmMaster.fadeOut(fadeoutTime);
}
}
}
}
/* 802B5204-802B545C 2AFB44 0258+00 3/3 1/1 0/0 .text stopBattleBgm__8Z2SeqMgrFUcUc */
-void Z2SeqMgr::stopBattleBgm(u8 param_0, u8 param_1) {
+void Z2SeqMgr::stopBattleBgm(u8 subFadeoutTime, u8 mainFadeinTime) {
if (mBattleSeqCount == 0) {
s16 ivar6 = 0;
if (Z2GetLink() != NULL) {
ivar6 = Z2GetLink()->getMoveSpeed() - 23;
}
+
if (ivar6 < 0) {
ivar6 = 0;
}
- if (ivar6 > struct_80450861) {
- ivar6 = struct_80450861;
+
+ if (ivar6 > Z2Param::BGM_CROSS_FADEIN_TIME) {
+ ivar6 = Z2Param::BGM_CROSS_FADEIN_TIME;
}
+
if (getSubBgmID() == Z2BGM_BATTLE_NORMAL) {
- param_0 = struct_80450861 + ivar6;
- param_1 = struct_80450862 + ivar6 / 2;
- mSubBgmHandle->fadeOut(param_0);
- mBattleSeqCount = param_0;
+ 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) {
- param_0 = struct_80450861 + ivar6 / 4;
- param_1 = struct_80450861 + ivar6 / 4;
+ subFadeoutTime = Z2Param::BGM_CROSS_FADEIN_TIME + ivar6 / 4;
+ mainFadeinTime = Z2Param::BGM_CROSS_FADEIN_TIME + ivar6 / 4;
} else {
- param_0 = 25 + ivar6 / 4;
- param_1 = 25 + ivar6 / 4;
+ subFadeoutTime = 25 + ivar6 / 4;
+ mainFadeinTime = 25 + ivar6 / 4;
}
- mSubBgmHandle->fadeOut(param_0);
- mBattleSeqCount = param_0;
+
+ mSubBgmHandle->fadeOut(subFadeoutTime);
+ mBattleSeqCount = subFadeoutTime;
}
- mMainBgmMaster.fadeIn(param_1);
+
+ mMainBgmMaster.fadeIn(mainFadeinTime);
mBattleDistState = 3;
setBattleDistIgnore(false);
mFlags.mBattleSearched = false;
@@ -1974,6 +2079,7 @@ void Z2SeqMgr::fieldBgmStart() {
Z2GetSoundMgr()->startSound(Z2BGM_FIELD_LINK_DAY, &mMainBgmHandle, NULL);
changeBgmStatus(0);
field_0xc4 = 0;
+
if (Z2GetLink()->isRiding()) {
mFlags.mRiding = true;
mRideCount = 0;
@@ -2001,6 +2107,7 @@ void Z2SeqMgr::fieldRidingMute() {
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);
@@ -2034,8 +2141,10 @@ void Z2SeqMgr::onFieldBgmJumpEnd() {
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();
}
@@ -2044,13 +2153,13 @@ void Z2SeqMgr::onFieldBgmJumpEnd() {
/* 802B594C-802B5E80 2B028C 0534+00 2/1 0/0 0/0 .text fieldBgmFramework__8Z2SeqMgrFv */
void Z2SeqMgr::fieldBgmFramework() {
if (Z2GetSceneMgr()->isSceneExist() && !Z2GetSceneMgr()->isInDarkness()
- && (Z2GetSceneMgr()->getCurrentSceneNum() == 0x1e
- || Z2GetSceneMgr()->getCurrentSceneNum() == 0x1f)
+ && (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()) {
@@ -2063,10 +2172,12 @@ void Z2SeqMgr::fieldBgmFramework() {
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:
@@ -2115,8 +2226,7 @@ void Z2SeqMgr::fieldBgmFramework() {
if (Z2GetLink()->getMovingTime() < 150) {
switch (field_0xc4) {
case 3:
- if (mFlags.mRiding
- && Z2GetSoundObjMgr()->getEnemyNumVeryFar() == 0) {
+ if (mFlags.mRiding && Z2GetSoundObjMgr()->getEnemyNumVeryFar() == 0) {
changeBgmStatus(3);
}
break;
@@ -2151,8 +2261,7 @@ void Z2SeqMgr::fieldBgmFramework() {
}
}
} else {
- if (field_0xc4 >= 7 && field_0xc4 <= 15
- && Z2GetStatusMgr()->getHour() >= 20) {
+ if (field_0xc4 >= 7 && field_0xc4 <= 15 && Z2GetStatusMgr()->getHour() >= 20) {
mMainBgmHandle->stop(60);
mMainBgmHandle.releaseSound();
} else {
@@ -2193,6 +2302,7 @@ void Z2SeqMgr::fieldBgmFramework() {
changeBgmStatus(8);
field_0xc4 = 23;
}
+
if (Z2GetLink()->isRiding()) {
mFlags.mRiding = true;
mRideCount = 0;
@@ -2210,19 +2320,13 @@ void Z2SeqMgr::fieldBgmFramework() {
}
/* 802B5E80-802B5E84 2B07C0 0004+00 1/1 0/0 0/0 .text mbossBgmMuteProcess__8Z2SeqMgrFv */
-void Z2SeqMgr::mbossBgmMuteProcess() {
- /* empty function */
-}
+void Z2SeqMgr::mbossBgmMuteProcess() {}
/* 802B5E84-802B5E88 2B07C4 0004+00 0/0 2/2 0/0 .text bgmSetSwordUsing__8Z2SeqMgrFl */
-void Z2SeqMgr::bgmSetSwordUsing(s32 param_0) {
- /* empty function */
-}
+void Z2SeqMgr::bgmSetSwordUsing(s32 param_0) {}
/* 802B5E88-802B5E8C 2B07C8 0004+00 0/0 1/1 0/0 .text bgmNowBattle__8Z2SeqMgrFf */
-void Z2SeqMgr::bgmNowBattle(f32 param_0) {
- /* empty function */
-}
+void Z2SeqMgr::bgmNowBattle(f32 param_0) {}
/* 802B5E8C-802B5ED4 2B07CC 0048+00 0/0 1/1 0/0 .text taktModeMute__8Z2SeqMgrFv */
void Z2SeqMgr::taktModeMute() {
diff --git a/src/Z2AudioLib/Z2SoundHandles.cpp b/src/Z2AudioLib/Z2SoundHandles.cpp
index 68804a6d01..d59433bb01 100644
--- a/src/Z2AudioLib/Z2SoundHandles.cpp
+++ b/src/Z2AudioLib/Z2SoundHandles.cpp
@@ -1,40 +1,38 @@
-//
-// Generated By: dol2asm
-// Translation Unit: Z2SoundHandles
-//
-
#include "Z2AudioLib/Z2SoundHandles.h"
#include "JSystem/JAudio2/JAISoundInfo.h"
Z2SoundHandles::Z2SoundHandles() {
- mNumHandles = 0;
+ handleNum_ = 0;
}
Z2SoundHandles::~Z2SoundHandles() {
deleteHandlesPool();
}
-void Z2SoundHandles::initHandlesPool(u8 pNumHandles) {
- mNumHandles = pNumHandles;
+void Z2SoundHandles::initHandlesPool(u8 handleNum) {
+ handleNum_ = handleNum;
}
/* 802AB120-802AB200 2A5A60 00E0+00 1/1 1/1 0/0 .text deleteHandlesPool__14Z2SoundHandlesFv */
void Z2SoundHandles::deleteHandlesPool() {
- JSULink<Z2SoundHandlePool>* link;
- while (link = getFirst(), link != NULL) {
- Z2SoundHandlePool* handle = link->getObject();
+ JSULink<Z2SoundHandlePool>* i;
+ while (i = getFirst(), i != NULL) {
+ Z2SoundHandlePool* handle = i->getObject();
+ JUT_ASSERT(48, handle->getSupervisor() == this);
+
remove(handle);
delete handle;
}
- mNumHandles = 0;
+
+ handleNum_ = 0;
}
-Z2SoundHandlePool* Z2SoundHandles::getHandleSoundID(JAISoundID pSoundId) {
- JSULink<Z2SoundHandlePool>* link;
- for (link = getFirst(); link != NULL; link = link->getNext()) {
- Z2SoundHandlePool* handle = link->getObject();
+Z2SoundHandlePool* Z2SoundHandles::getHandleSoundID(JAISoundID soundID) {
+ JSULink<Z2SoundHandlePool>* i;
+ for (i = getFirst(); i != NULL; i = i->getNext()) {
+ Z2SoundHandlePool* handle = i->getObject();
if (handle->isSoundAttached()) {
- if ((*handle)->getID() == pSoundId) {
+ if ((*handle)->getID() == soundID) {
return handle;
}
}
@@ -43,12 +41,12 @@ Z2SoundHandlePool* Z2SoundHandles::getHandleSoundID(JAISoundID pSoundId) {
return NULL;
}
-Z2SoundHandlePool* Z2SoundHandles::getHandleUserData(u32 pUserData) {
- JSULink<Z2SoundHandlePool>* link;
- for (link = getFirst(); link != NULL; link = link->getNext()) {
- Z2SoundHandlePool* handle = link->getObject();
+Z2SoundHandlePool* Z2SoundHandles::getHandleUserData(u32 userData) {
+ JSULink<Z2SoundHandlePool>* i;
+ for (i = getFirst(); i != NULL; i = i->getNext()) {
+ Z2SoundHandlePool* handle = i->getObject();
if (handle->isSoundAttached()) {
- if ((*handle)->getUserData() == pUserData) {
+ if ((*handle)->getUserData() == userData) {
return handle;
}
}
@@ -60,21 +58,23 @@ Z2SoundHandlePool* Z2SoundHandles::getHandleUserData(u32 pUserData) {
/* 802AB2D8-802AB3D0 2A5C18 00F8+00 0/0 3/3 0/0 .text getFreeHandle__14Z2SoundHandlesFv
*/
Z2SoundHandlePool* Z2SoundHandles::getFreeHandle() {
- JSULink<Z2SoundHandlePool>* link;
- for (link = getFirst(); link != NULL; link = link->getNext()) {
- Z2SoundHandlePool* handle = link->getObject();
+ JSULink<Z2SoundHandlePool>* i;
+ for (i = getFirst(); i != NULL; i = i->getNext()) {
+ Z2SoundHandlePool* handle = i->getObject();
if (!handle->isSoundAttached()) {
return handle;
}
}
- if (getNumHandles() < mNumHandles)
- {
+ if (getNumHandles() < handleNum_) {
Z2SoundHandlePool* handle = new Z2SoundHandlePool();
if (handle != NULL) {
append(handle);
+ JUT_ASSERT(113, handle->getSupervisor() == this);
return handle;
}
+
+ JUT_WARN_DEVICE(118, 1, "%s", "cannot Alloc Handle !!\n");
}
return NULL;
@@ -82,46 +82,52 @@ Z2SoundHandlePool* Z2SoundHandles::getFreeHandle() {
/* 802AB3D0-802AB4A0 2A5D10 00D0+00 0/0 2/2 0/0 .text
* getLowPrioSound__14Z2SoundHandlesF10JAISoundID */
-Z2SoundHandlePool* Z2SoundHandles::getLowPrioSound(JAISoundID pSoundId) {
- JAISoundInfo* sound_info = JASGlobalInstance<JAISoundInfo>::getInstance();
- Z2SoundHandlePool* handle;
- u32 low_prio = 0xffff;
- Z2SoundHandlePool* low_prio_handle = NULL;
- JSULink<Z2SoundHandlePool>* link;
- for (link = getFirst(); link != NULL; link = link->getNext()) {
- handle = link->getObject();
+Z2SoundHandlePool* Z2SoundHandles::getLowPrioSound(JAISoundID soundID) {
+ JAISoundInfo* soundInfo = JASGlobalInstance<JAISoundInfo>::getInstance();
+ u32 low_prio = 0xFFFF;
+ Z2SoundHandlePool* rethandle = NULL;
+
+ JSULink<Z2SoundHandlePool>* i;
+ for (i = getFirst(); i != NULL; i = i->getNext()) {
+ Z2SoundHandlePool* handle = i->getObject();
if (!handle->isSoundAttached()) {
return handle;
}
- u32 prio = sound_info->getPriority(handle->getSound()->getID());
+
+ u32 prio = soundInfo->getPriority((*handle)->getID());
if (prio < low_prio) {
low_prio = prio;
- low_prio_handle = handle;
+ rethandle = handle;
}
}
- if (sound_info->getPriority(pSoundId) >= low_prio) {
- return low_prio_handle;
+
+ #if DEBUG
+ if (rethandle != NULL) {
+ JUT_ASSERT(163, rethandle->getSupervisor() == this);
+ }
+ #endif
+
+ if (soundInfo->getPriority(soundID) >= low_prio) {
+ return rethandle;
}
+
return NULL;
}
-void Z2SoundHandles::stopAllSounds(u32 fadeout) {
- JSULink<Z2SoundHandlePool>* link;
- for (link = getFirst(); link != NULL; link = link->getNext()) {
- JAISoundHandle* handle = link->getObject();
- //! @meme: explicit operator bool call required to match and be similar
- //! to CHN_debug; could more concisely write handle->isSoundAttached
- //! (for some reason cast-to-bool doesn't work?)
- if (handle && handle->operator bool()) {
- (*handle)->stop(fadeout);
+void Z2SoundHandles::stopAllSounds(u32 fadeTime) {
+ JSULink<Z2SoundHandlePool>* i;
+ for (i = getFirst(); i != NULL; i = i->getNext()) {
+ JAISoundHandle* handle = i->getObject();
+ if (handle && (*handle)) {
+ (*handle)->stop(fadeTime);
}
}
}
bool Z2SoundHandles::isActive() const {
- JSULink<Z2SoundHandlePool>* link;
- for (link = getFirst(); link != NULL; link = link->getNext()) {
- if (link->getObject()->isSoundAttached()) {
+ JSULink<Z2SoundHandlePool>* i;
+ for (i = getFirst(); i != NULL; i = i->getNext()) {
+ if (i->getObject()->isSoundAttached()) {
return true;
}
}
@@ -131,12 +137,15 @@ bool Z2SoundHandles::isActive() const {
/* 802AB538-802AB64C 2A5E78 0114+00 0/0 1/1 0/0 .text
* setPos__14Z2SoundHandlesFRCQ29JGeometry8TVec3<f> */
-void Z2SoundHandles::setPos(JGeometry::TVec3<f32> const& param_0) {
- JSULink<Z2SoundHandlePool>* link;
- for (link = getFirst(); link != NULL; link = link->getNext()) {
- Z2SoundHandlePool* handle = link->getObject();
+void Z2SoundHandles::setPos(const JGeometry::TVec3<f32>& pos) {
+ JSULink<Z2SoundHandlePool>* i;
+ for (i = getFirst(); i != NULL; i = i->getNext()) {
+ Z2SoundHandlePool* handle = i->getObject();
+ JUT_ASSERT(209, handle);
+ JUT_ASSERT(210, handle->getSupervisor() == this);
+
if (handle->isSoundAttached()) {
- handle->getSound()->setPos(param_0);
+ (*handle)->setPos(pos);
}
else {
remove(handle);
diff --git a/src/Z2AudioLib/Z2SoundInfo.cpp b/src/Z2AudioLib/Z2SoundInfo.cpp
index 1dda9961a4..eba28a7d08 100644
--- a/src/Z2AudioLib/Z2SoundInfo.cpp
+++ b/src/Z2AudioLib/Z2SoundInfo.cpp
@@ -1,8 +1,3 @@
-//
-// Generated By: dol2asm
-// Translation Unit: Z2SoundInfo
-//
-
#include "Z2AudioLib/Z2SoundInfo.h"
#include "JSystem/JAudio2/JAISeq.h"
#include "JSystem/JAudio2/JAISe.h"
@@ -11,7 +6,6 @@
#include "JSystem/JAudio2/JAUSoundTable.h"
#include "JSystem/JUtility/JUTAssert.h"
#include "Z2AudioLib/Z2Calc.h"
-#include "dolphin/dvd.h"
struct JAUStdSoundTableType {
static const u32 STRM_CH_SHIFT;
@@ -24,23 +18,24 @@ struct JAUStdSoundTableType {
/* 802BB00C-802BB090 2B594C 0084+00 2/1 0/0 0/0 .text
* getBgmSeqResourceID__11Z2SoundInfoCF10JAISoundID */
-u16 Z2SoundInfo::getBgmSeqResourceID(JAISoundID param_0) const {
+u16 Z2SoundInfo::getBgmSeqResourceID(JAISoundID soundID) const {
JUT_ASSERT(20, isValid());
- JAUSoundTableItem* data = JASGlobalInstance<JAUSoundTable>::getInstance()->getData(param_0);
- u8 typeID = JASGlobalInstance<JAUSoundTable>::getInstance()->getTypeID(param_0);
+ JAUSoundTableItem* data = JASGlobalInstance<JAUSoundTable>::getInstance()->getData(soundID);
+ u8 typeID = JASGlobalInstance<JAUSoundTable>::getInstance()->getTypeID(soundID);
if (data != NULL) {
switch ((typeID & 0xf0)) {
case 0x60:
- return data->mResourceId;
+ return (u16)data->mResourceId;
}
}
+
return 0xffff;
}
/* 802BB090-802BB0D8 2B59D0 0048+00 1/0 0/0 0/0 .text getSoundType__11Z2SoundInfoCF10JAISoundID */
-int Z2SoundInfo::getSoundType(JAISoundID param_0) const {
- switch (param_0.mId.mBytes.b0) {
+int Z2SoundInfo::getSoundType(JAISoundID soundID) const {
+ switch (soundID.id_.info.type.parts.sectionID) {
case 0:
return 0;
case 1:
@@ -48,178 +43,194 @@ int Z2SoundInfo::getSoundType(JAISoundID param_0) const {
case 2:
return 2;
}
+
return -1;
}
/* 802BB0D8-802BB0E0 2B5A18 0008+00 1/0 0/0 0/0 .text getCategory__11Z2SoundInfoCF10JAISoundID */
-int Z2SoundInfo::getCategory(JAISoundID param_0) const {
- return param_0.mId.mBytes.b1;
+int Z2SoundInfo::getCategory(JAISoundID soundID) const {
+ return soundID.id_.info.type.parts.groupID;
}
/* 802BB0E0-802BB158 2B5A20 0078+00 1/0 0/0 0/0 .text getPriority__11Z2SoundInfoCF10JAISoundID */
-u32 Z2SoundInfo::getPriority(JAISoundID param_0) const {
+u32 Z2SoundInfo::getPriority(JAISoundID soundID) const {
JUT_ASSERT(63, isValid());
- JAUSoundTableItem* data = JASGlobalInstance<JAUSoundTable>::getInstance()->getData(param_0);
- u8 typeID = JASGlobalInstance<JAUSoundTable>::getInstance()->getTypeID(param_0);
+ JAUSoundTableItem* data = JASGlobalInstance<JAUSoundTable>::getInstance()->getData(soundID);
+ u8 typeID = JASGlobalInstance<JAUSoundTable>::getInstance()->getTypeID(soundID);
if (data != NULL && (typeID & 0x40) != 0) {
return data->mPriority;
}
+
return 0;
}
/* 802BB158-802BB448 2B5A98 02F0+00 0/0 1/1 0/0 .text getAudibleSwFull__11Z2SoundInfoF10JAISoundID
*/
-JAUAudibleParam Z2SoundInfo::getAudibleSwFull(JAISoundID param_0) {
- JAUAudibleParam local_28;
+JAUAudibleParam Z2SoundInfo::getAudibleSwFull(JAISoundID soundID) {
+ JAUAudibleParam audibleParam;
JUT_ASSERT(82, isValid());
int iVar1, uVar7;
- switch (JASGlobalInstance<JAUSoundTable>::getInstance()->getTypeID(param_0)) {
+
+ u8 typeID = JASGlobalInstance<JAUSoundTable>::getInstance()->getTypeID(soundID);
+ switch (typeID) {
case 81:
- local_28.field_0x0.bytes.b0_0 = (u32)getSwBit(param_0) >> 8;
- if ((getSwBit(param_0) & 1) != 0) {
- local_28.field_0x0.bytes.b0_4 = 0;
+ audibleParam.field_0x0.bytes.b0_0 = (u32)getSwBit(soundID) >> 8;
+ if ((getSwBit(soundID) & 1) != 0) {
+ audibleParam.field_0x0.bytes.b0_4 = 0;
} else {
- local_28.field_0x0.bytes.b0_4 = 1;
+ audibleParam.field_0x0.bytes.b0_4 = 1;
}
- if ((getSwBit(param_0) & 2) != 0) {
- local_28.field_0x0.bytes.b0_5 = 0;
+
+ if ((getSwBit(soundID) & 2) != 0) {
+ audibleParam.field_0x0.bytes.b0_5 = 0;
} else {
- local_28.field_0x0.bytes.b0_5 = 1;
+ audibleParam.field_0x0.bytes.b0_5 = 1;
}
- if ((getSwBit(param_0) & 4) != 0) {
- local_28.field_0x0.bytes.b0_6 = 0;
+
+ if ((getSwBit(soundID) & 4) != 0) {
+ audibleParam.field_0x0.bytes.b0_6 = 0;
} else {
- local_28.field_0x0.bytes.b0_6 = 1;
+ audibleParam.field_0x0.bytes.b0_6 = 1;
}
- if ((getSwBit(param_0) & 0x800000) != 0) {
- local_28.field_0x0.bytes.b0_7 = 1;
+
+ if ((getSwBit(soundID) & 0x800000) != 0) {
+ audibleParam.field_0x0.bytes.b0_7 = 1;
} else {
- local_28.field_0x0.bytes.b0_7 = 0;
+ audibleParam.field_0x0.bytes.b0_7 = 0;
}
- if ((getSwBit(param_0) & 0x1000) != 0) {
- local_28.field_0x0.bytes.b1_0 = 0;
+
+ if ((getSwBit(soundID) & 0x1000) != 0) {
+ audibleParam.field_0x0.bytes.b1_0 = 0;
} else {
- local_28.field_0x0.bytes.b1_0 = 1;
+ audibleParam.field_0x0.bytes.b1_0 = 1;
}
- if ((getSwBit(param_0) & 0x2000) != 0) {
- local_28.field_0x0.bytes.b1_1 = 0;
+
+ if ((getSwBit(soundID) & 0x2000) != 0) {
+ audibleParam.field_0x0.bytes.b1_1 = 0;
} else {
- local_28.field_0x0.bytes.b1_1 = 1;
+ audibleParam.field_0x0.bytes.b1_1 = 1;
}
uVar7 = 0;
- if ((getSwBit(param_0) & 0x80000) != 0) {
+ if ((getSwBit(soundID) & 0x80000) != 0) {
uVar7 = 8;
}
- iVar1 = (getSwBit(param_0) >> 16) & 0x7;
- iVar1 += (getSwBit(param_0) >> 16) & 0x70;
- iVar1 += (getSwBit(param_0) >> 16) & 0xf00;
- local_28.field_0x0.bytes.b1_2_7 = uVar7;
- local_28.field_0x0.half.f1 = iVar1;
+ iVar1 = (getSwBit(soundID) >> 16) & 0x7;
+ iVar1 += (getSwBit(soundID) >> 16) & 0x70;
+ iVar1 += (getSwBit(soundID) >> 16) & 0xf00;
+ audibleParam.field_0x0.bytes.b1_2_7 = uVar7;
+ audibleParam.field_0x0.half.f1 = iVar1;
break;
default:
- local_28.field_0x0.bytes.b0_0 = 0;
- local_28.field_0x0.bytes.b0_4 = 1;
- local_28.field_0x0.bytes.b0_5 = 1;
- local_28.field_0x0.bytes.b0_6 = 1;
- local_28.field_0x0.bytes.b0_7 = 0;
- local_28.field_0x0.bytes.b1_0 = 1;
- local_28.field_0x0.bytes.b1_1 = 1;
- local_28.field_0x0.bytes.b1_2_7 = 0;
- local_28.field_0x0.half.f1 = 0;
+ audibleParam.field_0x0.bytes.b0_0 = 0;
+ audibleParam.field_0x0.bytes.b0_4 = 1;
+ audibleParam.field_0x0.bytes.b0_5 = 1;
+ audibleParam.field_0x0.bytes.b0_6 = 1;
+ audibleParam.field_0x0.bytes.b0_7 = 0;
+ audibleParam.field_0x0.bytes.b1_0 = 1;
+ audibleParam.field_0x0.bytes.b1_1 = 1;
+ audibleParam.field_0x0.bytes.b1_2_7 = 0;
+ audibleParam.field_0x0.half.f1 = 0;
break;
}
- return local_28;
+
+ return audibleParam;
}
/* 802BB448-802BB6DC 2B5D88 0294+00 2/1 0/0 0/0 .text getAudibleSw__11Z2SoundInfoCF10JAISoundID */
-u16 Z2SoundInfo::getAudibleSw(JAISoundID param_0) const {
- JAUAudibleParam local_28;
+u16 Z2SoundInfo::getAudibleSw(JAISoundID soundID) const {
+ JAUAudibleParam audibleParam;
JUT_ASSERT(184, isValid());
int iVar1, uVar7;
- switch (JASGlobalInstance<JAUSoundTable>::getInstance()->getTypeID(param_0)) {
+
+ u8 typeID = JASGlobalInstance<JAUSoundTable>::getInstance()->getTypeID(soundID);
+ switch (typeID) {
case 81:
- local_28.field_0x0.bytes.b0_0 = (u32)getSwBit(param_0) >> 8;
- if ((getSwBit(param_0) & 1) != 0) {
- local_28.field_0x0.bytes.b0_4 = 0;
+ audibleParam.field_0x0.bytes.b0_0 = (u32)getSwBit(soundID) >> 8;
+ if ((getSwBit(soundID) & 1) != 0) {
+ audibleParam.field_0x0.bytes.b0_4 = 0;
} else {
- local_28.field_0x0.bytes.b0_4 = 1;
+ audibleParam.field_0x0.bytes.b0_4 = 1;
}
- if ((getSwBit(param_0) & 2) != 0) {
- local_28.field_0x0.bytes.b0_5 = 0;
+
+ if ((getSwBit(soundID) & 2) != 0) {
+ audibleParam.field_0x0.bytes.b0_5 = 0;
} else {
- local_28.field_0x0.bytes.b0_5 = 1;
+ audibleParam.field_0x0.bytes.b0_5 = 1;
}
- if ((getSwBit(param_0) & 4) != 0) {
- local_28.field_0x0.bytes.b0_6 = 0;
+
+ if ((getSwBit(soundID) & 4) != 0) {
+ audibleParam.field_0x0.bytes.b0_6 = 0;
} else {
- local_28.field_0x0.bytes.b0_6 = 1;
+ audibleParam.field_0x0.bytes.b0_6 = 1;
}
- if ((getSwBit(param_0) & 0x800000) != 0) {
- local_28.field_0x0.bytes.b0_7 = 1;
+
+ if ((getSwBit(soundID) & 0x800000) != 0) {
+ audibleParam.field_0x0.bytes.b0_7 = 1;
} else {
- local_28.field_0x0.bytes.b0_7 = 0;
+ audibleParam.field_0x0.bytes.b0_7 = 0;
}
- if ((getSwBit(param_0) & 0x1000) != 0) {
- local_28.field_0x0.bytes.b1_0 = 0;
+
+ if ((getSwBit(soundID) & 0x1000) != 0) {
+ audibleParam.field_0x0.bytes.b1_0 = 0;
} else {
- local_28.field_0x0.bytes.b1_0 = 1;
+ audibleParam.field_0x0.bytes.b1_0 = 1;
}
- if ((getSwBit(param_0) & 0x2000) != 0) {
- local_28.field_0x0.bytes.b1_1 = 0;
+
+ if ((getSwBit(soundID) & 0x2000) != 0) {
+ audibleParam.field_0x0.bytes.b1_1 = 0;
} else {
- local_28.field_0x0.bytes.b1_1 = 1;
+ audibleParam.field_0x0.bytes.b1_1 = 1;
}
uVar7 = 0;
- if ((getSwBit(param_0) & 0x80000) != 0) {
+ if ((getSwBit(soundID) & 0x80000) != 0) {
uVar7 = 8;
}
- iVar1 = (getSwBit(param_0) >> 16) & 0x7;
- iVar1 += (getSwBit(param_0) >> 16) & 0x70;
- iVar1 += (getSwBit(param_0) >> 16) & 0xf00;
- local_28.field_0x0.bytes.b1_2_7 = uVar7;
- local_28.field_0x0.half.f1 = iVar1;
+ iVar1 = (getSwBit(soundID) >> 16) & 0x7;
+ iVar1 += (getSwBit(soundID) >> 16) & 0x70;
+ iVar1 += (getSwBit(soundID) >> 16) & 0xf00;
+ audibleParam.field_0x0.bytes.b1_2_7 = uVar7;
+ audibleParam.field_0x0.half.f1 = iVar1;
break;
default:
- local_28.field_0x0.half.f0 = 0xffff;
- local_28.field_0x0.half.f1 = 0xffff;
+ audibleParam.field_0x0.half.f0 = 0xffff;
+ audibleParam.field_0x0.half.f1 = 0xffff;
break;
}
- return local_28.field_0x0.half.f0;
+
+ return audibleParam.field_0x0.half.f0;
}
/* 802BB6DC-802BB8B4 2B601C 01D8+00 1/0 0/0 0/0 .text
* getSeInfo__11Z2SoundInfoCF10JAISoundIDP5JAISe */
-void Z2SoundInfo::getSeInfo(JAISoundID param_1, JAISe* param_2) const {
- getSoundInfo_(param_1, param_2);
+void Z2SoundInfo::getSeInfo(JAISoundID soundID, JAISe* sePtr) const {
+ getSoundInfo_(soundID, sePtr);
JUT_ASSERT(292, isValid());
- JAUSoundTableItem* data = JASGlobalInstance<JAUSoundTable>::getInstance()->getData(param_1);
- u8 typeID = JASGlobalInstance<JAUSoundTable>::getInstance()->getTypeID(param_1);
+
+ JAUSoundTableItem* data = JASGlobalInstance<JAUSoundTable>::getInstance()->getData(soundID);
+ u8 typeID = JASGlobalInstance<JAUSoundTable>::getInstance()->getTypeID(soundID);
if (data == NULL) {
return;
}
+
switch(typeID) {
case 81:
- param_2->getProperty().field_0x8 *= data->field_0x8;
- u32 uStack_6c = (getSwBit(param_1) & 0xf0) >> 4;
+ sePtr->getProperty().field_0x8 *= data->field_0x8;
+ u32 uStack_6c = (getSwBit(soundID) & 0xf0) >> 4;
if (uStack_6c > 8) {
- f32 dVar18 = Z2Calc::getRandom_0_1();
- f32 dVar19 = Z2Calc::linearTransform(uStack_6c, 8.0f, 15.0f, 16.0f, 24.0f, true);
- dVar19 = dVar19 / 48.0f * dVar18;
- param_2->getProperty().field_0x8 += dVar19;
+ sePtr->getProperty().field_0x8 += Z2Calc::linearTransform(uStack_6c, 8.0f, 15.0f, 16.0f, 24.0f, true) / 48.0f * Z2Calc::getRandom_0_1();
} else {
- f32 dVar18 = Z2Calc::getRandom_0_1();
- dVar18 = (uStack_6c / 48.0f) * dVar18;
- param_2->getProperty().field_0x8 += dVar18;
+ sePtr->getProperty().field_0x8 += (uStack_6c / 48.0f) * Z2Calc::getRandom_0_1();
}
- u32 uVar1 = (u32)getSwBit(param_1) >> 0x1c;
+
+ u32 uVar1 = (u32)getSwBit(soundID) >> 0x1c;
if (uVar1 != 0) {
f32 dVar18 = (uVar1 / 15.0f) * Z2Calc::getRandom_0_1();
- param_2->getProperty().field_0x0 -= dVar18 < 0.0f ? 0.0f : (dVar18 > 1.0f ? 1.0f : dVar18);
+ sePtr->getProperty().field_0x0 -= dVar18 < 0.0f ? 0.0f : (dVar18 > 1.0f ? 1.0f : dVar18);
}
break;
}
@@ -227,43 +238,46 @@ void Z2SoundInfo::getSeInfo(JAISoundID param_1, JAISe* param_2) const {
/* 802BB8B4-802BB8E0 2B61F4 002C+00 1/0 0/0 0/0 .text
* getSeqInfo__11Z2SoundInfoCF10JAISoundIDP6JAISeq */
-void Z2SoundInfo::getSeqInfo(JAISoundID param_0, JAISeq* param_1) const {
- getSoundInfo_(param_0, param_1);
+void Z2SoundInfo::getSeqInfo(JAISoundID soundID, JAISeq* seqPtr) const {
+ getSoundInfo_(soundID, seqPtr);
}
/* 80455A90-80455A94 004090 0004+00 1/1 0/0 0/0 .sdata2 STRM_CH_SHIFT__20JAUStdSoundTableType */
-u32 const JAUStdSoundTableType::STRM_CH_SHIFT = 2;
+const u32 JAUStdSoundTableType::STRM_CH_SHIFT = 2;
/* 802BB8E0-802BBA10 2B6220 0130+00 1/0 0/0 0/0 .text
* getStreamInfo__11Z2SoundInfoCF10JAISoundIDP9JAIStream */
-void Z2SoundInfo::getStreamInfo(JAISoundID param_1, JAIStream* param_2) const {
+void Z2SoundInfo::getStreamInfo(JAISoundID soundID, JAIStream* streamPtr) const {
int numChild;
JAUSoundTableItem* data;
- getSoundInfo_(param_1, param_2);
+ getSoundInfo_(soundID, streamPtr);
JUT_ASSERT(349, isValid());
- switch (JASGlobalInstance<JAUSoundTable>::getInstance()->getTypeID(param_1) & 0xf0) {
+
+ u8 typeID = JASGlobalInstance<JAUSoundTable>::getInstance()->getTypeID(soundID);
+ switch (typeID & 0xf0) {
case 0x70:
u16 uVar1;
s32 iVar4;
- data = JASGlobalInstance<JAUSoundTable>::getInstance()->getData(param_1);
+ data = JASGlobalInstance<JAUSoundTable>::getInstance()->getData(soundID);
JUT_ASSERT(356, data);
+
uVar1 = data->mResourceId;
- numChild = param_2->getNumChild();
+ numChild = streamPtr->getNumChild();
iVar4 = 0;
for (; iVar4 < numChild && uVar1 != 0; uVar1 >>= JAUStdSoundTableType::STRM_CH_SHIFT, iVar4++) {
u32 uVar2 = uVar1 & 3;
if (uVar2 != 0) {
- JAISoundChild* child = param_2->getChild(iVar4);
+ JAISoundChild* child = streamPtr->getChild(iVar4);
if (child != NULL) {
switch (uVar2) {
case 1:
- child->mMove.mParams.mPan = 0.5f;
+ child->mMove.params_.mPan = 0.5f;
break;
case 2:
- child->mMove.mParams.mPan = 0.0f;
+ child->mMove.params_.mPan = 0.0f;
break;
case 3:
- child->mMove.mParams.mPan = 1.0f;
+ child->mMove.params_.mPan = 1.0f;
break;
}
}
@@ -274,51 +288,54 @@ void Z2SoundInfo::getStreamInfo(JAISoundID param_1, JAIStream* param_2) const {
/* 802BBA10-802BBA88 2B6350 0078+00 1/1 0/0 0/0 .text
* getStreamFilePath__11Z2SoundInfoF10JAISoundID */
-const char* Z2SoundInfo::getStreamFilePath(JAISoundID param_1) {
+const char* Z2SoundInfo::getStreamFilePath(JAISoundID soundID) {
JUT_ASSERT(387, isValid());
JAUSoundTableItem* data;
const void* resource;
- switch (JASGlobalInstance<JAUSoundTable>::getInstance()->getTypeID(param_1) & 0xf0) {
+
+ switch (JASGlobalInstance<JAUSoundTable>::getInstance()->getTypeID(soundID) & 0xf0) {
case 0x70:
- data = JASGlobalInstance<JAUSoundTable>::getInstance()->getData(param_1);
+ data = JASGlobalInstance<JAUSoundTable>::getInstance()->getData(soundID);
JUT_ASSERT(394, data);
resource = JASGlobalInstance<JAUSoundTable>::getInstance()->getResource();
JUT_ASSERT(398, resource);
return JAUStdSoundTableType::StringOffset::getString(resource, data->field_0x4);
default:
return NULL;
- break;
}
}
/* 802BBA88-802BBAC8 2B63C8 0040+00 2/1 0/0 0/0 .text
* getStreamFileEntry__11Z2SoundInfoF10JAISoundID */
-s32 Z2SoundInfo::getStreamFileEntry(JAISoundID param_0) {
- const char* path = getStreamFilePath(param_0);
+s32 Z2SoundInfo::getStreamFileEntry(JAISoundID soundID) {
+ const char* path = getStreamFilePath(soundID);
return !path ? -1 : DVDConvertPathToEntrynum(path);
}
/* 802BBAC8-802BBB48 2B6408 0080+00 3/3 4/4 0/0 .text getSwBit__11Z2SoundInfoCF10JAISoundID */
-int Z2SoundInfo::getSwBit(JAISoundID param_1) const {
+int Z2SoundInfo::getSwBit(JAISoundID soundID) const {
JUT_ASSERT(418, isValid());
- JAUSoundTableItem* data = JASGlobalInstance<JAUSoundTable>::getInstance()->getData(param_1);
- u8 typeID = JASGlobalInstance<JAUSoundTable>::getInstance()->getTypeID(param_1);
+ JAUSoundTableItem* data = JASGlobalInstance<JAUSoundTable>::getInstance()->getData(soundID);
+
+ u8 typeID = JASGlobalInstance<JAUSoundTable>::getInstance()->getTypeID(soundID);
if (data != NULL) {
switch(typeID) {
case 81:
return data->field_0x4;
}
}
- return 0xffffffff;
+
+ return 0xFFFFFFFF;
}
/* 802BBB48-802BBBE0 2B6488 0098+00 3/3 0/0 0/0 .text
* getSoundInfo___11Z2SoundInfoCF10JAISoundIDP8JAISound */
-void Z2SoundInfo::getSoundInfo_(JAISoundID param_1, JAISound* param_2) const {
+void Z2SoundInfo::getSoundInfo_(JAISoundID soundID, JAISound* soundPtr) const {
JUT_ASSERT(440, isValid());
- JAUSoundTableItem* data = JASGlobalInstance<JAUSoundTable>::getInstance()->getData(param_1);
- u8 typeID = JASGlobalInstance<JAUSoundTable>::getInstance()->getTypeID(param_1);
+ JAUSoundTableItem* data = JASGlobalInstance<JAUSoundTable>::getInstance()->getData(soundID);
+
+ u8 typeID = JASGlobalInstance<JAUSoundTable>::getInstance()->getTypeID(soundID);
if (data != NULL && (typeID & 0x40) != 0) {
- param_2->getProperty().field_0x0 = (1.0f / 127.0f) * data->field_0x1;
+ soundPtr->getProperty().field_0x0 = (1.0f / 127.0f) * data->field_0x1;
}
}
diff --git a/src/Z2AudioLib/Z2SoundMgr.cpp b/src/Z2AudioLib/Z2SoundMgr.cpp
index 1a6fb14478..9833ed9985 100644
--- a/src/Z2AudioLib/Z2SoundMgr.cpp
+++ b/src/Z2AudioLib/Z2SoundMgr.cpp
@@ -1,7 +1,3 @@
-//
-// Translation Unit: Z2SoundMgr
-//
-
#include "Z2AudioLib/Z2SoundMgr.h"
#include "Z2AudioLib/Z2Param.h"
#include "Z2AudioLib/Z2SceneMgr.h"
@@ -9,19 +5,17 @@
#include "Z2AudioLib/Z2SeqMgr.h"
#include "Z2AudioLib/Z2SeMgr.h"
#include "Z2AudioLib/Z2SoundInfo.h"
+#include "Z2AudioLib/Z2AudioCS.h"
#include "JSystem/JAudio2/JASCalc.h"
#include "JSystem/JAudio2/JASDriverIF.h"
#include "JSystem/JAudio2/JAUSectionHeap.h"
-
-void dComIfGs_staffroll_next_go();
+#include "d/d_com_inf_game.h"
/* 802A9BC8-802A9E80 2A4508 02B8+00 1/0 1/1 0/0 .text seqCallback__FP8JASTrackUs */
-u16 seqCallback(JASTrack* i_track, u16 param_1) {
- JSUList<JAISe>* list;
- switch (param_1) {
+u16 seqCallback(JASTrack* track, u16 command) {
+ switch (command) {
case 0x1000:
- Z2GetSeqMgr()->setChildTrackVolume(Z2GetSeqMgr()->getSubBgmHandle(),
- 3, 1.0f, 0, -1.0f, -1.0f);
+ Z2GetSeqMgr()->setChildTrackVolume(Z2GetSeqMgr()->getSubBgmHandle(), 3, 1.0f, 0, -1.0f, -1.0f);
Z2GetSoundMgr()->getSeqMgr()->calc();
Z2GetSoundMgr()->getSeqMgr()->mixOut();
break;
@@ -41,28 +35,32 @@ u16 seqCallback(JASTrack* i_track, u16 param_1) {
Z2GetSeqMgr()->onVariantBgmJumpEnd(false);
break;
case 0x1006:
- list = Z2GetSoundMgr()->getSeMgr()->getCategory(5)->getSeList();
- for (JSULink<JAISe>* link = list->getFirst(); link != NULL; link = link->getNext()) {
- switch (link->getObject()->getID()) {
- case Z2SE_GRO_MV_SINGING:
- case Z2SE_GRR_MV_SINGING:
- case Z2SE_CLERK_MV_SONG_HO:
- case Z2SE_WAD_A_MV_DANCE:
- case Z2SE_MCN_A_V_DANCE:
- case Z2SE_WCN_A_V_DANCE:
- link->getObject()->getTrack()->writePort(14, 1);
- break;
+ for (JSULink<JAISe>* link = Z2GetSoundMgr()->getSeMgr()->getCategory(5)->getSeList()->getFirst(); link != NULL; link = link->getNext()) {
+ JAISe* se = link->getObject();
+ switch (se->getID()) {
+ case Z2SE_GRO_MV_SINGING:
+ case Z2SE_GRR_MV_SINGING:
+ case Z2SE_CLERK_MV_SONG_HO:
+ case Z2SE_WAD_A_MV_DANCE:
+ case Z2SE_MCN_A_V_DANCE:
+ case Z2SE_WCN_A_V_DANCE:
+ JASTrack* track = se->getTrack();
+ JUT_ASSERT(94, track);
+ track->writePort(14, 1);
+ break;
}
}
break;
case 0x1015:
- list = Z2GetSoundMgr()->getSeMgr()->getCategory(5)->getSeList();
- for (JSULink<JAISe>* link = list->getFirst(); link != NULL; link = link->getNext()) {
- switch (link->getObject()->getID()) {
- case Z2SE_MCN_A_V_DANCE:
- case Z2SE_WCN_A_V_DANCE:
- link->getObject()->getTrack()->writePort(14, 1);
- break;
+ for (JSULink<JAISe>* link = Z2GetSoundMgr()->getSeMgr()->getCategory(5)->getSeList()->getFirst(); link != NULL; link = link->getNext()) {
+ JAISe* se = link->getObject();
+ switch (se->getID()) {
+ case Z2SE_MCN_A_V_DANCE:
+ case Z2SE_WCN_A_V_DANCE:
+ JASTrack* track = se->getTrack();
+ JUT_ASSERT(113, track);
+ track->writePort(14, 1);
+ break;
}
}
break;
@@ -76,123 +74,144 @@ u16 seqCallback(JASTrack* i_track, u16 param_1) {
dComIfGs_staffroll_next_go();
break;
}
- if (param_1 >= 0x1009 && param_1 <= 0x1013) {
+
+ if (command >= 0x1009 && command <= 0x1013) {
JAISoundID sound_id = Z2SE_CSL_TOWN_BAND_VOCAL;
- if (param_1 <= 0x100a) {
+ if (command <= 0x100a) {
sound_id = Z2SE_CSL_TOWN_BAND_GT_1;
- } else if (param_1 <= 0x100c) {
+ } else if (command <= 0x100c) {
sound_id = Z2SE_CSL_TOWN_BAND_GT_2;
- } else if (param_1 <= 0x100f) {
+ } else if (command <= 0x100f) {
sound_id = Z2SE_CSL_TOWN_BAND_GT_3;
- } else if (param_1 <= 0x1011) {
+ } else if (command <= 0x1011) {
sound_id = Z2SE_CSL_TOWN_BAND_FLUTE;
}
- list = Z2GetSoundMgr()->getSeMgr()->getCategory(6)->getSeList();
- for (JSULink<JAISe>* link = list->getFirst(); link != NULL; link = link->getNext()) {
- if (link->getObject()->getID() == sound_id) {
- link->getObject()->getTrack()->writePort(14, param_1);
+
+ for (JSULink<JAISe>* link = Z2GetSoundMgr()->getSeMgr()->getCategory(6)->getSeList()->getFirst(); link != NULL; link = link->getNext()) {
+ JAISe* se = link->getObject();
+ if (se->getID() == sound_id) {
+ JASTrack* track = se->getTrack();
+ JUT_ASSERT(159, track);
+ track->writePort(14, command);
break;
}
}
}
+
return 0;
}
/* 802A9E80-802A9EE8 2A47C0 0068+00 0/0 1/1 0/0 .text __ct__10Z2SoundMgrFv */
Z2SoundMgr::Z2SoundMgr() :
- JASGlobalInstance<Z2SoundMgr>(this),
- mSeMgr(true),
- mSeqMgr(true),
- mStreamMgr(true)
+ JASGlobalInstance<Z2SoundMgr>(true),
+ seMgr_(true),
+ seqMgr_(true),
+ streamMgr_(true)
{
- mSoundID.setAnonymous();
+ soundID_.setAnonymous();
}
/* 802A9EE8-802AA1B0 2A4828 02C8+00 1/0 0/0 0/0 .text
* startSound__10Z2SoundMgrF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3<f> */
-bool Z2SoundMgr::startSound(JAISoundID i_soundID, JAISoundHandle* i_handle,
- JGeometry::TVec3<f32> const* i_pos) {
- switch (Z2GetSoundInfo()->getSoundType(i_soundID)) {
- case 0:
- if (Z2GetSoundInfo()->getSwBit(i_soundID) & 8) {
+bool Z2SoundMgr::startSound(JAISoundID soundID, JAISoundHandle* handle, const JGeometry::TVec3<f32>* posPtr) {
+ int soundType = Z2GetSoundInfo()->getSoundType(soundID);
+ switch (soundType) {
+ case 0: {
+ if (Z2GetSoundInfo()->getSwBit(soundID) & 8) {
+ OS_REPORT("[Z2SoundMgr::startSound] se seq Mute! id = %08x\n", *(u32*)&soundID);
Z2GetSeqMgr()->bgmAllMute(3, 0.3f);
- mSoundID = i_soundID;
+ soundID_ = soundID;
+ }
+
+ #if PLATFORM_WII || PLATFORM_SHIELD
+ if ((u32)soundID == 12) {
+ Z2AudioCS::start(0, 0);
+ } else if ((u32)soundID == 13) {
+ Z2AudioCS::start(0x66, 0);
}
- return mSeMgr.startSound(i_soundID, i_handle, i_pos);
+ #endif
+
+ bool result = seMgr_.startSound(soundID, handle, posPtr);
+ return result;
+ }
case 1:
- if (i_soundID == Z2BGM_LUTERA_DEMO) {
+ if (soundID == Z2BGM_LUTERA_DEMO) {
Z2GetSeqMgr()->bgmStart(Z2BGM_LUTERA2, 0, 0);
Z2GetSeqMgr()->unMuteSceneBgm(0);
Z2GetSeqMgr()->changeBgmStatus(0);
- return mSeMgr.startSound(Z2SE_NO_SOUND, i_handle, i_pos);
+ return seMgr_.startSound(Z2SE_NO_SOUND, handle, posPtr);
} else {
bool loaded = false;
- JAUSectionHeap* heap = JASGlobalInstance<JAUSectionHeap>::getInstance();
- JAUSeqDataBlocks const& loaded_blocks =
- heap->getSectionHeapData().seqDataBlocks.getLoadedBlocks();
- JSULink<JAUSeqDataBlock>* link;
- for (link = loaded_blocks.getFirst(); link != NULL; link = link->getNext()) {
- if (link->getObject()->field_0x10 == i_soundID) {
+ JAUSectionHeap* sectionHeap = JASGlobalInstance<JAUSectionHeap>::getInstance();
+ JUT_ASSERT(228, sectionHeap);
+
+ for (JSULink<JAUSeqDataBlock>* link = sectionHeap->getSectionHeapData().seqDataBlocks.getLoadedBlocks().getFirst(); link != NULL; link = link->getNext()) {
+ if (link->getObject()->field_0x10 == soundID) {
loaded = true;
break;
}
}
+
if (!loaded) {
- heap->releaseIdleDynamicSeqDataBlock();
- if (!heap->loadDynamicSeq(i_soundID, true)) {
- JAUSeqDataBlocks const& free_blocks =
- heap->getSectionHeapData().seqDataBlocks.getFreeBlocks();
- for (link = free_blocks.getFirst(); link != NULL; link = link->getNext()) {
+ u32 sp2C = sectionHeap->releaseIdleDynamicSeqDataBlock();
+ if (!sectionHeap->loadDynamicSeq(soundID, true)) {
+ OS_REPORT("[Z2SoundMgr::startSound] FAILED!!! LOAD SEQ_DATA id: %08x\n", *(u32*)&soundID);
+
+ for (JSULink<JAUSeqDataBlock>* link = sectionHeap->getSectionHeapData().seqDataBlocks.getFreeBlocks().getFirst(); link != NULL; link = link->getNext()) {
+ OS_REPORT(" freeSeqBlock: %d\n", link->getObject()->field_0x14.size);
}
}
}
- return mSeqMgr.startSound(i_soundID, i_handle, i_pos);
+
+ return seqMgr_.startSound(soundID, handle, posPtr);
}
case 2:
- if (i_soundID == 0x2000001 || i_soundID == 0x200004d) {
- mStreamMgr.stop(180);
- return mSeMgr.startSound(Z2SE_NO_SOUND, i_handle, i_pos);
+ if (soundID == 0x2000001 || soundID == 0x200004d) {
+ streamMgr_.stop(180);
+ return seMgr_.startSound(Z2SE_NO_SOUND, handle, posPtr);
}
- if (i_soundID == 0x2000005) {
- mSeMgr.getCategory(9)->pause(false);
- mSeMgr.getCategory(9)->getParams()->moveVolume(1.0f, 45);
+ if (soundID == 0x2000005) {
+ seMgr_.getCategory(9)->pause(false);
+ seMgr_.getCategory(9)->getParams()->moveVolume(1.0f, 45);
}
- return mStreamMgr.startSound(i_soundID, i_handle, i_pos);
+ return streamMgr_.startSound(soundID, handle, posPtr);
default:
char error[32];
- sprintf(error, "Unknown Sound-Type id :%08x\n", (u32)i_soundID);
- return false;
+ sprintf(error, "Unknown Sound-Type id :%08x\n", *(u32*)&soundID);
+ JUT_WARN(277, "%s", error);
}
-}
+ return false;
+}
/* 802AA1B0-802AA270 2A4AF0 00C0+00 2/2 0/0 0/0 .text calc__10Z2SoundMgrFv */
void Z2SoundMgr::calc() {
- mSeMgr.calc();
- if (!mSoundID.isAnonymous() && !isPlayingSoundID(mSoundID)) {
+ seMgr_.calc();
+ if (!soundID_.isAnonymous() && !isPlayingSoundID(soundID_)) {
if (Z2GetSceneMgr()->isSceneExist()) {
Z2GetSeqMgr()->bgmAllUnMute(3);
}
- mSoundID.setAnonymous();
+ soundID_.setAnonymous();
}
- mSeqMgr.calc();
- mStreamMgr.calc();
+ seqMgr_.calc();
+ streamMgr_.calc();
}
/* 802AA270-802AA33C 2A4BB0 00CC+00 1/1 2/2 0/0 .text setIIR__10Z2SoundMgrFP8JAISoundPCs
*/
-void Z2SoundMgr::setIIR(JAISound* param_0, s16 const* param_1) {
- if (param_0 != NULL) {
- JASTrack* track = param_0->getTrack();
+void Z2SoundMgr::setIIR(JAISound* sound, const s16* iir) {
+ if (sound != NULL) {
+ JASTrack* track = sound->getTrack();
+ JUT_ASSERT(340, track);
for (u32 i = 0; i < 4; i++) {
JASTrack* child = track->getChild(i);
if (child != NULL && child->getStatus() == 1) {
- child->setIIR(param_1);
+ child->setIIR(iir);
for (u32 j = 0; j < 4; j++) {
JASTrack* child2 = child->getChild(j);
if (child2 != NULL && child2->getStatus() == 1) {
- child2->setIIR(param_1);
+ child2->setIIR(iir);
}
}
}
@@ -206,9 +225,10 @@ static s16 const cResetFilterTable[8] = {
};
/* 802AA33C-802AA430 2A4C7C 00F4+00 1/1 0/0 0/0 .text setFilterOff__10Z2SoundMgrFP8JAISound */
-void Z2SoundMgr::setFilterOff(JAISound* param_0) {
- if (param_0 != NULL) {
- JASTrack* track = param_0->getTrack();
+void Z2SoundMgr::setFilterOff(JAISound* sound) {
+ if (sound != NULL) {
+ JASTrack* track = sound->getTrack();
+ JUT_ASSERT(403, track);
for (u32 i = 0; i < 4; i++) {
JASTrack* child = track->getChild(i);
if (child != NULL && child->getStatus() == 1) {
@@ -229,16 +249,17 @@ void Z2SoundMgr::setFilterOff(JAISound* param_0) {
/* 802AA430-802AA528 2A4D70 00F8+00 0/0 1/1 0/0 .text resetFilterAll__10Z2SoundMgrFv */
void Z2SoundMgr::resetFilterAll() {
int i = 1;
- if (struct_80451342 != 0) {
+ if (Z2Param::SYSTEM_SE_USE_DARK_SE_SETTING) {
i = 0;
}
+
for (; i < 9; i++) {
- JAISeCategoryMgr* category = mSeMgr.getCategory(i);
+ JAISeCategoryMgr* category = seMgr_.getCategory(i);
int se_count = category->getMaxActiveSe();
if (se_count > 0) {
for (JSULink<JAISe>* link = category->getSeList()->getFirst();
link != NULL && se_count > 0 && !link->getObject()->isFarAway();
- link = link->getNext(), se_count--)
+ link = link->getNext(), --se_count)
{
setFilterOff(link->getObject());
}
@@ -255,34 +276,36 @@ void Z2SoundMgr::resetFilterAll() {
/* 802AA528-802AA67C 2A4E68 0154+00 2/2 0/0 0/0 .text mixOut__10Z2SoundMgrFv */
void Z2SoundMgr::mixOut() {
- if (struct_80451340 != 0 && Z2GetSceneMgr()->isInDarkness()) {
+ if (Z2Param::DARK_SE_FILTER_ON && Z2GetSceneMgr()->isInDarkness()) {
int i = 1;
- if (struct_80451342 != 0) {
+ if (Z2Param::SYSTEM_SE_USE_DARK_SE_SETTING) {
i = 0;
}
+
for (; i < 9; i++) {
- JAISeCategoryMgr* category = mSeMgr.getCategory(i);
+ JAISeCategoryMgr* category = seMgr_.getCategory(i);
int se_count = category->getMaxActiveSe();
if (se_count > 0) {
for (JSULink<JAISe>* link = category->getSeList()->getFirst();
link != NULL && se_count > 0 && !link->getObject()->isFarAway();
- link = link->getNext(), se_count--)
+ link = link->getNext(), --se_count)
{
- setIIR(link->getObject(), JASCalc::CUTOFF_TO_IIR_TABLE[struct_80451341]);
+ setIIR(link->getObject(), JASCalc::CUTOFF_TO_IIR_TABLE[Z2Param::DARK_SE_LOW_PASS_FILTER_SETTING]);
}
} else {
for (JSULink<JAISe>* link = category->getSeList()->getFirst();
link != NULL && !link->getObject()->isFarAway();
link = link->getNext())
{
- setIIR(link->getObject(), JASCalc::CUTOFF_TO_IIR_TABLE[struct_80451341]);
+ setIIR(link->getObject(), JASCalc::CUTOFF_TO_IIR_TABLE[Z2Param::DARK_SE_LOW_PASS_FILTER_SETTING]);
}
}
}
}
- mSeMgr.mixOut();
- mSeqMgr.mixOut();
- mStreamMgr.mixOut();
+
+ seMgr_.mixOut();
+ seqMgr_.mixOut();
+ streamMgr_.mixOut();
}
/* 802AA67C-802AA6B0 2A4FBC 0034+00 0/0 1/1 0/0 .text framework__10Z2SoundMgrFv */
@@ -293,45 +316,44 @@ void Z2SoundMgr::framework() {
/* 802AA6B0-802AA7DC 2A4FF0 012C+00 0/0 1/1 0/0 .text pauseAllGameSound__10Z2SoundMgrFb
*/
-void Z2SoundMgr::pauseAllGameSound(bool i_pause) {
- mSeMgr.getCategory(0)->pause(i_pause);
- mSeMgr.getCategory(1)->pause(i_pause);
- mSeMgr.getCategory(2)->pause(i_pause);
- mSeMgr.getCategory(3)->pause(i_pause);
- mSeMgr.getCategory(4)->pause(i_pause);
- mSeMgr.getCategory(5)->pause(i_pause);
- mSeMgr.getCategory(6)->pause(i_pause);
- mSeMgr.getCategory(7)->pause(i_pause);
- mSeMgr.getCategory(8)->pause(i_pause);
- mSeMgr.getCategory(9)->pause(i_pause);
- mSeqMgr.pause(i_pause);
- mStreamMgr.pause(i_pause);
- if (i_pause) {
+void Z2SoundMgr::pauseAllGameSound(bool paused) {
+ seMgr_.getCategory(0)->pause(paused);
+ seMgr_.getCategory(1)->pause(paused);
+ seMgr_.getCategory(2)->pause(paused);
+ seMgr_.getCategory(3)->pause(paused);
+ seMgr_.getCategory(4)->pause(paused);
+ seMgr_.getCategory(5)->pause(paused);
+ seMgr_.getCategory(6)->pause(paused);
+ seMgr_.getCategory(7)->pause(paused);
+ seMgr_.getCategory(8)->pause(paused);
+ seMgr_.getCategory(9)->pause(paused);
+ seqMgr_.pause(paused);
+ streamMgr_.pause(paused);
+
+ if (paused) {
Z2GetSeMgr()->seMoveVolumeAll(0.0f, 10);
- mSeqMgr.getParams()->moveVolume(0.0f, 10);
- mStreamMgr.getParams()->moveVolume(0.0f, 10);
- }
- else {
+ seqMgr_.getParams()->moveVolume(0.0f, 10);
+ streamMgr_.getParams()->moveVolume(0.0f, 10);
+ } else {
Z2GetSeMgr()->seMoveVolumeAll(1.0f, 10);
- mSeqMgr.getParams()->moveVolume(1.0f, 10);
- mStreamMgr.getParams()->moveVolume(1.0f, 10);
+ seqMgr_.getParams()->moveVolume(1.0f, 10);
+ streamMgr_.getParams()->moveVolume(1.0f, 10);
}
}
-
/* 802AA7DC-802AA84C 2A511C 0070+00 0/0 1/1 0/0 .text stopSoundID__10Z2SoundMgrF10JAISoundID */
-void Z2SoundMgr::stopSoundID(JAISoundID i_soundID) {
- mSeMgr.stopSoundID(i_soundID);
- mSeqMgr.stopSoundID(i_soundID);
- mStreamMgr.stopSoundID(i_soundID);
+void Z2SoundMgr::stopSoundID(JAISoundID soundID) {
+ seMgr_.stopSoundID(soundID);
+ seqMgr_.stopSoundID(soundID);
+ streamMgr_.stopSoundID(soundID);
}
/* 802AA84C-802AA8C8 2A518C 007C+00 0/0 1/1 0/0 .text stopSync__10Z2SoundMgrFv */
void Z2SoundMgr::stopSync() {
stop();
- while (mSeMgr.getNumActiveSe() > 0 || mSeqMgr.getNumActiveSeqs() > 0) {
+ while (seMgr_.getNumActiveSe() > 0 || seqMgr_.getNumActiveSeqs() > 0) {
calc();
- if (mSeMgr.getNumActiveSe() == 0 && mSeqMgr.getNumActiveSeqs() == 0) {
+ if (seMgr_.getNumActiveSe() == 0 && seqMgr_.getNumActiveSeqs() == 0) {
break;
}
mixOut();
@@ -341,28 +363,29 @@ void Z2SoundMgr::stopSync() {
/* 802AA8C8-802AA908 2A5208 0040+00 1/1 0/0 0/0 .text stop__10Z2SoundMgrFv */
void Z2SoundMgr::stop() {
- mSeMgr.stop();
- mSeqMgr.stop();
- mStreamMgr.stop();
+ seMgr_.stop();
+ seqMgr_.stop();
+ streamMgr_.stop();
}
/* 802AA908-802AA9E8 2A5248 00E0+00 0/0 1/1 0/0 .text initParams__10Z2SoundMgrFv */
void Z2SoundMgr::initParams() {
- mSeMgr.initParams();
- mSeqMgr.getParams()->init();
- mStreamMgr.getParams()->init();
-}
+ JUT_ASSERT(613, ! seMgr_.isActive());
+ JUT_ASSERT(614, ! seqMgr_.isActive());
+ seMgr_.initParams();
+ seqMgr_.getParams()->init();
+ streamMgr_.getParams()->init();
+}
/* 802AA9E8-802AAAC4 2A5328 00DC+00 0/0 1/1 0/0 .text
* multiVolumeSoundID__10Z2SoundMgrF10JAISoundIDf */
-void Z2SoundMgr::multiVolumeSoundID(JAISoundID i_soundID, f32 i_multi) {
- if (!i_soundID.isAnonymous() && Z2GetSoundInfo()->getSoundType(i_soundID) == 0) {
- JSUList<JAISe>* list =
- mSeMgr.getCategory(Z2GetSoundInfo()->getCategory(i_soundID))->getSeList();
- for (JSULink<JAISe>* link = list->getFirst(); link != NULL; link = link->getNext()) {
- if (link->getObject()->getID() == i_soundID) {
- link->getObject()->getAuxiliary().mParams.mVolume *= i_multi;
+void Z2SoundMgr::multiVolumeSoundID(JAISoundID soundID, f32 volume) {
+ if (!soundID.isAnonymous() && Z2GetSoundInfo()->getSoundType(soundID) == 0) {
+ int category = Z2GetSoundInfo()->getCategory(soundID);
+ for (JSULink<JAISe>* link = seMgr_.getCategory(category)->getSeList()->getFirst(); link != NULL; link = link->getNext()) {
+ if (link->getObject()->getID() == soundID) {
+ link->getObject()->getAuxiliary().params_.mVolume *= volume;
}
}
}
@@ -370,18 +393,19 @@ void Z2SoundMgr::multiVolumeSoundID(JAISoundID i_soundID, f32 i_multi) {
/* 802AAAC4-802AAB94 2A5404 00D0+00 1/1 0/0 0/0 .text isPlayingSoundID__10Z2SoundMgrF10JAISoundID
*/
-bool Z2SoundMgr::isPlayingSoundID(JAISoundID i_soundID) {
- if (i_soundID.isAnonymous()) {
+bool Z2SoundMgr::isPlayingSoundID(JAISoundID soundID) {
+ if (soundID.isAnonymous()) {
return false;
}
- if (Z2GetSoundInfo()->getSoundType(i_soundID) == 0) {
- JSUList<JAISe>* list =
- mSeMgr.getCategory(Z2GetSoundInfo()->getCategory(i_soundID))->getSeList();
- for (JSULink<JAISe>* link = list->getFirst(); link != NULL; link = link->getNext()) {
- if (link->getObject()->getID() == i_soundID) {
+
+ if (Z2GetSoundInfo()->getSoundType(soundID) == 0) {
+ int category = Z2GetSoundInfo()->getCategory(soundID);
+ for (JSULink<JAISe>* link = seMgr_.getCategory(category)->getSeList()->getFirst(); link != NULL; link = link->getNext()) {
+ if (link->getObject()->getID() == soundID) {
return true;
}
}
}
+
return false;
}
diff --git a/src/Z2AudioLib/Z2SoundObjMgr.cpp b/src/Z2AudioLib/Z2SoundObjMgr.cpp
index 7bd01335d2..6b3d29964b 100644
--- a/src/Z2AudioLib/Z2SoundObjMgr.cpp
+++ b/src/Z2AudioLib/Z2SoundObjMgr.cpp
@@ -1,8 +1,3 @@
-//
-// Generated By: dol2asm
-// Translation Unit: Z2SoundObjMgr
-//
-
#include "Z2AudioLib/Z2SoundObjMgr.h"
#include "Z2AudioLib/Z2Creature.h"
#include "Z2AudioLib/Z2SeqMgr.h"
@@ -11,9 +6,9 @@
#include "Z2AudioLib/Z2LinkMgr.h"
/* 802BF920-802BF980 2BA260 0060+00 0/0 1/1 0/0 .text __ct__13Z2SoundObjMgrFv */
-Z2SoundObjMgr::Z2SoundObjMgr() : JASGlobalInstance<Z2SoundObjMgr>(this) {
- mGhostEnemyState = 0;
- mTwilightBattle = 0;
+Z2SoundObjMgr::Z2SoundObjMgr() : JASGlobalInstance<Z2SoundObjMgr>(true) {
+ ghostEnemyState_ = 0;
+ twilightBattle_ = 0;
setBattleInit();
setForceBattleArea(false, 700, 1100, 1500);
}
@@ -21,10 +16,10 @@ Z2SoundObjMgr::Z2SoundObjMgr() : JASGlobalInstance<Z2SoundObjMgr>(this) {
/* 802BF980-802BF994 2BA2C0 0014+00 1/1 3/3 3/3 .text setForceBattleArea__13Z2SoundObjMgrFbUsUsUs
*/
void Z2SoundObjMgr::setForceBattleArea(bool forceBattle, u16 param_1, u16 param_2, u16 param_3) {
- mForceBattle = forceBattle;
- mEnemyArea.field_0x2 = param_1;
- mEnemyArea.field_0x4 = param_2;
- mEnemyArea.field_0x6 = param_3;
+ forceBattle_ = forceBattle;
+ enemyArea_.field_0x2 = param_1;
+ enemyArea_.field_0x4 = param_2;
+ enemyArea_.field_0x6 = param_3;
}
/* 80455B80-80455B84 004180 0004+00 1/1 0/0 0/0 .sdata2 sAreaDefault */
@@ -45,13 +40,13 @@ static Z2EnemyArea const sAreaSmall = {true, 300, 700, 1000};
/* 80455BA8-80455BAC 0041A8 0004+00 1/1 0/0 0/0 .sdata2 sAreaSmallFloating */
static Z2EnemyArea const sAreaSmallFloating = {false, 500, 800, 1200};
-struct EnemyInfo {
+struct Z2EnemyInfo {
char mName[8];
Z2EnemyArea mEnemyArea;
};
/* 803CAD70-803CB170 027E90 0400+00 3/3 0/0 0/0 .data mEnemyInfo */
-static EnemyInfo mEnemyInfo[64] = {
+static Z2EnemyInfo mEnemyInfo[64] = {
{"Dummy", sAreaDefault},
{"E_s1", {true, 700, 1200, 2000}},
{"E_yk", sAreaSmallFloating},
@@ -120,72 +115,80 @@ static EnemyInfo mEnemyInfo[64] = {
/* 802BF994-802BFFEC 2BA2D4 0658+00 1/0 1/1 0/0 .text searchEnemy__13Z2SoundObjMgrFv */
void Z2SoundObjMgr::searchEnemy() {
- mTwilightBattle = 0;
- Z2CreatureLink* link = Z2GetLink();
- if (link == 0) {
+ twilightBattle_ = 0;
+
+ if (!Z2GetLink()) {
Z2GetSeqMgr()->stopBattleBgm(1, 1);
return;
}
bool bVar7 = false;
bool local_96 = false;
- bool iVar8 = false;
+
+ bool isHolyForestBgm = false;
if (Z2GetSeqMgr()->getMainBgmID() == Z2BGM_HOLY_FOREST) {
- iVar8 = true;
+ isHolyForestBgm = true;
}
- u8 iVar16 = 0;
+
+ u8 subBgmType = 0;
if (Z2GetSeqMgr()->getSubBgmID() == Z2BGM_HORSE_BATTLE) {
- iVar16 = 1;
+ subBgmType = 1;
} else if (Z2GetSeqMgr()->getSubBgmID() == Z2BGM_FACE_OFF_BATTLE2) {
- iVar16 = 2;
+ subBgmType = 2;
}
+
field_0x14 = 0;
- mEnemyNumNear = 0;
+ enemuNumNear_ = 0;
field_0x16 = 0;
- mEnemyNumVeryFar = 0;
+ enemuNumVeryFar_ = 0;
field_0x1a = false;
field_0x18 = 0;
- f32 dVar18 = Z2Calc::getParamByExp(
+
+ f32 linkDistScale = Z2Calc::getParamByExp(
Z2GetLink()->getMoveSpeed(),
0.0f,
100.0f,
0.3f,
1.0f,
2.5f,
- Z2Calc::CURVE_SIGN_1);
- f32 dVar19 = 5000.0f;
+ Z2Calc::CURVE_POSITIVE);
+ f32 veryFarDist = 5000.0f;
- for (JSULink<Z2CreatureEnemy>* local_8c = getFirst(); local_8c != NULL; local_8c = local_8c->getNext()) {
- Z2CreatureEnemy* this_00 = local_8c->getObject();
- if (this_00 == NULL) {
+ for (JSULink<Z2CreatureEnemy>* i = getFirst(); i != NULL; i = i->getNext()) {
+ Z2CreatureEnemy* enemy = i->getObject();
+ if (enemy == NULL) {
+ JUT_WARN_DEVICE(100, 1, "%s", "[Z2SoundObjMgr::searchEnemy] remain remove enemy\n");
continue;
}
- if (this_00->field_0xa1 < 1) {
+
+ if (enemy->field_0xa1 < 1) {
continue;
}
- bool bVar6 = false;
- u8 enemyId = this_00->mEnemyID;
+
+ bool isGhostEnemy = false;
+
+ u8 enemyId = enemy->mEnemyID;
switch (enemyId) {
case Z2_ENEMY_SW:
- if (Z2GetSceneMgr()->getCurrentSceneNum() == 0x1c)
+ if (Z2GetSceneMgr()->getCurrentSceneNum() == Z2SCENE_GERUDO_DESERT)
continue;
break;
case Z2_ENEMY_CR:
- if (Z2GetSceneMgr()->getCurrentSceneNum() == 0x1e)
+ if (Z2GetSceneMgr()->getCurrentSceneNum() == Z2SCENE_HYRULE_FIELD)
continue;
break;
case Z2_ENEMY_NZ:
case Z2_ENEMY_PO:
case Z2_ENEMY_HP:
- bVar6 = true;
+ isGhostEnemy = true;
break;
case Z2_ENEMY_RDB:
- if (iVar16 == 0)
+ if (subBgmType == 0)
continue;
break;
case Z2_ENEMY_WB:
case Z2_ENEMY_RD:
- if (iVar16 != 0)
+ if (subBgmType != 0)
continue;
#if VERSION == VERSION_GCN_JPN
}
@@ -208,77 +211,86 @@ void Z2SoundObjMgr::searchEnemy() {
#endif
if (!Z2GetLink()->isRiding())
break;
- if (Z2GetLink()->getMoveSpeed() <= 0x26)
+ if (Z2GetLink()->getMoveSpeed() <= 38)
break;
continue;
}
- Vec* iVar10 = this_00->getCurrentPos();
- if (iVar10 != NULL) {
- Vec* iVar14 = Z2GetLink()->getCurrentPos();
- if (iVar14 != NULL) {
- Z2EnemyArea local_88 = mEnemyInfo[enemyId].mEnemyArea;
- if (mForceBattle) {
- local_88 = mEnemyArea;
+
+ Vec* enemyPos = enemy->getCurrentPos();
+ if (enemyPos != NULL) {
+ Vec* linkPos = Z2GetLink()->getCurrentPos();
+ if (linkPos != NULL) {
+ Z2EnemyArea enemyArea = mEnemyInfo[enemyId].mEnemyArea;
+ if (forceBattle_) {
+ enemyArea = enemyArea_;
}
- f32 fVar2 = 2.0f;
- if (local_88.field_0x0 == true) {
- fVar2 = 4.0f;
+
+ f32 y_scale = 2.0f;
+ if (enemyArea.field_0x0 == true) {
+ y_scale = 4.0f;
}
- Vec local_80 = {0.0f, 0.0f, 0.0f};
- VECSubtract(iVar10, iVar14, &local_80);
- local_80.y *= fVar2;
- f32 dVar20 = VECMag(&local_80);
- if (dVar20 < local_88.field_0x6 * dVar18) {
- if (bVar6) {
+
+ Vec enemy_linkVec = {0.0f, 0.0f, 0.0f};
+ VECSubtract(enemyPos, linkPos, &enemy_linkVec);
+ enemy_linkVec.y *= y_scale;
+
+ f32 enemyDist = VECMag(&enemy_linkVec);
+ if (enemyDist < enemyArea.field_0x6 * linkDistScale) {
+ if (isGhostEnemy) {
field_0x1a++;
- if (dVar20 < local_88.field_0x4 * dVar18) {
- mGhostEnemyState |= 1;
- if (mGhostEnemyState >= 0x10) {
- mEnemyNumNear++;
- if (dVar20 < local_88.field_0x2 * dVar18) {
+ if (enemyDist < enemyArea.field_0x4 * linkDistScale) {
+ ghostEnemyState_ |= (u8)1;
+ if (ghostEnemyState_ >= 16) {
+ enemuNumNear_++;
+ if (enemyDist < enemyArea.field_0x2 * linkDistScale) {
field_0x14++;
}
}
}
- if (mGhostEnemyState >= 0x11) {
+
+ if (ghostEnemyState_ >= 17) {
field_0x16++;
- if (this_00->mLinkSearch) {
+ if (enemy->mLinkSearch) {
local_96 = true;
}
}
} else {
field_0x16++;
if (enemyId != 0 && enemyId < 9) {
- if (mTwilightBattle == 0) {
- mTwilightBattle = 1;
+ if (twilightBattle_ == 0) {
+ twilightBattle_ = 1;
}
- if (enemyId == 0x1 || enemyId == 0x5) {
- mTwilightBattle = 2;
+
+ if (enemyId == Z2_ENEMY_S1 || enemyId == Z2_ENEMY_YC) {
+ twilightBattle_ = 2;
}
- if (enemyId == 0x8) {
- mTwilightBattle = 2;
+
+ if (enemyId == Z2_ENEMY_YMB) {
+ twilightBattle_ = 2;
} else {
- Z2GetSeqMgr()->changeSubBgmStatus(mTwilightBattle);
+ Z2GetSeqMgr()->changeSubBgmStatus(twilightBattle_);
}
}
- if (enemyId != 0x2c && this_00->mLinkSearch) {
+
+ if (enemyId != Z2_ENEMY_GB && enemy->mLinkSearch) {
local_96 = true;
}
- if (dVar20 < local_88.field_0x4 * dVar18)
- {
- mEnemyNumNear++;
- if (dVar20 < local_88.field_0x2 * dVar18)
- {
+
+ if (enemyDist < enemyArea.field_0x4 * linkDistScale) {
+ enemuNumNear_++;
+ if (enemyDist < enemyArea.field_0x2 * linkDistScale) {
field_0x14++;
}
}
}
}
- if (dVar20 < dVar19 * dVar18) {
- mEnemyNumVeryFar++;
+
+ if (enemyDist < veryFarDist * linkDistScale) {
+ enemuNumVeryFar_++;
}
- if (this_00->field_0xa3 != 0) {
+
+ if (enemy->field_0xa3 != 0) {
bVar7 = true;
field_0x18++;
}
@@ -286,108 +298,108 @@ void Z2SoundObjMgr::searchEnemy() {
}
}
- if (mGhostEnemyState == 0x11) {
+ if (ghostEnemyState_ == 17) {
if (field_0x1a >= field_0x16) {
Z2GetSeqMgr()->setBattleGhostMute(false);
} else {
Z2GetSeqMgr()->setBattleGhostMute(true);
}
- } else if (mGhostEnemyState < 0x20 && field_0x1a == 0x0) {
+ } else if (ghostEnemyState_ < 32 && field_0x1a == 0) {
setGhostEnemyState(0);
}
- if (iVar16 == 1) {
- if (field_0x14 != 0x0) {
+
+ if (subBgmType == 1) {
+ if (field_0x14 != 0) {
Z2GetSeqMgr()->changeSubBgmStatus(1);
} else {
Z2GetSeqMgr()->changeSubBgmStatus(0);
}
- } else if (iVar16 == 2) {
- if (mEnemyNumNear != 0x0) {
+ } else if (subBgmType == 2) {
+ if (enemuNumNear_ != 0) {
Z2GetSeqMgr()->changeSubBgmStatus(1);
} else {
Z2GetSeqMgr()->changeSubBgmStatus(0);
}
- } else if (iVar8) {
- if (field_0x16 != 0x0) {
+ } else if (isHolyForestBgm) {
+ if (field_0x16 != 0) {
Z2GetSeqMgr()->changeBgmStatus(1);
} else {
Z2GetSeqMgr()->changeBgmStatus(0);
}
} else if (!bVar7) {
Z2GetSeqMgr()->setBattleSearched(local_96);
- if (field_0x14 != 0x0) {
+
+ if (field_0x14 != 0) {
Z2GetSeqMgr()->setBattleDistState(0);
+ } else if (enemuNumNear_ != 0) {
+ Z2GetSeqMgr()->setBattleDistState(1);
+ } else if (field_0x16 != 0) {
+ Z2GetSeqMgr()->setBattleDistState(2);
} else {
- if (mEnemyNumNear != 0x0) {
- Z2GetSeqMgr()->setBattleDistState(1);
- } else {
- if (field_0x16 != 0x0) {
- Z2GetSeqMgr()->setBattleDistState(2);
- } else {
- Z2GetSeqMgr()->setBattleDistState(3);
- }
- }
+ Z2GetSeqMgr()->setBattleDistState(3);
}
}
}
-void Z2SoundObjMgr::setGhostEnemyState(u8 p1) {
- if (p1 == 0x20) {
+void Z2SoundObjMgr::setGhostEnemyState(u8 state) {
+ if (state == 32) {
if (field_0x1a >= field_0x16) {
- JASGlobalInstance<Z2SeqMgr>::getInstance()->setBattleGhostMute(true);
+ Z2GetSeqMgr()->setBattleGhostMute(true);
}
} else {
if (field_0x1a == false) {
- mGhostEnemyState = 0;
+ ghostEnemyState_ = 0;
return;
}
}
- mGhostEnemyState = p1 + (mGhostEnemyState & 1);
+ ghostEnemyState_ = state + (ghostEnemyState_ & 1);
}
/* 802C0074-802C0100 2BA9B4 008C+00 0/0 1/1 0/0 .text
* getEnemyID__13Z2SoundObjMgrFPCcP26JSULink<15Z2CreatureEnemy> */
-u8 Z2SoundObjMgr::getEnemyID(char const* param_0, JSULink<Z2CreatureEnemy>* param_1) {
- if (param_0 != NULL) {
- for (u8 uVar2 = 0; uVar2 < ARRAY_SIZEU(mEnemyInfo); uVar2++) {
- if (strcmp(param_0, mEnemyInfo[(u32)uVar2].mName) == 0) {
- append(param_1);
- return uVar2;
+u8 Z2SoundObjMgr::getEnemyID(const char* enemyName, JSULink<Z2CreatureEnemy>* enemyLink) {
+ if (enemyName != NULL) {
+ for (u8 i = 0; i < ARRAY_SIZEU(mEnemyInfo); i++) {
+ if (strcmp(enemyName, mEnemyInfo[(u32)i].mName) == 0) {
+ append(enemyLink);
+ return i;
}
}
}
+
return Z2_ENEMY_NULL;
}
/* 802C0100-802C0120 2BAA40 0020+00 1/1 1/1 0/0 .text setBattleInit__13Z2SoundObjMgrFv */
void Z2SoundObjMgr::setBattleInit() {
field_0x14 = 0;
- mEnemyNumNear = 0;
+ enemuNumNear_ = 0;
field_0x16 = 0;
- mEnemyNumVeryFar = 0;
+ enemuNumVeryFar_ = 0;
field_0x18 = 0;
field_0x1a = false;
}
/* 802C0120-802C013C 2BAA60 001C+00 0/0 1/1 0/0 .text checkBattleFinish__13Z2SoundObjMgrFv */
bool Z2SoundObjMgr::checkBattleFinish() {
- return mEnemyNumVeryFar - field_0x18 <= 0;
+ if (enemuNumVeryFar_ - field_0x18 > 0) {
+ return false;
+ } else {
+ return true;
+ }
}
/* 802C013C-802C0190 2BAA7C 0054+00 0/0 1/1 0/0 .text deleteEnemyAll__13Z2SoundObjMgrFv
*/
void Z2SoundObjMgr::deleteEnemyAll() {
- JSULink<Z2CreatureEnemy>* link;
+ JSULink<Z2CreatureEnemy>* i;
- // not moving the link pointer forward looks like a bug, but deleteObject() actually unlinks the
- // enemy from its owning list
- while (link = this->getFirst(), link != NULL) {
- Z2CreatureEnemy* enemy = link->getObject();
+ // not moving the pointer forward looks like a bug, but deleteObject() actually unlinks the enemy from its owning list
+ while (i = getFirst(), i != NULL) {
+ Z2CreatureEnemy* enemy = i->getObject();
if (enemy == NULL) {
- // setWarningMessage_f((JUTAssertion *)0x1,(ulong)"Z2SoundObjMgr.cpp",(char
- // *)0x16f,(int)&*fill*,
- // "[Z2SoundObjMgr::searchEnemy] remain remove enemy\n",in_r8);
+ JUT_WARN_DEVICE(367, 1, "%s", "[Z2SoundObjMgr::searchEnemy] remain remove enemy\n");
} else {
enemy->deleteObject();
}
@@ -396,20 +408,22 @@ void Z2SoundObjMgr::deleteEnemyAll() {
/* 802C0190-802C01E4 2BAAD0 0054+00 0/0 2/2 0/0 .text
* removeEnemy__13Z2SoundObjMgrFP26JSULink<15Z2CreatureEnemy> */
-bool Z2SoundObjMgr::removeEnemy(JSULink<Z2CreatureEnemy>* param_0) {
- if (param_0 == NULL) {
+bool Z2SoundObjMgr::removeEnemy(JSULink<Z2CreatureEnemy>* enemyLink) {
+ if (enemyLink == NULL) {
return false;
}
- Z2CreatureEnemy* enemy = param_0->getObject();
+ Z2CreatureEnemy* enemy = enemyLink->getObject();
if (enemy->field_0xa3 != 0 && field_0x18 != 0) {
field_0x18--;
}
- return remove(param_0);
+
+ bool result = remove(enemyLink);
+ return result;
}
/* 802C01E4-802C01EC 2BAB24 0008+00 0/0 4/4 0/0 .text isTwilightBattle__13Z2SoundObjMgrFv
*/
u8 Z2SoundObjMgr::isTwilightBattle() {
- return mTwilightBattle;
+ return twilightBattle_;
}
diff --git a/src/Z2AudioLib/Z2SoundObject.cpp b/src/Z2AudioLib/Z2SoundObject.cpp
index e4422c37e5..308ef9e78e 100644
--- a/src/Z2AudioLib/Z2SoundObject.cpp
+++ b/src/Z2AudioLib/Z2SoundObject.cpp
@@ -1,61 +1,71 @@
-//
-// Generated By: dol2asm
-// Translation Unit: Z2SoundObject
-//
-
#include "Z2AudioLib/Z2SoundObject.h"
+#include "Z2AudioLib/Z2SoundObjMgr.h"
#include "Z2AudioLib/Z2Calc.h"
#include "Z2AudioLib/Z2SeMgr.h"
#include "Z2AudioLib/Z2SoundInfo.h"
#include "Z2AudioLib/Z2SoundMgr.h"
#include "Z2AudioLib/Z2SoundStarter.h"
+#include "Z2AudioLib/Z2SceneMgr.h"
#include "Z2AudioLib/Z2Audience.h"
#include "JSystem/JAudio2/JAUSoundAnimator.h"
-Z2SoundObjBase::Z2SoundObjBase() {
- //! @note initializer list doesn't work since fields were initialized out of
- //! structure layout order, indicating original code didn't use initializer list.
- mSoundPos = NULL;
- mIsInitialized = false;
- mSoundStarter = JASGlobalInstance<Z2SoundStarter>::getInstance(); // sInstance
+#if PLATFORM_WII || PLATFORM_SHIELD
+#include "Z2AudioLib/Z2AudioCS.h"
+#endif
+
+Z2SoundObjBase::Z2SoundObjBase()
+#if VERSION == VERSION_SHIELD_DEBUG
+: JSULink<Z2SoundObjBase>(this)
+#endif
+{
+ pos_ = NULL;
+ alive_ = false;
+ soundStarter_ = Z2GetSoundStarter();
field_0x1c = 0;
- field_0x1e = 0;
+ reverb_ = 0;
}
Z2SoundObjBase::~Z2SoundObjBase() {
deleteObject();
}
-void Z2SoundObjBase::init(Vec* pSoundPos, u8 pNumHandles) {
- initHandlesPool(pNumHandles);
- mSoundPos = (JGeometry::TVec3<f32>*)pSoundPos;
- mIsInitialized = true;
+void Z2SoundObjBase::init(Vec* posPtr, u8 handleNum) {
+ #if VERSION == VERSION_SHIELD_DEBUG
+ Z2GetSoundObjMgr()->getAllList()->append(this);
+ #endif
+
+ initHandlesPool(handleNum);
+ pos_ = (JGeometry::TVec3<f32>*)posPtr;
+ alive_ = true;
}
/* 802BDFF8-802BE038 2B8938 0040+00 1/1 8/8 61/61 .text deleteObject__14Z2SoundObjBaseFv
*/
void Z2SoundObjBase::deleteObject() {
+ #if VERSION == VERSION_SHIELD_DEBUG
+ Z2GetSoundObjMgr()->getAllList()->remove(this);
+ #endif
+
dispose();
deleteHandlesPool();
}
-void Z2SoundObjBase::framework(u32 p1, s8 reverb) {
- if (mIsInitialized) {
- field_0x1c = p1;
- field_0x1e = reverb;
- setPos(*mSoundPos);
+void Z2SoundObjBase::framework(u32 param_0, s8 reverb) {
+ if (alive_) {
+ field_0x1c = param_0;
+ reverb_ = reverb;
+ setPos(*pos_);
}
}
/* 802BE070-802BE104 2B89B0 0094+00 5/0 3/0 0/0 .text dispose__14Z2SoundObjBaseFv */
void Z2SoundObjBase::dispose() {
JAISoundHandle* handle;
- JSULink<Z2SoundHandlePool>* link;
- for (link = getFirst(); link != NULL; link = link->getNext()) {
- handle = link->getObject();
- if (handle != NULL && (bool)*handle) {
- u32 swBit = JASGlobalInstance<Z2SoundInfo>::sInstance->getSwBit((*handle)->getID());
- if ((swBit & 0x8000) != 0) {
+ JSULink<Z2SoundHandlePool>* i;
+ for (i = getFirst(); i != NULL; i = i->getNext()) {
+ handle = i->getObject();
+ if (handle != NULL && *handle) {
+ if ((Z2GetSoundInfo()->getSwBit((*handle)->getID()) & 0x8000) != 0) {
handle->releaseSound();
} else {
(*handle)->stop();
@@ -63,84 +73,122 @@ void Z2SoundObjBase::dispose() {
}
}
- mIsInitialized = false;
+ alive_ = false;
}
/* 802BE104-802BE144 2B8A44 0040+00 5/0 3/0 0/0 .text
* stopOK__14Z2SoundObjBaseFR17Z2SoundHandlePool */
-bool Z2SoundObjBase::stopOK(Z2SoundHandlePool& pSoundHandlePool) {
- return !(JASGlobalInstance<Z2SoundInfo>::sInstance->
- getSwBit(pSoundHandlePool->getID()) & 0x8000);
+bool Z2SoundObjBase::stopOK(Z2SoundHandlePool& handlePool) {
+ if ((Z2GetSoundInfo()->getSwBit(handlePool->getID()) & 0x8000) != 0) {
+ return false;
+ } else {
+ return true;
+ }
}
/* 802BE144-802BE2D4 2B8A84 0190+00 5/3 3/1 0/0 .text
* startSound__14Z2SoundObjBaseF10JAISoundIDUlSc */
-Z2SoundHandlePool* Z2SoundObjBase::startSound(JAISoundID pSoundId, u32 param_1, s8 param_2) {
- if (!mIsInitialized) {
+Z2SoundHandlePool* Z2SoundObjBase::startSound(JAISoundID soundID, u32 mapinfo, s8 reverb) {
+ if (!alive_) {
return NULL;
}
- if (JASGlobalInstance<Z2SeMgr>::getInstance()->isSoundCulling(pSoundId)) {
+
+ if (Z2GetSeMgr()->isSoundCulling(soundID)) {
return NULL;
}
- if (param_1 == 0) {
- param_1 = (u32)field_0x1c;
+
+ if (mapinfo == 0) {
+ mapinfo = (u32)field_0x1c;
}
- if (param_2 < 0) {
- param_2 = field_0x1e;
+
+ if (reverb < 0) {
+ reverb = reverb_;
}
- f32 local_0 = (f32)param_2 / 127.0f;
- Z2SoundHandlePool* handle = getHandleSoundID(pSoundId);
+
+ f32 fxMix = (f32)reverb / 127.0f;
+
+ Z2SoundHandlePool* handle = getHandleSoundID(soundID);
if (handle != NULL) {
- if ((JASGlobalInstance<Z2SoundInfo>::getInstance()->getSwBit(pSoundId) & 0x4000) != 0) {
+ if ((Z2GetSoundInfo()->getSwBit(soundID) & 0x4000) != 0) {
handle = NULL;
} else {
return NULL;
}
}
+
if (handle == NULL) {
handle = getFreeHandle();
}
+
if (handle == NULL) {
- handle = getLowPrioSound(pSoundId);
+ handle = getLowPrioSound(soundID);
}
+
if (handle != NULL) {
- mSoundStarter->startSound(pSoundId, handle, mSoundPos, param_1, local_0,
+ soundStarter_->startSound(soundID, handle, pos_, mapinfo, fxMix,
1.0f, 1.0f, -1.0f, -1.0f, 0);
}
+
return handle;
}
/* 802BE2D4-802BE4A4 2B8C14 01D0+00 4/2 3/0 0/0 .text
* startLevelSound__14Z2SoundObjBaseF10JAISoundIDUlSc */
-Z2SoundHandlePool* Z2SoundObjBase::startLevelSound(JAISoundID pSoundId, u32 param_1, s8 param_2) {
- if (!mIsInitialized) {
+Z2SoundHandlePool* Z2SoundObjBase::startLevelSound(JAISoundID soundID, u32 mapinfo, s8 reverb) {
+ if (!alive_) {
return NULL;
}
- if (param_1 == 0) {
- param_1 = (u32)field_0x1c;
+
+ if (mapinfo == 0) {
+ mapinfo = (u32)field_0x1c;
}
- if (param_2 < 0) {
- param_2 = field_0x1e;
+
+ if (reverb < 0) {
+ reverb = reverb_;
}
- f32 local_0 = (f32)param_2 / 127.0f;
- Z2SoundHandlePool* handle = getHandleSoundID(pSoundId);
+
+ f32 fxMix = (f32)reverb / 127.0f;
+
+ Z2SoundHandlePool* handle = getHandleSoundID(soundID);
if (handle != NULL) {
- handle->getSound()->updateLifeTime(1);
- mSoundStarter->setPortData(handle, 6, (u16)param_1, -1);
- handle->getSound()->getAuxiliary().moveFxMix(local_0, 0);
+ JUT_ASSERT_MSG(218, *handle, "handle exist, but (*handle) is not exist!!\n");
+ (*handle)->updateLifeTime(1);
+ soundStarter_->setPortData(handle, 6, (u16)mapinfo, -1);
+ (*handle)->getAuxiliary().moveFxMix(fxMix, 0);
} else {
- if (JASGlobalInstance<Z2SeMgr>::getInstance()->isSoundCulling(pSoundId)) {
+ if (Z2GetSeMgr()->isSoundCulling(soundID)) {
return NULL;
}
+
handle = getFreeHandle();
if (handle == NULL) {
- handle = getLowPrioSound(pSoundId);
+ handle = getLowPrioSound(soundID);
}
+
if (handle != NULL) {
- mSoundStarter->startSound(pSoundId, handle, mSoundPos, param_1, local_0,
+ soundStarter_->startSound(soundID, handle, pos_, mapinfo, fxMix,
1.0f, 1.0f, -1.0f, -1.0f, 0);
- if (handle != NULL && handle->getSound() != NULL) {
- handle->getSound()->setLifeTime(1, false);
+ if (handle != NULL && (*handle) != NULL) {
+ (*handle)->setLifeTime(1, false);
+
+ #if PLATFORM_WII || PLATFORM_SHIELD
+ if (Z2GetSceneMgr()->isSceneExist()) {
+ switch (soundID) {
+ case Z2SE_BOOM_POWER_RESUME:
+ Z2AudioCS::start(0x12, 0);
+ break;
+ case Z2SE_BOOM_TORNADO:
+ Z2AudioCS::start(0x13, 0);
+ break;
+ case Z2SE_AL_SPINNER_RAIL:
+ Z2AudioCS::start(0x3C, 0);
+ break;
+ case Z2SE_WOLFATTACK_WIND_RUSH:
+ Z2AudioCS::start(0x58, 0);
+ break;
+ }
+ }
+ #endif
}
}
}
@@ -149,31 +197,35 @@ Z2SoundHandlePool* Z2SoundObjBase::startLevelSound(JAISoundID pSoundId, u32 para
/* 802BE4A4-802BE5A0 2B8DE4 00FC+00 0/0 5/5 21/21 .text
* startCollisionSE__14Z2SoundObjBaseFUlUlP14Z2SoundObjBase */
-Z2SoundHandlePool* Z2SoundObjBase::startCollisionSE(u32 pId, u32 pUserData, Z2SoundObjBase* pOther) {
- if (pOther != NULL) {
- return pOther->startCollisionSE(pId, pUserData, NULL);
- }
- if (53 < pUserData) {
- pUserData = 0;
- }
- for (JSULink<JAISe>* link =
- Z2GetSoundMgr()->getSeMgr()->getCategory(4)->getSeList()->getFirst();
- link != NULL; link = link->getNext()) {
- if (pId == link->getObject()->getID() && pUserData == link->getObject()->getUserData()) {
- link->getObject()->stop();
+Z2SoundHandlePool* Z2SoundObjBase::startCollisionSE(u32 hitID, u32 mapinfo, Z2SoundObjBase* other) {
+ if (other != NULL) {
+ return other->startCollisionSE(hitID, mapinfo, NULL);
+ }
+
+ if (53 < mapinfo) {
+ JUT_WARN_DEVICE(297, 1, "%s", "mapinfo > 53\n");
+ OS_REPORT("startCollisionSE Invalid MAPINFO:%d hitID:%08x\n", mapinfo, hitID);
+ mapinfo = 0;
+ }
+
+ for (JSULink<JAISe>* i = Z2GetSoundMgr()->getSeMgr()->getCategory(4)->getSeList()->getFirst(); i != NULL; i = i->getNext()) {
+ JAISe* se = i->getObject();
+ if (hitID == se->getID() && mapinfo == se->getUserData()) {
+ se->stop();
}
}
- Z2SoundHandlePool* handle = Z2SoundObjBase::startSound(JAISoundID(pId), pUserData, -1);
- if (handle != NULL && handle->getSound() != NULL) {
- handle->getSound()->setUserData(pUserData);
- if (30 <= pUserData && pUserData <= 52) {
- Z2Audible* audible = (Z2Audible*)handle->getSound()->getAudible();
+
+ Z2SoundHandlePool* handle = Z2SoundObjBase::startSound(JAISoundID(hitID), mapinfo, -1);
+ if (handle != NULL && (*handle) != NULL) {
+ (*handle)->setUserData(mapinfo);
+ if (30 <= mapinfo && mapinfo <= 52) {
+ Z2Audible* audible = (Z2Audible*)(*handle)->getAudible();
if (audible != NULL) {
- JAUAudibleParam* param = audible->getAudibleParam();
- param->field_0x0.bytes.b1_2_7 = 8;
+ audible->getAudibleParam()->field_0x0.bytes.b1_2_7 = 8;
}
}
}
+
return handle;
}
@@ -187,106 +239,107 @@ Z2DopplerSoundObjBase::Z2DopplerSoundObjBase() : Z2SoundObjBase() {
Z2DopplerSoundObjBase::~Z2DopplerSoundObjBase() {}
/* 802BE65C-802BE6B8 2B8F9C 005C+00 1/0 0/0 0/0 .text init__21Z2DopplerSoundObjBaseFP3VecUc */
-void Z2DopplerSoundObjBase::init(Vec* param_0, u8 param_1) {
- Z2SoundObjBase::init(param_0, param_1);
- if (mSoundPos != NULL) {
- // field_0x20 = *mSoundPos;
- JGeometry::setTVec3f(&mSoundPos->x, &field_0x20.x);
- // field_0x2c = *mSoundPos;
- JGeometry::setTVec3f(&mSoundPos->x, &field_0x2c.x);
+void Z2DopplerSoundObjBase::init(Vec* posPtr, u8 handleNum) {
+ Z2SoundObjBase::init(posPtr, handleNum);
+ if (pos_ != NULL) {
+ field_0x20 = *pos_;
+ field_0x2c = *pos_;
}
}
/* 802BE6B8-802BE714 2B8FF8 005C+00 2/0 0/0 0/0 .text framework__21Z2DopplerSoundObjBaseFUlSc */
-void Z2DopplerSoundObjBase::framework(u32 param_0, s8 param_1) {
- Z2SoundObjBase::framework(param_0, param_1);
- if (mSoundPos != NULL) {
- // field_0x20 = field_0x2c;
- JGeometry::setTVec3f(&field_0x2c.x, &field_0x20.x);
- // field_0x2c = *mSoundPos;
- JGeometry::setTVec3f(&mSoundPos->x, &field_0x2c.x);
+void Z2DopplerSoundObjBase::framework(u32 param_0, s8 reverb) {
+ Z2SoundObjBase::framework(param_0, reverb);
+ if (pos_ != NULL) {
+ field_0x20 = field_0x2c;
+ field_0x2c = *pos_;
}
}
/* 802BE714-802BE7AC 2B9054 0098+00 2/0 0/0 0/0 .text
* startSound__21Z2DopplerSoundObjBaseF10JAISoundIDUlSc */
-Z2SoundHandlePool* Z2DopplerSoundObjBase::startSound(JAISoundID pSoundId, u32 param_1, s8 param_2) {
- JGeometry::TVec3<f32>* pos = mSoundPos;
- mSoundPos = NULL;
- Z2SoundHandlePool* handle = Z2SoundObjBase::startSound(pSoundId, param_1, param_2);
- if (pos != NULL && handle != NULL && handle->getSound() != NULL) {
- if (handle->getSound()->acceptsNewAudible()) {
- handle->getSound()->newAudible(*pos, &field_0x20, 0, NULL);
+Z2SoundHandlePool* Z2DopplerSoundObjBase::startSound(JAISoundID soundID, u32 mapinfo, s8 reverb) {
+ JGeometry::TVec3<f32>* pos = pos_;
+ pos_ = NULL;
+
+ Z2SoundHandlePool* handle = Z2SoundObjBase::startSound(soundID, mapinfo, reverb);
+ if (pos != NULL && handle != NULL && (*handle) != NULL) {
+ if ((*handle)->acceptsNewAudible()) {
+ (*handle)->newAudible(*pos, &field_0x20, 0, NULL);
}
}
- mSoundPos = pos;
+
+ pos_ = pos;
return handle;
}
/* 802BE7AC-802BE844 2B90EC 0098+00 2/0 0/0 0/0 .text
* startLevelSound__21Z2DopplerSoundObjBaseF10JAISoundIDUlSc */
-Z2SoundHandlePool* Z2DopplerSoundObjBase::startLevelSound(JAISoundID pSoundId,
- u32 param_1, s8 param_2) {
- JGeometry::TVec3<f32>* pos = mSoundPos;
- mSoundPos = NULL;
- Z2SoundHandlePool* handle = Z2SoundObjBase::startLevelSound(pSoundId, param_1, param_2);
- if (pos != NULL && handle != NULL && handle->getSound() != NULL) {
- if (handle->getSound()->acceptsNewAudible()) {
- handle->getSound()->newAudible(*pos, &field_0x20, 0, NULL);
+Z2SoundHandlePool* Z2DopplerSoundObjBase::startLevelSound(JAISoundID soundID, u32 mapinfo, s8 reverb) {
+ JGeometry::TVec3<f32>* pos = pos_;
+ pos_ = NULL;
+
+ Z2SoundHandlePool* handle = Z2SoundObjBase::startLevelSound(soundID, mapinfo, reverb);
+ if (pos != NULL && handle != NULL && (*handle) != NULL) {
+ if ((*handle)->acceptsNewAudible()) {
+ (*handle)->newAudible(*pos, &field_0x20, 0, NULL);
}
}
- mSoundPos = pos;
+
+ pos_ = pos;
return handle;
}
/* 802BE844-802BE880 2B9184 003C+00 0/0 8/8 65/65 .text __ct__16Z2SoundObjSimpleFv */
Z2SoundObjSimple::Z2SoundObjSimple() : Z2SoundObjBase() {}
-void Z2SoundObjSimple::init(Vec* pSoundPos, u8 pNumHandles) {
- Z2SoundObjBase::init(pSoundPos, pNumHandles);
+void Z2SoundObjSimple::init(Vec* posPtr, u8 handleNum) {
+ Z2SoundObjBase::init(posPtr, handleNum);
}
/* 802BE8A0-802BE9B0 2B91E0 0110+00 1/0 0/0 0/0 .text
* startSound__16Z2SoundObjSimpleF10JAISoundIDUlSc */
-Z2SoundHandlePool* Z2SoundObjSimple::startSound(JAISoundID pSoundId, u32 param_1, s8 param_2) {
- Z2SoundHandlePool* handle = Z2SoundObjBase::startSound(pSoundId, param_1, param_2);
- if (pSoundId == 0x200c7 && handle != NULL && handle->getSound() != NULL) {
- f32 local_0 = Z2Calc::getParamByExp((f32)param_1, 0.0f, 127.0f, 0.2f, 0.4f, 1.0f,
- Z2Calc::CURVE_SIGN_1);
- f32 local_1 = Z2Calc::getParamByExp((f32)param_1, 0.0f, 127.0f, 0.2f, 0.6f, 1.2f,
- Z2Calc::CURVE_SIGN_1);
- handle->getSound()->getAuxiliary().movePitch(local_1, 0);
- handle->getSound()->getAuxiliary().moveVolume(local_0, 0);
+Z2SoundHandlePool* Z2SoundObjSimple::startSound(JAISoundID soundID, u32 mapinfo, s8 reverb) {
+ Z2SoundHandlePool* handle = Z2SoundObjBase::startSound(soundID, mapinfo, reverb);
+
+ if (soundID == Z2SE_AL_UKI_POKOPOKO && handle != NULL && (*handle) != NULL) {
+ f32 volume = Z2Calc::getParamByExp((f32)mapinfo, 0.0f, 127.0f, 0.2f, 0.4f, 1.0f, Z2Calc::CURVE_POSITIVE);
+ f32 pitch = Z2Calc::getParamByExp((f32)mapinfo, 0.0f, 127.0f, 0.2f, 0.6f, 1.2f, Z2Calc::CURVE_POSITIVE);
+ (*handle)->getAuxiliary().movePitch(pitch, 0);
+ (*handle)->getAuxiliary().moveVolume(volume, 0);
}
+
return handle;
}
/* 802BE9B0-802BEB38 2B92F0 0188+00 1/0 0/0 0/0 .text
* startLevelSound__16Z2SoundObjSimpleF10JAISoundIDUlSc */
-Z2SoundHandlePool* Z2SoundObjSimple::startLevelSound(JAISoundID pSoundId, u32 param_1, s8 param_2) {
- Z2SoundHandlePool* handle = Z2SoundObjBase::startLevelSound(pSoundId, param_1, param_2);
- if (handle != NULL && handle->getSound() != NULL) {
- f32 local_0 = 1.0f;
- f32 local_1 = 1.0f;
- switch (pSoundId) {
- case 0x200c6:
- local_1 = Z2Calc::getParamByExp((f32)param_1, 0.0f, 127.0f, 0.2f, 0.4f, 1.0f,
- Z2Calc::CURVE_SIGN_1);
- local_0 = Z2Calc::getParamByExp((f32)param_1, 0.0f, 127.0f, 0.2f, 0.6f, 1.2f,
- Z2Calc::CURVE_SIGN_1);
+Z2SoundHandlePool* Z2SoundObjSimple::startLevelSound(JAISoundID soundID, u32 mapinfo, s8 reverb) {
+ Z2SoundHandlePool* handle = Z2SoundObjBase::startLevelSound(soundID, mapinfo, reverb);
+
+ if (handle != NULL && (*handle) != NULL) {
+ f32 pitch = 1.0f;
+ f32 volume = 1.0f;
+ switch (soundID) {
+ case Z2SE_AL_UKI_KURUKURU_LOOP:
+ volume = Z2Calc::getParamByExp((f32)mapinfo, 0.0f, 127.0f, 0.2f, 0.4f, 1.0f, Z2Calc::CURVE_POSITIVE);
+ pitch = Z2Calc::getParamByExp((f32)mapinfo, 0.0f, 127.0f, 0.2f, 0.6f, 1.2f, Z2Calc::CURVE_POSITIVE);
break;
- case 0x8025c:
- if (param_1 > 100) {
- local_0 = 2.0f;
- } else if (param_1 > 21) {
- local_0 = Z2Calc::getParamByExp((f32)param_1, 22.0f, 50.0f, 0.4f, 1.0f, 1.5f,
- Z2Calc::CURVE_SIGN_0);
+ case Z2SE_OBJ_FLR_FALLING:
+ if (mapinfo > 100) {
+ pitch = 2.0f;
+ } else if (mapinfo > 21) {
+ pitch = Z2Calc::getParamByExp((f32)mapinfo, 22.0f, 50.0f, 0.4f, 1.0f, 1.5f, Z2Calc::CURVE_NEGATIVE);
+ } else {
+ pitch = 1.0f;
}
break;
}
- handle->getSound()->getAuxiliary().movePitch(local_0, 0);
- handle->getSound()->getAuxiliary().moveVolume(local_1, 0);
+
+ (*handle)->getAuxiliary().movePitch(pitch, 0);
+ (*handle)->getAuxiliary().moveVolume(volume, 0);
}
+
return handle;
}
@@ -294,42 +347,44 @@ Z2SoundHandlePool* Z2SoundObjSimple::startLevelSound(JAISoundID pSoundId, u32 pa
Z2SoundObjArrow::Z2SoundObjArrow() : Z2DopplerSoundObjBase() {}
/* 802BEB74-802BEB94 2B94B4 0020+00 1/0 0/0 0/0 .text init__15Z2SoundObjArrowFP3VecUc */
-void Z2SoundObjArrow::init(Vec* param_0, u8 param_1) {
- Z2SoundObjBase::init(param_0, param_1);
+void Z2SoundObjArrow::init(Vec* posPtr, u8 handleNum) {
+ Z2SoundObjBase::init(posPtr, handleNum);
}
/* 802BEB94-802BEBDC 2B94D4 0048+00 0/0 2/2 0/0 .text __ct__15Z2SoundObjAnimeFv */
Z2SoundObjAnime::Z2SoundObjAnime() : Z2SoundObjBase() {
- mpAnimation = NULL;
- mReverse = false;
+ animation_ = NULL;
+ reverse_ = false;
}
/* 802BEBDC-802BEBFC 2B951C 0020+00 1/0 1/0 0/0 .text init__15Z2SoundObjAnimeFP3VecUc */
-void Z2SoundObjAnime::init(Vec* param_0, u8 param_1) {
- Z2SoundObjBase::init(param_0, param_1);
+void Z2SoundObjAnime::init(Vec* posPtr, u8 handleNum) {
+ Z2SoundObjBase::init(posPtr, handleNum);
}
/* 802BEBFC-802BED68 2B953C 016C+00 0/0 2/2 0/0 .text initAnime__15Z2SoundObjAnimeFPvbff
*/
-void Z2SoundObjAnime::initAnime(void* param_0, bool param_1, f32 param_2, f32 param_3) {
+void Z2SoundObjAnime::initAnime(void* animation, bool param_1, f32 startFrame, f32 param_3) {
ageSounds_();
- mpAnimation = (JAUSoundAnimation*)param_0;
- if (mpAnimation != NULL) {
- mReverse = !param_1;
+ animation_ = (JAUSoundAnimation*)animation;
+ if (animation_ != NULL) {
+ reverse_ = !param_1;
field_0x3c = 0;
- if (mReverse) {
- mCurSoundIndex = mpAnimation->getNumSounds() - 1;
- mCurSoundFrame = FLT_MAX;
- setLoopFrame(0.0f, param_2);
+
+ if (reverse_) {
+ curSoundIndex_ = animation_->getNumSounds() - 1;
+ curSoundFrame_ = FLT_MAX;
+ setLoopFrame(0.0f, startFrame);
} else {
- mCurSoundIndex = 0;
- mCurSoundFrame = 0.0f;
- setLoopFrame(param_2, 0.0f);
+ curSoundIndex_ = 0;
+ curSoundFrame_ = 0.0f;
+ setLoopFrame(startFrame, 0.0f);
}
- mCurSoundFrame = param_3;
- mCurSoundIndex = mpAnimation->getStartSoundIndex(param_3);
- if (mReverse && mCurSoundIndex > 0) {
- mCurSoundIndex--;
+
+ curSoundFrame_ = param_3;
+ curSoundIndex_ = animation_->getStartSoundIndex(param_3);
+ if (reverse_ && curSoundIndex_ > 0) {
+ curSoundIndex_--;
}
}
}
@@ -337,25 +392,24 @@ void Z2SoundObjAnime::initAnime(void* param_0, bool param_1, f32 param_2, f32 pa
/* 802BED68-802BEED4 2B96A8 016C+00 1/1 0/0 0/0 .text ageSounds___15Z2SoundObjAnimeFv */
void Z2SoundObjAnime::ageSounds_() {
for (int i = 0; i < getNumHandles(); i++) {
- if (getHandle(i)->getSound() != NULL) {
- switch (getHandle(i)->getSound()->getAnimationState()) {
- case 0:
- break;
- case 1:
- if (getHandle(i)->getSound()->hasLifeTime()) {
- getHandle(i)->getSound()->stop();
+ if ((*getHandle(i))) {
+ switch ((*getHandle(i))->getAnimationState()) {
+ case 0:
+ break;
+ case 1:
+ if ((*getHandle(i))->hasLifeTime()) {
+ (*getHandle(i))->stop();
+ } else {
+ JAUSoundAnimationSound* animationSound = (JAUSoundAnimationSound*)(*getHandle(i))->getUserData();
+ if (animationSound->stopsWhenAnimationChanges()) {
+ (*getHandle(i))->stop();
} else {
- JAUSoundAnimationSound* sound =
- (JAUSoundAnimationSound*)getHandle(i)->getSound()->getUserData();
- if (sound->stopsWhenAnimationChanges()) {
- getHandle(i)->getSound()->stop();
- } else {
- getHandle(i)->getSound()->setAnimationState(2);
- }
+ (*getHandle(i))->setAnimationState(2);
}
- break;
- case 2:
- break;
+ }
+ break;
+ case 2:
+ break;
}
}
}
@@ -365,90 +419,93 @@ void Z2SoundObjAnime::ageSounds_() {
*/
void Z2SoundObjAnime::updateAnime(f32 param_0, f32 param_1) {
for (int i = 0; i < getNumHandles(); i++) {
- if (getHandle(i)->getSound() != NULL && getHandle(i)->getSound()->isAnimated()) {
- getHandle(i)->getSound()->setPos(*mSoundPos);
+ if ((*getHandle(i)) && (*getHandle(i))->isAnimated()) {
+ (*getHandle(i))->setPos(*pos_);
}
}
- if (mpAnimation == NULL || mpAnimation->getNumSounds() == 0) {
+ if (animation_ == NULL || animation_->getNumSounds() == 0) {
return;
}
- if (!mReverse) {
- if (param_0 < mCurSoundFrame) {
- while (mCurSoundIndex < mEndSoundIndex) {
- startSoundInner(*mSoundPos, param_1, mSoundStarter, field_0x1c, field_0x1e);
+ if (!reverse_) {
+ if (param_0 < curSoundFrame_) {
+ while (curSoundIndex_ < endSoundIndex_) {
+ startSoundInner(*pos_, param_1, soundStarter_, field_0x1c, reverb_);
}
- mCurSoundIndex = mStartSoundIndex;
- mCurSoundFrame = param_0;
- if (field_0x3c < 0xffff) {
+ curSoundIndex_ = startSoundIndex_;
+ curSoundFrame_ = param_0;
+ if (field_0x3c < 0xFFFF) {
field_0x3c++;
}
}
+
updateSoundLifeTime_(param_0, param_1);
- while (mCurSoundIndex < mpAnimation->getNumSounds() &&
- mpAnimation->getSound(mCurSoundIndex)->isNotingOn(param_0, false)) {
- startSoundInner(*mSoundPos, param_1, mSoundStarter, field_0x1c, field_0x1e);
+
+ while (curSoundIndex_ < animation_->getNumSounds() && animation_->getSound(curSoundIndex_)->isNotingOn(param_0, false)) {
+ startSoundInner(*pos_, param_1, soundStarter_, field_0x1c, reverb_);
}
} else {
- if (param_0 > mCurSoundFrame) {
- while (mCurSoundIndex >= mStartSoundIndex) {
- startSoundInner(*mSoundPos, param_1, mSoundStarter, field_0x1c, field_0x1e);
+ if (param_0 > curSoundFrame_) {
+ while (curSoundIndex_ >= startSoundIndex_) {
+ startSoundInner(*pos_, param_1, soundStarter_, field_0x1c, reverb_);
}
- mCurSoundIndex = mEndSoundIndex - 1;
- mCurSoundFrame = param_0;
- if (field_0x3c < 0xffff) {
+ curSoundIndex_ = endSoundIndex_ - 1;
+ curSoundFrame_ = param_0;
+ if (field_0x3c < 0xFFFF) {
field_0x3c++;
}
}
+
updateSoundLifeTime_(param_0, param_1);
- while (mCurSoundIndex >= 0 &&
- mpAnimation->getSound(mCurSoundIndex)->isNotingOn(param_0, true)) {
- startSoundInner(*mSoundPos, param_1, mSoundStarter, field_0x1c, field_0x1e);
+
+ while (curSoundIndex_ >= 0 && animation_->getSound(curSoundIndex_)->isNotingOn(param_0, true)) {
+ startSoundInner(*pos_, param_1, soundStarter_, field_0x1c, reverb_);
}
}
- mCurSoundFrame = param_0;
+ curSoundFrame_ = param_0;
}
/* 802BF304-802BF660 2B9C44 035C+00 1/1 0/0 0/0 .text updateSoundLifeTime___15Z2SoundObjAnimeFff
*/
void Z2SoundObjAnime::updateSoundLifeTime_(f32 param_0, f32 param_1) {
- if (mpAnimation == NULL) {
+ if (animation_ == NULL) {
return;
}
+
for (int i = 0; i < getNumHandles(); i++) {
- if (getHandle(i)->getSound() != NULL) {
- switch (getHandle(i)->getSound()->getAnimationState()) {
- case 0:
- break;
- case 1: {
- JAUSoundAnimationSound* sound =
- (JAUSoundAnimationSound*)getHandle(i)->getSound()->getUserData();
- bool bvar1 = param_1 == 0.0f && sound->stopsWhenSpeedIsZero();
- if (sound->setsLifeTime()) {
- if (bvar1) {
- getHandle(i)->getSound()->pause(true);
- } else {
- if (sound->isNoting(param_0)) {
- getHandle(i)->getSound()->updateLifeTime(1);
- getHandle(i)->getSound()->pause(false);
- } else {
- getHandle(i)->getSound()->stop();
- }
- }
+ if ((*getHandle(i))) {
+ switch ((*getHandle(i))->getAnimationState()) {
+ case 0:
+ break;
+ case 1: {
+ JAUSoundAnimationSound* animationSound = (JAUSoundAnimationSound*)(*getHandle(i))->getUserData();
+ JUT_ASSERT(696, animationSound);
+
+ bool bvar1 = param_1 == 0.0f && animationSound->stopsWhenSpeedIsZero();
+ if (animationSound->setsLifeTime()) {
+ if (bvar1) {
+ (*getHandle(i))->pause(true);
} else {
- if (bvar1) {
- getHandle(i)->getSound()->stop();
- } else if (sound->stopsWhenNoteOff() &&
- sound->isNotingOff(param_0, mReverse)) {
- getHandle(i)->getSound()->stop();
+ if (animationSound->isNoting(param_0)) {
+ (*getHandle(i))->updateLifeTime(1);
+ (*getHandle(i))->pause(false);
+ } else {
+ (*getHandle(i))->stop();
}
}
- break;
+ } else {
+ if (bvar1) {
+ (*getHandle(i))->stop();
+ } else if (animationSound->stopsWhenNoteOff() && animationSound->isNotingOff(param_0, reverse_)) {
+ (*getHandle(i))->stop();
+ }
}
- case 2:
- break;
+ break;
+ }
+ case 2:
+ break;
}
}
}
@@ -456,38 +513,44 @@ void Z2SoundObjAnime::updateSoundLifeTime_(f32 param_0, f32 param_1) {
/* 802BF660-802BF890 2B9FA0 0230+00 1/1 0/0 0/0 .text
* startSoundInner__15Z2SoundObjAnimeFRCQ29JGeometry8TVec3<f>fP14Z2SoundStarterUlSc */
-void Z2SoundObjAnime::startSoundInner(JGeometry::TVec3<f32> const& param_0, f32 param_1,
- Z2SoundStarter* param_2, u32 param_3, s8 param_4) {
- const JAUSoundAnimationSound* sound = mpAnimation->getSound(mCurSoundIndex);
- u32 user_data = (u32)sound;
- if (mReverse) {
- mCurSoundIndex--;
+void Z2SoundObjAnime::startSoundInner(const JGeometry::TVec3<f32>& pos, f32 param_1,
+ Z2SoundStarter* soundStarter, u32 mapinfo, s8 reverb) {
+ JUT_ASSERT(746, curSoundIndex_ >= 0);
+ JUT_ASSERT(747, curSoundIndex_ < animation_->getNumSounds());
+
+ const JAUSoundAnimationSound* animationSound = animation_->getSound(curSoundIndex_);
+ u32 user_data = (u32)animationSound;
+ if (reverse_) {
+ curSoundIndex_--;
} else {
- mCurSoundIndex++;
+ curSoundIndex_++;
}
- if (sound->field_0x1a > 0) {
- param_3 = sound->field_0x1a;
+
+ if (animationSound->field_0x1a > 0) {
+ mapinfo = animationSound->field_0x1a;
}
- if (playsSound(sound, param_0, param_1)) {
- u32 id = getSoundID(sound, param_0, param_1);
+
+ if (playsSound(animationSound, pos, param_1)) {
+ u32 id = getSoundID(animationSound, pos, param_1);
if (!Z2GetSeMgr()->isSoundCulling(id)) {
JAISoundHandle* handle = getHandleUserData(user_data);
- if (handle != NULL && handle->getSound() != NULL &&
- handle->getSound()->getAnimationState() != 1) {
+ if (handle != NULL && (*handle) != NULL && (*handle)->getAnimationState() != 1) {
handle = NULL;
}
+
if (handle == NULL) {
handle = getFreeHandle();
}
+
if (handle != NULL) {
- param_2->startSound(id, handle, &param_0, param_3, (f32)param_4 / 127.0f,
- sound->field_0x0c, (f32)sound->field_0x14 / 127.0f,
- -1.0f, -1.0f, 0);
- if (handle->getSound() != NULL) {
- handle->getSound()->setAnimationState(1);
- handle->getSound()->setUserData(user_data);
- if (sound->setsLifeTime()) {
- handle->getSound()->setLifeTime(1, false);
+ bool result = soundStarter->startSound(id, handle, &pos, mapinfo, (f32)reverb / 127.0f,
+ animationSound->field_0x0c, (f32)animationSound->field_0x14 / 127.0f,
+ -1.0f, -1.0f, 0);
+ if ((*handle) != NULL) {
+ (*handle)->setAnimationState(1);
+ (*handle)->setUserData(user_data);
+ if (animationSound->setsLifeTime()) {
+ (*handle)->setLifeTime(1, false);
}
}
}
@@ -497,32 +560,34 @@ void Z2SoundObjAnime::startSoundInner(JGeometry::TVec3<f32> const& param_0, f32
/* 802BF890-802BF898 2BA1D0 0008+00 1/1 0/0 0/0 .text
* getSoundID__15Z2SoundObjAnimeFPC22JAUSoundAnimationSoundRCQ29JGeometry8TVec3<f>f */
-u32 Z2SoundObjAnime::getSoundID(JAUSoundAnimationSound const* i_sound,
- JGeometry::TVec3<f32> const& param_1, f32 param_2) {
- return i_sound->mSoundId;
+u32 Z2SoundObjAnime::getSoundID(const JAUSoundAnimationSound* animationSound,
+ const JGeometry::TVec3<f32>& param_1, f32 param_2) {
+ return animationSound->mSoundId;
}
/* 802BF898-802BF920 2BA1D8 0088+00 1/1 0/0 0/0 .text
* playsSound__15Z2SoundObjAnimeFPC22JAUSoundAnimationSoundRCQ29JGeometry8TVec3<f>f */
-bool Z2SoundObjAnime::playsSound(JAUSoundAnimationSound const* i_sound,
- JGeometry::TVec3<f32> const& param_1, f32 param_2) {
- if (i_sound->playsOnlyOnce()) {
- if (field_0x3c != i_sound->field_0x16) {
+bool Z2SoundObjAnime::playsSound(const JAUSoundAnimationSound* animationSound,
+ const JGeometry::TVec3<f32>& param_1, f32 param_2) {
+ (void)param_1;
+ (void)param_2;
+
+ if (animationSound->playsOnlyOnce()) {
+ if (field_0x3c != animationSound->field_0x16) {
return false;
}
} else {
- if (i_sound->playsAtIntervals() &&
- i_sound->field_0x16 != field_0x3c % i_sound->field_0x19) {
+ if (animationSound->playsAtIntervals() && animationSound->field_0x16 != field_0x3c % animationSound->field_0x19) {
return false;
}
}
- if (mReverse) {
- if (i_sound->playsOnlyForward()) {
+ if (reverse_) {
+ if (animationSound->playsOnlyForward()) {
return false;
}
} else {
- if (i_sound->playsOnlyReverse()) {
+ if (animationSound->playsOnlyReverse()) {
return false;
}
}
diff --git a/src/Z2AudioLib/Z2SoundStarter.cpp b/src/Z2AudioLib/Z2SoundStarter.cpp
index 968248ab6a..fa8ca55990 100644
--- a/src/Z2AudioLib/Z2SoundStarter.cpp
+++ b/src/Z2AudioLib/Z2SoundStarter.cpp
@@ -1,110 +1,109 @@
-//
-// Z2SoundStarter
-//
-
#include "Z2AudioLib/Z2SoundStarter.h"
#include "Z2AudioLib/Z2EnvSeMgr.h"
#include "Z2AudioLib/Z2AudioMgr.h"
/* 802AAB94-802AABF4 2A54D4 0060+00 0/0 4/4 0/0 .text __ct__14Z2SoundStarterFb */
-Z2SoundStarter::Z2SoundStarter(bool param_0) : JAISoundStarter(param_0), JASGlobalInstance<Z2SoundStarter>(param_0) {
-}
+Z2SoundStarter::Z2SoundStarter(bool setInstance) :
+ JAISoundStarter(setInstance), JASGlobalInstance<Z2SoundStarter>(setInstance) {}
/* 802AABF4-802AAC3C 2A5534 0048+00 1/0 5/0 0/0 .text
* startSound__14Z2SoundStarterF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3<f> */
-bool Z2SoundStarter::startSound(JAISoundID i_soundID, JAISoundHandle* i_handlePtr,
- JGeometry::TVec3<f32> const* i_pos) {
- return Z2SoundStarter::startSound(i_soundID, i_handlePtr, i_pos,
- 0, 0.0f, 1.0f, 1.0f, -1.0f, -1.0f, 0);
+bool Z2SoundStarter::startSound(JAISoundID soundID, JAISoundHandle* handlePtr, const JGeometry::TVec3<f32>* posPtr) {
+ return Z2SoundStarter::startSound(soundID, handlePtr, posPtr, 0, 0.0f, 1.0f, 1.0f, -1.0f, -1.0f, 0);
}
/* 802AAC3C-802AAEDC 2A557C 02A0+00 2/1 2/2 0/0 .text
* startSound__14Z2SoundStarterF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3<f>UlfffffUl */
-bool Z2SoundStarter::startSound(JAISoundID i_soundID, JAISoundHandle* handlePtr,
- JGeometry::TVec3<f32> const* i_pos, u32 param_4, f32 i_fxMix,
- f32 i_pitch, f32 i_volume, f32 i_pan, f32 i_dolby, u32 i_count) {
+bool Z2SoundStarter::startSound(JAISoundID soundID, JAISoundHandle* handlePtr,
+ const JGeometry::TVec3<f32>* posPtr, u32 mapinfo, f32 fxMix,
+ f32 pitch, f32 volume, f32 pan, f32 dolby, u32 moveSteps) {
JUT_ASSERT(45, handlePtr);
- if (param_4 == 6) {
- switch (i_soundID) {
+ if (mapinfo == 6) {
+ switch (soundID) {
case Z2SE_CM_BODYFALL_S:
- i_soundID = Z2SE_CM_BODYFALL_ASASE_S;
+ soundID = Z2SE_CM_BODYFALL_ASASE_S;
break;
case Z2SE_CM_BODYFALL_M:
- i_soundID = Z2SE_CM_BODYFALL_ASASE_M;
+ soundID = Z2SE_CM_BODYFALL_ASASE_M;
break;
case Z2SE_CM_BODYFALL_L:
- i_soundID = Z2SE_CM_BODYFALL_ASASE_L;
+ soundID = Z2SE_CM_BODYFALL_ASASE_L;
break;
}
}
- if (i_soundID.mId.mBytes.b1 != 0 && i_soundID.mId.mBytes.b1 != 9) {
+
+ if (soundID.id_.info.type.parts.groupID != 0 && soundID.id_.info.type.parts.groupID != 9) {
if (Z2GetSceneMgr()->isInDarkness()) {
- i_fxMix = 1.0f;
+ fxMix = 1.0f;
} else {
- f32 ratio = Z2GetStatusMgr()->getCameraInWaterDepthRatio();
- f32 uStack_8c = ratio > 0.0f;
- if (uStack_8c) {
- i_fxMix = uStack_8c;
+ f32 inWaterMix = Z2GetStatusMgr()->getCameraInWaterDepthRatio() > 0.0f;
+ if (inWaterMix) {
+ fxMix = inWaterMix;
} else {
- i_fxMix += 0.5f * Z2GetEnvSeMgr()->getFogDensity();
- if (i_fxMix > 1.0f) {
- i_fxMix = 1.0f;
+ fxMix += 0.5f * Z2GetEnvSeMgr()->getFogDensity();
+ if (fxMix > 1.0f) {
+ fxMix = 1.0f;
}
}
}
}
- bool startSoundRes = Z2GetAudioMgr()->startSound(i_soundID, handlePtr, i_pos);
+
+ bool startSoundRes = Z2GetAudioMgr()->startSound(soundID, handlePtr, posPtr);
if (*handlePtr) {
- if (param_4 != 0) {
- setPortData(handlePtr, 6, param_4, -1);
+ if (mapinfo != 0) {
+ setPortData(handlePtr, 6, mapinfo, -1);
}
- if (i_fxMix > 0.0f) {
- (*handlePtr)->getAuxiliary().moveFxMix(i_fxMix, i_count);
+ if (fxMix > 0.0f) {
+ (*handlePtr)->getAuxiliary().moveFxMix(fxMix, moveSteps);
}
- if (i_pitch != 1.0f) {
- (*handlePtr)->getAuxiliary().movePitch(i_pitch, i_count);
+ if (pitch != 1.0f) {
+ (*handlePtr)->getAuxiliary().movePitch(pitch, moveSteps);
}
- if (i_volume != 1.0f) {
- (*handlePtr)->getAuxiliary().moveVolume(i_volume, i_count);
+ if (volume != 1.0f) {
+ (*handlePtr)->getAuxiliary().moveVolume(volume, moveSteps);
}
- if (i_pan != -1.0f) {
- (*handlePtr)->getAuxiliary().movePan(i_pan, i_count);
+ if (pan != -1.0f) {
+ (*handlePtr)->getAuxiliary().movePan(pan, moveSteps);
}
- if (i_dolby != -1.0f) {
- (*handlePtr)->getAuxiliary().moveDolby(i_dolby, i_count);
+ if (dolby != -1.0f) {
+ (*handlePtr)->getAuxiliary().moveDolby(dolby, moveSteps);
}
}
+
return startSoundRes;
}
/* 802AAEDC-802AAF74 2A581C 0098+00 1/1 10/10 0/0 .text
* setPortData__14Z2SoundStarterFP14JAISoundHandleUlUsSc */
-void Z2SoundStarter::setPortData(JAISoundHandle* param_1, u32 param_2, u16 param_3, s8 param_4) {
- if (param_1 != NULL && *param_1) {
- JASTrack* track = param_1->getSound()->getTrack();
- if (param_4 != -1) {
- if (track->getChild(param_4) == NULL) {
- track->openChild(param_4);
+void Z2SoundStarter::setPortData(JAISoundHandle* handlePtr, u32 portNum, u16 data, s8 childIndex) {
+ if (handlePtr != NULL && *handlePtr) {
+ JASTrack* track = handlePtr->getSound()->getTrack();
+ if (childIndex != -1) {
+ if (track->getChild(childIndex) == NULL) {
+ track->openChild(childIndex);
}
- track = track->getChild(param_4);
+ track = track->getChild(childIndex);
}
+
JUT_ASSERT(122, track);
- track->writePort(param_2, param_3);
+ track->writePort(portNum, data);
}
}
/* 802AAF74-802AAFF0 2A58B4 007C+00 0/0 1/1 0/0 .text
* getPortData__14Z2SoundStarterFP14JAISoundHandleUlSc */
-u16 Z2SoundStarter::getPortData(JAISoundHandle* param_1, u32 param_2, s8 param_3) {
- if (param_1 != NULL && *param_1) {
- JASTrack* track;
- if (param_3 == -1) {
- track = param_1->getSound()->getTrack();
+u16 Z2SoundStarter::getPortData(JAISoundHandle* handlePtr, u32 portNum, s8 childIndex) {
+ if (handlePtr != NULL && *handlePtr) {
+ JASTrack* track = NULL;
+ if (childIndex == -1) {
+ track = handlePtr->getSound()->getTrack();
} else {
- track = param_1->getSound()->getChildTrack(param_3);
+ track = handlePtr->getSound()->getChildTrack(childIndex);
}
+
JUT_ASSERT(140, track);
- return track->readPort(param_2);
+ return track->readPort(portNum);
}
+
return 0;
-} \ No newline at end of file
+}
diff --git a/src/Z2AudioLib/Z2SpeechMgr2.cpp b/src/Z2AudioLib/Z2SpeechMgr2.cpp
index a54db697bc..416651a221 100644
--- a/src/Z2AudioLib/Z2SpeechMgr2.cpp
+++ b/src/Z2AudioLib/Z2SpeechMgr2.cpp
@@ -1,7 +1,3 @@
-//
-// Z2SpeechMgr2
-//
-
#include "Z2AudioLib/Z2SpeechMgr2.h"
#include "Z2AudioLib/Z2AudioMgr.h"
#include "Z2AudioLib/Z2EnvSeMgr.h"
@@ -9,56 +5,76 @@
#include "Z2AudioLib/Z2SeMgr.h"
#include "JSystem/JMath/JMath.h"
-typedef struct {
- const u8* field_0x0;
- const u8* field_0x4;
- u8 field_0x8;
- u8 field_0x9;
- u8 field_0xa;
- u8 field_0xb;
-
-} sPrmStruct;
-
struct Z2MdnPrm {
- static u8 const sReply[100];
+ struct Unit {
+ u8 start;
+ u8 end;
+ };
+
+ struct Prm {
+ const Unit* main;
+ const u8* tail;
+ u8 mainNum;
+ u8 tailNum1;
+ u8 tailNum2;
+ };
+
+ static Unit const sReply[50];
static u8 const sReplyTail[10];
- static u8 const sJoke[100];
+
+ static Unit const sJoke[50];
static u8 const sJokeTail[10];
- static u8 const sSexy[100];
+
+ static Unit const sSexy[50];
static u8 const sSexyTail[10];
- static u8 const sRidicule[100];
+
+ static Unit const sRidicule[50];
static u8 const sRidiculeTail[10];
- static u8 const sBoring[108];
- static u8 const sIrritated[94];
- static u8 const sIrritatedTail[10];
- static u8 const sOrder[114];
- static u8 const sResent[106];
- static u8 const sCheerful[106];
- static u8 const sConfused[106];
- static u8 const sHostility[104];
- static u8 const sTired[106];
- static u8 const sSerious[106];
- static u8 const sReplyb[84];
- static u8 const sApologize[100];
- static u8 const sApologizeTail[9];
- static u8 const sDeside[100];
- static u8 const sAfford[104];
- static u8 const sAffordTail[12];
- static sPrmStruct const sPrm[17];
+
+ static Unit const sBoring[54];
static u8 const sBoringTail[6];
+
+ static Unit const sIrritated[47];
+ static u8 const sIrritatedTail[10];
+
+ static Unit const sOrder[57];
static u8 const sOrderTail[6];
+
+ static Unit const sResent[53];
static u8 const sResentTail[5];
+
+ static Unit const sCheerful[53];
static u8 const sCheerfulTail[8];
+
+ static Unit const sConfused[53];
static u8 const sConfusedTail[5];
+
+ static Unit const sHostility[52];
static u8 const sHostilityTail[7];
+
+ static Unit const sTired[53];
static u8 const sTiredTail[8];
+
+ static Unit const sSerious[53];
static u8 const sSeriousTail[7];
+
+ static Unit const sReplyb[42];
static u8 const sReplybTail[7];
+
+ static Unit const sApologize[50];
+ static u8 const sApologizeTail[9];
+
+ static Unit const sDeside[50];
static u8 const sDesideTail[8];
+
+ static Unit const sAfford[52];
+ static u8 const sAffordTail[12];
+
+ static Prm const sPrm[17];
};
/* 8039C260-8039C2C4 0288C0 0064+00 1/0 0/0 0/0 .rodata sReply__8Z2MdnPrm */
-u8 const Z2MdnPrm::sReply[100] = {
+Z2MdnPrm::Unit const Z2MdnPrm::sReply[50] = {
0x6A, 0x8A, 0x50, 0x5F, 0x53, 0x37, 0x37, 0x4F, 0x4F, 0x5E, 0xAA, 0x46, 0x52, 0x5A, 0x5A,
0x4F, 0x4F, 0x45, 0x45, 0x56, 0x64, 0x79, 0x79, 0x79, 0x87, 0x95, 0x95, 0x89, 0x89, 0x4C,
0x4C, 0x4B, 0x52, 0x41, 0x41, 0x5B, 0x5F, 0x71, 0x53, 0x47, 0x89, 0x7D, 0x77, 0x88, 0x88,
@@ -74,7 +90,7 @@ u8 const Z2MdnPrm::sReplyTail[10] = {
};
/* 8039C2D0-8039C334 028930 0064+00 1/0 0/0 0/0 .rodata sJoke__8Z2MdnPrm */
-u8 const Z2MdnPrm::sJoke[100] = {
+Z2MdnPrm::Unit const Z2MdnPrm::sJoke[50] = {
0x68, 0x57, 0x57, 0x55, 0x55, 0x51, 0x5B, 0x64, 0x6B, 0x7B, 0x7B, 0x5C, 0x77, 0x97, 0x8D,
0x97, 0x97, 0x8D, 0x66, 0x69, 0xA2, 0x5C, 0x87, 0x4F, 0x69, 0x5F, 0x5F, 0x83, 0x83, 0x82,
0x7F, 0x96, 0x96, 0xB0, 0x70, 0xA1, 0x6D, 0x6D, 0x6D, 0x59, 0x4C, 0x4B, 0x5A, 0x40, 0x4A,
@@ -83,13 +99,14 @@ u8 const Z2MdnPrm::sJoke[100] = {
0x64, 0x60, 0xB1, 0x6C, 0x6D, 0x6D, 0x7E, 0x7A, 0x97, 0x97, 0x99, 0xA5, 0x89, 0x90, 0xA4,
0x45, 0x45, 0x29, 0x4C, 0x4B, 0x64, 0x64, 0x60, 0x5C, 0xB1,
};
+
/* 8039C334-8039C340 028994 000A+02 1/0 0/0 0/0 .rodata sJokeTail__8Z2MdnPrm */
u8 const Z2MdnPrm::sJokeTail[10] = {
0x51, 0x97, 0x60, 0xB0, 0x6F, 0x5E, 0x5A, 0xA6, 0x4F, 0x4F,
};
/* 8039C340-8039C3A4 0289A0 0064+00 1/0 0/0 0/0 .rodata sSexy__8Z2MdnPrm */
-u8 const Z2MdnPrm::sSexy[100] = {
+Z2MdnPrm::Unit const Z2MdnPrm::sSexy[50] = {
0x5E, 0x60, 0x5F, 0x63, 0x63, 0x72, 0x72, 0x78, 0x4D, 0x7A, 0x6E, 0x6E, 0x6E, 0x6E, 0x6E,
0x59, 0x59, 0x7A, 0x7A, 0xA5, 0x90, 0x8D, 0x86, 0x62, 0x72, 0x79, 0x79, 0x86, 0x7F, 0x8B,
0x85, 0x7B, 0x7B, 0x5E, 0x5E, 0x6D, 0x6D, 0x88, 0x5F, 0xA3, 0xA3, 0x95, 0x95, 0x7F, 0x79,
@@ -105,7 +122,7 @@ u8 const Z2MdnPrm::sSexyTail[10] = {
};
/* 8039C3B0-8039C414 028A10 0064+00 1/0 0/0 0/0 .rodata sRidicule__8Z2MdnPrm */
-u8 const Z2MdnPrm::sRidicule[100] = {
+Z2MdnPrm::Unit const Z2MdnPrm::sRidicule[50] = {
0xA7, 0x5A, 0x5A, 0x52, 0x52, 0x85, 0x85, 0x8C, 0x63, 0x73, 0x73, 0x90, 0x50, 0x46, 0x74,
0x74, 0xA3, 0xA7, 0x41, 0x51, 0x58, 0x34, 0x34, 0x2A, 0x5A, 0x81, 0x5D, 0x42, 0x4B, 0x70,
0x70, 0xB1, 0xB1, 0xB1, 0xB1, 0x65, 0x6A, 0xB1, 0x54, 0xA8, 0xA8, 0x6B, 0x6C, 0x55, 0x55,
@@ -121,7 +138,7 @@ u8 const Z2MdnPrm::sRidiculeTail[10] = {
};
/* 8039C420-8039C48C 028A80 006C+00 1/0 0/0 0/0 .rodata sBoring__8Z2MdnPrm */
-u8 const Z2MdnPrm::sBoring[108] = {
+Z2MdnPrm::Unit const Z2MdnPrm::sBoring[54] = {
0x8E, 0x9C, 0x9C, 0x5A, 0x5A, 0x52, 0x52, 0x5B, 0x5C, 0x56, 0x5C, 0x52, 0x52, 0x2D, 0x2D, 0x5B,
0x59, 0x56, 0x56, 0x56, 0x56, 0x6B, 0x6B, 0x58, 0x4C, 0x8E, 0x8E, 0x59, 0x61, 0x54, 0xA0, 0x4D,
0x5D, 0x59, 0x48, 0x30, 0x30, 0x5B, 0x5B, 0x5B, 0x4A, 0x64, 0x64, 0x7A, 0x7A, 0x92, 0x62, 0x62,
@@ -137,7 +154,7 @@ u8 const Z2MdnPrm::sBoringTail[6] = {
};
/* 8039C48C-8039C4EC 028AEC 005E+02 1/0 0/0 0/0 .rodata sIrritated__8Z2MdnPrm */
-u8 const Z2MdnPrm::sIrritated[94] = {
+Z2MdnPrm::Unit const Z2MdnPrm::sIrritated[47] = {
0x6C, 0x91, 0x67, 0x8B, 0x8B, 0xA2, 0xA2, 0xAB, 0x48, 0x64, 0x73, 0x61, 0x61, 0x64, 0x64, 0x6D,
0x60, 0x7E, 0x4A, 0x55, 0x6A, 0x63, 0x66, 0x78, 0x5C, 0x5A, 0x6E, 0x79, 0x75, 0x62, 0x62, 0x57,
0x85, 0x3F, 0x3C, 0x83, 0x83, 0x9B, 0x78, 0x65, 0x65, 0x67, 0x65, 0x65, 0x87, 0x88, 0x88, 0x3D,
@@ -152,7 +169,7 @@ u8 const Z2MdnPrm::sIrritatedTail[10] = {
};
/* 8039C4F8-8039C56C 028B58 0072+02 1/0 0/0 0/0 .rodata sOrder__8Z2MdnPrm */
-u8 const Z2MdnPrm::sOrder[114] = {
+Z2MdnPrm::Unit const Z2MdnPrm::sOrder[57] = {
0x77, 0x5F, 0x5F, 0x73, 0x73, 0x66, 0x66, 0x6B, 0x6B, 0x7A, 0x7A, 0x60, 0x54, 0x5F, 0x5F,
0x69, 0x69, 0x5A, 0x86, 0x84, 0x84, 0x96, 0x96, 0x94, 0x94, 0x8A, 0x87, 0x84, 0x5A, 0x2C,
0x4E, 0x52, 0x52, 0x52, 0x52, 0x51, 0x51, 0x6E, 0x62, 0x5E, 0x6C, 0xA3, 0xA3, 0x5B, 0x62,
@@ -169,7 +186,7 @@ u8 const Z2MdnPrm::sOrderTail[6] = {
};
/* 8039C56C-8039C5D8 028BCC 006A+02 1/0 0/0 0/0 .rodata sResent__8Z2MdnPrm */
-u8 const Z2MdnPrm::sResent[106] = {
+Z2MdnPrm::Unit const Z2MdnPrm::sResent[53] = {
0x6F, 0x5F, 0x5F, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55, 0x4B, 0x4B, 0x6B, 0x6B, 0x86,
0x86, 0x4A, 0x4A, 0x6D, 0x6D, 0x6D, 0x6D, 0x8C, 0x8C, 0x84, 0x84, 0x64, 0x64, 0x6C, 0x6C, 0x92,
0x92, 0x6A, 0x5F, 0x6F, 0x6F, 0x62, 0x62, 0x62, 0x75, 0x5A, 0x5A, 0x5A, 0x5A, 0x60, 0x60, 0x6A,
@@ -185,7 +202,7 @@ u8 const Z2MdnPrm::sResentTail[5] = {
};
/* 8039C5D8-8039C644 028C38 006A+02 1/0 0/0 0/0 .rodata sCheerful__8Z2MdnPrm */
-u8 const Z2MdnPrm::sCheerful[106] = {
+Z2MdnPrm::Unit const Z2MdnPrm::sCheerful[53] = {
0x64, 0x6D, 0x6D, 0x6D, 0x99, 0x6D, 0x40, 0x51, 0x51, 0x6F, 0x6F, 0x66, 0x66, 0x60, 0xA7, 0xAF,
0xB3, 0x61, 0x61, 0xA7, 0xA7, 0x5E, 0x8B, 0x75, 0x77, 0x72, 0x72, 0x93, 0x93, 0x8B, 0x8B, 0x88,
0x88, 0x77, 0x77, 0x80, 0x80, 0x80, 0x80, 0x67, 0x67, 0x4D, 0x4A, 0x69, 0x44, 0xA1, 0x64, 0xA8,
@@ -201,7 +218,7 @@ u8 const Z2MdnPrm::sCheerfulTail[8] = {
};
/* 8039C644-8039C6B0 028CA4 006A+02 1/0 0/0 0/0 .rodata sConfused__8Z2MdnPrm */
-u8 const Z2MdnPrm::sConfused[106] = {
+Z2MdnPrm::Unit const Z2MdnPrm::sConfused[53] = {
0x83, 0x80, 0x80, 0x82, 0x82, 0x82, 0x82, 0x5B, 0x75, 0x84, 0x84, 0x84, 0x84, 0x75, 0x75, 0x62,
0x62, 0x62, 0x4D, 0x56, 0x56, 0x59, 0x59, 0x59, 0x59, 0x74, 0x74, 0x85, 0x7D, 0x8D, 0x8D, 0x70,
0x70, 0x5A, 0x5A, 0x6B, 0x6B, 0x6B, 0x6B, 0x70, 0x79, 0x73, 0x73, 0x71, 0x71, 0x75, 0x75, 0x7B,
@@ -217,7 +234,7 @@ u8 const Z2MdnPrm::sConfusedTail[5] = {
};
/* 8039C6B0-8039C718 028D10 0068+00 1/0 0/0 0/0 .rodata sHostility__8Z2MdnPrm */
-u8 const Z2MdnPrm::sHostility[104] = {
+Z2MdnPrm::Unit const Z2MdnPrm::sHostility[52] = {
0x85, 0x71, 0x71, 0x73, 0x73, 0x3B, 0x62, 0x84, 0x94, 0x94, 0x94, 0xAF, 0x98, 0xAD, 0xAD,
0x5A, 0x5A, 0x63, 0x63, 0x97, 0x90, 0x90, 0x7B, 0x73, 0x73, 0x63, 0x63, 0x55, 0x55, 0x65,
0x66, 0x7F, 0x7F, 0x87, 0x87, 0x8A, 0x8A, 0x94, 0x5D, 0x5C, 0x5A, 0x67, 0x67, 0x68, 0x68,
@@ -233,7 +250,7 @@ u8 const Z2MdnPrm::sHostilityTail[7] = {
};
/* 8039C718-8039C784 028D78 006A+02 1/0 0/0 0/0 .rodata sTired__8Z2MdnPrm */
-u8 const Z2MdnPrm::sTired[106] = {
+Z2MdnPrm::Unit const Z2MdnPrm::sTired[53] = {
0x70, 0x70, 0x70, 0x5C, 0x5C, 0x5C, 0x6F, 0x6F, 0x6F, 0x93, 0x8C, 0x9A, 0x9D, 0x89, 0x99, 0x7A,
0x91, 0x8D, 0x8D, 0x8D, 0x8D, 0x69, 0x69, 0x72, 0x72, 0x65, 0x65, 0x65, 0x9E, 0x98, 0x98, 0x2A,
0x50, 0x54, 0x54, 0x49, 0x64, 0x59, 0x59, 0x62, 0x62, 0x62, 0x44, 0x5E, 0x9F, 0x91, 0x63, 0x63,
@@ -249,7 +266,7 @@ u8 const Z2MdnPrm::sTiredTail[8] = {
};
/* 8039C784-8039C7F0 028DE4 006A+02 1/0 0/0 0/0 .rodata sSerious__8Z2MdnPrm */
-u8 const Z2MdnPrm::sSerious[106] = {
+Z2MdnPrm::Unit const Z2MdnPrm::sSerious[53] = {
0x52, 0x65, 0x65, 0x72, 0x5A, 0x61, 0x61, 0x7B, 0x80, 0x92, 0x93, 0x9D, 0x9D, 0x70, 0x79, 0x76,
0x62, 0x57, 0x5A, 0x53, 0x53, 0x59, 0x59, 0x65, 0x63, 0x60, 0x60, 0x6A, 0x83, 0x80, 0x7F, 0x5D,
0x5C, 0x45, 0x5D, 0x71, 0x72, 0x65, 0x65, 0x65, 0x66, 0x4B, 0xB2, 0x60, 0x5C, 0x5C, 0x5C, 0x5B,
@@ -265,7 +282,7 @@ u8 const Z2MdnPrm::sSeriousTail[7] = {
};
/* 8039C7F0-8039C844 028E50 0054+00 1/0 0/0 0/0 .rodata sReplyb__8Z2MdnPrm */
-u8 const Z2MdnPrm::sReplyb[84] = {
+Z2MdnPrm::Unit const Z2MdnPrm::sReplyb[42] = {
0x5C, 0x45, 0x45, 0x71, 0x9F, 0x57, 0xB4, 0xB4, 0x56, 0x62, 0x8E, 0x61, 0x61, 0xB0,
0xB0, 0x3C, 0x59, 0x4A, 0x64, 0xA4, 0xA4, 0x5A, 0x5A, 0x5A, 0x5A, 0x72, 0x72, 0x4B,
0x6B, 0x97, 0x97, 0x59, 0x60, 0x60, 0x60, 0x69, 0x3E, 0x3E, 0x57, 0x42, 0x5E, 0x76,
@@ -280,7 +297,7 @@ u8 const Z2MdnPrm::sReplybTail[7] = {
};
/* 8039C844-8039C8A8 028EA4 0064+00 1/0 0/0 0/0 .rodata sApologize__8Z2MdnPrm */
-u8 const Z2MdnPrm::sApologize[100] = {
+Z2MdnPrm::Unit const Z2MdnPrm::sApologize[50] = {
0x6A, 0x6A, 0x6A, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x57, 0x57, 0x57, 0x63, 0x61,
0x54, 0x54, 0x54, 0x54, 0x58, 0x58, 0x58, 0x58, 0x45, 0x45, 0x56, 0x56, 0x5B, 0x5B, 0x37,
0x53, 0x53, 0x53, 0x59, 0x59, 0x59, 0x49, 0x58, 0x58, 0x55, 0x56, 0x56, 0x83, 0x7F, 0x7F,
@@ -296,7 +313,7 @@ u8 const Z2MdnPrm::sApologizeTail[9] = {
};
/* 8039C8B4-8039C918 028F14 0064+00 1/0 0/0 0/0 .rodata sDeside__8Z2MdnPrm */
-u8 const Z2MdnPrm::sDeside[100] = {
+Z2MdnPrm::Unit const Z2MdnPrm::sDeside[50] = {
0x77, 0x77, 0x77, 0x58, 0x58, 0x6F, 0x78, 0x5F, 0x66, 0x5E, 0x6E, 0x62, 0x62, 0x2E, 0x5A,
0x58, 0x54, 0x52, 0x52, 0x5C, 0x59, 0x56, 0x56, 0x4B, 0x4B, 0x63, 0x63, 0x4D, 0x4E, 0x4A,
0x69, 0x71, 0x71, 0x76, 0x80, 0x80, 0x80, 0x73, 0x73, 0x5C, 0x7C, 0x64, 0x83, 0x89, 0x89,
@@ -312,7 +329,7 @@ u8 const Z2MdnPrm::sDesideTail[8] = {
};
/* 8039C918-8039C980 028F78 0068+00 1/0 0/0 0/0 .rodata sAfford__8Z2MdnPrm */
-u8 const Z2MdnPrm::sAfford[104] = {
+Z2MdnPrm::Unit const Z2MdnPrm::sAfford[52] = {
0x4E, 0x45, 0x52, 0x5B, 0x56, 0x5B, 0x59, 0x52, 0x52, 0x57, 0x5C, 0x50, 0x50, 0x49, 0x80,
0x6E, 0x6E, 0x5A, 0x5C, 0x60, 0x6A, 0x62, 0x62, 0x6A, 0x71, 0x48, 0x4C, 0x5B, 0x5A, 0x40,
0x40, 0x49, 0x49, 0x50, 0x51, 0x51, 0x51, 0x3A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x57, 0x57,
@@ -328,24 +345,24 @@ u8 const Z2MdnPrm::sAffordTail[12] = {
};
/* 8039C98C-8039CA58 -00001 00CC+00 2/2 0/0 0/0 .rodata sPrm__8Z2MdnPrm */
-sPrmStruct const Z2MdnPrm::sPrm[17] = {
- { Z2MdnPrm::sReply, Z2MdnPrm::sReplyTail, 0x32, 0x06, 0x04, 0x00},
- { Z2MdnPrm::sJoke, Z2MdnPrm::sJokeTail, 0x32, 0x03, 0x07, 0x00},
- { Z2MdnPrm::sSexy, Z2MdnPrm::sSexyTail, 0x32, 0x03, 0x07, 0x00},
- { Z2MdnPrm::sRidicule, Z2MdnPrm::sRidiculeTail, 0x32, 0x03, 0x07, 0x00},
- { Z2MdnPrm::sBoring, Z2MdnPrm::sBoringTail, 0x36, 0x01, 0x05, 0x00},
- { Z2MdnPrm::sIrritated, Z2MdnPrm::sIrritatedTail, 0x2F, 0x03, 0x07, 0x00},
- { Z2MdnPrm::sOrder, Z2MdnPrm::sOrderTail, 0x39, 0x02, 0x04, 0x00},
- { Z2MdnPrm::sResent, Z2MdnPrm::sResentTail, 0x35, 0x02, 0x03, 0x00},
- { Z2MdnPrm::sCheerful, Z2MdnPrm::sCheerfulTail, 0x35, 0x01, 0x07, 0x00},
- { Z2MdnPrm::sConfused, Z2MdnPrm::sConfusedTail, 0x35, 0x03, 0x02, 0x00},
- { Z2MdnPrm::sHostility, Z2MdnPrm::sHostilityTail, 0x34, 0x02, 0x05, 0x00},
- { Z2MdnPrm::sTired, Z2MdnPrm::sTiredTail, 0x35, 0x03, 0x05, 0x00},
- { Z2MdnPrm::sSerious, Z2MdnPrm::sSeriousTail, 0x35, 0x02, 0x05, 0x00},
- { Z2MdnPrm::sReplyb, Z2MdnPrm::sReplybTail, 0x2A, 0x04, 0x03, 0x00},
- { Z2MdnPrm::sApologize, Z2MdnPrm::sApologizeTail, 0x32, 0x04, 0x05, 0x00},
- { Z2MdnPrm::sDeside, Z2MdnPrm::sDesideTail, 0x32, 0x01, 0x07, 0x00},
- { Z2MdnPrm::sAfford, Z2MdnPrm::sAffordTail, 0x34, 0x02, 0x0A, 0x00},
+const Z2MdnPrm::Prm Z2MdnPrm::sPrm[17] = {
+ {Z2MdnPrm::sReply, Z2MdnPrm::sReplyTail, ARRAY_SIZE(Z2MdnPrm::sReply), 6, 4},
+ {Z2MdnPrm::sJoke, Z2MdnPrm::sJokeTail, ARRAY_SIZE(Z2MdnPrm::sJoke), 3, 7},
+ {Z2MdnPrm::sSexy, Z2MdnPrm::sSexyTail, ARRAY_SIZE(Z2MdnPrm::sSexy), 3, 7},
+ {Z2MdnPrm::sRidicule, Z2MdnPrm::sRidiculeTail, ARRAY_SIZE(Z2MdnPrm::sRidicule), 3, 7},
+ {Z2MdnPrm::sBoring, Z2MdnPrm::sBoringTail, ARRAY_SIZE(Z2MdnPrm::sBoring), 1, 5},
+ {Z2MdnPrm::sIrritated, Z2MdnPrm::sIrritatedTail, ARRAY_SIZE(Z2MdnPrm::sIrritated), 3, 7},
+ {Z2MdnPrm::sOrder, Z2MdnPrm::sOrderTail, ARRAY_SIZE(Z2MdnPrm::sOrder), 2, 4},
+ {Z2MdnPrm::sResent, Z2MdnPrm::sResentTail, ARRAY_SIZE(Z2MdnPrm::sResent), 2, 3},
+ {Z2MdnPrm::sCheerful, Z2MdnPrm::sCheerfulTail, ARRAY_SIZE(Z2MdnPrm::sCheerful), 1, 7},
+ {Z2MdnPrm::sConfused, Z2MdnPrm::sConfusedTail, ARRAY_SIZE(Z2MdnPrm::sConfused), 3, 2},
+ {Z2MdnPrm::sHostility, Z2MdnPrm::sHostilityTail, ARRAY_SIZE(Z2MdnPrm::sHostility), 2, 5},
+ {Z2MdnPrm::sTired, Z2MdnPrm::sTiredTail, ARRAY_SIZE(Z2MdnPrm::sTired), 3, 5},
+ {Z2MdnPrm::sSerious, Z2MdnPrm::sSeriousTail, ARRAY_SIZE(Z2MdnPrm::sSerious), 2, 5},
+ {Z2MdnPrm::sReplyb, Z2MdnPrm::sReplybTail, ARRAY_SIZE(Z2MdnPrm::sReplyb), 4, 3},
+ {Z2MdnPrm::sApologize, Z2MdnPrm::sApologizeTail, ARRAY_SIZE(Z2MdnPrm::sApologize), 4, 5},
+ {Z2MdnPrm::sDeside, Z2MdnPrm::sDesideTail, ARRAY_SIZE(Z2MdnPrm::sDeside), 1, 7},
+ {Z2MdnPrm::sAfford, Z2MdnPrm::sAffordTail, ARRAY_SIZE(Z2MdnPrm::sAfford), 2, 10},
};
/* 802CBC60-802CBCEC 2C65A0 008C+00 0/0 1/1 0/0 .text __ct__12Z2SpeechMgr2Fv */
@@ -356,6 +373,7 @@ Z2SpeechMgr2::Z2SpeechMgr2() : JASGlobalInstance<Z2SpeechMgr2>(true), random(0)
mVoice = 0;
field_0x3ff = 0;
field_0x401 = 0;
+
for (int i = 0; i < 64; i++) {
field_0x402[i] = -1;
}
@@ -363,8 +381,8 @@ Z2SpeechMgr2::Z2SpeechMgr2() : JASGlobalInstance<Z2SpeechMgr2>(true), random(0)
/* 802CBD88-802CBF60 2C66C8 01D8+00 1/0 1/1 0/0 .text setString__12Z2SpeechMgr2FPCUssUcUs
*/
-void Z2SpeechMgr2::setString(u16 const* s, s16 i_textNum, u8 i_speaker, u16 i_mood) {
- switch (i_speaker) {
+void Z2SpeechMgr2::setString(const u16* s, s16 textNum, u8 speakerID, u16 mood) {
+ switch (speakerID) {
case 0x13:
case 0x15:
mVoice = 1;
@@ -467,19 +485,19 @@ void Z2SpeechMgr2::setString(u16 const* s, s16 i_textNum, u8 i_speaker, u16 i_mo
}
if (mVoice == 1 || mVoice == 2) {
- if (i_mood == 0) {
+ if (mood == 0) {
mMood = 0;
} else {
- if (i_mood > 17) {
+ if (mood > 17) {
if ((mVoice == 21) || (mVoice == 20)) {
mMood = 0;
}
} else {
- mMood = i_mood - 1;
+ mMood = mood - 1;
}
}
} else {
- mMood = i_mood;
+ mMood = mood;
}
for (int i = 0; i < 500; i++) {
@@ -488,18 +506,19 @@ void Z2SpeechMgr2::setString(u16 const* s, s16 i_textNum, u8 i_speaker, u16 i_mo
JUT_ASSERT(383, s != NULL);
- if (i_textNum > 500) {
+ if (textNum > 500) {
mTextNum = 500;
- JUT_WARN_DEVICE(387, 1, "TOO MANY TEXT : now(%d) > max(%d)", i_textNum, 500);
+ JUT_WARN_DEVICE(387, 1, "TOO MANY TEXT : now(%d) > max(%d)", textNum, 500);
} else {
- mTextNum = i_textNum;
+ mTextNum = textNum;
}
- #ifdef DEBUG
- for (int i = 0; i <= mTextNum; i++) {
+ #if VERSION == VERSION_SHIELD_DEBUG
+ for (int i = 0; i <= mTextNum; i++)
#else
- for (int i = 0; i < mTextNum; i++) {
+ for (int i = 0; i < mTextNum; i++)
#endif
+ {
mText[i] = s[i];
}
@@ -516,22 +535,24 @@ void Z2SpeechMgr2::setString(u16 const* s, s16 i_textNum, u8 i_speaker, u16 i_mo
}
/* 802CBF60-802CC190 2C68A0 0230+00 1/0 2/2 0/0 .text setTextCount__12Z2SpeechMgr2Fs */
-void Z2SpeechMgr2::setTextCount(s16 i_textCount) {
+void Z2SpeechMgr2::setTextCount(s16 textCount) {
if (mVoice != 99) {
field_0x3ff = 0x0;
- #ifndef DEBUG
- i_textCount = (i_textCount == 0) ? 0 : i_textCount - 1;
+ #if VERSION != VERSION_SHIELD_DEBUG
+ textCount = (textCount == 0) ? 0 : textCount - 1;
#endif
bool all_text = false;
- if (mTextCount == 0 && i_textCount >= mTextNum) {
+ if (mTextCount == 0 && textCount >= mTextNum) {
all_text = true;
}
- mTextCount = i_textCount;
+
+ mTextCount = textCount;
if (mTextCount >= mTextNum) {
mTextCount = mTextNum;
}
+
if (mVoice == 1 || mVoice == 2) {
if (!field_0x0.isSoundAttached()) {
speakOneWord(false);
@@ -576,8 +597,8 @@ void Z2SpeechMgr2::setTextCount(s16 i_textCount) {
sound_id = Z2SE_SY_TEXT_OUT_ZANT;
break;
}
- mSpeech.startSound(sound_id, &field_0x4, NULL, 0, 0.0f, 1.0f, 1.0f, -1.0f, -1.0f,
- 0);
+
+ mSpeech.startSound(sound_id, &field_0x4, NULL, 0, 0.0f, 1.0f, 1.0f, -1.0f, -1.0f, 0);
}
}
}
@@ -594,11 +615,12 @@ void Z2SpeechMgr2::speakOneWord(bool param_0) {
} else if (isNonVerbal()) {
return;
}
- u32 sound = mMood + Z2SE_HYL_MDN_RPLY;
- f32 fVar1 = Z2GetSceneMgr()->getRoomReverb() / 127.0f;
- bool soundStarted =
- mSpeech.startSound(sound, &field_0x0, NULL, 0, fVar1, 1.0f, 1.0f, -1.0f, -1.0f, 0);
+
+ u32 soundID = mMood + Z2SE_HYL_MDN_RPLY;
+ f32 fxMix = Z2GetSceneMgr()->getRoomReverb() / 127.0f;
+ bool soundStarted = mSpeech.startSound(soundID, &field_0x0, NULL, 0, fxMix, 1.0f, 1.0f, -1.0f, -1.0f, 0);
mSpeech.setPortData(&field_0x0, 8, field_0x402[field_0x401 - 1] + 1, -1);
+
if (field_0x400 == 0) {
selectUnit(param_0);
}
@@ -608,39 +630,39 @@ void Z2SpeechMgr2::speakOneWord(bool param_0) {
/* 802CC2FC-802CC4C0 2C6C3C 01C4+00 2/2 0/0 0/0 .text isNonVerbal__12Z2SpeechMgr2Fv */
bool Z2SpeechMgr2::isNonVerbal() {
switch(mText[mTextCount]) {
- case 0:
- case 0x20:
- case 0x21:
- case 0x22:
- case 0x23:
- case 0x24:
- case 0x25:
- case 0x26:
- case 0x27:
- case 0x28:
- case 0x29:
- case 0x2a:
- case 0x2b:
- case 0x2c:
- case 0x2d:
- case 0x2e:
- case 0x2f:
- case 0x3a:
- case 0x3b:
- case 0x3c:
- case 0x3d:
- case 0x3e:
- case 0x3f:
- case 0x4b:
- case 0x4c:
- case 0x4d:
- case 0x4e:
- case 0x4f:
- case 0x5b:
- case 0x5c:
- case 0x5d:
- case 0x5e:
- case 0x5f:
+ case '\0':
+ case ' ':
+ case '!':
+ case '\"':
+ case '#':
+ case '$':
+ case '%':
+ case '&':
+ case '\'':
+ case '(':
+ case ')':
+ case '*':
+ case '+':
+ case ',':
+ case '-':
+ case '.':
+ case '/':
+ case ':':
+ case ';':
+ case '<':
+ case '=':
+ case '>':
+ case '?':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case '[':
+ case '\\':
+ case ']':
+ case '^':
+ case '_':
case 0x813f:
case 0x8140:
case 0x8141:
@@ -681,7 +703,8 @@ bool Z2SpeechMgr2::isNonVerbal() {
return true;
}
- if(mText[mTextCount] == 0x0a) {
+ #if VERSION != VERSION_SHIELD_DEBUG
+ if(mText[mTextCount] == 0xA) {
switch (mVoice) {
case 1:
case 2:
@@ -690,11 +713,13 @@ bool Z2SpeechMgr2::isNonVerbal() {
return true;
}
}
+ #endif
+
return false;
}
typedef struct {
- s8 field_0x0;
+ s8 unitIndex;
u8 field_0x1;
} Z2ConnectCost;
@@ -707,7 +732,7 @@ void Z2SpeechMgr2::selectUnit(bool param_0) {
return;
}
- s8 ZVar2 = random.get_uint8(Z2MdnPrm::sPrm[mMood].field_0x8);
+ s8 unitIndex = random.get_uint8(Z2MdnPrm::sPrm[mMood].mainNum);
s8 ZVar3;
s8 cVar5;
@@ -717,10 +742,10 @@ void Z2SpeechMgr2::selectUnit(bool param_0) {
while (true) {
bool bVar1 = false;
- ZVar2 = random.get_uint8(Z2MdnPrm::sPrm[mMood].field_0x8);
+ unitIndex = random.get_uint8(Z2MdnPrm::sPrm[mMood].mainNum);
for (int i = 0; i < field_0x401; i++) {
- if (field_0x402[i] == ZVar2) {
+ if (field_0x402[i] == unitIndex) {
bVar1 = true;
break;
}
@@ -731,7 +756,7 @@ void Z2SpeechMgr2::selectUnit(bool param_0) {
}
for (int i = 0; i < cVar5; i++) {
- if (ZVar2 == cost[i].field_0x0) {
+ if (unitIndex == cost[i].unitIndex) {
bVar1 = true;
break;
}
@@ -741,9 +766,9 @@ void Z2SpeechMgr2::selectUnit(bool param_0) {
continue;
}
- const u8 (*prm)[2] = (u8 (*)[2])Z2MdnPrm::sPrm[mMood].field_0x0;
- u8 local_3f = JMAAbs(prm[ZVar2][0] - prm[ZVar4][1]);
- Z2ConnectCost connectCost = {ZVar2, local_3f};
+ const Z2MdnPrm::Unit* units = Z2MdnPrm::sPrm[mMood].main;
+ u8 local_3f = JMAAbs(units[unitIndex].start - units[ZVar4].end);
+ Z2ConnectCost connectCost = {unitIndex, local_3f};
cost[cVar5] = connectCost;
cVar5++;
@@ -753,16 +778,16 @@ void Z2SpeechMgr2::selectUnit(bool param_0) {
}
u16 tmp = cost[0].field_0x1;
- ZVar2 = cost[0].field_0x0;
+ unitIndex = cost[0].unitIndex;
for (int i = 0; i < 5; i++) {
if (cost[i].field_0x1 < tmp) {
tmp = cost[i].field_0x1;
- ZVar2 = cost[i].field_0x0;
+ unitIndex = cost[i].unitIndex;
}
}
}
- field_0x402[field_0x401] = ZVar2;
+ field_0x402[field_0x401] = unitIndex;
field_0x401++;
}
@@ -772,34 +797,33 @@ void Z2SpeechMgr2::selectTail() {
s8 cVar9 = 0;
s8 ZVar1 = field_0x402[field_0x401 - 1];
s8 ZVar6;
- u8 bVar3;
+ u8 bVar3 = 0;
while (true) {
bool bVar5 = false;
switch (mVoice) {
case 2:
- bVar3 = Z2MdnPrm::sPrm[mMood].field_0x9;
+ bVar3 = Z2MdnPrm::sPrm[mMood].tailNum1;
ZVar6 = random.get_uint8(bVar3);
break;
case 1:
- bVar3 = Z2MdnPrm::sPrm[mMood].field_0xa;
- ZVar6 = Z2MdnPrm::sPrm[mMood].field_0x9 + random.get_uint8(bVar3);
+ bVar3 = Z2MdnPrm::sPrm[mMood].tailNum2;
+ ZVar6 = Z2MdnPrm::sPrm[mMood].tailNum1 + random.get_uint8(bVar3);
break;
default:
return;
}
for (int i = 0; i < cVar9; i++) {
- if (ZVar6 == cost[i].field_0x0) {
+ if (ZVar6 == cost[i].unitIndex) {
bVar5 = true;
break;
}
}
if (!bVar5) {
- u8 local_3f = JMAAbs(Z2MdnPrm::sPrm[mMood].field_0x4[ZVar6]
- - Z2MdnPrm::sPrm[mMood].field_0x0[ZVar1 * 2 + 1]);
+ u8 local_3f = JMAAbs(Z2MdnPrm::sPrm[mMood].tail[ZVar6] - Z2MdnPrm::sPrm[mMood].main[ZVar1].end);
Z2ConnectCost connectCost = {ZVar6, local_3f};
cost[cVar9] = connectCost;
cVar9++;
@@ -807,15 +831,15 @@ void Z2SpeechMgr2::selectTail() {
if (cVar9 == bVar3 || cVar9 == 5) {
s8 tmp_r8;
u16 tmp_r9 = cost[0].field_0x1;
- tmp_r8 = cost[0].field_0x0;
- int local_3c = bVar3 >= 5 ? 5 : bVar3;
+ tmp_r8 = cost[0].unitIndex;
+ int local_3c = bVar3 < 5 ? bVar3 : 5;
for (int i = 0; i < local_3c; i++) {
if (cost[i].field_0x1 < tmp_r9) {
tmp_r9 = cost[i].field_0x1;
- tmp_r8 = cost[i].field_0x0;
+ tmp_r8 = cost[i].unitIndex;
}
}
- field_0x402[field_0x401 - 1] = tmp_r8 + Z2MdnPrm::sPrm[mMood].field_0x8;
+ field_0x402[field_0x401 - 1] = tmp_r8 + Z2MdnPrm::sPrm[mMood].mainNum;
return;
}
}
@@ -841,15 +865,15 @@ void Z2SpeechMgr2::framework() {
/* 802CCA18-802CCF88 2C7358 0570+00 0/0 2/2 0/0 .text playOneShotVoice__12Z2SpeechMgr2FUcUsP3VecSc
*/
-void Z2SpeechMgr2::playOneShotVoice(u8 i_speaker, u16 param_1, Vec* i_pos, s8 param_3) {
- if (i_speaker == 0) {
+void Z2SpeechMgr2::playOneShotVoice(u8 speakerID, u16 param_1, Vec* posPtr, s8 param_3) {
+ if (speakerID == 0) {
return;
}
f32 fxmix = Z2GetSceneMgr()->getRoomReverb() / 127.0f;
if (mVoice == 1 || mVoice == 2) {
- JAISoundID sound_id;
+ JAISoundID sound_id(-1);
switch (param_1) {
case 25:
sound_id = Z2SE_MSG_V_MDN_D21;
@@ -883,13 +907,13 @@ void Z2SpeechMgr2::playOneShotVoice(u8 i_speaker, u16 param_1, Vec* i_pos, s8 pa
}
if (sound_id != -1) {
- mSpeech.startSound(sound_id, &field_0x0, (JGeometry::TVec3<f32>*)i_pos,
- i_speaker, fxmix, 1.0f, 1.0f, -1.0f, -1.0f, 0);
+ mSpeech.startSound(sound_id, &field_0x0, (JGeometry::TVec3<f32>*)posPtr,
+ speakerID, fxmix, 1.0f, 1.0f, -1.0f, -1.0f, 0);
}
} else {
JAISoundID sound_id = Z2SE_MESSAGE_SE_COMMON;
- switch (i_speaker) {
+ switch (speakerID) {
case 3:
if (param_1 == 1) {
Z2GetSeqMgr()->subBgmStart(Z2BGM_ITEM_GET_MINI);
@@ -987,7 +1011,7 @@ void Z2SpeechMgr2::playOneShotVoice(u8 i_speaker, u16 param_1, Vec* i_pos, s8 pa
if (field_0x0) {
field_0x0.releaseSound();
}
- mSpeech.startSound(sound_id, &field_0x0, (JGeometry::TVec3<f32>*)i_pos, i_speaker,
+ mSpeech.startSound(sound_id, &field_0x0, (JGeometry::TVec3<f32>*)posPtr, speakerID,
fxmix, 1.0f, 1.0f, -1.0f, -1.0f, 0);
if (field_0x0) {
mSpeech.setPortData(&field_0x0, 8, param_1, -1);
@@ -1000,6 +1024,7 @@ bool Z2SpeechMgr2::isMidnaSpeak() {
if ((mVoice == 1 || mVoice == 2) && field_0x0) {
return true;
}
+
return false;
}
@@ -1008,48 +1033,48 @@ Z2SpeechStarter::Z2SpeechStarter() : Z2SoundStarter(false) {}
/* 802CCFF8-802CD248 2C7938 0250+00 1/0 0/0 0/0 .text
* startSound__15Z2SpeechStarterF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3<f>UlfffffUl */
-bool Z2SpeechStarter::startSound(JAISoundID i_soundID, JAISoundHandle* i_handle,
- JGeometry::TVec3<f32> const* i_pos, u32 param_3, f32 i_fxmix,
- f32 i_pitch, f32 i_volume, f32 i_pan, f32 i_dolby, u32 i_count) {
+bool Z2SpeechStarter::startSound(JAISoundID soundID, JAISoundHandle* handlePtr,
+ const JGeometry::TVec3<f32>* posPtr, u32 portData, f32 fxmix,
+ f32 pitch, f32 volume, f32 pan, f32 dolby, u32 moveSteps) {
+ JUT_ASSERT(1076, handlePtr);
+
if (Z2GetSceneMgr()->isInDarkness() && Z2GetSceneMgr()->getDemoSeWaveNum() != 0x77
&& Z2GetSceneMgr()->getDemoSeWaveNum() != 0x78) {
- i_fxmix = 1.0f;
+ fxmix = 1.0f;
} else {
f32 tmp = Z2GetStatusMgr()->getCameraInWaterDepthRatio() > 0.0f;
if (tmp) {
- i_fxmix = tmp;
- } else if (Z2GetSceneMgr()->getDemoSeWaveNum() == 0x6c
- || Z2GetSceneMgr()->getDemoSeWaveNum() == 0x77)
- {
- i_fxmix = 0.07f;
+ fxmix = tmp;
+ } else if (Z2GetSceneMgr()->getDemoSeWaveNum() == 0x6c || Z2GetSceneMgr()->getDemoSeWaveNum() == 0x77) {
+ fxmix = 0.07f;
} else {
- i_fxmix += Z2GetEnvSeMgr()->getFogDensity() * 0.5f;
- if (i_fxmix > 1.0f) {
- i_fxmix = 1.0f;
+ fxmix += Z2GetEnvSeMgr()->getFogDensity() * 0.5f;
+ if (fxmix > 1.0f) {
+ fxmix = 1.0f;
}
}
}
- bool ret = Z2GetAudioMgr()->startSound(i_soundID, i_handle, i_pos);
+ bool ret = Z2GetAudioMgr()->startSound(soundID, handlePtr, posPtr);
- if (*i_handle) {
- if (param_3 != 0) {
- setPortData(i_handle, 6, param_3, -1);
+ if (*handlePtr) {
+ if (portData != 0) {
+ setPortData(handlePtr, 6, portData, -1);
}
- if (i_fxmix > 0.0f) {
- (*i_handle)->getAuxiliary().moveFxMix(i_fxmix, i_count);
+ if (fxmix > 0.0f) {
+ (*handlePtr)->getAuxiliary().moveFxMix(fxmix, moveSteps);
}
- if (i_pitch != 1.0f) {
- (*i_handle)->getAuxiliary().movePitch(i_pitch, i_count);
+ if (pitch != 1.0f) {
+ (*handlePtr)->getAuxiliary().movePitch(pitch, moveSteps);
}
- if (i_volume != 1.0f) {
- (*i_handle)->getAuxiliary().moveVolume(i_volume, i_count);
+ if (volume != 1.0f) {
+ (*handlePtr)->getAuxiliary().moveVolume(volume, moveSteps);
}
- if (i_pan != -1.0f) {
- (*i_handle)->getAuxiliary().movePan(i_pan, i_count);
+ if (pan != -1.0f) {
+ (*handlePtr)->getAuxiliary().movePan(pan, moveSteps);
}
- if (i_dolby != -1.0f) {
- (*i_handle)->getAuxiliary().moveDolby(i_dolby, i_count);
+ if (dolby != -1.0f) {
+ (*handlePtr)->getAuxiliary().moveDolby(dolby, moveSteps);
}
}
diff --git a/src/Z2AudioLib/Z2StatusMgr.cpp b/src/Z2AudioLib/Z2StatusMgr.cpp
index 6f8b0fcd78..461348dd0a 100644
--- a/src/Z2AudioLib/Z2StatusMgr.cpp
+++ b/src/Z2AudioLib/Z2StatusMgr.cpp
@@ -1,15 +1,94 @@
-//
-// Z2StatusMgr
-//
-
#include "Z2AudioLib/Z2StatusMgr.h"
-#include "Z2AudioLib/Z2Creature.h"
#include "Z2AudioLib/Z2Param.h"
#include "d/d_com_inf_game.h"
#include "d/d_s_play.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",
+};
+
/* 802B5F1C-802B5F70 2B085C 0054+00 0/0 1/1 0/0 .text __ct__11Z2StatusMgrFv */
-Z2StatusMgr::Z2StatusMgr() : JASGlobalInstance(this) {
+Z2StatusMgr::Z2StatusMgr() : JASGlobalInstance(true) {
mHour = 0;
mMinute = 0;
mWeekday = 0;
@@ -45,13 +124,16 @@ void Z2StatusMgr::processHeartGaugeSound() {
if (Z2GetLink() == NULL) {
return;
}
- u32 linkHp = Z2GetLink()->getLinkHp();
+
+ u8 linkHp = Z2GetLink()->getLinkHp();
if (linkHp == 0) {
return;
}
+
if (Z2GetSeqMgr()->isItemGetDemo()) {
return;
}
+
if (linkHp <= 2) {
Z2GetSeMgr()->seStartLevel(Z2SE_ALMOST_DIE_ALERM_3, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
} else if (linkHp <= 4) {
@@ -99,90 +181,6 @@ bool Z2StatusMgr::isMovieDemo() {
return mDemoStatus == 2 || mDemoStatus == 8 || mDemoStatus == 9;
}
-static void dummyStrings() {
- DEAD_STRING("F_SP00");
- DEAD_STRING("F_SP103");
- DEAD_STRING("R_SP01");
- DEAD_STRING("F_SP104");
- DEAD_STRING("R_SP107");
- DEAD_STRING("F_SP108");
- DEAD_STRING("R_SP108");
- DEAD_STRING("F_SP117");
- DEAD_STRING("F_SP109");
- DEAD_STRING("R_SP109");
- DEAD_STRING("R_SP209");
- DEAD_STRING("F_SP110");
- DEAD_STRING("R_SP110");
- DEAD_STRING("F_SP111");
- DEAD_STRING("F_SP128");
- DEAD_STRING("R_SP128");
- DEAD_STRING("F_SP115");
- DEAD_STRING("F_SP112");
- DEAD_STRING("F_SP126");
- DEAD_STRING("F_SP127");
- DEAD_STRING("R_SP127");
- DEAD_STRING("F_SP113");
- DEAD_STRING("F_SP116");
- DEAD_STRING("R_SP116");
- DEAD_STRING("R_SP160");
- DEAD_STRING("R_SP161");
- DEAD_STRING("F_SP114");
- DEAD_STRING("F_SP118");
- DEAD_STRING("F_SP124");
- DEAD_STRING("F_SP125");
- DEAD_STRING("F_SP121");
- DEAD_STRING("F_SP122");
- DEAD_STRING("F_SP123");
- DEAD_STRING("F_SP200");
- DEAD_STRING("F_SP102");
- DEAD_STRING("");
- DEAD_STRING("R_SP300");
- DEAD_STRING("R_SP301");
- DEAD_STRING("T_ENEMY");
- DEAD_STRING("D_MN54");
- DEAD_STRING("D_MN05");
- DEAD_STRING("D_MN05B");
- DEAD_STRING("D_MN05A");
- DEAD_STRING("D_MN04");
- DEAD_STRING("D_MN04B");
- DEAD_STRING("D_MN04A");
- DEAD_STRING("D_MN01");
- DEAD_STRING("D_MN01B");
- DEAD_STRING("D_MN01A");
- DEAD_STRING("D_MN10");
- DEAD_STRING("D_MN10B");
- DEAD_STRING("D_MN10A");
- DEAD_STRING("D_MN11");
- DEAD_STRING("D_MN11B");
- DEAD_STRING("D_MN11A");
- DEAD_STRING("D_MN06");
- DEAD_STRING("D_MN06B");
- DEAD_STRING("D_MN06A");
- DEAD_STRING("D_MN07");
- DEAD_STRING("D_MN07B");
- DEAD_STRING("D_MN07A");
- DEAD_STRING("D_MN08");
- DEAD_STRING("D_MN08B");
- DEAD_STRING("D_MN08C");
- DEAD_STRING("D_MN08A");
- DEAD_STRING("D_MN08D");
- DEAD_STRING("D_MN09");
- DEAD_STRING("D_MN09A");
- DEAD_STRING("D_MN09B");
- DEAD_STRING("D_MN09C");
- DEAD_STRING("D_SB00");
- DEAD_STRING("D_SB01");
- DEAD_STRING("D_SB02");
- DEAD_STRING("D_SB03");
- DEAD_STRING("D_SB04");
- DEAD_STRING("D_SB05");
- DEAD_STRING("D_SB06");
- DEAD_STRING("D_SB07");
- DEAD_STRING("D_SB08");
- DEAD_STRING("D_SB09");
- DEAD_STRING("D_SB10");
-}
-
/* 802B61E8-802B671C 2B0B28 0534+00 1/0 7/7 11/11 .text setDemoName__11Z2StatusMgrFPc */
void Z2StatusMgr::setDemoName(char* demoName) {
if (mDemoStatus == 11) {
@@ -191,20 +189,26 @@ void Z2StatusMgr::setDemoName(char* demoName) {
Z2GetSceneMgr()->sceneBgmStart();
}
}
+
if (demoName == NULL) {
+ OS_REPORT("[Z2StatusMgr::setDemoName] → No demo\n");
if (mDemoStatus == 3) {
Z2GetSeqMgr()->setBattleBgmOff(false);
} else if (mDemoStatus == 4) {
- Z2GetSeqMgr()->unMuteSceneBgm(struct_80450861);
+ Z2GetSeqMgr()->unMuteSceneBgm(Z2Param::BGM_CROSS_FADEIN_TIME);
} else if (mDemoStatus == 5) {
+ OS_REPORT("[Z2StatusMgr::setDemoName] HIDDEN_VIL DEMO_END\n");
Z2GetSeqMgr()->subBgmStop();
} else if (mDemoStatus == 9) {
- Z2GetSeqMgr()->bgmStreamStop(0x3c);
+ Z2GetSeqMgr()->bgmStreamStop(60);
}
+
if (mDemoStatus != 8) {
mDemoStatus = 0;
}
} else {
+ OS_REPORT("[Z2StatusMgr::setDemoName] demoName : %s\n", demoName);
+
bool bVar1 = false;
if (mDemoStatus == 8) {
if (strcmp(demoName, "force_end") == 0) {
@@ -235,45 +239,47 @@ void Z2StatusMgr::setDemoName(char* demoName) {
mDemoStatus = 10;
} else {
switch (Z2GetSceneMgr()->getCurrentSceneNum()) {
- case 0xe:
+ case Z2SCENE_HIDDEN_VILLAGE:
if (strcmp(demoName, "R00_start") == 0) {
mDemoStatus = 5;
Z2GetSeqMgr()->subBgmStart(Z2BGM_HIDDEN_VIL_D1);
+ OS_REPORT("[Z2StatusMgr::setDemoName] HIDDEN_VIL DEMO_START\n");
}
break;
- case 5:
+ case Z2SCENE_FARON_WOODS:
if (strcmp(demoName, "B_W_START") == 0) {
Z2GetSeqMgr()->bgmStreamPrepare(0x200005f);
Z2GetSeqMgr()->bgmStreamPlay();
mDemoStatus = 9;
}
break;
- case 4:
+ case Z2SCENE_TWILIGHT_HYRULE_CASTLE:
if (strcmp(demoName, "L0_rampart01") == 0) {
bVar1 = true;
}
break;
- case 0x28:
+ case Z2SCENE_FOREST_TEMPLE:
if (strcmp(demoName, "R22-opening") == 0) {
bVar1 = true;
}
break;
- case 0x2b:
+ case Z2SCENE_GORON_MINES:
if (strcmp(demoName, "R01-start") == 0) {
bVar1 = true;
}
break;
- case 0x2e:
+ case Z2SCENE_LAKEBED_TEMPLE:
if (strcmp(demoName, "LV3R00OP") == 0) {
bVar1 = true;
}
break;
- case 0x31:
+ case Z2SCENE_ARBITERS_GROUNDS:
if (strcmp(demoName, "R00_start") == 0) {
bVar1 = true;
}
break;
}
+
if (bVar1) {
Z2GetSeqMgr()->setBattleBgmOff(true);
mDemoStatus = 3;
@@ -300,14 +306,14 @@ bool Z2StatusMgr::checkDayTime() {
}
/* 802B6758-802B6760 -00001 0008+00 0/0 0/0 0/0 .text setEventBit__11Z2StatusMgrFPv */
-void Z2StatusMgr::setEventBit(void* i_eventBit) {
- mEventBit = i_eventBit;
+void Z2StatusMgr::setEventBit(void* eventBit) {
+ mEventBit = eventBit;
}
/* 802B6760-802B6784 2B10A0 0024+00 0/0 1/1 0/0 .text setCameraPolygonPos__11Z2StatusMgrFP3Vec */
-void Z2StatusMgr::setCameraPolygonPos(Vec* i_polygonPos) {
- if (i_polygonPos != NULL) {
- mPolygonPosition = *i_polygonPos;
+void Z2StatusMgr::setCameraPolygonPos(Vec* polygonPos) {
+ if (polygonPos != NULL) {
+ mPolygonPosition = *polygonPos;
}
}
@@ -326,11 +332,12 @@ void Z2StatusMgr::setCameraInWaterDepth(f32 depth) {
mCameraInWaterDepthRatio = 1.0f;
} else {
mCameraInWaterDepthRatio =
- Z2Calc::getParamByExp(depth, 0.0f, 2000.0f, 0.2f, 0.0f, 1.0f, Z2Calc::CURVE_SIGN_0);
+ Z2Calc::getParamByExp(depth, 0.0f, 2000.0f, 0.2f, 0.0f, 1.0f, Z2Calc::CURVE_NEGATIVE);
}
Z2GetFxLineMgr()->setUnderWaterFx(true);
}
}
}
+
mUnderwaterDepth = depth;
}
diff --git a/src/Z2AudioLib/Z2WolfHowlMgr.cpp b/src/Z2AudioLib/Z2WolfHowlMgr.cpp
index 5e51235357..8209c03978 100644
--- a/src/Z2AudioLib/Z2WolfHowlMgr.cpp
+++ b/src/Z2AudioLib/Z2WolfHowlMgr.cpp
@@ -1,9 +1,4 @@
-//
-// Z2WolfHowlMgr
-//
-
#include "Z2AudioLib/Z2WolfHowlMgr.h"
-#include "Z2AudioLib/Z2Creature.h"
#include "Z2AudioLib/Z2Calc.h"
#include "Z2AudioLib/Z2SeqMgr.h"
#include "Z2AudioLib/Z2SeMgr.h"
@@ -13,27 +8,27 @@
#include "d/d_demo.h"
/* 80450880-80450884 000300 0004+00 2/2 0/0 0/0 .sdata cPitchDown */
-static f32 cPitchDown = 0.8909000158309937f;
+static f32 cPitchDown = 0.8909f;
/* 80450884-80450888 000304 0004+00 4/4 0/0 0/0 .sdata cPitchCenter */
static f32 cPitchCenter = 1.0f;
/* 80450888-8045088C 000308 0004+00 2/2 0/0 0/0 .sdata cPitchUp */
-static f32 cPitchUp = 1.1892000436782837f;
+static f32 cPitchUp = 1.1892f;
static u8 struct_8045088C = 7;
static u8 struct_8045088D = 7;
/* 8045088E-80450890 00030E 0002+00 4/4 0/0 0/0 .sdata None */
-static u8 data_8045088E = 0x1E;
-static u8 data_8045088F = 0x00;
+static u8 cBeginHowlTime = 30;
+static u8 data_8045088F = 0;
/* 80450890-80450894 000310 0004+00 1/1 0/0 0/0 .sdata cR_FlatWidth */
-static f32 cR_FlatWidth = 0.9438700079917908f;
+static f32 cR_FlatWidth = 0.94387f; // 1.0f / 12th root of 2
/* 80450894-80450898 -00001 0004+00 3/3 0/0 0/0 .sdata None */
-static u8 struct_80450894 = 0x05;
-static u8 struct_80450895 = 0x1E;
+static u8 struct_80450894 = 5;
+static u8 struct_80450895 = 30;
/* 80450898-8045089C 000318 0004+00 1/1 0/0 0/0 .sdata sStickHigh */
static f32 sStickHigh = 0.5f;
@@ -42,76 +37,128 @@ static f32 sStickHigh = 0.5f;
static f32 sStickCenter = 1.0f / 5.0f;
/* 804508A0-804508A8 000320 0008+00 1/0 0/0 0/0 .sdata sHowlTobikusa */
-static SongNote sHowlTobikusa[4] = {
- {0x01, 0x1E},
- {0x03, 0x1E},
- {0x01, 0x1E},
- {0x03, 0x1E},
+static Z2WolfHowlLine sHowlTobikusa[4] = {
+ {HOWL_LINE_HIGH, 30},
+ {HOWL_LINE_LOW, 30},
+ {HOWL_LINE_HIGH, 30},
+ {HOWL_LINE_LOW, 30},
};
/* 803CBC50-803CBC5C 028D70 000C+00 1/0 0/0 0/0 .data sHowlUmakusa */
-static SongNote sHowlUmakusa[6] = {
- {0x01, 0x0F}, {0x02, 0x0F}, {0x03, 0x3C}, {0x01, 0x0F}, {0x02, 0x0F}, {0x03, 0x3C},
+static Z2WolfHowlLine sHowlUmakusa[6] = {
+ {HOWL_LINE_HIGH, 15},
+ {HOWL_LINE_MID, 15},
+ {HOWL_LINE_LOW, 60},
+ {HOWL_LINE_HIGH, 15},
+ {HOWL_LINE_MID, 15},
+ {HOWL_LINE_LOW, 60},
};
/* 803CBC5C-803CBC68 028D7C 000C+00 1/0 0/0 0/0 .data sHowlZeldaSong */
-static SongNote sHowlZeldaSong[6] = {
- {0x02, 0x1E}, {0x01, 0x0F}, {0x03, 0x2D}, {0x02, 0x1E}, {0x01, 0x0F}, {0x03, 0x2D},
+static Z2WolfHowlLine sHowlZeldaSong[6] = {
+ {HOWL_LINE_MID, 30},
+ {HOWL_LINE_HIGH, 15},
+ {HOWL_LINE_LOW, 45},
+ {HOWL_LINE_MID, 30},
+ {HOWL_LINE_HIGH, 15},
+ {HOWL_LINE_LOW, 45},
};
/* 803CBC68-803CBC74 028D88 000C+00 1/0 0/0 0/0 .data sHowlLightPrelude */
-static SongNote sHowlLightPrelude[6] = {
- {0x01, 0x14}, {0x03, 0x28}, {0x01, 0x14}, {0x03, 0x14}, {0x02, 0x14}, {0x01, 0x1E},
+static Z2WolfHowlLine sHowlLightPrelude[6] = {
+ {HOWL_LINE_HIGH, 20},
+ {HOWL_LINE_LOW, 40},
+ {HOWL_LINE_HIGH, 20},
+ {HOWL_LINE_LOW, 20},
+ {HOWL_LINE_MID, 20},
+ {HOWL_LINE_HIGH, 30},
};
/* 803CBC74-803CBC80 028D94 000C+00 1/0 0/0 0/0 .data sHowlSoulRequiem */
-static SongNote sHowlSoulRequiem[6] = {
- {0x03, 0x1E}, {0x02, 0x0F}, {0x03, 0x0F}, {0x01, 0x1E}, {0x02, 0x1E}, {0x03, 0x1E},
+static Z2WolfHowlLine sHowlSoulRequiem[6] = {
+ {HOWL_LINE_LOW, 30},
+ {HOWL_LINE_MID, 15},
+ {HOWL_LINE_LOW, 15},
+ {HOWL_LINE_HIGH, 30},
+ {HOWL_LINE_MID, 30},
+ {HOWL_LINE_LOW, 30},
};
/* 803CBC80-803CBC8C 028DA0 000C+00 1/0 0/0 0/0 .data sHealingSong */
-static SongNote sHealingSong[6] = {
- {0x01, 0x1E}, {0x02, 0x1E}, {0x03, 0x1E}, {0x01, 0x1E}, {0x02, 0x1E}, {0x03, 0x1E},
+static Z2WolfHowlLine sHealingSong[6] = {
+ {HOWL_LINE_HIGH, 30},
+ {HOWL_LINE_MID, 30},
+ {HOWL_LINE_LOW, 30},
+ {HOWL_LINE_HIGH, 30},
+ {HOWL_LINE_MID, 30},
+ {HOWL_LINE_LOW, 30},
};
/* 803CBC8C-803CBC9C 028DAC 000E+02 1/0 0/0 0/0 .data sNewSong1 */
-static SongNote sNewSong1[7] = {
- {0x03, 0x1E}, {0x02, 0x1E}, {0x01, 0x1E}, {0x03, 0x28}, {0x02, 0x14}, {0x03, 0x1E}, {0x01, 0x1E},
+static Z2WolfHowlLine sNewSong1[7] = {
+ {HOWL_LINE_LOW, 30},
+ {HOWL_LINE_MID, 30},
+ {HOWL_LINE_HIGH, 30},
+ {HOWL_LINE_LOW, 40},
+ {HOWL_LINE_MID, 20},
+ {HOWL_LINE_LOW, 30},
+ {HOWL_LINE_HIGH, 30},
};
/* 803CBC9C-803CBCAC 028DBC 0010+00 1/0 0/0 0/0 .data sNewSong2 */
-static SongNote sNewSong2[8] = {
- {0x01, 0x14}, {0x02, 0x14}, {0x03, 0x14}, {0x02, 0x3C}, {0x03, 0x14}, {0x01, 0x14}, {0x02, 0x14}, {0x03, 0x1E},
+static Z2WolfHowlLine sNewSong2[8] = {
+ {HOWL_LINE_HIGH, 20},
+ {HOWL_LINE_MID, 20},
+ {HOWL_LINE_LOW, 20},
+ {HOWL_LINE_MID, 60},
+ {HOWL_LINE_LOW, 20},
+ {HOWL_LINE_HIGH, 20},
+ {HOWL_LINE_MID, 20},
+ {HOWL_LINE_LOW, 30},
};
/* 803CBCAC-803CBCC0 028DCC 0012+02 1/0 0/0 0/0 .data sNewSong3 */
-static SongNote sNewSong3[9] = {
- {0x02, 0x1E}, {0x03, 0x3C}, {0x02, 0x28}, {0x01, 0x14}, {0x03, 0x3C}, {0x01, 0x14}, {0x02, 0x14}, {0x01, 0x14}, {0x02, 0x2D},
+static Z2WolfHowlLine sNewSong3[9] = {
+ {HOWL_LINE_MID, 30},
+ {HOWL_LINE_LOW, 60},
+ {HOWL_LINE_MID, 40},
+ {HOWL_LINE_HIGH, 20},
+ {HOWL_LINE_LOW, 60},
+ {HOWL_LINE_HIGH, 20},
+ {HOWL_LINE_MID, 20},
+ {HOWL_LINE_HIGH, 20},
+ {HOWL_LINE_MID, 45},
};
/* 803CBCC0-803CBD08 -00001 0048+00 1/1 0/0 0/0 .data sGuideData */
static Z2WolfHowlData sGuideData[9] = {
- {4, sHowlTobikusa}, {6, sHowlUmakusa}, {6, sHowlZeldaSong},
- {6, sHealingSong}, {6, sHowlSoulRequiem}, {6, sHowlLightPrelude},
- {7, sNewSong1}, {8, sNewSong2}, {9, sNewSong3},
+ {ARRAY_SIZE(sHowlTobikusa), sHowlTobikusa},
+ {ARRAY_SIZE(sHowlUmakusa), sHowlUmakusa},
+ {ARRAY_SIZE(sHowlZeldaSong), sHowlZeldaSong},
+ {ARRAY_SIZE(sHealingSong), sHealingSong},
+ {ARRAY_SIZE(sHowlSoulRequiem), sHowlSoulRequiem},
+ {ARRAY_SIZE(sHowlLightPrelude), sHowlLightPrelude},
+ {ARRAY_SIZE(sNewSong1), sNewSong1},
+ {ARRAY_SIZE(sNewSong2), sNewSong2},
+ {ARRAY_SIZE(sNewSong3), sNewSong3},
};
/* 802CAAC0-802CAB8C 2C5400 00CC+00 0/0 1/1 0/0 .text __ct__13Z2WolfHowlMgrFv */
-Z2WolfHowlMgr::Z2WolfHowlMgr() : JASGlobalInstance(this) {
- mpCurSong = NULL;
+Z2WolfHowlMgr::Z2WolfHowlMgr() : JASGlobalInstance(true) {
+ mNowHowlData = NULL;
mNowInputValue = 0.0f;
- field_0x18 = 1.0f;
+ mWolfHowlVolume = 1.0f;
field_0x1c = 1.0f;
field_0x20 = cPitchCenter;
- field_0x24 = cPitchCenter;
+ mNowPitch = cPitchCenter;
field_0x28 = 1.0f;
mTimer = 0;
mReleaseTimer = 0;
- mCorrectCurveID = -1;
- field_0x90 = -1;
- field_0xba = 0;
+ mCorrectCurveID = Z2WOLFHOWL_NONE;
+ mCorrectScore = -1;
+ mNowLineIndex = 0;
field_0xbb = 0;
- field_0xbc = 0;
+ mNowLineScore = 0;
for (u8 i = 0; i < 20; i++) {
field_0x92[i] = 0;
@@ -124,17 +171,17 @@ Z2WolfHowlMgr::Z2WolfHowlMgr() : JASGlobalInstance(this) {
field_0x34 = 0.0f;
field_0x30 = 0.0f;
- mpSongList = (Z2WolfHowlData*)&sGuideData;
+ mGuideData = (Z2WolfHowlData*)&sGuideData;
}
/* 802CAB8C-802CABEC 2C54CC 0060+00 1/1 0/0 0/0 .text resetState__13Z2WolfHowlMgrFv */
void Z2WolfHowlMgr::resetState() {
- field_0x18 = 1.0f;
- field_0x24 = cPitchCenter;
+ mWolfHowlVolume = 1.0f;
+ mNowPitch = cPitchCenter;
field_0x28 = 1.0f;
mTimer = 0;
mReleaseTimer = 0;
- field_0xba = 0;
+ mNowLineIndex = 0;
for (u8 i = 0; i < 10; i++) {
field_0x38[i] = 0.0f;
@@ -146,28 +193,31 @@ void Z2WolfHowlMgr::resetState() {
}
/* 802CABEC-802CACB0 2C552C 00C4+00 1/1 0/0 0/0 .text calcVolumeMod__13Z2WolfHowlMgrFf */
-void Z2WolfHowlMgr::calcVolumeMod(f32 param_0) {
- if (field_0x00) {
- if (mTimer < data_8045088E) {
- field_0x00->getAuxiliary().moveVolume(1.0f, 0);
+void Z2WolfHowlMgr::calcVolumeMod(f32) {
+ f32 volume;
+
+ if (mWolfHowlHandle) {
+ if (mTimer < cBeginHowlTime) {
+ mWolfHowlHandle->getAuxiliary().moveVolume(1.0f, 0);
} else {
- f32 dVar7 = 1.0f;
- if (mReleaseTimer != 0x0) {
- dVar7 = getParamByExp(mReleaseTimer, 30.0f, 0.0f, 2.0f, 0.0f, 1.0f, Z2Calc::CURVE_SIGN_1);
+ volume = 1.0f;
+ if (mReleaseTimer != 0) {
+ volume = getParamByExp(mReleaseTimer, 30.0f, 0.0f, 2.0f, 0.0f, 1.0f, Z2Calc::CURVE_POSITIVE);
}
- field_0x18 = dVar7;
- if (field_0x00) {
- field_0x00->getAuxiliary().moveVolume(field_0x18, 0);
+ mWolfHowlVolume = volume;
+
+ if (mWolfHowlHandle) {
+ mWolfHowlHandle->getAuxiliary().moveVolume(mWolfHowlVolume, 0);
}
- field_0x1c = field_0x18;
+ field_0x1c = mWolfHowlVolume;
}
}
}
/* 802CACB0-802CACCC 2C55F0 001C+00 1/1 0/0 0/0 .text getNowPitch__13Z2WolfHowlMgrFv */
f32 Z2WolfHowlMgr::getNowPitch() {
- if (field_0x00) {
- return field_0x00->getAuxiliary().mParams.mPitch;
+ if (mWolfHowlHandle) {
+ return mWolfHowlHandle->getAuxiliary().params_.mPitch;
}
return 1.0f;
@@ -181,81 +231,87 @@ f32 Z2WolfHowlMgr::getNowInputValue() {
/* 802CACD4-802CAED4 2C5614 0200+00 1/1 0/0 0/0 .text calcPitchMod__13Z2WolfHowlMgrFff */
void Z2WolfHowlMgr::calcPitchMod(f32 param_0, f32 param_1) {
- f32 dVar12 = 1.0f;
+ (void)param_0;
+
+ f32 pitch = 1.0f;
field_0x20 = getNowPitch();
+
if (mReleaseTimer != 0) {
- f32 dVar11 = getParamByExp(mReleaseTimer, 30.0f, 0.0f, 1.0f, 0.97f, 1.0f, Z2Calc::CURVE_SIGN_0);
- dVar11 = field_0x24 * dVar11;
- if (field_0x00) {
- field_0x00->getAuxiliary().movePitch(dVar11, 0);
+ f32 releaseScale = getParamByExp(mReleaseTimer, 30.0f, 0.0f, 1.0f, 0.97f, 1.0f, Z2Calc::CURVE_NEGATIVE);
+ pitch = mNowPitch * releaseScale;
+
+ if (mWolfHowlHandle) {
+ mWolfHowlHandle->getAuxiliary().movePitch(pitch, 0);
}
} else {
- if (mTimer < data_8045088E) {
+ if (mTimer < cBeginHowlTime) {
field_0x34 = 0.0f;
} else {
- f32 dVar11 = 1.0f;
+ f32 inputPitch = 1.0f;
if (mNowInputValue < 0.0f) {
- dVar11 = Z2Calc::linearTransform(mNowInputValue, -1.0f, 0.0f, cPitchDown, 1.0f, false);
+ inputPitch = Z2Calc::linearTransform(mNowInputValue, -1.0f, 0.0f, cPitchDown, 1.0f, false);
} else if (mNowInputValue > 0.0f) {
- dVar11 = Z2Calc::linearTransform(mNowInputValue, 1.0f, 0.0f,cPitchUp, 1.0f, false);
+ inputPitch = Z2Calc::linearTransform(mNowInputValue, 1.0f, 0.0f,cPitchUp, 1.0f, false);
}
-
- f32 temp = dVar11 * cPitchCenter;
- f32 fVar5 = temp - (dVar12 = field_0x24);
- if (fVar5 == 0.0f) {
- dVar12 = dVar12;
- } else if (fVar5 > 0.0f) {
- dVar12 += fVar5 / struct_8045088C;
+
+ f32 newPitch = inputPitch * cPitchCenter;
+ f32 pitchDiff = newPitch - mNowPitch;
+ if (pitchDiff == 0.0f) {
+ pitch = mNowPitch;
+ } else if (pitchDiff > 0.0f) {
+ pitch = mNowPitch + (pitchDiff / struct_8045088C);
} else {
- dVar12 += fVar5 / struct_8045088D;
+ pitch = mNowPitch + (pitchDiff / struct_8045088D);
}
}
- field_0x24 = dVar12;
+
+ mNowPitch = pitch;
+
f32 dVar11 = Z2Calc::linearTransform(param_1, 0.0f, 1.0f, 1.0f, cR_FlatWidth, true);
f32 fVar5 = field_0x28 + (dVar11 - field_0x28) / struct_80450894;
field_0x28 = fVar5;
- dVar12 *= fVar5;
- if (field_0x00) {
- field_0x00->getAuxiliary().movePitch(dVar12, 0);
+ pitch *= fVar5;
+
+ if (mWolfHowlHandle) {
+ mWolfHowlHandle->getAuxiliary().movePitch(pitch, 0);
}
}
}
/* 802CAED4-802CB100 2C5814 022C+00 0/0 1/1 0/0 .text startWolfHowlSound__13Z2WolfHowlMgrFffbf */
-s8 Z2WolfHowlMgr::startWolfHowlSound(f32 param_0, f32 param_1, bool param_2, f32 param_3) {
- if (mCorrectCurveID > 1) {
+s8 Z2WolfHowlMgr::startWolfHowlSound(f32 param_0, f32 stickValue, bool isHowl, f32 param_3) {
+ if (mCorrectCurveID > Z2WOLFHOWL_UMAKUSA) {
Z2GetSeqMgr()->setWindStoneVol(0.0f, 0);
}
- if (Z2GetSeqMgr()->isItemGetDemo() || (mReleaseTimer != 0)) {
- param_2 = false;
+ if (Z2GetSeqMgr()->isItemGetDemo() || mReleaseTimer != 0) {
+ isHowl = false;
} else {
- if (param_1 > sStickCenter) {
- mNowInputValue = Z2Calc::linearTransform(param_1, sStickCenter, sStickHigh, 0.0f, 1.0f, false);
+ if (stickValue > sStickCenter) {
+ mNowInputValue = Z2Calc::linearTransform(stickValue, sStickCenter, sStickHigh, 0.0f, 1.0f, false);
+ } else if (stickValue < -1.0f * sStickCenter) {
+ mNowInputValue = Z2Calc::linearTransform(stickValue, -1.0f * sStickCenter, -1.0f * sStickHigh, 0.0f, -1.0f, false);
} else {
- f32 fVar1 = -1.0f * sStickCenter;
- if (param_1 < fVar1) {
- mNowInputValue = Z2Calc::linearTransform(param_1, fVar1, -1.0f * sStickHigh, 0.0f, -1.0f, false);
- } else {
- mNowInputValue = 0.0f;
- }
+ mNowInputValue = 0.0f;
}
}
- if (param_2) {
- if (mTimer > data_8045088E) {
- Z2GetSoundStarter()->startLevelSound(0x10035, &field_0x00, NULL);
+ if (isHowl) {
+ if (mTimer > cBeginHowlTime) {
+ Z2GetSoundStarter()->startLevelSound(Z2SE_WL_V_HOWL, &mWolfHowlHandle, NULL);
}
- if (field_0x00) {
+
+ if (mWolfHowlHandle) {
calcPitchMod(0.0f, 0.0f);
calcVolumeMod(param_3);
}
+
mTimer++;
} else {
- if (mTimer > data_8045088E) {
- if (mReleaseTimer < 0x1e) {
- Z2GetSoundStarter()->startLevelSound(0x10035, &field_0x00, NULL);
- if (field_0x00) {
+ if (mTimer > cBeginHowlTime) {
+ if (mReleaseTimer < 30) {
+ Z2GetSoundStarter()->startLevelSound(Z2SE_WL_V_HOWL, &mWolfHowlHandle, NULL);
+ if (mWolfHowlHandle) {
calcPitchMod(0.0f, 0.0f);
calcVolumeMod(param_3);
}
@@ -274,183 +330,225 @@ s8 Z2WolfHowlMgr::startWolfHowlSound(f32 param_0, f32 param_1, bool param_2, f32
/* 802CB100-802CB320 2C5A40 0220+00 0/0 1/1 0/0 .text
* setCorrectData__13Z2WolfHowlMgrFScP14Z2WolfHowlData */
-void Z2WolfHowlMgr::setCorrectData(s8 param_0, Z2WolfHowlData* param_1) {
- if (param_0 == mCorrectCurveID) {
+void Z2WolfHowlMgr::setCorrectData(s8 curveID, Z2WolfHowlData* data) {
+ if (curveID == mCorrectCurveID) {
return;
}
- if (param_0 == -1) {
- mCorrectCurveID = -1;
- mpCurSong = 0;
+
+ if (curveID == Z2WOLFHOWL_NONE) {
+ OS_REPORT("[Z2WolfHowMgr:setCorrectData] CorrectData NONE\n");
+ mCorrectCurveID = Z2WOLFHOWL_NONE;
+ mNowHowlData = NULL;
return;
}
- if (param_1 == NULL) {
- if (param_0 >= 9) {
- mCorrectCurveID = -1;
- mpCurSong = 0;
+
+ if (data == NULL) {
+ if (curveID >= Z2WOLFHOWL_MAX) {
+ mCorrectCurveID = Z2WOLFHOWL_NONE;
+ mNowHowlData = NULL;
return;
}
- param_1 = &mpSongList[param_0];
+ data = &mGuideData[curveID];
}
- mCorrectCurveID = param_0;
- mpCurSong = param_1;
-
- switch(param_0) {
- case 3:
- cPitchUp = 1.1224600076675415f;
- cPitchCenter = 1.0594600439071655f;
- cPitchDown = 0.7936859726905823f;
+
+ JUT_ASSERT(648, data);
+
+ mCorrectCurveID = curveID;
+ mNowHowlData = data;
+
+ switch(curveID) {
+ case Z2WOLFHOWL_HEALINGSONG:
+ cPitchUp = 1.12246f;
+ cPitchCenter = 1.05946f;
+ cPitchDown = 0.793686f;
break;
- case 4:
- cPitchUp = 1.2599060535430908f;
- cPitchCenter = 0.9438700079917908f;
- cPitchDown = 0.8408849835395813f;
+ case Z2WOLFHOWL_SOULREQUIEM:
+ cPitchUp = 1.259906f;
+ cPitchCenter = 0.94387f;
+ cPitchDown = 0.840885f;
break;
- case 6:
- cPitchUp = 1.3348400592803955f;
- cPitchCenter = 0.8909000158309937f;
- cPitchDown = 0.8909000158309937f;
+ case Z2WOLFHOWL_NEWSONG1:
+ cPitchUp = 1.33484f;
+ cPitchCenter = 0.8909f;
+ cPitchDown = 0.8909f;
break;
- case 7:
- cPitchUp = 1.2599060535430908f;
- cPitchCenter = 0.9438700079917908f;
- cPitchDown = 0.8909000158309937f;
+ case Z2WOLFHOWL_NEWSONG2:
+ cPitchUp = 1.259906f;
+ cPitchCenter = 0.94387f;
+ cPitchDown = 0.8909f;
break;
- case 8:
- cPitchUp = 1.1224600076675415f;
- cPitchCenter = 0.9438700079917908f;
- cPitchDown = 0.7491499781608582f;
+ case Z2WOLFHOWL_NEWSONG3:
+ cPitchUp = 1.12246f;
+ cPitchCenter = 0.94387f;
+ cPitchDown = 0.74915f;
break;
default:
- cPitchUp = 1.1892000436782837f;
+ cPitchUp = 1.1892f;
cPitchCenter = 1.0f;
- cPitchDown = 0.8909000158309937f;
+ cPitchDown = 0.8909f;
break;
}
- field_0xbe = 0;
- u32 uVar4 = 0;
+ mFullScore = 0;
- for (u8 bVar5 = 0; bVar5 < getCorrectLineNum(); bVar5++) {
- uVar4 += getCorrectLine(bVar5).length;
- if (getCorrectLine(bVar5).barType != 0) {
- field_0xbe += struct_80450895;
- field_0xbe += getCorrectLine(bVar5).length;
+ u32 length = 0;
+ for (u8 i = 0; i < getCorrectLineNum(); i++) {
+ length += getCorrectLine(i).length;
+ if (getCorrectLine(i).type != 0) {
+ mFullScore += struct_80450895;
+ mFullScore += getCorrectLine(i).length;
}
}
- field_0xbe -= uVar4 >> 2;
+
+ OS_REPORT("[Z2WolfHowMgr:setCorrectData] id:%d length:%d blockNum:%d, fullScore:%d\n",
+ mCorrectCurveID, length, getCorrectLineNum(), mFullScore);
+ mFullScore -= FAST_DIV(length, 4);
}
/* 802CB320-802CB370 2C5C60 0050+00 3/3 2/2 0/0 .text getCorrectLine__13Z2WolfHowlMgrFUc
*/
-SongNote Z2WolfHowlMgr::getCorrectLine(u8 param_0) {
+Z2WolfHowlLine Z2WolfHowlMgr::getCorrectLine(u8 lineIndex) {
u16 local_18;
- if (mpCurSong == 0 || param_0 >= mpCurSong->mLineNum) {
- SongNote note;
- note.barType = 0;
- note.length = 0;
- return note;
+ if (mNowHowlData == NULL || lineIndex >= mNowHowlData->lineNum) {
+ Z2WolfHowlLine line;
+ line.type = 0;
+ line.length = 0;
+ return line;
}
- return mpCurSong->mSongData[param_0];
+
+ return mNowHowlData->lineData[lineIndex];
}
/* 802CB370-802CB38C 2C5CB0 001C+00 2/2 1/1 0/0 .text getCorrectLineNum__13Z2WolfHowlMgrFv */
u8 Z2WolfHowlMgr::getCorrectLineNum() {
- if (mpCurSong != NULL) {
- return mpCurSong->mLineNum;
+ if (mNowHowlData != NULL) {
+ return mNowHowlData->lineNum;
}
return 0;
}
-/* ############################################################################################## */
/* 804341F8-8043421C 060F18 0024+00 2/2 0/0 0/0 .bss sCorrectPhrase */
static JAISoundID sCorrectPhrase[9] = {
- 0x1000052, 0x1000053, 0x1000054, 0x1000072, 0x1000068,
- 0x1000055, 0x1000075, 0x100007c, 0x100007f,
+ Z2BGM_HOWL_TOBIKUSA,
+ Z2BGM_HOWL_UMAKUSA,
+ Z2BGM_HOWL_ZELDASONG,
+ Z2BGM_HEALING_HOWL,
+ Z2BGM_SOUL_REQ_HOWL,
+ Z2BGM_HOWL_LIGHT_PRLD,
+ Z2BGM_NEW_01_HOWL,
+ Z2BGM_NEW_02_HOWL,
+ Z2BGM_NEW_03_HOWL,
};
/* 8043421C-80434240 060F3C 0024+00 2/3 0/0 0/0 .bss sWindStoneSound */
static JAISoundID sWindStoneSound[9] = {
- 0xffffffff, 0xffffffff, 0x100005b, 0x1000071, 0x1000067,
- 0x100005c, 0x1000074, 0x100007b, 0x100007e,
+ 0xFFFFFFFF,
+ 0xFFFFFFFF,
+ Z2BGM_STONE_ZELDASONG,
+ Z2BGM_HEALING_STONE,
+ Z2BGM_SOUL_REQ_STONE,
+ Z2BGM_STONE_LIGHT_PRLD,
+ Z2BGM_NEW_01_STONE,
+ Z2BGM_NEW_02_STONE,
+ Z2BGM_NEW_03_STONE,
};
/* 80434240-80434268 060F60 0024+04 1/2 0/0 0/0 .bss sCorrectDuo */
static JAISoundID sCorrectDuo[9] = {
- 0xffffffff, 0xffffffff, 0xffffffff, 0x1000073, 0x1000069,
- 0x1000066, 0x1000076, 0x100007d, 0x1000080,
+ 0xFFFFFFFF,
+ 0xFFFFFFFF,
+ 0xFFFFFFFF,
+ Z2BGM_HEALING_DUO,
+ Z2BGM_SOUL_REQ_DUO,
+ Z2BGM_LIGHT_PRLD_DUO,
+ Z2BGM_NEW_01_DUO,
+ Z2BGM_NEW_02_DUO,
+ Z2BGM_NEW_03_DUO,
};
/* 802CB38C-802CB650 2C5CCC 02C4+00 1/1 0/0 0/0 .text checkLine__13Z2WolfHowlMgrFv */
s8 Z2WolfHowlMgr::checkLine() {
- if (mCorrectCurveID == -1 || mpCurSong == NULL) {
+ if (mCorrectCurveID == Z2WOLFHOWL_NONE || mNowHowlData == NULL) {
return -1;
}
if (Z2GetSeqMgr()->isItemGetDemo()) {
return mCorrectCurveID;
}
+
if (mTimer == 0) {
- if (field_0x90 > 0) {
- field_0x90 = -1;
+ if (mCorrectScore > 0) {
+ OS_REPORT("↑↑↑CheckCurveDone!!! correctCount:%d / %d\n", mCorrectScore, mFullScore);
+ mCorrectScore = -1;
}
return -1;
- } else if (field_0x90 >= field_0xbe) {
- u32 uVar1 = 0;
+ } else if (mCorrectScore >= mFullScore) {
+ u32 length = 0;
for (u8 i = 0; i < getCorrectLineNum(); i++) {
- uVar1 += getCorrectLine(i).length;
+ length += getCorrectLine(i).length;
}
- if (mTimer - data_8045088E < uVar1) {
+
+ if (mTimer - cBeginHowlTime < length) {
return -1;
}
- Z2GetSeMgr()->seStart(0xd, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
- if (mCorrectCurveID > 2) {
- if (Z2GetSceneMgr()->getCurrentSceneNum() == 0x21) {
+
+ OS_REPORT("↑↑↑CheckCurveDone!!! correctCount:%d / %d\n", mCorrectScore, mFullScore);
+
+ Z2GetSeMgr()->seStart(Z2SE_READ_RIDDLE_B, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
+
+ if (mCorrectCurveID > Z2WOLFHOWL_ZELDASONG) {
+ if (Z2GetSceneMgr()->getCurrentSceneNum() == Z2SCENE_SHADES_REALM) {
Z2GetSeqMgr()->subBgmStart(sCorrectDuo[mCorrectCurveID]);
}
} else {
Z2GetSeqMgr()->subBgmStart(sCorrectPhrase[mCorrectCurveID]);
}
- field_0x90 = 0xffff;
+
+ mCorrectScore = -1;
return mCorrectCurveID;
} else {
if (mTimer == 1) {
- field_0x90 = 0;
- field_0xba = 0;
- field_0xbc = 0;
- } else if (mTimer >= data_8045088E) {
- u32 r29 = mTimer - data_8045088E;
- u32 uVar1 = 0;
- for (u8 i = 0; i <= field_0xba; i++) {
- uVar1 += getCorrectLine(i).length;
+ mCorrectScore = 0;
+ mNowLineIndex = 0;
+ mNowLineScore = 0;
+ OS_REPORT("↓↓↓CheckCurveStart!!! correctCount:%d, block:%d, length%d\n", mCorrectScore, mNowLineIndex, field_0x92[mNowLineIndex]);
+ } else if (mTimer >= cBeginHowlTime) {
+ u32 howlTime = mTimer - cBeginHowlTime;
+
+ u32 length = 0;
+ for (u8 i = 0; i <= mNowLineIndex; i++) {
+ length += getCorrectLine(i).length;
}
- if (r29 > uVar1 && field_0xba < getCorrectLineNum()) {
- field_0x90 += field_0xbc;
- if (field_0xbc > getCorrectLine(field_0xba).length / 6) {
- field_0x90 += struct_80450895;
+
+ if (howlTime > length && mNowLineIndex < getCorrectLineNum()) {
+ mCorrectScore += mNowLineScore;
+ if (mNowLineScore > getCorrectLine(mNowLineIndex).length / 6) {
+ mCorrectScore += struct_80450895;
}
- field_0xba++;
- field_0xbc = 0;
+ mNowLineIndex++;
+ mNowLineScore = 0;
} else {
if (getOnLineNum() > -1) {
- field_0xbc++;
+ mNowLineScore++;
}
}
}
- return -1;
}
-
- return mCorrectCurveID;
+
+ return -1;
}
/* 802CB650-802CB6EC 2C5F90 009C+00 1/1 1/1 0/0 .text getOnLineNum__13Z2WolfHowlMgrFv */
s8 Z2WolfHowlMgr::getOnLineNum() {
- SongNote note = getCorrectLine(field_0xba);
- if ((note.barType == 1 && mNowInputValue == 1.0f) ||
- (note.barType == 2 && mNowInputValue == 0.0f) ||
- (note.barType == 3 && mNowInputValue == -1.0f)) {
- s8 rv = field_0xba;
+ Z2WolfHowlLine line = getCorrectLine(mNowLineIndex);
+ u8 type = line.type;
+ if ((type == HOWL_LINE_HIGH && mNowInputValue == 1.0f) ||
+ (type == HOWL_LINE_MID && mNowInputValue == 0.0f) ||
+ (type == HOWL_LINE_LOW && mNowInputValue == -1.0f))
+ {
+ s8 rv = mNowLineIndex;
return rv;
}
@@ -459,49 +557,56 @@ s8 Z2WolfHowlMgr::getOnLineNum() {
/* 802CB6EC-802CBA88 2C602C 039C+00 0/0 0/0 2/2 .text startWindStoneSound__13Z2WolfHowlMgrFScP3Vec
*/
-void Z2WolfHowlMgr::startWindStoneSound(s8 param_0, Vec* param_1) {
- if (param_1 == NULL || Z2GetLink() == NULL || Z2GetLink()->getCurrentPos() == NULL) {
+void Z2WolfHowlMgr::startWindStoneSound(s8 curveID, Vec* pos) {
+ if (pos == NULL || Z2GetLink() == NULL || Z2GetLink()->getCurrentPos() == NULL) {
return;
}
- Vec local_60 = Z2GetAudience()->getAudioCamPos(0);
- f32 dVar13 = sqrtf(VECSquareDistance(param_1, &local_60));
- if (dVar13 > 2100.0f && field_0x04) {
- field_0x04->stop();
- } else if (dVar13 < 2100.0f && !field_0x04) {
- Z2GetSoundMgr()->startSound(sWindStoneSound[param_0], &field_0x04, (const JGeometry::TVec3<f32>*)param_1);
+
+ Vec audioCamPos = Z2GetAudience()->getAudioCamPos(0);
+ f32 camDist = sqrtf(VECSquareDistance(pos, &audioCamPos));
+ if (camDist > 2100.0f && mWindStoneHandle) {
+ mWindStoneHandle->stop();
+ } else if (camDist < 2100.0f && !mWindStoneHandle) {
+ Z2GetSoundMgr()->startSound(sWindStoneSound[curveID], &mWindStoneHandle, (const JGeometry::TVec3<f32>*)pos);
}
- if (field_0x04) {
- field_0x04->fadeIn(0);
- field_0x04->stop(0x1e);
+
+ if (mWindStoneHandle) {
+ mWindStoneHandle->fadeIn(0);
+ mWindStoneHandle->stop(30);
+
if (Z2GetLink()->getLinkState() == 1) {
- f32 fVar14 = sqrtf(VECSquareDistance(param_1, Z2GetLink()->getCurrentPos()));
- f32 dVar13 = 1.0f;
- if (fVar14 < 150.0f) {
- dVar13 = 0.0f;
- } else if (fVar14 < 2000.0f) {
- dVar13 = Z2Calc::getParamByExp(fVar14, 150.0f, 2000.0f,
- 0.45f, 0.05f, dVar13, Z2Calc::CURVE_SIGN_0);
+ f32 linkDist = sqrtf(VECSquareDistance(pos, Z2GetLink()->getCurrentPos()));
+ f32 volume = 1.0f;
+ if (linkDist < 150.0f) {
+ volume = 0.0f;
+ } else if (linkDist < 2000.0f) {
+ volume = Z2Calc::getParamByExp(linkDist, 150.0f, 2000.0f,
+ 0.45f, 0.05f, 1.0f, Z2Calc::CURVE_NEGATIVE);
}
- Z2GetSeqMgr()->setWindStoneVol(dVar13, 0);
- field_0x04->getAuxiliary().moveVolume(0.4f, 0);
+
+ Z2GetSeqMgr()->setWindStoneVol(volume, 0);
+ mWindStoneHandle->getAuxiliary().moveVolume(0.4f, 0);
} else {
- field_0x04->getAuxiliary().moveVolume(0.04f, 0);
+ mWindStoneHandle->getAuxiliary().moveVolume(0.04f, 0);
}
}
}
/* 802CBA88-802CBB58 2C63C8 00D0+00 0/0 1/1 0/0 .text startGuideMelody__13Z2WolfHowlMgrFb
*/
-int Z2WolfHowlMgr::startGuideMelody(bool param_0) {
+int Z2WolfHowlMgr::startGuideMelody(bool startSound) {
Z2GetSeqMgr()->setWindStoneVol(0.0f, 0);
- if (param_0) {
- Z2GetSoundMgr()->startSound(sWindStoneSound[mCorrectCurveID], &field_0x08, NULL);
+
+ if (startSound) {
+ Z2GetSoundMgr()->startSound(sWindStoneSound[mCorrectCurveID], &mGuideHandle, NULL);
}
- if (field_0x08) {
- field_0x08->fadeIn(0);
- field_0x08->stop(0x1e);
- return field_0x08->getCount();
+
+ if (mGuideHandle) {
+ mGuideHandle->fadeIn(0);
+ mGuideHandle->stop(30);
+ return mGuideHandle->getCount();
}
+
return 0;
}