summaryrefslogtreecommitdiff
path: root/src/Z2AudioLib/Z2Audience.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Z2AudioLib/Z2Audience.cpp')
-rw-r--r--src/Z2AudioLib/Z2Audience.cpp549
1 files changed, 285 insertions, 264 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;