diff options
| author | TakaRikka <38417346+TakaRikka@users.noreply.github.com> | 2025-11-27 21:19:33 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-11-27 21:19:33 -0800 |
| commit | 6f96e665186c87f15acb6f5cb8d27665afee3130 (patch) | |
| tree | 3ea70fe7d635a0f55aae44b1a386814766a46597 /src/Z2AudioLib/Z2EnvSeMgr.cpp | |
| parent | 767caeecc3e374779cccc9960b6546b74e7a9e50 (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/Z2EnvSeMgr.cpp')
| -rw-r--r-- | src/Z2AudioLib/Z2EnvSeMgr.cpp | 754 |
1 files changed, 454 insertions, 300 deletions
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); } |
