// // Generated By: dol2asm // Translation Unit: Z2SeMgr // #include "Z2AudioLib/Z2SeMgr.h" #include "Z2AudioLib/Z2Audience.h" #include "Z2AudioLib/Z2SoundMgr.h" #include "Z2AudioLib/Z2SpeechMgr2.h" #include "Z2AudioLib/Z2StatusMgr.h" #include "dol2asm.h" #include "global.h" // // Types: // struct Z2CreatureLink { static u8 mLinkPtr[4 + 4 /* padding */]; }; // // 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(); // // External References: // extern "C" void __dt__14JAISoundHandleFv(); extern "C" void __dt__12Z2MultiSeObjFv(); extern "C" void stop__16JAISeCategoryMgrFUl(); extern "C" void releaseSound__14JAISoundHandleFv(); extern "C" void stop__8JAISoundFUl(); extern "C" void getHandleSoundID__15JAISoundHandlesF10JAISoundID(); extern "C" void getFreeHandle__15JAISoundHandlesFv(); extern "C" void moveVolume__18JAISoundParamsMoveFfUl(); extern "C" void movePitch__18JAISoundParamsMoveFfUl(); extern "C" void moveFxMix__18JAISoundParamsMoveFfUl(); extern "C" void movePan__18JAISoundParamsMoveFfUl(); extern "C" void moveDolby__18JAISoundParamsMoveFfUl(); extern "C" void __ct__14JAISoundHandleFv(); extern "C" void linearTransform__6Z2CalcFfffffb(); extern "C" void getParamByExp__6Z2CalcFffffffQ26Z2Calc9CurveSign(); extern "C" void stopSoundID__10Z2SoundMgrF10JAISoundID(); extern "C" void multiVolumeSoundID__10Z2SoundMgrF10JAISoundIDf(); extern "C" void setPortData__14Z2SoundStarterFP14JAISoundHandleUlUsSc(); extern "C" void bgmStart__8Z2SeqMgrFUlUll(); extern "C" void menuIn__11Z2StatusMgrFv(); extern "C" void menuOut__11Z2StatusMgrFv(); extern "C" void isMovieDemo__11Z2StatusMgrFv(); extern "C" void calcOffMicSound__10Z2AudienceFf(); extern "C" void convertAbsToRel__10Z2AudienceFR3VecP3Veci(); extern "C" void calcRelPosVolume__10Z2AudienceFRC3Vecfi(); extern "C" void calcRelPosPan__10Z2AudienceFRC3Veci(); extern "C" void calcRelPosDolby__10Z2AudienceFRC3Veci(); extern "C" void playOneShotVoice__12Z2SpeechMgr2FUcUsP3VecSc(); extern "C" void __dl__FPv(); extern "C" void __construct_array(); extern "C" void __cvt_fp2unsigned(); extern "C" void _savegpr_26(); extern "C" void _savegpr_27(); extern "C" void _savegpr_29(); extern "C" void _restgpr_26(); extern "C" void _restgpr_27(); extern "C" void _restgpr_29(); extern "C" f32 VOL_SE_SYSTEM_DEFAULT__7Z2Param; extern "C" f32 VOL_SE_LINK_VOICE_DEFAULT__7Z2Param; extern "C" f32 VOL_SE_LINK_MOTION_DEFAULT__7Z2Param; extern "C" f32 VOL_SE_LINK_FOOTNOTE_DEFAULT__7Z2Param; extern "C" f32 VOL_SE_CHAR_VOICE_DEFAULT__7Z2Param; extern "C" f32 VOL_SE_CHAR_MOVE_DEFAULT__7Z2Param; extern "C" f32 VOL_SE_OBJECT_DEFAULT__7Z2Param; extern "C" f32 VOL_SE_ATMOSPHERE_DEFAULT__7Z2Param; extern "C" f32 VOL_SE_SYSTEM_TALKING__7Z2Param; extern "C" f32 VOL_SE_LINK_VOICE_TALKING__7Z2Param; extern "C" f32 VOL_SE_LINK_MOTION_TALKING__7Z2Param; extern "C" f32 VOL_SE_LINK_FOOTNOTE_TALKING__7Z2Param; extern "C" f32 VOL_SE_CHAR_VOICE_TALKING__7Z2Param; extern "C" f32 VOL_SE_CHAR_MOVE_TALKING__7Z2Param; extern "C" f32 VOL_SE_OBJECT_TALKING__7Z2Param; extern "C" f32 VOL_SE_ATMOSPHERE_TALKING__7Z2Param; extern "C" f32 VOL_SE_SYSTEM_PAUSING__7Z2Param; extern "C" f32 VOL_SE_LINK_VOICE_PAUSING__7Z2Param; extern "C" f32 VOL_SE_LINK_MOTION_PAUSING__7Z2Param; extern "C" f32 VOL_SE_LINK_FOOTNOTE_PAUSING__7Z2Param; extern "C" f32 VOL_SE_CHAR_VOICE_PAUSING__7Z2Param; extern "C" f32 VOL_SE_CHAR_MOVE_PAUSING__7Z2Param; extern "C" f32 VOL_SE_OBJECT_PAUSING__7Z2Param; extern "C" f32 VOL_SE_ATMOSPHERE_PAUSING__7Z2Param; extern "C" extern u8 data_80450B44[4]; extern "C" extern u8 data_80450B60[4]; extern "C" extern u8 data_80450B70[4]; extern "C" extern u8 data_80450B74[4]; extern "C" extern u8 data_80450B7C[4]; extern "C" extern u8 data_80450B80[4]; extern "C" extern u8 data_80450B84[4]; extern "C" u8 mLinkPtr__14Z2CreatureLink[4 + 4 /* padding */]; extern "C" extern u8 __OSReport_disable; // // Declarations: // /* 802AB64C-802AB710 2A5F8C 00C4+00 0/0 1/1 0/0 .text __ct__7Z2SeMgrFv */ Z2SeMgr::Z2SeMgr() : JASGlobalInstance(this), mSoundHandles(mSoundHandle, 0x18) { field_0x3c0 = 0; field_0x3c1 = 0; field_0x3c2 = 0; field_0x3c3 = 0; field_0x3c4 = 0; field_0x3c5 = 0; field_0x3c9 = 0; field_0x3ca = 0; field_0x3cb = 0; mCrowdSize = 0; } Z2MultiSeObj::Z2MultiSeObj() { mSoundID = 0xFFFFFFFF; field_0x20 = 0; } /* 802AB750-802AB80C 2A6090 00BC+00 0/0 1/1 0/0 .text initSe__7Z2SeMgrFv */ void Z2SeMgr::initSe() { for (u8 i = 0; i < 10; i++) { mLevelObjSe[i].resetMultiSePos(); mLevelObjSe[i].mSoundID = 0xffffffff; mLevelObjSe[i].field_0x20 = 0; } mLevelObjectSeCount = 0; for (u8 i = 0; i < 10; i++) { mMultiTriggerSe[i].resetMultiSePos(); mMultiTriggerSe[i].mSoundID = 0xffffffff; mMultiTriggerSe[i].field_0x20 = 0; } mMultiTriggerSeCount = 0; resetModY(); } void Z2SeMgr::resetModY() { for (int i = 0; i < 8; i++) { mModY[i] = NULL; } } /* 802AB830-802AB93C 2A6170 010C+00 1/1 0/0 0/0 .text modHeightAtCamera__7Z2SeMgrFPPC3Vec */ void Z2SeMgr::modHeightAtCamera(Vec const** param_0) { if (*param_0 != NULL) { int idx = 9999; for (int i = 0; i < 8; i++) { if (mModY[i] == *param_0) { idx = i; break; } } if (idx == 9999) { int i; for (i = 0; i < 8; i++) { if (mModY[i] == NULL) { idx = i; mModY[i] = *param_0; break; } } if (i == 8) { return; } } field_0x340[idx] = **param_0; Vec cam_pos = Z2GetAudience()->getAudioCamPos(); if (field_0x340[idx].y > cam_pos.y) { field_0x340[idx].y = cam_pos.y; } *param_0 = &field_0x340[idx]; } } void Z2SeMgr::incrCrowdSize() { mCrowdSize++; if (mCrowdSize > 100) mCrowdSize = 100; } void Z2SeMgr::decrCrowdSize() { mCrowdSize--; //! @bug probably copypasta from incrCrowdSize(), but semantically it's still correct: //! mCrowdSize is a u8, so an underflow would result in mCrowdSize > 100, triggering the clamp. if (mCrowdSize > 100) mCrowdSize = 0; } /* ############################################################################################## */ /* 80455870-80455874 003E70 0004+00 1/1 0/0 0/0 .sdata2 @4038 */ SECTION_SDATA2 static f32 lit_4038 = 10000.0f; /* 80455874-80455878 003E74 0004+00 2/2 0/0 0/0 .sdata2 @4039 */ SECTION_SDATA2 static f32 lit_4039 = 100.0f; /* 80455878-8045587C 003E78 0004+00 11/11 0/0 0/0 .sdata2 @4040 */ SECTION_SDATA2 static u8 lit_4040[4] = { 0x00, 0x00, 0x00, 0x00, }; /* 8045587C-80455880 003E7C 0004+00 2/2 0/0 0/0 .sdata2 @4041 */ SECTION_SDATA2 static f32 lit_4041 = 1.0f / 5.0f; /* 80455880-80455884 003E80 0004+00 8/8 0/0 0/0 .sdata2 @4042 */ SECTION_SDATA2 static f32 lit_4042 = 1.0f; /* 80455884-80455888 003E84 0004+00 3/3 0/0 0/0 .sdata2 @4043 */ SECTION_SDATA2 static f32 lit_4043 = 7.0f / 10.0f; /* 80455888-8045588C 003E88 0004+00 1/1 0/0 0/0 .sdata2 @4044 */ SECTION_SDATA2 static f32 lit_4044 = 1.25f; /* 8045588C-80455890 003E8C 0004+00 2/2 0/0 0/0 .sdata2 @4045 */ SECTION_SDATA2 static f32 lit_4045 = 2.0f / 5.0f; /* 80455890-80455894 003E90 0004+00 1/1 0/0 0/0 .sdata2 @4046 */ SECTION_SDATA2 static f32 lit_4046 = 1.5f; /* 80455894-80455898 003E94 0004+00 1/1 0/0 0/0 .sdata2 @4047 */ SECTION_SDATA2 static f32 lit_4047 = 35.0f; /* 80455898-8045589C 003E98 0004+00 1/1 0/0 0/0 .sdata2 @4048 */ SECTION_SDATA2 static f32 lit_4048 = 261.0f; /* 8045589C-804558A0 003E9C 0004+00 1/1 0/0 0/0 .sdata2 @4049 */ SECTION_SDATA2 static f32 lit_4049 = 1.0f / 20.0f; /* 804558A0-804558A4 003EA0 0004+00 1/1 0/0 0/0 .sdata2 @4050 */ SECTION_SDATA2 static f32 lit_4050 = 7.0f / 5.0f; /* 804558A4-804558A8 003EA4 0004+00 1/1 0/0 0/0 .sdata2 @4051 */ SECTION_SDATA2 static f32 lit_4051 = 47.0f; /* 804558A8-804558AC 003EA8 0004+00 5/5 0/0 0/0 .sdata2 @4052 */ SECTION_SDATA2 static f32 lit_4052 = 0.5f; /* 804558AC-804558B0 003EAC 0004+00 2/2 0/0 0/0 .sdata2 @4053 */ SECTION_SDATA2 static f32 lit_4053 = 9.0f / 10.0f; /* 804558B0-804558B4 003EB0 0004+00 1/1 0/0 0/0 .sdata2 @4054 */ SECTION_SDATA2 static f32 lit_4054 = 41.0f; /* 804558B4-804558B8 003EB4 0004+00 2/2 0/0 0/0 .sdata2 @4055 */ SECTION_SDATA2 static f32 lit_4055 = 3.0f / 10.0f; /* 804558B8-804558BC 003EB8 0004+00 3/3 0/0 0/0 .sdata2 @4056 */ SECTION_SDATA2 static f32 lit_4056 = -1.0f; /* 804558BC-804558C0 003EBC 0004+00 2/2 0/0 0/0 .sdata2 @4057 */ SECTION_SDATA2 static f32 lit_4057 = 400.0f; /* 804558C0-804558C4 003EC0 0004+00 2/2 0/0 0/0 .sdata2 @4058 */ SECTION_SDATA2 static f32 lit_4058 = 4.0f / 5.0f; /* 804558C4-804558C8 003EC4 0004+00 2/2 0/0 0/0 .sdata2 @4059 */ SECTION_SDATA2 static f32 lit_4059 = 11.0f / 10.0f; /* 804558C8-804558CC 003EC8 0004+00 1/1 0/0 0/0 .sdata2 @4060 */ SECTION_SDATA2 static f32 lit_4060 = 15.0f; /* 804558CC-804558D0 003ECC 0004+00 1/1 0/0 0/0 .sdata2 @4061 */ SECTION_SDATA2 static f32 lit_4061 = 60.0f; /* 804558D0-804558D4 003ED0 0004+00 2/2 0/0 0/0 .sdata2 @4062 */ SECTION_SDATA2 static f32 lit_4062 = 127.0f; /* 804558D4-804558D8 003ED4 0004+00 2/2 0/0 0/0 .sdata2 @4063 */ SECTION_SDATA2 static f32 lit_4063 = 6.0f / 5.0f; /* 804558D8-804558E0 003ED8 0008+00 2/2 0/0 0/0 .sdata2 @4067 */ SECTION_SDATA2 static f64 lit_4067 = 4503599627370496.0 /* cast u32 to float */; /* 804558E0-804558E8 003EE0 0008+00 2/2 0/0 0/0 .sdata2 @4070 */ SECTION_SDATA2 static f64 lit_4070 = 4503601774854144.0 /* cast s32 to float */; /* 802AB984-802AC50C 2A62C4 0B88+00 1/1 196/196 549/549 .text * seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc */ #ifdef 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: case Z2SE_OBJ_L8_STAIR_MV_UP: case Z2SE_OBJ_L8_STAIR_MV_DW: case Z2SE_OBJ_L8_STAIR_ST_UP: case Z2SE_OBJ_L8_STAIR_ST_DW: case Z2SE_OBJ_L8_L_BALL_SW_ON: case Z2SE_OBJ_L8_L_LIFT_ON: case Z2SE_OBJ_GANON_BARRIER_APPR: setMultiTriggerSE(i_soundID, const_cast(i_pos), i_reverb); return false; } } switch (i_soundID) { case Z2SE_QUIT_GAME: Z2GetStatusMgr()->menuOut(); break; case Z2SE_OBJ_DOOR_STEEL_BAR: seStop(Z2SE_OBJ_DOOR_STEEL_BAR, 0); break; case JA_SE_OBJ_STN_DOOR_MOVE_U: 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_STOP_D: seStop(JA_SE_OBJ_STN_DOOR_STOP_D, 0); seStop(JA_SE_OBJ_STN_DOOR_MOVE_D, 0); break; case JA_SE_OBJ_STN_DOOR_MOVE_D: case JA_SE_OBJ_STN_DOOR_STOP_U: seStop(JA_SE_OBJ_STN_DOOR_MOVE_U, 0); seStop(JA_SE_OBJ_STN_DOOR_MOVE_D, 0); break; case Z2SE_OBJ_WOOD_DOOR_ROLLOPEN2: case Z2SE_OBJ_WOOD_DR_OP_MDN: case Z2SE_OBJ_WOOD_DR_OP_MDN_FX: 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_CLOSE_STOP: seStop(Z2SE_OBJ_WOOD_DOOR_CLOSE_STOP, 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); seStop(Z2SE_OBJ_WOOD_DOOR_ROLLOPEN2, 0); seStop(Z2SE_OBJ_WOOD_DOOR_ROLLCLOSE, 0); break; case Z2SE_SY_DUMMY: case Z2SE_OBJ_LUPY_BOUND: case Z2SE_OBJ_MAGIC_POT_BOUND: case Z2SE_OBJ_ARROW_BOUND: if (param_2 >= 100) { param_2 = 100; } if (param_2 == 0) { return false; } param_2 = param_2 * param_2; i_volume = param_2 / 10000.0f; break; case Z2SE_OBJ_BOMB_BOUND: if (i_volume >= 100.0f) { i_volume = 100.0f; } if (i_volume <= 0.0f) { return false; } i_volume = (i_volume * i_volume) / 10000.0f; break; case Z2SE_OBJ_KEY_BOUND: if (param_2 == 0) { return false; } i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 100.0f, 0.2f, 0.0f, 1.0f, Z2Calc::CURVE_SIGN_0); break; case Z2SE_MAGIC_METER_DEC: if (mSoundHandles.getHandleSoundID(Z2SE_MAGIC_METER_DEC) != NULL || mSoundHandles.getHandleSoundID(Z2SE_MAGIC_METER_FINISH) != NULL) { return false; } break; case Z2SE_MAGIC_METER_FINISH: seStop(Z2SE_MAGIC_METER_DEC, 0); break; case Z2SE_ITEM_RING_IN: case Z2SE_SY_MENU_IN: case Z2SE_SY_MAP_OPEN_L: Z2GetStatusMgr()->menuIn(); break; case Z2SE_ITEM_RING_OUT: case Z2SE_SY_MENU_OUT: case Z2SE_SY_CONTINUE_OK: case Z2SE_SY_MAP_CLOSE_L: Z2GetStatusMgr()->menuOut(); break; case Z2SE_OBJ_BOARD_BOUND: case Z2SE_OBJ_BOARD_PUT: if (param_2 < 90) { i_volume = 0.7f; i_pitch = 1.25f; } else if (param_2 < 60) { i_volume = 0.4f; i_pitch = 1.5f; } break; case Z2SE_SY_TALK_START: case Z2SE_SY_TALK_END: if (Z2GetSceneMgr()->getCurrentSceneNum() != 0) { return false; } break; case Z2SE_SY_TALK_NEXT: if (Z2GetSceneMgr()->isMovieDemo()) { i_soundID = Z2SE_SY_DEMO_MESSAGE_NEXT; } break; case Z2SE_SY_TALK_WIN_CLOSE: if (Z2GetSceneMgr()->getCurrentSceneNum() == 1) { i_soundID = Z2SE_SY_TALK_END; } else if (Z2GetSceneMgr()->isMovieDemo()) { i_soundID = Z2SE_SY_DEMO_MESSAGE_END; } break; case Z2SE_HP_GAUGE_INC: if (!Z2GetStatusMgr()->isHeartGuageOn() || !Z2GetSceneMgr()->isSceneExist()) { return false; } break; case Z2SE_OBJ_CHANDELIER_SWING: if (i_pos->y > Z2GetAudience()->getAudioCamPos().y) { return false; } break; case Z2SE_OBJ_CHANDLV5_SWING: i_volume = Z2Calc::getParamByExp(param_2, 353.0f, 261.0f, 0.4f, 0.05f, 1.0f, Z2Calc::CURVE_SIGN_2); break; case Z2SE_OBJ_IRONBALL_HIT: if (param_2 > 150) { i_volume = 1.4f; } else { i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 47.0f, 0.4f, 0.5f, 0.9f, Z2Calc::CURVE_SIGN_2); } break; case Z2SE_OBJ_IRONBALL_HIT_SNOW: i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 41.0f, 0.4f, 0.3f, 1.0f, Z2Calc::CURVE_SIGN_2); break; case Z2SE_OBJ_IRONBALL_HIT_ICE: i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 41.0f, 0.4f, 0.3f, 1.0f, Z2Calc::CURVE_SIGN_2); break; case Z2SE_OBJ_L8_B_FOG_FLY: if (i_pos->y > Z2GetAudience()->getAudioCamPos().y) { return false; } break; case Z2SE_OBJ_BLN_BREAK_S: case Z2SE_OBJ_BLN_BREAK_M: case Z2SE_OBJ_BLN_BREAK_L: if (param_2 > 10) { param_2 = 10; } seStart(param_2 + 0x8C, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); break; case Z2SE_OBJ_AMATA_ACTION: i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 400.0f, 0.4f, 0.5f, 1.0f, Z2Calc::CURVE_SIGN_0); i_pitch = Z2Calc::getParamByExp(param_2, 0.0f, 400.0f, 0.4f, 0.8f, 1.1f, Z2Calc::CURVE_SIGN_0); break; case Z2SE_OBJ_TOY_BONE_BOUND: i_volume = Z2Calc::getParamByExp(param_2, 15.0f, 60.0f, 0.4f, 0.0f, 1.0f, Z2Calc::CURVE_SIGN_1); break; case Z2SE_FN_ROPE_CREAK_ADD: param_2 = Z2Calc::getParamByExp(param_2, 0.0f, 127.0f, 0.2f, 0.0f, 127.0f, Z2Calc::CURVE_SIGN_0); i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 127.0f, 0.2f, 0.2f, 1.0f, Z2Calc::CURVE_SIGN_0); i_pitch = Z2Calc::getParamByExp(param_2, 127.0f, 0.0f, 0.2f, 0.8f, 1.2f, Z2Calc::CURVE_SIGN_1); break; case Z2SE_OBJ_DARK_GATE_RIPPLE: if (Z2GetSceneMgr()->getCurrentSceneNum() == 3) { i_soundID = Z2SE_OBJ_DARK_GATE_RIPPLE_WLF; } else if (Z2GetSceneMgr()->getCurrentSceneNum() == 30 && Z2GetSceneMgr()->getCurrentRoomNum() == 7) { i_soundID = Z2SE_OBJ_DARK_GATE_RIPPLE_WLF; } 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*)i_pos, param_2, i_reverb / 127.0f, i_pitch, i_volume, i_pan, i_dolby, 0); } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm bool Z2SeMgr::seStart(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) { nofralloc #include "asm/Z2AudioLib/Z2SeMgr/seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc.s" } #pragma pop #endif /* ############################################################################################## */ /* 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 */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm 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) { nofralloc #include "asm/Z2AudioLib/Z2SeMgr/seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc.s" } #pragma pop /* 802AD8B0-802AD94C 2A81F0 009C+00 1/1 0/0 4/4 .text seStop__7Z2SeMgrF10JAISoundIDUl */ void Z2SeMgr::seStop(JAISoundID i_soundID, u32 i_count) { if (i_soundID != -1) { for (u8 i = 0; i < 24; i++) { if (mSoundHandles[i] && mSoundHandles[i]->getID() == i_soundID) { mSoundHandles[i]->stop(i_count); mSoundHandles[i].releaseSound(); } } } } /* 802AD94C-802AD9F4 2A828C 00A8+00 0/0 1/1 0/0 .text seStopAll__7Z2SeMgrFUl */ void Z2SeMgr::seStopAll(u32 i_count) { JAISeMgr* se_mgr = Z2GetSoundMgr()->getSeMgr(); se_mgr->getCategory(0)->stop(i_count); se_mgr->getCategory(1)->stop(i_count); se_mgr->getCategory(2)->stop(i_count); se_mgr->getCategory(3)->stop(i_count); se_mgr->getCategory(4)->stop(i_count); se_mgr->getCategory(5)->stop(i_count); se_mgr->getCategory(6)->stop(i_count); se_mgr->getCategory(7)->stop(i_count); se_mgr->getCategory(8)->stop(i_count); se_mgr->getCategory(9)->stop(i_count); } /* 802AD9F4-802ADB14 2A8334 0120+00 3/3 5/5 1/1 .text seMoveVolumeAll__7Z2SeMgrFfUl */ #ifdef NONMATCHING // matches with literals void Z2SeMgr::seMoveVolumeAll(f32 i_volume, u32 i_count) { if (Z2GetStatusMgr()->getDemoStatus() == 13) { i_volume = 0.0f; } JAISeMgr* se_mgr = Z2GetSoundMgr()->getSeMgr(); se_mgr->getCategory(1)->getParams() ->moveVolume(Z2Param::VOL_SE_LINK_VOICE_DEFAULT * i_volume, i_count); se_mgr->getCategory(2)->getParams() ->moveVolume(Z2Param::VOL_SE_LINK_MOTION_DEFAULT * i_volume, i_count); se_mgr->getCategory(3)->getParams() ->moveVolume(Z2Param::VOL_SE_LINK_FOOTNOTE_DEFAULT * i_volume, i_count); se_mgr->getCategory(4)->getParams() ->moveVolume(Z2Param::VOL_SE_OBJECT_DEFAULT * i_volume, i_count); se_mgr->getCategory(5)->getParams() ->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_DEFAULT * i_volume, i_count); se_mgr->getCategory(6)->getParams() ->moveVolume(Z2Param::VOL_SE_CHAR_MOVE_DEFAULT * i_volume, i_count); se_mgr->getCategory(7)->getParams() ->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_DEFAULT * i_volume, i_count); se_mgr->getCategory(8)->getParams() ->moveVolume(Z2Param::VOL_SE_OBJECT_DEFAULT * i_volume, i_count); if (Z2GetStatusMgr()->getDemoStatus() != 12) { se_mgr->getCategory(9)->getParams() ->moveVolume(Z2Param::VOL_SE_ATMOSPHERE_DEFAULT * i_volume, i_count); } } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void Z2SeMgr::seMoveVolumeAll(f32 param_0, u32 param_1) { nofralloc #include "asm/Z2AudioLib/Z2SeMgr/seMoveVolumeAll__7Z2SeMgrFfUl.s" } #pragma pop #endif /* 802ADB14-802ADB50 2A8454 003C+00 0/0 1/1 0/0 .text messageSePlay__7Z2SeMgrFUsP3VecSc */ void Z2SeMgr::messageSePlay(u16 param_0, Vec* param_1, s8 param_2) { Z2GetSpeechMgr2()->playOneShotVoice(0, param_0, param_1, param_2); } /* 802ADB50-802ADC54 2A8490 0104+00 0/0 1/1 0/0 .text talkInSe__7Z2SeMgrFv */ #ifdef NONMATCHING // matches with literals void Z2SeMgr::talkInSe() { if (Z2GetSceneMgr()->isInGame()) { if (Z2GetStatusMgr()->getDemoStatus() == 13) { seMoveVolumeAll(0.0f, 0); } JAISeMgr* se_mgr = Z2GetSoundMgr()->getSeMgr(); se_mgr->getCategory(0)->getParams()->moveVolume(Z2Param::VOL_SE_SYSTEM_TALKING, 2); se_mgr->getCategory(1)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_VOICE_TALKING, 2); se_mgr->getCategory(2)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_MOTION_TALKING, 2); se_mgr->getCategory(3)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_FOOTNOTE_TALKING, 2); se_mgr->getCategory(4)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_TALKING, 2); se_mgr->getCategory(5)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_TALKING, 2); se_mgr->getCategory(6)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_MOVE_TALKING, 2); se_mgr->getCategory(7)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_TALKING, 2); se_mgr->getCategory(8)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_TALKING, 2); if (Z2GetStatusMgr()->getDemoStatus() != 12) { se_mgr->getCategory(9)->getParams()->moveVolume(Z2Param::VOL_SE_ATMOSPHERE_TALKING, 2); } } } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void Z2SeMgr::talkInSe() { nofralloc #include "asm/Z2AudioLib/Z2SeMgr/talkInSe__7Z2SeMgrFv.s" } #pragma pop #endif /* 802ADC54-802ADD58 2A8594 0104+00 0/0 2/2 0/0 .text talkOutSe__7Z2SeMgrFv */ #ifdef NONMATCHING // matches with literals void Z2SeMgr::talkOutSe() { if (Z2GetSceneMgr()->isInGame()) { if (Z2GetStatusMgr()->getDemoStatus() == 13) { seMoveVolumeAll(0.0f, 0); } JAISeMgr* se_mgr = Z2GetSoundMgr()->getSeMgr(); se_mgr->getCategory(0)->getParams()->moveVolume(Z2Param::VOL_SE_SYSTEM_DEFAULT, 2); se_mgr->getCategory(1)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_VOICE_DEFAULT, 2); se_mgr->getCategory(2)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_MOTION_DEFAULT, 2); se_mgr->getCategory(3)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_FOOTNOTE_DEFAULT, 2); se_mgr->getCategory(4)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_DEFAULT, 2); se_mgr->getCategory(5)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_DEFAULT, 2); se_mgr->getCategory(6)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_MOVE_DEFAULT, 2); se_mgr->getCategory(7)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_DEFAULT, 2); se_mgr->getCategory(8)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_DEFAULT, 2); if (Z2GetStatusMgr()->getDemoStatus() != 12) { se_mgr->getCategory(9)->getParams()->moveVolume(Z2Param::VOL_SE_ATMOSPHERE_DEFAULT, 2); } } } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void Z2SeMgr::talkOutSe() { nofralloc #include "asm/Z2AudioLib/Z2SeMgr/talkOutSe__7Z2SeMgrFv.s" } #pragma pop #endif /* 802ADD58-802ADE5C 2A8698 0104+00 0/0 1/1 0/0 .text menuInSe__7Z2SeMgrFv */ #ifdef NONMATCHING // matches with literals void Z2SeMgr::menuInSe() { if (Z2GetSceneMgr()->isInGame()) { if (Z2GetStatusMgr()->getDemoStatus() == 13) { seMoveVolumeAll(0.0f, 0); } JAISeMgr* se_mgr = Z2GetSoundMgr()->getSeMgr(); se_mgr->getCategory(0)->getParams()->moveVolume(Z2Param::VOL_SE_SYSTEM_PAUSING, 2); se_mgr->getCategory(1)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_VOICE_PAUSING, 2); se_mgr->getCategory(2)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_MOTION_PAUSING, 2); se_mgr->getCategory(3)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_FOOTNOTE_PAUSING, 2); se_mgr->getCategory(4)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_PAUSING, 2); se_mgr->getCategory(5)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_PAUSING, 2); se_mgr->getCategory(6)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_MOVE_PAUSING, 2); se_mgr->getCategory(7)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_PAUSING, 2); se_mgr->getCategory(8)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_PAUSING, 2); if (Z2GetStatusMgr()->getDemoStatus() != 12) { se_mgr->getCategory(9)->getParams()->moveVolume(Z2Param::VOL_SE_ATMOSPHERE_PAUSING, 2); } } } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void Z2SeMgr::menuInSe() { nofralloc #include "asm/Z2AudioLib/Z2SeMgr/menuInSe__7Z2SeMgrFv.s" } #pragma pop #endif /* ############################################################################################## */ /* 8039B9F0-8039B9FC 028050 000C+00 1/1 0/0 0/0 .rodata @5054 */ SECTION_RODATA static u8 const lit_5054[12] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2, 0x48, 0x00, 0x00, }; COMPILER_STRIP_GATE(0x8039B9F0, &lit_5054); /* 80455990-80455994 003F90 0004+00 1/1 0/0 0/0 .sdata2 @5085 */ SECTION_SDATA2 static f32 lit_5085 = 4.0f; /* 802ADE5C-802ADFF4 2A879C 0198+00 1/1 0/0 0/0 .text setLevObjSE__7Z2SeMgrFUlP3VecSc */ #ifdef NONMATCHING // matches with literals void Z2SeMgr::setLevObjSE(u32 i_soundID, Vec* i_pos, s8 param_2) { u8 i = 0; for (; i < mLevelObjectSeCount; i++) { if (mLevelObjSe[i].mSoundID == i_soundID) { break; } } if (i == mLevelObjectSeCount) { if (mLevelObjectSeCount == 10) { return; } mLevelObjSe[i].mSoundID = i_soundID; mLevelObjectSeCount++; } f32 volume_scale = 1.0f; Vec pos = {0.0f, 0.0f, -50.0f}; if (i_pos != NULL) { pos = *i_pos; } else { // fake match, should be something like pos = Z2GetAudience()->getAudioCamPos(); Vec tmp; JGeometry::setTVec3f(*(Vec*)Z2GetAudience()->mAudioCamera[0].getPos(), tmp); pos = tmp; } switch (i_soundID) { case Z2SE_OBJ_FIRE_BURNING: volume_scale = 0.7f; break; case Z2SE_EN_ZZ_MV: volume_scale = 4.0f; break; case Z2SE_FAIRY_S_LV: case Z2SE_OBJ_L8_L_BALL_SW: break; } mLevelObjSe[i].mVolumeScale = volume_scale; mLevelObjSe[i].registMultiSePos((Vec*)&pos); if (mLevelObjSe[i].field_0x20 < param_2) { mLevelObjSe[i].field_0x20 = param_2; } } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void Z2SeMgr::setLevObjSE(u32 param_0, Vec* param_1, s8 param_2) { nofralloc #include "asm/Z2AudioLib/Z2SeMgr/setLevObjSE__7Z2SeMgrFUlP3VecSc.s" } #pragma pop #endif /* ############################################################################################## */ /* 8039B9FC-8039BA08 02805C 000C+00 1/1 0/0 0/0 .rodata @5100 */ SECTION_RODATA static u8 const lit_5100[12] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2, 0x48, 0x00, 0x00, }; COMPILER_STRIP_GATE(0x8039B9FC, &lit_5100); /* 80455994-80455998 003F94 0004+00 1/1 0/0 0/0 .sdata2 @5134 */ SECTION_SDATA2 static f32 lit_5134 = 3.0f; /* 802ADFF4-802AE184 2A8934 0190+00 1/1 0/0 0/0 .text setMultiTriggerSE__7Z2SeMgrFUlP3VecSc */ #ifdef NONMATCHING // matches with literals void Z2SeMgr::setMultiTriggerSE(u32 i_soundID, Vec* i_pos, s8 param_2) { u8 i = 0; for (; i < mMultiTriggerSeCount; i++) { if (mMultiTriggerSe[i].mSoundID == i_soundID) { break; } } if (i == mMultiTriggerSeCount) { if (mMultiTriggerSeCount == 10) { return; } mMultiTriggerSe[i].mSoundID = i_soundID; mMultiTriggerSeCount++; } f32 volume_scale = 1.0f; Vec pos = {0.0f, 0.0f, -50.0f}; if (i_pos != NULL) { pos = *i_pos; } else { // fake match, should be something like pos = Z2GetAudience()->getAudioCamPos(); Vec tmp; JGeometry::setTVec3f(*(Vec*)Z2GetAudience()->mAudioCamera[0].getPos(), tmp); pos = tmp; } switch (i_soundID) { case Z2SE_OBJ_L8_STAIR_ON: case Z2SE_OBJ_L8_STAIR_MV_UP: case Z2SE_OBJ_L8_STAIR_MV_DW: case Z2SE_OBJ_L8_STAIR_ST_UP: case Z2SE_OBJ_L8_STAIR_ST_DW: case Z2SE_OBJ_L8_L_LIFT_ON: volume_scale = 3.0f; break; case Z2SE_OBJ_L8_L_BALL_SW_ON: volume_scale = 1.3f; break; } mMultiTriggerSe[i].mVolumeScale = volume_scale; mMultiTriggerSe[i].registMultiSePos((Vec*)&pos); if (mMultiTriggerSe[i].field_0x20 < param_2) { mMultiTriggerSe[i].field_0x20 = param_2; } } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void Z2SeMgr::setMultiTriggerSE(u32 param_0, Vec* param_1, s8 param_2) { nofralloc #include "asm/Z2AudioLib/Z2SeMgr/setMultiTriggerSE__7Z2SeMgrFUlP3VecSc.s" } #pragma pop #endif /* 802AE184-802AE524 2A8AC4 03A0+00 0/0 1/1 0/0 .text processSeFramework__7Z2SeMgrFv */ #ifdef NONMATCHING // matches with literals void Z2SeMgr::processSeFramework() { if (Z2GetSceneMgr()->isSceneExist() && mCrowdSize != 0) { seStartLevel(Z2SE_ENV_PEOPLE_CROWD, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); } for (u8 i = 0; i < mLevelObjectSeCount; i++) { f32 volume = mLevelObjSe[i].getMaxVolume(); seStartLevel(mLevelObjSe[i].mSoundID, NULL, 0, mLevelObjSe[i].field_0x20, 1.0f, volume, mLevelObjSe[i].getPanPower(), mLevelObjSe[i].getDolbyPower(), 1); } for (u8 i = 0; i < 10; i++) { mLevelObjSe[i].resetMultiSePos(); mLevelObjSe[i].mSoundID = -1; mLevelObjSe[i].field_0x20 = 0; } mLevelObjectSeCount = 0; for (u8 i = 0; i < mMultiTriggerSeCount; i++) { f32 volume = mMultiTriggerSe[i].getMaxVolume(); seStartLevel(mMultiTriggerSe[i].mSoundID, NULL, 0, mMultiTriggerSe[i].field_0x20, 1.0f, volume, mMultiTriggerSe[i].getPanPower(), mMultiTriggerSe[i].getDolbyPower(), 1); } for (u8 i = 0; i < 10; i++) { mMultiTriggerSe[i].resetMultiSePos(); mMultiTriggerSe[i].mSoundID = -1; mMultiTriggerSe[i].field_0x20 = 0; } mMultiTriggerSeCount = 0; field_0x3c9 = 0; field_0x3ca = 0; field_0x3cb = 0; if (field_0x3c2 != 0) { field_0x3c2--; } else { field_0x3c2 = 0; } if (field_0x3c3 != 0) { field_0x3c3--; } else { field_0x3c3 = 0; } if (field_0x3c4 != 0) { field_0x3c4--; } else { field_0x3c4 = 0; } if (field_0x3c5 != 0) { field_0x3c5--; } else { field_0x3c5 = 0; } if (field_0x3c0 != 0) { field_0x3c0--; } else { field_0x3c0 = 0; } if (field_0x3c1 != 0) { field_0x3c1--; } else { field_0x3c1 = 0; } if (field_0x3c6 != 0) { field_0x3c6--; } else { field_0x3c6 = 0; } if (field_0x3c7 != 0) { field_0x3c7--; } else { field_0x3c7 = 0; } if (field_0x3c8 != 0) { field_0x3c8--; } else { field_0x3c8 = 0; } } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void Z2SeMgr::processSeFramework() { nofralloc #include "asm/Z2AudioLib/Z2SeMgr/processSeFramework__7Z2SeMgrFv.s" } #pragma pop #endif /* 802AE524-802AE5B0 2A8E64 008C+00 1/1 0/0 0/0 .text isLevelSe__7Z2SeMgrF10JAISoundID */ bool Z2SeMgr::isLevelSe(JAISoundID i_soundID) { switch (i_soundID) { case JA_SE_LK_MOVE_ROCK: case JA_SE_LK_MOVE_WBLOCK: case Z2SE_OBJ_FIRE_BURNING: case JA_SE_MAGMA_L: case JA_SE_MAGMA_R: case JA_SE_MAGMA_SR: case JA_SE_FIREBLAST_NOISE: case JA_SE_ATM_WIND_HOT: return true; default: return false; } } /* 802AE5B0-802AEB04 2A8EF0 0554+00 2/2 3/3 0/0 .text isSoundCulling__7Z2SeMgrF10JAISoundID */ #ifdef NONMATCHING // matches with literals bool Z2SeMgr::isSoundCulling(JAISoundID i_soundID) { if (Z2GetSeqMgr()->isItemGetDemo()) { switch (i_soundID) { case Z2SE_HP_GAUGE_INC: case Z2SE_SY_TALK_NEXT: case Z2SE_SY_TALK_END: case Z2SE_SY_DEMO_MESSAGE_NEXT: case Z2SE_SY_DEMO_MESSAGE_END: case Z2SE_AL_FISH_JUMP_DOWN: case Z2SE_CAT_CRY_ANNOY_D: case Z2SE_CAT_CRY_ATTACK_D: case Z2SE_MIDNA_APPEAR: case Z2SE_HENA_CLAP: case Z2SE_EN_PO_V_DEATH: case Z2SE_EN_SG_BOUND: case Z2SE_OBJ_TBOX_OPEN_A: case Z2SE_OBJ_TBOX_OPEN_B: case Z2SE_OBJ_TBOX_OPEN_B_SLOW: case Z2SE_OBJ_TBOX_OPEN_C: case Z2SE_OBJ_NIOIMASU_BOUND: return false; default: return true; } } switch (i_soundID) { case Z2SE_MIDNA_APPEAR: case Z2SE_MIDNA_DISAPPEAR: if (!Z2GetSceneMgr()->isSceneExist()) { return true; } break; case Z2SE_EN_BE_DEATH: case Z2SE_EN_BUG_DIE: if (field_0x3c0 != 0) { return true; } field_0x3c0 = 4; break; case Z2SE_EN_BE_GO_HOME: case Z2SE_EN_BUG_JUMP: if (field_0x3c1 != 0) { return true; } field_0x3c1 = 4; break; case JA_SE_FT_ADD_GRASS: if (field_0x3c2 != 0) { return true; } field_0x3c2 = 2; break; case JA_SE_OBJ_BREAK_WRAILING: if (field_0x3c9 != 0) { return true; } field_0x3c9 = 1; break; case JA_SE_LK_CUT_GRASS: if (field_0x3c3 != 0) { return true; } field_0x3c3 = 4; break; case JA_SE_OBJ_BREAK_CHINA_S: if (field_0x3c4 != 0) { return true; } field_0x3c4 = 2; break; case Z2SE_OBJ_SKULL_BREAK: if (field_0x3c5 != 0) { return true; } field_0x3c5 = 2; break; case JA_SE_CM_MONS_EXPLODE: if (field_0x3ca != 0) { return true; } field_0x3ca = 1; Z2GetSoundMgr()->multiVolumeSoundID(i_soundID, 0.5f); break; case Z2SE_DARK_VANISH: if (field_0x3cb != 0) { return true; } field_0x3cb = 1; Z2GetSoundMgr()->stopSoundID(i_soundID); Z2GetSoundMgr()->multiVolumeSoundID(i_soundID, 0.5f); break; case Z2SE_EN_BS_V_DEAD: case Z2SE_EN_FZ_BOUND: if (field_0x3c6 != 0) { return true; } field_0x3c6 = 3; break; case Z2SE_EN_DB_BERON: case Z2SE_EN_YK_V_DEATH: case Z2SE_EN_YG_FOOTNOTE: if (field_0x3c0 != 0) { return true; } field_0x3c0 = 3; break; case Z2SE_EN_DB_APPEAR: case Z2SE_EN_BS_DEAD: if (field_0x3c1 != 0) { return true; } field_0x3c1 = 3; break; case Z2SE_EN_YK_WING: if (field_0x3c2 != 0) { return true; } field_0x3c2 = 4; break; case Z2SE_EN_YK_V_FURA: if (field_0x3c3 != 0) { return true; } field_0x3c3 = 4; break; case Z2SE_EN_GBA_FOOTNOTE: if (field_0x3c7 != 0) { return true; } field_0x3c7 = 1; break; case Z2SE_EN_GBA_V_DEATH: case Z2SE_EN_GBA_LAYEGG: case Z2SE_EN_GBA_FUKA: case Z2SE_EN_GBA_LAND: if (field_0x3c8 != 0) { return true; } field_0x3c8 = 1; break; case Z2SE_EN_BS_APPEAR: break; } return false; } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm bool Z2SeMgr::isSoundCulling(JAISoundID param_0) { nofralloc #include "asm/Z2AudioLib/Z2SeMgr/isSoundCulling__7Z2SeMgrF10JAISoundID.s" } #pragma pop #endif Z2MultiSeMgr::Z2MultiSeMgr() { resetMultiSePos(); } Z2MultiSeMgr::~Z2MultiSeMgr() {} /* 802AEB70-802AECBC 2A94B0 014C+00 2/2 6/6 0/0 .text registMultiSePos__12Z2MultiSeMgrFP3Vec */ #ifdef NONMATCHING // matches with literals s8 Z2MultiSeMgr::registMultiSePos(Vec* i_pos) { if (i_pos == NULL) { return 0; } if (mPosCount < 0) { mPosCount = 0; } Vec rel_pos; Z2GetAudience()->convertAbsToRel(*i_pos, &rel_pos, 0); f32 volume = Z2GetAudience()->calcRelPosVolume(rel_pos, mVolumeScale, 0); if (volume <= 0.0f) { return mPosCount; } f32 pan = Z2GetAudience()->calcRelPosPan(rel_pos, 0); f32 dolby = Z2GetAudience()->calcRelPosDolby(rel_pos, 0); f32 pow_l = (1.0f - pan) * volume; f32 pow_r = pan * volume; f32 pow_f = (1.0f - dolby) * volume; f32 pow_b = dolby * volume; if (volume > mMaxVolume) { mMaxVolume = volume; } if (pow_l > mMaxPowL) { mMaxPowL = pow_l; } if (pow_r > mMaxPowR) { mMaxPowR = pow_r; } if (pow_f > mMaxPowF) { mMaxPowF = pow_f; } if (pow_b > mMaxPowB) { mMaxPowB = pow_b; } mPosCount++; return mPosCount; } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s8 Z2MultiSeMgr::registMultiSePos(Vec* param_0) { nofralloc #include "asm/Z2AudioLib/Z2SeMgr/registMultiSePos__12Z2MultiSeMgrFP3Vec.s" } #pragma pop #endif void Z2MultiSeMgr::resetMultiSePos(void) { mPosCount = -1; f32 _0 = FLOAT_LABEL(lit_4040); mMaxPowL = _0; mMaxPowR = _0; mMaxPowF = _0; mMaxPowB = _0; mMaxVolume = _0; } /* 802AECE0-802AEDC0 2A9620 00E0+00 1/1 8/8 0/0 .text getPanPower__12Z2MultiSeMgrFv */ #ifdef NONMATCHING // Matches with literals f32 Z2MultiSeMgr::getPanPower() { f32 pow_r = getMaxPowR(); f32 pow_l = getMaxPowL(); if (pow_l + pow_r > 0.0f) { f32 pow_r = getMaxPowR(); f32 pow_l = getMaxPowL(); return getMaxPowR() / (pow_l + pow_r); } else { return 0.5f; } } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm f32 Z2MultiSeMgr::getPanPower() { nofralloc #include "asm/Z2AudioLib/Z2SeMgr/getPanPower__12Z2MultiSeMgrFv.s" } #pragma pop #endif /* 802AEDC0-802AEEA0 2A9700 00E0+00 1/1 8/8 0/0 .text getDolbyPower__12Z2MultiSeMgrFv */ #ifdef NONMATCHING // Matches with literals f32 Z2MultiSeMgr::getDolbyPower() { f32 pow_b = getMaxPowB(); f32 pow_f = getMaxPowF(); if (pow_f + pow_b > 0.0f) { f32 pow_b = getMaxPowB(); f32 pow_f = getMaxPowF(); return getMaxPowB() / (pow_f + pow_b); } else { return 0.5f; } } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm f32 Z2MultiSeMgr::getDolbyPower() { nofralloc #include "asm/Z2AudioLib/Z2SeMgr/getDolbyPower__12Z2MultiSeMgrFv.s" } #pragma pop #endif