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
This commit is contained in:
TakaRikka
2025-11-27 21:19:33 -08:00
committed by GitHub
parent 767caeecc3
commit 6f96e66518
113 changed files with 6425 additions and 5542 deletions
+15 -16
View File
@@ -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
+15 -16
View File
@@ -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
+15 -16
View File
@@ -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
+15 -15
View File
@@ -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
+15 -15
View File
@@ -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
+15 -15
View File
@@ -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
+15 -15
View File
@@ -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
+6 -6
View File
@@ -37,17 +37,17 @@ public:
/* 8029F868 */ virtual JAITempoMgr* getTempoMgr();
/* 8029F5C8 */ virtual bool JAISound_tryDie_();
/* 8029F03C */ JAISe(JAISeMgr*, JAISoundStrategyMgr<JAISe>*, u32);
/* 8029F0F8 */ void mixOut_(JASSoundParams const&);
/* 8029F03C */ JAISe(JAISeMgr* seMgr, JAISoundStrategyMgr<JAISe>* 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<f32> const*, JAIAudience*);
/* 8029F650 */ void JAISeMgr_startID_(JAISoundID id, const JGeometry::TVec3<f32>* 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; }
+38 -28
View File
@@ -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<JAISe>* getSeList() { return &mSeList; }
void setMaxActiveSe(int num) { mMaxActiveSe = num; }
void setMaxInactiveSe(int num) { mMaxInactiveSe = num; }
const JSUList<JAISe>* 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<JAISe> mSeList;
/* 0x64 */ int mMaxInactiveSe;
@@ -86,27 +91,28 @@ class JAISeMgr : public JASGlobalInstance<JAISeMgr>,
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<f32> const*);
/* 802A0768 */ bool startSound(JAISoundID id, JAISoundHandle* handle, const JGeometry::TVec3<f32>* 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<JAISe>* mStrategyMgr;
/* 0x014 */ JAISeCategoryMgr mCategoryMgrs[16];
/* 0x014 */ JAISeCategoryMgr mCategoryMgrs[NUM_CATEGORIES];
/* 0x6D4 */ JAISoundParamsMove mParams;
}; // Size: 0x724
+13 -11
View File
@@ -14,12 +14,14 @@ class JAISoundChild;
*/
class JAISeq : public JASPoolAllocObject<JAISeq>, public JAISound, public JSULink<JAISeq> {
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<JAISeq>*);
/* 802A0B64 */ void JAISeqMgr_startID_(JAISoundID, JGeometry::TVec3<f32> const*, JAIAudience*,
int, int);
/* 802A0C04 */ void playSeqData_(JASSoundParams const&, JAISoundActivity);
/* 802A0A8C */ JAISeq(JAISeqMgr* seqMgr, JAISoundStrategyMgr<JAISeq>* soundStrategyMgr);
/* 802A0B64 */ void JAISeqMgr_startID_(JAISoundID id, const JGeometry::TVec3<f32>* 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<JAISeq>* field_0x3a8;
};
+3 -3
View File
@@ -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;
}
+17 -12
View File
@@ -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<f32> const*);
/* 802A1B48 */ bool startSound(JAISoundID id, JAISoundHandle* handle, const JGeometry::TVec3<f32>* 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;
+100 -97
View File
@@ -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<A0>* calc(JAISoundID);
virtual void virtual4(JAISoundStrategyMgr__unknown<A0>*);
};
/* JAISoundStrategyMgr<JAISe> */
struct JAISoundStrategyMgr__template0 {};
/* JAISoundStrategyMgr<JAISeq> */
struct JAISoundStrategyMgr__template1 {};
/* JAISoundStrategyMgr<JAIStream> */
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<f32> const*, JAIAudience*);
/* 802A2328 */ void start_JAISound_(JAISoundID id, const JGeometry::TVec3<f32>* posPtr, JAIAudience* audience);
/* 802A244C */ bool acceptsNewAudible() const;
/* 802A2474 */ void newAudible(JGeometry::TVec3<f32> const&, JGeometry::TVec3<f32> const*, u32,
/* 802A2474 */ void newAudible(const JGeometry::TVec3<f32>&, JGeometry::TVec3<f32> 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<f32>& param_1) {
bool setPos(const JGeometry::TVec3<f32>& 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);
+12 -9
View File
@@ -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_;
};
+51 -52
View File
@@ -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(&params_); }
/* 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 */
+3 -3
View File
@@ -9,11 +9,11 @@
*
*/
struct JAISoundStarter : public JASGlobalInstance<JAISoundStarter> {
/* 802A2F6C */ JAISoundStarter(bool);
/* 802A2F6C */ JAISoundStarter(bool setInstance);
virtual ~JAISoundStarter();
virtual bool startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3<f32> const*) = 0;
/* 802A2FEC */ bool startLevelSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3<f32> const*);
virtual bool startSound(JAISoundID id, JAISoundHandle* handlePtr, const JGeometry::TVec3<f32>* posPtr) = 0;
/* 802A2FEC */ bool startLevelSound(JAISoundID id, JAISoundHandle* handlePtr, const JGeometry::TVec3<f32>* posPtr);
};
#endif /* JAISOUNDSTARTER_H */
+16 -13
View File
@@ -14,39 +14,42 @@ class JAIStreamMgr;
class JAIStream : public JASPoolAllocObject<JAIStream>, public JAISound, public JSULink<JAIStream> {
public:
struct TInner {
JASAramStream field_0x0;
JASAramStream aramStream_;
};
/* 802A3104 */ JAIStream(JAIStreamMgr*, JAISoundStrategyMgr<JAIStream>*);
/* 802A319C */ void JAIStreamMgr_startID_(JAISoundID, s32, JGeometry::TVec3<f32> const*,
JAIAudience*, int);
/* 802A3104 */ JAIStream(JAIStreamMgr* streamMgr, JAISoundStrategyMgr<JAIStream>* soundStrategyMgr);
/* 802A319C */ void JAIStreamMgr_startID_(JAISoundID id, s32 streamFileEntry,
const JGeometry::TVec3<f32>* 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<JAIStream>* field_0x2bc;
/* 0x2C0 */ JAISoundStrategyMgr<JAIStream>* field_0x2c0;
/* 0x2C4 */ u8 field_0x2c4;
/* 0x2C4 */ bool field_0x2c4;
/* 0x2C5 */ u8 field_0x2c5;
/* 0x2C6 */ u8 field_0x2c6;
};
+14 -10
View File
@@ -14,34 +14,38 @@ class JAIStreamDataMgr;
*/
class JAIStreamMgr : public JASGlobalInstance<JAIStreamMgr> {
public:
/* 802A3B68 */ JAIStreamMgr(bool);
/* 802A3C3C */ bool startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3<f32> const*);
/* 802A3B68 */ JAIStreamMgr(bool setInstance);
/* 802A3C3C */ bool startSound(JAISoundID id, JAISoundHandle* handle, const JGeometry::TVec3<f32>* 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<JAIStream>* 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<JAIStream> mStreamList;
/* 0x64 */ JAIStreamDataMgr* streamDataMgr_;
/* 0x68 */ JAIStreamAramMgr* mStreamAramMgr;
+6 -6
View File
@@ -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 */
+9 -16
View File
@@ -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 */
+4
View File
@@ -26,4 +26,8 @@ namespace JASDriver {
extern u32 JAS_SYSTEM_OUTPUT_MODE;
};
inline void JAISetOutputMode(u32 mode) {
JASDriver::setOutputMode(mode);
}
#endif /* JASDRIVERIF_H */
+1 -1
View File
@@ -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;
};
+2 -2
View File
@@ -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;
}
+10 -2
View File
@@ -94,8 +94,16 @@ template <typename T>
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(); };
+12 -10
View File
@@ -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;
};
+7 -4
View File
@@ -25,6 +25,7 @@ struct JASTrack : public JASPoolAllocObject_MultiThreaded<JASTrack> {
enum Status {
STATUS_FREE,
STATUS_RUN,
STATUS_STOP,
};
struct TChannelMgr : public JASPoolAllocObject_MultiThreaded<TChannelMgr> {
@@ -34,9 +35,11 @@ struct JASTrack : public JASPoolAllocObject_MultiThreaded<JASTrack> {
/* 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<JASTrack> {
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<JASTrack> {
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; }
+1 -1
View File
@@ -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
@@ -1,6 +1,8 @@
#ifndef JAUAUDIBLEPARAM_H
#define JAUAUDIBLEPARAM_H
#include <dolphin/types.h>
/**
* @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;
@@ -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;
+12 -12
View File
@@ -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_;
};
/**
+3 -1
View File
@@ -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*);
@@ -49,6 +49,8 @@ public:
/* 802A683C */ SeqDataReturnValue getSeqData(JAISoundID, JAISeqData*);
/* 802A6894 */ ~JAUSeqDataMgr_SeqCollection();
const void* getResource() const { return field_0x4; }
/* 0x14 */ JAISeqDataUser* user_;
};
+2 -1
View File
@@ -157,7 +157,8 @@ struct JAUSoundTable : public JASGlobalInstance<JAUSoundTable> {
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_<JAUSoundTableRoot,JAUSoundTableSection,JAUSoundTableGroup,void> field_0x0;
};
+12 -7
View File
@@ -41,6 +41,16 @@ struct TUtil<f32> {
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<f32> : public Vec {
}
inline TVec3<f32>& operator=(const TVec3<f32>& 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<f32>::sqrt(squared());
}
T x;
-1
View File
@@ -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);
+4
View File
@@ -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;
+4 -4
View File
@@ -47,7 +47,7 @@ public:
T* getObject() const { return static_cast<T*>(mObject); }
JSUList<T>* getSupervisor() const { return static_cast<JSUList<T>*>(this->getList()); }
JSUList<T>* getSupervisor() const { return static_cast<JSUList<T>*>(mList); }
JSULink<T>* getNext() const { return static_cast<JSULink*>(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<T>* getLast() const { return (JSULink<T>*)getLastLink(); }
JSULink<T>* getNth(int index) { return (JSULink<T>*)getNthLink(index); }
JSULink<T>* getNth(u32 index) const { return (JSULink<T>*)getNthLink(index); }
JSULink<T>* getEnd() const { return NULL; }
u32 getNumLinks() const { return this->JSUPtrList::getNumLinks(); }
u32 getNumLinks() const { return mLength; }
};
/**
+7 -5
View File
@@ -16,8 +16,6 @@ template <>
struct SMatrix34C<f32> {
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 <typename T>
struct TMatrix34 : public T {};
struct TMatrix34 : public T {
void identity() { MTXIdentity(data); }
};
template <typename T>
struct TRotation3 : public T {};
@@ -77,9 +77,11 @@ struct TRotation3<SMatrix33C<T> > : public SMatrix33C<T> {
};
template <typename T>
struct TPosition3 : public T {};
struct TPosition3 : public T {
TPosition3() {}
};
typedef TPosition3<TRotation3<TMatrix34<SMatrix34C<f32> > > > TPosition3f32;
typedef TPosition3<TMatrix34<SMatrix34C<f32> > > TPosition3f32;
} // namespace JGeometry
+69 -60
View File
@@ -12,36 +12,39 @@
struct Z2Audible;
struct Z2AudibleAbsPos {
/* 802BBCDC */ void calc(JGeometry::TVec3<f32> const&);
/* 802BBD18 */ void init(JGeometry::TVec3<f32>*, JGeometry::TVec3<f32> const&,
JGeometry::TVec3<f32> const*);
/* 802BBCDC */ void calc(const JGeometry::TVec3<f32>& pos);
/* 802BBD18 */ void init(JGeometry::TVec3<f32>*, const JGeometry::TVec3<f32>&,
const JGeometry::TVec3<f32>*);
/* 0x00 */ JGeometry::TVec3<f32> field_0x0;
/* 0x0C */ JGeometry::TVec3<f32> field_0xc;
/* 0x0C */ JGeometry::TVec3<f32> 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<f32>* getPos() { return &mPos; }
const JGeometry::TVec3<f32>* 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<f32>* getVel() const { return &mVel; }
/* 0x00 */ JGeometry::TPosition3f32 field_0x0;
/* 0x30 */ JGeometry::TVec3<f32> mVel;
/* 0x3C */ JGeometry::TVec3<f32> 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<Z2Audible> {
/* 802BBD94 */ Z2Audible(JGeometry::TVec3<f32> const&, JGeometry::TVec3<f32> const*, u32, bool);
/* 802BBD94 */ Z2Audible(const JGeometry::TVec3<f32>& pos, const JGeometry::TVec3<f32>*, 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<f32>* 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<f32>& 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<f32>* 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<Z2Audience> {
/* 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<f32> const&,
JGeometry::TVec3<f32> const&,
JGeometry::TVec3<f32> 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<f32>&,
const JGeometry::TVec3<f32>&,
const JGeometry::TVec3<f32>&, 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<f32> const&, JAISoundID,
JGeometry::TVec3<f32> const*, u32);
/* 802BD338 */ virtual JAIAudible* newAudible(const JGeometry::TVec3<f32>& pos, JAISoundID soundID,
const JGeometry::TVec3<f32>*, 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<f32> getAudioCamPos(int idx) {
return *mAudioCamera[idx].getPos();
JGeometry::TVec3<f32> 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
+3 -3
View File
@@ -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 */
+2 -2
View File
@@ -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);
};
+8 -6
View File
@@ -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<f32>* 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<f32> const*);
/* 0x0514 */ virtual bool startSound(JAISoundID soundID, JAISoundHandle* handle, const JGeometry::TVec3<f32>* 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
+22 -21
View File
@@ -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 */
+36 -36
View File
@@ -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<Z2CreatureEnemy> {
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<Z2CreatureCitizen> {
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;
+9 -2
View File
@@ -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();
~Z2DebugSys();
void initJAW();
void initSoundHioNode();
void debugframework();
JAISeqDataMgr* initSeSeqDataMgr(const void*);
};
#endif
#endif
+35 -35
View File
@@ -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<Z2EnvSeMgr> {
/* 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);
}
+5 -5
View File
@@ -27,12 +27,12 @@ struct Z2FxLineConfig {
struct Z2FxLineMgr : public JASGlobalInstance<Z2FxLineMgr> {
/* 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];
+43 -40
View File
@@ -9,8 +9,10 @@ public:
Z2LinkSoundStarter();
inline virtual ~Z2LinkSoundStarter();
virtual bool startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3<f32> const*, u32, f32,
f32, f32, f32, f32, u32);
virtual bool startSound(JAISoundID soundID, JAISoundHandle* handle,
const JGeometry::TVec3<f32>* 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<f32> const*, u32, f32, f32, f32, f32,
f32, u32);
/* 802C5284 */ virtual bool startSound(JAISoundID soundID, JAISoundHandle* handle,
const JGeometry::TVec3<f32>* 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;
+20 -16
View File
@@ -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 */
+101 -96
View File
@@ -9,12 +9,13 @@ s8 dComIfGp_getReverb(int roomNo);
class Z2SceneMgr : public JASGlobalInstance<Z2SceneMgr> {
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<Z2SceneMgr>::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 */
+37 -37
View File
@@ -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<Z2SeMgr> {
@@ -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() {
+78 -67
View File
@@ -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<Z2SeqMgr> {
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() {
+14 -9
View File
@@ -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<f32>& 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 */
+17 -14
View File
@@ -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<Z2SoundInfo> {
public:
Z2SoundInfo() : JAISoundInfo(true), JAUSoundInfo(true), JASGlobalInstance<Z2SoundInfo>(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<JAUSoundTable>::getInstance() != NULL && JASGlobalInstance<JAUSoundTable>::getInstance()->isValid();
}
};
+17 -18
View File
@@ -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<Z2SoundMgr> {
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<f32> const*);
/* 802A9EE8 */ virtual bool startSound(JAISoundID soundID, JAISoundHandle* handle, const JGeometry::TVec3<f32>* 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
+22 -13
View File
@@ -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<Z2SoundObjMgr>, protected JSUList<Z2CreatureEnemy> {
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<Z2CreatureEnemy>*);
void setGhostEnemyState(u8 state);
u8 getEnemyID(const char* enemyName, JSULink<Z2CreatureEnemy>* enemyLink);
void setBattleInit();
bool checkBattleFinish();
void deleteEnemyAll();
bool removeEnemy(JSULink<Z2CreatureEnemy>*);
bool removeEnemy(JSULink<Z2CreatureEnemy>* 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<Z2CreatureEnemy>* getEnemyList() { return this; }
#if VERSION == VERSION_SHIELD_DEBUG
JSUList<Z2SoundObjBase>* getAllList() { return &allList_; }
#endif
private:
/* 0x0C */ Z2EnemyArea mEnemyArea;
#if VERSION == VERSION_SHIELD_DEBUG
/* 0x0C */ JSUList<Z2SoundObjBase> 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() {
+56 -53
View File
@@ -6,33 +6,33 @@
class Z2SoundStarter;
class Z2SoundObjBase : public Z2SoundHandles {
class Z2SoundObjBase : public Z2SoundHandles
#if VERSION == VERSION_SHIELD_DEBUG
, public JSULink<Z2SoundObjBase>
#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<f32>* mSoundPos;
/* 0x14 */ Z2SoundStarter* soundStarter_;
/* 0x18 */ JGeometry::TVec3<f32>* 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<f32> const&, f32, Z2SoundStarter*, u32,
s8);
/* 802BF890 */ u32 getSoundID(JAUSoundAnimationSound const*,
JGeometry::TVec3<f32> const&, f32);
/* 802BF898 */ bool playsSound(JAUSoundAnimationSound const*, JGeometry::TVec3<f32> const&,
f32);
/* 802BF660 */ void startSoundInner(const JGeometry::TVec3<f32>& pos, f32 param_1,
Z2SoundStarter* soundStarter, u32 mapinfo, s8 reverb);
/* 802BF890 */ u32 getSoundID(const JAUSoundAnimationSound* animationSound, const JGeometry::TVec3<f32>&, f32);
/* 802BF898 */ bool playsSound(const JAUSoundAnimationSound* animationSound, const JGeometry::TVec3<f32>&, 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<f32> field_0x20;
/* 0x2C */ JGeometry::TVec3<f32> 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 */
+7 -6
View File
@@ -4,14 +4,15 @@
#include "JSystem/JAudio2/JAISoundStarter.h"
struct Z2SoundStarter : public JAISoundStarter, public JASGlobalInstance<Z2SoundStarter> {
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<f32> const*);
virtual bool startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3<f32> const*, u32, float,
float, float, float, float, u32);
virtual bool startSound(JAISoundID soundID, JAISoundHandle* handlePtr, const JGeometry::TVec3<f32>* posPtr);
virtual bool startSound(JAISoundID soundID, JAISoundHandle* handlePtr,
const JGeometry::TVec3<f32>* posPtr, u32 mapinfo, f32 fxMix,
f32 pitch, f32 volume, f32 pan, f32 dolby, u32 moveSteps);
};
inline Z2SoundStarter* Z2GetSoundStarter() {
+6 -6
View File
@@ -2,7 +2,7 @@
#define Z2STATUSMGR_H
#include "JSystem/JAudio2/JASGadget.h"
#include "dolphin/mtx.h"
#include <dolphin/mtx.h>
struct Z2StatusMgr : public JASGlobalInstance<Z2StatusMgr> {
Z2StatusMgr();
@@ -13,13 +13,13 @@ struct Z2StatusMgr : public JASGlobalInstance<Z2StatusMgr> {
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<Z2StatusMgr> {
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; }
+40 -21
View File
@@ -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<Z2WolfHowlMgr> {
@@ -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 */
+2 -2
View File
@@ -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; }
+1
View File
@@ -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();
+8 -1
View File
@@ -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 ));
}
+53 -41
View File
@@ -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<JAISe>* param_1, u32 param_2) : JSULink<JAISe>(this) {
inner_.mSoundStrategyMgr = param_1;
inner_.seMgr = param_0;
inner_.mProperPriority = param_2;
JAISe::JAISe(JAISeMgr* seMgr, JAISoundStrategyMgr<JAISe>* soundStrategyMgr, u32 priority) : JSULink<JAISe>(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___5JAISeF10JAISoundIDPCQ29JGeometry8TVec3<f>P11JAIAudience */
void JAISe::JAISeMgr_startID_(JAISoundID param_0, JGeometry::TVec3<f32> const* param_1, JAIAudience* param_2) {
start_JAISound_(param_0, param_1, param_2);
void JAISe::JAISeMgr_startID_(JAISoundID id, const JGeometry::TVec3<f32>* 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_();
+136 -120
View File
@@ -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<JAISe>* link = mSeList.getFirst();
while (link != NULL) {
JAISe* obj = link->getObject();
if (param_0.intersects(*obj->getSeqData())) {
bool JAISeCategoryMgr::isUsingSeqData(const JAISeqDataRegion& seqDataRegion) {
JSULink<JAISe>* 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<JAISe>* link = mSeList.getFirst(); link != NULL; link = link->getNext()) {
if (param_0.intersects(*link->getObject()->getSeqData())) {
link->getObject()->stop();
for (JSULink<JAISe>* 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<JAISe>* link = mSeList.getFirst(); link != NULL; link = link->getNext()) {
link->getObject()->JAISeCategoryMgr_calc_();
for (JSULink<JAISe>* 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<JAISe>* link = mSeList.getFirst();
while (link != NULL) {
JSULink<JAISe>* link_next = link->getNext();
if (link->getObject()->status_.isDead()) {
mSeList.remove(link);
delete link->getObject();
JSULink<JAISe>* i = mSeList.getFirst();
while (i != NULL) {
JSULink<JAISe>* 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<JAISe>* link = mSeList.getFirst(); link != NULL; link = link->getNext()) {
if (param_0 < link->getObject()->JAISeCategoryMgr_getProperPriority_()) {
for (JSULink<JAISe>* 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<JAISe>* link = mSeList.getFirst();
u32 lowestPriority = link->getObject()->JAISeCategoryMgr_getPriority_();
JSULink<JAISe>* 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<JAISe>* link = mSeList.getFirst(); link != NULL; link = link->getNext()) {
link->getObject()->stop(param_0);
void JAISeCategoryMgr::stop(u32 fadeTime) {
for (JSULink<JAISe>* 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<JAISe>* link = mSeList.getFirst(); link != NULL; link = link->getNext()) {
link->getObject()->stop();
for (JSULink<JAISe>* 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<JAISe>* 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<JAISe>* 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<JAISe>* link = mSeList.getFirst(); link != NULL; link = link->getNext()) {
link->getObject()->pause(param_0);
for (JSULink<JAISe>* 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<JAISe>* 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<JAISe>* 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<JAISeMgr>(param_0) {
JAISeMgr::JAISeMgr(bool setInstance) : JASGlobalInstance<JAISeMgr>(setInstance) {
mAudience = NULL;
mSeqDataMgr = NULL;
mStrategyMgr = NULL;
@@ -182,9 +185,9 @@ JAISeMgr::JAISeMgr(bool param_0) : JASGlobalInstance<JAISeMgr>(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::<JAISe>::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<f> */
bool JAISeMgr::startSound(JAISoundID param_0, JAISoundHandle* param_1,
JGeometry::TVec3<f32> const* param_2) {
if (param_1 && param_1->isSoundAttached()) {
param_1->getSound()->stop();
bool JAISeMgr::startSound(JAISoundID id, JAISoundHandle* handle, const JGeometry::TVec3<f32>* posPtr) {
if (handle && *handle) {
(*handle)->stop();
}
JAISoundInfo* pSoundInfo = JASGlobalInstance<JAISoundInfo>::getInstance();
u32 uVar4;
u32 categoryIndex;
if (pSoundInfo != NULL) {
categoryIndex = pSoundInfo->getCategory(param_0);
uVar4 = pSoundInfo->getPriority(param_0);
JAISoundInfo* soundInfoPtr = JASGlobalInstance<JAISoundInfo>::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;
}
+86 -53
View File
@@ -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<JAISeq>* param_1) : JSULink<JAISeq>(this) {
inner_.seqMgr = param_0;
inner_.strategyMgr = param_1;
JAISeq::JAISeq(JAISeqMgr* seqMgr, JAISoundStrategyMgr<JAISeq>* soundStrategyMgr) : JSULink<JAISeq>(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<JAISeq>* param_1) : JSULi
/* 802A0B64-802A0C04 29B4A4 00A0+00 0/0 1/1 0/0 .text
* JAISeqMgr_startID___6JAISeqF10JAISoundIDPCQ29JGeometry8TVec3<f>P11JAIAudienceii */
void JAISeq::JAISeqMgr_startID_(JAISoundID param_0, JGeometry::TVec3<f32> 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<f32>* 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<f32> 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::<JASTrack>::operator new failed .\n");
}
}
} else {
JUT_WARN(124, "%s", "JASPoolAllocObject::<JASTrack>::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::<JAISoundChild>::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;
}
+3 -1
View File
@@ -4,4 +4,6 @@
JAISeqDataUser::~JAISeqDataUser() {}
JAISeqDataMgr::~JAISeqDataMgr() {}
JAISeqDataMgr::~JAISeqDataMgr() {
JUT_ASSERT(14, false);
}
+55 -57
View File
@@ -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<JAISeq>* link = mSeqList.getFirst(); link != NULL; link = link->getNext()) {
if (param_1.intersects(link->getObject()->getSeqData())) {
bool JAISeqMgr::isUsingSeqData(const JAISeqDataRegion& seqDataRegion) {
for (JSULink<JAISeq>* 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<JAISeq>* link = mSeqList.getFirst(); link != NULL; link = link->getNext()) {
if (param_1.intersects(link->getObject()->getSeqData())) {
link->getObject()->stop();
for (JSULink<JAISeq>* 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<JAISeqMgr>(param_1), mAudience(NULL) {
JAISeqMgr::JAISeqMgr(bool setInstance) : JASGlobalInstance<JAISeqMgr>(setInstance), mAudience(NULL) {
seqDataMgr_ = NULL;
field_0x10 = NULL;
field_0x70 = 16;
@@ -51,38 +41,40 @@ JAISeqMgr::JAISeqMgr(bool param_1) : JASGlobalInstance<JAISeqMgr>(param_1), mAud
/* 802A1A08-802A1AF4 29C348 00EC+00 1/1 0/0 0/0 .text freeDeadSeq___9JAISeqMgrFv */
void JAISeqMgr::freeDeadSeq_() {
JSULink<JAISeq>* link = mSeqList.getFirst();
while (link != NULL) {
JAISeq* seq = link->getObject();
JSULink<JAISeq>* next = link->getNext();
JSULink<JAISeq>* i = mSeqList.getFirst();
while (i != NULL) {
JAISeq* seq = i->getObject();
JSULink<JAISeq>* 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<f> */
bool JAISeqMgr::startSound(JAISoundID param_1, JAISoundHandle* param_2,
JGeometry::TVec3<f32> const* param_3) {
if (param_2 != NULL && *param_2) {
(*param_2)->stop();
bool JAISeqMgr::startSound(JAISoundID id, JAISoundHandle* handle, const JGeometry::TVec3<f32>* posPtr) {
if (handle != NULL && *handle) {
(*handle)->stop();
}
JAISoundInfo* soundInfo = JASGlobalInstance<JAISoundInfo>::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<JAISeq>* link = mSeqList.getFirst(); link != NULL; link = link->getNext()) {
link->getObject()->JAISeqMgr_calc_();
JSULink<JAISeq>* 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<JAISeq>* link = mSeqList.getFirst(); link != NULL; link = link->getNext()) {
link->getObject()->stop();
JSULink<JAISeq>* 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<JAISeq>* link = mSeqList.getFirst(); link != NULL; link = link->getNext()) {
link->getObject()->stop(param_0);
void JAISeqMgr::stop(u32 fadeTime) {
JSULink<JAISeq>* 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<JAISeq>* 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<JAISeq>* 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<JAISeq>* link = mSeqList.getFirst(); link != NULL; link = link->getNext()) {
link->getObject()->JAISeqMgr_mixOut_(mMove.mParams, mActivity);
JSULink<JAISeq>* 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;
}
+67 -67
View File
@@ -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___8JAISoundF10JAISoundIDPCQ29JGeometry8TVec3<f>P11JAIAudience */
void JAISound::start_JAISound_(JAISoundID param_0, JGeometry::TVec3<f32> const* param_1,
JAIAudience* param_2) {
void JAISound::start_JAISound_(JAISoundID id, const JGeometry::TVec3<f32>* 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__8JAISoundFRCQ29JGeometry8TVec3<f>PCQ29JGeometry8TVec3<f>UlP11JAIAudience */
void JAISound::newAudible(JGeometry::TVec3<f32> const& param_0,
JGeometry::TVec3<f32> const* param_1, u32 param_2, JAIAudience* param_3) {
if (param_3 != NULL) {
audience_ = param_3;
void JAISound::newAudible(const JGeometry::TVec3<f32>& pos,
const JGeometry::TVec3<f32>* 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]);
}
}
+3 -3
View File
@@ -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() {
+8 -11
View File
@@ -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;
}
+2 -7
View File
@@ -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<JAISoundInfo>(param_0) {
}
JAISoundInfo::JAISoundInfo(bool setInstance) : JASGlobalInstance<JAISoundInfo>(setInstance) {}
/* 802A2D50-802A2DB4 29D690 0064+00 1/0 2/2 0/0 .text __dt__12JAISoundInfoFv */
JAISoundInfo::~JAISoundInfo() {
JUT_ASSERT(14, false);
}
+27 -25
View File
@@ -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);
}
}
+14 -19
View File
@@ -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<JAISoundStarter>(param_0) {
}
JAISoundStarter::JAISoundStarter(bool setInstance) :
JASGlobalInstance<JAISoundStarter>(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<f> */
bool JAISoundStarter::startLevelSound(JAISoundID param_0, JAISoundHandle* param_1,
JGeometry::TVec3<f32> 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<f32>* 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;
}
+87 -81
View File
@@ -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<JAIStream>* param_2) : JSULink<JAIStream>(this) {
JAIStream::JAIStream(JAIStreamMgr* streamMgr, JAISoundStrategyMgr<JAIStream>* soundStrategyMgr) : JSULink<JAIStream>(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___9JAIStreamF10JAISoundIDlPCQ29JGeometry8TVec3<f>P11JAIAudiencei */
void JAIStream::JAIStreamMgr_startID_(JAISoundID param_1, s32 param_2,
JGeometry::TVec3<f32> 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<f32>* 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::<JAISoundChild>::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::<JAISoundChild>::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;
}
}
+6 -2
View File
@@ -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);
}
+52 -44
View File
@@ -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<JAIStreamMgr>(param_0) {
JAIStreamMgr::JAIStreamMgr(bool setInstance) : JASGlobalInstance<JAIStreamMgr>(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<f> */
bool JAIStreamMgr::startSound(JAISoundID param_1, JAISoundHandle* param_2,
JGeometry::TVec3<f32> const* param_3) {
bool JAIStreamMgr::startSound(JAISoundID id, JAISoundHandle* handle, const JGeometry::TVec3<f32>* 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<JAISoundInfo>::getInstance();
int iVar2 = -1;
if (piVar5 != NULL) {
iVar2 = piVar5->getCategory(param_1);
JAISoundInfo* soundInfo = JASGlobalInstance<JAISoundInfo>::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<JAIStream>* link = mStreamList.getFirst();
while (link != NULL) {
JAIStream* stream = link->getObject();
JSULink<JAIStream>* next = link->getNext();
JSULink<JAIStream>* i = mStreamList.getFirst();
while (i != NULL) {
JAIStream* stream = i->getObject();
JSULink<JAIStream>* 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<JAIStream>* i;
mParams.calc();
for (JSULink<JAIStream>* 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<JAIStream>* link = mStreamList.getFirst(); link != NULL; link = link->getNext()) {
link->getObject()->stop();
JSULink<JAIStream>* 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<JAIStream>* link = mStreamList.getFirst(); link != NULL; link = link->getNext()) {
link->getObject()->stop(param_0);
void JAIStreamMgr::stop(u32 fadeTime) {
JSULink<JAIStream>* 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<JAIStream>* 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<JAIStream>* 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<JAIStream>* link = mStreamList.getFirst(); link != NULL; link = link->getNext()) {
link->getObject()->JAIStreamMgr_mixOut_(mParams.mParams, mActivity);
JSULink<JAIStream>* 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::<JAIStream>::operator new failed .\n");
JUT_WARN(235, "%s", "JASPoolAllocObject::<JAIStream>::operator new failed .\n");
return NULL;
}
+29 -29
View File
@@ -1,34 +1,32 @@
//
// JASCalc
//
#include "JSystem/JSystem.h" // IWYU pragma: keep
#include "JSystem/JAudio2/JASCalc.h"
#include <dolphin/os.h>
#include "math.h"
#include "limits.h"
#include <math.h>
#include <limits.h>
/* 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<u32>(src) & 0x03) == 0);
JUT_ASSERT(227, (reinterpret_cast<u32>(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<u32>(bsrc) & 0x03);
u8 enbitsDst = (reinterpret_cast<u32>(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<u32>(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<u32>(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,
+15 -20
View File
@@ -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;
}
}
}
+14 -12
View File
@@ -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;
}
-5
View File
@@ -1,8 +1,3 @@
//
// Generated By: dol2asm
// Translation Unit: JASHeapCtrl
//
#include "JSystem/JSystem.h" // IWYU pragma: keep
#include "JSystem/JAudio2/JASHeapCtrl.h"
+42 -40
View File
@@ -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;
}
-5
View File
@@ -1,8 +1,3 @@
//
// Generated By: dol2asm
// Translation Unit: JASTrack
//
#include "JSystem/JSystem.h" // IWYU pragma: keep
#include "JSystem/JAudio2/JASTrack.h"
+43 -38
View File
@@ -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 <dolphin/os.h>
/* 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);
}
+3 -3
View File
@@ -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 */
+1 -1
View File
@@ -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;
+6 -6
View File
@@ -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 */
+1 -2
View File
@@ -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;
}
+10 -13
View File
@@ -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 */
+18 -23
View File
@@ -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);
}
@@ -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);
File diff suppressed because it is too large Load Diff
+55 -15
View File
@@ -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<JAUSectionHeap>::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
}
+96 -59
View File
@@ -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<Z2Audible>::newMemPool(0x4e);
mSoundMgr.getSeMgr()->setAudience(&mAudience);
mSoundMgr.getSeqMgr()->setAudience(&mAudience);
#if PLATFORM_WII || PLATFORM_SHIELD
Z2AudioCS::newSpkSoundMemPool();
#endif
JASPoolAllocObject<Z2SoundHandlePool>::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<f> */
bool Z2AudioMgr::startSound(JAISoundID param_0, JAISoundHandle* param_1,
JGeometry::TVec3<f32> const* param_2) {
bool Z2AudioMgr::startSound(JAISoundID soundID, JAISoundHandle* handle,
const JGeometry::TVec3<f32>* 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<f32>* posPtr) {
if (mResettingFlag) {
return 0;
}
return mSoundMgr.startSound(soundID, handle, posPtr);
}
+68 -94
View File
@@ -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 <math.h>
/* 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_<JMath::TRandom_fast_> 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_;
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+72 -49
View File
@@ -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<Z2FxLineMgr>(this) {
Z2FxLineMgr::Z2FxLineMgr() : JASGlobalInstance<Z2FxLineMgr>(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:
+198 -175
View File
@@ -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__18Z2LinkSoundStarterF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3<f>UlfffffUl */
bool Z2LinkSoundStarter::startSound(JAISoundID i_soundID, JAISoundHandle* param_1,
JGeometry::TVec3<f32> const* param_2, u32 param_3,
f32 param_4, f32 param_5, f32 param_6, f32 param_7,
f32 param_8, u32 param_9) {
bool Z2LinkSoundStarter::startSound(JAISoundID soundID, JAISoundHandle* handle,
const JGeometry::TVec3<f32>* 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__18Z2RideSoundStarterF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3<f>UlfffffUl */
bool Z2RideSoundStarter::startSound(JAISoundID i_soundID, JAISoundHandle* param_1,
JGeometry::TVec3<f32> const* param_2, u32 param_3,
f32 param_4, f32 param_5, f32 param_6, f32 param_7,
f32 param_8, u32 param_9) {
bool Z2RideSoundStarter::startSound(JAISoundID soundID, JAISoundHandle* handle,
const JGeometry::TVec3<f32>* 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);
}
+26 -26
View File
@@ -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;

Some files were not shown because too many files have changed in this diff Show More