summaryrefslogtreecommitdiff
path: root/src/Z2AudioLib/Z2LinkMgr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Z2AudioLib/Z2LinkMgr.cpp')
-rw-r--r--src/Z2AudioLib/Z2LinkMgr.cpp459
1 files changed, 383 insertions, 76 deletions
diff --git a/src/Z2AudioLib/Z2LinkMgr.cpp b/src/Z2AudioLib/Z2LinkMgr.cpp
index 96664f7dc7..378b1c5a6c 100644
--- a/src/Z2AudioLib/Z2LinkMgr.cpp
+++ b/src/Z2AudioLib/Z2LinkMgr.cpp
@@ -4,18 +4,7 @@
//
#include "Z2AudioLib/Z2LinkMgr.h"
-#include "Z2AudioLib/Z2Creature.h"
#include "d/d_com_inf_game.h"
-#include "dol2asm.h"
-#include "global.h"
-
-struct Z2SoundObjCoach {
- /* 802C54B8 */ Z2SoundObjCoach();
- /* 802C54FC */ void init(Vec*, u8);
- /* 802C551C */ void startWheelSound(f32);
- /* 802C56C0 */ void startFireSound(u16);
- /* 802C57C0 */ int startSound(JAISoundID, u32, s8);
-};
/* 802C321C-802C3220 2BDB5C 0004+00 0/0 1/1 0/0 .text setLinkGroupInfo__14Z2CreatureLinkFUc */
void Z2CreatureLink::setLinkGroupInfo(u8) {}
@@ -355,14 +344,113 @@ JAISoundHandle* Z2CreatureLink::startLinkSoundLevel(JAISoundID i_soundID, u32 pa
/* 802C4320-802C45B0 2BEC60 0290+00 1/1 1/1 0/0 .text
* startLinkVoice__14Z2CreatureLinkF10JAISoundIDSc */
-void Z2CreatureLink::startLinkVoice(JAISoundID param_0, s8 param_1) {
- // NONMATCHING
+Z2SoundHandlePool* Z2CreatureLink::startLinkVoice(JAISoundID i_soundID, s8 param_1) {
+ if (mLinkState == 1) {
+ switch (i_soundID) {
+ case Z2SE_WL_V_BREATH_WAIT:
+ case Z2SE_WL_V_BREATH_TIRED:
+ case Z2SE_WL_V_BREATH_SIT:
+ if (Z2GetStatusMgr()->getDemoStatus() == 2 || !Z2GetSceneMgr()->isInGame()) {
+ return NULL;
+ }
+ // fallthrough
+ case Z2SE_WL_V_BREATH_WALK:
+ case Z2SE_WL_V_BREATH_RUN:
+ if (field_0xc1 < 5) {
+ return NULL;
+ }
+ field_0xc1 = 0;
+ break;
+ case Z2SE_WL_V_BITE_ATTACK:
+ if (mSoundObjSimple1.getHandleSoundID(Z2SE_WL_V_BITE_THROAT) != NULL) {
+ return NULL;
+ }
+ break;
+ }
+ } else {
+ if (i_soundID == Z2SE_AL_V_ATTACK_RUN) {
+ if (field_0xc1 < 10) {
+ return NULL;
+ }
+ field_0xc1 = 0;
+ }
+
+ if (mMarkState != 3 && Z2GetSoundObjMgr()->getEnemyNumNear() == 0
+ && !Z2GetSoundObjMgr()->isForceBattle())
+ {
+ switch (i_soundID) {
+ case Z2SE_AL_V_ATTACK_S:
+ i_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;
+ break;
+ case Z2SE_AL_V_ATTACK_L:
+ i_soundID = Z2SE_AL_V_ATTACK_L_FREE;
+ break;
+ case Z2SE_AL_V_KAITEN:
+ i_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;
+ break;
+ case Z2SE_AL_V_ATTACK_RUN:
+ i_soundID = Z2SE_AL_V_ATTACK_RUN_FREE;
+ break;
+ }
+ } else {
+ if (i_soundID == Z2SE_AL_V_JUMP_S) {
+ i_soundID = Z2SE_AL_V_BACKTEN;
+ }
+ }
+
+ if (isInWater()) {
+ i_soundID = Z2SE_AL_V_UNDER_WATER;
+ }
+ }
+
+ return startCreatureVoice(i_soundID, param_1);
}
/* 802C45B0-802C46F0 2BEEF0 0140+00 0/0 1/1 0/0 .text
* startLinkVoiceLevel__14Z2CreatureLinkF10JAISoundIDSc */
-void Z2CreatureLink::startLinkVoiceLevel(JAISoundID param_0, s8 param_1) {
- // NONMATCHING
+Z2SoundHandlePool* Z2CreatureLink::startLinkVoiceLevel(JAISoundID i_soundID, s8 param_1) {
+ if (mLinkState == 1) {
+ switch (i_soundID) {
+ case Z2SE_WL_V_ROAR:
+ f32 volume = 0.0f;
+ u8 port_data = 0;
+ switch (mMarkState) {
+ case 0:
+ volume = 1.0f;
+ port_data = 2;
+ break;
+ case 1:
+ volume = 0.3f;
+ port_data = 1;
+ break;
+ case 2:
+ volume = 0.5f;
+ port_data = 1;
+ break;
+ case 3:
+ volume = 0.8f;
+ port_data = 2;
+ break;
+ }
+
+ Z2SoundHandlePool* handle = startCreatureVoiceLevel(Z2SE_WL_V_ROAR, param_1);
+ if (handle != NULL && *handle) {
+ (*handle)->getAuxiliary().moveVolume(volume, 0);
+ Z2GetSoundStarter()->setPortData(handle, 8, port_data, -1);
+ }
+ return handle;
+ }
+ }
+
+ return startCreatureVoiceLevel(i_soundID, param_1);
}
/* 802C46F0-802C4784 2BF030 0094+00 0/0 2/2 0/0 .text
@@ -401,15 +489,26 @@ Z2SoundHandlePool* Z2CreatureLink::startCollisionSE(u32 hitID, u32 mapinfo) {
return mSoundObjAnime.startCollisionSE(hitID, mapinfo, NULL);
}
-/* ############################################################################################## */
-/* 80455D18-80455D1C 004318 0004+00 1/1 0/0 0/0 .sdata2 @4178 */
-SECTION_SDATA2 static f32 lit_4178 = 100.0f;
-
/* 802C4814-802C48D8 2BF154 00C4+00 0/0 4/4 2/2 .text
* startHitItemSE__14Z2CreatureLinkFUlUlP14Z2SoundObjBasef */
-int Z2CreatureLink::startHitItemSE(u32 param_0, u32 param_1, Z2SoundObjBase* param_2,
- f32 speed) {
- // NONMATCHING
+Z2SoundHandlePool* Z2CreatureLink::startHitItemSE(u32 i_soundID, u32 param_1,
+ Z2SoundObjBase* param_2, f32 speed) {
+ if (param_2 == NULL) {
+ param_2 = &mSoundObjSimple2;
+ }
+
+ if (i_soundID == Z2SE_HIT_SHIELD_ATTACK) {
+ return mSoundObjAnime.startCollisionSE(i_soundID, param_1, NULL);
+ }
+
+ Z2SoundHandlePool* handle = param_2->startCollisionSE(i_soundID, param_1, NULL);
+ if (speed >= 0.0f && handle != NULL && *handle) {
+ if (speed >= 100.0f) {
+ speed = 100.0f;
+ }
+ (*handle)->getAuxiliary().moveVolume(speed / 100.0f, 0);
+ }
+ return handle;
}
/* 802C48D8-802C48E8 2BF218 0010+00 0/0 1/1 0/0 .text setResumeAttack__14Z2CreatureLinkFb
@@ -421,17 +520,158 @@ void Z2CreatureLink::setResumeAttack(bool i_resumeAttack) {
/* 802C48E8-802C4928 2BF228 0040+00 1/1 0/0 0/0 .text __ct__18Z2LinkSoundStarterFv */
Z2LinkSoundStarter::Z2LinkSoundStarter() : Z2SoundStarter(false) {}
-/* ############################################################################################## */
-/* 80455D1C-80455D20 00431C 0004+00 2/2 0/0 0/0 .sdata2 @4399 */
-SECTION_SDATA2 static f32 lit_4399 = 9.0f / 10.0f;
-
/* 802C4928-802C4FFC 2BF268 06D4+00 2/0 0/0 0/0 .text
* startSound__18Z2LinkSoundStarterF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3<f>UlfffffUl */
-bool Z2LinkSoundStarter::startSound(JAISoundID param_0, 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) {
- // NONMATCHING
+// NONMATCHING stack alloc
+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 bVar2 = false;
+ bool bVar3 = false;
+
+ if (Z2GetLink()->isInWater() && Z2GetStatusMgr()->getCameraInWaterDepthRatio() > 0.0f) {
+ switch (i_soundID) {
+ case Z2SE_AL_SWIM:
+ case Z2SE_AL_DIVE_SWIM:
+ i_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;
+ break;
+ case Z2SE_AL_SWORD_SWING_L:
+ i_soundID = Z2SE_AL_WATER_STROKE_L;
+ break;
+ case Z2SE_AL_SWORD_THRUST:
+ i_soundID = Z2SE_AL_WATER_STROKE_FAST;
+ break;
+ case Z2SE_AL_KAITENGIRI:
+ i_soundID = Z2SE_AL_WATER_STROKE_CIRCLE;
+ break;
+ }
+ }
+
+ if (i_soundID.mId.mBytes.b1 == 3 && param_3 > 26) {
+ if (param_3 == 44) {
+ param_3 = 23;
+ } else {
+ param_3 = 0;
+ }
+ }
+
+ switch (i_soundID) {
+ case Z2SE_AL_INTO_WATER:
+ case Z2SE_AL_DIVE_INTO_WATER:
+ case Z2SE_WL_INTO_WATER:
+ if (Z2GetLink()->mSoundObjSimple1.isActive()) {
+ Z2GetLink()->mSoundObjSimple1.stopAllSounds(1);
+ }
+ break;
+ case Z2SE_FN_WALK_DUMMY:
+ case Z2SE_FN_LADDER_CLIMB:
+ case Z2SE_FN_LADDER_DOWN:
+ bVar2 = true;
+ // fallthrough
+ case Z2SE_GORON_FOOTNOTE:
+ case Z2SE_FN_GOB_JUMP:
+ if (Z2GetLink()->mLinkBootsType == 1) {
+ i_soundID = Z2SE_FN_WALK_HEAVY;
+ if (Z2GetLink()->mMagnetized) {
+ param_3 = 127;
+ }
+ }
+ bVar3 = true;
+ break;
+ case Z2SE_FN_JUMP_DUMMY:
+ bVar2 = true;
+ bVar3 = true;
+ if (Z2GetLink()->mLinkBootsType == 1) {
+ i_soundID = Z2SE_FN_JUMP_HEAVY;
+ if (Z2GetLink()->mMagnetized) {
+ param_3 = 127;
+ }
+ }
+ if (Z2GetLink()->mSoundObjSimple1.getHandleSoundID(Z2SE_AL_V_FALL) != NULL) {
+ Z2GetLink()->startLinkVoice(Z2SE_AL_V_FOOT_MISS, -1);
+ }
+ break;
+ case Z2SE_FN_BOUND_DUMMY:
+ case Z2SE_FN_HAND_DUMMY:
+ bVar2 = true;
+ break;
+ case Z2SE_BODY_FALL_DOWN:
+ if (Z2GetLink()->mSoundObjSimple1.getHandleSoundID(Z2SE_AL_V_FALL) != NULL) {
+ Z2GetLink()->startLinkVoice(Z2SE_AL_V_LANDING_FAIL, -1);
+ }
+ break;
+ case Z2SE_OBJ_ARROW_SHOT_NORMAL:
+ case Z2SE_OBJ_ARROW_SHOT_GAIN:
+ case Z2SE_OBJ_ARROWBOMB_SHOT:
+ case Z2SE_OBJ_ARROWBOMB_SHOTGAIN:
+ Z2SoundHandlePool* handle = Z2GetLink()->mSoundObjAnime.getHandleSoundID(Z2SE_AL_DRAW_BOW);
+ if (handle != NULL) {
+ (*handle)->stop(0);
+ }
+ break;
+ }
+
+ if (Z2GetLink()->mSinkDepth > 0) {
+ switch (i_soundID) {
+ case Z2SE_FN_WALK_DUMMY:
+ case Z2SE_FN_JUMP_DUMMY:
+ case Z2SE_FN_BOUND_DUMMY:
+ case Z2SE_FN_HAND_DUMMY:
+ case Z2SE_FN_WALK_HEAVY:
+ case Z2SE_FN_JUMP_HEAVY:
+ case Z2SE_WL_WALK_L_DUMMY:
+ 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,
+ 0.0f, 127.0f, 1.0f, 0.5f, true);
+ } else if (param_3 == 25) {
+ param_5 *= 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);
+
+ if (bVar2 && Z2GetSceneMgr()->getDemoSeWaveNum() != 114) {
+ if (Z2GetLink()->mFlag5) {
+ Z2GetLink()->startLinkSound(Z2SE_AL_SWORD_SHIELD_ADD, 0, param_4 * 127.0f);
+ }
+
+ if (Z2GetLink()->mUsingIronBall) {
+ Z2GetLink()->startLinkSound(Z2SE_AL_IB_CHAIN_ADD, 0, param_4 * 127.0f);
+ }
+
+ if (Z2GetLink()->mKanteraState != 0) {
+ Z2SoundHandlePool* handle =
+ Z2GetLink()->mKantera.startSound(Z2SE_AL_KANTERA_SWING_ADD, 0, param_4 * 127.0f);
+ if (Z2GetLink()->mKanteraState == 2 && handle != NULL && *handle) {
+ (*handle)->getAuxiliary().moveVolume(0.6f, 0);
+ (*handle)->getAuxiliary().movePitch(0.9f, 0);
+ }
+ }
+ }
+
+ if (bVar3) {
+ if (Z2GetLink()->mLinkState == 4) {
+ Z2GetLink()->startLinkSound(Z2SE_FN_ARMER_LIGHT_ADD, 0, param_4 * 127.0f);
+ } else if (Z2GetLink()->mLinkState == 5) {
+ Z2GetLink()->startLinkSound(Z2SE_FN_ARMER_HEAVY_ADD, 0, param_4 * 127.0f);
+ }
+ }
+
+ return ret;
}
/* 802C4FFC-802C5078 2BF93C 007C+00 0/0 0/0 3/3 .text __ct__14Z2CreatureRideFv */
@@ -441,14 +681,9 @@ Z2CreatureRide::Z2CreatureRide() : Z2RideSoundStarter(this) {
setSoundStarter(this);
}
-/* 802C5078-802C5114 2BF9B8 009C+00 1/0 0/0 0/0 .text __dt__18Z2RideSoundStarterFv */
-inline Z2RideSoundStarter::~Z2RideSoundStarter() {
- // NONMATCHING
-}
-
/* 802C5114-802C51EC 2BFA54 00D8+00 2/1 0/0 2/2 .text __dt__14Z2CreatureRideFv */
Z2CreatureRide::~Z2CreatureRide() {
- // NONMATCHING
+ deleteObject();
}
/* 802C51EC-802C520C 2BFB2C 0020+00 1/0 0/0 0/0 .text deleteObject__14Z2CreatureRideFv */
@@ -475,61 +710,133 @@ Z2RideSoundStarter::Z2RideSoundStarter(Z2CreatureRide* ride) : Z2SoundStarter(fa
/* 802C5284-802C54B8 2BFBC4 0234+00 2/0 0/0 0/0 .text
* startSound__18Z2RideSoundStarterF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3<f>UlfffffUl */
-bool Z2RideSoundStarter::startSound(JAISoundID param_0, 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) {
- // NONMATCHING
-}
+// NONMATCHING regalloc / extra load
+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) {
+ if (!Z2GetSceneMgr()->isInGame()) {
+ return false;
+ }
-/* 802C54B8-802C54FC 2BFDF8 0044+00 0/0 0/0 1/1 .text __ct__15Z2SoundObjCoachFv */
-Z2SoundObjCoach::Z2SoundObjCoach() {
- // NONMATCHING
-}
+ u8 uVar3 = 0;
+ switch (i_soundID) {
+ case Z2SE_HS_WALK_L_DUMMY:
+ case Z2SE_HS_WALK_R_DUMMY:
+ case Z2SE_HS_TROT_L_DUMMY:
+ case Z2SE_HS_TROT_R_DUMMY:
+ case Z2SE_HS_GALLOP_L_DUMMY:
+ uVar3 = 1;
+ break;
+ case Z2SE_WB_FRONT_L_DUMMY:
+ case Z2SE_WB_FRONT_R_DUMMY:
+ case Z2SE_WB_REAR_L_DUMMY:
+ uVar3 = 2;
+ break;
+ }
-/* 802C54FC-802C551C 2BFE3C 0020+00 1/0 0/0 0/0 .text init__15Z2SoundObjCoachFP3VecUc */
-void Z2SoundObjCoach::init(Vec* param_0, u8 param_1) {
- // NONMATCHING
-}
+ bool ret = Z2SoundStarter::startSound(i_soundID, param_1, param_2, param_3, param_4, param_5,
+ param_6, param_7, param_8, param_9);
-/* ############################################################################################## */
-/* 80455D20-80455D24 004320 0004+00 1/1 0/0 0/0 .sdata2 @4621 */
-SECTION_SDATA2 static f32 lit_4621 = 2.0f;
+ if (mRide->isLinkRiding() && uVar3 != 0) {
+ if (Z2GetLink()->mFlag5) {
+ Z2GetLink()->startLinkSound(Z2SE_AL_SWORD_SHIELD_ADD, 0, param_4 * 127.0f);
+ }
-/* 80455D24-80455D28 004324 0004+00 1/1 0/0 0/0 .sdata2 @4622 */
-SECTION_SDATA2 static f32 lit_4622 = 35.0f;
+ if (Z2GetLink()->mKanteraState != 0) {
+ Z2SoundHandlePool* handle =
+ Z2GetLink()->mKantera.startSound(Z2SE_AL_KANTERA_SWING_ADD, 0, param_4 * 127.0f);
+ if (Z2GetLink()->mKanteraState == 2 && handle != NULL && *handle) {
+ (*handle)->getAuxiliary().moveVolume(0.6f, 0);
+ (*handle)->getAuxiliary().movePitch(0.9f, 0);
+ }
+ }
-/* 80455D28-80455D2C 004328 0004+00 1/1 0/0 0/0 .sdata2 @4623 */
-SECTION_SDATA2 static f32 lit_4623 = 22.0f / 25.0f;
+ switch (uVar3) {
+ case 1:
+ Z2GetLink()->startLinkSound(Z2SE_AL_HARNESS_ADD_HS, 0, param_4 * 127.0f);
+ break;
-/* 80455D2C-80455D30 00432C 0004+00 3/3 0/0 0/0 .sdata2 @4624 */
-SECTION_SDATA2 static f32 lit_4624 = 1.25f;
+ case 2:
+ Z2GetLink()->startLinkSound(Z2SE_AL_HARNESS_ADD_WB, 0, param_4 * 127.0f);
+ break;
+ }
+ }
-/* 80455D30-80455D34 004330 0004+00 2/2 0/0 0/0 .sdata2 @4625 */
-SECTION_SDATA2 static f32 lit_4625 = 50.0f;
+ return ret;
+}
-/* 802C551C-802C56C0 2BFE5C 01A4+00 0/0 0/0 1/1 .text startWheelSound__15Z2SoundObjCoachFf */
-void Z2SoundObjCoach::startWheelSound(f32 param_0) {
- // NONMATCHING
+/* 802C54B8-802C54FC 2BFDF8 0044+00 0/0 0/0 1/1 .text __ct__15Z2SoundObjCoachFv */
+Z2SoundObjCoach::Z2SoundObjCoach() {
+ field_0x20 = 0.0f;
}
-/* ############################################################################################## */
-/* 80455D34-80455D38 004334 0004+00 1/1 0/0 0/0 .sdata2 @4645 */
-SECTION_SDATA2 static f32 lit_4645 = 1500.0f;
+/* 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);
+}
-/* 80455D38-80455D3C 004338 0004+00 2/2 0/0 0/0 .sdata2 @4646 */
-SECTION_SDATA2 static f32 lit_4646 = 1.0f / 5.0f;
+/* 802C551C-802C56C0 2BFE5C 01A4+00 0/0 0/0 1/1 .text startWheelSound__15Z2SoundObjCoachFf */
+Z2SoundHandlePool* Z2SoundObjCoach::startWheelSound(f32 param_0) {
+ Z2SoundHandlePool* handle = NULL;
+
+ if (!(param_0 < 2.0f)) {
+ if (param_0 < 35.0f) {
+ 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);
+ (*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);
+ (*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);
+ (*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);
+ (*handle)->getAuxiliary().moveVolume(volume, 0);
+ }
+ }
+ }
-/* 80455D3C-80455D40 00433C 0004+00 2/2 0/0 0/0 .sdata2 @4647 */
-SECTION_SDATA2 static f32 lit_4647 = 17.0f / 20.0f;
+ field_0x20 = param_0;
+ return handle;
+}
/* 802C56C0-802C57C0 2C0000 0100+00 0/0 0/0 1/1 .text startFireSound__15Z2SoundObjCoachFUs */
-void Z2SoundObjCoach::startFireSound(u16 param_0) {
- // NONMATCHING
+Z2SoundHandlePool* Z2SoundObjCoach::startFireSound(u16 param_0) {
+ Z2SoundHandlePool* handle = startLevelSound(Z2SE_COACH_FIRE, 0, -1);
+
+ if (handle != NULL && *handle) {
+ f32 pitch = Z2Calc::getParamByExp(param_0, 0.0f, 1500.0f, 0.2f, 0.85f, 1.25f,
+ Z2Calc::CURVE_SIGN_1);
+ (*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);
+ (*handle)->getAuxiliary().moveVolume(volume, 0);
+ }
+
+ return handle;
}
/* 802C57C0-802C588C 2C0100 00CC+00 1/0 0/0 0/0 .text
* startSound__15Z2SoundObjCoachF10JAISoundIDUlSc */
-int Z2SoundObjCoach::startSound(JAISoundID param_0, u32 param_1, s8 param_2) {
- // NONMATCHING
+Z2SoundHandlePool* Z2SoundObjCoach::startSound(JAISoundID i_soundID, u32 param_1, s8 param_2) {
+ Z2SoundHandlePool* handle = Z2SoundObjBase::startSound(i_soundID, param_1, param_2);
+
+ if (handle != NULL && *handle && i_soundID == Z2SE_COACH_SHAKE) {
+ f32 pitch = Z2Calc::getParamByExp(field_0x20, 0.0f, 50.0f, 0.2f, 0.85f, 1.25f,
+ Z2Calc::CURVE_SIGN_1);
+ (*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);
+ (*handle)->getAuxiliary().moveVolume(volume, 0);
+ }
+
+ return handle;
}