mirror of
https://github.com/zeldaret/tp
synced 2026-09-10 04:02:20 -04:00
Z2AudioLib work (#2339)
* Z2LinkMgr work, Z2AudioArcLoader matching * Z2SeMgr matching * Z2SpeechMgr2 almost done, Z2SoundHandles matching
This commit is contained in:
@@ -30,7 +30,7 @@ bool Z2AudioArcLoader::readCommandMore(u32 param_0) {
|
||||
// NONMATCHING regalloc
|
||||
void Z2AudioArcLoader::readBFCA(void const* param_0) {
|
||||
JKRHeap* heap = JAUSectionHeap::getInstance()->getHeap();
|
||||
JKRArchive* archive = JKRArchive::mount((void*)param_0, JKRGetCurrentHeap(), JKRArchive::MOUNT_DIRECTION_TAIL);
|
||||
JKRArchive* archive = JKRMountArchive((void*)param_0, JKRGetCurrentHeap(), JKRArchive::MOUNT_DIRECTION_TAIL);
|
||||
Z2GetFxLineMgr()->initDataArc(archive, heap);
|
||||
JKRUnmountArchive(archive);
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
*/
|
||||
|
||||
#include "Z2AudioLib/Z2Creature.h"
|
||||
#include "SSystem/SComponent/c_xyz.h"
|
||||
#include "Z2AudioLib/Z2Param.h"
|
||||
#include "Z2AudioLib/Z2Calc.h"
|
||||
#include "Z2AudioLib/Z2AudioMgr.h"
|
||||
@@ -180,7 +181,7 @@ Z2SoundHandlePool* Z2Creature::startCreatureSound(JAISoundID i_soundID, u32 para
|
||||
return mSoundObjSimple1.startSound(i_soundID, param_1, 0);
|
||||
default:
|
||||
Z2SoundHandlePool* handle = mSoundObjAnime.startSound(i_soundID, param_1, param_2);
|
||||
if (handle != NULL && *handle != NULL) {
|
||||
if (handle != NULL && *handle) {
|
||||
switch (i_soundID) {
|
||||
case Z2SE_FAIRY_S_FLY:
|
||||
f32 pitch = Z2Calc::getParamByExp((f32)param_1, 30.0f, 100.0f, 0.3f,
|
||||
@@ -199,12 +200,12 @@ Z2SoundHandlePool* Z2Creature::startCreatureSound(JAISoundID i_soundID, u32 para
|
||||
* startCreatureSoundLevel__10Z2CreatureF10JAISoundIDUlSc */
|
||||
Z2SoundHandlePool* Z2Creature::startCreatureSoundLevel(JAISoundID i_soundID, u32 param_1, s8 param_2) {
|
||||
switch (i_soundID) {
|
||||
case 0x600d6:
|
||||
case Z2SE_FAIRY_S_LV:
|
||||
Z2GetAudioMgr()->seStartLevel(i_soundID, mpPos, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
|
||||
return NULL;
|
||||
default:
|
||||
Z2SoundHandlePool* handle = mSoundObjAnime.startLevelSound(i_soundID, param_1, param_2);
|
||||
if (handle != NULL && *handle != NULL) {
|
||||
if (handle != NULL && *handle) {
|
||||
if (i_soundID == Z2SE_YM_SNOBO_RIDE || i_soundID == Z2SE_YW_SNOBO_RIDE) {
|
||||
f32 volume = 0.0f;
|
||||
if (param_1 != 0) {
|
||||
@@ -486,7 +487,7 @@ Z2SoundHandlePool* Z2CreatureEnemy::startCreatureSoundLevel(JAISoundID i_soundID
|
||||
|
||||
switch (mEnemyID) {
|
||||
case Z2_ENEMY_FZ:
|
||||
if (handle != NULL && *handle != NULL && i_soundID == Z2SE_EN_FZ_MOVE) {
|
||||
if (handle != NULL && *handle && i_soundID == Z2SE_EN_FZ_MOVE) {
|
||||
f32 volume = Z2Calc::getParamByExp(param_1, 1.0f, 50.0f, 0.4f, 0.1f, 1.1f,
|
||||
Z2Calc::CURVE_SIGN_1);
|
||||
(*handle)->getAuxiliary().moveVolume(volume, 0);
|
||||
@@ -496,7 +497,7 @@ Z2SoundHandlePool* Z2CreatureEnemy::startCreatureSoundLevel(JAISoundID i_soundID
|
||||
Z2_E_sw_modPitch(handle, param_1);
|
||||
break;
|
||||
case Z2_ENEMY_RB:
|
||||
if (handle != NULL && *handle != NULL && i_soundID == Z2SE_EN_RB_MOVE) {
|
||||
if (handle != NULL && *handle && i_soundID == Z2SE_EN_RB_MOVE) {
|
||||
f32 volume = Z2Calc::getParamByExp(param_1, 4.0f, 35.0f, 0.6f, 0.7f, 1.0f,
|
||||
Z2Calc::CURVE_SIGN_1);
|
||||
f32 pitch = Z2Calc::getParamByExp(param_1, 4.0f, 35.0f, 0.4f, 0.8f, 1.0f,
|
||||
@@ -507,7 +508,7 @@ Z2SoundHandlePool* Z2CreatureEnemy::startCreatureSoundLevel(JAISoundID i_soundID
|
||||
}
|
||||
// no break
|
||||
default:
|
||||
if (handle != NULL && *handle != NULL && i_soundID == Z2SE_EN_PH_PROPELLER) {
|
||||
if (handle != NULL && *handle && i_soundID == Z2SE_EN_PH_PROPELLER) {
|
||||
f32 volume = Z2Calc::getParamByExp(param_1, 0.0f, 30.0f, 0.4f, 0.0f, 1.0f,
|
||||
Z2Calc::CURVE_SIGN_1);
|
||||
f32 pitch = Z2Calc::getParamByExp(param_1, 4000.0f, 13000.0f, 0.4f, 0.8f, 1.2f,
|
||||
@@ -856,7 +857,7 @@ Z2SoundHandlePool* Z2CreatureFM::startChainSoundLevel(JAISoundID i_soundID, u8 p
|
||||
switch (param_1) {
|
||||
case 0:
|
||||
handle = field_0xa4.startLevelSound(i_soundID, param_3, param_4);
|
||||
if (handle != NULL && *handle != NULL) {
|
||||
if (handle != NULL && *handle) {
|
||||
if (param_2 > 30.0f) {
|
||||
pitch = 1.06f;
|
||||
} else {
|
||||
@@ -872,7 +873,7 @@ Z2SoundHandlePool* Z2CreatureFM::startChainSoundLevel(JAISoundID i_soundID, u8 p
|
||||
return NULL;
|
||||
case 1:
|
||||
handle = field_0xa4.startLevelSound(i_soundID, param_3, param_4);
|
||||
if (handle != NULL && *handle != NULL) {
|
||||
if (handle != NULL && *handle) {
|
||||
if (param_2 > 30.0f) {
|
||||
pitch = 1.06f;
|
||||
} else {
|
||||
@@ -1052,7 +1053,7 @@ Z2SoundHandlePool* Z2CreatureOI::startTentacleSoundLevel(JAISoundID i_soundID, u
|
||||
f32 param_2, u32 param_3, s8 param_4) {
|
||||
Z2SoundHandlePool* handle =
|
||||
mTentacleSounds[param_1].startLevelSound(i_soundID, param_3, param_4);
|
||||
if (handle != NULL && *handle != NULL) {
|
||||
if (handle != NULL && *handle) {
|
||||
f32 volume = Z2Calc::getParamByExp(param_2, 0.0f, 60.0f, 0.4f, 0.0f, 1.0f,
|
||||
Z2Calc::CURVE_SIGN_1);
|
||||
f32 pitch = Z2Calc::getParamByExp(param_2, 0.0f, 60.0f, 0.4f, 0.9f, 1.1f,
|
||||
|
||||
@@ -211,20 +211,20 @@ Z2EnvSeMgr::Z2EnvSeMgr()
|
||||
field_0x39 = 0;
|
||||
field_0x2e8.setParam(0.1f, 0.007823764f, 0.06f);
|
||||
field_0x2f8.setParam(0.2f, 0.007823764f, 0.06f);
|
||||
field_0x90.setParam(0.1f, 0.02630252f, 0.005f);
|
||||
field_0xa0.setParam(0.9f, 0.02331011f, 0.003f);
|
||||
field_0xb0.setParam(0.2f, 0.006385157f, 0.004f);
|
||||
field_0x90.setParam(0.1f, 0.026302524f, 0.005f);
|
||||
field_0xa0.setParam(0.9f, 0.023310114f, 0.003f);
|
||||
field_0xb0.setParam(0.2f, 0.0063851574f, 0.004f);
|
||||
field_0xc0.setParam(0.8f, 0.006188805f, 0.0045f);
|
||||
field_0xd0.setParam(0.3f, 0.05343298f, 0.002f);
|
||||
field_0xe0.setParam(0.7f, 0.04256627f, 0.0025f);
|
||||
field_0xf0.setParam(0.4f, 0.01293395f, 0.006f);
|
||||
field_0x100.setParam(0.6f, 0.01215741f, 0.0065f);
|
||||
field_0x18c.setParam(0.1f, 0.02331011f, 0.005f);
|
||||
field_0x19c.setParam(0.5f, 0.05343298f, 0.0025f);
|
||||
field_0xd0.setParam(0.3f, 0.053432982f, 0.002f);
|
||||
field_0xe0.setParam(0.7f, 0.042566273f, 0.0025f);
|
||||
field_0xf0.setParam(0.4f, 0.012933955f, 0.006f);
|
||||
field_0x100.setParam(0.6f, 0.012157413f, 0.0065f);
|
||||
field_0x18c.setParam(0.1f, 0.023310114f, 0.005f);
|
||||
field_0x19c.setParam(0.5f, 0.053432982f, 0.0025f);
|
||||
field_0x64.setVolumeScale(1.0f);
|
||||
mWolfSmellSeMgr.setVolumeScale(1.0f);
|
||||
field_0x120.setParam(0.5f, 0.02092357f, 0.001f);
|
||||
field_0x130.setParam(0.1f, 0.003790878f, 0.005f);
|
||||
field_0x120.setParam(0.5f, 0.020923574f, 0.001f);
|
||||
field_0x130.setParam(0.1f, 0.0037908785f, 0.005f);
|
||||
}
|
||||
|
||||
/* 802C6540-802C66B0 2C0E80 0170+00 0/0 1/1 0/0 .text __dt__10Z2EnvSeMgrFv */
|
||||
@@ -968,7 +968,7 @@ void Z2EnvSeMgr::setHyrulSewerOpen(bool param_0) {
|
||||
}
|
||||
|
||||
/* 802C8300-802C8730 2C2C40 0430+00 2/1 1/1 0/0 .text startRiverSe__10Z2EnvSeMgrFSc */
|
||||
// NONMATCHING missing branch and JAISound stack issues
|
||||
// NONMATCHING JAISound stack issues
|
||||
bool Z2EnvSeMgr::startRiverSe(s8 param_1) {
|
||||
if (Z2GetStatusMgr()->mCameraMapInfo == 6) {
|
||||
switch (Z2GetSceneMgr()->getCurrentSceneNum()) {
|
||||
@@ -979,16 +979,20 @@ bool Z2EnvSeMgr::startRiverSe(s8 param_1) {
|
||||
case 0x10:
|
||||
if (Z2GetStatusMgr()->mPolygonPosition.y < -14500.0f) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
case 8:
|
||||
default:
|
||||
registRiverSePos(&Z2GetStatusMgr()->mPolygonPosition);
|
||||
break;
|
||||
// fake match: should be 2000.0f according to debug, but that generates an extra entry in sdata2
|
||||
if (Z2GetStatusMgr()->mPolygonPosition.y < -14500.0f) {
|
||||
break;
|
||||
}
|
||||
case 0x15:
|
||||
case 0x1e:
|
||||
case 0x1f:
|
||||
case 0x2e:
|
||||
break;
|
||||
default:
|
||||
registRiverSePos(&Z2GetStatusMgr()->mPolygonPosition);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (mRiverSeMgr.getPosCount() < 0) {
|
||||
|
||||
+384
-77
@@ -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;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
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 (mRide->isLinkRiding() && uVar3 != 0) {
|
||||
if (Z2GetLink()->mFlag5) {
|
||||
Z2GetLink()->startLinkSound(Z2SE_AL_SWORD_SHIELD_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);
|
||||
}
|
||||
}
|
||||
|
||||
switch (uVar3) {
|
||||
case 1:
|
||||
Z2GetLink()->startLinkSound(Z2SE_AL_HARNESS_ADD_HS, 0, param_4 * 127.0f);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
Z2GetLink()->startLinkSound(Z2SE_AL_HARNESS_ADD_WB, 0, param_4 * 127.0f);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* 802C54B8-802C54FC 2BFDF8 0044+00 0/0 0/0 1/1 .text __ct__15Z2SoundObjCoachFv */
|
||||
Z2SoundObjCoach::Z2SoundObjCoach() {
|
||||
// NONMATCHING
|
||||
field_0x20 = 0.0f;
|
||||
}
|
||||
|
||||
/* 802C54FC-802C551C 2BFE3C 0020+00 1/0 0/0 0/0 .text init__15Z2SoundObjCoachFP3VecUc */
|
||||
void Z2SoundObjCoach::init(Vec* param_0, u8 param_1) {
|
||||
// NONMATCHING
|
||||
void Z2SoundObjCoach::init(Vec* i_soundPos, u8 i_numHandles) {
|
||||
Z2SoundObjBase::init(i_soundPos, i_numHandles);
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80455D20-80455D24 004320 0004+00 1/1 0/0 0/0 .sdata2 @4621 */
|
||||
SECTION_SDATA2 static f32 lit_4621 = 2.0f;
|
||||
|
||||
/* 80455D24-80455D28 004324 0004+00 1/1 0/0 0/0 .sdata2 @4622 */
|
||||
SECTION_SDATA2 static f32 lit_4622 = 35.0f;
|
||||
|
||||
/* 80455D28-80455D2C 004328 0004+00 1/1 0/0 0/0 .sdata2 @4623 */
|
||||
SECTION_SDATA2 static f32 lit_4623 = 22.0f / 25.0f;
|
||||
|
||||
/* 80455D2C-80455D30 00432C 0004+00 3/3 0/0 0/0 .sdata2 @4624 */
|
||||
SECTION_SDATA2 static f32 lit_4624 = 1.25f;
|
||||
|
||||
/* 80455D30-80455D34 004330 0004+00 2/2 0/0 0/0 .sdata2 @4625 */
|
||||
SECTION_SDATA2 static f32 lit_4625 = 50.0f;
|
||||
|
||||
/* 802C551C-802C56C0 2BFE5C 01A4+00 0/0 0/0 1/1 .text startWheelSound__15Z2SoundObjCoachFf */
|
||||
void Z2SoundObjCoach::startWheelSound(f32 param_0) {
|
||||
// NONMATCHING
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
field_0x20 = param_0;
|
||||
return handle;
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80455D34-80455D38 004334 0004+00 1/1 0/0 0/0 .sdata2 @4645 */
|
||||
SECTION_SDATA2 static f32 lit_4645 = 1500.0f;
|
||||
|
||||
/* 80455D38-80455D3C 004338 0004+00 2/2 0/0 0/0 .sdata2 @4646 */
|
||||
SECTION_SDATA2 static f32 lit_4646 = 1.0f / 5.0f;
|
||||
|
||||
/* 80455D3C-80455D40 00433C 0004+00 2/2 0/0 0/0 .sdata2 @4647 */
|
||||
SECTION_SDATA2 static f32 lit_4647 = 17.0f / 20.0f;
|
||||
|
||||
/* 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;
|
||||
}
|
||||
|
||||
@@ -167,7 +167,3 @@ u8 struct_80451341;
|
||||
u8 struct_80451342;
|
||||
u8 pad_80451344[4];
|
||||
#pragma pop
|
||||
|
||||
/* 80451348-80451350 000848 0008+00 0/0 4/4 0/0 .sbss None */
|
||||
extern u8 data_80451348[8];
|
||||
u8 data_80451348[8];
|
||||
+371
-174
@@ -6,49 +6,14 @@
|
||||
#include "Z2AudioLib/Z2SeMgr.h"
|
||||
#include "Z2AudioLib/Z2Audience.h"
|
||||
#include "Z2AudioLib/Z2Calc.h"
|
||||
#include "Z2AudioLib/Z2LinkMgr.h"
|
||||
#include "Z2AudioLib/Z2SoundMgr.h"
|
||||
#include "Z2AudioLib/Z2SceneMgr.h"
|
||||
#include "Z2AudioLib/Z2SpeechMgr2.h"
|
||||
#include "Z2AudioLib/Z2StatusMgr.h"
|
||||
#include "Z2AudioLib/Z2Param.h"
|
||||
#include "Z2AudioLib/Z2SeqMgr.h"
|
||||
#include "dol2asm.h"
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
|
||||
extern "C" void __ct__7Z2SeMgrFv();
|
||||
extern "C" void __ct__12Z2MultiSeObjFv();
|
||||
extern "C" void initSe__7Z2SeMgrFv();
|
||||
extern "C" void resetModY__7Z2SeMgrFv();
|
||||
extern "C" void modHeightAtCamera__7Z2SeMgrFPPC3Vec();
|
||||
extern "C" void incrCrowdSize__7Z2SeMgrFv();
|
||||
extern "C" void decrCrowdSize__7Z2SeMgrFv();
|
||||
extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
|
||||
extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
|
||||
extern "C" void seStop__7Z2SeMgrF10JAISoundIDUl();
|
||||
extern "C" void seStopAll__7Z2SeMgrFUl();
|
||||
extern "C" void seMoveVolumeAll__7Z2SeMgrFfUl();
|
||||
extern "C" void messageSePlay__7Z2SeMgrFUsP3VecSc();
|
||||
extern "C" void talkInSe__7Z2SeMgrFv();
|
||||
extern "C" void talkOutSe__7Z2SeMgrFv();
|
||||
extern "C" void menuInSe__7Z2SeMgrFv();
|
||||
extern "C" void setLevObjSE__7Z2SeMgrFUlP3VecSc();
|
||||
extern "C" void setMultiTriggerSE__7Z2SeMgrFUlP3VecSc();
|
||||
extern "C" void processSeFramework__7Z2SeMgrFv();
|
||||
extern "C" void isLevelSe__7Z2SeMgrF10JAISoundID();
|
||||
extern "C" void isSoundCulling__7Z2SeMgrF10JAISoundID();
|
||||
extern "C" void __ct__12Z2MultiSeMgrFv();
|
||||
extern "C" void __dt__12Z2MultiSeMgrFv();
|
||||
extern "C" void registMultiSePos__12Z2MultiSeMgrFP3Vec();
|
||||
extern "C" void resetMultiSePos__12Z2MultiSeMgrFv();
|
||||
extern "C" void getPanPower__12Z2MultiSeMgrFv();
|
||||
extern "C" void getDolbyPower__12Z2MultiSeMgrFv();
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
//
|
||||
#include "JSystem/J3DU/J3DUD.h"
|
||||
|
||||
/* 802AB64C-802AB710 2A5F8C 00C4+00 0/0 1/1 0/0 .text __ct__7Z2SeMgrFv */
|
||||
Z2SeMgr::Z2SeMgr() : JASGlobalInstance(this), mSoundHandles(mSoundHandle, 0x18) {
|
||||
@@ -145,12 +110,12 @@ void Z2SeMgr::decrCrowdSize() {
|
||||
|
||||
/* 802AB984-802AC50C 2A62C4 0B88+00 1/1 196/196 549/549 .text
|
||||
* seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc */
|
||||
// NONMATCHING something is wrong with the switch, also isMovieDemo needs to not get inlined
|
||||
bool Z2SeMgr::seStart(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, s8 i_reverb,
|
||||
f32 i_pitch, f32 i_volume, f32 i_pan, f32 i_dolby, u8 param_8) {
|
||||
if (i_soundID == 0xffffffff) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (param_8 != 1) {
|
||||
switch (i_soundID) {
|
||||
case Z2SE_OBJ_L8_STAIR_ON:
|
||||
@@ -165,6 +130,7 @@ bool Z2SeMgr::seStart(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, s8 i_
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
switch (i_soundID) {
|
||||
case Z2SE_QUIT_GAME:
|
||||
Z2GetStatusMgr()->menuOut();
|
||||
@@ -177,7 +143,7 @@ bool Z2SeMgr::seStart(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, s8 i_
|
||||
seStop(JA_SE_OBJ_STN_DOOR_MOVE_D, 0);
|
||||
break;
|
||||
case JA_SE_OBJ_STN_DOOR_STOP_D:
|
||||
seStop(JA_SE_OBJ_STN_DOOR_STOP_D, 0);
|
||||
seStop(JA_SE_OBJ_STN_DOOR_MOVE_U, 0);
|
||||
seStop(JA_SE_OBJ_STN_DOOR_MOVE_D, 0);
|
||||
break;
|
||||
case JA_SE_OBJ_STN_DOOR_MOVE_D:
|
||||
@@ -185,6 +151,7 @@ bool Z2SeMgr::seStart(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, s8 i_
|
||||
seStop(JA_SE_OBJ_STN_DOOR_MOVE_U, 0);
|
||||
seStop(JA_SE_OBJ_STN_DOOR_MOVE_D, 0);
|
||||
break;
|
||||
case Z2SE_OBJ_WOOD_DOOR_ROLLOPEN:
|
||||
case Z2SE_OBJ_WOOD_DOOR_ROLLOPEN2:
|
||||
case Z2SE_OBJ_WOOD_DR_OP_MDN:
|
||||
case Z2SE_OBJ_WOOD_DR_OP_MDN_FX:
|
||||
@@ -193,11 +160,10 @@ bool Z2SeMgr::seStart(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, s8 i_
|
||||
seStop(Z2SE_OBJ_WOOD_DOOR_ROLLCLOSE, 0);
|
||||
break;
|
||||
case Z2SE_OBJ_WOOD_DOOR_CLOSE_STOP:
|
||||
seStop(Z2SE_OBJ_WOOD_DOOR_CLOSE_STOP, 0);
|
||||
seStop(Z2SE_OBJ_WOOD_DOOR_ROLLOPEN, 0);
|
||||
seStop(Z2SE_OBJ_WOOD_DOOR_ROLLOPEN2, 0);
|
||||
seStop(Z2SE_OBJ_WOOD_DOOR_ROLLCLOSE, 0);
|
||||
break;
|
||||
case Z2SE_OBJ_WOOD_DOOR_ROLLOPEN:
|
||||
case Z2SE_OBJ_WOOD_DOOR_ROLLCLOSE:
|
||||
case Z2SE_OBJ_WOOD_DOOR_OPEN_STOP:
|
||||
seStop(Z2SE_OBJ_WOOD_DOOR_ROLLOPEN, 0);
|
||||
@@ -314,12 +280,13 @@ bool Z2SeMgr::seStart(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, s8 i_
|
||||
i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 41.0f, 0.4f, 0.3f, 1.0f,
|
||||
Z2Calc::CURVE_SIGN_2);
|
||||
break;
|
||||
case Z2SE_OBJ_L8_B_FOG_FLY:
|
||||
case Z2SE_OBJ_L8_B_FOG_FLY: {
|
||||
Vec tmp = Z2GetAudience()->getAudioCamPos(0);
|
||||
if (i_pos->y > tmp.y) {
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case Z2SE_OBJ_BLN_BREAK_S:
|
||||
case Z2SE_OBJ_BLN_BREAK_M:
|
||||
case Z2SE_OBJ_BLN_BREAK_L:
|
||||
@@ -354,157 +321,387 @@ bool Z2SeMgr::seStart(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, s8 i_
|
||||
i_soundID = Z2SE_OBJ_DARK_GATE_RIPPLE_WLF;
|
||||
}
|
||||
break;
|
||||
case Z2SE_OBJ_ARMOR_SWING:
|
||||
case Z2SE_OBJ_ARMOR_HIT:
|
||||
break;
|
||||
}
|
||||
|
||||
if (isLevelSe(i_soundID)) {
|
||||
return seStartLevel(i_soundID, i_pos, param_2, i_reverb, i_pitch,
|
||||
i_volume, i_pan, i_dolby, param_8);
|
||||
}
|
||||
|
||||
if (isSoundCulling(i_soundID)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
JAISoundHandle* handle = mSoundHandles.getFreeHandle();
|
||||
if (handle == NULL) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return Z2GetSoundStarter()->startSound(i_soundID, handle, (JGeometry::TVec3<f32>*)i_pos,
|
||||
param_2, i_reverb / 127.0f,
|
||||
i_pitch, i_volume, i_pan, i_dolby, 0);
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 803C9D98-803C9DF8 -00001 0060+00 1/1 0/0 0/0 .data @4619 */
|
||||
SECTION_DATA static void* lit_4619[24] = {
|
||||
(void*)(((char*)seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc) + 0xF78),
|
||||
(void*)(((char*)seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc) + 0xF78),
|
||||
(void*)(((char*)seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc) + 0xF78),
|
||||
(void*)(((char*)seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc) + 0xF78),
|
||||
(void*)(((char*)seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc) + 0xF84),
|
||||
(void*)(((char*)seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc) + 0xF90),
|
||||
(void*)(((char*)seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc) + 0xF9C),
|
||||
(void*)(((char*)seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc) + 0xFA8),
|
||||
(void*)(((char*)seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc) + 0xFB4),
|
||||
(void*)(((char*)seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc) + 0xFC0),
|
||||
(void*)(((char*)seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc) + 0xFCC),
|
||||
(void*)(((char*)seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc) + 0xFD8),
|
||||
(void*)(((char*)seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc) + 0x1028),
|
||||
(void*)(((char*)seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc) + 0x1028),
|
||||
(void*)(((char*)seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc) + 0x1028),
|
||||
(void*)(((char*)seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc) + 0x1028),
|
||||
(void*)(((char*)seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc) + 0x1028),
|
||||
(void*)(((char*)seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc) + 0x1028),
|
||||
(void*)(((char*)seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc) + 0xFE4),
|
||||
(void*)(((char*)seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc) + 0xFF0),
|
||||
(void*)(((char*)seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc) + 0xFFC),
|
||||
(void*)(((char*)seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc) + 0x1008),
|
||||
(void*)(((char*)seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc) + 0x1014),
|
||||
(void*)(((char*)seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc) + 0x1020),
|
||||
};
|
||||
|
||||
/* 804558E8-804558EC 003EE8 0004+00 1/1 0/0 0/0 .sdata2 @4586 */
|
||||
SECTION_SDATA2 static f32 lit_4586 = 25.0f;
|
||||
|
||||
/* 804558EC-804558F0 003EEC 0004+00 1/1 0/0 0/0 .sdata2 @4587 */
|
||||
SECTION_SDATA2 static f32 lit_4587 = 1.0f / 10.0f;
|
||||
|
||||
/* 804558F0-804558F4 003EF0 0004+00 1/1 0/0 0/0 .sdata2 @4588 */
|
||||
SECTION_SDATA2 static f32 lit_4588 = 10.0f;
|
||||
|
||||
/* 804558F4-804558F8 003EF4 0004+00 1/1 0/0 0/0 .sdata2 @4589 */
|
||||
SECTION_SDATA2 static f32 lit_4589 = 2.0f;
|
||||
|
||||
/* 804558F8-80455900 003EF8 0004+04 2/2 0/0 0/0 .sdata2 @4590 */
|
||||
SECTION_SDATA2 static f32 lit_4590[1 + 1 /* padding */] = {
|
||||
13.0f / 10.0f,
|
||||
/* padding */
|
||||
0.0f,
|
||||
};
|
||||
|
||||
/* 80455900-80455908 003F00 0008+00 1/1 0/0 0/0 .sdata2 @4591 */
|
||||
SECTION_SDATA2 static f64 lit_4591 = 0.7;
|
||||
|
||||
/* 80455908-80455910 003F08 0008+00 1/1 0/0 0/0 .sdata2 @4592 */
|
||||
SECTION_SDATA2 static f64 lit_4592 = 0.0006;
|
||||
|
||||
/* 80455910-80455918 003F10 0008+00 1/1 0/0 0/0 .sdata2 @4593 */
|
||||
SECTION_SDATA2 static f64 lit_4593 = 1.0;
|
||||
|
||||
/* 80455918-80455920 003F18 0008+00 1/1 0/0 0/0 .sdata2 @4594 */
|
||||
SECTION_SDATA2 static f64 lit_4594 = 0.0015;
|
||||
|
||||
/* 80455920-80455928 003F20 0008+00 1/1 0/0 0/0 .sdata2 @4595 */
|
||||
SECTION_SDATA2 static f64 lit_4595 = 0.005;
|
||||
|
||||
/* 80455928-80455930 003F28 0008+00 1/1 0/0 0/0 .sdata2 @4596 */
|
||||
SECTION_SDATA2 static f64 lit_4596 = 0.3;
|
||||
|
||||
/* 80455930-80455938 003F30 0008+00 1/1 0/0 0/0 .sdata2 @4597 */
|
||||
SECTION_SDATA2 static f64 lit_4597 = 0.001;
|
||||
|
||||
/* 80455938-8045593C 003F38 0004+00 1/1 0/0 0/0 .sdata2 @4598 */
|
||||
SECTION_SDATA2 static f32 lit_4598 = 4000.0f;
|
||||
|
||||
/* 8045593C-80455940 003F3C 0004+00 1/1 0/0 0/0 .sdata2 @4599 */
|
||||
SECTION_SDATA2 static f32 lit_4599 = 3500.0f;
|
||||
|
||||
/* 80455940-80455944 003F40 0004+00 1/1 0/0 0/0 .sdata2 @4600 */
|
||||
SECTION_SDATA2 static f32 lit_4600 = 26.0f;
|
||||
|
||||
/* 80455944-80455948 003F44 0004+00 1/1 0/0 0/0 .sdata2 @4601 */
|
||||
SECTION_SDATA2 static f32 lit_4601 = 3.0f / 5.0f;
|
||||
|
||||
/* 80455948-8045594C 003F48 0004+00 1/1 0/0 0/0 .sdata2 @4602 */
|
||||
SECTION_SDATA2 static f32 lit_4602 = 64.0f;
|
||||
|
||||
/* 8045594C-80455950 003F4C 0004+00 1/1 0/0 0/0 .sdata2 @4603 */
|
||||
SECTION_SDATA2 static f32 lit_4603 = 4500.0f;
|
||||
|
||||
/* 80455950-80455954 003F50 0004+00 1/1 0/0 0/0 .sdata2 @4604 */
|
||||
SECTION_SDATA2 static f32 lit_4604 = 40.0f;
|
||||
|
||||
/* 80455954-80455958 003F54 0004+00 1/1 0/0 0/0 .sdata2 @4605 */
|
||||
SECTION_SDATA2 static f32 lit_4605 = 120.0f;
|
||||
|
||||
/* 80455958-80455960 003F58 0004+04 1/1 0/0 0/0 .sdata2 @4606 */
|
||||
SECTION_SDATA2 static f32 lit_4606[1 + 1 /* padding */] = {
|
||||
5.0f,
|
||||
/* padding */
|
||||
0.0f,
|
||||
};
|
||||
|
||||
/* 80455960-80455968 003F60 0008+00 1/1 0/0 0/0 .sdata2 @4607 */
|
||||
SECTION_SDATA2 static f64 lit_4607 = 0.5;
|
||||
|
||||
/* 80455968-80455970 003F68 0008+00 1/1 0/0 0/0 .sdata2 @4608 */
|
||||
SECTION_SDATA2 static f64 lit_4608 = 3.0;
|
||||
|
||||
/* 80455970-80455978 003F70 0008+00 1/1 0/0 0/0 .sdata2 @4609 */
|
||||
SECTION_SDATA2 static u8 lit_4609[8] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
|
||||
/* 80455978-8045597C 003F78 0004+00 1/1 0/0 0/0 .sdata2 @4610 */
|
||||
SECTION_SDATA2 static f32 lit_4610 = 2000.0f;
|
||||
|
||||
/* 8045597C-80455980 003F7C 0004+00 1/1 0/0 0/0 .sdata2 @4611 */
|
||||
SECTION_SDATA2 static f32 lit_4611 = 5000.0f;
|
||||
|
||||
/* 80455980-80455984 003F80 0004+00 1/1 0/0 0/0 .sdata2 @4612 */
|
||||
SECTION_SDATA2 static f32 lit_4612 = 9.0f / 20.0f;
|
||||
|
||||
/* 80455984-80455988 003F84 0004+00 1/1 0/0 0/0 .sdata2 @4613 */
|
||||
SECTION_SDATA2 static f32 lit_4613 = 50.0f;
|
||||
|
||||
/* 80455988-8045598C 003F88 0004+00 1/1 0/0 0/0 .sdata2 @4614 */
|
||||
SECTION_SDATA2 static f32 lit_4614 = 600.0f;
|
||||
|
||||
/* 8045598C-80455990 003F8C 0004+00 1/1 0/0 0/0 .sdata2 @4615 */
|
||||
SECTION_SDATA2 static f32 lit_4615 = 90.0f;
|
||||
|
||||
/* 802AC50C-802AD8B0 2A6E4C 13A4+00 3/2 19/19 199/199 .text
|
||||
* seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc */
|
||||
bool Z2SeMgr::seStartLevel(JAISoundID param_0, Vec const* param_1, u32 param_2, s8 param_3,
|
||||
f32 param_4, f32 param_5, f32 param_6, f32 param_7, u8 param_8) {
|
||||
// NONMATCHING
|
||||
bool Z2SeMgr::seStartLevel(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, s8 i_reverb,
|
||||
f32 i_pitch, f32 i_volume, f32 i_pan, f32 i_dolby, u8 param_8) {
|
||||
if (param_8 != 1) {
|
||||
switch (i_soundID) {
|
||||
case Z2SE_OBJ_FIRE_BURNING:
|
||||
if (Z2GetStatusMgr()->getDemoStatus() == 2 || !Z2GetSceneMgr()->isInGame()) {
|
||||
return false;
|
||||
}
|
||||
// fallthrough
|
||||
case Z2SE_FAIRY_S_LV:
|
||||
case Z2SE_EN_ZZ_MV:
|
||||
case Z2SE_OBJ_L8_L_BALL_SW:
|
||||
case Z2SE_OBJ_GANON_BARRIER:
|
||||
case Z2SE_OBJ_CRVN_BURNING:
|
||||
setLevObjSE(i_soundID, const_cast<Vec*>(i_pos), i_reverb);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
switch (i_soundID) {
|
||||
case Z2SE_OBJ_FLAG_TRAILING:
|
||||
i_volume = Z2Calc::getParamByExp(param_2, 25.0f, 127.0f, 0.4f, 0.1f, 1.0f,
|
||||
Z2Calc::CURVE_SIGN_0);
|
||||
i_pitch = Z2Calc::getParamByExp(param_2, 25.0f, 127.0f, 0.4f, 0.7f, 1.2f,
|
||||
Z2Calc::CURVE_SIGN_0);
|
||||
break;
|
||||
case Z2SE_OBJ_BRIDGE_TRAILING:
|
||||
case Z2SE_OBJ_BROKENBRIDGE:
|
||||
i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 127.0f, 0.4f, 0.1f, 1.0f,
|
||||
Z2Calc::CURVE_SIGN_0);
|
||||
i_pitch = Z2Calc::getParamByExp(param_2, 0.0f, 127.0f, 0.4f, 0.7f, 1.2f,
|
||||
Z2Calc::CURVE_SIGN_0);
|
||||
break;
|
||||
case Z2SE_OBJ_BOOMSHTR_SWITCH:
|
||||
if (param_2 < 10) {
|
||||
param_2 = 10;
|
||||
}
|
||||
i_volume = Z2Calc::getParamByExp(param_2, 10.0f, 127.0f, 2.0f, 0.0f, 1.0f,
|
||||
Z2Calc::CURVE_SIGN_1);
|
||||
i_pitch = Z2Calc::getParamByExp(param_2, 10.0f, 127.0f, 2.0f, 0.7f, 1.2f,
|
||||
Z2Calc::CURVE_SIGN_1);
|
||||
break;
|
||||
case Z2SE_OBJ_FAN_WIND_S:
|
||||
modHeightAtCamera(&i_pos);
|
||||
break;
|
||||
case Z2SE_OBJ_FAN_ROLL_S:
|
||||
case Z2SE_OBJ_FAN_ROLL_M:
|
||||
case Z2SE_OBJ_FAN_ROLL_L:
|
||||
if (param_2 < 10) {
|
||||
param_2 = 10;
|
||||
}
|
||||
i_volume = Z2Calc::getParamByExp(param_2, 10.0f, 127.0f, 2.0f, 0.0f, 1.0f,
|
||||
Z2Calc::CURVE_SIGN_1);
|
||||
i_pitch = Z2Calc::getParamByExp(param_2, 10.0f, 127.0f, 2.0f, 0.7f, 1.2f,
|
||||
Z2Calc::CURVE_SIGN_1);
|
||||
break;
|
||||
case Z2SE_OBJ_AMI_ROLL:
|
||||
if (param_2 < 10) {
|
||||
param_2 = 10;
|
||||
}
|
||||
i_volume = Z2Calc::getParamByExp(param_2, 10.0f, 127.0f, 2.0f, 0.0f, 1.0f,
|
||||
Z2Calc::CURVE_SIGN_1);
|
||||
i_pitch = Z2Calc::getParamByExp(param_2, 10.0f, 127.0f, 2.0f, 0.7f, 1.2f,
|
||||
Z2Calc::CURVE_SIGN_1);
|
||||
break;
|
||||
case Z2SE_OBJ_BRDG_MOVE:
|
||||
i_pitch = Z2Calc::getParamByExp(param_2, 0.0f, 127.0f, 2.0f, 0.7f, 1.2f,
|
||||
Z2Calc::CURVE_SIGN_1);
|
||||
break;
|
||||
case Z2SE_ENV_WIND_SARUDAN:
|
||||
i_volume = Z2Calc::getParamByExp(param_2, 25.0f, 127.0f, 0.4f, 0.4f, 1.0f,
|
||||
Z2Calc::CURVE_SIGN_0);
|
||||
i_pitch = Z2Calc::getParamByExp(param_2, 25.0f, 127.0f, 0.4f, 0.8f, 1.0f,
|
||||
Z2Calc::CURVE_SIGN_0);
|
||||
break;
|
||||
case Z2SE_OBJ_CHANDLV9_SWING:
|
||||
if (param_2 < 10) {
|
||||
param_2 = 10;
|
||||
}
|
||||
i_volume = Z2Calc::getParamByExp(param_2, 10.0f, 127.0f, 2.0f, 0.0f, 1.0f,
|
||||
Z2Calc::CURVE_SIGN_1);
|
||||
i_pitch = Z2Calc::getParamByExp(param_2, 10.0f, 127.0f, 2.0f, 0.7f, 1.2f,
|
||||
Z2Calc::CURVE_SIGN_1);
|
||||
break;
|
||||
case Z2SE_OBJ_BOMB_HOUSE_BURN:
|
||||
if (param_2 > 300) {
|
||||
seStartLevel(Z2SE_OBJ_BOMB_HOUSE_BURN_S, NULL, param_2, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
|
||||
}
|
||||
if (param_2 > 500) {
|
||||
i_volume = 1.0f;
|
||||
i_pitch = 1.3f;
|
||||
} else {
|
||||
i_volume = param_2 * 0.0006 + 0.7;
|
||||
i_pitch = param_2 * 0.0006 + 1.0;
|
||||
}
|
||||
break;
|
||||
case Z2SE_OBJ_BOMB_HOUSE_BURN_S:
|
||||
if (param_2 > 500) {
|
||||
i_volume = 1.0f;
|
||||
i_pitch = (param_2 - 500) * 0.0015 + 1.0;
|
||||
} else if (param_2 < 300) {
|
||||
i_volume = 0.0f;
|
||||
} else {
|
||||
i_volume = (param_2 - 300) * 0.005;
|
||||
}
|
||||
break;
|
||||
case Z2SE_OBJ_WTR_CLMN_UP:
|
||||
if (param_2 <= 500) {
|
||||
i_pitch = 0.8f;
|
||||
} else if (param_2 > 500 && param_2 <= 1000) {
|
||||
i_pitch = 1.0f;
|
||||
} else if (param_2 > 1000 && param_2 <= 1500) {
|
||||
i_pitch = 1.0f;
|
||||
} else {
|
||||
i_pitch = 1.2f;
|
||||
}
|
||||
modHeightAtCamera(&i_pos);
|
||||
break;
|
||||
case Z2SE_OBJ_WTR_CLMN_DOWN:
|
||||
if (param_2 > 700) {
|
||||
i_pitch = 1.0f;
|
||||
} else {
|
||||
i_pitch = param_2 * 0.001 + 0.3;
|
||||
}
|
||||
modHeightAtCamera(&i_pos);
|
||||
break;
|
||||
case Z2SE_OBJ_STN_SPRL_RAIL:
|
||||
case Z2SE_OBJ_STN_SPRL_RAIL_DW:
|
||||
modHeightAtCamera(&i_pos);
|
||||
break;
|
||||
case Z2SE_OBJ_SPNR_GEAR_S:
|
||||
i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 4000.0f, 0.4f, 0.3f, 1.0f,
|
||||
Z2Calc::CURVE_SIGN_0);
|
||||
i_pitch = Z2Calc::getParamByExp(param_2, 0.0f, 4000.0f, 0.4f, 0.7f, 1.2f,
|
||||
Z2Calc::CURVE_SIGN_0);
|
||||
break;
|
||||
case Z2SE_OBJ_SPNR_GEAR_L:
|
||||
i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 3500.0f, 0.4f, 0.3f, 1.0f,
|
||||
Z2Calc::CURVE_SIGN_0);
|
||||
i_pitch = Z2Calc::getParamByExp(param_2, 0.0f, 3500.0f, 0.4f, 0.7f, 1.2f,
|
||||
Z2Calc::CURVE_SIGN_0);
|
||||
break;
|
||||
case Z2SE_OBJ_TOGE_SPIN:
|
||||
i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 26.0f, 0.4f, 0.6f, 1.0f,
|
||||
Z2Calc::CURVE_SIGN_0);
|
||||
i_pitch = Z2Calc::getParamByExp(param_2, 0.0f, 26.0f, 0.4f, 0.8f, 1.2f,
|
||||
Z2Calc::CURVE_SIGN_0);
|
||||
break;
|
||||
case Z2SE_OBJ_STN_WL_RL:
|
||||
case Z2SE_OBJ_STN_WL_RL_OP:
|
||||
i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 64.0f, 0.4f, 0.3f, 1.0f,
|
||||
Z2Calc::CURVE_SIGN_0);
|
||||
i_pitch = Z2Calc::getParamByExp(param_2, 0.0f, 64.0f, 0.4f, 0.6f, 1.2f,
|
||||
Z2Calc::CURVE_SIGN_0);
|
||||
break;
|
||||
case Z2SE_OBJ_SPNR_SW_RL:
|
||||
i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 4500.0f, 0.4f, 0.6f, 1.0f,
|
||||
Z2Calc::CURVE_SIGN_0);
|
||||
i_pitch = Z2Calc::getParamByExp(param_2, 0.0f, 4500.0f, 0.4f, 0.7f, 1.2f,
|
||||
Z2Calc::CURVE_SIGN_0);
|
||||
break;
|
||||
case Z2SE_OBJ_TOGE_ROLL_MV:
|
||||
i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 40.0f, 0.4f, 0.0f, 1.0f,
|
||||
Z2Calc::CURVE_SIGN_0);
|
||||
i_pitch = Z2Calc::getParamByExp(param_2, 0.0f, 40.0f, 0.4f, 0.8f, 1.2f,
|
||||
Z2Calc::CURVE_SIGN_0);
|
||||
break;
|
||||
case Z2SE_OBJ_L8_L_TORCH_SW:
|
||||
i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 120.0f, 0.4f, 0.0f, 1.0f,
|
||||
Z2Calc::CURVE_SIGN_0);
|
||||
i_pitch = Z2Calc::getParamByExp(param_2, 0.0f, 120.0f, 0.4f, 0.9f, 1.0f,
|
||||
Z2Calc::CURVE_SIGN_0);
|
||||
break;
|
||||
case Z2SE_OBJ_L8_B_FOG_STAY:
|
||||
i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 100.0f, 0.4f, 0.0f, 1.0f,
|
||||
Z2Calc::CURVE_SIGN_0);
|
||||
break;
|
||||
case Z2SE_OBJ_L8_B_FALL_S:
|
||||
i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 100.0f, 0.4f, 0.0f, 1.0f,
|
||||
Z2Calc::CURVE_SIGN_0);
|
||||
break;
|
||||
case Z2SE_OBJ_L8_B_FALL_L:
|
||||
i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 100.0f, 0.4f, 0.0f, 1.0f,
|
||||
Z2Calc::CURVE_SIGN_0);
|
||||
break;
|
||||
case Z2SE_OBJ_L8_L_LIFT_MV:
|
||||
i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 5.0f, 0.4f, 0.5f, 1.0f,
|
||||
Z2Calc::CURVE_SIGN_0);
|
||||
i_pitch = Z2Calc::getParamByExp(param_2, 0.0f, 5.0f, 0.4f, 0.7f, 1.0f,
|
||||
Z2Calc::CURVE_SIGN_0);
|
||||
break;
|
||||
case Z2SE_OBJ_AMATA_CRK:
|
||||
i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 400.0f, 0.4f, 0.5f, 1.0f,
|
||||
Z2Calc::CURVE_SIGN_0);
|
||||
i_pitch = Z2Calc::getParamByExp(param_2, 0.0f, 400.0f, 0.4f, 0.8f, 1.1f,
|
||||
Z2Calc::CURVE_SIGN_0);
|
||||
break;
|
||||
case Z2SE_OBJ_HYRULE_BARRIER:
|
||||
if (Z2GetSceneMgr()->getCurrentSceneNum() != 0x16) {
|
||||
break;
|
||||
}
|
||||
// fallthrough
|
||||
case Z2SE_OBJ_DARK_GATE:
|
||||
if (!Z2GetSceneMgr()->isInDarkness() && i_pos != NULL
|
||||
&& Z2GetLink() != NULL && Z2GetLink()->getCurrentPos() != NULL)
|
||||
{
|
||||
f32 dist = sqrtf(VECSquareDistance(i_pos, Z2GetLink()->getCurrentPos()));
|
||||
f32 gate_volume = 1.0f;
|
||||
if (dist < 2000.0f) {
|
||||
gate_volume = 0.0f;
|
||||
} else if (dist < 4000.0f) {
|
||||
gate_volume = Z2Calc::getParamByExp(dist, 2000.0f, 5000.0f, 0.45f, 0.0f, 1.0f,
|
||||
Z2Calc::CURVE_SIGN_0);
|
||||
}
|
||||
Z2GetSeqMgr()->setTwilightGateVol(gate_volume);
|
||||
}
|
||||
break;
|
||||
case Z2SE_OBJ_HASU_WTR:
|
||||
i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 50.0f, 0.4f, 0.5f, 1.0f,
|
||||
Z2Calc::CURVE_SIGN_0);
|
||||
break;
|
||||
case Z2SE_ENV_PEOPLE_CROWD: {
|
||||
f32 scale = 1.0f;
|
||||
if (Z2GetSceneMgr()->getCurrentRoomNum() == 3) {
|
||||
scale = Z2Calc::linearTransform(J3DUD::JMAAbs(Z2GetLink()->getCurrentPos()->x),
|
||||
600.0f, 3500.0f, 1.0f, 0.1f, false);
|
||||
}
|
||||
switch (Z2GetStatusMgr()->getHour()) {
|
||||
case 0:
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
scale *= 0.1f;
|
||||
break;
|
||||
case 4:
|
||||
scale *= 0.2f;
|
||||
break;
|
||||
case 5:
|
||||
scale *= 0.3f;
|
||||
break;
|
||||
case 6:
|
||||
scale *= 0.4f;
|
||||
break;
|
||||
case 7:
|
||||
scale *= 0.5f;
|
||||
break;
|
||||
case 8:
|
||||
scale *= 0.6f;
|
||||
break;
|
||||
case 9:
|
||||
scale *= 0.7f;
|
||||
break;
|
||||
case 10:
|
||||
scale *= 0.8f;
|
||||
break;
|
||||
case 11:
|
||||
scale *= 0.9f;
|
||||
break;
|
||||
case 18:
|
||||
scale *= 0.9f;
|
||||
break;
|
||||
case 19:
|
||||
scale *= 0.8f;
|
||||
break;
|
||||
case 20:
|
||||
scale *= 0.7f;
|
||||
break;
|
||||
case 21:
|
||||
scale *= 0.5f;
|
||||
break;
|
||||
case 22:
|
||||
scale *= 0.4f;
|
||||
break;
|
||||
case 23:
|
||||
scale *= 0.2f;
|
||||
break;
|
||||
}
|
||||
i_volume = Z2Calc::getParamByExp(mCrowdSize * scale, 5.0f, 90.0f, 0.2f, 0.0f, 1.0f,
|
||||
Z2Calc::CURVE_SIGN_0);
|
||||
break;
|
||||
}
|
||||
case Z2SE_AL_COPYROD_WAIT:
|
||||
param_2++;
|
||||
break;
|
||||
}
|
||||
|
||||
for (int i = 0; i < 24; i++) {
|
||||
if (mSoundHandles[i] && mSoundHandles[i]->getID() == i_soundID
|
||||
&& i_pos == (Vec*)mSoundHandles[i]->getUserData())
|
||||
{
|
||||
if (param_8 == 1) {
|
||||
i_volume = Z2GetAudience()->calcOffMicSound(i_volume);
|
||||
}
|
||||
|
||||
mSoundHandles[i]->updateLifeTime(1);
|
||||
|
||||
if (i_pos != NULL) {
|
||||
mSoundHandles[i]->setPos((JGeometry::TVec3<f32>)*i_pos);
|
||||
}
|
||||
|
||||
if (param_2 != 0) {
|
||||
JAISoundHandle* handle = &mSoundHandles[i];
|
||||
Z2GetSoundStarter()->setPortData(handle, 6, param_2, -1);
|
||||
}
|
||||
|
||||
if (i_reverb != 0) {
|
||||
mSoundHandles[i]->getAuxiliary().moveFxMix(i_reverb / 127.0f, 0);
|
||||
}
|
||||
if (i_pitch != 1.0f) {
|
||||
mSoundHandles[i]->getAuxiliary().movePitch(i_pitch, 0);
|
||||
}
|
||||
if (i_volume != 1.0f) {
|
||||
mSoundHandles[i]->getAuxiliary().moveVolume(i_volume, 0);
|
||||
}
|
||||
if (i_pan != -1.0f) {
|
||||
mSoundHandles[i]->getAuxiliary().movePan(i_pan, 0);
|
||||
}
|
||||
if (i_dolby != -1.0f) {
|
||||
mSoundHandles[i]->getAuxiliary().moveDolby(i_dolby, 0);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if (isSoundCulling(i_soundID)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
JAISoundHandle* handle = mSoundHandles.getFreeHandle();
|
||||
if (handle == NULL) {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ret = Z2GetSoundStarter()->startSound(i_soundID, handle, (JGeometry::TVec3<f32>*)i_pos,
|
||||
param_2, i_reverb / 127.0f, i_pitch, i_volume,
|
||||
i_pan, i_dolby, false);
|
||||
|
||||
if (handle != NULL && *handle) {
|
||||
if (i_soundID == Z2SE_OBJ_BOMB_HOUSE_BURN) {
|
||||
Z2GetSeqMgr()->bgmStart(Z2BGM_EVENT02, 0, 0);
|
||||
}
|
||||
|
||||
if (param_8 == 1) {
|
||||
Z2GetAudience()->calcOffMicSound(i_volume);
|
||||
}
|
||||
|
||||
(*handle)->setUserData((u32)i_pos);
|
||||
|
||||
if (ret) {
|
||||
(*handle)->setLifeTime(1, false);
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* 802AD8B0-802AD94C 2A81F0 009C+00 1/1 0/0 4/4 .text seStop__7Z2SeMgrF10JAISoundIDUl */
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//
|
||||
|
||||
#include "Z2AudioLib/Z2SeqMgr.h"
|
||||
#include "Z2AudioLib/Z2Creature.h"
|
||||
#include "Z2AudioLib/Z2LinkMgr.h"
|
||||
#include "Z2AudioLib/Z2Param.h"
|
||||
#include "Z2AudioLib/Z2SceneMgr.h"
|
||||
#include "Z2AudioLib/Z2SoundMgr.h"
|
||||
|
||||
@@ -19,7 +19,6 @@ void Z2SoundHandles::initHandlesPool(u8 pNumHandles) {
|
||||
}
|
||||
|
||||
/* 802AB120-802AB200 2A5A60 00E0+00 1/1 1/1 0/0 .text deleteHandlesPool__14Z2SoundHandlesFv */
|
||||
// NONMATCHING JASPoolAllocObject<_> locations
|
||||
void Z2SoundHandles::deleteHandlesPool() {
|
||||
JSULink<Z2SoundHandlePool>* link;
|
||||
while (link = getFirst(), link != NULL) {
|
||||
@@ -60,7 +59,6 @@ Z2SoundHandlePool* Z2SoundHandles::getHandleUserData(u32 pUserData) {
|
||||
|
||||
/* 802AB2D8-802AB3D0 2A5C18 00F8+00 0/0 3/3 0/0 .text getFreeHandle__14Z2SoundHandlesFv
|
||||
*/
|
||||
// NONMATCHING JASPoolAllocObject<_> locations
|
||||
Z2SoundHandlePool* Z2SoundHandles::getFreeHandle() {
|
||||
JSULink<Z2SoundHandlePool>* link;
|
||||
for (link = getFirst(); link != NULL; link = link->getNext()) {
|
||||
@@ -133,7 +131,6 @@ bool Z2SoundHandles::isActive() const {
|
||||
|
||||
/* 802AB538-802AB64C 2A5E78 0114+00 0/0 1/1 0/0 .text
|
||||
* setPos__14Z2SoundHandlesFRCQ29JGeometry8TVec3<f> */
|
||||
// NONMATCHING JASPoolAllocObject<_> locations
|
||||
void Z2SoundHandles::setPos(JGeometry::TVec3<f32> const& param_0) {
|
||||
JSULink<Z2SoundHandlePool>* link;
|
||||
for (link = getFirst(); link != NULL; link = link->getNext()) {
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include "Z2AudioLib/Z2SeqMgr.h"
|
||||
#include "Z2AudioLib/Z2Calc.h"
|
||||
#include "Z2AudioLib/Z2SceneMgr.h"
|
||||
#include "Z2AudioLib/Z2LinkMgr.h"
|
||||
|
||||
/* 802BF920-802BF980 2BA260 0060+00 0/0 1/1 0/0 .text __ct__13Z2SoundObjMgrFv */
|
||||
Z2SoundObjMgr::Z2SoundObjMgr() : JASGlobalInstance<Z2SoundObjMgr>(this) {
|
||||
|
||||
+695
-438
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user