From 6f96e665186c87f15acb6f5cb8d27665afee3130 Mon Sep 17 00:00:00 2001 From: TakaRikka <38417346+TakaRikka@users.noreply.github.com> Date: Thu, 27 Nov 2025 21:19:33 -0800 Subject: [PATCH] various Z2Audio / JAudio debug cleanup (#2876) * some JAudio work * audio cleanup checkpoint * checkpoint more audio cleanup * fix symbols * more z2 cleanup * fix regression * fix build * some fixes --- config/GZ2E01/symbols.txt | 31 +- config/GZ2J01/symbols.txt | 31 +- config/GZ2P01/symbols.txt | 31 +- config/RZDE01_00/symbols.txt | 30 +- config/RZDE01_02/symbols.txt | 30 +- config/Shield/symbols.txt | 30 +- config/ShieldD/symbols.txt | 30 +- include/JSystem/JAudio2/JAISe.h | 12 +- include/JSystem/JAudio2/JAISeMgr.h | 66 +- include/JSystem/JAudio2/JAISeq.h | 24 +- include/JSystem/JAudio2/JAISeqDataMgr.h | 6 +- include/JSystem/JAudio2/JAISeqMgr.h | 29 +- include/JSystem/JAudio2/JAISound.h | 197 +-- include/JSystem/JAudio2/JAISoundHandles.h | 21 +- include/JSystem/JAudio2/JAISoundParams.h | 103 +- include/JSystem/JAudio2/JAISoundStarter.h | 6 +- include/JSystem/JAudio2/JAIStream.h | 29 +- include/JSystem/JAudio2/JAIStreamMgr.h | 24 +- include/JSystem/JAudio2/JASCalc.h | 12 +- include/JSystem/JAudio2/JASCallback.h | 25 +- include/JSystem/JAudio2/JASDriverIF.h | 4 + include/JSystem/JAudio2/JASDvdThread.h | 2 +- include/JSystem/JAudio2/JASGadget.h | 4 +- include/JSystem/JAudio2/JASHeapCtrl.h | 12 +- include/JSystem/JAudio2/JASTaskThread.h | 22 +- include/JSystem/JAudio2/JASTrack.h | 11 +- include/JSystem/JAudio2/JASWaveArcLoader.h | 2 +- include/JSystem/JAudio2/JAUAudibleParam.h | 3 + .../JSystem/JAudio2/JAUAudioArcInterpreter.h | 2 +- include/JSystem/JAudio2/JAUInitializer.h | 24 +- include/JSystem/JAudio2/JAUSectionHeap.h | 4 +- include/JSystem/JAudio2/JAUSeqCollection.h | 2 + include/JSystem/JAudio2/JAUSoundTable.h | 3 +- include/JSystem/JGeometry.h | 19 +- include/JSystem/JKernel/JKRThread.h | 1 - include/JSystem/JMath/JMath.h | 4 + include/JSystem/JSupport/JSUList.h | 8 +- include/JSystem/TPosition3.h | 12 +- include/Z2AudioLib/Z2Audience.h | 129 +- include/Z2AudioLib/Z2AudioArcLoader.h | 6 +- include/Z2AudioLib/Z2AudioCS.h | 4 +- include/Z2AudioLib/Z2AudioMgr.h | 14 +- include/Z2AudioLib/Z2Calc.h | 43 +- include/Z2AudioLib/Z2Creature.h | 72 +- include/Z2AudioLib/Z2DebugSys.h | 11 +- include/Z2AudioLib/Z2EnvSeMgr.h | 70 +- include/Z2AudioLib/Z2FxLineMgr.h | 10 +- include/Z2AudioLib/Z2LinkMgr.h | 83 +- include/Z2AudioLib/Z2Param.h | 36 +- include/Z2AudioLib/Z2SceneMgr.h | 197 +-- include/Z2AudioLib/Z2SeMgr.h | 74 +- include/Z2AudioLib/Z2SeqMgr.h | 145 +- include/Z2AudioLib/Z2SoundHandles.h | 23 +- include/Z2AudioLib/Z2SoundInfo.h | 31 +- include/Z2AudioLib/Z2SoundMgr.h | 35 +- include/Z2AudioLib/Z2SoundObjMgr.h | 35 +- include/Z2AudioLib/Z2SoundObject.h | 109 +- include/Z2AudioLib/Z2SoundStarter.h | 13 +- include/Z2AudioLib/Z2StatusMgr.h | 12 +- include/Z2AudioLib/Z2WolfHowlMgr.h | 61 +- include/d/actor/d_a_alink.h | 4 +- include/d/d_com_inf_game.h | 1 + src/JSystem/JAudio2/JAIAudience.cpp | 9 +- src/JSystem/JAudio2/JAISe.cpp | 94 +- src/JSystem/JAudio2/JAISeMgr.cpp | 256 +-- src/JSystem/JAudio2/JAISeq.cpp | 139 +- src/JSystem/JAudio2/JAISeqDataMgr.cpp | 4 +- src/JSystem/JAudio2/JAISeqMgr.cpp | 112 +- src/JSystem/JAudio2/JAISound.cpp | 134 +- src/JSystem/JAudio2/JAISoundChild.cpp | 6 +- src/JSystem/JAudio2/JAISoundHandles.cpp | 19 +- src/JSystem/JAudio2/JAISoundInfo.cpp | 9 +- src/JSystem/JAudio2/JAISoundParams.cpp | 52 +- src/JSystem/JAudio2/JAISoundStarter.cpp | 33 +- src/JSystem/JAudio2/JAIStream.cpp | 168 +- src/JSystem/JAudio2/JAIStreamDataMgr.cpp | 8 +- src/JSystem/JAudio2/JAIStreamMgr.cpp | 96 +- src/JSystem/JAudio2/JASCalc.cpp | 58 +- src/JSystem/JAudio2/JASCallback.cpp | 35 +- src/JSystem/JAudio2/JASDvdThread.cpp | 26 +- src/JSystem/JAudio2/JASHeapCtrl.cpp | 5 - src/JSystem/JAudio2/JASTaskThread.cpp | 82 +- src/JSystem/JAudio2/JASTrack.cpp | 5 - src/JSystem/JAudio2/JAUInitializer.cpp | 81 +- src/JSystem/JAudio2/JAUSectionHeap.cpp | 6 +- src/JSystem/JAudio2/JAUSeqCollection.cpp | 2 +- src/JSystem/JAudio2/JAUSoundTable.cpp | 12 +- src/JSystem/JAudio2/JAUStreamFileTable.cpp | 3 +- src/JSystem/JAudio2/dspproc.cpp | 23 +- src/JSystem/JAudio2/dsptask.cpp | 41 +- .../MSL/MSL_C/MSL_Common/Include/math.h | 4 + src/Z2AudioLib/Z2Audience.cpp | 555 +++---- src/Z2AudioLib/Z2AudioArcLoader.cpp | 70 +- src/Z2AudioLib/Z2AudioMgr.cpp | 155 +- src/Z2AudioLib/Z2Calc.cpp | 162 +- src/Z2AudioLib/Z2Creature.cpp | 688 ++++---- src/Z2AudioLib/Z2EnvSeMgr.cpp | 756 +++++---- src/Z2AudioLib/Z2FxLineMgr.cpp | 121 +- src/Z2AudioLib/Z2LinkMgr.cpp | 373 ++--- src/Z2AudioLib/Z2Param.cpp | 52 +- src/Z2AudioLib/Z2SceneMgr.cpp | 475 +++--- src/Z2AudioLib/Z2SeMgr.cpp | 691 ++++---- src/Z2AudioLib/Z2SeqMgr.cpp | 1398 +++++++++-------- src/Z2AudioLib/Z2SoundHandles.cpp | 121 +- src/Z2AudioLib/Z2SoundInfo.cpp | 271 ++-- src/Z2AudioLib/Z2SoundMgr.cpp | 318 ++-- src/Z2AudioLib/Z2SoundObjMgr.cpp | 260 +-- src/Z2AudioLib/Z2SoundObject.cpp | 583 ++++--- src/Z2AudioLib/Z2SoundStarter.cpp | 111 +- src/Z2AudioLib/Z2SpeechMgr2.cpp | 389 ++--- src/Z2AudioLib/Z2StatusMgr.cpp | 219 +-- src/Z2AudioLib/Z2WolfHowlMgr.cpp | 551 ++++--- src/d/d_msg_scrn_howl.cpp | 2 +- 113 files changed, 6425 insertions(+), 5542 deletions(-) diff --git a/config/GZ2E01/symbols.txt b/config/GZ2E01/symbols.txt index 6b6b4b26ab..acacb8e611 100644 --- a/config/GZ2E01/symbols.txt +++ b/config/GZ2E01/symbols.txt @@ -21479,18 +21479,18 @@ VOL_SE_CHAR_VOICE_PAUSING__7Z2Param = .sdata:0x80450850; // type:object size:0x4 VOL_SE_CHAR_MOVE_PAUSING__7Z2Param = .sdata:0x80450854; // type:object size:0x4 scope:global align:4 data:float VOL_SE_OBJECT_PAUSING__7Z2Param = .sdata:0x80450858; // type:object size:0x4 scope:global align:4 data:float VOL_SE_ATMOSPHERE_PAUSING__7Z2Param = .sdata:0x8045085C; // type:object size:0x4 scope:global align:4 data:float -struct_80450860 = .sdata:0x80450860; // type:object size:0x1 scope:global align:1 data:byte -struct_80450861 = .sdata:0x80450861; // type:object size:0x1 scope:global align:1 data:byte -struct_80450862 = .sdata:0x80450862; // type:object size:0x1 scope:global align:1 data:byte -struct_80450863 = .sdata:0x80450863; // type:object size:0x1 scope:global align:1 data:byte -struct_80450864 = .sdata:0x80450864; // type:object size:0x1 scope:global align:1 data:byte -struct_80450865 = .sdata:0x80450865; // type:object size:0x1 scope:global align:1 data:byte -struct_80450866 = .sdata:0x80450866; // type:object size:0x1 scope:global align:1 data:byte -struct_80450867 = .sdata:0x80450867; // type:object size:0x1 scope:global align:1 data:byte -struct_80450868 = .sdata:0x80450868; // type:object size:0x1 scope:global align:1 data:byte -struct_80450869 = .sdata:0x80450869; // type:object size:0x1 scope:global align:1 data:byte -struct_8045086A = .sdata:0x8045086A; // type:object size:0x1 scope:global align:1 data:byte -struct_8045086B = .sdata:0x8045086B; // type:object size:0x1 scope:global align:1 data:byte +SCENE_CHANGE_BGM_FADEOUT_TIME__7Z2Param = .sdata:0x80450860; // type:object size:0x1 scope:global align:1 data:byte +BGM_CROSS_FADEIN_TIME__7Z2Param = .sdata:0x80450861; // type:object size:0x1 scope:global align:1 data:byte +BGM_CROSS_FADEOUT_TIME__7Z2Param = .sdata:0x80450862; // type:object size:0x1 scope:global align:1 data:byte +BATTLE_BGM_WAIT_TIME__7Z2Param = .sdata:0x80450863; // type:object size:0x1 scope:global align:1 data:byte +FOUND_TRACK_FI_TIME__7Z2Param = .sdata:0x80450864; // type:object size:0x1 scope:global align:1 data:byte +FOUND_TRACK_FO_TIME__7Z2Param = .sdata:0x80450865; // type:object size:0x1 scope:global align:1 data:byte +CLOSE_BATTLE_TRACK_FI_TIME__7Z2Param = .sdata:0x80450866; // type:object size:0x1 scope:global align:1 data:byte +CLOSE_BATTLE_TRACK_FO_TIME__7Z2Param = .sdata:0x80450867; // type:object size:0x1 scope:global align:1 data:byte +ENDING_BLOW_VOL_DOWN_TIME__7Z2Param = .sdata:0x80450868; // type:object size:0x1 scope:global align:1 data:byte +ENDING_BLOW_VOL_LOWER_TIME__7Z2Param = .sdata:0x80450869; // type:object size:0x1 scope:global align:1 data:byte +ENDING_BLOW_VOL_LOWER_RECOVER_TIME__7Z2Param = .sdata:0x8045086A; // type:object size:0x1 scope:global align:1 data:byte +ENDING_BLOW_MIN_FINISH_TIME__7Z2Param = .sdata:0x8045086B; // type:object size:0x1 scope:global align:1 data:byte data_8045086C = .sdata:0x8045086C; // type:object size:0x1 scope:global align:1 data:byte sDeathMtBottom = .sdata:0x80450870; // type:object size:0x4 scope:global align:4 data:float sDeathMtTop = .sdata:0x80450874; // type:object size:0x4 scope:global align:4 data:float @@ -22096,10 +22096,9 @@ init$80 = .sbss:0x80451330; // type:object size:0x1 scope:local align:1 data:byt oRandom$401 = .sbss:0x80451334; // type:object size:0x4 scope:local align:4 data:4byte MIN_DISTANCE_VOLUME__7Z2Param = .sbss:0x80451338; // type:object size:0x4 scope:global align:4 data:float ENEMY_LASTHIT_MUTE_VOLUME__7Z2Param = .sbss:0x8045133C; // type:object size:0x4 scope:global align:4 data:float -struct_80451340 = .sbss:0x80451340; // type:object size:0x1 scope:global align:1 data:byte -struct_80451341 = .sbss:0x80451341; // type:object size:0x1 scope:global align:1 data:byte -struct_80451342 = .sbss:0x80451342; // type:object size:0x1 scope:global align:1 data:byte -pad_80451344 = .sbss:0x80451344; // type:object size:0x4 scope:global align:4 +DARK_SE_FILTER_ON__7Z2Param = .sbss:0x80451340; // type:object size:0x1 scope:global align:1 data:byte +DARK_SE_LOW_PASS_FILTER_SETTING__7Z2Param = .sbss:0x80451341; // type:object size:0x1 scope:global align:1 data:byte +SYSTEM_SE_USE_DARK_SE_SETTING__7Z2Param = .sbss:0x80451342; // type:object size:0x1 scope:global align:1 data:byte init$localstatic4$getMemPool___39JASPoolAllocObject<17Z2SoundHandlePool>Fv = .sbss:0x80451348; // type:object size:0x1 scope:global align:1 data:byte cNearFarRatio = .sbss:0x80451350; // type:object size:0x4 scope:local align:4 data:float init$localstatic4$getMemPool___30JASPoolAllocObject<9Z2Audible>Fv = .sbss:0x80451354; // type:object size:0x1 scope:global align:1 data:byte diff --git a/config/GZ2J01/symbols.txt b/config/GZ2J01/symbols.txt index 1e959fa7be..8c84aed393 100644 --- a/config/GZ2J01/symbols.txt +++ b/config/GZ2J01/symbols.txt @@ -21495,18 +21495,18 @@ VOL_SE_CHAR_VOICE_PAUSING__7Z2Param = .sdata:0x8044A990; // type:object size:0x4 VOL_SE_CHAR_MOVE_PAUSING__7Z2Param = .sdata:0x8044A994; // type:object size:0x4 scope:global align:4 data:float VOL_SE_OBJECT_PAUSING__7Z2Param = .sdata:0x8044A998; // type:object size:0x4 scope:global align:4 data:float VOL_SE_ATMOSPHERE_PAUSING__7Z2Param = .sdata:0x8044A99C; // type:object size:0x4 scope:global align:4 data:float -struct_80450860 = .sdata:0x8044A9A0; // type:object size:0x1 scope:global align:1 data:byte -struct_80450861 = .sdata:0x8044A9A1; // type:object size:0x1 scope:global align:1 data:byte -struct_80450862 = .sdata:0x8044A9A2; // type:object size:0x1 scope:global align:1 data:byte -struct_80450863 = .sdata:0x8044A9A3; // type:object size:0x1 scope:global align:1 data:byte -struct_80450864 = .sdata:0x8044A9A4; // type:object size:0x1 scope:global align:1 data:byte -struct_80450865 = .sdata:0x8044A9A5; // type:object size:0x1 scope:global align:1 data:byte -struct_80450866 = .sdata:0x8044A9A6; // type:object size:0x1 scope:global align:1 data:byte -struct_80450867 = .sdata:0x8044A9A7; // type:object size:0x1 scope:global align:1 data:byte -struct_80450868 = .sdata:0x8044A9A8; // type:object size:0x1 scope:global align:1 data:byte -struct_80450869 = .sdata:0x8044A9A9; // type:object size:0x1 scope:global align:1 data:byte -struct_8045086A = .sdata:0x8044A9AA; // type:object size:0x1 scope:global align:1 data:byte -struct_8045086B = .sdata:0x8044A9AB; // type:object size:0x1 scope:global align:1 data:byte +SCENE_CHANGE_BGM_FADEOUT_TIME__7Z2Param = .sdata:0x8044A9A0; // type:object size:0x1 scope:global align:1 data:byte +BGM_CROSS_FADEIN_TIME__7Z2Param = .sdata:0x8044A9A1; // type:object size:0x1 scope:global align:1 data:byte +BGM_CROSS_FADEOUT_TIME__7Z2Param = .sdata:0x8044A9A2; // type:object size:0x1 scope:global align:1 data:byte +BATTLE_BGM_WAIT_TIME__7Z2Param = .sdata:0x8044A9A3; // type:object size:0x1 scope:global align:1 data:byte +FOUND_TRACK_FI_TIME__7Z2Param = .sdata:0x8044A9A4; // type:object size:0x1 scope:global align:1 data:byte +FOUND_TRACK_FO_TIME__7Z2Param = .sdata:0x8044A9A5; // type:object size:0x1 scope:global align:1 data:byte +CLOSE_BATTLE_TRACK_FI_TIME__7Z2Param = .sdata:0x8044A9A6; // type:object size:0x1 scope:global align:1 data:byte +CLOSE_BATTLE_TRACK_FO_TIME__7Z2Param = .sdata:0x8044A9A7; // type:object size:0x1 scope:global align:1 data:byte +ENDING_BLOW_VOL_DOWN_TIME__7Z2Param = .sdata:0x8044A9A8; // type:object size:0x1 scope:global align:1 data:byte +ENDING_BLOW_VOL_LOWER_TIME__7Z2Param = .sdata:0x8044A9A9; // type:object size:0x1 scope:global align:1 data:byte +ENDING_BLOW_VOL_LOWER_RECOVER_TIME__7Z2Param = .sdata:0x8044A9AA; // type:object size:0x1 scope:global align:1 data:byte +ENDING_BLOW_MIN_FINISH_TIME__7Z2Param = .sdata:0x8044A9AB; // type:object size:0x1 scope:global align:1 data:byte data_8045086C = .sdata:0x8044A9AC; // type:object size:0x1 scope:global align:1 data:byte sDeathMtBottom = .sdata:0x8044A9B0; // type:object size:0x4 scope:global align:4 data:float sDeathMtTop = .sdata:0x8044A9B4; // type:object size:0x4 scope:global align:4 data:float @@ -22112,10 +22112,9 @@ init$80 = .sbss:0x8044B470; // type:object size:0x1 scope:local align:1 data:byt oRandom$401 = .sbss:0x8044B474; // type:object size:0x4 scope:local align:4 data:4byte MIN_DISTANCE_VOLUME__7Z2Param = .sbss:0x8044B478; // type:object size:0x4 scope:global align:4 data:float ENEMY_LASTHIT_MUTE_VOLUME__7Z2Param = .sbss:0x8044B47C; // type:object size:0x4 scope:global align:4 data:float -struct_80451340 = .sbss:0x8044B480; // type:object size:0x1 scope:global align:1 data:byte -struct_80451341 = .sbss:0x8044B481; // type:object size:0x1 scope:global align:1 data:byte -struct_80451342 = .sbss:0x8044B482; // type:object size:0x1 scope:global align:1 data:byte -pad_8044B484 = .sbss:0x8044B484; // type:object size:0x4 scope:global align:4 +DARK_SE_FILTER_ON__7Z2Param = .sbss:0x8044B480; // type:object size:0x1 scope:global align:1 data:byte +DARK_SE_LOW_PASS_FILTER_SETTING__7Z2Param = .sbss:0x8044B481; // type:object size:0x1 scope:global align:1 data:byte +SYSTEM_SE_USE_DARK_SE_SETTING__7Z2Param = .sbss:0x8044B482; // type:object size:0x1 scope:global align:1 data:byte init$localstatic4$getMemPool___39JASPoolAllocObject<17Z2SoundHandlePool>Fv = .sbss:0x8044B488; // type:object size:0x1 data:byte cNearFarRatio = .sbss:0x8044B490; // type:object size:0x4 scope:global align:4 data:float init$localstatic4$getMemPool___30JASPoolAllocObject<9Z2Audible>Fv = .sbss:0x8044B494; // type:object size:0x1 data:byte diff --git a/config/GZ2P01/symbols.txt b/config/GZ2P01/symbols.txt index 4d5db5621a..67b509b6ef 100644 --- a/config/GZ2P01/symbols.txt +++ b/config/GZ2P01/symbols.txt @@ -21502,18 +21502,18 @@ VOL_SE_CHAR_VOICE_PAUSING__7Z2Param = .sdata:0x80452810; // type:object size:0x4 VOL_SE_CHAR_MOVE_PAUSING__7Z2Param = .sdata:0x80452814; // type:object size:0x4 scope:global align:4 data:float VOL_SE_OBJECT_PAUSING__7Z2Param = .sdata:0x80452818; // type:object size:0x4 scope:global align:4 data:float VOL_SE_ATMOSPHERE_PAUSING__7Z2Param = .sdata:0x8045281C; // type:object size:0x4 scope:global align:4 data:float -struct_80450860 = .sdata:0x80452820; // type:object size:0x1 data:byte -struct_80450861 = .sdata:0x80452821; // type:object size:0x1 data:byte -struct_80450862 = .sdata:0x80452822; // type:object size:0x1 data:byte -struct_80450863 = .sdata:0x80452823; // type:object size:0x1 data:byte -struct_80450864 = .sdata:0x80452824; // type:object size:0x1 data:byte -struct_80450865 = .sdata:0x80452825; // type:object size:0x1 data:byte -struct_80450866 = .sdata:0x80452826; // type:object size:0x1 data:byte -struct_80450867 = .sdata:0x80452827; // type:object size:0x1 data:byte -struct_80450868 = .sdata:0x80452828; // type:object size:0x1 data:byte -struct_80450869 = .sdata:0x80452829; // type:object size:0x1 data:byte -struct_8045086A = .sdata:0x8045282A; // type:object size:0x1 data:byte -struct_8045086B = .sdata:0x8045282B; // type:object size:0x1 data:byte +SCENE_CHANGE_BGM_FADEOUT_TIME__7Z2Param = .sdata:0x80452820; // type:object size:0x1 data:byte +BGM_CROSS_FADEIN_TIME__7Z2Param = .sdata:0x80452821; // type:object size:0x1 data:byte +BGM_CROSS_FADEOUT_TIME__7Z2Param = .sdata:0x80452822; // type:object size:0x1 data:byte +BATTLE_BGM_WAIT_TIME__7Z2Param = .sdata:0x80452823; // type:object size:0x1 data:byte +FOUND_TRACK_FI_TIME__7Z2Param = .sdata:0x80452824; // type:object size:0x1 data:byte +FOUND_TRACK_FO_TIME__7Z2Param = .sdata:0x80452825; // type:object size:0x1 data:byte +CLOSE_BATTLE_TRACK_FI_TIME__7Z2Param = .sdata:0x80452826; // type:object size:0x1 data:byte +CLOSE_BATTLE_TRACK_FO_TIME__7Z2Param = .sdata:0x80452827; // type:object size:0x1 data:byte +ENDING_BLOW_VOL_DOWN_TIME__7Z2Param = .sdata:0x80452828; // type:object size:0x1 data:byte +ENDING_BLOW_VOL_LOWER_TIME__7Z2Param = .sdata:0x80452829; // type:object size:0x1 data:byte +ENDING_BLOW_VOL_LOWER_RECOVER_TIME__7Z2Param = .sdata:0x8045282A; // type:object size:0x1 data:byte +ENDING_BLOW_MIN_FINISH_TIME__7Z2Param = .sdata:0x8045282B; // type:object size:0x1 data:byte data_8045086C = .sdata:0x8045282C; // type:object size:0x1 data:byte sDeathMtBottom = .sdata:0x80452830; // type:object size:0x4 scope:global align:4 data:float sDeathMtTop = .sdata:0x80452834; // type:object size:0x4 scope:global align:4 data:float @@ -22120,10 +22120,9 @@ init$80 = .sbss:0x804532F8; // type:object size:0x1 data:byte oRandom$401 = .sbss:0x804532FC; // type:object size:0x4 scope:local align:4 data:4byte MIN_DISTANCE_VOLUME__7Z2Param = .sbss:0x80453300; // type:object size:0x4 scope:global align:4 data:float ENEMY_LASTHIT_MUTE_VOLUME__7Z2Param = .sbss:0x80453304; // type:object size:0x4 scope:global align:4 data:float -struct_80451340 = .sbss:0x80453308; // type:object size:0x1 data:byte -struct_80451341 = .sbss:0x80453309; // type:object size:0x1 data:byte -struct_80451342 = .sbss:0x8045330A; // type:object size:0x1 data:byte -pad_8045330C = .sbss:0x8045330C; // type:object size:0x4 scope:global align:4 +DARK_SE_FILTER_ON__7Z2Param = .sbss:0x80453308; // type:object size:0x1 data:byte +DARK_SE_LOW_PASS_FILTER_SETTING__7Z2Param = .sbss:0x80453309; // type:object size:0x1 data:byte +SYSTEM_SE_USE_DARK_SE_SETTING__7Z2Param = .sbss:0x8045330A; // type:object size:0x1 data:byte init$localstatic4$getMemPool___39JASPoolAllocObject<17Z2SoundHandlePool>Fv = .sbss:0x80453310; // type:object size:0x1 scope:global align:1 data:byte cNearFarRatio = .sbss:0x80453318; // type:object size:0x4 scope:global align:4 data:float init$localstatic4$getMemPool___30JASPoolAllocObject<9Z2Audible>Fv = .sbss:0x8045331C; // type:object size:0x1 scope:global data:byte diff --git a/config/RZDE01_00/symbols.txt b/config/RZDE01_00/symbols.txt index c3b9c1eca9..c7bf4493b1 100644 --- a/config/RZDE01_00/symbols.txt +++ b/config/RZDE01_00/symbols.txt @@ -27547,18 +27547,18 @@ VOL_SE_CHAR_VOICE_PAUSING__7Z2Param = .sdata:0x80539B98; // type:object size:0x4 VOL_SE_CHAR_MOVE_PAUSING__7Z2Param = .sdata:0x80539B9C; // type:object size:0x4 scope:global align:4 data:float VOL_SE_OBJECT_PAUSING__7Z2Param = .sdata:0x80539BA0; // type:object size:0x4 scope:global align:4 data:float VOL_SE_ATMOSPHERE_PAUSING__7Z2Param = .sdata:0x80539BA4; // type:object size:0x4 scope:global align:4 data:float -lbl_80539BA8 = .sdata:0x80539BA8; // type:object size:0x1 data:byte -lbl_80539BA9 = .sdata:0x80539BA9; // type:object size:0x1 data:byte -lbl_80539BAA = .sdata:0x80539BAA; // type:object size:0x1 data:byte -lbl_80539BAB = .sdata:0x80539BAB; // type:object size:0x1 data:byte -lbl_80539BAC = .sdata:0x80539BAC; // type:object size:0x1 data:byte -lbl_80539BAD = .sdata:0x80539BAD; // type:object size:0x1 data:byte -lbl_80539BAE = .sdata:0x80539BAE; // type:object size:0x1 data:byte -lbl_80539BAF = .sdata:0x80539BAF; // type:object size:0x1 data:byte -lbl_80539BB0 = .sdata:0x80539BB0; // type:object size:0x1 data:byte -lbl_80539BB1 = .sdata:0x80539BB1; // type:object size:0x1 data:byte -lbl_80539BB2 = .sdata:0x80539BB2; // type:object size:0x1 data:byte -lbl_80539BB3 = .sdata:0x80539BB3; // type:object size:0x1 data:byte +SCENE_CHANGE_BGM_FADEOUT_TIME__7Z2Param = .sdata:0x80539BA8; // type:object size:0x1 data:byte +BGM_CROSS_FADEIN_TIME__7Z2Param = .sdata:0x80539BA9; // type:object size:0x1 data:byte +BGM_CROSS_FADEOUT_TIME__7Z2Param = .sdata:0x80539BAA; // type:object size:0x1 data:byte +BATTLE_BGM_WAIT_TIME__7Z2Param = .sdata:0x80539BAB; // type:object size:0x1 data:byte +FOUND_TRACK_FI_TIME__7Z2Param = .sdata:0x80539BAC; // type:object size:0x1 data:byte +FOUND_TRACK_FO_TIME__7Z2Param = .sdata:0x80539BAD; // type:object size:0x1 data:byte +CLOSE_BATTLE_TRACK_FI_TIME__7Z2Param = .sdata:0x80539BAE; // type:object size:0x1 data:byte +CLOSE_BATTLE_TRACK_FO_TIME__7Z2Param = .sdata:0x80539BAF; // type:object size:0x1 data:byte +ENDING_BLOW_VOL_DOWN_TIME__7Z2Param = .sdata:0x80539BB0; // type:object size:0x1 data:byte +ENDING_BLOW_VOL_LOWER_TIME__7Z2Param = .sdata:0x80539BB1; // type:object size:0x1 data:byte +ENDING_BLOW_VOL_LOWER_RECOVER_TIME__7Z2Param = .sdata:0x80539BB2; // type:object size:0x1 data:byte +ENDING_BLOW_MIN_FINISH_TIME__7Z2Param = .sdata:0x80539BB3; // type:object size:0x1 data:byte lbl_80539BB4 = .sdata:0x80539BB4; // type:object size:0x1 data:byte __RTTI__16Z2AudioArcLoader = .sdata:0x80539BB8; // type:object size:0x8 scope:global align:4 __RTTI__17JAUAudioArcLoader = .sdata:0x80539BC0; // type:object size:0x8 scope:global align:4 @@ -28568,9 +28568,9 @@ lbl_8053B028 = .sbss:0x8053B028; // type:object size:0x1 data:byte oRandom$5639 = .sbss:0x8053B02C; // type:object size:0x4 scope:local align:4 data:4byte MIN_DISTANCE_VOLUME__7Z2Param = .sbss:0x8053B030; // type:object size:0x4 scope:global align:4 data:float ENEMY_LASTHIT_MUTE_VOLUME__7Z2Param = .sbss:0x8053B034; // type:object size:0x4 scope:global align:4 data:float -lbl_8053B038 = .sbss:0x8053B038; // type:object size:0x1 data:byte -lbl_8053B039 = .sbss:0x8053B039; // type:object size:0x1 data:byte -lbl_8053B03A = .sbss:0x8053B03A; // type:object size:0x1 data:byte +DARK_SE_FILTER_ON__7Z2Param = .sbss:0x8053B038; // type:object size:0x1 data:byte +DARK_SE_LOW_PASS_FILTER_SETTING__7Z2Param = .sbss:0x8053B039; // type:object size:0x1 data:byte +SYSTEM_SE_USE_DARK_SE_SETTING__7Z2Param = .sbss:0x8053B03A; // type:object size:0x1 data:byte JASGlobalInstance<10Z2EnvSeMgr>::sInstance = .sbss:0x8053B040; // type:object size:0x4 scope:global align:4 data:4byte lbl_8053B048 = .sbss:0x8053B048; // type:object size:0x1 data:byte cNearFarRatio = .sbss:0x8053B050; // type:object size:0x4 scope:global align:4 data:float diff --git a/config/RZDE01_02/symbols.txt b/config/RZDE01_02/symbols.txt index 5be0452433..7d820545a6 100644 --- a/config/RZDE01_02/symbols.txt +++ b/config/RZDE01_02/symbols.txt @@ -27085,18 +27085,18 @@ VOL_SE_CHAR_VOICE_PAUSING__7Z2Param = .sdata:0x8051FC40; // type:object size:0x4 VOL_SE_CHAR_MOVE_PAUSING__7Z2Param = .sdata:0x8051FC44; // type:object size:0x4 scope:global align:4 data:float VOL_SE_OBJECT_PAUSING__7Z2Param = .sdata:0x8051FC48; // type:object size:0x4 scope:global align:4 data:float VOL_SE_ATMOSPHERE_PAUSING__7Z2Param = .sdata:0x8051FC4C; // type:object size:0x4 scope:global align:4 data:float -lbl_8051FC50 = .sdata:0x8051FC50; // type:object size:0x1 data:byte -lbl_8051FC51 = .sdata:0x8051FC51; // type:object size:0x1 data:byte -lbl_8051FC52 = .sdata:0x8051FC52; // type:object size:0x1 data:byte -lbl_8051FC53 = .sdata:0x8051FC53; // type:object size:0x1 data:byte -lbl_8051FC54 = .sdata:0x8051FC54; // type:object size:0x1 data:byte -lbl_8051FC55 = .sdata:0x8051FC55; // type:object size:0x1 data:byte -lbl_8051FC56 = .sdata:0x8051FC56; // type:object size:0x1 data:byte -lbl_8051FC57 = .sdata:0x8051FC57; // type:object size:0x1 data:byte -lbl_8051FC58 = .sdata:0x8051FC58; // type:object size:0x1 data:byte -lbl_8051FC59 = .sdata:0x8051FC59; // type:object size:0x1 data:byte -lbl_8051FC5A = .sdata:0x8051FC5A; // type:object size:0x1 data:byte -lbl_8051FC5B = .sdata:0x8051FC5B; // type:object size:0x1 data:byte +SCENE_CHANGE_BGM_FADEOUT_TIME__7Z2Param = .sdata:0x8051FC50; // type:object size:0x1 data:byte +BGM_CROSS_FADEIN_TIME__7Z2Param = .sdata:0x8051FC51; // type:object size:0x1 data:byte +BGM_CROSS_FADEOUT_TIME__7Z2Param = .sdata:0x8051FC52; // type:object size:0x1 data:byte +BATTLE_BGM_WAIT_TIME__7Z2Param = .sdata:0x8051FC53; // type:object size:0x1 data:byte +FOUND_TRACK_FI_TIME__7Z2Param = .sdata:0x8051FC54; // type:object size:0x1 data:byte +FOUND_TRACK_FO_TIME__7Z2Param = .sdata:0x8051FC55; // type:object size:0x1 data:byte +CLOSE_BATTLE_TRACK_FI_TIME__7Z2Param = .sdata:0x8051FC56; // type:object size:0x1 data:byte +CLOSE_BATTLE_TRACK_FO_TIME__7Z2Param = .sdata:0x8051FC57; // type:object size:0x1 data:byte +ENDING_BLOW_VOL_DOWN_TIME__7Z2Param = .sdata:0x8051FC58; // type:object size:0x1 data:byte +ENDING_BLOW_VOL_LOWER_TIME__7Z2Param = .sdata:0x8051FC59; // type:object size:0x1 data:byte +ENDING_BLOW_VOL_LOWER_RECOVER_TIME__7Z2Param = .sdata:0x8051FC5A; // type:object size:0x1 data:byte +ENDING_BLOW_MIN_FINISH_TIME__7Z2Param = .sdata:0x8051FC5B; // type:object size:0x1 data:byte lbl_8051FC5C = .sdata:0x8051FC5C; // type:object size:0x1 data:byte __RTTI__16Z2AudioArcLoader = .sdata:0x8051FC60; // type:object size:0x8 scope:global align:4 __RTTI__17JAUAudioArcLoader = .sdata:0x8051FC68; // type:object size:0x8 scope:global align:4 @@ -28088,9 +28088,9 @@ lbl_80521048 = .sbss:0x80521048; // type:object size:0x1 data:byte oRandom$5639 = .sbss:0x8052104C; // type:object size:0x4 scope:global align:4 data:4byte MIN_DISTANCE_VOLUME__7Z2Param = .sbss:0x80521050; // type:object size:0x4 scope:global align:4 data:float ENEMY_LASTHIT_MUTE_VOLUME__7Z2Param = .sbss:0x80521054; // type:object size:0x4 scope:global align:4 data:float -lbl_80521058 = .sbss:0x80521058; // type:object size:0x1 data:byte -lbl_80521059 = .sbss:0x80521059; // type:object size:0x1 data:byte -lbl_8052105A = .sbss:0x8052105A; // type:object size:0x1 data:byte +DARK_SE_FILTER_ON__7Z2Param = .sbss:0x80521058; // type:object size:0x1 data:byte +DARK_SE_LOW_PASS_FILTER_SETTING__7Z2Param = .sbss:0x80521059; // type:object size:0x1 data:byte +SYSTEM_SE_USE_DARK_SE_SETTING__7Z2Param = .sbss:0x8052105A; // type:object size:0x1 data:byte JASGlobalInstance<10Z2EnvSeMgr>::sInstance = .sbss:0x80521060; // type:object size:0x4 scope:global align:4 data:4byte lbl_80521068 = .sbss:0x80521068; // type:object size:0x1 data:byte cNearFarRatio = .sbss:0x80521070; // type:object size:0x4 scope:global align:4 data:float diff --git a/config/Shield/symbols.txt b/config/Shield/symbols.txt index 1733328cca..797b4a4194 100644 --- a/config/Shield/symbols.txt +++ b/config/Shield/symbols.txt @@ -24520,18 +24520,18 @@ VOL_SE_CHAR_VOICE_PAUSING__7Z2Param = .sdata:0x805078D8; // type:object size:0x4 VOL_SE_CHAR_MOVE_PAUSING__7Z2Param = .sdata:0x805078DC; // type:object size:0x4 scope:global align:4 data:float hash:0xCE286708 dhash:0xFB55995F VOL_SE_OBJECT_PAUSING__7Z2Param = .sdata:0x805078E0; // type:object size:0x4 scope:global align:4 data:float hash:0xCF6DE1AB dhash:0x54912ADC VOL_SE_ATMOSPHERE_PAUSING__7Z2Param = .sdata:0x805078E4; // type:object size:0x4 scope:global align:4 data:float hash:0xA94D3010 dhash:0x9D51AC27 -lbl_805078E8 = .sdata:0x805078E8; // type:object size:0x1 data:byte hash:0x15052019 dhash:0x39915D0E -lbl_805078E9 = .sdata:0x805078E9; // type:object size:0x1 data:byte hash:0xC3676195 dhash:0xE05F1922 -lbl_805078EA = .sdata:0x805078EA; // type:object size:0x1 data:byte hash:0x52632ADC dhash:0x723E2F0B -lbl_805078EB = .sdata:0x805078EB; // type:object size:0x1 data:byte hash:0x9748CE24 dhash:0xEC6F7E13 -lbl_805078EC = .sdata:0x805078EC; // type:object size:0x1 data:byte hash:0xCA0B5D4A dhash:0xDB9EC61D -lbl_805078ED = .sdata:0x805078ED; // type:object size:0x1 data:byte hash:0x839FEB03 dhash:0xC8FA0E74 -lbl_805078EE = .sdata:0x805078EE; // type:object size:0x1 data:byte hash:0x67F4C8C7 dhash:0x02C7E550 -lbl_805078EF = .sdata:0x805078EF; // type:object size:0x1 data:byte hash:0x500E4A2E dhash:0x35299619 -lbl_805078F0 = .sdata:0x805078F0; // type:object size:0x1 data:byte hash:0x3858E1B6 dhash:0x242E9F01 -lbl_805078F1 = .sdata:0x805078F1; // type:object size:0x1 data:byte hash:0x6FEF2A97 dhash:0x7DD57280 -lbl_805078F2 = .sdata:0x805078F2; // type:object size:0x1 data:byte hash:0x9BFEEDED dhash:0x048994DA -lbl_805078F3 = .sdata:0x805078F3; // type:object size:0x1 data:byte hash:0x60308D57 dhash:0x29003EA0 +SCENE_CHANGE_BGM_FADEOUT_TIME__7Z2Param = .sdata:0x805078E8; // type:object size:0x1 data:byte hash:0x15052019 dhash:0x39915D0E +BGM_CROSS_FADEIN_TIME__7Z2Param = .sdata:0x805078E9; // type:object size:0x1 data:byte hash:0xC3676195 dhash:0xE05F1922 +BGM_CROSS_FADEOUT_TIME__7Z2Param = .sdata:0x805078EA; // type:object size:0x1 data:byte hash:0x52632ADC dhash:0x723E2F0B +BATTLE_BGM_WAIT_TIME__7Z2Param = .sdata:0x805078EB; // type:object size:0x1 data:byte hash:0x9748CE24 dhash:0xEC6F7E13 +FOUND_TRACK_FI_TIME__7Z2Param = .sdata:0x805078EC; // type:object size:0x1 data:byte hash:0xCA0B5D4A dhash:0xDB9EC61D +FOUND_TRACK_FO_TIME__7Z2Param = .sdata:0x805078ED; // type:object size:0x1 data:byte hash:0x839FEB03 dhash:0xC8FA0E74 +CLOSE_BATTLE_TRACK_FI_TIME__7Z2Param = .sdata:0x805078EE; // type:object size:0x1 data:byte hash:0x67F4C8C7 dhash:0x02C7E550 +CLOSE_BATTLE_TRACK_FO_TIME__7Z2Param = .sdata:0x805078EF; // type:object size:0x1 data:byte hash:0x500E4A2E dhash:0x35299619 +ENDING_BLOW_VOL_DOWN_TIME__7Z2Param = .sdata:0x805078F0; // type:object size:0x1 data:byte hash:0x3858E1B6 dhash:0x242E9F01 +ENDING_BLOW_VOL_LOWER_TIME__7Z2Param = .sdata:0x805078F1; // type:object size:0x1 data:byte hash:0x6FEF2A97 dhash:0x7DD57280 +ENDING_BLOW_VOL_LOWER_RECOVER_TIME__7Z2Param = .sdata:0x805078F2; // type:object size:0x1 data:byte hash:0x9BFEEDED dhash:0x048994DA +ENDING_BLOW_MIN_FINISH_TIME__7Z2Param = .sdata:0x805078F3; // type:object size:0x1 data:byte hash:0x60308D57 dhash:0x29003EA0 lbl_805078F4 = .sdata:0x805078F4; // type:object size:0x1 data:byte hash:0x82BFE883 dhash:0xA278E154 __RTTI__16Z2AudioArcLoader = .sdata:0x805078F8; // type:object size:0x8 scope:global hash:0xB98066A6 dhash:0xEF406121 __RTTI__10Z2SoundMgr = .sdata:0x80507900; // type:object size:0x8 scope:global hash:0xE40A752C dhash:0xF66363ED @@ -25622,9 +25622,9 @@ lbl_80509150 = .sbss:0x80509150; // type:object size:0x1 data:byte hash:0x806ED4 @LOCAL@getRandom_0_1__6Z2CalcFv@oRandom = .sbss:0x80509154; // type:object size:0x4 scope:local data:4byte hash:0x7DCD9373 dhash:0xE7A72298 MIN_DISTANCE_VOLUME__7Z2Param = .sbss:0x80509158; // type:object size:0x4 scope:global align:4 data:float hash:0x5A1AF214 dhash:0xABFA8A63 ENEMY_LASTHIT_MUTE_VOLUME__7Z2Param = .sbss:0x8050915C; // type:object size:0x4 scope:global align:4 data:float hash:0x1A64D26E dhash:0x273033D9 -lbl_80509160 = .sbss:0x80509160; // type:object size:0x1 data:byte hash:0xE2277E38 -lbl_80509161 = .sbss:0x80509161; // type:object size:0x1 data:byte hash:0x5B87B670 -lbl_80509162 = .sbss:0x80509162; // type:object size:0x1 data:byte hash:0xEFFF5FD3 +DARK_SE_FILTER_ON__7Z2Param = .sbss:0x80509160; // type:object size:0x1 data:byte hash:0xE2277E38 +DARK_SE_LOW_PASS_FILTER_SETTING__7Z2Param = .sbss:0x80509161; // type:object size:0x1 data:byte hash:0x5B87B670 +SYSTEM_SE_USE_DARK_SE_SETTING__7Z2Param = .sbss:0x80509162; // type:object size:0x1 data:byte hash:0xEFFF5FD3 sInstance__31JASGlobalInstance<10Z2EnvSeMgr> = .sbss:0x80509168; // type:object size:0x4 scope:global data:4byte hash:0x8687139F dhash:0x08E6537C lbl_80509170 = .sbss:0x80509170; // type:object size:0x1 data:byte hash:0x198E0249 dhash:0x5B608565 cNearFarRatio = .sbss:0x80509178; // type:object size:0x4 scope:global align:4 data:float hash:0x3FC3124A diff --git a/config/ShieldD/symbols.txt b/config/ShieldD/symbols.txt index 34604cf9a2..805aa17aae 100644 --- a/config/ShieldD/symbols.txt +++ b/config/ShieldD/symbols.txt @@ -62473,21 +62473,21 @@ VOL_SE_CHAR_VOICE_PAUSING__7Z2Param = .sdata:0x80749300; // type:object size:0x4 VOL_SE_CHAR_MOVE_PAUSING__7Z2Param = .sdata:0x80749304; // type:object size:0x4 scope:global align:4 data:float hash:0xCE286708 dhash:0xFB55995F VOL_SE_OBJECT_PAUSING__7Z2Param = .sdata:0x80749308; // type:object size:0x4 scope:global align:4 data:float hash:0xCF6DE1AB dhash:0x54912ADC VOL_SE_ATMOSPHERE_PAUSING__7Z2Param = .sdata:0x8074930C; // type:object size:0x4 scope:global align:4 data:float hash:0xA94D3010 dhash:0x9D51AC27 -lbl_80749310 = .sdata:0x80749310; // type:object size:0x1 data:byte hash:0x15052019 dhash:0x39915D0E -lbl_80749311 = .sdata:0x80749311; // type:object size:0x1 data:byte hash:0xC3676195 dhash:0xE05F1922 -lbl_80749312 = .sdata:0x80749312; // type:object size:0x1 data:byte hash:0x52632ADC dhash:0x723E2F0B -lbl_80749313 = .sdata:0x80749313; // type:object size:0x1 data:byte hash:0x9748CE24 dhash:0xEC6F7E13 +SCENE_CHANGE_BGM_FADEOUT_TIME__7Z2Param = .sdata:0x80749310; // type:object size:0x1 data:byte hash:0x15052019 dhash:0x39915D0E +BGM_CROSS_FADEIN_TIME__7Z2Param = .sdata:0x80749311; // type:object size:0x1 data:byte hash:0xC3676195 dhash:0xE05F1922 +BGM_CROSS_FADEOUT_TIME__7Z2Param = .sdata:0x80749312; // type:object size:0x1 data:byte hash:0x52632ADC dhash:0x723E2F0B +BATTLE_BGM_WAIT_TIME__7Z2Param = .sdata:0x80749313; // type:object size:0x1 data:byte hash:0x9748CE24 dhash:0xEC6F7E13 ENEMY_NEARBY_DIST__7Z2Param = .sdata:0x80749314; // type:object size:0x4 scope:global hash:0xD7C59146 dhash:0x5A4A0B71 BATTLE_FADEIN_DIST__7Z2Param = .sdata:0x80749318; // type:object size:0x4 scope:global hash:0x7EF81CD4 dhash:0xEC407643 BATTLE_FADEOUT_DIST__7Z2Param = .sdata:0x8074931C; // type:object size:0x4 scope:global hash:0x4CA2E3BD dhash:0xA8E2610A -lbl_80749320 = .sdata:0x80749320; // type:object size:0x1 data:byte hash:0xCA0B5D4A dhash:0xDB9EC61D -lbl_80749321 = .sdata:0x80749321; // type:object size:0x1 data:byte hash:0x839FEB03 dhash:0xC8FA0E74 -lbl_80749322 = .sdata:0x80749322; // type:object size:0x1 data:byte hash:0x67F4C8C7 dhash:0x02C7E550 -lbl_80749323 = .sdata:0x80749323; // type:object size:0x1 data:byte hash:0x500E4A2E dhash:0x35299619 -lbl_80749324 = .sdata:0x80749324; // type:object size:0x1 data:byte hash:0x3858E1B6 dhash:0x242E9F01 -lbl_80749325 = .sdata:0x80749325; // type:object size:0x1 data:byte hash:0x6FEF2A97 dhash:0x7DD57280 -lbl_80749326 = .sdata:0x80749326; // type:object size:0x1 data:byte hash:0x9BFEEDED dhash:0x048994DA -lbl_80749327 = .sdata:0x80749327; // type:object size:0x1 data:byte hash:0x60308D57 dhash:0x29003EA0 +FOUND_TRACK_FI_TIME__7Z2Param = .sdata:0x80749320; // type:object size:0x1 data:byte hash:0xCA0B5D4A dhash:0xDB9EC61D +FOUND_TRACK_FO_TIME__7Z2Param = .sdata:0x80749321; // type:object size:0x1 data:byte hash:0x839FEB03 dhash:0xC8FA0E74 +CLOSE_BATTLE_TRACK_FI_TIME__7Z2Param = .sdata:0x80749322; // type:object size:0x1 data:byte hash:0x67F4C8C7 dhash:0x02C7E550 +CLOSE_BATTLE_TRACK_FO_TIME__7Z2Param = .sdata:0x80749323; // type:object size:0x1 data:byte hash:0x500E4A2E dhash:0x35299619 +ENDING_BLOW_VOL_DOWN_TIME__7Z2Param = .sdata:0x80749324; // type:object size:0x1 data:byte hash:0x3858E1B6 dhash:0x242E9F01 +ENDING_BLOW_VOL_LOWER_TIME__7Z2Param = .sdata:0x80749325; // type:object size:0x1 data:byte hash:0x6FEF2A97 dhash:0x7DD57280 +ENDING_BLOW_VOL_LOWER_RECOVER_TIME__7Z2Param = .sdata:0x80749326; // type:object size:0x1 data:byte hash:0x9BFEEDED dhash:0x048994DA +ENDING_BLOW_MIN_FINISH_TIME__7Z2Param = .sdata:0x80749327; // type:object size:0x1 data:byte hash:0x60308D57 dhash:0x29003EA0 lbl_80749328 = .sdata:0x80749328; // type:object size:0x1 data:byte hash:0x82BFE883 dhash:0xA278E154 AUDIBLE_DELTA_RANGE_VOLUME__7Z2Param = .sdata:0x8074932C; // type:object size:0x4 scope:global hash:0x3AC3D937 dhash:0x551FABA0 AUDIBLE_DELTA_RANGE_PAN__7Z2Param = .sdata:0x80749330; // type:object size:0x4 scope:global hash:0x9BFA8A00 dhash:0x3F2182F7 @@ -64782,9 +64782,9 @@ lbl_8074CDA8 = .sbss:0x8074CDA8; // type:object size:0x1 data:byte hash:0x806ED4 @LOCAL@getRandom_0_1__6Z2CalcFv@oRandom = .sbss:0x8074CDAC; // type:object size:0x4 scope:local hash:0x7DCD9373 dhash:0xE7A72298 MIN_DISTANCE_VOLUME__7Z2Param = .sbss:0x8074CDB0; // type:object size:0x4 scope:global align:4 data:float hash:0x5A1AF214 dhash:0xABFA8A63 ENEMY_LASTHIT_MUTE_VOLUME__7Z2Param = .sbss:0x8074CDB4; // type:object size:0x4 scope:global align:4 data:float hash:0x1A64D26E dhash:0x273033D9 -lbl_8074CDB8 = .sbss:0x8074CDB8; // type:object size:0x1 data:byte hash:0xE2277E38 -lbl_8074CDB9 = .sbss:0x8074CDB9; // type:object size:0x1 data:byte hash:0x5B87B670 -lbl_8074CDBA = .sbss:0x8074CDBA; // type:object size:0x1 data:byte hash:0xEFFF5FD3 +DARK_SE_FILTER_ON__7Z2Param = .sbss:0x8074CDB8; // type:object size:0x1 data:byte hash:0xE2277E38 +DARK_SE_LOW_PASS_FILTER_SETTING__7Z2Param = .sbss:0x8074CDB9; // type:object size:0x1 data:byte hash:0x5B87B670 +SYSTEM_SE_USE_DARK_SE_SETTING__7Z2Param = .sbss:0x8074CDBA; // type:object size:0x1 data:byte hash:0xEFFF5FD3 sInstance__31JASGlobalInstance<10Z2EnvSeMgr> = .sbss:0x8074CDC0; // type:object size:0x4 scope:global data:4byte hash:0x8687139F dhash:0x08E6537C lbl_8074CDC8 = .sbss:0x8074CDC8; // type:object size:0x1 data:byte hash:0x198E0249 dhash:0x5B608565 cNearFarRatio = .sbss:0x8074CDD0; // type:object size:0x4 scope:global align:4 data:float hash:0x3FC3124A diff --git a/include/JSystem/JAudio2/JAISe.h b/include/JSystem/JAudio2/JAISe.h index e34cd71c45..6accefb8fc 100644 --- a/include/JSystem/JAudio2/JAISe.h +++ b/include/JSystem/JAudio2/JAISe.h @@ -37,17 +37,17 @@ public: /* 8029F868 */ virtual JAITempoMgr* getTempoMgr(); /* 8029F5C8 */ virtual bool JAISound_tryDie_(); - /* 8029F03C */ JAISe(JAISeMgr*, JAISoundStrategyMgr*, u32); - /* 8029F0F8 */ void mixOut_(JASSoundParams const&); + /* 8029F03C */ JAISe(JAISeMgr* seMgr, JAISoundStrategyMgr* soundStrategyMgr, u32 priority); + /* 8029F0F8 */ void mixOut_(const JASSoundParams& params); /* 8029F214 */ void stopTrack_(); - /* 8029F250 */ void startTrack_(JASSoundParams const&); - /* 8029F304 */ void JAISeCategoryMgr_mixOut_(bool, JASSoundParams const&, JAISoundActivity); + /* 8029F250 */ void startTrack_(const JASSoundParams& params); + /* 8029F304 */ void JAISeCategoryMgr_mixOut_(bool, const JASSoundParams& params, JAISoundActivity activity); /* 8029F4CC */ void JAISeCategoryMgr_calc_(); - /* 8029F650 */ void JAISeMgr_startID_(JAISoundID, JGeometry::TVec3 const*, JAIAudience*); + /* 8029F650 */ void JAISeMgr_startID_(JAISoundID id, const JGeometry::TVec3* posPtr, JAIAudience* audience); /* 8029F6EC */ bool prepare_getSeqData_(); /* 8029F78C */ void prepare_(); - JAISeqData* getSeqData() { return &inner_.mSeqData; } + const JAISeqData* getSeqData() const { return &inner_.mSeqData; } u32 JAISeCategoryMgr_getProperPriority_() const { return inner_.mProperPriority; } u32 JAISeCategoryMgr_getPriority_() const { return inner_.mPriority; } bool isFarAway() const { return inner_.mPriority == -1; } diff --git a/include/JSystem/JAudio2/JAISeMgr.h b/include/JSystem/JAudio2/JAISeMgr.h index 37e530c925..733d7ee66c 100644 --- a/include/JSystem/JAudio2/JAISeMgr.h +++ b/include/JSystem/JAudio2/JAISeMgr.h @@ -12,6 +12,8 @@ struct JASSoundParams; * */ struct JASNonCopyable { + JASNonCopyable() {} + /* 0x0 */ int field_0x0; }; // Size: 0x4 @@ -38,40 +40,43 @@ class JAISeMgr; * @ingroup jsystem-jaudio * */ -class JAISeCategoryMgr : public JAISeqDataUser { +class JAISeCategoryMgr : public JAISeqDataUser, public JASNonCopyable { public: /* 8029F9C4 */ void JAISeMgr_calc_(); /* 8029FB30 */ void JAISeMgr_freeDeadSe_(); - /* 8029FC88 */ bool JAISeMgr_acceptsNewSe_(u32) const; + /* 8029FC88 */ bool JAISeMgr_acceptsNewSe_(u32 priority) const; /* 8029FD40 */ void sortByPriority_(); - /* 8029FDE0 */ void stop(u32); + /* 8029FDE0 */ void stop(u32 fadeTime); /* 8029FE34 */ void stop(); - /* 8029FE78 */ void stopSoundID(JAISoundID); + /* 8029FE78 */ void stopSoundID(JAISoundID id); /* 8029FEEC */ void pause(bool); - /* 8029FF18 */ void JAISeMgr_mixOut_(JAISoundParamsMove const&, JAISoundActivity); + /* 8029FF18 */ void JAISeMgr_mixOut_(const JAISoundParamsMove& params, JAISoundActivity activity); /* 802A0994 */ JAISeCategoryMgr() { mParams.init(); mMaxActiveSe = 0; mMaxInactiveSe = 0; - field_0x4.field_0x0 = 0; + field_0x0 = 0; } - /* 8029F8B0 */ virtual bool isUsingSeqData(JAISeqDataRegion const&); - /* 8029F91C */ virtual int releaseSeqData(JAISeqDataRegion const&); + /* 8029F8B0 */ virtual bool isUsingSeqData(const JAISeqDataRegion& seqDataRegion); + /* 8029F91C */ virtual int releaseSeqData(const JAISeqDataRegion& seqDataRegion); JAISoundParamsMove* getParams() { return &mParams; } int getMaxSe() const { - return (mMaxActiveSe == 0) ? 0 : mMaxActiveSe + mMaxInactiveSe; + if (mMaxActiveSe == 0) { + return 0; + } + + return mMaxActiveSe + mMaxInactiveSe; } int getMaxActiveSe() const { return mMaxActiveSe; } - void setMaxActiveSe(int se) { mMaxActiveSe = se; } - void setMaxInactiveSe(int se) { mMaxInactiveSe = se; } - JSUList* getSeList() { return &mSeList; } + void setMaxActiveSe(int num) { mMaxActiveSe = num; } + void setMaxInactiveSe(int num) { mMaxInactiveSe = num; } + const JSUList* getSeList() const { return &mSeList; } int getNumSe() const { return mSeList.getNumLinks(); } - JAIAudience* getAudience() { return (JAIAudience*)field_0x4.field_0x0; } + JAIAudience* getAudience() { return (JAIAudience*)field_0x0; } void JAISeMgr_appendSe_(JAISe* se) { mSeList.append(se); } - /* 0x04 */ JASNonCopyable field_0x4; /* 0x08 */ JAISoundParamsMove mParams; /* 0x58 */ JSUList mSeList; /* 0x64 */ int mMaxInactiveSe; @@ -86,27 +91,28 @@ class JAISeMgr : public JASGlobalInstance, public JAISeqDataUser, public JAISoundActivity { public: - /* 802A0074 */ JAISeMgr(bool); - /* 802A0268 */ void setCategoryArrangement(JAISeCategoryArrangement const&); + /* 802A0074 */ JAISeMgr(bool setInstance); + /* 802A0268 */ void setCategoryArrangement(const JAISeCategoryArrangement& arrangement); /* 802A02A0 */ void stop(); - /* 802A02F4 */ void stopSoundID(JAISoundID); + /* 802A02F4 */ void stopSoundID(JAISoundID id); /* 802A0358 */ void initParams(); - /* 802A03D8 */ void setAudience(JAIAudience*); - /* 802A03E0 */ void setSeqDataMgr(JAISeqDataMgr*); + /* 802A03D8 */ void setAudience(JAIAudience* audience); + /* 802A03E0 */ void setSeqDataMgr(JAISeqDataMgr* seqDataMgr); /* 802A0434 */ void resetSeqDataMgr(); - /* 802A0484 */ JAISe* newSe_(int, u32); + /* 802A0484 */ JAISe* newSe_(int category, u32 priority); /* 802A0574 */ void calc(); /* 802A0704 */ void mixOut(); - /* 802A0768 */ bool startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*); + /* 802A0768 */ bool startSound(JAISoundID id, JAISoundHandle* handle, const JGeometry::TVec3* posPtr); /* 802A08D0 */ int getNumActiveSe() const; - /* 802A0168 */ virtual bool isUsingSeqData(JAISeqDataRegion const&); - /* 802A01D8 */ virtual int releaseSeqData(JAISeqDataRegion const&); + /* 802A0168 */ virtual bool isUsingSeqData(const JAISeqDataRegion& seqDataRegion); + /* 802A01D8 */ virtual int releaseSeqData(const JAISeqDataRegion& seqDataRegion); - JAISeCategoryMgr* getCategory(int categoryIndex) { return &mCategoryMgrs[categoryIndex]; } - JAIAudience* getAudience(int categoryIndex) { - if (categoryIndex >= 0 && categoryIndex < 16) { - JAIAudience* rv = mCategoryMgrs[categoryIndex].getAudience(); + JAISeCategoryMgr* getCategory(int index) { return &mCategoryMgrs[index]; } + JAIAudience* getAudience() { return mAudience; } + JAIAudience* getAudience(int index) { + if (index >= 0 && index < NUM_CATEGORIES) { + JAIAudience* rv = mCategoryMgrs[index].getAudience(); if (rv) return rv; } return mAudience; @@ -114,11 +120,15 @@ public: JAISeqDataMgr* getSeqDataMgr() { return mSeqDataMgr; } JAISoundParamsMove* getParams() { return &mParams; } + bool isActive() const { return getNumActiveSe() > 0; } + + static const int NUM_CATEGORIES = 16; + private: /* 0x008 */ JAIAudience* mAudience; /* 0x00C */ JAISeqDataMgr* mSeqDataMgr; /* 0x010 */ JAISoundStrategyMgr* mStrategyMgr; - /* 0x014 */ JAISeCategoryMgr mCategoryMgrs[16]; + /* 0x014 */ JAISeCategoryMgr mCategoryMgrs[NUM_CATEGORIES]; /* 0x6D4 */ JAISoundParamsMove mParams; }; // Size: 0x724 diff --git a/include/JSystem/JAudio2/JAISeq.h b/include/JSystem/JAudio2/JAISeq.h index 469212b890..b1f602b7aa 100644 --- a/include/JSystem/JAudio2/JAISeq.h +++ b/include/JSystem/JAudio2/JAISeq.h @@ -14,12 +14,14 @@ class JAISoundChild; */ class JAISeq : public JASPoolAllocObject, public JAISound, public JSULink { public: + static const int NUM_CHILDREN = 32; + class TInner { public: TInner() : mSeqData(NULL, 0) {} /* 0x000 */ JASTrack outputTrack; - /* 0x248 */ JAISoundChild* mSoundChild[32]; + /* 0x248 */ JAISoundChild* mSoundChild[NUM_CHILDREN]; /* 0x2C8 */ JAITempoMgr mTempoMgr; /* 0x2D8 */ JASSoundParams mSoundParams; /* 0x2EC */ JAISeqData mSeqData; @@ -29,30 +31,30 @@ public: }; /* 802A1570 */ virtual s32 getNumChild() const; - /* 802A1578 */ virtual JAISoundChild* getChild(int); - /* 802A165C */ virtual void releaseChild(int); + /* 802A1578 */ virtual JAISoundChild* getChild(int index); + /* 802A165C */ virtual void releaseChild(int index); /* 802A1768 */ virtual JAISeq* asSeq(); /* 802A1728 */ virtual JASTrack* getTrack(); /* 802A1730 */ virtual JASTrack* getChildTrack(int); /* 802A176C */ virtual JAITempoMgr* getTempoMgr(); /* 802A12BC */ virtual bool JAISound_tryDie_(); - /* 802A0A8C */ JAISeq(JAISeqMgr*, JAISoundStrategyMgr*); - /* 802A0B64 */ void JAISeqMgr_startID_(JAISoundID, JGeometry::TVec3 const*, JAIAudience*, - int, int); - /* 802A0C04 */ void playSeqData_(JASSoundParams const&, JAISoundActivity); + /* 802A0A8C */ JAISeq(JAISeqMgr* seqMgr, JAISoundStrategyMgr* soundStrategyMgr); + /* 802A0B64 */ void JAISeqMgr_startID_(JAISoundID id, const JGeometry::TVec3* posPtr, JAIAudience* audience, + int category, int); + /* 802A0C04 */ void playSeqData_(const JASSoundParams& params, JAISoundActivity activity); /* 802A0CA4 */ void reserveChildTracks_(int); /* 802A0E48 */ void releaseChildTracks_(); /* 802A0EDC */ bool prepare_getSeqData_(); - /* 802A0F90 */ bool prepare_(JASSoundParams const&, JAISoundActivity); + /* 802A0F90 */ bool prepare_(const JASSoundParams& params, JAISoundActivity activity); /* 802A108C */ void JAISeqMgr_calc_(); /* 802A1180 */ void die_(); - /* 802A1348 */ void mixOut_(JASSoundParams const&, JAISoundActivity); - /* 802A14FC */ void JAISeqMgr_mixOut_(JASSoundParams const&, JAISoundActivity); + /* 802A1348 */ void mixOut_(const JASSoundParams& params, JAISoundActivity activity); + /* 802A14FC */ void JAISeqMgr_mixOut_(const JASSoundParams& params, JAISoundActivity activity); JAISeqData& getSeqData() { return inner_.mSeqData; } - /* 0x0a8 */ TInner inner_; + /* 0x0A8 */ TInner inner_; /* 0x3A8 */ JAISoundStrategyMgr__unknown* field_0x3a8; }; diff --git a/include/JSystem/JAudio2/JAISeqDataMgr.h b/include/JSystem/JAudio2/JAISeqDataMgr.h index d4118ffd94..bbedc12a18 100644 --- a/include/JSystem/JAudio2/JAISeqDataMgr.h +++ b/include/JSystem/JAudio2/JAISeqDataMgr.h @@ -9,8 +9,8 @@ * */ struct JAISeqData { - JAISeqData(void* param_0, u32 param_1) { - field_0x0 = param_0; + JAISeqData(const void* param_0, u32 param_1) { + field_0x0 = (void*)param_0; field_0x4 = param_1; } @@ -28,7 +28,7 @@ struct JAISeqData { * */ struct JAISeqDataRegion { - bool intersects(JAISeqData& seqData) const { + bool intersects(const JAISeqData& seqData) const { if ((uintptr_t)addr + size < (uintptr_t)seqData.field_0x0) { return false; } diff --git a/include/JSystem/JAudio2/JAISeqMgr.h b/include/JSystem/JAudio2/JAISeqMgr.h index 6d4a116e4e..1357d7806c 100644 --- a/include/JSystem/JAudio2/JAISeqMgr.h +++ b/include/JSystem/JAudio2/JAISeqMgr.h @@ -18,29 +18,33 @@ public: RELEASE_SEQ_1 = 1, RELEASE_SEQ_2 = 2, }; - /* 802A1914 */ JAISeqMgr(bool); + /* 802A1914 */ JAISeqMgr(bool setInstance); /* 802A1A08 */ void freeDeadSeq_(); - /* 802A1B48 */ bool startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*); + /* 802A1B48 */ bool startSound(JAISoundID id, JAISoundHandle* handle, const JGeometry::TVec3* posPtr); /* 802A1C90 */ void calc(); /* 802A1DFC */ void stop(); - /* 802A1E3C */ void stop(u32); - /* 802A1E8C */ void stopSoundID(JAISoundID); + /* 802A1E3C */ void stop(u32 fadeTime); + /* 802A1E8C */ void stopSoundID(JAISoundID id); /* 802A1EFC */ void mixOut(); /* 802A1F58 */ JAISeq* beginStartSeq_(); - /* 802A1FE8 */ bool endStartSeq_(JAISeq*, JAISoundHandle*); + /* 802A1FE8 */ bool endStartSeq_(JAISeq* seq, JAISoundHandle* handle); /* 802A20F0 */ virtual ~JAISeqMgr() {} - /* 802A1804 */ virtual bool isUsingSeqData(JAISeqDataRegion const&); - /* 802A1870 */ virtual int releaseSeqData(JAISeqDataRegion const&); + /* 802A1804 */ virtual bool isUsingSeqData(const JAISeqDataRegion& seqDataRegion); + /* 802A1870 */ virtual int releaseSeqData(const JAISeqDataRegion& seqDataRegion); + + void setAudience(JAIAudience* audience) { mAudience = audience; } + JAIAudience* getAudience() { return mAudience; } - void setAudience(JAIAudience* param_0) { mAudience = param_0; } JAISeqDataMgr* getSeqDataMgr() { return seqDataMgr_; } - void setSeqDataMgr(JAISeqDataMgr* param_0) { + + void setSeqDataMgr(JAISeqDataMgr* seqDataMgr) { JUT_ASSERT(124, !isActive()); resetSeqDataMgr(); - seqDataMgr_ = param_0; + seqDataMgr_ = seqDataMgr; seqDataMgr_->setSeqDataUser(this); } + void resetSeqDataMgr() { JUT_ASSERT(131, !isActive()); if (seqDataMgr_) { @@ -48,10 +52,11 @@ public: seqDataMgr_ = NULL; } } + JAISoundParamsMove* getParams() { return &mMove; } - bool isActive() { return mSeqList.getNumLinks() != 0; } + bool isActive() const { return mSeqList.getNumLinks() != 0; } int getNumActiveSeqs() const { return mSeqList.getNumLinks(); } - void pause(bool i_pause) { mActivity.field_0x0.flags.flag2 = i_pause; } + void pause(bool paused) { mActivity.field_0x0.flags.flag2 = paused; } private: /* 0x04 */ JAISoundActivity mActivity; diff --git a/include/JSystem/JAudio2/JAISound.h b/include/JSystem/JAudio2/JAISound.h index 6e4c8ab597..10c1eee3a2 100644 --- a/include/JSystem/JAudio2/JAISound.h +++ b/include/JSystem/JAudio2/JAISound.h @@ -3,6 +3,7 @@ #include "JSystem/JAudio2/JAISoundParams.h" #include "JSystem/JAudio2/JAIAudible.h" +#include "JSystem/JUtility/JUTAssert.h" #include "global.h" /** @@ -11,31 +12,30 @@ */ class JAISoundID { public: - operator u32() const { return this->mId.mFullId; } + operator u32() const { return id_.composite_; } - JAISoundID(u32 pId) { mId.mFullId = pId; }; + JAISoundID(u32 id) { id_.composite_ = id; }; - JAISoundID(JAISoundID const& other) { mId.mFullId = other.mId.mFullId; }; + JAISoundID(const JAISoundID& other) { id_.composite_ = other.id_.composite_; }; JAISoundID() {} - bool isAnonymous() const { return mId.mFullId == 0xffffffff; } - void setAnonymous() { mId.mFullId = -1; } + bool isAnonymous() const { return id_.composite_ == 0xFFFFFFFF; } + void setAnonymous() { id_.composite_ = 0xFFFFFFFF; } union { - u32 mFullId; + u32 composite_; struct { - u8 b0; - u8 b1; - u8 b2; - u8 b3; - } mBytes; - struct { - u16 mSoundType; - u16 mShortId; - } mAdvancedId; // Debug doesn't have an inline for referencing the short ID so I assume - // it's similar to this - } mId; + union { + u16 value; + struct { + u8 sectionID; + u8 groupID; + } parts; + } type; + u16 waveID; + } info; + } id_; }; class JASTrack; @@ -52,16 +52,16 @@ struct JAISoundStatus_ { field_0x0.value = 0; field_0x1.value = 0; *((u16*)&state) = 0; - user_data = 0; + userdata_ = 0; } - bool isAlive() { return state.unk != 6; } - bool isDead() { return state.unk == 6;} + bool isAlive() const { return state.unk != 6; } + bool isDead() const { return state.unk == 6;} - inline bool isPlaying() { return state.unk == 5; } - bool isPrepared() { return state.unk >= 3; } - inline bool isMute() { return field_0x0.flags.mute; } - inline bool isPaused() { return field_0x0.flags.paused; } + bool isPlaying() const { return state.unk == 5; } + bool isPrepared() const { return state.unk >= 3; } + bool isMute() const { return field_0x0.flags.mute; } + bool isPaused() const { return field_0x0.flags.paused; } void pauseWhenOut() { field_0x1.flags.flag6 = 1; } @@ -96,7 +96,7 @@ struct JAISoundStatus_ { u8 unk; struct { u8 flag1 : 1; - u8 flag2 : 1; + u8 calcedOnce : 1; u8 animationState : 2; u8 flag5 : 1; u8 flag6 : 1; @@ -104,7 +104,7 @@ struct JAISoundStatus_ { u8 flag8 : 1; } flags; } state; - /* 0x4 */ u32 user_data; + /* 0x4 */ u32 userdata_; }; // Size: 0x8 /** @@ -113,38 +113,44 @@ struct JAISoundStatus_ { */ struct JAISoundFader { void forceIn() { - mIntensity = 1.0f; + value_ = 1.0f; mTransition.zero(); } + void forceOut() { - mIntensity = 0.0f; + value_ = 0.0f; mTransition.zero(); } - void fadeOut(u32 fadeCount) { - if (fadeCount != 0) { - mTransition.set(0.0f, mIntensity, fadeCount); + + void fadeOut(u32 maxSteps) { + if (maxSteps != 0) { + mTransition.set(0.0f, value_, maxSteps); } else { forceOut(); } } - void fadeIn(u32 param_1) { - if (param_1 != 0) { - mTransition.set(1.0f, mIntensity, param_1); + + void fadeIn(u32 maxSteps) { + if (maxSteps != 0) { + mTransition.set(1.0f, value_, maxSteps); } else { forceIn(); } } - void fadeInFromOut(u32 param_1) { - mIntensity = 0.0f; - fadeIn(param_1); - } - bool isOut() { - return (mTransition.mCount == 0 && mIntensity < 0.01f); - } - inline void calc() { mIntensity = mTransition.apply(mIntensity); } - f32 getIntensity() { return mIntensity; } - /* 0x00 */ f32 mIntensity; + void fadeInFromOut(u32 maxSteps) { + value_ = 0.0f; + fadeIn(maxSteps); + } + + bool isOut() const { + return (mTransition.remainingSteps_ == 0 && value_ < 0.01f); + } + + void calc() { value_ = mTransition.apply(value_); } + f32 getIntensity() const { return value_; } + + /* 0x00 */ f32 value_; /* 0x04 */ JAISoundParamsTransition::TTransition mTransition; }; // Size: 0x10 @@ -169,12 +175,6 @@ struct JAISoundStrategyMgr { virtual JAISoundStrategyMgr__unknown* calc(JAISoundID); virtual void virtual4(JAISoundStrategyMgr__unknown*); }; -/* JAISoundStrategyMgr */ -struct JAISoundStrategyMgr__template0 {}; -/* JAISoundStrategyMgr */ -struct JAISoundStrategyMgr__template1 {}; -/* JAISoundStrategyMgr */ -struct JAISoundStrategyMgr__template2 {}; /** * @ingroup jsystem-jaudio @@ -205,17 +205,17 @@ public: */ class JAITempoMgr { public: - /* 0x00 */ f32 mTempo; - /* 0x04 */ JAISoundParamsTransition::TTransition field_0x4; + /* 0x00 */ f32 tempo_; + /* 0x04 */ JAISoundParamsTransition::TTransition transition_; JAITempoMgr() { init(); } void init() { setTempo(1.0f); } - void setTempo(f32 param_0) { - mTempo = param_0; - field_0x4.zero(); + void setTempo(f32 tempo) { + tempo_ = tempo; + transition_.zero(); } - f32 getTempo() { return mTempo; } - void calc() { mTempo = field_0x4.apply(mTempo); } + f32 getTempo() const { return tempo_; } + void calc() { tempo_ = transition_.apply(tempo_); } }; class JAISoundHandle; @@ -234,18 +234,18 @@ class JAITempoMgr; class JAISound { public: /* 802A21A0 */ void releaseHandle(); - /* 802A21BC */ void attachHandle(JAISoundHandle*); + /* 802A21BC */ void attachHandle(JAISoundHandle* handle); /* 802A22F8 */ JAISound(); - /* 802A2328 */ void start_JAISound_(JAISoundID, JGeometry::TVec3 const*, JAIAudience*); + /* 802A2328 */ void start_JAISound_(JAISoundID id, const JGeometry::TVec3* posPtr, JAIAudience* audience); /* 802A244C */ bool acceptsNewAudible() const; - /* 802A2474 */ void newAudible(JGeometry::TVec3 const&, JGeometry::TVec3 const*, u32, + /* 802A2474 */ void newAudible(const JGeometry::TVec3&, JGeometry::TVec3 const*, u32, JAIAudience*); /* 802A2598 */ void stop(); - /* 802A24DC */ void stop(u32 fadeout); + /* 802A24DC */ void stop(u32 fadeTime); /* 802A25F0 */ void die_JAISound_(); /* 802A266C */ void increasePrepareCount_JAISound_(); /* 802A26B8 */ bool calc_JAISound_(); - /* 802A29DC */ void initTrack_JAISound_(JASTrack*); + /* 802A29DC */ void initTrack_JAISound_(JASTrack* track); virtual s32 getNumChild() const = 0; virtual JAISoundChild* getChild(int) = 0; @@ -258,19 +258,24 @@ public: virtual JAITempoMgr* getTempoMgr() = 0; virtual bool JAISound_tryDie_() = 0; - JAISoundID getID() const { return soundID; } - u8 getAnimationState() const { return status_.state.flags.animationState; } + JAISoundID getID() const { return soundID_; } + u32 getAnimationState() const { return status_.state.flags.animationState; } bool isAnimated() const { return getAnimationState() != 0; } - void setAnimationState(u8 pState) { - status_.state.flags.animationState = pState; + void setAnimationState(u32 state) { + status_.state.flags.animationState = state; } - u32 getUserData() const { return status_.user_data; } - void setUserData(u32 pUserData) { status_.user_data = pUserData; } - JAIAudible* getAudible() const { return audible_; } + u32 getUserData() const { return status_.userdata_; } + void setUserData(u32 userData) { status_.userdata_ = userData; } + JAIAudible* getAudible() { return audible_; } bool isHandleAttached() const { return handle_ != NULL; } bool hasLifeTime() const { return status_.field_0x1.flags.flag2; } - void removeLifeTime_() { status_.field_0x1.flags.flag1 = false; } - bool isPrepared() { return status_.isPrepared(); } + + void removeLifeTime_() { + status_.field_0x1.flags.flag1 = false; + status_.field_0x1.flags.flag2 = 0; + } + + bool isPrepared() const { return status_.isPrepared(); } void unlockIfLocked() { status_.unlockIfLocked(); } void lockWhenPrepared() { status_.lockWhenPrepared(); } void stop_JAISound_() { @@ -278,65 +283,63 @@ public: status_.state.flags.flag1 = 1; } - bool isStopping() { - bool isStopping = false; - if (status_.state.flags.flag1) { - isStopping = !status_.state.flags.flag5 || fader.isOut(); - } - return isStopping; + bool isStopping() const { + return status_.state.flags.flag1 && (!status_.state.flags.flag5 || fader_.isOut()); } void pause(bool param_0) { status_.field_0x0.flags.paused = param_0; } - void updateLifeTime(u32 param_0) { - if (param_0 > lifeTime) { - lifeTime = param_0; + void updateLifeTime(u32 lifeTime) { + if (lifeTime > lifeTime_) { + lifeTime_ = lifeTime; } } - void setLifeTime(u32 param_0, bool param_1) { - lifeTime = param_0; + void setLifeTime(u32 lifeTime, bool param_1) { + JUT_ASSERT(333, status_.state.flags.calcedOnce == 0); + lifeTime_ = lifeTime; setComesBack(param_1); status_.field_0x1.flags.flag2 = 1; } void setComesBack(bool param_0) { + JUT_ASSERT(354, status_.state.flags.calcedOnce == 0); status_.field_0x1.flags.flag1 = 1; if (param_0) { status_.pauseWhenOut(); } } - bool setPos(const JGeometry::TVec3& param_1) { + bool setPos(const JGeometry::TVec3& pos) { if (audible_ != NULL) { - audible_->setPos(param_1); + audible_->setPos(pos); } return audible_ != NULL; } - JAISoundFader& getFader() { return fader; } - void fadeIn(u32 i_count) { fader.fadeInFromOut(i_count); } - void fadeOut(u32 i_count) { fader.fadeOut(i_count); } + JAISoundFader& getFader() { return fader_; } + void fadeIn(u32 maxSteps) { fader_.fadeInFromOut(maxSteps); } + void fadeOut(u32 maxSteps) { fader_.fadeOut(maxSteps); } - JAISoundParamsProperty& getProperty() { return params.mProperty; } + JAISoundParamsProperty& getProperty() { return params_.property_; } - s32 getCount() const { return mCount; } + s32 getCount() const { return count_; } - JAISoundParamsMove& getAuxiliary() { return params.mMove; } + JAISoundParamsMove& getAuxiliary() { return params_.move_; } /* 0x04 */ JAISoundHandle* handle_; /* 0x08 */ JAIAudible* audible_; /* 0x0C */ JAIAudience* audience_; - /* 0x10 */ u32 lifeTime; - /* 0x14 */ s32 prepareCount; - /* 0x18 */ JAISoundID soundID; + /* 0x10 */ u32 lifeTime_; + /* 0x14 */ s32 prepareCount_; + /* 0x18 */ JAISoundID soundID_; /* 0x1C */ JAISoundStatus_ status_; - /* 0x24 */ JAISoundFader fader; - /* 0x34 */ u32 mPriority; - /* 0x38 */ s32 mCount; - /* 0x3C */ JAISoundParams params; + /* 0x24 */ JAISoundFader fader_; + /* 0x34 */ u32 priority_; + /* 0x38 */ s32 count_; + /* 0x3C */ JAISoundParams params_; }; // Size: 0x98 STATIC_ASSERT(sizeof(JAISound) == 0x98); diff --git a/include/JSystem/JAudio2/JAISoundHandles.h b/include/JSystem/JAudio2/JAISoundHandles.h index f754e4976c..9bcd7de88a 100644 --- a/include/JSystem/JAudio2/JAISoundHandles.h +++ b/include/JSystem/JAudio2/JAISoundHandles.h @@ -18,6 +18,11 @@ public: bool isSoundAttached() const { return sound_ != NULL; } + JAISound* getSound() { + JUT_ASSERT(41, sound_ != NULL); + return sound_; + } + JAISound* operator->() const { JUT_ASSERT(58, sound_ != NULL); return sound_; @@ -27,9 +32,7 @@ public: void releaseSound(); - JAISound* getSound() { return sound_; } - - JAISound* sound_; // member from assert in operator->() + JAISound* sound_; }; /** @@ -38,18 +41,18 @@ public: */ class JAISoundHandles { public: - JAISoundHandles(JAISoundHandle* pHandle, int param_1) { - mSoundHandle = pHandle; - numHandles_ = param_1; + JAISoundHandles(JAISoundHandle* handle, int handleNum) { + handle_ = handle; + numHandles_ = handleNum; }; - JAISoundHandle& operator[](int n) { return mSoundHandle[n]; } + JAISoundHandle& operator[](int n) { return handle_[n]; } - JAISoundHandle* getHandleSoundID(JAISoundID); + JAISoundHandle* getHandleSoundID(JAISoundID id); JAISoundHandle* getFreeHandle(); private: - JAISoundHandle* mSoundHandle; + JAISoundHandle* handle_; int numHandles_; }; diff --git a/include/JSystem/JAudio2/JAISoundParams.h b/include/JSystem/JAudio2/JAISoundParams.h index 66daf59276..1e3189bd8b 100644 --- a/include/JSystem/JAudio2/JAISoundParams.h +++ b/include/JSystem/JAudio2/JAISoundParams.h @@ -26,56 +26,56 @@ struct JAISoundParamsProperty { struct JAISoundParamsTransition { struct TTransition { void zero() { - mStep = 0.0f; - mCount = 0; - mDest = 0.0f; + step_ = 0.0f; + remainingSteps_ = 0; + targetValue_ = 0.0f; } - void set(f32 newValue, f32 intensity, u32 fadeCount) { - mCount = fadeCount; - mStep = (newValue - intensity) / mCount; - mDest = newValue; + void set(f32 newValue, f32 currentValue, u32 maxSteps) { + remainingSteps_ = maxSteps; + step_ = (newValue - currentValue) / remainingSteps_; + targetValue_ = newValue; } - f32 apply(f32 param_0) { - if (mCount > 1) { - mCount--; - param_0 += mStep; + f32 apply(f32 value) { + if (remainingSteps_ > 1) { + remainingSteps_--; + value += step_; } else { - if (mCount == 1) { - mCount = 0; - param_0 = mDest; + if (remainingSteps_ == 1) { + remainingSteps_ = 0; + value = targetValue_; } } - return param_0; + return value; } - /* 0x0 */ f32 mStep; - /* 0x4 */ f32 mDest; - /* 0x8 */ u32 mCount; + /* 0x0 */ f32 step_; + /* 0x4 */ f32 targetValue_; + /* 0x8 */ u32 remainingSteps_; }; // Size: 0xC void init() { - mVolume.zero(); - mPitch.zero(); - mFxMix.zero(); - mPan.zero(); - mDolby.zero(); + volume_.zero(); + pitch_.zero(); + fxMix_.zero(); + pan_.zero(); + dolby_.zero(); } - void apply(JASSoundParams* pParams) { - pParams->mVolume = mVolume.apply(pParams->mVolume); - pParams->mPitch = mPitch.apply(pParams->mPitch); - pParams->mFxMix = mFxMix.apply(pParams->mFxMix); - pParams->mDolby = mDolby.apply(pParams->mDolby); - pParams->mPan = mPan.apply(pParams->mPan); + void apply(JASSoundParams* params) { + params->mVolume = volume_.apply(params->mVolume); + params->mPitch = pitch_.apply(params->mPitch); + params->mFxMix = fxMix_.apply(params->mFxMix); + params->mDolby = dolby_.apply(params->mDolby); + params->mPan = pan_.apply(params->mPan); } - /* 0x00 */ TTransition mVolume; - /* 0x0C */ TTransition mPitch; - /* 0x18 */ TTransition mFxMix; - /* 0x24 */ TTransition mPan; - /* 0x30 */ TTransition mDolby; + /* 0x00 */ TTransition volume_; + /* 0x0C */ TTransition pitch_; + /* 0x18 */ TTransition fxMix_; + /* 0x24 */ TTransition pan_; + /* 0x30 */ TTransition dolby_; }; // Size: 0x3C /** @@ -83,23 +83,23 @@ struct JAISoundParamsTransition { * */ struct JAISoundParamsMove { - JAISoundParamsMove() : mParams() {} + JAISoundParamsMove() : params_() {} void init() { - mParams.init(); - mTransition.init(); + params_.init(); + transition_.init(); } - void calc() { mTransition.apply(&mParams); } + void calc() { transition_.apply(¶ms_); } - /* 802A2DB4 */ void moveVolume(f32, u32); - /* 802A2E0C */ void movePitch(f32, u32); - /* 802A2E64 */ void moveFxMix(f32, u32); - /* 802A2EBC */ void movePan(f32, u32); - /* 802A2F14 */ void moveDolby(f32, u32); + /* 802A2DB4 */ void moveVolume(f32 newValue, u32 maxSteps); + /* 802A2E0C */ void movePitch(f32 newValue, u32 maxSteps); + /* 802A2E64 */ void moveFxMix(f32 newValue, u32 maxSteps); + /* 802A2EBC */ void movePan(f32 newValue, u32 maxSteps); + /* 802A2F14 */ void moveDolby(f32 newValue, u32 maxSteps); - /* 0x00 */ JASSoundParams mParams; - /* 0x14 */ JAISoundParamsTransition mTransition; + /* 0x00 */ JASSoundParams params_; + /* 0x14 */ JAISoundParamsTransition transition_; }; // Size: 0x50 /** @@ -107,17 +107,16 @@ struct JAISoundParamsMove { * */ struct JAISoundParams { - JAISoundParams() : mMove() {} - void mixOutAll(JASSoundParams const&, JASSoundParams*, f32); + JAISoundParams() : move_() {} + void mixOutAll(const JASSoundParams& inParams, JASSoundParams* outParams, f32); void init() { - mMove.init(); - mProperty.init(); + move_.init(); + property_.init(); } - /* 0x0 */ JAISoundParamsProperty mProperty; - /* 0xC */ JAISoundParamsMove mMove; + /* 0x0 */ JAISoundParamsProperty property_; + /* 0xC */ JAISoundParamsMove move_; }; // Size: 0x5C -// OG Size: 0x20 #endif /* JAISOUNDPARAMS_H */ diff --git a/include/JSystem/JAudio2/JAISoundStarter.h b/include/JSystem/JAudio2/JAISoundStarter.h index fda197b260..ef177adcd1 100644 --- a/include/JSystem/JAudio2/JAISoundStarter.h +++ b/include/JSystem/JAudio2/JAISoundStarter.h @@ -9,11 +9,11 @@ * */ struct JAISoundStarter : public JASGlobalInstance { - /* 802A2F6C */ JAISoundStarter(bool); + /* 802A2F6C */ JAISoundStarter(bool setInstance); virtual ~JAISoundStarter(); - virtual bool startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*) = 0; - /* 802A2FEC */ bool startLevelSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*); + virtual bool startSound(JAISoundID id, JAISoundHandle* handlePtr, const JGeometry::TVec3* posPtr) = 0; + /* 802A2FEC */ bool startLevelSound(JAISoundID id, JAISoundHandle* handlePtr, const JGeometry::TVec3* posPtr); }; #endif /* JAISOUNDSTARTER_H */ diff --git a/include/JSystem/JAudio2/JAIStream.h b/include/JSystem/JAudio2/JAIStream.h index 4f7b37e627..e430d790f0 100644 --- a/include/JSystem/JAudio2/JAIStream.h +++ b/include/JSystem/JAudio2/JAIStream.h @@ -14,39 +14,42 @@ class JAIStreamMgr; class JAIStream : public JASPoolAllocObject, public JAISound, public JSULink { public: struct TInner { - JASAramStream field_0x0; + JASAramStream aramStream_; }; - /* 802A3104 */ JAIStream(JAIStreamMgr*, JAISoundStrategyMgr*); - /* 802A319C */ void JAIStreamMgr_startID_(JAISoundID, s32, JGeometry::TVec3 const*, - JAIAudience*, int); + /* 802A3104 */ JAIStream(JAIStreamMgr* streamMgr, JAISoundStrategyMgr* soundStrategyMgr); + /* 802A319C */ void JAIStreamMgr_startID_(JAISoundID id, s32 streamFileEntry, + const JGeometry::TVec3* posPtr, JAIAudience* audience, + int category); /* 802A3230 */ bool prepare_prepareStream_(); /* 802A33F4 */ void prepare_(); /* 802A3498 */ void prepare_startStream_(); - /* 802A34E4 */ void JAIStreamMgr_mixOut_(JASSoundParams const&, JAISoundActivity); + /* 802A34E4 */ void JAIStreamMgr_mixOut_(const JASSoundParams& inParams, JAISoundActivity activity); /* 802A3720 */ void die_JAIStream_(); /* 802A37FC */ bool JAISound_tryDie_(); /* 802A388C */ void JAIStreamMgr_calc_(); /* 802A3948 */ s32 getNumChild() const; - /* 802A3950 */ JAISoundChild* getChild(int); - /* 802A3A24 */ void releaseChild(int); + /* 802A3950 */ JAISoundChild* getChild(int index); + /* 802A3A24 */ void releaseChild(int index); /* 802A3ABC */ JASTrack* getTrack(); /* 802A3AC4 */ JASTrack* getChildTrack(int); /* 802A3ACC */ JAIStream* asStream(); /* 802A3AD0 */ JAITempoMgr* getTempoMgr(); - void* JAIStreamMgr_getAramAddr_() { return field_0x29c; } + void* JAIStreamMgr_getAramAddr_() const { return streamAramAddr_; } - /* 0x0A8 */ TInner field_0x0a8; + static const int NUM_CHILDREN = 6; + + /* 0x0A8 */ TInner inner_; /* 0x290 */ int field_0x290; /* 0x294 */ s32 field_0x294; /* 0x298 */ int field_0x298; - /* 0x29C */ void* field_0x29c; - /* 0x2A0 */ JAISoundChild* field_0x2a0[6]; - /* 0x2B8 */ JAIStreamMgr* field_0x2b8; + /* 0x29C */ void* streamAramAddr_; + /* 0x2A0 */ JAISoundChild* children_[NUM_CHILDREN]; + /* 0x2B8 */ JAIStreamMgr* streamMgr_; /* 0x2BC */ JAISoundStrategyMgr__unknown* field_0x2bc; /* 0x2C0 */ JAISoundStrategyMgr* field_0x2c0; - /* 0x2C4 */ u8 field_0x2c4; + /* 0x2C4 */ bool field_0x2c4; /* 0x2C5 */ u8 field_0x2c5; /* 0x2C6 */ u8 field_0x2c6; }; diff --git a/include/JSystem/JAudio2/JAIStreamMgr.h b/include/JSystem/JAudio2/JAIStreamMgr.h index 5dbe8d3ab0..41ac1b0445 100644 --- a/include/JSystem/JAudio2/JAIStreamMgr.h +++ b/include/JSystem/JAudio2/JAIStreamMgr.h @@ -14,34 +14,38 @@ class JAIStreamDataMgr; */ class JAIStreamMgr : public JASGlobalInstance { public: - /* 802A3B68 */ JAIStreamMgr(bool); - /* 802A3C3C */ bool startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*); + /* 802A3B68 */ JAIStreamMgr(bool setInstance); + /* 802A3C3C */ bool startSound(JAISoundID id, JAISoundHandle* handle, const JGeometry::TVec3* posPtr); /* 802A3D70 */ void freeDeadStream_(); /* 802A3EBC */ void calc(); /* 802A4028 */ void stop(); - /* 802A4068 */ void stop(u32); - /* 802A40B8 */ void stopSoundID(JAISoundID); + /* 802A4068 */ void stop(u32 fadeTime); + /* 802A40B8 */ void stopSoundID(JAISoundID id); /* 802A4118 */ void mixOut(); /* 802A4174 */ JAIStream* newStream_(); /* 802B9978 */ bool isActive() const { return mStreamList.getNumLinks() != 0; } + JAIAudience* getAudience() { return mAudience; } JAISoundParamsMove* getParams() { return &mParams; } JAIStreamAramMgr* getStreamAramMgr() { return mStreamAramMgr; } JSUList* getStreamList() { return &mStreamList; } - void setStreamDataMgr(JAIStreamDataMgr* param_0) { + + void setStreamDataMgr(JAIStreamDataMgr* streamDataMgr) { JUT_ASSERT(139, !isActive()); - streamDataMgr_ = param_0; + streamDataMgr_ = streamDataMgr; } - void setStreamAramMgr(JAIStreamAramMgr* param_0) { + + void setStreamAramMgr(JAIStreamAramMgr* streamDataMgr) { JUT_ASSERT(157, !isActive()); - mStreamAramMgr = param_0; + mStreamAramMgr = streamDataMgr; } - void pause(bool i_pause) { mActivity.field_0x0.flags.flag2 = i_pause; } + + void pause(bool paused) { mActivity.field_0x0.flags.flag2 = paused; } private: /* 0x00 */ JAISoundActivity mActivity; /* 0x04 */ JAISoundParamsMove mParams; - /* 0x54 */ JAIAudience* field_0x54; + /* 0x54 */ JAIAudience* mAudience; /* 0x58 */ JSUList mStreamList; /* 0x64 */ JAIStreamDataMgr* streamDataMgr_; /* 0x68 */ JAIStreamAramMgr* mStreamAramMgr; diff --git a/include/JSystem/JAudio2/JASCalc.h b/include/JSystem/JAudio2/JASCalc.h index 6f2b545c84..ea6773821c 100644 --- a/include/JSystem/JAudio2/JASCalc.h +++ b/include/JSystem/JAudio2/JASCalc.h @@ -8,11 +8,11 @@ * */ struct JASCalc { - /* 8028F2E8 */ static void imixcopy(s16 const*, s16 const*, s16*, u32); - /* 8028F318 */ static void bcopyfast(void const*, void*, u32); - /* 8028F354 */ static void bcopy(void const*, void*, u32); - /* 8028F454 */ static void bzerofast(void*, u32); - /* 8028F480 */ static void bzero(void*, u32); + /* 8028F2E8 */ static void imixcopy(const s16*, const s16*, s16*, u32); + /* 8028F318 */ static void bcopyfast(const void* src, void* dest, u32 size); + /* 8028F354 */ static void bcopy(const void* src, void* dest, u32 size); + /* 8028F454 */ static void bzerofast(void* dest, u32 size); + /* 8028F480 */ static void bzero(void* dest, u32 size); /* 8028F578 */ static f32 pow2(f32); // Could not make it work as inline - specialization is in JASCalc.cpp @@ -39,7 +39,7 @@ struct JASCalc { f32 fake2(long x); f32 fake3(); - static s16 const CUTOFF_TO_IIR_TABLE[128][4]; + static const s16 CUTOFF_TO_IIR_TABLE[128][4]; }; #endif /* JASCALC_H */ diff --git a/include/JSystem/JAudio2/JASCallback.h b/include/JSystem/JAudio2/JASCallback.h index 33bd5e7f5e..5aa3267d9d 100644 --- a/include/JSystem/JAudio2/JASCallback.h +++ b/include/JSystem/JAudio2/JASCallback.h @@ -12,28 +12,21 @@ typedef long JASCallback(void*); struct JASCallbackMgr { struct TCallback { TCallback() - : mFunction(NULL) - , mArgument(NULL) { + : callback_(NULL) + , arg_(NULL) { } - /** @fabricated */ - bool isMatch(JASCallback* function, void* argument) { return (mFunction == function && mArgument == argument); } - - /** @fabricated */ - void clear() { - mFunction = NULL; - mArgument = NULL; - } - - /* 0x00 */ JASCallback* mFunction; - /* 0x04 */ void* mArgument; + /* 0x00 */ JASCallback* callback_; + /* 0x04 */ void* arg_; }; - bool regist(JASCallback*, void*); - int reject(JASCallback*, void*); + bool regist(JASCallback* callback, void* argument); + int reject(JASCallback* callback, void* argument); void callback(); - /* 0x00 */ TCallback mCallbacks[0x20]; + static const int NUM_CALLBACKS = 32; + + /* 0x00 */ TCallback callbacks_[NUM_CALLBACKS]; }; #endif /* JASCALLBACK_H */ diff --git a/include/JSystem/JAudio2/JASDriverIF.h b/include/JSystem/JAudio2/JASDriverIF.h index ff2f42cad0..edb4574015 100644 --- a/include/JSystem/JAudio2/JASDriverIF.h +++ b/include/JSystem/JAudio2/JASDriverIF.h @@ -26,4 +26,8 @@ namespace JASDriver { extern u32 JAS_SYSTEM_OUTPUT_MODE; }; +inline void JAISetOutputMode(u32 mode) { + JASDriver::setOutputMode(mode); +} + #endif /* JASDRIVERIF_H */ diff --git a/include/JSystem/JAudio2/JASDvdThread.h b/include/JSystem/JAudio2/JASDvdThread.h index c76511ee58..38c022c058 100644 --- a/include/JSystem/JAudio2/JASDvdThread.h +++ b/include/JSystem/JAudio2/JASDvdThread.h @@ -12,7 +12,7 @@ class JASTaskThread; class JASDvd { public: /* 8028FEFC */ static JASTaskThread* getThreadPointer(); - /* 8028FF04 */ static bool createThread(s32, int, u32); + /* 8028FF04 */ static bool createThread(s32 priority, int msgCount, u32 stackSize); static JASTaskThread* sThread; }; diff --git a/include/JSystem/JAudio2/JASGadget.h b/include/JSystem/JAudio2/JASGadget.h index b48b234b2a..5c3e9f5542 100644 --- a/include/JSystem/JAudio2/JASGadget.h +++ b/include/JSystem/JAudio2/JASGadget.h @@ -15,8 +15,8 @@ public: sInstance = inst; } - JASGlobalInstance(bool param_1) { - if (param_1) { + JASGlobalInstance(bool setInstance) { + if (setInstance) { JUT_ASSERT(186, sInstance == NULL); sInstance = (T*)this; } diff --git a/include/JSystem/JAudio2/JASHeapCtrl.h b/include/JSystem/JAudio2/JASHeapCtrl.h index c6cc34ae30..db26f57f8e 100644 --- a/include/JSystem/JAudio2/JASHeapCtrl.h +++ b/include/JSystem/JAudio2/JASHeapCtrl.h @@ -94,8 +94,16 @@ template class JASMemPool : public JASGenericMemPool { public: void newMemPool(int param_0) { JASGenericMemPool::newMemPool(sizeof(T), param_0); } - void* alloc(u32 n) { return JASGenericMemPool::alloc(n); } - void free(void* ptr, u32 n) { JASGenericMemPool::free(ptr, n); } + + void* alloc(u32 n) { + JUT_ASSERT(182, n == sizeof(T)); + return JASGenericMemPool::alloc(n); + } + + void free(void* ptr, u32 n) { + JUT_ASSERT(187, n == sizeof(T)); + JASGenericMemPool::free(ptr, n); + } }; namespace JASKernel { JKRHeap* getSystemHeap(); }; diff --git a/include/JSystem/JAudio2/JASTaskThread.h b/include/JSystem/JAudio2/JASTaskThread.h index b3e338ee28..7a16331d8d 100644 --- a/include/JSystem/JAudio2/JASTaskThread.h +++ b/include/JSystem/JAudio2/JASTaskThread.h @@ -4,6 +4,8 @@ #include "JSystem/JKernel/JKRThread.h" #include "JSystem/JAudio2/JASHeapCtrl.h" +typedef void (*JASThreadCallback)(void*); + /** * @ingroup jsystem-jaudio * @@ -11,27 +13,27 @@ class JASTaskThread : public JKRThread { private: struct JASThreadCallStack { - /* 0x00 */ void (*mRunFunc)(void*); - /* 0x04 */ u32 field_0x4; + /* 0x00 */ JASThreadCallback callback_; + /* 0x04 */ u32 msgType_; /* 0x08 */ union { u8 buffer[0x400]; - void* pBuffer; - }field_0x8; + void* bufferPtr; + } msg; }; public: typedef JASMemChunkPool<1024, JASThreadingModel::ObjectLevelLockable> ThreadMemPool; - /* 8028F6C4 */ JASTaskThread(int, int, u32); - /* 8028F9EC */ void* allocCallStack(void (*)(void*), void*); - /* 8028F850 */ void* allocCallStack(void (*)(void*), void const*, u32); - /* 8028FC54 */ int sendCmdMsg(void (*)(void*), void*); - /* 8028FB5C */ int sendCmdMsg(void (*)(void*), void const*, u32); + /* 8028F6C4 */ JASTaskThread(int priority, int msgCount, u32 stackSize); + /* 8028F9EC */ void* allocCallStack(JASThreadCallback callback, void* msg); + /* 8028F850 */ void* allocCallStack(JASThreadCallback callback, const void* msg, u32 msgSize); + /* 8028FC54 */ int sendCmdMsg(JASThreadCallback callback, void* msg); + /* 8028FB5C */ int sendCmdMsg(JASThreadCallback callback, const void* msg, u32 msgSize); /* 8028FE88 */ void pause(bool); /* 8028F724 */ virtual ~JASTaskThread(); /* 8028FD4C */ virtual void* run(); - /* 0x7C */ OSThreadQueue mpThreadQueue; + /* 0x7C */ OSThreadQueue threadQueue_; /* 0x84 */ bool field_0x84; }; diff --git a/include/JSystem/JAudio2/JASTrack.h b/include/JSystem/JAudio2/JASTrack.h index 884f09b3d7..9a6c14c995 100644 --- a/include/JSystem/JAudio2/JASTrack.h +++ b/include/JSystem/JAudio2/JASTrack.h @@ -25,6 +25,7 @@ struct JASTrack : public JASPoolAllocObject_MultiThreaded { enum Status { STATUS_FREE, STATUS_RUN, + STATUS_STOP, }; struct TChannelMgr : public JASPoolAllocObject_MultiThreaded { @@ -34,9 +35,11 @@ struct JASTrack : public JASPoolAllocObject_MultiThreaded { /* 80293220 */ bool noteOff(u32, u16); /* 802932A0 */ void setPauseFlag(bool); - /* 0x00 */ JASChannel* mChannels[8]; + static const int CHANNEL_MAX = 8; + + /* 0x00 */ JASChannel* mChannels[CHANNEL_MAX]; /* 0x20 */ JASChannelParams mParams; - /* 0x38 */ short field_0x38[8]; + /* 0x38 */ s16 field_0x38[CHANNEL_MAX]; /* 0x48 */ JASSoundParams* mSoundParams; /* 0x4c */ JASTrack* mTrack; }; @@ -138,7 +141,7 @@ struct JASTrack : public JASPoolAllocObject_MultiThreaded { JUT_ASSERT(115, index < MAX_CHILDREN) return mChildren[index]; } - int getChannelMgrCount() { return mChannelMgrCount; } + int getChannelMgrCount() const { return mChannelMgrCount; } f32 getVibDepth() const { return mVibDepth; } void setVibDepth(f32 param_0) { mVibDepth = param_0; } f32 getVibPitch() const { return mVibPitch; } @@ -152,7 +155,7 @@ struct JASTrack : public JASPoolAllocObject_MultiThreaded { u32 getTremDelay() const { return mTremDelay; } void setTremDelay(u32 param_0) { mTremDelay = param_0; } u8 getStatus() const { return mStatus; } - void setAutoDelete(u8 param_0) { mFlags.autoDelete = param_0; } + void setAutoDelete(bool param_0) { mFlags.autoDelete = param_0; } f32 getPanPower() const { return mPanPower; } void setPanPower(f32 param_0) { mPanPower = param_0; } u32 getSkipSample() const { return mSkipSample; } diff --git a/include/JSystem/JAudio2/JASWaveArcLoader.h b/include/JSystem/JAudio2/JASWaveArcLoader.h index 288905339a..bf8e967b42 100644 --- a/include/JSystem/JAudio2/JASWaveArcLoader.h +++ b/include/JSystem/JAudio2/JASWaveArcLoader.h @@ -54,7 +54,7 @@ struct JASWaveArc : JASDisposer { /* 80298FA0 */ virtual void onLoadDone() {} /* 80298FA4 */ virtual void onEraseDone() {} - s32 getStatus() { return mStatus; } + s32 getStatus() const { return mStatus; } struct loadToAramCallbackParams { // not official struct name diff --git a/include/JSystem/JAudio2/JAUAudibleParam.h b/include/JSystem/JAudio2/JAUAudibleParam.h index 83baf7c9b8..0fd3058f82 100644 --- a/include/JSystem/JAudio2/JAUAudibleParam.h +++ b/include/JSystem/JAudio2/JAUAudibleParam.h @@ -1,6 +1,8 @@ #ifndef JAUAUDIBLEPARAM_H #define JAUAUDIBLEPARAM_H +#include + /** * @ingroup jsystem-jaudio * @@ -9,6 +11,7 @@ struct JAUAudibleParam { f32 getDopplerPower() const { return (u32)((*(u8*)&field_0x0.raw >> 4) & 0xf) * (1.0f / 15.0f); } + union { struct { u16 f0; diff --git a/include/JSystem/JAudio2/JAUAudioArcInterpreter.h b/include/JSystem/JAudio2/JAUAudioArcInterpreter.h index 86724662d0..7be5775766 100644 --- a/include/JSystem/JAudio2/JAUAudioArcInterpreter.h +++ b/include/JSystem/JAudio2/JAUAudioArcInterpreter.h @@ -37,7 +37,7 @@ public: mReadPtr += 4; return temp; } - const void* getContent_(u32 param_0) { return mBase + param_0; } + const void* getContent_(u32 param_0) const { return mBase + param_0; } /* 0x04 */ const u8* mReadPtr; diff --git a/include/JSystem/JAudio2/JAUInitializer.h b/include/JSystem/JAudio2/JAUInitializer.h index 7f5410527b..c0fd32380a 100644 --- a/include/JSystem/JAudio2/JAUInitializer.h +++ b/include/JSystem/JAudio2/JAUInitializer.h @@ -12,21 +12,21 @@ class JKRSolidHeap; class JAU_JASInitializer { public: /* 802A4AD0 */ JAU_JASInitializer(); - /* 802A4B28 */ void initJASystem(JKRSolidHeap*); + /* 802A4B28 */ void initJASystem(JKRSolidHeap* heap); - /* 0x00 */ u32 field_0x00; - /* 0x04 */ u32 field_0x04; - /* 0x08 */ int field_0x08; - /* 0x0C */ int field_0x0c; - /* 0x10 */ int field_0x10; - /* 0x14 */ int field_0x14; - /* 0x18 */ int field_0x18; + /* 0x00 */ u32 audioMemory_; + /* 0x04 */ u32 audioMemSize_; + /* 0x08 */ int heapSize_; + /* 0x0C */ int dvdThreadPriority_; + /* 0x10 */ int audioThreadPriority_; + /* 0x14 */ int dvdThreadId_; + /* 0x18 */ int audioThreadId_; /* 0x1C */ int field_0x1c; /* 0x20 */ int field_0x20; - /* 0x24 */ int field_0x24; - /* 0x28 */ int field_0x28; - /* 0x2C */ f32 field_0x2c; - /* 0x30 */ char* field_0x30; + /* 0x24 */ int aramBlockSize_; + /* 0x28 */ int aramChannelNum_; + /* 0x2C */ f32 dspLevel_; + /* 0x30 */ char* waveArcDir_; }; /** diff --git a/include/JSystem/JAudio2/JAUSectionHeap.h b/include/JSystem/JAudio2/JAUSectionHeap.h index c8eef69c1a..14607e772f 100644 --- a/include/JSystem/JAudio2/JAUSectionHeap.h +++ b/include/JSystem/JAudio2/JAUSectionHeap.h @@ -66,6 +66,8 @@ public: bool isBuilding() const { return field_0x2c; } bool isOpen() const; JAUSectionHeap* asSectionHeap() { return (JAUSection*)sectionHeap_ == this ? sectionHeap_ : NULL; } + const TSectionData& getSectionData() const { return data_; } + JKRHeap* getHeap_(); /* 0x28 */ u32 field_0x28; @@ -95,7 +97,7 @@ public: /* 802A5E60 */ void setSeqDataArchive(JKRArchive*); /* 802A5EC0 */ bool loadDynamicSeq(JAISoundID, bool); - /* 802A5EF8 */ void releaseIdleDynamicSeqDataBlock(); + /* 802A5EF8 */ u32 releaseIdleDynamicSeqDataBlock(); /* 802A5FE0 */ JAUSectionHeap(JKRSolidHeap*, bool, s32); /* 802A6094 */ JAUSection* getOpenSection(); /* 802A60A0 */ bool setSeqDataUser(JAISeqDataUser*); diff --git a/include/JSystem/JAudio2/JAUSeqCollection.h b/include/JSystem/JAudio2/JAUSeqCollection.h index 080473abfb..4831e1a020 100644 --- a/include/JSystem/JAudio2/JAUSeqCollection.h +++ b/include/JSystem/JAudio2/JAUSeqCollection.h @@ -49,6 +49,8 @@ public: /* 802A683C */ SeqDataReturnValue getSeqData(JAISoundID, JAISeqData*); /* 802A6894 */ ~JAUSeqDataMgr_SeqCollection(); + const void* getResource() const { return field_0x4; } + /* 0x14 */ JAISeqDataUser* user_; }; diff --git a/include/JSystem/JAudio2/JAUSoundTable.h b/include/JSystem/JAudio2/JAUSoundTable.h index 13c60ea68e..5fb3e275fa 100644 --- a/include/JSystem/JAudio2/JAUSoundTable.h +++ b/include/JSystem/JAudio2/JAUSoundTable.h @@ -157,7 +157,8 @@ struct JAUSoundTable : public JASGlobalInstance { return (JAUSoundTableItem*)((u8*)field_0x0.field_0x0 + offset); } - const void* getResource() { return field_0x0.field_0x0; } + const void* getResource() const { return field_0x0.field_0x0; } + bool isValid() const { return field_0x0.field_0x0 != NULL; } JAUSoundTable_ field_0x0; }; diff --git a/include/JSystem/JGeometry.h b/include/JSystem/JGeometry.h index 99209023af..72123903fe 100644 --- a/include/JSystem/JGeometry.h +++ b/include/JSystem/JGeometry.h @@ -41,6 +41,16 @@ struct TUtil { root = 0.5f * root * (3.0f - x * (root * root)); return root; } + + static inline f32 sqrt(f32 x) { + if (x <= 0.0f) { + return x; + } + + f32 root = __frsqrte(x); + root = 0.5f * root * (3.0f - x * (root * root)); + return x * root; + } }; template<> @@ -216,7 +226,7 @@ struct TVec3 : public Vec { } inline TVec3& operator=(const TVec3& b) { - set(b.x, b.y, b.z); + setTVec3f(&b.x, &this->x); return *this; } @@ -439,12 +449,7 @@ struct TVec2 { } f32 length() const { - f32 sqr = squared(); - if (sqr <= 0.0f) { - return sqr; - } - sqr *= fsqrt_step(sqr); - return sqr; + return TUtil::sqrt(squared()); } T x; diff --git a/include/JSystem/JKernel/JKRThread.h b/include/JSystem/JKernel/JKRThread.h index f3e2d1b6ba..b82a22ae9b 100644 --- a/include/JSystem/JKernel/JKRThread.h +++ b/include/JSystem/JKernel/JKRThread.h @@ -80,7 +80,6 @@ public: mCurrentHeap = heap ? heap : JKRHeap::getCurrentHeap(); } -protected: void resume() { OSResumeThread(mThreadRecord); } BOOL sendMessage(OSMessage message) { return OSSendMessage(&mMessageQueue, message, OS_MESSAGE_NOBLOCK); diff --git a/include/JSystem/JMath/JMath.h b/include/JSystem/JMath/JMath.h index 4d9dd66608..7042cd8d6c 100644 --- a/include/JSystem/JMath/JMath.h +++ b/include/JSystem/JMath/JMath.h @@ -89,6 +89,10 @@ inline f32 fastReciprocal(f32 value) { return JMAFastReciprocal(value); } +inline void fastVECNormalize(const Vec* src, Vec* dst) { + return JMAFastVECNormalize(src, dst); +} + inline void gekko_ps_copy3(register void* dst, register const void* src) { register f32 src0; register f32 src1; diff --git a/include/JSystem/JSupport/JSUList.h b/include/JSystem/JSupport/JSUList.h index 884b8b9b64..75c18bb8d5 100644 --- a/include/JSystem/JSupport/JSUList.h +++ b/include/JSystem/JSupport/JSUList.h @@ -47,7 +47,7 @@ public: T* getObject() const { return static_cast(mObject); } - JSUList* getSupervisor() const { return static_cast*>(this->getList()); } + JSUList* getSupervisor() const { return static_cast*>(mList); } JSULink* getNext() const { return static_cast(mNext); } @@ -82,7 +82,7 @@ public: u32 getNumLinks() const { return mLength; } -private: +protected: JSUPtrLink* mHead; JSUPtrLink* mTail; u32 mLength; @@ -114,11 +114,11 @@ public: JSULink* getLast() const { return (JSULink*)getLastLink(); } - JSULink* getNth(int index) { return (JSULink*)getNthLink(index); } + JSULink* getNth(u32 index) const { return (JSULink*)getNthLink(index); } JSULink* getEnd() const { return NULL; } - u32 getNumLinks() const { return this->JSUPtrList::getNumLinks(); } + u32 getNumLinks() const { return mLength; } }; /** diff --git a/include/JSystem/TPosition3.h b/include/JSystem/TPosition3.h index 807ce4fea5..92de4b5811 100644 --- a/include/JSystem/TPosition3.h +++ b/include/JSystem/TPosition3.h @@ -16,8 +16,6 @@ template <> struct SMatrix34C { f32 data[3][4]; - void identity() { MTXIdentity(data); } - typedef f32 ArrType[4]; void set(const ArrType* src) { JMath::gekko_ps_copy12(data, src); @@ -54,7 +52,9 @@ struct SMatrix33C { }; template -struct TMatrix34 : public T {}; +struct TMatrix34 : public T { + void identity() { MTXIdentity(data); } +}; template struct TRotation3 : public T {}; @@ -77,9 +77,11 @@ struct TRotation3 > : public SMatrix33C { }; template -struct TPosition3 : public T {}; +struct TPosition3 : public T { + TPosition3() {} +}; -typedef TPosition3 > > > TPosition3f32; +typedef TPosition3 > > TPosition3f32; } // namespace JGeometry diff --git a/include/Z2AudioLib/Z2Audience.h b/include/Z2AudioLib/Z2Audience.h index ca8099c495..9f1ff17d44 100644 --- a/include/Z2AudioLib/Z2Audience.h +++ b/include/Z2AudioLib/Z2Audience.h @@ -12,36 +12,39 @@ struct Z2Audible; struct Z2AudibleAbsPos { - /* 802BBCDC */ void calc(JGeometry::TVec3 const&); - /* 802BBD18 */ void init(JGeometry::TVec3*, JGeometry::TVec3 const&, - JGeometry::TVec3 const*); + /* 802BBCDC */ void calc(const JGeometry::TVec3& pos); + /* 802BBD18 */ void init(JGeometry::TVec3*, const JGeometry::TVec3&, + const JGeometry::TVec3*); /* 0x00 */ JGeometry::TVec3 field_0x0; - /* 0x0C */ JGeometry::TVec3 field_0xc; + /* 0x0C */ JGeometry::TVec3 velocity_; }; struct Z2AudioCamera { /* 802BC758 */ Z2AudioCamera(); /* 802BC788 */ void init(); - /* 802BC8AC */ void setCameraState(f32 (*)[4], Vec&, Vec&, f32, f32, bool, bool); - /* 802BC7DC */ void setCameraState(f32 const (*)[4], Vec&, bool); - /* 802BCBEC */ void convertAbsToRel(Z2Audible*, int); - /* 802BCC7C */ bool convertAbsToRel(Vec&, Vec*) const; + /* 802BC8AC */ void setCameraState(f32 (*)[4], Vec& pos, Vec&, f32, f32, bool, bool); + /* 802BC7DC */ void setCameraState(f32 const (*)[4], Vec& pos, bool); + /* 802BCBEC */ void convertAbsToRel(Z2Audible* audible, int channelNum); + /* 802BCC7C */ bool convertAbsToRel(Vec& src, Vec* dst) const; /* 802BCCC0 */ bool isInSight(Vec&) const; - JGeometry::TVec3* getPos() { return &mPos; } + + const JGeometry::TVec3* getPos() const { return &mPos; } f32 getVolCenterZ() const { return mVolCenterZ; } - void setMainCamera() { mSetMainCamera = true; } - void setTargetVolume(f32 volume) { - if (volume < 0.0f) { - volume = 0.0f; + void setMainCamera(bool param_0) { mSetMainCamera = param_0; } + + void setTargetVolume(f32 vol) { + JUT_ASSERT(281, vol <= 1.f); + if (vol < 0.0f) { + vol = 0.0f; } - mTargetVolume = volume; + mTargetVolume = vol; } + f32 getDolbyCenterZ() const { return mDolbyCenterZ; } f32 getFovySin() const { return mFovySin; } const JGeometry::TVec3* getVel() const { return &mVel; } - /* 0x00 */ JGeometry::TPosition3f32 field_0x0; /* 0x30 */ JGeometry::TVec3 mVel; /* 0x3C */ JGeometry::TVec3 mPos; @@ -58,15 +61,15 @@ struct Z2AudioCamera { struct Z2SpotMic { /* 802BCD28 */ Z2SpotMic(); - /* 802BCDA8 */ void clearMicState(int); - /* 802BCDE8 */ void calcVolumeFactor(int); - /* 802BCE14 */ void setMicState(Z2AudioCamera*, int); - /* 802BCF5C */ f32 calcMicDist(Z2Audible*); + /* 802BCDA8 */ void clearMicState(int camID); + /* 802BCDE8 */ void calcVolumeFactor(int camID); + /* 802BCE14 */ void setMicState(Z2AudioCamera* camera, int camID); + /* 802BCF5C */ f32 calcMicDist(Z2Audible* audible); /* 802BCFE4 */ u32 calcMicPriority(f32); - /* 802BD03C */ f32 calcMicVolume(f32, int, f32); + /* 802BD03C */ f32 calcMicVolume(f32, int camID, f32); - void setPosPtr(Vec* i_posPtr) { mPosPtr = i_posPtr; } - bool isOn() const { return mMicOn; } + void setPosPtr(Vec* posPtr) { mPosPtr = posPtr; } + bool isOn() { return mMicOn; } /* 0x00 */ f32 field_0x0; /* 0x04 */ f32 field_0x4; @@ -79,7 +82,7 @@ struct Z2SpotMic { /* 0x20 */ f32 field_0x20[1]; /* 0x24 */ bool mIgnoreIfOut; /* 0x25 */ bool mMicOn; - /* 0x26 */ u8 field_0x26[1]; + /* 0x26 */ bool field_0x26[1]; }; // Size: 0x28 struct Z2Audience3DSetting { @@ -152,14 +155,14 @@ struct Z2AudibleRelPos { struct Z2AudibleChannel { /* 802BBE74 */ Z2AudibleChannel(); void init() { - field_0x0.init(); + mParams.init(); field_0x28 = -1.0f; mPan = 0.5f; mDolby = 0.0f; field_0x34 = 1.0f; } - /* 0x00 */ JASSoundParams field_0x0; + /* 0x00 */ JASSoundParams mParams; /* 0x14 */ Z2AudibleRelPos field_0x14; /* 0x28 */ f32 field_0x28; /* 0x2c */ f32 mPan; @@ -168,65 +171,71 @@ struct Z2AudibleChannel { }; struct Z2Audible : public JAIAudible, public JASPoolAllocObject { - /* 802BBD94 */ Z2Audible(JGeometry::TVec3 const&, JGeometry::TVec3 const*, u32, bool); + /* 802BBD94 */ Z2Audible(const JGeometry::TVec3& pos, const JGeometry::TVec3*, u32 channel, bool); /* 802BBE98 */ void calc(); - /* 802BBED0 */ JASSoundParams* getOuterParams(int); - /* 802BBEE4 */ void setOuterParams(JASSoundParams const&, JASSoundParams const&, int); - /* 802BC204 */ Z2AudibleChannel* getChannel(int); + /* 802BBED0 */ JASSoundParams* getOuterParams(int index); + /* 802BBEE4 */ void setOuterParams(const JASSoundParams& outParams, const JASSoundParams& inParams, int index); + /* 802BC204 */ Z2AudibleChannel* getChannel(int index); /* 802BC218 */ u32 getDistVolBit(); /* 802BD510 */ ~Z2Audible(); - bool isDoppler() { - return ((*(u8*)&field_0x10.field_0x0) >> 4) & 0xf; - } - JAUAudibleParam* getAudibleParam() { return &field_0x10; } - const JAUAudibleParam* getAudibleParam() const { return &field_0x10; } - void setAudibleParam(JAUAudibleParam param) { field_0x10 = param; } - const JGeometry::TVec3* getVel() const { return &field_0x14.field_0xc; } - /* 0x10 */ JAUAudibleParam field_0x10; - /* 0x14 */ Z2AudibleAbsPos field_0x14; - /* 0x2C */ Z2AudibleChannel field_0x2c[1]; + bool isDoppler() { + return ((*(u8*)&mParam.field_0x0) >> 4) & 0xf; + } + + const JGeometry::TVec3& getPos() const { return mPos; } + + JAUAudibleParam* getAudibleParam() { return &mParam; } + const JAUAudibleParam* getAudibleParam() const { return &mParam; } + void setAudibleParam(JAUAudibleParam param) { mParam.field_0x0.raw = param.field_0x0.raw; } + const JGeometry::TVec3* getVel() const { return &mAbsPos.velocity_; } + + /* 0x10 */ JAUAudibleParam mParam; + /* 0x14 */ Z2AudibleAbsPos mAbsPos; + /* 0x2C */ Z2AudibleChannel mChannel[1]; /* 0x64 */ f32 field_0x64[1]; }; struct Z2Audience : public JAIAudience, public JASGlobalInstance { /* 802BD130 */ Z2Audience(); - /* 802BD2DC */ void setAudioCamera(f32 (*)[4], Vec&, Vec&, f32, f32, bool, int, bool); + /* 802BD2DC */ void setAudioCamera(f32 (*)[4], Vec&, Vec&, f32, f32, bool, int camID, bool); /* 802BD704 */ f32 calcOffMicSound(f32); - /* 802BD90C */ void setTargetVolume(f32, int); - /* 802BD92C */ bool convertAbsToRel(Vec&, Vec*, int); - /* 802BD95C */ f32 calcRelPosVolume(Vec const&, f32, int); - /* 802BDA44 */ f32 calcRelPosPan(Vec const&, int); - /* 802BDB44 */ f32 calcRelPosDolby(Vec const&, int); - /* 802BDBDC */ f32 calcVolume_(f32, int) const; - /* 802BDC44 */ u32 calcDeltaPriority_(f32, int, bool) const; - /* 802BDCB0 */ f32 calcPitchDoppler_(JGeometry::TVec3 const&, - JGeometry::TVec3 const&, - JGeometry::TVec3 const&, f32) const; - /* 802BDD00 */ f32 calcFxMix_(f32, int) const; - /* 802BDD48 */ f32 calcPitch_(Z2AudibleChannel*, Z2Audible const*, Z2AudioCamera const*) const; + /* 802BD90C */ void setTargetVolume(f32 volume, int index); + /* 802BD92C */ bool convertAbsToRel(Vec& src, Vec* dst, int camID); + /* 802BD95C */ f32 calcRelPosVolume(const Vec&, f32, int camID); + /* 802BDA44 */ f32 calcRelPosPan(const Vec&, int camID); + /* 802BDB44 */ f32 calcRelPosDolby(const Vec&, int camID); + /* 802BDBDC */ f32 calcVolume_(f32, int distVolBit) const; + /* 802BDC44 */ u32 calcDeltaPriority_(f32, int distVolBit, bool) const; + /* 802BDCB0 */ f32 calcPitchDoppler_(const JGeometry::TVec3&, + const JGeometry::TVec3&, + const JGeometry::TVec3&, f32) const; + /* 802BDD00 */ f32 calcFxMix_(f32, int distVolBit) const; + /* 802BDD48 */ f32 calcPitch_(Z2AudibleChannel* channel, const Z2Audible* audible, const Z2AudioCamera* camera) const; /* 802BD1FC */ virtual ~Z2Audience(); - /* 802BD338 */ virtual JAIAudible* newAudible(JGeometry::TVec3 const&, JAISoundID, - JGeometry::TVec3 const*, u32); + /* 802BD338 */ virtual JAIAudible* newAudible(const JGeometry::TVec3& pos, JAISoundID soundID, + const JGeometry::TVec3*, u32); /* 802BDED4 */ virtual int getMaxChannels(); - /* 802BD4D4 */ virtual void deleteAudible(JAIAudible*); - /* 802BD5B8 */ virtual u32 calcPriority(JAIAudible*); - /* 802BD71C */ virtual void mixChannelOut(JASSoundParams const&, JAIAudible*, int); + /* 802BD4D4 */ virtual void deleteAudible(JAIAudible* audible); + /* 802BD5B8 */ virtual u32 calcPriority(JAIAudible* audible); + /* 802BD71C */ virtual void mixChannelOut(const JASSoundParams& outParams, JAIAudible* audible, int channelNum); Z2SpotMic* getLinkMic() { return mLinkMic; } - JGeometry::TVec3 getAudioCamPos(int idx) { - return *mAudioCamera[idx].getPos(); + JGeometry::TVec3 getAudioCamPos(int camID) { + return *mAudioCamera[camID].getPos(); } Z2Audience3DSetting* getSetting() { return &mSetting; } + const Z2AudioCamera* getAudioCamera(int camID) const { return &mAudioCamera[camID]; } + /* 0x004 */ f32 field_0x4; /* 0x008 */ u8 field_0x8; /* 0x00C */ Z2Audience3DSetting mSetting; /* 0x134 */ Z2AudioCamera mAudioCamera[1]; /* 0x1A8 */ Z2SpotMic mSpotMic[1]; /* 0x1D0 */ Z2SpotMic* mLinkMic; - /* 0x1D4 */ s32 mMaxChannels; + /* 0x1D4 */ s32 mNumPlayers; /* 0x1D8 */ u8 field_0x1d8[4]; /* 0x1DC */ bool mUsingOffMicVol; }; // Size: 0x1E0 diff --git a/include/Z2AudioLib/Z2AudioArcLoader.h b/include/Z2AudioLib/Z2AudioArcLoader.h index 031f191412..af8f87fe5d 100644 --- a/include/Z2AudioLib/Z2AudioArcLoader.h +++ b/include/Z2AudioLib/Z2AudioArcLoader.h @@ -8,9 +8,9 @@ public: Z2AudioArcLoader(JAUSection*); virtual ~Z2AudioArcLoader() {} - virtual bool readCommandMore(u32); - void readBFCA(const void*); - virtual void readBSTN(const void*, u32); + virtual bool readCommandMore(u32 command); + void readBFCA(const void* addr); + virtual void readBSTN(const void* addr, u32); }; #endif /* Z2AUDIOARCLOADER_H */ diff --git a/include/Z2AudioLib/Z2AudioCS.h b/include/Z2AudioLib/Z2AudioCS.h index 9cc975c361..2f9f79fe05 100644 --- a/include/Z2AudioLib/Z2AudioCS.h +++ b/include/Z2AudioLib/Z2AudioCS.h @@ -8,14 +8,14 @@ class JKRArchive; class Z2AudioCS { public: - void newSpkSoundMemPool(); + static void newSpkSoundMemPool(); int init(JKRHeap*, JKRArchive*, s32, s32); void update(); static void connect(s32); static void disconnect(s32); static void extensionProcess(s32, s32); u32 getHandleSoundID(s32); - void start(s32, s32); + static void start(s32, s32); static int startLevel(s32, s32); }; diff --git a/include/Z2AudioLib/Z2AudioMgr.h b/include/Z2AudioLib/Z2AudioMgr.h index 82f814ebfe..7f47400af2 100644 --- a/include/Z2AudioLib/Z2AudioMgr.h +++ b/include/Z2AudioLib/Z2AudioMgr.h @@ -12,6 +12,7 @@ #include "Z2AudioLib/Z2SoundObjMgr.h" #include "Z2AudioLib/Z2SpeechMgr2.h" #include "Z2AudioLib/Z2StatusMgr.h" +#include "Z2AudioLib/Z2DebugSys.h" #include "global.h" class JKRArchive; @@ -21,23 +22,21 @@ class Z2AudioMgr : public Z2SeMgr, public Z2SeqMgr, public Z2SceneMgr, public Z2 public: Z2AudioMgr(); ~Z2AudioMgr() {} - void init(JKRSolidHeap*, u32, void*, JKRArchive*); - void setOutputMode(u32); + void init(JKRSolidHeap* heap, u32 memSize, void* baaData, JKRArchive* seqArc); + void setOutputMode(u32 mode); void zeldaGFrameWork(); void gframeProcess(); void resetProcess(u32, bool); void resetRecover(); bool hasReset() const; + bool startLevelSound(JAISoundID soundID, JAISoundHandle* handle, const JGeometry::TVec3* posPtr); bool isResetting() { return mResettingFlag; } static Z2AudioMgr* getInterface() { return mAudioMgrPtr; } static Z2AudioMgr* mAudioMgrPtr; -#if DEBUG - u8 padding[0xC]; -#endif - /* 0x0514 */ virtual bool startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*); + /* 0x0514 */ virtual bool startSound(JAISoundID soundID, JAISoundHandle* handle, const JGeometry::TVec3* posPtr); /* 0x0518 */ bool mResettingFlag; /* 0x0519 */ bool field_0x519; /* 0x051C */ JASAudioReseter mAudioReseter; @@ -47,6 +46,9 @@ public: /* 0x0D4C */ Z2Audience mAudience; /* 0x0F2C */ Z2SpeechMgr2 mSpeechMgr; /* 0x1370 */ Z2FxLineMgr mFxLineMgr; + #if DEBUG + /* 0x13BC */ Z2DebugSys mDebugSys; + #endif }; // Size: 0x138C #if VERSION != VERSION_SHIELD_DEBUG diff --git a/include/Z2AudioLib/Z2Calc.h b/include/Z2AudioLib/Z2Calc.h index efef286d8a..883262ab40 100644 --- a/include/Z2AudioLib/Z2Calc.h +++ b/include/Z2AudioLib/Z2Calc.h @@ -14,35 +14,36 @@ static const Vec cNullVec = {0.0f, 0.0f, 0.0f}; #endif enum CurveSign { - CURVE_SIGN_0 = 0, - CURVE_SIGN_1 = 1, - CURVE_SIGN_2 = 2, + CURVE_NEGATIVE = 0, + CURVE_POSITIVE = 1, + CURVE_LINEAR = 2, }; struct FNoise1f { - FNoise1f(float param_0 = 0.1f, float param_1 = 0.0f, float param_2 = 0.01f) { - unk0 = param_0; - unk4 = param_0; - unk8 = param_2; - unk12 = param_1; + FNoise1f(f32 value = 0.1f, f32 threshold = 0.0f, f32 step = 0.01f) { + value_ = value; + targetValue_ = value; + step_ = step; + threshold_ = threshold; } - void setParam(float, float, float); - float tau(float); - float calcNoise1f(); - float unk0; - float unk4; - float unk8; - float unk12; + void setParam(f32 value, f32 threshold, f32 step); + f32 tau(f32 input); + f32 calcNoise1f(); + + f32 value_; + f32 targetValue_; + f32 step_; + f32 threshold_; }; -float linearTransform(float, float, float, float, float, bool); -float getParamByExp(float, float, float, float, float, float, Z2Calc::CurveSign); -float getRandom(float, float, float); -float getRandom_0_1(void); +f32 linearTransform(f32 inValue, f32 inMin, f32 inMax, f32 outMin, f32 outMax, bool noClamp); +f32 getParamByExp(f32 value, f32 inMin, f32 inMax, f32 exponent, f32 outMin, f32 outMax, CurveSign curveSign); +f32 getRandom(f32 magnitude, f32 exponent, f32 bias); +f32 getRandom_0_1(); -extern f32 cEqualCSlope; -extern f32 cEqualPSlope; +extern const f32 cEqualCSlope; +extern const f32 cEqualPSlope; } // namespace Z2Calc #endif /* Z2CALC_H */ diff --git a/include/Z2AudioLib/Z2Creature.h b/include/Z2AudioLib/Z2Creature.h index d71a4e3e98..0d0b9a2f23 100644 --- a/include/Z2AudioLib/Z2Creature.h +++ b/include/Z2AudioLib/Z2Creature.h @@ -9,22 +9,22 @@ public: Z2Creature(); ~Z2Creature(); - void init(Vec*, Vec*, u8, u8); - void init(Vec*, Vec*, Vec*, u8, u8, u8); - void initAnime(void*, bool, f32, f32); + void init(Vec* animePosPtr, Vec* simplePosPtr, u8 animeHandleNum, u8 simpleHandleNum); + void init(Vec* animePosPtr, Vec* simplePosPtr, Vec* simple2PosPtr, u8 animeHandleNum, u8 simpleHandleNum, u8 simple2HandleNum); + void initAnime(void* animation, bool, f32 startFrame, f32); void updateAnime(f32, f32); void stopAnime(); virtual void deleteObject(); - virtual void setSoundStarter(Z2SoundStarter*); - virtual void framework(u32, s8); - virtual Z2SoundHandlePool* startCreatureSound(JAISoundID, u32, s8); - virtual Z2SoundHandlePool* startCreatureSoundLevel(JAISoundID, u32, s8); - virtual Z2SoundHandlePool* startCreatureVoice(JAISoundID, s8); - virtual Z2SoundHandlePool* startCreatureVoiceLevel(JAISoundID, s8); - virtual Z2SoundHandlePool* startCreatureExtraSound(JAISoundID, u32, s8); - virtual Z2SoundHandlePool* startCreatureExtraSoundLevel(JAISoundID, u32, s8); - virtual Z2SoundHandlePool* startCollisionSE(u32, u32); + virtual void setSoundStarter(Z2SoundStarter* soundStarter); + virtual void framework(u32 mapinfo, s8 reverb); + virtual Z2SoundHandlePool* startCreatureSound(JAISoundID soundID, u32 mapinfo, s8 reverb); + virtual Z2SoundHandlePool* startCreatureSoundLevel(JAISoundID soundID, u32 mapinfo, s8 reverb); + virtual Z2SoundHandlePool* startCreatureVoice(JAISoundID soundID, s8 reverb); + virtual Z2SoundHandlePool* startCreatureVoiceLevel(JAISoundID soundID, s8 reverb); + virtual Z2SoundHandlePool* startCreatureExtraSound(JAISoundID soundID, u32 mapinfo, s8 reverb); + virtual Z2SoundHandlePool* startCreatureExtraSoundLevel(JAISoundID soundID, u32 mapinfo, s8 reverb); + virtual Z2SoundHandlePool* startCollisionSE(u32 hitID, u32 mapinfo); Vec* getCurrentPos() const { return mpPos; } @@ -38,18 +38,18 @@ class Z2CreatureEnemy : public Z2Creature, public JSULink { public: /* 802C0F64 */ Z2CreatureEnemy(); /* 802C0FC4 */ virtual void deleteObject(); - /* 802C1094 */ void init(Vec*, Vec*, u8, u8); + /* 802C1094 */ void init(Vec* animePosPtr, Vec* simplePosPtr, u8 animeHandleNum, u8 simpleHandleNum); /* 802C10B4 */ void init(Vec*, Vec*, Vec*, u8, u8, u8); - /* 802C10D4 */ virtual void framework(u32, s8); - /* 802C110C */ virtual Z2SoundHandlePool* startCreatureSound(JAISoundID, u32, s8); - /* 802C136C */ virtual Z2SoundHandlePool* startCreatureSoundLevel(JAISoundID, u32, s8); - /* 802C168C */ virtual Z2SoundHandlePool* startCreatureVoice(JAISoundID, s8); - /* 802C1948 */ virtual Z2SoundHandlePool* startCreatureVoiceLevel(JAISoundID, s8); - /* 802C199C */ virtual Z2SoundHandlePool* startCreatureExtraSound(JAISoundID, u32, s8); - /* 802C19D8 */ virtual Z2SoundHandlePool* startCreatureExtraSoundLevel(JAISoundID, u32, s8); - /* 802C1A14 */ virtual Z2SoundHandlePool* startCollisionSE(u32, u32); - /* 802C1B7C */ void setLinkSearch(bool); - /* 802C1B90 */ void setEnemyName(char const*); + /* 802C10D4 */ virtual void framework(u32 mapinfo, s8 reverb); + /* 802C110C */ virtual Z2SoundHandlePool* startCreatureSound(JAISoundID soundID, u32 mapinfo, s8 reverb); + /* 802C136C */ virtual Z2SoundHandlePool* startCreatureSoundLevel(JAISoundID soundID, u32 mapinfo, s8 reverb); + /* 802C168C */ virtual Z2SoundHandlePool* startCreatureVoice(JAISoundID soundID, s8 reverb); + /* 802C1948 */ virtual Z2SoundHandlePool* startCreatureVoiceLevel(JAISoundID soundID, s8 reverb); + /* 802C199C */ virtual Z2SoundHandlePool* startCreatureExtraSound(JAISoundID soundID, u32 mapinfo, s8 reverb); + /* 802C19D8 */ virtual Z2SoundHandlePool* startCreatureExtraSoundLevel(JAISoundID soundID, u32 mapinfo, s8 reverb); + /* 802C1A14 */ virtual Z2SoundHandlePool* startCollisionSE(u32 hitID, u32 mapinfo); + /* 802C1B7C */ void setLinkSearch(bool isLinkSearch); + /* 802C1B90 */ void setEnemyName(const char* enemyName); /* 0xA0 */ u8 mEnemyID; /* 0xA1 */ s8 field_0xa1; @@ -61,11 +61,11 @@ class Z2CreatureCitizen : public Z2Creature, public JSULink { public: /* 802C0C10 */ Z2CreatureCitizen(); /* 802C0C6C */ ~Z2CreatureCitizen(); - /* 802C0CE4 */ void init(Vec*, Vec*, u8, u8); + /* 802C0CE4 */ void init(Vec* animePosPtr, Vec* simplePosPtr, u8 animeHandleNum, u8 simpleHandleNum); /* 802C0D04 */ virtual void deleteObject(); /* 802C0D48 */ void setMdlType(s8, bool, bool); /* 802C0E18 */ void playVoice(int); - /* 802C0ED8 */ virtual Z2SoundHandlePool* startCreatureVoice(JAISoundID, s8); + /* 802C0ED8 */ virtual Z2SoundHandlePool* startCreatureVoice(JAISoundID soundID, s8 reverb); private: /* 0xA0 */ s8 mCitizenID; @@ -77,15 +77,15 @@ private: class Z2CreatureSumomo : public Z2Creature { public: /* 802C1BE8 */ Z2CreatureSumomo(); - /* 802C1C24 */ void playSumomoBgm(u32); + /* 802C1C24 */ void playSumomoBgm(u32 dist); /* 802C1CA0 */ void deleteObject(); }; // Size: 0x90 class Z2SoundObjBeeGroup : public Z2SoundObjBase { public: /* 802C1D10 */ Z2SoundObjBeeGroup(); - /* 802C1D4C */ void init(Vec*, u8); - /* 802C1D6C */ void playBeeGroupSound(JAISoundID, u8); + /* 802C1D4C */ void init(Vec* posPtr, u8 handleNum); + /* 802C1D6C */ void playBeeGroupSound(JAISoundID soundID, u8); }; // Size: 0x20 class Z2CreatureFM : public Z2CreatureEnemy { @@ -93,9 +93,9 @@ public: /* 802C1F54 */ Z2CreatureFM(); /* 802C1FB0 */ void deleteObject(); /* 802C1FFC */ void init(Vec*, Vec*, Vec*, Vec*, Vec*, Vec*, u8, u8, u8, u8, u8, u8); - /* 802C20E8 */ void framework(u32, s8); - /* 802C2194 */ Z2SoundHandlePool* startChainSound(JAISoundID, u8, f32, u32, s8); - /* 802C2290 */ Z2SoundHandlePool* startChainSoundLevel(JAISoundID, u8, f32, u32, s8); + /* 802C20E8 */ void framework(u32 mapinfo, s8 reverb); + /* 802C2194 */ Z2SoundHandlePool* startChainSound(JAISoundID soundID, u8, f32, u32 mapinfo, s8 reverb); + /* 802C2290 */ Z2SoundHandlePool* startChainSoundLevel(JAISoundID soundID, u8, f32, u32 mapinfo, s8 reverb); /* 0x0A4 */ Z2SoundObjSimple field_0xa4; /* 0x0C4 */ Z2SoundObjSimple field_0xc4; @@ -106,7 +106,7 @@ public: class Z2CreatureGob : public Z2Creature { public: /* 802C24B0 */ void init(Vec*, Vec*, Vec*, u8, u8, u8); - /* 802C24D0 */ Z2SoundHandlePool* startCreatureVoiceLevel(JAISoundID, s8); + /* 802C24D0 */ Z2SoundHandlePool* startCreatureVoiceLevel(JAISoundID soundID, s8 reverb); }; class Z2CreatureOI : public Z2CreatureEnemy { @@ -115,10 +115,10 @@ public: /* 802C25EC */ void deleteObject(); /* 802C2670 */ void init(Vec*, Vec*, Vec*, Vec*, Vec*, Vec*, Vec*, Vec*, Vec*, Vec*, Vec*, Vec*, Vec*); - /* 802C2864 */ void framework(u32, s8); - /* 802C29D4 */ Z2SoundHandlePool* startCreatureSoundLevel(JAISoundID, u32, s8); - /* 802C2C84 */ Z2SoundHandlePool* startTentacleSound(JAISoundID, u8, u32, s8); - /* 802C2CD4 */ Z2SoundHandlePool* startTentacleSoundLevel(JAISoundID, u8, f32, u32, s8); + /* 802C2864 */ void framework(u32 mapinfo, s8 reverb); + /* 802C29D4 */ Z2SoundHandlePool* startCreatureSoundLevel(JAISoundID soundID, u32 mapinfo, s8 reverb); + /* 802C2C84 */ Z2SoundHandlePool* startTentacleSound(JAISoundID soundID, u8, u32 mapinfo, s8 reverb); + /* 802C2CD4 */ Z2SoundHandlePool* startTentacleSoundLevel(JAISoundID soundID, u8, f32, u32 mapinfo, s8 reverb); /* 0x0A4 */ Z2SoundObjSimple field_0xa4; /* 0x0C4 */ Z2SoundObjSimple field_0xc4; diff --git a/include/Z2AudioLib/Z2DebugSys.h b/include/Z2AudioLib/Z2DebugSys.h index 285228d3e1..9172d241ee 100644 --- a/include/Z2AudioLib/Z2DebugSys.h +++ b/include/Z2AudioLib/Z2DebugSys.h @@ -2,9 +2,16 @@ #define Z2DEBUGSYS_H #include "JSystem/JAudio2/JASGadget.h" +#include "JSystem/JAudio2/JAISeqDataMgr.h" -// Only here for instance sub. No known code. struct Z2DebugSys : public JASGlobalInstance { + Z2DebugSys(); + ~Z2DebugSys(); + + void initJAW(); + void initSoundHioNode(); + void debugframework(); + JAISeqDataMgr* initSeSeqDataMgr(const void*); }; -#endif \ No newline at end of file +#endif diff --git a/include/Z2AudioLib/Z2EnvSeMgr.h b/include/Z2AudioLib/Z2EnvSeMgr.h index 8cf1a95784..77b105a9f1 100644 --- a/include/Z2AudioLib/Z2EnvSeMgr.h +++ b/include/Z2AudioLib/Z2EnvSeMgr.h @@ -12,10 +12,10 @@ enum WindType { }; struct Z2EnvSeBase { - /* 802C589C */ Z2EnvSeBase(Vec* param_0 = NULL); + /* 802C589C */ Z2EnvSeBase(Vec* posPtr = NULL); /* 802C58AC */ ~Z2EnvSeBase(); - /* 802C5908 */ bool startEnvSe(JAISoundID, f32, f32, f32, f32, f32, u32); - /* 802C5AB4 */ bool startEnvSeLevel(JAISoundID, f32, f32, f32, f32, f32, u32); + /* 802C5908 */ bool startEnvSe(JAISoundID soundID, f32 fxMix, f32 volume, f32 pan, f32 dolby, f32 pitch, u32 moveSteps); + /* 802C5AB4 */ bool startEnvSeLevel(JAISoundID soundID, f32 fxMix, f32 volume, f32 pan, f32 dolby, f32 pitch, u32 moveSteps); JAISoundHandle* getHandle() { return &mHandle; } void setPos(Vec* pos) { mPos = pos; } @@ -27,12 +27,12 @@ struct Z2EnvSeBase { struct Z2EnvSeAutoPan : public Z2EnvSeBase { /* 802C5ECC */ Z2EnvSeAutoPan(); /* 802C5F28 */ ~Z2EnvSeAutoPan(); - /* 802C5F7C */ void setPanParam(f32, f32, bool, bool, f32, f32); + /* 802C5F7C */ void setPanParam(f32 pan, f32 dolby, bool, bool, f32, f32); /* 802C5F98 */ void calcPan(); - /* 802C60E0 */ bool startEnvSeAutoPanLevel(JAISoundID, f32, f32, f32); + /* 802C60E0 */ bool startEnvSeAutoPanLevel(JAISoundID soundID, f32 fxMix, f32 volume, f32 pitch); - /* 0x08 */ f32 field_0x8; - /* 0x0C */ f32 field_0xc; + /* 0x08 */ f32 mPan; + /* 0x0C */ f32 mDolby; /* 0x10 */ f32 field_0x10; /* 0x14 */ f32 field_0x14; /* 0x18 */ bool field_0x18; @@ -40,14 +40,14 @@ struct Z2EnvSeAutoPan : public Z2EnvSeBase { }; // Size: 0x1C struct Z2EnvSeDir : public Z2EnvSeBase { - /* 802C5C9C */ Z2EnvSeDir(Vec* param_0 = NULL); + /* 802C5C9C */ Z2EnvSeDir(Vec* dir = NULL); /* 802C5D1C */ ~Z2EnvSeDir(); - /* 802C5D70 */ void setPanDir(Vec*); + /* 802C5D70 */ void setPanDir(Vec* dir); /* 802C5D9C */ void calcPan(f32); - /* 802C5E90 */ bool startEnvSeDirLevel(JAISoundID, f32, f32); + /* 802C5E90 */ bool startEnvSeDirLevel(JAISoundID soundID, f32 fxMix, f32 volume); - /* 0x08 */ f32 field_0x8; - /* 0x0C */ f32 field_0xc; + /* 0x08 */ f32 mPan; + /* 0x0C */ f32 mDolby; /* 0x10 */ Vec mPanDir; }; // Size: 0x1C @@ -57,40 +57,40 @@ struct Z2EnvSeMgr : public JASGlobalInstance { /* 802C66B0 */ void framework(); /* 802C6998 */ void resetScene(); /* 802C699C */ void resetSceneInner(); - /* 802C6AC0 */ void initSceneEnvSe(s32, s8, f32); + /* 802C6AC0 */ void initSceneEnvSe(s32 sceneID, s8 room, f32); /* 802C6C1C */ void playSceneEnvSe(); /* 802C6C84 */ void initStaticEnvSe(u8, u8, u8, u8, Vec*); - /* 802C70C8 */ bool startStaticEnvSe(s8); - /* 802C780C */ void registWindowPos(Vec*); + /* 802C70C8 */ bool startStaticEnvSe(s8 reverb); + /* 802C780C */ void registWindowPos(Vec* posPtr); /* 802C7830 */ bool startRainSe(s32, s8); - /* 802C7CF4 */ void startNearThunderSe(s8); - /* 802C7E68 */ void startFarThunderSe(Vec*, s8); - /* 802C7FB4 */ void setSnowPower(s8); + /* 802C7CF4 */ void startNearThunderSe(s8 reverb); + /* 802C7E68 */ void startFarThunderSe(Vec* posPtr, s8 reverb); + /* 802C7FB4 */ void setSnowPower(s8 reverb); /* 802C7FBC */ void initStrongWindSe(); - /* 802C7FC8 */ void setWindDirection(Vec*); - /* 802C800C */ bool startStrongWindSe(s8); + /* 802C7FC8 */ void setWindDirection(Vec* dir); + /* 802C800C */ bool startStrongWindSe(s8 reverb); /* 802C80F8 */ void initRiverSe(u8, u8, u8, u8); - /* 802C8234 */ void registRiverSePos(Vec*); - /* 802C8258 */ void setHyrulSewerOpen(bool); - /* 802C8300 */ bool startRiverSe(s8); + /* 802C8234 */ void registRiverSePos(Vec* posPtr); + /* 802C8258 */ void setHyrulSewerOpen(bool isSewerOpen); + /* 802C8300 */ bool startRiverSe(s8 reverb); /* 802C8730 */ void initFallSe(u8, u8, u8, u8); - /* 802C886C */ void registFallSePos(Vec*); - /* 802C8890 */ bool startFallSe(s8); + /* 802C886C */ void registFallSePos(Vec* posPtr); + /* 802C8890 */ bool startFallSe(s8 reverb); /* 802C8A90 */ void initEtcSe(u8, u8, u8, u8); - /* 802C8C24 */ void registEtcSePos(Vec*); - /* 802C8C48 */ bool startEtcSe(s8); - /* 802C92C8 */ void registWolfSmellSePos(Vec*); - /* 802C92EC */ bool startFogWipeTrigger(Vec*); - /* 802C93A0 */ void setFogWipeWidth(f32); + /* 802C8C24 */ void registEtcSePos(Vec* posPtr); + /* 802C8C48 */ bool startEtcSe(s8 reverb); + /* 802C92C8 */ void registWolfSmellSePos(Vec* posPtr); + /* 802C92EC */ void startFogWipeTrigger(Vec* pos); + /* 802C93A0 */ void setFogWipeWidth(f32 width); /* 802C93E4 */ f32 getFogDensity(); /* 802C9400 */ bool startFogSe(); /* 802C950C */ void initLv3WaterSe(u8, u8, u8, u8); - /* 802C9F58 */ void registLv3WaterSePos(u8, Vec*); - /* 802CA794 */ void startLv3WaterSe(s8); + /* 802C9F58 */ void registLv3WaterSePos(u8, Vec* posPtr); + /* 802CA794 */ void startLv3WaterSe(s8 reverb); - void setWindType(u8 i_type) { mWindType = i_type; } - void registSmellSePos(Vec* param_0) { registEtcSePos(param_0); } - void startSmellSe(s8 param_0) { startEtcSe(param_0); } + void setWindType(u8 type) { mWindType = type; } + void registSmellSePos(Vec* posPtr) { registEtcSePos(posPtr); } + void startSmellSe(s8 reverb) { startEtcSe(reverb); } void initSmellSe(u8 param_0, u8 param_1, u8 param_2, u8 param_3) { initEtcSe(param_0, param_1, param_2, param_3); } diff --git a/include/Z2AudioLib/Z2FxLineMgr.h b/include/Z2AudioLib/Z2FxLineMgr.h index 0931742f6e..c88d030b99 100644 --- a/include/Z2AudioLib/Z2FxLineMgr.h +++ b/include/Z2AudioLib/Z2FxLineMgr.h @@ -27,12 +27,12 @@ struct Z2FxLineConfig { struct Z2FxLineMgr : public JASGlobalInstance { /* 802BA7DC */ Z2FxLineMgr(); - /* 802BA7FC */ void initDataArc(JKRArchive*, JKRHeap*); - /* 802BAC28 */ void setLineID(s8, bool, bool); - /* 802BAC74 */ void setLine(Z2FxLineConfig*, bool, bool); + /* 802BA7FC */ void initDataArc(JKRArchive* arc, JKRHeap* heap); + /* 802BAC28 */ void setLineID(s8 fxID, bool, bool); + /* 802BAC74 */ void setLine(Z2FxLineConfig* config, bool, bool); /* 802BAE1C */ void setFxForceOff(bool); - /* 802BAE48 */ void setUnderWaterFx(bool); - /* 802BAEB8 */ void setSceneFx(s32); + /* 802BAE48 */ void setUnderWaterFx(bool isUnderWaterFx); + /* 802BAEB8 */ void setSceneFx(s32 sceneNo); /* 0x00 */ Z2FxLineConfig* mConfig; /* 0x04 */ void* mFxLineBuffer[4]; diff --git a/include/Z2AudioLib/Z2LinkMgr.h b/include/Z2AudioLib/Z2LinkMgr.h index 35b8ebcb71..886226afd9 100644 --- a/include/Z2AudioLib/Z2LinkMgr.h +++ b/include/Z2AudioLib/Z2LinkMgr.h @@ -9,8 +9,10 @@ public: Z2LinkSoundStarter(); inline virtual ~Z2LinkSoundStarter(); - virtual bool startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*, u32, f32, - f32, f32, f32, f32, u32); + virtual bool startSound(JAISoundID soundID, JAISoundHandle* handle, + const JGeometry::TVec3* posPtr, u32 mapinfo, + f32 fxMix, f32 pitch, f32 volume, f32 pan, + f32 dolby, u32 moveSteps); }; class Z2CreatureLink : public Z2Creature, public Z2LinkSoundStarter { @@ -19,41 +21,41 @@ public: ~Z2CreatureLink(); void setLinkGroupInfo(u8); - void setLinkHp(s32, s32); - void setLinkSwordType(s32, s32); - void setLinkShieldType(s32, s32); - void setLinkBootsType(s32); + void setLinkHp(s32 linkHp, s32); + void setLinkSwordType(s32 swordType, s32); + void setLinkShieldType(s32 shieldType, s32); + void setLinkBootsType(s32 bootsType); virtual void deleteObject(); - void init(Vec*, Vec*, Vec*); - void initKantera(Vec*); - void deleteKantera(void); - void setKanteraState(u8); - virtual void framework(u32, s8); - void setSinkDepth(s8); - void setRiding(bool); - void setMagnetized(bool); - void setWolfEyeOpen(bool); - Z2SoundHandlePool* startLinkSound(JAISoundID, u32, s8); - JAISoundHandle* startLinkSoundLevel(JAISoundID, u32, s8); - Z2SoundHandlePool* startLinkVoice(JAISoundID, s8); - Z2SoundHandlePool* startLinkVoiceLevel(JAISoundID, s8); - void startLinkSwordSound(JAISoundID, u32, s8); - virtual Z2SoundHandlePool* startCollisionSE(u32, u32); - Z2SoundHandlePool* startHitItemSE(u32, u32, Z2SoundObjBase*, float); - void setResumeAttack(bool); + void init(Vec* animePosPtr, Vec* simplePosPtr, Vec* simple2PosPtr); + void initKantera(Vec* posPtr); + void deleteKantera(); + void setKanteraState(u8 state); + virtual void framework(u32 mapinfo, s8 reverb); + void setSinkDepth(s8 sinkDepth); + void setRiding(bool isRiding); + void setMagnetized(bool isMagnetized); + void setWolfEyeOpen(bool wolfEyeOpen); + Z2SoundHandlePool* startLinkSound(JAISoundID, u32 mapinfo, s8 reverb); + JAISoundHandle* startLinkSoundLevel(JAISoundID, u32 mapinfo, s8 reverb); + Z2SoundHandlePool* startLinkVoice(JAISoundID, s8 reverb); + Z2SoundHandlePool* startLinkVoiceLevel(JAISoundID, s8 reverb); + void startLinkSwordSound(JAISoundID, u32 mapinfo, s8 reverb); + virtual Z2SoundHandlePool* startCollisionSE(u32 hitID, u32 mapinfo); + Z2SoundHandlePool* startHitItemSE(u32 soundID, u32 mapinfo, Z2SoundObjBase* other, f32 speed); + void setResumeAttack(bool resumeAttack); - void setInWater(bool status) { mInWater = status; } + void setInWater(bool inWater) { mInWater = inWater; } bool isInWater() { return mInWater; } u8 getLinkState() { return mLinkState; } - u8 getMoveSpeed() const { return mMoveSpeed; } - bool isRiding() const { return mRiding; } - void setLinkState(u8 i_state) { mLinkState = i_state; } + u8 getMoveSpeed() { return mMoveSpeed; } + bool isRiding() { return mRiding; } + void setLinkState(u8 state) { mLinkState = state; } Z2SoundObjSimple& getKantera() { return mKantera; } - u8 getLinkHp() const { return mLinkHp; } + u8 getLinkHp() { return mLinkHp; } u8 getMovingTime() { return mMovingTime; } - u8 isWolfSmellOpen() const { return mWolfEyeOpen; } - void setUsingIronBall(bool i_using) { mUsingIronBall = i_using; } - void setMarkState(u8 i_state) { mMarkState = i_state; } + bool isWolfSmellOpen() { return mWolfEyeOpen; } + void setUsingIronBall(bool isUsingIronBall) { mUsingIronBall = isUsingIronBall; } + void setMarkState(u8 state) { mMarkState = state; } static Z2CreatureLink* mLinkPtr; @@ -63,7 +65,7 @@ public: private: /* 0x90 Z2LinkSoundStarter */ /* 0x94 */ Z2SoundObjSimple mKantera; - /* 0xB4 */ cXyz field_0xb4; + /* 0xB4 */ Vec field_0xb4; /* 0xC0 */ u8 mLinkState; /* 0xC1 */ u8 field_0xc1; /* 0xC2 */ u8 mMarkState; @@ -99,11 +101,12 @@ inline Z2CreatureLink* Z2GetLink() { class Z2CreatureRide; struct Z2RideSoundStarter : public Z2SoundStarter { - /* 802C5234 */ Z2RideSoundStarter(Z2CreatureRide*); + /* 802C5234 */ Z2RideSoundStarter(Z2CreatureRide* ride); - /* 802C5284 */ virtual bool startSound(JAISoundID, JAISoundHandle*, - JGeometry::TVec3 const*, u32, f32, f32, f32, f32, - f32, u32); + /* 802C5284 */ virtual bool startSound(JAISoundID soundID, JAISoundHandle* handle, + const JGeometry::TVec3* posPtr, u32 mapinfo, + f32 fxMix, f32 pitch, f32 volume, f32 pan, + f32 dolby, u32 moveSteps); /* 0x4 */ Z2CreatureRide* mRide; }; @@ -112,8 +115,8 @@ class Z2CreatureRide : public Z2Creature, public Z2RideSoundStarter { public: Z2CreatureRide(); ~Z2CreatureRide(); - void init(Vec*, Vec*, u8, u8); - void setLinkRiding(bool); + void init(Vec* animePosPtr, Vec* simplePosPtr, u8 animeHandleNum, u8 simpleHandleNum); + void setLinkRiding(bool isRiding); bool isLinkRiding() { return mLinkRiding; } @@ -127,10 +130,10 @@ private: class Z2SoundObjCoach : public Z2SoundObjBase { public: /* 802C54B8 */ Z2SoundObjCoach(); - /* 802C54FC */ void init(Vec*, u8); + /* 802C54FC */ void init(Vec* posPtr, u8 handleNum); /* 802C551C */ Z2SoundHandlePool* startWheelSound(f32); /* 802C56C0 */ Z2SoundHandlePool* startFireSound(u16); - /* 802C57C0 */ Z2SoundHandlePool* startSound(JAISoundID, u32, s8); + /* 802C57C0 */ Z2SoundHandlePool* startSound(JAISoundID soundID, u32 mapinfo, s8 reverb); private: /* 0x20 */ f32 field_0x20; diff --git a/include/Z2AudioLib/Z2Param.h b/include/Z2AudioLib/Z2Param.h index d98289f7ef..541bbb9556 100644 --- a/include/Z2AudioLib/Z2Param.h +++ b/include/Z2AudioLib/Z2Param.h @@ -40,24 +40,28 @@ struct Z2Param { static f32 VOL_SE_ATMOSPHERE_PAUSING; static f32 MIN_DISTANCE_VOLUME; static f32 ENEMY_LASTHIT_MUTE_VOLUME; + + // made up names based on HIO labels + static u8 SCENE_CHANGE_BGM_FADEOUT_TIME; + static u8 BGM_CROSS_FADEIN_TIME; + static u8 BGM_CROSS_FADEOUT_TIME; + static u8 BATTLE_BGM_WAIT_TIME; + + static u8 FOUND_TRACK_FI_TIME; + static u8 FOUND_TRACK_FO_TIME; + static u8 CLOSE_BATTLE_TRACK_FI_TIME; + static u8 CLOSE_BATTLE_TRACK_FO_TIME; + + static u8 ENDING_BLOW_VOL_DOWN_TIME; + static u8 ENDING_BLOW_VOL_LOWER_TIME; + static u8 ENDING_BLOW_VOL_LOWER_RECOVER_TIME; + static u8 ENDING_BLOW_MIN_FINISH_TIME; + + static u8 DARK_SE_FILTER_ON; + static u8 DARK_SE_LOW_PASS_FILTER_SETTING; + static u8 SYSTEM_SE_USE_DARK_SE_SETTING; }; -extern u8 struct_80450860; -extern u8 struct_80450861; -extern u8 struct_80450862; -extern u8 struct_80450863; -extern u8 struct_80450864; -extern u8 struct_80450865; -extern u8 struct_80450866; -extern u8 struct_80450867; -extern u8 struct_80450868; -extern u8 struct_80450869; -extern u8 struct_8045086A; -extern u8 struct_8045086B; extern u8 data_8045086C; -extern u8 struct_80451340; -extern u8 struct_80451341; -extern u8 struct_80451342; - #endif /* Z2PARAM_H */ diff --git a/include/Z2AudioLib/Z2SceneMgr.h b/include/Z2AudioLib/Z2SceneMgr.h index 553ec2d5e8..c1e6402aca 100644 --- a/include/Z2AudioLib/Z2SceneMgr.h +++ b/include/Z2AudioLib/Z2SceneMgr.h @@ -9,12 +9,13 @@ s8 dComIfGp_getReverb(int roomNo); class Z2SceneMgr : public JASGlobalInstance { public: Z2SceneMgr(); - void setInDarkness(bool); - void setSceneExist(bool); - void setFadeOutStart(u8); - void setFadeInStart(u8); - void setSceneName(char*, s32, s32); - void sceneChange(JAISoundID, u8, u8, u8, u8, u8, bool); + void setInDarkness(bool inDarkness); + void setSceneExist(bool isSceneExist); + void setFadeOutStart(u8 fadeType); + void setFadeInStart(u8 fadeType); + void setSceneName(char* spot, s32 room, s32 layer); + void sceneChange(JAISoundID bgm, u8 seWave1, u8 seWave2, u8 bgmWave1, u8 bgmWave2, + u8 demoWave, bool); void framework(); void load1stDynamicWave(); void _load1stWaveInner_1(); @@ -24,18 +25,22 @@ public: void sceneBgmStart(); void loadStaticWaves(); BOOL checkFirstWaves(); - bool eraseSeWave(u32); - bool eraseBgmWave(u32); - s32 getWaveLoadStatus(u32, u32); - bool loadSeWave(u32); - bool loadBgmWave(u32); + bool eraseSeWave(u32 wave); + bool eraseBgmWave(u32 wave); + s32 getWaveLoadStatus(u32 wave, u32 bank); + bool loadSeWave(u32 wave); + bool loadBgmWave(u32 wave); + + #if PLATFORM_SHIELD + bool loadSceneWave(u32 wave, u32 bank); + #endif bool isSceneExist() { return sceneExist; } int getCurrentSceneNum() { return sceneNum; } s8 getCurrentRoomNum() { return roomNum; } bool isInGame() { return inGame; } - void setInGame(bool i_inGame) { inGame = i_inGame; } - bool isInDarkness() const { return inDarkness; } + void setInGame(bool isInGame) { inGame = isInGame; } + bool isInDarkness() { return inDarkness_; } s8 getRoomReverb() { return dComIfGp_getReverb(roomNum); } bool isMovieDemo() { return sceneNum == 2 || sceneNum == 8 || sceneNum == 9; } s32 getSeLoadStatus(u32 wave) { return getWaveLoadStatus(wave, 0); } @@ -64,95 +69,95 @@ private: /* 0x1B */ bool field_0x1b; /* 0x1C */ bool inGame; /* 0x1D */ bool sceneExist; - /* 0x1E */ bool inDarkness; + /* 0x1E */ bool inDarkness_; }; // Size = 0x20 inline Z2SceneMgr* Z2GetSceneMgr() { return JASGlobalInstance::getInstance(); } -enum Spot { // aka scene - /* 0x00 */ SPOT_ORDON_RANCH, - /* 0x01 */ SPOT_ORDON_VILLAGE, - /* 0x02 */ SPOT_ORDON_INTERIOR, - /* 0x03 */ SPOT_ORDON_SPRING, - /* 0x04 */ SPOT_TWILIGHT_HYRULE_CASTLE, - /* 0x05 */ SPOT_FARON_WOODS, - /* 0x06 */ SPOT_CORO_SHOP, - /* 0x07 */ SPOT_SACRED_GROVE, - /* 0x08 */ SPOT_KAKARIKO_VILLAGE, - /* 0x09 */ SPOT_KAKARIKO_INTERIOR, - /* 0x0A */ SPOT_SANCTUARY_BASEMENT, - /* 0x0B */ SPOT_DEATH_MOUNTAIN, - /* 0x0C */ SPOT_SUMO_HALL, - /* 0x0D */ SPOT_KAKARIKO_GRAVEYARD, - /* 0x0E */ SPOT_HIDDEN_VILLAGE, - /* 0x0F */ SPOT_IMPAZ_HOUSE, - /* 0x10 */ SPOT_LAKE_HYLIA, - /* 0x11 */ SPOT_ZORAS_RIVER, - /* 0x12 */ SPOT_UPPER_ZORAS_RIVER, - /* 0x13 */ SPOT_FISHING_POND, - /* 0x14 */ SPOT_HENA_CABIN, - /* 0x15 */ SPOT_ZORAS_DOMAIN, - /* 0x16 */ SPOT_CASTLE_TOWN, - /* 0x17 */ SPOT_CASTLE_TOWN_INTERIOR, - /* 0x18 */ SPOT_CASTLE_TOWN_SHOPS, - /* 0x19 */ SPOT_STAR_TENT, - /* 0x1A */ SPOT_SNOWPEAK, - /* 0x1B */ SPOT_ARBITERS_GROUNDS_EXTERIOR, - /* 0x1C */ SPOT_GERUDO_DESERT, - /* 0x1D */ SPOT_MIRROR_CHAMBER, - /* 0x1E */ SPOT_HYRULE_FIELD, - /* 0x1F */ SPOT_CASTLE_TOWN_GATES, - /* 0x20 */ SPOT_HYLIA_BRIDGE_BATTLE, - /* 0x21 */ SPOT_SHADES_REALM, - /* 0x22 */ SPOT_ELDIN_BRIDGE_BATTLE, - /* 0x23 */ SPOT_NONE, - /* 0x24 */ SPOT_LIGHT_SPIRIT_CHAMBER, - /* 0x25 */ SPOT_CASTLE_THRONE_ROOM, - /* 0x26 */ SPOT_ENEMY_TEST, - /* 0x27 */ SPOT_FORTRESS, - /* 0x28 */ SPOT_FOREST_TEMPLE, - /* 0x29 */ SPOT_FOREST_TEMPLE_MINIBOSS, - /* 0x2A */ SPOT_FOREST_TEMPLE_BOSS, - /* 0x2B */ SPOT_GORON_MINES, - /* 0x2C */ SPOT_GORON_MINES_MINIBOSS, - /* 0x2D */ SPOT_GORON_MINES_BOSS, - /* 0x2E */ SPOT_LAKEBED_TEMPLE, - /* 0x2F */ SPOT_LAKEBED_TEMPLE_MINIBOSS, - /* 0x30 */ SPOT_LAKEBED_TEMPLE_BOSS, - /* 0x31 */ SPOT_ARBITERS_GROUNDS, - /* 0x32 */ SPOT_ARBITERS_GROUNDS_MINIBOSS, - /* 0x33 */ SPOT_ARBITERS_GROUNDS_BOSS, - /* 0x34 */ SPOT_SNOWPEAK_RUINS, - /* 0x35 */ SPOT_SNOWPEAK_RUINS_MINIBOSS, - /* 0x36 */ SPOT_SNOWPEAK_RUINS_BOSS, - /* 0x37 */ SPOT_TEMPLE_OF_TIME, - /* 0x38 */ SPOT_TEMPLE_OF_TIME_MINIBOSS, - /* 0x39 */ SPOT_TEMPLE_OF_TIME_BOSS, - /* 0x3A */ SPOT_CITY_IN_THE_SKY, - /* 0x3B */ SPOT_CITY_IN_THE_SKY_MINIBOSS, - /* 0x3C */ SPOT_CITY_IN_THE_SKY_BOSS, - /* 0x3D */ SPOT_PALACE_OF_TWILIGHT, - /* 0x3E */ SPOT_PALACE_OF_TWILIGHT_MINIBOSS_A, - /* 0x3F */ SPOT_PALACE_OF_TWILIGHT_MINIBOSS_B, - /* 0x40 */ SPOT_PALACE_OF_TWILIGHT_THRONE_ROOM, - /* 0x41 */ SPOT_PALACE_OF_TWILIGHT_BOSS, - /* 0x42 */ SPOT_HYRULE_CASTLE, - /* 0x43 */ SPOT_FINAL_BATTLE_THRONE_ROOM, - /* 0x44 */ SPOT_FINAL_BATTLE_FIELD, - /* 0x45 */ SPOT_FINAL_BATTLE_CUTSCENE, - /* 0x46 */ SPOT_ICE_BLOCK_PUZZLE, - /* 0x47 */ SPOT_CAVE_OF_ORDEALS, - /* 0x48 */ SPOT_GORGE_LANTERN_CAVE, - /* 0x49 */ SPOT_LAKE_LANTERN_CAVE, - /* 0x4A */ SPOT_ELDIN_MAGNET_CAVE, - /* 0x4B */ SPOT_GROTTO_GRASS_1, - /* 0x4C */ SPOT_GROTTO_GRASS_2, - /* 0x4D */ SPOT_GROTTO_ROCK_1, - /* 0x4E */ SPOT_GROTTO_ROCK_2, - /* 0x4F */ SPOT_GROTTO_POND, - /* 0x50 */ SPOT_FARON_WOODS_CAVE, +enum Z2Scene { + /* 0x00 */ Z2SCENE_ORDON_RANCH, + /* 0x01 */ Z2SCENE_ORDON_VILLAGE, + /* 0x02 */ Z2SCENE_ORDON_INTERIOR, + /* 0x03 */ Z2SCENE_ORDON_SPRING, + /* 0x04 */ Z2SCENE_TWILIGHT_HYRULE_CASTLE, + /* 0x05 */ Z2SCENE_FARON_WOODS, + /* 0x06 */ Z2SCENE_CORO_SHOP, + /* 0x07 */ Z2SCENE_SACRED_GROVE, + /* 0x08 */ Z2SCENE_KAKARIKO_VILLAGE, + /* 0x09 */ Z2SCENE_KAKARIKO_INTERIOR, + /* 0x0A */ Z2SCENE_SANCTUARY_BASEMENT, + /* 0x0B */ Z2SCENE_DEATH_MOUNTAIN, + /* 0x0C */ Z2SCENE_SUMO_HALL, + /* 0x0D */ Z2SCENE_KAKARIKO_GRAVEYARD, + /* 0x0E */ Z2SCENE_HIDDEN_VILLAGE, + /* 0x0F */ Z2SCENE_IMPAZ_HOUSE, + /* 0x10 */ Z2SCENE_LAKE_HYLIA, + /* 0x11 */ Z2SCENE_ZORAS_RIVER, + /* 0x12 */ Z2SCENE_UPPER_ZORAS_RIVER, + /* 0x13 */ Z2SCENE_FISHING_POND, + /* 0x14 */ Z2SCENE_HENA_CABIN, + /* 0x15 */ Z2SCENE_ZORAS_DOMAIN, + /* 0x16 */ Z2SCENE_CASTLE_TOWN, + /* 0x17 */ Z2SCENE_CASTLE_TOWN_INTERIOR, + /* 0x18 */ Z2SCENE_CASTLE_TOWN_SHOPS, + /* 0x19 */ Z2SCENE_STAR_TENT, + /* 0x1A */ Z2SCENE_SNOWPEAK, + /* 0x1B */ Z2SCENE_ARBITERS_GROUNDS_EXTERIOR, + /* 0x1C */ Z2SCENE_GERUDO_DESERT, + /* 0x1D */ Z2SCENE_MIRROR_CHAMBER, + /* 0x1E */ Z2SCENE_HYRULE_FIELD, + /* 0x1F */ Z2SCENE_CASTLE_TOWN_GATES, + /* 0x20 */ Z2SCENE_HYLIA_BRIDGE_BATTLE, + /* 0x21 */ Z2SCENE_SHADES_REALM, + /* 0x22 */ Z2SCENE_ELDIN_BRIDGE_BATTLE, + /* 0x23 */ Z2SCENE_NONE, + /* 0x24 */ Z2SCENE_LIGHT_SPIRIT_CHAMBER, + /* 0x25 */ Z2SCENE_CASTLE_THRONE_ROOM, + /* 0x26 */ Z2SCENE_ENEMY_TEST, + /* 0x27 */ Z2SCENE_FORTRESS, + /* 0x28 */ Z2SCENE_FOREST_TEMPLE, + /* 0x29 */ Z2SCENE_FOREST_TEMPLE_MINIBOSS, + /* 0x2A */ Z2SCENE_FOREST_TEMPLE_BOSS, + /* 0x2B */ Z2SCENE_GORON_MINES, + /* 0x2C */ Z2SCENE_GORON_MINES_MINIBOSS, + /* 0x2D */ Z2SCENE_GORON_MINES_BOSS, + /* 0x2E */ Z2SCENE_LAKEBED_TEMPLE, + /* 0x2F */ Z2SCENE_LAKEBED_TEMPLE_MINIBOSS, + /* 0x30 */ Z2SCENE_LAKEBED_TEMPLE_BOSS, + /* 0x31 */ Z2SCENE_ARBITERS_GROUNDS, + /* 0x32 */ Z2SCENE_ARBITERS_GROUNDS_MINIBOSS, + /* 0x33 */ Z2SCENE_ARBITERS_GROUNDS_BOSS, + /* 0x34 */ Z2SCENE_SNOWPEAK_RUINS, + /* 0x35 */ Z2SCENE_SNOWPEAK_RUINS_MINIBOSS, + /* 0x36 */ Z2SCENE_SNOWPEAK_RUINS_BOSS, + /* 0x37 */ Z2SCENE_TEMPLE_OF_TIME, + /* 0x38 */ Z2SCENE_TEMPLE_OF_TIME_MINIBOSS, + /* 0x39 */ Z2SCENE_TEMPLE_OF_TIME_BOSS, + /* 0x3A */ Z2SCENE_CITY_IN_THE_SKY, + /* 0x3B */ Z2SCENE_CITY_IN_THE_SKY_MINIBOSS, + /* 0x3C */ Z2SCENE_CITY_IN_THE_SKY_BOSS, + /* 0x3D */ Z2SCENE_PALACE_OF_TWILIGHT, + /* 0x3E */ Z2SCENE_PALACE_OF_TWILIGHT_MINIBOSS_A, + /* 0x3F */ Z2SCENE_PALACE_OF_TWILIGHT_MINIBOSS_B, + /* 0x40 */ Z2SCENE_PALACE_OF_TWILIGHT_THRONE_ROOM, + /* 0x41 */ Z2SCENE_PALACE_OF_TWILIGHT_BOSS, + /* 0x42 */ Z2SCENE_HYRULE_CASTLE, + /* 0x43 */ Z2SCENE_FINAL_BATTLE_THRONE_ROOM, + /* 0x44 */ Z2SCENE_FINAL_BATTLE_FIELD, + /* 0x45 */ Z2SCENE_FINAL_BATTLE_CUTSCENE, + /* 0x46 */ Z2SCENE_ICE_BLOCK_PUZZLE, + /* 0x47 */ Z2SCENE_CAVE_OF_ORDEALS, + /* 0x48 */ Z2SCENE_GORGE_LANTERN_CAVE, + /* 0x49 */ Z2SCENE_LAKE_LANTERN_CAVE, + /* 0x4A */ Z2SCENE_ELDIN_MAGNET_CAVE, + /* 0x4B */ Z2SCENE_GROTTO_GRASS_1, + /* 0x4C */ Z2SCENE_GROTTO_GRASS_2, + /* 0x4D */ Z2SCENE_GROTTO_ROCK_1, + /* 0x4E */ Z2SCENE_GROTTO_ROCK_2, + /* 0x4F */ Z2SCENE_GROTTO_POND, + /* 0x50 */ Z2SCENE_FARON_WOODS_CAVE, }; #endif /* Z2SCENEMGR_H */ diff --git a/include/Z2AudioLib/Z2SeMgr.h b/include/Z2AudioLib/Z2SeMgr.h index 4ff8e8f37a..8e07972977 100644 --- a/include/Z2AudioLib/Z2SeMgr.h +++ b/include/Z2AudioLib/Z2SeMgr.h @@ -7,56 +7,50 @@ struct Z2MultiSeMgr { Z2MultiSeMgr(); ~Z2MultiSeMgr(); - s8 registMultiSePos(Vec*); + s8 registMultiSePos(Vec* posPtr); void resetMultiSePos(); f32 getPanPower(); f32 getDolbyPower(); - void setVolumeScale(f32 param_0) { mVolumeScale = param_0; } + void setVolumeScale(f32 volumeScale) { volumeScale_ = volumeScale; } f32 getMaxVolume() { - if (mMaxVolume > 1.0f) { - return 1.0f; - } else if (mMaxVolume < 0.0f) { - return 0.0f; - } else { - return mMaxVolume; - } + return (maxVolume_ > 1.0f) ? 1.0f : (maxVolume_ < 0.0f ? 0.0f : maxVolume_); } f32 getMaxPowR() { - return (mMaxPowR > 1.0f) ? 1.0f : (mMaxPowR < 0.0f ? 0.0f : mMaxPowR); + return (maxPowR_ > 1.0f) ? 1.0f : (maxPowR_ < 0.0f ? 0.0f : maxPowR_); } f32 getMaxPowL() { - return (mMaxPowL > 1.0f) ? 1.0f : (mMaxPowL < 0.0f ? 0.0f : mMaxPowL); + return (maxPowL_ > 1.0f) ? 1.0f : (maxPowL_ < 0.0f ? 0.0f : maxPowL_); } f32 getMaxPowB() { - return (mMaxPowB > 1.0f) ? 1.0f : (mMaxPowB < 0.0f ? 0.0f : mMaxPowB); + return (maxPowB_ > 1.0f) ? 1.0f : (maxPowB_ < 0.0f ? 0.0f : maxPowB_); } f32 getMaxPowF() { - return (mMaxPowF > 1.0f) ? 1.0f : (mMaxPowF < 0.0f ? 0.0f : mMaxPowF); + return (maxPowF_ > 1.0f) ? 1.0f : (maxPowF_ < 0.0f ? 0.0f : maxPowF_); } - s8 getPosCount() { return mPosCount; } + s8 getPosCount() { return posCount_; } - /* 0x00 */ float mVolumeScale; - /* 0x04 */ float mMaxVolume; - /* 0x08 */ float mMaxPowL; - /* 0x0C */ float mMaxPowR; - /* 0x10 */ float mMaxPowF; - /* 0x14 */ float mMaxPowB; - /* 0x18 */ s8 mPosCount; + /* 0x00 */ f32 volumeScale_; + /* 0x04 */ f32 maxVolume_; + /* 0x08 */ f32 maxPowL_; + /* 0x0C */ f32 maxPowR_; + /* 0x10 */ f32 maxPowF_; + /* 0x14 */ f32 maxPowB_; + /* 0x18 */ s8 posCount_; }; // Size = 0x1C struct Z2MultiSeObj : Z2MultiSeMgr { Z2MultiSeObj(); ~Z2MultiSeObj() {} - /* 0x1C */ u32 mSoundID; - /* 0x20 */ s8 field_0x20; + /* 0x1C */ u32 soundID_; + /* 0x20 */ s8 reverb_; }; // Size = 0x24 class Z2SeMgr : public JASGlobalInstance { @@ -64,23 +58,25 @@ public: /* 802AB64C */ Z2SeMgr(); /* 802AB750 */ void initSe(); /* 802AB80C */ void resetModY(); - /* 802AB830 */ void modHeightAtCamera(Vec const**); + /* 802AB830 */ void modHeightAtCamera(const Vec**); /* 802AB93C */ void incrCrowdSize(); /* 802AB960 */ void decrCrowdSize(); - /* 802AB984 */ bool seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); - /* 802AC50C */ bool seStartLevel(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); - /* 802AD8B0 */ void seStop(JAISoundID, u32); - /* 802AD94C */ void seStopAll(u32); - /* 802AD9F4 */ void seMoveVolumeAll(f32, u32); + /* 802AB984 */ bool seStart(JAISoundID soundID, const Vec* posPtr, u32, s8 reverb, + f32 pitch, f32 volume, f32 pan, f32 dolby, u8); + /* 802AC50C */ bool seStartLevel(JAISoundID soundID, const Vec* posPtr, u32, s8 reverb, + f32 pitch, f32 volume, f32 pan, f32 dolby, u8); + /* 802AD8B0 */ void seStop(JAISoundID soundID, u32 fadeTime); + /* 802AD94C */ void seStopAll(u32 fadeTime); + /* 802AD9F4 */ void seMoveVolumeAll(f32 volume, u32 moveTime); /* 802ADB14 */ void messageSePlay(u16, Vec*, s8); /* 802ADB50 */ void talkInSe(); /* 802ADC54 */ void talkOutSe(); /* 802ADD58 */ void menuInSe(); - /* 802ADE5C */ void setLevObjSE(u32, Vec*, s8); - /* 802ADFF4 */ void setMultiTriggerSE(u32, Vec*, s8); + /* 802ADE5C */ void setLevObjSE(u32 soundID, Vec* posPtr, s8 reverb); + /* 802ADFF4 */ void setMultiTriggerSE(u32 soundID, Vec* posPtr, s8 reverb); /* 802AE184 */ void processSeFramework(); - /* 802AE524 */ bool isLevelSe(JAISoundID); - /* 802AE5B0 */ bool isSoundCulling(JAISoundID); + /* 802AE524 */ bool isLevelSe(JAISoundID soundID); + /* 802AE5B0 */ bool isSoundCulling(JAISoundID soundID); /* 802B9AC4 */ void resetCrowdSize() { mCrowdSize = 0; } #if PLATFORM_WII || PLATFORM_SHIELD @@ -90,12 +86,19 @@ public: private: /* 0x000 */ JAISoundHandle mSoundHandle[24]; /* 0x060 */ JAISoundHandles mSoundHandles; + #if VERSION == VERSION_SHIELD_DEBUG + /* 0x068 */ JAISoundHandle dbg_field_0x68; + /* 0x06C */ f32 dbg_field_0x6c; + /* 0x070 */ f32 dbg_field_0x70; + /* 0x074 */ f32 dbg_field_0x74; + /* 0x078 */ f32 dbg_field_0x78; + #endif /* 0x068 */ Z2MultiSeObj mLevelObjSe[10]; /* 0x1D0 */ u8 mLevelObjectSeCount; /* 0x1D4 */ Z2MultiSeObj mMultiTriggerSe[10]; /* 0x33C */ u8 mMultiTriggerSeCount; /* 0x340 */ Vec field_0x340[8]; - /* 0x3A0 */ Vec const* mModY[8]; + /* 0x3A0 */ const Vec* mModY[8]; /* 0x3C0 */ u8 field_0x3c0; /* 0x3C1 */ u8 field_0x3c1; /* 0x3C2 */ u8 field_0x3c2; @@ -109,9 +112,6 @@ private: /* 0x3CA */ u8 field_0x3ca; /* 0x3CB */ u8 field_0x3cb; /* 0x3CC */ u8 mCrowdSize; -#if DEBUG - u8 semgr_pad[0x14]; -#endif }; // Size = 0x3D0 inline Z2SeMgr* Z2GetSeMgr() { diff --git a/include/Z2AudioLib/Z2SeqMgr.h b/include/Z2AudioLib/Z2SeqMgr.h index 5edd0f44ec..ede72e55d4 100644 --- a/include/Z2AudioLib/Z2SeqMgr.h +++ b/include/Z2AudioLib/Z2SeqMgr.h @@ -5,89 +5,89 @@ #include "JSystem/JAudio2/JASGadget.h" struct Z2SoundFader { - void move(f32 vol, u32 count) { - if (count != 0) { - mTransition.set(vol, mIntensity, count); + void move(f32 value, u32 moveTime) { + if (moveTime != 0) { + transition_.set(value, intensity_, moveTime); } else { - mIntensity = vol; - mTransition.zero(); + intensity_ = value; + transition_.zero(); } } void forceIn() { - mIntensity = 1.0f; - mTransition.zero(); + intensity_ = 1.0f; + transition_.zero(); } void forceOut() { - mIntensity = 0.0f; - mTransition.zero(); + intensity_ = 0.0f; + transition_.zero(); } - void fadeIn(u32 count) { - if (count != 0) { - mTransition.set(1.0f, mIntensity, count); + void fadeIn(u32 fadeTime) { + if (fadeTime != 0) { + transition_.set(1.0f, intensity_, fadeTime); } else { forceIn(); } } - void fadeOut(u32 count) { - if (count != 0) { - mTransition.set(0.0f, mIntensity, count); + void fadeOut(u32 fadeTime) { + if (fadeTime != 0) { + transition_.set(0.0f, intensity_, fadeTime); } else { forceOut(); } } - void fadeInFromOut(u32 count) { - mIntensity = 0.0f; - fadeIn(count); + void fadeInFromOut(u32 fadeTime) { + intensity_ = 0.0f; + fadeIn(fadeTime); } u32 getCount() { - return mTransition.mCount; + return transition_.remainingSteps_; } - f32 getIntensity() { - return mIntensity; + f32 getIntensity() const { + return intensity_; } f32 getDest() { if (getCount() != 0) { - return mTransition.mDest; + return transition_.targetValue_; } else { - return mIntensity; + return intensity_; } } void calc() { - mIntensity = mTransition.apply(mIntensity); + intensity_ = transition_.apply(intensity_); } f32 get() { return getIntensity(); } - /* 0x0 */ float mIntensity; - /* 0x4 */ JAISoundParamsTransition::TTransition mTransition; + /* 0x0 */ f32 intensity_; + /* 0x4 */ JAISoundParamsTransition::TTransition transition_; }; // Size = 0x10 class Z2SeqMgr : public JASGlobalInstance { public: Z2SeqMgr(); - void bgmStart(u32 i_bgmID, u32, s32); - void bgmStop(u32 i_bgmID, s32); - void subBgmStart(u32); + void bgmStart(u32 bgmID, u32 fadeTime, s32); + void bgmStop(u32 fadeTime, s32); + void subBgmStart(u32 bgmID); void subBgmStop(); void subBgmStopInner(); - void bgmStreamPrepare(u32); + void bgmStreamPrepare(u32 bgmID); bool bgmStreamCheckReady(); void bgmStreamPlay(); - void bgmStreamStop(u32); - void changeBgmStatus(s32); - void changeSubBgmStatus(s32); + void bgmStreamStop(u32 fadeTime); + void changeBgmStatus(s32 status); + void changeSubBgmStatus(s32 status); void onVariantBgmJumpEnd(bool); void changeFishingBgm(s32); void talkInBgm(); @@ -96,23 +96,24 @@ public: void menuOutBgm(); void fanfareFramework(); void stopWolfHowlSong(); - void setHeightVolMod(bool, u32); - void setTimeProcVolMod(bool, u32); + void setHeightVolMod(bool isVolMod, u32 fadeTime); + void setTimeProcVolMod(bool isVolMod, u32 fadeTime); void processBgmFramework(); - bool checkBgmIDPlaying(u32); - f32 getChildTrackVolume(JAISoundHandle*, int); - void setChildTrackVolume(JAISoundHandle*, int, float, u32, float, float); + bool checkBgmIDPlaying(u32 bgmID); + f32 getChildTrackVolume(JAISoundHandle* handle, int trackId); + void setChildTrackVolume(JAISoundHandle* handle, int trackId, f32 volume, + u32 moveTime, f32 pan, f32 dolby); void resetBattleBgmParams(); - void setBattleBgmOff(bool); - void setBattleSearched(bool); - void setBattleDistIgnore(bool); - void setBattleGhostMute(bool); - void setBattleDistState(u8); - void setBattleSeqState(u8); - void setBattleLastHit(u8); + void setBattleBgmOff(bool isBgmOff); + void setBattleSearched(bool isBattleSearched); + void setBattleDistIgnore(bool isBattleDistIgnore); + void setBattleGhostMute(bool isBattleGhostMute); + void setBattleDistState(u8 state); + void setBattleSeqState(u8 state); + void setBattleLastHit(u8 lastHit); void battleBgmFramework(); - void startBattleBgm(bool); - void stopBattleBgm(u8, u8); + void startBattleBgm(bool isFadeIn); + void stopBattleBgm(u8 subFadeoutTime, u8 mainFadeinTime); void fieldBgmStart(); void fieldRidingMute(); void onFieldBgmJumpStart(); @@ -120,28 +121,33 @@ public: void fieldBgmFramework(); void mbossBgmMuteProcess(); void bgmSetSwordUsing(s32); - void bgmNowBattle(float); + void bgmNowBattle(f32); void taktModeMute(); void taktModeMuteOff(); + void setFieldBgmPlay(bool value) { mFlags.mFieldBgmPlay = value; } - /* 802B99AC */ void unMuteSceneBgm(u32 count) { + + /* 802B99AC */ void unMuteSceneBgm(u32 fadeTime) { mBgmPause.move(1.0f, 0); - mSceneBgm.move(1.0f, count); + mSceneBgm.move(1.0f, fadeTime); } - /* 802B9A24 */ void muteSceneBgm(u32 count, f32 vol) { mSceneBgm.move(vol, count); } + + /* 802B9A24 */ void muteSceneBgm(u32 fadeTime, f32 vol) { mSceneBgm.move(vol, fadeTime); } + /* 802B9AD0 */ void setTwilightGateVol(f32 vol) { mTwilightGateVol = vol < 0.0f ? 0.0f : vol > 1.0f ? 1.0f : vol; } - /* 802B9AFC */ void setWindStoneVol(f32 vol, u32 count) { mWindStone.move(vol, count); }; + + /* 802B9AFC */ void setWindStoneVol(f32 vol, u32 fadeTime) { mWindStone.move(vol, fadeTime); }; void onEnemyDamage() { setBattleSeqState(2); } - void bgmAllMute(u32 count, f32 val) { - mAllBgmMaster.mTransition.set(val, mAllBgmMaster.mIntensity, count); + void bgmAllMute(u32 fadeTime, f32 val) { + mAllBgmMaster.move(val, fadeTime); } - void bgmAllUnMute(u32 count) { - mAllBgmMaster.move(1.0f, count); + void bgmAllUnMute(u32 fadeTime) { + mAllBgmMaster.move(1.0f, fadeTime); } bool isItemGetDemo() { @@ -149,35 +155,40 @@ public: } u32 getMainBgmID() { + u32 id; if (mMainBgmHandle) { - return mMainBgmHandle->getID(); + id = mMainBgmHandle->getID(); + } else { + id = -1; } - return -1; + return id; } u32 getSubBgmID() { + u32 id; if (mSubBgmHandle) { - return mSubBgmHandle->getID(); + id = mSubBgmHandle->getID(); + } else { + id = -1; } - return -1; + return id; } u32 getStreamBgmID() { + u32 id; if (mStreamBgmHandle) { - return mStreamBgmHandle->getID(); + id = mStreamBgmHandle->getID(); + } else { + id = -1; } - return -1; + return id; } bool checkBgmPlaying() { - bool ret = false; - if (mMainBgmHandle || mStreamBgmHandle) { - ret = true; - } - return ret; + return mMainBgmHandle || mStreamBgmHandle; } u32 checkPlayingSubBgmFlag() { diff --git a/include/Z2AudioLib/Z2SoundHandles.h b/include/Z2AudioLib/Z2SoundHandles.h index 3b97ee2357..2d9d490f5e 100644 --- a/include/Z2AudioLib/Z2SoundHandles.h +++ b/include/Z2AudioLib/Z2SoundHandles.h @@ -14,33 +14,38 @@ public: Z2SoundHandles(); ~Z2SoundHandles(); - void initHandlesPool(u8 pNumHandles); + void initHandlesPool(u8 handleNum); void deleteHandlesPool(); Z2SoundHandlePool* getFreeHandle(); - Z2SoundHandlePool* getLowPrioSound(JAISoundID pSoundId); + Z2SoundHandlePool* getLowPrioSound(JAISoundID soundID); bool isActive() const; - Z2SoundHandlePool* getHandleSoundID(JAISoundID pSoundId); - Z2SoundHandlePool* getHandleUserData(u32 pUserData); + Z2SoundHandlePool* getHandleSoundID(JAISoundID soundID); + Z2SoundHandlePool* getHandleUserData(u32 userData); - void stopAllSounds(u32 fadeout); + void stopAllSounds(u32 fadeTime); - void stopSound(JAISoundID soundID, u32 param_1) { + void stopSound(JAISoundID soundID, u32 fadeTime) { // u32 cast is a fakematch JAISoundHandle* phandle = getHandleSoundID((u32)soundID); if (phandle != NULL) { - (*phandle)->stop(param_1); + (*phandle)->stop(fadeTime); } } void setPos(const JGeometry::TVec3& pos); int getNumHandles() const { return getNumLinks(); } - Z2SoundHandlePool* getHandle(int index) { return (Z2SoundHandlePool*)getNth(index); } + + Z2SoundHandlePool* getHandle(int index) { + JUT_ASSERT(49, index >= 0); + JUT_ASSERT(50, index < getNumLinks()); + return (Z2SoundHandlePool*)getNth(index); + } private: - /* 0xC */ u8 mNumHandles; + /* 0xC */ u8 handleNum_; }; #endif /* Z2SOUNDHANDLES_H */ diff --git a/include/Z2AudioLib/Z2SoundInfo.h b/include/Z2AudioLib/Z2SoundInfo.h index 668a1164cb..1d65714d8b 100644 --- a/include/Z2AudioLib/Z2SoundInfo.h +++ b/include/Z2AudioLib/Z2SoundInfo.h @@ -4,27 +4,30 @@ #include "JSystem/JAudio2/JAISoundInfo.h" #include "JSystem/JAudio2/JAIStreamDataMgr.h" #include "JSystem/JAudio2/JAUSoundInfo.h" +#include "JSystem/JAudio2/JAUSoundTable.h" class Z2SoundInfo : public JAISoundInfo, public JAUSoundInfo, public JAIStreamDataMgr, public JASGlobalInstance { public: Z2SoundInfo() : JAISoundInfo(true), JAUSoundInfo(true), JASGlobalInstance(true) {} - /* 802BB448 */ virtual u16 getAudibleSw(JAISoundID) const; - /* 802BB00C */ virtual u16 getBgmSeqResourceID(JAISoundID) const; - /* 802BBA88 */ virtual s32 getStreamFileEntry(JAISoundID); - /* 802BB090 */ virtual int getSoundType(JAISoundID) const; - /* 802BB0D8 */ virtual int getCategory(JAISoundID) const; - /* 802BB0E0 */ virtual u32 getPriority(JAISoundID) const; - /* 802BB6DC */ virtual void getSeInfo(JAISoundID, JAISe*) const; - /* 802BB8B4 */ virtual void getSeqInfo(JAISoundID, JAISeq*) const; - /* 802BB8E0 */ virtual void getStreamInfo(JAISoundID, JAIStream*) const; + /* 802BB448 */ virtual u16 getAudibleSw(JAISoundID soundID) const; + /* 802BB00C */ virtual u16 getBgmSeqResourceID(JAISoundID soundID) const; + /* 802BBA88 */ virtual s32 getStreamFileEntry(JAISoundID soundID); + /* 802BB090 */ virtual int getSoundType(JAISoundID soundID) const; + /* 802BB0D8 */ virtual int getCategory(JAISoundID soundID) const; + /* 802BB0E0 */ virtual u32 getPriority(JAISoundID soundID) const; + /* 802BB6DC */ virtual void getSeInfo(JAISoundID soundID, JAISe* sePtr) const; + /* 802BB8B4 */ virtual void getSeqInfo(JAISoundID soundID, JAISeq* seqPtr) const; + /* 802BB8E0 */ virtual void getStreamInfo(JAISoundID soundID, JAIStream* streamPtr) const; /* 802BBBE0 */ virtual ~Z2SoundInfo() {} - /* 802BB158 */ JAUAudibleParam getAudibleSwFull(JAISoundID); - /* 802BBA10 */ const char* getStreamFilePath(JAISoundID); - /* 802BBAC8 */ int getSwBit(JAISoundID) const; - /* 802BBB48 */ void getSoundInfo_(JAISoundID, JAISound*) const; + /* 802BB158 */ JAUAudibleParam getAudibleSwFull(JAISoundID soundID); + /* 802BBA10 */ const char* getStreamFilePath(JAISoundID soundID); + /* 802BBAC8 */ int getSwBit(JAISoundID soundID) const; + /* 802BBB48 */ void getSoundInfo_(JAISoundID soundID, JAISound* soundPtr) const; - BOOL isValid() const; + BOOL isValid() const { + return JASGlobalInstance::getInstance() != NULL && JASGlobalInstance::getInstance()->isValid(); + } }; diff --git a/include/Z2AudioLib/Z2SoundMgr.h b/include/Z2AudioLib/Z2SoundMgr.h index eea9dd8be9..137d2bc8e7 100644 --- a/include/Z2AudioLib/Z2SoundMgr.h +++ b/include/Z2AudioLib/Z2SoundMgr.h @@ -5,39 +5,38 @@ #include "JSystem/JAudio2/JAISeqMgr.h" #include "JSystem/JAudio2/JAIStreamMgr.h" -u16 seqCallback(JASTrack* param_0, u16 param_1); +u16 seqCallback(JASTrack* track, u16 command); class Z2SoundMgr : public JASGlobalInstance { public: /* 802A9E80 */ Z2SoundMgr(); /* 802AA1B0 */ void calc(); - /* 802AA270 */ void setIIR(JAISound*, s16 const*); - /* 802AA33C */ void setFilterOff(JAISound*); + /* 802AA270 */ void setIIR(JAISound* sound, const s16* iir); + /* 802AA33C */ void setFilterOff(JAISound* sound); /* 802AA430 */ void resetFilterAll(); /* 802AA528 */ void mixOut(); /* 802AA67C */ void framework(); - /* 802AA6B0 */ void pauseAllGameSound(bool); - /* 802AA7DC */ void stopSoundID(JAISoundID); + /* 802AA6B0 */ void pauseAllGameSound(bool paused); + /* 802AA7DC */ void stopSoundID(JAISoundID soundID); /* 802AA84C */ void stopSync(); /* 802AA8C8 */ void stop(); /* 802AA908 */ void initParams(); - /* 802AA9E8 */ void multiVolumeSoundID(JAISoundID, f32); - /* 802AAAC4 */ bool isPlayingSoundID(JAISoundID); + /* 802AA9E8 */ void multiVolumeSoundID(JAISoundID soundID, f32 volume); + /* 802AAAC4 */ bool isPlayingSoundID(JAISoundID soundID); - /* 802A9EE8 */ virtual bool startSound(JAISoundID, JAISoundHandle*, - JGeometry::TVec3 const*); + /* 802A9EE8 */ virtual bool startSound(JAISoundID soundID, JAISoundHandle* handle, const JGeometry::TVec3* posPtr); - JAISeMgr* getSeMgr() { return &mSeMgr; } - const JAISeMgr* getSeMgr() const { return &mSeMgr; } - JAISeqMgr* getSeqMgr() { return &mSeqMgr; } - const JAISeqMgr* getSeqMgr() const { return &mSeqMgr; } - JAIStreamMgr* getStreamMgr() { return &mStreamMgr; } + JAISeMgr* getSeMgr() { return &seMgr_; } + const JAISeMgr* getSeMgr() const { return &seMgr_; } + JAISeqMgr* getSeqMgr() { return &seqMgr_; } + const JAISeqMgr* getSeqMgr() const { return &seqMgr_; } + JAIStreamMgr* getStreamMgr() { return &streamMgr_; } private: - /* 0x004 */ JAISeMgr mSeMgr; - /* 0x728 */ JAISeqMgr mSeqMgr; - /* 0x79C */ JAIStreamMgr mStreamMgr; - /* 0x80C */ JAISoundID mSoundID; + /* 0x004 */ JAISeMgr seMgr_; + /* 0x728 */ JAISeqMgr seqMgr_; + /* 0x79C */ JAIStreamMgr streamMgr_; + /* 0x80C */ JAISoundID soundID_; }; // Size: 0x810 #if VERSION != VERSION_SHIELD_DEBUG diff --git a/include/Z2AudioLib/Z2SoundObjMgr.h b/include/Z2AudioLib/Z2SoundObjMgr.h index 0d1ead5e06..c7d5c4cfdf 100644 --- a/include/Z2AudioLib/Z2SoundObjMgr.h +++ b/include/Z2AudioLib/Z2SoundObjMgr.h @@ -3,6 +3,8 @@ #include "JSystem/JAudio2/JASGadget.h" #include "JSystem/JSupport/JSUList.h" +#include "Z2AudioLib/Z2SoundObject.h" +#include "global.h" class Z2CreatureEnemy; @@ -83,32 +85,39 @@ enum Z2EnemyID { class Z2SoundObjMgr : public JASGlobalInstance, protected JSUList { public: Z2SoundObjMgr(); - void setForceBattleArea(bool, u16, u16, u16); + void setForceBattleArea(bool forceBattle, u16, u16, u16); void searchEnemy(); - void setGhostEnemyState(u8); - u8 getEnemyID(char const*, JSULink*); + void setGhostEnemyState(u8 state); + u8 getEnemyID(const char* enemyName, JSULink* enemyLink); void setBattleInit(); bool checkBattleFinish(); void deleteEnemyAll(); - bool removeEnemy(JSULink*); + bool removeEnemy(JSULink* enemyLink); u8 isTwilightBattle(); - u8 getEnemyNumNear() { return mEnemyNumNear; } - u8 getEnemyNumVeryFar() { return mEnemyNumVeryFar; } - bool isForceBattle() { return mForceBattle; } + u8 getEnemyNumNear() const { return enemuNumNear_; } + u8 getEnemyNumVeryFar() { return enemuNumVeryFar_; } + bool isForceBattle() { return forceBattle_; } JSUList* getEnemyList() { return this; } + #if VERSION == VERSION_SHIELD_DEBUG + JSUList* getAllList() { return &allList_; } + #endif + private: - /* 0x0C */ Z2EnemyArea mEnemyArea; + #if VERSION == VERSION_SHIELD_DEBUG + /* 0x0C */ JSUList allList_; + #endif + /* 0x0C */ Z2EnemyArea enemyArea_; /* 0x14 */ u8 field_0x14; - /* 0x15 */ u8 mEnemyNumNear; + /* 0x15 */ u8 enemuNumNear_; /* 0x16 */ u8 field_0x16; - /* 0x17 */ u8 mEnemyNumVeryFar; + /* 0x17 */ u8 enemuNumVeryFar_; /* 0x18 */ u8 field_0x18; - /* 0x19 */ u8 mGhostEnemyState; + /* 0x19 */ u8 ghostEnemyState_; /* 0x1A */ u8 field_0x1a; - /* 0x1B */ u8 mTwilightBattle; - /* 0x1C */ bool mForceBattle; + /* 0x1B */ u8 twilightBattle_; + /* 0x1C */ bool forceBattle_; }; // Size = 0x20 inline Z2SoundObjMgr* Z2GetSoundObjMgr() { diff --git a/include/Z2AudioLib/Z2SoundObject.h b/include/Z2AudioLib/Z2SoundObject.h index 4bab61402e..9db08cf480 100644 --- a/include/Z2AudioLib/Z2SoundObject.h +++ b/include/Z2AudioLib/Z2SoundObject.h @@ -6,33 +6,33 @@ class Z2SoundStarter; -class Z2SoundObjBase : public Z2SoundHandles { +class Z2SoundObjBase : public Z2SoundHandles +#if VERSION == VERSION_SHIELD_DEBUG +, public JSULink +#endif +{ public: Z2SoundObjBase(); ~Z2SoundObjBase(); void deleteObject(); - Z2SoundHandlePool* startCollisionSE(u32, u32, Z2SoundObjBase*); + Z2SoundHandlePool* startCollisionSE(u32 hitID, u32 mapinfo, Z2SoundObjBase* other); - bool isAlive() const { return mIsInitialized; } - void setSoundStarter(Z2SoundStarter* i_soundStarter) { mSoundStarter = i_soundStarter; } + bool isAlive() { return alive_; } + void setSoundStarter(Z2SoundStarter* soundStarter) { soundStarter_ = soundStarter; } -#if VERSION == VERSION_SHIELD_DEBUG - /* 0x10 */ u8 unk_0x10[0x20 - 0x10]; -#endif - - virtual void framework(u32, s8 reverb); + virtual void framework(u32 mapinfo, s8 reverb); virtual void dispose(); - virtual bool stopOK(Z2SoundHandlePool& pool); - virtual void init(Vec* pSoundPos, u8 pNumHandles); - virtual Z2SoundHandlePool* startSound(JAISoundID, u32, s8); - virtual Z2SoundHandlePool* startLevelSound(JAISoundID, u32, s8); + virtual bool stopOK(Z2SoundHandlePool& handlePool); + virtual void init(Vec* posPtr, u8 handleNum); + virtual Z2SoundHandlePool* startSound(JAISoundID soundID, u32 mapinfo, s8 reverb); + virtual Z2SoundHandlePool* startLevelSound(JAISoundID soundID, u32 mapinfo, s8 reverb); - /* 0x14 */ Z2SoundStarter* mSoundStarter; - /* 0x18 */ JGeometry::TVec3* mSoundPos; + /* 0x14 */ Z2SoundStarter* soundStarter_; + /* 0x18 */ JGeometry::TVec3* pos_; /* 0x1C */ u16 field_0x1c; - /* 0x1E */ s8 field_0x1e; - /* 0x1F */ bool mIsInitialized; + /* 0x1E */ s8 reverb_; + /* 0x1F */ bool alive_; }; class Z2SoundObjSimple : public Z2SoundObjBase { @@ -40,51 +40,54 @@ public: Z2SoundObjSimple(); ~Z2SoundObjSimple() {} - virtual void init(Vec* pSoundPos, u8 pNumHandles); - virtual Z2SoundHandlePool* startSound(JAISoundID, u32, s8); - virtual Z2SoundHandlePool* startLevelSound(JAISoundID, u32, s8); + virtual void init(Vec* posPtr, u8 handleNum); + virtual Z2SoundHandlePool* startSound(JAISoundID soundID, u32 mapinfo, s8 reverb); + virtual Z2SoundHandlePool* startLevelSound(JAISoundID soundID, u32 mapinfo, s8 reverb); }; class Z2SoundObjAnime : public Z2SoundObjBase { public: /* 802BEB94 */ Z2SoundObjAnime(); - /* 802BEBFC */ void initAnime(void*, bool, f32, f32); + /* 802BEBFC */ void initAnime(void* animation, bool, f32 startFrame, f32); /* 802BED68 */ void ageSounds_(); /* 802BEED4 */ void updateAnime(f32, f32); /* 802BF304 */ void updateSoundLifeTime_(f32, f32); - /* 802BF660 */ void startSoundInner(JGeometry::TVec3 const&, f32, Z2SoundStarter*, u32, - s8); - /* 802BF890 */ u32 getSoundID(JAUSoundAnimationSound const*, - JGeometry::TVec3 const&, f32); - /* 802BF898 */ bool playsSound(JAUSoundAnimationSound const*, JGeometry::TVec3 const&, - f32); + /* 802BF660 */ void startSoundInner(const JGeometry::TVec3& pos, f32 param_1, + Z2SoundStarter* soundStarter, u32 mapinfo, s8 reverb); + /* 802BF890 */ u32 getSoundID(const JAUSoundAnimationSound* animationSound, const JGeometry::TVec3&, f32); + /* 802BF898 */ bool playsSound(const JAUSoundAnimationSound* animationSound, const JGeometry::TVec3&, f32); - /* 802BEBDC */ virtual void init(Vec*, u8); + /* 802BEBDC */ virtual void init(Vec* posPtr, u8 handleNum); - void stopAnime() { mpAnimation = NULL; } - void setLoopStartFrame(f32 i_frame) { - mStartSoundFrame = i_frame; - mStartSoundIndex = mpAnimation->getStartSoundIndex(i_frame); - } - void setLoopEndFrame(f32 i_frame) { - mEndSoundFrame = i_frame; - mEndSoundIndex = mpAnimation->getEndSoundIndex(i_frame); - } - void setLoopFrame(f32 i_startFrame, f32 i_endFrame) { - setLoopStartFrame(i_startFrame); - setLoopEndFrame(i_endFrame); + void stopAnime() { animation_ = NULL; } + + void setLoopStartFrame(f32 frame) { + JUT_ASSERT(119, animation_); + startSoundFrame_ = frame; + startSoundIndex_ = animation_->getStartSoundIndex(frame); } - /* 0x20 */ JAUSoundAnimation* mpAnimation; + void setLoopEndFrame(f32 frame) { + JUT_ASSERT(125, animation_); + endSoundFrame_ = frame; + endSoundIndex_ = animation_->getEndSoundIndex(frame); + } + + void setLoopFrame(f32 startFrame, f32 endFrame) { + setLoopStartFrame(startFrame); + setLoopEndFrame(endFrame); + } + + /* 0x20 */ JAUSoundAnimation* animation_; /* 0x24 */ int field_0x24; - /* 0x28 */ f32 mCurSoundFrame; - /* 0x2C */ f32 mStartSoundFrame; - /* 0x30 */ f32 mEndSoundFrame; - /* 0x34 */ int mStartSoundIndex; - /* 0x38 */ int mEndSoundIndex; + /* 0x28 */ f32 curSoundFrame_; + /* 0x2C */ f32 startSoundFrame_; + /* 0x30 */ f32 endSoundFrame_; + /* 0x34 */ int startSoundIndex_; + /* 0x38 */ int endSoundIndex_; /* 0x3C */ int field_0x3c; - /* 0x40 */ int mCurSoundIndex; - /* 0x44 */ bool mReverse; + /* 0x40 */ int curSoundIndex_; + /* 0x44 */ bool reverse_; }; class Z2DopplerSoundObjBase : public Z2SoundObjBase { @@ -92,10 +95,10 @@ public: Z2DopplerSoundObjBase(); ~Z2DopplerSoundObjBase(); - virtual void framework(u32, s8); - virtual void init(Vec*, u8); - virtual Z2SoundHandlePool* startSound(JAISoundID, u32, s8); - virtual Z2SoundHandlePool* startLevelSound(JAISoundID, u32, s8); + virtual void framework(u32 mapinfo, s8 reverb); + virtual void init(Vec* posPtr, u8 handleNum); + virtual Z2SoundHandlePool* startSound(JAISoundID soundID, u32 mapinfo, s8 reverb); + virtual Z2SoundHandlePool* startLevelSound(JAISoundID soundID, u32 mapinfo, s8 reverb); /* 0x20 */ JGeometry::TVec3 field_0x20; /* 0x2C */ JGeometry::TVec3 field_0x2c; @@ -104,7 +107,7 @@ public: class Z2SoundObjArrow : public Z2DopplerSoundObjBase { public: /* 802BEB38 */ Z2SoundObjArrow(); - /* 802BEB74 */ virtual void init(Vec*, u8); + /* 802BEB74 */ virtual void init(Vec* posPtr, u8 handleNum); }; #endif /* Z2SOUNDOBJECT_H */ diff --git a/include/Z2AudioLib/Z2SoundStarter.h b/include/Z2AudioLib/Z2SoundStarter.h index ece10c7fd7..38f1e514ee 100644 --- a/include/Z2AudioLib/Z2SoundStarter.h +++ b/include/Z2AudioLib/Z2SoundStarter.h @@ -4,14 +4,15 @@ #include "JSystem/JAudio2/JAISoundStarter.h" struct Z2SoundStarter : public JAISoundStarter, public JASGlobalInstance { - Z2SoundStarter(bool); - void setPortData(JAISoundHandle*, u32, u16, s8); - u16 getPortData(JAISoundHandle*, u32, s8); + Z2SoundStarter(bool setInstance); + void setPortData(JAISoundHandle* handlePtr, u32 portNum, u16 data, s8 childIndex); + u16 getPortData(JAISoundHandle* handlePtr, u32 portNum, s8 childIndex); virtual ~Z2SoundStarter() {} - virtual bool startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*); - virtual bool startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3 const*, u32, float, - float, float, float, float, u32); + virtual bool startSound(JAISoundID soundID, JAISoundHandle* handlePtr, const JGeometry::TVec3* posPtr); + virtual bool startSound(JAISoundID soundID, JAISoundHandle* handlePtr, + const JGeometry::TVec3* posPtr, u32 mapinfo, f32 fxMix, + f32 pitch, f32 volume, f32 pan, f32 dolby, u32 moveSteps); }; inline Z2SoundStarter* Z2GetSoundStarter() { diff --git a/include/Z2AudioLib/Z2StatusMgr.h b/include/Z2AudioLib/Z2StatusMgr.h index f3b35f612f..6532801576 100644 --- a/include/Z2AudioLib/Z2StatusMgr.h +++ b/include/Z2AudioLib/Z2StatusMgr.h @@ -2,7 +2,7 @@ #define Z2STATUSMGR_H #include "JSystem/JAudio2/JASGadget.h" -#include "dolphin/mtx.h" +#include struct Z2StatusMgr : public JASGlobalInstance { Z2StatusMgr(); @@ -13,13 +13,13 @@ struct Z2StatusMgr : public JASGlobalInstance { void menuIn(); void menuOut(); bool isMovieDemo(); - void setDemoName(char*); + void setDemoName(char* demoName); void processTime(); bool checkDayTime(); - void setEventBit(void*); - void setCameraPolygonPos(Vec*); + void setEventBit(void* eventBit); + void setCameraPolygonPos(Vec* polygonPos); void setCameraGroupInfo(u8); - void setCameraInWaterDepth(float); + void setCameraInWaterDepth(f32 depth); u8 getDemoStatus() { return mDemoStatus; } void setHour(s32 hour) { mHour = hour; } @@ -28,7 +28,7 @@ struct Z2StatusMgr : public JASGlobalInstance { f32 getCameraInWaterDepth() { return mUnderwaterDepth; } f32 getCameraInWaterDepthRatio() { return mCameraInWaterDepthRatio; } u8 getHour() { return mHour; } - bool isPaused() { return mPauseFlag; } + u8 isPaused() { return mPauseFlag; } bool isHeartGuageOn() { return mHeartGaugeOn; } void getCameraMapInfo(u32 info) { mCameraMapInfo = info; } void setPauseFlag(u8 flag) { mPauseFlag = flag; } diff --git a/include/Z2AudioLib/Z2WolfHowlMgr.h b/include/Z2AudioLib/Z2WolfHowlMgr.h index 3e7a586d04..2b2595d1ea 100644 --- a/include/Z2AudioLib/Z2WolfHowlMgr.h +++ b/include/Z2AudioLib/Z2WolfHowlMgr.h @@ -13,14 +13,33 @@ * The low byte of each u16 line corresponds to length of note */ -struct SongNote { - u8 barType; +struct Z2WolfHowlLine { + u8 type; u8 length; }; +#define HOWL_LINE_HIGH 1 +#define HOWL_LINE_MID 2 +#define HOWL_LINE_LOW 3 + struct Z2WolfHowlData { - u8 mLineNum; - SongNote* mSongData; + u8 lineNum; + Z2WolfHowlLine* lineData; +}; + +enum Z2WolfHowlCurveID { + Z2WOLFHOWL_NONE = -1, + Z2WOLFHOWL_TOBIKUSA, + Z2WOLFHOWL_UMAKUSA, + Z2WOLFHOWL_ZELDASONG, + Z2WOLFHOWL_HEALINGSONG, + Z2WOLFHOWL_SOULREQUIEM, + Z2WOLFHOWL_LIGHTPRELUDE, + Z2WOLFHOWL_NEWSONG1, + Z2WOLFHOWL_NEWSONG2, + Z2WOLFHOWL_NEWSONG3, + + Z2WOLFHOWL_MAX }; class Z2WolfHowlMgr : public JASGlobalInstance { @@ -32,32 +51,32 @@ public: f32 getNowPitch(); f32 getNowInputValue(); void calcPitchMod(f32, f32); - s8 startWolfHowlSound(f32, f32, bool, f32); - void setCorrectData(s8, Z2WolfHowlData*); - SongNote getCorrectLine(u8); + s8 startWolfHowlSound(f32, f32 stickValue, bool isHowl, f32); + void setCorrectData(s8 curveID, Z2WolfHowlData* data); + Z2WolfHowlLine getCorrectLine(u8 lineIndex); u8 getCorrectLineNum(); s8 checkLine(); s8 getOnLineNum(); - void startWindStoneSound(s8, Vec*); - int startGuideMelody(bool); + void startWindStoneSound(s8 curveID, Vec* pos); + int startGuideMelody(bool startSound); void skipCorrectDemo(); - void setCorrectCurve(s8 i_curve) { setCorrectData(i_curve, NULL); } + void setCorrectCurve(s8 curveID) { setCorrectData(curveID, NULL); } u32 getTimer() { return mTimer; } u8 getReleaseTimer() { return mReleaseTimer; } u8 getCorrectCurveID() { return mCorrectCurveID; } private: - /* 0x00 */ JAISoundHandle field_0x00; - /* 0x04 */ JAISoundHandle field_0x04; - /* 0x08 */ JAISoundHandle field_0x08; - /* 0x0C */ Z2WolfHowlData* mpCurSong; - /* 0x10 */ Z2WolfHowlData* mpSongList; + /* 0x00 */ JAISoundHandle mWolfHowlHandle; + /* 0x04 */ JAISoundHandle mWindStoneHandle; + /* 0x08 */ JAISoundHandle mGuideHandle; + /* 0x0C */ Z2WolfHowlData* mNowHowlData; + /* 0x10 */ Z2WolfHowlData* mGuideData; /* 0x14 */ f32 mNowInputValue; - /* 0x18 */ f32 field_0x18; + /* 0x18 */ f32 mWolfHowlVolume; /* 0x1C */ f32 field_0x1c; /* 0x20 */ f32 field_0x20; - /* 0x24 */ f32 field_0x24; + /* 0x24 */ f32 mNowPitch; /* 0x28 */ f32 field_0x28; /* 0x2C */ u8 field_0x2c[4]; /* 0x30 */ f32 field_0x30; @@ -69,13 +88,13 @@ private: /* 0x8D */ u8 field_0x8d; /* 0x8E */ s8 mCorrectCurveID; /* 0x8F */ u8 field_0x8f; - /* 0x90 */ s16 field_0x90; + /* 0x90 */ s16 mCorrectScore; /* 0x92 */ u16 field_0x92[20]; - /* 0xBA */ u8 field_0xba; + /* 0xBA */ u8 mNowLineIndex; /* 0xBB */ s8 field_0xbb; - /* 0xBC */ u8 field_0xbc; + /* 0xBC */ u8 mNowLineScore; /* 0xBD */ s8 field_0xbd; - /* 0xBE */ u16 field_0xbe; + /* 0xBE */ u16 mFullScore; }; #endif /* Z2WOLFHOWLMGR_H */ diff --git a/include/d/actor/d_a_alink.h b/include/d/actor/d_a_alink.h index 37c96e69bc..61d5357ae1 100644 --- a/include/d/actor/d_a_alink.h +++ b/include/d/actor/d_a_alink.h @@ -3759,8 +3759,8 @@ public: u8 getCorrectLineNum() { return mZ2WolfHowlMgr.getCorrectLineNum(); } u32 getWolfHowlTimer() { return mZ2WolfHowlMgr.getTimer(); } s8 getOnLineNum() { return mZ2WolfHowlMgr.getOnLineNum(); } - SongNote getCorrectLine(u8 param_0) { return mZ2WolfHowlMgr.getCorrectLine(param_0); } - void startWindStoneSound(s8 id, Vec* pos) { mZ2WolfHowlMgr.startWindStoneSound(id, pos); } + Z2WolfHowlLine getCorrectLine(u8 i_lineIndex) { return mZ2WolfHowlMgr.getCorrectLine(i_lineIndex); } + void startWindStoneSound(s8 i_curveID, Vec* i_pos) { mZ2WolfHowlMgr.startWindStoneSound(i_curveID, i_pos); } J3DModelData* getItemModelData() { return mpItemModelData; } cXyz* getIronBallChainPos() const { return mIronBallChainPos; } diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h index 04a5fc889a..538f53d117 100644 --- a/include/d/d_com_inf_game.h +++ b/include/d/d_com_inf_game.h @@ -1083,6 +1083,7 @@ void dComIfGs_Grass_hide_Set(s8 param_0); void dComIfGs_onGetMagicUseFlag(); void dComIfG_playerStatusD(); void dComIfG_playerStatusD_pre_clear(); +void dComIfGs_staffroll_next_go(); inline void dComIfGs_init() { g_dComIfG_gameInfo.info.init(); diff --git a/src/JSystem/JAudio2/JAIAudience.cpp b/src/JSystem/JAudio2/JAIAudience.cpp index 6d8ba4eff7..3e1205e2fc 100644 --- a/src/JSystem/JAudio2/JAIAudience.cpp +++ b/src/JSystem/JAudio2/JAIAudience.cpp @@ -1,5 +1,12 @@ #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JAIAudience.h" +#include "JSystem/JAudio2/JAISeMgr.h" +#include "JSystem/JAudio2/JAISeqMgr.h" +#include "JSystem/JAudio2/JAIStreamMgr.h" -JAIAudience::~JAIAudience() {} +JAIAudience::~JAIAudience() { + JUT_ASSERT(14, ! JAISeMgr::getInstance() || ( JAISeMgr::getInstance() ->getAudience() != this )); + JUT_ASSERT(15, ! JAISeqMgr::getInstance() || ( JAISeqMgr::getInstance() ->getAudience() != this )); + JUT_ASSERT(16, ! JAIStreamMgr::getInstance() || ( JAIStreamMgr::getInstance() ->getAudience() != this )); +} diff --git a/src/JSystem/JAudio2/JAISe.cpp b/src/JSystem/JAudio2/JAISe.cpp index ad08fcd3d8..08fc743591 100644 --- a/src/JSystem/JAudio2/JAISe.cpp +++ b/src/JSystem/JAudio2/JAISe.cpp @@ -1,8 +1,3 @@ -// -// Generated By: dol2asm -// Translation Unit: JAISe -// - #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JAISe.h" @@ -11,56 +6,62 @@ /* 8029F03C-8029F0F8 29997C 00BC+00 0/0 1/1 0/0 .text * __ct__5JAISeFP8JAISeMgrP27JAISoundStrategyMgr<5JAISe>Ul */ -JAISe::JAISe(JAISeMgr* param_0, JAISoundStrategyMgr* param_1, u32 param_2) : JSULink(this) { - inner_.mSoundStrategyMgr = param_1; - inner_.seMgr = param_0; - inner_.mProperPriority = param_2; +JAISe::JAISe(JAISeMgr* seMgr, JAISoundStrategyMgr* soundStrategyMgr, u32 priority) : JSULink(this) { + inner_.mSoundStrategyMgr = soundStrategyMgr; + inner_.seMgr = seMgr; + inner_.mProperPriority = priority; } /* 8029F0F8-8029F214 299A38 011C+00 1/1 0/0 0/0 .text mixOut___5JAISeFRC14JASSoundParams */ -void JAISe::mixOut_(JASSoundParams const& param_0) { +void JAISe::mixOut_(const JASSoundParams& params) { inner_.track.setTempoRate(inner_.mTempoMgr.getTempo()); - JASSoundParams stackParams; - params.mixOutAll(param_0, &stackParams, fader.getIntensity()); + JASSoundParams mixParams; + params_.mixOutAll(params, &mixParams, fader_.getIntensity()); + if (inner_.field_0x278) { - inner_.field_0x278->virtual4(this, stackParams); + inner_.field_0x278->virtual4(this, mixParams); } + if (audible_) { int maxChannels = audience_->getMaxChannels(); for (int i = 0; i < maxChannels; i++) { - audience_->mixChannelOut(stackParams, audible_, i); + audience_->mixChannelOut(mixParams, audible_, i); } } else { - inner_.mSoundParams = stackParams; + inner_.mSoundParams = mixParams; } } /* 8029F214-8029F250 299B54 003C+00 1/1 0/0 0/0 .text stopTrack___5JAISeFv */ void JAISe::stopTrack_() { switch (inner_.track.getStatus()) { - case 0: + case JASTrack::STATUS_FREE: break; - case 1: + case JASTrack::STATUS_RUN: inner_.track.stopSeq(); break; - case 2: + case JASTrack::STATUS_STOP: break; } } /* 8029F250-8029F304 299B90 00B4+00 1/1 0/0 0/0 .text startTrack___5JAISeFRC14JASSoundParams */ -void JAISe::startTrack_(JASSoundParams const& param_0) { - if (inner_.track.getStatus() == 2) { +void JAISe::startTrack_(const JASSoundParams& params) { + JUT_ASSERT(72, inner_.track.getStatus() != JASTrack::STATUS_RUN); + + if (inner_.track.getStatus() == JASTrack::STATUS_STOP) { inner_.track.init(); } + if (audible_) { initTrack_JAISound_(&inner_.track); } else { - params.mixOutAll(param_0, &inner_.mSoundParams, fader.getIntensity()); + params_.mixOutAll(params, &inner_.mSoundParams, fader_.getIntensity()); inner_.track.setChannelMgrCount(1); inner_.track.assignExtBuffer(0, &inner_.mSoundParams); } + inner_.field_0x26c = 1; inner_.track.setSeqData(inner_.mSeqData.field_0x0, inner_.mSeqData.field_0x4); inner_.track.startSeq(); @@ -68,27 +69,27 @@ void JAISe::startTrack_(JASSoundParams const& param_0) { /* 8029F304-8029F4CC 299C44 01C8+00 0/0 1/1 0/0 .text * JAISeCategoryMgr_mixOut___5JAISeFbRC14JASSoundParams16JAISoundActivity */ -void JAISe::JAISeCategoryMgr_mixOut_(bool param_0, JASSoundParams const& param_1, JAISoundActivity param_2) { - mixOut_(param_1); +void JAISe::JAISeCategoryMgr_mixOut_(bool param_0, const JASSoundParams& params, JAISoundActivity activity) { + mixOut_(params); if (isStopping()) { stopTrack_(); } else if (param_0) { if (status_.isPlaying()) { if (inner_.field_0x26c) { switch (inner_.track.getStatus()) { - case 2: + case JASTrack::STATUS_STOP: if (status_.field_0x1.flags.flag1) { - startTrack_(param_1); + startTrack_(params); } else { stop_JAISound_(); } break; - case 1: - inner_.track.pause(status_.isPaused() || param_2.field_0x0.flags.flag2); - inner_.track.mute(status_.isMute() || param_2.field_0x0.flags.flag1); + case JASTrack::STATUS_RUN: + inner_.track.pause(status_.isPaused() || activity.field_0x0.flags.flag2); + inner_.track.mute(status_.isMute() || activity.field_0x0.flags.flag1); } } else { - startTrack_(param_1); + startTrack_(params); } } } else if (status_.field_0x1.flags.flag1) { @@ -106,31 +107,33 @@ void JAISe::JAISeCategoryMgr_mixOut_(bool param_0, JASSoundParams const& param_1 /* 8029F4CC-8029F5C8 299E0C 00FC+00 0/0 1/1 0/0 .text JAISeCategoryMgr_calc___5JAISeFv */ void JAISe::JAISeCategoryMgr_calc_() { prepare_(); + if (calc_JAISound_()) { inner_.mTempoMgr.calc(); if (inner_.field_0x278) { inner_.field_0x278->calc(this); } } - if (isStopping() || mPriority == -1) { + + if (isStopping() || priority_ == -1) { inner_.mPriority = -1; } else { - inner_.mPriority = inner_.mProperPriority + mPriority; + inner_.mPriority = inner_.mProperPriority + priority_; } } /* 8029F5C8-8029F650 299F08 0088+00 2/1 0/0 0/0 .text JAISound_tryDie___5JAISeFv */ bool JAISe::JAISound_tryDie_() { switch (inner_.track.getStatus()) { - case 0: - case 2: + case JASTrack::STATUS_FREE: + case JASTrack::STATUS_STOP: if (inner_.field_0x278) { inner_.mSoundStrategyMgr->virtual4(inner_.field_0x278); inner_.field_0x278 = NULL; } die_JAISound_(); return true; - case 1: + case JASTrack::STATUS_RUN: break; } return false; @@ -138,11 +141,13 @@ bool JAISe::JAISound_tryDie_() { /* 8029F650-8029F6D8 299F90 0088+00 0/0 1/1 0/0 .text * JAISeMgr_startID___5JAISeF10JAISoundIDPCQ29JGeometry8TVec3P11JAIAudience */ -void JAISe::JAISeMgr_startID_(JAISoundID param_0, JGeometry::TVec3 const* param_1, JAIAudience* param_2) { - start_JAISound_(param_0, param_1, param_2); +void JAISe::JAISeMgr_startID_(JAISoundID id, const JGeometry::TVec3* posPtr, JAIAudience* audience) { + JUT_ASSERT(221, inner_.track.getStatus() == JASTrack::STATUS_FREE); + + start_JAISound_(id, posPtr, audience); inner_.field_0x26c = 0; if (inner_.mSoundStrategyMgr) { - inner_.field_0x278 = inner_.mSoundStrategyMgr->calc(param_0); + inner_.field_0x278 = inner_.mSoundStrategyMgr->calc(id); } else { inner_.field_0x278 = NULL; } @@ -159,14 +164,17 @@ JAISoundChild* JAISe::getChild(int param_0) { } /* 8029F6E8-8029F6EC 29A028 0004+00 2/1 0/0 0/0 .text releaseChild__5JAISeFi */ -void JAISe::releaseChild(int param_0) { - /* empty function */ -} +void JAISe::releaseChild(int param_0) {} /* 8029F6EC-8029F78C 29A02C 00A0+00 1/1 0/0 0/0 .text prepare_getSeqData___5JAISeFv */ bool JAISe::prepare_getSeqData_() { - switch (inner_.seMgr->getSeqDataMgr()->getSeqData(soundID, &inner_.mSeqData)) { + JUT_ASSERT(271, inner_.track.getStatus() != JASTrack::STATUS_RUN); + JUT_ASSERT(272, inner_.seMgr); + JUT_ASSERT(273, inner_.seMgr ->getSeqDataMgr()); + + switch (inner_.seMgr->getSeqDataMgr()->getSeqData(getID(), &inner_.mSeqData)) { case 0: + OS_REPORT("Failed In Loading Sequence Data:SE(0x%08x)\n", *(u32*)&getID()); status_.state.unk = 2; return false; case 1: @@ -174,7 +182,10 @@ bool JAISe::prepare_getSeqData_() { return false; case 2: return true; + default: + JUT_ASSERT(296, false); } + return false; } @@ -182,6 +193,7 @@ bool JAISe::prepare_getSeqData_() { void JAISe::prepare_() { switch (status_.state.unk) { case 6: + JUT_ASSERT(306, false); break; case 2: stop_JAISound_(); diff --git a/src/JSystem/JAudio2/JAISeMgr.cpp b/src/JSystem/JAudio2/JAISeMgr.cpp index 040f2fde5b..0501961910 100644 --- a/src/JSystem/JAudio2/JAISeMgr.cpp +++ b/src/JSystem/JAudio2/JAISeMgr.cpp @@ -1,8 +1,3 @@ -// -// Generated By: dol2asm -// Translation Unit: JAISeMgr -// - #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JAISeMgr.h" @@ -12,14 +7,14 @@ /* 8029F8B0-8029F91C 29A1F0 006C+00 2/1 0/0 0/0 .text * isUsingSeqData__16JAISeCategoryMgrFRC16JAISeqDataRegion */ -bool JAISeCategoryMgr::isUsingSeqData(JAISeqDataRegion const& param_0) { - JSULink* link = mSeList.getFirst(); - while (link != NULL) { - JAISe* obj = link->getObject(); - if (param_0.intersects(*obj->getSeqData())) { +bool JAISeCategoryMgr::isUsingSeqData(const JAISeqDataRegion& seqDataRegion) { + JSULink* i = mSeList.getFirst(); + while (i != NULL) { + JAISe* obj = i->getObject(); + if (seqDataRegion.intersects(*obj->getSeqData())) { return true; } - link = link->getNext(); + i = i->getNext(); } return false; @@ -27,67 +22,68 @@ bool JAISeCategoryMgr::isUsingSeqData(JAISeqDataRegion const& param_0) { /* 8029F91C-8029F9C4 29A25C 00A8+00 2/1 0/0 0/0 .text * releaseSeqData__16JAISeCategoryMgrFRC16JAISeqDataRegion */ -int JAISeCategoryMgr::releaseSeqData(JAISeqDataRegion const& param_0) { +int JAISeCategoryMgr::releaseSeqData(const JAISeqDataRegion& seqDataRegion) { bool bVar1 = false; - for (JSULink* link = mSeList.getFirst(); link != NULL; link = link->getNext()) { - if (param_0.intersects(*link->getObject()->getSeqData())) { - link->getObject()->stop(); + for (JSULink* i = mSeList.getFirst(); i != NULL; i = i->getNext()) { + if (seqDataRegion.intersects(*i->getObject()->getSeqData())) { + i->getObject()->stop(); bVar1 = true; } } - // Fake match. li 2 needs to come after clrlwi - u32 x = bVar1; - u32 y = x; - int rv = 2; - if (x) { - rv = 1; - } - return rv; + + enum {_1 = 1, _2}; // fakematch, figure out what this enum is eventually + return bVar1 ? _1 : _2; } /* 8029F9C4-8029FB30 29A304 016C+00 1/1 0/0 0/0 .text JAISeMgr_calc___16JAISeCategoryMgrFv */ void JAISeCategoryMgr::JAISeMgr_calc_() { mParams.calc(); - for (JSULink* link = mSeList.getFirst(); link != NULL; link = link->getNext()) { - link->getObject()->JAISeCategoryMgr_calc_(); + for (JSULink* i = mSeList.getFirst(); i != NULL; i = i->getNext()) { + i->getObject()->JAISeCategoryMgr_calc_(); } + sortByPriority_(); } /* 8029FB30-8029FC34 29A470 0104+00 1/1 0/0 0/0 .text JAISeMgr_freeDeadSe___16JAISeCategoryMgrFv */ -// JASPoolAllocObject<_> locations void JAISeCategoryMgr::JAISeMgr_freeDeadSe_() { - JSULink* link = mSeList.getFirst(); - while (link != NULL) { - JSULink* link_next = link->getNext(); - if (link->getObject()->status_.isDead()) { - mSeList.remove(link); - delete link->getObject(); + JSULink* i = mSeList.getFirst(); + while (i != NULL) { + JSULink* link_next = i->getNext(); + if (i->getObject()->status_.isDead()) { + JUT_ASSERT(71, ! i->getObject() ->isHandleAttached()); + mSeList.remove(i); + delete i->getObject(); } - link = link_next; + i = link_next; } } /* 8029FC88-8029FD40 29A5C8 00B8+00 1/1 0/0 0/0 .text * JAISeMgr_acceptsNewSe___16JAISeCategoryMgrCFUl */ -bool JAISeCategoryMgr::JAISeMgr_acceptsNewSe_(u32 param_0) const { +bool JAISeCategoryMgr::JAISeMgr_acceptsNewSe_(u32 priority) const { s32 maxSe = getMaxSe(); if (maxSe <= 0) { return 1; } s32 stopCount = 0; - for (JSULink* link = mSeList.getFirst(); link != NULL; link = link->getNext()) { - if (param_0 < link->getObject()->JAISeCategoryMgr_getProperPriority_()) { + for (JSULink* i = mSeList.getFirst(); i != NULL; i = i->getNext()) { + if (priority < i->getObject()->JAISeCategoryMgr_getProperPriority_()) { return 1; } - if (!link->getObject()->isStopping()) { + if (!i->getObject()->isStopping()) { stopCount++; } } - return stopCount < maxSe; + + if (stopCount < maxSe) { + return true; + } else { + return false; + } } /* 8029FD40-8029FDE0 29A680 00A0+00 1/1 0/0 0/0 .text sortByPriority___16JAISeCategoryMgrFv */ @@ -96,6 +92,7 @@ void JAISeCategoryMgr::sortByPriority_() { JSULink* link = mSeList.getFirst(); u32 lowestPriority = link->getObject()->JAISeCategoryMgr_getPriority_(); JSULink* current = link->getNext(); + for (int j = 1; j < i; j++) { u32 itemPriority = current->getObject()->JAISeCategoryMgr_getPriority_(); if (itemPriority < lowestPriority) { @@ -104,32 +101,36 @@ void JAISeCategoryMgr::sortByPriority_() { } current = current->getNext(); } - mSeList.remove(link); - mSeList.append(link); + + bool result = mSeList.remove(link); + JUT_ASSERT(131, result); + + result = mSeList.append(link); + JUT_ASSERT(133, result); } } /* 8029FDE0-8029FE34 29A720 0054+00 0/0 1/1 0/0 .text stop__16JAISeCategoryMgrFUl */ -void JAISeCategoryMgr::stop(u32 param_0) { - for (JSULink* link = mSeList.getFirst(); link != NULL; link = link->getNext()) { - link->getObject()->stop(param_0); +void JAISeCategoryMgr::stop(u32 fadeTime) { + for (JSULink* i = mSeList.getFirst(); i != NULL; i = i->getNext()) { + i->getObject()->stop(fadeTime); } } /* 8029FE34-8029FE78 29A774 0044+00 1/1 0/0 0/0 .text stop__16JAISeCategoryMgrFv */ void JAISeCategoryMgr::stop() { - for (JSULink* link = mSeList.getFirst(); link != NULL; link = link->getNext()) { - link->getObject()->stop(); + for (JSULink* i = mSeList.getFirst(); i != NULL; i = i->getNext()) { + i->getObject()->stop(); } } /* 8029FE78-8029FEEC 29A7B8 0074+00 1/1 0/0 0/0 .text stopSoundID__16JAISeCategoryMgrF10JAISoundID */ -void JAISeCategoryMgr::stopSoundID(JAISoundID param_0) { - if (!param_0.isAnonymous()) { - for (JSULink* link = mSeList.getFirst(); link != NULL; link = link->getNext()) { - if ((u32)link->getObject()->getID() == (u32)param_0) { - link->getObject()->stop(); +void JAISeCategoryMgr::stopSoundID(JAISoundID id) { + if (!id.isAnonymous()) { + for (JSULink* i = mSeList.getFirst(); i != NULL; i = i->getNext()) { + if ((u32)i->getObject()->getID() == (u32)id) { + i->getObject()->stop(); } } } @@ -137,42 +138,44 @@ void JAISeCategoryMgr::stopSoundID(JAISoundID param_0) { /* 8029FEEC-8029FF18 29A82C 002C+00 0/0 2/2 0/0 .text pause__16JAISeCategoryMgrFb */ void JAISeCategoryMgr::pause(bool param_0) { - for (JSULink* link = mSeList.getFirst(); link != NULL; link = link->getNext()) { - link->getObject()->pause(param_0); + for (JSULink* i = mSeList.getFirst(); i != NULL; i = i->getNext()) { + i->getObject()->pause(param_0); } } /* 8029FF18-802A0074 29A858 015C+00 1/1 0/0 0/0 .text * JAISeMgr_mixOut___16JAISeCategoryMgrFRC18JAISoundParamsMove16JAISoundActivity */ -void JAISeCategoryMgr::JAISeMgr_mixOut_(JAISoundParamsMove const& param_0, - JAISoundActivity param_1) { - JASSoundParams aJStack_30; - aJStack_30.combine(param_0.mParams, mParams.mParams); - JSULink* this_00 = mSeList.getFirst(); - int iVar1 = getMaxActiveSe(); +void JAISeCategoryMgr::JAISeMgr_mixOut_(const JAISoundParamsMove& params, + JAISoundActivity activity) { + JASSoundParams mixParams; + mixParams.combine(params.params_, mParams.params_); + JSULink* i = mSeList.getFirst(); + int maxActiveSe = getMaxActiveSe(); + int sp28; - if (iVar1 > 0) { - while (this_00 != NULL && iVar1 > 0 && !this_00->getObject()->isFarAway()) { - this_00->getObject()->JAISeCategoryMgr_mixOut_(true, aJStack_30, param_1); - this_00 = this_00->getNext(); - iVar1--; + if (maxActiveSe > 0) { + while (i != NULL && maxActiveSe > 0 && !i->getObject()->isFarAway()) { + i->getObject()->JAISeCategoryMgr_mixOut_(true, mixParams, activity); + i = i->getNext(); + maxActiveSe--; + sp28 = maxActiveSe; } - for (; this_00 != NULL; this_00 = this_00->getNext()) { - this_00->getObject()->JAISeCategoryMgr_mixOut_(false, aJStack_30, param_1); + for (; i != NULL; i = i->getNext()) { + i->getObject()->JAISeCategoryMgr_mixOut_(false, mixParams, activity); } } else { - while (this_00 != NULL && !this_00->getObject()->isFarAway()) { - this_00->getObject()->JAISeCategoryMgr_mixOut_(true, aJStack_30, param_1); - this_00 = this_00->getNext(); + while (i != NULL && !i->getObject()->isFarAway()) { + i->getObject()->JAISeCategoryMgr_mixOut_(true, mixParams, activity); + i = i->getNext(); } - for (; this_00 != NULL; this_00 = this_00->getNext()) { - this_00->getObject()->JAISeCategoryMgr_mixOut_(false, aJStack_30, param_1); + for (; i != NULL; i = i->getNext()) { + i->getObject()->JAISeCategoryMgr_mixOut_(false, mixParams, activity); } } } /* 802A0074-802A0168 29A9B4 00F4+00 0/0 1/1 0/0 .text __ct__8JAISeMgrFb */ -JAISeMgr::JAISeMgr(bool param_0) : JASGlobalInstance(param_0) { +JAISeMgr::JAISeMgr(bool setInstance) : JASGlobalInstance(setInstance) { mAudience = NULL; mSeqDataMgr = NULL; mStrategyMgr = NULL; @@ -182,9 +185,9 @@ JAISeMgr::JAISeMgr(bool param_0) : JASGlobalInstance(param_0) { /* 802A0168-802A01D8 29AAA8 0070+00 1/0 0/0 0/0 .text * isUsingSeqData__8JAISeMgrFRC16JAISeqDataRegion */ -bool JAISeMgr::isUsingSeqData(JAISeqDataRegion const& param_0) { +bool JAISeMgr::isUsingSeqData(const JAISeqDataRegion& seqDataRegion) { for (int i = 0; i < 16; i++) { - if (mCategoryMgrs[i].JAISeCategoryMgr::isUsingSeqData(param_0)) { + if (mCategoryMgrs[i].JAISeCategoryMgr::isUsingSeqData(seqDataRegion)) { return true; } } @@ -193,26 +196,27 @@ bool JAISeMgr::isUsingSeqData(JAISeqDataRegion const& param_0) { /* 802A01D8-802A0268 29AB18 0090+00 1/0 0/0 0/0 .text * releaseSeqData__8JAISeMgrFRC16JAISeqDataRegion */ -int JAISeMgr::releaseSeqData(JAISeqDataRegion const& param_0) { - u8 r30 = 0; +int JAISeMgr::releaseSeqData(const JAISeqDataRegion& seqDataRegion) { + bool r30 = 0; for (int i = 0; i < 16; i++) { - switch (mCategoryMgrs[i].JAISeCategoryMgr::releaseSeqData(param_0)) { - case 0: - return 0; - case 1: - r30 = 1; - break; + switch (mCategoryMgrs[i].JAISeCategoryMgr::releaseSeqData(seqDataRegion)) { + case 0: + return 0; + case 1: + r30 = 1; + break; } } + return (r30 != 0) ? 1 : 0; } /* 802A0268-802A02A0 29ABA8 0038+00 0/0 1/1 0/0 .text * setCategoryArrangement__8JAISeMgrFRC24JAISeCategoryArrangement */ -void JAISeMgr::setCategoryArrangement(JAISeCategoryArrangement const& param_0) { +void JAISeMgr::setCategoryArrangement(const JAISeCategoryArrangement& arrangement) { for (int i = 0; i < 16; i++) { - mCategoryMgrs[i].setMaxActiveSe(param_0.mItems[i].mMaxActiveSe); - mCategoryMgrs[i].setMaxInactiveSe(param_0.mItems[i].mMaxInactiveSe); + mCategoryMgrs[i].setMaxActiveSe(arrangement.mItems[i].mMaxActiveSe); + mCategoryMgrs[i].setMaxInactiveSe(arrangement.mItems[i].mMaxInactiveSe); } } @@ -225,9 +229,9 @@ void JAISeMgr::stop() { /* 802A02F4-802A0358 29AC34 0064+00 0/0 1/1 0/0 .text stopSoundID__8JAISeMgrF10JAISoundID */ -void JAISeMgr::stopSoundID(JAISoundID param_0) { +void JAISeMgr::stopSoundID(JAISoundID id) { for (int i = 0; i < 16; i++) { - mCategoryMgrs[i].stopSoundID(param_0); + mCategoryMgrs[i].stopSoundID(id); } } @@ -240,14 +244,16 @@ void JAISeMgr::initParams() { /* 802A03D8-802A03E0 -00001 0008+00 0/0 0/0 0/0 .text setAudience__8JAISeMgrFP11JAIAudience */ -void JAISeMgr::setAudience(JAIAudience* param_0) { - mAudience = param_0; +void JAISeMgr::setAudience(JAIAudience* audience) { + JUT_ASSERT(363, ! isActive()); + mAudience = audience; } /* 802A03E0-802A0434 29AD20 0054+00 0/0 1/1 0/0 .text setSeqDataMgr__8JAISeMgrFP13JAISeqDataMgr */ -void JAISeMgr::setSeqDataMgr(JAISeqDataMgr* param_0) { +void JAISeMgr::setSeqDataMgr(JAISeqDataMgr* seqDataMgr) { + JUT_ASSERT(377, ! isActive()); resetSeqDataMgr(); - mSeqDataMgr = param_0; + mSeqDataMgr = seqDataMgr; mSeqDataMgr->setSeqDataUser(this); } @@ -260,21 +266,25 @@ void JAISeMgr::resetSeqDataMgr() { } /* 802A0484-802A0574 29ADC4 00F0+00 1/1 0/0 0/0 .text newSe___8JAISeMgrFiUl */ -JAISe* JAISeMgr::newSe_(int i_category, u32 param_1) { - if (i_category < 0) { - i_category = 0; +JAISe* JAISeMgr::newSe_(int category, u32 priority) { + JUT_ASSERT(396, category < NUM_CATEGORIES); + + if (category < 0) { + category = 0; } - if (!mCategoryMgrs[i_category].JAISeMgr_acceptsNewSe_(param_1)) { + JAISeCategoryMgr* categoryMgr = &mCategoryMgrs[category]; + if (!categoryMgr->JAISeMgr_acceptsNewSe_(priority)) { return NULL; } - JAISe* se = new JAISe(this, mStrategyMgr, param_1); + JAISe* se = new JAISe(this, mStrategyMgr, priority); if (se == NULL) { + JUT_WARN(410, "%s", "JASPoolAllocObject::::operator new failed .\n") return NULL; } - mCategoryMgrs[i_category].JAISeMgr_appendSe_(se); + categoryMgr->JAISeMgr_appendSe_(se); return se; } @@ -298,43 +308,49 @@ void JAISeMgr::mixOut() { /* 802A0768-802A08D0 29B0A8 0168+00 0/0 1/1 0/0 .text * startSound__8JAISeMgrF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3 */ -bool JAISeMgr::startSound(JAISoundID param_0, JAISoundHandle* param_1, - JGeometry::TVec3 const* param_2) { - if (param_1 && param_1->isSoundAttached()) { - param_1->getSound()->stop(); +bool JAISeMgr::startSound(JAISoundID id, JAISoundHandle* handle, const JGeometry::TVec3* posPtr) { + if (handle && *handle) { + (*handle)->stop(); } - JAISoundInfo* pSoundInfo = JASGlobalInstance::getInstance(); - u32 uVar4; - u32 categoryIndex; - if (pSoundInfo != NULL) { - categoryIndex = pSoundInfo->getCategory(param_0); - uVar4 = pSoundInfo->getPriority(param_0); + JAISoundInfo* soundInfoPtr = JASGlobalInstance::getInstance(); + u32 priority; + u32 category; + if (soundInfoPtr != NULL) { + category = soundInfoPtr->getCategory(id); + priority = soundInfoPtr->getPriority(id); } else { - categoryIndex = param_0.mId.mBytes.b1; - uVar4 = 0; + category = id.id_.info.type.parts.groupID; + priority = 0; } - JAISe* pJAISe = newSe_(categoryIndex, uVar4); - if (pJAISe == NULL) { - JASReport("cannot new Se %08x.", param_0.mId.mFullId); + + JAISe* se = newSe_(category, priority); + if (se == NULL) { + #if !PLATFORM_SHIELD + JASReport("cannot new Se %08x.", id.id_.composite_); + #endif return false; } - JAIAudience* pAudience = getAudience(categoryIndex); - pJAISe->JAISeMgr_startID_(param_0, param_2, pAudience); - if (pSoundInfo != NULL) { - pSoundInfo->getSeInfo(param_0, pJAISe); + + JAIAudience* audiencePtr = getAudience(category); + se->JAISeMgr_startID_(id, posPtr, audiencePtr); + + if (soundInfoPtr != NULL) { + soundInfoPtr->getSeInfo(id, se); } - if (param_1 != NULL) { - pJAISe->attachHandle(param_1); + + if (handle != NULL) { + se->attachHandle(handle); } + return true; } /* 802A08D0-802A08FC 29B210 002C+00 0/0 2/2 0/0 .text getNumActiveSe__8JAISeMgrCFv */ int JAISeMgr::getNumActiveSe() const { - int sum = 0; + int num = 0; for (int i = 0; i < 16; i++) { - sum += mCategoryMgrs[i].getNumSe(); + num += mCategoryMgrs[i].getNumSe(); } - return sum; + return num; } diff --git a/src/JSystem/JAudio2/JAISeq.cpp b/src/JSystem/JAudio2/JAISeq.cpp index 215317e194..5e9ec3a5ad 100644 --- a/src/JSystem/JAudio2/JAISeq.cpp +++ b/src/JSystem/JAudio2/JAISeq.cpp @@ -1,14 +1,8 @@ -// -// Generated By: dol2asm -// Translation Unit: JAISeq -// - #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JAISeq.h" #include "JSystem/JAudio2/JAISeqMgr.h" #include "JSystem/JAudio2/JAISoundChild.h" -#include "JSystem/JKernel/JKRHeap.h" #include "JSystem/JAudio2/JASCriticalSection.h" #include "JSystem/JAudio2/JAIAudience.h" @@ -17,17 +11,17 @@ namespace { /* 802A0A6C-802A0A8C 29B3AC 0020+00 1/1 0/0 0/0 .text * JASTrack_isFreeOrStopped__20@unnamed@JAISeq_cpp@FP8JASTrack */ static bool JASTrack_isFreeOrStopped(JASTrack* track) { - u8 status = track->getStatus(); - return status == 0 || status == 2; + u32 status = track->getStatus(); + return status == JASTrack::STATUS_FREE || status == JASTrack::STATUS_STOP; } } // namespace /* 802A0A8C-802A0B64 29B3CC 00D8+00 0/0 2/1 0/0 .text * __ct__6JAISeqFP9JAISeqMgrP28JAISoundStrategyMgr<6JAISeq> */ -JAISeq::JAISeq(JAISeqMgr* param_0, JAISoundStrategyMgr* param_1) : JSULink(this) { - inner_.seqMgr = param_0; - inner_.strategyMgr = param_1; +JAISeq::JAISeq(JAISeqMgr* seqMgr, JAISoundStrategyMgr* soundStrategyMgr) : JSULink(this) { + inner_.seqMgr = seqMgr; + inner_.strategyMgr = soundStrategyMgr; inner_.mSoundParams.init(); for (int i = 0; i < 32; i++) { inner_.mSoundChild[i] = NULL; @@ -36,13 +30,14 @@ JAISeq::JAISeq(JAISeqMgr* param_0, JAISoundStrategyMgr* param_1) : JSULi /* 802A0B64-802A0C04 29B4A4 00A0+00 0/0 1/1 0/0 .text * JAISeqMgr_startID___6JAISeqF10JAISoundIDPCQ29JGeometry8TVec3P11JAIAudienceii */ -void JAISeq::JAISeqMgr_startID_(JAISoundID param_0, JGeometry::TVec3 const* param_1, - JAIAudience* param_2, int param_3, int param_4) { - inner_.field_0x39c = param_3; +void JAISeq::JAISeqMgr_startID_(JAISoundID id, const JGeometry::TVec3* posPtr, + JAIAudience* audience, int category, int param_4) { + inner_.field_0x39c = category; reserveChildTracks_(param_4); - start_JAISound_(param_0, param_1, param_2); + start_JAISound_(id, posPtr, audience); + if (inner_.strategyMgr) { - field_0x3a8 = inner_.strategyMgr->calc(param_0); + field_0x3a8 = inner_.strategyMgr->calc(id); } else { field_0x3a8 = NULL; } @@ -50,7 +45,9 @@ void JAISeq::JAISeqMgr_startID_(JAISoundID param_0, JGeometry::TVec3 const* /* 802A0C04-802A0CA4 29B544 00A0+00 1/1 0/0 0/0 .text * playSeqData___6JAISeqFRC14JASSoundParams16JAISoundActivity */ -void JAISeq::playSeqData_(JASSoundParams const& param_0, JAISoundActivity param_1) { +void JAISeq::playSeqData_(const JASSoundParams& params, JAISoundActivity activity) { + JUT_ASSERT(72, JASTrack_isFreeOrStopped( & inner_.outputTrack )); + inner_.outputTrack.setSeqData(inner_.mSeqData.field_0x0, inner_.mSeqData.field_0x4); if (audible_) { initTrack_JAISound_(&inner_.outputTrack); @@ -58,33 +55,42 @@ void JAISeq::playSeqData_(JASSoundParams const& param_0, JAISoundActivity param_ inner_.outputTrack.setChannelMgrCount(1); inner_.outputTrack.assignExtBuffer(0, &inner_.mSoundParams); } - mixOut_(param_0, param_1); + + mixOut_(params, activity); inner_.outputTrack.startSeq(); } /* 802A0CA4-802A0E48 29B5E4 01A4+00 1/1 0/0 0/0 .text reserveChildTracks___6JAISeqFi */ void JAISeq::reserveChildTracks_(int param_0) { + JUT_ASSERT(92, inner_.outputTrack.getStatus() == JASTrack::STATUS_FREE); + for (int i = 0; i < 2; i++) { JASTrack* track = new JASTrack(); if (track) { track->setAutoDelete(true); inner_.outputTrack.connectChild(i, track); + for (int j = 0; j < 16; j++) { - if (i * 16 + j >= param_0) { + int sp18 = i * 16 + j; + if (sp18 >= param_0) { continue; } + JASTrack* track2 = new JASTrack(); if (track2) { track2->setAutoDelete(true); track->connectChild(j, track2); + } else { + JUT_WARN(117, "%s", "JASPoolAllocObject::::operator new failed .\n"); } } + } else { + JUT_WARN(124, "%s", "JASPoolAllocObject::::operator new failed .\n"); } } } /* 802A0E48-802A0EDC 29B788 0094+00 1/1 0/0 0/0 .text releaseChildTracks___6JAISeqFv */ -// NONMATCHING JASPoolAllocObject_MultiThreaded<_> locations void JAISeq::releaseChildTracks_() { for (u32 i = 0; i < 2; i++) { JASTrack* track = inner_.outputTrack.getChild(i); @@ -102,13 +108,17 @@ void JAISeq::releaseChildTracks_() { /* 802A0EDC-802A0F90 29B81C 00B4+00 1/1 0/0 0/0 .text prepare_getSeqData___6JAISeqFv */ bool JAISeq::prepare_getSeqData_() { - JAISoundID id(soundID); + JAISoundID id(soundID_); // fakematch, should be using getID but it messes up stack if (id.isAnonymous()) { return true; } + JAISeqDataMgr* seqDataMgr = inner_.seqMgr->getSeqDataMgr(); + JUT_ASSERT(162, seqDataMgr); + switch (seqDataMgr->getSeqData(id, &inner_.mSeqData)) { case 0: + OS_REPORT("Failed In Loading Sequence Data:SEQ(0x%08x)\n", getID()); status_.state.unk = 2; break; case 1: @@ -117,14 +127,16 @@ bool JAISeq::prepare_getSeqData_() { case 2: return true; } + return false; } /* 802A0F90-802A108C 29B8D0 00FC+00 2/1 0/0 0/0 .text * prepare___6JAISeqFRC14JASSoundParams16JAISoundActivity */ -bool JAISeq::prepare_(JASSoundParams const& param_0, JAISoundActivity param_1) { +bool JAISeq::prepare_(const JASSoundParams& params, JAISoundActivity activity) { switch (status_.state.unk) { case 6: + JUT_ASSERT(193, false); break; case 2: stop_JAISound_(); @@ -132,7 +144,7 @@ bool JAISeq::prepare_(JASSoundParams const& param_0, JAISoundActivity param_1) { case 0: if (prepare_getSeqData_()) { status_.state.unk = 5; - playSeqData_(param_0, param_1); + playSeqData_(params, activity); return true; } break; @@ -143,20 +155,22 @@ bool JAISeq::prepare_(JASSoundParams const& param_0, JAISoundActivity param_1) { return false; case 4: status_.state.unk = 5; - playSeqData_(param_0, param_1); + playSeqData_(params, activity); return true; case 5: return true; } + return false; } /* 802A108C-802A1180 29B9CC 00F4+00 0/0 1/1 0/0 .text JAISeqMgr_calc___6JAISeqFv */ void JAISeq::JAISeqMgr_calc_() { - if (inner_.outputTrack.getStatus() == 2 || (inner_.outputTrack.getStatus() == 0 && status_.state.unk == 2)) { + if (inner_.outputTrack.getStatus() == JASTrack::STATUS_STOP || (inner_.outputTrack.getStatus() == JASTrack::STATUS_FREE && status_.state.unk == 2)) { die_(); return; } + if (calc_JAISound_()) { inner_.mTempoMgr.calc(); for (int i = 0; i < 32; i++) { @@ -171,18 +185,22 @@ void JAISeq::JAISeqMgr_calc_() { } /* 802A1180-802A1268 29BAC0 00E8+00 2/2 0/0 0/0 .text die___6JAISeqFv */ -// NONMATCHING JASPoolAllocObject<_> locations void JAISeq::die_() { + JUT_ASSERT(269, JASTrack_isFreeOrStopped( & inner_.outputTrack )); + for (int i = 0; i < 32; i++) { if (inner_.mSoundChild[i]) { delete inner_.mSoundChild[i]; inner_.mSoundChild[i] = NULL; } } + if (field_0x3a8) { + JUT_ASSERT(281, inner_.strategyMgr); inner_.strategyMgr->virtual4(field_0x3a8); field_0x3a8 = NULL; } + releaseChildTracks_(); die_JAISound_(); } @@ -193,32 +211,40 @@ bool JAISeq::JAISound_tryDie_() { die_(); return true; } - fader.forceOut(); + + fader_.forceOut(); status_.state.flags.flag1 = 1; - JASCriticalSection cs; - inner_.outputTrack.stopSeq(); + + { + JASCriticalSection cs; + inner_.outputTrack.stopSeq(); + } + return false; } /* 802A1348-802A14FC 29BC88 01B4+00 2/2 0/0 0/0 .text * mixOut___6JAISeqFRC14JASSoundParams16JAISoundActivity */ -void JAISeq::mixOut_(JASSoundParams const& param_0, JAISoundActivity param_1) { +void JAISeq::mixOut_(const JASSoundParams& params, JAISoundActivity activity) { inner_.outputTrack.setTempoRate(inner_.mTempoMgr.getTempo()); - inner_.outputTrack.mute(param_1.field_0x0.flags.flag1 || status_.isMute()); - inner_.outputTrack.pause(param_1.field_0x0.flags.flag2 || status_.isPaused()); - JASSoundParams stackParams; - params.mixOutAll(param_0, &stackParams, fader.getIntensity()); + inner_.outputTrack.mute(activity.field_0x0.flags.flag1 || status_.isMute()); + inner_.outputTrack.pause(activity.field_0x0.flags.flag2 || status_.isPaused()); + + JASSoundParams outParams; + params_.mixOutAll(params, &outParams, fader_.getIntensity()); + if (field_0x3a8) { - field_0x3a8->virtual4(this, stackParams); + field_0x3a8->virtual4(this, outParams); } + if (audible_) { int maxChannels = audience_->getMaxChannels(); for (int i = 0; i < maxChannels; i++) { - audience_->mixChannelOut(stackParams, audible_, i); + audience_->mixChannelOut(outParams, audible_, i); } } else { - inner_.mSoundParams = stackParams; - for (int i = 0; i < 32; i++) { + inner_.mSoundParams = outParams; + for (int i = 0; i < NUM_CHILDREN; i++) { if (inner_.mSoundChild[i]) { JASTrack* track = JAISeq::getChildTrack(i); if (track) { @@ -231,45 +257,49 @@ void JAISeq::mixOut_(JASSoundParams const& param_0, JAISoundActivity param_1) { /* 802A14FC-802A1570 29BE3C 0074+00 0/0 1/1 0/0 .text * JAISeqMgr_mixOut___6JAISeqFRC14JASSoundParams16JAISoundActivity */ -void JAISeq::JAISeqMgr_mixOut_(JASSoundParams const& param_0, JAISoundActivity param_1) { - if (prepare_(param_0, param_1) && inner_.outputTrack.getStatus() == 1) { - mixOut_(param_0, param_1); +void JAISeq::JAISeqMgr_mixOut_(const JASSoundParams& params, JAISoundActivity activity) { + if (prepare_(params, activity) && inner_.outputTrack.getStatus() == JASTrack::STATUS_RUN) { + mixOut_(params, activity); } } /* 802A1570-802A1578 29BEB0 0008+00 1/0 0/0 0/0 .text getNumChild__6JAISeqCFv */ s32 JAISeq::getNumChild() const { - return 32; + return NUM_CHILDREN; } /* 802A1578-802A165C 29BEB8 00E4+00 1/0 0/0 0/0 .text getChild__6JAISeqFi */ -// NONMATCHING JASPoolAllocObject<_> locations JAISoundChild* JAISeq::getChild(int index) { + JUT_ASSERT(371, status_.isAlive()); + JUT_ASSERT(372, index >= 0); + JUT_ASSERT(373, index < NUM_CHILDREN); + if (inner_.mSoundChild[index]) { return inner_.mSoundChild[index]; } + inner_.mSoundChild[index] = new JAISoundChild(); if (!inner_.mSoundChild[index]) { + JUT_WARN(379, "%s", "JASPoolAllocObject::::operator new failed .\n"); return NULL; } + return inner_.mSoundChild[index]; } /* 802A165C-802A1728 29BF9C 00CC+00 1/0 0/0 0/0 .text releaseChild__6JAISeqFi */ -// NONMATCHING JASPoolAllocObject<_> locations -void JAISeq::releaseChild(int param_0) { - if (inner_.outputTrack.getStatus() == 1 && inner_.mSoundChild[param_0]) { - JASTrack* track = getChildTrack(param_0); +void JAISeq::releaseChild(int index) { + if (inner_.outputTrack.getStatus() == JASTrack::STATUS_RUN && inner_.mSoundChild[index]) { + JASTrack* track = getChildTrack(index); if (track) { track->assignExtBuffer(0, NULL); } - delete inner_.mSoundChild[param_0]; - inner_.mSoundChild[param_0] = NULL; + delete inner_.mSoundChild[index]; + inner_.mSoundChild[index] = NULL; } } - /* 802A1728-802A1730 29C068 0008+00 1/0 0/0 0/0 .text getTrack__6JAISeqFv */ JASTrack* JAISeq::getTrack() { return &inner_.outputTrack; @@ -277,12 +307,15 @@ JASTrack* JAISeq::getTrack() { /* 802A1730-802A1768 29C070 0038+00 2/1 0/0 0/0 .text getChildTrack__6JAISeqFi */ JASTrack* JAISeq::getChildTrack(int param_0) { - u32 tmp = u32(param_0) >> 4; - JASTrack* track = inner_.outputTrack.getChild(tmp); + u32 index = u32(param_0) >> 4; + JASTrack* track = inner_.outputTrack.getChild(index); + if (track) { - JASTrack* track2 = track->getChild(param_0 - (tmp << 4)); + u32 var_r28 = param_0 - (index << 4); + JASTrack* track2 = track->getChild(var_r28); return track2; } + return NULL; } diff --git a/src/JSystem/JAudio2/JAISeqDataMgr.cpp b/src/JSystem/JAudio2/JAISeqDataMgr.cpp index 7abec15e6d..bbf1ee5995 100644 --- a/src/JSystem/JAudio2/JAISeqDataMgr.cpp +++ b/src/JSystem/JAudio2/JAISeqDataMgr.cpp @@ -4,4 +4,6 @@ JAISeqDataUser::~JAISeqDataUser() {} -JAISeqDataMgr::~JAISeqDataMgr() {} +JAISeqDataMgr::~JAISeqDataMgr() { + JUT_ASSERT(14, false); +} diff --git a/src/JSystem/JAudio2/JAISeqMgr.cpp b/src/JSystem/JAudio2/JAISeqMgr.cpp index ed595122ae..a740b3e2d4 100644 --- a/src/JSystem/JAudio2/JAISeqMgr.cpp +++ b/src/JSystem/JAudio2/JAISeqMgr.cpp @@ -1,8 +1,3 @@ -// -// Generated By: dol2asm -// Translation Unit: JAISeqMgr -// - #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JAISeqMgr.h" @@ -12,9 +7,9 @@ /* 802A1804-802A1870 29C144 006C+00 1/0 0/0 0/0 .text * isUsingSeqData__9JAISeqMgrFRC16JAISeqDataRegion */ -bool JAISeqMgr::isUsingSeqData(JAISeqDataRegion const& param_1) { - for (JSULink* link = mSeqList.getFirst(); link != NULL; link = link->getNext()) { - if (param_1.intersects(link->getObject()->getSeqData())) { +bool JAISeqMgr::isUsingSeqData(const JAISeqDataRegion& seqDataRegion) { + for (JSULink* i = mSeqList.getFirst(); i != NULL; i = i->getNext()) { + if (seqDataRegion.intersects(i->getObject()->getSeqData())) { return true; } } @@ -23,25 +18,20 @@ bool JAISeqMgr::isUsingSeqData(JAISeqDataRegion const& param_1) { /* 802A1870-802A1914 29C1B0 00A4+00 1/0 0/0 0/0 .text * releaseSeqData__9JAISeqMgrFRC16JAISeqDataRegion */ -int JAISeqMgr::releaseSeqData(JAISeqDataRegion const& param_1) { +int JAISeqMgr::releaseSeqData(const JAISeqDataRegion& seqDataRegion) { bool bVar1 = false; - for (JSULink* link = mSeqList.getFirst(); link != NULL; link = link->getNext()) { - if (param_1.intersects(link->getObject()->getSeqData())) { - link->getObject()->stop(); + for (JSULink* i = mSeqList.getFirst(); i != NULL; i = i->getNext()) { + if (seqDataRegion.intersects(i->getObject()->getSeqData())) { + i->getObject()->stop(); bVar1 = true; } } - ReleaseSeqResult uVar4; - if (!bVar1) { - uVar4 = RELEASE_SEQ_2; - } else { - uVar4 = RELEASE_SEQ_1; - } - return uVar4; + + return bVar1 ? RELEASE_SEQ_1 : RELEASE_SEQ_2; } /* 802A1914-802A1A08 29C254 00F4+00 0/0 1/1 0/0 .text __ct__9JAISeqMgrFb */ -JAISeqMgr::JAISeqMgr(bool param_1) : JASGlobalInstance(param_1), mAudience(NULL) { +JAISeqMgr::JAISeqMgr(bool setInstance) : JASGlobalInstance(setInstance), mAudience(NULL) { seqDataMgr_ = NULL; field_0x10 = NULL; field_0x70 = 16; @@ -51,38 +41,40 @@ JAISeqMgr::JAISeqMgr(bool param_1) : JASGlobalInstance(param_1), mAud /* 802A1A08-802A1AF4 29C348 00EC+00 1/1 0/0 0/0 .text freeDeadSeq___9JAISeqMgrFv */ void JAISeqMgr::freeDeadSeq_() { - JSULink* link = mSeqList.getFirst(); - while (link != NULL) { - JAISeq* seq = link->getObject(); - JSULink* next = link->getNext(); + JSULink* i = mSeqList.getFirst(); + while (i != NULL) { + JAISeq* seq = i->getObject(); + JSULink* next = i->getNext(); if (seq->status_.isDead()) { - mSeqList.remove(link); + mSeqList.remove(i); delete seq; } - link = next; + i = next; } } /* 802A1B48-802A1C90 29C488 0148+00 0/0 1/1 0/0 .text * startSound__9JAISeqMgrF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3 */ -bool JAISeqMgr::startSound(JAISoundID param_1, JAISoundHandle* param_2, - JGeometry::TVec3 const* param_3) { - if (param_2 != NULL && *param_2) { - (*param_2)->stop(); +bool JAISeqMgr::startSound(JAISoundID id, JAISoundHandle* handle, const JGeometry::TVec3* posPtr) { + if (handle != NULL && *handle) { + (*handle)->stop(); } + JAISoundInfo* soundInfo = JASGlobalInstance::getInstance(); - int category = (soundInfo != NULL) ? soundInfo->getCategory(param_1) : -1; - JAISeqData aJStack_38(NULL, 0); + int category = (soundInfo != NULL) ? soundInfo->getCategory(id) : -1; + JAISeqData seqData(NULL, 0); + JUT_ASSERT(81, seqDataMgr_); - if (seqDataMgr_->getSeqData(param_1, &aJStack_38) == JAISeqDataMgr::SeqDataReturnValue_0) { + if (seqDataMgr_->getSeqData(id, &seqData) == JAISeqDataMgr::SeqDataReturnValue_0) { return false; } - JAISeq* jaiSeq = beginStartSeq_(); - if (jaiSeq != NULL) { - jaiSeq->JAISeqMgr_startID_(param_1, param_3, mAudience, category, field_0x70); - if (endStartSeq_(jaiSeq, param_2) != 0) { + + JAISeq* seq = beginStartSeq_(); + if (seq != NULL) { + seq->JAISeqMgr_startID_(id, posPtr, mAudience, category, field_0x70); + if (endStartSeq_(seq, handle)) { if (soundInfo != NULL) { - soundInfo->getSeqInfo(param_1, jaiSeq); + soundInfo->getSeqInfo(id, seq); } return true; } @@ -94,32 +86,37 @@ bool JAISeqMgr::startSound(JAISoundID param_1, JAISoundHandle* param_2, /* 802A1C90-802A1DFC 29C5D0 016C+00 0/0 4/4 0/0 .text calc__9JAISeqMgrFv */ void JAISeqMgr::calc() { mMove.calc(); - for (JSULink* link = mSeqList.getFirst(); link != NULL; link = link->getNext()) { - link->getObject()->JAISeqMgr_calc_(); + + JSULink* i; + for (i = mSeqList.getFirst(); i != NULL; i = i->getNext()) { + i->getObject()->JAISeqMgr_calc_(); } freeDeadSeq_(); } /* 802A1DFC-802A1E3C 29C73C 0040+00 0/0 1/1 0/0 .text stop__9JAISeqMgrFv */ void JAISeqMgr::stop() { - for (JSULink* link = mSeqList.getFirst(); link != NULL; link = link->getNext()) { - link->getObject()->stop(); + JSULink* i; + for (i = mSeqList.getFirst(); i != NULL; i = i->getNext()) { + i->getObject()->stop(); } } /* 802A1E3C-802A1E8C 29C77C 0050+00 0/0 1/1 0/0 .text stop__9JAISeqMgrFUl */ -void JAISeqMgr::stop(u32 param_0) { - for (JSULink* link = mSeqList.getFirst(); link != NULL; link = link->getNext()) { - link->getObject()->stop(param_0); +void JAISeqMgr::stop(u32 fadeTime) { + JSULink* i; + for (i = mSeqList.getFirst(); i != NULL; i = i->getNext()) { + i->getObject()->stop(fadeTime); } } /* 802A1E8C-802A1EFC 29C7CC 0070+00 0/0 1/1 0/0 .text stopSoundID__9JAISeqMgrF10JAISoundID */ -void JAISeqMgr::stopSoundID(JAISoundID param_1) { - if (!param_1.isAnonymous()) { - for (JSULink* link = mSeqList.getFirst(); link != NULL; link = link->getNext()) { - if ((u32)link->getObject()->getID() == (u32)param_1) { - link->getObject()->stop(); +void JAISeqMgr::stopSoundID(JAISoundID id) { + JSULink* i; + if (!id.isAnonymous()) { + for (i = mSeqList.getFirst(); i != NULL; i = i->getNext()) { + if ((u32)i->getObject()->getID() == (u32)id) { + i->getObject()->stop(); } } } @@ -127,8 +124,9 @@ void JAISeqMgr::stopSoundID(JAISoundID param_1) { /* 802A1EFC-802A1F58 29C83C 005C+00 0/0 4/4 0/0 .text mixOut__9JAISeqMgrFv */ void JAISeqMgr::mixOut() { - for (JSULink* link = mSeqList.getFirst(); link != NULL; link = link->getNext()) { - link->getObject()->JAISeqMgr_mixOut_(mMove.mParams, mActivity); + JSULink* i; + for (i = mSeqList.getFirst(); i != NULL; i = i->getNext()) { + i->getObject()->JAISeqMgr_mixOut_(mMove.params_, mActivity); } } @@ -143,13 +141,13 @@ JAISeq* JAISeqMgr::beginStartSeq_() { /* 802A1FE8-802A20F0 29C928 0108+00 1/1 0/0 0/0 .text * endStartSeq___9JAISeqMgrFP6JAISeqP14JAISoundHandle */ -bool JAISeqMgr::endStartSeq_(JAISeq* param_1, JAISoundHandle* param_2) { - JAISeq* sound = param_1->getObject(); +bool JAISeqMgr::endStartSeq_(JAISeq* seq, JAISoundHandle* handle) { + JAISeq* sound = seq->getObject(); if (sound != NULL) { if (sound->status_.isAlive()) { - mSeqList.append(param_1); - if (param_2 != NULL) { - sound->attachHandle(param_2); + mSeqList.append(seq); + if (handle != NULL) { + sound->attachHandle(handle); } return true; } diff --git a/src/JSystem/JAudio2/JAISound.cpp b/src/JSystem/JAudio2/JAISound.cpp index 5783aa0ed3..404d254509 100644 --- a/src/JSystem/JAudio2/JAISound.cpp +++ b/src/JSystem/JAudio2/JAISound.cpp @@ -1,8 +1,3 @@ -// -// Generated By: dol2asm -// Translation Unit: JAISound -// - #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JAISound.h" @@ -14,24 +9,24 @@ /* 802A2184-802A21A0 29CAC4 001C+00 0/0 14/14 0/0 .text releaseSound__14JAISoundHandleFv */ void JAISoundHandle::releaseSound() { - if (sound_ == NULL) { - return; + if (sound_ != NULL) { + sound_->handle_ = NULL; + sound_ = NULL; } - sound_->handle_ = NULL; - sound_ = NULL; } /* 802A21A0-802A21BC 29CAE0 001C+00 3/3 3/3 0/0 .text releaseHandle__8JAISoundFv */ void JAISound::releaseHandle() { - if (handle_ == NULL) { - return; + if (handle_ != NULL) { + handle_->sound_ = NULL; + handle_ = NULL; } - handle_->sound_ = NULL; - handle_ = NULL; } /* 802A21BC-802A2220 29CAFC 0064+00 0/0 3/3 0/0 .text attachHandle__8JAISoundFP14JAISoundHandle */ void JAISound::attachHandle(JAISoundHandle* handle) { + JUT_ASSERT(55, handle); + if (handle->isSoundAttached()) { handle->getSound()->stop(); } @@ -67,43 +62,42 @@ s32 JAISoundStatus_::unlockIfLocked() { /* 802A2280-802A22F8 29CBC0 0078+00 0/0 4/4 0/0 .text * mixOutAll__14JAISoundParamsFRC14JASSoundParamsP14JASSoundParamsf */ -void JAISoundParams::mixOutAll(JASSoundParams const& param_0, JASSoundParams* param_1, - f32 param_2) { - param_1->mVolume = mMove.mParams.mVolume * (param_0.mVolume * mProperty.field_0x0) * param_2; - param_1->mFxMix = mMove.mParams.mFxMix + (param_0.mFxMix + mProperty.field_0x4); - param_1->mPitch = mMove.mParams.mPitch * (param_0.mPitch * mProperty.field_0x8); - param_1->mPan = (param_0.mPan + mMove.mParams.mPan) - 0.5f; - param_1->mDolby = param_0.mDolby + mMove.mParams.mDolby; +void JAISoundParams::mixOutAll(const JASSoundParams& inParams, JASSoundParams* outParams, f32 param_2) { + outParams->mVolume = move_.params_.mVolume * (inParams.mVolume * property_.field_0x0) * param_2; + outParams->mFxMix = move_.params_.mFxMix + (inParams.mFxMix + property_.field_0x4); + outParams->mPitch = move_.params_.mPitch * (inParams.mPitch * property_.field_0x8); + outParams->mPan = (inParams.mPan + move_.params_.mPan) - 0.5f; + outParams->mDolby = inParams.mDolby + move_.params_.mDolby; } /* 802A22F8-802A2328 29CC38 0030+00 0/0 3/3 0/0 .text __ct__8JAISoundFv */ -JAISound::JAISound() : params() {} +JAISound::JAISound() : params_() {} /* 802A2328-802A244C 29CC68 0124+00 0/0 3/3 0/0 .text * start_JAISound___8JAISoundF10JAISoundIDPCQ29JGeometry8TVec3P11JAIAudience */ -void JAISound::start_JAISound_(JAISoundID param_0, JGeometry::TVec3 const* param_1, - JAIAudience* param_2) { +void JAISound::start_JAISound_(JAISoundID id, const JGeometry::TVec3* posPtr, JAIAudience* audience) { handle_ = NULL; - soundID = param_0; + soundID_ = id; status_.init(); - params.init(); - fader.forceIn(); - audience_ = param_2; - prepareCount = 0; - mCount = 0; + params_.init(); + fader_.forceIn(); + audience_ = audience; + prepareCount_ = 0; + count_ = 0; - if (param_1 != 0 && audience_ != NULL) { - audible_ = audience_->newAudible(*param_1, soundID, NULL, 0); + if (posPtr != NULL && audience_ != NULL) { + audible_ = audience_->newAudible(*posPtr, soundID_, NULL, 0); } else { audible_ = NULL; } - mPriority = 0; + + priority_ = 0; } /* 802A244C-802A2474 29CD8C 0028+00 0/0 2/2 0/0 .text acceptsNewAudible__8JAISoundCFv */ bool JAISound::acceptsNewAudible() const { bool accepts = false; - if (audible_ == NULL && status_.state.flags.flag2 == 0) { + if (audible_ == NULL && status_.state.flags.calcedOnce == 0) { accepts = true; } return accepts; @@ -111,25 +105,25 @@ bool JAISound::acceptsNewAudible() const { /* 802A2474-802A24DC 29CDB4 0068+00 0/0 2/2 0/0 .text /* * newAudible__8JAISoundFRCQ29JGeometry8TVec3PCQ29JGeometry8TVec3UlP11JAIAudience */ -void JAISound::newAudible(JGeometry::TVec3 const& param_0, - JGeometry::TVec3 const* param_1, u32 param_2, JAIAudience* param_3) { - if (param_3 != NULL) { - audience_ = param_3; +void JAISound::newAudible(const JGeometry::TVec3& pos, + const JGeometry::TVec3* param_1, u32 param_2, JAIAudience* audience) { + JUT_ASSERT(151, acceptsNewAudible()); + if (audience != NULL) { + audience_ = audience; } - JAISoundID sound = soundID; - audible_ = audience_->newAudible(param_0, sound, param_1, param_2); + + JUT_ASSERT(157, audience_); + audible_ = audience_->newAudible(pos, soundID_, param_1, param_2); } /* 802A24DC-802A2598 29CE1C 00BC+00 0/0 24/24 0/0 .text stop__8JAISoundFUl */ -void JAISound::stop(u32 fadeCount) { - ASSERT(status_.isAlive()); - if (fadeCount == 0) { +void JAISound::stop(u32 fadeTime) { + JUT_ASSERT(164, status_.isAlive()); + if (fadeTime == 0) { stop(); - return; } else { - fader.fadeOut(fadeCount); + fader_.fadeOut(fadeTime); removeLifeTime_(); - status_.field_0x1.flags.flag2 = 0; status_.state.flags.flag5 = 1; status_.state.flags.flag1 = 1; } @@ -163,7 +157,7 @@ void JAISound::die_JAISound_() { audible_ = NULL; audience_ = NULL; } - fader.forceOut(); + fader_.forceOut(); releaseHandle(); status_.state.unk = 6; } @@ -171,49 +165,51 @@ void JAISound::die_JAISound_() { /* 802A266C-802A26B8 29CFAC 004C+00 0/0 3/3 0/0 .text increasePrepareCount_JAISound___8JAISoundFv */ void JAISound::increasePrepareCount_JAISound_() { - if ((++prepareCount & 0xFF) == 0) { - JASReport("It cost %d steps to prepare Sound(ID:%08x, Address%08x).\n", prepareCount, - (u32)soundID, this); + if ((++prepareCount_ & 0xFF) == 0) { + JASReport("It cost %d steps to prepare Sound(ID:%08x, Address%08x).\n", prepareCount_, + *(u32*)&soundID_, this); } } /* 802A26B8-802A29DC 29CFF8 0324+00 0/0 3/3 0/0 .text calc_JAISound___8JAISoundFv */ bool JAISound::calc_JAISound_() { - status_.state.flags.flag2 = 1; + status_.state.flags.calcedOnce = 1; if (isStopping() && JAISound_tryDie_()) { return false; } - ASSERT(status_.isAlive()); + + JUT_ASSERT(230, status_.isAlive()); bool isPlaying = status_.isPlaying(); if (isPlaying) { - mCount++; + count_++; } + bool isPaused = status_.isPaused(); if (isPaused == false) { - fader.calc(); + fader_.calc(); } + bool playing = isPlaying && isPaused == false; if (playing) { - params.mMove.calc(); + params_.move_.calc(); if (audible_ != NULL) { audible_->calc(); } if (status_.field_0x1.flags.flag2 != 0) { - if (lifeTime == 0) { + if (lifeTime_ == 0) { stop_JAISound_(); } else { - lifeTime--; + lifeTime_--; } } } + if (audience_ != NULL && audible_ != NULL) { - u32 priority = audience_->calcPriority(audible_); - mPriority = priority; - if (priority == 0xFFFFFFFF && status_.field_0x1.flags.flag1 == 0) { + if ((priority_ = audience_->calcPriority(audible_)) == 0xFFFFFFFF && status_.field_0x1.flags.flag1 == 0) { stop_JAISound_(); } } else { - mPriority = 0; + priority_ = 0; } return playing; @@ -221,20 +217,24 @@ bool JAISound::calc_JAISound_() { /* 802A29DC-802A2AB0 29D31C 00D4+00 0/0 2/2 0/0 .text initTrack_JAISound___8JAISoundFP8JASTrack */ void JAISound::initTrack_JAISound_(JASTrack* track) { - JASSoundParams* soundParams[8]; - ASSERT(audience_); - ASSERT(audible_); + JASSoundParams* soundParams[JASTrack::TChannelMgr::CHANNEL_MAX]; + JUT_ASSERT(286, audience_); + JUT_ASSERT(287, audible_); + int numChannels = 0; + JUT_ASSERT(290, audience_->getMaxChannels() < JASTrack::TChannelMgr::CHANNEL_MAX); + for (int i = 0; i < audience_->getMaxChannels(); i++) { JASSoundParams* currentParams = audible_->getOuterParams(i); if (currentParams != NULL) { - soundParams[numChannels] = currentParams; - numChannels++; + soundParams[numChannels++] = currentParams; } } - ASSERT(numChannels >= 1); + + JUT_ASSERT(298, numChannels >= 1); track->setChannelMgrCount(numChannels); - for (size_t i = 0; i < track->getChannelMgrCount(); i++) { + + for (u32 i = 0; i < track->getChannelMgrCount(); i++) { track->assignExtBuffer(i, soundParams[i]); } } diff --git a/src/JSystem/JAudio2/JAISoundChild.cpp b/src/JSystem/JAudio2/JAISoundChild.cpp index bad6495501..d96e8956fc 100644 --- a/src/JSystem/JAudio2/JAISoundChild.cpp +++ b/src/JSystem/JAudio2/JAISoundChild.cpp @@ -8,9 +8,9 @@ void JAISoundChild::init() { mParams.init(); } -void JAISoundChild::mixOut(JASTrack* pTrack) { - mParams = mMove.mParams; - pTrack->assignExtBuffer(0, &mParams); +void JAISoundChild::mixOut(JASTrack* track) { + mParams = mMove.params_; + track->assignExtBuffer(0, &mParams); } void JAISoundChild::calc() { diff --git a/src/JSystem/JAudio2/JAISoundHandles.cpp b/src/JSystem/JAudio2/JAISoundHandles.cpp index a8ebe2dd03..19e15c8061 100644 --- a/src/JSystem/JAudio2/JAISoundHandles.cpp +++ b/src/JSystem/JAudio2/JAISoundHandles.cpp @@ -1,22 +1,18 @@ -// -// Generated By: dol2asm -// Translation Unit: JAISoundHandles -// - #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JAISoundHandles.h" /* 802A2C98-802A2CF4 29D5D8 005C+00 0/0 1/1 0/0 .text * getHandleSoundID__15JAISoundHandlesF10JAISoundID */ -JAISoundHandle* JAISoundHandles::getHandleSoundID(JAISoundID param_0) { +JAISoundHandle* JAISoundHandles::getHandleSoundID(JAISoundID id) { for (int i = 0; i < numHandles_; i++) { - if (mSoundHandle[i].isSoundAttached()) { - if (JAISoundID(mSoundHandle[i]->soundID) == param_0) { - return &mSoundHandle[i]; + if (handle_[i].isSoundAttached()) { + if (handle_[i]->getID() == id) { + return &handle_[i]; } } } + return NULL; } @@ -24,9 +20,10 @@ JAISoundHandle* JAISoundHandles::getHandleSoundID(JAISoundID param_0) { */ JAISoundHandle* JAISoundHandles::getFreeHandle() { for (int i = 0; i < numHandles_; i++) { - if (!mSoundHandle[i].isSoundAttached()) { - return &mSoundHandle[i]; + if (!handle_[i].isSoundAttached()) { + return &handle_[i]; } } + return NULL; } diff --git a/src/JSystem/JAudio2/JAISoundInfo.cpp b/src/JSystem/JAudio2/JAISoundInfo.cpp index 05667fdead..a822c41e3a 100644 --- a/src/JSystem/JAudio2/JAISoundInfo.cpp +++ b/src/JSystem/JAudio2/JAISoundInfo.cpp @@ -1,16 +1,11 @@ -// -// Generated By: dol2asm -// Translation Unit: JAISoundInfo -// - #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JAISoundInfo.h" /* 802A2D34-802A2D50 29D674 001C+00 0/0 1/1 0/0 .text __ct__12JAISoundInfoFb */ -JAISoundInfo::JAISoundInfo(bool param_0) : JASGlobalInstance(param_0) { -} +JAISoundInfo::JAISoundInfo(bool setInstance) : JASGlobalInstance(setInstance) {} /* 802A2D50-802A2DB4 29D690 0064+00 1/0 2/2 0/0 .text __dt__12JAISoundInfoFv */ JAISoundInfo::~JAISoundInfo() { + JUT_ASSERT(14, false); } diff --git a/src/JSystem/JAudio2/JAISoundParams.cpp b/src/JSystem/JAudio2/JAISoundParams.cpp index 2e745d84cc..5d2ac2095a 100644 --- a/src/JSystem/JAudio2/JAISoundParams.cpp +++ b/src/JSystem/JAudio2/JAISoundParams.cpp @@ -2,47 +2,49 @@ #include "JSystem/JAudio2/JAISoundParams.h" -void JAISoundParamsMove::moveVolume(f32 newValue, u32 count) { - if (count == 0) { - mParams.mVolume = newValue; - mTransition.mVolume.mCount = 0; +void JAISoundParamsMove::moveVolume(f32 newValue, u32 maxSteps) { + JUT_ASSERT(12, (newValue>=0.f)); + if (maxSteps == 0) { + params_.mVolume = newValue; + transition_.volume_.remainingSteps_ = 0; } else { - mTransition.mVolume.set(newValue, mParams.mVolume, count); + transition_.volume_.set(newValue, params_.mVolume, maxSteps); } } -void JAISoundParamsMove::movePitch(f32 newValue, u32 count) { - if (count == 0) { - mParams.mPitch = newValue; - mTransition.mPitch.mCount = 0; +void JAISoundParamsMove::movePitch(f32 newValue, u32 maxSteps) { + JUT_ASSERT(27, (newValue>=0.f)); + if (maxSteps == 0) { + params_.mPitch = newValue; + transition_.pitch_.remainingSteps_ = 0; } else { - mTransition.mPitch.set(newValue, mParams.mPitch, count); + transition_.pitch_.set(newValue, params_.mPitch, maxSteps); } } -void JAISoundParamsMove::moveFxMix(f32 newValue, u32 count) { - if (count == 0) { - mParams.mFxMix = newValue; - mTransition.mFxMix.mCount = 0; +void JAISoundParamsMove::moveFxMix(f32 newValue, u32 maxSteps) { + if (maxSteps == 0) { + params_.mFxMix = newValue; + transition_.fxMix_.remainingSteps_ = 0; } else { - mTransition.mFxMix.set(newValue, mParams.mFxMix, count); + transition_.fxMix_.set(newValue, params_.mFxMix, maxSteps); } } -void JAISoundParamsMove::movePan(f32 newValue, u32 count) { - if (count == 0) { - mParams.mPan = newValue; - mTransition.mPan.mCount = 0; +void JAISoundParamsMove::movePan(f32 newValue, u32 maxSteps) { + if (maxSteps == 0) { + params_.mPan = newValue; + transition_.pan_.remainingSteps_ = 0; } else { - mTransition.mPan.set(newValue, mParams.mPan, count); + transition_.pan_.set(newValue, params_.mPan, maxSteps); } } -void JAISoundParamsMove::moveDolby(f32 newValue, u32 count) { - if (count == 0) { - mParams.mDolby = newValue; - mTransition.mDolby.mCount = 0; +void JAISoundParamsMove::moveDolby(f32 newValue, u32 maxSteps) { + if (maxSteps == 0) { + params_.mDolby = newValue; + transition_.dolby_.remainingSteps_ = 0; } else { - mTransition.mDolby.set(newValue, mParams.mDolby, count); + transition_.dolby_.set(newValue, params_.mDolby, maxSteps); } } diff --git a/src/JSystem/JAudio2/JAISoundStarter.cpp b/src/JSystem/JAudio2/JAISoundStarter.cpp index 233ef6cbf2..1c0fe4f6b1 100644 --- a/src/JSystem/JAudio2/JAISoundStarter.cpp +++ b/src/JSystem/JAudio2/JAISoundStarter.cpp @@ -1,37 +1,32 @@ -// -// JAISoundStarter -// - #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JAISoundStarter.h" #include "JSystem/JAudio2/JAISoundHandles.h" /* 802A2F6C-802A2F88 29D8AC 001C+00 0/0 1/1 0/0 .text __ct__15JAISoundStarterFb */ -JAISoundStarter::JAISoundStarter(bool param_0) : JASGlobalInstance(param_0) { -} +JAISoundStarter::JAISoundStarter(bool setInstance) : + JASGlobalInstance(setInstance) {} /* 802A2F88-802A2FEC 29D8C8 0064+00 1/0 7/7 0/0 .text __dt__15JAISoundStarterFv */ -JAISoundStarter::~JAISoundStarter() { -} +JAISoundStarter::~JAISoundStarter() {} /* 802A2FEC-802A30D4 29D92C 00E8+00 0/0 4/4 0/0 .text * startLevelSound__15JAISoundStarterF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3 */ -bool JAISoundStarter::startLevelSound(JAISoundID param_0, JAISoundHandle* param_1, - JGeometry::TVec3 const* param_2) { - if (*param_1) { - if (JAISoundID((u32)(*param_1)->soundID) == param_0) { - (*param_1)->updateLifeTime(1); - if (param_2 != NULL) { - (*param_1)->setPos(*param_2); +bool JAISoundStarter::startLevelSound(JAISoundID id, JAISoundHandle* handlePtr, const JGeometry::TVec3* posPtr) { + JUT_ASSERT(20, handlePtr); + if (*handlePtr) { + if ((*handlePtr)->getID() == id) { + (*handlePtr)->updateLifeTime(1); + if (posPtr != NULL) { + (*handlePtr)->setPos(*posPtr); } return true; } } - bool iVar2 = startSound(param_0, param_1, param_2); - if ((iVar2) && *param_1) { - (*param_1)->setLifeTime(1, false); + bool rt = startSound(id, handlePtr, posPtr); + if (rt && *handlePtr) { + (*handlePtr)->setLifeTime(1, false); } - return iVar2; + return rt; } diff --git a/src/JSystem/JAudio2/JAIStream.cpp b/src/JSystem/JAudio2/JAIStream.cpp index 2094e353f9..878c7e3e7f 100644 --- a/src/JSystem/JAudio2/JAIStream.cpp +++ b/src/JSystem/JAudio2/JAIStream.cpp @@ -1,55 +1,53 @@ -// -// Generated By: dol2asm -// Translation Unit: JAIStream -// - #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JAIStream.h" #include "JSystem/JAudio2/JAIStreamMgr.h" #include "JSystem/JAudio2/JAISoundChild.h" #include "JSystem/JAudio2/JAIStreamDataMgr.h" -#include "JSystem/JKernel/JKRHeap.h" #include "JSystem/JAudio2/JAIAudience.h" /* 802A30D4-802A3104 29DA14 0030+00 1/1 0/0 0/0 .text * JAIStream_JASAramStreamCallback___FUlP13JASAramStreamPv */ -static void JAIStream_JASAramStreamCallback_(u32 param_1, JASAramStream* param_2, void* param_3) { - switch (param_1) { +static void JAIStream_JASAramStreamCallback_(u32 type, JASAramStream* aramStream, void* userData) { + JAIStream* stream = (JAIStream*)userData; + + switch (type) { case 1: - ((JAIStream*)(param_3))->field_0x2c5 = 1; + stream->field_0x2c5 = 1; break; case 0: - ((JAIStream*)(param_3))->field_0x2c6 = 1; + stream->field_0x2c6 = 1; break; } } /* 802A3104-802A319C 29DA44 0098+00 0/0 1/1 0/0 .text * __ct__9JAIStreamFP12JAIStreamMgrP31JAISoundStrategyMgr<9JAIStream> */ -JAIStream::JAIStream(JAIStreamMgr* param_1, JAISoundStrategyMgr* param_2) : JSULink(this) { +JAIStream::JAIStream(JAIStreamMgr* streamMgr, JAISoundStrategyMgr* soundStrategyMgr) : JSULink(this) { field_0x290 = 0; - field_0x2c0 = param_2; - field_0x2b8 = param_1; - field_0x29c = 0; + field_0x2c0 = soundStrategyMgr; + streamMgr_ = streamMgr; + streamAramAddr_ = 0; field_0x2c5 = 0; field_0x2c6 = 0; + for (int i = 0; i < CHANNEL_MAX; i++) { - field_0x2a0[i] = NULL; + children_[i] = NULL; } } /* 802A319C-802A3230 29DADC 0094+00 0/0 1/1 0/0 .text * JAIStreamMgr_startID___9JAIStreamF10JAISoundIDlPCQ29JGeometry8TVec3P11JAIAudiencei */ -void JAIStream::JAIStreamMgr_startID_(JAISoundID param_1, s32 param_2, - JGeometry::TVec3 const* param_3, JAIAudience* param_4, - int param_5) { - field_0x298 = param_5; - field_0x294 = param_2; - start_JAISound_(param_1, param_3, param_4); +void JAIStream::JAIStreamMgr_startID_(JAISoundID id, s32 streamFileEntry, + const JGeometry::TVec3* posPtr, JAIAudience* audience, + int category) { + field_0x298 = category; + field_0x294 = streamFileEntry; + start_JAISound_(id, posPtr, audience); field_0x290 = 0; + if (field_0x2c0 != NULL) { - field_0x2bc = field_0x2c0->calc(param_1); + field_0x2bc = field_0x2c0->calc(id); } else { field_0x2bc = NULL; } @@ -59,15 +57,17 @@ void JAIStream::JAIStreamMgr_startID_(JAISoundID param_1, s32 param_2, bool JAIStream::prepare_prepareStream_() { u32 local_28; JAIStreamAramMgr* streamAramMgr; + switch (field_0x290) { case 0: - streamAramMgr = field_0x2b8->getStreamAramMgr(); + streamAramMgr = streamMgr_->getStreamAramMgr(); JUT_ASSERT(100, streamAramMgr); - field_0x29c = streamAramMgr->newStreamAram(&local_28); - if (field_0x29c != NULL) { - field_0x0a8.field_0x0.init((u32)field_0x29c, local_28, &JAIStream_JASAramStreamCallback_, this); + + streamAramAddr_ = streamAramMgr->newStreamAram(&local_28); + if (streamAramAddr_ != NULL) { + inner_.aramStream_.init((u32)streamAramAddr_, local_28, &JAIStream_JASAramStreamCallback_, this); field_0x290 = 1; - prepareCount = 0; + prepareCount_ = 0; } else { increasePrepareCount_JAISound_(); } @@ -75,14 +75,16 @@ bool JAIStream::prepare_prepareStream_() { case 1: if (audible_ != NULL) { JASSoundParams* soundParams = audible_->getOuterParams(0); - field_0x0a8.field_0x0.setPitch(soundParams->mPitch); - field_0x0a8.field_0x0.setVolume(soundParams->mVolume); - field_0x0a8.field_0x0.setPan(soundParams->mPan); - field_0x0a8.field_0x0.setFxmix(soundParams->mFxMix); - field_0x0a8.field_0x0.setDolby(soundParams->mDolby); + inner_.aramStream_.setPitch(soundParams->mPitch); + inner_.aramStream_.setVolume(soundParams->mVolume); + inner_.aramStream_.setPan(soundParams->mPan); + inner_.aramStream_.setFxmix(soundParams->mFxMix); + inner_.aramStream_.setDolby(soundParams->mDolby); } + field_0x2c5 = 0; - if (field_0x0a8.field_0x0.prepare(field_0x294, -1)) { + + if (inner_.aramStream_.prepare(field_0x294, -1)) { field_0x290 = 2; } break; @@ -97,7 +99,7 @@ bool JAIStream::prepare_prepareStream_() { case 3: return true; case 4: - JUT_WARN(155, "PC must not pass here."); + JUT_WARN(155, "%s", "PC must not pass here."); break; } @@ -109,7 +111,11 @@ void JAIStream::prepare_() { if (field_0x2c6 != 0) { return; } + switch(status_.state.unk) { + case 6: + JUT_ASSERT(171, false); + break; case 0: if (prepare_prepareStream_()) { status_.state.unk = 5; @@ -133,7 +139,7 @@ void JAIStream::prepare_() { /* 802A3498-802A34E4 29DDD8 004C+00 1/1 0/0 0/0 .text prepare_startStream___9JAIStreamFv */ void JAIStream::prepare_startStream_() { - if (field_0x0a8.field_0x0.start()) { + if (inner_.aramStream_.start()) { field_0x2c6 = 0; field_0x2c4 = 0; field_0x290 = 4; @@ -142,65 +148,64 @@ void JAIStream::prepare_startStream_() { /* 802A34E4-802A3720 29DE24 023C+00 0/0 1/1 0/0 .text * JAIStreamMgr_mixOut___9JAIStreamFRC14JASSoundParams16JAISoundActivity */ -void JAIStream::JAIStreamMgr_mixOut_(JASSoundParams const& param_1, JAISoundActivity param_2) { +void JAIStream::JAIStreamMgr_mixOut_(const JASSoundParams& inParams, JAISoundActivity activity) { bool local_54; - JASSoundParams local_4c; - params.mixOutAll(param_1, &local_4c, (status_.isMute() || param_2.field_0x0.flags.flag1) ? 0.0f : fader.getIntensity()); + JASSoundParams outParams; + params_.mixOutAll(inParams, &outParams, (status_.isMute() || activity.field_0x0.flags.flag1) ? 0.0f : fader_.getIntensity()); + if (field_0x2bc != NULL) { - field_0x2bc->virtual4(this, local_4c); + field_0x2bc->virtual4(this, outParams); } - JASSoundParams* mixParams = &local_4c; + + JASSoundParams* mixParams = &outParams; if (audible_ != NULL && audience_ != NULL) { for (int i = 0; i < audience_->getMaxChannels(); i++) { JASSoundParams* outerParams = audible_->getOuterParams(i); if (outerParams != NULL) { - audience_->mixChannelOut(local_4c, audible_, i); + audience_->mixChannelOut(outParams, audible_, i); mixParams = outerParams; break; } } } + for (int i = 0; i < CHANNEL_MAX; i++) { - field_0x0a8.field_0x0.setPitch(mixParams->mPitch); - if (field_0x2a0[i] != NULL) { - field_0x0a8.field_0x0.setChannelVolume(i, field_0x2a0[i]->mMove.mParams.mVolume * - mixParams->mVolume); - field_0x0a8.field_0x0.setChannelPan( - i, (field_0x2a0[i]->mMove.mParams.mPan + mixParams->mPan) - 0.5f); - field_0x0a8.field_0x0.setChannelFxmix(i, field_0x2a0[i]->mMove.mParams.mFxMix + - mixParams->mFxMix); - field_0x0a8.field_0x0.setChannelDolby(i, field_0x2a0[i]->mMove.mParams.mDolby + - mixParams->mDolby); + inner_.aramStream_.setPitch(mixParams->mPitch); + if (children_[i] != NULL) { + inner_.aramStream_.setChannelVolume(i, children_[i]->mMove.params_.mVolume * mixParams->mVolume); + inner_.aramStream_.setChannelPan(i, (children_[i]->mMove.params_.mPan + mixParams->mPan) - 0.5f); + inner_.aramStream_.setChannelFxmix(i, children_[i]->mMove.params_.mFxMix + mixParams->mFxMix); + inner_.aramStream_.setChannelDolby(i, children_[i]->mMove.params_.mDolby + mixParams->mDolby); } else { - field_0x0a8.field_0x0.setChannelVolume(i, mixParams->mVolume); - field_0x0a8.field_0x0.setChannelPan(i, mixParams->mPan); - field_0x0a8.field_0x0.setChannelFxmix(i, mixParams->mFxMix); - field_0x0a8.field_0x0.setChannelDolby(i, mixParams->mDolby); + inner_.aramStream_.setChannelVolume(i, mixParams->mVolume); + inner_.aramStream_.setChannelPan(i, mixParams->mPan); + inner_.aramStream_.setChannelFxmix(i, mixParams->mFxMix); + inner_.aramStream_.setChannelDolby(i, mixParams->mDolby); } } + prepare_(); + if (field_0x290 == 4) { - local_54 = false; - if (status_.isPaused() || param_2.field_0x0.flags.flag2) { - local_54 = true; - } + local_54 = status_.isPaused() || activity.field_0x0.flags.flag2; if (local_54 != field_0x2c4) { - field_0x0a8.field_0x0.pause(local_54); + inner_.aramStream_.pause(local_54); field_0x2c4 = local_54; } } } /* 802A3720-802A37FC 29E060 00DC+00 1/1 0/0 0/0 .text die_JAIStream___9JAIStreamFv */ -// NONMATCHING JASPolAllocObject<_> locations void JAIStream::die_JAIStream_() { die_JAISound_(); + for (int i = 0; i < CHANNEL_MAX; i++) { - if (field_0x2a0[i] != NULL) { - delete field_0x2a0[i]; - field_0x2a0[i] = NULL; + if (children_[i] != NULL) { + delete children_[i]; + children_[i] = NULL; } } + if (field_0x2bc != NULL) { field_0x2c0->virtual4(field_0x2bc); field_0x2bc = NULL; @@ -213,6 +218,7 @@ bool JAIStream::JAISound_tryDie_() { die_JAIStream_(); return true; } + switch (field_0x290) { case 0: case 1: @@ -221,11 +227,11 @@ bool JAIStream::JAISound_tryDie_() { case 2: case 3: field_0x290 = 5; - field_0x0a8.field_0x0.cancel(); + inner_.aramStream_.cancel(); break; case 4: field_0x290 = 6; - field_0x0a8.field_0x0.stop(10); + inner_.aramStream_.stop(10); break; } @@ -238,12 +244,14 @@ void JAIStream::JAIStreamMgr_calc_() { field_0x290 = 0; stop_JAISound_(); } + if (calc_JAISound_()) { for (int i = 0; i < CHANNEL_MAX; i++) { - if (field_0x2a0[i] != NULL) { - field_0x2a0[i]->calc(); + if (children_[i] != NULL) { + children_[i]->calc(); } } + if (field_0x2bc != NULL) { field_0x2bc->calc(this); } @@ -252,27 +260,25 @@ void JAIStream::JAIStreamMgr_calc_() { /* 802A3948-802A3950 29E288 0008+00 1/0 0/0 0/0 .text getNumChild__9JAIStreamCFv */ s32 JAIStream::getNumChild() const { - return 6; + return NUM_CHILDREN; } /* 802A3950-802A3A24 29E290 00D4+00 1/0 0/0 0/0 .text getChild__9JAIStreamFi */ -// NONMATCHING JASPoolAllocObject<_> locations -JAISoundChild* JAIStream::getChild(int i_idx) { - if (field_0x2a0[i_idx] == NULL) { - field_0x2a0[i_idx] = new JAISoundChild(); - if (field_0x2a0[i_idx] == NULL) { - JUT_WARN(370, "JASPoolAllocObject::::operator new failed .") +JAISoundChild* JAIStream::getChild(int index) { + if (children_[index] == NULL) { + children_[index] = new JAISoundChild(); + if (children_[index] == NULL) { + JUT_WARN(370, "%s", "JASPoolAllocObject::::operator new failed .") } } - return field_0x2a0[i_idx]; + return children_[index]; } /* 802A3A24-802A3ABC 29E364 0098+00 1/0 0/0 0/0 .text releaseChild__9JAIStreamFi */ -// NONMATCHING JASPoolAllocObject<_> locations -void JAIStream::releaseChild(int i_idx) { - if (field_0x2a0[i_idx] != NULL) { - delete field_0x2a0[i_idx]; - field_0x2a0[i_idx] = NULL; +void JAIStream::releaseChild(int index) { + if (children_[index] != NULL) { + delete children_[index]; + children_[index] = NULL; } } diff --git a/src/JSystem/JAudio2/JAIStreamDataMgr.cpp b/src/JSystem/JAudio2/JAIStreamDataMgr.cpp index 7a6393bdb9..b5e6821822 100644 --- a/src/JSystem/JAudio2/JAIStreamDataMgr.cpp +++ b/src/JSystem/JAudio2/JAIStreamDataMgr.cpp @@ -2,6 +2,10 @@ #include "JSystem/JAudio2/JAIStreamDataMgr.h" -JAIStreamDataMgr::~JAIStreamDataMgr() {} +JAIStreamDataMgr::~JAIStreamDataMgr() { + JUT_ASSERT(11, false); +} -JAIStreamAramMgr::~JAIStreamAramMgr() {} +JAIStreamAramMgr::~JAIStreamAramMgr() { + JUT_ASSERT(16, false); +} diff --git a/src/JSystem/JAudio2/JAIStreamMgr.cpp b/src/JSystem/JAudio2/JAIStreamMgr.cpp index 3fedba540b..76c8ae4734 100644 --- a/src/JSystem/JAudio2/JAIStreamMgr.cpp +++ b/src/JSystem/JAudio2/JAIStreamMgr.cpp @@ -1,8 +1,3 @@ -// -// Generated By: dol2asm -// Translation Unit: JAIStreamMgr -// - #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JAIStreamMgr.h" @@ -11,115 +6,128 @@ #include "JSystem/JAudio2/JAISoundInfo.h" /* 802A3B68-802A3C3C 29E4A8 00D4+00 0/0 1/1 0/0 .text __ct__12JAIStreamMgrFb */ -JAIStreamMgr::JAIStreamMgr(bool param_0) : JASGlobalInstance(param_0) { +JAIStreamMgr::JAIStreamMgr(bool setInstance) : JASGlobalInstance(setInstance) { streamDataMgr_ = NULL; mStreamAramMgr = NULL; field_0x6c = NULL; - field_0x54 = NULL; + mAudience = NULL; mParams.init(); mActivity.init(); } /* 802A3C3C-802A3D70 29E57C 0134+00 0/0 1/1 0/0 .text * startSound__12JAIStreamMgrF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3 */ -bool JAIStreamMgr::startSound(JAISoundID param_1, JAISoundHandle* param_2, - JGeometry::TVec3 const* param_3) { +bool JAIStreamMgr::startSound(JAISoundID id, JAISoundHandle* handle, const JGeometry::TVec3* posPtr) { JUT_ASSERT(37, streamDataMgr_); - if (param_2 != NULL && *param_2) { - (*param_2)->stop(); + if (handle != NULL && *handle) { + (*handle)->stop(); } - s32 streamFileEntry = streamDataMgr_->getStreamFileEntry(param_1); + + s32 streamFileEntry = streamDataMgr_->getStreamFileEntry(id); if (streamFileEntry < 0) { - JUT_WARN(46, "Cannot find the stream file entry for ID:%08x\n", param_1.mId.mFullId) + JUT_WARN(46, "Cannot find the stream file entry for ID:%08x\n", id.id_.composite_) return false; } + JAIStream* stream = newStream_(); - JAISoundInfo* piVar5 = JASGlobalInstance::getInstance(); - int iVar2 = -1; - if (piVar5 != NULL) { - iVar2 = piVar5->getCategory(param_1); + JAISoundInfo* soundInfo = JASGlobalInstance::getInstance(); + + int category = -1; + if (soundInfo != NULL) { + category = soundInfo->getCategory(id); } + if (stream == NULL) { return false; } - stream->JAIStreamMgr_startID_(param_1, streamFileEntry, param_3, field_0x54, iVar2); - if (piVar5 != NULL) { - piVar5->getStreamInfo(param_1, stream); + + stream->JAIStreamMgr_startID_(id, streamFileEntry, posPtr, mAudience, category); + if (soundInfo != NULL) { + soundInfo->getStreamInfo(id, stream); } - if (param_2 != NULL) { - stream->attachHandle(param_2); + + if (handle != NULL) { + stream->attachHandle(handle); } + return false; } /* 802A3D70-802A3E68 29E6B0 00F8+00 1/1 0/0 0/0 .text freeDeadStream___12JAIStreamMgrFv */ void JAIStreamMgr::freeDeadStream_() { - JSULink* link = mStreamList.getFirst(); - while (link != NULL) { - JAIStream* stream = link->getObject(); - JSULink* next = link->getNext(); + JSULink* i = mStreamList.getFirst(); + while (i != NULL) { + JAIStream* stream = i->getObject(); + JSULink* next = i->getNext(); if (stream->status_.isDead()) { - mStreamList.remove(link); + mStreamList.remove(i); void* aramAddr = stream->JAIStreamMgr_getAramAddr_(); if (aramAddr != NULL) { - mStreamAramMgr->deleteStreamAram((u32)aramAddr); + bool result = mStreamAramMgr->deleteStreamAram((u32)aramAddr); + JUT_ASSERT(105, result); } delete stream; } - link = next; + i = next; } } /* 802A3EBC-802A4028 29E7FC 016C+00 0/0 1/1 0/0 .text calc__12JAIStreamMgrFv */ void JAIStreamMgr::calc() { + JSULink* i; mParams.calc(); - for (JSULink* link = mStreamList.getFirst(); link != NULL; link = link->getNext()) { - link->getObject()->JAIStreamMgr_calc_(); + for (i = mStreamList.getFirst(); i != NULL; i = i->getNext()) { + i->getObject()->JAIStreamMgr_calc_(); } freeDeadStream_(); } /* 802A4028-802A4068 29E968 0040+00 0/0 1/1 0/0 .text stop__12JAIStreamMgrFv */ void JAIStreamMgr::stop() { - for (JSULink* link = mStreamList.getFirst(); link != NULL; link = link->getNext()) { - link->getObject()->stop(); + JSULink* i; + for (i = mStreamList.getFirst(); i != NULL; i = i->getNext()) { + i->getObject()->stop(); } } /* 802A4068-802A40B8 29E9A8 0050+00 0/0 2/2 0/0 .text stop__12JAIStreamMgrFUl */ -void JAIStreamMgr::stop(u32 param_0) { - for (JSULink* link = mStreamList.getFirst(); link != NULL; link = link->getNext()) { - link->getObject()->stop(param_0); +void JAIStreamMgr::stop(u32 fadeTime) { + JSULink* i; + for (i = mStreamList.getFirst(); i != NULL; i = i->getNext()) { + i->getObject()->stop(fadeTime); } } /* 802A40B8-802A4118 29E9F8 0060+00 0/0 1/1 0/0 .text stopSoundID__12JAIStreamMgrF10JAISoundID */ -void JAIStreamMgr::stopSoundID(JAISoundID param_0) { - for (JSULink* link = mStreamList.getFirst(); link != NULL; link = link->getNext()) { - if ((u32)link->getObject()->getID() == (u32)param_0) { - link->getObject()->stop(); +void JAIStreamMgr::stopSoundID(JAISoundID id) { + JSULink* i; + for (i = mStreamList.getFirst(); i != NULL; i = i->getNext()) { + if ((u32)i->getObject()->getID() == (u32)id) { + i->getObject()->stop(); } } } /* 802A4118-802A4174 29EA58 005C+00 0/0 1/1 0/0 .text mixOut__12JAIStreamMgrFv */ void JAIStreamMgr::mixOut() { - for (JSULink* link = mStreamList.getFirst(); link != NULL; link = link->getNext()) { - link->getObject()->JAIStreamMgr_mixOut_(mParams.mParams, mActivity); + JSULink* i; + for (i = mStreamList.getFirst(); i != NULL; i = i->getNext()) { + i->getObject()->JAIStreamMgr_mixOut_(mParams.params_, mActivity); } } /* 802A4174-802A4244 29EAB4 00D0+00 1/1 0/0 0/0 .text newStream___12JAIStreamMgrFv */ JAIStream* JAIStreamMgr::newStream_() { if (mStreamAramMgr == NULL) { - JUT_WARN(229, "JAIStreamAramMgr must be set.\n"); + JUT_WARN(229, "%s", "JAIStreamAramMgr must be set.\n"); return NULL; } + JAIStream* stream = new JAIStream(this, field_0x6c); if (stream == NULL) { - JUT_WARN(235, "JASPoolAllocObject::::operator new failed .\n"); + JUT_WARN(235, "%s", "JASPoolAllocObject::::operator new failed .\n"); return NULL; } diff --git a/src/JSystem/JAudio2/JASCalc.cpp b/src/JSystem/JAudio2/JASCalc.cpp index fa192e91b9..66e25e046b 100644 --- a/src/JSystem/JAudio2/JASCalc.cpp +++ b/src/JSystem/JAudio2/JASCalc.cpp @@ -1,34 +1,32 @@ -// -// JASCalc -// - #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JASCalc.h" -#include -#include "math.h" -#include "limits.h" +#include +#include /* 8028F2E8-8028F318 289C28 0030+00 0/0 1/1 0/0 .text imixcopy__7JASCalcFPCsPCsPsUl */ -void JASCalc::imixcopy(const s16 *s1, const s16 *s2, s16 *dst, u32 n) { +void JASCalc::imixcopy(const s16* s1, const s16* s2, s16* dst, u32 n) { for (n; n != 0; n--) { - *dst++ = *((s16 *)s1)++; - *dst++ = *((s16 *)s2)++; + *dst++ = *((s16*)s1)++; + *dst++ = *((s16*)s2)++; } } /* 8028F318-8028F354 289C58 003C+00 1/1 0/0 0/0 .text bcopyfast__7JASCalcFPCvPvUl */ -void JASCalc::bcopyfast(const void *src, void *dest, u32 size) { - u32 copy1, copy2, copy3, copy4; +void JASCalc::bcopyfast(const void* src, void* dest, u32 size) { + JUT_ASSERT(226, (reinterpret_cast(src) & 0x03) == 0); + JUT_ASSERT(227, (reinterpret_cast(dest) & 0x03) == 0); + JUT_ASSERT(228, (size & 0x0f) == 0); - u32 *usrc = (u32 *)src; - u32 *udest = (u32 *)dest; + u32 copy1, copy2, copy3, copy4; + u32* usrc = (u32*)src; + u32* udest = (u32*)dest; for (size = size / (4 * sizeof(u32)); size != 0; size--) { - copy1 = *((u32 *)usrc)++; - copy2 = *((u32 *)usrc)++; - copy3 = *((u32 *)usrc)++; - copy4 = *((u32 *)usrc)++; + copy1 = *((u32*)usrc)++; + copy2 = *((u32*)usrc)++; + copy3 = *((u32*)usrc)++; + copy4 = *((u32*)usrc)++; *udest++ = copy1; *udest++ = copy2; @@ -38,12 +36,12 @@ void JASCalc::bcopyfast(const void *src, void *dest, u32 size) { } /* 8028F354-8028F454 289C94 0100+00 0/0 3/3 0/0 .text bcopy__7JASCalcFPCvPvUl */ -void JASCalc::bcopy(const void *src, void *dest, u32 size) { - u32 *usrc; - u32 *udest; +void JASCalc::bcopy(const void* src, void* dest, u32 size) { + u32* usrc; + u32* udest; - u8 *bsrc = (u8 *)src; - u8 *bdest = (u8 *)dest; + u8* bsrc = (u8*)src; + u8* bdest = (u8*)dest; u8 endbitsSrc = (reinterpret_cast(bsrc) & 0x03); u8 enbitsDst = (reinterpret_cast(bdest) & 0x03); @@ -82,8 +80,11 @@ void JASCalc::bcopy(const void *src, void *dest, u32 size) { } /* 8028F454-8028F480 289D94 002C+00 1/1 0/0 0/0 .text bzerofast__7JASCalcFPvUl */ -void JASCalc::bzerofast(void *dest, u32 size) { - u32 *udest = (u32 *)dest; +void JASCalc::bzerofast(void* dest, u32 size) { + JUT_ASSERT(336, (reinterpret_cast(dest) & 0x03) == 0); + JUT_ASSERT(337, (size & 0x0f) == 0); + + u32* udest = (u32*)dest; for (size = size / (4 * sizeof(u32)); size != 0; size--) { *udest++ = 0; @@ -94,9 +95,9 @@ void JASCalc::bzerofast(void *dest, u32 size) { } /* 8028F480-8028F578 289DC0 00F8+00 0/0 6/6 0/0 .text bzero__7JASCalcFPvUl */ -void JASCalc::bzero(void *dest, u32 size) { - u32 *udest; - u8 *bdest = (u8 *)dest; +void JASCalc::bzero(void* dest, u32 size) { + u32* udest; + u8* bdest = (u8*)dest; if ((size & 0x1f) == 0 && (reinterpret_cast(dest) & 0x1f) == 0) { DCZeroRange(dest, size); return; @@ -136,7 +137,6 @@ void JASCalc::bzero(void *dest, u32 size) { } } -/* ############################################################################################## */ /* 8039ABB8-8039AFB8 027218 0400+00 0/0 4/4 0/0 .rodata CUTOFF_TO_IIR_TABLE__7JASCalc */ s16 const JASCalc::CUTOFF_TO_IIR_TABLE[128][4] = { 0x0F5C, 0x0A3D, 0x4665, 0x1E73, diff --git a/src/JSystem/JAudio2/JASCallback.cpp b/src/JSystem/JAudio2/JASCallback.cpp index 18d29ce4f5..b67f3848d1 100644 --- a/src/JSystem/JAudio2/JASCallback.cpp +++ b/src/JSystem/JAudio2/JASCallback.cpp @@ -1,8 +1,3 @@ -// -// Generated By: dol2asm -// Translation Unit: JASCallback -// - #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JASCallback.h" @@ -10,28 +5,28 @@ /* 8028FFA8-80290030 28A8E8 0088+00 0/0 2/2 0/0 .text regist__14JASCallbackMgrFPFPv_lPv */ -bool JASCallbackMgr::regist(JASCallback* function, void* argument) -{ +bool JASCallbackMgr::regist(JASCallback* callback, void* argument) { JASCriticalSection criticalSection; - for (int i = 0; i < 0x20; i++) { - if (mCallbacks[i].mFunction == NULL) { - mCallbacks[i].mFunction = function; - mCallbacks[i].mArgument = argument; + for (int i = 0; i < NUM_CALLBACKS; i++) { + if (callbacks_[i].callback_ == NULL) { + callbacks_[i].callback_ = callback; + callbacks_[i].arg_ = argument; return true; } } + return false; } /* 80290030-802900C4 28A970 0094+00 0/0 1/1 0/0 .text reject__14JASCallbackMgrFPFPv_lPv */ -int JASCallbackMgr::reject(JASCallback* function, void* argument) { +int JASCallbackMgr::reject(JASCallback* callback, void* argument) { int rejectNum = 0; JASCriticalSection criticalSection; - for (int i = 0; i < 0x20; i++) { - if (mCallbacks[i].mFunction == function && mCallbacks[i].mArgument == argument) { - mCallbacks[i].mFunction = NULL; - mCallbacks[i].mArgument = NULL; + for (int i = 0; i < NUM_CALLBACKS; i++) { + if (callbacks_[i].callback_ == callback && callbacks_[i].arg_ == argument) { + callbacks_[i].callback_ = NULL; + callbacks_[i].arg_ = NULL; rejectNum++; } } @@ -40,10 +35,10 @@ int JASCallbackMgr::reject(JASCallback* function, void* argument) { /* 802900C4-80290140 28AA04 007C+00 0/0 3/3 0/0 .text callback__14JASCallbackMgrFv */ void JASCallbackMgr::callback() { - for (int i = 0; i < 0x20; i++) { - if (mCallbacks[i].mFunction && mCallbacks[i].mFunction(mCallbacks[i].mArgument) < 0) { - mCallbacks[i].mFunction = NULL; - mCallbacks[i].mArgument = NULL; + for (int i = 0; i < NUM_CALLBACKS; i++) { + if (callbacks_[i].callback_ && callbacks_[i].callback_(callbacks_[i].arg_) < 0) { + callbacks_[i].callback_ = NULL; + callbacks_[i].arg_ = NULL; } } } diff --git a/src/JSystem/JAudio2/JASDvdThread.cpp b/src/JSystem/JAudio2/JASDvdThread.cpp index b5c31dbf4a..2de97b7978 100644 --- a/src/JSystem/JAudio2/JASDvdThread.cpp +++ b/src/JSystem/JAudio2/JASDvdThread.cpp @@ -1,16 +1,9 @@ -// -// Generated By: dol2asm -// Translation Unit: JASDvdThread -// - #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JASDvdThread.h" #include "JSystem/JAudio2/JASTaskThread.h" #include "JSystem/JKernel/JKRSolidHeap.h" -#include "dolphin/types.h" -/* ############################################################################################## */ /* 80451208-80451210 000708 0004+04 2/1 0/0 0/0 .sbss sThread__6JASDvd */ JASTaskThread* JASDvd::sThread; @@ -20,10 +13,19 @@ JASTaskThread* JASDvd::getThreadPointer() { } /* 8028FF04-8028FFA8 28A844 00A4+00 0/0 1/1 0/0 .text createThread__6JASDvdFliUl */ -bool JASDvd::createThread(s32 priority, int param_1, u32 param_2) { - if (sThread != NULL) return false; - sThread = new (JASDram, 0) JASTaskThread(priority, param_1, param_2); - sThread->setCurrentHeap(JKRGetSystemHeap()); - OSResumeThread(sThread->getThreadRecord()); +bool JASDvd::createThread(s32 priority, int msgCount, u32 stackSize) { + if (sThread != NULL) { + JUT_WARN_DEVICE(32, 2, "%s", "JASDvd::createThread が2回呼び出されました"); + return false; + } + + sThread = new (JASDram, 0) JASTaskThread(priority, msgCount, stackSize); + JUT_ASSERT(36, sThread); + + JKRHeap* pCurrentHeap = JKRGetSystemHeap(); + JUT_ASSERT(38, pCurrentHeap); + + sThread->setCurrentHeap(pCurrentHeap); + sThread->resume(); return true; } diff --git a/src/JSystem/JAudio2/JASHeapCtrl.cpp b/src/JSystem/JAudio2/JASHeapCtrl.cpp index ec89a82aba..66b8a40d03 100644 --- a/src/JSystem/JAudio2/JASHeapCtrl.cpp +++ b/src/JSystem/JAudio2/JASHeapCtrl.cpp @@ -1,8 +1,3 @@ -// -// Generated By: dol2asm -// Translation Unit: JASHeapCtrl -// - #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JASHeapCtrl.h" diff --git a/src/JSystem/JAudio2/JASTaskThread.cpp b/src/JSystem/JAudio2/JASTaskThread.cpp index a1cd980baf..b6e11789d2 100644 --- a/src/JSystem/JAudio2/JASTaskThread.cpp +++ b/src/JSystem/JAudio2/JASTaskThread.cpp @@ -1,20 +1,16 @@ -// -// Generated By: dol2asm -// Translation Unit: JASTaskThread -// - #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JASTaskThread.h" #include "JSystem/JAudio2/JASCalc.h" #include "JSystem/JAudio2/JASCriticalSection.h" #include "JSystem/JKernel/JKRSolidHeap.h" -#include "dolphin/os.h" /* 8028F6C4-8028F724 28A004 0060+00 0/0 1/1 0/0 .text __ct__13JASTaskThreadFiiUl */ -JASTaskThread::JASTaskThread(int param_0, int param_1, u32 param_2) : JKRThread(JASDram, param_2, param_1, param_0) { +JASTaskThread::JASTaskThread(int priority, int msgCount, u32 stackSize) : + JKRThread(JASDram, stackSize, msgCount, priority) +{ field_0x84 = false; - OSInitThreadQueue(&mpThreadQueue); + OSInitThreadQueue(&threadQueue_); } /* 8028F724-8028F850 28A064 012C+00 1/0 0/0 0/0 .text __dt__13JASTaskThreadFv */ @@ -32,58 +28,62 @@ JASTaskThread::~JASTaskThread() { /* 8028F850-8028F9EC 28A190 019C+00 1/1 0/0 0/0 .text allocCallStack__13JASTaskThreadFPFPv_vPCvUl */ -void* JASTaskThread::allocCallStack(void (*param_0)(void*), void const* param_1, u32 param_2) { +void* JASTaskThread::allocCallStack(JASThreadCallback callback, const void* msg, u32 msgSize) { ThreadMemPool* heap; - u32 size = param_2 + 8; + u32 size = msgSize + 8; JASThreadCallStack *callStack = (JASThreadCallStack*) JASKernel::getCommandHeap()->alloc(size); if (callStack == NULL) { return NULL; } - callStack->field_0x4 = 1; - JASCalc::bcopy(param_1, callStack->field_0x8.buffer, param_2); - callStack->mRunFunc = param_0; + + callStack->msgType_ = 1; + JASCalc::bcopy(msg, callStack->msg.buffer, msgSize); + callStack->callback_ = callback; return callStack; } /* 8028F9EC-8028FB5C 28A32C 0170+00 1/1 0/0 0/0 .text allocCallStack__13JASTaskThreadFPFPv_vPv */ -void* JASTaskThread::allocCallStack(void (*runFunc)(void*), void* param_1) { +void* JASTaskThread::allocCallStack(JASThreadCallback callback, void* msg) { JASThreadCallStack *callStack; - callStack = (JASThreadCallStack*)JASKernel::getCommandHeap()->alloc(0xc); + callStack = (JASThreadCallStack*)JASKernel::getCommandHeap()->alloc(12); if (callStack == NULL) { return NULL; } - callStack->field_0x4 = 0; - callStack->field_0x8.pBuffer = param_1; - callStack->mRunFunc = runFunc; + + callStack->msgType_ = 0; + callStack->msg.bufferPtr = msg; + callStack->callback_ = callback; return callStack; } /* 8028FB5C-8028FC54 28A49C 00F8+00 0/0 6/6 0/0 .text sendCmdMsg__13JASTaskThreadFPFPv_vPCvUl */ -int JASTaskThread::sendCmdMsg(void (*param_0)(void*), void const* param_1, u32 param_2) { - void* pvVar1; +int JASTaskThread::sendCmdMsg(JASThreadCallback callback, const void* msg, u32 msgSize) { + void* callstack; - pvVar1 = allocCallStack(param_0, param_1, param_2); - if (pvVar1 == NULL) { + callstack = allocCallStack(callback, msg, msgSize); + if (callstack == NULL) { return 0; } - int iVar2 = sendMessage(pvVar1); - if (iVar2 == 0) { - JASKernel::getCommandHeap()->free(pvVar1); + + BOOL iVar2 = sendMessage(callstack); + if (!iVar2) { + JASKernel::getCommandHeap()->free(callstack); } return iVar2; } /* 8028FC54-8028FD4C 28A594 00F8+00 0/0 3/3 0/0 .text sendCmdMsg__13JASTaskThreadFPFPv_vPv */ -int JASTaskThread::sendCmdMsg(void (*param_0)(void*), void* param_1) { - void* pvVar1; +int JASTaskThread::sendCmdMsg(JASThreadCallback callback, void* msg) { + void* callstack; - pvVar1 = allocCallStack(param_0, param_1); - if (pvVar1 == NULL) { + callstack = allocCallStack(callback, msg); + if (callstack == NULL) { return 0; } - int iVar2 = sendMessage(pvVar1); - if (iVar2 == 0) { - JASKernel::getCommandHeap()->free(pvVar1); + + BOOL iVar2 = sendMessage(callstack); + if (!iVar2) { + JASKernel::getCommandHeap()->free(callstack); } return iVar2; } @@ -91,19 +91,21 @@ int JASTaskThread::sendCmdMsg(void (*param_0)(void*), void* param_1) { /* 8028FD4C-8028FE88 28A68C 013C+00 1/0 0/0 0/0 .text run__13JASTaskThreadFv */ // NONMATCHING Regalloc void* JASTaskThread::run() { - JASThreadCallStack* ppcVar1; + JASThreadCallStack* callstack; OSInitFastCast(); do { - ppcVar1 = (JASThreadCallStack*)waitMessageBlock(); + callstack = (JASThreadCallStack*)waitMessageBlock(); if (field_0x84) { - OSSleepThread(&mpThreadQueue); + OSSleepThread(&threadQueue_); } - if (ppcVar1->field_0x4) { - ppcVar1->mRunFunc(ppcVar1->field_0x8.buffer); + + if (callstack->msgType_) { + callstack->callback_(callstack->msg.buffer); } else { - ppcVar1->mRunFunc(ppcVar1->field_0x8.pBuffer); + callstack->callback_(callstack->msg.bufferPtr); } - JASKernel::getCommandHeap()->free(ppcVar1); + + JASKernel::getCommandHeap()->free(callstack); } while (true); } @@ -114,7 +116,7 @@ void JASTaskThread::pause(bool param_0) { field_0x84 = 1; } else { if (field_0x84) { - OSWakeupThread(&mpThreadQueue); + OSWakeupThread(&threadQueue_); } field_0x84 = 0; } diff --git a/src/JSystem/JAudio2/JASTrack.cpp b/src/JSystem/JAudio2/JASTrack.cpp index 34b319c4f4..7cb87f68d7 100644 --- a/src/JSystem/JAudio2/JASTrack.cpp +++ b/src/JSystem/JAudio2/JASTrack.cpp @@ -1,8 +1,3 @@ -// -// Generated By: dol2asm -// Translation Unit: JASTrack -// - #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JASTrack.h" diff --git a/src/JSystem/JAudio2/JAUInitializer.cpp b/src/JSystem/JAudio2/JAUInitializer.cpp index f475232811..83fb025938 100644 --- a/src/JSystem/JAudio2/JAUInitializer.cpp +++ b/src/JSystem/JAudio2/JAUInitializer.cpp @@ -1,8 +1,3 @@ -// -// Generated By: dol2asm -// Translation Unit: JAUInitializer -// - #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JAUInitializer.h" @@ -14,69 +9,78 @@ #include "JSystem/JAudio2/JASAudioThread.h" #include "JSystem/JAudio2/JASDriverIF.h" #include "JSystem/JAudio2/JASDvdThread.h" -#include "JSystem/JAudio2/JASTaskThread.h" #include "JSystem/JAudio2/JASTrack.h" #include "JSystem/JAudio2/JASWaveArcLoader.h" #include "JSystem/JKernel/JKRAram.h" #include "JSystem/JKernel/JKRSolidHeap.h" #include "JSystem/JKernel/JKRThread.h" -#include /* 802A4AD0-802A4B28 29F410 0058+00 0/0 1/1 0/0 .text __ct__18JAU_JASInitializerFv */ JAU_JASInitializer::JAU_JASInitializer() { - field_0x00 = 0; - field_0x04 = 0; - field_0x14 = -1; - field_0x18 = -1; - field_0x08 = 0x1000; - field_0x0c = 3; - field_0x10 = 2; + audioMemory_ = 0; + audioMemSize_ = 0; + dvdThreadId_ = -1; + audioThreadId_ = -1; + heapSize_ = 0x1000; + dvdThreadPriority_ = 3; + audioThreadPriority_ = 2; field_0x1c = 0x80; - field_0x2c = 1.0f; - field_0x24 = 0x2760; - field_0x28 = 2; + dspLevel_ = 1.0f; + aramBlockSize_ = 0x2760; + aramChannelNum_ = 2; field_0x20 = 0; - field_0x30 = NULL; + waveArcDir_ = NULL; } /* 802A4B28-802A4D3C 29F468 0214+00 0/0 1/1 0/0 .text * initJASystem__18JAU_JASInitializerFP12JKRSolidHeap */ // NONMATCHING JASPoolAllocObject_MultiThreaded<_> locations -void JAU_JASInitializer::initJASystem(JKRSolidHeap* param_0) { +void JAU_JASInitializer::initJASystem(JKRSolidHeap* heap) { if (JASAudioThread::getThreadPointer()) { - + JUT_WARN(48, "%s", "Though initialized JASAudioThread, called JAU_JASInitializer::initJASystem()\n"); } else if (JASDvd::getThreadPointer()) { - + JUT_WARN(52, "%s", "Though initialized JASDvd, called JAU_JASInitializer::initJASystem()\n"); } else { - JASKernel::setupRootHeap(param_0, field_0x08); - if (field_0x00 == 0) { - field_0x00 = JKRAram::getManager()->getAudioMemory(); + JASKernel::setupRootHeap(heap, heapSize_); + + if (audioMemory_ == 0) { + audioMemory_ = JKRAram::getManager()->getAudioMemory(); } - if (field_0x04 == 0) { - field_0x04 = JKRAram::getManager()->getAudioMemSize(); + + if (audioMemSize_ == 0) { + audioMemSize_ = JKRAram::getManager()->getAudioMemSize(); } - JASKernel::setupAramHeap(field_0x00, field_0x04); + + JASKernel::setupAramHeap(audioMemory_, audioMemSize_); + JASTrack::newMemPool(field_0x1c); if (field_0x20 > 0) { JASTrack::TChannelMgr::newMemPool(field_0x20); } - JASDvd::createThread(field_0x0c,0x80,0x1000); - JASAudioThread::create(field_0x10); + + JASDvd::createThread(dvdThreadPriority_, 0x80, 0x1000); + JASAudioThread::create(audioThreadPriority_); JKRThreadSwitch* threadSwitch = JKRThreadSwitch::getManager(); if (threadSwitch) { - if (field_0x14 >= 0) { - threadSwitch->enter(JASDvd::getThreadPointer(), field_0x14); + if (dvdThreadId_ >= 0) { + threadSwitch->enter(JASDvd::getThreadPointer(), dvdThreadId_); } - if (field_0x18 >= 0) { - threadSwitch->enter(JASAudioThread::getThreadPointer(), field_0x18); + if (audioThreadId_ >= 0) { + threadSwitch->enter(JASAudioThread::getThreadPointer(), audioThreadId_); } } - JASDriver::setDSPLevel(field_0x2c); - JASAramStream::initSystem(field_0x24,field_0x28); + + JASDriver::setDSPLevel(dspLevel_); + JASAramStream::initSystem(aramBlockSize_, aramChannelNum_); } - if (field_0x30) { - JASWaveArcLoader::setCurrentDir(field_0x30); + + if (waveArcDir_) { + JASWaveArcLoader::setCurrentDir(waveArcDir_); } + + #if PLATFORM_SHIELD + JASDriver::setOutputMode(1); + #else switch (OSGetSoundMode()) { case 0: JASDriver::setOutputMode(0); @@ -85,6 +89,7 @@ void JAU_JASInitializer::initJASystem(JKRSolidHeap* param_0) { JASDriver::setOutputMode(1); break; } + #endif } /* 802A4D3C-802A4D60 29F67C 0024+00 0/0 1/1 0/0 .text __ct__18JAU_JAIInitializerFv */ @@ -104,5 +109,5 @@ void JAU_JAIInitializer::initJAInterface() { JAISe::newMemPool(field_0x0); JAISoundChild::newMemPool(field_0xc); s32 r29 = JASDram->getFreeSize(); - //OSReport("JAU_JAIInitializer uses %d bytes\n", r30 - r29); + OS_REPORT("JAU_JAIInitializer uses %d bytes\n", r30 - r29); } diff --git a/src/JSystem/JAudio2/JAUSectionHeap.cpp b/src/JSystem/JAudio2/JAUSectionHeap.cpp index 1defae3172..70e361f772 100644 --- a/src/JSystem/JAudio2/JAUSectionHeap.cpp +++ b/src/JSystem/JAudio2/JAUSectionHeap.cpp @@ -52,7 +52,7 @@ namespace { } } virtual s32 getStreamFileEntry(JAISoundID id) { - u32 short_id = id.mId.mAdvancedId.mShortId; + u32 short_id = id.id_.info.waveID; if (short_id >= field_0x4) { return -1; } @@ -455,8 +455,8 @@ bool JAUSectionHeap::loadDynamicSeq(JAISoundID param_0, bool param_1) { /* 802A5EF8-802A5F24 2A0838 002C+00 0/0 1/1 0/0 .text * releaseIdleDynamicSeqDataBlock__14JAUSectionHeapFv */ -void JAUSectionHeap::releaseIdleDynamicSeqDataBlock() { - sectionHeapData_.seqDataBlocks.releaseIdleDynamicSeqDataBlock(sectionHeapData_.seqDataUser); +u32 JAUSectionHeap::releaseIdleDynamicSeqDataBlock() { + return sectionHeapData_.seqDataBlocks.releaseIdleDynamicSeqDataBlock(sectionHeapData_.seqDataUser); } /* 802A5F24-802A5F9C 2A0864 0078+00 1/1 0/0 0/0 .text JAUNewSectionHeap__FP12JKRSolidHeapb */ diff --git a/src/JSystem/JAudio2/JAUSeqCollection.cpp b/src/JSystem/JAudio2/JAUSeqCollection.cpp index 4cc4b1c3d9..7387d21dd5 100644 --- a/src/JSystem/JAudio2/JAUSeqCollection.cpp +++ b/src/JSystem/JAudio2/JAUSeqCollection.cpp @@ -82,7 +82,7 @@ JAUSeqDataMgr_SeqCollection::SeqDataReturnValue JAUSeqDataMgr_SeqCollection::get if (!isValid()) { return SeqDataReturnValue_0; } - if (JAUSeqCollection::getSeqData(param_0.mId.mBytes.b1, param_0.mId.mAdvancedId.mShortId, param_1)) { + if (JAUSeqCollection::getSeqData(param_0.id_.info.type.parts.groupID, param_0.id_.info.waveID, param_1)) { return SeqDataReturnValue_2; } return SeqDataReturnValue_0; diff --git a/src/JSystem/JAudio2/JAUSoundTable.cpp b/src/JSystem/JAudio2/JAUSoundTable.cpp index 5f2c332887..beeca0335f 100644 --- a/src/JSystem/JAudio2/JAUSoundTable.cpp +++ b/src/JSystem/JAudio2/JAUSoundTable.cpp @@ -21,15 +21,15 @@ u8 JAUSoundTable::getTypeID(JAISoundID param_0) const { if (param_0.isAnonymous()) { return 0xff; } - JAUSoundTableSection* section = field_0x0.getSection(param_0.mId.mBytes.b0); + JAUSoundTableSection* section = field_0x0.getSection(param_0.id_.info.type.parts.sectionID); if (section == NULL) { return 0xff; } - JAUSoundTableGroup* group = field_0x0.getGroup(section, param_0.mId.mBytes.b1); + JAUSoundTableGroup* group = field_0x0.getGroup(section, param_0.id_.info.type.parts.groupID); if (group == NULL) { return 0xff; } - return group->getTypeID(param_0.mId.mAdvancedId.mShortId); + return group->getTypeID(param_0.id_.info.waveID); } /* 802A728C-802A73D4 2A1BCC 0148+00 0/0 7/7 0/0 .text getData__13JAUSoundTableCF10JAISoundID */ @@ -37,15 +37,15 @@ JAUSoundTableItem* JAUSoundTable::getData(JAISoundID param_0) const { if (param_0.isAnonymous()) { return NULL; } - JAUSoundTableSection* section = field_0x0.getSection(param_0.mId.mBytes.b0); + JAUSoundTableSection* section = field_0x0.getSection(param_0.id_.info.type.parts.sectionID); if (section == NULL) { return NULL; } - JAUSoundTableGroup* group = field_0x0.getGroup(section, param_0.mId.mBytes.b1); + JAUSoundTableGroup* group = field_0x0.getGroup(section, param_0.id_.info.type.parts.groupID); if (group == NULL) { return NULL; } - return getItem(group, param_0.mId.mAdvancedId.mShortId); + return getItem(group, param_0.id_.info.waveID); } /* 802A73D4-802A7420 2A1D14 004C+00 0/0 1/1 0/0 .text init__17JAUSoundNameTableFPCv */ diff --git a/src/JSystem/JAudio2/JAUStreamFileTable.cpp b/src/JSystem/JAudio2/JAUStreamFileTable.cpp index 2c950278e9..e646e0ddc4 100644 --- a/src/JSystem/JAudio2/JAUStreamFileTable.cpp +++ b/src/JSystem/JAudio2/JAUStreamFileTable.cpp @@ -1,7 +1,6 @@ #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/JAUStreamFileTable.h" -#include "dolphin/os.h" /* 802A7420-802A742C 2A1D60 000C+00 0/0 1/1 0/0 .text __ct__18JAUStreamFileTableFv */ JAUStreamFileTable::JAUStreamFileTable() { @@ -40,7 +39,7 @@ const char* JAUStreamFileTable::getFilePath(int index) const { /* 802A74AC-802A74E8 2A1DEC 003C+00 1/0 0/0 0/0 .text * getStreamFileEntry__32JAUStreamDataMgr_StreamFileTableF10JAISoundID */ s32 JAUStreamDataMgr_StreamFileTable::getStreamFileEntry(JAISoundID soundId) { - const char* filePath = getFilePath(soundId.mId.mAdvancedId.mShortId); + const char* filePath = getFilePath(soundId.id_.info.waveID); if (filePath == NULL) { return -1; } diff --git a/src/JSystem/JAudio2/dspproc.cpp b/src/JSystem/JAudio2/dspproc.cpp index f85fc37cec..a7efc896f7 100644 --- a/src/JSystem/JAudio2/dspproc.cpp +++ b/src/JSystem/JAudio2/dspproc.cpp @@ -1,8 +1,3 @@ -// -// Generated By: dol2asm -// Translation Unit: dspproc -// - #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/dspproc.h" @@ -13,9 +8,9 @@ void DSPReleaseHalt2(u32 msg) { u32 msgs[2]; u16 dspMap = DSP_CreateMap2(msg); - msgs[0] = (msg<<16) | dspMap; + msgs[0] = (msg << 16) | dspMap; - DSPSendCommands2(msgs,0,NULL); + DSPSendCommands2(msgs, 0, NULL); } /* 804512F8-80451300 0007F8 0004+04 2/2 0/0 0/0 .sbss flag */ @@ -23,7 +18,8 @@ static volatile BOOL flag; /* 8029E540-8029E54C 298E80 000C+00 1/1 0/0 0/0 .text setup_callback__FUs */ static void setup_callback(u16 param_0) { - flag = 0; + OS_REPORT("Finish %d\n", param_0); + flag = FALSE; } /* 8029E560-8029E5C4 298EA0 0064+00 0/0 1/1 0/0 .text DsetupTable__FUlUlUlUlUl */ @@ -34,22 +30,23 @@ void DsetupTable(u32 param_0, u32 param_1, u32 param_2, u32 param_3, u32 param_4 table[2] = param_2; table[3] = param_3; table[4] = param_4; - flag = 1; - DSPSendCommands2(table,5,setup_callback); + OS_REPORT("Table Setup\n"); + + flag = TRUE; + DSPSendCommands2(table, 5, setup_callback); while (true) { - if (flag==0) { + if (!flag) { return; } } } -/* ############################################################################################## */ /* 804507C8-804507D0 000248 0002+06 3/3 0/0 0/0 .sdata DSP_MIXERLEVEL */ static u16 DSP_MIXERLEVEL = 0x4000; /* 8029E5E0-8029E604 298F20 0024+00 0/0 1/1 0/0 .text DsetMixerLevel__Ff */ void DsetMixerLevel(f32 level) { - DSP_MIXERLEVEL = 4096.0f*level; + DSP_MIXERLEVEL = 4096.0f * level; } /* 8029E620-8029E674 298F60 0054+00 0/0 1/1 0/0 .text DsyncFrame2ch__FUlUlUl */ diff --git a/src/JSystem/JAudio2/dsptask.cpp b/src/JSystem/JAudio2/dsptask.cpp index 48bc2a06af..772cacbc17 100644 --- a/src/JSystem/JAudio2/dsptask.cpp +++ b/src/JSystem/JAudio2/dsptask.cpp @@ -1,38 +1,29 @@ -// -// Generated By: dol2asm -// Translation Unit: dsptask -// - #include "JSystem/JSystem.h" // IWYU pragma: keep #include "JSystem/JAudio2/dsptask.h" #include "JSystem/JAudio2/osdsp.h" #include "global.h" -// -// Forward References: -// - static void DspInitWork(); static void DspHandShake(void* param_0); static int DspStartWork(u32 param_0, void (*param_1)(u16)); -// -// External References: -// - extern int Dsp_Running_Check(); extern int Dsp_Running_Start(); /* 8029E6E0-8029E718 299020 0038+00 1/1 0/0 0/0 .text DspHandShake__FPv */ void DspHandShake(void*) { + OS_REPORT("DSP InitCallback \n"); while (DSPCheckMailFromDSP() == 0) {} - DSPReadMailFromDSP(); - DSPCheckMailFromDSP(); + u32 result = DSPReadMailFromDSP(); + OS_REPORT("♪JDSP/Boot:: DSPからのファーストメール(%x)が届きました\n", result); + result = DSPCheckMailFromDSP(); + OS_REPORT("♪JDSP/Boot:: DSPからのセカンドメール(%x)が届きました\n", result); + + OS_REPORT("♪JDSP/Boot:: DSPとの接続に成功しました\n"); Dsp_Running_Start(); } -/* ############################################################################################## */ /* 803C7920-803C9820 024A40 1F00+00 1/1 0/0 0/0 .data jdsp */ static u8 jdsp[7936] ALIGN_DECL(32) = { 0x02, 0x9F, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFF, 0x00, 0x00, 0x02, 0xFF, 0x00, 0x00, @@ -542,6 +533,7 @@ static u8 AUDIO_YIELD_BUFFER[8192] ALIGN_DECL(32); /* 8029E720-8029E7CC 299060 00AC+00 0/0 1/1 0/0 .text DspBoot__FPFPv_v */ void DspBoot(void (*param_0)(void*)) { DspInitWork(); + OS_REPORT("Dsp をブートします\n"); audio_task.priority = 0xf0; audio_task.iram_mmem_addr = (u16*)(jdsp + 0x80000000); audio_task.iram_length = sizeof(jdsp); @@ -557,6 +549,7 @@ void DspBoot(void (*param_0)(void*)) { audio_task.req_cb = param_0; DSPInit(); DSPAddPriorTask(&audio_task); + OS_REPORT("Dspブートしました\n"); } /* 8029E7E0-8029E8C8 299120 00E8+00 0/0 4/4 0/0 .text DSPSendCommands2__FPUlUlPFUs_v */ @@ -565,17 +558,20 @@ int DSPSendCommands2(u32* param_1, u32 param_2, void (*callBack)(u16)) { BOOL interruptFlag; s32 startWorkStatus; - while (Dsp_Running_Check() == 0) {}; + while (Dsp_Running_Check() == 0) { + OS_REPORT("Warning:まだブートしてません\n"); + }; interruptFlag = OSDisableInterrupts(); if (DSPCheckMailToDSP()) { + OS_REPORT("エラー::DSPがメッセージを受け取っていません\n"); OSRestoreInterrupts(interruptFlag); return -1; } DSPSendMailToDSP(param_2); DSPAssertInt(); - while(DSPCheckMailToDSP() != 0); + while (DSPCheckMailToDSP() != 0); if (param_2 == 0) { param_2 = 1; @@ -594,9 +590,7 @@ int DSPSendCommands2(u32* param_1, u32 param_2, void (*callBack)(u16)) { return startWorkStatus; } -/* ############################################################################################## */ /* 80433FE0-80434060 060D00 0080+00 3/3 0/0 0/0 .bss taskwork */ - typedef struct { u16 field_0x0; u16 field_0x2; @@ -606,14 +600,12 @@ typedef struct { static TaskWorkStruct taskwork[16]; /* 8029E8E0-8029E90C 299220 002C+00 1/1 0/0 0/0 .text DspInitWork__Fv */ -// Loop is unrolled but should not be static void DspInitWork() { for (int i = 0; i < 16; i++) { taskwork[i].field_0x4 = NULL; } } -/* ############################################################################################## */ /* 80451300-80451304 000800 0004+00 2/2 0/0 0/0 .sbss taskreadp */ static u32 taskreadp; @@ -625,6 +617,7 @@ static int DspStartWork(u32 param_0, void (*param_1)(u16)) { u32 taskWritePrev = taskwritep; u32 writeVal = ((taskWritePrev + 1) & 0xf); if (writeVal == taskreadp) { + OS_REPORT("DSP-Task Buffer is full ( %d, %d)\n", taskwritep, taskreadp); return 0; } @@ -636,7 +629,9 @@ static int DspStartWork(u32 param_0, void (*param_1)(u16)) { /* 8029E980-8029E9E8 2992C0 0068+00 0/0 1/1 0/0 .text DspFinishWork__FUs */ void DspFinishWork(u16 param_0) { - if (param_0 == taskwork[taskreadp].field_0x0) { + if (param_0 != taskwork[taskreadp].field_0x0) { + OS_REPORT("Error:: Not finish task\n"); + } else { if (taskwork[taskreadp].field_0x4) { taskwork[taskreadp].field_0x4(taskreadp); } diff --git a/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/math.h b/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/math.h index b35f51a98e..5a329d6752 100644 --- a/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/math.h +++ b/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/math.h @@ -34,6 +34,10 @@ double cos(double); float cosf(float); double exp(double); +inline float expf(float x) { + return exp(x); +} + extern double __frsqrte(double); extern float __fres(float); diff --git a/src/Z2AudioLib/Z2Audience.cpp b/src/Z2AudioLib/Z2Audience.cpp index 8a200729ba..a2491c9762 100644 --- a/src/Z2AudioLib/Z2Audience.cpp +++ b/src/Z2AudioLib/Z2Audience.cpp @@ -1,8 +1,3 @@ -// -// Generated By: dol2asm -// Translation Unit: Z2Audience -// - #include "Z2AudioLib/Z2Audience.h" #include "Z2AudioLib/Z2SoundInfo.h" #include "Z2AudioLib/Z2Calc.h" @@ -15,134 +10,146 @@ /* 802BBCDC-802BBD18 2B661C 003C+00 1/1 0/0 0/0 .text * calc__15Z2AudibleAbsPosFRCQ29JGeometry8TVec3 */ -void Z2AudibleAbsPos::calc(JGeometry::TVec3 const& param_0) { - field_0xc.sub(param_0, field_0x0); - field_0x0.set(param_0); +void Z2AudibleAbsPos::calc(const JGeometry::TVec3& pos) { + velocity_.sub(pos, field_0x0); + field_0x0.set(pos); } /* 802BBD18-802BBD94 2B6658 007C+00 1/1 0/0 0/0 .text * init__15Z2AudibleAbsPosFPQ29JGeometry8TVec3RCQ29JGeometry8TVec3PCQ29JGeometry8TVec3 */ -void Z2AudibleAbsPos::init(JGeometry::TVec3* param_0, JGeometry::TVec3 const& param_1, - JGeometry::TVec3 const* param_2) { +void Z2AudibleAbsPos::init(JGeometry::TVec3* param_0, const JGeometry::TVec3& param_1, + const JGeometry::TVec3* param_2) { param_0->set(param_1); + if (param_2 != NULL) { field_0x0.set(*param_2); - field_0xc.sub(param_1, field_0x0); - return; + velocity_.sub(param_1, field_0x0); + } else { + field_0x0.set(param_1); + velocity_.zero(); } - field_0x0.set(param_1); - field_0xc.zero(); } /* 802BBD94-802BBE74 2B66D4 00E0+00 1/1 0/0 0/0 .text * __ct__9Z2AudibleFRCQ29JGeometry8TVec3PCQ29JGeometry8TVec3Ulb */ -Z2Audible::Z2Audible(JGeometry::TVec3 const& param_0, JGeometry::TVec3 const* param_1, - u32 param_2, bool param_3) { - field_0x10.field_0x0.raw = 0xffffffff; - field_0x14.init(&mPos, param_0, param_1); +Z2Audible::Z2Audible(const JGeometry::TVec3& pos, const JGeometry::TVec3* param_1, + u32 channel, bool param_3) { + mParam.field_0x0.raw = 0xFFFFFFFF; + mAbsPos.init(&mPos, pos, param_1); + for (int i = 0; i < 1; i++) { - if ((param_2 & (1 << i)) == 0) { - field_0x2c[i].init(); + if ((channel & (1 << i)) == 0) { + mChannel[i].init(); } } + for (int i = 0; i < 1; i = i + 1) { field_0x64[i] = 0.0f; } } - /* 802BBE74-802BBE98 2B67B4 0024+00 1/1 0/0 0/0 .text __ct__16Z2AudibleChannelFv */ -Z2AudibleChannel::Z2AudibleChannel() { -} - +Z2AudibleChannel::Z2AudibleChannel() {} /* 802BBE98-802BBED0 2B67D8 0038+00 1/0 0/0 0/0 .text calc__9Z2AudibleFv */ void Z2Audible::calc() { if (isDoppler()) { - field_0x14.calc(mPos); + mAbsPos.calc(mPos); } } /* 802BBED0-802BBEE4 2B6810 0014+00 1/0 0/0 0/0 .text getOuterParams__9Z2AudibleFi */ -JASSoundParams* Z2Audible::getOuterParams(int param_0) { - return &field_0x2c[param_0].field_0x0; +JASSoundParams* Z2Audible::getOuterParams(int index) { + JUT_ASSERT(80, index >= 0); + JUT_ASSERT(81, index < 1); + return &mChannel[index].mParams; } /* 802BBEE4-802BC204 2B6824 0320+00 1/1 0/0 0/0 .text * setOuterParams__9Z2AudibleFRC14JASSoundParamsRC14JASSoundParamsi */ -void Z2Audible::setOuterParams(JASSoundParams const& param_0, JASSoundParams const& param_1, - int index) { +void Z2Audible::setOuterParams(const JASSoundParams& outParams, const JASSoundParams& inParams, + int index) { JUT_ASSERT(89, index >= 0); JUT_ASSERT(90, index < 1); - Z2AudibleChannel* this_01 = &field_0x2c[index]; - u8 iStack_94 = (field_0x10.field_0x0.half.f1 & 0xf00) >> 8; + + Z2AudibleChannel* channel = &mChannel[index]; + u8 iStack_94 = (mParam.field_0x0.half.f1 & 0xf00) >> 8; if (iStack_94 == 0) { - this_01->field_0x0.combine(param_0, param_1); + channel->mParams.combine(outParams, inParams); return; } - if (this_01->field_0x28 < 0.0f) { - this_01->field_0x28 = 1.0f; - this_01->mPan = param_1.mPan; - this_01->mDolby = param_1.mDolby; - this_01->field_0x0.combine(param_0, param_1); + if (channel->field_0x28 < 0.0f) { + channel->field_0x28 = 1.0f; + channel->mPan = inParams.mPan; + channel->mDolby = inParams.mDolby; + channel->mParams.combine(outParams, inParams); return; } - JASSoundParams local_b0; - local_b0.mFxMix = param_1.mFxMix; - local_b0.mPitch = param_1.mPitch; + JASSoundParams params; + params.mFxMix = inParams.mFxMix; + params.mPitch = inParams.mPitch; JGeometry::TVec2 local_b8; - local_b8.x = param_1.mPan - this_01->mPan; - local_b8.y = param_1.mDolby - this_01->mDolby; - f32 dVar9 = param_1.mVolume * local_b8.length(); + local_b8.x = inParams.mPan - channel->mPan; + local_b8.y = inParams.mDolby - channel->mDolby; + + f32 dVar9 = inParams.mVolume * local_b8.length(); f32 dVar10 = 1.0f; f32 dVar12 = Z2Calc::linearTransform(iStack_94, 0.0f, 15.0f, 1.0f, 0.3f, true); - if (param_1.mVolume > dVar12 && dVar9 > 0.001f) { + if (inParams.mVolume > dVar12 && dVar9 > 0.001f) { dVar10 = Z2Calc::getParamByExp(dVar9, 0.3f, 0.001f, 0.1f, dVar12, 1.0f, - Z2Calc::CURVE_SIGN_1); + Z2Calc::CURVE_POSITIVE); if (dVar10 < 0.0f) { dVar10 = 0.0f; } } - f32 dVar15 = dVar10 - this_01->field_0x28; + + f32 dVar15 = dVar10 - channel->field_0x28; f32 dVar11 = 1.0f; if (dVar15 > 0.0f) { - dVar11 = Z2Calc::getParamByExp(J3DUD::JMAAbs(dVar15), 1.0f, 0.0f, 0.1f, 0.1f, 0.5f, Z2Calc::CURVE_SIGN_1); + dVar11 = Z2Calc::getParamByExp(J3DUD::JMAAbs(dVar15), 1.0f, 0.0f, 0.1f, 0.1f, 0.5f, Z2Calc::CURVE_POSITIVE); } else { - dVar11 = Z2Calc::getParamByExp(J3DUD::JMAAbs(dVar15), -1.0f, 0.0f, 0.1f, 1.0f / 30.0f, 0.5f, Z2Calc::CURVE_SIGN_1); + dVar11 = Z2Calc::getParamByExp(J3DUD::JMAAbs(dVar15), -1.0f, 0.0f, 0.1f, 1.0f / 30.0f, 0.5f, Z2Calc::CURVE_POSITIVE); } - dVar10 = this_01->field_0x28 + (dVar15 * dVar11); + + dVar10 = channel->field_0x28 + (dVar15 * dVar11); if (dVar10 < 0.0f) { dVar10 = 0.0f; } else if (dVar10 > 1.0f) { dVar10 = 1.0f; } - local_b0.mVolume = param_1.mVolume * dVar10; - this_01->field_0x28 = dVar10; - f32 dVar13 = Z2Calc::getParamByExp(local_b0.mVolume * J3DUD::JMAAbs(local_b8.x), 1.0f, 0.0f, 0.1f, - 1.0f / 30.0f, 1.0 / 3.0f, Z2Calc::CURVE_SIGN_1); - f32 dVar14 = Z2Calc::getParamByExp(local_b0.mVolume * J3DUD::JMAAbs(local_b8.y), 1.0f, + + params.mVolume = inParams.mVolume * dVar10; + channel->field_0x28 = dVar10; + + f32 dVar13 = Z2Calc::getParamByExp(params.mVolume * J3DUD::JMAAbs(local_b8.x), 1.0f, 0.0f, 0.1f, + 1.0f / 30.0f, 1.0 / 3.0f, Z2Calc::CURVE_POSITIVE); + f32 dVar14 = Z2Calc::getParamByExp(params.mVolume * J3DUD::JMAAbs(local_b8.y), 1.0f, 0.0f, 0.1f, - 1.0f / 30.0f, 1.0f / 3.0f, Z2Calc::CURVE_SIGN_1); + 1.0f / 30.0f, 1.0f / 3.0f, Z2Calc::CURVE_POSITIVE); if (dVar13 > 1.0f / 3.0f) { dVar13 = 1.0f / 3.0f; } if (dVar14 > 1.0f / 3.0f) { dVar14 = 1.0f / 3.0f; } - local_b0.mPan = this_01->mPan + (local_b8.x * dVar13); - local_b0.mDolby = this_01->mDolby + (local_b8.y * dVar14); - local_b0.clamp(); - this_01->field_0x0.combine(param_0, local_b0); - this_01->mPan = local_b0.mPan; - this_01->mDolby = local_b0.mDolby; + + params.mPan = channel->mPan + (local_b8.x * dVar13); + params.mDolby = channel->mDolby + (local_b8.y * dVar14); + params.clamp(); + + channel->mParams.combine(outParams, params); + channel->mPan = params.mPan; + channel->mDolby = params.mDolby; } /* 802BC204-802BC218 2B6B44 0014+00 4/4 0/0 0/0 .text getChannel__9Z2AudibleFi */ -Z2AudibleChannel* Z2Audible::getChannel(int param_0) { - return &field_0x2c[param_0]; +Z2AudibleChannel* Z2Audible::getChannel(int index) { + JUT_ASSERT(220, index >= 0); + JUT_ASSERT(221, index < 1); + return &mChannel[index]; } /* 802BC218-802BC248 2B6B58 0030+00 3/3 0/0 0/0 .text getDistVolBit__9Z2AudibleFv */ @@ -156,6 +163,7 @@ u32 Z2Audible::getDistVolBit() { return ((int)(uVar1 & 0x70) >> 4) + 7; } } + return 0; } @@ -178,6 +186,7 @@ void Z2Audience3DSetting::init() { field_0x64 = 0xff; field_0x5c = Z2Param::SONIC_SPEED; field_0x60 = 1.5f; + initVolumeDist(); initDolbyDist(); } @@ -188,9 +197,11 @@ void Z2Audience3DSetting::initVolumeDist() { field_0x0[0] = Z2Param::DISTANCE_MAX; field_0x3c = Z2Param::MAX_VOLUME_DISTANCE; + calcVolumeFactorAll(); calcPriorityFactorAll(); calcFxMixFactorAll(); + mVolumeDistInit = true; } @@ -200,14 +211,17 @@ static f32 cNearFarRatio = Z2Param::MAX_VOLUME_DISTANCE / Z2Param::DISTANCE_MAX; /* 802BC4D0-802BC6A4 2B6E10 01D4+00 1/1 0/0 0/0 .text updateVolumeDist__19Z2Audience3DSettingFf */ void Z2Audience3DSetting::updateVolumeDist(f32 param_0) { field_0x0[0] = param_0; + if (param_0 > Z2Param::DISTANCE_MAX) { field_0x3c = cNearFarRatio * param_0; } else { field_0x3c = Z2Param::MAX_VOLUME_DISTANCE; } + calcVolumeFactorAll(); calcPriorityFactorAll(); calcFxMixFactorAll(); + mVolumeDistInit = false; } @@ -229,14 +243,17 @@ void Z2Audience3DSetting::updateDolbyDist(f32 param_0, f32 param_1) { } else { field_0x44 = Z2Param::DOLBY_FLONT_DISTANCE_MAX; } + if (param_1 < 2.0f * field_0x44) { param_1 = 2.0f * field_0x44; } + if (param_1 > Z2Param::DOLBY_BEHIND_DISTANCE_MAX) { field_0x48 = param_1; } else { field_0x48 = Z2Param::DOLBY_BEHIND_DISTANCE_MAX; } + mDolbyDistInit = false; } @@ -263,26 +280,27 @@ void Z2AudioCamera::init() { /* 802BC7DC-802BC8AC 2B711C 00D0+00 2/2 0/0 0/0 .text setCameraState__13Z2AudioCameraFPA4_CfR3Vecb */ -void Z2AudioCamera::setCameraState(f32 const (*param_0)[4], Vec& param_1, bool param_2) { +void Z2AudioCamera::setCameraState(f32 const (*param_0)[4], Vec& pos, bool param_2) { field_0x0.set(param_0); if (param_2) { - mPos.set(param_1); + mPos.set(pos); field_0x48.set(mPos); mVel.zero(); } else { field_0x48.set(mPos); - mPos.set(param_1); + mPos.set(pos); mVel.sub(mPos, field_0x48); } } /* 802BC8AC-802BCBEC 2B71EC 0340+00 1/1 0/0 0/0 .text * setCameraState__13Z2AudioCameraFPA4_fR3VecR3Vecffbb */ -void Z2AudioCamera::setCameraState(f32 (*param_0)[4], Vec& param_1, Vec& param_2, f32 param_3, - f32 param_4, bool param_5, bool param_6) { +void Z2AudioCamera::setCameraState(f32 (*param_0)[4], Vec& pos, Vec& param_2, f32 param_3, + f32 param_4, bool param_5, bool param_6) { JGeometry::TVec3 aTStack_c0; - VECSubtract(¶m_2, ¶m_1, aTStack_c0); + VECSubtract(¶m_2, &pos, (Vec*)&aTStack_c0); mCamDist = aTStack_c0.length(); + f32 dVar10 = 0.5f * param_3; mFovySin = JMASinDegree(dVar10); f32 fVar8 = JMACosDegree(dVar10); @@ -302,8 +320,7 @@ void Z2AudioCamera::setCameraState(f32 (*param_0)[4], Vec& param_1, Vec& param_2 } if (mSetMainCamera && mTargetVolume > 0.0f) { - if (dVar11 > (Z2Param::DISTANCE_MAX * (1.0f - mTargetVolume))) - { + if (dVar11 > (Z2Param::DISTANCE_MAX * (1.0f - mTargetVolume))) { Z2GetAudience()->getSetting()->updateVolumeDist(dVar11 / (1.0f - mTargetVolume)); } else { Z2GetAudience()->getSetting()->initVolumeDist(); @@ -327,30 +344,36 @@ void Z2AudioCamera::setCameraState(f32 (*param_0)[4], Vec& param_1, Vec& param_2 Z2GetAudience()->getSetting()->updateDolbyDist(mCamDist - mDolbyCenterZ, mCamDist + mDolbyCenterZ); } } - setCameraState(param_0, param_1, param_6); + + setCameraState(param_0, pos, param_6); } /* 802BCBEC-802BCC7C 2B752C 0090+00 2/2 0/0 0/0 .text * convertAbsToRel__13Z2AudioCameraFP9Z2Audiblei */ -void Z2AudioCamera::convertAbsToRel(Z2Audible* param_0, int param_1) { - Z2AudibleChannel* iVar2 = param_0->getChannel(param_1); - if (iVar2 == NULL) { +void Z2AudioCamera::convertAbsToRel(Z2Audible* audible, int channelNum) { + JUT_ASSERT(508, audible); + JUT_ASSERT(509, channelNum >= 0); + JUT_ASSERT(510, channelNum < 1); + + Z2AudibleChannel* channel = audible->getChannel(channelNum); + if (channel == NULL) { return; } - Z2AudibleRelPos* relPos = &iVar2->field_0x14; - MTXMultVec(field_0x0, param_0->mPos, relPos->field_0x00); + + Z2AudibleRelPos* relPos = &channel->field_0x14; + MTXMultVec(field_0x0, (Vec*)&audible->getPos(), (Vec*)&relPos->field_0x00); relPos->field_0xC = relPos->field_0x00.length(); - JGeometry::TVec3 aTStack_38; - JGeometry::setTVec3f(*(Vec*)&relPos->field_0x00, *(Vec*)&aTStack_38); + + JGeometry::TVec3 aTStack_38(relPos->field_0x00); aTStack_38.z += mVolCenterZ; relPos->field_0x10 = aTStack_38.length(); } /* 802BCC7C-802BCCC0 2B75BC 0044+00 2/2 0/0 0/0 .text convertAbsToRel__13Z2AudioCameraCFR3VecP3Vec */ -bool Z2AudioCamera::convertAbsToRel(Vec& param_0, Vec* param_1) const { - MTXMultVec(field_0x0, ¶m_0, param_1); - return isInSight(*param_1); +bool Z2AudioCamera::convertAbsToRel(Vec& src, Vec* dst) const { + MTXMultVec(field_0x0, &src, dst); + return isInSight(*dst); } /* 802BCCC0-802BCD28 2B7600 0068+00 1/1 0/0 0/0 .text isInSight__13Z2AudioCameraCFR3Vec @@ -360,15 +383,11 @@ bool Z2AudioCamera::isInSight(Vec& param_0) const { return false; } - f32 zabs = J3DUD::JMAAbs(param_0.z); - f32 xabs = J3DUD::JMAAbs(param_0.x); - - if (xabs > field_0x68 * zabs) { + if (J3DUD::JMAAbs(param_0.x) > field_0x68 * J3DUD::JMAAbs(param_0.z)) { return false; } - f32 yabs = J3DUD::JMAAbs(param_0.y); - if (yabs > field_0x6c * zabs) { + if (J3DUD::JMAAbs(param_0.y) > field_0x6c * J3DUD::JMAAbs(param_0.z)) { return false; } @@ -385,67 +404,75 @@ Z2SpotMic::Z2SpotMic() { mIgnoreIfOut = true; mMicOn = true; field_0x1c = 255.0f / (field_0x4 - field_0x0); - clearMicState(0); + + for (int i = 0; i < 1; i++) { + clearMicState(i); + } } /* 802BCDA8-802BCDE8 2B76E8 0040+00 2/2 0/0 0/0 .text clearMicState__9Z2SpotMicFi */ -void Z2SpotMic::clearMicState(int param_0) { - field_0x10[param_0] = NULL; - field_0x18[param_0] = field_0xc; - field_0x26[param_0] = 0; - calcVolumeFactor(param_0); +void Z2SpotMic::clearMicState(int camID) { + field_0x10[camID] = NULL; + field_0x18[camID] = field_0xc; + field_0x26[camID] = 0; + calcVolumeFactor(camID); } /* 802BCDE8-802BCE14 2B7728 002C+00 2/2 0/0 0/0 .text calcVolumeFactor__9Z2SpotMicFi */ -void Z2SpotMic::calcVolumeFactor(int param_0) { - field_0x20[param_0] = (field_0x8 - field_0x18[param_0]) / (field_0x4 - field_0x0); +void Z2SpotMic::calcVolumeFactor(int camID) { + field_0x20[camID] = (field_0x8 - field_0x18[camID]) / (field_0x4 - field_0x0); } /* 802BCE14-802BCF5C 2B7754 0148+00 1/1 0/0 0/0 .text setMicState__9Z2SpotMicFP13Z2AudioCamerai */ -void Z2SpotMic::setMicState(Z2AudioCamera* param_0, int param_1) { - if (mMicOn && mPosPtr != 0 && param_0 != NULL) { - clearMicState(param_1); +void Z2SpotMic::setMicState(Z2AudioCamera* camera, int camID) { + JUT_ASSERT(622, camID >= 0); + JUT_ASSERT(623, camID < 1); + + if (mMicOn && mPosPtr != 0 && camera != NULL) { + clearMicState(camID); JGeometry::TVec3 aVStack_58; - field_0x26[param_1] = param_0->convertAbsToRel(*mPosPtr, aVStack_58); - if (!mIgnoreIfOut || field_0x26[param_1]) { - field_0x10[param_1] = param_0; - aVStack_58.z = aVStack_58[0].z + param_0->getVolCenterZ(); + field_0x26[camID] = camera->convertAbsToRel(*mPosPtr, (Vec*)&aVStack_58); + if (!mIgnoreIfOut || field_0x26[camID]) { + field_0x10[camID] = camera; + aVStack_58.z += camera->getVolCenterZ(); + f32 dVar10 = aVStack_58.length(); f32 dVar11 = Z2GetAudience()->getSetting()->field_0x0[0]; f32 dVar12 = Z2GetAudience()->getSetting()->field_0x3c; if (dVar10 > dVar11) { - field_0x18[param_1] = field_0xc; + field_0x18[camID] = field_0xc; } else { if (dVar10 < dVar12) { - field_0x18[param_1] = 1.0f; + field_0x18[camID] = 1.0f; } else { - field_0x18[param_1] = JGeometry::TUtil::clamp( + field_0x18[camID] = JGeometry::TUtil::clamp( 1.0f + ((field_0xc - 1.0f) / (dVar11 - dVar12)) * (dVar10 - dVar12), 0.0f, 1.0f); } } - calcVolumeFactor(param_1); + + calcVolumeFactor(camID); } } } /* 802BCF5C-802BCFE4 2B789C 0088+00 2/2 0/0 0/0 .text calcMicDist__9Z2SpotMicFP9Z2Audible */ -f32 Z2SpotMic::calcMicDist(Z2Audible* param_0) { +f32 Z2SpotMic::calcMicDist(Z2Audible* audible) { if (!mMicOn) { return 0.0f; } if (mPosPtr == NULL) { return 0.0f; } - if (param_0 == NULL) { + if (audible == NULL) { return 0.0f; } JGeometry::TVec3 aTStack_1c; - JGeometry::TVec3 aTStack_28; - JGeometry::setTVec3f(*mPosPtr, *(Vec*)&aTStack_28); - aTStack_1c.sub(param_0->getPos(), aTStack_28); + JGeometry::TVec3 aTStack_28(*mPosPtr); + + aTStack_1c.sub(audible->getPos(), aTStack_28); return aTStack_1c.length(); } @@ -463,7 +490,10 @@ u32 Z2SpotMic::calcMicPriority(f32 param_0) { } /* 802BD03C-802BD130 2B797C 00F4+00 1/1 0/0 0/0 .text calcMicVolume__9Z2SpotMicFfif */ -f32 Z2SpotMic::calcMicVolume(f32 param_0, int param_1, f32 param_2) { +f32 Z2SpotMic::calcMicVolume(f32 param_0, int camID, f32 param_2) { + JUT_ASSERT(687, camID >= 0); + JUT_ASSERT(688, camID < 1); + if (mMicOn == NULL) { return param_2; } @@ -472,11 +502,11 @@ f32 Z2SpotMic::calcMicVolume(f32 param_0, int param_1, f32 param_2) { return param_2; } - if (field_0x10[param_1] == NULL) { + if (field_0x10[camID] == NULL) { return param_2; } - if (mIgnoreIfOut && field_0x26[param_1] == 0) { + if (mIgnoreIfOut && field_0x26[camID] == 0) { return param_2; } @@ -484,17 +514,17 @@ f32 Z2SpotMic::calcMicVolume(f32 param_0, int param_1, f32 param_2) { return -1.0f; } - if (param_2 >= field_0x18[param_1]) { + if (param_2 >= field_0x18[camID]) { return param_2; } if (param_0 < field_0x0) { - return field_0x18[param_1]; + return field_0x18[camID]; } f32 dVar7 = JGeometry::TUtil::clamp( - field_0x18[param_1] + field_0x20[param_1] * (param_0 - field_0x0), - field_0x8, field_0x18[param_1]); + field_0x18[camID] + field_0x20[camID] * (param_0 - field_0x0), + field_0x8, field_0x18[camID]); if (param_2 < dVar7) { param_2 = dVar7; } @@ -503,96 +533,104 @@ f32 Z2SpotMic::calcMicVolume(f32 param_0, int param_1, f32 param_2) { /* 802BD130-802BD1FC 2B7A70 00CC+00 0/0 1/1 0/0 .text __ct__10Z2AudienceFv */ Z2Audience::Z2Audience() : JASGlobalInstance(true), field_0x4(1.0f), field_0x8(0x7f) { - mMaxChannels = 1; + mNumPlayers = 1; mUsingOffMicVol = false; mAudioCamera[0].init(); - mAudioCamera[0].setMainCamera(); + mAudioCamera[0].setMainCamera(true); mLinkMic = mSpotMic; } /* 802BD1FC-802BD288 2B7B3C 008C+00 1/0 1/1 0/0 .text __dt__10Z2AudienceFv */ Z2Audience::~Z2Audience() { - //JUT_ASSERT(751, !isActive()); + // JUT_ASSERT(751, !isActive()); // TODO: need to setup rest of JASMemPool stuff } /* 802BD2DC-802BD338 2B7C1C 005C+00 0/0 1/1 0/0 .text * setAudioCamera__10Z2AudienceFPA4_fR3VecR3Vecffbib */ -void Z2Audience::setAudioCamera(f32 (*param_0)[4], Vec& param_1, Vec& param_2, f32 param_3, - f32 param_4, bool param_5, int param_6, bool param_7) { - mAudioCamera[param_6].setCameraState(param_0, param_1, param_2, param_3, param_4, param_5, param_7); - mLinkMic->setMicState(&mAudioCamera[param_6], param_6); +void Z2Audience::setAudioCamera(f32 (*param_0)[4], Vec& pos, Vec& param_2, f32 param_3, + f32 param_4, bool param_5, int camID, bool param_7) { + JUT_ASSERT(687, camID >= 0); + JUT_ASSERT(688, camID < mNumPlayers); + mAudioCamera[camID].setCameraState(param_0, pos, param_2, param_3, param_4, param_5, param_7); + mLinkMic->setMicState(&mAudioCamera[camID], camID); } /* 802BD338-802BD4D4 2B7C78 019C+00 1/0 0/0 0/0 .text * newAudible__10Z2AudienceFRCQ29JGeometry8TVec310JAISoundIDPCQ29JGeometry8TVec3Ul */ -JAIAudible* Z2Audience::newAudible(JGeometry::TVec3 const& param_0, JAISoundID param_1, - JGeometry::TVec3 const* param_2, u32 param_3) { - u32 uVar4 = param_3 | ~((1 << mMaxChannels) + -1); - if (uVar4 == 0xffffffff) { - return NULL; - } - JAUAudibleParam local_34 = Z2GetSoundInfo()->getAudibleSwFull(param_1); - bool x = local_34.field_0x0.bytes.b0_0 != 0; - Z2Audible* this_01 = new Z2Audible(param_0, param_2, uVar4, x); - if (this_01 == NULL) { +JAIAudible* Z2Audience::newAudible(const JGeometry::TVec3& pos, JAISoundID soundID, + const JGeometry::TVec3* param_2, u32 param_3) { + u32 channelNum = param_3 | ~((1 << mNumPlayers) + -1); + if (channelNum == 0xFFFFFFFF) { + JUT_WARN(826, "%s", "You masked all audible channels !"); return NULL; } - this_01->setAudibleParam(local_34); - for (int iVar5 = 0; iVar5 < mMaxChannels; iVar5++) { - Z2AudibleChannel* iVar2 = this_01->getChannel(iVar5); - if (iVar2 != NULL) { - u32 local_38 = this_01->getDistVolBit(); - mAudioCamera[iVar5].convertAbsToRel(this_01, iVar5); - calcDeltaPriority_(iVar2->field_0x14.field_0x10, local_38, false); - } + JAUAudibleParam params = Z2GetSoundInfo()->getAudibleSwFull(soundID); + bool x = params.field_0x0.bytes.b0_0 != 0; + + Z2Audible* audible = new Z2Audible(pos, param_2, channelNum, x); + if (audible == NULL) { + return NULL; } - for (int iVar5 = 0; iVar5 < 1; iVar5++) { - if (mSpotMic[iVar5].isOn()) { - this_01->field_0x64[iVar5] = mSpotMic[iVar5].calcMicDist(this_01); + + audible->setAudibleParam(params); + + for (int i = 0; i < mNumPlayers; i++) { + Z2AudibleChannel* channel = audible->getChannel(i); + if (channel != NULL) { + u32 distVolBit = audible->getDistVolBit(); + mAudioCamera[i].convertAbsToRel(audible, i); + calcDeltaPriority_(channel->field_0x14.field_0x10, distVolBit, false); } } - return this_01; + for (int i = 0; i < 1; i++) { + if (mSpotMic[i].isOn()) { + audible->field_0x64[i] = mSpotMic[i].calcMicDist(audible); + } + } + + return audible; } /* 802BD4D4-802BD510 2B7E14 003C+00 1/0 0/0 0/0 .text deleteAudible__10Z2AudienceFP10JAIAudible */ -void Z2Audience::deleteAudible(JAIAudible* param_0) { - delete param_0; +void Z2Audience::deleteAudible(JAIAudible* audible) { + delete audible; } /* 802BD510-802BD5B8 2B7E50 00A8+00 1/0 0/0 0/0 .text __dt__9Z2AudibleFv */ -Z2Audible::~Z2Audible() { -} +Z2Audible::~Z2Audible() {} /* 802BD5B8-802BD704 2B7EF8 014C+00 1/0 0/0 0/0 .text calcPriority__10Z2AudienceFP10JAIAudible */ -u32 Z2Audience::calcPriority(JAIAudible* param_0) { - Z2Audible* z2Audible = (Z2Audible*)param_0; - if (!z2Audible->getAudibleParam()->field_0x0.bytes.b0_4) { - for (int i = 0; i < mMaxChannels; i++) { - mAudioCamera[i].convertAbsToRel(z2Audible, i); +u32 Z2Audience::calcPriority(JAIAudible* audible) { + Z2Audible* Z2audible = (Z2Audible*)audible; + + if (!Z2audible->getAudibleParam()->field_0x0.bytes.b0_4) { + for (int i = 0; i < mNumPlayers; i++) { + mAudioCamera[i].convertAbsToRel(Z2audible, i); } return 0; } u32 deltaPriority[1]; - u32 rv = 0xffffffff; - for (int i = 0; i < mMaxChannels; i++) { - Z2AudibleChannel* iVar4 = (z2Audible)->getChannel(i); - if (iVar4 != NULL) { - mAudioCamera[i].convertAbsToRel(z2Audible, i); - u32 distvolBit = z2Audible->getDistVolBit(); - const JAUAudibleParam* puVar1 = z2Audible->getAudibleParam(); - deltaPriority[i] = calcDeltaPriority_(iVar4->field_0x14.field_0x10, distvolBit, puVar1->field_0x0.bytes.b0_7); + u32 rv = 0xFFFFFFFF; + for (int i = 0; i < mNumPlayers; i++) { + Z2AudibleChannel* channel = (Z2audible)->getChannel(i); + if (channel != NULL) { + mAudioCamera[i].convertAbsToRel(Z2audible, i); + u32 distvolBit = Z2audible->getDistVolBit(); + const JAUAudibleParam* puVar1 = Z2audible->getAudibleParam(); + deltaPriority[i] = calcDeltaPriority_(channel->field_0x14.field_0x10, distvolBit, puVar1->field_0x0.bytes.b0_7); if (deltaPriority[i] < rv) { rv = deltaPriority[i]; } } } + for (int i = 0; i < 1; i++) { if (mSpotMic[i].isOn()) { - z2Audible->field_0x64[i] = mSpotMic[i].calcMicDist(z2Audible); - u32 micPriority = mSpotMic[i].calcMicPriority(z2Audible->field_0x64[i]); + Z2audible->field_0x64[i] = mSpotMic[i].calcMicDist(Z2audible); + u32 micPriority = mSpotMic[i].calcMicPriority(Z2audible->field_0x64[i]); if (micPriority < rv) { rv = micPriority; } @@ -613,63 +651,63 @@ f32 Z2Audience::calcOffMicSound(f32 param_0) { /* 802BD71C-802BD90C 2B805C 01F0+00 1/0 0/0 0/0 .text * mixChannelOut__10Z2AudienceFRC14JASSoundParamsP10JAIAudiblei */ -void Z2Audience::mixChannelOut(JASSoundParams const& param_0, JAIAudible* param_1, - int param_2) { - Z2Audible* z2Audible = (Z2Audible*)param_1; - Z2AudibleChannel* pZVar5 = z2Audible->getChannel(param_2); - if (pZVar5 == NULL) { +void Z2Audience::mixChannelOut(const JASSoundParams& outParams, JAIAudible* audible, int channelNum) { + Z2Audible* Z2audible = (Z2Audible*)audible; + Z2AudibleChannel* channel = Z2audible->getChannel(channelNum); + if (channel == NULL) { return; } JASSoundParams local_60; - u32 iVar6 = z2Audible->getDistVolBit(); - if (z2Audible->getAudibleParam()->field_0x0.bytes.b0_5) { - local_60.mVolume = calcVolume_(pZVar5->field_0x14.field_0x10, iVar6); - f32 dVar9 = mLinkMic->calcMicVolume(z2Audible->field_0x64[0], param_2, local_60.mVolume); + u32 distVolBit = Z2audible->getDistVolBit(); + if (Z2audible->getAudibleParam()->field_0x0.bytes.b0_5) { + local_60.mVolume = calcVolume_(channel->field_0x14.field_0x10, distVolBit); + f32 dVar9 = mLinkMic->calcMicVolume(Z2audible->field_0x64[0], channelNum, local_60.mVolume); if (dVar9 < 0.0f) { dVar9 = calcOffMicSound(local_60.mVolume); } local_60.mVolume = dVar9; - JAUAudibleParam* puVar7 = z2Audible->getAudibleParam(); - if ((puVar7->field_0x0.bytes.b1_2_7 & 8) && (local_60.mVolume <= 0.2f)) { + + JAUAudibleParam* params = Z2audible->getAudibleParam(); + if ((params->field_0x0.bytes.b1_2_7 & 8) && (local_60.mVolume <= 0.2f)) { local_60.mVolume = 0.2f; } } else { local_60.mVolume = 1.0f; } - if (z2Audible->getAudibleParam()->field_0x0.bytes.b1_1 && mMaxChannels == 1) { - local_60.mDolby = calcRelPosDolby(*(Vec*)&pZVar5->field_0x14.field_0x00, param_2); + if (Z2audible->getAudibleParam()->field_0x0.bytes.b1_1 && mNumPlayers == 1) { + local_60.mDolby = calcRelPosDolby(*(Vec*)&channel->field_0x14.field_0x00, channelNum); } else { local_60.mDolby = 0.5f; } - if (z2Audible->getAudibleParam()->field_0x0.bytes.b1_0) { - if (mMaxChannels > 2) { + if (Z2audible->getAudibleParam()->field_0x0.bytes.b1_0) { + if (mNumPlayers > 2) { f32 fVar1; - if (param_2 & 1) { + if (channelNum & 1) { fVar1 = 1.0f; } else { fVar1 = 0.0f; } local_60.mPan = fVar1; } else { - local_60.mPan = calcRelPosPan(*(Vec*)&pZVar5->field_0x14.field_0x00, param_2); + local_60.mPan = calcRelPosPan(*(Vec*)&channel->field_0x14.field_0x00, channelNum); } } else { local_60.mPan = 0.5f; } - local_60.mPitch = calcPitch_(pZVar5, z2Audible, &mAudioCamera[param_2]); + local_60.mPitch = calcPitch_(channel, Z2audible, &mAudioCamera[channelNum]); f32 dVar9; - if (z2Audible->getAudibleParam()->field_0x0.bytes.b0_6) { - dVar9 = calcFxMix_(pZVar5->field_0x14.field_0xC, iVar6); + if (Z2audible->getAudibleParam()->field_0x0.bytes.b0_6) { + dVar9 = calcFxMix_(channel->field_0x14.field_0xC, distVolBit); } else { dVar9 = 0.0f; } local_60.mFxMix = dVar9; local_60.clamp(); - z2Audible->setOuterParams(param_0, local_60, param_2); + Z2audible->setOuterParams(outParams, local_60, channelNum); } @@ -678,38 +716,41 @@ void Z2Audience::setTargetVolume(f32 volume, int index) { mAudioCamera[index].setTargetVolume(volume); } - /* 802BD92C-802BD95C 2B826C 0030+00 0/0 4/4 0/0 .text convertAbsToRel__10Z2AudienceFR3VecP3Veci */ -bool Z2Audience::convertAbsToRel(Vec& param_0, Vec* param_1, int param_2) { - return mAudioCamera[param_2].convertAbsToRel(param_0, param_1); +bool Z2Audience::convertAbsToRel(Vec& src, Vec* dst, int camID) { + JUT_ASSERT(1036, camID >= 0); + JUT_ASSERT(1037, camID < mNumPlayers); + return getAudioCamera(camID)->convertAbsToRel(src, dst); } /* 802BD95C-802BDA44 2B829C 00E8+00 0/0 3/3 0/0 .text calcRelPosVolume__10Z2AudienceFRC3Vecfi */ -f32 Z2Audience::calcRelPosVolume(Vec const& param_0, f32 param_1, int param_2) { - JGeometry::TVec3 aTStack_3c; - JGeometry::setTVec3f(param_0, *(Vec*)&aTStack_3c); - aTStack_3c.z += mAudioCamera[param_2].getVolCenterZ(); +f32 Z2Audience::calcRelPosVolume(const Vec& param_0, f32 param_1, int camID) { + JGeometry::TVec3 aTStack_3c(param_0); + aTStack_3c.z += mAudioCamera[camID].getVolCenterZ(); aTStack_3c.y *= 1.5f; - f32 this_00 = aTStack_3c.length(); - if (this_00 > mSetting.field_0x0[0] * param_1) { + + f32 len = aTStack_3c.length(); + if (len > mSetting.field_0x0[0] * param_1) { return mSetting.field_0x40; } - if (this_00 < mSetting.field_0x3c) { + if (len < mSetting.field_0x3c) { return 1.0f; } + return JGeometry::TUtil::clamp( 1.0f + ((mSetting.field_0x40 - 1.0f) / ((mSetting.field_0x0[0] * param_1) - mSetting.field_0x3c)) * - (this_00 - mSetting.field_0x3c), + (len - mSetting.field_0x3c), 0.0f, 1.0f); } /* 802BDA44-802BDB44 2B8384 0100+00 1/1 3/3 0/0 .text calcRelPosPan__10Z2AudienceFRC3Veci */ -f32 Z2Audience::calcRelPosPan(Vec const& param_0, int param_1) { +f32 Z2Audience::calcRelPosPan(const Vec& param_0, int camID) { Vec local_54 = param_0; local_54.y = 0.0f; + f32 dVar6 = VECMag(&local_54); if (dVar6 < 0.1f) { return 0.5f; @@ -717,17 +758,18 @@ f32 Z2Audience::calcRelPosPan(Vec const& param_0, int param_1) { dVar6 = (0.5f + mSetting.field_0x58 * (local_54.x / dVar6)); if (local_54.z <= 0.0f) { - f32 dVar7 = mAudioCamera[param_1].getFovySin(); + f32 fovySin = mAudioCamera[camID].getFovySin(); if (dVar6 < 0.5f) { dVar6 = Z2Calc::getParamByExp( dVar6, 0.0f, 0.5f, - dVar7, 0.0f, 0.5f, Z2Calc::CURVE_SIGN_1); + fovySin, 0.0f, 0.5f, Z2Calc::CURVE_POSITIVE); } else { dVar6 = Z2Calc::getParamByExp( dVar6, 0.5f, 1.0f, - dVar7, 0.5f, 1.0f, Z2Calc::CURVE_SIGN_0); + fovySin, 0.5f, 1.0f, Z2Calc::CURVE_NEGATIVE); } } + if (dVar6 > 1.0f) { return 1.0f; } @@ -735,33 +777,37 @@ f32 Z2Audience::calcRelPosPan(Vec const& param_0, int param_1) { if (dVar6 < 0.0f) { return 0.0f; } + return dVar6; } /* 802BDB44-802BDBDC 2B8484 0098+00 1/1 3/3 0/0 .text calcRelPosDolby__10Z2AudienceFRC3Veci */ -f32 Z2Audience::calcRelPosDolby(Vec const& param_0, int param_1) { - f32 fVar1 = param_0.z + mAudioCamera[param_1].getDolbyCenterZ(); +f32 Z2Audience::calcRelPosDolby(const Vec& param_0, int camID) { + f32 fVar1 = param_0.z + mAudioCamera[camID].getDolbyCenterZ(); if (fVar1 > mSetting.field_0x48) { return 1.0f; } + if (fVar1 < mSetting.field_0x44) { return 0.0f; } + if (fVar1 < 0.0f) { return Z2Calc::getParamByExp( fVar1, mSetting.field_0x44, 0.0f, 0.3f, 0.0f, - mSetting.field_0x4c, Z2Calc::CURVE_SIGN_1); + mSetting.field_0x4c, Z2Calc::CURVE_POSITIVE); } + return Z2Calc::getParamByExp( fVar1, 0.0f, mSetting.field_0x48, 0.3f, mSetting.field_0x4c, - 1.0f, Z2Calc::CURVE_SIGN_0); + 1.0f, Z2Calc::CURVE_NEGATIVE); } /* 802BDBDC-802BDC44 2B851C 0068+00 1/1 0/0 0/0 .text calcVolume___10Z2AudienceCFfi */ -f32 Z2Audience::calcVolume_(f32 param_0, int param_1) const { - if (param_0 > mSetting.field_0x0[param_1]) { +f32 Z2Audience::calcVolume_(f32 param_0, int distVolBit) const { + if (param_0 > mSetting.field_0x0[distVolBit]) { return mSetting.field_0x40; } @@ -769,20 +815,12 @@ f32 Z2Audience::calcVolume_(f32 param_0, int param_1) const { return 1.0f; } - f32 volume = 1.0f + mSetting.field_0x70[param_1] * (param_0 - mSetting.field_0x3c); - if (volume < 0.0f) { - return 0.0f; - } - - if (volume > 1.0f) { - return 1.0f; - } - return volume; + return JGeometry::TUtil::clamp((mSetting.field_0x70[distVolBit] * (param_0 - mSetting.field_0x3c)) + 1.0f, 0.0f, 1.0f); } /* 802BDC44-802BDCB0 2B8584 006C+00 2/2 0/0 0/0 .text calcDeltaPriority___10Z2AudienceCFfib */ -u32 Z2Audience::calcDeltaPriority_(f32 param_0, int param_1, bool param_2) const { - if (param_0 > mSetting.field_0x0[param_1]) { +u32 Z2Audience::calcDeltaPriority_(f32 param_0, int distVolBit, bool param_2) const { + if (param_0 > mSetting.field_0x0[distVolBit]) { if (param_2) { return -1; } @@ -793,83 +831,66 @@ u32 Z2Audience::calcDeltaPriority_(f32 param_0, int param_1, bool param_2) const return 0; } - return mSetting.field_0xac[param_1] * (param_0 - mSetting.field_0x3c); + return mSetting.field_0xac[distVolBit] * (param_0 - mSetting.field_0x3c); } /* 802BDCB0-802BDD00 2B85F0 0050+00 1/1 0/0 0/0 .text * calcPitchDoppler___10Z2AudienceCFRCQ29JGeometry8TVec3RCQ29JGeometry8TVec3RCQ29JGeometry8TVec3f */ -f32 Z2Audience::calcPitchDoppler_(JGeometry::TVec3 const& param_0, - JGeometry::TVec3 const& param_1, - JGeometry::TVec3 const& param_2, f32 param_3) const { +f32 Z2Audience::calcPitchDoppler_(const JGeometry::TVec3& param_0, + const JGeometry::TVec3& param_1, + const JGeometry::TVec3& param_2, f32 param_3) const { f32 dVar8 = param_0.dot(param_1); f32 dVar7 = param_0.dot(param_2); return (mSetting.field_0x5c + param_3 * dVar8) / (mSetting.field_0x5c + param_3 * dVar7); } /* 802BDD00-802BDD48 2B8640 0048+00 1/1 0/0 0/0 .text calcFxMix___10Z2AudienceCFfi */ -f32 Z2Audience::calcFxMix_(f32 param_0, int param_1) const { - if (param_0 > mSetting.field_0x0[param_1]) { +f32 Z2Audience::calcFxMix_(f32 param_0, int distVolBit) const { + if (param_0 > mSetting.field_0x0[distVolBit]) { return mSetting.field_0x54; } if (param_0 < mSetting.field_0x3c) { return mSetting.field_0x50; } - return mSetting.field_0x50 + mSetting.field_0xe8[param_1] * (param_0 - mSetting.field_0x3c); + return mSetting.field_0x50 + mSetting.field_0xe8[distVolBit] * (param_0 - mSetting.field_0x3c); } /* 802BDD48-802BDED4 2B8688 018C+00 1/1 0/0 0/0 .text * calcPitch___10Z2AudienceCFP16Z2AudibleChannelPC9Z2AudiblePC13Z2AudioCamera */ -f32 Z2Audience::calcPitch_(Z2AudibleChannel* param_0, Z2Audible const* param_1, - Z2AudioCamera const* param_2) const { - JAUAudibleParam audParam = *param_1->getAudibleParam(); +f32 Z2Audience::calcPitch_(Z2AudibleChannel* channel, const Z2Audible* audible, const Z2AudioCamera* camera) const { + JAUAudibleParam audParam = *audible->getAudibleParam(); if ((*(u8*)&audParam.field_0x0.raw >> 4) & 0xf) { JGeometry::TVec3 aTStack_4c; - aTStack_4c.normalize(param_0->field_0x14.field_0x00); - JAUAudibleParam audParam = *param_1->getAudibleParam(); - f32 dVar7 = audParam.getDopplerPower(); - dVar7 = calcPitchDoppler_(aTStack_4c, *param_2->getVel(), *param_1->getVel(), dVar7); - if (param_0->field_0x34 > 0.0f) { - if (param_0->field_0x34 > (dVar7 * mSetting.field_0x60)) { - return param_0->field_0x34; + aTStack_4c.normalize(channel->field_0x14.field_0x00); + JAUAudibleParam audParam = *audible->getAudibleParam(); + + f32 doppler = audParam.getDopplerPower(); + doppler = calcPitchDoppler_(aTStack_4c, *camera->getVel(), *audible->getVel(), doppler); + + if (channel->field_0x34 > 0.0f) { + if (channel->field_0x34 > (doppler * mSetting.field_0x60)) { + return channel->field_0x34; } - if (dVar7 > (param_0->field_0x34 * mSetting.field_0x60)) { - return param_0->field_0x34; + if (doppler > (channel->field_0x34 * mSetting.field_0x60)) { + return channel->field_0x34; } - param_0->field_0x34 = dVar7; - return dVar7; - } - if (dVar7 > 0.0f) { - param_0->field_0x34 = dVar7; - return dVar7; + channel->field_0x34 = doppler; + return doppler; } + + if (doppler > 0.0f) { + channel->field_0x34 = doppler; + return doppler; + } + return 1.0f; } + return 1.0f; } - /* 802BDED4-802BDEDC 2B8814 0008+00 1/0 0/0 0/0 .text getMaxChannels__10Z2AudienceFv */ int Z2Audience::getMaxChannels() { - return mMaxChannels; + return mNumPlayers; } - -static void dummyMempool() { - -} - - - -// padding (???) -s8 data_80451355; -s8 data_80451356; -s8 data_80451357; - -/* ############################################################################################## */ -/* 80451358-80451360 -00001 0008+00 0/0 1/1 0/0 .sbss None */ -/* 80451358 0001+00 data_80451358 None */ -/* 80451359 0007+00 data_80451359 None */ -// extern u8 struct_80451358[8]; -// u8 struct_80451358[8]; -s8 data_80451358; -s8 data_80451359; diff --git a/src/Z2AudioLib/Z2AudioArcLoader.cpp b/src/Z2AudioLib/Z2AudioArcLoader.cpp index 6e1a38d8b9..6281f1d197 100644 --- a/src/Z2AudioLib/Z2AudioArcLoader.cpp +++ b/src/Z2AudioLib/Z2AudioArcLoader.cpp @@ -1,41 +1,81 @@ -// -// Generated By: dol2asm -// Translation Unit: Z2AudioArcLoader -// - #include "Z2AudioLib/Z2AudioArcLoader.h" #include "JSystem/JAudio2/JAUSectionHeap.h" +#include "JSystem/JAudio2/JAUSoundTable.h" #include "JSystem/JKernel/JKRArchive.h" #include "JSystem/JKernel/JKRHeap.h" #include "Z2AudioLib/Z2FxLineMgr.h" +#include "m_Do/m_Do_ext.h" /* 802A9A34-802A9A70 2A4374 003C+00 0/0 1/1 0/0 .text __ct__16Z2AudioArcLoaderFP10JAUSection */ -Z2AudioArcLoader::Z2AudioArcLoader(JAUSection* param_0) : JAUAudioArcLoader(param_0) { - /* empty function */ -} +Z2AudioArcLoader::Z2AudioArcLoader(JAUSection* section) : JAUAudioArcLoader(section) {} /* 802A9A70-802A9AC8 2A43B0 0058+00 1/0 0/0 0/0 .text readCommandMore__16Z2AudioArcLoaderFUl */ -bool Z2AudioArcLoader::readCommandMore(u32 param_0) { +bool Z2AudioArcLoader::readCommandMore(u32 command) { bool rv = false; - switch (param_0) { + u32 read = 0; + + switch (command) { case 'bfca': - readBFCA(getContent_(readU32_())); + read = readU32_(); + readBFCA(getContent_(read)); rv = true; break; } + return rv; } /* 802A9AC8-802A9B54 2A4408 008C+00 1/1 0/0 0/0 .text readBFCA__16Z2AudioArcLoaderFPCv */ -void Z2AudioArcLoader::readBFCA(void const* param_0) { +void Z2AudioArcLoader::readBFCA(const void* addr) { + JUT_ASSERT(76, addr); + JKRHeap* heap = JAUSectionHeap::getInstance()->getHeap(); - JKRArchive* archive = JKRMountArchive((void*)param_0, JKRGetCurrentHeap(), JKRArchive::MOUNT_DIRECTION_TAIL); + JUT_ASSERT(78, heap); + JUT_ASSERT(79, Z2GetFxLineMgr()); + + JKRArchive* archive = JKRMountArchive((void*)addr, JKRGetCurrentHeap(), JKRArchive::MOUNT_DIRECTION_TAIL); Z2GetFxLineMgr()->initDataArc(archive, heap); JKRUnmountArchive(archive); } /* 802A9B54-802A9B58 2A4494 0004+00 1/0 0/0 0/0 .text readBSTN__16Z2AudioArcLoaderFPCvUl */ -void Z2AudioArcLoader::readBSTN(void const* param_0, u32 param_1) { - /* empty function */ +void Z2AudioArcLoader::readBSTN(const void* addr, u32 param_1) { +#if VERSION == VERSION_SHIELD_DEBUG + JAUSectionHeap* sectionHeap = JASGlobalInstance::getInstance(); + JUT_ASSERT(97, sectionHeap); + + JUT_ASSERT(99, sectionHeap->isOpen()); + JUT_ASSERT(100, sectionHeap->isBuilding()); + JUT_ASSERT(101, addr); + + JUT_ASSERT(103, sectionHeap->getSectionHeapData().soundNameTable == 0); + + JKRHeap* heap = JKRHeap::getCurrentHeap(); + JKRHeap* gameHeap = (JKRHeap*)mDoExt_getGameHeap(); + JKRSetCurrentHeap(gameHeap); + + u8* bstnDst = (u8*)addr; + if (param_1 != 0) { + bstnDst = new (gameHeap, 4) u8[param_1]; + if (bstnDst != NULL) { + memcpy(bstnDst, addr, param_1); + } + + JUT_ASSERT(122, bstnDst); + } + + JAUSoundNameTable* soundNameTable = new (gameHeap, 0) JAUSoundNameTable(true); + JUT_ASSERT(125, soundNameTable); + + soundNameTable->init(bstnDst); + + JAUSectionHeap::TSectionHeapData& sectionHeapData = (JAUSectionHeap::TSectionHeapData&)sectionHeap->getSectionHeapData(); + sectionHeapData.soundNameTable = soundNameTable; + + JAUSection::TSectionData& sectionData = (JAUSection::TSectionData&)sectionHeap->getSectionData(); + sectionData.mBstnDst = bstnDst; + + JKRSetCurrentHeap(heap); +#endif } diff --git a/src/Z2AudioLib/Z2AudioMgr.cpp b/src/Z2AudioLib/Z2AudioMgr.cpp index 7366ea5094..15039ca082 100644 --- a/src/Z2AudioLib/Z2AudioMgr.cpp +++ b/src/Z2AudioLib/Z2AudioMgr.cpp @@ -1,8 +1,3 @@ -// -// Generated By: dol2asm -// Translation Unit: Z2AudioMgr -// - #include "Z2AudioLib/Z2AudioMgr.h" #include "JSystem/JAudio2/JASAiCtrl.h" #include "JSystem/JAudio2/JASDriverIF.h" @@ -11,13 +6,15 @@ #include "JSystem/JAudio2/JAUInitializer.h" #include "JSystem/JAudio2/JAUSectionHeap.h" #include "JSystem/JAudio2/JAUStreamAramMgr.h" +#include "JSystem/JAudio2/JAUSeqCollection.h" #include "JSystem/JKernel/JKRSolidHeap.h" #include "Z2AudioLib/Z2AudioArcLoader.h" #include "Z2AudioLib/Z2Param.h" #include "Z2AudioLib/Z2SoundHandles.h" -#include "stdio.h" -#include "stdlib.h" -#include "dolphin/os.h" + +#if PLATFORM_WII || PLATFORM_SHIELD +#include "Z2AudioLib/Z2AudioCS.h" +#endif /* 80451368-80451370 000868 0004+04 1/1 251/251 900/900 .sbss mAudioMgrPtr__10Z2AudioMgr */ @@ -32,45 +29,46 @@ Z2AudioMgr::Z2AudioMgr() : mSoundStarter(true) { /* 802CD34C-802CD7F8 2C7C8C 04AC+00 0/0 1/1 0/0 .text * init__10Z2AudioMgrFP12JKRSolidHeapUlPvP10JKRArchive */ -void Z2AudioMgr::init(JKRSolidHeap* param_0, u32 param_1, void* param_2, JKRArchive* param_3) { - JAU_JASInitializer stack_60; - stack_60.field_0x04 = param_1; - stack_60.field_0x1c = 0x8c; - stack_60.field_0x2c = 1.3f; - stack_60.field_0x30 = "Audiores/Waves/"; - stack_60.initJASystem(param_0); +// NONMATCHING JASPoolAllocObject<_> locations +void Z2AudioMgr::init(JKRSolidHeap* heap, u32 memSize, void* baaData, JKRArchive* seqArc) { + JAU_JASInitializer JASInitializer; + JASInitializer.audioMemSize_ = memSize; + JASInitializer.field_0x1c = 140; + JASInitializer.dspLevel_ = 1.3f; + JASInitializer.waveArcDir_ = "Audiores/Waves/"; + JASInitializer.initJASystem(heap); - JAU_JAIInitializer stack_90; - stack_90.field_0x0 = 0x4e; - stack_90.field_0x4 = 4; - stack_90.field_0xc = 0x30; - stack_90.initJAInterface(); + JAU_JAIInitializer JAIInitializer; + JAIInitializer.field_0x0 = 78; + JAIInitializer.field_0x4 = 4; + JAIInitializer.field_0xc = 48; + JAIInitializer.initJAInterface(); - JAISeMgr *seMgr = mSoundMgr.getSeMgr(); + JAISeMgr* seMgr = mSoundMgr.getSeMgr(); - JAISeCategoryArrangement stack_80; - stack_80.mItems[0].mMaxActiveSe = 4; - stack_80.mItems[0].mMaxInactiveSe = 2; - stack_80.mItems[1].mMaxActiveSe = 2; - stack_80.mItems[1].mMaxInactiveSe = 1; - stack_80.mItems[2].mMaxActiveSe = 6; - stack_80.mItems[2].mMaxInactiveSe = 3; - stack_80.mItems[3].mMaxActiveSe = 16; - stack_80.mItems[3].mMaxInactiveSe = 8; - stack_80.mItems[4].mMaxActiveSe = 8; - stack_80.mItems[4].mMaxInactiveSe = 4; - stack_80.mItems[5].mMaxActiveSe = 6; - stack_80.mItems[5].mMaxInactiveSe = 3; - stack_80.mItems[6].mMaxActiveSe = 6; - stack_80.mItems[6].mMaxInactiveSe = 3; - stack_80.mItems[7].mMaxActiveSe = 12; - stack_80.mItems[7].mMaxInactiveSe = 8; - stack_80.mItems[8].mMaxActiveSe = 10; - stack_80.mItems[8].mMaxInactiveSe = 5; - stack_80.mItems[9].mMaxActiveSe = 8; - stack_80.mItems[9].mMaxInactiveSe = 4; + JAISeCategoryArrangement categoryArrangement; + categoryArrangement.mItems[0].mMaxActiveSe = 4; + categoryArrangement.mItems[0].mMaxInactiveSe = 2; + categoryArrangement.mItems[1].mMaxActiveSe = 2; + categoryArrangement.mItems[1].mMaxInactiveSe = 1; + categoryArrangement.mItems[2].mMaxActiveSe = 6; + categoryArrangement.mItems[2].mMaxInactiveSe = 3; + categoryArrangement.mItems[3].mMaxActiveSe = 16; + categoryArrangement.mItems[3].mMaxInactiveSe = 8; + categoryArrangement.mItems[4].mMaxActiveSe = 8; + categoryArrangement.mItems[4].mMaxInactiveSe = 4; + categoryArrangement.mItems[5].mMaxActiveSe = 6; + categoryArrangement.mItems[5].mMaxInactiveSe = 3; + categoryArrangement.mItems[6].mMaxActiveSe = 6; + categoryArrangement.mItems[6].mMaxInactiveSe = 3; + categoryArrangement.mItems[7].mMaxActiveSe = 12; + categoryArrangement.mItems[7].mMaxInactiveSe = 8; + categoryArrangement.mItems[8].mMaxActiveSe = 10; + categoryArrangement.mItems[8].mMaxInactiveSe = 5; + categoryArrangement.mItems[9].mMaxActiveSe = 8; + categoryArrangement.mItems[9].mMaxInactiveSe = 4; + seMgr->setCategoryArrangement(categoryArrangement); - seMgr->setCategoryArrangement(stack_80); seMgr->getCategory(0)->getParams()->moveVolume(Z2Param::VOL_SE_SYSTEM_DEFAULT, 0); seMgr->getCategory(1)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_VOICE_DEFAULT, 0); seMgr->getCategory(2)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_MOTION_DEFAULT, 0); @@ -81,33 +79,48 @@ void Z2AudioMgr::init(JKRSolidHeap* param_0, u32 param_1, void* param_2, JKRArch seMgr->getCategory(7)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_DEFAULT, 0); seMgr->getCategory(8)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_DEFAULT, 0); seMgr->getCategory(9)->getParams()->moveVolume(Z2Param::VOL_SE_ATMOSPHERE_DEFAULT, 0); + seMgr->getParams()->moveVolume(1.0f, 0); JAISeqMgr* seqMgr = mSoundMgr.getSeqMgr(); seqMgr->getParams()->moveVolume(Z2Param::VOL_BGM_DEFAULT, 0); + JAIStreamMgr* streamMgr = mSoundMgr.getStreamMgr(); - JAUStreamStaticAramMgr_<1>* streamStaticAramMgr = new(param_0, 0) JAUStreamStaticAramMgr_<1>(); + JAUStreamStaticAramMgr_<1>* streamStaticAramMgr = new(heap, 0) JAUStreamStaticAramMgr_<1>(); streamStaticAramMgr->reserveAram(NULL, 0, 0x14); streamMgr->setStreamAramMgr(streamStaticAramMgr); streamMgr->getParams()->moveVolume(Z2Param::VOL_BGM_DEFAULT, 0); + JASPoolAllocObject::newMemPool(0x4e); mSoundMgr.getSeMgr()->setAudience(&mAudience); mSoundMgr.getSeqMgr()->setAudience(&mAudience); + + #if PLATFORM_WII || PLATFORM_SHIELD + Z2AudioCS::newSpkSoundMemPool(); + #endif + JASPoolAllocObject::newMemPool(0x4e); - // OSReport("[Z2AudioMgr::init]before Create Section: %d\n", param_0->getFreeSize()); + OS_REPORT("[Z2AudioMgr::init]before Create Section: %d\n", heap->getFreeSize()); JAUSectionHeap* sectionHeap = JAUNewSectionHeap(true); - sectionHeap->setSeqDataArchive(param_3); - size_t resMaxSize = JASResArcLoader::getResMaxSize(param_3); - sectionHeap->newDynamicSeqBlock(0xe00); - sectionHeap->newDynamicSeqBlock(0x17e0); + sectionHeap->setSeqDataArchive(seqArc); + size_t resMaxSize = JASResArcLoader::getResMaxSize(seqArc); + sectionHeap->newDynamicSeqBlock(0xE00); + sectionHeap->newDynamicSeqBlock(0x17E0); sectionHeap->newDynamicSeqBlock(0x5380); sectionHeap->newDynamicSeqBlock(resMaxSize); - Z2AudioArcLoader stack_a0(sectionHeap); - bool baaLoadResult = stack_a0.load(param_2); + + Z2AudioArcLoader audioArcLoader(sectionHeap); + bool baaLoadResult = audioArcLoader.load(baaData); JUT_ASSERT(252, baaLoadResult); + + #if DEBUG + seMgr->setSeqDataMgr(mDebugSys.initSeSeqDataMgr(((JAUSeqDataMgr_SeqCollection*)sectionHeap->getSeSeqDataMgr())->getResource())); + #else seMgr->setSeqDataMgr(sectionHeap->getSeSeqDataMgr()); + #endif seqMgr->setSeqDataMgr(sectionHeap->getSeqSeqDataMgr()); + if (sectionHeap->getStreamDataMgr()) { // The following is to force stack reg to be r31 in dbg: int unused; @@ -115,15 +128,21 @@ void Z2AudioMgr::init(JKRSolidHeap* param_0, u32 param_1, void* param_2, JKRArch } else { streamMgr->setStreamDataMgr(&mSoundInfo); } + sectionHeap->finishBuild(); initSe(); JASSeqParser::registerSeqCallback(seqCallback); + + #if DEBUG + mDebugSys.initSoundHioNode(); + mDebugSys.initJAW(); + #endif } /* 802CD888-802CD8B4 2C81C8 002C+00 0/0 5/5 0/0 .text setOutputMode__10Z2AudioMgrFUl */ void Z2AudioMgr::setOutputMode(u32 mode) { if (mode <= 2) { - JASDriver::setOutputMode(mode); + JAISetOutputMode(mode); } } @@ -134,11 +153,16 @@ void Z2AudioMgr::zeldaGFrameWork() { processSeFramework(); processBgmFramework(); processHeartGaugeSound(); + + #if DEBUG + mDebugSys.debugframework(); + #endif } /* 802CD904-802CD974 2C8244 0070+00 0/0 1/1 0/0 .text gframeProcess__10Z2AudioMgrFv */ void Z2AudioMgr::gframeProcess() { zeldaGFrameWork(); + if (mResettingFlag && mAudioReseter.checkDone()) { if (!field_0x519) { mSoundMgr.stopSync(); @@ -151,6 +175,8 @@ void Z2AudioMgr::gframeProcess() { /* 802CD974-802CD9CC 2C82B4 0058+00 0/0 3/3 0/0 .text resetProcess__10Z2AudioMgrFUlb */ void Z2AudioMgr::resetProcess(u32 param_0, bool param_1) { + JUT_ASSERT(413, !mResettingFlag); + mAudioReseter.start(param_0 * JASDriver::getSubFrames(), param_1); field_0x519 = param_1; mResettingFlag = true; @@ -158,6 +184,9 @@ void Z2AudioMgr::resetProcess(u32 param_0, bool param_1) { /* 802CD9CC-802CDA6C 2C830C 00A0+00 0/0 1/1 0/0 .text resetRecover__10Z2AudioMgrFv */ void Z2AudioMgr::resetRecover() { + JUT_ASSERT(427, mResettingFlag); + JUT_ASSERT(428, mAudioReseter.checkDone()); + mAudioReseter.resume(); mSoundMgr.initParams(); mResettingFlag = false; @@ -172,18 +201,26 @@ void Z2AudioMgr::resetRecover() { /* 802CDA6C-802CDB1C 2C83AC 00B0+00 0/0 2/2 0/0 .text hasReset__10Z2AudioMgrCFv */ bool Z2AudioMgr::hasReset() const { - return mResettingFlag && mAudioReseter.checkDone() - && (field_0x519 - || (mSoundMgr.getSeMgr()->getNumActiveSe() == 0 - && mSoundMgr.getSeqMgr()->getNumActiveSeqs() == 0)); + return mResettingFlag && mAudioReseter.checkDone() && + (field_0x519 || (mSoundMgr.getSeMgr()->getNumActiveSe() == 0 && mSoundMgr.getSeqMgr()->getNumActiveSeqs() == 0)); } /* 802CDB1C-802CDB68 2C845C 004C+00 1/0 1/0 0/0 .text * startSound__10Z2AudioMgrF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3 */ -bool Z2AudioMgr::startSound(JAISoundID param_0, JAISoundHandle* param_1, - JGeometry::TVec3 const* param_2) { +bool Z2AudioMgr::startSound(JAISoundID soundID, JAISoundHandle* handle, + const JGeometry::TVec3* posPtr) { if (mResettingFlag) { return 0; } - return mSoundMgr.startSound(param_0, param_1, param_2); + + return mSoundMgr.startSound(soundID, handle, posPtr); +} + +bool Z2AudioMgr::startLevelSound(JAISoundID soundID, JAISoundHandle* handle, + const JGeometry::TVec3* posPtr) { + if (mResettingFlag) { + return 0; + } + + return mSoundMgr.startSound(soundID, handle, posPtr); } diff --git a/src/Z2AudioLib/Z2Calc.cpp b/src/Z2AudioLib/Z2Calc.cpp index eb12401057..9ba1fb58ec 100644 --- a/src/Z2AudioLib/Z2Calc.cpp +++ b/src/Z2AudioLib/Z2Calc.cpp @@ -1,138 +1,112 @@ -// -// Generated By: dol2asm -// Translation Unit: Z2Calc -// - #include "Z2AudioLib/Z2Calc.h" #include "JSystem/JMath/random.h" -#include "math.h" -#include "dol2asm.h" +#include /* 802A968C-802A96F4 2A3FCC 0068+00 1/1 16/16 0/0 .text linearTransform__6Z2CalcFfffffb */ -f32 Z2Calc::linearTransform(f32 param1, f32 param2, f32 param3, f32 param4, f32 param5, - bool param6) { - f32 temp; +f32 Z2Calc::linearTransform(f32 inValue, f32 inMin, f32 inMax, f32 outMin, f32 outMax, bool noClamp) { + f32 transformed = outMin + ((inValue - inMin) * ((outMax - outMin) / (inMax - inMin))); + if (noClamp) { + return transformed; + } - temp = param4 + (param1 - param2) * ((param5 - param4) / (param3 - param2)); - - if (param6) { - return temp; - } else if (param4 < param5) { - if (temp > param5) { - return param5; - } else if (temp < param4) { - return param4; - } else { - return temp; - } - } else if (temp > param4) { - return param4; - } else if (temp < param5) { - return param5; + if (outMin < outMax) { + return transformed > outMax ? outMax : + transformed < outMin ? outMin : + transformed; } else { - return temp; + return transformed > outMin ? outMin : + transformed < outMax ? outMax : + transformed; } } -/* ############################################################################################## */ /* 80455820-80455824 003E20 0004+00 0/0 1/1 0/0 .sdata2 cEqualCSlope__6Z2Calc */ -SECTION_SDATA2 f32 Z2Calc::cEqualCSlope = 1.0f; +const f32 Z2Calc::cEqualCSlope = 1.0f; /* 80455824-80455828 003E24 0004+00 0/0 1/1 0/0 .sdata2 cEqualPSlope__6Z2Calc */ -SECTION_SDATA2 f32 Z2Calc::cEqualPSlope = 0.5f; +const f32 Z2Calc::cEqualPSlope = 0.5f; /* 802A96F4-802A9814 2A4034 0120+00 0/0 29/29 0/0 .text * getParamByExp__6Z2CalcFffffffQ26Z2Calc9CurveSign */ -f32 Z2Calc::getParamByExp(f32 f1, f32 f2, f32 f3, f32 f4, f32 f5, f32 f6, Z2Calc::CurveSign sign) { - f32 out; - if (sign == Z2Calc::CURVE_SIGN_1) { - f32 tmp = exp(Z2Calc::linearTransform(f1, f2, f3, 0.0f, f4, true)); - out = Z2Calc::linearTransform(tmp, 1.0f, exp(f4), f5, f6, true); - } else if (sign == Z2Calc::CURVE_SIGN_0) { - f32 tmp = exp(Z2Calc::linearTransform(f1, f2, f3, f4, 0.0f, true)); - out = Z2Calc::linearTransform(tmp, exp(f4), 1.0f, f5, f6, true); +f32 Z2Calc::getParamByExp(f32 value, f32 inMin, f32 inMax, f32 exponent, f32 outMin, f32 outMax, Z2Calc::CurveSign curveSign) { + if (curveSign == Z2Calc::CURVE_POSITIVE) { + value = linearTransform(value, inMin, inMax, 0.0f, exponent, true); + value = expf(value); + value = linearTransform(value, 1.0f, expf(exponent), outMin, outMax, true); + } else if (curveSign == Z2Calc::CURVE_NEGATIVE) { + value = linearTransform(value, inMin, inMax, exponent, 0.0f, true); + value = expf(value); + value = linearTransform(value, expf(exponent), 1.0f, outMin, outMax, true); } else { - out = Z2Calc::linearTransform(f1, f2, f3, f5, f6, false); + value = linearTransform(value, inMin, inMax, outMin, outMax, false); } - if (out > f6) { - return f6; - } - if (out < f5) { - return f5; - } - return out; + + return value > outMax ? outMax : + value < outMin ? outMin : + value; } /* 802A9814-802A98D4 2A4154 00C0+00 0/0 2/2 0/0 .text getRandom__6Z2CalcFfff */ -f32 Z2Calc::getRandom(f32 f1, f32 f2, f32 f3) { - f32 tmp = 2.0f * f3; - f32 tmp2 = (1.0f - f3) * -2.0f; - f1 *= Z2Calc::getRandom_0_1() < f3 ? tmp : tmp2; - f32 tmp3 = pow(Z2Calc::getRandom_0_1(), f2); - return tmp3 * f1; +f32 Z2Calc::getRandom(f32 magnitude, f32 exponent, f32 bias) { + f32 posBias = 2.0f * bias; + f32 negBias = (1.0f - bias) * -2.0f; + magnitude *= Z2Calc::getRandom_0_1() < bias ? posBias : negBias; + + f32 exprnd = pow(Z2Calc::getRandom_0_1(), exponent); + return exprnd * magnitude; } /* 802A98D4-802A9944 2A4214 0070+00 1/1 1/1 0/0 .text getRandom_0_1__6Z2CalcFv */ -f32 Z2Calc::getRandom_0_1(void) { - static JMath::TRandom_fast_ oRandom(0); +f32 Z2Calc::getRandom_0_1() { + static JMath::TRandom_ oRandom(0); return oRandom.get_ufloat_1(); } /* 802A9944-802A9958 2A4284 0014+00 0/0 1/1 0/0 .text setParam__Q26Z2Calc8FNoise1fFfff */ -void Z2Calc::FNoise1f::setParam(f32 param1, f32 param2, f32 param3) { - this->unk0 = param1; - this->unk4 = param1; - this->unk12 = param2; - this->unk8 = param3; +void Z2Calc::FNoise1f::setParam(f32 value, f32 threshold, f32 step) { + value_ = value; + targetValue_ = value; + threshold_ = threshold; + step_ = step; } /* 802A9958-802A99A0 2A4298 0048+00 1/1 0/0 0/0 .text tau__Q26Z2Calc8FNoise1fFf */ -f32 Z2Calc::FNoise1f::tau(f32 param1) { - f32 temp1; - f32 temp2; +f32 Z2Calc::FNoise1f::tau(f32 input) { + f32 var_f30 = 1.0f; - temp1 = param1; - temp2 = temp1 + (temp1 * temp1); - - if (temp2 > 1.0f) { - temp2 = temp2 - 1.0f; - - if (temp1 < this->unk12) { - temp2 = temp2 + this->unk12; + f32 result = input + (input * input); + if (result > var_f30) { + result = result - var_f30; + if (input < threshold_) { + result += threshold_; } - - return temp2; - } else if (temp1 < this->unk12) { - temp2 = temp2 + this->unk12; + return result; } - return temp2; + + if (input < threshold_) { + result += threshold_; + } + + return result; } /* 802A99A0-802A9A34 2A42E0 0094+00 0/0 5/5 0/0 .text calcNoise1f__Q26Z2Calc8FNoise1fFv */ -f32 Z2Calc::FNoise1f::calcNoise1f(void) { - f32 temp1; - f32 temp2; - - temp1 = this->unk0; - - if (this->unk0 < this->unk4) { - this->unk0 = temp1 + this->unk8; - - if (this->unk0 < this->unk4) { - return this->unk0; +f32 Z2Calc::FNoise1f::calcNoise1f() { + if (value_ < targetValue_) { + value_ += step_; + if (value_ < targetValue_) { + return value_; } } else { - this->unk0 = temp1 - this->unk8; - - if (this->unk0 > this->unk4) { - return this->unk0; + value_ -= step_; + if (value_ > targetValue_) { + return value_; } } - this->unk0 = this->unk4; - temp2 = tau(this->unk0); - this->unk4 = temp2; - return this->unk0; + value_ = targetValue_; + targetValue_ = tau(value_); + return value_; } diff --git a/src/Z2AudioLib/Z2Creature.cpp b/src/Z2AudioLib/Z2Creature.cpp index d5f057b102..fb7023503f 100644 --- a/src/Z2AudioLib/Z2Creature.cpp +++ b/src/Z2AudioLib/Z2Creature.cpp @@ -1,10 +1,4 @@ -/** - * Z2Creature.cpp - * Z2AudioLib - Creatures - */ - #include "Z2AudioLib/Z2Creature.h" -#include "SSystem/SComponent/c_xyz.h" #include "Z2AudioLib/Z2Param.h" #include "Z2AudioLib/Z2Calc.h" #include "Z2AudioLib/Z2AudioMgr.h" @@ -117,50 +111,52 @@ Z2Creature::~Z2Creature() { /* 802C04E8-802C0530 2BAE28 0048+00 4/2 2/2 0/0 .text deleteObject__10Z2CreatureFv */ void Z2Creature::deleteObject() { - mSoundObjAnime.mpAnimation = NULL; + mSoundObjAnime.stopAnime(); mSoundObjAnime.deleteObject(); mSoundObjSimple1.deleteObject(); mSoundObjSimple2.deleteObject(); } /* 802C0530-802C05B0 2BAE70 0080+00 5/5 1/1 125/125 .text init__10Z2CreatureFP3VecP3VecUcUc */ -void Z2Creature::init(Vec* param_0, Vec* param_1, u8 param_2, u8 param_3) { - if (param_0) { - mSoundObjAnime.init(param_0, param_2); - mpPos = param_0; +void Z2Creature::init(Vec* animePosPtr, Vec* simplePosPtr, u8 animeHandleNum, u8 simpleHandleNum) { + if (animePosPtr) { + mSoundObjAnime.init(animePosPtr, animeHandleNum); + mpPos = animePosPtr; } - if (param_1) { - mSoundObjSimple1.init(param_1, param_3); + + if (simplePosPtr) { + mSoundObjSimple1.init(simplePosPtr, simpleHandleNum); } } /* 802C05B0-802C0618 2BAEF0 0068+00 2/2 1/1 0/0 .text init__10Z2CreatureFP3VecP3VecP3VecUcUcUc */ -void Z2Creature::init(Vec* param_0, Vec* param_1, Vec* param_2, u8 param_3, u8 param_4, - u8 param_5) { - init(param_0, param_1, param_3, param_4); - if (param_2) { - mSoundObjSimple2.init(param_2, param_5); +void Z2Creature::init(Vec* animePosPtr, Vec* simplePosPtr, Vec* simple2PosPtr, u8 animeHandleNum, u8 simpleHandleNum, + u8 simple2HandleNum) { + init(animePosPtr, simplePosPtr, animeHandleNum, simpleHandleNum); + + if (simple2PosPtr) { + mSoundObjSimple2.init(simple2PosPtr, simple2HandleNum); } } /* 802C0618-802C0628 2BAF58 0010+00 7/0 2/0 0/0 .text * setSoundStarter__10Z2CreatureFP14Z2SoundStarter */ -void Z2Creature::setSoundStarter(Z2SoundStarter* i_starter) { - mSoundObjAnime.setSoundStarter(i_starter); - mSoundObjSimple1.setSoundStarter(i_starter); - mSoundObjSimple2.setSoundStarter(i_starter); +void Z2Creature::setSoundStarter(Z2SoundStarter* soundStarter) { + mSoundObjAnime.setSoundStarter(soundStarter); + mSoundObjSimple1.setSoundStarter(soundStarter); + mSoundObjSimple2.setSoundStarter(soundStarter); } /* 802C0628-802C064C 2BAF68 0024+00 0/0 4/4 2/2 .text initAnime__10Z2CreatureFPvbff */ -void Z2Creature::initAnime(void* param_0, bool param_1, f32 param_2, f32 param_3) { - mSoundObjAnime.initAnime(param_0, param_1, param_2, param_3); +void Z2Creature::initAnime(void* animation, bool param_1, f32 startFrame, f32 param_3) { + mSoundObjAnime.initAnime(animation, param_1, startFrame, param_3); } /* 802C064C-802C06D0 2BAF8C 0084+00 7/3 2/1 0/0 .text framework__10Z2CreatureFUlSc */ -void Z2Creature::framework(u32 param_0, s8 param_1) { - mSoundObjAnime.framework(param_0, param_1); - mSoundObjSimple1.framework(param_0, param_1); - mSoundObjSimple2.framework(param_0, param_1); +void Z2Creature::framework(u32 mapinfo, s8 reverb) { + mSoundObjAnime.framework(mapinfo, reverb); + mSoundObjSimple1.framework(mapinfo, reverb); + mSoundObjSimple2.framework(mapinfo, reverb); } /* 802C06D0-802C06F4 2BB010 0024+00 0/0 3/3 2/2 .text updateAnime__10Z2CreatureFff */ @@ -175,115 +171,118 @@ void Z2Creature::stopAnime() { /* 802C0720-802C087C 2BB060 015C+00 4/0 2/0 0/0 .text * startCreatureSound__10Z2CreatureF10JAISoundIDUlSc */ -Z2SoundHandlePool* Z2Creature::startCreatureSound(JAISoundID i_soundID, u32 param_1, s8 param_2) { - switch (i_soundID) { - case Z2SE_KOSARU_V_KAGO_WAIT: - return mSoundObjSimple1.startSound(i_soundID, param_1, 0); - default: - Z2SoundHandlePool* handle = mSoundObjAnime.startSound(i_soundID, param_1, param_2); - 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, - 0.8f, 1.2f, Z2Calc::CURVE_SIGN_0); - f32 volume = Z2Calc::getParamByExp((f32)param_1, 30.0f, 100.0f, 0.3f, - 0.5f, 1.0f, Z2Calc::CURVE_SIGN_0); - (*handle)->getAuxiliary().moveVolume(volume, 0); - (*handle)->getAuxiliary().movePitch(pitch, 0); - } +Z2SoundHandlePool* Z2Creature::startCreatureSound(JAISoundID soundID, u32 mapinfo, s8 reverb) { + switch (soundID) { + case Z2SE_KOSARU_V_KAGO_WAIT: + return mSoundObjSimple1.startSound(soundID, mapinfo, 0); + default: + Z2SoundHandlePool* handle = mSoundObjAnime.startSound(soundID, mapinfo, reverb); + if (handle != NULL && *handle) { + switch (soundID) { + case Z2SE_FAIRY_S_FLY: + f32 pitch = Z2Calc::getParamByExp((f32)mapinfo, 30.0f, 100.0f, 0.3f, + 0.8f, 1.2f, Z2Calc::CURVE_NEGATIVE); + f32 volume = Z2Calc::getParamByExp((f32)mapinfo, 30.0f, 100.0f, 0.3f, + 0.5f, 1.0f, Z2Calc::CURVE_NEGATIVE); + (*handle)->getAuxiliary().moveVolume(volume, 0); + (*handle)->getAuxiliary().movePitch(pitch, 0); } - return handle; + } + return handle; } } /* 802C087C-802C0A4C 2BB1BC 01D0+00 4/0 2/0 0/0 .text * startCreatureSoundLevel__10Z2CreatureF10JAISoundIDUlSc */ -Z2SoundHandlePool* Z2Creature::startCreatureSoundLevel(JAISoundID i_soundID, u32 param_1, s8 param_2) { - switch (i_soundID) { - 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) { - if (i_soundID == Z2SE_YM_SNOBO_RIDE || i_soundID == Z2SE_YW_SNOBO_RIDE) { - f32 volume = 0.0f; - if (param_1 != 0) { - volume = Z2Calc::getParamByExp((f32)param_1, 0.0f, 92.0f, 0.25f, - 0.4f, 1.0f, Z2Calc::CURVE_SIGN_0); - } - f32 pitch = Z2Calc::getParamByExp((f32)param_1, 0.0f, 92.0f, 0.3f, - 0.5f, 1.2f, Z2Calc::CURVE_SIGN_0); - - (*handle)->getAuxiliary().moveVolume(volume, 0); - (*handle)->getAuxiliary().movePitch(pitch, 0); - } else if (i_soundID == Z2SE_ZRZ_MV) { - (*handle)->getAuxiliary().moveVolume((f32)param_1 / 100.0f, 0); +Z2SoundHandlePool* Z2Creature::startCreatureSoundLevel(JAISoundID soundID, u32 mapinfo, s8 reverb) { + switch (soundID) { + case Z2SE_FAIRY_S_LV: + Z2GetAudioMgr()->seStartLevel(soundID, mpPos, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + return NULL; + default: + Z2SoundHandlePool* handle = mSoundObjAnime.startLevelSound(soundID, mapinfo, reverb); + if (handle != NULL && *handle) { + if (soundID == Z2SE_YM_SNOBO_RIDE || soundID == Z2SE_YW_SNOBO_RIDE) { + f32 volume = 0.0f; + if (mapinfo != 0) { + volume = Z2Calc::getParamByExp((f32)mapinfo, 0.0f, 92.0f, 0.25f, + 0.4f, 1.0f, Z2Calc::CURVE_NEGATIVE); } + f32 pitch = Z2Calc::getParamByExp((f32)mapinfo, 0.0f, 92.0f, 0.3f, + 0.5f, 1.2f, Z2Calc::CURVE_NEGATIVE); + + (*handle)->getAuxiliary().moveVolume(volume, 0); + (*handle)->getAuxiliary().movePitch(pitch, 0); + } else if (soundID == Z2SE_ZRZ_MV) { + f32 volume = (f32)mapinfo / 100.0f; + (*handle)->getAuxiliary().moveVolume(volume, 0); } - return handle; + } + return handle; } } /* 802C0A4C-802C0AF8 2BB38C 00AC+00 4/1 2/0 0/0 .text * startCreatureVoice__10Z2CreatureF10JAISoundIDSc */ -Z2SoundHandlePool* Z2Creature::startCreatureVoice(JAISoundID i_soundID, s8 param_1) { - switch (i_soundID) { - case Z2SE_MDN_V_FLY_OUT: - case Z2SE_MDN_V_MGN_TAME: - case Z2SE_MDN_V_CLINGST: - case Z2SE_MDN_V_LV_PANIC: - case Z2SE_MDN_V_HIT: - case Z2SE_MDN_V_LOOKABOUT_1: - case Z2SE_MDN_V_WLSWIMDIE: - case Z2SE_MDN_V_WAITD: - case Z2SE_MDN_V_SWAITA: - case Z2SE_MDN_V_SWAITB_1: - case Z2SE_MDN_V_SWAITB_3: - case Z2SE_MDN_V_SWAITC: - case Z2SE_MDN_V_SWAITD: - case Z2SE_MDN_V_LEADSWAIT: - case Z2SE_MDN_V_HIP: - case Z2SE_MDN_V_WLDIEA: - case Z2SE_MDN_V_ENTRANCE: - case Z2SE_MDN_V_DOOROP: - case Z2SE_MDN_V_ROPEWAIT_1: - case Z2SE_MDN_V_ROPEWAIT_2: - case Z2SE_MDN_V_ROPEFALTER: - case Z2SE_MDN_V_WAITTP: - if (Z2GetSpeechMgr2()->isMidnaSpeak()) { - return NULL; - } +Z2SoundHandlePool* Z2Creature::startCreatureVoice(JAISoundID soundID, s8 reverb) { + switch (soundID) { + case Z2SE_MDN_V_FLY_OUT: + case Z2SE_MDN_V_MGN_TAME: + case Z2SE_MDN_V_CLINGST: + case Z2SE_MDN_V_LV_PANIC: + case Z2SE_MDN_V_HIT: + case Z2SE_MDN_V_LOOKABOUT_1: + case Z2SE_MDN_V_WLSWIMDIE: + case Z2SE_MDN_V_WAITD: + case Z2SE_MDN_V_SWAITA: + case Z2SE_MDN_V_SWAITB_1: + case Z2SE_MDN_V_SWAITB_3: + case Z2SE_MDN_V_SWAITC: + case Z2SE_MDN_V_SWAITD: + case Z2SE_MDN_V_LEADSWAIT: + case Z2SE_MDN_V_HIP: + case Z2SE_MDN_V_WLDIEA: + case Z2SE_MDN_V_ENTRANCE: + case Z2SE_MDN_V_DOOROP: + case Z2SE_MDN_V_ROPEWAIT_1: + case Z2SE_MDN_V_ROPEWAIT_2: + case Z2SE_MDN_V_ROPEFALTER: + case Z2SE_MDN_V_WAITTP: + if (Z2GetSpeechMgr2()->isMidnaSpeak()) { + return NULL; + } } - return mSoundObjSimple1.startSound(i_soundID, 0, param_1); + + return mSoundObjSimple1.startSound(soundID, 0, reverb); } /* 802C0AF8-802C0B70 2BB438 0078+00 3/0 2/0 0/0 .text * startCreatureVoiceLevel__10Z2CreatureF10JAISoundIDSc */ -Z2SoundHandlePool* Z2Creature::startCreatureVoiceLevel(JAISoundID i_soundID, s8 param_1) { - if (i_soundID == Z2SE_MDN_V_WAITD) { +Z2SoundHandlePool* Z2Creature::startCreatureVoiceLevel(JAISoundID soundID, s8 reverb) { + if (soundID == Z2SE_MDN_V_WAITD) { if (Z2GetStatusMgr()->getDemoStatus() == 2 || !Z2GetSceneMgr()->isInGame()) { return NULL; } } - return mSoundObjSimple1.startLevelSound((u32)i_soundID, 0, param_1); + + return mSoundObjSimple1.startLevelSound((u32)soundID, 0, reverb); } /* 802C0B70-802C0BAC 2BB4B0 003C+00 4/0 2/0 0/0 .text * startCreatureExtraSound__10Z2CreatureF10JAISoundIDUlSc */ -Z2SoundHandlePool* Z2Creature::startCreatureExtraSound(JAISoundID param_0, u32 param_1, s8 param_2) { - return mSoundObjSimple2.startSound(param_0, param_1, param_2); +Z2SoundHandlePool* Z2Creature::startCreatureExtraSound(JAISoundID soundID, u32 mapinfo, s8 reverb) { + return mSoundObjSimple2.startSound(soundID, mapinfo, reverb); } /* 802C0BAC-802C0BE8 2BB4EC 003C+00 4/0 2/0 0/0 .text * startCreatureExtraSoundLevel__10Z2CreatureF10JAISoundIDUlSc */ -Z2SoundHandlePool* Z2Creature::startCreatureExtraSoundLevel(JAISoundID param_0, u32 param_1, s8 param_2) { - return mSoundObjSimple2.startLevelSound(param_0, param_1, param_2); +Z2SoundHandlePool* Z2Creature::startCreatureExtraSoundLevel(JAISoundID soundID, u32 mapinfo, s8 reverb) { + return mSoundObjSimple2.startLevelSound(soundID, mapinfo, reverb); } /* 802C0BE8-802C0C10 2BB528 0028+00 4/0 2/0 0/0 .text startCollisionSE__10Z2CreatureFUlUl */ -Z2SoundHandlePool* Z2Creature::startCollisionSE(u32 param_0, u32 param_1) { - return mSoundObjAnime.startCollisionSE(param_0, param_1, NULL); +Z2SoundHandlePool* Z2Creature::startCollisionSE(u32 hitID, u32 mapinfo) { + return mSoundObjAnime.startCollisionSE(hitID, mapinfo, NULL); } /* 802C0C10-802C0C6C 2BB550 005C+00 0/0 0/0 12/12 .text __ct__17Z2CreatureCitizenFv */ @@ -292,18 +291,14 @@ Z2CreatureCitizen::Z2CreatureCitizen() : mCitizenID(-1), field_0xa1(-1), mLinkSearch(false) -{ - /* empty function */ -} +{} /* 802C0C6C-802C0CE4 2BB5AC 0078+00 0/0 0/0 12/12 .text __dt__17Z2CreatureCitizenFv */ -Z2CreatureCitizen::~Z2CreatureCitizen() { - /* empty function */ -} +Z2CreatureCitizen::~Z2CreatureCitizen() {} /* 802C0CE4-802C0D04 2BB624 0020+00 0/0 2/2 7/7 .text init__17Z2CreatureCitizenFP3VecP3VecUcUc */ -void Z2CreatureCitizen::init(Vec* param_0, Vec* param_1, u8 param_2, u8 param_3) { - Z2Creature::init(param_0, param_1, param_2, param_3); +void Z2CreatureCitizen::init(Vec* animePosPtr, Vec* simplePosPtr, u8 animeHandleNum, u8 simpleHandleNum) { + Z2Creature::init(animePosPtr, simplePosPtr, animeHandleNum, simpleHandleNum); } /* 802C0D04-802C0D48 2BB644 0044+00 1/0 0/0 0/0 .text deleteObject__17Z2CreatureCitizenFv */ @@ -311,6 +306,7 @@ void Z2CreatureCitizen::deleteObject() { if (mLinkSearch == false) { Z2GetSeMgr()->decrCrowdSize(); } + Z2Creature::deleteObject(); } @@ -320,24 +316,24 @@ void Z2CreatureCitizen::setMdlType(s8 param_0, bool param_1, bool param_2) { s8 b = param_1 ? 0x40 : 0; s8 c = param_2 ? 0x80 : 0; mCitizenID = a + c + b; + if (!param_2) { Z2GetSeMgr()->incrCrowdSize(); } + if (param_0 == 0) { field_0xa1 = data_80451358; - data_80451358 = !data_80451358; - } - else if (param_0 == 1) { + data_80451358 = !data_80451358 ? 1 : 0; + } else if (param_0 == 1) { field_0xa1 = data_80451359; - data_80451359 = !data_80451359; + data_80451359 = !data_80451359 ? 1 : 0; } } /* 802C0E18-802C0ED8 2BB758 00C0+00 0/0 0/0 21/21 .text playVoice__17Z2CreatureCitizenFi */ void Z2CreatureCitizen::playVoice(int i_sound) { - u32 tmp = mCitizenID; - u32 sound_id = Z2SE_MAN_A1_V_AWAY + 6 * tmp + i_sound; + u32 sound_id = Z2SE_MAN_A1_V_AWAY + 6 * (s8)mCitizenID + i_sound; switch (mCitizenID) { case 0: case 1: @@ -346,6 +342,7 @@ void Z2CreatureCitizen::playVoice(int i_sound) { } break; } + mSoundObjSimple1.startSound(sound_id, 0, -1); if ((i_sound == 0 || i_sound == 2) && !mLinkSearch) { Z2GetSeMgr()->decrCrowdSize(); @@ -355,8 +352,8 @@ void Z2CreatureCitizen::playVoice(int i_sound) { /* 802C0ED8-802C0F64 2BB818 008C+00 1/0 0/0 0/0 .text * startCreatureVoice__17Z2CreatureCitizenF10JAISoundIDSc */ -Z2SoundHandlePool* Z2CreatureCitizen::startCreatureVoice(JAISoundID i_soundID, s8 param_1) { - switch (i_soundID) { +Z2SoundHandlePool* Z2CreatureCitizen::startCreatureVoice(JAISoundID soundID, s8 reverb) { + switch (soundID) { case Z2SE_KIU_V_FEAR: case Z2SE_HANA_V_FEAR: case Z2SE_MICH_V_FEAR: @@ -366,7 +363,8 @@ Z2SoundHandlePool* Z2CreatureCitizen::startCreatureVoice(JAISoundID i_soundID, s } break; } - return Z2Creature::startCreatureVoice(i_soundID, -1); + + return Z2Creature::startCreatureVoice(soundID, -1); } /* 802C0F64-802C0FC4 2BB8A4 0060+00 2/2 0/0 100/100 .text __ct__15Z2CreatureEnemyFv */ @@ -376,19 +374,19 @@ Z2CreatureEnemy::Z2CreatureEnemy() : field_0xa1(1), mLinkSearch(false), field_0xa3(0) -{ - /* empty function */ -} +{} /* 802C0FC4-802C1094 2BB904 00D0+00 3/2 0/0 0/0 .text deleteObject__15Z2CreatureEnemyFv */ void Z2CreatureEnemy::deleteObject() { - if (mEnemyID == 0x2c) { - Z2GetSeqMgr()->unMuteSceneBgm(0x21); + if (mEnemyID == Z2_ENEMY_GB) { + Z2GetSeqMgr()->unMuteSceneBgm(33); } + if (getSupervisor() != NULL) { Z2GetSoundObjMgr()->removeEnemy(this); } + mSoundObjAnime.stopAnime(); mSoundObjAnime.deleteObject(); mSoundObjSimple1.deleteObject(); @@ -396,71 +394,79 @@ void Z2CreatureEnemy::deleteObject() { } /* 802C1094-802C10B4 2BB9D4 0020+00 0/0 0/0 98/98 .text init__15Z2CreatureEnemyFP3VecP3VecUcUc */ -void Z2CreatureEnemy::init(Vec* param_0, Vec* param_1, u8 param_2, u8 param_3) { - Z2Creature::init(param_0, param_1, param_2, param_3); +void Z2CreatureEnemy::init(Vec* animePosPtr, Vec* simplePosPtr, u8 animeHandleNum, u8 simpleHandleNum) { + Z2Creature::init(animePosPtr, simplePosPtr, animeHandleNum, simpleHandleNum); } /* 802C10B4-802C10D4 2BB9F4 0020+00 0/0 0/0 3/3 .text init__15Z2CreatureEnemyFP3VecP3VecP3VecUcUcUc */ -void Z2CreatureEnemy::init(Vec* param_0, Vec* param_1, Vec* param_2, u8 param_3, u8 param_4, - u8 param_5) { - Z2Creature::init(param_0, param_1, param_2, param_3, param_4, param_5); +void Z2CreatureEnemy::init(Vec* animePosPtr, Vec* simplePosPtr, Vec* simple2PosPtr, u8 animeHandleNum, u8 simpleHandleNum, + u8 simple2HandleNum) { + Z2Creature::init(animePosPtr, simplePosPtr, simple2PosPtr, animeHandleNum, simpleHandleNum, simple2HandleNum); } /* 802C10D4-802C110C 2BBA14 0038+00 1/0 0/0 0/0 .text framework__15Z2CreatureEnemyFUlSc */ -void Z2CreatureEnemy::framework(u32 param_0, s8 param_1) { +void Z2CreatureEnemy::framework(u32 mapinfo, s8 reverb) { if (field_0xa1 < 1) { - field_0xa1 += 1; + field_0xa1++; } - Z2Creature::framework(param_0, param_1); + + Z2Creature::framework(mapinfo, reverb); } /* 802C110C-802C136C 2BBA4C 0260+00 4/0 0/0 0/0 .text * startCreatureSound__15Z2CreatureEnemyF10JAISoundIDUlSc */ -Z2SoundHandlePool* Z2CreatureEnemy::startCreatureSound(JAISoundID i_soundID, u32 param_1, s8 param_2) { - Z2SoundHandlePool* handle = mSoundObjAnime.startSound(i_soundID, param_1, param_2); +Z2SoundHandlePool* Z2CreatureEnemy::startCreatureSound(JAISoundID soundID, u32 mapinfo, s8 reverb) { + Z2SoundHandlePool* handle = mSoundObjAnime.startSound(soundID, mapinfo, reverb); switch (mEnemyID) { case Z2_ENEMY_SF: - if (i_soundID == Z2SE_EN_SF_BREAK_DOWN) { + if (soundID == Z2SE_EN_SF_BREAK_DOWN) { field_0xa3 = 1; Z2GetSoundObjMgr()->getEnemyList()->remove(this); - } else if (field_0xa3 != 0 && i_soundID == Z2SE_EN_SF_BUILD_UP) { + } else if (field_0xa3 != 0 && soundID == Z2SE_EN_SF_BUILD_UP) { field_0xa3 = 0; Z2GetSoundObjMgr()->getEnemyList()->append(this); } break; case Z2_ENEMY_FZ: - if (handle != NULL && handle->isSoundAttached() && i_soundID == Z2SE_EN_FZ_BOUND) { - f32 volume = Z2Calc::linearTransform(param_1, 10.0f, 50.0f, 0.1f, 1.0f, false); - f32 pitch = Z2Calc::linearTransform(param_1, 10.0f, 50.0f, 0.8f, 1.2f, false); + if (handle != NULL && *handle && soundID == Z2SE_EN_FZ_BOUND) { + f32 volume = Z2Calc::linearTransform(mapinfo, 10.0f, 50.0f, 0.1f, 1.0f, false); + f32 pitch = Z2Calc::linearTransform(mapinfo, 10.0f, 50.0f, 0.8f, 1.2f, false); (*handle)->getAuxiliary().moveVolume(volume, 0); (*handle)->getAuxiliary().movePitch(pitch, 0); } break; - case Z2_ENEMY_MS: - Z2_E_ms_modVol(handle, mSoundObjAnime.field_0x1c); + case Z2_ENEMY_MS: { + u32 var_r24 = mSoundObjAnime.field_0x1c; + Z2_E_ms_modVol(handle, var_r24); break; + } case Z2_ENEMY_SW: - Z2_E_sw_modPitch(handle, param_1); + Z2_E_sw_modPitch(handle, mapinfo); break; - case Z2_ENEMY_MM: - Z2_E_mm_modPitch(handle, mSoundObjAnime.field_0x1c); + case Z2_ENEMY_MM: { + u32 var_r23 = mSoundObjAnime.field_0x1c; + Z2_E_mm_modPitch(handle, var_r23); break; + } case Z2_ENEMY_SM2: - if (i_soundID == Z2SE_EN_SM_HIT) { + if (soundID == Z2SE_EN_SM_HIT) { field_0xa3 = 1; - Z2GetSeqMgr()->setBattleLastHit(struct_80450869); + Z2GetSeqMgr()->setBattleLastHit(Z2Param::ENDING_BLOW_VOL_LOWER_TIME); } break; } - switch (i_soundID) { - case Z2SE_EN_ZAN_YO_LAND: - Z2_B_zan_modPitch(handle, mSoundObjAnime.field_0x1c); + switch (soundID) { + case Z2SE_EN_ZAN_YO_LAND: { + u32 var_r22 = mSoundObjAnime.field_0x1c; + Z2_B_zan_modPitch(handle, var_r22); break; + } case Z2SE_EN_ZAN_YO_FLOAT_WAIT: - if (mSoundObjAnime.field_0x1c > 100) { + u32 var_r21 = mSoundObjAnime.field_0x1c; + if (var_r21 > 100) { return NULL; } break; @@ -471,9 +477,9 @@ Z2SoundHandlePool* Z2CreatureEnemy::startCreatureSound(JAISoundID i_soundID, u32 /* 802C136C-802C168C 2BBCAC 0320+00 2/0 0/0 0/0 .text * startCreatureSoundLevel__15Z2CreatureEnemyF10JAISoundIDUlSc */ -Z2SoundHandlePool* Z2CreatureEnemy::startCreatureSoundLevel(JAISoundID i_soundID, u32 param_1, s8 param_2) { - if (i_soundID == 0x7FFFF) { - cXyz pos; +Z2SoundHandlePool* Z2CreatureEnemy::startCreatureSoundLevel(JAISoundID soundID, u32 mapinfo, s8 reverb) { + if (soundID == 0x7FFFF) { + Vec pos; Z2GetAudience()->convertAbsToRel(*mpPos, &pos, 0); f32 volume = Z2GetAudience()->calcRelPosVolume(pos, 2.0f, 0); f32 pan = Z2GetAudience()->calcRelPosPan(pos, 0); @@ -483,36 +489,36 @@ Z2SoundHandlePool* Z2CreatureEnemy::startCreatureSoundLevel(JAISoundID i_soundID return NULL; } - Z2SoundHandlePool* handle = mSoundObjAnime.startLevelSound(i_soundID, param_1, param_2); + Z2SoundHandlePool* handle = mSoundObjAnime.startLevelSound(soundID, mapinfo, reverb); switch (mEnemyID) { case Z2_ENEMY_FZ: - 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); + if (handle != NULL && *handle && soundID == Z2SE_EN_FZ_MOVE) { + f32 volume = Z2Calc::getParamByExp(mapinfo, 1.0f, 50.0f, 0.4f, 0.1f, 1.1f, + Z2Calc::CURVE_POSITIVE); (*handle)->getAuxiliary().moveVolume(volume, 0); } break; case Z2_ENEMY_SW: - Z2_E_sw_modPitch(handle, param_1); + Z2_E_sw_modPitch(handle, mapinfo); break; case Z2_ENEMY_RB: - 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, - Z2Calc::CURVE_SIGN_1); + if (handle != NULL && *handle && soundID == Z2SE_EN_RB_MOVE) { + f32 volume = Z2Calc::getParamByExp(mapinfo, 4.0f, 35.0f, 0.6f, 0.7f, 1.0f, + Z2Calc::CURVE_POSITIVE); + f32 pitch = Z2Calc::getParamByExp(mapinfo, 4.0f, 35.0f, 0.4f, 0.8f, 1.0f, + Z2Calc::CURVE_POSITIVE); (*handle)->getAuxiliary().moveVolume(volume, 0); (*handle)->getAuxiliary().movePitch(pitch, 0); break; } - // no break + // fallthrough default: - 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, - Z2Calc::CURVE_SIGN_1); + if (handle != NULL && *handle && soundID == Z2SE_EN_PH_PROPELLER) { + f32 volume = Z2Calc::getParamByExp(mapinfo, 0.0f, 30.0f, 0.4f, 0.0f, 1.0f, + Z2Calc::CURVE_POSITIVE); + f32 pitch = Z2Calc::getParamByExp(mapinfo, 4000.0f, 13000.0f, 0.4f, 0.8f, 1.2f, + Z2Calc::CURVE_POSITIVE); (*handle)->getAuxiliary().moveVolume(volume, 0); (*handle)->getAuxiliary().movePitch(pitch, 0); } @@ -524,7 +530,7 @@ Z2SoundHandlePool* Z2CreatureEnemy::startCreatureSoundLevel(JAISoundID i_soundID /* 802C168C-802C1948 2BBFCC 02BC+00 4/0 0/0 0/0 .text * startCreatureVoice__15Z2CreatureEnemyF10JAISoundIDSc */ -Z2SoundHandlePool* Z2CreatureEnemy::startCreatureVoice(JAISoundID i_soundID, s8 param_1) { +Z2SoundHandlePool* Z2CreatureEnemy::startCreatureVoice(JAISoundID soundID, s8 reverb) { if (Z2GetSeqMgr()->getMainBgmID() == Z2BGM_BOSS_ZANT) { switch (Z2GetSeqMgr()->mBgmStatus) { case 0: @@ -532,88 +538,95 @@ Z2SoundHandlePool* Z2CreatureEnemy::startCreatureVoice(JAISoundID i_soundID, s8 break; case 2: case 3: - switch (i_soundID) { + switch (soundID) { case Z2SE_EN_ZAN_V_ATK_BALL: - i_soundID = Z2SE_EN_ZAN_V_ATK_BALL_MG; + soundID = Z2SE_EN_ZAN_V_ATK_BALL_MG; break; case Z2SE_EN_ZAN_V_DMG: - i_soundID = Z2SE_EN_ZAN_V_DMG_MG; + soundID = Z2SE_EN_ZAN_V_DMG_MG; break; } break; case 4: case 5: - switch (i_soundID) { + switch (soundID) { case Z2SE_EN_ZAN_V_ATK_BALL: - i_soundID = Z2SE_EN_ZAN_V_ATK_BALL_OI; + soundID = Z2SE_EN_ZAN_V_ATK_BALL_OI; break; case Z2SE_EN_ZAN_V_DMG: - i_soundID = Z2SE_EN_ZAN_V_DMG_OI; + soundID = Z2SE_EN_ZAN_V_DMG_OI; break; } break; case 6: case 7: - switch (i_soundID) { + switch (soundID) { case Z2SE_EN_ZAN_V_ATK_BALL: - i_soundID = Z2SE_EN_ZAN_V_ATK_BALL_MK; + soundID = Z2SE_EN_ZAN_V_ATK_BALL_MK; break; case Z2SE_EN_ZAN_V_DMG: - i_soundID = Z2SE_EN_ZAN_V_DMG_MK; + soundID = Z2SE_EN_ZAN_V_DMG_MK; break; } break; case 8: case 9: - switch (i_soundID) { + switch (soundID) { case Z2SE_EN_ZAN_V_DMG: - i_soundID = Z2SE_EN_ZAN_V_DMG_YO; + soundID = Z2SE_EN_ZAN_V_DMG_YO; break; } break; case 10: case 11: - switch (i_soundID) { + switch (soundID) { case Z2SE_EN_ZAN_V_DMG: - i_soundID = Z2SE_EN_ZAN_V_DMG_CTL; + soundID = Z2SE_EN_ZAN_V_DMG_CTL; break; } break; } } - u32 var1 = 0; - if (mEnemyID == 7) { - var1 = 1; + u32 mapinfo = 0; + if (mEnemyID == Z2_ENEMY_RDY) { + mapinfo = 1; } - Z2SoundHandlePool* handle = mSoundObjSimple1.startSound(i_soundID, var1, param_1); + + Z2SoundHandlePool* handle = mSoundObjSimple1.startSound(soundID, mapinfo, reverb); switch (mEnemyID) { case Z2_ENEMY_SH: - if (i_soundID == Z2SE_EN_SH_V_DEAD) { + if (soundID == Z2SE_EN_SH_V_DEAD) { field_0xa3 = 1; - Z2GetSeqMgr()->setBattleLastHit(struct_80450869); + Z2GetSeqMgr()->setBattleLastHit(Z2Param::ENDING_BLOW_VOL_LOWER_TIME); } break; case Z2_ENEMY_BS: - if (i_soundID == Z2SE_EN_BS_V_DEAD) { + if (soundID == Z2SE_EN_BS_V_DEAD) { field_0xa3 = 1; - Z2GetSeqMgr()->setBattleLastHit(struct_80450869); + Z2GetSeqMgr()->setBattleLastHit(Z2Param::ENDING_BLOW_VOL_LOWER_TIME); } break; - case Z2_ENEMY_MS: - Z2_E_ms_modVol(handle, mSoundObjSimple1.field_0x1c); - break; - case Z2_ENEMY_SW: - Z2_E_sw_modPitch(handle, mSoundObjSimple1.field_0x1c); - break; - case Z2_ENEMY_MM: - Z2_E_mm_modPitch(handle, mSoundObjSimple1.field_0x1c); + case Z2_ENEMY_MS: { + u32 var_r26 = mSoundObjSimple1.field_0x1c; + Z2_E_ms_modVol(handle, var_r26); break; } + case Z2_ENEMY_SW: { + u32 var_r25 = mSoundObjSimple1.field_0x1c; + Z2_E_sw_modPitch(handle, var_r25); + break; + } + case Z2_ENEMY_MM: { + u32 var_r24 = mSoundObjSimple1.field_0x1c; + Z2_E_mm_modPitch(handle, var_r24); + } + } - if (i_soundID == Z2SE_EN_ZAN_YO_V_KENKEN) { - Z2_B_zan_modPitch(handle, mSoundObjSimple1.field_0x1c); + if (soundID == Z2SE_EN_ZAN_YO_V_KENKEN) { + u32 var_r23 = mSoundObjSimple1.field_0x1c; + Z2_B_zan_modPitch(handle, var_r23); } return handle; @@ -621,43 +634,41 @@ Z2SoundHandlePool* Z2CreatureEnemy::startCreatureVoice(JAISoundID i_soundID, s8 /* 802C1948-802C199C 2BC288 0054+00 3/0 0/0 0/0 .text * startCreatureVoiceLevel__15Z2CreatureEnemyF10JAISoundIDSc */ -Z2SoundHandlePool* Z2CreatureEnemy::startCreatureVoiceLevel(JAISoundID i_soundID, s8 param_1) { - u32 var1 = 0; +Z2SoundHandlePool* Z2CreatureEnemy::startCreatureVoiceLevel(JAISoundID soundID, s8 reverb) { + u32 mapinfo = 0; if (mEnemyID == Z2_ENEMY_RDY) { - var1 = 1; + mapinfo = 1; } - return mSoundObjSimple1.startLevelSound(i_soundID, var1, param_1); + return mSoundObjSimple1.startLevelSound(soundID, mapinfo, reverb); } /* 802C199C-802C19D8 2BC2DC 003C+00 3/0 0/0 0/0 .text * startCreatureExtraSound__15Z2CreatureEnemyF10JAISoundIDUlSc */ -Z2SoundHandlePool* Z2CreatureEnemy::startCreatureExtraSound(JAISoundID i_soundID, u32 param_1, - s8 param_2) { - return mSoundObjSimple2.startSound(i_soundID, param_1, param_2); +Z2SoundHandlePool* Z2CreatureEnemy::startCreatureExtraSound(JAISoundID soundID, u32 mapinfo, s8 reverb) { + return mSoundObjSimple2.startSound(soundID, mapinfo, reverb); } /* 802C19D8-802C1A14 2BC318 003C+00 3/0 0/0 0/0 .text * startCreatureExtraSoundLevel__15Z2CreatureEnemyF10JAISoundIDUlSc */ -Z2SoundHandlePool* Z2CreatureEnemy::startCreatureExtraSoundLevel(JAISoundID i_soundID, u32 param_1, - s8 param_2) { - return mSoundObjSimple2.startLevelSound(i_soundID, param_1, param_2); +Z2SoundHandlePool* Z2CreatureEnemy::startCreatureExtraSoundLevel(JAISoundID soundID, u32 mapinfo, s8 reverb) { + return mSoundObjSimple2.startLevelSound(soundID, mapinfo, reverb); } /* 802C1A14-802C1B7C 2BC354 0168+00 4/0 0/0 0/0 .text startCollisionSE__15Z2CreatureEnemyFUlUl */ -Z2SoundHandlePool* Z2CreatureEnemy::startCollisionSE(u32 param_0, u32 param_1) { +Z2SoundHandlePool* Z2CreatureEnemy::startCollisionSE(u32 hitID, u32 mapinfo) { u8 var1; switch (mEnemyID) { case Z2_ENEMY_WS: field_0xa3 = 1; - Z2GetSeqMgr()->setBattleLastHit(struct_80450869); - return mSoundObjAnime.startCollisionSE(param_0, param_1, NULL); + Z2GetSeqMgr()->setBattleLastHit(Z2Param::ENDING_BLOW_VOL_LOWER_TIME); + return mSoundObjAnime.startCollisionSE(hitID, mapinfo, NULL); case Z2_ENEMY_BI: if (getSupervisor() != NULL) { Z2GetSoundObjMgr()->removeEnemy(this); } - return mSoundObjAnime.startCollisionSE(param_0, param_1, NULL); + return mSoundObjAnime.startCollisionSE(hitID, mapinfo, NULL); default: - switch (param_1) { + switch (mapinfo) { case 0x1e: case 0x1f: case 0x22: @@ -668,61 +679,60 @@ Z2SoundHandlePool* Z2CreatureEnemy::startCollisionSE(u32 param_0, u32 param_1) { case 0x2a: case 0x2d: case 0x34: - Z2GetSeqMgr()->setBattleSeqState(2); + Z2GetSeqMgr()->onEnemyDamage(); break; case 0x20: case 0x24: field_0xa3 = 1; - var1 = struct_80450869; - if (param_0 == Z2SE_HIT_SWORD || param_0 == Z2SE_HIT_SWORD_STAB - || param_0 == Z2SE_HIT_WOLFBITE) { - var1 = 0x14; + var1 = Z2Param::ENDING_BLOW_VOL_LOWER_TIME; + if (hitID == Z2SE_HIT_SWORD || hitID == Z2SE_HIT_SWORD_STAB || hitID == Z2SE_HIT_WOLFBITE) { + var1 = 20; } Z2GetSeqMgr()->setBattleLastHit(var1); break; case 0x21: - if (mEnemyID == 0x2b) { + if (mEnemyID == Z2_ENEMY_HB) { field_0xa3 = 1; - Z2GetSeqMgr()->setBattleLastHit(struct_80450869); - } else if (mEnemyID == 0x16) { - Z2GetSeqMgr()->setBattleSeqState(2); + Z2GetSeqMgr()->setBattleLastHit(Z2Param::ENDING_BLOW_VOL_LOWER_TIME); + } else if (mEnemyID == Z2_ENEMY_DB) { + Z2GetSeqMgr()->onEnemyDamage(); } break; } - return mSoundObjAnime.startCollisionSE(param_0, param_1, NULL); + + return mSoundObjAnime.startCollisionSE(hitID, mapinfo, NULL); } } /* 802C1B7C-802C1B90 2BC4BC 0014+00 0/0 0/0 55/55 .text setLinkSearch__15Z2CreatureEnemyFb */ -void Z2CreatureEnemy::setLinkSearch(bool b_search) { - if (field_0xa3 != 0) { - return; +void Z2CreatureEnemy::setLinkSearch(bool isLinkSearch) { + if (field_0xa3 == 0) { + mLinkSearch = isLinkSearch; } - mLinkSearch = b_search; } /* 802C1B90-802C1BE8 2BC4D0 0058+00 0/0 0/0 72/72 .text setEnemyName__15Z2CreatureEnemyFPCc */ -void Z2CreatureEnemy::setEnemyName(char const* i_name) { - if (i_name == NULL) { +void Z2CreatureEnemy::setEnemyName(const char* enemyName) { + if (enemyName == NULL) { field_0xa1 = -1; } else { - mEnemyID = Z2GetSoundObjMgr()->getEnemyID(i_name, this); + mEnemyID = Z2GetSoundObjMgr()->getEnemyID(enemyName, this); } } /* 802C1BE8-802C1C24 2BC528 003C+00 0/0 0/0 1/1 .text __ct__16Z2CreatureSumomoFv */ -Z2CreatureSumomo::Z2CreatureSumomo() { - /* empty function */ -} +Z2CreatureSumomo::Z2CreatureSumomo() {} /* 802C1C24-802C1CA0 2BC564 007C+00 0/0 0/0 8/8 .text playSumomoBgm__16Z2CreatureSumomoFUl */ -void Z2CreatureSumomo::playSumomoBgm(u32 param_0) { +void Z2CreatureSumomo::playSumomoBgm(u32 dist) { if (Z2GetSeqMgr()->getSubBgmID() != Z2BGM_SUMOMO) { - if (param_0 < 700) { + if (dist < 700) { Z2GetSeqMgr()->subBgmStart(Z2BGM_SUMOMO); + OS_REPORT("SUMOMO_BGM_START dist:%d\n", dist); } - } else if (param_0 >= 1000 && Z2GetStatusMgr()->getDemoStatus() != 6) { + } else if (dist >= 1000 && Z2GetStatusMgr()->getDemoStatus() != 6) { Z2GetSeqMgr()->subBgmStop(); + OS_REPORT("SUMOMO_BGM_STOP dist:%d\n", dist); } } @@ -731,32 +741,31 @@ void Z2CreatureSumomo::playSumomoBgm(u32 param_0) { void Z2CreatureSumomo::deleteObject() { if (Z2GetSeqMgr()->getSubBgmID() == Z2BGM_SUMOMO && Z2GetStatusMgr()->getDemoStatus() != 6) { Z2GetSeqMgr()->subBgmStop(); + OS_REPORT("SUMOMO_BGM_STOP (DELETE)\n"); } + Z2Creature::deleteObject(); } /* 802C1D10-802C1D4C 2BC650 003C+00 0/0 0/0 3/3 .text __ct__18Z2SoundObjBeeGroupFv */ -Z2SoundObjBeeGroup::Z2SoundObjBeeGroup() { - /* empty function */ -} +Z2SoundObjBeeGroup::Z2SoundObjBeeGroup() {} /* 802C1D4C-802C1D6C 2BC68C 0020+00 1/0 0/0 0/0 .text init__18Z2SoundObjBeeGroupFP3VecUc */ -void Z2SoundObjBeeGroup::init(Vec* param_0, u8 param_1) { - Z2SoundObjBase::init(param_0, param_1); +void Z2SoundObjBeeGroup::init(Vec* posPtr, u8 handleNum) { + Z2SoundObjBase::init(posPtr, handleNum); } /* 802C1D6C-802C1F54 2BC6AC 01E8+00 0/0 0/0 2/2 .text * playBeeGroupSound__18Z2SoundObjBeeGroupF10JAISoundIDUc */ -void Z2SoundObjBeeGroup::playBeeGroupSound(JAISoundID i_soundID, u8 param_1) { +void Z2SoundObjBeeGroup::playBeeGroupSound(JAISoundID soundID, u8 param_1) { if (param_1 == 0) { return; } - u32 sound_id = (u32)i_soundID; JAISoundID sound_id2; - switch (sound_id) { + switch ((u32)soundID) { case Z2SE_EN_BE_STAY: sound_id2 = Z2SE_EN_BE_STAY_GROUP; break; @@ -774,7 +783,7 @@ void Z2SoundObjBeeGroup::playBeeGroupSound(JAISoundID i_soundID, u8 param_1) { break; } - Z2SoundHandlePool* handle1 = startLevelSound(sound_id, 0, -1); + Z2SoundHandlePool* handle1 = startLevelSound((u32)soundID, 0, -1); Z2SoundHandlePool* handle2 = startLevelSound(sound_id2, 0, -1); if (handle1 != NULL && *handle1 != NULL) { @@ -788,9 +797,7 @@ void Z2SoundObjBeeGroup::playBeeGroupSound(JAISoundID i_soundID, u8 param_1) { } /* 802C1F54-802C1FB0 2BC894 005C+00 0/0 0/0 1/1 .text __ct__12Z2CreatureFMFv */ -Z2CreatureFM::Z2CreatureFM() { - /* empty function */ -} +Z2CreatureFM::Z2CreatureFM() {} /* 802C1FB0-802C1FFC 2BC8F0 004C+00 1/0 0/0 0/0 .text deleteObject__12Z2CreatureFMFv */ void Z2CreatureFM::deleteObject() { @@ -803,10 +810,10 @@ void Z2CreatureFM::deleteObject() { /* 802C1FFC-802C20E8 2BC93C 00EC+00 0/0 0/0 1/1 .text * init__12Z2CreatureFMFP3VecP3VecP3VecP3VecP3VecP3VecUcUcUcUcUcUc */ -void Z2CreatureFM::init(Vec* param_0, Vec* param_1, Vec* param_2, Vec* param_3, Vec* param_4, - Vec* param_5, u8 param_6, u8 param_7, u8 param_8, u8 param_9, +void Z2CreatureFM::init(Vec* animePosPtr, Vec* simplePosPtr, Vec* param_2, Vec* param_3, Vec* param_4, + Vec* param_5, u8 animeHandleNum, u8 simpleHandleNum, u8 param_8, u8 param_9, u8 param_10, u8 param_11) { - Z2Creature::init(param_0, param_1, param_6, param_7); + Z2Creature::init(animePosPtr, simplePosPtr, animeHandleNum, simpleHandleNum); if (param_2 != NULL) { field_0xa4.init(param_2, param_8); } @@ -822,27 +829,27 @@ void Z2CreatureFM::init(Vec* param_0, Vec* param_1, Vec* param_2, Vec* param_3, } /* 802C20E8-802C2194 2BCA28 00AC+00 1/0 0/0 0/0 .text framework__12Z2CreatureFMFUlSc */ -void Z2CreatureFM::framework(u32 param_0, s8 param_1) { - Z2Creature::framework(param_0, param_1); - field_0xa4.framework(param_0, param_1); - field_0xc4.framework(param_0, param_1); - field_0xe4.framework(param_0, param_1); - field_0x104.framework(param_0, param_1); +void Z2CreatureFM::framework(u32 mapinfo, s8 reverb) { + Z2Creature::framework(mapinfo, reverb); + field_0xa4.framework(mapinfo, reverb); + field_0xc4.framework(mapinfo, reverb); + field_0xe4.framework(mapinfo, reverb); + field_0x104.framework(mapinfo, reverb); } /* 802C2194-802C2290 2BCAD4 00FC+00 0/0 0/0 1/1 .text * startChainSound__12Z2CreatureFMF10JAISoundIDUcfUlSc */ -Z2SoundHandlePool* Z2CreatureFM::startChainSound(JAISoundID i_soundID, u8 param_1, f32 param_2, - u32 param_3, s8 param_4) { +Z2SoundHandlePool* Z2CreatureFM::startChainSound(JAISoundID soundID, u8 param_1, f32 param_2, + u32 mapinfo, s8 reverb) { switch (param_1) { case 0: - return field_0xa4.startSound(i_soundID, param_3, param_4); + return field_0xa4.startSound(soundID, mapinfo, reverb); case 1: - return field_0xc4.startSound(i_soundID, param_3, param_4); + return field_0xc4.startSound(soundID, mapinfo, reverb); case 2: - return field_0xe4.startSound(i_soundID, param_3, param_4); + return field_0xe4.startSound(soundID, mapinfo, reverb); case 3: - return field_0x104.startSound(i_soundID, param_3, param_4); + return field_0x104.startSound(soundID, mapinfo, reverb); default: return NULL; } @@ -850,13 +857,13 @@ Z2SoundHandlePool* Z2CreatureFM::startChainSound(JAISoundID i_soundID, u8 param_ /* 802C2290-802C24B0 2BCBD0 0220+00 0/0 0/0 1/1 .text * startChainSoundLevel__12Z2CreatureFMF10JAISoundIDUcfUlSc */ -Z2SoundHandlePool* Z2CreatureFM::startChainSoundLevel(JAISoundID i_soundID, u8 param_1, f32 param_2, - u32 param_3, s8 param_4) { +Z2SoundHandlePool* Z2CreatureFM::startChainSoundLevel(JAISoundID soundID, u8 param_1, f32 param_2, + u32 mapinfo, s8 reverb) { Z2SoundHandlePool* handle; f32 pitch; switch (param_1) { case 0: - handle = field_0xa4.startLevelSound(i_soundID, param_3, param_4); + handle = field_0xa4.startLevelSound(soundID, mapinfo, reverb); if (handle != NULL && *handle) { if (param_2 > 30.0f) { pitch = 1.06f; @@ -872,7 +879,7 @@ Z2SoundHandlePool* Z2CreatureFM::startChainSoundLevel(JAISoundID i_soundID, u8 p } return NULL; case 1: - handle = field_0xa4.startLevelSound(i_soundID, param_3, param_4); + handle = field_0xa4.startLevelSound(soundID, mapinfo, reverb); if (handle != NULL && *handle) { if (param_2 > 30.0f) { pitch = 1.06f; @@ -888,9 +895,9 @@ Z2SoundHandlePool* Z2CreatureFM::startChainSoundLevel(JAISoundID i_soundID, u8 p } return NULL; case 2: - return field_0xe4.startLevelSound(i_soundID, param_3, param_4); + return field_0xe4.startLevelSound(soundID, mapinfo, reverb); case 3: - return field_0x104.startLevelSound(i_soundID, param_3, param_4); + return field_0x104.startLevelSound(soundID, mapinfo, reverb); default: return NULL; } @@ -898,26 +905,25 @@ Z2SoundHandlePool* Z2CreatureFM::startChainSoundLevel(JAISoundID i_soundID, u8 p /* 802C24B0-802C24D0 2BCDF0 0020+00 0/0 0/0 1/1 .text init__13Z2CreatureGobFP3VecP3VecP3VecUcUcUc */ -void Z2CreatureGob::init(Vec* param_0, Vec* param_1, Vec* param_2, u8 param_3, u8 param_4, - u8 param_5) { - Z2Creature::init(param_0, param_1, param_2, param_3, param_4, param_5); +void Z2CreatureGob::init(Vec* animePosPtr, Vec* simplePosPtr, Vec* simple2PosPtr, u8 animeHandleNum, u8 simpleHandleNum, + u8 simple2HandleNum) { + Z2Creature::init(animePosPtr, simplePosPtr, simple2PosPtr, animeHandleNum, simpleHandleNum, simple2HandleNum); } /* 802C24D0-802C2578 2BCE10 00A8+00 1/0 0/0 0/0 .text * startCreatureVoiceLevel__13Z2CreatureGobF10JAISoundIDSc */ -Z2SoundHandlePool* Z2CreatureGob::startCreatureVoiceLevel(JAISoundID i_soundID, s8 param_1) { +Z2SoundHandlePool* Z2CreatureGob::startCreatureVoiceLevel(JAISoundID soundID, s8 reverb) { if (mSoundObjSimple1.getHandleSoundID(Z2SE_EN_GOB_V_DAMAGE) != NULL || mSoundObjSimple1.getHandleSoundID(Z2SE_EN_GOB_V_STOMACH) != NULL) { return NULL; } - return mSoundObjSimple1.startLevelSound(i_soundID, 0, param_1); + + return mSoundObjSimple1.startLevelSound(soundID, 0, reverb); } /* 802C2578-802C25EC 2BCEB8 0074+00 0/0 0/0 1/1 .text __ct__12Z2CreatureOIFv */ -Z2CreatureOI::Z2CreatureOI() { - /* empty function */ -} +Z2CreatureOI::Z2CreatureOI() {} /* 802C25EC-802C2670 2BCF2C 0084+00 1/0 0/0 0/0 .text deleteObject__12Z2CreatureOIFv */ void Z2CreatureOI::deleteObject() { @@ -977,35 +983,34 @@ void Z2CreatureOI::init(Vec* param_0, Vec* param_1, Vec* param_2, Vec* param_3, } /* 802C2864-802C29D4 2BD1A4 0170+00 1/0 0/0 0/0 .text framework__12Z2CreatureOIFUlSc */ -void Z2CreatureOI::framework(u32 param_0, s8 param_1) { - Z2Creature::framework(param_0, param_1); - field_0xa4.framework(param_0, param_1); - field_0xc4.framework(param_0, param_1); - field_0xe4.framework(param_0, param_1); - mTentacleSounds[0].framework(param_0, param_1); - mTentacleSounds[1].framework(param_0, param_1); - mTentacleSounds[2].framework(param_0, param_1); - mTentacleSounds[3].framework(param_0, param_1); - mTentacleSounds[4].framework(param_0, param_1); - mTentacleSounds[5].framework(param_0, param_1); - mTentacleSounds[6].framework(param_0, param_1); - mTentacleSounds[7].framework(param_0, param_1); +void Z2CreatureOI::framework(u32 mapinfo, s8 reverb) { + Z2Creature::framework(mapinfo, reverb); + field_0xa4.framework(mapinfo, reverb); + field_0xc4.framework(mapinfo, reverb); + field_0xe4.framework(mapinfo, reverb); + mTentacleSounds[0].framework(mapinfo, reverb); + mTentacleSounds[1].framework(mapinfo, reverb); + mTentacleSounds[2].framework(mapinfo, reverb); + mTentacleSounds[3].framework(mapinfo, reverb); + mTentacleSounds[4].framework(mapinfo, reverb); + mTentacleSounds[5].framework(mapinfo, reverb); + mTentacleSounds[6].framework(mapinfo, reverb); + mTentacleSounds[7].framework(mapinfo, reverb); } /* 802C29D4-802C2C84 2BD314 02B0+00 1/0 0/0 0/0 .text * startCreatureSoundLevel__12Z2CreatureOIF10JAISoundIDUlSc */ -Z2SoundHandlePool* Z2CreatureOI::startCreatureSoundLevel(JAISoundID i_soundID, u32 param_1, - s8 param_2) { - if (i_soundID == Z2SE_EN_OI_MOVE) { - Z2SoundHandlePool* handle1 = mSoundObjAnime.startLevelSound(i_soundID, param_1, param_2); - Z2SoundHandlePool* handle2 = field_0xa4.startLevelSound(i_soundID, param_1, param_2); - Z2SoundHandlePool* handle3 = field_0xc4.startLevelSound(i_soundID, param_1, param_2); - Z2SoundHandlePool* handle4 = field_0xe4.startLevelSound(i_soundID, param_1, param_2); +Z2SoundHandlePool* Z2CreatureOI::startCreatureSoundLevel(JAISoundID soundID, u32 mapinfo, s8 reverb) { + if (soundID == Z2SE_EN_OI_MOVE) { + Z2SoundHandlePool* handle1 = mSoundObjAnime.startLevelSound(soundID, mapinfo, reverb); + Z2SoundHandlePool* handle2 = field_0xa4.startLevelSound(soundID, mapinfo, reverb); + Z2SoundHandlePool* handle3 = field_0xc4.startLevelSound(soundID, mapinfo, reverb); + Z2SoundHandlePool* handle4 = field_0xe4.startLevelSound(soundID, mapinfo, reverb); - f32 volume = Z2Calc::getParamByExp(param_1, 0.0f, 42.0f, 0.4f, 0.0f, 1.0f, - Z2Calc::CURVE_SIGN_1); - f32 pitch = Z2Calc::getParamByExp(param_1, 0.0f, 42.0f, 0.4f, 0.9f, 1.1f, - Z2Calc::CURVE_SIGN_1); + f32 volume = Z2Calc::getParamByExp(mapinfo, 0.0f, 42.0f, 0.4f, 0.0f, 1.0f, + Z2Calc::CURVE_POSITIVE); + f32 pitch = Z2Calc::getParamByExp(mapinfo, 0.0f, 42.0f, 0.4f, 0.9f, 1.1f, + Z2Calc::CURVE_POSITIVE); if (handle1 != NULL && *handle1 != NULL) { (*handle1)->getAuxiliary().moveVolume(volume, 0); @@ -1036,28 +1041,27 @@ Z2SoundHandlePool* Z2CreatureOI::startCreatureSoundLevel(JAISoundID i_soundID, u return NULL; } } else { - return mSoundObjAnime.startLevelSound(i_soundID, param_1, param_2); + return mSoundObjAnime.startLevelSound(soundID, mapinfo, reverb); } } /* 802C2C84-802C2CD4 2BD5C4 0050+00 0/0 0/0 1/1 .text * startTentacleSound__12Z2CreatureOIF10JAISoundIDUcUlSc */ -Z2SoundHandlePool* Z2CreatureOI::startTentacleSound(JAISoundID i_soundID, u8 param_1, u32 param_2, - s8 param_3) { - return mTentacleSounds[param_1].startSound(i_soundID, param_2, param_3); +Z2SoundHandlePool* Z2CreatureOI::startTentacleSound(JAISoundID soundID, u8 tentacleIndex, u32 mapinfo, s8 reverb) { + return mTentacleSounds[tentacleIndex].startSound(soundID, mapinfo, reverb); } /* 802C2CD4-802C2DE0 2BD614 010C+00 0/0 0/0 1/1 .text * startTentacleSoundLevel__12Z2CreatureOIF10JAISoundIDUcfUlSc */ -Z2SoundHandlePool* Z2CreatureOI::startTentacleSoundLevel(JAISoundID i_soundID, u8 param_1, - f32 param_2, u32 param_3, s8 param_4) { - Z2SoundHandlePool* handle = - mTentacleSounds[param_1].startLevelSound(i_soundID, param_3, param_4); +Z2SoundHandlePool* Z2CreatureOI::startTentacleSoundLevel(JAISoundID soundID, u8 tentacleIndex, + f32 param_2, u32 mapinfo, s8 reverb) { + Z2SoundHandlePool* handle = NULL; + handle = mTentacleSounds[tentacleIndex].startLevelSound(soundID, mapinfo, reverb); if (handle != NULL && *handle) { f32 volume = Z2Calc::getParamByExp(param_2, 0.0f, 60.0f, 0.4f, 0.0f, 1.0f, - Z2Calc::CURVE_SIGN_1); + Z2Calc::CURVE_POSITIVE); f32 pitch = Z2Calc::getParamByExp(param_2, 0.0f, 60.0f, 0.4f, 0.9f, 1.1f, - Z2Calc::CURVE_SIGN_1); + Z2Calc::CURVE_POSITIVE); (*handle)->getAuxiliary().moveVolume(volume, 0); (*handle)->getAuxiliary().movePitch(pitch, 0); return handle; @@ -1067,10 +1071,10 @@ Z2SoundHandlePool* Z2CreatureOI::startTentacleSoundLevel(JAISoundID i_soundID, u } /* 802C2DE0-802C2E54 2BD720 0074+00 3/3 0/0 0/0 .text Z2_E_sw_modPitch__FP17Z2SoundHandlePoolUl */ -static void Z2_E_sw_modPitch(Z2SoundHandlePool* i_handle, u32 param_1) { - if (i_handle != NULL && *i_handle != NULL) { +static void Z2_E_sw_modPitch(Z2SoundHandlePool* handle, u32 mapinfo) { + if (handle != NULL && *handle != NULL) { f32 pitch = 1.0f; - switch (param_1) { + switch (mapinfo) { case 1: pitch = 1.1f; break; @@ -1078,41 +1082,47 @@ static void Z2_E_sw_modPitch(Z2SoundHandlePool* i_handle, u32 param_1) { pitch = 0.8f; break; } - (*i_handle)->getAuxiliary().movePitch(pitch, 0); + (*handle)->getAuxiliary().movePitch(pitch, 0); } } /* 802C2E54-802C2E9C 2BD794 0048+00 2/2 0/0 0/0 .text Z2_E_ms_modVol__FP17Z2SoundHandlePoolUl */ -static void Z2_E_ms_modVol(Z2SoundHandlePool* i_handle, u32 param_1) { - if (i_handle != NULL && *i_handle != NULL && param_1 == 1) { - (*i_handle)->getAuxiliary().moveVolume(0.2f, 0); +static void Z2_E_ms_modVol(Z2SoundHandlePool* handle, u32 mapinfo) { + if (handle != NULL && *handle != NULL) { + f32 var_f31 = 0.2f; + if (mapinfo == 1) { + (*handle)->getAuxiliary().moveVolume(var_f31, 0); + } } } /* 802C2E9C-802C2EE4 2BD7DC 0048+00 2/2 0/0 0/0 .text Z2_E_mm_modPitch__FP17Z2SoundHandlePoolUl */ -static void Z2_E_mm_modPitch(Z2SoundHandlePool* i_handle, u32 param_1) { - if (i_handle != NULL && *i_handle != NULL && param_1 == 3) { - (*i_handle)->getAuxiliary().movePitch(0.7f, 0); +static void Z2_E_mm_modPitch(Z2SoundHandlePool* handle, u32 mapinfo) { + if (handle != NULL && *handle != NULL) { + f32 var_f31 = 0.7f; + if (mapinfo == 3) { + (*handle)->getAuxiliary().movePitch(var_f31, 0); + } } } /* 802C2EE4-802C3040 2BD824 015C+00 2/2 0/0 0/0 .text Z2_B_zan_modPitch__FP17Z2SoundHandlePoolUl */ -static void Z2_B_zan_modPitch(Z2SoundHandlePool* i_handle, u32 param_1) { - if (i_handle != NULL && *i_handle != NULL) { - f32 pitch; +static void Z2_B_zan_modPitch(Z2SoundHandlePool* handle, u32 mapinfo) { + if (handle != NULL && *handle != NULL) { + f32 pitch = 1.0f; f32 volume = 1.0f; - if (param_1 > 400) { + if (mapinfo > 400) { pitch = 0.5f; - } else if (param_1 > 100) { - pitch = Z2Calc::getParamByExp(400 - param_1, 0.0f, 300.0f, 0.4f, 0.5f, 1.0f, - Z2Calc::CURVE_SIGN_0); + } else if (mapinfo > 100) { + pitch = Z2Calc::getParamByExp(400 - mapinfo, 0.0f, 300.0f, 0.4f, 0.5f, 1.0f, + Z2Calc::CURVE_NEGATIVE); } else { - pitch = Z2Calc::getParamByExp(100 - param_1, 0.0f, 50.0f, 0.4f, 1.0f, 1.5f, - Z2Calc::CURVE_SIGN_0); - volume = Z2Calc::getParamByExp(param_1, 50.0f, 100.0f, 0.4f, 0.4f, 1.0f, - Z2Calc::CURVE_SIGN_0); + pitch = Z2Calc::getParamByExp(100 - mapinfo, 0.0f, 50.0f, 0.4f, 1.0f, 1.5f, + Z2Calc::CURVE_NEGATIVE); + volume = Z2Calc::getParamByExp(mapinfo, 50.0f, 100.0f, 0.4f, 0.4f, 1.0f, + Z2Calc::CURVE_NEGATIVE); } - (*i_handle)->getAuxiliary().movePitch(pitch, 0); - (*i_handle)->getAuxiliary().moveVolume(volume, 0); + (*handle)->getAuxiliary().movePitch(pitch, 0); + (*handle)->getAuxiliary().moveVolume(volume, 0); } } diff --git a/src/Z2AudioLib/Z2EnvSeMgr.cpp b/src/Z2AudioLib/Z2EnvSeMgr.cpp index f996afc50a..11917dda9c 100644 --- a/src/Z2AudioLib/Z2EnvSeMgr.cpp +++ b/src/Z2AudioLib/Z2EnvSeMgr.cpp @@ -1,23 +1,98 @@ -// -// Generated By: dol2asm -// Translation Unit: Z2EnvSeMgr -// - #include "Z2AudioLib/Z2EnvSeMgr.h" #include "Z2AudioLib/Z2Calc.h" #include "JSystem/JAudio2/JASCalc.h" -#include "Z2AudioLib/Z2Creature.h" #include "d/d_save.h" #include "d/d_com_inf_game.h" #ifdef DEBUG -// Should be in data section -static char sSpotName[144] = {0}; +static const char* sSpotName[] = { + "F_SP00", + "F_SP103", + "R_SP01", + "F_SP104", + "R_SP107", + "F_SP108", + "R_SP108", + "F_SP117", + "F_SP109", + "R_SP109", + "R_SP209", + "F_SP110", + "R_SP110", + "F_SP111", + "F_SP128", + "R_SP128", + "F_SP115", + "F_SP112", + "F_SP126", + "F_SP127", + "R_SP127", + "F_SP113", + "F_SP116", + "R_SP116", + "R_SP160", + "R_SP161", + "F_SP114", + "F_SP118", + "F_SP124", + "F_SP125", + "F_SP121", + "F_SP122", + "F_SP123", + "F_SP200", + "F_SP102", + "", + "R_SP300", + "R_SP301", + "T_ENEMY", + "D_MN54", + "D_MN05", + "D_MN05B", + "D_MN05A", + "D_MN04", + "D_MN04B", + "D_MN04A", + "D_MN01", + "D_MN01B", + "D_MN01A", + "D_MN10", + "D_MN10B", + "D_MN10A", + "D_MN11", + "D_MN11B", + "D_MN11A", + "D_MN06", + "D_MN06B", + "D_MN06A", + "D_MN07", + "D_MN07B", + "D_MN07A", + "D_MN08", + "D_MN08B", + "D_MN08C", + "D_MN08A", + "D_MN08D", + "D_MN09", + "D_MN09A", + "D_MN09B", + "D_MN09C", + "D_SB00", + "D_SB01", + "D_SB02", + "D_SB03", + "D_SB04", + "D_SB05", + "D_SB06", + "D_SB07", + "D_SB08", + "D_SB09", + "D_SB10", +}; #endif /* 802C589C-802C58AC 2C01DC 0010+00 3/3 0/0 0/0 .text __ct__11Z2EnvSeBaseFP3Vec */ -Z2EnvSeBase::Z2EnvSeBase(Vec* param_0) { - mPos = param_0; +Z2EnvSeBase::Z2EnvSeBase(Vec* posPtr) { + mPos = posPtr; } /* 802C58AC-802C5908 2C01EC 005C+00 3/3 0/0 0/0 .text __dt__11Z2EnvSeBaseFv */ @@ -25,22 +100,22 @@ Z2EnvSeBase::~Z2EnvSeBase() {} /* 802C5908-802C5AB4 2C0248 01AC+00 2/2 0/0 0/0 .text * startEnvSe__11Z2EnvSeBaseF10JAISoundIDfffffUl */ -bool Z2EnvSeBase::startEnvSe(JAISoundID param_1, f32 param_2, f32 param_3, f32 param_4, f32 param_5, - f32 param_6, u32 param_7) { +bool Z2EnvSeBase::startEnvSe(JAISoundID soundID, f32 fxMix, f32 volume, f32 pan, f32 dolby, f32 pitch, u32 moveSteps) { if (Z2GetStatusMgr()->isPaused()) { - param_3 *= 0.33f; + volume *= 0.33f; } + f32 dVar16 = 1.0f; - bool uStack_44 = Z2GetStatusMgr()->getCameraInWaterDepth() > 0.0f; - f32 fVar1 = uStack_44; + f32 fVar1 = Z2GetStatusMgr()->getCameraInWaterDepth() > 0.0f; if (fVar1) { dVar16 = Z2Calc::getParamByExp( fVar1, 1500.0f, 0.0f, 0.1f, 0.0f, - dVar16, Z2Calc::CURVE_SIGN_0); - param_3 *= dVar16; + 1.0f, Z2Calc::CURVE_NEGATIVE); + volume *= dVar16; } - bool rv = Z2GetSoundStarter()->startSound(param_1, &mHandle, (JGeometry::TVec3*)mPos, 0, param_2, param_6, param_3, param_4, param_5, param_7); + + bool rv = Z2GetSoundStarter()->startSound(soundID, &mHandle, (JGeometry::TVec3*)mPos, 0, fxMix, pitch, volume, pan, dolby, moveSteps); if (mHandle) { if (dVar16 < 1.0f) { Z2GetSoundMgr()->setIIR(mHandle.getSound(), JASCalc::CUTOFF_TO_IIR_TABLE[64]); @@ -48,27 +123,29 @@ bool Z2EnvSeBase::startEnvSe(JAISoundID param_1, f32 param_2, f32 param_3, f32 p Z2GetSoundMgr()->setIIR(mHandle.getSound(), JASCalc::CUTOFF_TO_IIR_TABLE[127]); } } + return rv; } /* 802C5AB4-802C5C9C 2C03F4 01E8+00 9/9 0/0 0/0 .text * startEnvSeLevel__11Z2EnvSeBaseF10JAISoundIDfffffUl */ -bool Z2EnvSeBase::startEnvSeLevel(JAISoundID param_1, f32 param_2, f32 param_3, f32 param_4, - f32 param_5, f32 param_6, u32 param_7) { +bool Z2EnvSeBase::startEnvSeLevel(JAISoundID soundID, f32 fxMix, f32 volume, f32 pan, + f32 dolby, f32 pitch, u32 moveSteps) { if (Z2GetStatusMgr()->isPaused()) { - param_3 *= 0.33f; + volume *= 0.33f; } + f32 dVar16 = 1.0f; - bool uStack_44 = Z2GetStatusMgr()->getCameraInWaterDepth() > 0.0f; - f32 fVar1 = uStack_44; + f32 fVar1 = Z2GetStatusMgr()->getCameraInWaterDepth() > 0.0f; if (fVar1) { dVar16 = Z2Calc::getParamByExp( fVar1, 1500.0f, 0.0f, 0.1f, 0.0f, - dVar16, Z2Calc::CURVE_SIGN_0); - param_3 *= dVar16; + 1.0f, Z2Calc::CURVE_NEGATIVE); + volume *= dVar16; } - bool rv = Z2GetSoundStarter()->startLevelSound(param_1, &mHandle, (JGeometry::TVec3*)mPos); + + bool rv = Z2GetSoundStarter()->startLevelSound(soundID, &mHandle, (JGeometry::TVec3*)mPos); if (mHandle) { if (dVar16 < 1.0f) { Z2GetSoundMgr()->setIIR(mHandle.getSound(), JASCalc::CUTOFF_TO_IIR_TABLE[64]); @@ -76,21 +153,23 @@ bool Z2EnvSeBase::startEnvSeLevel(JAISoundID param_1, f32 param_2, f32 param_3, Z2GetSoundMgr()->setIIR(mHandle.getSound(), JASCalc::CUTOFF_TO_IIR_TABLE[127]); } - mHandle->getAuxiliary().moveVolume(param_3, param_7); - mHandle->getAuxiliary().movePan(param_4, param_7); - mHandle->getAuxiliary().moveDolby(param_5, param_7); - mHandle->getAuxiliary().moveFxMix(param_2, param_7); - mHandle->getAuxiliary().movePitch(param_6, param_7); + mHandle->getAuxiliary().moveVolume(volume, moveSteps); + mHandle->getAuxiliary().movePan(pan, moveSteps); + mHandle->getAuxiliary().moveDolby(dolby, moveSteps); + mHandle->getAuxiliary().moveFxMix(fxMix, moveSteps); + mHandle->getAuxiliary().movePitch(pitch, moveSteps); } + return rv; } /* 802C5C9C-802C5D1C 2C05DC 0080+00 1/1 0/0 0/0 .text __ct__10Z2EnvSeDirFP3Vec */ -Z2EnvSeDir::Z2EnvSeDir(Vec* param_0) { - field_0x8 = 0.5f; - field_0xc = 0.5f; - if (param_0) { - setPanDir(param_0); +Z2EnvSeDir::Z2EnvSeDir(Vec* dir) { + mPan = 0.5f; + mDolby = 0.5f; + + if (dir) { + setPanDir(dir); } else { mPanDir = Z2Calc::cNullVec; } @@ -101,6 +180,7 @@ Z2EnvSeDir::~Z2EnvSeDir() {} /* 802C5D70-802C5D9C 2C06B0 002C+00 2/2 0/0 0/0 .text setPanDir__10Z2EnvSeDirFP3Vec */ void Z2EnvSeDir::setPanDir(Vec* dir) { + JUT_ASSERT(249, dir); mPanDir.x = dir->x * -1000.0f; mPanDir.y = dir->y * -1000.0f; mPanDir.z = dir->z * -1000.0f; @@ -114,25 +194,28 @@ void Z2EnvSeDir::calcPan(f32 param_0) { (*getHandle())->getAuxiliary().moveDolby(0.5f, 0); } else { Z2GetAudience()->convertAbsToRel(mPanDir, &mPanDir, 0); - JMAFastVECNormalize(&mPanDir, &mPanDir); - field_0x8 = Z2GetAudience()->calcRelPosPan(mPanDir, 0); - field_0xc = Z2GetAudience()->calcRelPosDolby(mPanDir, 0); - (*getHandle())->getAuxiliary().movePan(field_0x8, 0); - (*getHandle())->getAuxiliary().moveDolby(field_0xc, 0); + JMath::fastVECNormalize(&mPanDir, &mPanDir); + + mPan = Z2GetAudience()->calcRelPosPan(mPanDir, 0); + mDolby = Z2GetAudience()->calcRelPosDolby(mPanDir, 0); + + (*getHandle())->getAuxiliary().movePan(mPan, 0); + (*getHandle())->getAuxiliary().moveDolby(mDolby, 0); } } } /* 802C5E90-802C5ECC 2C07D0 003C+00 1/1 0/0 0/0 .text * startEnvSeDirLevel__10Z2EnvSeDirF10JAISoundIDff */ -bool Z2EnvSeDir::startEnvSeDirLevel(JAISoundID param_1, f32 param_2, f32 param_3) { - return Z2EnvSeBase::startEnvSeLevel(param_1, param_2, param_3, field_0x8, field_0xc, 1.0f, 0); +bool Z2EnvSeDir::startEnvSeDirLevel(JAISoundID soundID, f32 fxMix, f32 volume) { + f32 var_f31 = mDolby; + return Z2EnvSeBase::startEnvSeLevel(soundID, fxMix, volume, mPan, mDolby, 1.0f, 0); } /* 802C5ECC-802C5F28 2C080C 005C+00 1/1 0/0 0/0 .text __ct__14Z2EnvSeAutoPanFv */ Z2EnvSeAutoPan::Z2EnvSeAutoPan() { - field_0x8 = 0.5f; - field_0xc = 0.5f; + mPan = 0.5f; + mDolby = 0.5f; field_0x10 = 0.0018554000416770577f; field_0x14 = 0.0008553999941796064f; field_0x18 = 1; @@ -143,10 +226,10 @@ Z2EnvSeAutoPan::Z2EnvSeAutoPan() { Z2EnvSeAutoPan::~Z2EnvSeAutoPan() {} /* 802C5F7C-802C5F98 2C08BC 001C+00 2/2 0/0 0/0 .text setPanParam__14Z2EnvSeAutoPanFffbbff */ -void Z2EnvSeAutoPan::setPanParam(f32 param_1, f32 param_2, bool param_3, bool param_4, f32 param_5, +void Z2EnvSeAutoPan::setPanParam(f32 pan, f32 dolby, bool param_3, bool param_4, f32 param_5, f32 param_6) { - field_0x8 = param_1; - field_0xc = param_2; + mPan = pan; + mDolby = dolby; field_0x10 = param_5; field_0x14 = param_6; field_0x18 = param_3; @@ -156,54 +239,57 @@ void Z2EnvSeAutoPan::setPanParam(f32 param_1, f32 param_2, bool param_3, bool pa /* 802C5F98-802C60E0 2C08D8 0148+00 2/2 0/0 0/0 .text calcPan__14Z2EnvSeAutoPanFv */ void Z2EnvSeAutoPan::calcPan() { if (field_0x18) { - field_0x8 += field_0x10; - if (field_0x8 > 1.0f) { - field_0x8 = 2.0f - field_0x8; + mPan += field_0x10; + if (mPan > 1.0f) { + mPan = 2.0f - mPan; field_0x18 = false; } } else { - field_0x8 = field_0x8 - field_0x10; - if (field_0x8 < 0.0f) { - field_0x8 *= -1.0f; + mPan -= field_0x10; + if (mPan < 0.0f) { + mPan *= -1.0f; field_0x18 = true; } } + if (field_0x19) { - field_0xc = field_0xc + field_0x14; - if (field_0xc > 1.0f) { - field_0xc = 2.0f - field_0xc; + mDolby += field_0x14; + if (mDolby > 1.0f) { + mDolby = 2.0f - mDolby; field_0x19 = false; } } else { - field_0xc = field_0xc - field_0x14; - if (field_0xc < 0.0f) { - field_0xc *= -1.0f; + mDolby -= field_0x14; + if (mDolby < 0.0f) { + mDolby *= -1.0f; field_0x19 = true; } } + if (*getHandle()) { - (*getHandle())->getAuxiliary().movePan(field_0x8, 0); - (*getHandle())->getAuxiliary().moveDolby(field_0xc, 0); + (*getHandle())->getAuxiliary().movePan(mPan, 0); + (*getHandle())->getAuxiliary().moveDolby(mDolby, 0); } } /* 802C60E0-802C611C 2C0A20 003C+00 2/2 0/0 0/0 .text * startEnvSeAutoPanLevel__14Z2EnvSeAutoPanF10JAISoundIDfff */ -bool Z2EnvSeAutoPan::startEnvSeAutoPanLevel(JAISoundID param_1, f32 param_2, f32 param_3, - f32 param_4) { - return Z2EnvSeBase::startEnvSeLevel(param_1, param_2, param_3, field_0x8, field_0xc, param_4, - 0); +bool Z2EnvSeAutoPan::startEnvSeAutoPanLevel(JAISoundID soundID, f32 fxMix, f32 volume, + f32 pitch) { + f32 var_f31 = mDolby; + return Z2EnvSeBase::startEnvSeLevel(soundID, fxMix, volume, mPan, mDolby, pitch, 0); } /* 802C611C-802C6540 2C0A5C 0424+00 0/0 1/1 0/0 .text __ct__10Z2EnvSeMgrFv */ Z2EnvSeMgr::Z2EnvSeMgr() - : JASGlobalInstance(this), field_0x38(), field_0x48(1.0f), field_0x4c(1.0f), + : JASGlobalInstance(true), field_0x38(), field_0x48(1.0f), field_0x4c(1.0f), field_0x50(1.0f), field_0x140(), mSnowPower(), mWindType(), field_0x188(), field_0x1ac(1.0f), field_0x1b0(1.0f), field_0x1b4(1.0f), field_0x1b8(), field_0x1e0(), field_0x1e4(1.0f), field_0x1e8(1.0f), field_0x1ec(1.0f), field_0x214(), field_0x218(1.0f), field_0x21c(1.0f), field_0x220(1.0f), field_0x248(), field_0x24c(1.0f), field_0x250(1.0f), field_0x254(1.0f), field_0x27c(), field_0x280(1.0f), field_0x284(1.0f), field_0x288(1.0f), field_0x2b0(), - field_0x2b4(1.0f), field_0x2b8(1.0f), field_0x2bc(1.0f), field_0x2e4(), mFogDensity() { + field_0x2b4(1.0f), field_0x2b8(1.0f), field_0x2bc(1.0f), field_0x2e4(), mFogDensity() +{ field_0x3c.x = 0.0f; field_0x3c.y = 0.0f; field_0x3c.z = 0.0f; @@ -243,51 +329,58 @@ void Z2EnvSeMgr::framework() { && !dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[250]))) { int lVar12 = 0; - if (sceneNum == 0x17 || sceneNum == 0x18 || (sceneNum == 0x19)) { + if (sceneNum == Z2SCENE_CASTLE_TOWN_INTERIOR || sceneNum == Z2SCENE_CASTLE_TOWN_SHOPS || (sceneNum == Z2SCENE_STAR_TENT)) { lVar12 = 1; } startRainSe(lVar12, 100); } + field_0x64.resetMultiSePos(); } - if (sceneNum == 0x2e) { + + if (sceneNum == Z2SCENE_LAKEBED_TEMPLE) { startLv3WaterSe(-1); field_0x140 = 0; } + if (Z2GetSceneMgr()->isSceneExist()) { playSceneEnvSe(); if (field_0x140 > 0 && mSnowPower == 0) { - JAISoundHandle* pJVar8 = field_0x80.getHandle(); - if (*pJVar8) { - (*pJVar8)->updateLifeTime(field_0x140); + JAISoundHandle* handle = field_0x80.getHandle(); + if (*handle) { + (*handle)->updateLifeTime(field_0x140); } - pJVar8 = field_0x88.getHandle(); - if (*pJVar8) { - (*pJVar8)->updateLifeTime(field_0x140); + handle = field_0x88.getHandle(); + if (*handle) { + (*handle)->updateLifeTime(field_0x140); } field_0x140 = 0; } } - if (mFogDensity > 0.0f) - { + + if (mFogDensity > 0.0f) { mFogDensity -= 0.01f; if (mFogDensity < 0.0f) { mFogDensity = 0.0f; } } + if (field_0x1b8 > 0 && field_0x1b8 < 100) { field_0x1b8++; } else if (field_0x1b8 < 0 && field_0x1b8 > -100) { field_0x1b8--; } + if (mSnowPower > 0) { mSnowPower--; } + if (Z2GetLink() != NULL) { - if (Z2GetLink()->isWolfSmellOpen() != 0) { - if (field_0x2e4 < 0x1e) { + if (Z2GetLink()->isWolfSmellOpen()) { + if (field_0x2e4 < 30) { field_0x2e4++; } + if (mWolfSmellSeMgr.getPosCount() >= 0) { f32 maxVolume = mWolfSmellSeMgr.getMaxVolume(); field_0x2dc.startEnvSeLevel(Z2SE_ENV_SCENT_GRAVE, 0.0f, @@ -297,15 +390,14 @@ void Z2EnvSeMgr::framework() { return; } } + if (field_0x2e4 != 0) { field_0x2e4--; } } /* 802C6998-802C699C 2C12D8 0004+00 0/0 1/1 0/0 .text resetScene__10Z2EnvSeMgrFv */ -void Z2EnvSeMgr::resetScene() { - /* empty function */ -} +void Z2EnvSeMgr::resetScene() {} /* 802C699C-802C6AC0 2C12DC 0124+00 0/0 1/1 0/0 .text resetSceneInner__10Z2EnvSeMgrFv */ void Z2EnvSeMgr::resetSceneInner() { @@ -322,6 +414,7 @@ void Z2EnvSeMgr::resetSceneInner() { field_0x3c.y = 0.0f; field_0x3c.z = 0.0f; } + field_0x140 = 0; mWindType = WIND_TYPE_0; field_0x188 = 0; @@ -349,6 +442,7 @@ void Z2EnvSeMgr::resetSceneInner() { field_0x2b4 = 1.0f; field_0x2b8 = 1.0f; field_0x2bc = 1.0f; + mRiverSeMgr.resetMultiSePos(); mFallSeMgr.resetMultiSePos(); mEtcSeMgr.resetMultiSePos(); @@ -361,50 +455,52 @@ void Z2EnvSeMgr::resetSceneInner() { /* 802C6AC0-802C6C1C 2C1400 015C+00 0/0 1/1 0/0 .text initSceneEnvSe__10Z2EnvSeMgrFlScf */ -void Z2EnvSeMgr::initSceneEnvSe(s32 param_1, s8 param_2, f32 param_3) { +void Z2EnvSeMgr::initSceneEnvSe(s32 sceneID, s8 room, f32 param_3) { field_0x60 = -1.0f; if (-1.0f == param_3) { return; } + u8 r6 = 100.0f * param_3; u8 uVar3 = 0; - switch(param_1) { - case 0x1e: - switch(param_2) { - case 0xd: + + switch(sceneID) { + case Z2SCENE_HYRULE_FIELD: + switch(room) { + case 13: uVar3 = 10; break; case 7: case 9: - case 0xb: - case 0xc: + case 11: + case 12: uVar3 = 2; break; case 8: - case 0xa: + case 10: default: uVar3 = 6; break; } break; - case 0x1f: - switch(param_2) { + case Z2SCENE_CASTLE_TOWN_GATES: + switch(room) { case 8: - case 0x10: + case 16: uVar3 = 6; break; - case 0x11: + case 17: uVar3 = 10; break; } break; - case 0x20: + case Z2SCENE_HYLIA_BRIDGE_BATTLE: uVar3 = 10; break; - case 0x22: + case Z2SCENE_ELDIN_BRIDGE_BATTLE: uVar3 = 6; break; - case 0x45: + case Z2SCENE_FINAL_BATTLE_CUTSCENE: uVar3 = 7; break; } @@ -429,23 +525,27 @@ void Z2EnvSeMgr::initStaticEnvSe(u8 param_1, u8 param_2, u8 param_3, u8 param_4, f32 dVar7; f32 dVar6; f32 fVar1; + if (-1.0f == field_0x60) { if (param_2 >= 100) { dVar7 = 1.0f; } else { dVar7 = 0.01f * param_2; } + if (param_3 == 0xff) { dVar6 = 1.0f; } else { dVar6 = 0.01f * param_3; } + if (param_4 == 0xff) { fVar1 = 0.0f; } else { field_0x3c = *param_5; fVar1 = 0.1f * param_4; } + if (field_0x38 != 0 && field_0x38 == param_1) { field_0x39 = 100; if (dVar7 != field_0x48) { @@ -455,6 +555,7 @@ void Z2EnvSeMgr::initStaticEnvSe(u8 param_1, u8 param_2, u8 param_3, u8 param_4, field_0x48 = dVar7; field_0x54 = 0.0f; } + if (dVar6 != field_0x4c) { field_0x58 = (dVar6 - field_0x4c) / 100.0f; @@ -462,6 +563,7 @@ void Z2EnvSeMgr::initStaticEnvSe(u8 param_1, u8 param_2, u8 param_3, u8 param_4, field_0x4c = dVar6; field_0x58 = 0.0f; } + if (fVar1 != field_0x50) { field_0x5c = (fVar1 - field_0x50) / 100.0f; @@ -477,6 +579,7 @@ void Z2EnvSeMgr::initStaticEnvSe(u8 param_1, u8 param_2, u8 param_3, u8 param_4, field_0x58 = 0.0f; field_0x5c = 0.0f; } + switch (param_1) { case 1: field_0x0.setPanParam( @@ -561,15 +664,17 @@ void Z2EnvSeMgr::initStaticEnvSe(u8 param_1, u8 param_2, u8 param_3, u8 param_4, 1.0f, false, true, 0.0018554000416770577f, 0.0008553999941796064f); } + field_0x38 = param_1; } } /* 802C70C8-802C780C 2C1A08 0744+00 2/1 1/1 0/0 .text startStaticEnvSe__10Z2EnvSeMgrFSc */ -bool Z2EnvSeMgr::startStaticEnvSe(s8 param_1) { +bool Z2EnvSeMgr::startStaticEnvSe(s8 reverb) { field_0x1b8 = 100; - f32 local_90 = param_1 / 127.0f; + + f32 local_90 = reverb / 127.0f; if (field_0x39 != 0) { field_0x48 += field_0x54; field_0x4c += field_0x58; @@ -581,26 +686,30 @@ bool Z2EnvSeMgr::startStaticEnvSe(s8 param_1) { field_0x5c = 0.0f; } } + field_0x0.calcPan(); field_0x1c.calcPan(); + JAISoundID aJStack_94; - JAISoundID aJStack_98 = 0xffffffff; + JAISoundID aJStack_98 = 0xFFFFFFFF; f32 local_9c = 1.0f; if (0.0f != field_0x50) { Vec VStack_8c; Z2GetAudience()->convertAbsToRel(field_0x3c, &VStack_8c, 0); local_9c = Z2GetAudience()->calcRelPosVolume(VStack_8c, field_0x50, 0); } + f32 dVar22 = field_0x48 * local_9c; f32 dVar21 = field_0x48 * local_9c; f32 dVar20 = field_0x4c; f32 dVar18 = field_0x4c; - u8 bVar15 = Z2GetStatusMgr()->getHour(); + u8 hour = Z2GetStatusMgr()->getHour(); + switch (field_0x38) { case 0: return false; case 1: - if (bVar15 >= 6 && bVar15 <= 18) { + if (hour >= 6 && hour <= 18) { aJStack_94 = Z2SE_ENV_FOREST_DAY; aJStack_98 = Z2SE_ENV_FORESTWIND; dVar21 *= 0.7f; @@ -610,7 +719,7 @@ bool Z2EnvSeMgr::startStaticEnvSe(s8 param_1) { } break; case 2: - if (bVar15 >= 6 && bVar15 <= 18) { + if (hour >= 6 && hour <= 18) { dVar22 *= 0.7f; dVar21 *= 0.7f; } @@ -630,36 +739,36 @@ bool Z2EnvSeMgr::startStaticEnvSe(s8 param_1) { dVar22 *= Z2Calc::getParamByExp(mSnowPower, 64.0f, 127.0f, 0.4f, 0.35f, - 1.0f, Z2Calc::CURVE_SIGN_1); + 1.0f, Z2Calc::CURVE_POSITIVE); dVar20 *= Z2Calc::getParamByExp(mSnowPower, 64.0f, 127.0f, 0.4f, 1.15f, - 1.6f, Z2Calc::CURVE_SIGN_1); + 1.6f, Z2Calc::CURVE_POSITIVE); dVar21 *= Z2Calc::getParamByExp(mSnowPower, 64.0f, 127.0f, 0.3f, 0.2f, - 1.0f, Z2Calc::CURVE_SIGN_1); + 1.0f, Z2Calc::CURVE_POSITIVE); dVar18 *= Z2Calc::getParamByExp(mSnowPower, 127.0f, 64.0f, 0.4f, 0.65f, - 0.9f, Z2Calc::CURVE_SIGN_0); + 0.9f, Z2Calc::CURVE_NEGATIVE); } else { dVar22 *= Z2Calc::getParamByExp(mSnowPower, 0.0f, 64.0f, 0.4f, 0.2f, - 0.35f, Z2Calc::CURVE_SIGN_0); + 0.35f, Z2Calc::CURVE_NEGATIVE); dVar20 *= Z2Calc::getParamByExp(mSnowPower, 0.0f, 64.0f, 0.3f, 1.0f, - 1.15f, Z2Calc::CURVE_SIGN_0); + 1.15f, Z2Calc::CURVE_NEGATIVE); dVar21 *= Z2Calc::getParamByExp(mSnowPower, 0.0f, 64.0f, 0.3f, 0.1f, - 0.2f, Z2Calc::CURVE_SIGN_0); + 0.2f, Z2Calc::CURVE_NEGATIVE); dVar18 *= ::Z2Calc::getParamByExp(mSnowPower, 64.0f, 0.0f, 0.4f, 0.9f, - 1.0f, Z2Calc::CURVE_SIGN_1); + 1.0f, Z2Calc::CURVE_POSITIVE); } break; case 11: @@ -670,7 +779,7 @@ bool Z2EnvSeMgr::startStaticEnvSe(s8 param_1) { aJStack_98 = Z2SE_ENV_WINDTAG_SLOW; break; case 6: - if (bVar15 >= 6 && bVar15 <= 18) { + if (hour >= 6 && hour <= 18) { dVar22 *= 0.1f; dVar21 *= 0.12f; } else { @@ -681,7 +790,7 @@ bool Z2EnvSeMgr::startStaticEnvSe(s8 param_1) { aJStack_98 = Z2SE_ENV_FIELD_WIND_R; break; case 10: - if (bVar15 >= 6 && bVar15 <= 18) { + if (hour >= 6 && hour <= 18) { dVar22 *= 0.1f; dVar21 *= 0.6f; } else { @@ -707,51 +816,51 @@ bool Z2EnvSeMgr::startStaticEnvSe(s8 param_1) { default: return false; } + dVar22 *= 1.0f - getFogDensity(); dVar21 *= 1.0f - getFogDensity(); if (Z2GetSceneMgr()->isInDarkness()) { dVar22 *= 0.75f; dVar21 *= 0.75f; } - JAISoundHandle* pJVar10 = field_0x0.getHandle(); - if (*pJVar10) { - if ((u32)(*pJVar10)->getID() != (u32)aJStack_94) { - (*pJVar10)->stop(0x1e); - (*pJVar10)->releaseHandle(); + + JAISoundHandle* handle = field_0x0.getHandle(); + if (*handle) { + if ((u32)(*handle)->getID() != (u32)aJStack_94) { + (*handle)->stop(30); + (*handle)->releaseHandle(); } } - pJVar10 = field_0x1c.getHandle(); - if (*pJVar10) { - if ((u32)(*pJVar10)->getID() != (u32)aJStack_98) { - (*pJVar10)->stop(0x1e); - (*pJVar10)->releaseHandle(); + + handle = field_0x1c.getHandle(); + if (*handle) { + if ((u32)(*handle)->getID() != (u32)aJStack_98) { + (*handle)->stop(30); + (*handle)->releaseHandle(); } } - bool iVar9 = field_0x0.startEnvSeAutoPanLevel(aJStack_94, local_90, - dVar22, dVar20); - bool iVar11 = field_0x1c.startEnvSeAutoPanLevel(aJStack_98, - local_90, dVar21, dVar18); + + bool iVar9 = field_0x0.startEnvSeAutoPanLevel(aJStack_94, local_90, dVar22, dVar20); + bool iVar11 = field_0x1c.startEnvSeAutoPanLevel(aJStack_98, local_90, dVar21, dVar18); + if (field_0x38 == 4) { - JAISoundHandle* pJVar10 = field_0x0.getHandle(); - JAISoundHandle* this_02 = field_0x1c.getHandle(); - if (*pJVar10) { - Z2GetSoundStarter()->setPortData(pJVar10, 6, mSnowPower, -1); + JAISoundHandle* handle = field_0x0.getHandle(); + JAISoundHandle* handle2 = field_0x1c.getHandle(); + if (*handle) { + Z2GetSoundStarter()->setPortData(handle, 6, mSnowPower, -1); } - if (*this_02) { - Z2GetSoundStarter()->setPortData(this_02, 6, mSnowPower, -1); + if (*handle2) { + Z2GetSoundStarter()->setPortData(handle2, 6, mSnowPower, -1); } } - bool rv = 0; - if (iVar9 && iVar11) { - rv = 1; - } - return rv; + + return iVar9 && iVar11; } /* 802C780C-802C7830 2C214C 0024+00 0/0 1/1 0/0 .text registWindowPos__10Z2EnvSeMgrFP3Vec */ -void Z2EnvSeMgr::registWindowPos(Vec* param_0) { - field_0x64.registMultiSePos(param_0); +void Z2EnvSeMgr::registWindowPos(Vec* posPtr) { + field_0x64.registMultiSePos(posPtr); } /* 802C7830-802C7CF4 2C2170 04C4+00 1/1 1/1 0/0 .text startRainSe__10Z2EnvSeMgrFlSc */ @@ -759,12 +868,15 @@ bool Z2EnvSeMgr::startRainSe(s32 param_1, s8 param_2) { if (mSnowPower > 0) { return false; } + mSnowPower = 1; + JAISoundID aJStack_118 = 0xffffffff; JAISoundID aJStack_11c = 0xffffffff; JAISoundID aJStack_120 = 0xffffffff; f32 dVar21 = param_2 / 127.0f; s8 unaff_r29; + switch (param_1) { case 0: aJStack_118 = Z2SE_ENV_RAIN_NORMAL_L; @@ -787,60 +899,49 @@ bool Z2EnvSeMgr::startRainSe(s32 param_1, s8 param_2) { } if (field_0x64.getPosCount() < 0) { - f32 dVar13 = - Z2Calc::linearTransform(field_0x90.calcNoise1f(), 0.0f, 1.0f, 0.7f, 1.0f, true); - f32 dVar14 = - Z2Calc::linearTransform(field_0xa0.calcNoise1f(), 0.0f, 1.0f, 0.7f, 1.0f, true); - f32 dVar15 = - Z2Calc::linearTransform(field_0xd0.calcNoise1f(), 0.0f, 1.0f, 0.8f, 1.1f, true); - f32 dVar16 = - Z2Calc::linearTransform(field_0xe0.calcNoise1f(), 0.0f, 1.0f, 0.8f, 1.1f, true); - f32 dVar17 = Z2Calc::getParamByExp(field_0xb0.calcNoise1f(), 0.0f, 1.0f, 0.3f, 0.0f, 0.3f, - Z2Calc::CURVE_SIGN_1); - f32 dVar18 = Z2Calc::getParamByExp(field_0xc0.calcNoise1f(), 0.0f, 1.0f, 0.3f, 1.0f, 0.7f, - Z2Calc::CURVE_SIGN_1); - f32 dVar19 = Z2Calc::getParamByExp(field_0xf0.calcNoise1f(), 0.0f, 1.0f, 0.3f, 0.0f, 1.0f, - Z2Calc::CURVE_SIGN_1); - f32 dVar20 = Z2Calc::getParamByExp(field_0x100.calcNoise1f(), 0.0f, 1.0f, 0.3f, 0.0f, 1.0f, - Z2Calc::CURVE_SIGN_1); + f32 dVar13 = Z2Calc::linearTransform(field_0x90.calcNoise1f(), 0.0f, 1.0f, 0.7f, 1.0f, true); + f32 dVar14 = Z2Calc::linearTransform(field_0xa0.calcNoise1f(), 0.0f, 1.0f, 0.7f, 1.0f, true); + f32 dVar15 = Z2Calc::linearTransform(field_0xd0.calcNoise1f(), 0.0f, 1.0f, 0.8f, 1.1f, true); + f32 dVar16 = Z2Calc::linearTransform(field_0xe0.calcNoise1f(), 0.0f, 1.0f, 0.8f, 1.1f, true); + f32 dVar17 = Z2Calc::getParamByExp(field_0xb0.calcNoise1f(), 0.0f, 1.0f, 0.3f, 0.0f, 0.3f, Z2Calc::CURVE_POSITIVE); + f32 dVar18 = Z2Calc::getParamByExp(field_0xc0.calcNoise1f(), 0.0f, 1.0f, 0.3f, 1.0f, 0.7f, Z2Calc::CURVE_POSITIVE); + f32 dVar19 = Z2Calc::getParamByExp(field_0xf0.calcNoise1f(), 0.0f, 1.0f, 0.3f, 0.0f, 1.0f, Z2Calc::CURVE_POSITIVE); + f32 dVar20 = Z2Calc::getParamByExp(field_0x100.calcNoise1f(), 0.0f, 1.0f, 0.3f, 0.0f, 1.0f, Z2Calc::CURVE_POSITIVE); + if (Z2GetSceneMgr()->isInDarkness()) { dVar13 *= 0.5f; dVar14 *= 0.5f; } - JAISoundHandle* pJVar8 = field_0x80.getHandle(); - if (*pJVar8) { - if ((*pJVar8)->getID() != (u32)aJStack_118) { - (*pJVar8)->stop(0x1e); - (*pJVar8)->releaseHandle(); - } - } - pJVar8 = field_0x88.getHandle(); - if (*pJVar8) { - if ((*pJVar8)->getID() != (u32)aJStack_11c) { - (*pJVar8)->stop(0x1e); - (*pJVar8)->releaseHandle(); + + JAISoundHandle* handle = field_0x80.getHandle(); + if (*handle) { + if ((*handle)->getID() != (u32)aJStack_118) { + (*handle)->stop(30); + (*handle)->releaseHandle(); } } - bool iVar7 = - field_0x80.startEnvSeLevel(aJStack_118, dVar21, dVar13, dVar17, dVar19, dVar15, 0); - bool iVar9 = - field_0x88.startEnvSeLevel(aJStack_11c, dVar21, dVar14, dVar18, dVar20, dVar16, 0); - bool uVar5 = 0; - if (iVar7 && iVar9) { - uVar5 = 1; + handle = field_0x88.getHandle(); + if (*handle) { + if ((*handle)->getID() != (u32)aJStack_11c) { + (*handle)->stop(30); + (*handle)->releaseHandle(); + } } - return uVar5; + + bool iVar7 = field_0x80.startEnvSeLevel(aJStack_118, dVar21, dVar13, dVar17, dVar19, dVar15, 0); + bool iVar9 = field_0x88.startEnvSeLevel(aJStack_11c, dVar21, dVar14, dVar18, dVar20, dVar16, 0); + return iVar7 && iVar9; } f32 dVar13 = Z2Calc::linearTransform(field_0x90.calcNoise1f(), 0.0f, 1.0f, 0.7f, 1.0f, true); f32 dVar14 = Z2Calc::linearTransform(field_0xd0.calcNoise1f(), 0.0f, 1.0f, 0.8f, 1.1f, true); - JAISoundHandle* pJVar8 = field_0x80.getHandle(); - if (*pJVar8) { - if ((*pJVar8)->getID() != (u32)aJStack_120) { - (*pJVar8)->stop(0x1e); - (*pJVar8)->releaseHandle(); + JAISoundHandle* handle = field_0x80.getHandle(); + if (*handle) { + if ((*handle)->getID() != (u32)aJStack_120) { + (*handle)->stop(30); + (*handle)->releaseHandle(); } } @@ -858,8 +959,7 @@ void Z2EnvSeMgr::startNearThunderSe(s8 param_1) { dVar10 += 0.5f; f32 dVar8 = Z2Calc::getRandom(0.25f, Z2Calc::cEqualCSlope, Z2Calc::cEqualPSlope); dVar8 += 0.5f; - field_0x118.startEnvSe(Z2SE_ENV_THUNDER_NEAR, param_1 / 127.0f, 1.0f, dVar10, dVar8, 1.0f, - 0); + field_0x118.startEnvSe(Z2SE_ENV_THUNDER_NEAR, param_1 / 127.0f, 1.0f, dVar10, dVar8, 1.0f, 0); } else { f32 maxVolume = field_0x64.getMaxVolume(); field_0x118.startEnvSe(Z2SE_ENV_THUND_NEAR_WIN, param_1 / 127.0f, maxVolume, @@ -868,20 +968,20 @@ void Z2EnvSeMgr::startNearThunderSe(s8 param_1) { } /* 802C7E68-802C7FB4 2C27A8 014C+00 0/0 2/2 0/0 .text startFarThunderSe__10Z2EnvSeMgrFP3VecSc */ -void Z2EnvSeMgr::startFarThunderSe(Vec* param_1, s8 param_2) { +void Z2EnvSeMgr::startFarThunderSe(Vec* posPtr, s8 reverb) { if (field_0x64.getPosCount() < 0) { - field_0x110.setPos(param_1); - field_0x110.startEnvSe(Z2SE_ENV_THUNDER_FAR, param_2 / 127.0f, 1.0f, 0.5f, 0.0f, 1.0f, 0); + field_0x110.setPos(posPtr); + field_0x110.startEnvSe(Z2SE_ENV_THUNDER_FAR, reverb / 127.0f, 1.0f, 0.5f, 0.0f, 1.0f, 0); } else { f32 maxVolume = field_0x64.getMaxVolume(); - field_0x110.startEnvSe(Z2SE_ENV_THUND_FAR_WIN, param_2 / 127.0f, maxVolume, + field_0x110.startEnvSe(Z2SE_ENV_THUND_FAR_WIN, reverb / 127.0f, maxVolume, field_0x64.getPanPower(), field_0x64.getDolbyPower(), 1.0f, 0); } } /* 802C7FB4-802C7FBC -00001 0008+00 0/0 0/0 0/0 .text setSnowPower__10Z2EnvSeMgrFSc */ -void Z2EnvSeMgr::setSnowPower(s8 param_0) { - mSnowPower = param_0; +void Z2EnvSeMgr::setSnowPower(s8 power) { + mSnowPower = power; } /* 802C7FBC-802C7FC8 2C28FC 000C+00 0/0 1/1 1/1 .text initStrongWindSe__10Z2EnvSeMgrFv */ @@ -890,18 +990,19 @@ void Z2EnvSeMgr::initStrongWindSe() { } /* 802C7FC8-802C800C 2C2908 0044+00 0/0 1/1 1/1 .text setWindDirection__10Z2EnvSeMgrFP3Vec */ -void Z2EnvSeMgr::setWindDirection(Vec* param_0) { +void Z2EnvSeMgr::setWindDirection(Vec* dir) { if (mWindType == WIND_TYPE_3) { field_0x144.setPanDir(const_cast(&Z2Calc::cNullVec)); } else { - field_0x144.setPanDir(param_0); + field_0x144.setPanDir(dir); } } /* 802C800C-802C80F8 2C294C 00EC+00 0/0 1/1 1/1 .text startStrongWindSe__10Z2EnvSeMgrFSc */ -bool Z2EnvSeMgr::startStrongWindSe(s8 param_1) { +bool Z2EnvSeMgr::startStrongWindSe(s8 reverb) { field_0x144.calcPan(1.0f); + JAISoundID aJStack_24 = 0xffffffff; switch (mWindType) { case WIND_TYPE_1: @@ -917,7 +1018,8 @@ bool Z2EnvSeMgr::startStrongWindSe(s8 param_1) { return false; } - return field_0x144.startEnvSeDirLevel(aJStack_24, param_1 / 127.0f, 1.0f); + f32 fxMix = reverb / 127.0f; + return field_0x144.startEnvSeDirLevel(aJStack_24, fxMix, 1.0f); } /* 802C80F8-802C8234 2C2A38 013C+00 0/0 1/1 0/0 .text initRiverSe__10Z2EnvSeMgrFUcUcUcUc @@ -929,16 +1031,19 @@ void Z2EnvSeMgr::initRiverSe(u8 param_1, u8 param_2, u8 param_3, u8 param_4) { } else { field_0x1ac = 0.01f * param_2; } + if (param_3 == 0xff) { field_0x1b0 = 1.0f; } else { field_0x1b0 = 0.01f * param_3; } + if (param_4 == 0xff) { field_0x1b4 = 1.0f; } else { field_0x1b4 = 0.1f * param_4; } + switch (param_1) { case 1: mRiverSeMgr.setVolumeScale(1.5f * field_0x1b4); @@ -956,14 +1061,21 @@ void Z2EnvSeMgr::initRiverSe(u8 param_1, u8 param_2, u8 param_3, u8 param_4) { } /* 802C8234-802C8258 2C2B74 0024+00 1/1 1/1 0/0 .text registRiverSePos__10Z2EnvSeMgrFP3Vec */ -void Z2EnvSeMgr::registRiverSePos(Vec* param_0) { - mRiverSeMgr.registMultiSePos(param_0); +void Z2EnvSeMgr::registRiverSePos(Vec* posPtr) { + f32 var_f31; + if (posPtr != NULL) { + + } else { + var_f31 = posPtr->z; + } + + mRiverSeMgr.registMultiSePos(posPtr); } /* 802C8258-802C8300 2C2B98 00A8+00 0/0 0/0 1/1 .text setHyrulSewerOpen__10Z2EnvSeMgrFb */ -void Z2EnvSeMgr::setHyrulSewerOpen(bool param_0) { - if (param_0) { +void Z2EnvSeMgr::setHyrulSewerOpen(bool isSewerOpen) { + if (isSewerOpen) { field_0x1b8 = 1; Z2GetSeMgr()->seStart(Z2SE_ENV_SEWER_FILL, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); } else { @@ -975,16 +1087,16 @@ void Z2EnvSeMgr::setHyrulSewerOpen(bool param_0) { /* 802C8300-802C8730 2C2C40 0430+00 2/1 1/1 0/0 .text startRiverSe__10Z2EnvSeMgrFSc */ bool Z2EnvSeMgr::startRiverSe(s8 param_1) { #ifdef DEBUG - char* spotName = sSpotName; + const char** spotName = sSpotName; #endif if (Z2GetStatusMgr()->mCameraMapInfo == 6) { switch (Z2GetSceneMgr()->getCurrentSceneNum()) { - case 5: + case Z2SCENE_FARON_WOODS: if (Z2GetSceneMgr()->getCurrentRoomNum() != 1) { break; } - case 0x10: + case Z2SCENE_LAKE_HYLIA: if (Z2GetStatusMgr()->mPolygonPosition.y < -14500.0f) { break; } @@ -992,16 +1104,17 @@ bool Z2EnvSeMgr::startRiverSe(s8 param_1) { if ((Z2GetStatusMgr()->mPolygonPosition.y > 2000.0f)) { break; } - case 0x15: - case 0x1e: - case 0x1f: - case 0x2e: + case Z2SCENE_ZORAS_DOMAIN: + case Z2SCENE_HYRULE_FIELD: + case Z2SCENE_CASTLE_TOWN_GATES: + case Z2SCENE_LAKEBED_TEMPLE: break; default: registRiverSePos(&Z2GetStatusMgr()->mPolygonPosition); break; } } + if (mRiverSeMgr.getPosCount() < 0) { return false; } @@ -1080,16 +1193,19 @@ void Z2EnvSeMgr::initFallSe(u8 param_1, u8 param_2, u8 param_3, u8 param_4) { } else { field_0x1e4 = 0.01f * param_2; } + if (param_3 == 0xff) { field_0x1e8 = 1.0f; } else { field_0x1e8 = 0.01f * param_3; } + if (param_4 == 0xff) { field_0x1ec = 1.0f; } else { field_0x1ec = 0.1f * param_4; } + switch (param_1) { case 8: mFallSeMgr.setVolumeScale(3.0f * field_0x1ec); @@ -1108,40 +1224,49 @@ void Z2EnvSeMgr::initFallSe(u8 param_1, u8 param_2, u8 param_3, u8 param_4) { /* 802C886C-802C8890 2C31AC 0024+00 0/0 1/1 0/0 .text registFallSePos__10Z2EnvSeMgrFP3Vec */ -void Z2EnvSeMgr::registFallSePos(Vec* param_0) { - mFallSeMgr.registMultiSePos(param_0); +void Z2EnvSeMgr::registFallSePos(Vec* posPtr) { + f32 var_f31; + if (posPtr != NULL) { + + } else { + var_f31 = posPtr->z; + } + + mFallSeMgr.registMultiSePos(posPtr); } /* 802C8890-802C8A90 2C31D0 0200+00 1/1 1/1 0/0 .text startFallSe__10Z2EnvSeMgrFSc */ -bool Z2EnvSeMgr::startFallSe(s8 param_1) { +bool Z2EnvSeMgr::startFallSe(s8 reverb) { if (mFallSeMgr.getPosCount() < 0) { return false; } - JAISoundID aJStack_80 = 0xffffffff; - f32 dVar14 = param_1 / 127.0f; - f32 dVar13 = ((field_0x1e4 * mFallSeMgr.getMaxVolume()) * - Z2Calc::linearTransform(field_0x90.calcNoise1f(), 0.0f, 1.0f, 0.7f, 1.0f, true)); - f32 dVar15 = (field_0x1e8 * - Z2Calc::linearTransform(field_0xd0.calcNoise1f(), 0.0f, 1.0f, 0.8f, 1.1f, true)); - f32 dVar11 = mFallSeMgr.getPanPower(); - f32 dVar12 = mFallSeMgr.getDolbyPower(); + + JAISoundID soundID = 0xffffffff; + bool rv = false; + + f32 fxMix = reverb / 127.0f; + f32 volume = ((field_0x1e4 * mFallSeMgr.getMaxVolume()) * Z2Calc::linearTransform(field_0x90.calcNoise1f(), 0.0f, 1.0f, 0.7f, 1.0f, true)); + f32 pitch = (field_0x1e8 * Z2Calc::linearTransform(field_0xd0.calcNoise1f(), 0.0f, 1.0f, 0.8f, 1.1f, true)); + f32 pan = mFallSeMgr.getPanPower(); + f32 dolby = mFallSeMgr.getDolbyPower(); + switch (field_0x1e0) { case 8: - aJStack_80 = Z2SE_ENV_WATERFALL_NORMAL; + soundID = Z2SE_ENV_WATERFALL_NORMAL; break; case 9: - aJStack_80 = Z2SE_ENV_FALL_LV1BOSS; + soundID = Z2SE_ENV_FALL_LV1BOSS; break; case 10: - aJStack_80 = Z2SE_ENV_SPIRIT_FALL; - dVar15 *= 0.75f; + soundID = Z2SE_ENV_SPIRIT_FALL; + pitch *= 0.75f; break; case 11: - aJStack_80 = Z2SE_ENV_SAND_FALL; + soundID = Z2SE_ENV_SAND_FALL; break; } - bool rv = field_0x1d8.startEnvSeLevel(aJStack_80, dVar14, dVar13, dVar11, dVar12, dVar15, 0); + rv = field_0x1d8.startEnvSeLevel(soundID, fxMix, volume, pan, dolby, pitch, 0); mFallSeMgr.resetMultiSePos(); return rv; } @@ -1154,16 +1279,19 @@ void Z2EnvSeMgr::initEtcSe(u8 param_1, u8 param_2, u8 param_3, u8 param_4) { } else { field_0x218 = 0.01f * param_2; } + if (param_3 == 0xff) { field_0x21c = 1.0f; } else { field_0x21c = 0.01f * param_3; } + if (param_4 == 0xff) { field_0x220 = 1.0f; } else { field_0x220 = 0.1f * param_4; } + switch (param_1) { case 17: mEtcSeMgr.setVolumeScale(2.0f * field_0x220); @@ -1193,13 +1321,17 @@ void Z2EnvSeMgr::initEtcSe(u8 param_1, u8 param_2, u8 param_3, u8 param_4) { /* 802C8C24-802C8C48 2C3564 0024+00 1/1 1/1 0/0 .text registEtcSePos__10Z2EnvSeMgrFP3Vec */ -void Z2EnvSeMgr::registEtcSePos(Vec* param_0) { - mEtcSeMgr.registMultiSePos(param_0); +void Z2EnvSeMgr::registEtcSePos(Vec* posPtr) { + mEtcSeMgr.registMultiSePos(posPtr); } /* 802C8C48-802C92C8 2C3588 0680+00 2/1 1/1 0/0 .text startEtcSe__10Z2EnvSeMgrFSc */ -bool Z2EnvSeMgr::startEtcSe(s8 param_1) { - f32 dVar17 = param_1 / 127.0f; +bool Z2EnvSeMgr::startEtcSe(s8 reverb) { + #ifdef DEBUG + const char** spotName = sSpotName; + #endif + + f32 dVar17 = reverb / 127.0f; f32 dVar19 = (field_0x218 * mEtcSeMgr.getMaxVolume()); f32 dVar14 = mEtcSeMgr.getPanPower(); f32 dVar15 = mEtcSeMgr.getDolbyPower(); @@ -1207,6 +1339,7 @@ bool Z2EnvSeMgr::startEtcSe(s8 param_1) { f32 dVar18 = field_0x21c; f32 local_90, local_98, local_9c, local_a0; bool iVar5, iVar6, iVar7, iVar8; + switch (field_0x214) { case 0x11: local_90 = Z2Calc::linearTransform(field_0x120.calcNoise1f(), 0.0f, 1.0f, 0.01f, 1.0f, @@ -1221,11 +1354,7 @@ bool Z2EnvSeMgr::startEtcSe(s8 param_1) { iVar6 = field_0x0.startEnvSeAutoPanLevel(JA_SE_ATM_WIND_1, dVar17, local_90, dVar18); iVar7 = field_0x1c.startEnvSeAutoPanLevel(JA_SE_ATM_WIND_1, dVar17, 0.7f * local_90, (0.8f * dVar18)); - iVar5 = false; - if (iVar8 && iVar6 && iVar7) { - iVar5 = true; - } - rv = iVar5; + rv = iVar8 && iVar6 && iVar7; break; case 0x12: local_90 = ::Z2Calc::linearTransform(field_0x120.calcNoise1f(), 0.0f, 1.0f, 0.4f, 0.8f, @@ -1291,9 +1420,9 @@ bool Z2EnvSeMgr::startEtcSe(s8 param_1) { break; case 0x10: local_98 = Z2Calc::getParamByExp(getFogDensity(), 0.4f, 1.0f, 0.2f, 0.2f, 1.0f, - Z2Calc::CURVE_SIGN_0); + Z2Calc::CURVE_NEGATIVE); local_9c = Z2Calc::getParamByExp(getFogDensity(), 0.4f, 1.0f, 0.2f, 0.75f, 1.0f, - Z2Calc::CURVE_SIGN_0); + Z2Calc::CURVE_NEGATIVE); local_a0 = field_0x2e8.calcNoise1f(); rv = field_0x240.startEnvSeLevel(Z2SE_ENV_PUPPET_FOG_L, 0.3f, (dVar19 * ((0.332f + 0.668f * local_a0) * local_98)), @@ -1306,37 +1435,40 @@ bool Z2EnvSeMgr::startEtcSe(s8 param_1) { default: return false; } + mEtcSeMgr.resetMultiSePos(); return rv; } /* 802C92C8-802C92EC 2C3C08 0024+00 0/0 0/0 1/1 .text registWolfSmellSePos__10Z2EnvSeMgrFP3Vec */ -void Z2EnvSeMgr::registWolfSmellSePos(Vec* param_0) { - mWolfSmellSeMgr.registMultiSePos(param_0); +void Z2EnvSeMgr::registWolfSmellSePos(Vec* posPtr) { + mWolfSmellSeMgr.registMultiSePos(posPtr); } /* 802C92EC-802C93A0 2C3C2C 00B4+00 0/0 0/0 1/1 .text startFogWipeTrigger__10Z2EnvSeMgrFP3Vec */ -bool Z2EnvSeMgr::startFogWipeTrigger(Vec* param_0) { +void Z2EnvSeMgr::startFogWipeTrigger(Vec* pos) { + JUT_ASSERT(1919, pos); + if (*field_0x240.getHandle()) { f32 fogDensity = getFogDensity(); u32 fogDensity2 = 340.0f * getFogDensity(); - return Z2GetSoundStarter()->startSound(Z2SE_ENV_FOG_WIPE, field_0x20c.getHandle(), - (JGeometry::TVec3*)param_0, fogDensity2, 0.3f, + Z2GetSoundStarter()->startSound(Z2SE_ENV_FOG_WIPE, field_0x20c.getHandle(), + (JGeometry::TVec3*)pos, fogDensity2, 0.3f, 1.0f, fogDensity, -1.0f, -1.0f, 0); } - //! @bug does not always return a value } /* 802C93A0-802C93E4 2C3CE0 0044+00 0/0 0/0 1/1 .text setFogWipeWidth__10Z2EnvSeMgrFf */ -void Z2EnvSeMgr::setFogWipeWidth(f32 param_0) { - mFogDensity = Z2Calc::linearTransform(param_0, 0.0f, 1.0f, 1.0f, 0.4f, true); +void Z2EnvSeMgr::setFogWipeWidth(f32 width) { + mFogDensity = Z2Calc::linearTransform(width, 0.0f, 1.0f, 1.0f, 0.4f, true); } /* 802C93E4-802C9400 2C3D24 001C+00 3/3 2/2 0/0 .text getFogDensity__10Z2EnvSeMgrFv */ f32 Z2EnvSeMgr::getFogDensity() { - if (field_0x214 == 0x10) { + if (field_0x214 == 16) { return mFogDensity; } + return 0.0f; } @@ -1352,16 +1484,15 @@ bool Z2EnvSeMgr::startFogSe() { f32 dVar12 = 0.5f - (dVar10 * fVar2) / 2; int iVar1 = 20; f32 fVar3 = 0.5f; - bool iVar6 = - field_0x240.startEnvSeLevel(Z2SE_ENV_PUPPET_FOG_L, iVar1, dVar14, dVar12, fVar3, dVar13, 0); + bool iVar6 = field_0x240.startEnvSeLevel(Z2SE_ENV_PUPPET_FOG_L, iVar1, dVar14, dVar12, fVar3, dVar13, 0); + dVar10 = field_0x2f8.calcNoise1f(); dVar14 = (ratio + ((1.0f - ratio) * dVar10)); dVar13 = ((1.0f - fVar1) + dVar10 * fVar1); dVar12 = (0.5f + (dVar10 * fVar2) / 2); iVar1 = 20; fVar3 = 0.5f; - iVar5 = field_0x274.startEnvSeLevel(Z2SE_ENV_PUPPET_FOG_R, iVar1, dVar14, dVar12, fVar3, - dVar13, 0); + iVar5 = field_0x274.startEnvSeLevel(Z2SE_ENV_PUPPET_FOG_R, iVar1, dVar14, dVar12, fVar3, dVar13, 0); return (iVar6 && iVar5); } @@ -1396,11 +1527,13 @@ void Z2EnvSeMgr::initLv3WaterSe(u8 param_1, u8 param_2, u8 param_3, u8 param_4) } else { field_0x24c = 0.01f * param_2; } + if (param_3 == 0xff) { field_0x250 = 1.0f; } else { field_0x250 = 0.01f * param_3; } + if (param_4 == 0xff) { field_0x254 = 1.0f; } else { @@ -1415,16 +1548,19 @@ void Z2EnvSeMgr::initLv3WaterSe(u8 param_1, u8 param_2, u8 param_3, u8 param_4) } else { field_0x280 = 0.01f * param_2; } + if (param_3 == 0xff) { field_0x284 = 1.0f; } else { field_0x284 = 0.01f * param_3; } + if (param_4 == 0xff) { field_0x288 = 1.0f; } else { field_0x288 = 0.1f * param_4; } + field_0x258.setVolumeScale(2.0f * field_0x288); break; case 116: @@ -1434,16 +1570,19 @@ void Z2EnvSeMgr::initLv3WaterSe(u8 param_1, u8 param_2, u8 param_3, u8 param_4) } else { field_0x280 = 0.01f * param_2; } + if (param_3 == 0xff) { field_0x284 = 1.0f; } else { field_0x284 = 0.01f * param_3; } + if (param_4 == 0xff) { field_0x288 = 1.0f; } else { field_0x288 = 0.1f * param_4; } + field_0x258.setVolumeScale(1.5f * field_0x288); break; case 112: @@ -1453,16 +1592,19 @@ void Z2EnvSeMgr::initLv3WaterSe(u8 param_1, u8 param_2, u8 param_3, u8 param_4) } else { field_0x2b4 = 0.01f *param_2; } + if (param_3 == 0xff) { field_0x2b8 = 1.0f; } else { field_0x2b8 = 0.01f * param_3; } + if (param_4 == 0xff) { field_0x2bc = 1.0f; } else { field_0x2bc = 0.1f * param_4; } + field_0x28c.setVolumeScale(2.0f * field_0x2bc); break; case 117: @@ -1472,39 +1614,45 @@ void Z2EnvSeMgr::initLv3WaterSe(u8 param_1, u8 param_2, u8 param_3, u8 param_4) } else { field_0x2b4 = 0.01f * param_2; } + if (param_3 == 0xff) { field_0x2b8 = 1.0f; } else { field_0x2b8 = 0.01f * param_3; } + if (param_4 == 0xff) { field_0x2bc = 1.0f; } else { field_0x2bc = 0.1f * param_4; } + field_0x28c.setVolumeScale(1.5f * field_0x2bc); break; - case 'w': + case 0x77: field_0x2b0 = param_1; if (param_2 >= 100) { field_0x2b4 = 1.0f; } else { field_0x2b4 = 0.01f * param_2; } + if (param_3 == 0xff) { field_0x2b8 = 1.0f; } else { field_0x2b8 = 0.01f * param_3; } + if (param_4 == 0xff) { field_0x2bc = 1.0f; } else { field_0x2bc = 0.1f * param_4; } + field_0x28c.setVolumeScale(3.0f * field_0x2bc); break; default: - if (Z2GetSceneMgr()->getCurrentSceneNum() == 46) { + if (Z2GetSceneMgr()->getCurrentSceneNum() == Z2SCENE_LAKEBED_TEMPLE) { switch (Z2GetSceneMgr()->getCurrentRoomNum()) { case 1: if (param_1 == 107) { @@ -1565,7 +1713,7 @@ void Z2EnvSeMgr::initLv3WaterSe(u8 param_1, u8 param_2, u8 param_3, u8 param_4) initFallSe(9, param_2, 0xa0, param_4); } break; - case 0xb: + case 11: if (param_1 == 100 || param_1 == 101) { initEtcSe(0x1e, param_2, param_3, param_4); } else if (param_1 == 103) { @@ -1574,14 +1722,14 @@ void Z2EnvSeMgr::initLv3WaterSe(u8 param_1, u8 param_2, u8 param_3, u8 param_4) initFallSe(9, param_2, 0x82, param_4); } break; - case 0xc: + case 12: if (param_1 == 103) { initLv3WaterSe(115, param_2, param_3, param_4); } else if (param_1 == 107) { initLv3WaterSe(111, param_2, 0x82, param_4); } break; - case 0xd: + case 13: if ((param_1 == 100) || (param_1 == 101)) { initEtcSe(0x1e, param_2, param_3, param_4); } else if (param_1 == 103) { @@ -1599,163 +1747,165 @@ void Z2EnvSeMgr::initLv3WaterSe(u8 param_1, u8 param_2, u8 param_3, u8 param_4) } /* 802C9F58-802CA794 2C4898 083C+00 2/0 1/1 0/0 .text registLv3WaterSePos__10Z2EnvSeMgrFUcP3Vec */ -void Z2EnvSeMgr::registLv3WaterSePos(u8 param_1, Vec* param_2) { +void Z2EnvSeMgr::registLv3WaterSePos(u8 param_1, Vec* posPtr) { switch (param_1) { case 110: case 115: - field_0x224.registMultiSePos(param_2); + field_0x224.registMultiSePos(posPtr); break; case 111: case 116: - field_0x258.registMultiSePos(param_2); + field_0x258.registMultiSePos(posPtr); break; case 112: case 117: case 119: - field_0x28c.registMultiSePos(param_2); + field_0x28c.registMultiSePos(posPtr); break; default: switch (Z2GetSceneMgr()->getCurrentRoomNum()) { case 1: if (param_1 == 107) { - mFallSeMgr.registMultiSePos(param_2); + mFallSeMgr.registMultiSePos(posPtr); } case 0: case 5: case 6: case 9: if (param_1 == 100) { - mEtcSeMgr.registMultiSePos(param_2); + mEtcSeMgr.registMultiSePos(posPtr); } break; case 2: if (param_1 == 100) { - mEtcSeMgr.registMultiSePos(param_2); + mEtcSeMgr.registMultiSePos(posPtr); } else if (param_1 == 103 && dComIfGs_isSaveSwitch(8)) { - field_0x224.registMultiSePos(param_2); + field_0x224.registMultiSePos(posPtr); } else if (param_1 == 104 && dComIfGs_isSaveSwitch(9)) { - field_0x224.registMultiSePos(param_2); + field_0x224.registMultiSePos(posPtr); } else if (param_1 == 105 && dComIfGs_isSaveSwitch(8) && dComIfGs_isSaveSwitch(3)) { - field_0x224.registMultiSePos(param_2); + field_0x224.registMultiSePos(posPtr); } else if (param_1 == 106 && dComIfGs_isSaveSwitch(9) && dComIfGs_isSaveSwitch(1)) { - field_0x224.registMultiSePos(param_2); + field_0x224.registMultiSePos(posPtr); } break; case 3: if (param_1 == 100 && !dComIfGs_isSaveSwitch(8) && !dComIfGs_isSaveSwitch(9)) { - mEtcSeMgr.registMultiSePos(param_2); + mEtcSeMgr.registMultiSePos(posPtr); } else if ((param_1 == 101 && dComIfGs_isSaveSwitch(8) && (!dComIfGs_isSaveSwitch(9))) || (!dComIfGs_isSaveSwitch(8) && dComIfGs_isSaveSwitch(9))) { - mEtcSeMgr.registMultiSePos(param_2); + mEtcSeMgr.registMultiSePos(posPtr); } else if (param_1 == 102 && dComIfGs_isSaveSwitch(8) && dComIfGs_isSaveSwitch(9)) { - mEtcSeMgr.registMultiSePos(param_2); + mEtcSeMgr.registMultiSePos(posPtr); } if (param_1 == 103 && dComIfGs_isSaveSwitch(8)) { - field_0x224.registMultiSePos(param_2); + field_0x224.registMultiSePos(posPtr); } if (param_1 == 104 && dComIfGs_isSaveSwitch(9)) { - field_0x224.registMultiSePos(param_2); + field_0x224.registMultiSePos(posPtr); } if (param_1 == 105 && dComIfGs_isSaveSwitch(8) && dComIfGs_isSaveSwitch(3)) { - field_0x28c.registMultiSePos(param_2); + field_0x28c.registMultiSePos(posPtr); } else if (param_1 == 107 && dComIfGs_isSaveSwitch(8) && !dComIfGs_isSaveSwitch(3)) { - field_0x258.registMultiSePos(param_2); + field_0x258.registMultiSePos(posPtr); } if (param_1 == 106 && dComIfGs_isSaveSwitch(9) && dComIfGs_isSaveSwitch(1)) { - field_0x28c.registMultiSePos(param_2); + field_0x28c.registMultiSePos(posPtr); } else if (param_1 == 108 && dComIfGs_isSaveSwitch(9) && !dComIfGs_isSaveSwitch(1)) { - field_0x258.registMultiSePos(param_2); + field_0x258.registMultiSePos(posPtr); } break; case 7: if (dComIfGs_isSaveSwitch(8)) { if (param_1 == 103) { - field_0x224.registMultiSePos(param_2); + field_0x224.registMultiSePos(posPtr); } else if (param_1 == 107) { - mFallSeMgr.registMultiSePos(param_2); + mFallSeMgr.registMultiSePos(posPtr); } } break; case 8: if (dComIfGs_isSaveSwitch(9) && dComIfGs_isSaveSwitch(1)) { if (param_1 == 101) { - mEtcSeMgr.registMultiSePos(param_2); + mEtcSeMgr.registMultiSePos(posPtr); } else if (param_1 == 103) { - field_0x224.registMultiSePos(param_2); + field_0x224.registMultiSePos(posPtr); } else if (param_1 == 107) { - field_0x258.registMultiSePos(param_2); + field_0x258.registMultiSePos(posPtr); } } else if (param_1 == 100) { - mEtcSeMgr.registMultiSePos(param_2); + mEtcSeMgr.registMultiSePos(posPtr); } break; case 10: if ((param_1 == 100) && dComIfGs_isSaveSwitch(0x31)) { - mEtcSeMgr.registMultiSePos(param_2); + mEtcSeMgr.registMultiSePos(posPtr); } else if (param_1 == 103 && dComIfGs_isSaveSwitch(0x31)) { - field_0x28c.registMultiSePos(param_2); + field_0x28c.registMultiSePos(posPtr); } else if (param_1 == 104 && (dComIfGs_isSaveSwitch(8))) { - field_0x258.registMultiSePos(param_2); + field_0x258.registMultiSePos(posPtr); } else if (param_1 == 107 && dComIfGs_isSaveSwitch(0x31)) { - mFallSeMgr.registMultiSePos(param_2); + mFallSeMgr.registMultiSePos(posPtr); } break; case 11: if (dComIfGs_isSaveSwitch(9)) { if (param_1 == 101) { - mEtcSeMgr.registMultiSePos(param_2); + mEtcSeMgr.registMultiSePos(posPtr); } else if (param_1 == 103) { - field_0x224.registMultiSePos(param_2); + field_0x224.registMultiSePos(posPtr); } else if (param_1 == 107) { - mFallSeMgr.registMultiSePos(param_2); + mFallSeMgr.registMultiSePos(posPtr); } } else if (param_1 == 100) { - mEtcSeMgr.registMultiSePos(param_2); + mEtcSeMgr.registMultiSePos(posPtr); } break; case 12: if (dComIfGs_isSaveSwitch(8) && dComIfGs_isSaveSwitch(3)) { if (param_1 == 103) { - field_0x224.registMultiSePos(param_2); + field_0x224.registMultiSePos(posPtr); } else if (param_1 == 107) { - field_0x258.registMultiSePos(param_2); + field_0x258.registMultiSePos(posPtr); } } break; case 13: if (dComIfGs_isSaveSwitch(0x30)) { if (param_1 == 101) { - mEtcSeMgr.registMultiSePos(param_2); + mEtcSeMgr.registMultiSePos(posPtr); } else if (param_1 == 103) { - field_0x28c.registMultiSePos(param_2); + field_0x28c.registMultiSePos(posPtr); } else if ((param_1 == 104) && (dComIfGs_isSaveSwitch(9))) { - field_0x258.registMultiSePos(param_2); + field_0x258.registMultiSePos(posPtr); } else if (param_1 == 107) { - mFallSeMgr.registMultiSePos(param_2); + mFallSeMgr.registMultiSePos(posPtr); } } else if (param_1 == 100) { - mEtcSeMgr.registMultiSePos(param_2); + mEtcSeMgr.registMultiSePos(posPtr); } } } } /* 802CA794-802CAAC0 2C50D4 032C+00 1/1 1/1 0/0 .text startLv3WaterSe__10Z2EnvSeMgrFSc */ -void Z2EnvSeMgr::startLv3WaterSe(s8 param_1) { - if (Z2GetSceneMgr()->getCurrentSceneNum() == 0x2e) { - if (param_1 >= 0) { - field_0x140 = param_1; +void Z2EnvSeMgr::startLv3WaterSe(s8 reverb) { + if (Z2GetSceneMgr()->getCurrentSceneNum() == Z2SCENE_LAKEBED_TEMPLE) { + if (reverb >= 0) { + field_0x140 = reverb; return; } - param_1 = field_0x140; + reverb = field_0x140; } + JAISoundID aJStack_60 = 0xffffffff; - f32 dVar12 = param_1 / 127.0f; + f32 dVar12 = reverb / 127.0f; f32 maxVolume; f32 panPower; f32 dolbyPower; + if (field_0x224.getPosCount() >= 0) { if (field_0x248 == 0x73) { aJStack_60 = Z2SE_ENV_WATER_WAY; @@ -1770,12 +1920,14 @@ void Z2EnvSeMgr::startLv3WaterSe(s8 param_1) { field_0x250, 0); field_0x224.resetMultiSePos(); } + if (field_0x258.getPosCount() >= 0) { if (field_0x27c == 0x74) { aJStack_60 = Z2SE_ENV_WATER_WAY; } else if (field_0x27c == 0x6f) { aJStack_60 = Z2SE_ENV_WATERFALL_CALM; } + maxVolume = field_0x280 * field_0x258.getMaxVolume(); panPower = field_0x258.getPanPower(); dolbyPower = field_0x258.getDolbyPower(); @@ -1784,6 +1936,7 @@ void Z2EnvSeMgr::startLv3WaterSe(s8 param_1) { field_0x284, 0); field_0x258.resetMultiSePos(); } + if (field_0x28c.getPosCount() >= 0) { if (field_0x2b0 == 0x75) { aJStack_60 = Z2SE_ENV_WATER_WAY_L; @@ -1800,7 +1953,8 @@ void Z2EnvSeMgr::startLv3WaterSe(s8 param_1) { field_0x2b8, 0); field_0x28c.resetMultiSePos(); } - startRiverSe(param_1); - startFallSe(param_1); - startEtcSe(param_1); + + startRiverSe(reverb); + startFallSe(reverb); + startEtcSe(reverb); } diff --git a/src/Z2AudioLib/Z2FxLineMgr.cpp b/src/Z2AudioLib/Z2FxLineMgr.cpp index c1a7d1645c..d0f9a1d9a0 100644 --- a/src/Z2AudioLib/Z2FxLineMgr.cpp +++ b/src/Z2AudioLib/Z2FxLineMgr.cpp @@ -1,8 +1,3 @@ -// -// Generated By: dol2asm -// Translation Unit: Z2FxLineMgr -// - #include "Z2AudioLib/Z2FxLineMgr.h" #include "Z2AudioLib/Z2SceneMgr.h" #include "JSystem/JAudio2/JASDSPInterface.h" @@ -11,25 +6,40 @@ #include "JSystem/JSupport/JSUMemoryStream.h" /* 802BA7DC-802BA7FC 2B511C 0020+00 0/0 1/1 0/0 .text __ct__11Z2FxLineMgrFv */ -Z2FxLineMgr::Z2FxLineMgr() : JASGlobalInstance(this) { +Z2FxLineMgr::Z2FxLineMgr() : JASGlobalInstance(true) { mConfig = NULL; mLineID = -1; mFxDataNum = 0; mSetUnderWaterFx = false; + + #if DEBUG + mHIOEdit = NULL; + #endif } /* 802BA7FC-802BAC28 2B513C 042C+00 0/0 1/1 0/0 .text * initDataArc__11Z2FxLineMgrFP10JKRArchiveP7JKRHeap */ void Z2FxLineMgr::initDataArc(JKRArchive* arc, JKRHeap* heap) { + JUT_ASSERT(44, arc); + JUT_ASSERT(45, heap); + mFxLineBuffer[0] = new (heap, 0x20) u8[0x2800]; mFxLineBuffer[1] = new (heap, 0x20) u8[0x2800]; mFxLineBuffer[2] = new (heap, 0x20) u8[0x4B00]; mFxLineBuffer[3] = new (heap, 0x20) u8[0x4B00]; + + JUT_ASSERT(53, mFxLineBuffer[0]); + JUT_ASSERT(54, mFxLineBuffer[1]); + JUT_ASSERT(55, mFxLineBuffer[2]); + JUT_ASSERT(56, mFxLineBuffer[3]); + mFxDataNum = arc->countResource(); mConfig = new (heap, 0) Z2FxLineConfig[mFxDataNum]; + for (u8 i = 0; i < mFxDataNum; i++) { void* res = arc->getResource(i); u32 size = (arc->getResSize(res) + 0x1f) & ~0x1f; + JSUMemoryInputStream stream(res, size); stream >> mConfig[i].field_0x0; stream >> mConfig[i].field_0x1; @@ -61,23 +71,29 @@ void Z2FxLineMgr::initDataArc(JKRArchive* arc, JKRHeap* heap) { stream >> mConfig[i].field_0x20[7]; JKRFree(res); } + setLineID(-1, false, false); setLineID(-1, true, false); } /* 802BAC28-802BAC74 2B5568 004C+00 4/4 0/0 0/0 .text setLineID__11Z2FxLineMgrFScbb */ void Z2FxLineMgr::setLineID(s8 fxID, bool param_1, bool param_2) { + JUT_ASSERT(109, fxID < mFxDataNum); + if (fxID < 0) { mLineID = 0; } else { mLineID = fxID; } + setLine(&mConfig[mLineID], param_1, param_2); } /* 802BAC74-802BAE1C 2B55B4 01A8+00 1/1 0/0 0/0 .text setLine__11Z2FxLineMgrFP14Z2FxLineConfigbb */ void Z2FxLineMgr::setLine(Z2FxLineConfig* config, bool param_1, bool param_2) { + JUT_ASSERT(121, config); + u8 buf1 = 0; u8 buf2 = 1; if (param_1) { @@ -86,6 +102,7 @@ void Z2FxLineMgr::setLine(Z2FxLineConfig* config, bool param_1, bool param_2) { } if (mFxLineBuffer[buf1] == NULL || mFxLineBuffer[buf2] == NULL) { + OS_REPORT("[Z2FxLineMgr::setLine] FxBuffer is NOT CREATED!!\n"); return; } @@ -93,6 +110,7 @@ void Z2FxLineMgr::setLine(Z2FxLineConfig* config, bool param_1, bool param_2) { dsp_config.field_0x0 = config->field_0x0; dsp_config.field_0x2 = config->field_0x1; dsp_config.field_0x6 = config->field_0x2; + if (param_2) { dsp_config.field_0x4 = 0; dsp_config.field_0x8 = 0; @@ -100,6 +118,7 @@ void Z2FxLineMgr::setLine(Z2FxLineConfig* config, bool param_1, bool param_2) { dsp_config.field_0x4 = config->field_0x4; dsp_config.field_0x8 = config->field_0x6; } + dsp_config.field_0xc = config->field_0x3; dsp_config.field_0x10[0] = config->field_0x8[0]; dsp_config.field_0x10[1] = config->field_0x8[1]; @@ -114,6 +133,7 @@ void Z2FxLineMgr::setLine(Z2FxLineConfig* config, bool param_1, bool param_2) { dsp_config.field_0x0 = config->field_0x18; dsp_config.field_0x2 = config->field_0x19; dsp_config.field_0x6 = config->field_0x1a; + if (param_2) { dsp_config.field_0x4 = 0; dsp_config.field_0x8 = 0; @@ -121,6 +141,7 @@ void Z2FxLineMgr::setLine(Z2FxLineConfig* config, bool param_1, bool param_2) { dsp_config.field_0x4 = config->field_0x1c; dsp_config.field_0x8 = config->field_0x1e; } + dsp_config.field_0xc = config->field_0x1b; dsp_config.field_0x10[0] = config->field_0x20[0]; dsp_config.field_0x10[1] = config->field_0x20[1]; @@ -139,84 +160,86 @@ void Z2FxLineMgr::setFxForceOff(bool param_0) { } /* 802BAE48-802BAEB8 2B5788 0070+00 0/0 1/1 0/0 .text setUnderWaterFx__11Z2FxLineMgrFb */ -void Z2FxLineMgr::setUnderWaterFx(bool param_0) { - if (mSetUnderWaterFx != param_0) { - if (param_0) { +void Z2FxLineMgr::setUnderWaterFx(bool isUnderWaterFx) { + if (mSetUnderWaterFx != isUnderWaterFx) { + if (isUnderWaterFx) { + OS_REPORT("[Z2FxLineMgr::setUnderWaterFx] → underWaterFx!\n"); setLineID(12, true, false); } else { + OS_REPORT("[Z2FxLineMgr::setUnderWaterFx] → sceneFx!\n"); setSceneFx(Z2GetSceneMgr()->getCurrentSceneNum()); } - mSetUnderWaterFx = param_0; + mSetUnderWaterFx = isUnderWaterFx; } } /* 802BAEB8-802BB00C 2B57F8 0154+00 2/1 1/1 0/0 .text setSceneFx__11Z2FxLineMgrFl */ -void Z2FxLineMgr::setSceneFx(s32 sceneNum) { +void Z2FxLineMgr::setSceneFx(s32 sceneNo) { if (Z2GetSceneMgr()->isInDarkness()) { setLineID(11, true, false); } else { - switch (sceneNum) { - case SPOT_SHADES_REALM: + switch (sceneNo) { + case Z2SCENE_SHADES_REALM: setLineID(9, true, false); break; - case SPOT_KAKARIKO_VILLAGE: - case SPOT_DEATH_MOUNTAIN: - case SPOT_HIDDEN_VILLAGE: - case SPOT_ZORAS_RIVER: - case SPOT_HYRULE_FIELD: + case Z2SCENE_KAKARIKO_VILLAGE: + case Z2SCENE_DEATH_MOUNTAIN: + case Z2SCENE_HIDDEN_VILLAGE: + case Z2SCENE_ZORAS_RIVER: + case Z2SCENE_HYRULE_FIELD: setLineID(10, true, false); break; - case SPOT_SACRED_GROVE: - case SPOT_FOREST_TEMPLE: - case SPOT_FOREST_TEMPLE_MINIBOSS: - case SPOT_FOREST_TEMPLE_BOSS: - case SPOT_GORGE_LANTERN_CAVE: - case SPOT_LAKE_LANTERN_CAVE: - case SPOT_FARON_WOODS_CAVE: + case Z2SCENE_SACRED_GROVE: + case Z2SCENE_FOREST_TEMPLE: + case Z2SCENE_FOREST_TEMPLE_MINIBOSS: + case Z2SCENE_FOREST_TEMPLE_BOSS: + case Z2SCENE_GORGE_LANTERN_CAVE: + case Z2SCENE_LAKE_LANTERN_CAVE: + case Z2SCENE_FARON_WOODS_CAVE: if (Z2GetSceneMgr()->getCurrentRoomNum() == 2) { return; } // fallthrough - case SPOT_FARON_WOODS: + case Z2SCENE_FARON_WOODS: setLineID(1, true, false); break; - case SPOT_GORON_MINES: - case SPOT_GORON_MINES_MINIBOSS: - case SPOT_GORON_MINES_BOSS: - case SPOT_ELDIN_MAGNET_CAVE: + case Z2SCENE_GORON_MINES: + case Z2SCENE_GORON_MINES_MINIBOSS: + case Z2SCENE_GORON_MINES_BOSS: + case Z2SCENE_ELDIN_MAGNET_CAVE: setLineID(2, true, false); break; - case SPOT_LAKE_HYLIA: - case SPOT_LAKEBED_TEMPLE: - case SPOT_LAKEBED_TEMPLE_MINIBOSS: - case SPOT_LAKEBED_TEMPLE_BOSS: + case Z2SCENE_LAKE_HYLIA: + case Z2SCENE_LAKEBED_TEMPLE: + case Z2SCENE_LAKEBED_TEMPLE_MINIBOSS: + case Z2SCENE_LAKEBED_TEMPLE_BOSS: if (Z2GetSceneMgr()->getCurrentRoomNum() == 1) { setLineID(3, true, false); } break; - case SPOT_ARBITERS_GROUNDS: - case SPOT_ARBITERS_GROUNDS_MINIBOSS: - case SPOT_ARBITERS_GROUNDS_BOSS: + case Z2SCENE_ARBITERS_GROUNDS: + case Z2SCENE_ARBITERS_GROUNDS_MINIBOSS: + case Z2SCENE_ARBITERS_GROUNDS_BOSS: setLineID(4, true, false); break; - case SPOT_SNOWPEAK_RUINS: - case SPOT_SNOWPEAK_RUINS_MINIBOSS: - case SPOT_SNOWPEAK_RUINS_BOSS: - case SPOT_ICE_BLOCK_PUZZLE: + case Z2SCENE_SNOWPEAK_RUINS: + case Z2SCENE_SNOWPEAK_RUINS_MINIBOSS: + case Z2SCENE_SNOWPEAK_RUINS_BOSS: + case Z2SCENE_ICE_BLOCK_PUZZLE: setLineID(5, true, false); break; - case SPOT_TEMPLE_OF_TIME: - case SPOT_TEMPLE_OF_TIME_MINIBOSS: - case SPOT_TEMPLE_OF_TIME_BOSS: + case Z2SCENE_TEMPLE_OF_TIME: + case Z2SCENE_TEMPLE_OF_TIME_MINIBOSS: + case Z2SCENE_TEMPLE_OF_TIME_BOSS: setLineID(6, true, false); break; - case SPOT_CITY_IN_THE_SKY: - case SPOT_CITY_IN_THE_SKY_MINIBOSS: - case SPOT_CITY_IN_THE_SKY_BOSS: + case Z2SCENE_CITY_IN_THE_SKY: + case Z2SCENE_CITY_IN_THE_SKY_MINIBOSS: + case Z2SCENE_CITY_IN_THE_SKY_BOSS: setLineID(7, true, false); break; - case SPOT_HYRULE_CASTLE: - case SPOT_FINAL_BATTLE_THRONE_ROOM: + case Z2SCENE_HYRULE_CASTLE: + case Z2SCENE_FINAL_BATTLE_THRONE_ROOM: setLineID(8, true, false); break; default: diff --git a/src/Z2AudioLib/Z2LinkMgr.cpp b/src/Z2AudioLib/Z2LinkMgr.cpp index 9d4ac0ca88..d916aa34af 100644 --- a/src/Z2AudioLib/Z2LinkMgr.cpp +++ b/src/Z2AudioLib/Z2LinkMgr.cpp @@ -1,23 +1,21 @@ -// -// Generated By: dol2asm -// Translation Unit: Z2LinkMgr -// - #include "Z2AudioLib/Z2LinkMgr.h" -#include "Z2AudioLib/Z2AudioCS.h" #include "d/d_com_inf_game.h" +#if PLATFORM_WII || PLATFORM_SHIELD +#include "Z2AudioLib/Z2AudioCS.h" +#endif + /* 802C321C-802C3220 2BDB5C 0004+00 0/0 1/1 0/0 .text setLinkGroupInfo__14Z2CreatureLinkFUc */ void Z2CreatureLink::setLinkGroupInfo(u8) {} /* 802C3220-802C3228 -00001 0008+00 0/0 0/0 0/0 .text setLinkHp__14Z2CreatureLinkFll */ -void Z2CreatureLink::setLinkHp(s32 i_hp, s32) { - mLinkHp = i_hp; +void Z2CreatureLink::setLinkHp(s32 linkHp, s32) { + mLinkHp = linkHp; } /* 802C3228-802C328C 2BDB68 0064+00 0/0 1/1 0/0 .text setLinkSwordType__14Z2CreatureLinkFll */ -void Z2CreatureLink::setLinkSwordType(s32 i_swordType, s32 param_1) { - mLinkSwordType = i_swordType; +void Z2CreatureLink::setLinkSwordType(s32 swordType, s32 param_1) { + mLinkSwordType = swordType; mFlag3 = param_1 == 1; if (mLinkSwordType != 0) { @@ -31,8 +29,8 @@ void Z2CreatureLink::setLinkSwordType(s32 i_swordType, s32 param_1) { } /* 802C328C-802C32F0 2BDBCC 0064+00 0/0 1/1 0/0 .text setLinkShieldType__14Z2CreatureLinkFll */ -void Z2CreatureLink::setLinkShieldType(s32 i_shieldType, s32 param_1) { - mLinkShieldType = i_shieldType; +void Z2CreatureLink::setLinkShieldType(s32 shieldType, s32 param_1) { + mLinkShieldType = shieldType; mFlag4 = param_1 == 1; if (mLinkSwordType != 0) { @@ -46,8 +44,8 @@ void Z2CreatureLink::setLinkShieldType(s32 i_shieldType, s32 param_1) { } /* 802C32F0-802C333C 2BDC30 004C+00 0/0 1/1 0/0 .text setLinkBootsType__14Z2CreatureLinkFl */ -void Z2CreatureLink::setLinkBootsType(s32 i_bootsType) { - mLinkBootsType = i_bootsType; +void Z2CreatureLink::setLinkBootsType(s32 bootsType) { + mLinkBootsType = bootsType; if (Z2GetSceneMgr()->isSceneExist()) { startLinkSound(Z2SE_AL_CHANGE_BOOTS, 0, -1); @@ -102,10 +100,10 @@ void Z2CreatureLink::deleteObject() { } /* 802C3638-802C3710 2BDF78 00D8+00 0/0 1/1 0/0 .text init__14Z2CreatureLinkFP3VecP3VecP3Vec */ -void Z2CreatureLink::init(Vec* param_0, Vec* param_1, Vec* param_2) { +void Z2CreatureLink::init(Vec* animePosPtr, Vec* simplePosPtr, Vec* simple2PosPtr) { OS_REPORT("[Z2CreatureLink::init]"); - Z2Creature::init(param_0, param_1, param_2, 6, 1, 2); + Z2Creature::init(animePosPtr, simplePosPtr, simple2PosPtr, 6, 1, 2); Z2GetAudience()->getLinkMic()->setPosPtr(getCurrentPos()); field_0xc1 = 0xFF; @@ -117,7 +115,7 @@ void Z2CreatureLink::init(Vec* param_0, Vec* param_1, Vec* param_2) { mRiding = false; mMagnetized = false; mUsingIronBall = false; - field_0xb4 = *param_0; + field_0xb4 = *animePosPtr; mMoveSpeed = 0; mMovingTime = 0; mSinkDepth = -1; @@ -125,9 +123,9 @@ void Z2CreatureLink::init(Vec* param_0, Vec* param_1, Vec* param_2) { /* 802C3710-802C374C 2BE050 003C+00 0/0 1/1 0/0 .text initKantera__14Z2CreatureLinkFP3Vec */ -void Z2CreatureLink::initKantera(Vec* i_pos) { +void Z2CreatureLink::initKantera(Vec* posPtr) { mKanteraState = 0; - mKantera.init(i_pos, 2); + mKantera.init(posPtr, 2); } /* 802C374C-802C3778 2BE08C 002C+00 1/1 1/1 0/0 .text deleteKantera__14Z2CreatureLinkFv @@ -138,16 +136,16 @@ void Z2CreatureLink::deleteKantera() { } /* 802C3778-802C3780 -00001 0008+00 0/0 0/0 0/0 .text setKanteraState__14Z2CreatureLinkFUc */ -void Z2CreatureLink::setKanteraState(u8 i_state) { - mKanteraState = i_state; +void Z2CreatureLink::setKanteraState(u8 state) { + mKanteraState = state; } /* 802C3780-802C3A64 2BE0C0 02E4+00 1/0 0/0 0/0 .text framework__14Z2CreatureLinkFUlSc */ -void Z2CreatureLink::framework(u32 param_0, s8 param_1) { - Z2Creature::framework(param_0, param_1); +void Z2CreatureLink::framework(u32 mapinfo, s8 reverb) { + Z2Creature::framework(mapinfo, reverb); if (mKantera.isAlive()) { - mKantera.framework(param_0, param_1); + mKantera.framework(mapinfo, reverb); } if (field_0xc1 != 0xFF) { @@ -194,39 +192,53 @@ void Z2CreatureLink::framework(u32 param_0, s8 param_1) { /* 802C3A64-802C3A6C -00001 0008+00 0/0 0/0 0/0 .text setSinkDepth__14Z2CreatureLinkFSc */ -void Z2CreatureLink::setSinkDepth(s8 i_sinkDepth) { - mSinkDepth = i_sinkDepth; +void Z2CreatureLink::setSinkDepth(s8 sinkDepth) { + mSinkDepth = sinkDepth; } /* 802C3A6C-802C3AEC 2BE3AC 0080+00 0/0 4/4 0/0 .text setRiding__14Z2CreatureLinkFb */ -void Z2CreatureLink::setRiding(bool i_isRiding) { - if (mRiding != i_isRiding) { - if (i_isRiding) { +void Z2CreatureLink::setRiding(bool isRiding) { + if (mRiding != isRiding) { + if (isRiding) { + OS_REPORT("[Z2CreatureLink::setRiding] true targetVol = 0.35f\n"); Z2GetAudience()->setTargetVolume(0.35f, 0); } else { + OS_REPORT("[Z2CreatureLink::setRiding] false targetVol = 0.0f\n"); Z2GetAudience()->setTargetVolume(0.0f, 0); } - mRiding = i_isRiding; + mRiding = isRiding; } } /* 802C3AEC-802C3AFC 2BE42C 0010+00 0/0 5/5 0/0 .text setMagnetized__14Z2CreatureLinkFb */ -void Z2CreatureLink::setMagnetized(bool i_isMagnetized) { - mMagnetized = i_isMagnetized; +void Z2CreatureLink::setMagnetized(bool isMagnetized) { + mMagnetized = isMagnetized; } /* 802C3AFC-802C3BD4 2BE43C 00D8+00 0/0 2/2 0/0 .text setWolfEyeOpen__14Z2CreatureLinkFb */ -void Z2CreatureLink::setWolfEyeOpen(bool i_wolfEyeOpen) { - mWolfEyeOpen = i_wolfEyeOpen; +void Z2CreatureLink::setWolfEyeOpen(bool wolfEyeOpen) { + mWolfEyeOpen = wolfEyeOpen; if (mWolfEyeOpen) { + #if PLATFORM_WII || PLATFORM_SHIELD + if (Z2GetSceneMgr()->isSceneExist()) { + Z2AudioCS::start(0x55, 0); + } + #endif + Z2GetSeMgr()->seStart(Z2SE_WOLF_SENSE_OPEN_START, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); Z2GetFxLineMgr()->setFxForceOff(true); Z2GetSoundObjMgr()->setGhostEnemyState(32); } else { + #if PLATFORM_WII || PLATFORM_SHIELD + if (Z2GetSceneMgr()->isSceneExist()) { + Z2AudioCS::start(0x56, 0); + } + #endif + Z2GetSeMgr()->seStart(Z2SE_WOLF_SENSE_CLOSE, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); Z2GetFxLineMgr()->setFxForceOff(false); Z2GetSoundObjMgr()->setGhostEnemyState(16); @@ -235,11 +247,10 @@ void Z2CreatureLink::setWolfEyeOpen(bool i_wolfEyeOpen) { /* 802C3BD4-802C3E68 2BE514 0294+00 3/3 3/3 0/0 .text * startLinkSound__14Z2CreatureLinkF10JAISoundIDUlSc */ -// stopSound seems to store to the stack twice -Z2SoundHandlePool* Z2CreatureLink::startLinkSound(JAISoundID i_soundID, u32 param_1, s8 param_2) { - Z2SoundHandlePool* var_r30 = startCreatureSound(i_soundID, param_1, param_2); +Z2SoundHandlePool* Z2CreatureLink::startLinkSound(JAISoundID soundID, u32 mapinfo, s8 reverb) { + Z2SoundHandlePool* handle = startCreatureSound(soundID, mapinfo, reverb); - switch (i_soundID) { + switch (soundID) { case Z2SE_AL_DAMAGE_NORMAL: case Z2SE_AL_DAMAGE_LARGE: case Z2SE_AL_FREEZE: @@ -249,35 +260,35 @@ Z2SoundHandlePool* Z2CreatureLink::startLinkSound(JAISoundID i_soundID, u32 para mSoundObjAnime.stopSound(Z2SE_AL_HS_OPEN, 0); break; case Z2SE_AL_SINK_SAND_OUT: - if (var_r30 != NULL && *var_r30) { - f32 var_f31 = Z2Calc::linearTransform(mSinkDepth, 32.0f, 127.0f, 0.4f, 1.0f, false); - f32 var_f30 = Z2Calc::linearTransform(mSinkDepth, 32.0f, 127.0f, 1.0f, 0.7f, false); + if (handle != NULL && *handle) { + f32 volume = Z2Calc::linearTransform(mSinkDepth, 32.0f, 127.0f, 0.4f, 1.0f, false); + f32 pitch = Z2Calc::linearTransform(mSinkDepth, 32.0f, 127.0f, 1.0f, 0.7f, false); - (*var_r30)->getAuxiliary().moveVolume(var_f31, 0); - (*var_r30)->getAuxiliary().movePitch(var_f30, 0); + (*handle)->getAuxiliary().moveVolume(volume, 0); + (*handle)->getAuxiliary().movePitch(pitch, 0); } break; case Z2SE_AL_SINK_SNOW_OUT: - if (var_r30 != NULL && *var_r30) { - f32 var_f29 = Z2Calc::linearTransform(mSinkDepth, 0.0f, 23.0f, 0.5f, 1.0f, false); - f32 var_f28 = Z2Calc::linearTransform(mSinkDepth, 0.0f, 23.0f, 1.0f, 0.7f, false); + if (handle != NULL && *handle) { + f32 volume = Z2Calc::linearTransform(mSinkDepth, 0.0f, 23.0f, 0.5f, 1.0f, false); + f32 pitch = Z2Calc::linearTransform(mSinkDepth, 0.0f, 23.0f, 1.0f, 0.7f, false); - (*var_r30)->getAuxiliary().moveVolume(var_f29, 0); - (*var_r30)->getAuxiliary().movePitch(var_f28, 0); + (*handle)->getAuxiliary().moveVolume(volume, 0); + (*handle)->getAuxiliary().movePitch(pitch, 0); } break; } - return var_r30; + return handle; } /* 802C3E68-802C4320 2BE7A8 04B8+00 1/1 3/3 0/0 .text * startLinkSoundLevel__14Z2CreatureLinkF10JAISoundIDUlSc */ -JAISoundHandle* Z2CreatureLink::startLinkSoundLevel(JAISoundID i_soundID, u32 param_1, s8 param_2) { - #if VERSION == VERSION_SHIELD_DEBUG +JAISoundHandle* Z2CreatureLink::startLinkSoundLevel(JAISoundID soundID, u32 mapinfo, s8 reverb) { + #if PLATFORM_WII || PLATFORM_SHIELD if (Z2GetSceneMgr()->isSceneExist()) { int iVar3 = -1; - switch((u32)i_soundID) { + switch((u32)soundID) { case Z2SE_AL_REEL_SLOW_LOOP: iVar3 = 0x16; break; @@ -296,81 +307,81 @@ JAISoundHandle* Z2CreatureLink::startLinkSoundLevel(JAISoundID i_soundID, u32 pa } #endif - if (i_soundID == Z2SE_AL_LIGHTNING_SW_GLOW && (Z2GetStatusMgr()->getDemoStatus() == 2 || !Z2GetSceneMgr()->isInGame())) { + if (soundID == Z2SE_AL_LIGHTNING_SW_GLOW && (Z2GetStatusMgr()->getDemoStatus() == 2 || !Z2GetSceneMgr()->isInGame())) { return NULL; } - Z2SoundHandlePool* temp_r3 = startCreatureSoundLevel((u32)i_soundID, param_1, param_2); - if (temp_r3 != NULL && *temp_r3) { - f32 var_f31 = 1.0f; - f32 var_f30 = 1.0f; - int var_r30 = 0; + Z2SoundHandlePool* handle = startCreatureSoundLevel((u32)soundID, mapinfo, reverb); + if (handle != NULL && *handle) { + f32 volume = 1.0f; + f32 pitch = 1.0f; + int volumeMoveSteps = 0; - switch (i_soundID) { + switch (soundID) { case Z2SE_AL_SINK_SAND_LEVEL: if (mSinkDepth > 0) { - var_f31 = Z2Calc::linearTransform(mSinkDepth, 0.0f, 127.0f, 0.4f, 1.0f, true); - var_f30 = Z2Calc::linearTransform(mSinkDepth, 0.0f, 127.0f, 1.0f, 0.7f, true); + volume = Z2Calc::linearTransform(mSinkDepth, 0.0f, 127.0f, 0.4f, 1.0f, true); + pitch = Z2Calc::linearTransform(mSinkDepth, 0.0f, 127.0f, 1.0f, 0.7f, true); } break; case Z2SE_AL_SINK_SNOW_LEVEL: if (mSinkDepth > 0) { - var_f31 = Z2Calc::linearTransform(mSinkDepth, 0.0f, 23.0f, 0.7f, 1.0f, true); - var_f30 = Z2Calc::linearTransform(mSinkDepth, 0.0f, 23.0f, 1.0f, 0.7f, true); + volume = Z2Calc::linearTransform(mSinkDepth, 0.0f, 23.0f, 0.7f, 1.0f, true); + pitch = Z2Calc::linearTransform(mSinkDepth, 0.0f, 23.0f, 1.0f, 0.7f, true); } break; case Z2SE_AL_SPINNER_RIDE: - var_f30 = Z2Calc::getParamByExp(mMoveSpeed, 0.0f, 30.0f, 0.3f, 0.8f, 1.0f, Z2Calc::CURVE_SIGN_0); + pitch = Z2Calc::getParamByExp(mMoveSpeed, 0.0f, 30.0f, 0.3f, 0.8f, 1.0f, Z2Calc::CURVE_NEGATIVE); if (mMoveSpeed == 0 && mMovingTime > 120) { - var_f31 = Z2Calc::getParamByExp(mMovingTime, 180.0f, 120.0f, 0.6f, 0.0f, 0.4f, Z2Calc::CURVE_SIGN_0); + volume = Z2Calc::getParamByExp(mMovingTime, 180.0f, 120.0f, 0.6f, 0.0f, 0.4f, Z2Calc::CURVE_NEGATIVE); } else { - var_f31 = Z2Calc::getParamByExp(mMoveSpeed, 0.0f, 30.0f, 0.6f, 0.4f, 1.0f, Z2Calc::CURVE_SIGN_0); + volume = Z2Calc::getParamByExp(mMoveSpeed, 0.0f, 30.0f, 0.6f, 0.4f, 1.0f, Z2Calc::CURVE_NEGATIVE); } break; case Z2SE_AL_SPINNER_RAIL: - var_f30 = Z2Calc::getParamByExp(mMoveSpeed, 0.0f, 80.0f, 0.3f, 0.8f, 1.2f, Z2Calc::CURVE_SIGN_0); + pitch = Z2Calc::getParamByExp(mMoveSpeed, 0.0f, 80.0f, 0.3f, 0.8f, 1.2f, Z2Calc::CURVE_NEGATIVE); break; case Z2SE_AL_SNOBO_RIDE: case Z2SE_AL_SNOBO_BREAK: /* dSv_event_flag_c::F_0266 - Snowpeak Ruins - Snowpeak Ruins clear */ if (dComIfGs_isEventBit((u16)dSv_event_flag_c::saveBitLabels[266]) && Z2GetSeqMgr()->getSubBgmID() != Z2BGM_SNOW_BOARD) { - var_f31 = 0.0f; - var_r30 = 0; + volume = 0.0f; + volumeMoveSteps = 0; } else if (mMoveSpeed == 0) { - var_f31 = 0.0f; - var_r30 = 10; + volume = 0.0f; + volumeMoveSteps = 10; } else { - var_f31 = Z2Calc::getParamByExp(mMoveSpeed, 0.0f, 80.0f, 0.25f, 0.4f, 1.0f, Z2Calc::CURVE_SIGN_0); + volume = Z2Calc::getParamByExp(mMoveSpeed, 0.0f, 80.0f, 0.25f, 0.4f, 1.0f, Z2Calc::CURVE_NEGATIVE); } - var_f30 = Z2Calc::getParamByExp(mMoveSpeed, 0.0f, 80.0f, 0.3f, 0.5f, 1.1f, Z2Calc::CURVE_SIGN_0); + pitch = Z2Calc::getParamByExp(mMoveSpeed, 0.0f, 80.0f, 0.3f, 0.5f, 1.1f, Z2Calc::CURVE_NEGATIVE); break; case Z2SE_AL_LIGHTNING_SW_GLOW: - f32 temp_f1_2 = (*temp_r3)->getAuxiliary().mTransition.mVolume.mDest; + f32 temp_f1_2 = (*handle)->getAuxiliary().transition_.volume_.targetValue_; if (Z2GetStatusMgr()->getDemoStatus() == 2 && temp_f1_2 != 0.3f) { - var_f31 = 0.3f; - var_r30 = 45; + volume = 0.3f; + volumeMoveSteps = 45; } else if (temp_f1_2 != 1.0f) { - var_f31 = 1.0f; - var_r30 = 45; + volume = 1.0f; + volumeMoveSteps = 45; } break; } - (*temp_r3)->getAuxiliary().moveVolume(var_f31, var_r30); - (*temp_r3)->getAuxiliary().movePitch(var_f30, 0); + (*handle)->getAuxiliary().moveVolume(volume, volumeMoveSteps); + (*handle)->getAuxiliary().movePitch(pitch, 0); } - return temp_r3; + return handle; } /* 802C4320-802C45B0 2BEC60 0290+00 1/1 1/1 0/0 .text * startLinkVoice__14Z2CreatureLinkF10JAISoundIDSc */ -Z2SoundHandlePool* Z2CreatureLink::startLinkVoice(JAISoundID i_soundID, s8 param_1) { +Z2SoundHandlePool* Z2CreatureLink::startLinkVoice(JAISoundID soundID, s8 reverb) { if (mLinkState == 1) { - switch (i_soundID) { + switch (soundID) { case Z2SE_WL_V_BREATH_WAIT: case Z2SE_WL_V_BREATH_TIRED: case Z2SE_WL_V_BREATH_SIT: @@ -392,57 +403,56 @@ Z2SoundHandlePool* Z2CreatureLink::startLinkVoice(JAISoundID i_soundID, s8 param break; } } else { - if (i_soundID == Z2SE_AL_V_ATTACK_RUN) { + if (soundID == Z2SE_AL_V_ATTACK_RUN) { if (field_0xc1 < 10) { return NULL; } field_0xc1 = 0; } - if (mMarkState != 3 && Z2GetSoundObjMgr()->getEnemyNumNear() == 0 - && !Z2GetSoundObjMgr()->isForceBattle()) + if (mMarkState != 3 && Z2GetSoundObjMgr()->getEnemyNumNear() == 0 && !Z2GetSoundObjMgr()->isForceBattle()) { - switch (i_soundID) { + switch (soundID) { case Z2SE_AL_V_ATTACK_S: - i_soundID = Z2SE_AL_V_ATTACK_S_FREE; + 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; + soundID = Z2SE_AL_V_ATTACK_M_FREE; break; case Z2SE_AL_V_ATTACK_L: - i_soundID = Z2SE_AL_V_ATTACK_L_FREE; + soundID = Z2SE_AL_V_ATTACK_L_FREE; break; case Z2SE_AL_V_KAITEN: - i_soundID = Z2SE_AL_V_KAITEN_FREE; + 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; + soundID = Z2SE_AL_V_BACKTEN_FREE; break; case Z2SE_AL_V_ATTACK_RUN: - i_soundID = Z2SE_AL_V_ATTACK_RUN_FREE; + soundID = Z2SE_AL_V_ATTACK_RUN_FREE; break; } } else { - if (i_soundID == Z2SE_AL_V_JUMP_S) { - i_soundID = Z2SE_AL_V_BACKTEN; + if (soundID == Z2SE_AL_V_JUMP_S) { + soundID = Z2SE_AL_V_BACKTEN; } } if (isInWater()) { - i_soundID = Z2SE_AL_V_UNDER_WATER; + soundID = Z2SE_AL_V_UNDER_WATER; } } - return startCreatureVoice(i_soundID, param_1); + return startCreatureVoice(soundID, reverb); } /* 802C45B0-802C46F0 2BEEF0 0140+00 0/0 1/1 0/0 .text * startLinkVoiceLevel__14Z2CreatureLinkF10JAISoundIDSc */ -Z2SoundHandlePool* Z2CreatureLink::startLinkVoiceLevel(JAISoundID i_soundID, s8 param_1) { +Z2SoundHandlePool* Z2CreatureLink::startLinkVoiceLevel(JAISoundID soundID, s8 reverb) { if (mLinkState == 1) { - switch (i_soundID) { + switch (soundID) { case Z2SE_WL_V_ROAR: f32 volume = 0.0f; u8 port_data = 0; @@ -465,7 +475,7 @@ Z2SoundHandlePool* Z2CreatureLink::startLinkVoiceLevel(JAISoundID i_soundID, s8 break; } - Z2SoundHandlePool* handle = startCreatureVoiceLevel(Z2SE_WL_V_ROAR, param_1); + Z2SoundHandlePool* handle = startCreatureVoiceLevel(Z2SE_WL_V_ROAR, reverb); if (handle != NULL && *handle) { (*handle)->getAuxiliary().moveVolume(volume, 0); Z2GetSoundStarter()->setPortData(handle, 8, port_data, -1); @@ -474,23 +484,33 @@ Z2SoundHandlePool* Z2CreatureLink::startLinkVoiceLevel(JAISoundID i_soundID, s8 } } - return startCreatureVoiceLevel(i_soundID, param_1); + return startCreatureVoiceLevel(soundID, reverb); } /* 802C46F0-802C4784 2BF030 0094+00 0/0 2/2 0/0 .text * startLinkSwordSound__14Z2CreatureLinkF10JAISoundIDUlSc */ -void Z2CreatureLink::startLinkSwordSound(JAISoundID i_soundID, u32 id, s8 ch) { - u32 soundID = i_soundID; +void Z2CreatureLink::startLinkSwordSound(JAISoundID soundID, u32 mapinfo, s8 reverb) { + u32 sound_ID = soundID; // fakematch - switch (soundID) { + switch (sound_ID) { case Z2SE_SWORD_POWER_COME: - startCreatureExtraSoundLevel(soundID, id, ch); + #if PLATFORM_WII || PLATFORM_SHIELD + if (Z2GetSceneMgr()->isSceneExist()) { + Z2AudioCS::startLevel(0x2F, 0); + } + #endif + startCreatureExtraSoundLevel(sound_ID, mapinfo, reverb); break; case Z2SE_WOLF_POWER_COME: - startCreatureExtraSoundLevel(soundID, id, ch); + #if PLATFORM_WII || PLATFORM_SHIELD + if (Z2GetSceneMgr()->isSceneExist()) { + Z2AudioCS::startLevel(0x6B, 0); + } + #endif + startCreatureExtraSoundLevel(sound_ID, mapinfo, reverb); break; default: - startCreatureExtraSound(soundID, id, ch); + startCreatureExtraSound(sound_ID, mapinfo, reverb); break; } } @@ -515,30 +535,33 @@ Z2SoundHandlePool* Z2CreatureLink::startCollisionSE(u32 hitID, u32 mapinfo) { /* 802C4814-802C48D8 2BF154 00C4+00 0/0 4/4 2/2 .text * startHitItemSE__14Z2CreatureLinkFUlUlP14Z2SoundObjBasef */ -Z2SoundHandlePool* Z2CreatureLink::startHitItemSE(u32 i_soundID, u32 param_1, - Z2SoundObjBase* param_2, f32 speed) { - if (param_2 == NULL) { - param_2 = &mSoundObjSimple2; +Z2SoundHandlePool* Z2CreatureLink::startHitItemSE(u32 soundID, u32 mapinfo, Z2SoundObjBase* other, f32 speed) { + if (other == NULL) { + other = &mSoundObjSimple2; } - if (i_soundID == Z2SE_HIT_SHIELD_ATTACK) { - return mSoundObjAnime.startCollisionSE(i_soundID, param_1, NULL); + if (soundID == Z2SE_HIT_SHIELD_ATTACK) { + return mSoundObjAnime.startCollisionSE(soundID, mapinfo, NULL); } - Z2SoundHandlePool* handle = param_2->startCollisionSE(i_soundID, param_1, NULL); + Z2SoundHandlePool* handle = other->startCollisionSE(soundID, mapinfo, NULL); if (speed >= 0.0f && handle != NULL && *handle) { + OS_REPORT("[Z2CreatureLink::startHitItemSE] speed:%.3f\n", speed); if (speed >= 100.0f) { speed = 100.0f; } - (*handle)->getAuxiliary().moveVolume(speed / 100.0f, 0); + + f32 volume = speed / 100.0f; + (*handle)->getAuxiliary().moveVolume(volume, 0); } + return handle; } /* 802C48D8-802C48E8 2BF218 0010+00 0/0 1/1 0/0 .text setResumeAttack__14Z2CreatureLinkFb */ -void Z2CreatureLink::setResumeAttack(bool i_resumeAttack) { - mResumeAttack = i_resumeAttack; +void Z2CreatureLink::setResumeAttack(bool resumeAttack) { + mResumeAttack = resumeAttack; } /* 802C48E8-802C4928 2BF228 0040+00 1/1 0/0 0/0 .text __ct__18Z2LinkSoundStarterFv */ @@ -546,47 +569,47 @@ Z2LinkSoundStarter::Z2LinkSoundStarter() : Z2SoundStarter(false) {} /* 802C4928-802C4FFC 2BF268 06D4+00 2/0 0/0 0/0 .text * startSound__18Z2LinkSoundStarterF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3UlfffffUl */ -bool Z2LinkSoundStarter::startSound(JAISoundID i_soundID, JAISoundHandle* param_1, - JGeometry::TVec3 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 Z2LinkSoundStarter::startSound(JAISoundID soundID, JAISoundHandle* handle, + const JGeometry::TVec3* posPtr, u32 mapinfo, + f32 fxMix, f32 pitch, f32 volume, f32 pan, + f32 dolby, u32 moveSteps) { bool bVar2 = false; bool bVar3 = false; if (Z2GetLink()->isInWater() && Z2GetStatusMgr()->getCameraInWaterDepthRatio() > 0.0f) { - switch (i_soundID) { + switch (soundID) { case Z2SE_AL_SWIM: case Z2SE_AL_DIVE_SWIM: - i_soundID = Z2SE_AL_SWIM_UNDERWATER; + 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; + soundID = Z2SE_AL_WATER_STROKE_S; break; case Z2SE_AL_SWORD_SWING_L: - i_soundID = Z2SE_AL_WATER_STROKE_L; + soundID = Z2SE_AL_WATER_STROKE_L; break; case Z2SE_AL_SWORD_THRUST: - i_soundID = Z2SE_AL_WATER_STROKE_FAST; + soundID = Z2SE_AL_WATER_STROKE_FAST; break; case Z2SE_AL_KAITENGIRI: - i_soundID = Z2SE_AL_WATER_STROKE_CIRCLE; + soundID = Z2SE_AL_WATER_STROKE_CIRCLE; break; } } - if (i_soundID.mId.mBytes.b1 == 3 && param_3 > 26) { - if (param_3 == 44) { - param_3 = 23; + if (soundID.id_.info.type.parts.groupID == 3 && mapinfo > 26) { + if (mapinfo == 44) { + mapinfo = 23; } else { JUT_WARN_DEVICE(929, 1, "%s", "mapinfo > 26\n"); - param_3 = 0; + mapinfo = 0; } } - switch (i_soundID) { + switch (soundID) { case Z2SE_AL_INTO_WATER: case Z2SE_AL_DIVE_INTO_WATER: case Z2SE_WL_INTO_WATER: @@ -602,9 +625,9 @@ bool Z2LinkSoundStarter::startSound(JAISoundID i_soundID, JAISoundHandle* param_ case Z2SE_GORON_FOOTNOTE: case Z2SE_FN_GOB_JUMP: if (Z2GetLink()->mLinkBootsType == 1) { - i_soundID = Z2SE_FN_WALK_HEAVY; + soundID = Z2SE_FN_WALK_HEAVY; if (Z2GetLink()->mMagnetized) { - param_3 = 127; + mapinfo = 127; } } bVar3 = true; @@ -613,9 +636,9 @@ bool Z2LinkSoundStarter::startSound(JAISoundID i_soundID, JAISoundHandle* param_ bVar2 = true; bVar3 = true; if (Z2GetLink()->mLinkBootsType == 1) { - i_soundID = Z2SE_FN_JUMP_HEAVY; + soundID = Z2SE_FN_JUMP_HEAVY; if (Z2GetLink()->mMagnetized) { - param_3 = 127; + mapinfo = 127; } } if (Z2GetLink()->mSoundObjSimple1.getHandleSoundID(Z2SE_AL_V_FALL) != NULL) { @@ -640,7 +663,7 @@ bool Z2LinkSoundStarter::startSound(JAISoundID i_soundID, JAISoundHandle* param_ } if (Z2GetLink()->mSinkDepth > 0) { - switch (i_soundID) { + switch (soundID) { case Z2SE_FN_WALK_DUMMY: case Z2SE_FN_JUMP_DUMMY: case Z2SE_FN_BOUND_DUMMY: @@ -651,32 +674,32 @@ bool Z2LinkSoundStarter::startSound(JAISoundID i_soundID, JAISoundHandle* param_ 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, + if (mapinfo == 3) { + pitch *= Z2Calc::linearTransform(Z2GetLink()->mSinkDepth, 0.0f, 127.0f, 1.0f, 0.5f, true); - } else if (param_3 == 25) { - param_5 *= Z2Calc::linearTransform(Z2GetLink()->mSinkDepth, + } else if (mapinfo == 25) { + pitch *= 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); + bool ret = Z2SoundStarter::startSound(soundID, handle, posPtr, mapinfo, fxMix, pitch, + volume, pan, dolby, moveSteps); if (bVar2 && Z2GetSceneMgr()->getDemoSeWaveNum() != 114) { if (Z2GetLink()->mFlag5) { - Z2GetLink()->startLinkSound(Z2SE_AL_SWORD_SHIELD_ADD, 0, param_4 * 127.0f); + Z2GetLink()->startLinkSound(Z2SE_AL_SWORD_SHIELD_ADD, 0, fxMix * 127.0f); } if (Z2GetLink()->mUsingIronBall) { - Z2GetLink()->startLinkSound(Z2SE_AL_IB_CHAIN_ADD, 0, param_4 * 127.0f); + Z2GetLink()->startLinkSound(Z2SE_AL_IB_CHAIN_ADD, 0, fxMix * 127.0f); } if (Z2GetLink()->mKanteraState != 0) { Z2SoundHandlePool* handle = - Z2GetLink()->mKantera.startSound(Z2SE_AL_KANTERA_SWING_ADD, 0, param_4 * 127.0f); + Z2GetLink()->mKantera.startSound(Z2SE_AL_KANTERA_SWING_ADD, 0, fxMix * 127.0f); if (Z2GetLink()->mKanteraState == 2 && handle != NULL && *handle) { (*handle)->getAuxiliary().moveVolume(0.6f, 0); (*handle)->getAuxiliary().movePitch(0.9f, 0); @@ -686,9 +709,9 @@ bool Z2LinkSoundStarter::startSound(JAISoundID i_soundID, JAISoundHandle* param_ if (bVar3) { if (Z2GetLink()->getLinkState() == 4) { - Z2GetLink()->startLinkSound(Z2SE_FN_ARMER_LIGHT_ADD, 0, param_4 * 127.0f); + Z2GetLink()->startLinkSound(Z2SE_FN_ARMER_LIGHT_ADD, 0, fxMix * 127.0f); } else if (Z2GetLink()->getLinkState() == 5) { - Z2GetLink()->startLinkSound(Z2SE_FN_ARMER_HEAVY_ADD, 0, param_4 * 127.0f); + Z2GetLink()->startLinkSound(Z2SE_FN_ARMER_HEAVY_ADD, 0, fxMix * 127.0f); } } @@ -713,8 +736,8 @@ void Z2CreatureRide::deleteObject() { } /* 802C520C-802C522C 2BFB4C 0020+00 0/0 0/0 3/3 .text init__14Z2CreatureRideFP3VecP3VecUcUc */ -void Z2CreatureRide::init(Vec* param_0, Vec* param_1, u8 param_2, u8 param_3) { - Z2Creature::init(param_0, param_1, param_2, param_3); +void Z2CreatureRide::init(Vec* animePosPtr, Vec* simplePosPtr, u8 animeHandleNum, u8 simpleHandleNum) { + Z2Creature::init(animePosPtr, simplePosPtr, animeHandleNum, simpleHandleNum); } /* 802C522C-802C5234 -00001 0008+00 0/0 0/0 0/0 .text setLinkRiding__14Z2CreatureRideFb @@ -727,20 +750,21 @@ void Z2CreatureRide::setLinkRiding(bool isRiding) { */ Z2RideSoundStarter::Z2RideSoundStarter(Z2CreatureRide* ride) : Z2SoundStarter(false) { mRide = ride; + JUT_ASSERT(1294, ride); } /* 802C5284-802C54B8 2BFBC4 0234+00 2/0 0/0 0/0 .text * startSound__18Z2RideSoundStarterF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3UlfffffUl */ -bool Z2RideSoundStarter::startSound(JAISoundID i_soundID, JAISoundHandle* param_1, - JGeometry::TVec3 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 Z2RideSoundStarter::startSound(JAISoundID soundID, JAISoundHandle* handle, + const JGeometry::TVec3* posPtr, u32 mapinfo, + f32 fxMix, f32 pitch, f32 volume, f32 pan, + f32 dolby, u32 moveSteps) { if (!Z2GetSceneMgr()->isInGame()) { return false; } u8 uVar3 = 0; - switch (i_soundID) { + switch (soundID) { case Z2SE_HS_WALK_L_DUMMY: case Z2SE_HS_WALK_R_DUMMY: case Z2SE_HS_TROT_L_DUMMY: @@ -755,17 +779,17 @@ bool Z2RideSoundStarter::startSound(JAISoundID i_soundID, JAISoundHandle* param_ break; } - bool ret = Z2SoundStarter::startSound((u32)i_soundID, param_1, param_2, param_3, param_4, param_5, - param_6, param_7, param_8, param_9); + bool ret = Z2SoundStarter::startSound((u32)soundID, handle, posPtr, mapinfo, fxMix, pitch, + volume, pan, dolby, moveSteps); if (mRide->isLinkRiding() && uVar3 != 0) { if (Z2GetLink()->mFlag5) { - Z2GetLink()->startLinkSound(Z2SE_AL_SWORD_SHIELD_ADD, 0, param_4 * 127.0f); + Z2GetLink()->startLinkSound(Z2SE_AL_SWORD_SHIELD_ADD, 0, fxMix * 127.0f); } if (Z2GetLink()->mKanteraState != 0) { Z2SoundHandlePool* handle = - Z2GetLink()->mKantera.startSound(Z2SE_AL_KANTERA_SWING_ADD, 0, param_4 * 127.0f); + Z2GetLink()->mKantera.startSound(Z2SE_AL_KANTERA_SWING_ADD, 0, fxMix * 127.0f); if (Z2GetLink()->mKanteraState == 2 && handle != NULL && *handle) { (*handle)->getAuxiliary().moveVolume(0.6f, 0); (*handle)->getAuxiliary().movePitch(0.9f, 0); @@ -774,11 +798,10 @@ bool Z2RideSoundStarter::startSound(JAISoundID i_soundID, JAISoundHandle* param_ switch (uVar3) { case 1: - Z2GetLink()->startLinkSound(Z2SE_AL_HARNESS_ADD_HS, 0, param_4 * 127.0f); + Z2GetLink()->startLinkSound(Z2SE_AL_HARNESS_ADD_HS, 0, fxMix * 127.0f); break; - case 2: - Z2GetLink()->startLinkSound(Z2SE_AL_HARNESS_ADD_WB, 0, param_4 * 127.0f); + Z2GetLink()->startLinkSound(Z2SE_AL_HARNESS_ADD_WB, 0, fxMix * 127.0f); break; } } @@ -792,8 +815,8 @@ Z2SoundObjCoach::Z2SoundObjCoach() { } /* 802C54FC-802C551C 2BFE3C 0020+00 1/0 0/0 0/0 .text init__15Z2SoundObjCoachFP3VecUc */ -void Z2SoundObjCoach::init(Vec* i_soundPos, u8 i_numHandles) { - Z2SoundObjBase::init(i_soundPos, i_numHandles); +void Z2SoundObjCoach::init(Vec* posPtr, u8 handleNum) { + Z2SoundObjBase::init(posPtr, handleNum); } /* 802C551C-802C56C0 2BFE5C 01A4+00 0/0 0/0 1/1 .text startWheelSound__15Z2SoundObjCoachFf */ @@ -805,20 +828,20 @@ Z2SoundHandlePool* Z2SoundObjCoach::startWheelSound(f32 param_0) { 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); + Z2Calc::CURVE_POSITIVE); (*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); + Z2Calc::CURVE_POSITIVE); (*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); + Z2Calc::CURVE_POSITIVE); (*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); + Z2Calc::CURVE_POSITIVE); (*handle)->getAuxiliary().moveVolume(volume, 0); } } @@ -834,10 +857,10 @@ Z2SoundHandlePool* Z2SoundObjCoach::startFireSound(u16 param_0) { if (handle != NULL && *handle) { f32 pitch = Z2Calc::getParamByExp(param_0, 0.0f, 1500.0f, 0.2f, 0.85f, 1.25f, - Z2Calc::CURVE_SIGN_1); + Z2Calc::CURVE_POSITIVE); (*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); + Z2Calc::CURVE_POSITIVE); (*handle)->getAuxiliary().moveVolume(volume, 0); } @@ -846,15 +869,15 @@ Z2SoundHandlePool* Z2SoundObjCoach::startFireSound(u16 param_0) { /* 802C57C0-802C588C 2C0100 00CC+00 1/0 0/0 0/0 .text * startSound__15Z2SoundObjCoachF10JAISoundIDUlSc */ -Z2SoundHandlePool* Z2SoundObjCoach::startSound(JAISoundID i_soundID, u32 param_1, s8 param_2) { - Z2SoundHandlePool* handle = Z2SoundObjBase::startSound(i_soundID, param_1, param_2); +Z2SoundHandlePool* Z2SoundObjCoach::startSound(JAISoundID soundID, u32 mapinfo, s8 reverb) { + Z2SoundHandlePool* handle = Z2SoundObjBase::startSound(soundID, mapinfo, reverb); - if (handle != NULL && *handle && i_soundID == Z2SE_COACH_SHAKE) { + if (handle != NULL && *handle && soundID == Z2SE_COACH_SHAKE) { f32 pitch = Z2Calc::getParamByExp(field_0x20, 0.0f, 50.0f, 0.2f, 0.85f, 1.25f, - Z2Calc::CURVE_SIGN_1); + Z2Calc::CURVE_POSITIVE); (*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); + Z2Calc::CURVE_POSITIVE); (*handle)->getAuxiliary().moveVolume(volume, 0); } diff --git a/src/Z2AudioLib/Z2Param.cpp b/src/Z2AudioLib/Z2Param.cpp index a720929182..5b71d16a38 100644 --- a/src/Z2AudioLib/Z2Param.cpp +++ b/src/Z2AudioLib/Z2Param.cpp @@ -5,7 +5,6 @@ #include "Z2AudioLib/Z2Param.h" -/* ############################################################################################## */ /* 804507D8-804507DC 000258 0004+00 0/0 4/4 0/0 .sdata DISTANCE_MAX__7Z2Param */ f32 Z2Param::DISTANCE_MAX = 2000.0f; @@ -123,28 +122,31 @@ f32 Z2Param::VOL_SE_OBJECT_PAUSING = 72.0f / 127.0f; f32 Z2Param::VOL_SE_ATMOSPHERE_PAUSING = 72.0f / 127.0f; /* 80450860-80450864 -00001 0004+00 0/0 15/15 0/0 .sdata None */ -u8 struct_80450860 = 0x21; -u8 struct_80450861 = 0x3C; -u8 struct_80450862 = 0x3C; -u8 struct_80450863 = 0x1E; +u8 Z2Param::SCENE_CHANGE_BGM_FADEOUT_TIME = 33; + +u8 Z2Param::BGM_CROSS_FADEIN_TIME = 60; + +u8 Z2Param::BGM_CROSS_FADEOUT_TIME = 60; + +u8 Z2Param::BATTLE_BGM_WAIT_TIME = 30; /* 80450864-80450868 -00001 0004+00 0/0 2/2 0/0 .sdata None */ -#pragma push -#pragma force_active on -u8 struct_80450864 = 0x14; -u8 struct_80450865 = 0x1E; -u8 struct_80450866 = 0x0A; -u8 struct_80450867 = 0x1E; -#pragma pop +u8 Z2Param::FOUND_TRACK_FI_TIME = 20; + +u8 Z2Param::FOUND_TRACK_FO_TIME = 30; + +u8 Z2Param::CLOSE_BATTLE_TRACK_FI_TIME = 10; + +u8 Z2Param::CLOSE_BATTLE_TRACK_FO_TIME = 30; /* 80450868-8045086C -00001 0004+00 0/0 5/5 0/0 .sdata None */ -#pragma push -#pragma force_active on -u8 struct_80450868 = 0x01; -u8 struct_80450869 = 0x0A; -u8 struct_8045086A = 0x1E; -u8 struct_8045086B = 0x14; -#pragma pop +u8 Z2Param::ENDING_BLOW_VOL_DOWN_TIME = 1; + +u8 Z2Param::ENDING_BLOW_VOL_LOWER_TIME = 10; + +u8 Z2Param::ENDING_BLOW_VOL_LOWER_RECOVER_TIME = 30; + +u8 Z2Param::ENDING_BLOW_MIN_FINISH_TIME = 20; /* 8045086C-80450870 0002EC 0004+00 0/0 3/3 0/0 .sdata None */ u8 data_8045086C = 1; @@ -158,12 +160,10 @@ f32 Z2Param::ENEMY_LASTHIT_MUTE_VOLUME; /* 80451340-80451348 -00001 0008+00 0/0 2/2 0/0 .sbss None */ /* 80451340 0001+00 data_80451340 None */ +u8 Z2Param::DARK_SE_FILTER_ON; + /* 80451341 0001+00 data_80451341 None */ +u8 Z2Param::DARK_SE_LOW_PASS_FILTER_SETTING; + /* 80451342 0006+00 data_80451342 None */ -#pragma push -#pragma force_active on -u8 struct_80451340; -u8 struct_80451341; -u8 struct_80451342; -u8 pad_80451344[4]; -#pragma pop +u8 Z2Param::SYSTEM_SE_USE_DARK_SE_SETTING; diff --git a/src/Z2AudioLib/Z2SceneMgr.cpp b/src/Z2AudioLib/Z2SceneMgr.cpp index 4b07ca8cce..14751161b0 100644 --- a/src/Z2AudioLib/Z2SceneMgr.cpp +++ b/src/Z2AudioLib/Z2SceneMgr.cpp @@ -1,8 +1,3 @@ -// -// Generated By: dol2asm -// Translation Unit: Z2SceneMgr -// - #include "JSystem/JAudio2/JASBasicWaveBank.h" #include "JSystem/JAudio2/JAUSectionHeap.h" #include "JSystem/JAudio2/JAUSoundTable.h" @@ -16,7 +11,7 @@ #include "d/d_com_inf_game.h" /* 802B6840-802B68B0 2B1180 0070+00 0/0 1/1 0/0 .text __ct__10Z2SceneMgrFv */ -Z2SceneMgr::Z2SceneMgr(void) : JASGlobalInstance(this) { +Z2SceneMgr::Z2SceneMgr() : JASGlobalInstance(true) { sceneNum = -1; BGM_ID = -1; roomNum = -1; @@ -36,14 +31,16 @@ Z2SceneMgr::Z2SceneMgr(void) : JASGlobalInstance(this) { field_0x1b = false; sceneExist = 0; inGame = 0; - inDarkness = false; + inDarkness_ = false; load1stWait = 0; } /* 802B68B0-802B68E0 2B11F0 0030+00 0/0 1/1 0/0 .text setInDarkness__10Z2SceneMgrFb */ -void Z2SceneMgr::setInDarkness(bool param_0) { - inDarkness = param_0; - if (!param_0) { +void Z2SceneMgr::setInDarkness(bool inDarkness) { + OS_REPORT("[Z2SceneMgr::setInDarkness] inDarkness = %d\n", inDarkness); + + inDarkness_ = inDarkness; + if (!inDarkness) { Z2GetSoundMgr()->resetFilterAll(); } } @@ -133,14 +130,14 @@ static char* sSpotName[81] = { }; /* 802B68E0-802B697C 2B1220 009C+00 3/3 2/2 2/2 .text setSceneExist__10Z2SceneMgrFb */ -void Z2SceneMgr::setSceneExist(bool param_1) { - sceneExist = param_1; +void Z2SceneMgr::setSceneExist(bool isSceneExist) { + sceneExist = isSceneExist; timer = 0; JAISeMgr* seMgr = Z2GetSoundMgr()->getSeMgr(); - if (param_1) { - inGame = 1; + if (isSceneExist) { + inGame = true; if (requestDemoWave == 0x85) { seMgr->getCategory(9)->getParams()->moveVolume(0.0f, 0); @@ -155,7 +152,9 @@ void Z2SceneMgr::setSceneExist(bool param_1) { } /* 802B697C-802B6A18 2B12BC 009C+00 0/0 1/1 0/0 .text setFadeOutStart__10Z2SceneMgrFUc */ -void Z2SceneMgr::setFadeOutStart(u8 param_0) { +void Z2SceneMgr::setFadeOutStart(u8 fadeType) { + OS_REPORT("[Z2SceneMgr::setFadeOutStart] fadeType = %d\n", fadeType); + setSceneExist(false); Z2GetSeqMgr()->bgmAllMute(33, 3.0f / 10.0f); Z2GetSeMgr()->seMoveVolumeAll(0.0f, 33); @@ -165,43 +164,51 @@ void Z2SceneMgr::setFadeOutStart(u8 param_0) { } /* 802B6A18-802B6AF8 2B1358 00E0+00 0/0 1/1 0/0 .text setFadeInStart__10Z2SceneMgrFUc */ -void Z2SceneMgr::setFadeInStart(u8 param_0) { +void Z2SceneMgr::setFadeInStart(u8 fadeType) { + OS_REPORT("[Z2SceneMgr::setFadeInStart] fadeType = %d\n", fadeType); + if (requestDemoWave == 0x7f) { Z2GetSeMgr()->seMoveVolumeAll(0.0f, 0); } else { Z2GetSeMgr()->seMoveVolumeAll(1.0f, 33); if (requestDemoWave == 0x85) { - JAISeMgr* seMgr = Z2GetSoundMgr()->getSeMgr(); - seMgr->getCategory(9)->getParams()->moveVolume(0.0f, 0); + Z2GetSoundMgr()->getSeMgr()->getCategory(9)->getParams()->moveVolume(0.0f, 0); } } + Z2GetSeqMgr()->setTwilightGateVol(1.0f); Z2GetStatusMgr()->menuOut(); if (!field_0x1a) { - Z2GetSeqMgr()->bgmAllMute(33, 1.0f); + Z2GetSeqMgr()->bgmAllUnMute(33); } inGame = true; } /* 802B6AF8-802B995C 2B1438 2E64+00 8/0 1/1 0/0 .text setSceneName__10Z2SceneMgrFPcll */ -void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { +// NONMATCHING JSULink::getNext() inlining +void Z2SceneMgr::setSceneName(char* spot, s32 room, s32 layer) { + OS_REPORT("[Z2SceneMgr::setSceneName] spot = %s, room = %d, layer = %d\n", spot, room, layer); JAISoundID bgm_id = -1; JAISound* sound; - int spot = 0; + + int spotNo = 0; + u8 se_wave1 = 0; u8 se_wave2 = 0; u8 bgm_wave1 = 0; u8 bgm_wave2 = 0; u8 demo_wave = 0; + bool bVar6 = false; bool height_vol_mod = false; bool field_bgm_play = false; bool time_proc_vol_mod = false; bool bVar2 = false; field_0x1b = false; + f32 fVar1 = -1.0f; Z2GetSeqMgr()->resetBattleBgmParams(); @@ -210,23 +217,25 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { Z2GetSeMgr()->resetCrowdSize(); Z2GetSoundObjMgr()->setGhostEnemyState(0); Z2GetSeMgr()->resetModY(); + if (Z2GetStatusMgr()->getDemoStatus() == 8) { Z2GetStatusMgr()->setDemoName("force_end"); } - if (spotName != NULL) { - for (spot = 0; spot < ARRAY_SIZE(sSpotName); spot++) { - if (!strcmp(spotName, sSpotName[spot])) { + if (spot != NULL) { + for (spotNo = 0; spotNo < ARRAY_SIZE(sSpotName); spotNo++) { + if (strcmp(spot, sSpotName[spotNo]) == 0) { break; } } - if (spot == ARRAY_SIZE(sSpotName)) { - spot = SPOT_NONE; + + if (spotNo == ARRAY_SIZE(sSpotName)) { + spotNo = Z2SCENE_NONE; } } - switch (spot) { - case SPOT_ENEMY_TEST: + switch (spotNo) { + case Z2SCENE_ENEMY_TEST: bgm_wave2 = 2; if (room < 30) { se_wave1 = 0x8a; @@ -234,8 +243,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { se_wave1 = 0x8b; } break; - - case SPOT_ORDON_RANCH: + case Z2SCENE_ORDON_RANCH: if (layer == 1) { if (dComIfGs_isSaveSwitch(0x67)) { bgm_id = Z2BGM_TOAL_NIGHT; @@ -251,14 +259,15 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { bgm_wave2 = 2; time_proc_vol_mod = true; } + se_wave1 = 0x26; se_wave2 = 0x25; field_0x1b = true; break; - - case SPOT_ORDON_VILLAGE: + case Z2SCENE_ORDON_VILLAGE: field_0x1b = true; se_wave1 = 0x26; + if (room == 0) { se_wave2 = 0x27; switch (layer) { @@ -336,9 +345,9 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { } } break; - - case SPOT_ORDON_INTERIOR: + case Z2SCENE_ORDON_INTERIOR: se_wave1 = 0x26; + switch (room) { case 0: bgm_id = Z2BGM_INDOOR; @@ -417,10 +426,10 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { } field_0x1b = true; break; - - case SPOT_ORDON_SPRING: + case Z2SCENE_ORDON_SPRING: se_wave1 = 0x26; se_wave2 = 0x2d; + switch (layer) { case 4: field_0x1b = false; @@ -469,10 +478,9 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { break; } break; - - case SPOT_TWILIGHT_HYRULE_CASTLE: + case Z2SCENE_TWILIGHT_HYRULE_CASTLE: se_wave1 = 0x2e; - if (inDarkness) { + if (inDarkness_) { se_wave2 = 0x30; if (room == 0) { if (layer == 11) { @@ -506,18 +514,16 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { se_wave2 = 0x2f; } break; - - case SPOT_CASTLE_THRONE_ROOM: + case Z2SCENE_CASTLE_THRONE_ROOM: if (layer == 8) { demo_wave = 0x68; } else if (layer == 9) { demo_wave = 0x7f; } break; - - case SPOT_CORO_SHOP: + case Z2SCENE_CORO_SHOP: se_wave1 = 0x31; - if (inDarkness) { + if (inDarkness_) { bgm_id = Z2BGM_TWILIGHT; bgm_wave1 = 0xe; se_wave2 = 0x33; @@ -535,15 +541,14 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { } } break; - - case SPOT_FARON_WOODS: + case Z2SCENE_FARON_WOODS: se_wave1 = 0x31; if (layer == 11) { demo_wave = 0x6c; - inDarkness = false; + inDarkness_ = false; } else if (layer == 9) { demo_wave = 0x6a; - } else if (inDarkness) { + } else if (inDarkness_) { if (layer == 7) { demo_wave = 0x78; } else if (layer == 8) { @@ -584,7 +589,8 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { bgm_id = Z2BGM_FILONE_FOREST; bgm_wave1 = 0xf; time_proc_vol_mod = true; - if (room == 0xe) { + + if (room == 14) { Z2GetSeqMgr()->changeBgmStatus(1); } else { Z2GetSeqMgr()->changeBgmStatus(0); @@ -593,13 +599,12 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { } } break; - - case SPOT_KAKARIKO_VILLAGE: + case Z2SCENE_KAKARIKO_VILLAGE: se_wave1 = 0x34; if (layer == 8) { demo_wave = 0x6e; - inDarkness = false; - } else if (inDarkness) { + inDarkness_ = false; + } else if (inDarkness_) { bgm_id = Z2BGM_TWILIGHT; bgm_wave1 = 0xe; se_wave2 = 0x36; @@ -655,10 +660,9 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { } } break; - - case SPOT_KAKARIKO_INTERIOR: + case Z2SCENE_KAKARIKO_INTERIOR: se_wave1 = 0x34; - if (inDarkness) { + if (inDarkness_) { se_wave2 = 0x36; if (room == 0 && layer == 8) { demo_wave = 0x6d; @@ -722,10 +726,9 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { se_wave2 = 0x86; } break; - - case SPOT_SANCTUARY_BASEMENT: + case Z2SCENE_SANCTUARY_BASEMENT: se_wave1 = 0x34; - if (inDarkness) { + if (inDarkness_) { bgm_id = Z2BGM_TWILIGHT; bgm_wave1 = 0xe; se_wave2 = 0x36; @@ -736,10 +739,9 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { Z2GetSeqMgr()->muteSceneBgm(30, 0.5f); } break; - - case SPOT_KAKARIKO_GRAVEYARD: + case Z2SCENE_KAKARIKO_GRAVEYARD: se_wave1 = 0x34; - if (inDarkness) { + if (inDarkness_) { bgm_id = Z2BGM_TWILIGHT; bgm_wave1 = 0xe; se_wave2 = 0x36; @@ -757,14 +759,13 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { se_wave2 = 0x37; } break; - - case SPOT_DEATH_MOUNTAIN: + case Z2SCENE_DEATH_MOUNTAIN: se_wave1 = 0x34; if (layer == 8) { demo_wave = 0x7f; se_wave1 = 0; se_wave2 = 0; - } else if (inDarkness) { + } else if (inDarkness_) { bgm_id = Z2BGM_TWILIGHT; bgm_wave1 = 0xe; se_wave2 = 0x39; @@ -778,8 +779,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { } } break; - - case SPOT_HIDDEN_VILLAGE: + case Z2SCENE_HIDDEN_VILLAGE: if (layer == 0) { Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); if (dComIfGs_isSwitch(0x2e, 0) && !dComIfGs_isSwitch(0x11, 0)) { @@ -793,16 +793,14 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { se_wave1 = 0x34; se_wave2 = 0x4f; break; - - case SPOT_IMPAZ_HOUSE: + case Z2SCENE_IMPAZ_HOUSE: bgm_id = Z2BGM_INDOOR; bgm_wave1 = 8; se_wave1 = 0x34; se_wave2 = 0x4f; field_0x1b = true; break; - - case SPOT_SUMO_HALL: + case Z2SCENE_SUMO_HALL: if (layer == 8) { demo_wave = 0x7f; se_wave1 = 0; @@ -815,19 +813,18 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { se_wave2 = 0x3a; } break; - - case SPOT_LAKE_HYLIA: + case Z2SCENE_LAKE_HYLIA: se_wave1 = 0x3b; if (layer == 8) { demo_wave = 0x72; - inDarkness = false; + inDarkness_ = false; } else if (room == 1 && layer == 9) { demo_wave = 0x74; } else if (layer == 10 || layer == 11) { demo_wave = 0x7f; se_wave1 = 0; se_wave2 = 0; - } else if (inDarkness) { + } else if (inDarkness_) { bgm_id = Z2BGM_TWILIGHT; bgm_wave1 = 0xe; se_wave2 = 0x3d; @@ -850,14 +847,13 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { se_wave2 = 0x3c; } break; - - case SPOT_UPPER_ZORAS_RIVER: + case Z2SCENE_UPPER_ZORAS_RIVER: se_wave1 = 0x55; if (layer == 8) { demo_wave = 0x7f; se_wave1 = 0; se_wave2 = 0; - } else if (inDarkness) { + } else if (inDarkness_) { bgm_id = Z2BGM_TWILIGHT; bgm_wave1 = 0xe; se_wave2 = 0x3f; @@ -867,8 +863,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { height_vol_mod = true; } break; - - case SPOT_FISHING_POND: + case Z2SCENE_FISHING_POND: if (layer == 8) { demo_wave = 0x7f; se_wave1 = 0; @@ -882,18 +877,16 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { time_proc_vol_mod = true; } break; - - case SPOT_HENA_CABIN: + case Z2SCENE_HENA_CABIN: se_wave1 = 0x3b; bgm_id = Z2BGM_INDOOR; bgm_wave1 = 8; bgm_wave2 = 0x47; se_wave2 = 0x3e; break; - - case SPOT_ZORAS_RIVER: + case Z2SCENE_ZORAS_RIVER: se_wave1 = 0x55; - if (inDarkness) { + if (inDarkness_) { bgm_id = Z2BGM_CARGO_GAME_TW; bgm_wave1 = 0x24; se_wave2 = 0x41; @@ -911,8 +904,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { se_wave2 = 0x40; } break; - - case SPOT_ZORAS_DOMAIN: + case Z2SCENE_ZORAS_DOMAIN: se_wave1 = 0x3b; if (layer == 8 || layer == 9) { demo_wave = 0x82; @@ -920,7 +912,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { se_wave1 = 0; se_wave2 = 0; demo_wave = 0x7f; - } else if (inDarkness) { + } else if (inDarkness_) { bgm_id = Z2BGM_TWILIGHT; bgm_wave1 = 0x0e; bgm_wave2 = 0x2c; @@ -933,12 +925,11 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { time_proc_vol_mod = true; } break; - - case SPOT_CASTLE_TOWN: + case Z2SCENE_CASTLE_TOWN: se_wave1 = 0x42; if (layer == 8) { demo_wave = 0x68; - } else if (inDarkness) { + } else if (inDarkness_) { bgm_id = Z2BGM_TWILIGHT; bgm_wave1 = 0xe; se_wave2 = 0x44; @@ -961,14 +952,13 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { } } break; - - case SPOT_CASTLE_TOWN_INTERIOR: + case Z2SCENE_CASTLE_TOWN_INTERIOR: if (room == 6) { se_wave1 = 0x2e; se_wave2 = 0x2f; } else { se_wave1 = 0x42; - if (inDarkness) { + if (inDarkness_) { bgm_id = Z2BGM_TWILIGHT; bgm_wave1 = 0xe; se_wave2 = 0x44; @@ -989,10 +979,10 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { } } break; - - case SPOT_CASTLE_TOWN_SHOPS: + case Z2SCENE_CASTLE_TOWN_SHOPS: se_wave1 = 0x42; se_wave2 = 0x5b; + switch (room) { case 0: if (layer == 1) { @@ -1027,8 +1017,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { break; } break; - - case SPOT_STAR_TENT: + case Z2SCENE_STAR_TENT: se_wave1 = 0x42; se_wave2 = 0x87; /* dSv_event_flag_c::F_289 - Castle Town - Heard conversation about entering Star Game 1 */ @@ -1037,11 +1026,11 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { } bgm_wave1 = 0x46; break; - - case SPOT_SACRED_GROVE: + case Z2SCENE_SACRED_GROVE: se_wave1 = 0x31; bgm_wave2 = 0x1b; se_wave2 = 0x45; + if (room == 3) { bgm_id = Z2BGM_HOLY_FOREST; bgm_wave1 = 0x2a; @@ -1066,8 +1055,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { } } break; - - case SPOT_SNOWPEAK: + case Z2SCENE_SNOWPEAK: if (layer == 8) { se_wave1 = 0; se_wave2 = 0; @@ -1081,8 +1069,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { } height_vol_mod = true; break; - - case SPOT_GERUDO_DESERT: + case Z2SCENE_GERUDO_DESERT: se_wave1 = 0x48; se_wave2 = 0x49; if (layer == 8 || layer == 9 || layer == 10) { @@ -1096,8 +1083,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { bgm_wave1 = 0x1f; } break; - - case SPOT_ARBITERS_GROUNDS_EXTERIOR: + case Z2SCENE_ARBITERS_GROUNDS_EXTERIOR: if (room == 1) { Z2GetSoundObjMgr()->setForceBattleArea(true, 1000, 2000, 9000); bgm_wave1 = 0x3d; @@ -1106,8 +1092,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { se_wave1 = 0x48; se_wave2 = 0x49; break; - - case SPOT_MIRROR_CHAMBER: + case Z2SCENE_MIRROR_CHAMBER: switch (layer) { case 7: case 8: @@ -1131,8 +1116,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { se_wave1 = 0x48; se_wave2 = 0x49; break; - - case SPOT_HYRULE_FIELD: + case Z2SCENE_HYRULE_FIELD: se_wave1 = 0x4a; if (room == 10 && layer == 11) { demo_wave = 0x74; @@ -1149,13 +1133,14 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { field_0x1b = true; fVar1 = 1.0f; Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); - } else if (inDarkness) { + } else if (inDarkness_) { if (layer == 12) { demo_wave = 0x6a; } else { bgm_id = Z2BGM_TWILIGHT; bgm_wave1 = 0xe; } + se_wave2 = 0x4c; if (room == 13 && layer == 14) { bgm_wave2 = 0x1c; @@ -1167,6 +1152,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { } else { bgm_id = Z2BGM_FIELD_LINK_NIGHT; } + bgm_wave1 = 0x19; switch (room) { case 2: @@ -1220,8 +1206,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { } } break; - - case SPOT_CASTLE_TOWN_GATES: + case Z2SCENE_CASTLE_TOWN_GATES: se_wave1 = 0x4a; if (layer == 8) { demo_wave = 0x73; @@ -1233,7 +1218,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { se_wave1 = 0; se_wave2 = 0; demo_wave = 0x7f; - } else if (inDarkness) { + } else if (inDarkness_) { bgm_id = Z2BGM_TWILIGHT; bgm_wave1 = 0xe; se_wave2 = 0x4c; @@ -1248,6 +1233,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { se_wave2 = 0x89; fVar1 = 1.0f; } + field_bgm_play = true; if (Z2GetStatusMgr()->checkDayTime()) { bgm_id = Z2BGM_FIELD_LINK_DAY; @@ -1257,8 +1243,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { bgm_wave1 = 0x19; } break; - - case SPOT_HYLIA_BRIDGE_BATTLE: + case Z2SCENE_HYLIA_BRIDGE_BATTLE: se_wave1 = 0x54; bgm_wave1 = 0x3d; se_wave2 = 0x4e; @@ -1266,8 +1251,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { field_0x1b = true; Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); break; - - case SPOT_ELDIN_BRIDGE_BATTLE: + case Z2SCENE_ELDIN_BRIDGE_BATTLE: se_wave1 = 0x4a; if (layer == 11) { se_wave1 = 0; @@ -1286,8 +1270,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); } break; - - case SPOT_SHADES_REALM: + case Z2SCENE_SHADES_REALM: se_wave1 = 0x4a; if (dComIfGs_getStartPoint() == 2) { bgm_wave2 = 0x50; @@ -1304,12 +1287,13 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { } else { bgm_wave1 = 0x44; } + se_wave2 = 0x5d; field_0x1b = true; Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); break; - case SPOT_FOREST_TEMPLE: + case Z2SCENE_FOREST_TEMPLE: bgm_id = Z2BGM_DUNGEON_FOREST; bgm_wave1 = 0xa; bgm_wave2 = 0x40; @@ -1317,8 +1301,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { se_wave2 = 2; Z2GetSeqMgr()->changeBgmStatus(room); break; - - case SPOT_FOREST_TEMPLE_MINIBOSS: + case Z2SCENE_FOREST_TEMPLE_MINIBOSS: bgm_id = Z2BGM_DUNGEON_FOREST; bgm_wave1 = 0xa; bgm_wave2 = 0xb; @@ -1326,10 +1309,9 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { se_wave2 = 3; field_0x1b = true; Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); - Z2GetSeqMgr()->unMuteSceneBgm(struct_80450860); + Z2GetSeqMgr()->unMuteSceneBgm(Z2Param::SCENE_CHANGE_BGM_FADEOUT_TIME); break; - - case SPOT_FOREST_TEMPLE_BOSS: + case Z2SCENE_FOREST_TEMPLE_BOSS: se_wave1 = 1; if (dComIfGs_isStageSwitch(2, 1)) { bgm_id = Z2BGM_DUNGEON_FOREST; @@ -1343,10 +1325,9 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { field_0x1b = true; Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); } - Z2GetSeqMgr()->unMuteSceneBgm(struct_80450860); + Z2GetSeqMgr()->unMuteSceneBgm(Z2Param::SCENE_CHANGE_BGM_FADEOUT_TIME); break; - - case SPOT_GORON_MINES: + case Z2SCENE_GORON_MINES: bgm_id = Z2BGM_DUNGEON_LV2; bgm_wave1 = 0x13; bgm_wave2 = 0x3c; @@ -1354,8 +1335,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { se_wave1 = 5; se_wave2 = 6; break; - - case SPOT_GORON_MINES_MINIBOSS: + case Z2SCENE_GORON_MINES_MINIBOSS: bgm_id = Z2BGM_DUNGEON_LV2; bgm_wave1 = 0x13; se_wave1 = 5; @@ -1364,8 +1344,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { field_0x1b = true; Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); break; - - case SPOT_GORON_MINES_BOSS: + case Z2SCENE_GORON_MINES_BOSS: se_wave1 = 5; if (dComIfGs_isStageSwitch(3, 0x7c)) { bgm_id = Z2BGM_DUNGEON_LV2; @@ -1380,16 +1359,14 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); } break; - - case SPOT_LAKEBED_TEMPLE: + case Z2SCENE_LAKEBED_TEMPLE: bgm_id = Z2BGM_DUNGEON_LV3; bgm_wave1 = 0x15; bgm_wave2 = 0x40; se_wave1 = 9; se_wave2 = 0xa; break; - - case SPOT_LAKEBED_TEMPLE_MINIBOSS: + case Z2SCENE_LAKEBED_TEMPLE_MINIBOSS: bgm_id = Z2BGM_DUNGEON_LV3; bgm_wave1 = 0x15; bgm_wave2 = 0x17; @@ -1398,8 +1375,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { field_0x1b = true; Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); break; - - case SPOT_LAKEBED_TEMPLE_BOSS: + case Z2SCENE_LAKEBED_TEMPLE_BOSS: se_wave1 = 9; if (dComIfGs_isStageSwitch(4, 0xe)) { bgm_id = Z2BGM_DUNGEON_LV3; @@ -1414,8 +1390,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); } break; - - case SPOT_ARBITERS_GROUNDS: + case Z2SCENE_ARBITERS_GROUNDS: bgm_id = Z2BGM_DUNGEON_LV4; bgm_wave1 = 0x1a; bgm_wave2 = 0x41; @@ -1425,8 +1400,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); } break; - - case SPOT_ARBITERS_GROUNDS_MINIBOSS: + case Z2SCENE_ARBITERS_GROUNDS_MINIBOSS: bgm_id = Z2BGM_DUNGEON_LV4; bgm_wave1 = 0x1a; bgm_wave2 = 0x22; @@ -1435,8 +1409,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { field_0x1b = true; Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); break; - - case SPOT_ARBITERS_GROUNDS_BOSS: + case Z2SCENE_ARBITERS_GROUNDS_BOSS: se_wave1 = 0xd; if (dComIfGs_isStageSwitch(0xa, 0xa)) { bgm_id = Z2BGM_DUNGEON_LV4; @@ -1451,8 +1424,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); } break; - - case SPOT_SNOWPEAK_RUINS: + case Z2SCENE_SNOWPEAK_RUINS: bgm_id = Z2BGM_DUNGEON_LV5; bgm_wave1 = 0x1d; bgm_wave2 = 0x40; @@ -1460,8 +1432,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { se_wave2 = 0x12; Z2GetSeqMgr()->changeBgmStatus(room); break; - - case SPOT_SNOWPEAK_RUINS_MINIBOSS: + case Z2SCENE_SNOWPEAK_RUINS_MINIBOSS: bgm_id = Z2BGM_DUNGEON_LV5; bgm_wave1 = 0x1d; bgm_wave2 = 0x38; @@ -1471,8 +1442,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); Z2GetSeqMgr()->changeBgmStatus(room); break; - - case SPOT_SNOWPEAK_RUINS_BOSS: + case Z2SCENE_SNOWPEAK_RUINS_BOSS: Z2GetSeqMgr()->unMuteSceneBgm(60); se_wave1 = 0x11; if (dComIfGs_isStageSwitch(8, 0x19)) { @@ -1488,16 +1458,14 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); } break; - - case SPOT_TEMPLE_OF_TIME: + case Z2SCENE_TEMPLE_OF_TIME: bgm_id = Z2BGM_DUNGEON_LV6; bgm_wave1 = 0x26; bgm_wave2 = 0x40; se_wave1 = 0x15; se_wave2 = 0x16; break; - - case SPOT_TEMPLE_OF_TIME_MINIBOSS: + case Z2SCENE_TEMPLE_OF_TIME_MINIBOSS: bgm_id = Z2BGM_DUNGEON_LV6; bgm_wave1 = 0x26; bgm_wave2 = 0x3f; @@ -1506,8 +1474,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { field_0x1b = true; Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); break; - - case SPOT_TEMPLE_OF_TIME_BOSS: + case Z2SCENE_TEMPLE_OF_TIME_BOSS: se_wave1 = 0x15; if (dComIfGs_isStageSwitch(7, 0x18)) { bgm_id = Z2BGM_DUNGEON_LV6; @@ -1522,8 +1489,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); } break; - - case SPOT_CITY_IN_THE_SKY: + case Z2SCENE_CITY_IN_THE_SKY: if (room == 16) { bgm_id = Z2BGM_OBACHAN; bgm_wave1 = 0x40; @@ -1534,8 +1500,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { se_wave1 = 0x19; se_wave2 = 0x1a; break; - - case SPOT_CITY_IN_THE_SKY_MINIBOSS: + case Z2SCENE_CITY_IN_THE_SKY_MINIBOSS: bgm_id = Z2BGM_DUNGEON_LV7; bgm_wave1 = 0x27; bgm_wave2 = 0x43; @@ -1544,8 +1509,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { field_0x1b = true; Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); break; - - case SPOT_CITY_IN_THE_SKY_BOSS: + case Z2SCENE_CITY_IN_THE_SKY_BOSS: se_wave1 = 0x19; if (dComIfGs_isStageSwitch(0x16, 0x25)) { bgm_id = Z2BGM_DUNGEON_LV7; @@ -1560,8 +1524,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); } break; - - case SPOT_PALACE_OF_TWILIGHT: + case Z2SCENE_PALACE_OF_TWILIGHT: if (layer == 8) { if (room == 0 || room == 9) { demo_wave = 0x77; @@ -1579,9 +1542,8 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { se_wave1 = 0x1d; se_wave2 = 0x1e; break; - - case SPOT_PALACE_OF_TWILIGHT_MINIBOSS_A: - case SPOT_PALACE_OF_TWILIGHT_MINIBOSS_B: + case Z2SCENE_PALACE_OF_TWILIGHT_MINIBOSS_A: + case Z2SCENE_PALACE_OF_TWILIGHT_MINIBOSS_B: bgm_id = Z2BGM_DUNGEON_LV8; bgm_wave1 = 0x28; bgm_wave2 = 0x48; @@ -1590,8 +1552,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { field_0x1b = true; Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); break; - - case SPOT_PALACE_OF_TWILIGHT_THRONE_ROOM: + case Z2SCENE_PALACE_OF_TWILIGHT_THRONE_ROOM: if (layer == 8) { demo_wave = 0x81; } else if (layer == 9) { @@ -1611,19 +1572,19 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { } } break; - - case SPOT_PALACE_OF_TWILIGHT_BOSS: + case Z2SCENE_PALACE_OF_TWILIGHT_BOSS: se_wave1 = 0x1d; bgm_wave1 = 0x39; se_wave2 = 0x20; + if (room == 50) { - inDarkness = true; + inDarkness_ = true; } + field_0x1b = true; Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); break; - - case SPOT_HYRULE_CASTLE: + case Z2SCENE_HYRULE_CASTLE: if (room >= 1 && room <= 6) { bgm_id = 0x2000040; bgm_wave2 = 0x58; @@ -1635,13 +1596,13 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { Z2GetSeqMgr()->bgmStop(45, 0); bgm_wave2 = 0x3d; } + se_wave1 = 0x21; se_wave2 = 0x22; field_0x1b = true; Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); break; - - case SPOT_FINAL_BATTLE_THRONE_ROOM: + case Z2SCENE_FINAL_BATTLE_THRONE_ROOM: if (room == 50) { if (layer == 8) { demo_wave = 0x7b; @@ -1657,20 +1618,19 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { demo_wave = 0x7c; } } + se_wave1 = 0x56; field_0x1b = true; Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); break; - - case SPOT_FINAL_BATTLE_FIELD: + case Z2SCENE_FINAL_BATTLE_FIELD: bgm_wave1 = 0x4b; se_wave2 = 0x63; se_wave1 = 0x8c; field_0x1b = true; Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); break; - - case SPOT_FINAL_BATTLE_CUTSCENE: + case Z2SCENE_FINAL_BATTLE_CUTSCENE: if (layer == 8) { demo_wave = 0x7c; fVar1 = 0.1f; @@ -1683,53 +1643,46 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { demo_wave = 0x7f; } break; - - case SPOT_LIGHT_SPIRIT_CHAMBER: + case Z2SCENE_LIGHT_SPIRIT_CHAMBER: demo_wave = 0x7c; break; - - case SPOT_CAVE_OF_ORDEALS: + case Z2SCENE_CAVE_OF_ORDEALS: se_wave2 = 0x51; if (room != 49 || layer < 5 || layer > 8) { bgm_id = Z2BGM_SUB_DUNGEON; bgm_wave1 = 0x45; } break; - - case SPOT_ICE_BLOCK_PUZZLE: + case Z2SCENE_ICE_BLOCK_PUZZLE: se_wave1 = 0x11; se_wave2 = 0x12; bgm_id = Z2BGM_SUB_DUNGEON; bgm_wave1 = 0x45; break; - - case SPOT_GORGE_LANTERN_CAVE: - case SPOT_LAKE_LANTERN_CAVE: + case Z2SCENE_GORGE_LANTERN_CAVE: + case Z2SCENE_LAKE_LANTERN_CAVE: se_wave2 = 0x52; bgm_id = Z2BGM_SUB_DUNGEON; bgm_wave1 = 0x45; break; - - case SPOT_ELDIN_MAGNET_CAVE: + case Z2SCENE_ELDIN_MAGNET_CAVE: se_wave1 = 5; se_wave2 = 6; bgm_id = Z2BGM_SUB_DUNGEON; bgm_wave1 = 0x45; break; - - case SPOT_GROTTO_GRASS_1: - case SPOT_GROTTO_GRASS_2: - case SPOT_GROTTO_ROCK_1: - case SPOT_GROTTO_ROCK_2: - case SPOT_GROTTO_POND: + case Z2SCENE_GROTTO_GRASS_1: + case Z2SCENE_GROTTO_GRASS_2: + case Z2SCENE_GROTTO_ROCK_1: + case Z2SCENE_GROTTO_ROCK_2: + case Z2SCENE_GROTTO_POND: se_wave2 = 0x50; bgm_id = Z2BGM_SUB_DUNGEON; bgm_wave1 = 0x45; break; - - case SPOT_FARON_WOODS_CAVE: + case Z2SCENE_FARON_WOODS_CAVE: se_wave2 = 0x53; - if (inDarkness) { + if (inDarkness_) { bgm_id = Z2BGM_TWILIGHT; bgm_wave1 = 0xe; } else { @@ -1743,25 +1696,24 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[104]) /* dSv_event_flag_c::F_0250 - Cutscene - [cutscene: 21] reunion with Zelda / Midna revived (Hyrule Castle barrier appears) */ && !dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[250]) - && demo_wave == 0 && spot != SPOT_ELDIN_BRIDGE_BATTLE) + && demo_wave == 0 && spotNo != Z2SCENE_ELDIN_BRIDGE_BATTLE) { bgm_wave1 = 0x36; - if (spot == SPOT_CASTLE_TOWN_SHOPS && room == 5) { + if (spotNo == Z2SCENE_CASTLE_TOWN_SHOPS && room == 5) { bgm_id = -1; } else { bgm_id = Z2BGM_MIDNA_SOS; - if ((spot == SPOT_CASTLE_TOWN_INTERIOR && room == 5) - || spot == SPOT_CASTLE_TOWN_SHOPS || spot == SPOT_STAR_TENT) + if ((spotNo == Z2SCENE_CASTLE_TOWN_INTERIOR && room == 5) + || spotNo == Z2SCENE_CASTLE_TOWN_SHOPS || spotNo == Z2SCENE_STAR_TENT) { Z2GetSeqMgr()->muteSceneBgm(33, 0.5f); } else { Z2GetSeqMgr()->unMuteSceneBgm(33); } } + time_proc_vol_mod = false; - } else if (sceneNum == SPOT_CASTLE_TOWN_SHOPS && roomNum == 1 - && !(spot == SPOT_CASTLE_TOWN && room == 3)) - { + } else if (sceneNum == Z2SCENE_CASTLE_TOWN_SHOPS && roomNum == 1 && !(spotNo == Z2SCENE_CASTLE_TOWN && room == 3)) { bgm_id = Z2BGM_FORTUNE; bgm_wave1 = 0x37; Z2GetSeqMgr()->changeBgmStatus(1); @@ -1774,7 +1726,7 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { JSULink* stream; for (stream = stream_list->getFirst(); stream != NULL; stream = stream->getNext()) { if (bVar2 || sound_table->getTypeID(stream->getObject()->getID()) != 0x71) { - stream->getObject()->stop(struct_80450860); + stream->getObject()->stop(Z2Param::SCENE_CHANGE_BGM_FADEOUT_TIME); } } } @@ -1782,15 +1734,16 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { Z2GetSeqMgr()->setHeightVolMod(height_vol_mod, 30); Z2GetSeqMgr()->setTimeProcVolMod(time_proc_vol_mod, 0); Z2GetSeqMgr()->setFieldBgmPlay(field_bgm_play); - Z2GetEnvSeMgr()->initSceneEnvSe(spot, room, fVar1); + Z2GetEnvSeMgr()->initSceneEnvSe(spotNo, room, fVar1); - if (sceneNum != spot || bgm_id != BGM_ID || se_wave1 != loadedSeWave_1 + if (sceneNum != spotNo || bgm_id != BGM_ID || se_wave1 != loadedSeWave_1 || se_wave2 != loadedSeWave_2 || bgm_wave1 != loadedBgmWave_1 || bgm_wave2 != loadedBgmWave_2 || demo_wave != loadedDemoWave) { - sceneNum = spot; + sceneNum = spotNo; sceneChange(bgm_id, se_wave1, se_wave2, bgm_wave1, bgm_wave2, demo_wave, false); } + roomNum = room; } @@ -1798,6 +1751,9 @@ void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { * sceneChange__10Z2SceneMgrF10JAISoundIDUcUcUcUcUcb */ void Z2SceneMgr::sceneChange(JAISoundID bgm, u8 seWave1, u8 seWave2, u8 bgmWave1, u8 bgmWave2, u8 demoWave, bool param_6) { + OS_REPORT("[Z2SceneMgr::sceneChange] bgm:0x%08x, SeWave1:%d, SeWave2:%d BgmWave1:%d BgmWave2:%d demoWave:%d (%d)\n", + *(u32*)&bgm, seWave1, seWave2, bgmWave1, bgmWave2, demoWave, param_6); + if (bgm != BGM_ID) { if (Z2GetSeqMgr()->getMainBgmID() == bgm) { field_0x1a = false; @@ -1843,7 +1799,7 @@ void Z2SceneMgr::framework() { if (timer < 10000) { timer++; } - if (!field_0x1b && Z2GetStatusMgr()->getDemoStatus() != 3 && timer == struct_80450863) { + if (!field_0x1b && Z2GetStatusMgr()->getDemoStatus() != 3 && timer == Z2Param::BATTLE_BGM_WAIT_TIME) { Z2GetSeqMgr()->setBattleBgmOff(false); } } else { @@ -1854,6 +1810,8 @@ void Z2SceneMgr::framework() { /* 802B9D40-802B9D98 2B4680 0058+00 0/0 1/1 0/0 .text load1stDynamicWave__10Z2SceneMgrFv */ void Z2SceneMgr::load1stDynamicWave() { + OS_REPORT("[Z2SceneMgr::load1stDynamicWave] load1stWait:%d\n", load1stWait); + timer = 0; Z2GetSoundObjMgr()->deleteEnemyAll(); setSceneExist(false); @@ -1864,6 +1822,8 @@ void Z2SceneMgr::load1stDynamicWave() { /* 802B9D98-802B9FC8 2B46D8 0230+00 2/2 0/0 0/0 .text _load1stWaveInner_1__10Z2SceneMgrFv */ void Z2SceneMgr::_load1stWaveInner_1() { + OS_REPORT("[Z2SceneMgr::_load1stWaveInner_1] requestSe:%d loadedSe:%d\n", requestSeWave_1, loadedSeWave_1); + Z2GetSeMgr()->seStopAll(0); Z2GetEnvSeMgr()->resetSceneInner(); /* dSv_event_flag_c::M_071 - Cutscene - [cutscene: 20] Zant appears (during Midna's desperate hour) */ @@ -1903,7 +1863,8 @@ void Z2SceneMgr::_load1stWaveInner_1() { } if (field_0x1a && Z2GetSeqMgr()->checkBgmPlaying()) { - Z2GetSeqMgr()->bgmStop(0xf, 0); + OS_REPORT("[Z2SceneMgr::load1stDynamicWave]bgm StopCount = %d\n", 15); + Z2GetSeqMgr()->bgmStop(15, 0); load1stWait = -15; } else { _load1stWaveInner_2(); @@ -1913,6 +1874,8 @@ void Z2SceneMgr::_load1stWaveInner_1() { /* 802B9FC8-802BA09C 2B4908 00D4+00 2/2 0/0 0/0 .text _load1stWaveInner_2__10Z2SceneMgrFv */ void Z2SceneMgr::_load1stWaveInner_2() { + OS_REPORT("[Z2SceneMgr::_load1stWaveInner_2] requestBgm:%d loadedBgm:%d\n", requestBgmWave_1, loadedBgmWave_1); + if (loadedBgmWave_2 != 0 && requestBgmWave_2 != loadedBgmWave_2) { eraseBgmWave(loadedBgmWave_2); loadedBgmWave_2 = 0; @@ -1936,13 +1899,15 @@ void Z2SceneMgr::_load1stWaveInner_2() { /* 802BA09C-802BA120 2B49DC 0084+00 0/0 1/1 0/0 .text check1stDynamicWave__10Z2SceneMgrFv */ bool Z2SceneMgr::check1stDynamicWave() { - return load1stWait != 0 || getSeLoadStatus(requestSeWave_1) == 1 - || getBgmLoadStatus(requestBgmWave_1) == 1; + return load1stWait != 0 || getSeLoadStatus(requestSeWave_1) == 1 || getBgmLoadStatus(requestBgmWave_1) == 1; } /* 802BA120-802BA294 2B4A60 0174+00 0/0 2/2 0/0 .text load2ndDynamicWave__10Z2SceneMgrFv */ void Z2SceneMgr::load2ndDynamicWave() { + OS_REPORT("[Z2SceneMgr::load2ndDynamicWave] requestSe:%d, loadedSe:%d requestBgm:%d loadedBgm:%d requestDemo:%d loadedDemo:%d\n", + requestSeWave_2, loadedSeWave_2, requestBgmWave_2, loadedBgmWave_2, requestDemoWave, loadedDemoWave); + if (requestDemoWave != loadedDemoWave) { if (loadedSeWave_2 != 0 && eraseSeWave(loadedSeWave_2)) { loadedSeWave_2 = 0; @@ -1983,10 +1948,10 @@ void Z2SceneMgr::load2ndDynamicWave() { /* 802BA294-802BA56C 2B4BD4 02D8+00 1/0 2/2 0/0 .text sceneBgmStart__10Z2SceneMgrFv */ // NONMATCHING - extra BGM_ID load void Z2SceneMgr::sceneBgmStart() { - OS_REPORT("[Z2SceneMgr::sceneBgmStart] %08x", BGM_ID.mId.mFullId); - + OS_REPORT("[Z2SceneMgr::sceneBgmStart] %08x\n", *(u32*)&BGM_ID); inGame = true; - BOOL r28 = FALSE; + + int var_r28 = 0; setSceneExist(true); Z2GetStatusMgr()->setPauseFlag(0); @@ -1994,9 +1959,10 @@ void Z2SceneMgr::sceneBgmStart() { return; } - if (!BGM_ID.isAnonymous() && !r28 && Z2GetStatusMgr()->getDemoStatus() != 11) { + if (!BGM_ID.isAnonymous() && var_r28 == 0 && Z2GetStatusMgr()->getDemoStatus() != 11) { bool var; - switch (BGM_ID.mId.mBytes.b0) { + int section = BGM_ID.id_.info.type.parts.sectionID; + switch (section) { case 1: var = false; switch (Z2GetSeqMgr()->getSubBgmID()) { @@ -2017,7 +1983,7 @@ void Z2SceneMgr::sceneBgmStart() { case Z2BGM_DUNGEON_LV8: case Z2BGM_DUNGEON_LV9_02: case Z2BGM_SNOW_MOUNTAIN: - if (sceneNum == SPOT_CASTLE_TOWN_SHOPS) { + if (sceneNum == Z2SCENE_CASTLE_TOWN_SHOPS) { Z2GetSeqMgr()->changeBgmStatus(5); } else { Z2GetSeqMgr()->changeBgmStatus(roomNum); @@ -2030,27 +1996,27 @@ void Z2SceneMgr::sceneBgmStart() { Z2GetSeqMgr()->changeBgmStatus(0); break; case Z2BGM_CHURCH2: - if (sceneNum == SPOT_SANCTUARY_BASEMENT) { + if (sceneNum == Z2SCENE_SANCTUARY_BASEMENT) { Z2GetSeqMgr()->muteSceneBgm(0, 0.5f); } break; case Z2BGM_MIDNA_SOS: - if ((sceneNum == SPOT_CASTLE_TOWN_INTERIOR && roomNum == 5) - || sceneNum == SPOT_CASTLE_TOWN_SHOPS || sceneNum == SPOT_STAR_TENT) + if ((sceneNum == Z2SCENE_CASTLE_TOWN_INTERIOR && roomNum == 5) + || sceneNum == Z2SCENE_CASTLE_TOWN_SHOPS || sceneNum == Z2SCENE_STAR_TENT) { Z2GetSeqMgr()->muteSceneBgm(0, 0.5f); } break; case Z2BGM_TOAL_NIGHT: - if (sceneNum == SPOT_ORDON_INTERIOR && roomNum == 2) { + if (sceneNum == Z2SCENE_ORDON_INTERIOR && roomNum == 2) { Z2GetSeqMgr()->changeBgmStatus(2); } else { Z2GetSeqMgr()->changeBgmStatus(0); } break; case Z2BGM_FILONE_FOREST: - if (sceneNum == SPOT_CORO_SHOP - || (sceneNum == SPOT_FARON_WOODS && roomNum == 14)) + if (sceneNum == Z2SCENE_CORO_SHOP + || (sceneNum == Z2SCENE_FARON_WOODS && roomNum == 14)) { Z2GetSeqMgr()->changeBgmStatus(2); } else { @@ -2075,6 +2041,10 @@ void Z2SceneMgr::sceneBgmStart() { /* 802BA56C-802BA5C0 2B4EAC 0054+00 0/0 1/1 0/0 .text loadStaticWaves__10Z2SceneMgrFv */ void Z2SceneMgr::loadStaticWaves() { + OS_REPORT("[Z2SceneMgr::loadStaticWaves] 常駐シーン波形を読み込みます\n"); + #if PLATFORM_SHIELD + loadSceneWave(0, 2); + #endif loadSeWave(0); loadBgmWave(0); loadSeWave(0x58); @@ -2089,7 +2059,10 @@ BOOL Z2SceneMgr::checkFirstWaves() { /* 802BA5C8-802BA630 2B4F08 0068+00 2/2 0/0 0/0 .text eraseSeWave__10Z2SceneMgrFUl */ bool Z2SceneMgr::eraseSeWave(u32 wave) { - JASWaveBank* wave_bank = JAUSectionHeap::getInstance()->getWaveBankTable().getWaveBank(0); + JAUSectionHeap* sectionHeap = JASGlobalInstance::getInstance(); + JUT_ASSERT(2976, sectionHeap); + + JASWaveBank* wave_bank = sectionHeap->getWaveBankTable().getWaveBank(0); if (wave_bank != NULL) { JASWaveArc* wave_arc = wave_bank->getWaveArc(wave); if (wave_arc != NULL) { @@ -2101,7 +2074,10 @@ bool Z2SceneMgr::eraseSeWave(u32 wave) { /* 802BA630-802BA698 2B4F70 0068+00 2/2 0/0 0/0 .text eraseBgmWave__10Z2SceneMgrFUl */ bool Z2SceneMgr::eraseBgmWave(u32 wave) { - JASWaveBank* wave_bank = JAUSectionHeap::getInstance()->getWaveBankTable().getWaveBank(1); + JAUSectionHeap* sectionHeap = JASGlobalInstance::getInstance(); + JUT_ASSERT(2988, sectionHeap); + + JASWaveBank* wave_bank = sectionHeap->getWaveBankTable().getWaveBank(1); if (wave_bank != NULL) { JASWaveArc* wave_arc = wave_bank->getWaveArc(wave); if (wave_arc != NULL) { @@ -2113,7 +2089,10 @@ bool Z2SceneMgr::eraseBgmWave(u32 wave) { /* 802BA698-802BA704 2B4FD8 006C+00 1/1 0/0 0/0 .text getWaveLoadStatus__10Z2SceneMgrFUlUl */ s32 Z2SceneMgr::getWaveLoadStatus(u32 wave, u32 bank) { - JASWaveBank* wave_bank = JAUSectionHeap::getInstance()->getWaveBankTable().getWaveBank(bank); + JAUSectionHeap* sectionHeap = JASGlobalInstance::getInstance(); + JUT_ASSERT(3001, sectionHeap); + + JASWaveBank* wave_bank = sectionHeap->getWaveBankTable().getWaveBank(bank); if (wave_bank != NULL) { JASWaveArc* wave_arc = wave_bank->getWaveArc(wave); if (wave_arc != NULL) { @@ -2123,9 +2102,12 @@ s32 Z2SceneMgr::getWaveLoadStatus(u32 wave, u32 bank) { return 0; } -/* 802BA704-802BA770 2B5044 006C+00 3/3 0/0 0/0 .text loadSeWave__10Z2SceneMgrFUl */ -bool Z2SceneMgr::loadSeWave(u32 wave) { - JASWaveBank* wave_bank = JAUSectionHeap::getInstance()->getWaveBankTable().getWaveBank(0); +#if PLATFORM_SHIELD +bool Z2SceneMgr::loadSceneWave(u32 wave, u32 bank) { + JAUSectionHeap* sectionHeap = JASGlobalInstance::getInstance(); + JUT_ASSERT(3014, sectionHeap); + + JASWaveBank* wave_bank = sectionHeap->getWaveBankTable().getWaveBank(bank); if (wave_bank != NULL) { JASWaveArc* wave_arc = wave_bank->getWaveArc(wave); if (wave_arc != NULL) { @@ -2134,15 +2116,38 @@ bool Z2SceneMgr::loadSeWave(u32 wave) { } return false; } +#endif + +/* 802BA704-802BA770 2B5044 006C+00 3/3 0/0 0/0 .text loadSeWave__10Z2SceneMgrFUl */ +bool Z2SceneMgr::loadSeWave(u32 wave) { + JAUSectionHeap* sectionHeap = JASGlobalInstance::getInstance(); + JUT_ASSERT(3030, sectionHeap); + + JASWaveBank* wave_bank = sectionHeap->getWaveBankTable().getWaveBank(0); + if (wave_bank != NULL) { + JASWaveArc* wave_arc = wave_bank->getWaveArc(wave); + if (wave_arc != NULL) { + return wave_arc->load(NULL); + } + } + + JUT_WARN_DEVICE(3038, 1, "Z2SceneMgr::cannot load SE wave:%d\n", wave); + return false; +} /* 802BA770-802BA7DC 2B50B0 006C+00 3/3 0/0 0/0 .text loadBgmWave__10Z2SceneMgrFUl */ bool Z2SceneMgr::loadBgmWave(u32 wave) { - JASWaveBank* wave_bank = JAUSectionHeap::getInstance()->getWaveBankTable().getWaveBank(1); + JAUSectionHeap* sectionHeap = JASGlobalInstance::getInstance(); + JUT_ASSERT(3047, sectionHeap); + + JASWaveBank* wave_bank = sectionHeap->getWaveBankTable().getWaveBank(1); if (wave_bank != NULL) { JASWaveArc* wave_arc = wave_bank->getWaveArc(wave); if (wave_arc != NULL) { return wave_arc->loadTail(NULL); } } + + JUT_WARN_DEVICE(3055, 1, "Z2SceneMgr::cannot load BGM wave:%d\n", wave); return false; } diff --git a/src/Z2AudioLib/Z2SeMgr.cpp b/src/Z2AudioLib/Z2SeMgr.cpp index cbb20a3614..f4f02fe6e9 100644 --- a/src/Z2AudioLib/Z2SeMgr.cpp +++ b/src/Z2AudioLib/Z2SeMgr.cpp @@ -1,8 +1,3 @@ -// -// Generated By: dol2asm -// Translation Unit: Z2SeMgr -// - #include "Z2AudioLib/Z2SeMgr.h" #include "Z2AudioLib/Z2Audience.h" #include "Z2AudioLib/Z2Calc.h" @@ -16,7 +11,7 @@ #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) { +Z2SeMgr::Z2SeMgr() : JASGlobalInstance(true), mSoundHandles(mSoundHandle, 24) { field_0x3c0 = 0; field_0x3c1 = 0; field_0x3c2 = 0; @@ -31,24 +26,34 @@ Z2SeMgr::Z2SeMgr() : JASGlobalInstance(this), mSoundHandles(mSoundHandle, 0x18) } Z2MultiSeObj::Z2MultiSeObj() { - mSoundID = 0xFFFFFFFF; - field_0x20 = 0; + soundID_ = 0xFFFFFFFF; + reverb_ = 0; } /* 802AB750-802AB80C 2A6090 00BC+00 0/0 1/1 0/0 .text initSe__7Z2SeMgrFv */ void Z2SeMgr::initSe() { + #if VERSION == VERSION_SHIELD_DEBUG + dbg_field_0x68.releaseSound(); + dbg_field_0x6c = 0.5f; + dbg_field_0x70 = 0.0f; + dbg_field_0x74 = 0.0f; + dbg_field_0x78 = 0.0f; + #endif + for (u8 i = 0; i < 10; i++) { mLevelObjSe[i].resetMultiSePos(); - mLevelObjSe[i].mSoundID = 0xffffffff; - mLevelObjSe[i].field_0x20 = 0; + mLevelObjSe[i].soundID_ = 0xFFFFFFFF; + mLevelObjSe[i].reverb_ = 0; } + mLevelObjectSeCount = 0; for (u8 i = 0; i < 10; i++) { mMultiTriggerSe[i].resetMultiSePos(); - mMultiTriggerSe[i].mSoundID = 0xffffffff; - mMultiTriggerSe[i].field_0x20 = 0; + mMultiTriggerSe[i].soundID_ = 0xFFFFFFFF; + mMultiTriggerSe[i].reverb_ = 0; } + mMultiTriggerSeCount = 0; resetModY(); } @@ -61,7 +66,7 @@ void Z2SeMgr::resetModY() { /* 802AB830-802AB93C 2A6170 010C+00 1/1 0/0 0/0 .text modHeightAtCamera__7Z2SeMgrFPPC3Vec */ -void Z2SeMgr::modHeightAtCamera(Vec const** param_0) { +void Z2SeMgr::modHeightAtCamera(const Vec** param_0) { if (*param_0 != NULL) { int idx = 9999; for (int i = 0; i < 8; i++) { @@ -70,8 +75,9 @@ void Z2SeMgr::modHeightAtCamera(Vec const** param_0) { break; } } + if (idx == 9999) { - int i; + int i = 0; for (i = 0; i < 8; i++) { if (mModY[i] == NULL) { idx = i; @@ -79,15 +85,19 @@ void Z2SeMgr::modHeightAtCamera(Vec const** param_0) { break; } } + if (i == 8) { + JUT_WARN_DEVICE(126, 1, "%s", "Z2SeMgr: cannot mod cam_y"); return; } } + field_0x340[idx] = **param_0; Vec cam_pos = Z2GetAudience()->getAudioCamPos(0); if (field_0x340[idx].y > cam_pos.y) { field_0x340[idx].y = cam_pos.y; } + *param_0 = &field_0x340[idx]; } } @@ -110,14 +120,14 @@ void Z2SeMgr::decrCrowdSize() { /* 802AB984-802AC50C 2A62C4 0B88+00 1/1 196/196 549/549 .text * seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc */ -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) { +bool Z2SeMgr::seStart(JAISoundID soundID, const Vec* posPtr, u32 param_2, s8 reverb, + f32 pitch, f32 volume, f32 pan, f32 dolby, u8 param_8) { + if (soundID == 0xFFFFFFFF) { return false; } if (param_8 != 1) { - switch (i_soundID) { + switch (soundID) { case Z2SE_OBJ_L8_STAIR_ON: case Z2SE_OBJ_L8_STAIR_MV_UP: case Z2SE_OBJ_L8_STAIR_MV_DW: @@ -126,12 +136,12 @@ bool Z2SeMgr::seStart(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, s8 i_ 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); + setMultiTriggerSE(soundID, const_cast(posPtr), reverb); return false; } } - switch (i_soundID) { + switch (soundID) { case Z2SE_QUIT_GAME: Z2GetStatusMgr()->menuOut(); break; @@ -181,28 +191,26 @@ bool Z2SeMgr::seStart(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, s8 i_ return false; } param_2 = param_2 * param_2; - i_volume = param_2 / 10000.0f; + volume = param_2 / 10000.0f; break; case Z2SE_OBJ_BOMB_BOUND: - if (i_volume >= 100.0f) { - i_volume = 100.0f; + if (volume >= 100.0f) { + volume = 100.0f; } - if (i_volume <= 0.0f) { + if (volume <= 0.0f) { return false; } - i_volume = (i_volume * i_volume) / 10000.0f; + volume = (volume * 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); + volume = Z2Calc::getParamByExp(param_2, 0.0f, 100.0f, 0.2f, 0.0f, 1.0f, + Z2Calc::CURVE_NEGATIVE); break; case Z2SE_MAGIC_METER_DEC: - if (mSoundHandles.getHandleSoundID(Z2SE_MAGIC_METER_DEC) != NULL - || mSoundHandles.getHandleSoundID(Z2SE_MAGIC_METER_FINISH) != NULL) - { + if (mSoundHandles.getHandleSoundID(Z2SE_MAGIC_METER_DEC) != NULL || mSoundHandles.getHandleSoundID(Z2SE_MAGIC_METER_FINISH) != NULL) { return false; } break; @@ -223,11 +231,11 @@ bool Z2SeMgr::seStart(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, s8 i_ case Z2SE_OBJ_BOARD_BOUND: case Z2SE_OBJ_BOARD_PUT: if (param_2 < 90) { - i_volume = 0.7f; - i_pitch = 1.25f; + volume = 0.7f; + pitch = 1.25f; } else if (param_2 < 60) { - i_volume = 0.4f; - i_pitch = 1.5f; + volume = 0.4f; + pitch = 1.5f; } break; case Z2SE_SY_TALK_START: @@ -238,14 +246,14 @@ bool Z2SeMgr::seStart(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, s8 i_ break; case Z2SE_SY_TALK_NEXT: if (Z2GetStatusMgr()->isMovieDemo()) { - i_soundID = Z2SE_SY_DEMO_MESSAGE_NEXT; + soundID = Z2SE_SY_DEMO_MESSAGE_NEXT; } break; case Z2SE_SY_TALK_WIN_CLOSE: if (Z2GetStatusMgr()->getDemoStatus() == 1) { - i_soundID = Z2SE_SY_TALK_END; + soundID = Z2SE_SY_TALK_END; } else if (Z2GetStatusMgr()->isMovieDemo()) { - i_soundID = Z2SE_SY_DEMO_MESSAGE_END; + soundID = Z2SE_SY_DEMO_MESSAGE_END; } break; case Z2SE_HP_GAUGE_INC: @@ -255,34 +263,34 @@ bool Z2SeMgr::seStart(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, s8 i_ break; case Z2SE_OBJ_CHANDELIER_SWING: { Vec tmp = Z2GetAudience()->getAudioCamPos(0); - if (i_pos->y > tmp.y) { + if (posPtr->y > tmp.y) { return false; } break; } case Z2SE_OBJ_CHANDLV5_SWING: - i_volume = Z2Calc::getParamByExp(param_2, 35.0f, 261.0f, 0.4f, 0.05f, 1.0f, - Z2Calc::CURVE_SIGN_2); + volume = Z2Calc::getParamByExp(param_2, 35.0f, 261.0f, 0.4f, 0.05f, 1.0f, + Z2Calc::CURVE_LINEAR); break; case Z2SE_OBJ_IRONBALL_HIT: if (param_2 > 150) { - i_volume = 1.4f; + volume = 1.4f; } else { - i_volume = Z2Calc::getParamByExp(param_2, 0.0f, 47.0f, 0.4f, 0.5f, 0.9f, - Z2Calc::CURVE_SIGN_2); + volume = Z2Calc::getParamByExp(param_2, 0.0f, 47.0f, 0.4f, 0.5f, 0.9f, + Z2Calc::CURVE_LINEAR); } 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); + volume = Z2Calc::getParamByExp(param_2, 0.0f, 41.0f, 0.4f, 0.3f, 1.0f, + Z2Calc::CURVE_LINEAR); 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); + volume = Z2Calc::getParamByExp(param_2, 0.0f, 41.0f, 0.4f, 0.3f, 1.0f, + Z2Calc::CURVE_LINEAR); break; case Z2SE_OBJ_L8_B_FOG_FLY: { Vec tmp = Z2GetAudience()->getAudioCamPos(0); - if (i_pos->y > tmp.y) { + if (posPtr->y > tmp.y) { return false; } break; @@ -296,29 +304,29 @@ bool Z2SeMgr::seStart(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, s8 i_ 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); + volume = Z2Calc::getParamByExp(param_2, 0.0f, 400.0f, 0.4f, 0.5f, 1.0f, + Z2Calc::CURVE_NEGATIVE); + pitch = Z2Calc::getParamByExp(param_2, 0.0f, 400.0f, 0.4f, 0.8f, 1.1f, + Z2Calc::CURVE_NEGATIVE); 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); + volume = Z2Calc::getParamByExp(param_2, 15.0f, 60.0f, 0.4f, 0.0f, 1.0f, + Z2Calc::CURVE_POSITIVE); 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); + Z2Calc::CURVE_NEGATIVE); + volume = Z2Calc::getParamByExp(param_2, 0.0f, 127.0f, 0.2f, 0.2f, 1.0f, + Z2Calc::CURVE_NEGATIVE); + pitch = Z2Calc::getParamByExp(param_2, 127.0f, 0.0f, 0.2f, 0.8f, 1.2f, + Z2Calc::CURVE_POSITIVE); break; case Z2SE_OBJ_DARK_GATE_RIPPLE: if (Z2GetSceneMgr()->getCurrentSceneNum() == 3) { - i_soundID = Z2SE_OBJ_DARK_GATE_RIPPLE_WLF; + soundID = Z2SE_OBJ_DARK_GATE_RIPPLE_WLF; } else if (Z2GetSceneMgr()->getCurrentSceneNum() == 30 && Z2GetSceneMgr()->getCurrentRoomNum() == 7) { - i_soundID = Z2SE_OBJ_DARK_GATE_RIPPLE_WLF; + soundID = Z2SE_OBJ_DARK_GATE_RIPPLE_WLF; } break; case Z2SE_OBJ_ARMOR_SWING: @@ -326,12 +334,12 @@ bool Z2SeMgr::seStart(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, s8 i_ 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 (isLevelSe(soundID)) { + return seStartLevel(soundID, posPtr, param_2, reverb, pitch, + volume, pan, dolby, param_8); } - if (isSoundCulling(i_soundID)) { + if (isSoundCulling(soundID)) { return false; } @@ -340,17 +348,17 @@ bool Z2SeMgr::seStart(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, s8 i_ 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); + return Z2GetSoundStarter()->startSound(soundID, handle, (JGeometry::TVec3*)posPtr, + param_2, reverb / 127.0f, + pitch, volume, pan, dolby, 0); } /* 802AC50C-802AD8B0 2A6E4C 13A4+00 3/2 19/19 199/199 .text * seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc */ -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) { +bool Z2SeMgr::seStartLevel(JAISoundID soundID, const Vec* posPtr, u32 param_2, s8 reverb, + f32 pitch, f32 volume, f32 pan, f32 dolby, u8 param_8) { if (param_8 != 1) { - switch (i_soundID) { + switch (soundID) { case Z2SE_OBJ_FIRE_BURNING: if (Z2GetStatusMgr()->getDemoStatus() == 2 || !Z2GetSceneMgr()->isInGame()) { return false; @@ -361,36 +369,36 @@ bool Z2SeMgr::seStartLevel(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, case Z2SE_OBJ_L8_L_BALL_SW: case Z2SE_OBJ_GANON_BARRIER: case Z2SE_OBJ_CRVN_BURNING: - setLevObjSE(i_soundID, const_cast(i_pos), i_reverb); + setLevObjSE(soundID, const_cast(posPtr), reverb); return false; } } - switch (i_soundID) { + switch (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); + volume = Z2Calc::getParamByExp(param_2, 25.0f, 127.0f, 0.4f, 0.1f, 1.0f, + Z2Calc::CURVE_NEGATIVE); + pitch = Z2Calc::getParamByExp(param_2, 25.0f, 127.0f, 0.4f, 0.7f, 1.2f, + Z2Calc::CURVE_NEGATIVE); 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); + volume = Z2Calc::getParamByExp(param_2, 0.0f, 127.0f, 0.4f, 0.1f, 1.0f, + Z2Calc::CURVE_NEGATIVE); + pitch = Z2Calc::getParamByExp(param_2, 0.0f, 127.0f, 0.4f, 0.7f, 1.2f, + Z2Calc::CURVE_NEGATIVE); 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); + volume = Z2Calc::getParamByExp(param_2, 10.0f, 127.0f, 2.0f, 0.0f, 1.0f, + Z2Calc::CURVE_POSITIVE); + pitch = Z2Calc::getParamByExp(param_2, 10.0f, 127.0f, 2.0f, 0.7f, 1.2f, + Z2Calc::CURVE_POSITIVE); break; case Z2SE_OBJ_FAN_WIND_S: - modHeightAtCamera(&i_pos); + modHeightAtCamera(&posPtr); break; case Z2SE_OBJ_FAN_ROLL_S: case Z2SE_OBJ_FAN_ROLL_M: @@ -398,175 +406,174 @@ bool Z2SeMgr::seStartLevel(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, 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); + volume = Z2Calc::getParamByExp(param_2, 10.0f, 127.0f, 2.0f, 0.0f, 1.0f, + Z2Calc::CURVE_POSITIVE); + pitch = Z2Calc::getParamByExp(param_2, 10.0f, 127.0f, 2.0f, 0.7f, 1.2f, + Z2Calc::CURVE_POSITIVE); 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); + volume = Z2Calc::getParamByExp(param_2, 10.0f, 127.0f, 2.0f, 0.0f, 1.0f, + Z2Calc::CURVE_POSITIVE); + pitch = Z2Calc::getParamByExp(param_2, 10.0f, 127.0f, 2.0f, 0.7f, 1.2f, + Z2Calc::CURVE_POSITIVE); 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); + pitch = Z2Calc::getParamByExp(param_2, 0.0f, 127.0f, 2.0f, 0.7f, 1.2f, + Z2Calc::CURVE_POSITIVE); 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); + volume = Z2Calc::getParamByExp(param_2, 25.0f, 127.0f, 0.4f, 0.4f, 1.0f, + Z2Calc::CURVE_NEGATIVE); + pitch = Z2Calc::getParamByExp(param_2, 25.0f, 127.0f, 0.4f, 0.8f, 1.0f, + Z2Calc::CURVE_NEGATIVE); 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); + volume = Z2Calc::getParamByExp(param_2, 10.0f, 127.0f, 2.0f, 0.0f, 1.0f, + Z2Calc::CURVE_POSITIVE); + pitch = Z2Calc::getParamByExp(param_2, 10.0f, 127.0f, 2.0f, 0.7f, 1.2f, + Z2Calc::CURVE_POSITIVE); 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; + volume = 1.0f; + pitch = 1.3f; } else { - i_volume = param_2 * 0.0006 + 0.7; - i_pitch = param_2 * 0.0006 + 1.0; + volume = param_2 * 0.0006 + 0.7; + 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; + volume = 1.0f; + pitch = (param_2 - 500) * 0.0015 + 1.0; } else if (param_2 < 300) { - i_volume = 0.0f; + volume = 0.0f; } else { - i_volume = (param_2 - 300) * 0.005; + volume = (param_2 - 300) * 0.005; } break; case Z2SE_OBJ_WTR_CLMN_UP: if (param_2 <= 500) { - i_pitch = 0.8f; + pitch = 0.8f; } else if (param_2 > 500 && param_2 <= 1000) { - i_pitch = 1.0f; + pitch = 1.0f; } else if (param_2 > 1000 && param_2 <= 1500) { - i_pitch = 1.0f; + pitch = 1.0f; } else { - i_pitch = 1.2f; + pitch = 1.2f; } - modHeightAtCamera(&i_pos); + modHeightAtCamera(&posPtr); break; case Z2SE_OBJ_WTR_CLMN_DOWN: if (param_2 > 700) { - i_pitch = 1.0f; + pitch = 1.0f; } else { - i_pitch = param_2 * 0.001 + 0.3; + pitch = param_2 * 0.001 + 0.3; } - modHeightAtCamera(&i_pos); + modHeightAtCamera(&posPtr); break; case Z2SE_OBJ_STN_SPRL_RAIL: case Z2SE_OBJ_STN_SPRL_RAIL_DW: - modHeightAtCamera(&i_pos); + modHeightAtCamera(&posPtr); 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); + volume = Z2Calc::getParamByExp(param_2, 0.0f, 4000.0f, 0.4f, 0.3f, 1.0f, + Z2Calc::CURVE_NEGATIVE); + pitch = Z2Calc::getParamByExp(param_2, 0.0f, 4000.0f, 0.4f, 0.7f, 1.2f, + Z2Calc::CURVE_NEGATIVE); 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); + volume = Z2Calc::getParamByExp(param_2, 0.0f, 3500.0f, 0.4f, 0.3f, 1.0f, + Z2Calc::CURVE_NEGATIVE); + pitch = Z2Calc::getParamByExp(param_2, 0.0f, 3500.0f, 0.4f, 0.7f, 1.2f, + Z2Calc::CURVE_NEGATIVE); 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); + volume = Z2Calc::getParamByExp(param_2, 0.0f, 26.0f, 0.4f, 0.6f, 1.0f, + Z2Calc::CURVE_NEGATIVE); + pitch = Z2Calc::getParamByExp(param_2, 0.0f, 26.0f, 0.4f, 0.8f, 1.2f, + Z2Calc::CURVE_NEGATIVE); 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); + volume = Z2Calc::getParamByExp(param_2, 0.0f, 64.0f, 0.4f, 0.3f, 1.0f, + Z2Calc::CURVE_NEGATIVE); + pitch = Z2Calc::getParamByExp(param_2, 0.0f, 64.0f, 0.4f, 0.6f, 1.2f, + Z2Calc::CURVE_NEGATIVE); 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); + volume = Z2Calc::getParamByExp(param_2, 0.0f, 4500.0f, 0.4f, 0.6f, 1.0f, + Z2Calc::CURVE_NEGATIVE); + pitch = Z2Calc::getParamByExp(param_2, 0.0f, 4500.0f, 0.4f, 0.7f, 1.2f, + Z2Calc::CURVE_NEGATIVE); 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); + volume = Z2Calc::getParamByExp(param_2, 0.0f, 40.0f, 0.4f, 0.0f, 1.0f, + Z2Calc::CURVE_NEGATIVE); + pitch = Z2Calc::getParamByExp(param_2, 0.0f, 40.0f, 0.4f, 0.8f, 1.2f, + Z2Calc::CURVE_NEGATIVE); 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); + volume = Z2Calc::getParamByExp(param_2, 0.0f, 120.0f, 0.4f, 0.0f, 1.0f, + Z2Calc::CURVE_NEGATIVE); + pitch = Z2Calc::getParamByExp(param_2, 0.0f, 120.0f, 0.4f, 0.9f, 1.0f, + Z2Calc::CURVE_NEGATIVE); 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); + volume = Z2Calc::getParamByExp(param_2, 0.0f, 100.0f, 0.4f, 0.0f, 1.0f, + Z2Calc::CURVE_NEGATIVE); 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); + volume = Z2Calc::getParamByExp(param_2, 0.0f, 100.0f, 0.4f, 0.0f, 1.0f, + Z2Calc::CURVE_NEGATIVE); 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); + volume = Z2Calc::getParamByExp(param_2, 0.0f, 100.0f, 0.4f, 0.0f, 1.0f, + Z2Calc::CURVE_NEGATIVE); 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); + volume = Z2Calc::getParamByExp(param_2, 0.0f, 5.0f, 0.4f, 0.5f, 1.0f, + Z2Calc::CURVE_NEGATIVE); + pitch = Z2Calc::getParamByExp(param_2, 0.0f, 5.0f, 0.4f, 0.7f, 1.0f, + Z2Calc::CURVE_NEGATIVE); 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); + volume = Z2Calc::getParamByExp(param_2, 0.0f, 400.0f, 0.4f, 0.5f, 1.0f, + Z2Calc::CURVE_NEGATIVE); + pitch = Z2Calc::getParamByExp(param_2, 0.0f, 400.0f, 0.4f, 0.8f, 1.1f, + Z2Calc::CURVE_NEGATIVE); break; case Z2SE_OBJ_HYRULE_BARRIER: - if (Z2GetSceneMgr()->getCurrentSceneNum() != 0x16) { + if (Z2GetSceneMgr()->getCurrentSceneNum() != Z2SCENE_CASTLE_TOWN) { break; } // fallthrough case Z2SE_OBJ_DARK_GATE: - if (!Z2GetSceneMgr()->isInDarkness() && i_pos != NULL - && Z2GetLink() != NULL && Z2GetLink()->getCurrentPos() != NULL) + if (!Z2GetSceneMgr()->isInDarkness() && posPtr != NULL && Z2GetLink() != NULL && Z2GetLink()->getCurrentPos() != NULL) { - f32 dist = sqrtf(VECSquareDistance(i_pos, Z2GetLink()->getCurrentPos())); + f32 dist = sqrtf(VECSquareDistance(posPtr, 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); + Z2Calc::CURVE_NEGATIVE); } 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); + volume = Z2Calc::getParamByExp(param_2, 0.0f, 50.0f, 0.4f, 0.5f, 1.0f, + Z2Calc::CURVE_NEGATIVE); break; case Z2SE_ENV_PEOPLE_CROWD: { f32 scale = 1.0f; @@ -574,6 +581,7 @@ bool Z2SeMgr::seStartLevel(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, scale = Z2Calc::linearTransform(J3DUD::JMAAbs(Z2GetLink()->getCurrentPos()->x), 600.0f, 3500.0f, 1.0f, 0.1f, false); } + switch (Z2GetStatusMgr()->getHour()) { case 0: case 1: @@ -624,8 +632,8 @@ bool Z2SeMgr::seStartLevel(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, scale *= 0.2f; break; } - i_volume = Z2Calc::getParamByExp(mCrowdSize * scale, 5.0f, 90.0f, 0.2f, 0.0f, 1.0f, - Z2Calc::CURVE_SIGN_0); + volume = Z2Calc::getParamByExp(mCrowdSize * scale, 5.0f, 90.0f, 0.2f, 0.0f, 1.0f, + Z2Calc::CURVE_NEGATIVE); break; } case Z2SE_AL_COPYROD_WAIT: @@ -634,17 +642,15 @@ bool Z2SeMgr::seStartLevel(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, } for (int i = 0; i < 24; i++) { - if (mSoundHandles[i] && mSoundHandles[i]->getID() == i_soundID - && i_pos == (Vec*)mSoundHandles[i]->getUserData()) - { + if (mSoundHandles[i] && mSoundHandles[i]->getID() == soundID && posPtr == (Vec*)mSoundHandles[i]->getUserData()) { if (param_8 == 1) { - i_volume = Z2GetAudience()->calcOffMicSound(i_volume); + volume = Z2GetAudience()->calcOffMicSound(volume); } mSoundHandles[i]->updateLifeTime(1); - if (i_pos != NULL) { - mSoundHandles[i]->setPos((JGeometry::TVec3)*i_pos); + if (posPtr != NULL) { + mSoundHandles[i]->setPos((JGeometry::TVec3)*posPtr); } if (param_2 != 0) { @@ -652,27 +658,27 @@ bool Z2SeMgr::seStartLevel(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, Z2GetSoundStarter()->setPortData(handle, 6, param_2, -1); } - if (i_reverb != 0) { - mSoundHandles[i]->getAuxiliary().moveFxMix(i_reverb / 127.0f, 0); + if (reverb != 0) { + mSoundHandles[i]->getAuxiliary().moveFxMix(reverb / 127.0f, 0); } - if (i_pitch != 1.0f) { - mSoundHandles[i]->getAuxiliary().movePitch(i_pitch, 0); + if (pitch != 1.0f) { + mSoundHandles[i]->getAuxiliary().movePitch(pitch, 0); } - if (i_volume != 1.0f) { - mSoundHandles[i]->getAuxiliary().moveVolume(i_volume, 0); + if (volume != 1.0f) { + mSoundHandles[i]->getAuxiliary().moveVolume(volume, 0); } - if (i_pan != -1.0f) { - mSoundHandles[i]->getAuxiliary().movePan(i_pan, 0); + if (pan != -1.0f) { + mSoundHandles[i]->getAuxiliary().movePan(pan, 0); } - if (i_dolby != -1.0f) { - mSoundHandles[i]->getAuxiliary().moveDolby(i_dolby, 0); + if (dolby != -1.0f) { + mSoundHandles[i]->getAuxiliary().moveDolby(dolby, 0); } return true; } } - if (isSoundCulling(i_soundID)) { + if (isSoundCulling(soundID)) { return false; } @@ -681,20 +687,20 @@ bool Z2SeMgr::seStartLevel(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, return false; } - bool ret = Z2GetSoundStarter()->startSound(i_soundID, handle, (JGeometry::TVec3*)i_pos, - param_2, i_reverb / 127.0f, i_pitch, i_volume, - i_pan, i_dolby, false); + bool ret = Z2GetSoundStarter()->startSound(soundID, handle, (JGeometry::TVec3*)posPtr, + param_2, reverb / 127.0f, pitch, volume, + pan, dolby, false); if (handle != NULL && *handle) { - if (i_soundID == Z2SE_OBJ_BOMB_HOUSE_BURN) { + if (soundID == Z2SE_OBJ_BOMB_HOUSE_BURN) { Z2GetSeqMgr()->bgmStart(Z2BGM_EVENT02, 0, 0); } if (param_8 == 1) { - Z2GetAudience()->calcOffMicSound(i_volume); + Z2GetAudience()->calcOffMicSound(volume); } - (*handle)->setUserData((uintptr_t)i_pos); + (*handle)->setUserData((uintptr_t)posPtr); if (ret) { (*handle)->setLifeTime(1, false); @@ -705,11 +711,11 @@ bool Z2SeMgr::seStartLevel(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, } /* 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) { +void Z2SeMgr::seStop(JAISoundID soundID, u32 fadeTime) { + if (soundID != -1) { for (u8 i = 0; i < 24; i++) { - if (mSoundHandles[i] && mSoundHandles[i]->getID() == i_soundID) { - mSoundHandles[i]->stop(i_count); + if (mSoundHandles[i] && mSoundHandles[i]->getID() == soundID) { + mSoundHandles[i]->stop(fadeTime); mSoundHandles[i].releaseSound(); } } @@ -717,45 +723,38 @@ void Z2SeMgr::seStop(JAISoundID i_soundID, u32 i_count) { } /* 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); +void Z2SeMgr::seStopAll(u32 fadeTime) { + JAISeMgr* seMgr = Z2GetSoundMgr()->getSeMgr(); + seMgr->getCategory(0)->stop(fadeTime); + seMgr->getCategory(1)->stop(fadeTime); + seMgr->getCategory(2)->stop(fadeTime); + seMgr->getCategory(3)->stop(fadeTime); + seMgr->getCategory(4)->stop(fadeTime); + seMgr->getCategory(5)->stop(fadeTime); + seMgr->getCategory(6)->stop(fadeTime); + seMgr->getCategory(7)->stop(fadeTime); + seMgr->getCategory(8)->stop(fadeTime); + seMgr->getCategory(9)->stop(fadeTime); } /* 802AD9F4-802ADB14 2A8334 0120+00 3/3 5/5 1/1 .text seMoveVolumeAll__7Z2SeMgrFfUl */ -void Z2SeMgr::seMoveVolumeAll(f32 i_volume, u32 i_count) { +void Z2SeMgr::seMoveVolumeAll(f32 volume, u32 moveTime) { if (Z2GetStatusMgr()->getDemoStatus() == 13) { - i_volume = 0.0f; + 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); + + JAISeMgr* seMgr = Z2GetSoundMgr()->getSeMgr(); + seMgr->getCategory(1)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_VOICE_DEFAULT * volume, moveTime); + seMgr->getCategory(2)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_MOTION_DEFAULT * volume, moveTime); + seMgr->getCategory(3)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_FOOTNOTE_DEFAULT * volume, moveTime); + seMgr->getCategory(4)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_DEFAULT * volume, moveTime); + seMgr->getCategory(5)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_DEFAULT * volume, moveTime); + seMgr->getCategory(6)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_MOVE_DEFAULT * volume, moveTime); + seMgr->getCategory(7)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_DEFAULT * volume, moveTime); + seMgr->getCategory(8)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_DEFAULT * volume, moveTime); + if (Z2GetStatusMgr()->getDemoStatus() != 12) { - se_mgr->getCategory(9)->getParams() - ->moveVolume(Z2Param::VOL_SE_ATMOSPHERE_DEFAULT * i_volume, i_count); + seMgr->getCategory(9)->getParams()->moveVolume(Z2Param::VOL_SE_ATMOSPHERE_DEFAULT * volume, moveTime); } } @@ -771,18 +770,20 @@ void Z2SeMgr::talkInSe() { 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); + + JAISeMgr* seMgr = Z2GetSoundMgr()->getSeMgr(); + seMgr->getCategory(0)->getParams()->moveVolume(Z2Param::VOL_SE_SYSTEM_TALKING, 2); + seMgr->getCategory(1)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_VOICE_TALKING, 2); + seMgr->getCategory(2)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_MOTION_TALKING, 2); + seMgr->getCategory(3)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_FOOTNOTE_TALKING, 2); + seMgr->getCategory(4)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_TALKING, 2); + seMgr->getCategory(5)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_TALKING, 2); + seMgr->getCategory(6)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_MOVE_TALKING, 2); + seMgr->getCategory(7)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_TALKING, 2); + seMgr->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); + seMgr->getCategory(9)->getParams()->moveVolume(Z2Param::VOL_SE_ATMOSPHERE_TALKING, 2); } } } @@ -793,18 +794,20 @@ void Z2SeMgr::talkOutSe() { 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); + + JAISeMgr* seMgr = Z2GetSoundMgr()->getSeMgr(); + seMgr->getCategory(0)->getParams()->moveVolume(Z2Param::VOL_SE_SYSTEM_DEFAULT, 2); + seMgr->getCategory(1)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_VOICE_DEFAULT, 2); + seMgr->getCategory(2)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_MOTION_DEFAULT, 2); + seMgr->getCategory(3)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_FOOTNOTE_DEFAULT, 2); + seMgr->getCategory(4)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_DEFAULT, 2); + seMgr->getCategory(5)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_DEFAULT, 2); + seMgr->getCategory(6)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_MOVE_DEFAULT, 2); + seMgr->getCategory(7)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_DEFAULT, 2); + seMgr->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); + seMgr->getCategory(9)->getParams()->moveVolume(Z2Param::VOL_SE_ATMOSPHERE_DEFAULT, 2); } } } @@ -815,48 +818,50 @@ void Z2SeMgr::menuInSe() { 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); + + JAISeMgr* seMgr = Z2GetSoundMgr()->getSeMgr(); + seMgr->getCategory(0)->getParams()->moveVolume(Z2Param::VOL_SE_SYSTEM_PAUSING, 2); + seMgr->getCategory(1)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_VOICE_PAUSING, 2); + seMgr->getCategory(2)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_MOTION_PAUSING, 2); + seMgr->getCategory(3)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_FOOTNOTE_PAUSING, 2); + seMgr->getCategory(4)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_PAUSING, 2); + seMgr->getCategory(5)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_PAUSING, 2); + seMgr->getCategory(6)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_MOVE_PAUSING, 2); + seMgr->getCategory(7)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_PAUSING, 2); + seMgr->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); + seMgr->getCategory(9)->getParams()->moveVolume(Z2Param::VOL_SE_ATMOSPHERE_PAUSING, 2); } } } /* 802ADE5C-802ADFF4 2A879C 0198+00 1/1 0/0 0/0 .text setLevObjSE__7Z2SeMgrFUlP3VecSc */ -void Z2SeMgr::setLevObjSE(u32 i_soundID, Vec* i_pos, s8 param_2) { +void Z2SeMgr::setLevObjSE(u32 soundID, Vec* posPtr, s8 reverb) { u8 i = 0; for (; i < mLevelObjectSeCount; i++) { - if (mLevelObjSe[i].mSoundID == i_soundID) { + if (mLevelObjSe[i].soundID_ == soundID) { break; } } + if (i == mLevelObjectSeCount) { if (mLevelObjectSeCount == 10) { return; } - mLevelObjSe[i].mSoundID = i_soundID; + mLevelObjSe[i].soundID_ = soundID; mLevelObjectSeCount++; } + f32 volume_scale = 1.0f; Vec pos = {0.0f, 0.0f, -50.0f}; - if (i_pos != NULL) { - pos = *i_pos; + if (posPtr != NULL) { + pos = *posPtr; } else { - // fake match, should be something like pos = Z2GetAudience()->getAudioCamPos(); - Vec tmp; - JGeometry::setTVec3f(*(Vec*)Z2GetAudience()->mAudioCamera[0].getPos(), tmp); - pos = tmp; + pos = Z2GetAudience()->getAudioCamPos(0); } - switch (i_soundID) { + + switch (soundID) { case Z2SE_OBJ_FIRE_BURNING: volume_scale = 0.7f; break; @@ -867,39 +872,40 @@ void Z2SeMgr::setLevObjSE(u32 i_soundID, Vec* i_pos, s8 param_2) { case Z2SE_OBJ_L8_L_BALL_SW: break; } - mLevelObjSe[i].mVolumeScale = volume_scale; + + mLevelObjSe[i].setVolumeScale(volume_scale); mLevelObjSe[i].registMultiSePos((Vec*)&pos); - if (mLevelObjSe[i].field_0x20 < param_2) { - mLevelObjSe[i].field_0x20 = param_2; + if (mLevelObjSe[i].reverb_ < reverb) { + mLevelObjSe[i].reverb_ = reverb; } } /* 802ADFF4-802AE184 2A8934 0190+00 1/1 0/0 0/0 .text setMultiTriggerSE__7Z2SeMgrFUlP3VecSc */ -void Z2SeMgr::setMultiTriggerSE(u32 i_soundID, Vec* i_pos, s8 param_2) { +void Z2SeMgr::setMultiTriggerSE(u32 soundID, Vec* posPtr, s8 reverb) { u8 i = 0; for (; i < mMultiTriggerSeCount; i++) { - if (mMultiTriggerSe[i].mSoundID == i_soundID) { + if (mMultiTriggerSe[i].soundID_ == soundID) { break; } } + if (i == mMultiTriggerSeCount) { if (mMultiTriggerSeCount == 10) { return; } - mMultiTriggerSe[i].mSoundID = i_soundID; + mMultiTriggerSe[i].soundID_ = soundID; mMultiTriggerSeCount++; } + f32 volume_scale = 1.0f; Vec pos = {0.0f, 0.0f, -50.0f}; - if (i_pos != NULL) { - pos = *i_pos; + if (posPtr != NULL) { + pos = *posPtr; } else { - // fake match, should be something like pos = Z2GetAudience()->getAudioCamPos(); - Vec tmp; - JGeometry::setTVec3f(*(Vec*)Z2GetAudience()->mAudioCamera[0].getPos(), tmp); - pos = tmp; + pos = Z2GetAudience()->getAudioCamPos(0); } - switch (i_soundID) { + + switch (soundID) { case Z2SE_OBJ_L8_STAIR_ON: case Z2SE_OBJ_L8_STAIR_MV_UP: case Z2SE_OBJ_L8_STAIR_MV_DW: @@ -912,10 +918,11 @@ void Z2SeMgr::setMultiTriggerSE(u32 i_soundID, Vec* i_pos, s8 param_2) { volume_scale = 1.3f; break; } - mMultiTriggerSe[i].mVolumeScale = volume_scale; + + mMultiTriggerSe[i].setVolumeScale(volume_scale); mMultiTriggerSe[i].registMultiSePos((Vec*)&pos); - if (mMultiTriggerSe[i].field_0x20 < param_2) { - mMultiTriggerSe[i].field_0x20 = param_2; + if (mMultiTriggerSe[i].reverb_ < reverb) { + mMultiTriggerSe[i].reverb_ = reverb; } } @@ -924,72 +931,86 @@ 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, + seStartLevel(mLevelObjSe[i].soundID_, NULL, 0, mLevelObjSe[i].reverb_, 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; + mLevelObjSe[i].soundID_ = -1; + mLevelObjSe[i].reverb_ = 0; } + mLevelObjectSeCount = 0; for (u8 i = 0; i < mMultiTriggerSeCount; i++) { f32 volume = mMultiTriggerSe[i].getMaxVolume(); - seStart(mMultiTriggerSe[i].mSoundID, NULL, 0, mMultiTriggerSe[i].field_0x20, 1.0f, + seStart(mMultiTriggerSe[i].soundID_, NULL, 0, mMultiTriggerSe[i].reverb_, 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; + mMultiTriggerSe[i].soundID_ = -1; + mMultiTriggerSe[i].reverb_ = 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 { @@ -999,8 +1020,8 @@ void Z2SeMgr::processSeFramework() { /* 802AE524-802AE5B0 2A8E64 008C+00 1/1 0/0 0/0 .text isLevelSe__7Z2SeMgrF10JAISoundID */ -bool Z2SeMgr::isLevelSe(JAISoundID i_soundID) { - switch (i_soundID) { +bool Z2SeMgr::isLevelSe(JAISoundID soundID) { + switch (soundID) { case JA_SE_LK_MOVE_ROCK: case JA_SE_LK_MOVE_WBLOCK: case Z2SE_OBJ_FIRE_BURNING: @@ -1016,9 +1037,9 @@ bool Z2SeMgr::isLevelSe(JAISoundID i_soundID) { } /* 802AE5B0-802AEB04 2A8EF0 0554+00 2/2 3/3 0/0 .text isSoundCulling__7Z2SeMgrF10JAISoundID */ -bool Z2SeMgr::isSoundCulling(JAISoundID i_soundID) { +bool Z2SeMgr::isSoundCulling(JAISoundID soundID) { if (Z2GetSeqMgr()->isItemGetDemo()) { - switch (i_soundID) { + switch (soundID) { case Z2SE_HP_GAUGE_INC: case Z2SE_SY_TALK_NEXT: case Z2SE_SY_TALK_END: @@ -1041,7 +1062,8 @@ bool Z2SeMgr::isSoundCulling(JAISoundID i_soundID) { return true; } } - switch (i_soundID) { + + switch (soundID) { case Z2SE_MIDNA_APPEAR: case Z2SE_MIDNA_DISAPPEAR: if (!Z2GetSceneMgr()->isSceneExist()) { @@ -1097,15 +1119,15 @@ bool Z2SeMgr::isSoundCulling(JAISoundID i_soundID) { return true; } field_0x3ca = 1; - Z2GetSoundMgr()->multiVolumeSoundID(i_soundID, 0.5f); + Z2GetSoundMgr()->multiVolumeSoundID(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); + Z2GetSoundMgr()->stopSoundID(soundID); + Z2GetSoundMgr()->multiVolumeSoundID(soundID, 0.5f); break; case Z2SE_EN_BS_V_DEAD: case Z2SE_EN_FZ_BOUND: @@ -1159,6 +1181,7 @@ bool Z2SeMgr::isSoundCulling(JAISoundID i_soundID) { case Z2SE_EN_BS_APPEAR: break; } + return false; } @@ -1170,52 +1193,57 @@ Z2MultiSeMgr::Z2MultiSeMgr() { Z2MultiSeMgr::~Z2MultiSeMgr() {} /* 802AEB70-802AECBC 2A94B0 014C+00 2/2 6/6 0/0 .text registMultiSePos__12Z2MultiSeMgrFP3Vec */ -s8 Z2MultiSeMgr::registMultiSePos(Vec* i_pos) { - if (i_pos == NULL) { +s8 Z2MultiSeMgr::registMultiSePos(Vec* posPtr) { + if (posPtr == NULL) { return 0; } - if (mPosCount < 0) { - mPosCount = 0; + + if (posCount_ < 0) { + posCount_ = 0; } + Vec rel_pos; - Z2GetAudience()->convertAbsToRel(*i_pos, &rel_pos, 0); - f32 volume = Z2GetAudience()->calcRelPosVolume(rel_pos, mVolumeScale, 0); + Z2GetAudience()->convertAbsToRel(*posPtr, &rel_pos, 0); + + f32 volume = Z2GetAudience()->calcRelPosVolume(rel_pos, volumeScale_, 0); if (volume <= 0.0f) { - return mPosCount; + return posCount_; } + 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 (volume > maxVolume_) { + maxVolume_ = volume; } - if (pow_l > mMaxPowL) { - mMaxPowL = pow_l; + if (pow_l > maxPowL_) { + maxPowL_ = pow_l; } - if (pow_r > mMaxPowR) { - mMaxPowR = pow_r; + if (pow_r > maxPowR_) { + maxPowR_ = pow_r; } - if (pow_f > mMaxPowF) { - mMaxPowF = pow_f; + if (pow_f > maxPowF_) { + maxPowF_ = pow_f; } - if (pow_b > mMaxPowB) { - mMaxPowB = pow_b; + if (pow_b > maxPowB_) { + maxPowB_ = pow_b; } - mPosCount++; - return mPosCount; + + posCount_++; + return posCount_; } -void Z2MultiSeMgr::resetMultiSePos(void) { - mPosCount = -1; - mMaxPowL = 0.0f; - mMaxPowR = 0.0f; - mMaxPowF = 0.0f; - mMaxPowB = 0.0f; - mMaxVolume = 0.0f; +void Z2MultiSeMgr::resetMultiSePos() { + posCount_ = -1; + maxPowL_ = 0.0f; + maxPowR_ = 0.0f; + maxPowF_ = 0.0f; + maxPowB_ = 0.0f; + maxVolume_ = 0.0f; } /* 802AECE0-802AEDC0 2A9620 00E0+00 1/1 8/8 0/0 .text getPanPower__12Z2MultiSeMgrFv */ @@ -1231,7 +1259,6 @@ f32 Z2MultiSeMgr::getPanPower() { } } - /* 802AEDC0-802AEEA0 2A9700 00E0+00 1/1 8/8 0/0 .text getDolbyPower__12Z2MultiSeMgrFv */ f32 Z2MultiSeMgr::getDolbyPower() { f32 pow_b = getMaxPowB(); diff --git a/src/Z2AudioLib/Z2SeqMgr.cpp b/src/Z2AudioLib/Z2SeqMgr.cpp index 82f91fd01e..da9f8b1ced 100644 --- a/src/Z2AudioLib/Z2SeqMgr.cpp +++ b/src/Z2AudioLib/Z2SeqMgr.cpp @@ -1,8 +1,3 @@ -// -// Generated By: dol2asm -// Translation Unit: Z2SeqMgr -// - #include "Z2AudioLib/Z2SeqMgr.h" #include "Z2AudioLib/Z2LinkMgr.h" #include "Z2AudioLib/Z2Param.h" @@ -13,7 +8,90 @@ #include "Z2AudioLib/Z2Calc.h" #include "JSystem/JAudio2/JAISoundChild.h" #include "JSystem/JAudio2/JAISeq.h" -#include "dol2asm.h" + +static const char* sSpotName[] = { + "F_SP00", + "F_SP103", + "R_SP01", + "F_SP104", + "R_SP107", + "F_SP108", + "R_SP108", + "F_SP117", + "F_SP109", + "R_SP109", + "R_SP209", + "F_SP110", + "R_SP110", + "F_SP111", + "F_SP128", + "R_SP128", + "F_SP115", + "F_SP112", + "F_SP126", + "F_SP127", + "R_SP127", + "F_SP113", + "F_SP116", + "R_SP116", + "R_SP160", + "R_SP161", + "F_SP114", + "F_SP118", + "F_SP124", + "F_SP125", + "F_SP121", + "F_SP122", + "F_SP123", + "F_SP200", + "F_SP102", + "", + "R_SP300", + "R_SP301", + "T_ENEMY", + "D_MN54", + "D_MN05", + "D_MN05B", + "D_MN05A", + "D_MN04", + "D_MN04B", + "D_MN04A", + "D_MN01", + "D_MN01B", + "D_MN01A", + "D_MN10", + "D_MN10B", + "D_MN10A", + "D_MN11", + "D_MN11B", + "D_MN11A", + "D_MN06", + "D_MN06B", + "D_MN06A", + "D_MN07", + "D_MN07B", + "D_MN07A", + "D_MN08", + "D_MN08B", + "D_MN08C", + "D_MN08A", + "D_MN08D", + "D_MN09", + "D_MN09A", + "D_MN09B", + "D_MN09C", + "D_SB00", + "D_SB01", + "D_SB02", + "D_SB03", + "D_SB04", + "D_SB05", + "D_SB06", + "D_SB07", + "D_SB08", + "D_SB09", + "D_SB10", +}; /* 802AEEA0-802AF010 2A97E0 0170+00 0/0 1/1 0/0 .text __ct__8Z2SeqMgrFv */ Z2SeqMgr::Z2SeqMgr() : JASGlobalInstance(true) { @@ -53,12 +131,12 @@ Z2SeqMgr::Z2SeqMgr() : JASGlobalInstance(true) { } /* 802AF010-802AF408 2A9950 03F8+00 3/3 5/5 38/38 .text bgmStart__8Z2SeqMgrFUlUll */ -void Z2SeqMgr::bgmStart(u32 i_bgmID, u32 i_count, s32 param_2) { - switch (i_bgmID) { +void Z2SeqMgr::bgmStart(u32 bgmID, u32 fadeTime, s32 param_2) { + switch (bgmID) { case -1: return; case 0x200005D: - bgmAllUnMute(0x21); + bgmAllUnMute(33); bgmStreamPrepare(0x200005d); bgmStreamPlay(); return; @@ -67,13 +145,13 @@ void Z2SeqMgr::bgmStart(u32 i_bgmID, u32 i_count, s32 param_2) { mMainBgmMaster.forceIn(); break; case Z2BGM_GAME_OVER: - if (getMainBgmID() != i_bgmID) { + if (getMainBgmID() != bgmID) { Z2GetSceneMgr()->setInGame(false); Z2GetSceneMgr()->setSceneExist(false); setBattleBgmOff(true); Z2GetSoundMgr()->getSeqMgr()->stop(0); Z2GetSoundMgr()->getStreamMgr()->stop(0); - Z2GetSoundMgr()->startSound(i_bgmID, &mMainBgmHandle, NULL); + Z2GetSoundMgr()->startSound(bgmID, &mMainBgmHandle, NULL); mBgmStatus = 0xff; } return; @@ -81,7 +159,7 @@ void Z2SeqMgr::bgmStart(u32 i_bgmID, u32 i_count, s32 param_2) { if (Z2GetLink() != NULL && Z2GetLink()->getCurrentPos() != NULL && Z2GetLink()->getCurrentPos()->y > -10000.0f) { - i_bgmID = Z2BGM_RAKKA_HOUSE; + bgmID = Z2BGM_RAKKA_HOUSE; } break; case Z2BGM_VS_GANON_01: @@ -96,33 +174,37 @@ void Z2SeqMgr::bgmStart(u32 i_bgmID, u32 i_count, s32 param_2) { mStreamBgmMaster.forceIn(); } + #if !PLATFORM_SHIELD if (Z2GetStatusMgr()->getDemoStatus() == 9) { if (mMainBgmHandle) { mMainBgmHandle->stop(0); } + if (param_2 == 0) { if (mSubBgmHandle) { mSubBgmHandle->stop(0); } mMainBgmMaster.forceIn(); } - } else { + } else + #endif + { bgmStop(0, param_2); } - if (i_bgmID == Z2BGM_FIELD_LINK_DAY || i_bgmID == Z2BGM_FIELD_LINK_NIGHT) { + if (bgmID == Z2BGM_FIELD_LINK_DAY || bgmID == Z2BGM_FIELD_LINK_NIGHT) { fieldBgmStart(); } else { - Z2GetSoundMgr()->startSound(i_bgmID, &mMainBgmHandle, NULL); + Z2GetSoundMgr()->startSound(bgmID, &mMainBgmHandle, NULL); mBgmStatus = 0xff; } - if (param_2 == 0 && i_count != 0) { - mMainBgmMaster.fadeInFromOut(i_count); + if (param_2 == 0 && fadeTime != 0) { + mMainBgmMaster.fadeInFromOut(fadeTime); } - if (i_bgmID == Z2BGM_BOSS_SNOWWOMAN_1 || i_bgmID == Z2BGM_HORSE_BATTLE - || i_bgmID == Z2BGM_VS_GANON_02 || i_bgmID == Z2BGM_TOAL_VILLEGE) + if (bgmID == Z2BGM_BOSS_SNOWWOMAN_1 || bgmID == Z2BGM_HORSE_BATTLE + || bgmID == Z2BGM_VS_GANON_02 || bgmID == Z2BGM_TOAL_VILLEGE) { changeBgmStatus(0); } @@ -132,116 +214,53 @@ void Z2SeqMgr::bgmStart(u32 i_bgmID, u32 i_count, s32 param_2) { } else { field_0xa4.forceIn(); } + + #if DEBUG + if (bgmID == Z2BGM_HIDDEN_VILLAGE) { + OS_REPORT("[Z2SeqMgr::bgmStart] Z2BGM_HIDDEN_VILLAGE start(%d)\n", mMainBgmHandle.isSoundAttached()); + OS_REPORT(" mainBgmMasterVol::%.2f \n", mMainBgmMaster.get()); + OS_REPORT(" subBgmMasterVol::%.2f \n", mSubBgmMaster.get()); + OS_REPORT(" allBgmMasterVol::%.2f \n", mAllBgmMaster.get()); + OS_REPORT(" bgmPauseVol::%.2f \n", mBgmPause.get()); + OS_REPORT(" fanfareMuteVol::%.2f \n", mFanfareMute.get()); + OS_REPORT(" windStoneVol::%.2f \n", mWindStone.get()); + OS_REPORT(" twilightGateVol::%.2f \n", mTwilightGateVol); + } + #endif } /* 802AF408-802AF49C 2A9D48 0094+00 3/3 5/5 30/30 .text bgmStop__8Z2SeqMgrFUll */ -void Z2SeqMgr::bgmStop(u32 i_count, s32 param_1) { +void Z2SeqMgr::bgmStop(u32 fadeTime, s32 param_1) { if (mMainBgmHandle) { - mMainBgmHandle->stop(i_count); + mMainBgmHandle->stop(fadeTime); } + if (mStreamBgmHandle) { - mStreamBgmHandle->stop(i_count); + mStreamBgmHandle->stop(fadeTime); } + if (param_1 == 0) { if (mSubBgmHandle) { - mSubBgmHandle->stop(i_count); + mSubBgmHandle->stop(fadeTime); } mMainBgmMaster.forceIn(); } } -static void dummyString() { - DEAD_STRING("F_SP00"); - DEAD_STRING("F_SP103"); - DEAD_STRING("R_SP01"); - DEAD_STRING("F_SP104"); - DEAD_STRING("R_SP107"); - DEAD_STRING("F_SP108"); - DEAD_STRING("R_SP108"); - DEAD_STRING("F_SP117"); - DEAD_STRING("F_SP109"); - DEAD_STRING("R_SP109"); - DEAD_STRING("R_SP209"); - DEAD_STRING("F_SP110"); - DEAD_STRING("R_SP110"); - DEAD_STRING("F_SP111"); - DEAD_STRING("F_SP128"); - DEAD_STRING("R_SP128"); - DEAD_STRING("F_SP115"); - DEAD_STRING("F_SP112"); - DEAD_STRING("F_SP126"); - DEAD_STRING("F_SP127"); - DEAD_STRING("R_SP127"); - DEAD_STRING("F_SP113"); - DEAD_STRING("F_SP116"); - DEAD_STRING("R_SP116"); - DEAD_STRING("R_SP160"); - DEAD_STRING("R_SP161"); - DEAD_STRING("F_SP114"); - DEAD_STRING("F_SP118"); - DEAD_STRING("F_SP124"); - DEAD_STRING("F_SP125"); - DEAD_STRING("F_SP121"); - DEAD_STRING("F_SP122"); - DEAD_STRING("F_SP123"); - DEAD_STRING("F_SP200"); - DEAD_STRING("F_SP102"); - DEAD_STRING(""); - DEAD_STRING("R_SP300"); - DEAD_STRING("R_SP301"); - DEAD_STRING("T_ENEMY"); - DEAD_STRING("D_MN54"); - DEAD_STRING("D_MN05"); - DEAD_STRING("D_MN05B"); - DEAD_STRING("D_MN05A"); - DEAD_STRING("D_MN04"); - DEAD_STRING("D_MN04B"); - DEAD_STRING("D_MN04A"); - DEAD_STRING("D_MN01"); - DEAD_STRING("D_MN01B"); - DEAD_STRING("D_MN01A"); - DEAD_STRING("D_MN10"); - DEAD_STRING("D_MN10B"); - DEAD_STRING("D_MN10A"); - DEAD_STRING("D_MN11"); - DEAD_STRING("D_MN11B"); - DEAD_STRING("D_MN11A"); - DEAD_STRING("D_MN06"); - DEAD_STRING("D_MN06B"); - DEAD_STRING("D_MN06A"); - DEAD_STRING("D_MN07"); - DEAD_STRING("D_MN07B"); - DEAD_STRING("D_MN07A"); - DEAD_STRING("D_MN08"); - DEAD_STRING("D_MN08B"); - DEAD_STRING("D_MN08C"); - DEAD_STRING("D_MN08A"); - DEAD_STRING("D_MN08D"); - DEAD_STRING("D_MN09"); - DEAD_STRING("D_MN09A"); - DEAD_STRING("D_MN09B"); - DEAD_STRING("D_MN09C"); - DEAD_STRING("D_SB00"); - DEAD_STRING("D_SB01"); - DEAD_STRING("D_SB02"); - DEAD_STRING("D_SB03"); - DEAD_STRING("D_SB04"); - DEAD_STRING("D_SB05"); - DEAD_STRING("D_SB06"); - DEAD_STRING("D_SB07"); - DEAD_STRING("D_SB08"); - DEAD_STRING("D_SB09"); - DEAD_STRING("D_SB10"); -} - /* 802AF49C-802AF884 2A9DDC 03E8+00 3/2 6/6 65/65 .text subBgmStart__8Z2SeqMgrFUl */ -void Z2SeqMgr::subBgmStart(u32 i_bgmID) { - if (i_bgmID == -1) { +void Z2SeqMgr::subBgmStart(u32 bgmID) { + #if DEBUG + const char** spotName = sSpotName; + #endif + + if (bgmID == -1) { return; } - int count_in, count_out; - switch (i_bgmID) { + int fadeinTime = 0; + int fadeoutTime = 0; + + switch (bgmID) { case Z2BGM_ITEM_GET: case Z2BGM_ITEM_GET_MINI: case Z2BGM_OPEN_BOX: @@ -274,25 +293,25 @@ void Z2SeqMgr::subBgmStart(u32 i_bgmID) { if (getSubBgmID() == Z2BGM_OBACHAN) { subBgmStop(); } - mFanfareID = i_bgmID; + mFanfareID = bgmID; return; case Z2BGM_FACE_OFF_BATTLE: case Z2BGM_BOSS_OCTAEEL_D02: case Z2BGM_DRAGON_D02: case Z2BGM_FACE_OFF_BATTLE2: case Z2BGM_FACE_OFF_BATTLE3: - count_in = 0; - count_out = -1; + fadeinTime = 0; + fadeoutTime = -1; break; case Z2BGM_LUTERA1: case Z2BGM_BOSS_SNOWWOMAN_D1: Z2GetStatusMgr()->setDemoName("force_start"); - count_in = 0; - count_out = struct_80450862; + fadeinTime = 0; + fadeoutTime = Z2Param::BGM_CROSS_FADEOUT_TIME; break; case Z2BGM_TARO_RESCUE: - count_in = 0; - count_out = 120; + fadeinTime = 0; + fadeoutTime = 120; bgmStop(0, 0); break; case Z2BGM_OBACHAN: @@ -331,13 +350,13 @@ void Z2SeqMgr::subBgmStart(u32 i_bgmID) { case Z2BGM_GOMA_D01: case Z2BGM_MINIGAME_WIN01: case Z2BGM_MINIGAME_WIN02: - count_in = 0; - count_out = 1; + fadeinTime = 0; + fadeoutTime = 1; break; case Z2BGM_COWBOY_GAME: mAllBgmMaster.forceIn(); - count_in = 0; - count_out = 1; + fadeinTime = 0; + fadeoutTime = 1; break; case Z2BGM_SNOWBOARD_WIN: case Z2BGM_SNOWBOARD_LOSE: @@ -356,27 +375,27 @@ void Z2SeqMgr::subBgmStart(u32 i_bgmID) { case Z2BGM_HORSE_BATTLE: case Z2BGM_TN_MBOSS_LV9: mStreamBgmMaster.forceIn(); - count_in = 0; - count_out = 1; + fadeinTime = 0; + fadeoutTime = 1; break; case Z2BGM_MAGNE_GORON_D01: case Z2BGM_DEKUTOAD_D01: - count_in = 0; - count_out = 20; + fadeinTime = 0; + fadeoutTime = 20; break; case Z2BGM_IB_MBOSS_D01: case Z2BGM_GG_MBOSS_D01: - count_in = 0; - count_out = struct_80450862; + fadeinTime = 0; + fadeoutTime = Z2Param::BGM_CROSS_FADEOUT_TIME; break; default: - count_in = struct_80450861; - count_out = struct_80450862; + fadeinTime = Z2Param::BGM_CROSS_FADEIN_TIME; + fadeoutTime = Z2Param::BGM_CROSS_FADEOUT_TIME; break; } - if (i_bgmID == getSubBgmID()) { - if (i_bgmID == Z2BGM_SUMO || i_bgmID == Z2BGM_COWBOY_GAME) { + if (bgmID == getSubBgmID()) { + if (bgmID == Z2BGM_SUMO || bgmID == Z2BGM_COWBOY_GAME) { mSubBgmHandle->stop(0); mSubBgmHandle.releaseSound(); } else { @@ -388,10 +407,10 @@ void Z2SeqMgr::subBgmStart(u32 i_bgmID) { subBgmStopInner(); } - Z2GetSoundMgr()->startSound(i_bgmID, &mSubBgmHandle, NULL); + Z2GetSoundMgr()->startSound(bgmID, &mSubBgmHandle, NULL); mSubBgmStatus = 0xff; - switch (i_bgmID) { + switch (bgmID) { case Z2BGM_HORSE_BATTLE: case Z2BGM_FACE_OFF_BATTLE2: changeSubBgmStatus(0); @@ -408,119 +427,138 @@ void Z2SeqMgr::subBgmStart(u32 i_bgmID) { break; } - if (count_in != 0) { - mSubBgmMaster.fadeInFromOut(count_in); + if (fadeinTime != 0) { + mSubBgmMaster.fadeInFromOut(fadeinTime); } else { mSubBgmMaster.forceIn(); } - if (count_out >= 0) { - mMainBgmMaster.fadeOut(count_out); + if (fadeoutTime >= 0) { + mMainBgmMaster.fadeOut(fadeoutTime); } field_0xb8 = -1; + + #if DEBUG + if (bgmID == Z2BGM_HIDDEN_VIL_D1) { + OS_REPORT("[Z2SeqMgr::subBgmStart] HIDDEN_VIL_D01 start(%d)\n", mMainBgmHandle.isSoundAttached()); + OS_REPORT(" mainBgmMasterVol::%.2f \n", mMainBgmMaster.get()); + OS_REPORT(" subBgmMasterVol::%.2f \n", mSubBgmMaster.get()); + OS_REPORT(" allBgmMasterVol::%.2f \n", mAllBgmMaster.get()); + OS_REPORT(" bgmPauseVol::%.2f \n", mBgmPause.get()); + OS_REPORT(" fanfareMuteVol::%.2f \n", mFanfareMute.get()); + OS_REPORT(" windStoneVol::%.2f \n", mWindStone.get()); + OS_REPORT(" twilightGateVol::%.2f \n", mTwilightGateVol); + } + #endif } /* 802AF884-802AF9D0 2AA1C4 014C+00 4/3 4/4 42/42 .text subBgmStop__8Z2SeqMgrFv */ void Z2SeqMgr::subBgmStop() { switch (getSubBgmID()) { - case Z2BGM_ITEM_GET: - case Z2BGM_ITEM_GET_MINI: - case Z2BGM_OPEN_BOX: - case Z2BGM_ITEM_GET_ME: - case Z2BGM_HEART_GET: - case Z2BGM_FISHING_BARE: - case Z2BGM_FISHING_GET1: - case Z2BGM_FISHING_GET2: - case Z2BGM_FISHING_GET3: - case Z2BGM_ITEM_GET_INSECT: - case Z2BGM_ITEM_GET_SMELL: - case Z2BGM_ITEM_GET_POU: - case Z2BGM_SNOWBOARD_WIN: - case Z2BGM_SNOWBOARD_LOSE: - case Z2BGM_MINIGAME_WIN01: - case Z2BGM_MINIGAME_WIN02: - case Z2BGM_ITEM_GET_ME_S: - case Z2BGM_KOMONJO_GET_INTRO: - return; - case Z2BGM_LUTERA1: - case Z2BGM_BOSS_SNOWWOMAN_D1: - Z2GetStatusMgr()->setDemoName("force_end"); - field_0xb8 = 0; - break; - case Z2BGM_HIDDEN_VIL_D1: - bgmStart(Z2BGM_HIDDEN_VILLAGE, 0, 0); - // fallthrough - case Z2BGM_BOSSBABA_0: - case Z2BGM_MAGNE_GORON: - case Z2BGM_MAGNE_GORON_D01: - case Z2BGM_MAGNE_GORON_D02: - case Z2BGM_DEKUTOAD: - case Z2BGM_DEKUTOAD_D01: - case Z2BGM_BOSSFIREMAN_1: - case Z2BGM_SUMO_D1: - case Z2BGM_BOSS_OCTAEEL_D01: - case Z2BGM_BOSS_OCTAEEL_D02: - case Z2BGM_VARIANT: - case Z2BGM_DEATH_MOUNTAIN02: - case Z2BGM_SNOW_BOARD: - case Z2BGM_IB_MBOSS_D01: - case Z2BGM_SUMOMO: - case Z2BGM_RIVER_GAME: - case Z2BGM_GG_MBOSS_D01: - case Z2BGM_HARAGIGANT_D01: - case Z2BGM_HARAGIGANT_D02: - case Z2BGM_DRAGON_D01: - case Z2BGM_DRAGON_D02: - case Z2BGM_YAMIMUSHI_B_D01: - case Z2BGM_GOMA_D01: - case Z2BGM_FACE_OFF_BATTLE3: - case Z2BGM_RIVER_GAME_00: - field_0xb8 = 0; - break; - case Z2BGM_FISHING_HIT: - setBattleBgmOff(false); - mSubBgmHandle->stop(23); - field_0xb8 = 55; - break; - case Z2BGM_IB_MBOSS: - field_0xb8 = 420; - mSubBgmHandle->stop(45); - break; - case Z2BGM_TN_MBOSS: - field_0xb8 = 510; - mSubBgmHandle->stop(45); - break; - case Z2BGM_TN_MBOSS_LV9: - field_0xb8 = 360; - mSubBgmHandle->stop(45); - break; - case Z2BGM_GG_MBOSS: - case Z2BGM_P_ZANT: - field_0xb8 = 420; - mSubBgmHandle->stop(45); - break; - case Z2BGM_OBACHAN: - case Z2BGM_POSTMAN: - setBattleBgmOff(false); - // fallthrough - default: - field_0xb8 = 15; - break; + case Z2BGM_ITEM_GET: + case Z2BGM_ITEM_GET_MINI: + case Z2BGM_OPEN_BOX: + case Z2BGM_ITEM_GET_ME: + case Z2BGM_HEART_GET: + case Z2BGM_FISHING_BARE: + case Z2BGM_FISHING_GET1: + case Z2BGM_FISHING_GET2: + case Z2BGM_FISHING_GET3: + case Z2BGM_ITEM_GET_INSECT: + case Z2BGM_ITEM_GET_SMELL: + case Z2BGM_ITEM_GET_POU: + case Z2BGM_SNOWBOARD_WIN: + case Z2BGM_SNOWBOARD_LOSE: + case Z2BGM_MINIGAME_WIN01: + case Z2BGM_MINIGAME_WIN02: + case Z2BGM_ITEM_GET_ME_S: + case Z2BGM_KOMONJO_GET_INTRO: + return; + case Z2BGM_LUTERA1: + case Z2BGM_BOSS_SNOWWOMAN_D1: + Z2GetStatusMgr()->setDemoName("force_end"); + field_0xb8 = 0; + break; + case Z2BGM_HIDDEN_VIL_D1: + bgmStart(Z2BGM_HIDDEN_VILLAGE, 0, 0); + // fallthrough + case Z2BGM_BOSSBABA_0: + case Z2BGM_MAGNE_GORON: + case Z2BGM_MAGNE_GORON_D01: + case Z2BGM_MAGNE_GORON_D02: + case Z2BGM_DEKUTOAD: + case Z2BGM_DEKUTOAD_D01: + case Z2BGM_BOSSFIREMAN_1: + case Z2BGM_SUMO_D1: + case Z2BGM_BOSS_OCTAEEL_D01: + case Z2BGM_BOSS_OCTAEEL_D02: + case Z2BGM_VARIANT: + case Z2BGM_DEATH_MOUNTAIN02: + case Z2BGM_SNOW_BOARD: + case Z2BGM_IB_MBOSS_D01: + case Z2BGM_SUMOMO: + case Z2BGM_RIVER_GAME: + case Z2BGM_GG_MBOSS_D01: + case Z2BGM_HARAGIGANT_D01: + case Z2BGM_HARAGIGANT_D02: + case Z2BGM_DRAGON_D01: + case Z2BGM_DRAGON_D02: + case Z2BGM_YAMIMUSHI_B_D01: + case Z2BGM_GOMA_D01: + case Z2BGM_FACE_OFF_BATTLE3: + case Z2BGM_RIVER_GAME_00: + field_0xb8 = 0; + break; + case Z2BGM_FISHING_HIT: + setBattleBgmOff(false); + mSubBgmHandle->stop(23); + field_0xb8 = 55; + break; + case Z2BGM_IB_MBOSS: + field_0xb8 = 420; + mSubBgmHandle->stop(45); + break; + case Z2BGM_TN_MBOSS: + field_0xb8 = 510; + mSubBgmHandle->stop(45); + break; + case Z2BGM_TN_MBOSS_LV9: + field_0xb8 = 360; + mSubBgmHandle->stop(45); + break; + case Z2BGM_GG_MBOSS: + case Z2BGM_P_ZANT: + field_0xb8 = 420; + mSubBgmHandle->stop(45); + break; + case Z2BGM_OBACHAN: + case Z2BGM_POSTMAN: + setBattleBgmOff(false); + // fallthrough + default: + field_0xb8 = 15; + break; } -} + #if DEBUG + if (getSubBgmID() == Z2BGM_HIDDEN_VIL_D1) { + OS_REPORT("[Z2SeqMgr::subBgmStop] HIDDEN_VIL_D01 stop\n"); + } + #endif +} /* 802AF9D0-802AFB94 2AA310 01C4+00 2/2 0/0 0/0 .text subBgmStopInner__8Z2SeqMgrFv */ void Z2SeqMgr::subBgmStopInner() { if (field_0xb8 == -1) { return; } + if (!mSubBgmHandle) { return; } - int count = struct_80450862; + int fadeTime = Z2Param::BGM_CROSS_FADEOUT_TIME; switch (getSubBgmID()) { case Z2BGM_MAGNE_GORON: case Z2BGM_MAGNE_GORON_D01: @@ -529,37 +567,38 @@ void Z2SeqMgr::subBgmStopInner() { case Z2BGM_SUMO_D1: case Z2BGM_VARIANT: case Z2BGM_IB_MBOSS_D01: - count = 10; + fadeTime = 10; break; case Z2BGM_LUTERA1: - count = 50; + fadeTime = 50; break; case Z2BGM_RIVER_GAME: case Z2BGM_RIVER_GAME_00: - count = 33; + fadeTime = 33; setBattleBgmOff(false); break; case Z2BGM_SNOW_BOARD: - count = 90; + fadeTime = 90; setBattleBgmOff(false); break; } - mSubBgmHandle->stop(count); + mSubBgmHandle->stop(fadeTime); mSubBgmHandle.releaseSound(); - mMainBgmMaster.fadeIn(struct_80450862); + mMainBgmMaster.fadeIn(Z2Param::BGM_CROSS_FADEOUT_TIME); field_0xb8 = -1; } /* 802AFB94-802AFDEC 2AA4D4 0258+00 1/1 3/3 46/46 .text bgmStreamPrepare__8Z2SeqMgrFUl */ -void Z2SeqMgr::bgmStreamPrepare(u32 i_bgmID) { +void Z2SeqMgr::bgmStreamPrepare(u32 bgmID) { if (mStreamBgmHandle) { bgmStreamStop(0); } - Z2GetSoundMgr()->startSound(i_bgmID, &mStreamBgmHandle, NULL); + + Z2GetSoundMgr()->startSound(bgmID, &mStreamBgmHandle, NULL); mStreamBgmHandle->lockWhenPrepared(); - switch (i_bgmID) { + switch (bgmID) { case 0x2000010: mAllBgmMaster.forceIn(); // fallthrough @@ -570,7 +609,7 @@ void Z2SeqMgr::bgmStreamPrepare(u32 i_bgmID) { return; case 0x2000023: if (mMainBgmHandle) { - mMainBgmHandle->stop(struct_80450862); + mMainBgmHandle->stop(Z2Param::BGM_CROSS_FADEOUT_TIME); } return; case 0x2000038: @@ -592,7 +631,7 @@ void Z2SeqMgr::bgmStreamPrepare(u32 i_bgmID) { break; } - mStreamBgmMaster.fadeOut(struct_80450862); + mStreamBgmMaster.fadeOut(Z2Param::BGM_CROSS_FADEOUT_TIME); } @@ -610,79 +649,98 @@ void Z2SeqMgr::bgmStreamPlay() { if (mStreamBgmHandle) { mStreamBgmHandle->unlockIfLocked(); } + if (getStreamBgmID() == -1) { if (mMainBgmHandle) { mMainBgmHandle->stop(30); } - } else if (getStreamBgmID() == 0x2000000) { + } + + #if !PLATFORM_SHIELD + else if (getStreamBgmID() == 0x2000000) { if (mStreamBgmHandle) { mStreamBgmHandle->stop(); } bgmStart(Z2BGM_MENU_SELECT, 0, 0); } + #endif } /* 802AFEDC-802AFF8C 2AA81C 00B0+00 2/2 1/1 27/27 .text bgmStreamStop__8Z2SeqMgrFUl */ -void Z2SeqMgr::bgmStreamStop(u32 i_count) { +void Z2SeqMgr::bgmStreamStop(u32 fadeTime) { if (getStreamBgmID() == 0x200003f || getStreamBgmID() == 0x200005c) { Z2GetStatusMgr()->setDemoName("force_end"); } + if (mStreamBgmHandle) { - mStreamBgmHandle->stop(i_count); + mStreamBgmHandle->stop(fadeTime); } + mStreamBgmHandle.releaseSound(); } /* 802AFF8C-802B1DF4 2AA8CC 1E68+00 5/4 8/7 26/26 .text changeBgmStatus__8Z2SeqMgrFl */ -void Z2SeqMgr::changeBgmStatus(s32 param_0) { +void Z2SeqMgr::changeBgmStatus(s32 status) { if (!mMainBgmHandle) { return; } - u32 count = 0; + u32 moveTime = 0; bool mute; + + #if PLATFORM_SHIELD + f32 volume1 = 1.0f; + f32 volume2 = 1.0f; + f32 volume3 = 1.0f; + f32 volume4 = 1.0f; + #else f32 volume1, volume2, volume3, volume4; + #endif + switch (getMainBgmID()) { case Z2BGM_TOAL_VILLEGE: - if (param_0 == mBgmStatus) { + if (status == mBgmStatus) { return; } + if (mBgmStatus != 0xff) { - count = 60; + moveTime = 60; } - if (param_0 == 1) { + + if (status == 1) { volume1 = 0.65f; volume2 = 0.0f; volume3 = 1.0f; - count = 30; + moveTime = 30; } else { volume1 = 1.0f; volume2 = 1.0f; volume3 = 0.0f; } - setChildTrackVolume(&mMainBgmHandle, 0, volume1, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 1, volume1, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 2, volume1, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 3, volume1, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 4, volume1, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 5, volume1, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 6, volume1, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 7, volume1, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 8, volume2, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 9, volume3, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 10, volume3, count, -1.0f, -1.0f); + + setChildTrackVolume(&mMainBgmHandle, 0, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 1, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 2, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 3, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 4, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 5, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 6, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 7, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 8, volume2, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 9, volume3, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 10, volume3, moveTime, -1.0f, -1.0f); break; case Z2BGM_HORSE_BATTLE: - setChildTrackVolume(&mMainBgmHandle, 11, 0.0f, 0, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 12, 0.0f, 0, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 13, 0.0f, 0, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 11, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 12, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 13, 0.0f, moveTime, -1.0f, -1.0f); break; case Z2BGM_DUNGEON_FOREST: mute = false; - switch (param_0) { + switch (status) { case 4: case 0xc: - muteSceneBgm(struct_80450860, 0.0f); + muteSceneBgm(Z2Param::SCENE_CHANGE_BGM_FADEOUT_TIME, 0.0f); // fallthrough case 7: mute = true; @@ -691,12 +749,13 @@ void Z2SeqMgr::changeBgmStatus(s32 param_0) { Z2GetSoundObjMgr()->setForceBattleArea(true, 1500, 5000, 10000); break; } + if (!mute) { - unMuteSceneBgm(struct_80450860); + unMuteSceneBgm(Z2Param::SCENE_CHANGE_BGM_FADEOUT_TIME); } break; case Z2BGM_DUNGEON_LV2: - switch (param_0) { + switch (status) { case 0xe: case 0x10: case 0x11: @@ -711,27 +770,30 @@ void Z2SeqMgr::changeBgmStatus(s32 param_0) { break; case Z2BGM_DUNGEON_LV5: if (mBgmStatus != 0xff) { - count = 45; + moveTime = 45; } - if (param_0 == 2 || param_0 == 1) { + + if (status == 2 || status == 1) { volume1 = 0.0f; volume2 = 1.0f; } else { volume1 = 1.0f; volume2 = 0.0f; } - setChildTrackVolume(&mMainBgmHandle, 0, volume1, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 1, volume1, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 2, volume1, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 3, volume1, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 4, volume1, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 8, volume2, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 9, volume2, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 10, volume2, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 11, volume2, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 12, volume2, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 13, volume2, count, -1.0f, -1.0f); - if (param_0 == 4) { + + setChildTrackVolume(&mMainBgmHandle, 0, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 1, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 2, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 3, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 4, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 8, volume2, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 9, volume2, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 10, volume2, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 11, volume2, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 12, volume2, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 13, volume2, moveTime, -1.0f, -1.0f); + + if (status == 4) { muteSceneBgm(60, 0.29f); } else { unMuteSceneBgm(60); @@ -739,78 +801,80 @@ void Z2SeqMgr::changeBgmStatus(s32 param_0) { break; case Z2BGM_CASTLE_TOWN: if (mBgmStatus != 0xff) { - count = 45; + moveTime = 45; } - switch (param_0) { + + switch (status) { case 0: case 1: case 5: - setChildTrackVolume(&mMainBgmHandle, 0, 1.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 1, 1.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 2, 1.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 3, 1.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 4, 1.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 5, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 6, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 7, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 8, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 9, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 10, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 11, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 12, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 0, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 1, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 2, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 3, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 4, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 5, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 6, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 7, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 8, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 9, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 10, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 11, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 12, 0.0f, moveTime, -1.0f, -1.0f); break; case 2: - setChildTrackVolume(&mMainBgmHandle, 0, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 1, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 2, 1.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 3, 1.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 4, 1.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 5, 1.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 6, 1.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 7, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 8, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 9, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 10, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 11, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 12, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 0, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 1, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 2, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 3, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 4, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 5, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 6, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 7, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 8, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 9, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 10, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 11, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 12, 0.0f, moveTime, -1.0f, -1.0f); break; case 3: - setChildTrackVolume(&mMainBgmHandle, 0, 1.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 1, 1.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 2, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 3, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 4, 1.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 5, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 6, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 7, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 8, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 9, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 10, 1.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 11, 1.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 12, 1.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 0, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 1, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 2, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 3, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 4, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 5, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 6, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 7, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 8, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 9, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 10, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 11, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 12, 1.0f, moveTime, -1.0f, -1.0f); break; case 4: - setChildTrackVolume(&mMainBgmHandle, 0, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 1, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 2, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 3, 1.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 4, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 5, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 6, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 7, 1.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 8, 1.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 9, 1.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 10, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 11, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 12, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 0, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 1, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 2, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 3, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 4, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 5, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 6, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 7, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 8, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 9, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 10, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 11, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 12, 0.0f, moveTime, -1.0f, -1.0f); break; } - if (param_0 == 5) { - muteSceneBgm(count, 0.35f); + + if (status == 5) { + muteSceneBgm(moveTime, 0.35f); mFlags.mHeightVolMod = false; } else { - unMuteSceneBgm(count); - if (param_0 < 2) { + unMuteSceneBgm(moveTime); + if (status < 2) { mFlags.mHeightVolMod = false; } else { mFlags.mHeightVolMod = true; @@ -819,37 +883,39 @@ void Z2SeqMgr::changeBgmStatus(s32 param_0) { break; case Z2BGM_HOLY_FOREST: if (mBgmStatus != 0xff) { - count = 45; + moveTime = 45; setChildTrackVolume(&mMainBgmHandle, 7, 0.0f, 5, -1.0f, -1.0f); } else { setChildTrackVolume(&mMainBgmHandle, 7, 0.0f, 0, -1.0f, -1.0f); } - if (param_0 == 1) { + + if (status == 1) { volume1 = 0.6f; volume2 = 1.0f; } else { volume1 = 1.0f; volume2 = 0.0f; } - setChildTrackVolume(&mMainBgmHandle, 0, volume1, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 1, volume1, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 2, volume1, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 3, volume1, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 4, volume2, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 5, volume2, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 6, volume2, count, -1.0f, -1.0f); + + setChildTrackVolume(&mMainBgmHandle, 0, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 1, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 2, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 3, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 4, volume2, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 5, volume2, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 6, volume2, moveTime, -1.0f, -1.0f); break; case Z2BGM_LUTERA2: - if (param_0 == 0) { + if (status == 0) { muteSceneBgm(0, 0.5f); - } else if (param_0 == 1) { + } else if (status == 1) { unMuteSceneBgm(80); } break; case Z2BGM_DEMO08: - if (param_0 == 1) { + if (status == 1) { setChildTrackVolume(&mMainBgmHandle, 4, 1.0f, 90, -1.0f, -1.0f); - } else if (param_0 == 2) { + } else if (status == 2) { bgmStop(90, 0); } else { setChildTrackVolume(&mMainBgmHandle, 4, 0.0f, 0, -1.0f, -1.0f); @@ -859,7 +925,7 @@ void Z2SeqMgr::changeBgmStatus(s32 param_0) { } break; case Z2BGM_DEMO10: - if (param_0 == 1) { + if (status == 1) { setChildTrackVolume(&mMainBgmHandle, 0, 0.3f, 143, -1.0f, -1.0f); setChildTrackVolume(&mMainBgmHandle, 1, 0.3f, 143, -1.0f, -1.0f); setChildTrackVolume(&mMainBgmHandle, 2, 0.6f, 143, -1.0f, -1.0f); @@ -875,7 +941,7 @@ void Z2SeqMgr::changeBgmStatus(s32 param_0) { } break; case Z2BGM_BOSS_SNOWWOMAN_1: - if (param_0 == 1) { + if (status == 1) { setChildTrackVolume(&mMainBgmHandle, 9, 0.0f, 60, -1.0f, -1.0f); setChildTrackVolume(&mMainBgmHandle, 10, 1.0f, 60, -1.0f, -1.0f); setChildTrackVolume(&mMainBgmHandle, 11, 1.0f, 60, -1.0f, -1.0f); @@ -887,73 +953,67 @@ void Z2SeqMgr::changeBgmStatus(s32 param_0) { } break; case Z2BGM_DUNGEON_LV8: - if (param_0 == mBgmStatus) { + if (status == mBgmStatus) { return; } + if (mBgmStatus != 0xff) { - count = 45; + moveTime = 45; } - if (param_0 == 0 || param_0 == 0xb) { + + if (status == 0 || status == 0xb) { volume1 = 1.0f; volume2 = 0.0f; volume3 = 0.0f; volume4 = 0.0f; - } else if (param_0 >= 100) { + } else if (status >= 100) { volume1 = 0.0f; volume2 = 1.0f; - f32 volume; - if (param_0 < 200) { - volume = 1.0f; - } else if (param_0 > 3100) { - volume = 0.0f; - } else { - volume = Z2Calc::getParamByExp(param_0, 3100.0f, 200.0f, 0.3f, 0.0f, 1.0f, - Z2Calc::CURVE_SIGN_1); - } - volume3 = volume; - if (param_0 < 200) { - volume = 1.0f; - } else if (param_0 > 1600) { - volume = 0.0f; - } else { - volume = Z2Calc::getParamByExp(param_0, 1600.0f, 200.0f, 0.3f, 0.0f, 1.0f, - Z2Calc::CURVE_SIGN_1); - } - volume4 = volume; + + volume3 = status < 200 ? 1.0f : + status > 3100 ? 0.0f : + Z2Calc::getParamByExp(status, 3100.0f, 200.0f, 0.3f, 0.0f, 1.0f, + Z2Calc::CURVE_POSITIVE); + + volume4 = status < 200 ? 1.0f : + status > 1600 ? 0.0f : + Z2Calc::getParamByExp(status, 1600.0f, 200.0f, 0.3f, 0.0f, 1.0f, + Z2Calc::CURVE_POSITIVE); } else { volume1 = 0.0f; volume2 = 1.0f; volume3 = 0.0f; volume4 = 0.0f; } - setChildTrackVolume(&mMainBgmHandle, 2, volume1, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 3, volume1, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 4, volume1, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 5, volume1, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 6, volume2, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 7, volume2, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 8, volume2, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 9, volume2, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 10, volume2, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 11, volume3, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 12, volume3, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 13, volume4, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 14, volume4, count, -1.0f, -1.0f); + + setChildTrackVolume(&mMainBgmHandle, 2, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 3, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 4, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 5, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 6, volume2, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 7, volume2, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 8, volume2, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 9, volume2, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 10, volume2, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 11, volume3, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 12, volume3, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 13, volume4, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 14, volume4, moveTime, -1.0f, -1.0f); break; case Z2BGM_BOSS_ZANT: - if (param_0 == 0xd) { + if (status == 0xd) { mSceneBgm.move(0.3f, 134); } else { mSceneBgm.forceIn(); - if (param_0 > 6) { - param_0 = (param_0 - 7) * 2; + if (status > 6) { + status = (status - 7) * 2; } else { - param_0 = param_0 * 2 - 1; + status = status * 2 - 1; } } break; case Z2BGM_FORTUNE: - if (param_0 == 1) { + if (status == 1) { muteSceneBgm(45, 0.5f); } else { unMuteSceneBgm(45); @@ -961,201 +1021,214 @@ void Z2SeqMgr::changeBgmStatus(s32 param_0) { break; case Z2BGM_DUNGEON_LV9_02: if (mBgmStatus != 0xff) { - count = 30; + moveTime = 30; } - if (param_0 == 0xc) { + + if (status == 0xc) { volume4 = 1.0f; volume1 = 0.0f; volume2 = 0.5f; volume3 = 0.0f; - } else if (param_0 == 8) { + } else if (status == 8) { volume4 = 0.0f; volume1 = 0.5f; volume2 = 1.0f; volume3 = 0.8f; - } else if (param_0 > 3000) { - volume4 = Z2Calc::linearTransform(param_0, 3150.0f, 6150.0f, 1.0f, 0.0f, false); - volume1 = Z2Calc::linearTransform(param_0, 3150.0f, 6150.0f, 0.0f, 1.0f, false); - volume2 = Z2Calc::linearTransform(param_0, 3150.0f, 6150.0f, 0.5f, 1.0f, false); - volume3 = Z2Calc::linearTransform(param_0, 3150.0f, 6150.0f, 0.0f, 1.0f, false); + } else if (status > 3000) { + volume4 = Z2Calc::linearTransform(status, 3150.0f, 6150.0f, 1.0f, 0.0f, false); + volume1 = Z2Calc::linearTransform(status, 3150.0f, 6150.0f, 0.0f, 1.0f, false); + volume2 = Z2Calc::linearTransform(status, 3150.0f, 6150.0f, 0.5f, 1.0f, false); + volume3 = Z2Calc::linearTransform(status, 3150.0f, 6150.0f, 0.0f, 1.0f, false); } - setChildTrackVolume(&mMainBgmHandle, 0, volume4, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 1, volume4, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 2, volume4, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 3, volume1, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 4, volume1, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 5, volume1, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 6, volume1, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 7, volume2, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 8, volume2, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 9, volume3, count, -1.0f, -1.0f); + + setChildTrackVolume(&mMainBgmHandle, 0, volume4, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 1, volume4, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 2, volume4, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 3, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 4, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 5, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 6, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 7, volume2, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 8, volume2, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 9, volume3, moveTime, -1.0f, -1.0f); break; case Z2BGM_VS_GANON_02: - if (param_0 == mBgmStatus) { + if (status == mBgmStatus) { return; } + if (mBgmStatus != 0xff) { - count = 45; + moveTime = 45; } - if (param_0 == 1) { + + if (status == 1) { volume1 = 0.0f; volume2 = 1.0f; } else { volume1 = 1.0f; volume2 = 0.0f; } - setChildTrackVolume(&mMainBgmHandle, 0, volume1, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 1, volume1, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 2, volume1, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 3, volume1, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 4, volume1, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 5, volume1, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 6, volume1, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 7, volume1, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 10, volume2, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 11, volume2, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 12, volume2, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 13, volume2, count, -1.0f, -1.0f); + + setChildTrackVolume(&mMainBgmHandle, 0, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 1, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 2, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 3, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 4, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 5, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 6, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 7, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 10, volume2, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 11, volume2, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 12, volume2, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 13, volume2, moveTime, -1.0f, -1.0f); break; case Z2BGM_TOAL_NIGHT: case Z2BGM_FILONE_FOREST: - if (param_0 == 1) { + if (status == 1) { muteSceneBgm(45, 0.5f); - } else if (param_0 == 2) { + } else if (status == 2) { muteSceneBgm(0, 0.5f); } else { unMuteSceneBgm(45); } break; case Z2BGM_VS_GANON_04: - if (param_0 == mBgmStatus) { + if (status == mBgmStatus) { return; } - if (param_0 >= 4) { - count = 50; - if (param_0 == 4) { + + if (status >= 4) { + moveTime = 50; + if (status == 4) { volume4 = 1.0f; volume1 = 0.0f; - } else if (param_0 == 5) { + } else if (status == 5) { volume4 = 0.0f; volume1 = 1.0f; - } else if (param_0 == 6) { + } else if (status == 6) { volume4 = 0.0f; volume1 = 0.0f; - } else if (param_0 == 7) { + } else if (status == 7) { volume4 = 0.0f; volume1 = 0.0f; - count = 0; - } else if (param_0 == 8) { + moveTime = 0; + } else if (status == 8) { volume4 = 1.0f; volume1 = 1.0f; - count = 0; + moveTime = 0; } - setChildTrackVolume(&mMainBgmHandle, 12, volume4, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 13, volume4, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 14, volume1, count, -1.0f, -1.0f); - setChildTrackVolume(&mMainBgmHandle, 15, volume1, count, -1.0f, -1.0f); + + setChildTrackVolume(&mMainBgmHandle, 12, volume4, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 13, volume4, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 14, volume1, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mMainBgmHandle, 15, volume1, moveTime, -1.0f, -1.0f); } break; } - Z2GetSoundStarter()->setPortData(&mMainBgmHandle, 9, param_0, -1); - mBgmStatus = param_0 & 0xff; + Z2GetSoundStarter()->setPortData(&mMainBgmHandle, 9, status, -1); + mBgmStatus = status & 0xff; } /* 802B1DF4-802B299C 2AC734 0BA8+00 2/2 3/3 31/31 .text changeSubBgmStatus__8Z2SeqMgrFl */ -void Z2SeqMgr::changeSubBgmStatus(s32 param_0) { +void Z2SeqMgr::changeSubBgmStatus(s32 status) { if (!mSubBgmHandle) { return; } - u32 count = 0; + u32 moveTime = 0; bool bvar2 = true; + switch (getSubBgmID()) { case Z2BGM_DEKUTOAD: - if (param_0 == 1 && mSubBgmStatus == 2) { + if (status == 1 && mSubBgmStatus == 2) { mSubBgmMaster.forceOut(); mDekuToadCount = 100; - } else if (param_0 == 3) { + } else if (status == 3) { mSubBgmMaster.forceOut(); mDekuToadCount = 30; } break; case Z2BGM_HORSE_BATTLE: - if (param_0 == mSubBgmStatus) { + if (status == mSubBgmStatus) { return; } - if (param_0 != 2) { + + if (status != 2) { bvar2 = false; if (mSubBgmStatus != 0xff) { - count = 40; + moveTime = 40; } } - if (param_0 == 1) { + + if (status == 1) { setChildTrackVolume(&mSubBgmHandle, 0, 0.0f, 60, -1.0f, -1.0f); setChildTrackVolume(&mSubBgmHandle, 1, 0.0f, 60, -1.0f, -1.0f); setChildTrackVolume(&mSubBgmHandle, 11, 1.0f, 60, -1.0f, -1.0f); setChildTrackVolume(&mSubBgmHandle, 12, 1.0f, 60, -1.0f, -1.0f); setChildTrackVolume(&mSubBgmHandle, 13, 1.0f, 60, -1.0f, -1.0f); } else { - setChildTrackVolume(&mSubBgmHandle, 0, 1.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 1, 1.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 11, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 12, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 13, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 0, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 1, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 11, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 12, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 13, 0.0f, moveTime, -1.0f, -1.0f); } break; case Z2BGM_FACE_OFF_BATTLE2: - if (param_0 == mSubBgmStatus) { + if (status == mSubBgmStatus) { return; } + bvar2 = false; if (mSubBgmStatus != 0xff) { - count = 30; + moveTime = 30; } - if (param_0 == 1) { + + if (status == 1) { setChildTrackVolume(&mSubBgmHandle, 0, 0.0f, 10, -1.0f, -1.0f); setChildTrackVolume(&mSubBgmHandle, 10, 0.0f, 10, -1.0f, -1.0f); setChildTrackVolume(&mSubBgmHandle, 11, 1.0f, 10, -1.0f, -1.0f); setChildTrackVolume(&mSubBgmHandle, 12, 1.0f, 10, -1.0f, -1.0f); setChildTrackVolume(&mSubBgmHandle, 13, 1.0f, 10, -1.0f, -1.0f); } else { - setChildTrackVolume(&mSubBgmHandle, 0, 1.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 10, 1.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 11, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 12, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 13, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 0, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 10, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 11, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 12, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 13, 0.0f, moveTime, -1.0f, -1.0f); } break; case Z2BGM_RODEO: - if (param_0 == mSubBgmStatus) { + if (status == mSubBgmStatus) { break; } - if (param_0 == 1) { + + if (status == 1) { if (mSubBgmStatus != 0xff) { - count = 60; + moveTime = 60; } - setChildTrackVolume(&mSubBgmHandle, 9, 1.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 10, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 11, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 12, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 13, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 14, 0.0f, count, -1.0f, -1.0f); - } else if (param_0 == 2) { + setChildTrackVolume(&mSubBgmHandle, 9, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 10, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 11, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 12, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 13, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 14, 0.0f, moveTime, -1.0f, -1.0f); + } else if (status == 2) { if (mSubBgmStatus != 0xff) { - count = 20; + moveTime = 20; } - setChildTrackVolume(&mSubBgmHandle, 9, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 10, 1.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 11, 1.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 12, 1.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 13, 1.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 14, 1.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 9, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 10, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 11, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 12, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 13, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 14, 1.0f, moveTime, -1.0f, -1.0f); } break; case Z2BGM_VARIANT: - switch (param_0) { + switch (status) { case 1: switch (mSubBgmStatus) { case 2: @@ -1178,26 +1251,28 @@ void Z2SeqMgr::changeSubBgmStatus(s32 param_0) { } break; case Z2BGM_BATTLE_TWILIGHT: - if (mSubBgmStatus == param_0) { + if (mSubBgmStatus == status) { return; } + if (mSubBgmStatus != 0xff) { - count = 25; + moveTime = 25; } + bvar2 = false; - if (param_0 == 2) { - setChildTrackVolume(&mSubBgmHandle, 2, 1.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 3, 1.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 4, 1.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 5, 1.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 6, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 7, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 8, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 9, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 10, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 11, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 12, 0.0f, count, -1.0f, -1.0f); - } else if (param_0 == 3) { + if (status == 2) { + setChildTrackVolume(&mSubBgmHandle, 2, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 3, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 4, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 5, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 6, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 7, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 8, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 9, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 10, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 11, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 12, 0.0f, moveTime, -1.0f, -1.0f); + } else if (status == 3) { setChildTrackVolume(&mSubBgmHandle, 2, 0.0f, 0, -1.0f, -1.0f); setChildTrackVolume(&mSubBgmHandle, 3, 0.0f, 0, -1.0f, -1.0f); setChildTrackVolume(&mSubBgmHandle, 4, 0.0f, 0, -1.0f, -1.0f); @@ -1210,17 +1285,17 @@ void Z2SeqMgr::changeSubBgmStatus(s32 param_0) { setChildTrackVolume(&mSubBgmHandle, 11, 1.0f, 0, -1.0f, -1.0f); setChildTrackVolume(&mSubBgmHandle, 12, 1.0f, 0, -1.0f, -1.0f); } else { - setChildTrackVolume(&mSubBgmHandle, 2, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 3, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 4, 1.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 5, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 6, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 7, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 8, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 9, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 10, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 11, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 12, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 2, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 3, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 4, 1.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 5, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 6, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 7, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 8, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 9, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 10, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 11, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 12, 0.0f, moveTime, -1.0f, -1.0f); } break; case Z2BGM_BATTLE_NORMAL: @@ -1228,25 +1303,27 @@ void Z2SeqMgr::changeSubBgmStatus(s32 param_0) { } if (bvar2) { - Z2GetSoundStarter()->setPortData(&mSubBgmHandle, 9, param_0, -1); + Z2GetSoundStarter()->setPortData(&mSubBgmHandle, 9, status, -1); } - mSubBgmStatus = param_0 & 0xff; + + mSubBgmStatus = status & 0xff; } /* 802B299C-802B2A88 2AD2DC 00EC+00 0/0 1/1 0/0 .text onVariantBgmJumpEnd__8Z2SeqMgrFb */ void Z2SeqMgr::onVariantBgmJumpEnd(bool param_0) { if (param_0) { - u32 count = 0; + u32 moveTime = 0; if (mSubBgmStatus == 3) { - count = 45; + moveTime = 45; mSubBgmStatus = 1; } - setChildTrackVolume(&mSubBgmHandle, 8, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 9, 0.0f, count, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 10, 0.0f, count, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 8, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 9, 0.0f, moveTime, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 10, 0.0f, moveTime, -1.0f, -1.0f); } else { setChildTrackVolume(&mSubBgmHandle, 0, 1.0f, 0, -1.0f, -1.0f); } + Z2GetSoundMgr()->getSeqMgr()->calc(); Z2GetSoundMgr()->getSeqMgr()->mixOut(); } @@ -1258,7 +1335,7 @@ void Z2SeqMgr::changeFishingBgm(s32 param_0) { if (getSubBgmID() == Z2BGM_FISHING_HIT) { subBgmStop(); } - unMuteSceneBgm(struct_80450862); + unMuteSceneBgm(Z2Param::BGM_CROSS_FADEOUT_TIME); break; case 1: if (getSubBgmID() == Z2BGM_FISHING_HIT) { @@ -1281,11 +1358,10 @@ void Z2SeqMgr::changeFishingBgm(s32 param_0) { /* 802B2CA4-802B2D64 2AD5E4 00C0+00 0/0 1/1 0/0 .text talkInBgm__8Z2SeqMgrFv */ void Z2SeqMgr::talkInBgm() { - if (getStreamBgmID() == 0x2000038 || getStreamBgmID() == 0x200007c - || getMainBgmID() == Z2BGM_WCS_D01) - { + if (getStreamBgmID() == 0x2000038 || getStreamBgmID() == 0x200007c || getMainBgmID() == Z2BGM_WCS_D01) { return; } + mBgmPause.move(Z2Param::VOL_BGM_TALKING, 2); } @@ -1371,7 +1447,7 @@ void Z2SeqMgr::fanfareFramework() { } if (!isItemGetDemo() && mFanfareMute.getDest() != 1.0f) { - mFanfareMute.fadeIn(struct_80450861); + mFanfareMute.fadeIn(Z2Param::BGM_CROSS_FADEIN_TIME); } if (mFanfareCount != 0) { mFanfareCount--; @@ -1424,16 +1500,16 @@ void Z2SeqMgr::stopWolfHowlSong() { } /* 802B3318-802B3398 2ADC58 0080+00 0/0 1/1 0/0 .text setHeightVolMod__8Z2SeqMgrFbUl */ -void Z2SeqMgr::setHeightVolMod(bool i_value, u32 i_count) { - mFlags.mHeightVolMod = i_value; - if (!i_value) { - field_0x84.fadeIn(i_count); +void Z2SeqMgr::setHeightVolMod(bool isVolMod, u32 fadeTime) { + mFlags.mHeightVolMod = isVolMod; + if (!isVolMod) { + field_0x84.fadeIn(fadeTime); } } /* 802B3398-802B33A8 2ADCD8 0010+00 0/0 1/1 0/0 .text setTimeProcVolMod__8Z2SeqMgrFbUl */ -void Z2SeqMgr::setTimeProcVolMod(bool i_value, u32 i_count) { - mFlags.mTimeProcVolMod = i_value; +void Z2SeqMgr::setTimeProcVolMod(bool isVolMod, u32 fadeTime) { + mFlags.mTimeProcVolMod = isVolMod; } /* 80450870-80450874 0002F0 0004+00 1/1 0/0 0/0 .sdata sDeathMtBottom */ @@ -1453,7 +1529,7 @@ void Z2SeqMgr::processBgmFramework() { fieldBgmFramework(); if (!mStreamBgmHandle && mStreamBgmMaster.getDest() != 1.0f) { - mStreamBgmMaster.fadeIn(struct_80450861); + mStreamBgmMaster.fadeIn(Z2Param::BGM_CROSS_FADEIN_TIME); } if (field_0xb8 != -1) { @@ -1464,7 +1540,7 @@ void Z2SeqMgr::processBgmFramework() { field_0xb8 = -1; } } else if (!mSubBgmHandle && mMainBgmMaster.getDest() != 1.0f) { - mMainBgmMaster.fadeIn(struct_80450861); + mMainBgmMaster.fadeIn(Z2Param::BGM_CROSS_FADEIN_TIME); } if (mFlags.mTimeProcVolMod) { @@ -1483,7 +1559,7 @@ void Z2SeqMgr::processBgmFramework() { switch (getMainBgmID()) { case Z2BGM_DEATH_MOUNTAIN01: volume = Z2Calc::getParamByExp(link_y, sDeathMtTop, sDeathMtBottom, 0.3f, 0.0f, 1.0f, - Z2Calc::CURVE_SIGN_0); + Z2Calc::CURVE_NEGATIVE); field_0x84.move(volume, 0); break; case Z2BGM_RAKKA_HOUSE: @@ -1492,7 +1568,7 @@ void Z2SeqMgr::processBgmFramework() { field_0x84.forceIn(); } else if (link_y < -7500.0f) { volume = Z2Calc::getParamByExp(link_y, -10500.0f, -7500.0f, 0.3f, 0.0f, 1.0f, - Z2Calc::CURVE_SIGN_1); + Z2Calc::CURVE_POSITIVE); field_0x84.move(volume, 0); } break; @@ -1506,7 +1582,7 @@ void Z2SeqMgr::processBgmFramework() { field_0x84.forceOut(); } else if (depth > 0.0f) { volume = Z2Calc::getParamByExp(depth, sUnderWaterDepthMax, 0.0f, 0.3f, 0.1f, 1.0f, - Z2Calc::CURVE_SIGN_1); + Z2Calc::CURVE_POSITIVE); field_0x84.move(volume, 0); } else if (field_0x84.getDest() != 1.0f) { field_0x84.fadeIn(30); @@ -1518,7 +1594,7 @@ void Z2SeqMgr::processBgmFramework() { field_0x84.move(0.3f, 0); } else if (link_y > -13000.0f) { volume = Z2Calc::getParamByExp(link_y, -1500.0f, -13000.0f, 0.3f, 0.3f, 1.0f, - Z2Calc::CURVE_SIGN_0); + Z2Calc::CURVE_NEGATIVE); field_0x84.move(volume, 0); } else { field_0x84.forceIn(); @@ -1528,7 +1604,7 @@ void Z2SeqMgr::processBgmFramework() { field_0x84.fadeOut(30); } else if (link_y > -45000.0f) { volume = Z2Calc::getParamByExp(link_y, -3000.0f, -45000.0f, 0.3f, 0.0f, 1.0f, - Z2Calc::CURVE_SIGN_0); + Z2Calc::CURVE_NEGATIVE); field_0x84.move(volume, 0); } else { field_0x84.forceIn(); @@ -1538,7 +1614,7 @@ void Z2SeqMgr::processBgmFramework() { field_0x84.forceOut(); } else if (link_y > -1500.0f) { volume = Z2Calc::getParamByExp(link_y, 900.0f, -1500.0f, 0.3f, 0.0f, 0.3f, - Z2Calc::CURVE_SIGN_0); + Z2Calc::CURVE_NEGATIVE); field_0x84.move(volume, 0); } else { field_0x84.move(0.3f, 0); @@ -1574,86 +1650,98 @@ void Z2SeqMgr::processBgmFramework() { mWindStone.calc(); field_0xa4.calc(); - f32 base_vol = mAllBgmMaster.get() * mBgmPause.get() * mFanfareMute.get() - * mWindStone.get() * mTwilightGateVol; + f32 base_vol = mAllBgmMaster.get() * mBgmPause.get() * mFanfareMute.get() * mWindStone.get() * mTwilightGateVol; + if (mMainBgmHandle) { f32 volume = 1.0f; if (getMainBgmID() != Z2BGM_GAME_OVER) { - volume = base_vol * mMainBgmMaster.get() * mSceneBgm.get() - * mStreamBgmMaster.get() * field_0x84.get() * field_0xa4.get(); + volume = base_vol * mMainBgmMaster.get() * mSceneBgm.get() * mStreamBgmMaster.get() * field_0x84.get() * field_0xa4.get(); } mMainBgmHandle->getAuxiliary().moveVolume(volume, 0); } + if (mSubBgmHandle) { f32 volume = base_vol * mSubBgmMaster.get() * mStreamBgmMaster.get(); mSubBgmHandle->getAuxiliary().moveVolume(volume, 0); } + if (mStreamBgmHandle) { f32 volume = base_vol * mMainBgmMaster.get() * mSceneBgm.get(); mStreamBgmHandle->getAuxiliary().moveVolume(volume, 0); } + setWindStoneVol(1.0f, 30); } /* 802B3EAC-802B3F40 2AE7EC 0094+00 0/0 2/2 0/0 .text checkBgmIDPlaying__8Z2SeqMgrFUl */ -bool Z2SeqMgr::checkBgmIDPlaying(u32 i_bgmID) { - if (getMainBgmID() == i_bgmID) { +bool Z2SeqMgr::checkBgmIDPlaying(u32 bgmID) { + if (getMainBgmID() == bgmID) { return true; } - if (getSubBgmID() == i_bgmID) { + + if (getSubBgmID() == bgmID) { return true; } - if (getStreamBgmID() == i_bgmID) { + + if (getStreamBgmID() == bgmID) { return true; } + return false; } /* 802B3F40-802B3FEC 2AE880 00AC+00 1/1 0/0 0/0 .text * getChildTrackVolume__8Z2SeqMgrFP14JAISoundHandlei */ -f32 Z2SeqMgr::getChildTrackVolume(JAISoundHandle* i_handle, int i_track) { +f32 Z2SeqMgr::getChildTrackVolume(JAISoundHandle* handle, int trackId) { f32 volume = 0.0f; - if (*i_handle) { - JAISeq* seq = i_handle->getSound()->asSeq(); - if (seq != NULL && seq->getChildTrack(i_track) != NULL) { - JAISoundChild* child = seq->getChild(i_track); + if (*handle) { + JAISeq* seq = handle->getSound()->asSeq(); + if (seq != NULL && seq->getChildTrack(trackId) != NULL) { + JAISoundChild* child = seq->getChild(trackId); if (child != NULL) { - volume = child->mMove.mParams.mVolume; + volume = child->mMove.params_.mVolume; } } } + return volume; } /* 802B3FEC-802B4128 2AE92C 013C+00 9/9 2/2 0/0 .text * setChildTrackVolume__8Z2SeqMgrFP14JAISoundHandleifUlff */ -void Z2SeqMgr::setChildTrackVolume(JAISoundHandle* i_handle, int i_track, f32 i_volume, - u32 i_count, f32 i_pan, f32 i_dolby) { - if (!*i_handle) { +void Z2SeqMgr::setChildTrackVolume(JAISoundHandle* handle, int trackId, f32 volume, + u32 moveTime, f32 pan, f32 dolby) { + if (!*handle) { return; } - JAISeq* seq = (*i_handle)->asSeq(); + + JAISeq* seq = (*handle)->asSeq(); if (seq == NULL) { return; } - if (seq->getChildTrack(i_track) == NULL) { + + if (seq->getChildTrack(trackId) == NULL) { return; } - JAISoundChild* child = seq->getChild(i_track); + + JAISoundChild* child = seq->getChild(trackId); if (child == NULL) { return; } - if (i_volume > 1.0f) { - i_volume = 1.0f; - } else if (i_volume < 0.0f) { - i_volume = 0.0f; + + if (volume > 1.0f) { + volume = 1.0f; + } else if (volume < 0.0f) { + volume = 0.0f; } - child->mMove.moveVolume(i_volume, i_count); - if (i_pan != -1.0f) { - child->mMove.movePan(i_pan, i_count); + + child->mMove.moveVolume(volume, moveTime); + if (pan != -1.0f) { + child->mMove.movePan(pan, moveTime); } - if (i_dolby != -1.0f) { - child->mMove.moveDolby(i_dolby, i_count); + + if (dolby != -1.0f) { + child->mMove.moveDolby(dolby, moveTime); } } @@ -1666,46 +1754,47 @@ void Z2SeqMgr::resetBattleBgmParams() { } /* 802B4164-802B421C 2AEAA4 00B8+00 4/4 3/3 10/10 .text setBattleBgmOff__8Z2SeqMgrFb */ -void Z2SeqMgr::setBattleBgmOff(bool i_value) { - if (mFlags.mBattleBgmOff != i_value && i_value && +void Z2SeqMgr::setBattleBgmOff(bool isBgmOff) { + if (mFlags.mBattleBgmOff != isBgmOff && isBgmOff && (getSubBgmID() == Z2BGM_BATTLE_NORMAL || getSubBgmID() == Z2BGM_BATTLE_TWILIGHT)) { - stopBattleBgm(struct_80450862, struct_80450861); + stopBattleBgm(Z2Param::BGM_CROSS_FADEOUT_TIME, Z2Param::BGM_CROSS_FADEIN_TIME); } - mFlags.mBattleBgmOff = i_value; + + mFlags.mBattleBgmOff = isBgmOff; } /* 802B421C-802B43D0 2AEB5C 01B4+00 0/0 1/1 0/0 .text setBattleSearched__8Z2SeqMgrFb */ -void Z2SeqMgr::setBattleSearched(bool i_value) { +void Z2SeqMgr::setBattleSearched(bool isBattleSearched) { if (!mFlags.mBattleBgmOff && Z2GetSceneMgr()->isSceneExist() - && mFlags.mBattleSearched != i_value && mBattleSeqState != 3) + && mFlags.mBattleSearched != isBattleSearched && mBattleSeqState != 3) { if (getSubBgmID() == Z2BGM_BATTLE_NORMAL && mBattleSeqState == 1) { - if (i_value) { - setChildTrackVolume(&mSubBgmHandle, 2, 1.0f, struct_80450864, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 3, 1.0f, struct_80450864, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 12, 1.0f, struct_80450864, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 14, 1.0f, struct_80450864, -1.0f, -1.0f); + if (isBattleSearched) { + setChildTrackVolume(&mSubBgmHandle, 2, 1.0f, Z2Param::FOUND_TRACK_FI_TIME, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 3, 1.0f, Z2Param::FOUND_TRACK_FI_TIME, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 12, 1.0f, Z2Param::FOUND_TRACK_FI_TIME, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 14, 1.0f, Z2Param::FOUND_TRACK_FI_TIME, -1.0f, -1.0f); } else { - setChildTrackVolume(&mSubBgmHandle, 2, 0.0f, struct_80450865, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 3, 0.0f, struct_80450865, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 12, 0.0f, struct_80450865, -1.0f, -1.0f); - setChildTrackVolume(&mSubBgmHandle, 14, 0.0f, struct_80450865, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 2, 0.0f, Z2Param::FOUND_TRACK_FO_TIME, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 3, 0.0f, Z2Param::FOUND_TRACK_FO_TIME, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 12, 0.0f, Z2Param::FOUND_TRACK_FO_TIME, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, 14, 0.0f, Z2Param::FOUND_TRACK_FO_TIME, -1.0f, -1.0f); } } - mFlags.mBattleSearched = i_value; + mFlags.mBattleSearched = isBattleSearched; } } /* 802B43D0-802B43E0 2AED10 0010+00 3/3 0/0 0/0 .text setBattleDistIgnore__8Z2SeqMgrFb */ -void Z2SeqMgr::setBattleDistIgnore(bool i_value) { - mFlags.mBattleDistIgnore = i_value; +void Z2SeqMgr::setBattleDistIgnore(bool isBattleDistIgnore) { + mFlags.mBattleDistIgnore = isBattleDistIgnore; } /* 802B43E0-802B4498 2AED20 00B8+00 0/0 2/2 0/0 .text setBattleGhostMute__8Z2SeqMgrFb */ -void Z2SeqMgr::setBattleGhostMute(bool i_value) { +void Z2SeqMgr::setBattleGhostMute(bool isBattleGhostMute) { if (getSubBgmID() == Z2BGM_BATTLE_NORMAL) { - if (i_value) { + if (isBattleGhostMute) { mSubBgmMaster.move(1.0f, 5); } else { mSubBgmMaster.move(0.4f, 5); @@ -1714,26 +1803,27 @@ void Z2SeqMgr::setBattleGhostMute(bool i_value) { } /* 802B4498-802B4844 2AEDD8 03AC+00 0/0 1/1 0/0 .text setBattleDistState__8Z2SeqMgrFUc */ -void Z2SeqMgr::setBattleDistState(u8 i_state) { +void Z2SeqMgr::setBattleDistState(u8 state) { if (!mFlags.mBattleBgmOff && Z2GetSceneMgr()->isSceneExist()) { if (!mFlags.mBattleDistIgnore) { - if (i_state < 2 && mBattleSeqCount != 0) { + if (state < 2 && mBattleSeqCount != 0) { mBattleSeqCount = 0; - if (getSubBgmID() == Z2BGM_BATTLE_TWILIGHT - || getSubBgmID() == Z2BGM_BATTLE_NORMAL) + if (getSubBgmID() == Z2BGM_BATTLE_TWILIGHT || getSubBgmID() == Z2BGM_BATTLE_NORMAL) { mSubBgmHandle->getFader().fadeIn(10); mMainBgmMaster.fadeOut(10); } } + if ((Z2GetSoundObjMgr()->isTwilightBattle() && getSubBgmID() == Z2BGM_BATTLE_NORMAL) || (!Z2GetSoundObjMgr()->isTwilightBattle() && getSubBgmID() == Z2BGM_BATTLE_TWILIGHT)) { mSubBgmHandle->stop(30); mSubBgmHandle->releaseHandle(); } + if (Z2GetSoundObjMgr()->isTwilightBattle() || getSubBgmID() == Z2BGM_BATTLE_TWILIGHT) { - switch (i_state) { + switch (state) { case 0: if (mBattleSeqState == 0) { startBattleBgm(true); @@ -1751,47 +1841,45 @@ void Z2SeqMgr::setBattleDistState(u8 i_state) { break; } } else if (getMainBgmID() != Z2BGM_FIELD_LINK_DAY) { - switch (i_state) { + switch (state) { case 0: if (mBattleSeqState == 0) { startBattleBgm(true); } else if (mBattleSeqState == 1) { - setChildTrackVolume(&mSubBgmHandle, data_8045086C, 1.0f, struct_80450866, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, data_8045086C, 1.0f, Z2Param::CLOSE_BATTLE_TRACK_FI_TIME, -1.0f, -1.0f); } break; case 1: if (mBattleSeqState == 0) { startBattleBgm(true); } else if (mBattleSeqState == 1) { - setChildTrackVolume(&mSubBgmHandle, data_8045086C, 0.0f, struct_80450867, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, data_8045086C, 0.0f, Z2Param::CLOSE_BATTLE_TRACK_FO_TIME, -1.0f, -1.0f); } break; case 2: if (mBattleSeqState == 1) { - setChildTrackVolume(&mSubBgmHandle, data_8045086C, 0.0f, struct_80450867, -1.0f, -1.0f); + setChildTrackVolume(&mSubBgmHandle, data_8045086C, 0.0f, Z2Param::CLOSE_BATTLE_TRACK_FO_TIME, -1.0f, -1.0f); } break; case 3: if (mBattleSeqState == 1 || mBattleSeqState == 2) { - stopBattleBgm(struct_80450862, struct_80450861); + stopBattleBgm(Z2Param::BGM_CROSS_FADEOUT_TIME, Z2Param::BGM_CROSS_FADEIN_TIME); } break; } } } - mBattleDistState = i_state; + mBattleDistState = state; } } /* 802B4844-802B4AFC 2AF184 02B8+00 1/1 3/3 1/1 .text setBattleSeqState__8Z2SeqMgrFUc */ -void Z2SeqMgr::setBattleSeqState(u8 i_state) { - if (!mFlags.mBattleBgmOff && Z2GetSceneMgr()->isSceneExist() && mBattleSeqState != i_state) { - if (i_state == 0) { - stopBattleBgm(struct_80450862, struct_80450861); - } else if (getSubBgmID() == Z2BGM_BATTLE_NORMAL && - !(getMainBgmID() == Z2BGM_FIELD_LINK_DAY && !Z2GetSoundObjMgr()->isTwilightBattle())) - { - switch (i_state) { +void Z2SeqMgr::setBattleSeqState(u8 state) { + if (!mFlags.mBattleBgmOff && Z2GetSceneMgr()->isSceneExist() && mBattleSeqState != state) { + if (state == 0) { + stopBattleBgm(Z2Param::BGM_CROSS_FADEOUT_TIME, Z2Param::BGM_CROSS_FADEIN_TIME); + } else if (getSubBgmID() == Z2BGM_BATTLE_NORMAL && !(getMainBgmID() == Z2BGM_FIELD_LINK_DAY && !Z2GetSoundObjMgr()->isTwilightBattle())) { + switch (state) { case 2: if (mBattleSeqState == 1) { Z2GetSoundStarter()->setPortData(&mSubBgmHandle, 9, 1, -1); @@ -1801,6 +1889,7 @@ void Z2SeqMgr::setBattleSeqState(u8 i_state) { setChildTrackVolume(&mSubBgmHandle, 12, 1.0f, 0, -1.0f, -1.0f); setChildTrackVolume(&mSubBgmHandle, 14, 1.0f, 0, -1.0f, -1.0f); } + if (mBattleSeqCount != 0) { mBattleSeqCount = 0; mSubBgmHandle->getFader().fadeIn(10); @@ -1810,6 +1899,7 @@ void Z2SeqMgr::setBattleSeqState(u8 i_state) { case 3: mMainBgmMaster.forceOut(); mSubBgmMaster.forceIn(); + if (mBattleSeqState == 1) { Z2GetSoundStarter()->setPortData(&mSubBgmHandle, 9, 3, -1); } else if (mBattleSeqState == 2) { @@ -1817,18 +1907,19 @@ void Z2SeqMgr::setBattleSeqState(u8 i_state) { } break; } - mBattleSeqState = i_state; + + mBattleSeqState = state; } } } /* 802B4AFC-802B4BD0 2AF43C 00D4+00 0/0 4/4 0/0 .text setBattleLastHit__8Z2SeqMgrFUc */ -void Z2SeqMgr::setBattleLastHit(u8 param_0) { +void Z2SeqMgr::setBattleLastHit(u8 lastHit) { if (getSubBgmID() == Z2BGM_BATTLE_NORMAL) { setBattleDistIgnore(true); - mSubBgmMaster.move(Z2Param::ENEMY_LASTHIT_MUTE_VOLUME, struct_80450868); - field_0xc1 = struct_8045086B; - mBattleLastHit = param_0; + mSubBgmMaster.move(Z2Param::ENEMY_LASTHIT_MUTE_VOLUME, Z2Param::ENDING_BLOW_VOL_DOWN_TIME); + field_0xc1 = Z2Param::ENDING_BLOW_MIN_FINISH_TIME; + mBattleLastHit = lastHit; } } @@ -1843,6 +1934,7 @@ void Z2SeqMgr::battleBgmFramework() { } } } + if (!mFlags.mBattleBgmOff && Z2GetSceneMgr()->isSceneExist()) { Z2GetSoundObjMgr()->searchEnemy(); switch (getSubBgmID()) { @@ -1852,17 +1944,19 @@ void Z2SeqMgr::battleBgmFramework() { if (getMainBgmID() == Z2BGM_FIELD_LINK_DAY && !Z2GetSoundObjMgr()->isTwilightBattle()) { return; } + if (field_0xc1 != 0) { field_0xc1--; if (field_0xc1 < mBattleLastHit && mSubBgmMaster.getDest() != 1.0f) { - mSubBgmMaster.fadeIn(struct_8045086A); + mSubBgmMaster.fadeIn(Z2Param::ENDING_BLOW_VOL_LOWER_RECOVER_TIME); } + if (field_0xc1 == 0) { setBattleDistIgnore(false); if (Z2GetSoundObjMgr()->checkBattleFinish()) { setBattleSeqState(3); } else if (mSubBgmMaster.getDest() != 1.0f) { - mSubBgmMaster.fadeIn(struct_8045086A); + mSubBgmMaster.fadeIn(Z2Param::ENDING_BLOW_VOL_LOWER_RECOVER_TIME); } } } @@ -1872,13 +1966,13 @@ void Z2SeqMgr::battleBgmFramework() { setBattleDistIgnore(false); mFlags.mBattleSearched = 0; field_0xc1 = 0; - mBattleLastHit = struct_80450869; + mBattleLastHit = Z2Param::ENDING_BLOW_VOL_LOWER_TIME; } } } /* 802B4EB0-802B5204 2AF7F0 0354+00 1/1 0/0 0/0 .text startBattleBgm__8Z2SeqMgrFb */ -void Z2SeqMgr::startBattleBgm(bool i_fade) { +void Z2SeqMgr::startBattleBgm(bool isFadeIn) { if (!mFlags.mBattleBgmOff && Z2GetSceneMgr()->isSceneExist() && mBattleSeqState == 0 && (mFlags.mBattleDistIgnore || mBattleDistState <= 1)) { @@ -1886,24 +1980,28 @@ void Z2SeqMgr::startBattleBgm(bool i_fade) { if (Z2GetSceneMgr()->isInDarkness() || Z2GetSoundObjMgr()->isTwilightBattle()) { bgm_id = Z2BGM_BATTLE_TWILIGHT; } + u32 subBgmID = getSubBgmID(); if (subBgmID != bgm_id) { mBattleSeqState = 1; if (Z2GetSoundMgr()->startSound(bgm_id, &mSubBgmHandle, NULL)) { Z2GetSoundObjMgr()->setBattleInit(); mSubBgmStatus = 0xff; + s16 ivar2 = Z2GetLink()->getMoveSpeed() - 23; if (ivar2 < 0) { ivar2 = 0; } - if (ivar2 > struct_80450861) { - ivar2 = struct_80450861; + + if (ivar2 > Z2Param::BGM_CROSS_FADEIN_TIME) { + ivar2 = Z2Param::BGM_CROSS_FADEIN_TIME; } - u8 count_in, count_out; + + u8 fadeinTime, fadeoutTime; switch (bgm_id) { case Z2BGM_BATTLE_NORMAL: - count_in = struct_80450861 - ivar2; - count_out = struct_80450862 - ivar2 / 2; + fadeinTime = Z2Param::BGM_CROSS_FADEIN_TIME - ivar2; + fadeoutTime = Z2Param::BGM_CROSS_FADEOUT_TIME - ivar2 / 2; if (!mFlags.mBattleSearched) { setChildTrackVolume(&mSubBgmHandle, 2, 0.0f, 0, -1.0f, -1.0f); setChildTrackVolume(&mSubBgmHandle, 3, 0.0f, 0, -1.0f, -1.0f); @@ -1916,51 +2014,58 @@ void Z2SeqMgr::startBattleBgm(bool i_fade) { break; case Z2BGM_BATTLE_TWILIGHT: changeSubBgmStatus(Z2GetSoundObjMgr()->isTwilightBattle()); - count_in = 25 - ivar2 / 4; - count_out = 25 - ivar2 / 4; + fadeinTime = 25 - ivar2 / 4; + fadeoutTime = 25 - ivar2 / 4; break; } - if (i_fade) { - mSubBgmMaster.fadeInFromOut(count_in); + + if (isFadeIn) { + mSubBgmMaster.fadeInFromOut(fadeinTime); } else { mSubBgmMaster.forceIn(); } - mMainBgmMaster.fadeOut(count_out); + + mMainBgmMaster.fadeOut(fadeoutTime); } } } } /* 802B5204-802B545C 2AFB44 0258+00 3/3 1/1 0/0 .text stopBattleBgm__8Z2SeqMgrFUcUc */ -void Z2SeqMgr::stopBattleBgm(u8 param_0, u8 param_1) { +void Z2SeqMgr::stopBattleBgm(u8 subFadeoutTime, u8 mainFadeinTime) { if (mBattleSeqCount == 0) { s16 ivar6 = 0; if (Z2GetLink() != NULL) { ivar6 = Z2GetLink()->getMoveSpeed() - 23; } + if (ivar6 < 0) { ivar6 = 0; } - if (ivar6 > struct_80450861) { - ivar6 = struct_80450861; + + if (ivar6 > Z2Param::BGM_CROSS_FADEIN_TIME) { + ivar6 = Z2Param::BGM_CROSS_FADEIN_TIME; } + if (getSubBgmID() == Z2BGM_BATTLE_NORMAL) { - param_0 = struct_80450861 + ivar6; - param_1 = struct_80450862 + ivar6 / 2; - mSubBgmHandle->fadeOut(param_0); - mBattleSeqCount = param_0; + subFadeoutTime = Z2Param::BGM_CROSS_FADEIN_TIME + ivar6; + mainFadeinTime = Z2Param::BGM_CROSS_FADEOUT_TIME + ivar6 / 2; + mSubBgmHandle->fadeOut(subFadeoutTime); + mBattleSeqCount = subFadeoutTime; } else if (getSubBgmID() == Z2BGM_BATTLE_TWILIGHT) { if (mSubBgmStatus > 1) { - param_0 = struct_80450861 + ivar6 / 4; - param_1 = struct_80450861 + ivar6 / 4; + subFadeoutTime = Z2Param::BGM_CROSS_FADEIN_TIME + ivar6 / 4; + mainFadeinTime = Z2Param::BGM_CROSS_FADEIN_TIME + ivar6 / 4; } else { - param_0 = 25 + ivar6 / 4; - param_1 = 25 + ivar6 / 4; + subFadeoutTime = 25 + ivar6 / 4; + mainFadeinTime = 25 + ivar6 / 4; } - mSubBgmHandle->fadeOut(param_0); - mBattleSeqCount = param_0; + + mSubBgmHandle->fadeOut(subFadeoutTime); + mBattleSeqCount = subFadeoutTime; } - mMainBgmMaster.fadeIn(param_1); + + mMainBgmMaster.fadeIn(mainFadeinTime); mBattleDistState = 3; setBattleDistIgnore(false); mFlags.mBattleSearched = false; @@ -1974,6 +2079,7 @@ void Z2SeqMgr::fieldBgmStart() { Z2GetSoundMgr()->startSound(Z2BGM_FIELD_LINK_DAY, &mMainBgmHandle, NULL); changeBgmStatus(0); field_0xc4 = 0; + if (Z2GetLink()->isRiding()) { mFlags.mRiding = true; mRideCount = 0; @@ -2001,6 +2107,7 @@ void Z2SeqMgr::fieldRidingMute() { volume1 = 0.0f; volume2 = 1.0f; } + setChildTrackVolume(&mMainBgmHandle, 5, volume1, mRideCount, -1.0f, -1.0f); setChildTrackVolume(&mMainBgmHandle, 6, volume1, mRideCount, -1.0f, -1.0f); setChildTrackVolume(&mMainBgmHandle, 7, volume1, mRideCount, -1.0f, -1.0f); @@ -2034,8 +2141,10 @@ void Z2SeqMgr::onFieldBgmJumpEnd() { setChildTrackVolume(&mMainBgmHandle, 13, field_0xcc, 0, -1.0f, -1.0f); setChildTrackVolume(&mMainBgmHandle, 14, field_0xcc, 0, -1.0f, -1.0f); setChildTrackVolume(&mMainBgmHandle, 15, field_0xcc, 0, -1.0f, -1.0f); + Z2GetSoundMgr()->getSeqMgr()->calc(); Z2GetSoundMgr()->getSeqMgr()->mixOut(); + if (mRideCount != 0) { fieldRidingMute(); } @@ -2044,13 +2153,13 @@ void Z2SeqMgr::onFieldBgmJumpEnd() { /* 802B594C-802B5E80 2B028C 0534+00 2/1 0/0 0/0 .text fieldBgmFramework__8Z2SeqMgrFv */ void Z2SeqMgr::fieldBgmFramework() { if (Z2GetSceneMgr()->isSceneExist() && !Z2GetSceneMgr()->isInDarkness() - && (Z2GetSceneMgr()->getCurrentSceneNum() == 0x1e - || Z2GetSceneMgr()->getCurrentSceneNum() == 0x1f) + && (Z2GetSceneMgr()->getCurrentSceneNum() == Z2SCENE_HYRULE_FIELD || Z2GetSceneMgr()->getCurrentSceneNum() == Z2SCENE_CASTLE_TOWN_GATES) && mFlags.mFieldBgmPlay) { if (mRideCount != 0) { mRideCount--; } + if (getMainBgmID() == Z2BGM_FIELD_LINK_DAY) { field_0xc4 = Z2GetSoundStarter()->getPortData(&mMainBgmHandle, 10, -1); if (Z2GetStatusMgr()->isPaused()) { @@ -2063,10 +2172,12 @@ void Z2SeqMgr::fieldBgmFramework() { fieldRidingMute(); } } + if (field_0xc4 == 0 || field_0xc4 == 21 || field_0xc4 == 22 || field_0xc4 == 23 || field_0xc4 == 24) { return; } + if (Z2GetStatusMgr()->getDemoStatus() == 10) { switch (field_0xc4) { case 7: @@ -2115,8 +2226,7 @@ void Z2SeqMgr::fieldBgmFramework() { if (Z2GetLink()->getMovingTime() < 150) { switch (field_0xc4) { case 3: - if (mFlags.mRiding - && Z2GetSoundObjMgr()->getEnemyNumVeryFar() == 0) { + if (mFlags.mRiding && Z2GetSoundObjMgr()->getEnemyNumVeryFar() == 0) { changeBgmStatus(3); } break; @@ -2151,8 +2261,7 @@ void Z2SeqMgr::fieldBgmFramework() { } } } else { - if (field_0xc4 >= 7 && field_0xc4 <= 15 - && Z2GetStatusMgr()->getHour() >= 20) { + if (field_0xc4 >= 7 && field_0xc4 <= 15 && Z2GetStatusMgr()->getHour() >= 20) { mMainBgmHandle->stop(60); mMainBgmHandle.releaseSound(); } else { @@ -2193,6 +2302,7 @@ void Z2SeqMgr::fieldBgmFramework() { changeBgmStatus(8); field_0xc4 = 23; } + if (Z2GetLink()->isRiding()) { mFlags.mRiding = true; mRideCount = 0; @@ -2210,19 +2320,13 @@ void Z2SeqMgr::fieldBgmFramework() { } /* 802B5E80-802B5E84 2B07C0 0004+00 1/1 0/0 0/0 .text mbossBgmMuteProcess__8Z2SeqMgrFv */ -void Z2SeqMgr::mbossBgmMuteProcess() { - /* empty function */ -} +void Z2SeqMgr::mbossBgmMuteProcess() {} /* 802B5E84-802B5E88 2B07C4 0004+00 0/0 2/2 0/0 .text bgmSetSwordUsing__8Z2SeqMgrFl */ -void Z2SeqMgr::bgmSetSwordUsing(s32 param_0) { - /* empty function */ -} +void Z2SeqMgr::bgmSetSwordUsing(s32 param_0) {} /* 802B5E88-802B5E8C 2B07C8 0004+00 0/0 1/1 0/0 .text bgmNowBattle__8Z2SeqMgrFf */ -void Z2SeqMgr::bgmNowBattle(f32 param_0) { - /* empty function */ -} +void Z2SeqMgr::bgmNowBattle(f32 param_0) {} /* 802B5E8C-802B5ED4 2B07CC 0048+00 0/0 1/1 0/0 .text taktModeMute__8Z2SeqMgrFv */ void Z2SeqMgr::taktModeMute() { diff --git a/src/Z2AudioLib/Z2SoundHandles.cpp b/src/Z2AudioLib/Z2SoundHandles.cpp index 68804a6d01..d59433bb01 100644 --- a/src/Z2AudioLib/Z2SoundHandles.cpp +++ b/src/Z2AudioLib/Z2SoundHandles.cpp @@ -1,40 +1,38 @@ -// -// Generated By: dol2asm -// Translation Unit: Z2SoundHandles -// - #include "Z2AudioLib/Z2SoundHandles.h" #include "JSystem/JAudio2/JAISoundInfo.h" Z2SoundHandles::Z2SoundHandles() { - mNumHandles = 0; + handleNum_ = 0; } Z2SoundHandles::~Z2SoundHandles() { deleteHandlesPool(); } -void Z2SoundHandles::initHandlesPool(u8 pNumHandles) { - mNumHandles = pNumHandles; +void Z2SoundHandles::initHandlesPool(u8 handleNum) { + handleNum_ = handleNum; } /* 802AB120-802AB200 2A5A60 00E0+00 1/1 1/1 0/0 .text deleteHandlesPool__14Z2SoundHandlesFv */ void Z2SoundHandles::deleteHandlesPool() { - JSULink* link; - while (link = getFirst(), link != NULL) { - Z2SoundHandlePool* handle = link->getObject(); + JSULink* i; + while (i = getFirst(), i != NULL) { + Z2SoundHandlePool* handle = i->getObject(); + JUT_ASSERT(48, handle->getSupervisor() == this); + remove(handle); delete handle; } - mNumHandles = 0; + + handleNum_ = 0; } -Z2SoundHandlePool* Z2SoundHandles::getHandleSoundID(JAISoundID pSoundId) { - JSULink* link; - for (link = getFirst(); link != NULL; link = link->getNext()) { - Z2SoundHandlePool* handle = link->getObject(); +Z2SoundHandlePool* Z2SoundHandles::getHandleSoundID(JAISoundID soundID) { + JSULink* i; + for (i = getFirst(); i != NULL; i = i->getNext()) { + Z2SoundHandlePool* handle = i->getObject(); if (handle->isSoundAttached()) { - if ((*handle)->getID() == pSoundId) { + if ((*handle)->getID() == soundID) { return handle; } } @@ -43,12 +41,12 @@ Z2SoundHandlePool* Z2SoundHandles::getHandleSoundID(JAISoundID pSoundId) { return NULL; } -Z2SoundHandlePool* Z2SoundHandles::getHandleUserData(u32 pUserData) { - JSULink* link; - for (link = getFirst(); link != NULL; link = link->getNext()) { - Z2SoundHandlePool* handle = link->getObject(); +Z2SoundHandlePool* Z2SoundHandles::getHandleUserData(u32 userData) { + JSULink* i; + for (i = getFirst(); i != NULL; i = i->getNext()) { + Z2SoundHandlePool* handle = i->getObject(); if (handle->isSoundAttached()) { - if ((*handle)->getUserData() == pUserData) { + if ((*handle)->getUserData() == userData) { return handle; } } @@ -60,21 +58,23 @@ Z2SoundHandlePool* Z2SoundHandles::getHandleUserData(u32 pUserData) { /* 802AB2D8-802AB3D0 2A5C18 00F8+00 0/0 3/3 0/0 .text getFreeHandle__14Z2SoundHandlesFv */ Z2SoundHandlePool* Z2SoundHandles::getFreeHandle() { - JSULink* link; - for (link = getFirst(); link != NULL; link = link->getNext()) { - Z2SoundHandlePool* handle = link->getObject(); + JSULink* i; + for (i = getFirst(); i != NULL; i = i->getNext()) { + Z2SoundHandlePool* handle = i->getObject(); if (!handle->isSoundAttached()) { return handle; } } - if (getNumHandles() < mNumHandles) - { + if (getNumHandles() < handleNum_) { Z2SoundHandlePool* handle = new Z2SoundHandlePool(); if (handle != NULL) { append(handle); + JUT_ASSERT(113, handle->getSupervisor() == this); return handle; } + + JUT_WARN_DEVICE(118, 1, "%s", "cannot Alloc Handle !!\n"); } return NULL; @@ -82,46 +82,52 @@ Z2SoundHandlePool* Z2SoundHandles::getFreeHandle() { /* 802AB3D0-802AB4A0 2A5D10 00D0+00 0/0 2/2 0/0 .text * getLowPrioSound__14Z2SoundHandlesF10JAISoundID */ -Z2SoundHandlePool* Z2SoundHandles::getLowPrioSound(JAISoundID pSoundId) { - JAISoundInfo* sound_info = JASGlobalInstance::getInstance(); - Z2SoundHandlePool* handle; - u32 low_prio = 0xffff; - Z2SoundHandlePool* low_prio_handle = NULL; - JSULink* link; - for (link = getFirst(); link != NULL; link = link->getNext()) { - handle = link->getObject(); +Z2SoundHandlePool* Z2SoundHandles::getLowPrioSound(JAISoundID soundID) { + JAISoundInfo* soundInfo = JASGlobalInstance::getInstance(); + u32 low_prio = 0xFFFF; + Z2SoundHandlePool* rethandle = NULL; + + JSULink* i; + for (i = getFirst(); i != NULL; i = i->getNext()) { + Z2SoundHandlePool* handle = i->getObject(); if (!handle->isSoundAttached()) { return handle; } - u32 prio = sound_info->getPriority(handle->getSound()->getID()); + + u32 prio = soundInfo->getPriority((*handle)->getID()); if (prio < low_prio) { low_prio = prio; - low_prio_handle = handle; + rethandle = handle; } } - if (sound_info->getPriority(pSoundId) >= low_prio) { - return low_prio_handle; + + #if DEBUG + if (rethandle != NULL) { + JUT_ASSERT(163, rethandle->getSupervisor() == this); } + #endif + + if (soundInfo->getPriority(soundID) >= low_prio) { + return rethandle; + } + return NULL; } -void Z2SoundHandles::stopAllSounds(u32 fadeout) { - JSULink* link; - for (link = getFirst(); link != NULL; link = link->getNext()) { - JAISoundHandle* handle = link->getObject(); - //! @meme: explicit operator bool call required to match and be similar - //! to CHN_debug; could more concisely write handle->isSoundAttached - //! (for some reason cast-to-bool doesn't work?) - if (handle && handle->operator bool()) { - (*handle)->stop(fadeout); +void Z2SoundHandles::stopAllSounds(u32 fadeTime) { + JSULink* i; + for (i = getFirst(); i != NULL; i = i->getNext()) { + JAISoundHandle* handle = i->getObject(); + if (handle && (*handle)) { + (*handle)->stop(fadeTime); } } } bool Z2SoundHandles::isActive() const { - JSULink* link; - for (link = getFirst(); link != NULL; link = link->getNext()) { - if (link->getObject()->isSoundAttached()) { + JSULink* i; + for (i = getFirst(); i != NULL; i = i->getNext()) { + if (i->getObject()->isSoundAttached()) { return true; } } @@ -131,12 +137,15 @@ bool Z2SoundHandles::isActive() const { /* 802AB538-802AB64C 2A5E78 0114+00 0/0 1/1 0/0 .text * setPos__14Z2SoundHandlesFRCQ29JGeometry8TVec3 */ -void Z2SoundHandles::setPos(JGeometry::TVec3 const& param_0) { - JSULink* link; - for (link = getFirst(); link != NULL; link = link->getNext()) { - Z2SoundHandlePool* handle = link->getObject(); +void Z2SoundHandles::setPos(const JGeometry::TVec3& pos) { + JSULink* i; + for (i = getFirst(); i != NULL; i = i->getNext()) { + Z2SoundHandlePool* handle = i->getObject(); + JUT_ASSERT(209, handle); + JUT_ASSERT(210, handle->getSupervisor() == this); + if (handle->isSoundAttached()) { - handle->getSound()->setPos(param_0); + (*handle)->setPos(pos); } else { remove(handle); diff --git a/src/Z2AudioLib/Z2SoundInfo.cpp b/src/Z2AudioLib/Z2SoundInfo.cpp index 1dda9961a4..eba28a7d08 100644 --- a/src/Z2AudioLib/Z2SoundInfo.cpp +++ b/src/Z2AudioLib/Z2SoundInfo.cpp @@ -1,8 +1,3 @@ -// -// Generated By: dol2asm -// Translation Unit: Z2SoundInfo -// - #include "Z2AudioLib/Z2SoundInfo.h" #include "JSystem/JAudio2/JAISeq.h" #include "JSystem/JAudio2/JAISe.h" @@ -11,7 +6,6 @@ #include "JSystem/JAudio2/JAUSoundTable.h" #include "JSystem/JUtility/JUTAssert.h" #include "Z2AudioLib/Z2Calc.h" -#include "dolphin/dvd.h" struct JAUStdSoundTableType { static const u32 STRM_CH_SHIFT; @@ -24,23 +18,24 @@ struct JAUStdSoundTableType { /* 802BB00C-802BB090 2B594C 0084+00 2/1 0/0 0/0 .text * getBgmSeqResourceID__11Z2SoundInfoCF10JAISoundID */ -u16 Z2SoundInfo::getBgmSeqResourceID(JAISoundID param_0) const { +u16 Z2SoundInfo::getBgmSeqResourceID(JAISoundID soundID) const { JUT_ASSERT(20, isValid()); - JAUSoundTableItem* data = JASGlobalInstance::getInstance()->getData(param_0); - u8 typeID = JASGlobalInstance::getInstance()->getTypeID(param_0); + JAUSoundTableItem* data = JASGlobalInstance::getInstance()->getData(soundID); + u8 typeID = JASGlobalInstance::getInstance()->getTypeID(soundID); if (data != NULL) { switch ((typeID & 0xf0)) { case 0x60: - return data->mResourceId; + return (u16)data->mResourceId; } } + return 0xffff; } /* 802BB090-802BB0D8 2B59D0 0048+00 1/0 0/0 0/0 .text getSoundType__11Z2SoundInfoCF10JAISoundID */ -int Z2SoundInfo::getSoundType(JAISoundID param_0) const { - switch (param_0.mId.mBytes.b0) { +int Z2SoundInfo::getSoundType(JAISoundID soundID) const { + switch (soundID.id_.info.type.parts.sectionID) { case 0: return 0; case 1: @@ -48,178 +43,194 @@ int Z2SoundInfo::getSoundType(JAISoundID param_0) const { case 2: return 2; } + return -1; } /* 802BB0D8-802BB0E0 2B5A18 0008+00 1/0 0/0 0/0 .text getCategory__11Z2SoundInfoCF10JAISoundID */ -int Z2SoundInfo::getCategory(JAISoundID param_0) const { - return param_0.mId.mBytes.b1; +int Z2SoundInfo::getCategory(JAISoundID soundID) const { + return soundID.id_.info.type.parts.groupID; } /* 802BB0E0-802BB158 2B5A20 0078+00 1/0 0/0 0/0 .text getPriority__11Z2SoundInfoCF10JAISoundID */ -u32 Z2SoundInfo::getPriority(JAISoundID param_0) const { +u32 Z2SoundInfo::getPriority(JAISoundID soundID) const { JUT_ASSERT(63, isValid()); - JAUSoundTableItem* data = JASGlobalInstance::getInstance()->getData(param_0); - u8 typeID = JASGlobalInstance::getInstance()->getTypeID(param_0); + JAUSoundTableItem* data = JASGlobalInstance::getInstance()->getData(soundID); + u8 typeID = JASGlobalInstance::getInstance()->getTypeID(soundID); if (data != NULL && (typeID & 0x40) != 0) { return data->mPriority; } + return 0; } /* 802BB158-802BB448 2B5A98 02F0+00 0/0 1/1 0/0 .text getAudibleSwFull__11Z2SoundInfoF10JAISoundID */ -JAUAudibleParam Z2SoundInfo::getAudibleSwFull(JAISoundID param_0) { - JAUAudibleParam local_28; +JAUAudibleParam Z2SoundInfo::getAudibleSwFull(JAISoundID soundID) { + JAUAudibleParam audibleParam; JUT_ASSERT(82, isValid()); int iVar1, uVar7; - switch (JASGlobalInstance::getInstance()->getTypeID(param_0)) { + + u8 typeID = JASGlobalInstance::getInstance()->getTypeID(soundID); + switch (typeID) { case 81: - local_28.field_0x0.bytes.b0_0 = (u32)getSwBit(param_0) >> 8; - if ((getSwBit(param_0) & 1) != 0) { - local_28.field_0x0.bytes.b0_4 = 0; + audibleParam.field_0x0.bytes.b0_0 = (u32)getSwBit(soundID) >> 8; + if ((getSwBit(soundID) & 1) != 0) { + audibleParam.field_0x0.bytes.b0_4 = 0; } else { - local_28.field_0x0.bytes.b0_4 = 1; + audibleParam.field_0x0.bytes.b0_4 = 1; } - if ((getSwBit(param_0) & 2) != 0) { - local_28.field_0x0.bytes.b0_5 = 0; + + if ((getSwBit(soundID) & 2) != 0) { + audibleParam.field_0x0.bytes.b0_5 = 0; } else { - local_28.field_0x0.bytes.b0_5 = 1; + audibleParam.field_0x0.bytes.b0_5 = 1; } - if ((getSwBit(param_0) & 4) != 0) { - local_28.field_0x0.bytes.b0_6 = 0; + + if ((getSwBit(soundID) & 4) != 0) { + audibleParam.field_0x0.bytes.b0_6 = 0; } else { - local_28.field_0x0.bytes.b0_6 = 1; + audibleParam.field_0x0.bytes.b0_6 = 1; } - if ((getSwBit(param_0) & 0x800000) != 0) { - local_28.field_0x0.bytes.b0_7 = 1; + + if ((getSwBit(soundID) & 0x800000) != 0) { + audibleParam.field_0x0.bytes.b0_7 = 1; } else { - local_28.field_0x0.bytes.b0_7 = 0; + audibleParam.field_0x0.bytes.b0_7 = 0; } - if ((getSwBit(param_0) & 0x1000) != 0) { - local_28.field_0x0.bytes.b1_0 = 0; + + if ((getSwBit(soundID) & 0x1000) != 0) { + audibleParam.field_0x0.bytes.b1_0 = 0; } else { - local_28.field_0x0.bytes.b1_0 = 1; + audibleParam.field_0x0.bytes.b1_0 = 1; } - if ((getSwBit(param_0) & 0x2000) != 0) { - local_28.field_0x0.bytes.b1_1 = 0; + + if ((getSwBit(soundID) & 0x2000) != 0) { + audibleParam.field_0x0.bytes.b1_1 = 0; } else { - local_28.field_0x0.bytes.b1_1 = 1; + audibleParam.field_0x0.bytes.b1_1 = 1; } uVar7 = 0; - if ((getSwBit(param_0) & 0x80000) != 0) { + if ((getSwBit(soundID) & 0x80000) != 0) { uVar7 = 8; } - iVar1 = (getSwBit(param_0) >> 16) & 0x7; - iVar1 += (getSwBit(param_0) >> 16) & 0x70; - iVar1 += (getSwBit(param_0) >> 16) & 0xf00; - local_28.field_0x0.bytes.b1_2_7 = uVar7; - local_28.field_0x0.half.f1 = iVar1; + iVar1 = (getSwBit(soundID) >> 16) & 0x7; + iVar1 += (getSwBit(soundID) >> 16) & 0x70; + iVar1 += (getSwBit(soundID) >> 16) & 0xf00; + audibleParam.field_0x0.bytes.b1_2_7 = uVar7; + audibleParam.field_0x0.half.f1 = iVar1; break; default: - local_28.field_0x0.bytes.b0_0 = 0; - local_28.field_0x0.bytes.b0_4 = 1; - local_28.field_0x0.bytes.b0_5 = 1; - local_28.field_0x0.bytes.b0_6 = 1; - local_28.field_0x0.bytes.b0_7 = 0; - local_28.field_0x0.bytes.b1_0 = 1; - local_28.field_0x0.bytes.b1_1 = 1; - local_28.field_0x0.bytes.b1_2_7 = 0; - local_28.field_0x0.half.f1 = 0; + audibleParam.field_0x0.bytes.b0_0 = 0; + audibleParam.field_0x0.bytes.b0_4 = 1; + audibleParam.field_0x0.bytes.b0_5 = 1; + audibleParam.field_0x0.bytes.b0_6 = 1; + audibleParam.field_0x0.bytes.b0_7 = 0; + audibleParam.field_0x0.bytes.b1_0 = 1; + audibleParam.field_0x0.bytes.b1_1 = 1; + audibleParam.field_0x0.bytes.b1_2_7 = 0; + audibleParam.field_0x0.half.f1 = 0; break; } - return local_28; + + return audibleParam; } /* 802BB448-802BB6DC 2B5D88 0294+00 2/1 0/0 0/0 .text getAudibleSw__11Z2SoundInfoCF10JAISoundID */ -u16 Z2SoundInfo::getAudibleSw(JAISoundID param_0) const { - JAUAudibleParam local_28; +u16 Z2SoundInfo::getAudibleSw(JAISoundID soundID) const { + JAUAudibleParam audibleParam; JUT_ASSERT(184, isValid()); int iVar1, uVar7; - switch (JASGlobalInstance::getInstance()->getTypeID(param_0)) { + + u8 typeID = JASGlobalInstance::getInstance()->getTypeID(soundID); + switch (typeID) { case 81: - local_28.field_0x0.bytes.b0_0 = (u32)getSwBit(param_0) >> 8; - if ((getSwBit(param_0) & 1) != 0) { - local_28.field_0x0.bytes.b0_4 = 0; + audibleParam.field_0x0.bytes.b0_0 = (u32)getSwBit(soundID) >> 8; + if ((getSwBit(soundID) & 1) != 0) { + audibleParam.field_0x0.bytes.b0_4 = 0; } else { - local_28.field_0x0.bytes.b0_4 = 1; + audibleParam.field_0x0.bytes.b0_4 = 1; } - if ((getSwBit(param_0) & 2) != 0) { - local_28.field_0x0.bytes.b0_5 = 0; + + if ((getSwBit(soundID) & 2) != 0) { + audibleParam.field_0x0.bytes.b0_5 = 0; } else { - local_28.field_0x0.bytes.b0_5 = 1; + audibleParam.field_0x0.bytes.b0_5 = 1; } - if ((getSwBit(param_0) & 4) != 0) { - local_28.field_0x0.bytes.b0_6 = 0; + + if ((getSwBit(soundID) & 4) != 0) { + audibleParam.field_0x0.bytes.b0_6 = 0; } else { - local_28.field_0x0.bytes.b0_6 = 1; + audibleParam.field_0x0.bytes.b0_6 = 1; } - if ((getSwBit(param_0) & 0x800000) != 0) { - local_28.field_0x0.bytes.b0_7 = 1; + + if ((getSwBit(soundID) & 0x800000) != 0) { + audibleParam.field_0x0.bytes.b0_7 = 1; } else { - local_28.field_0x0.bytes.b0_7 = 0; + audibleParam.field_0x0.bytes.b0_7 = 0; } - if ((getSwBit(param_0) & 0x1000) != 0) { - local_28.field_0x0.bytes.b1_0 = 0; + + if ((getSwBit(soundID) & 0x1000) != 0) { + audibleParam.field_0x0.bytes.b1_0 = 0; } else { - local_28.field_0x0.bytes.b1_0 = 1; + audibleParam.field_0x0.bytes.b1_0 = 1; } - if ((getSwBit(param_0) & 0x2000) != 0) { - local_28.field_0x0.bytes.b1_1 = 0; + + if ((getSwBit(soundID) & 0x2000) != 0) { + audibleParam.field_0x0.bytes.b1_1 = 0; } else { - local_28.field_0x0.bytes.b1_1 = 1; + audibleParam.field_0x0.bytes.b1_1 = 1; } uVar7 = 0; - if ((getSwBit(param_0) & 0x80000) != 0) { + if ((getSwBit(soundID) & 0x80000) != 0) { uVar7 = 8; } - iVar1 = (getSwBit(param_0) >> 16) & 0x7; - iVar1 += (getSwBit(param_0) >> 16) & 0x70; - iVar1 += (getSwBit(param_0) >> 16) & 0xf00; - local_28.field_0x0.bytes.b1_2_7 = uVar7; - local_28.field_0x0.half.f1 = iVar1; + iVar1 = (getSwBit(soundID) >> 16) & 0x7; + iVar1 += (getSwBit(soundID) >> 16) & 0x70; + iVar1 += (getSwBit(soundID) >> 16) & 0xf00; + audibleParam.field_0x0.bytes.b1_2_7 = uVar7; + audibleParam.field_0x0.half.f1 = iVar1; break; default: - local_28.field_0x0.half.f0 = 0xffff; - local_28.field_0x0.half.f1 = 0xffff; + audibleParam.field_0x0.half.f0 = 0xffff; + audibleParam.field_0x0.half.f1 = 0xffff; break; } - return local_28.field_0x0.half.f0; + + return audibleParam.field_0x0.half.f0; } /* 802BB6DC-802BB8B4 2B601C 01D8+00 1/0 0/0 0/0 .text * getSeInfo__11Z2SoundInfoCF10JAISoundIDP5JAISe */ -void Z2SoundInfo::getSeInfo(JAISoundID param_1, JAISe* param_2) const { - getSoundInfo_(param_1, param_2); +void Z2SoundInfo::getSeInfo(JAISoundID soundID, JAISe* sePtr) const { + getSoundInfo_(soundID, sePtr); JUT_ASSERT(292, isValid()); - JAUSoundTableItem* data = JASGlobalInstance::getInstance()->getData(param_1); - u8 typeID = JASGlobalInstance::getInstance()->getTypeID(param_1); + + JAUSoundTableItem* data = JASGlobalInstance::getInstance()->getData(soundID); + u8 typeID = JASGlobalInstance::getInstance()->getTypeID(soundID); if (data == NULL) { return; } + switch(typeID) { case 81: - param_2->getProperty().field_0x8 *= data->field_0x8; - u32 uStack_6c = (getSwBit(param_1) & 0xf0) >> 4; + sePtr->getProperty().field_0x8 *= data->field_0x8; + u32 uStack_6c = (getSwBit(soundID) & 0xf0) >> 4; if (uStack_6c > 8) { - f32 dVar18 = Z2Calc::getRandom_0_1(); - f32 dVar19 = Z2Calc::linearTransform(uStack_6c, 8.0f, 15.0f, 16.0f, 24.0f, true); - dVar19 = dVar19 / 48.0f * dVar18; - param_2->getProperty().field_0x8 += dVar19; + sePtr->getProperty().field_0x8 += Z2Calc::linearTransform(uStack_6c, 8.0f, 15.0f, 16.0f, 24.0f, true) / 48.0f * Z2Calc::getRandom_0_1(); } else { - f32 dVar18 = Z2Calc::getRandom_0_1(); - dVar18 = (uStack_6c / 48.0f) * dVar18; - param_2->getProperty().field_0x8 += dVar18; + sePtr->getProperty().field_0x8 += (uStack_6c / 48.0f) * Z2Calc::getRandom_0_1(); } - u32 uVar1 = (u32)getSwBit(param_1) >> 0x1c; + + u32 uVar1 = (u32)getSwBit(soundID) >> 0x1c; if (uVar1 != 0) { f32 dVar18 = (uVar1 / 15.0f) * Z2Calc::getRandom_0_1(); - param_2->getProperty().field_0x0 -= dVar18 < 0.0f ? 0.0f : (dVar18 > 1.0f ? 1.0f : dVar18); + sePtr->getProperty().field_0x0 -= dVar18 < 0.0f ? 0.0f : (dVar18 > 1.0f ? 1.0f : dVar18); } break; } @@ -227,43 +238,46 @@ void Z2SoundInfo::getSeInfo(JAISoundID param_1, JAISe* param_2) const { /* 802BB8B4-802BB8E0 2B61F4 002C+00 1/0 0/0 0/0 .text * getSeqInfo__11Z2SoundInfoCF10JAISoundIDP6JAISeq */ -void Z2SoundInfo::getSeqInfo(JAISoundID param_0, JAISeq* param_1) const { - getSoundInfo_(param_0, param_1); +void Z2SoundInfo::getSeqInfo(JAISoundID soundID, JAISeq* seqPtr) const { + getSoundInfo_(soundID, seqPtr); } /* 80455A90-80455A94 004090 0004+00 1/1 0/0 0/0 .sdata2 STRM_CH_SHIFT__20JAUStdSoundTableType */ -u32 const JAUStdSoundTableType::STRM_CH_SHIFT = 2; +const u32 JAUStdSoundTableType::STRM_CH_SHIFT = 2; /* 802BB8E0-802BBA10 2B6220 0130+00 1/0 0/0 0/0 .text * getStreamInfo__11Z2SoundInfoCF10JAISoundIDP9JAIStream */ -void Z2SoundInfo::getStreamInfo(JAISoundID param_1, JAIStream* param_2) const { +void Z2SoundInfo::getStreamInfo(JAISoundID soundID, JAIStream* streamPtr) const { int numChild; JAUSoundTableItem* data; - getSoundInfo_(param_1, param_2); + getSoundInfo_(soundID, streamPtr); JUT_ASSERT(349, isValid()); - switch (JASGlobalInstance::getInstance()->getTypeID(param_1) & 0xf0) { + + u8 typeID = JASGlobalInstance::getInstance()->getTypeID(soundID); + switch (typeID & 0xf0) { case 0x70: u16 uVar1; s32 iVar4; - data = JASGlobalInstance::getInstance()->getData(param_1); + data = JASGlobalInstance::getInstance()->getData(soundID); JUT_ASSERT(356, data); + uVar1 = data->mResourceId; - numChild = param_2->getNumChild(); + numChild = streamPtr->getNumChild(); iVar4 = 0; for (; iVar4 < numChild && uVar1 != 0; uVar1 >>= JAUStdSoundTableType::STRM_CH_SHIFT, iVar4++) { u32 uVar2 = uVar1 & 3; if (uVar2 != 0) { - JAISoundChild* child = param_2->getChild(iVar4); + JAISoundChild* child = streamPtr->getChild(iVar4); if (child != NULL) { switch (uVar2) { case 1: - child->mMove.mParams.mPan = 0.5f; + child->mMove.params_.mPan = 0.5f; break; case 2: - child->mMove.mParams.mPan = 0.0f; + child->mMove.params_.mPan = 0.0f; break; case 3: - child->mMove.mParams.mPan = 1.0f; + child->mMove.params_.mPan = 1.0f; break; } } @@ -274,51 +288,54 @@ void Z2SoundInfo::getStreamInfo(JAISoundID param_1, JAIStream* param_2) const { /* 802BBA10-802BBA88 2B6350 0078+00 1/1 0/0 0/0 .text * getStreamFilePath__11Z2SoundInfoF10JAISoundID */ -const char* Z2SoundInfo::getStreamFilePath(JAISoundID param_1) { +const char* Z2SoundInfo::getStreamFilePath(JAISoundID soundID) { JUT_ASSERT(387, isValid()); JAUSoundTableItem* data; const void* resource; - switch (JASGlobalInstance::getInstance()->getTypeID(param_1) & 0xf0) { + + switch (JASGlobalInstance::getInstance()->getTypeID(soundID) & 0xf0) { case 0x70: - data = JASGlobalInstance::getInstance()->getData(param_1); + data = JASGlobalInstance::getInstance()->getData(soundID); JUT_ASSERT(394, data); resource = JASGlobalInstance::getInstance()->getResource(); JUT_ASSERT(398, resource); return JAUStdSoundTableType::StringOffset::getString(resource, data->field_0x4); default: return NULL; - break; } } /* 802BBA88-802BBAC8 2B63C8 0040+00 2/1 0/0 0/0 .text * getStreamFileEntry__11Z2SoundInfoF10JAISoundID */ -s32 Z2SoundInfo::getStreamFileEntry(JAISoundID param_0) { - const char* path = getStreamFilePath(param_0); +s32 Z2SoundInfo::getStreamFileEntry(JAISoundID soundID) { + const char* path = getStreamFilePath(soundID); return !path ? -1 : DVDConvertPathToEntrynum(path); } /* 802BBAC8-802BBB48 2B6408 0080+00 3/3 4/4 0/0 .text getSwBit__11Z2SoundInfoCF10JAISoundID */ -int Z2SoundInfo::getSwBit(JAISoundID param_1) const { +int Z2SoundInfo::getSwBit(JAISoundID soundID) const { JUT_ASSERT(418, isValid()); - JAUSoundTableItem* data = JASGlobalInstance::getInstance()->getData(param_1); - u8 typeID = JASGlobalInstance::getInstance()->getTypeID(param_1); + JAUSoundTableItem* data = JASGlobalInstance::getInstance()->getData(soundID); + + u8 typeID = JASGlobalInstance::getInstance()->getTypeID(soundID); if (data != NULL) { switch(typeID) { case 81: return data->field_0x4; } } - return 0xffffffff; + + return 0xFFFFFFFF; } /* 802BBB48-802BBBE0 2B6488 0098+00 3/3 0/0 0/0 .text * getSoundInfo___11Z2SoundInfoCF10JAISoundIDP8JAISound */ -void Z2SoundInfo::getSoundInfo_(JAISoundID param_1, JAISound* param_2) const { +void Z2SoundInfo::getSoundInfo_(JAISoundID soundID, JAISound* soundPtr) const { JUT_ASSERT(440, isValid()); - JAUSoundTableItem* data = JASGlobalInstance::getInstance()->getData(param_1); - u8 typeID = JASGlobalInstance::getInstance()->getTypeID(param_1); + JAUSoundTableItem* data = JASGlobalInstance::getInstance()->getData(soundID); + + u8 typeID = JASGlobalInstance::getInstance()->getTypeID(soundID); if (data != NULL && (typeID & 0x40) != 0) { - param_2->getProperty().field_0x0 = (1.0f / 127.0f) * data->field_0x1; + soundPtr->getProperty().field_0x0 = (1.0f / 127.0f) * data->field_0x1; } } diff --git a/src/Z2AudioLib/Z2SoundMgr.cpp b/src/Z2AudioLib/Z2SoundMgr.cpp index 1a6fb14478..9833ed9985 100644 --- a/src/Z2AudioLib/Z2SoundMgr.cpp +++ b/src/Z2AudioLib/Z2SoundMgr.cpp @@ -1,7 +1,3 @@ -// -// Translation Unit: Z2SoundMgr -// - #include "Z2AudioLib/Z2SoundMgr.h" #include "Z2AudioLib/Z2Param.h" #include "Z2AudioLib/Z2SceneMgr.h" @@ -9,19 +5,17 @@ #include "Z2AudioLib/Z2SeqMgr.h" #include "Z2AudioLib/Z2SeMgr.h" #include "Z2AudioLib/Z2SoundInfo.h" +#include "Z2AudioLib/Z2AudioCS.h" #include "JSystem/JAudio2/JASCalc.h" #include "JSystem/JAudio2/JASDriverIF.h" #include "JSystem/JAudio2/JAUSectionHeap.h" - -void dComIfGs_staffroll_next_go(); +#include "d/d_com_inf_game.h" /* 802A9BC8-802A9E80 2A4508 02B8+00 1/0 1/1 0/0 .text seqCallback__FP8JASTrackUs */ -u16 seqCallback(JASTrack* i_track, u16 param_1) { - JSUList* list; - switch (param_1) { +u16 seqCallback(JASTrack* track, u16 command) { + switch (command) { case 0x1000: - Z2GetSeqMgr()->setChildTrackVolume(Z2GetSeqMgr()->getSubBgmHandle(), - 3, 1.0f, 0, -1.0f, -1.0f); + Z2GetSeqMgr()->setChildTrackVolume(Z2GetSeqMgr()->getSubBgmHandle(), 3, 1.0f, 0, -1.0f, -1.0f); Z2GetSoundMgr()->getSeqMgr()->calc(); Z2GetSoundMgr()->getSeqMgr()->mixOut(); break; @@ -41,28 +35,32 @@ u16 seqCallback(JASTrack* i_track, u16 param_1) { Z2GetSeqMgr()->onVariantBgmJumpEnd(false); break; case 0x1006: - list = Z2GetSoundMgr()->getSeMgr()->getCategory(5)->getSeList(); - for (JSULink* link = list->getFirst(); link != NULL; link = link->getNext()) { - switch (link->getObject()->getID()) { - case Z2SE_GRO_MV_SINGING: - case Z2SE_GRR_MV_SINGING: - case Z2SE_CLERK_MV_SONG_HO: - case Z2SE_WAD_A_MV_DANCE: - case Z2SE_MCN_A_V_DANCE: - case Z2SE_WCN_A_V_DANCE: - link->getObject()->getTrack()->writePort(14, 1); - break; + for (JSULink* link = Z2GetSoundMgr()->getSeMgr()->getCategory(5)->getSeList()->getFirst(); link != NULL; link = link->getNext()) { + JAISe* se = link->getObject(); + switch (se->getID()) { + case Z2SE_GRO_MV_SINGING: + case Z2SE_GRR_MV_SINGING: + case Z2SE_CLERK_MV_SONG_HO: + case Z2SE_WAD_A_MV_DANCE: + case Z2SE_MCN_A_V_DANCE: + case Z2SE_WCN_A_V_DANCE: + JASTrack* track = se->getTrack(); + JUT_ASSERT(94, track); + track->writePort(14, 1); + break; } } break; case 0x1015: - list = Z2GetSoundMgr()->getSeMgr()->getCategory(5)->getSeList(); - for (JSULink* link = list->getFirst(); link != NULL; link = link->getNext()) { - switch (link->getObject()->getID()) { - case Z2SE_MCN_A_V_DANCE: - case Z2SE_WCN_A_V_DANCE: - link->getObject()->getTrack()->writePort(14, 1); - break; + for (JSULink* link = Z2GetSoundMgr()->getSeMgr()->getCategory(5)->getSeList()->getFirst(); link != NULL; link = link->getNext()) { + JAISe* se = link->getObject(); + switch (se->getID()) { + case Z2SE_MCN_A_V_DANCE: + case Z2SE_WCN_A_V_DANCE: + JASTrack* track = se->getTrack(); + JUT_ASSERT(113, track); + track->writePort(14, 1); + break; } } break; @@ -76,123 +74,144 @@ u16 seqCallback(JASTrack* i_track, u16 param_1) { dComIfGs_staffroll_next_go(); break; } - if (param_1 >= 0x1009 && param_1 <= 0x1013) { + + if (command >= 0x1009 && command <= 0x1013) { JAISoundID sound_id = Z2SE_CSL_TOWN_BAND_VOCAL; - if (param_1 <= 0x100a) { + if (command <= 0x100a) { sound_id = Z2SE_CSL_TOWN_BAND_GT_1; - } else if (param_1 <= 0x100c) { + } else if (command <= 0x100c) { sound_id = Z2SE_CSL_TOWN_BAND_GT_2; - } else if (param_1 <= 0x100f) { + } else if (command <= 0x100f) { sound_id = Z2SE_CSL_TOWN_BAND_GT_3; - } else if (param_1 <= 0x1011) { + } else if (command <= 0x1011) { sound_id = Z2SE_CSL_TOWN_BAND_FLUTE; } - list = Z2GetSoundMgr()->getSeMgr()->getCategory(6)->getSeList(); - for (JSULink* link = list->getFirst(); link != NULL; link = link->getNext()) { - if (link->getObject()->getID() == sound_id) { - link->getObject()->getTrack()->writePort(14, param_1); + + for (JSULink* link = Z2GetSoundMgr()->getSeMgr()->getCategory(6)->getSeList()->getFirst(); link != NULL; link = link->getNext()) { + JAISe* se = link->getObject(); + if (se->getID() == sound_id) { + JASTrack* track = se->getTrack(); + JUT_ASSERT(159, track); + track->writePort(14, command); break; } } } + return 0; } /* 802A9E80-802A9EE8 2A47C0 0068+00 0/0 1/1 0/0 .text __ct__10Z2SoundMgrFv */ Z2SoundMgr::Z2SoundMgr() : - JASGlobalInstance(this), - mSeMgr(true), - mSeqMgr(true), - mStreamMgr(true) + JASGlobalInstance(true), + seMgr_(true), + seqMgr_(true), + streamMgr_(true) { - mSoundID.setAnonymous(); + soundID_.setAnonymous(); } /* 802A9EE8-802AA1B0 2A4828 02C8+00 1/0 0/0 0/0 .text * startSound__10Z2SoundMgrF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3 */ -bool Z2SoundMgr::startSound(JAISoundID i_soundID, JAISoundHandle* i_handle, - JGeometry::TVec3 const* i_pos) { - switch (Z2GetSoundInfo()->getSoundType(i_soundID)) { - case 0: - if (Z2GetSoundInfo()->getSwBit(i_soundID) & 8) { +bool Z2SoundMgr::startSound(JAISoundID soundID, JAISoundHandle* handle, const JGeometry::TVec3* posPtr) { + int soundType = Z2GetSoundInfo()->getSoundType(soundID); + switch (soundType) { + case 0: { + if (Z2GetSoundInfo()->getSwBit(soundID) & 8) { + OS_REPORT("[Z2SoundMgr::startSound] se seq Mute! id = %08x\n", *(u32*)&soundID); Z2GetSeqMgr()->bgmAllMute(3, 0.3f); - mSoundID = i_soundID; + soundID_ = soundID; } - return mSeMgr.startSound(i_soundID, i_handle, i_pos); + + #if PLATFORM_WII || PLATFORM_SHIELD + if ((u32)soundID == 12) { + Z2AudioCS::start(0, 0); + } else if ((u32)soundID == 13) { + Z2AudioCS::start(0x66, 0); + } + #endif + + bool result = seMgr_.startSound(soundID, handle, posPtr); + return result; + } case 1: - if (i_soundID == Z2BGM_LUTERA_DEMO) { + if (soundID == Z2BGM_LUTERA_DEMO) { Z2GetSeqMgr()->bgmStart(Z2BGM_LUTERA2, 0, 0); Z2GetSeqMgr()->unMuteSceneBgm(0); Z2GetSeqMgr()->changeBgmStatus(0); - return mSeMgr.startSound(Z2SE_NO_SOUND, i_handle, i_pos); + return seMgr_.startSound(Z2SE_NO_SOUND, handle, posPtr); } else { bool loaded = false; - JAUSectionHeap* heap = JASGlobalInstance::getInstance(); - JAUSeqDataBlocks const& loaded_blocks = - heap->getSectionHeapData().seqDataBlocks.getLoadedBlocks(); - JSULink* link; - for (link = loaded_blocks.getFirst(); link != NULL; link = link->getNext()) { - if (link->getObject()->field_0x10 == i_soundID) { + JAUSectionHeap* sectionHeap = JASGlobalInstance::getInstance(); + JUT_ASSERT(228, sectionHeap); + + for (JSULink* link = sectionHeap->getSectionHeapData().seqDataBlocks.getLoadedBlocks().getFirst(); link != NULL; link = link->getNext()) { + if (link->getObject()->field_0x10 == soundID) { loaded = true; break; } } + if (!loaded) { - heap->releaseIdleDynamicSeqDataBlock(); - if (!heap->loadDynamicSeq(i_soundID, true)) { - JAUSeqDataBlocks const& free_blocks = - heap->getSectionHeapData().seqDataBlocks.getFreeBlocks(); - for (link = free_blocks.getFirst(); link != NULL; link = link->getNext()) { + u32 sp2C = sectionHeap->releaseIdleDynamicSeqDataBlock(); + if (!sectionHeap->loadDynamicSeq(soundID, true)) { + OS_REPORT("[Z2SoundMgr::startSound] FAILED!!! LOAD SEQ_DATA id: %08x\n", *(u32*)&soundID); + + for (JSULink* link = sectionHeap->getSectionHeapData().seqDataBlocks.getFreeBlocks().getFirst(); link != NULL; link = link->getNext()) { + OS_REPORT(" freeSeqBlock: %d\n", link->getObject()->field_0x14.size); } } } - return mSeqMgr.startSound(i_soundID, i_handle, i_pos); + + return seqMgr_.startSound(soundID, handle, posPtr); } case 2: - if (i_soundID == 0x2000001 || i_soundID == 0x200004d) { - mStreamMgr.stop(180); - return mSeMgr.startSound(Z2SE_NO_SOUND, i_handle, i_pos); + if (soundID == 0x2000001 || soundID == 0x200004d) { + streamMgr_.stop(180); + return seMgr_.startSound(Z2SE_NO_SOUND, handle, posPtr); } - if (i_soundID == 0x2000005) { - mSeMgr.getCategory(9)->pause(false); - mSeMgr.getCategory(9)->getParams()->moveVolume(1.0f, 45); + if (soundID == 0x2000005) { + seMgr_.getCategory(9)->pause(false); + seMgr_.getCategory(9)->getParams()->moveVolume(1.0f, 45); } - return mStreamMgr.startSound(i_soundID, i_handle, i_pos); + return streamMgr_.startSound(soundID, handle, posPtr); default: char error[32]; - sprintf(error, "Unknown Sound-Type id :%08x\n", (u32)i_soundID); - return false; + sprintf(error, "Unknown Sound-Type id :%08x\n", *(u32*)&soundID); + JUT_WARN(277, "%s", error); } -} + return false; +} /* 802AA1B0-802AA270 2A4AF0 00C0+00 2/2 0/0 0/0 .text calc__10Z2SoundMgrFv */ void Z2SoundMgr::calc() { - mSeMgr.calc(); - if (!mSoundID.isAnonymous() && !isPlayingSoundID(mSoundID)) { + seMgr_.calc(); + if (!soundID_.isAnonymous() && !isPlayingSoundID(soundID_)) { if (Z2GetSceneMgr()->isSceneExist()) { Z2GetSeqMgr()->bgmAllUnMute(3); } - mSoundID.setAnonymous(); + soundID_.setAnonymous(); } - mSeqMgr.calc(); - mStreamMgr.calc(); + seqMgr_.calc(); + streamMgr_.calc(); } /* 802AA270-802AA33C 2A4BB0 00CC+00 1/1 2/2 0/0 .text setIIR__10Z2SoundMgrFP8JAISoundPCs */ -void Z2SoundMgr::setIIR(JAISound* param_0, s16 const* param_1) { - if (param_0 != NULL) { - JASTrack* track = param_0->getTrack(); +void Z2SoundMgr::setIIR(JAISound* sound, const s16* iir) { + if (sound != NULL) { + JASTrack* track = sound->getTrack(); + JUT_ASSERT(340, track); for (u32 i = 0; i < 4; i++) { JASTrack* child = track->getChild(i); if (child != NULL && child->getStatus() == 1) { - child->setIIR(param_1); + child->setIIR(iir); for (u32 j = 0; j < 4; j++) { JASTrack* child2 = child->getChild(j); if (child2 != NULL && child2->getStatus() == 1) { - child2->setIIR(param_1); + child2->setIIR(iir); } } } @@ -206,9 +225,10 @@ static s16 const cResetFilterTable[8] = { }; /* 802AA33C-802AA430 2A4C7C 00F4+00 1/1 0/0 0/0 .text setFilterOff__10Z2SoundMgrFP8JAISound */ -void Z2SoundMgr::setFilterOff(JAISound* param_0) { - if (param_0 != NULL) { - JASTrack* track = param_0->getTrack(); +void Z2SoundMgr::setFilterOff(JAISound* sound) { + if (sound != NULL) { + JASTrack* track = sound->getTrack(); + JUT_ASSERT(403, track); for (u32 i = 0; i < 4; i++) { JASTrack* child = track->getChild(i); if (child != NULL && child->getStatus() == 1) { @@ -229,16 +249,17 @@ void Z2SoundMgr::setFilterOff(JAISound* param_0) { /* 802AA430-802AA528 2A4D70 00F8+00 0/0 1/1 0/0 .text resetFilterAll__10Z2SoundMgrFv */ void Z2SoundMgr::resetFilterAll() { int i = 1; - if (struct_80451342 != 0) { + if (Z2Param::SYSTEM_SE_USE_DARK_SE_SETTING) { i = 0; } + for (; i < 9; i++) { - JAISeCategoryMgr* category = mSeMgr.getCategory(i); + JAISeCategoryMgr* category = seMgr_.getCategory(i); int se_count = category->getMaxActiveSe(); if (se_count > 0) { for (JSULink* link = category->getSeList()->getFirst(); link != NULL && se_count > 0 && !link->getObject()->isFarAway(); - link = link->getNext(), se_count--) + link = link->getNext(), --se_count) { setFilterOff(link->getObject()); } @@ -255,34 +276,36 @@ void Z2SoundMgr::resetFilterAll() { /* 802AA528-802AA67C 2A4E68 0154+00 2/2 0/0 0/0 .text mixOut__10Z2SoundMgrFv */ void Z2SoundMgr::mixOut() { - if (struct_80451340 != 0 && Z2GetSceneMgr()->isInDarkness()) { + if (Z2Param::DARK_SE_FILTER_ON && Z2GetSceneMgr()->isInDarkness()) { int i = 1; - if (struct_80451342 != 0) { + if (Z2Param::SYSTEM_SE_USE_DARK_SE_SETTING) { i = 0; } + for (; i < 9; i++) { - JAISeCategoryMgr* category = mSeMgr.getCategory(i); + JAISeCategoryMgr* category = seMgr_.getCategory(i); int se_count = category->getMaxActiveSe(); if (se_count > 0) { for (JSULink* link = category->getSeList()->getFirst(); link != NULL && se_count > 0 && !link->getObject()->isFarAway(); - link = link->getNext(), se_count--) + link = link->getNext(), --se_count) { - setIIR(link->getObject(), JASCalc::CUTOFF_TO_IIR_TABLE[struct_80451341]); + setIIR(link->getObject(), JASCalc::CUTOFF_TO_IIR_TABLE[Z2Param::DARK_SE_LOW_PASS_FILTER_SETTING]); } } else { for (JSULink* link = category->getSeList()->getFirst(); link != NULL && !link->getObject()->isFarAway(); link = link->getNext()) { - setIIR(link->getObject(), JASCalc::CUTOFF_TO_IIR_TABLE[struct_80451341]); + setIIR(link->getObject(), JASCalc::CUTOFF_TO_IIR_TABLE[Z2Param::DARK_SE_LOW_PASS_FILTER_SETTING]); } } } } - mSeMgr.mixOut(); - mSeqMgr.mixOut(); - mStreamMgr.mixOut(); + + seMgr_.mixOut(); + seqMgr_.mixOut(); + streamMgr_.mixOut(); } /* 802AA67C-802AA6B0 2A4FBC 0034+00 0/0 1/1 0/0 .text framework__10Z2SoundMgrFv */ @@ -293,45 +316,44 @@ void Z2SoundMgr::framework() { /* 802AA6B0-802AA7DC 2A4FF0 012C+00 0/0 1/1 0/0 .text pauseAllGameSound__10Z2SoundMgrFb */ -void Z2SoundMgr::pauseAllGameSound(bool i_pause) { - mSeMgr.getCategory(0)->pause(i_pause); - mSeMgr.getCategory(1)->pause(i_pause); - mSeMgr.getCategory(2)->pause(i_pause); - mSeMgr.getCategory(3)->pause(i_pause); - mSeMgr.getCategory(4)->pause(i_pause); - mSeMgr.getCategory(5)->pause(i_pause); - mSeMgr.getCategory(6)->pause(i_pause); - mSeMgr.getCategory(7)->pause(i_pause); - mSeMgr.getCategory(8)->pause(i_pause); - mSeMgr.getCategory(9)->pause(i_pause); - mSeqMgr.pause(i_pause); - mStreamMgr.pause(i_pause); - if (i_pause) { +void Z2SoundMgr::pauseAllGameSound(bool paused) { + seMgr_.getCategory(0)->pause(paused); + seMgr_.getCategory(1)->pause(paused); + seMgr_.getCategory(2)->pause(paused); + seMgr_.getCategory(3)->pause(paused); + seMgr_.getCategory(4)->pause(paused); + seMgr_.getCategory(5)->pause(paused); + seMgr_.getCategory(6)->pause(paused); + seMgr_.getCategory(7)->pause(paused); + seMgr_.getCategory(8)->pause(paused); + seMgr_.getCategory(9)->pause(paused); + seqMgr_.pause(paused); + streamMgr_.pause(paused); + + if (paused) { Z2GetSeMgr()->seMoveVolumeAll(0.0f, 10); - mSeqMgr.getParams()->moveVolume(0.0f, 10); - mStreamMgr.getParams()->moveVolume(0.0f, 10); - } - else { + seqMgr_.getParams()->moveVolume(0.0f, 10); + streamMgr_.getParams()->moveVolume(0.0f, 10); + } else { Z2GetSeMgr()->seMoveVolumeAll(1.0f, 10); - mSeqMgr.getParams()->moveVolume(1.0f, 10); - mStreamMgr.getParams()->moveVolume(1.0f, 10); + seqMgr_.getParams()->moveVolume(1.0f, 10); + streamMgr_.getParams()->moveVolume(1.0f, 10); } } - /* 802AA7DC-802AA84C 2A511C 0070+00 0/0 1/1 0/0 .text stopSoundID__10Z2SoundMgrF10JAISoundID */ -void Z2SoundMgr::stopSoundID(JAISoundID i_soundID) { - mSeMgr.stopSoundID(i_soundID); - mSeqMgr.stopSoundID(i_soundID); - mStreamMgr.stopSoundID(i_soundID); +void Z2SoundMgr::stopSoundID(JAISoundID soundID) { + seMgr_.stopSoundID(soundID); + seqMgr_.stopSoundID(soundID); + streamMgr_.stopSoundID(soundID); } /* 802AA84C-802AA8C8 2A518C 007C+00 0/0 1/1 0/0 .text stopSync__10Z2SoundMgrFv */ void Z2SoundMgr::stopSync() { stop(); - while (mSeMgr.getNumActiveSe() > 0 || mSeqMgr.getNumActiveSeqs() > 0) { + while (seMgr_.getNumActiveSe() > 0 || seqMgr_.getNumActiveSeqs() > 0) { calc(); - if (mSeMgr.getNumActiveSe() == 0 && mSeqMgr.getNumActiveSeqs() == 0) { + if (seMgr_.getNumActiveSe() == 0 && seqMgr_.getNumActiveSeqs() == 0) { break; } mixOut(); @@ -341,28 +363,29 @@ void Z2SoundMgr::stopSync() { /* 802AA8C8-802AA908 2A5208 0040+00 1/1 0/0 0/0 .text stop__10Z2SoundMgrFv */ void Z2SoundMgr::stop() { - mSeMgr.stop(); - mSeqMgr.stop(); - mStreamMgr.stop(); + seMgr_.stop(); + seqMgr_.stop(); + streamMgr_.stop(); } /* 802AA908-802AA9E8 2A5248 00E0+00 0/0 1/1 0/0 .text initParams__10Z2SoundMgrFv */ void Z2SoundMgr::initParams() { - mSeMgr.initParams(); - mSeqMgr.getParams()->init(); - mStreamMgr.getParams()->init(); -} + JUT_ASSERT(613, ! seMgr_.isActive()); + JUT_ASSERT(614, ! seqMgr_.isActive()); + seMgr_.initParams(); + seqMgr_.getParams()->init(); + streamMgr_.getParams()->init(); +} /* 802AA9E8-802AAAC4 2A5328 00DC+00 0/0 1/1 0/0 .text * multiVolumeSoundID__10Z2SoundMgrF10JAISoundIDf */ -void Z2SoundMgr::multiVolumeSoundID(JAISoundID i_soundID, f32 i_multi) { - if (!i_soundID.isAnonymous() && Z2GetSoundInfo()->getSoundType(i_soundID) == 0) { - JSUList* list = - mSeMgr.getCategory(Z2GetSoundInfo()->getCategory(i_soundID))->getSeList(); - for (JSULink* link = list->getFirst(); link != NULL; link = link->getNext()) { - if (link->getObject()->getID() == i_soundID) { - link->getObject()->getAuxiliary().mParams.mVolume *= i_multi; +void Z2SoundMgr::multiVolumeSoundID(JAISoundID soundID, f32 volume) { + if (!soundID.isAnonymous() && Z2GetSoundInfo()->getSoundType(soundID) == 0) { + int category = Z2GetSoundInfo()->getCategory(soundID); + for (JSULink* link = seMgr_.getCategory(category)->getSeList()->getFirst(); link != NULL; link = link->getNext()) { + if (link->getObject()->getID() == soundID) { + link->getObject()->getAuxiliary().params_.mVolume *= volume; } } } @@ -370,18 +393,19 @@ void Z2SoundMgr::multiVolumeSoundID(JAISoundID i_soundID, f32 i_multi) { /* 802AAAC4-802AAB94 2A5404 00D0+00 1/1 0/0 0/0 .text isPlayingSoundID__10Z2SoundMgrF10JAISoundID */ -bool Z2SoundMgr::isPlayingSoundID(JAISoundID i_soundID) { - if (i_soundID.isAnonymous()) { +bool Z2SoundMgr::isPlayingSoundID(JAISoundID soundID) { + if (soundID.isAnonymous()) { return false; } - if (Z2GetSoundInfo()->getSoundType(i_soundID) == 0) { - JSUList* list = - mSeMgr.getCategory(Z2GetSoundInfo()->getCategory(i_soundID))->getSeList(); - for (JSULink* link = list->getFirst(); link != NULL; link = link->getNext()) { - if (link->getObject()->getID() == i_soundID) { + + if (Z2GetSoundInfo()->getSoundType(soundID) == 0) { + int category = Z2GetSoundInfo()->getCategory(soundID); + for (JSULink* link = seMgr_.getCategory(category)->getSeList()->getFirst(); link != NULL; link = link->getNext()) { + if (link->getObject()->getID() == soundID) { return true; } } } + return false; } diff --git a/src/Z2AudioLib/Z2SoundObjMgr.cpp b/src/Z2AudioLib/Z2SoundObjMgr.cpp index 7bd01335d2..6b3d29964b 100644 --- a/src/Z2AudioLib/Z2SoundObjMgr.cpp +++ b/src/Z2AudioLib/Z2SoundObjMgr.cpp @@ -1,8 +1,3 @@ -// -// Generated By: dol2asm -// Translation Unit: Z2SoundObjMgr -// - #include "Z2AudioLib/Z2SoundObjMgr.h" #include "Z2AudioLib/Z2Creature.h" #include "Z2AudioLib/Z2SeqMgr.h" @@ -11,9 +6,9 @@ #include "Z2AudioLib/Z2LinkMgr.h" /* 802BF920-802BF980 2BA260 0060+00 0/0 1/1 0/0 .text __ct__13Z2SoundObjMgrFv */ -Z2SoundObjMgr::Z2SoundObjMgr() : JASGlobalInstance(this) { - mGhostEnemyState = 0; - mTwilightBattle = 0; +Z2SoundObjMgr::Z2SoundObjMgr() : JASGlobalInstance(true) { + ghostEnemyState_ = 0; + twilightBattle_ = 0; setBattleInit(); setForceBattleArea(false, 700, 1100, 1500); } @@ -21,10 +16,10 @@ Z2SoundObjMgr::Z2SoundObjMgr() : JASGlobalInstance(this) { /* 802BF980-802BF994 2BA2C0 0014+00 1/1 3/3 3/3 .text setForceBattleArea__13Z2SoundObjMgrFbUsUsUs */ void Z2SoundObjMgr::setForceBattleArea(bool forceBattle, u16 param_1, u16 param_2, u16 param_3) { - mForceBattle = forceBattle; - mEnemyArea.field_0x2 = param_1; - mEnemyArea.field_0x4 = param_2; - mEnemyArea.field_0x6 = param_3; + forceBattle_ = forceBattle; + enemyArea_.field_0x2 = param_1; + enemyArea_.field_0x4 = param_2; + enemyArea_.field_0x6 = param_3; } /* 80455B80-80455B84 004180 0004+00 1/1 0/0 0/0 .sdata2 sAreaDefault */ @@ -45,13 +40,13 @@ static Z2EnemyArea const sAreaSmall = {true, 300, 700, 1000}; /* 80455BA8-80455BAC 0041A8 0004+00 1/1 0/0 0/0 .sdata2 sAreaSmallFloating */ static Z2EnemyArea const sAreaSmallFloating = {false, 500, 800, 1200}; -struct EnemyInfo { +struct Z2EnemyInfo { char mName[8]; Z2EnemyArea mEnemyArea; }; /* 803CAD70-803CB170 027E90 0400+00 3/3 0/0 0/0 .data mEnemyInfo */ -static EnemyInfo mEnemyInfo[64] = { +static Z2EnemyInfo mEnemyInfo[64] = { {"Dummy", sAreaDefault}, {"E_s1", {true, 700, 1200, 2000}}, {"E_yk", sAreaSmallFloating}, @@ -120,72 +115,80 @@ static EnemyInfo mEnemyInfo[64] = { /* 802BF994-802BFFEC 2BA2D4 0658+00 1/0 1/1 0/0 .text searchEnemy__13Z2SoundObjMgrFv */ void Z2SoundObjMgr::searchEnemy() { - mTwilightBattle = 0; - Z2CreatureLink* link = Z2GetLink(); - if (link == 0) { + twilightBattle_ = 0; + + if (!Z2GetLink()) { Z2GetSeqMgr()->stopBattleBgm(1, 1); return; } bool bVar7 = false; bool local_96 = false; - bool iVar8 = false; + + bool isHolyForestBgm = false; if (Z2GetSeqMgr()->getMainBgmID() == Z2BGM_HOLY_FOREST) { - iVar8 = true; + isHolyForestBgm = true; } - u8 iVar16 = 0; + + u8 subBgmType = 0; if (Z2GetSeqMgr()->getSubBgmID() == Z2BGM_HORSE_BATTLE) { - iVar16 = 1; + subBgmType = 1; } else if (Z2GetSeqMgr()->getSubBgmID() == Z2BGM_FACE_OFF_BATTLE2) { - iVar16 = 2; + subBgmType = 2; } + field_0x14 = 0; - mEnemyNumNear = 0; + enemuNumNear_ = 0; field_0x16 = 0; - mEnemyNumVeryFar = 0; + enemuNumVeryFar_ = 0; field_0x1a = false; field_0x18 = 0; - f32 dVar18 = Z2Calc::getParamByExp( + + f32 linkDistScale = Z2Calc::getParamByExp( Z2GetLink()->getMoveSpeed(), 0.0f, 100.0f, 0.3f, 1.0f, 2.5f, - Z2Calc::CURVE_SIGN_1); - f32 dVar19 = 5000.0f; + Z2Calc::CURVE_POSITIVE); + f32 veryFarDist = 5000.0f; - for (JSULink* local_8c = getFirst(); local_8c != NULL; local_8c = local_8c->getNext()) { - Z2CreatureEnemy* this_00 = local_8c->getObject(); - if (this_00 == NULL) { + for (JSULink* i = getFirst(); i != NULL; i = i->getNext()) { + Z2CreatureEnemy* enemy = i->getObject(); + if (enemy == NULL) { + JUT_WARN_DEVICE(100, 1, "%s", "[Z2SoundObjMgr::searchEnemy] remain remove enemy\n"); continue; } - if (this_00->field_0xa1 < 1) { + + if (enemy->field_0xa1 < 1) { continue; } - bool bVar6 = false; - u8 enemyId = this_00->mEnemyID; + + bool isGhostEnemy = false; + + u8 enemyId = enemy->mEnemyID; switch (enemyId) { case Z2_ENEMY_SW: - if (Z2GetSceneMgr()->getCurrentSceneNum() == 0x1c) + if (Z2GetSceneMgr()->getCurrentSceneNum() == Z2SCENE_GERUDO_DESERT) continue; break; case Z2_ENEMY_CR: - if (Z2GetSceneMgr()->getCurrentSceneNum() == 0x1e) + if (Z2GetSceneMgr()->getCurrentSceneNum() == Z2SCENE_HYRULE_FIELD) continue; break; case Z2_ENEMY_NZ: case Z2_ENEMY_PO: case Z2_ENEMY_HP: - bVar6 = true; + isGhostEnemy = true; break; case Z2_ENEMY_RDB: - if (iVar16 == 0) + if (subBgmType == 0) continue; break; case Z2_ENEMY_WB: case Z2_ENEMY_RD: - if (iVar16 != 0) + if (subBgmType != 0) continue; #if VERSION == VERSION_GCN_JPN } @@ -208,77 +211,86 @@ void Z2SoundObjMgr::searchEnemy() { #endif if (!Z2GetLink()->isRiding()) break; - if (Z2GetLink()->getMoveSpeed() <= 0x26) + if (Z2GetLink()->getMoveSpeed() <= 38) break; continue; } - Vec* iVar10 = this_00->getCurrentPos(); - if (iVar10 != NULL) { - Vec* iVar14 = Z2GetLink()->getCurrentPos(); - if (iVar14 != NULL) { - Z2EnemyArea local_88 = mEnemyInfo[enemyId].mEnemyArea; - if (mForceBattle) { - local_88 = mEnemyArea; + + Vec* enemyPos = enemy->getCurrentPos(); + if (enemyPos != NULL) { + Vec* linkPos = Z2GetLink()->getCurrentPos(); + if (linkPos != NULL) { + Z2EnemyArea enemyArea = mEnemyInfo[enemyId].mEnemyArea; + if (forceBattle_) { + enemyArea = enemyArea_; } - f32 fVar2 = 2.0f; - if (local_88.field_0x0 == true) { - fVar2 = 4.0f; + + f32 y_scale = 2.0f; + if (enemyArea.field_0x0 == true) { + y_scale = 4.0f; } - Vec local_80 = {0.0f, 0.0f, 0.0f}; - VECSubtract(iVar10, iVar14, &local_80); - local_80.y *= fVar2; - f32 dVar20 = VECMag(&local_80); - if (dVar20 < local_88.field_0x6 * dVar18) { - if (bVar6) { + + Vec enemy_linkVec = {0.0f, 0.0f, 0.0f}; + VECSubtract(enemyPos, linkPos, &enemy_linkVec); + enemy_linkVec.y *= y_scale; + + f32 enemyDist = VECMag(&enemy_linkVec); + if (enemyDist < enemyArea.field_0x6 * linkDistScale) { + if (isGhostEnemy) { field_0x1a++; - if (dVar20 < local_88.field_0x4 * dVar18) { - mGhostEnemyState |= 1; - if (mGhostEnemyState >= 0x10) { - mEnemyNumNear++; - if (dVar20 < local_88.field_0x2 * dVar18) { + if (enemyDist < enemyArea.field_0x4 * linkDistScale) { + ghostEnemyState_ |= (u8)1; + if (ghostEnemyState_ >= 16) { + enemuNumNear_++; + if (enemyDist < enemyArea.field_0x2 * linkDistScale) { field_0x14++; } } } - if (mGhostEnemyState >= 0x11) { + + if (ghostEnemyState_ >= 17) { field_0x16++; - if (this_00->mLinkSearch) { + if (enemy->mLinkSearch) { local_96 = true; } } } else { field_0x16++; if (enemyId != 0 && enemyId < 9) { - if (mTwilightBattle == 0) { - mTwilightBattle = 1; + if (twilightBattle_ == 0) { + twilightBattle_ = 1; } - if (enemyId == 0x1 || enemyId == 0x5) { - mTwilightBattle = 2; + + if (enemyId == Z2_ENEMY_S1 || enemyId == Z2_ENEMY_YC) { + twilightBattle_ = 2; } - if (enemyId == 0x8) { - mTwilightBattle = 2; + + if (enemyId == Z2_ENEMY_YMB) { + twilightBattle_ = 2; } else { - Z2GetSeqMgr()->changeSubBgmStatus(mTwilightBattle); + Z2GetSeqMgr()->changeSubBgmStatus(twilightBattle_); } } - if (enemyId != 0x2c && this_00->mLinkSearch) { + + if (enemyId != Z2_ENEMY_GB && enemy->mLinkSearch) { local_96 = true; } - if (dVar20 < local_88.field_0x4 * dVar18) - { - mEnemyNumNear++; - if (dVar20 < local_88.field_0x2 * dVar18) - { + + if (enemyDist < enemyArea.field_0x4 * linkDistScale) { + enemuNumNear_++; + if (enemyDist < enemyArea.field_0x2 * linkDistScale) { field_0x14++; } } } } - if (dVar20 < dVar19 * dVar18) { - mEnemyNumVeryFar++; + + if (enemyDist < veryFarDist * linkDistScale) { + enemuNumVeryFar_++; } - if (this_00->field_0xa3 != 0) { + + if (enemy->field_0xa3 != 0) { bVar7 = true; field_0x18++; } @@ -286,108 +298,108 @@ void Z2SoundObjMgr::searchEnemy() { } } - if (mGhostEnemyState == 0x11) { + if (ghostEnemyState_ == 17) { if (field_0x1a >= field_0x16) { Z2GetSeqMgr()->setBattleGhostMute(false); } else { Z2GetSeqMgr()->setBattleGhostMute(true); } - } else if (mGhostEnemyState < 0x20 && field_0x1a == 0x0) { + } else if (ghostEnemyState_ < 32 && field_0x1a == 0) { setGhostEnemyState(0); } - if (iVar16 == 1) { - if (field_0x14 != 0x0) { + + if (subBgmType == 1) { + if (field_0x14 != 0) { Z2GetSeqMgr()->changeSubBgmStatus(1); } else { Z2GetSeqMgr()->changeSubBgmStatus(0); } - } else if (iVar16 == 2) { - if (mEnemyNumNear != 0x0) { + } else if (subBgmType == 2) { + if (enemuNumNear_ != 0) { Z2GetSeqMgr()->changeSubBgmStatus(1); } else { Z2GetSeqMgr()->changeSubBgmStatus(0); } - } else if (iVar8) { - if (field_0x16 != 0x0) { + } else if (isHolyForestBgm) { + if (field_0x16 != 0) { Z2GetSeqMgr()->changeBgmStatus(1); } else { Z2GetSeqMgr()->changeBgmStatus(0); } } else if (!bVar7) { Z2GetSeqMgr()->setBattleSearched(local_96); - if (field_0x14 != 0x0) { + + if (field_0x14 != 0) { Z2GetSeqMgr()->setBattleDistState(0); + } else if (enemuNumNear_ != 0) { + Z2GetSeqMgr()->setBattleDistState(1); + } else if (field_0x16 != 0) { + Z2GetSeqMgr()->setBattleDistState(2); } else { - if (mEnemyNumNear != 0x0) { - Z2GetSeqMgr()->setBattleDistState(1); - } else { - if (field_0x16 != 0x0) { - Z2GetSeqMgr()->setBattleDistState(2); - } else { - Z2GetSeqMgr()->setBattleDistState(3); - } - } + Z2GetSeqMgr()->setBattleDistState(3); } } } -void Z2SoundObjMgr::setGhostEnemyState(u8 p1) { - if (p1 == 0x20) { +void Z2SoundObjMgr::setGhostEnemyState(u8 state) { + if (state == 32) { if (field_0x1a >= field_0x16) { - JASGlobalInstance::getInstance()->setBattleGhostMute(true); + Z2GetSeqMgr()->setBattleGhostMute(true); } } else { if (field_0x1a == false) { - mGhostEnemyState = 0; + ghostEnemyState_ = 0; return; } } - mGhostEnemyState = p1 + (mGhostEnemyState & 1); + ghostEnemyState_ = state + (ghostEnemyState_ & 1); } /* 802C0074-802C0100 2BA9B4 008C+00 0/0 1/1 0/0 .text * getEnemyID__13Z2SoundObjMgrFPCcP26JSULink<15Z2CreatureEnemy> */ -u8 Z2SoundObjMgr::getEnemyID(char const* param_0, JSULink* param_1) { - if (param_0 != NULL) { - for (u8 uVar2 = 0; uVar2 < ARRAY_SIZEU(mEnemyInfo); uVar2++) { - if (strcmp(param_0, mEnemyInfo[(u32)uVar2].mName) == 0) { - append(param_1); - return uVar2; +u8 Z2SoundObjMgr::getEnemyID(const char* enemyName, JSULink* enemyLink) { + if (enemyName != NULL) { + for (u8 i = 0; i < ARRAY_SIZEU(mEnemyInfo); i++) { + if (strcmp(enemyName, mEnemyInfo[(u32)i].mName) == 0) { + append(enemyLink); + return i; } } } + return Z2_ENEMY_NULL; } /* 802C0100-802C0120 2BAA40 0020+00 1/1 1/1 0/0 .text setBattleInit__13Z2SoundObjMgrFv */ void Z2SoundObjMgr::setBattleInit() { field_0x14 = 0; - mEnemyNumNear = 0; + enemuNumNear_ = 0; field_0x16 = 0; - mEnemyNumVeryFar = 0; + enemuNumVeryFar_ = 0; field_0x18 = 0; field_0x1a = false; } /* 802C0120-802C013C 2BAA60 001C+00 0/0 1/1 0/0 .text checkBattleFinish__13Z2SoundObjMgrFv */ bool Z2SoundObjMgr::checkBattleFinish() { - return mEnemyNumVeryFar - field_0x18 <= 0; + if (enemuNumVeryFar_ - field_0x18 > 0) { + return false; + } else { + return true; + } } /* 802C013C-802C0190 2BAA7C 0054+00 0/0 1/1 0/0 .text deleteEnemyAll__13Z2SoundObjMgrFv */ void Z2SoundObjMgr::deleteEnemyAll() { - JSULink* link; + JSULink* i; - // not moving the link pointer forward looks like a bug, but deleteObject() actually unlinks the - // enemy from its owning list - while (link = this->getFirst(), link != NULL) { - Z2CreatureEnemy* enemy = link->getObject(); + // not moving the pointer forward looks like a bug, but deleteObject() actually unlinks the enemy from its owning list + while (i = getFirst(), i != NULL) { + Z2CreatureEnemy* enemy = i->getObject(); if (enemy == NULL) { - // setWarningMessage_f((JUTAssertion *)0x1,(ulong)"Z2SoundObjMgr.cpp",(char - // *)0x16f,(int)&*fill*, - // "[Z2SoundObjMgr::searchEnemy] remain remove enemy\n",in_r8); + JUT_WARN_DEVICE(367, 1, "%s", "[Z2SoundObjMgr::searchEnemy] remain remove enemy\n"); } else { enemy->deleteObject(); } @@ -396,20 +408,22 @@ void Z2SoundObjMgr::deleteEnemyAll() { /* 802C0190-802C01E4 2BAAD0 0054+00 0/0 2/2 0/0 .text * removeEnemy__13Z2SoundObjMgrFP26JSULink<15Z2CreatureEnemy> */ -bool Z2SoundObjMgr::removeEnemy(JSULink* param_0) { - if (param_0 == NULL) { +bool Z2SoundObjMgr::removeEnemy(JSULink* enemyLink) { + if (enemyLink == NULL) { return false; } - Z2CreatureEnemy* enemy = param_0->getObject(); + Z2CreatureEnemy* enemy = enemyLink->getObject(); if (enemy->field_0xa3 != 0 && field_0x18 != 0) { field_0x18--; } - return remove(param_0); + + bool result = remove(enemyLink); + return result; } /* 802C01E4-802C01EC 2BAB24 0008+00 0/0 4/4 0/0 .text isTwilightBattle__13Z2SoundObjMgrFv */ u8 Z2SoundObjMgr::isTwilightBattle() { - return mTwilightBattle; + return twilightBattle_; } diff --git a/src/Z2AudioLib/Z2SoundObject.cpp b/src/Z2AudioLib/Z2SoundObject.cpp index e4422c37e5..308ef9e78e 100644 --- a/src/Z2AudioLib/Z2SoundObject.cpp +++ b/src/Z2AudioLib/Z2SoundObject.cpp @@ -1,61 +1,71 @@ -// -// Generated By: dol2asm -// Translation Unit: Z2SoundObject -// - #include "Z2AudioLib/Z2SoundObject.h" +#include "Z2AudioLib/Z2SoundObjMgr.h" #include "Z2AudioLib/Z2Calc.h" #include "Z2AudioLib/Z2SeMgr.h" #include "Z2AudioLib/Z2SoundInfo.h" #include "Z2AudioLib/Z2SoundMgr.h" #include "Z2AudioLib/Z2SoundStarter.h" +#include "Z2AudioLib/Z2SceneMgr.h" #include "Z2AudioLib/Z2Audience.h" #include "JSystem/JAudio2/JAUSoundAnimator.h" -Z2SoundObjBase::Z2SoundObjBase() { - //! @note initializer list doesn't work since fields were initialized out of - //! structure layout order, indicating original code didn't use initializer list. - mSoundPos = NULL; - mIsInitialized = false; - mSoundStarter = JASGlobalInstance::getInstance(); // sInstance +#if PLATFORM_WII || PLATFORM_SHIELD +#include "Z2AudioLib/Z2AudioCS.h" +#endif + +Z2SoundObjBase::Z2SoundObjBase() +#if VERSION == VERSION_SHIELD_DEBUG +: JSULink(this) +#endif +{ + pos_ = NULL; + alive_ = false; + soundStarter_ = Z2GetSoundStarter(); field_0x1c = 0; - field_0x1e = 0; + reverb_ = 0; } Z2SoundObjBase::~Z2SoundObjBase() { deleteObject(); } -void Z2SoundObjBase::init(Vec* pSoundPos, u8 pNumHandles) { - initHandlesPool(pNumHandles); - mSoundPos = (JGeometry::TVec3*)pSoundPos; - mIsInitialized = true; +void Z2SoundObjBase::init(Vec* posPtr, u8 handleNum) { + #if VERSION == VERSION_SHIELD_DEBUG + Z2GetSoundObjMgr()->getAllList()->append(this); + #endif + + initHandlesPool(handleNum); + pos_ = (JGeometry::TVec3*)posPtr; + alive_ = true; } /* 802BDFF8-802BE038 2B8938 0040+00 1/1 8/8 61/61 .text deleteObject__14Z2SoundObjBaseFv */ void Z2SoundObjBase::deleteObject() { + #if VERSION == VERSION_SHIELD_DEBUG + Z2GetSoundObjMgr()->getAllList()->remove(this); + #endif + dispose(); deleteHandlesPool(); } -void Z2SoundObjBase::framework(u32 p1, s8 reverb) { - if (mIsInitialized) { - field_0x1c = p1; - field_0x1e = reverb; - setPos(*mSoundPos); +void Z2SoundObjBase::framework(u32 param_0, s8 reverb) { + if (alive_) { + field_0x1c = param_0; + reverb_ = reverb; + setPos(*pos_); } } /* 802BE070-802BE104 2B89B0 0094+00 5/0 3/0 0/0 .text dispose__14Z2SoundObjBaseFv */ void Z2SoundObjBase::dispose() { JAISoundHandle* handle; - JSULink* link; - for (link = getFirst(); link != NULL; link = link->getNext()) { - handle = link->getObject(); - if (handle != NULL && (bool)*handle) { - u32 swBit = JASGlobalInstance::sInstance->getSwBit((*handle)->getID()); - if ((swBit & 0x8000) != 0) { + JSULink* i; + for (i = getFirst(); i != NULL; i = i->getNext()) { + handle = i->getObject(); + if (handle != NULL && *handle) { + if ((Z2GetSoundInfo()->getSwBit((*handle)->getID()) & 0x8000) != 0) { handle->releaseSound(); } else { (*handle)->stop(); @@ -63,84 +73,122 @@ void Z2SoundObjBase::dispose() { } } - mIsInitialized = false; + alive_ = false; } /* 802BE104-802BE144 2B8A44 0040+00 5/0 3/0 0/0 .text * stopOK__14Z2SoundObjBaseFR17Z2SoundHandlePool */ -bool Z2SoundObjBase::stopOK(Z2SoundHandlePool& pSoundHandlePool) { - return !(JASGlobalInstance::sInstance-> - getSwBit(pSoundHandlePool->getID()) & 0x8000); +bool Z2SoundObjBase::stopOK(Z2SoundHandlePool& handlePool) { + if ((Z2GetSoundInfo()->getSwBit(handlePool->getID()) & 0x8000) != 0) { + return false; + } else { + return true; + } } /* 802BE144-802BE2D4 2B8A84 0190+00 5/3 3/1 0/0 .text * startSound__14Z2SoundObjBaseF10JAISoundIDUlSc */ -Z2SoundHandlePool* Z2SoundObjBase::startSound(JAISoundID pSoundId, u32 param_1, s8 param_2) { - if (!mIsInitialized) { +Z2SoundHandlePool* Z2SoundObjBase::startSound(JAISoundID soundID, u32 mapinfo, s8 reverb) { + if (!alive_) { return NULL; } - if (JASGlobalInstance::getInstance()->isSoundCulling(pSoundId)) { + + if (Z2GetSeMgr()->isSoundCulling(soundID)) { return NULL; } - if (param_1 == 0) { - param_1 = (u32)field_0x1c; + + if (mapinfo == 0) { + mapinfo = (u32)field_0x1c; } - if (param_2 < 0) { - param_2 = field_0x1e; + + if (reverb < 0) { + reverb = reverb_; } - f32 local_0 = (f32)param_2 / 127.0f; - Z2SoundHandlePool* handle = getHandleSoundID(pSoundId); + + f32 fxMix = (f32)reverb / 127.0f; + + Z2SoundHandlePool* handle = getHandleSoundID(soundID); if (handle != NULL) { - if ((JASGlobalInstance::getInstance()->getSwBit(pSoundId) & 0x4000) != 0) { + if ((Z2GetSoundInfo()->getSwBit(soundID) & 0x4000) != 0) { handle = NULL; } else { return NULL; } } + if (handle == NULL) { handle = getFreeHandle(); } + if (handle == NULL) { - handle = getLowPrioSound(pSoundId); + handle = getLowPrioSound(soundID); } + if (handle != NULL) { - mSoundStarter->startSound(pSoundId, handle, mSoundPos, param_1, local_0, + soundStarter_->startSound(soundID, handle, pos_, mapinfo, fxMix, 1.0f, 1.0f, -1.0f, -1.0f, 0); } + return handle; } /* 802BE2D4-802BE4A4 2B8C14 01D0+00 4/2 3/0 0/0 .text * startLevelSound__14Z2SoundObjBaseF10JAISoundIDUlSc */ -Z2SoundHandlePool* Z2SoundObjBase::startLevelSound(JAISoundID pSoundId, u32 param_1, s8 param_2) { - if (!mIsInitialized) { +Z2SoundHandlePool* Z2SoundObjBase::startLevelSound(JAISoundID soundID, u32 mapinfo, s8 reverb) { + if (!alive_) { return NULL; } - if (param_1 == 0) { - param_1 = (u32)field_0x1c; + + if (mapinfo == 0) { + mapinfo = (u32)field_0x1c; } - if (param_2 < 0) { - param_2 = field_0x1e; + + if (reverb < 0) { + reverb = reverb_; } - f32 local_0 = (f32)param_2 / 127.0f; - Z2SoundHandlePool* handle = getHandleSoundID(pSoundId); + + f32 fxMix = (f32)reverb / 127.0f; + + Z2SoundHandlePool* handle = getHandleSoundID(soundID); if (handle != NULL) { - handle->getSound()->updateLifeTime(1); - mSoundStarter->setPortData(handle, 6, (u16)param_1, -1); - handle->getSound()->getAuxiliary().moveFxMix(local_0, 0); + JUT_ASSERT_MSG(218, *handle, "handle exist, but (*handle) is not exist!!\n"); + (*handle)->updateLifeTime(1); + soundStarter_->setPortData(handle, 6, (u16)mapinfo, -1); + (*handle)->getAuxiliary().moveFxMix(fxMix, 0); } else { - if (JASGlobalInstance::getInstance()->isSoundCulling(pSoundId)) { + if (Z2GetSeMgr()->isSoundCulling(soundID)) { return NULL; } + handle = getFreeHandle(); if (handle == NULL) { - handle = getLowPrioSound(pSoundId); + handle = getLowPrioSound(soundID); } + if (handle != NULL) { - mSoundStarter->startSound(pSoundId, handle, mSoundPos, param_1, local_0, + soundStarter_->startSound(soundID, handle, pos_, mapinfo, fxMix, 1.0f, 1.0f, -1.0f, -1.0f, 0); - if (handle != NULL && handle->getSound() != NULL) { - handle->getSound()->setLifeTime(1, false); + if (handle != NULL && (*handle) != NULL) { + (*handle)->setLifeTime(1, false); + + #if PLATFORM_WII || PLATFORM_SHIELD + if (Z2GetSceneMgr()->isSceneExist()) { + switch (soundID) { + case Z2SE_BOOM_POWER_RESUME: + Z2AudioCS::start(0x12, 0); + break; + case Z2SE_BOOM_TORNADO: + Z2AudioCS::start(0x13, 0); + break; + case Z2SE_AL_SPINNER_RAIL: + Z2AudioCS::start(0x3C, 0); + break; + case Z2SE_WOLFATTACK_WIND_RUSH: + Z2AudioCS::start(0x58, 0); + break; + } + } + #endif } } } @@ -149,31 +197,35 @@ Z2SoundHandlePool* Z2SoundObjBase::startLevelSound(JAISoundID pSoundId, u32 para /* 802BE4A4-802BE5A0 2B8DE4 00FC+00 0/0 5/5 21/21 .text * startCollisionSE__14Z2SoundObjBaseFUlUlP14Z2SoundObjBase */ -Z2SoundHandlePool* Z2SoundObjBase::startCollisionSE(u32 pId, u32 pUserData, Z2SoundObjBase* pOther) { - if (pOther != NULL) { - return pOther->startCollisionSE(pId, pUserData, NULL); +Z2SoundHandlePool* Z2SoundObjBase::startCollisionSE(u32 hitID, u32 mapinfo, Z2SoundObjBase* other) { + if (other != NULL) { + return other->startCollisionSE(hitID, mapinfo, NULL); } - if (53 < pUserData) { - pUserData = 0; + + if (53 < mapinfo) { + JUT_WARN_DEVICE(297, 1, "%s", "mapinfo > 53\n"); + OS_REPORT("startCollisionSE Invalid MAPINFO:%d hitID:%08x\n", mapinfo, hitID); + mapinfo = 0; } - for (JSULink* link = - Z2GetSoundMgr()->getSeMgr()->getCategory(4)->getSeList()->getFirst(); - link != NULL; link = link->getNext()) { - if (pId == link->getObject()->getID() && pUserData == link->getObject()->getUserData()) { - link->getObject()->stop(); + + for (JSULink* i = Z2GetSoundMgr()->getSeMgr()->getCategory(4)->getSeList()->getFirst(); i != NULL; i = i->getNext()) { + JAISe* se = i->getObject(); + if (hitID == se->getID() && mapinfo == se->getUserData()) { + se->stop(); } } - Z2SoundHandlePool* handle = Z2SoundObjBase::startSound(JAISoundID(pId), pUserData, -1); - if (handle != NULL && handle->getSound() != NULL) { - handle->getSound()->setUserData(pUserData); - if (30 <= pUserData && pUserData <= 52) { - Z2Audible* audible = (Z2Audible*)handle->getSound()->getAudible(); + + Z2SoundHandlePool* handle = Z2SoundObjBase::startSound(JAISoundID(hitID), mapinfo, -1); + if (handle != NULL && (*handle) != NULL) { + (*handle)->setUserData(mapinfo); + if (30 <= mapinfo && mapinfo <= 52) { + Z2Audible* audible = (Z2Audible*)(*handle)->getAudible(); if (audible != NULL) { - JAUAudibleParam* param = audible->getAudibleParam(); - param->field_0x0.bytes.b1_2_7 = 8; + audible->getAudibleParam()->field_0x0.bytes.b1_2_7 = 8; } } } + return handle; } @@ -187,106 +239,107 @@ Z2DopplerSoundObjBase::Z2DopplerSoundObjBase() : Z2SoundObjBase() { Z2DopplerSoundObjBase::~Z2DopplerSoundObjBase() {} /* 802BE65C-802BE6B8 2B8F9C 005C+00 1/0 0/0 0/0 .text init__21Z2DopplerSoundObjBaseFP3VecUc */ -void Z2DopplerSoundObjBase::init(Vec* param_0, u8 param_1) { - Z2SoundObjBase::init(param_0, param_1); - if (mSoundPos != NULL) { - // field_0x20 = *mSoundPos; - JGeometry::setTVec3f(&mSoundPos->x, &field_0x20.x); - // field_0x2c = *mSoundPos; - JGeometry::setTVec3f(&mSoundPos->x, &field_0x2c.x); +void Z2DopplerSoundObjBase::init(Vec* posPtr, u8 handleNum) { + Z2SoundObjBase::init(posPtr, handleNum); + if (pos_ != NULL) { + field_0x20 = *pos_; + field_0x2c = *pos_; } } /* 802BE6B8-802BE714 2B8FF8 005C+00 2/0 0/0 0/0 .text framework__21Z2DopplerSoundObjBaseFUlSc */ -void Z2DopplerSoundObjBase::framework(u32 param_0, s8 param_1) { - Z2SoundObjBase::framework(param_0, param_1); - if (mSoundPos != NULL) { - // field_0x20 = field_0x2c; - JGeometry::setTVec3f(&field_0x2c.x, &field_0x20.x); - // field_0x2c = *mSoundPos; - JGeometry::setTVec3f(&mSoundPos->x, &field_0x2c.x); +void Z2DopplerSoundObjBase::framework(u32 param_0, s8 reverb) { + Z2SoundObjBase::framework(param_0, reverb); + if (pos_ != NULL) { + field_0x20 = field_0x2c; + field_0x2c = *pos_; } } /* 802BE714-802BE7AC 2B9054 0098+00 2/0 0/0 0/0 .text * startSound__21Z2DopplerSoundObjBaseF10JAISoundIDUlSc */ -Z2SoundHandlePool* Z2DopplerSoundObjBase::startSound(JAISoundID pSoundId, u32 param_1, s8 param_2) { - JGeometry::TVec3* pos = mSoundPos; - mSoundPos = NULL; - Z2SoundHandlePool* handle = Z2SoundObjBase::startSound(pSoundId, param_1, param_2); - if (pos != NULL && handle != NULL && handle->getSound() != NULL) { - if (handle->getSound()->acceptsNewAudible()) { - handle->getSound()->newAudible(*pos, &field_0x20, 0, NULL); +Z2SoundHandlePool* Z2DopplerSoundObjBase::startSound(JAISoundID soundID, u32 mapinfo, s8 reverb) { + JGeometry::TVec3* pos = pos_; + pos_ = NULL; + + Z2SoundHandlePool* handle = Z2SoundObjBase::startSound(soundID, mapinfo, reverb); + if (pos != NULL && handle != NULL && (*handle) != NULL) { + if ((*handle)->acceptsNewAudible()) { + (*handle)->newAudible(*pos, &field_0x20, 0, NULL); } } - mSoundPos = pos; + + pos_ = pos; return handle; } /* 802BE7AC-802BE844 2B90EC 0098+00 2/0 0/0 0/0 .text * startLevelSound__21Z2DopplerSoundObjBaseF10JAISoundIDUlSc */ -Z2SoundHandlePool* Z2DopplerSoundObjBase::startLevelSound(JAISoundID pSoundId, - u32 param_1, s8 param_2) { - JGeometry::TVec3* pos = mSoundPos; - mSoundPos = NULL; - Z2SoundHandlePool* handle = Z2SoundObjBase::startLevelSound(pSoundId, param_1, param_2); - if (pos != NULL && handle != NULL && handle->getSound() != NULL) { - if (handle->getSound()->acceptsNewAudible()) { - handle->getSound()->newAudible(*pos, &field_0x20, 0, NULL); +Z2SoundHandlePool* Z2DopplerSoundObjBase::startLevelSound(JAISoundID soundID, u32 mapinfo, s8 reverb) { + JGeometry::TVec3* pos = pos_; + pos_ = NULL; + + Z2SoundHandlePool* handle = Z2SoundObjBase::startLevelSound(soundID, mapinfo, reverb); + if (pos != NULL && handle != NULL && (*handle) != NULL) { + if ((*handle)->acceptsNewAudible()) { + (*handle)->newAudible(*pos, &field_0x20, 0, NULL); } } - mSoundPos = pos; + + pos_ = pos; return handle; } /* 802BE844-802BE880 2B9184 003C+00 0/0 8/8 65/65 .text __ct__16Z2SoundObjSimpleFv */ Z2SoundObjSimple::Z2SoundObjSimple() : Z2SoundObjBase() {} -void Z2SoundObjSimple::init(Vec* pSoundPos, u8 pNumHandles) { - Z2SoundObjBase::init(pSoundPos, pNumHandles); +void Z2SoundObjSimple::init(Vec* posPtr, u8 handleNum) { + Z2SoundObjBase::init(posPtr, handleNum); } /* 802BE8A0-802BE9B0 2B91E0 0110+00 1/0 0/0 0/0 .text * startSound__16Z2SoundObjSimpleF10JAISoundIDUlSc */ -Z2SoundHandlePool* Z2SoundObjSimple::startSound(JAISoundID pSoundId, u32 param_1, s8 param_2) { - Z2SoundHandlePool* handle = Z2SoundObjBase::startSound(pSoundId, param_1, param_2); - if (pSoundId == 0x200c7 && handle != NULL && handle->getSound() != NULL) { - f32 local_0 = Z2Calc::getParamByExp((f32)param_1, 0.0f, 127.0f, 0.2f, 0.4f, 1.0f, - Z2Calc::CURVE_SIGN_1); - f32 local_1 = Z2Calc::getParamByExp((f32)param_1, 0.0f, 127.0f, 0.2f, 0.6f, 1.2f, - Z2Calc::CURVE_SIGN_1); - handle->getSound()->getAuxiliary().movePitch(local_1, 0); - handle->getSound()->getAuxiliary().moveVolume(local_0, 0); +Z2SoundHandlePool* Z2SoundObjSimple::startSound(JAISoundID soundID, u32 mapinfo, s8 reverb) { + Z2SoundHandlePool* handle = Z2SoundObjBase::startSound(soundID, mapinfo, reverb); + + if (soundID == Z2SE_AL_UKI_POKOPOKO && handle != NULL && (*handle) != NULL) { + f32 volume = Z2Calc::getParamByExp((f32)mapinfo, 0.0f, 127.0f, 0.2f, 0.4f, 1.0f, Z2Calc::CURVE_POSITIVE); + f32 pitch = Z2Calc::getParamByExp((f32)mapinfo, 0.0f, 127.0f, 0.2f, 0.6f, 1.2f, Z2Calc::CURVE_POSITIVE); + (*handle)->getAuxiliary().movePitch(pitch, 0); + (*handle)->getAuxiliary().moveVolume(volume, 0); } + return handle; } /* 802BE9B0-802BEB38 2B92F0 0188+00 1/0 0/0 0/0 .text * startLevelSound__16Z2SoundObjSimpleF10JAISoundIDUlSc */ -Z2SoundHandlePool* Z2SoundObjSimple::startLevelSound(JAISoundID pSoundId, u32 param_1, s8 param_2) { - Z2SoundHandlePool* handle = Z2SoundObjBase::startLevelSound(pSoundId, param_1, param_2); - if (handle != NULL && handle->getSound() != NULL) { - f32 local_0 = 1.0f; - f32 local_1 = 1.0f; - switch (pSoundId) { - case 0x200c6: - local_1 = Z2Calc::getParamByExp((f32)param_1, 0.0f, 127.0f, 0.2f, 0.4f, 1.0f, - Z2Calc::CURVE_SIGN_1); - local_0 = Z2Calc::getParamByExp((f32)param_1, 0.0f, 127.0f, 0.2f, 0.6f, 1.2f, - Z2Calc::CURVE_SIGN_1); +Z2SoundHandlePool* Z2SoundObjSimple::startLevelSound(JAISoundID soundID, u32 mapinfo, s8 reverb) { + Z2SoundHandlePool* handle = Z2SoundObjBase::startLevelSound(soundID, mapinfo, reverb); + + if (handle != NULL && (*handle) != NULL) { + f32 pitch = 1.0f; + f32 volume = 1.0f; + switch (soundID) { + case Z2SE_AL_UKI_KURUKURU_LOOP: + volume = Z2Calc::getParamByExp((f32)mapinfo, 0.0f, 127.0f, 0.2f, 0.4f, 1.0f, Z2Calc::CURVE_POSITIVE); + pitch = Z2Calc::getParamByExp((f32)mapinfo, 0.0f, 127.0f, 0.2f, 0.6f, 1.2f, Z2Calc::CURVE_POSITIVE); break; - case 0x8025c: - if (param_1 > 100) { - local_0 = 2.0f; - } else if (param_1 > 21) { - local_0 = Z2Calc::getParamByExp((f32)param_1, 22.0f, 50.0f, 0.4f, 1.0f, 1.5f, - Z2Calc::CURVE_SIGN_0); + case Z2SE_OBJ_FLR_FALLING: + if (mapinfo > 100) { + pitch = 2.0f; + } else if (mapinfo > 21) { + pitch = Z2Calc::getParamByExp((f32)mapinfo, 22.0f, 50.0f, 0.4f, 1.0f, 1.5f, Z2Calc::CURVE_NEGATIVE); + } else { + pitch = 1.0f; } break; } - handle->getSound()->getAuxiliary().movePitch(local_0, 0); - handle->getSound()->getAuxiliary().moveVolume(local_1, 0); + + (*handle)->getAuxiliary().movePitch(pitch, 0); + (*handle)->getAuxiliary().moveVolume(volume, 0); } + return handle; } @@ -294,42 +347,44 @@ Z2SoundHandlePool* Z2SoundObjSimple::startLevelSound(JAISoundID pSoundId, u32 pa Z2SoundObjArrow::Z2SoundObjArrow() : Z2DopplerSoundObjBase() {} /* 802BEB74-802BEB94 2B94B4 0020+00 1/0 0/0 0/0 .text init__15Z2SoundObjArrowFP3VecUc */ -void Z2SoundObjArrow::init(Vec* param_0, u8 param_1) { - Z2SoundObjBase::init(param_0, param_1); +void Z2SoundObjArrow::init(Vec* posPtr, u8 handleNum) { + Z2SoundObjBase::init(posPtr, handleNum); } /* 802BEB94-802BEBDC 2B94D4 0048+00 0/0 2/2 0/0 .text __ct__15Z2SoundObjAnimeFv */ Z2SoundObjAnime::Z2SoundObjAnime() : Z2SoundObjBase() { - mpAnimation = NULL; - mReverse = false; + animation_ = NULL; + reverse_ = false; } /* 802BEBDC-802BEBFC 2B951C 0020+00 1/0 1/0 0/0 .text init__15Z2SoundObjAnimeFP3VecUc */ -void Z2SoundObjAnime::init(Vec* param_0, u8 param_1) { - Z2SoundObjBase::init(param_0, param_1); +void Z2SoundObjAnime::init(Vec* posPtr, u8 handleNum) { + Z2SoundObjBase::init(posPtr, handleNum); } /* 802BEBFC-802BED68 2B953C 016C+00 0/0 2/2 0/0 .text initAnime__15Z2SoundObjAnimeFPvbff */ -void Z2SoundObjAnime::initAnime(void* param_0, bool param_1, f32 param_2, f32 param_3) { +void Z2SoundObjAnime::initAnime(void* animation, bool param_1, f32 startFrame, f32 param_3) { ageSounds_(); - mpAnimation = (JAUSoundAnimation*)param_0; - if (mpAnimation != NULL) { - mReverse = !param_1; + animation_ = (JAUSoundAnimation*)animation; + if (animation_ != NULL) { + reverse_ = !param_1; field_0x3c = 0; - if (mReverse) { - mCurSoundIndex = mpAnimation->getNumSounds() - 1; - mCurSoundFrame = FLT_MAX; - setLoopFrame(0.0f, param_2); + + if (reverse_) { + curSoundIndex_ = animation_->getNumSounds() - 1; + curSoundFrame_ = FLT_MAX; + setLoopFrame(0.0f, startFrame); } else { - mCurSoundIndex = 0; - mCurSoundFrame = 0.0f; - setLoopFrame(param_2, 0.0f); + curSoundIndex_ = 0; + curSoundFrame_ = 0.0f; + setLoopFrame(startFrame, 0.0f); } - mCurSoundFrame = param_3; - mCurSoundIndex = mpAnimation->getStartSoundIndex(param_3); - if (mReverse && mCurSoundIndex > 0) { - mCurSoundIndex--; + + curSoundFrame_ = param_3; + curSoundIndex_ = animation_->getStartSoundIndex(param_3); + if (reverse_ && curSoundIndex_ > 0) { + curSoundIndex_--; } } } @@ -337,25 +392,24 @@ void Z2SoundObjAnime::initAnime(void* param_0, bool param_1, f32 param_2, f32 pa /* 802BED68-802BEED4 2B96A8 016C+00 1/1 0/0 0/0 .text ageSounds___15Z2SoundObjAnimeFv */ void Z2SoundObjAnime::ageSounds_() { for (int i = 0; i < getNumHandles(); i++) { - if (getHandle(i)->getSound() != NULL) { - switch (getHandle(i)->getSound()->getAnimationState()) { - case 0: - break; - case 1: - if (getHandle(i)->getSound()->hasLifeTime()) { - getHandle(i)->getSound()->stop(); + if ((*getHandle(i))) { + switch ((*getHandle(i))->getAnimationState()) { + case 0: + break; + case 1: + if ((*getHandle(i))->hasLifeTime()) { + (*getHandle(i))->stop(); + } else { + JAUSoundAnimationSound* animationSound = (JAUSoundAnimationSound*)(*getHandle(i))->getUserData(); + if (animationSound->stopsWhenAnimationChanges()) { + (*getHandle(i))->stop(); } else { - JAUSoundAnimationSound* sound = - (JAUSoundAnimationSound*)getHandle(i)->getSound()->getUserData(); - if (sound->stopsWhenAnimationChanges()) { - getHandle(i)->getSound()->stop(); - } else { - getHandle(i)->getSound()->setAnimationState(2); - } + (*getHandle(i))->setAnimationState(2); } - break; - case 2: - break; + } + break; + case 2: + break; } } } @@ -365,90 +419,93 @@ void Z2SoundObjAnime::ageSounds_() { */ void Z2SoundObjAnime::updateAnime(f32 param_0, f32 param_1) { for (int i = 0; i < getNumHandles(); i++) { - if (getHandle(i)->getSound() != NULL && getHandle(i)->getSound()->isAnimated()) { - getHandle(i)->getSound()->setPos(*mSoundPos); + if ((*getHandle(i)) && (*getHandle(i))->isAnimated()) { + (*getHandle(i))->setPos(*pos_); } } - if (mpAnimation == NULL || mpAnimation->getNumSounds() == 0) { + if (animation_ == NULL || animation_->getNumSounds() == 0) { return; } - if (!mReverse) { - if (param_0 < mCurSoundFrame) { - while (mCurSoundIndex < mEndSoundIndex) { - startSoundInner(*mSoundPos, param_1, mSoundStarter, field_0x1c, field_0x1e); + if (!reverse_) { + if (param_0 < curSoundFrame_) { + while (curSoundIndex_ < endSoundIndex_) { + startSoundInner(*pos_, param_1, soundStarter_, field_0x1c, reverb_); } - mCurSoundIndex = mStartSoundIndex; - mCurSoundFrame = param_0; - if (field_0x3c < 0xffff) { + curSoundIndex_ = startSoundIndex_; + curSoundFrame_ = param_0; + if (field_0x3c < 0xFFFF) { field_0x3c++; } } + updateSoundLifeTime_(param_0, param_1); - while (mCurSoundIndex < mpAnimation->getNumSounds() && - mpAnimation->getSound(mCurSoundIndex)->isNotingOn(param_0, false)) { - startSoundInner(*mSoundPos, param_1, mSoundStarter, field_0x1c, field_0x1e); + + while (curSoundIndex_ < animation_->getNumSounds() && animation_->getSound(curSoundIndex_)->isNotingOn(param_0, false)) { + startSoundInner(*pos_, param_1, soundStarter_, field_0x1c, reverb_); } } else { - if (param_0 > mCurSoundFrame) { - while (mCurSoundIndex >= mStartSoundIndex) { - startSoundInner(*mSoundPos, param_1, mSoundStarter, field_0x1c, field_0x1e); + if (param_0 > curSoundFrame_) { + while (curSoundIndex_ >= startSoundIndex_) { + startSoundInner(*pos_, param_1, soundStarter_, field_0x1c, reverb_); } - mCurSoundIndex = mEndSoundIndex - 1; - mCurSoundFrame = param_0; - if (field_0x3c < 0xffff) { + curSoundIndex_ = endSoundIndex_ - 1; + curSoundFrame_ = param_0; + if (field_0x3c < 0xFFFF) { field_0x3c++; } } + updateSoundLifeTime_(param_0, param_1); - while (mCurSoundIndex >= 0 && - mpAnimation->getSound(mCurSoundIndex)->isNotingOn(param_0, true)) { - startSoundInner(*mSoundPos, param_1, mSoundStarter, field_0x1c, field_0x1e); + + while (curSoundIndex_ >= 0 && animation_->getSound(curSoundIndex_)->isNotingOn(param_0, true)) { + startSoundInner(*pos_, param_1, soundStarter_, field_0x1c, reverb_); } } - mCurSoundFrame = param_0; + curSoundFrame_ = param_0; } /* 802BF304-802BF660 2B9C44 035C+00 1/1 0/0 0/0 .text updateSoundLifeTime___15Z2SoundObjAnimeFff */ void Z2SoundObjAnime::updateSoundLifeTime_(f32 param_0, f32 param_1) { - if (mpAnimation == NULL) { + if (animation_ == NULL) { return; } + for (int i = 0; i < getNumHandles(); i++) { - if (getHandle(i)->getSound() != NULL) { - switch (getHandle(i)->getSound()->getAnimationState()) { - case 0: - break; - case 1: { - JAUSoundAnimationSound* sound = - (JAUSoundAnimationSound*)getHandle(i)->getSound()->getUserData(); - bool bvar1 = param_1 == 0.0f && sound->stopsWhenSpeedIsZero(); - if (sound->setsLifeTime()) { - if (bvar1) { - getHandle(i)->getSound()->pause(true); - } else { - if (sound->isNoting(param_0)) { - getHandle(i)->getSound()->updateLifeTime(1); - getHandle(i)->getSound()->pause(false); - } else { - getHandle(i)->getSound()->stop(); - } - } + if ((*getHandle(i))) { + switch ((*getHandle(i))->getAnimationState()) { + case 0: + break; + case 1: { + JAUSoundAnimationSound* animationSound = (JAUSoundAnimationSound*)(*getHandle(i))->getUserData(); + JUT_ASSERT(696, animationSound); + + bool bvar1 = param_1 == 0.0f && animationSound->stopsWhenSpeedIsZero(); + if (animationSound->setsLifeTime()) { + if (bvar1) { + (*getHandle(i))->pause(true); } else { - if (bvar1) { - getHandle(i)->getSound()->stop(); - } else if (sound->stopsWhenNoteOff() && - sound->isNotingOff(param_0, mReverse)) { - getHandle(i)->getSound()->stop(); + if (animationSound->isNoting(param_0)) { + (*getHandle(i))->updateLifeTime(1); + (*getHandle(i))->pause(false); + } else { + (*getHandle(i))->stop(); } } - break; + } else { + if (bvar1) { + (*getHandle(i))->stop(); + } else if (animationSound->stopsWhenNoteOff() && animationSound->isNotingOff(param_0, reverse_)) { + (*getHandle(i))->stop(); + } } - case 2: - break; + break; + } + case 2: + break; } } } @@ -456,38 +513,44 @@ void Z2SoundObjAnime::updateSoundLifeTime_(f32 param_0, f32 param_1) { /* 802BF660-802BF890 2B9FA0 0230+00 1/1 0/0 0/0 .text * startSoundInner__15Z2SoundObjAnimeFRCQ29JGeometry8TVec3fP14Z2SoundStarterUlSc */ -void Z2SoundObjAnime::startSoundInner(JGeometry::TVec3 const& param_0, f32 param_1, - Z2SoundStarter* param_2, u32 param_3, s8 param_4) { - const JAUSoundAnimationSound* sound = mpAnimation->getSound(mCurSoundIndex); - u32 user_data = (u32)sound; - if (mReverse) { - mCurSoundIndex--; +void Z2SoundObjAnime::startSoundInner(const JGeometry::TVec3& pos, f32 param_1, + Z2SoundStarter* soundStarter, u32 mapinfo, s8 reverb) { + JUT_ASSERT(746, curSoundIndex_ >= 0); + JUT_ASSERT(747, curSoundIndex_ < animation_->getNumSounds()); + + const JAUSoundAnimationSound* animationSound = animation_->getSound(curSoundIndex_); + u32 user_data = (u32)animationSound; + if (reverse_) { + curSoundIndex_--; } else { - mCurSoundIndex++; + curSoundIndex_++; } - if (sound->field_0x1a > 0) { - param_3 = sound->field_0x1a; + + if (animationSound->field_0x1a > 0) { + mapinfo = animationSound->field_0x1a; } - if (playsSound(sound, param_0, param_1)) { - u32 id = getSoundID(sound, param_0, param_1); + + if (playsSound(animationSound, pos, param_1)) { + u32 id = getSoundID(animationSound, pos, param_1); if (!Z2GetSeMgr()->isSoundCulling(id)) { JAISoundHandle* handle = getHandleUserData(user_data); - if (handle != NULL && handle->getSound() != NULL && - handle->getSound()->getAnimationState() != 1) { + if (handle != NULL && (*handle) != NULL && (*handle)->getAnimationState() != 1) { handle = NULL; } + if (handle == NULL) { handle = getFreeHandle(); } + if (handle != NULL) { - param_2->startSound(id, handle, ¶m_0, param_3, (f32)param_4 / 127.0f, - sound->field_0x0c, (f32)sound->field_0x14 / 127.0f, - -1.0f, -1.0f, 0); - if (handle->getSound() != NULL) { - handle->getSound()->setAnimationState(1); - handle->getSound()->setUserData(user_data); - if (sound->setsLifeTime()) { - handle->getSound()->setLifeTime(1, false); + bool result = soundStarter->startSound(id, handle, &pos, mapinfo, (f32)reverb / 127.0f, + animationSound->field_0x0c, (f32)animationSound->field_0x14 / 127.0f, + -1.0f, -1.0f, 0); + if ((*handle) != NULL) { + (*handle)->setAnimationState(1); + (*handle)->setUserData(user_data); + if (animationSound->setsLifeTime()) { + (*handle)->setLifeTime(1, false); } } } @@ -497,32 +560,34 @@ void Z2SoundObjAnime::startSoundInner(JGeometry::TVec3 const& param_0, f32 /* 802BF890-802BF898 2BA1D0 0008+00 1/1 0/0 0/0 .text * getSoundID__15Z2SoundObjAnimeFPC22JAUSoundAnimationSoundRCQ29JGeometry8TVec3f */ -u32 Z2SoundObjAnime::getSoundID(JAUSoundAnimationSound const* i_sound, - JGeometry::TVec3 const& param_1, f32 param_2) { - return i_sound->mSoundId; +u32 Z2SoundObjAnime::getSoundID(const JAUSoundAnimationSound* animationSound, + const JGeometry::TVec3& param_1, f32 param_2) { + return animationSound->mSoundId; } /* 802BF898-802BF920 2BA1D8 0088+00 1/1 0/0 0/0 .text * playsSound__15Z2SoundObjAnimeFPC22JAUSoundAnimationSoundRCQ29JGeometry8TVec3f */ -bool Z2SoundObjAnime::playsSound(JAUSoundAnimationSound const* i_sound, - JGeometry::TVec3 const& param_1, f32 param_2) { - if (i_sound->playsOnlyOnce()) { - if (field_0x3c != i_sound->field_0x16) { +bool Z2SoundObjAnime::playsSound(const JAUSoundAnimationSound* animationSound, + const JGeometry::TVec3& param_1, f32 param_2) { + (void)param_1; + (void)param_2; + + if (animationSound->playsOnlyOnce()) { + if (field_0x3c != animationSound->field_0x16) { return false; } } else { - if (i_sound->playsAtIntervals() && - i_sound->field_0x16 != field_0x3c % i_sound->field_0x19) { + if (animationSound->playsAtIntervals() && animationSound->field_0x16 != field_0x3c % animationSound->field_0x19) { return false; } } - if (mReverse) { - if (i_sound->playsOnlyForward()) { + if (reverse_) { + if (animationSound->playsOnlyForward()) { return false; } } else { - if (i_sound->playsOnlyReverse()) { + if (animationSound->playsOnlyReverse()) { return false; } } diff --git a/src/Z2AudioLib/Z2SoundStarter.cpp b/src/Z2AudioLib/Z2SoundStarter.cpp index 968248ab6a..fa8ca55990 100644 --- a/src/Z2AudioLib/Z2SoundStarter.cpp +++ b/src/Z2AudioLib/Z2SoundStarter.cpp @@ -1,110 +1,109 @@ -// -// Z2SoundStarter -// - #include "Z2AudioLib/Z2SoundStarter.h" #include "Z2AudioLib/Z2EnvSeMgr.h" #include "Z2AudioLib/Z2AudioMgr.h" /* 802AAB94-802AABF4 2A54D4 0060+00 0/0 4/4 0/0 .text __ct__14Z2SoundStarterFb */ -Z2SoundStarter::Z2SoundStarter(bool param_0) : JAISoundStarter(param_0), JASGlobalInstance(param_0) { -} +Z2SoundStarter::Z2SoundStarter(bool setInstance) : + JAISoundStarter(setInstance), JASGlobalInstance(setInstance) {} /* 802AABF4-802AAC3C 2A5534 0048+00 1/0 5/0 0/0 .text * startSound__14Z2SoundStarterF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3 */ -bool Z2SoundStarter::startSound(JAISoundID i_soundID, JAISoundHandle* i_handlePtr, - JGeometry::TVec3 const* i_pos) { - return Z2SoundStarter::startSound(i_soundID, i_handlePtr, i_pos, - 0, 0.0f, 1.0f, 1.0f, -1.0f, -1.0f, 0); +bool Z2SoundStarter::startSound(JAISoundID soundID, JAISoundHandle* handlePtr, const JGeometry::TVec3* posPtr) { + return Z2SoundStarter::startSound(soundID, handlePtr, posPtr, 0, 0.0f, 1.0f, 1.0f, -1.0f, -1.0f, 0); } /* 802AAC3C-802AAEDC 2A557C 02A0+00 2/1 2/2 0/0 .text * startSound__14Z2SoundStarterF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3UlfffffUl */ -bool Z2SoundStarter::startSound(JAISoundID i_soundID, JAISoundHandle* handlePtr, - JGeometry::TVec3 const* i_pos, u32 param_4, f32 i_fxMix, - f32 i_pitch, f32 i_volume, f32 i_pan, f32 i_dolby, u32 i_count) { +bool Z2SoundStarter::startSound(JAISoundID soundID, JAISoundHandle* handlePtr, + const JGeometry::TVec3* posPtr, u32 mapinfo, f32 fxMix, + f32 pitch, f32 volume, f32 pan, f32 dolby, u32 moveSteps) { JUT_ASSERT(45, handlePtr); - if (param_4 == 6) { - switch (i_soundID) { + if (mapinfo == 6) { + switch (soundID) { case Z2SE_CM_BODYFALL_S: - i_soundID = Z2SE_CM_BODYFALL_ASASE_S; + soundID = Z2SE_CM_BODYFALL_ASASE_S; break; case Z2SE_CM_BODYFALL_M: - i_soundID = Z2SE_CM_BODYFALL_ASASE_M; + soundID = Z2SE_CM_BODYFALL_ASASE_M; break; case Z2SE_CM_BODYFALL_L: - i_soundID = Z2SE_CM_BODYFALL_ASASE_L; + soundID = Z2SE_CM_BODYFALL_ASASE_L; break; } } - if (i_soundID.mId.mBytes.b1 != 0 && i_soundID.mId.mBytes.b1 != 9) { + + if (soundID.id_.info.type.parts.groupID != 0 && soundID.id_.info.type.parts.groupID != 9) { if (Z2GetSceneMgr()->isInDarkness()) { - i_fxMix = 1.0f; + fxMix = 1.0f; } else { - f32 ratio = Z2GetStatusMgr()->getCameraInWaterDepthRatio(); - f32 uStack_8c = ratio > 0.0f; - if (uStack_8c) { - i_fxMix = uStack_8c; + f32 inWaterMix = Z2GetStatusMgr()->getCameraInWaterDepthRatio() > 0.0f; + if (inWaterMix) { + fxMix = inWaterMix; } else { - i_fxMix += 0.5f * Z2GetEnvSeMgr()->getFogDensity(); - if (i_fxMix > 1.0f) { - i_fxMix = 1.0f; + fxMix += 0.5f * Z2GetEnvSeMgr()->getFogDensity(); + if (fxMix > 1.0f) { + fxMix = 1.0f; } } } } - bool startSoundRes = Z2GetAudioMgr()->startSound(i_soundID, handlePtr, i_pos); + + bool startSoundRes = Z2GetAudioMgr()->startSound(soundID, handlePtr, posPtr); if (*handlePtr) { - if (param_4 != 0) { - setPortData(handlePtr, 6, param_4, -1); + if (mapinfo != 0) { + setPortData(handlePtr, 6, mapinfo, -1); } - if (i_fxMix > 0.0f) { - (*handlePtr)->getAuxiliary().moveFxMix(i_fxMix, i_count); + if (fxMix > 0.0f) { + (*handlePtr)->getAuxiliary().moveFxMix(fxMix, moveSteps); } - if (i_pitch != 1.0f) { - (*handlePtr)->getAuxiliary().movePitch(i_pitch, i_count); + if (pitch != 1.0f) { + (*handlePtr)->getAuxiliary().movePitch(pitch, moveSteps); } - if (i_volume != 1.0f) { - (*handlePtr)->getAuxiliary().moveVolume(i_volume, i_count); + if (volume != 1.0f) { + (*handlePtr)->getAuxiliary().moveVolume(volume, moveSteps); } - if (i_pan != -1.0f) { - (*handlePtr)->getAuxiliary().movePan(i_pan, i_count); + if (pan != -1.0f) { + (*handlePtr)->getAuxiliary().movePan(pan, moveSteps); } - if (i_dolby != -1.0f) { - (*handlePtr)->getAuxiliary().moveDolby(i_dolby, i_count); + if (dolby != -1.0f) { + (*handlePtr)->getAuxiliary().moveDolby(dolby, moveSteps); } } + return startSoundRes; } /* 802AAEDC-802AAF74 2A581C 0098+00 1/1 10/10 0/0 .text * setPortData__14Z2SoundStarterFP14JAISoundHandleUlUsSc */ -void Z2SoundStarter::setPortData(JAISoundHandle* param_1, u32 param_2, u16 param_3, s8 param_4) { - if (param_1 != NULL && *param_1) { - JASTrack* track = param_1->getSound()->getTrack(); - if (param_4 != -1) { - if (track->getChild(param_4) == NULL) { - track->openChild(param_4); +void Z2SoundStarter::setPortData(JAISoundHandle* handlePtr, u32 portNum, u16 data, s8 childIndex) { + if (handlePtr != NULL && *handlePtr) { + JASTrack* track = handlePtr->getSound()->getTrack(); + if (childIndex != -1) { + if (track->getChild(childIndex) == NULL) { + track->openChild(childIndex); } - track = track->getChild(param_4); + track = track->getChild(childIndex); } + JUT_ASSERT(122, track); - track->writePort(param_2, param_3); + track->writePort(portNum, data); } } /* 802AAF74-802AAFF0 2A58B4 007C+00 0/0 1/1 0/0 .text * getPortData__14Z2SoundStarterFP14JAISoundHandleUlSc */ -u16 Z2SoundStarter::getPortData(JAISoundHandle* param_1, u32 param_2, s8 param_3) { - if (param_1 != NULL && *param_1) { - JASTrack* track; - if (param_3 == -1) { - track = param_1->getSound()->getTrack(); +u16 Z2SoundStarter::getPortData(JAISoundHandle* handlePtr, u32 portNum, s8 childIndex) { + if (handlePtr != NULL && *handlePtr) { + JASTrack* track = NULL; + if (childIndex == -1) { + track = handlePtr->getSound()->getTrack(); } else { - track = param_1->getSound()->getChildTrack(param_3); + track = handlePtr->getSound()->getChildTrack(childIndex); } + JUT_ASSERT(140, track); - return track->readPort(param_2); + return track->readPort(portNum); } + return 0; -} \ No newline at end of file +} diff --git a/src/Z2AudioLib/Z2SpeechMgr2.cpp b/src/Z2AudioLib/Z2SpeechMgr2.cpp index a54db697bc..416651a221 100644 --- a/src/Z2AudioLib/Z2SpeechMgr2.cpp +++ b/src/Z2AudioLib/Z2SpeechMgr2.cpp @@ -1,7 +1,3 @@ -// -// Z2SpeechMgr2 -// - #include "Z2AudioLib/Z2SpeechMgr2.h" #include "Z2AudioLib/Z2AudioMgr.h" #include "Z2AudioLib/Z2EnvSeMgr.h" @@ -9,56 +5,76 @@ #include "Z2AudioLib/Z2SeMgr.h" #include "JSystem/JMath/JMath.h" -typedef struct { - const u8* field_0x0; - const u8* field_0x4; - u8 field_0x8; - u8 field_0x9; - u8 field_0xa; - u8 field_0xb; - -} sPrmStruct; - struct Z2MdnPrm { - static u8 const sReply[100]; + struct Unit { + u8 start; + u8 end; + }; + + struct Prm { + const Unit* main; + const u8* tail; + u8 mainNum; + u8 tailNum1; + u8 tailNum2; + }; + + static Unit const sReply[50]; static u8 const sReplyTail[10]; - static u8 const sJoke[100]; + + static Unit const sJoke[50]; static u8 const sJokeTail[10]; - static u8 const sSexy[100]; + + static Unit const sSexy[50]; static u8 const sSexyTail[10]; - static u8 const sRidicule[100]; + + static Unit const sRidicule[50]; static u8 const sRidiculeTail[10]; - static u8 const sBoring[108]; - static u8 const sIrritated[94]; - static u8 const sIrritatedTail[10]; - static u8 const sOrder[114]; - static u8 const sResent[106]; - static u8 const sCheerful[106]; - static u8 const sConfused[106]; - static u8 const sHostility[104]; - static u8 const sTired[106]; - static u8 const sSerious[106]; - static u8 const sReplyb[84]; - static u8 const sApologize[100]; - static u8 const sApologizeTail[9]; - static u8 const sDeside[100]; - static u8 const sAfford[104]; - static u8 const sAffordTail[12]; - static sPrmStruct const sPrm[17]; + + static Unit const sBoring[54]; static u8 const sBoringTail[6]; + + static Unit const sIrritated[47]; + static u8 const sIrritatedTail[10]; + + static Unit const sOrder[57]; static u8 const sOrderTail[6]; + + static Unit const sResent[53]; static u8 const sResentTail[5]; + + static Unit const sCheerful[53]; static u8 const sCheerfulTail[8]; + + static Unit const sConfused[53]; static u8 const sConfusedTail[5]; + + static Unit const sHostility[52]; static u8 const sHostilityTail[7]; + + static Unit const sTired[53]; static u8 const sTiredTail[8]; + + static Unit const sSerious[53]; static u8 const sSeriousTail[7]; + + static Unit const sReplyb[42]; static u8 const sReplybTail[7]; + + static Unit const sApologize[50]; + static u8 const sApologizeTail[9]; + + static Unit const sDeside[50]; static u8 const sDesideTail[8]; + + static Unit const sAfford[52]; + static u8 const sAffordTail[12]; + + static Prm const sPrm[17]; }; /* 8039C260-8039C2C4 0288C0 0064+00 1/0 0/0 0/0 .rodata sReply__8Z2MdnPrm */ -u8 const Z2MdnPrm::sReply[100] = { +Z2MdnPrm::Unit const Z2MdnPrm::sReply[50] = { 0x6A, 0x8A, 0x50, 0x5F, 0x53, 0x37, 0x37, 0x4F, 0x4F, 0x5E, 0xAA, 0x46, 0x52, 0x5A, 0x5A, 0x4F, 0x4F, 0x45, 0x45, 0x56, 0x64, 0x79, 0x79, 0x79, 0x87, 0x95, 0x95, 0x89, 0x89, 0x4C, 0x4C, 0x4B, 0x52, 0x41, 0x41, 0x5B, 0x5F, 0x71, 0x53, 0x47, 0x89, 0x7D, 0x77, 0x88, 0x88, @@ -74,7 +90,7 @@ u8 const Z2MdnPrm::sReplyTail[10] = { }; /* 8039C2D0-8039C334 028930 0064+00 1/0 0/0 0/0 .rodata sJoke__8Z2MdnPrm */ -u8 const Z2MdnPrm::sJoke[100] = { +Z2MdnPrm::Unit const Z2MdnPrm::sJoke[50] = { 0x68, 0x57, 0x57, 0x55, 0x55, 0x51, 0x5B, 0x64, 0x6B, 0x7B, 0x7B, 0x5C, 0x77, 0x97, 0x8D, 0x97, 0x97, 0x8D, 0x66, 0x69, 0xA2, 0x5C, 0x87, 0x4F, 0x69, 0x5F, 0x5F, 0x83, 0x83, 0x82, 0x7F, 0x96, 0x96, 0xB0, 0x70, 0xA1, 0x6D, 0x6D, 0x6D, 0x59, 0x4C, 0x4B, 0x5A, 0x40, 0x4A, @@ -83,13 +99,14 @@ u8 const Z2MdnPrm::sJoke[100] = { 0x64, 0x60, 0xB1, 0x6C, 0x6D, 0x6D, 0x7E, 0x7A, 0x97, 0x97, 0x99, 0xA5, 0x89, 0x90, 0xA4, 0x45, 0x45, 0x29, 0x4C, 0x4B, 0x64, 0x64, 0x60, 0x5C, 0xB1, }; + /* 8039C334-8039C340 028994 000A+02 1/0 0/0 0/0 .rodata sJokeTail__8Z2MdnPrm */ u8 const Z2MdnPrm::sJokeTail[10] = { 0x51, 0x97, 0x60, 0xB0, 0x6F, 0x5E, 0x5A, 0xA6, 0x4F, 0x4F, }; /* 8039C340-8039C3A4 0289A0 0064+00 1/0 0/0 0/0 .rodata sSexy__8Z2MdnPrm */ -u8 const Z2MdnPrm::sSexy[100] = { +Z2MdnPrm::Unit const Z2MdnPrm::sSexy[50] = { 0x5E, 0x60, 0x5F, 0x63, 0x63, 0x72, 0x72, 0x78, 0x4D, 0x7A, 0x6E, 0x6E, 0x6E, 0x6E, 0x6E, 0x59, 0x59, 0x7A, 0x7A, 0xA5, 0x90, 0x8D, 0x86, 0x62, 0x72, 0x79, 0x79, 0x86, 0x7F, 0x8B, 0x85, 0x7B, 0x7B, 0x5E, 0x5E, 0x6D, 0x6D, 0x88, 0x5F, 0xA3, 0xA3, 0x95, 0x95, 0x7F, 0x79, @@ -105,7 +122,7 @@ u8 const Z2MdnPrm::sSexyTail[10] = { }; /* 8039C3B0-8039C414 028A10 0064+00 1/0 0/0 0/0 .rodata sRidicule__8Z2MdnPrm */ -u8 const Z2MdnPrm::sRidicule[100] = { +Z2MdnPrm::Unit const Z2MdnPrm::sRidicule[50] = { 0xA7, 0x5A, 0x5A, 0x52, 0x52, 0x85, 0x85, 0x8C, 0x63, 0x73, 0x73, 0x90, 0x50, 0x46, 0x74, 0x74, 0xA3, 0xA7, 0x41, 0x51, 0x58, 0x34, 0x34, 0x2A, 0x5A, 0x81, 0x5D, 0x42, 0x4B, 0x70, 0x70, 0xB1, 0xB1, 0xB1, 0xB1, 0x65, 0x6A, 0xB1, 0x54, 0xA8, 0xA8, 0x6B, 0x6C, 0x55, 0x55, @@ -121,7 +138,7 @@ u8 const Z2MdnPrm::sRidiculeTail[10] = { }; /* 8039C420-8039C48C 028A80 006C+00 1/0 0/0 0/0 .rodata sBoring__8Z2MdnPrm */ -u8 const Z2MdnPrm::sBoring[108] = { +Z2MdnPrm::Unit const Z2MdnPrm::sBoring[54] = { 0x8E, 0x9C, 0x9C, 0x5A, 0x5A, 0x52, 0x52, 0x5B, 0x5C, 0x56, 0x5C, 0x52, 0x52, 0x2D, 0x2D, 0x5B, 0x59, 0x56, 0x56, 0x56, 0x56, 0x6B, 0x6B, 0x58, 0x4C, 0x8E, 0x8E, 0x59, 0x61, 0x54, 0xA0, 0x4D, 0x5D, 0x59, 0x48, 0x30, 0x30, 0x5B, 0x5B, 0x5B, 0x4A, 0x64, 0x64, 0x7A, 0x7A, 0x92, 0x62, 0x62, @@ -137,7 +154,7 @@ u8 const Z2MdnPrm::sBoringTail[6] = { }; /* 8039C48C-8039C4EC 028AEC 005E+02 1/0 0/0 0/0 .rodata sIrritated__8Z2MdnPrm */ -u8 const Z2MdnPrm::sIrritated[94] = { +Z2MdnPrm::Unit const Z2MdnPrm::sIrritated[47] = { 0x6C, 0x91, 0x67, 0x8B, 0x8B, 0xA2, 0xA2, 0xAB, 0x48, 0x64, 0x73, 0x61, 0x61, 0x64, 0x64, 0x6D, 0x60, 0x7E, 0x4A, 0x55, 0x6A, 0x63, 0x66, 0x78, 0x5C, 0x5A, 0x6E, 0x79, 0x75, 0x62, 0x62, 0x57, 0x85, 0x3F, 0x3C, 0x83, 0x83, 0x9B, 0x78, 0x65, 0x65, 0x67, 0x65, 0x65, 0x87, 0x88, 0x88, 0x3D, @@ -152,7 +169,7 @@ u8 const Z2MdnPrm::sIrritatedTail[10] = { }; /* 8039C4F8-8039C56C 028B58 0072+02 1/0 0/0 0/0 .rodata sOrder__8Z2MdnPrm */ -u8 const Z2MdnPrm::sOrder[114] = { +Z2MdnPrm::Unit const Z2MdnPrm::sOrder[57] = { 0x77, 0x5F, 0x5F, 0x73, 0x73, 0x66, 0x66, 0x6B, 0x6B, 0x7A, 0x7A, 0x60, 0x54, 0x5F, 0x5F, 0x69, 0x69, 0x5A, 0x86, 0x84, 0x84, 0x96, 0x96, 0x94, 0x94, 0x8A, 0x87, 0x84, 0x5A, 0x2C, 0x4E, 0x52, 0x52, 0x52, 0x52, 0x51, 0x51, 0x6E, 0x62, 0x5E, 0x6C, 0xA3, 0xA3, 0x5B, 0x62, @@ -169,7 +186,7 @@ u8 const Z2MdnPrm::sOrderTail[6] = { }; /* 8039C56C-8039C5D8 028BCC 006A+02 1/0 0/0 0/0 .rodata sResent__8Z2MdnPrm */ -u8 const Z2MdnPrm::sResent[106] = { +Z2MdnPrm::Unit const Z2MdnPrm::sResent[53] = { 0x6F, 0x5F, 0x5F, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55, 0x4B, 0x4B, 0x6B, 0x6B, 0x86, 0x86, 0x4A, 0x4A, 0x6D, 0x6D, 0x6D, 0x6D, 0x8C, 0x8C, 0x84, 0x84, 0x64, 0x64, 0x6C, 0x6C, 0x92, 0x92, 0x6A, 0x5F, 0x6F, 0x6F, 0x62, 0x62, 0x62, 0x75, 0x5A, 0x5A, 0x5A, 0x5A, 0x60, 0x60, 0x6A, @@ -185,7 +202,7 @@ u8 const Z2MdnPrm::sResentTail[5] = { }; /* 8039C5D8-8039C644 028C38 006A+02 1/0 0/0 0/0 .rodata sCheerful__8Z2MdnPrm */ -u8 const Z2MdnPrm::sCheerful[106] = { +Z2MdnPrm::Unit const Z2MdnPrm::sCheerful[53] = { 0x64, 0x6D, 0x6D, 0x6D, 0x99, 0x6D, 0x40, 0x51, 0x51, 0x6F, 0x6F, 0x66, 0x66, 0x60, 0xA7, 0xAF, 0xB3, 0x61, 0x61, 0xA7, 0xA7, 0x5E, 0x8B, 0x75, 0x77, 0x72, 0x72, 0x93, 0x93, 0x8B, 0x8B, 0x88, 0x88, 0x77, 0x77, 0x80, 0x80, 0x80, 0x80, 0x67, 0x67, 0x4D, 0x4A, 0x69, 0x44, 0xA1, 0x64, 0xA8, @@ -201,7 +218,7 @@ u8 const Z2MdnPrm::sCheerfulTail[8] = { }; /* 8039C644-8039C6B0 028CA4 006A+02 1/0 0/0 0/0 .rodata sConfused__8Z2MdnPrm */ -u8 const Z2MdnPrm::sConfused[106] = { +Z2MdnPrm::Unit const Z2MdnPrm::sConfused[53] = { 0x83, 0x80, 0x80, 0x82, 0x82, 0x82, 0x82, 0x5B, 0x75, 0x84, 0x84, 0x84, 0x84, 0x75, 0x75, 0x62, 0x62, 0x62, 0x4D, 0x56, 0x56, 0x59, 0x59, 0x59, 0x59, 0x74, 0x74, 0x85, 0x7D, 0x8D, 0x8D, 0x70, 0x70, 0x5A, 0x5A, 0x6B, 0x6B, 0x6B, 0x6B, 0x70, 0x79, 0x73, 0x73, 0x71, 0x71, 0x75, 0x75, 0x7B, @@ -217,7 +234,7 @@ u8 const Z2MdnPrm::sConfusedTail[5] = { }; /* 8039C6B0-8039C718 028D10 0068+00 1/0 0/0 0/0 .rodata sHostility__8Z2MdnPrm */ -u8 const Z2MdnPrm::sHostility[104] = { +Z2MdnPrm::Unit const Z2MdnPrm::sHostility[52] = { 0x85, 0x71, 0x71, 0x73, 0x73, 0x3B, 0x62, 0x84, 0x94, 0x94, 0x94, 0xAF, 0x98, 0xAD, 0xAD, 0x5A, 0x5A, 0x63, 0x63, 0x97, 0x90, 0x90, 0x7B, 0x73, 0x73, 0x63, 0x63, 0x55, 0x55, 0x65, 0x66, 0x7F, 0x7F, 0x87, 0x87, 0x8A, 0x8A, 0x94, 0x5D, 0x5C, 0x5A, 0x67, 0x67, 0x68, 0x68, @@ -233,7 +250,7 @@ u8 const Z2MdnPrm::sHostilityTail[7] = { }; /* 8039C718-8039C784 028D78 006A+02 1/0 0/0 0/0 .rodata sTired__8Z2MdnPrm */ -u8 const Z2MdnPrm::sTired[106] = { +Z2MdnPrm::Unit const Z2MdnPrm::sTired[53] = { 0x70, 0x70, 0x70, 0x5C, 0x5C, 0x5C, 0x6F, 0x6F, 0x6F, 0x93, 0x8C, 0x9A, 0x9D, 0x89, 0x99, 0x7A, 0x91, 0x8D, 0x8D, 0x8D, 0x8D, 0x69, 0x69, 0x72, 0x72, 0x65, 0x65, 0x65, 0x9E, 0x98, 0x98, 0x2A, 0x50, 0x54, 0x54, 0x49, 0x64, 0x59, 0x59, 0x62, 0x62, 0x62, 0x44, 0x5E, 0x9F, 0x91, 0x63, 0x63, @@ -249,7 +266,7 @@ u8 const Z2MdnPrm::sTiredTail[8] = { }; /* 8039C784-8039C7F0 028DE4 006A+02 1/0 0/0 0/0 .rodata sSerious__8Z2MdnPrm */ -u8 const Z2MdnPrm::sSerious[106] = { +Z2MdnPrm::Unit const Z2MdnPrm::sSerious[53] = { 0x52, 0x65, 0x65, 0x72, 0x5A, 0x61, 0x61, 0x7B, 0x80, 0x92, 0x93, 0x9D, 0x9D, 0x70, 0x79, 0x76, 0x62, 0x57, 0x5A, 0x53, 0x53, 0x59, 0x59, 0x65, 0x63, 0x60, 0x60, 0x6A, 0x83, 0x80, 0x7F, 0x5D, 0x5C, 0x45, 0x5D, 0x71, 0x72, 0x65, 0x65, 0x65, 0x66, 0x4B, 0xB2, 0x60, 0x5C, 0x5C, 0x5C, 0x5B, @@ -265,7 +282,7 @@ u8 const Z2MdnPrm::sSeriousTail[7] = { }; /* 8039C7F0-8039C844 028E50 0054+00 1/0 0/0 0/0 .rodata sReplyb__8Z2MdnPrm */ -u8 const Z2MdnPrm::sReplyb[84] = { +Z2MdnPrm::Unit const Z2MdnPrm::sReplyb[42] = { 0x5C, 0x45, 0x45, 0x71, 0x9F, 0x57, 0xB4, 0xB4, 0x56, 0x62, 0x8E, 0x61, 0x61, 0xB0, 0xB0, 0x3C, 0x59, 0x4A, 0x64, 0xA4, 0xA4, 0x5A, 0x5A, 0x5A, 0x5A, 0x72, 0x72, 0x4B, 0x6B, 0x97, 0x97, 0x59, 0x60, 0x60, 0x60, 0x69, 0x3E, 0x3E, 0x57, 0x42, 0x5E, 0x76, @@ -280,7 +297,7 @@ u8 const Z2MdnPrm::sReplybTail[7] = { }; /* 8039C844-8039C8A8 028EA4 0064+00 1/0 0/0 0/0 .rodata sApologize__8Z2MdnPrm */ -u8 const Z2MdnPrm::sApologize[100] = { +Z2MdnPrm::Unit const Z2MdnPrm::sApologize[50] = { 0x6A, 0x6A, 0x6A, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x57, 0x57, 0x57, 0x63, 0x61, 0x54, 0x54, 0x54, 0x54, 0x58, 0x58, 0x58, 0x58, 0x45, 0x45, 0x56, 0x56, 0x5B, 0x5B, 0x37, 0x53, 0x53, 0x53, 0x59, 0x59, 0x59, 0x49, 0x58, 0x58, 0x55, 0x56, 0x56, 0x83, 0x7F, 0x7F, @@ -296,7 +313,7 @@ u8 const Z2MdnPrm::sApologizeTail[9] = { }; /* 8039C8B4-8039C918 028F14 0064+00 1/0 0/0 0/0 .rodata sDeside__8Z2MdnPrm */ -u8 const Z2MdnPrm::sDeside[100] = { +Z2MdnPrm::Unit const Z2MdnPrm::sDeside[50] = { 0x77, 0x77, 0x77, 0x58, 0x58, 0x6F, 0x78, 0x5F, 0x66, 0x5E, 0x6E, 0x62, 0x62, 0x2E, 0x5A, 0x58, 0x54, 0x52, 0x52, 0x5C, 0x59, 0x56, 0x56, 0x4B, 0x4B, 0x63, 0x63, 0x4D, 0x4E, 0x4A, 0x69, 0x71, 0x71, 0x76, 0x80, 0x80, 0x80, 0x73, 0x73, 0x5C, 0x7C, 0x64, 0x83, 0x89, 0x89, @@ -312,7 +329,7 @@ u8 const Z2MdnPrm::sDesideTail[8] = { }; /* 8039C918-8039C980 028F78 0068+00 1/0 0/0 0/0 .rodata sAfford__8Z2MdnPrm */ -u8 const Z2MdnPrm::sAfford[104] = { +Z2MdnPrm::Unit const Z2MdnPrm::sAfford[52] = { 0x4E, 0x45, 0x52, 0x5B, 0x56, 0x5B, 0x59, 0x52, 0x52, 0x57, 0x5C, 0x50, 0x50, 0x49, 0x80, 0x6E, 0x6E, 0x5A, 0x5C, 0x60, 0x6A, 0x62, 0x62, 0x6A, 0x71, 0x48, 0x4C, 0x5B, 0x5A, 0x40, 0x40, 0x49, 0x49, 0x50, 0x51, 0x51, 0x51, 0x3A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x57, 0x57, @@ -328,24 +345,24 @@ u8 const Z2MdnPrm::sAffordTail[12] = { }; /* 8039C98C-8039CA58 -00001 00CC+00 2/2 0/0 0/0 .rodata sPrm__8Z2MdnPrm */ -sPrmStruct const Z2MdnPrm::sPrm[17] = { - { Z2MdnPrm::sReply, Z2MdnPrm::sReplyTail, 0x32, 0x06, 0x04, 0x00}, - { Z2MdnPrm::sJoke, Z2MdnPrm::sJokeTail, 0x32, 0x03, 0x07, 0x00}, - { Z2MdnPrm::sSexy, Z2MdnPrm::sSexyTail, 0x32, 0x03, 0x07, 0x00}, - { Z2MdnPrm::sRidicule, Z2MdnPrm::sRidiculeTail, 0x32, 0x03, 0x07, 0x00}, - { Z2MdnPrm::sBoring, Z2MdnPrm::sBoringTail, 0x36, 0x01, 0x05, 0x00}, - { Z2MdnPrm::sIrritated, Z2MdnPrm::sIrritatedTail, 0x2F, 0x03, 0x07, 0x00}, - { Z2MdnPrm::sOrder, Z2MdnPrm::sOrderTail, 0x39, 0x02, 0x04, 0x00}, - { Z2MdnPrm::sResent, Z2MdnPrm::sResentTail, 0x35, 0x02, 0x03, 0x00}, - { Z2MdnPrm::sCheerful, Z2MdnPrm::sCheerfulTail, 0x35, 0x01, 0x07, 0x00}, - { Z2MdnPrm::sConfused, Z2MdnPrm::sConfusedTail, 0x35, 0x03, 0x02, 0x00}, - { Z2MdnPrm::sHostility, Z2MdnPrm::sHostilityTail, 0x34, 0x02, 0x05, 0x00}, - { Z2MdnPrm::sTired, Z2MdnPrm::sTiredTail, 0x35, 0x03, 0x05, 0x00}, - { Z2MdnPrm::sSerious, Z2MdnPrm::sSeriousTail, 0x35, 0x02, 0x05, 0x00}, - { Z2MdnPrm::sReplyb, Z2MdnPrm::sReplybTail, 0x2A, 0x04, 0x03, 0x00}, - { Z2MdnPrm::sApologize, Z2MdnPrm::sApologizeTail, 0x32, 0x04, 0x05, 0x00}, - { Z2MdnPrm::sDeside, Z2MdnPrm::sDesideTail, 0x32, 0x01, 0x07, 0x00}, - { Z2MdnPrm::sAfford, Z2MdnPrm::sAffordTail, 0x34, 0x02, 0x0A, 0x00}, +const Z2MdnPrm::Prm Z2MdnPrm::sPrm[17] = { + {Z2MdnPrm::sReply, Z2MdnPrm::sReplyTail, ARRAY_SIZE(Z2MdnPrm::sReply), 6, 4}, + {Z2MdnPrm::sJoke, Z2MdnPrm::sJokeTail, ARRAY_SIZE(Z2MdnPrm::sJoke), 3, 7}, + {Z2MdnPrm::sSexy, Z2MdnPrm::sSexyTail, ARRAY_SIZE(Z2MdnPrm::sSexy), 3, 7}, + {Z2MdnPrm::sRidicule, Z2MdnPrm::sRidiculeTail, ARRAY_SIZE(Z2MdnPrm::sRidicule), 3, 7}, + {Z2MdnPrm::sBoring, Z2MdnPrm::sBoringTail, ARRAY_SIZE(Z2MdnPrm::sBoring), 1, 5}, + {Z2MdnPrm::sIrritated, Z2MdnPrm::sIrritatedTail, ARRAY_SIZE(Z2MdnPrm::sIrritated), 3, 7}, + {Z2MdnPrm::sOrder, Z2MdnPrm::sOrderTail, ARRAY_SIZE(Z2MdnPrm::sOrder), 2, 4}, + {Z2MdnPrm::sResent, Z2MdnPrm::sResentTail, ARRAY_SIZE(Z2MdnPrm::sResent), 2, 3}, + {Z2MdnPrm::sCheerful, Z2MdnPrm::sCheerfulTail, ARRAY_SIZE(Z2MdnPrm::sCheerful), 1, 7}, + {Z2MdnPrm::sConfused, Z2MdnPrm::sConfusedTail, ARRAY_SIZE(Z2MdnPrm::sConfused), 3, 2}, + {Z2MdnPrm::sHostility, Z2MdnPrm::sHostilityTail, ARRAY_SIZE(Z2MdnPrm::sHostility), 2, 5}, + {Z2MdnPrm::sTired, Z2MdnPrm::sTiredTail, ARRAY_SIZE(Z2MdnPrm::sTired), 3, 5}, + {Z2MdnPrm::sSerious, Z2MdnPrm::sSeriousTail, ARRAY_SIZE(Z2MdnPrm::sSerious), 2, 5}, + {Z2MdnPrm::sReplyb, Z2MdnPrm::sReplybTail, ARRAY_SIZE(Z2MdnPrm::sReplyb), 4, 3}, + {Z2MdnPrm::sApologize, Z2MdnPrm::sApologizeTail, ARRAY_SIZE(Z2MdnPrm::sApologize), 4, 5}, + {Z2MdnPrm::sDeside, Z2MdnPrm::sDesideTail, ARRAY_SIZE(Z2MdnPrm::sDeside), 1, 7}, + {Z2MdnPrm::sAfford, Z2MdnPrm::sAffordTail, ARRAY_SIZE(Z2MdnPrm::sAfford), 2, 10}, }; /* 802CBC60-802CBCEC 2C65A0 008C+00 0/0 1/1 0/0 .text __ct__12Z2SpeechMgr2Fv */ @@ -356,6 +373,7 @@ Z2SpeechMgr2::Z2SpeechMgr2() : JASGlobalInstance(true), random(0) mVoice = 0; field_0x3ff = 0; field_0x401 = 0; + for (int i = 0; i < 64; i++) { field_0x402[i] = -1; } @@ -363,8 +381,8 @@ Z2SpeechMgr2::Z2SpeechMgr2() : JASGlobalInstance(true), random(0) /* 802CBD88-802CBF60 2C66C8 01D8+00 1/0 1/1 0/0 .text setString__12Z2SpeechMgr2FPCUssUcUs */ -void Z2SpeechMgr2::setString(u16 const* s, s16 i_textNum, u8 i_speaker, u16 i_mood) { - switch (i_speaker) { +void Z2SpeechMgr2::setString(const u16* s, s16 textNum, u8 speakerID, u16 mood) { + switch (speakerID) { case 0x13: case 0x15: mVoice = 1; @@ -467,19 +485,19 @@ void Z2SpeechMgr2::setString(u16 const* s, s16 i_textNum, u8 i_speaker, u16 i_mo } if (mVoice == 1 || mVoice == 2) { - if (i_mood == 0) { + if (mood == 0) { mMood = 0; } else { - if (i_mood > 17) { + if (mood > 17) { if ((mVoice == 21) || (mVoice == 20)) { mMood = 0; } } else { - mMood = i_mood - 1; + mMood = mood - 1; } } } else { - mMood = i_mood; + mMood = mood; } for (int i = 0; i < 500; i++) { @@ -488,18 +506,19 @@ void Z2SpeechMgr2::setString(u16 const* s, s16 i_textNum, u8 i_speaker, u16 i_mo JUT_ASSERT(383, s != NULL); - if (i_textNum > 500) { + if (textNum > 500) { mTextNum = 500; - JUT_WARN_DEVICE(387, 1, "TOO MANY TEXT : now(%d) > max(%d)", i_textNum, 500); + JUT_WARN_DEVICE(387, 1, "TOO MANY TEXT : now(%d) > max(%d)", textNum, 500); } else { - mTextNum = i_textNum; + mTextNum = textNum; } - #ifdef DEBUG - for (int i = 0; i <= mTextNum; i++) { + #if VERSION == VERSION_SHIELD_DEBUG + for (int i = 0; i <= mTextNum; i++) #else - for (int i = 0; i < mTextNum; i++) { + for (int i = 0; i < mTextNum; i++) #endif + { mText[i] = s[i]; } @@ -516,22 +535,24 @@ void Z2SpeechMgr2::setString(u16 const* s, s16 i_textNum, u8 i_speaker, u16 i_mo } /* 802CBF60-802CC190 2C68A0 0230+00 1/0 2/2 0/0 .text setTextCount__12Z2SpeechMgr2Fs */ -void Z2SpeechMgr2::setTextCount(s16 i_textCount) { +void Z2SpeechMgr2::setTextCount(s16 textCount) { if (mVoice != 99) { field_0x3ff = 0x0; - #ifndef DEBUG - i_textCount = (i_textCount == 0) ? 0 : i_textCount - 1; + #if VERSION != VERSION_SHIELD_DEBUG + textCount = (textCount == 0) ? 0 : textCount - 1; #endif bool all_text = false; - if (mTextCount == 0 && i_textCount >= mTextNum) { + if (mTextCount == 0 && textCount >= mTextNum) { all_text = true; } - mTextCount = i_textCount; + + mTextCount = textCount; if (mTextCount >= mTextNum) { mTextCount = mTextNum; } + if (mVoice == 1 || mVoice == 2) { if (!field_0x0.isSoundAttached()) { speakOneWord(false); @@ -576,8 +597,8 @@ void Z2SpeechMgr2::setTextCount(s16 i_textCount) { sound_id = Z2SE_SY_TEXT_OUT_ZANT; break; } - mSpeech.startSound(sound_id, &field_0x4, NULL, 0, 0.0f, 1.0f, 1.0f, -1.0f, -1.0f, - 0); + + mSpeech.startSound(sound_id, &field_0x4, NULL, 0, 0.0f, 1.0f, 1.0f, -1.0f, -1.0f, 0); } } } @@ -594,11 +615,12 @@ void Z2SpeechMgr2::speakOneWord(bool param_0) { } else if (isNonVerbal()) { return; } - u32 sound = mMood + Z2SE_HYL_MDN_RPLY; - f32 fVar1 = Z2GetSceneMgr()->getRoomReverb() / 127.0f; - bool soundStarted = - mSpeech.startSound(sound, &field_0x0, NULL, 0, fVar1, 1.0f, 1.0f, -1.0f, -1.0f, 0); + + u32 soundID = mMood + Z2SE_HYL_MDN_RPLY; + f32 fxMix = Z2GetSceneMgr()->getRoomReverb() / 127.0f; + bool soundStarted = mSpeech.startSound(soundID, &field_0x0, NULL, 0, fxMix, 1.0f, 1.0f, -1.0f, -1.0f, 0); mSpeech.setPortData(&field_0x0, 8, field_0x402[field_0x401 - 1] + 1, -1); + if (field_0x400 == 0) { selectUnit(param_0); } @@ -608,39 +630,39 @@ void Z2SpeechMgr2::speakOneWord(bool param_0) { /* 802CC2FC-802CC4C0 2C6C3C 01C4+00 2/2 0/0 0/0 .text isNonVerbal__12Z2SpeechMgr2Fv */ bool Z2SpeechMgr2::isNonVerbal() { switch(mText[mTextCount]) { - case 0: - case 0x20: - case 0x21: - case 0x22: - case 0x23: - case 0x24: - case 0x25: - case 0x26: - case 0x27: - case 0x28: - case 0x29: - case 0x2a: - case 0x2b: - case 0x2c: - case 0x2d: - case 0x2e: - case 0x2f: - case 0x3a: - case 0x3b: - case 0x3c: - case 0x3d: - case 0x3e: - case 0x3f: - case 0x4b: - case 0x4c: - case 0x4d: - case 0x4e: - case 0x4f: - case 0x5b: - case 0x5c: - case 0x5d: - case 0x5e: - case 0x5f: + case '\0': + case ' ': + case '!': + case '\"': + case '#': + case '$': + case '%': + case '&': + case '\'': + case '(': + case ')': + case '*': + case '+': + case ',': + case '-': + case '.': + case '/': + case ':': + case ';': + case '<': + case '=': + case '>': + case '?': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case '[': + case '\\': + case ']': + case '^': + case '_': case 0x813f: case 0x8140: case 0x8141: @@ -681,7 +703,8 @@ bool Z2SpeechMgr2::isNonVerbal() { return true; } - if(mText[mTextCount] == 0x0a) { + #if VERSION != VERSION_SHIELD_DEBUG + if(mText[mTextCount] == 0xA) { switch (mVoice) { case 1: case 2: @@ -690,11 +713,13 @@ bool Z2SpeechMgr2::isNonVerbal() { return true; } } + #endif + return false; } typedef struct { - s8 field_0x0; + s8 unitIndex; u8 field_0x1; } Z2ConnectCost; @@ -707,7 +732,7 @@ void Z2SpeechMgr2::selectUnit(bool param_0) { return; } - s8 ZVar2 = random.get_uint8(Z2MdnPrm::sPrm[mMood].field_0x8); + s8 unitIndex = random.get_uint8(Z2MdnPrm::sPrm[mMood].mainNum); s8 ZVar3; s8 cVar5; @@ -717,10 +742,10 @@ void Z2SpeechMgr2::selectUnit(bool param_0) { while (true) { bool bVar1 = false; - ZVar2 = random.get_uint8(Z2MdnPrm::sPrm[mMood].field_0x8); + unitIndex = random.get_uint8(Z2MdnPrm::sPrm[mMood].mainNum); for (int i = 0; i < field_0x401; i++) { - if (field_0x402[i] == ZVar2) { + if (field_0x402[i] == unitIndex) { bVar1 = true; break; } @@ -731,7 +756,7 @@ void Z2SpeechMgr2::selectUnit(bool param_0) { } for (int i = 0; i < cVar5; i++) { - if (ZVar2 == cost[i].field_0x0) { + if (unitIndex == cost[i].unitIndex) { bVar1 = true; break; } @@ -741,9 +766,9 @@ void Z2SpeechMgr2::selectUnit(bool param_0) { continue; } - const u8 (*prm)[2] = (u8 (*)[2])Z2MdnPrm::sPrm[mMood].field_0x0; - u8 local_3f = JMAAbs(prm[ZVar2][0] - prm[ZVar4][1]); - Z2ConnectCost connectCost = {ZVar2, local_3f}; + const Z2MdnPrm::Unit* units = Z2MdnPrm::sPrm[mMood].main; + u8 local_3f = JMAAbs(units[unitIndex].start - units[ZVar4].end); + Z2ConnectCost connectCost = {unitIndex, local_3f}; cost[cVar5] = connectCost; cVar5++; @@ -753,16 +778,16 @@ void Z2SpeechMgr2::selectUnit(bool param_0) { } u16 tmp = cost[0].field_0x1; - ZVar2 = cost[0].field_0x0; + unitIndex = cost[0].unitIndex; for (int i = 0; i < 5; i++) { if (cost[i].field_0x1 < tmp) { tmp = cost[i].field_0x1; - ZVar2 = cost[i].field_0x0; + unitIndex = cost[i].unitIndex; } } } - field_0x402[field_0x401] = ZVar2; + field_0x402[field_0x401] = unitIndex; field_0x401++; } @@ -772,34 +797,33 @@ void Z2SpeechMgr2::selectTail() { s8 cVar9 = 0; s8 ZVar1 = field_0x402[field_0x401 - 1]; s8 ZVar6; - u8 bVar3; + u8 bVar3 = 0; while (true) { bool bVar5 = false; switch (mVoice) { case 2: - bVar3 = Z2MdnPrm::sPrm[mMood].field_0x9; + bVar3 = Z2MdnPrm::sPrm[mMood].tailNum1; ZVar6 = random.get_uint8(bVar3); break; case 1: - bVar3 = Z2MdnPrm::sPrm[mMood].field_0xa; - ZVar6 = Z2MdnPrm::sPrm[mMood].field_0x9 + random.get_uint8(bVar3); + bVar3 = Z2MdnPrm::sPrm[mMood].tailNum2; + ZVar6 = Z2MdnPrm::sPrm[mMood].tailNum1 + random.get_uint8(bVar3); break; default: return; } for (int i = 0; i < cVar9; i++) { - if (ZVar6 == cost[i].field_0x0) { + if (ZVar6 == cost[i].unitIndex) { bVar5 = true; break; } } if (!bVar5) { - u8 local_3f = JMAAbs(Z2MdnPrm::sPrm[mMood].field_0x4[ZVar6] - - Z2MdnPrm::sPrm[mMood].field_0x0[ZVar1 * 2 + 1]); + u8 local_3f = JMAAbs(Z2MdnPrm::sPrm[mMood].tail[ZVar6] - Z2MdnPrm::sPrm[mMood].main[ZVar1].end); Z2ConnectCost connectCost = {ZVar6, local_3f}; cost[cVar9] = connectCost; cVar9++; @@ -807,15 +831,15 @@ void Z2SpeechMgr2::selectTail() { if (cVar9 == bVar3 || cVar9 == 5) { s8 tmp_r8; u16 tmp_r9 = cost[0].field_0x1; - tmp_r8 = cost[0].field_0x0; - int local_3c = bVar3 >= 5 ? 5 : bVar3; + tmp_r8 = cost[0].unitIndex; + int local_3c = bVar3 < 5 ? bVar3 : 5; for (int i = 0; i < local_3c; i++) { if (cost[i].field_0x1 < tmp_r9) { tmp_r9 = cost[i].field_0x1; - tmp_r8 = cost[i].field_0x0; + tmp_r8 = cost[i].unitIndex; } } - field_0x402[field_0x401 - 1] = tmp_r8 + Z2MdnPrm::sPrm[mMood].field_0x8; + field_0x402[field_0x401 - 1] = tmp_r8 + Z2MdnPrm::sPrm[mMood].mainNum; return; } } @@ -841,15 +865,15 @@ void Z2SpeechMgr2::framework() { /* 802CCA18-802CCF88 2C7358 0570+00 0/0 2/2 0/0 .text playOneShotVoice__12Z2SpeechMgr2FUcUsP3VecSc */ -void Z2SpeechMgr2::playOneShotVoice(u8 i_speaker, u16 param_1, Vec* i_pos, s8 param_3) { - if (i_speaker == 0) { +void Z2SpeechMgr2::playOneShotVoice(u8 speakerID, u16 param_1, Vec* posPtr, s8 param_3) { + if (speakerID == 0) { return; } f32 fxmix = Z2GetSceneMgr()->getRoomReverb() / 127.0f; if (mVoice == 1 || mVoice == 2) { - JAISoundID sound_id; + JAISoundID sound_id(-1); switch (param_1) { case 25: sound_id = Z2SE_MSG_V_MDN_D21; @@ -883,13 +907,13 @@ void Z2SpeechMgr2::playOneShotVoice(u8 i_speaker, u16 param_1, Vec* i_pos, s8 pa } if (sound_id != -1) { - mSpeech.startSound(sound_id, &field_0x0, (JGeometry::TVec3*)i_pos, - i_speaker, fxmix, 1.0f, 1.0f, -1.0f, -1.0f, 0); + mSpeech.startSound(sound_id, &field_0x0, (JGeometry::TVec3*)posPtr, + speakerID, fxmix, 1.0f, 1.0f, -1.0f, -1.0f, 0); } } else { JAISoundID sound_id = Z2SE_MESSAGE_SE_COMMON; - switch (i_speaker) { + switch (speakerID) { case 3: if (param_1 == 1) { Z2GetSeqMgr()->subBgmStart(Z2BGM_ITEM_GET_MINI); @@ -987,7 +1011,7 @@ void Z2SpeechMgr2::playOneShotVoice(u8 i_speaker, u16 param_1, Vec* i_pos, s8 pa if (field_0x0) { field_0x0.releaseSound(); } - mSpeech.startSound(sound_id, &field_0x0, (JGeometry::TVec3*)i_pos, i_speaker, + mSpeech.startSound(sound_id, &field_0x0, (JGeometry::TVec3*)posPtr, speakerID, fxmix, 1.0f, 1.0f, -1.0f, -1.0f, 0); if (field_0x0) { mSpeech.setPortData(&field_0x0, 8, param_1, -1); @@ -1000,6 +1024,7 @@ bool Z2SpeechMgr2::isMidnaSpeak() { if ((mVoice == 1 || mVoice == 2) && field_0x0) { return true; } + return false; } @@ -1008,48 +1033,48 @@ Z2SpeechStarter::Z2SpeechStarter() : Z2SoundStarter(false) {} /* 802CCFF8-802CD248 2C7938 0250+00 1/0 0/0 0/0 .text * startSound__15Z2SpeechStarterF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3UlfffffUl */ -bool Z2SpeechStarter::startSound(JAISoundID i_soundID, JAISoundHandle* i_handle, - JGeometry::TVec3 const* i_pos, u32 param_3, f32 i_fxmix, - f32 i_pitch, f32 i_volume, f32 i_pan, f32 i_dolby, u32 i_count) { +bool Z2SpeechStarter::startSound(JAISoundID soundID, JAISoundHandle* handlePtr, + const JGeometry::TVec3* posPtr, u32 portData, f32 fxmix, + f32 pitch, f32 volume, f32 pan, f32 dolby, u32 moveSteps) { + JUT_ASSERT(1076, handlePtr); + if (Z2GetSceneMgr()->isInDarkness() && Z2GetSceneMgr()->getDemoSeWaveNum() != 0x77 && Z2GetSceneMgr()->getDemoSeWaveNum() != 0x78) { - i_fxmix = 1.0f; + fxmix = 1.0f; } else { f32 tmp = Z2GetStatusMgr()->getCameraInWaterDepthRatio() > 0.0f; if (tmp) { - i_fxmix = tmp; - } else if (Z2GetSceneMgr()->getDemoSeWaveNum() == 0x6c - || Z2GetSceneMgr()->getDemoSeWaveNum() == 0x77) - { - i_fxmix = 0.07f; + fxmix = tmp; + } else if (Z2GetSceneMgr()->getDemoSeWaveNum() == 0x6c || Z2GetSceneMgr()->getDemoSeWaveNum() == 0x77) { + fxmix = 0.07f; } else { - i_fxmix += Z2GetEnvSeMgr()->getFogDensity() * 0.5f; - if (i_fxmix > 1.0f) { - i_fxmix = 1.0f; + fxmix += Z2GetEnvSeMgr()->getFogDensity() * 0.5f; + if (fxmix > 1.0f) { + fxmix = 1.0f; } } } - bool ret = Z2GetAudioMgr()->startSound(i_soundID, i_handle, i_pos); + bool ret = Z2GetAudioMgr()->startSound(soundID, handlePtr, posPtr); - if (*i_handle) { - if (param_3 != 0) { - setPortData(i_handle, 6, param_3, -1); + if (*handlePtr) { + if (portData != 0) { + setPortData(handlePtr, 6, portData, -1); } - if (i_fxmix > 0.0f) { - (*i_handle)->getAuxiliary().moveFxMix(i_fxmix, i_count); + if (fxmix > 0.0f) { + (*handlePtr)->getAuxiliary().moveFxMix(fxmix, moveSteps); } - if (i_pitch != 1.0f) { - (*i_handle)->getAuxiliary().movePitch(i_pitch, i_count); + if (pitch != 1.0f) { + (*handlePtr)->getAuxiliary().movePitch(pitch, moveSteps); } - if (i_volume != 1.0f) { - (*i_handle)->getAuxiliary().moveVolume(i_volume, i_count); + if (volume != 1.0f) { + (*handlePtr)->getAuxiliary().moveVolume(volume, moveSteps); } - if (i_pan != -1.0f) { - (*i_handle)->getAuxiliary().movePan(i_pan, i_count); + if (pan != -1.0f) { + (*handlePtr)->getAuxiliary().movePan(pan, moveSteps); } - if (i_dolby != -1.0f) { - (*i_handle)->getAuxiliary().moveDolby(i_dolby, i_count); + if (dolby != -1.0f) { + (*handlePtr)->getAuxiliary().moveDolby(dolby, moveSteps); } } diff --git a/src/Z2AudioLib/Z2StatusMgr.cpp b/src/Z2AudioLib/Z2StatusMgr.cpp index 6f8b0fcd78..461348dd0a 100644 --- a/src/Z2AudioLib/Z2StatusMgr.cpp +++ b/src/Z2AudioLib/Z2StatusMgr.cpp @@ -1,15 +1,94 @@ -// -// Z2StatusMgr -// - #include "Z2AudioLib/Z2StatusMgr.h" -#include "Z2AudioLib/Z2Creature.h" #include "Z2AudioLib/Z2Param.h" #include "d/d_com_inf_game.h" #include "d/d_s_play.h" +static const char* sSpotName[] = { + "F_SP00", + "F_SP103", + "R_SP01", + "F_SP104", + "R_SP107", + "F_SP108", + "R_SP108", + "F_SP117", + "F_SP109", + "R_SP109", + "R_SP209", + "F_SP110", + "R_SP110", + "F_SP111", + "F_SP128", + "R_SP128", + "F_SP115", + "F_SP112", + "F_SP126", + "F_SP127", + "R_SP127", + "F_SP113", + "F_SP116", + "R_SP116", + "R_SP160", + "R_SP161", + "F_SP114", + "F_SP118", + "F_SP124", + "F_SP125", + "F_SP121", + "F_SP122", + "F_SP123", + "F_SP200", + "F_SP102", + "", + "R_SP300", + "R_SP301", + "T_ENEMY", + "D_MN54", + "D_MN05", + "D_MN05B", + "D_MN05A", + "D_MN04", + "D_MN04B", + "D_MN04A", + "D_MN01", + "D_MN01B", + "D_MN01A", + "D_MN10", + "D_MN10B", + "D_MN10A", + "D_MN11", + "D_MN11B", + "D_MN11A", + "D_MN06", + "D_MN06B", + "D_MN06A", + "D_MN07", + "D_MN07B", + "D_MN07A", + "D_MN08", + "D_MN08B", + "D_MN08C", + "D_MN08A", + "D_MN08D", + "D_MN09", + "D_MN09A", + "D_MN09B", + "D_MN09C", + "D_SB00", + "D_SB01", + "D_SB02", + "D_SB03", + "D_SB04", + "D_SB05", + "D_SB06", + "D_SB07", + "D_SB08", + "D_SB09", + "D_SB10", +}; + /* 802B5F1C-802B5F70 2B085C 0054+00 0/0 1/1 0/0 .text __ct__11Z2StatusMgrFv */ -Z2StatusMgr::Z2StatusMgr() : JASGlobalInstance(this) { +Z2StatusMgr::Z2StatusMgr() : JASGlobalInstance(true) { mHour = 0; mMinute = 0; mWeekday = 0; @@ -45,13 +124,16 @@ void Z2StatusMgr::processHeartGaugeSound() { if (Z2GetLink() == NULL) { return; } - u32 linkHp = Z2GetLink()->getLinkHp(); + + u8 linkHp = Z2GetLink()->getLinkHp(); if (linkHp == 0) { return; } + if (Z2GetSeqMgr()->isItemGetDemo()) { return; } + if (linkHp <= 2) { Z2GetSeMgr()->seStartLevel(Z2SE_ALMOST_DIE_ALERM_3, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); } else if (linkHp <= 4) { @@ -99,90 +181,6 @@ bool Z2StatusMgr::isMovieDemo() { return mDemoStatus == 2 || mDemoStatus == 8 || mDemoStatus == 9; } -static void dummyStrings() { - DEAD_STRING("F_SP00"); - DEAD_STRING("F_SP103"); - DEAD_STRING("R_SP01"); - DEAD_STRING("F_SP104"); - DEAD_STRING("R_SP107"); - DEAD_STRING("F_SP108"); - DEAD_STRING("R_SP108"); - DEAD_STRING("F_SP117"); - DEAD_STRING("F_SP109"); - DEAD_STRING("R_SP109"); - DEAD_STRING("R_SP209"); - DEAD_STRING("F_SP110"); - DEAD_STRING("R_SP110"); - DEAD_STRING("F_SP111"); - DEAD_STRING("F_SP128"); - DEAD_STRING("R_SP128"); - DEAD_STRING("F_SP115"); - DEAD_STRING("F_SP112"); - DEAD_STRING("F_SP126"); - DEAD_STRING("F_SP127"); - DEAD_STRING("R_SP127"); - DEAD_STRING("F_SP113"); - DEAD_STRING("F_SP116"); - DEAD_STRING("R_SP116"); - DEAD_STRING("R_SP160"); - DEAD_STRING("R_SP161"); - DEAD_STRING("F_SP114"); - DEAD_STRING("F_SP118"); - DEAD_STRING("F_SP124"); - DEAD_STRING("F_SP125"); - DEAD_STRING("F_SP121"); - DEAD_STRING("F_SP122"); - DEAD_STRING("F_SP123"); - DEAD_STRING("F_SP200"); - DEAD_STRING("F_SP102"); - DEAD_STRING(""); - DEAD_STRING("R_SP300"); - DEAD_STRING("R_SP301"); - DEAD_STRING("T_ENEMY"); - DEAD_STRING("D_MN54"); - DEAD_STRING("D_MN05"); - DEAD_STRING("D_MN05B"); - DEAD_STRING("D_MN05A"); - DEAD_STRING("D_MN04"); - DEAD_STRING("D_MN04B"); - DEAD_STRING("D_MN04A"); - DEAD_STRING("D_MN01"); - DEAD_STRING("D_MN01B"); - DEAD_STRING("D_MN01A"); - DEAD_STRING("D_MN10"); - DEAD_STRING("D_MN10B"); - DEAD_STRING("D_MN10A"); - DEAD_STRING("D_MN11"); - DEAD_STRING("D_MN11B"); - DEAD_STRING("D_MN11A"); - DEAD_STRING("D_MN06"); - DEAD_STRING("D_MN06B"); - DEAD_STRING("D_MN06A"); - DEAD_STRING("D_MN07"); - DEAD_STRING("D_MN07B"); - DEAD_STRING("D_MN07A"); - DEAD_STRING("D_MN08"); - DEAD_STRING("D_MN08B"); - DEAD_STRING("D_MN08C"); - DEAD_STRING("D_MN08A"); - DEAD_STRING("D_MN08D"); - DEAD_STRING("D_MN09"); - DEAD_STRING("D_MN09A"); - DEAD_STRING("D_MN09B"); - DEAD_STRING("D_MN09C"); - DEAD_STRING("D_SB00"); - DEAD_STRING("D_SB01"); - DEAD_STRING("D_SB02"); - DEAD_STRING("D_SB03"); - DEAD_STRING("D_SB04"); - DEAD_STRING("D_SB05"); - DEAD_STRING("D_SB06"); - DEAD_STRING("D_SB07"); - DEAD_STRING("D_SB08"); - DEAD_STRING("D_SB09"); - DEAD_STRING("D_SB10"); -} - /* 802B61E8-802B671C 2B0B28 0534+00 1/0 7/7 11/11 .text setDemoName__11Z2StatusMgrFPc */ void Z2StatusMgr::setDemoName(char* demoName) { if (mDemoStatus == 11) { @@ -191,20 +189,26 @@ void Z2StatusMgr::setDemoName(char* demoName) { Z2GetSceneMgr()->sceneBgmStart(); } } + if (demoName == NULL) { + OS_REPORT("[Z2StatusMgr::setDemoName] → No demo\n"); if (mDemoStatus == 3) { Z2GetSeqMgr()->setBattleBgmOff(false); } else if (mDemoStatus == 4) { - Z2GetSeqMgr()->unMuteSceneBgm(struct_80450861); + Z2GetSeqMgr()->unMuteSceneBgm(Z2Param::BGM_CROSS_FADEIN_TIME); } else if (mDemoStatus == 5) { + OS_REPORT("[Z2StatusMgr::setDemoName] HIDDEN_VIL DEMO_END\n"); Z2GetSeqMgr()->subBgmStop(); } else if (mDemoStatus == 9) { - Z2GetSeqMgr()->bgmStreamStop(0x3c); + Z2GetSeqMgr()->bgmStreamStop(60); } + if (mDemoStatus != 8) { mDemoStatus = 0; } } else { + OS_REPORT("[Z2StatusMgr::setDemoName] demoName : %s\n", demoName); + bool bVar1 = false; if (mDemoStatus == 8) { if (strcmp(demoName, "force_end") == 0) { @@ -235,45 +239,47 @@ void Z2StatusMgr::setDemoName(char* demoName) { mDemoStatus = 10; } else { switch (Z2GetSceneMgr()->getCurrentSceneNum()) { - case 0xe: + case Z2SCENE_HIDDEN_VILLAGE: if (strcmp(demoName, "R00_start") == 0) { mDemoStatus = 5; Z2GetSeqMgr()->subBgmStart(Z2BGM_HIDDEN_VIL_D1); + OS_REPORT("[Z2StatusMgr::setDemoName] HIDDEN_VIL DEMO_START\n"); } break; - case 5: + case Z2SCENE_FARON_WOODS: if (strcmp(demoName, "B_W_START") == 0) { Z2GetSeqMgr()->bgmStreamPrepare(0x200005f); Z2GetSeqMgr()->bgmStreamPlay(); mDemoStatus = 9; } break; - case 4: + case Z2SCENE_TWILIGHT_HYRULE_CASTLE: if (strcmp(demoName, "L0_rampart01") == 0) { bVar1 = true; } break; - case 0x28: + case Z2SCENE_FOREST_TEMPLE: if (strcmp(demoName, "R22-opening") == 0) { bVar1 = true; } break; - case 0x2b: + case Z2SCENE_GORON_MINES: if (strcmp(demoName, "R01-start") == 0) { bVar1 = true; } break; - case 0x2e: + case Z2SCENE_LAKEBED_TEMPLE: if (strcmp(demoName, "LV3R00OP") == 0) { bVar1 = true; } break; - case 0x31: + case Z2SCENE_ARBITERS_GROUNDS: if (strcmp(demoName, "R00_start") == 0) { bVar1 = true; } break; } + if (bVar1) { Z2GetSeqMgr()->setBattleBgmOff(true); mDemoStatus = 3; @@ -300,14 +306,14 @@ bool Z2StatusMgr::checkDayTime() { } /* 802B6758-802B6760 -00001 0008+00 0/0 0/0 0/0 .text setEventBit__11Z2StatusMgrFPv */ -void Z2StatusMgr::setEventBit(void* i_eventBit) { - mEventBit = i_eventBit; +void Z2StatusMgr::setEventBit(void* eventBit) { + mEventBit = eventBit; } /* 802B6760-802B6784 2B10A0 0024+00 0/0 1/1 0/0 .text setCameraPolygonPos__11Z2StatusMgrFP3Vec */ -void Z2StatusMgr::setCameraPolygonPos(Vec* i_polygonPos) { - if (i_polygonPos != NULL) { - mPolygonPosition = *i_polygonPos; +void Z2StatusMgr::setCameraPolygonPos(Vec* polygonPos) { + if (polygonPos != NULL) { + mPolygonPosition = *polygonPos; } } @@ -326,11 +332,12 @@ void Z2StatusMgr::setCameraInWaterDepth(f32 depth) { mCameraInWaterDepthRatio = 1.0f; } else { mCameraInWaterDepthRatio = - Z2Calc::getParamByExp(depth, 0.0f, 2000.0f, 0.2f, 0.0f, 1.0f, Z2Calc::CURVE_SIGN_0); + Z2Calc::getParamByExp(depth, 0.0f, 2000.0f, 0.2f, 0.0f, 1.0f, Z2Calc::CURVE_NEGATIVE); } Z2GetFxLineMgr()->setUnderWaterFx(true); } } } + mUnderwaterDepth = depth; } diff --git a/src/Z2AudioLib/Z2WolfHowlMgr.cpp b/src/Z2AudioLib/Z2WolfHowlMgr.cpp index 5e51235357..8209c03978 100644 --- a/src/Z2AudioLib/Z2WolfHowlMgr.cpp +++ b/src/Z2AudioLib/Z2WolfHowlMgr.cpp @@ -1,9 +1,4 @@ -// -// Z2WolfHowlMgr -// - #include "Z2AudioLib/Z2WolfHowlMgr.h" -#include "Z2AudioLib/Z2Creature.h" #include "Z2AudioLib/Z2Calc.h" #include "Z2AudioLib/Z2SeqMgr.h" #include "Z2AudioLib/Z2SeMgr.h" @@ -13,27 +8,27 @@ #include "d/d_demo.h" /* 80450880-80450884 000300 0004+00 2/2 0/0 0/0 .sdata cPitchDown */ -static f32 cPitchDown = 0.8909000158309937f; +static f32 cPitchDown = 0.8909f; /* 80450884-80450888 000304 0004+00 4/4 0/0 0/0 .sdata cPitchCenter */ static f32 cPitchCenter = 1.0f; /* 80450888-8045088C 000308 0004+00 2/2 0/0 0/0 .sdata cPitchUp */ -static f32 cPitchUp = 1.1892000436782837f; +static f32 cPitchUp = 1.1892f; static u8 struct_8045088C = 7; static u8 struct_8045088D = 7; /* 8045088E-80450890 00030E 0002+00 4/4 0/0 0/0 .sdata None */ -static u8 data_8045088E = 0x1E; -static u8 data_8045088F = 0x00; +static u8 cBeginHowlTime = 30; +static u8 data_8045088F = 0; /* 80450890-80450894 000310 0004+00 1/1 0/0 0/0 .sdata cR_FlatWidth */ -static f32 cR_FlatWidth = 0.9438700079917908f; +static f32 cR_FlatWidth = 0.94387f; // 1.0f / 12th root of 2 /* 80450894-80450898 -00001 0004+00 3/3 0/0 0/0 .sdata None */ -static u8 struct_80450894 = 0x05; -static u8 struct_80450895 = 0x1E; +static u8 struct_80450894 = 5; +static u8 struct_80450895 = 30; /* 80450898-8045089C 000318 0004+00 1/1 0/0 0/0 .sdata sStickHigh */ static f32 sStickHigh = 0.5f; @@ -42,76 +37,128 @@ static f32 sStickHigh = 0.5f; static f32 sStickCenter = 1.0f / 5.0f; /* 804508A0-804508A8 000320 0008+00 1/0 0/0 0/0 .sdata sHowlTobikusa */ -static SongNote sHowlTobikusa[4] = { - {0x01, 0x1E}, - {0x03, 0x1E}, - {0x01, 0x1E}, - {0x03, 0x1E}, +static Z2WolfHowlLine sHowlTobikusa[4] = { + {HOWL_LINE_HIGH, 30}, + {HOWL_LINE_LOW, 30}, + {HOWL_LINE_HIGH, 30}, + {HOWL_LINE_LOW, 30}, }; /* 803CBC50-803CBC5C 028D70 000C+00 1/0 0/0 0/0 .data sHowlUmakusa */ -static SongNote sHowlUmakusa[6] = { - {0x01, 0x0F}, {0x02, 0x0F}, {0x03, 0x3C}, {0x01, 0x0F}, {0x02, 0x0F}, {0x03, 0x3C}, +static Z2WolfHowlLine sHowlUmakusa[6] = { + {HOWL_LINE_HIGH, 15}, + {HOWL_LINE_MID, 15}, + {HOWL_LINE_LOW, 60}, + {HOWL_LINE_HIGH, 15}, + {HOWL_LINE_MID, 15}, + {HOWL_LINE_LOW, 60}, }; /* 803CBC5C-803CBC68 028D7C 000C+00 1/0 0/0 0/0 .data sHowlZeldaSong */ -static SongNote sHowlZeldaSong[6] = { - {0x02, 0x1E}, {0x01, 0x0F}, {0x03, 0x2D}, {0x02, 0x1E}, {0x01, 0x0F}, {0x03, 0x2D}, +static Z2WolfHowlLine sHowlZeldaSong[6] = { + {HOWL_LINE_MID, 30}, + {HOWL_LINE_HIGH, 15}, + {HOWL_LINE_LOW, 45}, + {HOWL_LINE_MID, 30}, + {HOWL_LINE_HIGH, 15}, + {HOWL_LINE_LOW, 45}, }; /* 803CBC68-803CBC74 028D88 000C+00 1/0 0/0 0/0 .data sHowlLightPrelude */ -static SongNote sHowlLightPrelude[6] = { - {0x01, 0x14}, {0x03, 0x28}, {0x01, 0x14}, {0x03, 0x14}, {0x02, 0x14}, {0x01, 0x1E}, +static Z2WolfHowlLine sHowlLightPrelude[6] = { + {HOWL_LINE_HIGH, 20}, + {HOWL_LINE_LOW, 40}, + {HOWL_LINE_HIGH, 20}, + {HOWL_LINE_LOW, 20}, + {HOWL_LINE_MID, 20}, + {HOWL_LINE_HIGH, 30}, }; /* 803CBC74-803CBC80 028D94 000C+00 1/0 0/0 0/0 .data sHowlSoulRequiem */ -static SongNote sHowlSoulRequiem[6] = { - {0x03, 0x1E}, {0x02, 0x0F}, {0x03, 0x0F}, {0x01, 0x1E}, {0x02, 0x1E}, {0x03, 0x1E}, +static Z2WolfHowlLine sHowlSoulRequiem[6] = { + {HOWL_LINE_LOW, 30}, + {HOWL_LINE_MID, 15}, + {HOWL_LINE_LOW, 15}, + {HOWL_LINE_HIGH, 30}, + {HOWL_LINE_MID, 30}, + {HOWL_LINE_LOW, 30}, }; /* 803CBC80-803CBC8C 028DA0 000C+00 1/0 0/0 0/0 .data sHealingSong */ -static SongNote sHealingSong[6] = { - {0x01, 0x1E}, {0x02, 0x1E}, {0x03, 0x1E}, {0x01, 0x1E}, {0x02, 0x1E}, {0x03, 0x1E}, +static Z2WolfHowlLine sHealingSong[6] = { + {HOWL_LINE_HIGH, 30}, + {HOWL_LINE_MID, 30}, + {HOWL_LINE_LOW, 30}, + {HOWL_LINE_HIGH, 30}, + {HOWL_LINE_MID, 30}, + {HOWL_LINE_LOW, 30}, }; /* 803CBC8C-803CBC9C 028DAC 000E+02 1/0 0/0 0/0 .data sNewSong1 */ -static SongNote sNewSong1[7] = { - {0x03, 0x1E}, {0x02, 0x1E}, {0x01, 0x1E}, {0x03, 0x28}, {0x02, 0x14}, {0x03, 0x1E}, {0x01, 0x1E}, +static Z2WolfHowlLine sNewSong1[7] = { + {HOWL_LINE_LOW, 30}, + {HOWL_LINE_MID, 30}, + {HOWL_LINE_HIGH, 30}, + {HOWL_LINE_LOW, 40}, + {HOWL_LINE_MID, 20}, + {HOWL_LINE_LOW, 30}, + {HOWL_LINE_HIGH, 30}, }; /* 803CBC9C-803CBCAC 028DBC 0010+00 1/0 0/0 0/0 .data sNewSong2 */ -static SongNote sNewSong2[8] = { - {0x01, 0x14}, {0x02, 0x14}, {0x03, 0x14}, {0x02, 0x3C}, {0x03, 0x14}, {0x01, 0x14}, {0x02, 0x14}, {0x03, 0x1E}, +static Z2WolfHowlLine sNewSong2[8] = { + {HOWL_LINE_HIGH, 20}, + {HOWL_LINE_MID, 20}, + {HOWL_LINE_LOW, 20}, + {HOWL_LINE_MID, 60}, + {HOWL_LINE_LOW, 20}, + {HOWL_LINE_HIGH, 20}, + {HOWL_LINE_MID, 20}, + {HOWL_LINE_LOW, 30}, }; /* 803CBCAC-803CBCC0 028DCC 0012+02 1/0 0/0 0/0 .data sNewSong3 */ -static SongNote sNewSong3[9] = { - {0x02, 0x1E}, {0x03, 0x3C}, {0x02, 0x28}, {0x01, 0x14}, {0x03, 0x3C}, {0x01, 0x14}, {0x02, 0x14}, {0x01, 0x14}, {0x02, 0x2D}, +static Z2WolfHowlLine sNewSong3[9] = { + {HOWL_LINE_MID, 30}, + {HOWL_LINE_LOW, 60}, + {HOWL_LINE_MID, 40}, + {HOWL_LINE_HIGH, 20}, + {HOWL_LINE_LOW, 60}, + {HOWL_LINE_HIGH, 20}, + {HOWL_LINE_MID, 20}, + {HOWL_LINE_HIGH, 20}, + {HOWL_LINE_MID, 45}, }; /* 803CBCC0-803CBD08 -00001 0048+00 1/1 0/0 0/0 .data sGuideData */ static Z2WolfHowlData sGuideData[9] = { - {4, sHowlTobikusa}, {6, sHowlUmakusa}, {6, sHowlZeldaSong}, - {6, sHealingSong}, {6, sHowlSoulRequiem}, {6, sHowlLightPrelude}, - {7, sNewSong1}, {8, sNewSong2}, {9, sNewSong3}, + {ARRAY_SIZE(sHowlTobikusa), sHowlTobikusa}, + {ARRAY_SIZE(sHowlUmakusa), sHowlUmakusa}, + {ARRAY_SIZE(sHowlZeldaSong), sHowlZeldaSong}, + {ARRAY_SIZE(sHealingSong), sHealingSong}, + {ARRAY_SIZE(sHowlSoulRequiem), sHowlSoulRequiem}, + {ARRAY_SIZE(sHowlLightPrelude), sHowlLightPrelude}, + {ARRAY_SIZE(sNewSong1), sNewSong1}, + {ARRAY_SIZE(sNewSong2), sNewSong2}, + {ARRAY_SIZE(sNewSong3), sNewSong3}, }; /* 802CAAC0-802CAB8C 2C5400 00CC+00 0/0 1/1 0/0 .text __ct__13Z2WolfHowlMgrFv */ -Z2WolfHowlMgr::Z2WolfHowlMgr() : JASGlobalInstance(this) { - mpCurSong = NULL; +Z2WolfHowlMgr::Z2WolfHowlMgr() : JASGlobalInstance(true) { + mNowHowlData = NULL; mNowInputValue = 0.0f; - field_0x18 = 1.0f; + mWolfHowlVolume = 1.0f; field_0x1c = 1.0f; field_0x20 = cPitchCenter; - field_0x24 = cPitchCenter; + mNowPitch = cPitchCenter; field_0x28 = 1.0f; mTimer = 0; mReleaseTimer = 0; - mCorrectCurveID = -1; - field_0x90 = -1; - field_0xba = 0; + mCorrectCurveID = Z2WOLFHOWL_NONE; + mCorrectScore = -1; + mNowLineIndex = 0; field_0xbb = 0; - field_0xbc = 0; + mNowLineScore = 0; for (u8 i = 0; i < 20; i++) { field_0x92[i] = 0; @@ -124,17 +171,17 @@ Z2WolfHowlMgr::Z2WolfHowlMgr() : JASGlobalInstance(this) { field_0x34 = 0.0f; field_0x30 = 0.0f; - mpSongList = (Z2WolfHowlData*)&sGuideData; + mGuideData = (Z2WolfHowlData*)&sGuideData; } /* 802CAB8C-802CABEC 2C54CC 0060+00 1/1 0/0 0/0 .text resetState__13Z2WolfHowlMgrFv */ void Z2WolfHowlMgr::resetState() { - field_0x18 = 1.0f; - field_0x24 = cPitchCenter; + mWolfHowlVolume = 1.0f; + mNowPitch = cPitchCenter; field_0x28 = 1.0f; mTimer = 0; mReleaseTimer = 0; - field_0xba = 0; + mNowLineIndex = 0; for (u8 i = 0; i < 10; i++) { field_0x38[i] = 0.0f; @@ -146,28 +193,31 @@ void Z2WolfHowlMgr::resetState() { } /* 802CABEC-802CACB0 2C552C 00C4+00 1/1 0/0 0/0 .text calcVolumeMod__13Z2WolfHowlMgrFf */ -void Z2WolfHowlMgr::calcVolumeMod(f32 param_0) { - if (field_0x00) { - if (mTimer < data_8045088E) { - field_0x00->getAuxiliary().moveVolume(1.0f, 0); +void Z2WolfHowlMgr::calcVolumeMod(f32) { + f32 volume; + + if (mWolfHowlHandle) { + if (mTimer < cBeginHowlTime) { + mWolfHowlHandle->getAuxiliary().moveVolume(1.0f, 0); } else { - f32 dVar7 = 1.0f; - if (mReleaseTimer != 0x0) { - dVar7 = getParamByExp(mReleaseTimer, 30.0f, 0.0f, 2.0f, 0.0f, 1.0f, Z2Calc::CURVE_SIGN_1); + volume = 1.0f; + if (mReleaseTimer != 0) { + volume = getParamByExp(mReleaseTimer, 30.0f, 0.0f, 2.0f, 0.0f, 1.0f, Z2Calc::CURVE_POSITIVE); } - field_0x18 = dVar7; - if (field_0x00) { - field_0x00->getAuxiliary().moveVolume(field_0x18, 0); + mWolfHowlVolume = volume; + + if (mWolfHowlHandle) { + mWolfHowlHandle->getAuxiliary().moveVolume(mWolfHowlVolume, 0); } - field_0x1c = field_0x18; + field_0x1c = mWolfHowlVolume; } } } /* 802CACB0-802CACCC 2C55F0 001C+00 1/1 0/0 0/0 .text getNowPitch__13Z2WolfHowlMgrFv */ f32 Z2WolfHowlMgr::getNowPitch() { - if (field_0x00) { - return field_0x00->getAuxiliary().mParams.mPitch; + if (mWolfHowlHandle) { + return mWolfHowlHandle->getAuxiliary().params_.mPitch; } return 1.0f; @@ -181,81 +231,87 @@ f32 Z2WolfHowlMgr::getNowInputValue() { /* 802CACD4-802CAED4 2C5614 0200+00 1/1 0/0 0/0 .text calcPitchMod__13Z2WolfHowlMgrFff */ void Z2WolfHowlMgr::calcPitchMod(f32 param_0, f32 param_1) { - f32 dVar12 = 1.0f; + (void)param_0; + + f32 pitch = 1.0f; field_0x20 = getNowPitch(); + if (mReleaseTimer != 0) { - f32 dVar11 = getParamByExp(mReleaseTimer, 30.0f, 0.0f, 1.0f, 0.97f, 1.0f, Z2Calc::CURVE_SIGN_0); - dVar11 = field_0x24 * dVar11; - if (field_0x00) { - field_0x00->getAuxiliary().movePitch(dVar11, 0); + f32 releaseScale = getParamByExp(mReleaseTimer, 30.0f, 0.0f, 1.0f, 0.97f, 1.0f, Z2Calc::CURVE_NEGATIVE); + pitch = mNowPitch * releaseScale; + + if (mWolfHowlHandle) { + mWolfHowlHandle->getAuxiliary().movePitch(pitch, 0); } } else { - if (mTimer < data_8045088E) { + if (mTimer < cBeginHowlTime) { field_0x34 = 0.0f; } else { - f32 dVar11 = 1.0f; + f32 inputPitch = 1.0f; if (mNowInputValue < 0.0f) { - dVar11 = Z2Calc::linearTransform(mNowInputValue, -1.0f, 0.0f, cPitchDown, 1.0f, false); + inputPitch = Z2Calc::linearTransform(mNowInputValue, -1.0f, 0.0f, cPitchDown, 1.0f, false); } else if (mNowInputValue > 0.0f) { - dVar11 = Z2Calc::linearTransform(mNowInputValue, 1.0f, 0.0f,cPitchUp, 1.0f, false); + inputPitch = Z2Calc::linearTransform(mNowInputValue, 1.0f, 0.0f,cPitchUp, 1.0f, false); } - - f32 temp = dVar11 * cPitchCenter; - f32 fVar5 = temp - (dVar12 = field_0x24); - if (fVar5 == 0.0f) { - dVar12 = dVar12; - } else if (fVar5 > 0.0f) { - dVar12 += fVar5 / struct_8045088C; + + f32 newPitch = inputPitch * cPitchCenter; + f32 pitchDiff = newPitch - mNowPitch; + if (pitchDiff == 0.0f) { + pitch = mNowPitch; + } else if (pitchDiff > 0.0f) { + pitch = mNowPitch + (pitchDiff / struct_8045088C); } else { - dVar12 += fVar5 / struct_8045088D; + pitch = mNowPitch + (pitchDiff / struct_8045088D); } } - field_0x24 = dVar12; + + mNowPitch = pitch; + f32 dVar11 = Z2Calc::linearTransform(param_1, 0.0f, 1.0f, 1.0f, cR_FlatWidth, true); f32 fVar5 = field_0x28 + (dVar11 - field_0x28) / struct_80450894; field_0x28 = fVar5; - dVar12 *= fVar5; - if (field_0x00) { - field_0x00->getAuxiliary().movePitch(dVar12, 0); + pitch *= fVar5; + + if (mWolfHowlHandle) { + mWolfHowlHandle->getAuxiliary().movePitch(pitch, 0); } } } /* 802CAED4-802CB100 2C5814 022C+00 0/0 1/1 0/0 .text startWolfHowlSound__13Z2WolfHowlMgrFffbf */ -s8 Z2WolfHowlMgr::startWolfHowlSound(f32 param_0, f32 param_1, bool param_2, f32 param_3) { - if (mCorrectCurveID > 1) { +s8 Z2WolfHowlMgr::startWolfHowlSound(f32 param_0, f32 stickValue, bool isHowl, f32 param_3) { + if (mCorrectCurveID > Z2WOLFHOWL_UMAKUSA) { Z2GetSeqMgr()->setWindStoneVol(0.0f, 0); } - if (Z2GetSeqMgr()->isItemGetDemo() || (mReleaseTimer != 0)) { - param_2 = false; + if (Z2GetSeqMgr()->isItemGetDemo() || mReleaseTimer != 0) { + isHowl = false; } else { - if (param_1 > sStickCenter) { - mNowInputValue = Z2Calc::linearTransform(param_1, sStickCenter, sStickHigh, 0.0f, 1.0f, false); + if (stickValue > sStickCenter) { + mNowInputValue = Z2Calc::linearTransform(stickValue, sStickCenter, sStickHigh, 0.0f, 1.0f, false); + } else if (stickValue < -1.0f * sStickCenter) { + mNowInputValue = Z2Calc::linearTransform(stickValue, -1.0f * sStickCenter, -1.0f * sStickHigh, 0.0f, -1.0f, false); } else { - f32 fVar1 = -1.0f * sStickCenter; - if (param_1 < fVar1) { - mNowInputValue = Z2Calc::linearTransform(param_1, fVar1, -1.0f * sStickHigh, 0.0f, -1.0f, false); - } else { - mNowInputValue = 0.0f; - } + mNowInputValue = 0.0f; } } - if (param_2) { - if (mTimer > data_8045088E) { - Z2GetSoundStarter()->startLevelSound(0x10035, &field_0x00, NULL); + if (isHowl) { + if (mTimer > cBeginHowlTime) { + Z2GetSoundStarter()->startLevelSound(Z2SE_WL_V_HOWL, &mWolfHowlHandle, NULL); } - if (field_0x00) { + + if (mWolfHowlHandle) { calcPitchMod(0.0f, 0.0f); calcVolumeMod(param_3); } + mTimer++; } else { - if (mTimer > data_8045088E) { - if (mReleaseTimer < 0x1e) { - Z2GetSoundStarter()->startLevelSound(0x10035, &field_0x00, NULL); - if (field_0x00) { + if (mTimer > cBeginHowlTime) { + if (mReleaseTimer < 30) { + Z2GetSoundStarter()->startLevelSound(Z2SE_WL_V_HOWL, &mWolfHowlHandle, NULL); + if (mWolfHowlHandle) { calcPitchMod(0.0f, 0.0f); calcVolumeMod(param_3); } @@ -274,183 +330,225 @@ s8 Z2WolfHowlMgr::startWolfHowlSound(f32 param_0, f32 param_1, bool param_2, f32 /* 802CB100-802CB320 2C5A40 0220+00 0/0 1/1 0/0 .text * setCorrectData__13Z2WolfHowlMgrFScP14Z2WolfHowlData */ -void Z2WolfHowlMgr::setCorrectData(s8 param_0, Z2WolfHowlData* param_1) { - if (param_0 == mCorrectCurveID) { +void Z2WolfHowlMgr::setCorrectData(s8 curveID, Z2WolfHowlData* data) { + if (curveID == mCorrectCurveID) { return; } - if (param_0 == -1) { - mCorrectCurveID = -1; - mpCurSong = 0; + + if (curveID == Z2WOLFHOWL_NONE) { + OS_REPORT("[Z2WolfHowMgr:setCorrectData] CorrectData NONE\n"); + mCorrectCurveID = Z2WOLFHOWL_NONE; + mNowHowlData = NULL; return; } - if (param_1 == NULL) { - if (param_0 >= 9) { - mCorrectCurveID = -1; - mpCurSong = 0; + + if (data == NULL) { + if (curveID >= Z2WOLFHOWL_MAX) { + mCorrectCurveID = Z2WOLFHOWL_NONE; + mNowHowlData = NULL; return; } - param_1 = &mpSongList[param_0]; + data = &mGuideData[curveID]; } - mCorrectCurveID = param_0; - mpCurSong = param_1; - switch(param_0) { - case 3: - cPitchUp = 1.1224600076675415f; - cPitchCenter = 1.0594600439071655f; - cPitchDown = 0.7936859726905823f; + JUT_ASSERT(648, data); + + mCorrectCurveID = curveID; + mNowHowlData = data; + + switch(curveID) { + case Z2WOLFHOWL_HEALINGSONG: + cPitchUp = 1.12246f; + cPitchCenter = 1.05946f; + cPitchDown = 0.793686f; break; - case 4: - cPitchUp = 1.2599060535430908f; - cPitchCenter = 0.9438700079917908f; - cPitchDown = 0.8408849835395813f; + case Z2WOLFHOWL_SOULREQUIEM: + cPitchUp = 1.259906f; + cPitchCenter = 0.94387f; + cPitchDown = 0.840885f; break; - case 6: - cPitchUp = 1.3348400592803955f; - cPitchCenter = 0.8909000158309937f; - cPitchDown = 0.8909000158309937f; + case Z2WOLFHOWL_NEWSONG1: + cPitchUp = 1.33484f; + cPitchCenter = 0.8909f; + cPitchDown = 0.8909f; break; - case 7: - cPitchUp = 1.2599060535430908f; - cPitchCenter = 0.9438700079917908f; - cPitchDown = 0.8909000158309937f; + case Z2WOLFHOWL_NEWSONG2: + cPitchUp = 1.259906f; + cPitchCenter = 0.94387f; + cPitchDown = 0.8909f; break; - case 8: - cPitchUp = 1.1224600076675415f; - cPitchCenter = 0.9438700079917908f; - cPitchDown = 0.7491499781608582f; + case Z2WOLFHOWL_NEWSONG3: + cPitchUp = 1.12246f; + cPitchCenter = 0.94387f; + cPitchDown = 0.74915f; break; default: - cPitchUp = 1.1892000436782837f; + cPitchUp = 1.1892f; cPitchCenter = 1.0f; - cPitchDown = 0.8909000158309937f; + cPitchDown = 0.8909f; break; } - field_0xbe = 0; - u32 uVar4 = 0; + mFullScore = 0; - for (u8 bVar5 = 0; bVar5 < getCorrectLineNum(); bVar5++) { - uVar4 += getCorrectLine(bVar5).length; - if (getCorrectLine(bVar5).barType != 0) { - field_0xbe += struct_80450895; - field_0xbe += getCorrectLine(bVar5).length; + u32 length = 0; + for (u8 i = 0; i < getCorrectLineNum(); i++) { + length += getCorrectLine(i).length; + if (getCorrectLine(i).type != 0) { + mFullScore += struct_80450895; + mFullScore += getCorrectLine(i).length; } } - field_0xbe -= uVar4 >> 2; + + OS_REPORT("[Z2WolfHowMgr:setCorrectData] id:%d length:%d blockNum:%d, fullScore:%d\n", + mCorrectCurveID, length, getCorrectLineNum(), mFullScore); + mFullScore -= FAST_DIV(length, 4); } /* 802CB320-802CB370 2C5C60 0050+00 3/3 2/2 0/0 .text getCorrectLine__13Z2WolfHowlMgrFUc */ -SongNote Z2WolfHowlMgr::getCorrectLine(u8 param_0) { +Z2WolfHowlLine Z2WolfHowlMgr::getCorrectLine(u8 lineIndex) { u16 local_18; - if (mpCurSong == 0 || param_0 >= mpCurSong->mLineNum) { - SongNote note; - note.barType = 0; - note.length = 0; - return note; + if (mNowHowlData == NULL || lineIndex >= mNowHowlData->lineNum) { + Z2WolfHowlLine line; + line.type = 0; + line.length = 0; + return line; } - return mpCurSong->mSongData[param_0]; + + return mNowHowlData->lineData[lineIndex]; } /* 802CB370-802CB38C 2C5CB0 001C+00 2/2 1/1 0/0 .text getCorrectLineNum__13Z2WolfHowlMgrFv */ u8 Z2WolfHowlMgr::getCorrectLineNum() { - if (mpCurSong != NULL) { - return mpCurSong->mLineNum; + if (mNowHowlData != NULL) { + return mNowHowlData->lineNum; } return 0; } -/* ############################################################################################## */ /* 804341F8-8043421C 060F18 0024+00 2/2 0/0 0/0 .bss sCorrectPhrase */ static JAISoundID sCorrectPhrase[9] = { - 0x1000052, 0x1000053, 0x1000054, 0x1000072, 0x1000068, - 0x1000055, 0x1000075, 0x100007c, 0x100007f, + Z2BGM_HOWL_TOBIKUSA, + Z2BGM_HOWL_UMAKUSA, + Z2BGM_HOWL_ZELDASONG, + Z2BGM_HEALING_HOWL, + Z2BGM_SOUL_REQ_HOWL, + Z2BGM_HOWL_LIGHT_PRLD, + Z2BGM_NEW_01_HOWL, + Z2BGM_NEW_02_HOWL, + Z2BGM_NEW_03_HOWL, }; /* 8043421C-80434240 060F3C 0024+00 2/3 0/0 0/0 .bss sWindStoneSound */ static JAISoundID sWindStoneSound[9] = { - 0xffffffff, 0xffffffff, 0x100005b, 0x1000071, 0x1000067, - 0x100005c, 0x1000074, 0x100007b, 0x100007e, + 0xFFFFFFFF, + 0xFFFFFFFF, + Z2BGM_STONE_ZELDASONG, + Z2BGM_HEALING_STONE, + Z2BGM_SOUL_REQ_STONE, + Z2BGM_STONE_LIGHT_PRLD, + Z2BGM_NEW_01_STONE, + Z2BGM_NEW_02_STONE, + Z2BGM_NEW_03_STONE, }; /* 80434240-80434268 060F60 0024+04 1/2 0/0 0/0 .bss sCorrectDuo */ static JAISoundID sCorrectDuo[9] = { - 0xffffffff, 0xffffffff, 0xffffffff, 0x1000073, 0x1000069, - 0x1000066, 0x1000076, 0x100007d, 0x1000080, + 0xFFFFFFFF, + 0xFFFFFFFF, + 0xFFFFFFFF, + Z2BGM_HEALING_DUO, + Z2BGM_SOUL_REQ_DUO, + Z2BGM_LIGHT_PRLD_DUO, + Z2BGM_NEW_01_DUO, + Z2BGM_NEW_02_DUO, + Z2BGM_NEW_03_DUO, }; /* 802CB38C-802CB650 2C5CCC 02C4+00 1/1 0/0 0/0 .text checkLine__13Z2WolfHowlMgrFv */ s8 Z2WolfHowlMgr::checkLine() { - if (mCorrectCurveID == -1 || mpCurSong == NULL) { + if (mCorrectCurveID == Z2WOLFHOWL_NONE || mNowHowlData == NULL) { return -1; } if (Z2GetSeqMgr()->isItemGetDemo()) { return mCorrectCurveID; } + if (mTimer == 0) { - if (field_0x90 > 0) { - field_0x90 = -1; + if (mCorrectScore > 0) { + OS_REPORT("↑↑↑CheckCurveDone!!! correctCount:%d / %d\n", mCorrectScore, mFullScore); + mCorrectScore = -1; } return -1; - } else if (field_0x90 >= field_0xbe) { - u32 uVar1 = 0; + } else if (mCorrectScore >= mFullScore) { + u32 length = 0; for (u8 i = 0; i < getCorrectLineNum(); i++) { - uVar1 += getCorrectLine(i).length; + length += getCorrectLine(i).length; } - if (mTimer - data_8045088E < uVar1) { + + if (mTimer - cBeginHowlTime < length) { return -1; } - Z2GetSeMgr()->seStart(0xd, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); - if (mCorrectCurveID > 2) { - if (Z2GetSceneMgr()->getCurrentSceneNum() == 0x21) { + + OS_REPORT("↑↑↑CheckCurveDone!!! correctCount:%d / %d\n", mCorrectScore, mFullScore); + + Z2GetSeMgr()->seStart(Z2SE_READ_RIDDLE_B, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + + if (mCorrectCurveID > Z2WOLFHOWL_ZELDASONG) { + if (Z2GetSceneMgr()->getCurrentSceneNum() == Z2SCENE_SHADES_REALM) { Z2GetSeqMgr()->subBgmStart(sCorrectDuo[mCorrectCurveID]); } } else { Z2GetSeqMgr()->subBgmStart(sCorrectPhrase[mCorrectCurveID]); } - field_0x90 = 0xffff; + + mCorrectScore = -1; return mCorrectCurveID; } else { if (mTimer == 1) { - field_0x90 = 0; - field_0xba = 0; - field_0xbc = 0; - } else if (mTimer >= data_8045088E) { - u32 r29 = mTimer - data_8045088E; - u32 uVar1 = 0; - for (u8 i = 0; i <= field_0xba; i++) { - uVar1 += getCorrectLine(i).length; + mCorrectScore = 0; + mNowLineIndex = 0; + mNowLineScore = 0; + OS_REPORT("↓↓↓CheckCurveStart!!! correctCount:%d, block:%d, length%d\n", mCorrectScore, mNowLineIndex, field_0x92[mNowLineIndex]); + } else if (mTimer >= cBeginHowlTime) { + u32 howlTime = mTimer - cBeginHowlTime; + + u32 length = 0; + for (u8 i = 0; i <= mNowLineIndex; i++) { + length += getCorrectLine(i).length; } - if (r29 > uVar1 && field_0xba < getCorrectLineNum()) { - field_0x90 += field_0xbc; - if (field_0xbc > getCorrectLine(field_0xba).length / 6) { - field_0x90 += struct_80450895; + + if (howlTime > length && mNowLineIndex < getCorrectLineNum()) { + mCorrectScore += mNowLineScore; + if (mNowLineScore > getCorrectLine(mNowLineIndex).length / 6) { + mCorrectScore += struct_80450895; } - field_0xba++; - field_0xbc = 0; + mNowLineIndex++; + mNowLineScore = 0; } else { if (getOnLineNum() > -1) { - field_0xbc++; + mNowLineScore++; } } } - return -1; } - - return mCorrectCurveID; + + return -1; } /* 802CB650-802CB6EC 2C5F90 009C+00 1/1 1/1 0/0 .text getOnLineNum__13Z2WolfHowlMgrFv */ s8 Z2WolfHowlMgr::getOnLineNum() { - SongNote note = getCorrectLine(field_0xba); - if ((note.barType == 1 && mNowInputValue == 1.0f) || - (note.barType == 2 && mNowInputValue == 0.0f) || - (note.barType == 3 && mNowInputValue == -1.0f)) { - s8 rv = field_0xba; + Z2WolfHowlLine line = getCorrectLine(mNowLineIndex); + u8 type = line.type; + if ((type == HOWL_LINE_HIGH && mNowInputValue == 1.0f) || + (type == HOWL_LINE_MID && mNowInputValue == 0.0f) || + (type == HOWL_LINE_LOW && mNowInputValue == -1.0f)) + { + s8 rv = mNowLineIndex; return rv; } @@ -459,49 +557,56 @@ s8 Z2WolfHowlMgr::getOnLineNum() { /* 802CB6EC-802CBA88 2C602C 039C+00 0/0 0/0 2/2 .text startWindStoneSound__13Z2WolfHowlMgrFScP3Vec */ -void Z2WolfHowlMgr::startWindStoneSound(s8 param_0, Vec* param_1) { - if (param_1 == NULL || Z2GetLink() == NULL || Z2GetLink()->getCurrentPos() == NULL) { +void Z2WolfHowlMgr::startWindStoneSound(s8 curveID, Vec* pos) { + if (pos == NULL || Z2GetLink() == NULL || Z2GetLink()->getCurrentPos() == NULL) { return; } - Vec local_60 = Z2GetAudience()->getAudioCamPos(0); - f32 dVar13 = sqrtf(VECSquareDistance(param_1, &local_60)); - if (dVar13 > 2100.0f && field_0x04) { - field_0x04->stop(); - } else if (dVar13 < 2100.0f && !field_0x04) { - Z2GetSoundMgr()->startSound(sWindStoneSound[param_0], &field_0x04, (const JGeometry::TVec3*)param_1); + + Vec audioCamPos = Z2GetAudience()->getAudioCamPos(0); + f32 camDist = sqrtf(VECSquareDistance(pos, &audioCamPos)); + if (camDist > 2100.0f && mWindStoneHandle) { + mWindStoneHandle->stop(); + } else if (camDist < 2100.0f && !mWindStoneHandle) { + Z2GetSoundMgr()->startSound(sWindStoneSound[curveID], &mWindStoneHandle, (const JGeometry::TVec3*)pos); } - if (field_0x04) { - field_0x04->fadeIn(0); - field_0x04->stop(0x1e); + + if (mWindStoneHandle) { + mWindStoneHandle->fadeIn(0); + mWindStoneHandle->stop(30); + if (Z2GetLink()->getLinkState() == 1) { - f32 fVar14 = sqrtf(VECSquareDistance(param_1, Z2GetLink()->getCurrentPos())); - f32 dVar13 = 1.0f; - if (fVar14 < 150.0f) { - dVar13 = 0.0f; - } else if (fVar14 < 2000.0f) { - dVar13 = Z2Calc::getParamByExp(fVar14, 150.0f, 2000.0f, - 0.45f, 0.05f, dVar13, Z2Calc::CURVE_SIGN_0); + f32 linkDist = sqrtf(VECSquareDistance(pos, Z2GetLink()->getCurrentPos())); + f32 volume = 1.0f; + if (linkDist < 150.0f) { + volume = 0.0f; + } else if (linkDist < 2000.0f) { + volume = Z2Calc::getParamByExp(linkDist, 150.0f, 2000.0f, + 0.45f, 0.05f, 1.0f, Z2Calc::CURVE_NEGATIVE); } - Z2GetSeqMgr()->setWindStoneVol(dVar13, 0); - field_0x04->getAuxiliary().moveVolume(0.4f, 0); + + Z2GetSeqMgr()->setWindStoneVol(volume, 0); + mWindStoneHandle->getAuxiliary().moveVolume(0.4f, 0); } else { - field_0x04->getAuxiliary().moveVolume(0.04f, 0); + mWindStoneHandle->getAuxiliary().moveVolume(0.04f, 0); } } } /* 802CBA88-802CBB58 2C63C8 00D0+00 0/0 1/1 0/0 .text startGuideMelody__13Z2WolfHowlMgrFb */ -int Z2WolfHowlMgr::startGuideMelody(bool param_0) { +int Z2WolfHowlMgr::startGuideMelody(bool startSound) { Z2GetSeqMgr()->setWindStoneVol(0.0f, 0); - if (param_0) { - Z2GetSoundMgr()->startSound(sWindStoneSound[mCorrectCurveID], &field_0x08, NULL); + + if (startSound) { + Z2GetSoundMgr()->startSound(sWindStoneSound[mCorrectCurveID], &mGuideHandle, NULL); } - if (field_0x08) { - field_0x08->fadeIn(0); - field_0x08->stop(0x1e); - return field_0x08->getCount(); + + if (mGuideHandle) { + mGuideHandle->fadeIn(0); + mGuideHandle->stop(30); + return mGuideHandle->getCount(); } + return 0; } diff --git a/src/d/d_msg_scrn_howl.cpp b/src/d/d_msg_scrn_howl.cpp index 33e10f425b..0faf01adb7 100644 --- a/src/d/d_msg_scrn_howl.cpp +++ b/src/d/d_msg_scrn_howl.cpp @@ -1088,7 +1088,7 @@ u8 dMsgScrnHowl_c::getGuideDataType(int param_0) { for (int i = 0; i < mCorrectLineMax; i++) { uVar3 += daAlink_getAlinkActorClass()->getCorrectLine(i).length; if (uVar2 <= param_0 && uVar3 > param_0) { - return daAlink_getAlinkActorClass()->getCorrectLine(i).barType; + return daAlink_getAlinkActorClass()->getCorrectLine(i).type; } uVar2 = uVar3; }