start matching some d/snd things

This commit is contained in:
robojumper
2025-05-30 22:21:49 +02:00
parent 77e17d4c1f
commit 83456a9cd8
43 changed files with 1561 additions and 384 deletions
+25 -7
View File
@@ -2346,27 +2346,40 @@ toBeSorted/col/cc/misc_unks.cpp:
.text start:0x803598D0 end:0x80359D20 align:16
.sbss start:0x80575D28 end:0x80575D30
d/snd/d_snd.cpp:
d/snd/d_snd_mgr.cpp:
.text start:0x80359D20 end:0x8035A558 align:16
.data start:0x805485D0 end:0x80548678
.sbss start:0x80575D30 end:0x80575D38
d/snd/d_snd_actor.cpp:
.text start:0x8035A560 end:0x8035BB78 align:16
.text start:0x8035A560 end:0x8035A898 align:16
.data start:0x80548678 end:0x805486A0
d/snd/d_snd_engine.cpp:
d/snd/d_snd_3d_actor.cpp:
.text start:0x8035A8A0 end:0x8035BB78 align:16
.data start:0x805486B0 end:0x80548710
.sdata2 start:0x8057D2C0 end:0x8057D308
d/snd/d_snd_3d_engine.cpp:
.text start:0x8035BB80 end:0x8035C3F0 align:16
.data start:0x80548710 end:0x80548730
.sdata2 start:0x8057D308 end:0x8057D368
d/snd/d_snd_unk_component_1.cpp:
.text start:0x8035C3F0 end:0x8035DA88 align:16
d/snd/mgr/d_snd_mgr_bgm.cpp:
d/snd/d_snd_player_mgr.cpp:
.text start:0x8035DA90 end:0x8035F010 align:16
.data start:0x80548758 end:0x805487A0
d/snd/mgr/d_snd_mgr_unk1.cpp:
.text start:0x8035F010 end:0x80360C28 align:16
.ctors start:0x804DB914 end:0x804DB918
d/snd/mgr/d_snd_mgr_unk3.cpp:
d/snd/d_snd_3d_manager.cpp:
.text start:0x80360C30 end:0x8036145C align:16
.data start:0x805487D0 end:0x805487E0
.sdata2 start:0x8057D3B8 end:0x8057D3F8
d/snd/mgr/d_snd_mgr_enemy.cpp:
.text start:0x80361460 end:0x8036642C align:16
@@ -2382,9 +2395,14 @@ d/snd/mgr/d_snd_mgr_unk_5.cpp:
.text start:0x8037F8C0 end:0x803864C8 align:16
.ctors start:0x804DB91C end:0x804DB920
d/snd/mgr/d_snd_mgr_unk_6.cpp:
.text start:0x803864D0 end:0x8038C408 align:16
d/snd/mgr/d_snd_mgr_unk_13.cpp:
.text start:0x803864D0 end:0x803889BC align:16
.data start:0x8054A680 end:0x8054A7D0
d/snd/d_snd_source.cpp:
.text start:0x803889C0 end:0x8038C408 align:16
.ctors start:0x804DB920 end:0x804DB924
.data start:0x8054A7D0 end:0x8054AAE8
d/snd/mgr/d_snd_mgr_unk_7.cpp:
.text start:0x8038C410 end:0x8038EBF0 align:16
+193 -193
View File
@@ -1022,7 +1022,7 @@ fn_8002C010 = .text:0x8002C010; // type:function size:0x58
fn_8002C070 = .text:0x8002C070; // type:function size:0x58
fn_8002C0D0 = .text:0x8002C0D0; // type:function size:0x58
fn_8002C130 = .text:0x8002C130; // type:function size:0x24
fn_8002C160 = .text:0x8002C160; // type:function size:0x40
__dt__16dSoundSourceIf_cFv = .text:0x8002C160; // type:function size:0x40
fn_8002C1A0 = .text:0x8002C1A0; // type:function size:0xB0
fn_8002C250 = .text:0x8002C250; // type:function size:0xB8
fn_8002C310 = .text:0x8002C310; // type:function size:0x90
@@ -19805,11 +19805,11 @@ fn_80359BC0 = .text:0x80359BC0; // type:function size:0x84
fn_80359C50 = .text:0x80359C50; // type:function size:0x1C
fn_80359C70 = .text:0x80359C70; // type:function size:0x8
fn_80359C80 = .text:0x80359C80; // type:function size:0xA0
SndAudioMgr____ct = .text:0x80359D20; // type:function size:0x9C
SndAudioMgr__initialize = .text:0x80359DC0; // type:function size:0xEC
fn_80359EB0 = .text:0x80359EB0; // type:function size:0x10
SndAudioMgr__calc = .text:0x80359EC0; // type:function size:0xB8
fn_80359F80 = .text:0x80359F80; // type:function size:0x2C
__ct__9dSndMgr_cFv = .text:0x80359D20; // type:function size:0x9C
initialize__9dSndMgr_cFPQ23EGG4HeapUl = .text:0x80359DC0; // type:function size:0xEC
initHbm__9dSndMgr_cFUl = .text:0x80359EB0; // type:function size:0x10
calc__9dSndMgr_cFv = .text:0x80359EC0; // type:function size:0xB8
restoreEffectsCallback__9dSndMgr_cFv = .text:0x80359F80; // type:function size:0x2C
stateProc__Q23EGG12SoundHeapMgrFv = .text:0x80359FB0; // type:function size:0xD4
loadState__Q23EGG12SoundHeapMgrFl = .text:0x8035A090; // type:function size:0x8C
getCurrentLevel__Q23EGG12SoundHeapMgrFv = .text:0x8035A120; // type:function size:0x54
@@ -19823,8 +19823,8 @@ startSound__Q23EGG9ArcPlayerFPQ34nw4r3snd11SoundHandleUl = .text:0x8035A360; //
startSound__Q23EGG9ArcPlayerFPQ34nw4r3snd11SoundHandleUi = .text:0x8035A3A0; // type:function size:0x34
startSound__Q23EGG9ArcPlayerFPQ34nw4r3snd11SoundHandlePCc = .text:0x8035A3E0; // type:function size:0x70
setupMemoryArchive__Q23EGG9ArcPlayerFPCvPQ34nw4r3snd9SoundHeapl = .text:0x8035A450; // type:function size:0x10
fn_8035A460 = .text:0x8035A460; // type:function size:0x58
fn_8035A4C0 = .text:0x8035A4C0; // type:function size:0x8
__dt__9dSndMgr_cFv = .text:0x8035A460; // type:function size:0x58
@248@calc__9dSndMgr_cFv = .text:0x8035A4C0; // type:function size:0x8
@248@loadGroup__Q23EGG14SimpleAudioMgrFUiPQ34nw4r3snd9SoundHeapUl = .text:0x8035A4D0; // type:function size:0x8
@248@loadGroup__Q23EGG14SimpleAudioMgrFiPQ34nw4r3snd9SoundHeapUl = .text:0x8035A4E0; // type:function size:0x8
@248@loadGroup__Q23EGG14SimpleAudioMgrFUlPQ34nw4r3snd9SoundHeapUl = .text:0x8035A4F0; // type:function size:0x8
@@ -19833,13 +19833,13 @@ fn_8035A4C0 = .text:0x8035A4C0; // type:function size:0x8
@248@setupMemoryArchive__Q23EGG14SimpleAudioMgrFPCvPQ34nw4r3snd9SoundHeap = .text:0x8035A520; // type:function size:0x8
@248@openNandArchive__Q23EGG14SimpleAudioMgrFPCcPQ34nw4r3snd9SoundHeap = .text:0x8035A530; // type:function size:0x8
@248@openDvdArchive__Q23EGG14SimpleAudioMgrFPCcPQ34nw4r3snd9SoundHeap = .text:0x8035A540; // type:function size:0x8
fn_8035A550 = .text:0x8035A550; // type:function size:0x8
fn_8035A560 = .text:0x8035A560; // type:function size:0x3C
fn_8035A5A0 = .text:0x8035A5A0; // type:function size:0x54
fn_8035A600 = .text:0x8035A600; // type:function size:0x240
fn_8035A840 = .text:0x8035A840; // type:function size:0x58
fn_8035A8A0 = .text:0x8035A8A0; // type:function size:0xE8
fn_8035A990 = .text:0x8035A990; // type:function size:0x40
@248@__dt__9dSndMgr_cFv = .text:0x8035A550; // type:function size:0x8
__ct__11dSndActor_cFRQ34nw4r3snd18SoundArchivePlayer = .text:0x8035A560; // type:function size:0x3C
__dt__Q34nw4r3snd11SoundHandleFv = .text:0x8035A5A0; // type:function size:0x54 scope:weak
__cl__22SoundPropertiesCheckerFRQ34nw4r3snd11SoundHandle = .text:0x8035A600; // type:function size:0x240
__dt__11dSndActor_cFv = .text:0x8035A840; // type:function size:0x58 scope:weak
__ct__13dSnd3DActor_cFPvUc = .text:0x8035A8A0; // type:function size:0xE8
d_vt_0x34__13dSnd3DActor_cFRCQ34nw4r4math4VEC3 = .text:0x8035A990; // type:function size:0x40
fn_8035A9D0 = .text:0x8035A9D0; // type:function size:0x2C
fn_8035AA00 = .text:0x8035AA00; // type:function size:0x30
fn_8035AA30 = .text:0x8035AA30; // type:function size:0x44
@@ -19850,37 +19850,37 @@ fn_8035AB60 = .text:0x8035AB60; // type:function size:0x78
fn_8035ABE0 = .text:0x8035ABE0; // type:function size:0x44
fn_8035AC30 = .text:0x8035AC30; // type:function size:0x28
fn_8035AC60 = .text:0x8035AC60; // type:function size:0x50
fn_8035ACB0 = .text:0x8035ACB0; // type:function size:0xBC
fn_8035AD70 = .text:0x8035AD70; // type:function size:0x3C
fn_8035ADB0 = .text:0x8035ADB0; // type:function size:0xFC
fn_8035AEB0 = .text:0x8035AEB0; // type:function size:0x3C
updatePositionRelativeToPlayer__13dSnd3DActor_cFv = .text:0x8035ACB0; // type:function size:0xBC
getPositionRelativeToPlayer__13dSnd3DActor_cFv = .text:0x8035AD70; // type:function size:0x3C
updateDistanceToPlayer__13dSnd3DActor_cFv = .text:0x8035ADB0; // type:function size:0xFC
getDistanceToPlayer__13dSnd3DActor_cFv = .text:0x8035AEB0; // type:function size:0x3C
fn_8035AEF0 = .text:0x8035AEF0; // type:function size:0xE0
fn_8035AFD0 = .text:0x8035AFD0; // type:function size:0x124
fn_8035B100 = .text:0x8035B100; // type:function size:0xB4
fn_8035B1C0 = .text:0x8035B1C0; // type:function size:0x330
fn_8035B4F0 = .text:0x8035B4F0; // type:function size:0x144
fn_8035B640 = .text:0x8035B640; // type:function size:0x1FC
fn_8035B840 = .text:0x8035B840; // type:function size:0x60
fn_8035B8A0 = .text:0x8035B8A0; // type:function size:0xCC
fn_8035B970 = .text:0x8035B970; // type:function size:0x34
hasPlayingSounds__13dSnd3DActor_cCFv = .text:0x8035B840; // type:function size:0x60
isPlayingSound__13dSnd3DActor_cFUl = .text:0x8035B8A0; // type:function size:0xCC
__cl__23IsCurrentSoundIdCheckerFRQ34nw4r3snd11SoundHandle = .text:0x8035B970; // type:function size:0x34
fn_8035B9B0 = .text:0x8035B9B0; // type:function size:0x74
fn_8035BA30 = .text:0x8035BA30; // type:function size:0x20
fn_8035BA50 = .text:0x8035BA50; // type:function size:0x8
fn_8035BA60 = .text:0x8035BA60; // type:function size:0x58
fn_8035BAC0 = .text:0x8035BAC0; // type:function size:0x58
fn_8035BB20 = .text:0x8035BB20; // type:function size:0x8
fn_8035BB30 = .text:0x8035BB30; // type:function size:0x8
fn_8035BB40 = .text:0x8035BB40; // type:function size:0x8
fn_8035BB50 = .text:0x8035BB50; // type:function size:0x8
soundLabelToSoundId__13dSnd3DActor_cCFPCc = .text:0x8035BA50; // type:function size:0x8
soundIdToSoundLabel__13dSnd3DActor_cCFUl = .text:0x8035BA60; // type:function size:0x58
__dt__13dSnd3DActor_cFv = .text:0x8035BAC0; // type:function size:0x58
d_vt_0x44__13dSnd3DActor_cFv = .text:0x8035BB20; // type:function size:0x8
d_vt_0x40__13dSnd3DActor_cFv = .text:0x8035BB30; // type:function size:0x8
d_vt_0x3C__13dSnd3DActor_cFv = .text:0x8035BB40; // type:function size:0x8
d_vt_0x30__13dSnd3DActor_cFv = .text:0x8035BB50; // type:function size:0x8
@84@at_0x0c__Q34nw4r3snd12Sound3DActorFPvPQ44nw4r3snd6detail10BasicSound = .text:0x8035BB60; // type:function size:0x8
fn_8035BB70 = .text:0x8035BB70; // type:function size:0x8
fn_8035BB80 = .text:0x8035BB80; // type:function size:0x3C
@84@__dt__13dSnd3DActor_cFv = .text:0x8035BB70; // type:function size:0x8
__ct__14dSnd3DEngine_cFv = .text:0x8035BB80; // type:function size:0x3C
__dt__Q34nw4r3snd13Sound3DEngineFv = .text:0x8035BBC0; // type:function size:0x40
fn_8035BC00 = .text:0x8035BC00; // type:function size:0x428
fn_8035C030 = .text:0x8035C030; // type:function size:0x188
UpdateAmbientParam__14dSnd3DEngine_cFPCQ34nw4r3snd14Sound3DManagerPCQ34nw4r3snd12Sound3DParamUlUlPQ34nw4r3snd17SoundAmbientParam = .text:0x8035BC00; // type:function size:0x428
CalcPitch__FPCQ34nw4r4math4VEC3fRCQ34nw4r3snd14Sound3DManagerRCQ34nw4r3snd15Sound3DListenerRCQ34nw4r3snd12Sound3DParamPf = .text:0x8035C030; // type:function size:0x188
fn_8035C1C0 = .text:0x8035C1C0; // type:function size:0xDC
fn_8035C2A0 = .text:0x8035C2A0; // type:function size:0x110
fn_8035C3B0 = .text:0x8035C3B0; // type:function size:0x40
__dt__14dSnd3DEngine_cFv = .text:0x8035C3B0; // type:function size:0x40
fn_8035C3F0 = .text:0x8035C3F0; // type:function size:0x2F8
fn_8035C6F0 = .text:0x8035C6F0; // type:function size:0x44
fn_8035C740 = .text:0x8035C740; // type:function size:0x44
@@ -19919,11 +19919,11 @@ fn_8035D940 = .text:0x8035D940; // type:function size:0x58
fn_8035D9A0 = .text:0x8035D9A0; // type:function size:0x68
fn_8035DA10 = .text:0x8035DA10; // type:function size:0x4C
fn_8035DA60 = .text:0x8035DA60; // type:function size:0x28
getSoundArchivePath = .text:0x8035DA90; // type:function size:0xC
BgmManager__dtor = .text:0x8035DAA0; // type:function size:0x78
initBgmMgr = .text:0x8035DB20; // type:function size:0x48
BgmMgr__deref = .text:0x8035DB70; // type:function size:0x10
BgmManager__ctor = .text:0x8035DB80; // type:function size:0x78
getSoundArchivePath__15dSndPlayerMgr_cFv = .text:0x8035DA90; // type:function size:0xC
__dt__33SndMgrDisposer<15dSndPlayerMgr_c>Fv = .text:0x8035DAA0; // type:function size:0x78
create__33SndMgrDisposer<15dSndPlayerMgr_c>Fv = .text:0x8035DB20; // type:function size:0x48
remove__33SndMgrDisposer<15dSndPlayerMgr_c>Fv = .text:0x8035DB70; // type:function size:0x10
__ct__15dSndPlayerMgr_cFv = .text:0x8035DB80; // type:function size:0x78
fn_8035DC00 = .text:0x8035DC00; // type:function size:0x44
fn_8035DC50 = .text:0x8035DC50; // type:function size:0x8C
fn_8035DCE0 = .text:0x8035DCE0; // type:function size:0x38
@@ -19935,7 +19935,7 @@ fn_8035DE60 = .text:0x8035DE60; // type:function size:0x38
fn_8035DEA0 = .text:0x8035DEA0; // type:function size:0x50
fn_8035DEF0 = .text:0x8035DEF0; // type:function size:0x38
fn_8035DF30 = .text:0x8035DF30; // type:function size:0x24
fn_8035DF60 = .text:0x8035DF60; // type:function size:0x54
getFreeSize__15dSndPlayerMgr_cFv = .text:0x8035DF60; // type:function size:0x54
fn_8035DFC0 = .text:0x8035DFC0; // type:function size:0x3C
fn_8035E000 = .text:0x8035E000; // type:function size:0xD4
fn_8035E0E0 = .text:0x8035E0E0; // type:function size:0xCC
@@ -19962,8 +19962,8 @@ fn_8035E860 = .text:0x8035E860; // type:function size:0x14
fn_8035E880 = .text:0x8035E880; // type:function size:0x14
fn_8035E8A0 = .text:0x8035E8A0; // type:function size:0xC
fn_8035E8B0 = .text:0x8035E8B0; // type:function size:0xC
fn_8035E8C0 = .text:0x8035E8C0; // type:function size:0x90
fn_8035E950 = .text:0x8035E950; // type:function size:0x6C
startSound__15dSndPlayerMgr_cFPQ34nw4r3snd11SoundHandleUlPCQ44nw4r3snd14SoundStartable9StartInfo = .text:0x8035E8C0; // type:function size:0x90
startSound__15dSndPlayerMgr_cFPQ34nw4r3snd11SoundHandlePCcPCQ44nw4r3snd14SoundStartable9StartInfo = .text:0x8035E950; // type:function size:0x6C
fn_8035E9C0 = .text:0x8035E9C0; // type:function size:0x80
fn_8035EA40 = .text:0x8035EA40; // type:function size:0x64
fn_8035EAB0 = .text:0x8035EAB0; // type:function size:0x28
@@ -19975,12 +19975,12 @@ fn_8035EB50 = .text:0x8035EB50; // type:function size:0x3C
fn_8035EB90 = .text:0x8035EB90; // type:function size:0x80
fn_8035EC10 = .text:0x8035EC10; // type:function size:0x5C
fn_8035EC70 = .text:0x8035EC70; // type:function size:0x84
playSomeSound = .text:0x8035ED00; // type:function size:0x3C
fn_8035ED40 = .text:0x8035ED40; // type:function size:0x44
convertLabelStringToSoundId__15dSndPlayerMgr_cCFPCc = .text:0x8035ED00; // type:function size:0x3C
getSoundArchivePlayerForType__15dSndPlayerMgr_cFUc = .text:0x8035ED40; // type:function size:0x44
fn_8035ED90 = .text:0x8035ED90; // type:function size:0x5C
fn_8035EDF0 = .text:0x8035EDF0; // type:function size:0x198
loadDemoArchive__15dSndPlayerMgr_cFPCc = .text:0x8035EDF0; // type:function size:0x198
fn_8035EF90 = .text:0x8035EF90; // type:function size:0x38
fn_8035EFD0 = .text:0x8035EFD0; // type:function size:0x40
calc__15dSndPlayerMgr_cFv = .text:0x8035EFD0; // type:function size:0x40
fn_8035F010 = .text:0x8035F010; // type:function size:0x20
fn_8035F030 = .text:0x8035F030; // type:function size:0x1C
fn_8035F050 = .text:0x8035F050; // type:function size:0x50
@@ -20034,18 +20034,18 @@ fn_80360AD0 = .text:0x80360AD0; // type:function size:0x5C
fn_80360B30 = .text:0x80360B30; // type:function size:0x5C
fn_80360B90 = .text:0x80360B90; // type:function size:0x64
fn_80360C00 = .text:0x80360C00; // type:function size:0x28
fn_80360C30 = .text:0x80360C30; // type:function size:0x78
fn_80360CB0 = .text:0x80360CB0; // type:function size:0x48
fn_80360D00 = .text:0x80360D00; // type:function size:0x10
fn_80360D10 = .text:0x80360D10; // type:function size:0xE4
__dt__Q34nw4r3snd14Sound3DManagerFv = .text:0x80360E00; // type:function size:0x60
fn_80360E60 = .text:0x80360E60; // type:function size:0x118
fn_80360F80 = .text:0x80360F80; // type:function size:0xC
fn_80360F90 = .text:0x80360F90; // type:function size:0x20
fn_80360FB0 = .text:0x80360FB0; // type:function size:0xC
fn_80360FC0 = .text:0x80360FC0; // type:function size:0x18
fn_80360FE0 = .text:0x80360FE0; // type:function size:0x390
fn_80361370 = .text:0x80361370; // type:function size:0xEC
__dt__33SndMgrDisposer<15dSnd3DManager_c>Fv = .text:0x80360C30; // type:function size:0x78 scope:weak
create__33SndMgrDisposer<15dSnd3DManager_c>Fv = .text:0x80360CB0; // type:function size:0x48 scope:weak
remove__33SndMgrDisposer<15dSnd3DManager_c>Fv = .text:0x80360D00; // type:function size:0x10 scope:weak
__ct__15dSnd3DManager_cFv = .text:0x80360D10; // type:function size:0xE4
__dt__Q34nw4r3snd14Sound3DManagerFv = .text:0x80360E00; // type:function size:0x60 scope:weak
setup__15dSnd3DManager_cFv = .text:0x80360E60; // type:function size:0x118
resetCamDistance__15dSnd3DManager_cFv = .text:0x80360F80; // type:function size:0xC
setCamDistance__15dSnd3DManager_cFf = .text:0x80360F90; // type:function size:0x20
calc__15dSnd3DManager_cFv = .text:0x80360FB0; // type:function size:0xC
clearState__15dSnd3DManager_cFv = .text:0x80360FC0; // type:function size:0x18
updateFromCamera__15dSnd3DManager_cFRQ23EGG12LookAtCamera = .text:0x80360FE0; // type:function size:0x390
updateListenerPos__15dSnd3DManager_cFf = .text:0x80361370; // type:function size:0xEC
EnemySoundMgr__dtor = .text:0x80361460; // type:function size:0x78
initEnemySoundMgr = .text:0x803614E0; // type:function size:0x48
EnemySoundMgr__deref = .text:0x80361530; // type:function size:0x10
@@ -20876,7 +20876,7 @@ playButtonPressSoundWhenAdvancingTextBoxes__17SmallSoundManagerFf = .text:0x8037
fn_8037F0E0 = .text:0x8037F0E0; // type:function size:0xC
fn_8037F0F0 = .text:0x8037F0F0; // type:function size:0x60
fn_8037F150 = .text:0x8037F150; // type:function size:0x6D0
fn_8037F820 = .text:0x8037F820; // type:function size:0x8
d_s_vt_0x17C__14dSoundSource_cFv = .text:0x8037F820; // type:function size:0x8
fn_8037F830 = .text:0x8037F830; // type:function size:0x8
fn_8037F840 = .text:0x8037F840; // type:function size:0x74
fn_8037F8C0 = .text:0x8037F8C0; // type:function size:0x78
@@ -20942,7 +20942,7 @@ fn_80382210 = .text:0x80382210; // type:function size:0xE8
fn_80382300 = .text:0x80382300; // type:function size:0x28
fn_80382330 = .text:0x80382330; // type:function size:0x7C
fn_803823B0 = .text:0x803823B0; // type:function size:0x18
fn_803823D0 = .text:0x803823D0; // type:function size:0x8
d_s_vt_0x1E0__14dSoundSource_cFv = .text:0x803823D0; // type:function size:0x8
fn_803823E0 = .text:0x803823E0; // type:function size:0x14
fn_80382400 = .text:0x80382400; // type:function size:0xC
fn_80382410 = .text:0x80382410; // type:function size:0xC0
@@ -20957,9 +20957,9 @@ fn_803837C0 = .text:0x803837C0; // type:function size:0x9C
fn_80383860 = .text:0x80383860; // type:function size:0x94
fn_80383900 = .text:0x80383900; // type:function size:0x58
fn_80383960 = .text:0x80383960; // type:function size:0x9C
fn_80383A00 = .text:0x80383A00; // type:function size:0x8
fn_80383A10 = .text:0x80383A10; // type:function size:0x8
fn_80383A20 = .text:0x80383A20; // type:function size:0x4
d_s_vt_0x180__14dSoundSource_cFv = .text:0x80383A00; // type:function size:0x8
d_s_vt_0x1DC__14dSoundSource_cFv = .text:0x80383A10; // type:function size:0x8
d_s_vt_0x1D8__14dSoundSource_cFv = .text:0x80383A20; // type:function size:0x4
fn_80383A30 = .text:0x80383A30; // type:function size:0x78
initEnemyBgmRelatedMgr = .text:0x80383AB0; // type:function size:0x48
fn_80383B00 = .text:0x80383B00; // type:function size:0x10
@@ -21019,14 +21019,14 @@ fn_803858D0 = .text:0x803858D0; // type:function size:0xA0
fn_80385970 = .text:0x80385970; // type:function size:0x90
fn_80385A00 = .text:0x80385A00; // type:function size:0x8
fn_80385A10 = .text:0x80385A10; // type:function size:0x4
fn_80385A20 = .text:0x80385A20; // type:function size:0x8
d_s_vt_0x1D4__14dSoundSource_cFv = .text:0x80385A20; // type:function size:0x8
fn_80385A30 = .text:0x80385A30; // type:function size:0x4
fn_80385A40 = .text:0x80385A40; // type:function size:0x4
fn_80385A50 = .text:0x80385A50; // type:function size:0x4
fn_80385A60 = .text:0x80385A60; // type:function size:0x8
fn_80385A70 = .text:0x80385A70; // type:function size:0x4
fn_80385A80 = .text:0x80385A80; // type:function size:0x4
fn_80385A90 = .text:0x80385A90; // type:function size:0x34
d_s_vt_0x1CC__14dSoundSource_cFv = .text:0x80385A80; // type:function size:0x4
d_s_vt_0x1C0__14dSoundSource_cFv = .text:0x80385A90; // type:function size:0x34
fn_80385AD0 = .text:0x80385AD0; // type:function size:0x8
fn_80385AE0 = .text:0x80385AE0; // type:function size:0x8
fn_80385AF0 = .text:0x80385AF0; // type:function size:0x4
@@ -21038,7 +21038,7 @@ fn_80385B40 = .text:0x80385B40; // type:function size:0x8
fn_80385B50 = .text:0x80385B50; // type:function size:0x10
fn_80385B60 = .text:0x80385B60; // type:function size:0x10
fn_80385B70 = .text:0x80385B70; // type:function size:0x8
fn_80385B80 = .text:0x80385B80; // type:function size:0x4
d_s_vt_0x188__14dSoundSource_cFv = .text:0x80385B80; // type:function size:0x4
fn_80385B90 = .text:0x80385B90; // type:function size:0x4
fn_80385BA0 = .text:0x80385BA0; // type:function size:0x8
fn_80385BB0 = .text:0x80385BB0; // type:function size:0x14
@@ -21103,12 +21103,12 @@ fn_80386410 = .text:0x80386410; // type:function size:0x8
fn_80386420 = .text:0x80386420; // type:function size:0x8
fn_80386430 = .text:0x80386430; // type:function size:0x8
fn_80386440 = .text:0x80386440; // type:function size:0x8
fn_80386450 = .text:0x80386450; // type:function size:0x8
@4@d_vt_0x38__14dSoundSource_cFbi = .text:0x80386450; // type:function size:0x8
fn_80386460 = .text:0x80386460; // type:function size:0x8
fn_80386470 = .text:0x80386470; // type:function size:0x8
fn_80386480 = .text:0x80386480; // type:function size:0x8
fn_80386490 = .text:0x80386490; // type:function size:0x8
fn_803864A0 = .text:0x803864A0; // type:function size:0x8
@4@SetupSound__14dSoundSource_cFPQ34nw4r3snd11SoundHandleUlPCQ44nw4r3snd14SoundStartable9StartInfoPv = .text:0x80386480; // type:function size:0x8
@4@d_vt_0x5C__14dSoundSource_cFv = .text:0x80386490; // type:function size:0x8
@4@d_vt_0x58__14dSoundSource_cFv = .text:0x803864A0; // type:function size:0x8
fn_803864B0 = .text:0x803864B0; // type:function size:0x8
fn_803864C0 = .text:0x803864C0; // type:function size:0x8
fn_803864D0 = .text:0x803864D0; // type:function size:0x164
@@ -21130,16 +21130,16 @@ fn_80386DE0 = .text:0x80386DE0; // type:function size:0x110
fn_80386EF0 = .text:0x80386EF0; // type:function size:0x80
fn_80386F70 = .text:0x80386F70; // type:function size:0x1A4C
soundForActorInitRelated_803889c0 = .text:0x803889C0; // type:function size:0x4
fn_803889D0 = .text:0x803889D0; // type:function size:0x108
fn_80388AE0 = .text:0x80388AE0; // type:function size:0xC4
__ct__14dSoundSource_cFUcP9dAcBase_cii = .text:0x803889D0; // type:function size:0x108
__dt__14dSoundSource_cFv = .text:0x80388AE0; // type:function size:0xC4
fn_80388BB0 = .text:0x80388BB0; // type:function size:0x118
fn_80388CD0 = .text:0x80388CD0; // type:function size:0x9C
fn_80388D70 = .text:0x80388D70; // type:function size:0x80
fn_80388DF0 = .text:0x80388DF0; // type:function size:0xC
fn_80388E00 = .text:0x80388E00; // type:function size:0x88
fn_80388E90 = .text:0x80388E90; // type:function size:0x84
fn_80388F20 = .text:0x80388F20; // type:function size:0x4
fn_80388F30 = .text:0x80388F30; // type:function size:0x8
d_s_vt_0x184__14dSoundSource_cFv = .text:0x80388E90; // type:function size:0x84
d_s_vt_0x18C__14dSoundSource_cFv = .text:0x80388F20; // type:function size:0x4
hasPlayingSounds__14dSoundSource_cCFv = .text:0x80388F30; // type:function size:0x8
fn_80388F40 = .text:0x80388F40; // type:function size:0x8
fn_80388F50 = .text:0x80388F50; // type:function size:0x48
fn_80388FA0 = .text:0x80388FA0; // type:function size:0x14
@@ -21148,8 +21148,8 @@ fn_80389050 = .text:0x80389050; // type:function size:0x68
fn_803890C0 = .text:0x803890C0; // type:function size:0x18
fn_803890E0 = .text:0x803890E0; // type:function size:0x1C
fn_80389100 = .text:0x80389100; // type:function size:0x60
fn_80389160 = .text:0x80389160; // type:function size:0x40
fn_803891A0 = .text:0x803891A0; // type:function size:0xB0
d_s_vt_0x190__14dSoundSource_cFv = .text:0x80389160; // type:function size:0x40
d_vt_0x38__14dSoundSource_cFbi = .text:0x803891A0; // type:function size:0xB0
fn_80389250 = .text:0x80389250; // type:function size:0x30
fn_80389280 = .text:0x80389280; // type:function size:0x48
fn_803892D0 = .text:0x803892D0; // type:function size:0x64
@@ -21171,7 +21171,7 @@ fn_80389D50 = .text:0x80389D50; // type:function size:0x78
fn_80389DD0 = .text:0x80389DD0; // type:function size:0x11C
fn_80389EF0 = .text:0x80389EF0; // type:function size:0x58
fn_80389F50 = .text:0x80389F50; // type:function size:0x208
fn_8038A160 = .text:0x8038A160; // type:function size:0x6C
d_s_vt_0x19C__14dSoundSource_cFv = .text:0x8038A160; // type:function size:0x6C
fn_8038A1D0 = .text:0x8038A1D0; // type:function size:0xD8
fn_8038A2B0 = .text:0x8038A2B0; // type:function size:0x48
fn_8038A300 = .text:0x8038A300; // type:function size:0x10
@@ -21189,22 +21189,22 @@ fn_8038A740 = .text:0x8038A740; // type:function size:0x1E8
fn_8038A930 = .text:0x8038A930; // type:function size:0x1D0
fn_8038AB00 = .text:0x8038AB00; // type:function size:0x258
fn_8038AD60 = .text:0x8038AD60; // type:function size:0x58
fn_8038ADC0 = .text:0x8038ADC0; // type:function size:0xAC
fn_8038AE70 = .text:0x8038AE70; // type:function size:0x98
fn_8038AF10 = .text:0x8038AF10; // type:function size:0x254
SetupSound__14dSoundSource_cFPQ34nw4r3snd11SoundHandleUlPCQ44nw4r3snd14SoundStartable9StartInfoPv = .text:0x8038ADC0; // type:function size:0xAC
d_s_vt_0x1AC__14dSoundSource_cFv = .text:0x8038AE70; // type:function size:0x98
d_s_vt_0x1B0__14dSoundSource_cFv = .text:0x8038AF10; // type:function size:0x254
getVolumePercentMaybe = .text:0x8038B170; // type:function size:0x78
fn_8038B1F0 = .text:0x8038B1F0; // type:function size:0x90
fn_8038B280 = .text:0x8038B280; // type:function size:0x94
fn_8038B320 = .text:0x8038B320; // type:function size:0x24
d_s_vt_0x1C8__14dSoundSource_cFv = .text:0x8038B320; // type:function size:0x24
fn_8038B350 = .text:0x8038B350; // type:function size:0x30
fn_8038B380 = .text:0x8038B380; // type:function size:0x8
fn_8038B390 = .text:0x8038B390; // type:function size:0x4
fn_8038B3A0 = .text:0x8038B3A0; // type:function size:0x8
fn_8038B3B0 = .text:0x8038B3B0; // type:function size:0x4
fn_8038B3C0 = .text:0x8038B3C0; // type:function size:0x54
fn_8038B420 = .text:0x8038B420; // type:function size:0x60
fn_8038B480 = .text:0x8038B480; // type:function size:0x74
fn_8038B500 = .text:0x8038B500; // type:function size:0x84
d_s_vt_0x194__14dSoundSource_cFv = .text:0x8038B380; // type:function size:0x8
d_vt_0x58__14dSoundSource_cFv = .text:0x8038B390; // type:function size:0x4
d_s_vt_0x1A0__14dSoundSource_cFv = .text:0x8038B3A0; // type:function size:0x8
d_vt_0x5C__14dSoundSource_cFv = .text:0x8038B3B0; // type:function size:0x4
d_s_vt_0x1B4__14dSoundSource_cFv = .text:0x8038B3C0; // type:function size:0x54
d_s_vt_0x1B8__14dSoundSource_cFv = .text:0x8038B420; // type:function size:0x60
d_s_vt_0x1BC__14dSoundSource_cFv = .text:0x8038B480; // type:function size:0x74
d_s_vt_0x1C4__14dSoundSource_cFv = .text:0x8038B500; // type:function size:0x84
fn_8038B590 = .text:0x8038B590; // type:function size:0x24
fn_8038B5C0 = .text:0x8038B5C0; // type:function size:0x24
fn_8038B5F0 = .text:0x8038B5F0; // type:function size:0x60
@@ -21223,17 +21223,17 @@ fn_8038BB80 = .text:0x8038BB80; // type:function size:0x6C
fn_8038BBF0 = .text:0x8038BBF0; // type:function size:0x144
fn_8038BD40 = .text:0x8038BD40; // type:function size:0x20
fn_8038BD60 = .text:0x8038BD60; // type:function size:0xC
fn_8038BD70 = .text:0x8038BD70; // type:function size:0x4
d_s_vt_0x1E4__14dSoundSource_cFv = .text:0x8038BD70; // type:function size:0x4
fn_8038BD80 = .text:0x8038BD80; // type:function size:0xB8
fn_8038BE40 = .text:0x8038BE40; // type:function size:0xC4
fn_8038BF10 = .text:0x8038BF10; // type:function size:0x104
fn_8038C020 = .text:0x8038C020; // type:function size:0x8
fn_8038C030 = .text:0x8038C030; // type:function size:0x58
d_s_vt_0x1E8__14dSoundSource_cFv = .text:0x8038C020; // type:function size:0x8
getRemoConSoundVariant__14dSoundSource_cCFUl = .text:0x8038C030; // type:function size:0x58
fn_8038C090 = .text:0x8038C090; // type:function size:0xBC
fn_8038C150 = .text:0x8038C150; // type:function size:0x280
fn_8038C3D0 = .text:0x8038C3D0; // type:function size:0x18
fn_8038C3F0 = .text:0x8038C3F0; // type:function size:0x8
fn_8038C400 = .text:0x8038C400; // type:function size:0x8
__sinit_\d_snd_source_cpp = .text:0x8038C3D0; // type:function size:0x18
@88@__dt__14dSoundSource_cFv = .text:0x8038C3F0; // type:function size:0x8
@4@__dt__14dSoundSource_cFv = .text:0x8038C400; // type:function size:0x8
fn_8038C410 = .text:0x8038C410; // type:function size:0xEC
fn_8038C500 = .text:0x8038C500; // type:function size:0xC4
fn_8038C5D0 = .text:0x8038C5D0; // type:function size:0x3D0
@@ -21623,9 +21623,9 @@ fn_80399A40 = .text:0x80399A40; // type:function size:0x50
fn_80399A90 = .text:0x80399A90; // type:function size:0x44
fn_80399AE0 = .text:0x80399AE0; // type:function size:0x5C
fn_80399B40 = .text:0x80399B40; // type:function size:0x60
fn_80399BA0 = .text:0x80399BA0; // type:function size:0x78
fn_80399C20 = .text:0x80399C20; // type:function size:0x84
fn_80399CB0 = .text:0x80399CB0; // type:function size:0x10
__dt__32SndMgrDisposer<14SndMgr80399c20>Fv = .text:0x80399BA0; // type:function size:0x78
create__32SndMgrDisposer<14SndMgr80399c20>Fv = .text:0x80399C20; // type:function size:0x84
remove__32SndMgrDisposer<14SndMgr80399c20>Fv = .text:0x80399CB0; // type:function size:0x10
fn_80399CC0 = .text:0x80399CC0; // type:function size:0x34
fn_80399D00 = .text:0x80399D00; // type:function size:0x5C
fn_80399D60 = .text:0x80399D60; // type:function size:0x44
@@ -21672,7 +21672,7 @@ AIRegisterDMACallback = .text:0x8039AF80; // type:function size:0x44
AIInitDMA = .text:0x8039AFD0; // type:function size:0x7C
AIStartDMA = .text:0x8039B050; // type:function size:0x14
AIStopDMA = .text:0x8039B070; // type:function size:0x14
fn_8039B090 = .text:0x8039B090; // type:function size:0x10
AIGetDMABytesLeft = .text:0x8039B090; // type:function size:0x10
fn_8039B0A0 = .text:0x8039B0A0; // type:function size:0x18
fn_8039B0C0 = .text:0x8039B0C0; // type:function size:0x10
AICheckInit = .text:0x8039B0D0; // type:function size:0x8
@@ -21695,60 +21695,60 @@ ARCOpenDir = .text:0x8039BE10; // type:function size:0x7C
ARCReadDir = .text:0x8039BE90; // type:function size:0xBC
ARCCloseDir = .text:0x8039BF50; // type:function size:0x8
AXInit = .text:0x8039BF60; // type:function size:0x54
fn_8039BFC0 = .text:0x8039BFC0; // type:function size:0x8
fn_8039BFD0 = .text:0x8039BFD0; // type:function size:0x14
fn_8039BFF0 = .text:0x8039BFF0; // type:function size:0xAC
fn_8039C0A0 = .text:0x8039C0A0; // type:function size:0xB0
fn_8039C150 = .text:0x8039C150; // type:function size:0x1C
fn_8039C170 = .text:0x8039C170; // type:function size:0x10
fn_8039C180 = .text:0x8039C180; // type:function size:0x84
AXIsInit = .text:0x8039BFC0; // type:function size:0x8
__AXGetStackHead = .text:0x8039BFD0; // type:function size:0x14
__AXServiceCallbackStack = .text:0x8039BFF0; // type:function size:0xAC
__AXAllocInit = .text:0x8039C0A0; // type:function size:0xB0
__AXPushFreeStack = .text:0x8039C150; // type:function size:0x1C
__AXPushCallbackStack = .text:0x8039C170; // type:function size:0x10
__AXRemoveFromStack = .text:0x8039C180; // type:function size:0x84
AXFreeVoice = .text:0x8039C210; // type:function size:0x7C
AXAcquireVoice = .text:0x8039C290; // type:function size:0x184
AXSetVoicePriority = .text:0x8039C420; // type:function size:0x9C
fn_8039C4C0 = .text:0x8039C4C0; // type:function size:0x114
fn_8039C5E0 = .text:0x8039C5E0; // type:function size:0x34
fn_8039C620 = .text:0x8039C620; // type:function size:0x1C
__AXAuxInit = .text:0x8039C4C0; // type:function size:0x114
__AXGetAuxAInput = .text:0x8039C5E0; // type:function size:0x34
__AXGetAuxAOutput = .text:0x8039C620; // type:function size:0x1C
fn_8039C640 = .text:0x8039C640; // type:function size:0x20
fn_8039C660 = .text:0x8039C660; // type:function size:0x20
fn_8039C680 = .text:0x8039C680; // type:function size:0x20
fn_8039C6A0 = .text:0x8039C6A0; // type:function size:0x20
fn_8039C6C0 = .text:0x8039C6C0; // type:function size:0x34
fn_8039C700 = .text:0x8039C700; // type:function size:0x1C
__AXGetAuxBInput = .text:0x8039C6C0; // type:function size:0x34
__AXGetAuxBOutput = .text:0x8039C700; // type:function size:0x1C
fn_8039C720 = .text:0x8039C720; // type:function size:0x20
fn_8039C740 = .text:0x8039C740; // type:function size:0x20
fn_8039C760 = .text:0x8039C760; // type:function size:0x20
fn_8039C780 = .text:0x8039C780; // type:function size:0x20
fn_8039C7A0 = .text:0x8039C7A0; // type:function size:0x34
fn_8039C7E0 = .text:0x8039C7E0; // type:function size:0x1C
fn_8039C800 = .text:0x8039C800; // type:function size:0x3AC
__AXGetAuxCInput = .text:0x8039C7A0; // type:function size:0x34
__AXGetAuxCOutput = .text:0x8039C7E0; // type:function size:0x1C
__AXProcessAux = .text:0x8039C800; // type:function size:0x3AC
AXRegisterAuxACallback = .text:0x8039CBB0; // type:function size:0x64
AXRegisterAuxBCallback = .text:0x8039CC20; // type:function size:0x64
AXRegisterAuxCCallback = .text:0x8039CC90; // type:function size:0x64
AXGetAuxACallback = .text:0x8039CD00; // type:function size:0x14
AXGetAuxBCallback = .text:0x8039CD20; // type:function size:0x14
AXGetAuxCCallback = .text:0x8039CD40; // type:function size:0x14
fn_8039CD60 = .text:0x8039CD60; // type:function size:0x8
fn_8039CD70 = .text:0x8039CD70; // type:function size:0x30
fn_8039CDA0 = .text:0x8039CDA0; // type:function size:0x9BC
fn_8039D760 = .text:0x8039D760; // type:function size:0x50
__AXGetCommandListCycles = .text:0x8039CD60; // type:function size:0x8
__AXGetCommandListAddress = .text:0x8039CD70; // type:function size:0x30
__AXNextFrame = .text:0x8039CDA0; // type:function size:0x9BC
__AXClInit = .text:0x8039D760; // type:function size:0x50
AXSetMode = .text:0x8039D7B0; // type:function size:0x8
fn_8039D7C0 = .text:0x8039D7C0; // type:function size:0x8
AXGetMode = .text:0x8039D7C0; // type:function size:0x8
fn_8039D7D0 = .text:0x8039D7D0; // type:function size:0x8
fn_8039D7E0 = .text:0x8039D7E0; // type:function size:0x8
fn_8039D7F0 = .text:0x8039D7F0; // type:function size:0x8
fn_8039D800 = .text:0x8039D800; // type:function size:0x8
AXGetAuxAReturnVolume = .text:0x8039D7E0; // type:function size:0x8
AXGetAuxBReturnVolume = .text:0x8039D7F0; // type:function size:0x8
AXGetAuxCReturnVolume = .text:0x8039D800; // type:function size:0x8
AXSetMasterVolume = .text:0x8039D810; // type:function size:0x18
AXSetAuxAReturnVolume = .text:0x8039D830; // type:function size:0x8
AXSetAuxBReturnVolume = .text:0x8039D840; // type:function size:0x8
AXSetAuxCReturnVolume = .text:0x8039D850; // type:function size:0x8
fn_8039D860 = .text:0x8039D860; // type:function size:0x260
fn_8039DAC0 = .text:0x8039DAC0; // type:function size:0xB0
__AXOutNewFrame = .text:0x8039D860; // type:function size:0x260
__AXOutAiCallback = .text:0x8039DAC0; // type:function size:0xB0
fn_8039DB70 = .text:0x8039DB70; // type:function size:0xC
fn_8039DB80 = .text:0x8039DB80; // type:function size:0x54
fn_8039DBE0 = .text:0x8039DBE0; // type:function size:0x10
__AXDSPDoneCallback = .text:0x8039DBE0; // type:function size:0x10
fn_8039DBF0 = .text:0x8039DBF0; // type:function size:0x4
fn_8039DC00 = .text:0x8039DC00; // type:function size:0xEC
fn_8039DCF0 = .text:0x8039DCF0; // type:function size:0x1F8
__AXOutInitDSP = .text:0x8039DC00; // type:function size:0xEC
__AXOutInit = .text:0x8039DCF0; // type:function size:0x1F8
AXRegisterCallback = .text:0x8039DEF0; // type:function size:0x44
AXRmtGetSamplesLeft = .text:0x8039DF40; // type:function size:0x2C
AXRmtGetSamples = .text:0x8039DF70; // type:function size:0xC4
@@ -21756,12 +21756,12 @@ AXRmtAdvancePtr = .text:0x8039E040; // type:function size:0x58
fn_8039E0A0 = .text:0x8039E0A0; // type:function size:0xC
fn_8039E0B0 = .text:0x8039E0B0; // type:function size:0x6C
fn_8039E120 = .text:0x8039E120; // type:function size:0x6C
fn_8039E190 = .text:0x8039E190; // type:function size:0x178
__AXPrintStudio = .text:0x8039E190; // type:function size:0x178
fn_8039E310 = .text:0x8039E310; // type:function size:0x58
fn_8039E370 = .text:0x8039E370; // type:function size:0x15C
fn_8039E4D0 = .text:0x8039E4D0; // type:function size:0x8
fn_8039E4E0 = .text:0x8039E4E0; // type:function size:0x550
fn_8039EA30 = .text:0x8039EA30; // type:function size:0x310
__AXSyncPBs = .text:0x8039EA30; // type:function size:0x310
fn_8039ED40 = .text:0x8039ED40; // type:function size:0x8
fn_8039ED50 = .text:0x8039ED50; // type:function size:0x40
fn_8039ED90 = .text:0x8039ED90; // type:function size:0x30
@@ -21771,16 +21771,16 @@ AXSetVoiceAddr = .text:0x8039F0C0; // type:function size:0xE8
AXGetLpfCoefs = .text:0x8039F1B0; // type:function size:0xBC
AXSetMaxDspCycles = .text:0x8039F270; // type:function size:0x8
AXGetMaxVoices = .text:0x8039F280; // type:function size:0x8
fn_8039F290 = .text:0x8039F290; // type:function size:0x40
fn_8039F2D0 = .text:0x8039F2D0; // type:function size:0x64
fn_8039F340 = .text:0x8039F340; // type:function size:0x24
fn_8039F370 = .text:0x8039F370; // type:function size:0x4
fn_8039F380 = .text:0x8039F380; // type:function size:0x19C
fn_8039F520 = .text:0x8039F520; // type:function size:0x54
fn_8039F580 = .text:0x8039F580; // type:function size:0x524
__AllocDelayLine = .text:0x8039FAB0; // type:function size:0x174
__BzeroDelayLines = .text:0x8039FC30; // type:function size:0x124
__FreeDelayLine = .text:0x8039FD60; // type:function size:0x114
__AXGetCurrentProfile = .text:0x8039F290; // type:function size:0x40 scope:local
AXFXReverbHiInit = .text:0x8039F2D0; // type:function size:0x64
AXFXReverbHiShutdown = .text:0x8039F340; // type:function size:0x24
AXFXReverbHiCallback = .text:0x8039F370; // type:function size:0x4
AXFXReverbHiExpInit = .text:0x8039F380; // type:function size:0x19C
AXFXReverbHiExpShutdown = .text:0x8039F520; // type:function size:0x54
AXFXReverbHiExpCallback = .text:0x8039F580; // type:function size:0x524
__AllocDelayLine = .text:0x8039FAB0; // type:function size:0x174 scope:local
__BzeroDelayLines = .text:0x8039FC30; // type:function size:0x124 scope:local
__FreeDelayLine = .text:0x8039FD60; // type:function size:0x114 scope:local
fn_8039FE80 = .text:0x8039FE80; // type:function size:0x324
AXFXReverbStdExpGetMemSize = .text:0x803A01B0; // type:function size:0x60
AXFXReverbStdExpInit = .text:0x803A0210; // type:function size:0x17C
@@ -21788,22 +21788,22 @@ AXFXReverbStdExpSettings = .text:0x803A0390; // type:function size:0xD0
AXFXReverbStdExpSettingsUpdate = .text:0x803A0460; // type:function size:0xB4
AXFXReverbStdExpShutdown = .text:0x803A0520; // type:function size:0x54
AXFXReverbStdExpCallback = .text:0x803A0580; // type:function size:0x36C
fn_803A08F0 = .text:0x803A08F0; // type:function size:0x144
fn_803A0A40 = .text:0x803A0A40; // type:function size:0x100
fn_803A0B40 = .text:0x803A0B40; // type:function size:0xF0
fn_803A0C30 = .text:0x803A0C30; // type:function size:0x2AC
__AllocDelayLine = .text:0x803A08F0; // type:function size:0x144 scope:local
__BzeroDelayLines = .text:0x803A0A40; // type:function size:0x100 scope:local
__FreeDelayLine = .text:0x803A0B40; // type:function size:0xF0 scope:local
__InitParams = .text:0x803A0C30; // type:function size:0x2AC scope:local
AXFXReverbStdExpGetMemSizeDpl2 = .text:0x803A0EE0; // type:function size:0x60
AXFXReverbStdExpInitDpl2 = .text:0x803A0F40; // type:function size:0x198
AXFXReverbStdExpSettingsDpl2 = .text:0x803A10E0; // type:function size:0xD0
AXFXReverbStdExpSettingsUpdateDpl2 = .text:0x803A11B0; // type:function size:0xB4
AXFXReverbStdExpShutdownDpl2 = .text:0x803A1270; // type:function size:0x54
AXFXReverbStdExpCallbackDpl2 = .text:0x803A12D0; // type:function size:0x384
fn_803A1660 = .text:0x803A1660; // type:function size:0x144
fn_803A17B0 = .text:0x803A17B0; // type:function size:0x100
fn_803A18B0 = .text:0x803A18B0; // type:function size:0xF0
fn_803A19A0 = .text:0x803A19A0; // type:function size:0x2B0
fn_803A1C50 = .text:0x803A1C50; // type:function size:0xC
fn_803A1C60 = .text:0x803A1C60; // type:function size:0xC
__AllocDelayLine = .text:0x803A1660; // type:function size:0x144 scope:local
__BzeroDelayLines = .text:0x803A17B0; // type:function size:0x100 scope:local
__FreeDelayLine = .text:0x803A18B0; // type:function size:0xF0 scope:local
__InitParams = .text:0x803A19A0; // type:function size:0x2B0 scope:local
__AXFXAllocFunction = .text:0x803A1C50; // type:function size:0xC scope:local
__AXFXFreeFunction = .text:0x803A1C60; // type:function size:0xC scope:local
AXFXSetHooks = .text:0x803A1C70; // type:function size:0xC
AXFXGetHooks = .text:0x803A1C80; // type:function size:0x14
PPCMfmsr = .text:0x803A1CA0; // type:function size:0x8 scope:global
@@ -22597,18 +22597,18 @@ fn_803CDC00 = .text:0x803CDC00; // type:function size:0x18
fn_803CDC20 = .text:0x803CDC20; // type:function size:0x70
fn_803CDC90 = .text:0x803CDC90; // type:function size:0x6C
MEMGetNextListObject = .text:0x803CDD00; // type:function size:0x20
dsp__DSPCheckMailToDSP = .text:0x803CDD20; // type:function size:0x10
dsp__DSPCheckMailFromDSP = .text:0x803CDD30; // type:function size:0x10
dsp__DSPReadMailFromDSP = .text:0x803CDD40; // type:function size:0x14
dsp__DSPSendMailToDSP = .text:0x803CDD60; // type:function size:0x14
dsp__DSPInit = .text:0x803CDD80; // type:function size:0xC0
DSPCheckMailToDSP = .text:0x803CDD20; // type:function size:0x10
DSPCheckMailFromDSP = .text:0x803CDD30; // type:function size:0x10
DSPReadMailFromDSP = .text:0x803CDD40; // type:function size:0x14
DSPSendMailToDSP = .text:0x803CDD60; // type:function size:0x14
DSPInit = .text:0x803CDD80; // type:function size:0xC0
fn_803CDE40 = .text:0x803CDE40; // type:function size:0x8
fn_803CDE50 = .text:0x803CDE50; // type:function size:0x70
DSPAddTask = .text:0x803CDE50; // type:function size:0x70
fn_803CDEC0 = .text:0x803CDEC0; // type:function size:0xBC
dsp____DSP_debug_printf = .text:0x803CDF80; // type:function size:0x50
__DSP_debug_printf = .text:0x803CDF80; // type:function size:0x50
fn_803CDFD0 = .text:0x803CDFD0; // type:function size:0x42C
dsp____DSP_exec_task = .text:0x803CE400; // type:function size:0x1A4
dsp____DSP_boot_task = .text:0x803CE5B0; // type:function size:0x18C
__DSP_exec_task = .text:0x803CE400; // type:function size:0x1A4
__DSP_boot_task = .text:0x803CE5B0; // type:function size:0x18C
fn_803CE740 = .text:0x803CE740; // type:function size:0xA0
fn_803CE7E0 = .text:0x803CE7E0; // type:function size:0x88
ESP_InitLib = .text:0x803CE870; // type:function size:0x54 scope:global
@@ -37630,22 +37630,22 @@ __vt__12dCcMassS_Obj = .data:0x80548598; // type:object size:0xC
__vt__4dCcS = .data:0x805485A8; // type:object size:0xC
lbl_805485B8 = .data:0x805485B8; // type:object size:0xC
lbl_805485C4 = .data:0x805485C4; // type:object size:0xC
lbl_805485D0 = .data:0x805485D0; // type:object size:0xA8
lbl_80548678 = .data:0x80548678; // type:object size:0xC
lbl_80548684 = .data:0x80548684; // type:object size:0x1C
lbl_805486A0 = .data:0x805486A0; // type:object size:0x10
lbl_805486B0 = .data:0x805486B0; // type:object size:0x60
lbl_80548710 = .data:0x80548710; // type:object size:0x20
__vt__9dSndMgr_c = .data:0x805485D0; // type:object size:0xA8
__vt__22SoundPropertiesChecker = .data:0x80548678; // type:object size:0xC
__vt__11dSndActor_c = .data:0x80548684; // type:object size:0x1C scope:weak
__vt__23IsCurrentSoundIdChecker = .data:0x805486A0; // type:object size:0x10
__vt__13dSnd3DActor_c = .data:0x805486B0; // type:object size:0x60
__vt__14dSnd3DEngine_c = .data:0x80548710; // type:object size:0x20
lbl_80548730 = .data:0x80548730; // type:object size:0x28
lbl_80548758 = .data:0x80548758; // type:object size:0x14 data:string
lbl_8054876C = .data:0x8054876C; // type:object size:0x14 data:string
lbl_80548780 = .data:0x80548780; // type:object size:0x10
lbl_80548790 = .data:0x80548790; // type:object size:0x10
__vt__15dSndPlayerMgr_c = .data:0x80548780; // type:object size:0x10
__vt__33SndMgrDisposer<15dSndPlayerMgr_c> = .data:0x80548790; // type:object size:0xC
lbl_805487A0 = .data:0x805487A0; // type:object size:0xC
lbl_805487AC = .data:0x805487AC; // type:object size:0xC
lbl_805487B8 = .data:0x805487B8; // type:object size:0xC
lbl_805487C4 = .data:0x805487C4; // type:object size:0xC
lbl_805487D0 = .data:0x805487D0; // type:object size:0x10
__vt__33SndMgrDisposer<15dSnd3DManager_c> = .data:0x805487D0; // type:object size:0xC scope:weak
lbl_805487E0 = .data:0x805487E0; // type:object size:0xAC
lbl_8054888C = .data:0x8054888C; // type:object size:0xC
lbl_80548898 = .data:0x80548898; // type:object size:0xC
@@ -37753,8 +37753,8 @@ lbl_8054A488 = .data:0x8054A488; // type:object size:0x1EC
lbl_8054A674 = .data:0x8054A674; // type:object size:0xC
lbl_8054A680 = .data:0x8054A680; // type:object size:0x150
lbl_8054A7D0 = .data:0x8054A7D0; // type:object size:0xC
lbl_8054A7DC = .data:0x8054A7DC; // type:object size:0x1EC
lbl_8054A9C8 = .data:0x8054A9C8; // type:object size:0x120
__vt__14dSoundSource_c = .data:0x8054A7DC; // type:object size:0x1EC
__vt__16dSoundSourceIf_c = .data:0x8054A9C8; // type:object size:0x120
lbl_8054AAE8 = .data:0x8054AAE8; // type:object size:0x38
lbl_8054AB20 = .data:0x8054AB20; // type:object size:0x3F8
jumptable_8054AF18 = .data:0x8054AF18; // type:object size:0xA8 scope:local
@@ -41887,16 +41887,16 @@ l_start = .sbss:0x80575D18; // type:object size:0x4 data:4byte
l_wcsbuf_num = .sbss:0x80575D1C; // type:object size:0x4 data:4byte
sInstance__4dCcS = .sbss:0x80575D20; // type:object size:0x4 data:4byte
lbl_80575D28 = .sbss:0x80575D28; // type:object size:0x8 data:4byte
lbl_80575D30 = .sbss:0x80575D30; // type:object size:0x8 data:4byte
BGM_MGR = .sbss:0x80575D38; // type:object size:0x4 data:4byte
BGM_MGR_source = .sbss:0x80575D3C; // type:object size:0x4 data:4byte
sInstance__9dSndMgr_c = .sbss:0x80575D30; // type:object size:0x8 data:4byte
sInstance__15dSndPlayerMgr_c = .sbss:0x80575D38; // type:object size:0x4 data:4byte
sDisposer__15dSndPlayerMgr_c = .sbss:0x80575D3C; // type:object size:0x4 data:4byte
lbl_80575D40 = .sbss:0x80575D40; // type:object size:0x4 data:4byte
lbl_80575D44 = .sbss:0x80575D44; // type:object size:0x4 data:4byte
lbl_80575D48 = .sbss:0x80575D48; // type:object size:0x4 data:4byte
lbl_80575D4C = .sbss:0x80575D4C; // type:object size:0x4 data:4byte
lbl_80575D50 = .sbss:0x80575D50; // type:object size:0x8 data:4byte
lbl_80575D58 = .sbss:0x80575D58; // type:object size:0x4 data:4byte
lbl_80575D5C = .sbss:0x80575D5C; // type:object size:0x4 data:4byte
sInstance__15dSnd3DManager_c = .sbss:0x80575D58; // type:object size:0x4 data:4byte
sDisposer__15dSnd3DManager_c = .sbss:0x80575D5C; // type:object size:0x4 data:4byte
lbl_80575D60 = .sbss:0x80575D60; // type:object size:0x4 data:4byte
lbl_80575D64 = .sbss:0x80575D64; // type:object size:0x4 data:4byte
lbl_80575D68 = .sbss:0x80575D68; // type:object size:0x4 data:4byte
@@ -48389,22 +48389,22 @@ lbl_8057D3A4 = .sdata2:0x8057D3A4; // type:object size:0x4 align:4 data:float
lbl_8057D3A8 = .sdata2:0x8057D3A8; // type:object size:0x4 align:4 data:float
lbl_8057D3AC = .sdata2:0x8057D3AC; // type:object size:0x4 align:4 data:float
lbl_8057D3B0 = .sdata2:0x8057D3B0; // type:object size:0x4 align:4 data:float
lbl_8057D3B8 = .sdata2:0x8057D3B8; // type:object size:0x4 align:4 data:float
lbl_8057D3BC = .sdata2:0x8057D3BC; // type:object size:0x4 align:4 data:float
lbl_8057D3C0 = .sdata2:0x8057D3C0; // type:object size:0x4 align:4 data:float
lbl_8057D3C4 = .sdata2:0x8057D3C4; // type:object size:0x4 align:4 data:float
lbl_8057D3C8 = .sdata2:0x8057D3C8; // type:object size:0x4 align:4 data:float
lbl_8057D3CC = .sdata2:0x8057D3CC; // type:object size:0x4 align:4 data:float
lbl_8057D3D0 = .sdata2:0x8057D3D0; // type:object size:0x4 align:4 data:float
lbl_8057D3D4 = .sdata2:0x8057D3D4; // type:object size:0x4 align:4 data:float
lbl_8057D3D8 = .sdata2:0x8057D3D8; // type:object size:0x4 align:4 data:float
lbl_8057D3DC = .sdata2:0x8057D3DC; // type:object size:0x4 align:4 data:float
lbl_8057D3E0 = .sdata2:0x8057D3E0; // type:object size:0x4 align:4 data:float
lbl_8057D3E4 = .sdata2:0x8057D3E4; // type:object size:0x4 align:4 data:float
lbl_8057D3E8 = .sdata2:0x8057D3E8; // type:object size:0x4 align:4 data:float
lbl_8057D3EC = .sdata2:0x8057D3EC; // type:object size:0x4 align:4 data:float
lbl_8057D3F0 = .sdata2:0x8057D3F0; // type:object size:0x4 align:4 data:float
lbl_8057D3F4 = .sdata2:0x8057D3F4; // type:object size:0x4 align:4 data:float
@8273 = .sdata2:0x8057D3B8; // type:object size:0x4 scope:local align:4 data:float
@8274 = .sdata2:0x8057D3BC; // type:object size:0x4 scope:local align:4 data:float
@8275 = .sdata2:0x8057D3C0; // type:object size:0x4 scope:local align:4 data:float
@8276 = .sdata2:0x8057D3C4; // type:object size:0x4 scope:local align:4 data:float
@8344 = .sdata2:0x8057D3C8; // type:object size:0x4 scope:local align:4 data:float
@8345 = .sdata2:0x8057D3CC; // type:object size:0x4 scope:local align:4 data:float
@8346 = .sdata2:0x8057D3D0; // type:object size:0x4 scope:local align:4 data:float
@8347 = .sdata2:0x8057D3D4; // type:object size:0x4 scope:local align:4 data:float
@8348 = .sdata2:0x8057D3D8; // type:object size:0x4 scope:local align:4 data:float
@8349 = .sdata2:0x8057D3DC; // type:object size:0x4 scope:local align:4 data:float
@8364 = .sdata2:0x8057D3E0; // type:object size:0x4 scope:local align:4 data:float
@8365 = .sdata2:0x8057D3E4; // type:object size:0x4 scope:local align:4 data:float
@8485 = .sdata2:0x8057D3E8; // type:object size:0x4 scope:local align:4 data:float
@8486 = .sdata2:0x8057D3EC; // type:object size:0x4 scope:local align:4 data:float
@8487 = .sdata2:0x8057D3F0; // type:object size:0x4 scope:local align:4 data:float
@8488 = .sdata2:0x8057D3F4; // type:object size:0x4 scope:local align:4 data:float
lbl_8057D3F8 = .sdata2:0x8057D3F8; // type:object size:0x4 align:4 data:float
lbl_8057D3FC = .sdata2:0x8057D3FC; // type:object size:0x4 align:4 data:float
lbl_8057D400 = .sdata2:0x8057D400; // type:object size:0x4 align:4 data:float
@@ -50394,7 +50394,7 @@ sRumblePreset7__9dRumble_c = .bss:0x805A07CC; // type:object size:0xC data:4byte
sRumblePreset8__9dRumble_c = .bss:0x805A07D8; // type:object size:0xC data:4byte
sRumblePreset9__9dRumble_c = .bss:0x805A07E4; // type:object size:0xC data:4byte
sRumblePreset10__9dRumble_c = .bss:0x805A07F0; // type:object size:0xC data:4byte
@LOCAL@play__9dRumble_cFv@rumble_strings = .bss:0x805A07FC; // type:object size:0x42 scope:local data:byte
@LOCAL@execute__9dRumble_cFv@rumble_strings = .bss:0x805A07FC; // type:object size:0x42 scope:local data:byte
@LOCAL@start__9dRumble_cFRC14dRumbleEntry_cUl@rumble_string = .bss:0x805A0840; // type:object size:0x21 scope:local data:byte
@LOCAL@getCurrentStageDirectory__22CurrentStageArcManagerFv@sStageDirTmp = .bss:0x805A0868; // type:object size:0x40 scope:local data:byte
s_roomArcTmp = .bss:0x805A08A8; // type:object size:0x20 scope:local data:byte
+8 -6
View File
@@ -702,18 +702,20 @@ config.libs = [
"objects": [
# These are very low quality splits since nobody has figured
# out enough detail. Need to look into nw4r::snd first
Object(NonMatching, "d/snd/d_snd.cpp"),
Object(NonMatching, "d/snd/d_snd_actor.cpp"),
Object(NonMatching, "d/snd/d_snd_engine.cpp"),
Object(NonMatching, "d/snd/d_snd_mgr.cpp"),
Object(Matching, "d/snd/d_snd_actor.cpp"),
Object(NonMatching, "d/snd/d_snd_3d_actor.cpp"),
Object(NonMatching, "d/snd/d_snd_3d_engine.cpp"),
Object(NonMatching, "d/snd/d_snd_unk_component_1.cpp"),
Object(NonMatching, "d/snd/mgr/d_snd_mgr_bgm.cpp"),
Object(NonMatching, "d/snd/d_snd_player_mgr.cpp"),
Object(NonMatching, "d/snd/mgr/d_snd_mgr_unk1.cpp"),
Object(NonMatching, "d/snd/mgr/d_snd_mgr_unk3.cpp"),
Object(Matching, "d/snd/d_snd_3d_manager.cpp"),
Object(NonMatching, "d/snd/mgr/d_snd_mgr_enemy.cpp"),
Object(NonMatching, "d/snd/d_snd_unk_component_2.cpp"),
Object(NonMatching, "d/snd/mgr/d_snd_mgr_effect.cpp"),
Object(NonMatching, "d/snd/mgr/d_snd_mgr_unk_5.cpp"),
Object(NonMatching, "d/snd/mgr/d_snd_mgr_unk_6.cpp"),
Object(NonMatching, "d/snd/mgr/d_snd_mgr_unk_13.cpp"),
Object(NonMatching, "d/snd/d_snd_source.cpp"),
Object(NonMatching, "d/snd/mgr/d_snd_mgr_unk_7.cpp"),
Object(NonMatching, "d/snd/mgr/d_snd_mgr_unk_8.cpp"),
Object(NonMatching, "d/snd/mgr/d_snd_mgr_unk_9.cpp"),
+5 -78
View File
@@ -4,6 +4,7 @@
#include "UnknownTypeBelongings.h"
#include "common.h"
#include "d/d_base.h"
#include "d/snd/d_snd_source.h"
#include "m/m_allocator.h"
#include "m/m_angle.h"
#include "m/m_vec.h"
@@ -13,83 +14,9 @@
class dAcBase_c;
struct cBgS_PolyInfo;
struct SoundSource {
virtual ~SoundSource() {}
// TODO there's probably multiple inheritance involved and stuff
#define SOUNDSOURCE_VIRTUAL(offset) virtual void vt_##offset();
SOUNDSOURCE_VIRTUAL(0x0C);
SOUNDSOURCE_VIRTUAL(0x10);
SOUNDSOURCE_VIRTUAL(0x14);
SOUNDSOURCE_VIRTUAL(0x18);
SOUNDSOURCE_VIRTUAL(0x1C);
SOUNDSOURCE_VIRTUAL(0x20);
SOUNDSOURCE_VIRTUAL(0x24);
SOUNDSOURCE_VIRTUAL(0x28);
SOUNDSOURCE_VIRTUAL(0x2C);
SOUNDSOURCE_VIRTUAL(0x30);
SOUNDSOURCE_VIRTUAL(0x34);
SOUNDSOURCE_VIRTUAL(0x38);
SOUNDSOURCE_VIRTUAL(0x3C);
SOUNDSOURCE_VIRTUAL(0x40);
SOUNDSOURCE_VIRTUAL(0x44);
virtual bool shutdown(); // 0x48
SOUNDSOURCE_VIRTUAL(0x4C);
SOUNDSOURCE_VIRTUAL(0x50);
SOUNDSOURCE_VIRTUAL(0x54);
SOUNDSOURCE_VIRTUAL(0x58);
SOUNDSOURCE_VIRTUAL(0x5C);
SOUNDSOURCE_VIRTUAL(0x60);
SOUNDSOURCE_VIRTUAL(0x64);
SOUNDSOURCE_VIRTUAL(0x68);
SOUNDSOURCE_VIRTUAL(0x6C);
SOUNDSOURCE_VIRTUAL(0x70);
SOUNDSOURCE_VIRTUAL(0x74);
SOUNDSOURCE_VIRTUAL(0x78);
SOUNDSOURCE_VIRTUAL(0x7C);
SOUNDSOURCE_VIRTUAL(0x80);
SOUNDSOURCE_VIRTUAL(0x84);
SOUNDSOURCE_VIRTUAL(0x88);
SOUNDSOURCE_VIRTUAL(0x8C);
SOUNDSOURCE_VIRTUAL(0x90);
SOUNDSOURCE_VIRTUAL(0x94);
SOUNDSOURCE_VIRTUAL(0x98);
SOUNDSOURCE_VIRTUAL(0x9C);
SOUNDSOURCE_VIRTUAL(0xA0);
SOUNDSOURCE_VIRTUAL(0xA4);
SOUNDSOURCE_VIRTUAL(0xA8);
SOUNDSOURCE_VIRTUAL(0xAC);
SOUNDSOURCE_VIRTUAL(0xB0);
SOUNDSOURCE_VIRTUAL(0xB4);
SOUNDSOURCE_VIRTUAL(0xB8);
SOUNDSOURCE_VIRTUAL(0xBC);
SOUNDSOURCE_VIRTUAL(0xC0);
SOUNDSOURCE_VIRTUAL(0xC4);
SOUNDSOURCE_VIRTUAL(0xC8);
SOUNDSOURCE_VIRTUAL(0xCC);
SOUNDSOURCE_VIRTUAL(0xD0);
SOUNDSOURCE_VIRTUAL(0xD4);
SOUNDSOURCE_VIRTUAL(0xD8);
SOUNDSOURCE_VIRTUAL(0xDC);
SOUNDSOURCE_VIRTUAL(0xE0);
SOUNDSOURCE_VIRTUAL(0xE4);
SOUNDSOURCE_VIRTUAL(0xE8);
SOUNDSOURCE_VIRTUAL(0xEC);
SOUNDSOURCE_VIRTUAL(0xF0);
SOUNDSOURCE_VIRTUAL(0xF4);
SOUNDSOURCE_VIRTUAL(0xF8);
SOUNDSOURCE_VIRTUAL(0xFC);
virtual bool isReadyMaybe(); // 0x100
virtual bool load(void *data, const char *name); // 0x104
virtual void setFrame(f32 frame); // 0x108
virtual void setRate(f32 frame); // 0x10C
virtual void set_0x164(UNKWORD val); // 0x114
};
struct SoundInfo {
dAcBase_c *actor;
SoundSource *sound_source;
dSoundSourceIf_c *sound_source;
mVec3_c *obj_pos;
TListNode<SoundInfo> mLink;
};
@@ -143,7 +70,7 @@ public:
/* 0x68 */ mHeapAllocator_c heap_allocator;
/* 0x84 */ ObjInfo *obj_info;
/* 0x88 */ TList<SoundInfo, 12> sound_list;
/* 0x94 */ RaiiPtr<SoundSource> sound_source;
/* 0x94 */ RaiiPtr<dSoundSourceIf_c> sound_source;
/* 0x98 */ mVec3_c *obj_pos;
/* 0x9C */ mVec3_c pos_copy;
/* 0xA8 */ u32 params2;
@@ -252,7 +179,7 @@ public:
s8 viewClipIdx, ObjInfo *objInfo
);
/* 8002c690 */ SoundSource *FUN_8002c690();
/* 8002c690 */ dSoundSourceIf_c *FUN_8002c690();
/* 8002c710 */ int initAllocatorWork1Heap(int size, char *name, int align);
/* 8002c720 */ int initAllocator(int size, char *name, EGG::Heap *heap, int align);
/* 8002c7b0 */ bool addActorToRoom(s32 roomId);
@@ -301,7 +228,7 @@ public:
/* 8002d810 */ void FUN_8002d810();
/* 8002d830 */ void FUN_8002d830();
/* 8002d860 */ void FUN_8002d860(UNKWORD val);
/* 8002d880 */ SoundSource *getSoundSource();
/* 8002d880 */ dSoundSourceIf_c *getSoundSource();
// End of SoundSource stuff
/* 8002d890 */ void removeSoundInfo(SoundInfo *);
+94
View File
@@ -0,0 +1,94 @@
#ifndef D_SND_ACTOR_H
#define D_SND_ACTOR_H
#include "common.h"
#include "nw4r/math/math_types.h"
#include "nw4r/snd/snd_Sound3DActor.h"
#include "nw4r/snd/snd_SoundHandle.h"
class dSnd3DActor_c : public nw4r::snd::Sound3DActor {
static const u32 NUM_SOUNDS = 4;
public:
dSnd3DActor_c(UNKTYPE *, u8);
virtual ~dSnd3DActor_c() {}
virtual bool d_vt_0x30() {
return true;
}
virtual void d_vt_0x34(const nw4r::math::VEC3 &);
virtual void d_vt_0x38(bool flag, int fadeFrames) = 0;
virtual UNKWORD d_vt_0x3C() {
return 0;
}
virtual UNKWORD d_vt_0x40() {
return 0;
}
virtual UNKWORD d_vt_0x44() {
return 0;
}
virtual const nw4r::math::VEC3 &getPositionRelativeToPlayer();
virtual f32 getDistanceToPlayer(); // vt 0x4C
virtual void updatePositionRelativeToPlayer(); // vt 0x50
virtual void updateDistanceToPlayer(); // vt 0x54
virtual void d_vt_0x58() = 0;
virtual void d_vt_0x5C() = 0;
void resetFloats();
bool checkFlag(u16 flag) const {
return (mFlags & flag);
}
bool hasPlayingSounds() const;
bool isPlayingSound(u32 id);
const char *soundIdToSoundLabel(u32 soundId) const;
u32 soundLabelToSoundId(const char *soundLabel) const;
protected:
// a_ prefix to prevent multiple inheritance clashes
/* 0x7D */ u8 a_field_0x7D;
/* 0x7E */ u8 a_field_0x7E;
/* 0x7F */ u8 a_field_0x7F;
/* 0x80 */ u8 a_field_0x80;
/* 0x84 */ f32 a_field_0x84;
/* 0x88 */ f32 a_field_0x88;
/* 0x8C */ f32 a_field_0x8C;
/* 0x90 */ f32 a_field_0x90;
/* 0x94 */ f32 a_field_0x94;
/* 0x98 */ f32 a_field_0x98;
/* 0x9C */ f32 a_field_0x9C;
/* 0xA0 */ u8 a_0xA0[0xC8 - 0xA0];
/* 0xC8 */ UNKTYPE *a_field_0xC8;
/* 0xCC */ u16 mFlags;
/* 0xD0 */ nw4r::math::VEC3 mPositionRelativeToPlayer;
/* 0xDC */ f32 mDistanceToPlayer;
/* 0xE0 */ f32 a_field_0xE0;
};
// used at the very least when trying to finish Demise
class IsCurrentSoundIdChecker {
public:
IsCurrentSoundIdChecker(u32 id, bool *pResult) : mSoundId(id), mpResult(pResult) {}
~IsCurrentSoundIdChecker() {}
virtual void operator()(nw4r::snd::SoundHandle &pHandle) {
if (mSoundId == pHandle.GetId()) {
*mpResult = true;
}
}
private:
/* 0x04 */ u32 mSoundId;
/* 0x08 */ bool *mpResult;
};
#endif
+18
View File
@@ -0,0 +1,18 @@
#ifndef D_SND_3D_ENGINE
#define D_SND_3D_ENGINE
#include "nw4r/snd/snd_BasicSound.h"
#include "nw4r/snd/snd_Sound3DEngine.h"
#include "nw4r/snd/snd_Sound3DManager.h"
class dSnd3DEngine_c : public nw4r::snd::Sound3DEngine {
public:
dSnd3DEngine_c();
virtual void UpdateAmbientParam(
const nw4r::snd::Sound3DManager *mgr, const nw4r::snd::Sound3DParam *param3d, u32 unk, u32 flags,
nw4r::snd::SoundAmbientParam *paramAmb
) override;
};
#endif
+66
View File
@@ -0,0 +1,66 @@
#ifndef D_SND_3D_MANAGER_H
#define D_SND_3D_MANAGER_H
#include "d/snd/d_snd_3d_engine.h"
#include "d/snd/d_snd_util.h"
#include "egg/gfx/eggCamera.h"
#include "m/m_vec.h"
#include "nw4r/math/math_types.h"
#include "nw4r/snd/snd_Sound3DListener.h"
#include "nw4r/snd/snd_Sound3DManager.h"
class dSnd3DManager_c;
extern template class SndMgrDisposer<dSnd3DManager_c>;
class dSnd3DManager_c {
public:
SndMgrDisposer<dSnd3DManager_c> *GetDisposer() {
return &mDisposer;
}
static dSnd3DManager_c *GetInstance() {
return sInstance;
}
static dSnd3DManager_c *sInstance;
static SndMgrDisposer<dSnd3DManager_c> *sDisposer;
private:
SndMgrDisposer<dSnd3DManager_c> mDisposer;
public:
dSnd3DManager_c();
void setup();
void updateFromCamera(EGG::LookAtCamera &camera);
void setCamDistance(f32 value);
void resetCamDistance();
void calc();
void clearState();
nw4r::snd::Sound3DManager& getManager() {
return mManager;
}
const mVec3_c &getListenerPos() const {
return mSoundListenerPosition;
}
private:
void updateListenerPos(f32);
/* 0x10 */ bool mIsSetup;
/* 0x11 */ u8 field_0x11;
/* 0x14 */ dSnd3DEngine_c *mpEngine;
/* 0x18 */ nw4r::snd::Sound3DManager mManager;
/* 0x44 */ nw4r::snd::Sound3DListener mListener;
/* 0xB0 */ EGG::LookAtCamera mCamera;
/* 0x138 */ mVec3_c field_0x138;
/* 0x144 */ mVec3_c mSoundListenerPosition;
/* 0x150 */ f32 mCameraPosSqVelocity;
/* 0x154 */ f32 mCameraAtSqVelocity;
/* 0x158 */ f32 mCamDistance;
/* 0x15C */ s16 mTimer;
};
#endif
+12
View File
@@ -0,0 +1,12 @@
#ifndef D_SND_3D_ACTOR_H
#define D_SND_3D_ACTOR_H
#include "nw4r/snd/snd_SoundActor.h"
#include "nw4r/snd/snd_SoundHandle.h"
class dSndActor_c : public nw4r::snd::SoundActor {
public:
dSndActor_c(nw4r::snd::SoundArchivePlayer &rPlayer);
};
#endif
+22
View File
@@ -0,0 +1,22 @@
#ifndef D_SND_CHECKERS_H
#define D_SND_CHECKERS_H
#include "nw4r/snd/snd_SoundHandle.h"
class SoundPropertiesChecker {
public:
virtual void operator()(nw4r::snd::SoundHandle &pHandle);
private:
/* 0x04 */ u32 mSoundId;
/* 0x08 */ u32 mPlayCounter;
/* 0x0C */ u32 mPauseCounter;
/* 0x10 */ u32 mCounter3;
/* 0x14 */ u32 mCounter4;
/* 0x18 */ u32 *mpPlayCounter;
/* 0x1C */ u32 *mpPauseCounter;
/* 0x20 */ u32 *mpCounter3;
/* 0x24 */ u32 *mpCounter4;
};
#endif
+32
View File
@@ -0,0 +1,32 @@
#ifndef D_SND_MGR_H
#define D_SND_MGR_H
#include "egg/audio/eggAudioMgr.h"
#include "nw4r/snd/snd_SoundArchivePlayer.h"
class dSndMgr_c : public EGG::SimpleAudioMgr {
public:
dSndMgr_c();
virtual void calc() override;
void initialize(EGG::Heap *heap, u32 size);
void initHbm(u32 frame);
static void restoreEffectsCallback();
static dSndMgr_c *GetInstance() {
return sInstance;
}
static nw4r::snd::SoundArchivePlayer* getPlayer() {
return sInstance->ArcPlayer::getPlayer();
}
private:
static dSndMgr_c *sInstance;
/* 0x6C8 */ u8 _0x6C8[0x6CC - 0x6C8];
/* 0x6CC */ u8 field_0x6CC;
};
#endif
+61
View File
@@ -0,0 +1,61 @@
#ifndef D_SND_PLAYER_MGR_H
#define D_SND_PLAYER_MGR_H
#include "d/snd/d_snd_util.h"
#include "nw4r/snd/snd_MemorySoundArchive.h"
#include "nw4r/snd/snd_SoundArchivePlayer.h"
#include "nw4r/snd/snd_SoundHandle.h"
#include "nw4r/snd/snd_SoundStartable.h"
class dSndPlayerMgr_c;
extern template class SndMgrDisposer<dSndPlayerMgr_c>;
class dSndPlayerMgr_c {
public:
SndMgrDisposer<dSndPlayerMgr_c> *GetDisposer() {
return &mDisposer;
}
static dSndPlayerMgr_c *GetInstance() {
return sInstance;
}
static dSndPlayerMgr_c *sInstance;
static SndMgrDisposer<dSndPlayerMgr_c> *sDisposer;
private:
SndMgrDisposer<dSndPlayerMgr_c> mDisposer;
public:
dSndPlayerMgr_c();
void calc();
u32 getFreeSize();
bool loadDemoArchive(const char *demoArchiveName);
const char *getSoundArchivePath();
u32 convertLabelStringToSoundId(const char *label) const;
nw4r::snd::SoundArchivePlayer &getSoundArchivePlayerForType(u8 type);
bool checkFlag(u32 mask) const {
return mFlags & mask;
}
private:
/* 0x010 */ u8 field_0x010;
/* 0x011 */ u8 field_0x011;
/* 0x014 */ s32 field_0x014;
/* 0x018 */ s32 field_0x018;
/* 0x01C */ s32 field_0x01C;
/* 0x020 */ u32 mFlags;
virtual nw4r::snd::SoundStartable::StartResult
startSound(nw4r::snd::SoundHandle *pHandle, u32 soundId, const nw4r::snd::SoundStartable::StartInfo *pStartInfo);
virtual nw4r::snd::SoundStartable::StartResult
startSound(nw4r::snd::SoundHandle *pHandle, const char *soundLabel, const nw4r::snd::SoundStartable::StartInfo *pStartInfo);
/* 0x028 */ nw4r::snd::MemorySoundArchive mSoundArchive;
/* 0x178 */ nw4r::snd::SoundArchivePlayer mSoundArchivePlayer;
};
#endif
+167
View File
@@ -0,0 +1,167 @@
#ifndef D_SOUND_SOURCE_H
#define D_SOUND_SOURCE_H
#include "common.h"
#include "d/snd/d_snd_3d_actor.h"
#include "nw4r/ut/ut_list.h"
class dAcBase_c;
class dSoundSourceIf_c {
public:
virtual ~dSoundSourceIf_c() {}
#define SOUNDSOURCE_VIRTUAL(offset) virtual void vt_##offset() = 0;
SOUNDSOURCE_VIRTUAL(0x0C);
SOUNDSOURCE_VIRTUAL(0x10);
SOUNDSOURCE_VIRTUAL(0x14);
SOUNDSOURCE_VIRTUAL(0x18);
SOUNDSOURCE_VIRTUAL(0x1C);
SOUNDSOURCE_VIRTUAL(0x20);
SOUNDSOURCE_VIRTUAL(0x24);
SOUNDSOURCE_VIRTUAL(0x28);
SOUNDSOURCE_VIRTUAL(0x2C);
SOUNDSOURCE_VIRTUAL(0x30);
SOUNDSOURCE_VIRTUAL(0x34);
SOUNDSOURCE_VIRTUAL(0x38);
SOUNDSOURCE_VIRTUAL(0x3C);
SOUNDSOURCE_VIRTUAL(0x40);
SOUNDSOURCE_VIRTUAL(0x44);
virtual bool hasPlayingSounds() const = 0; // 0x48
SOUNDSOURCE_VIRTUAL(0x4C);
SOUNDSOURCE_VIRTUAL(0x50);
SOUNDSOURCE_VIRTUAL(0x54);
SOUNDSOURCE_VIRTUAL(0x58);
SOUNDSOURCE_VIRTUAL(0x5C);
SOUNDSOURCE_VIRTUAL(0x60);
SOUNDSOURCE_VIRTUAL(0x64);
SOUNDSOURCE_VIRTUAL(0x68);
SOUNDSOURCE_VIRTUAL(0x6C);
SOUNDSOURCE_VIRTUAL(0x70);
SOUNDSOURCE_VIRTUAL(0x74);
SOUNDSOURCE_VIRTUAL(0x78);
SOUNDSOURCE_VIRTUAL(0x7C);
SOUNDSOURCE_VIRTUAL(0x80);
SOUNDSOURCE_VIRTUAL(0x84);
SOUNDSOURCE_VIRTUAL(0x88);
SOUNDSOURCE_VIRTUAL(0x8C);
SOUNDSOURCE_VIRTUAL(0x90);
SOUNDSOURCE_VIRTUAL(0x94);
SOUNDSOURCE_VIRTUAL(0x98);
SOUNDSOURCE_VIRTUAL(0x9C);
SOUNDSOURCE_VIRTUAL(0xA0);
SOUNDSOURCE_VIRTUAL(0xA4);
SOUNDSOURCE_VIRTUAL(0xA8);
SOUNDSOURCE_VIRTUAL(0xAC);
SOUNDSOURCE_VIRTUAL(0xB0);
SOUNDSOURCE_VIRTUAL(0xB4);
SOUNDSOURCE_VIRTUAL(0xB8);
SOUNDSOURCE_VIRTUAL(0xBC);
SOUNDSOURCE_VIRTUAL(0xC0);
SOUNDSOURCE_VIRTUAL(0xC4);
SOUNDSOURCE_VIRTUAL(0xC8);
SOUNDSOURCE_VIRTUAL(0xCC);
SOUNDSOURCE_VIRTUAL(0xD0);
SOUNDSOURCE_VIRTUAL(0xD4);
SOUNDSOURCE_VIRTUAL(0xD8);
SOUNDSOURCE_VIRTUAL(0xDC);
SOUNDSOURCE_VIRTUAL(0xE0);
SOUNDSOURCE_VIRTUAL(0xE4);
SOUNDSOURCE_VIRTUAL(0xE8);
SOUNDSOURCE_VIRTUAL(0xEC);
SOUNDSOURCE_VIRTUAL(0xF0);
SOUNDSOURCE_VIRTUAL(0xF4);
SOUNDSOURCE_VIRTUAL(0xF8);
SOUNDSOURCE_VIRTUAL(0xFC);
virtual bool isReadyMaybe() = 0; // 0x100
virtual bool load(void *data, const char *name) = 0; // 0x104
virtual void setFrame(f32 frame) = 0; // 0x108
virtual void setRate(f32 frame) = 0; // 0x10C
virtual void set_0x164(UNKWORD val) = 0; // 0x114
SOUNDSOURCE_VIRTUAL(0x118);
SOUNDSOURCE_VIRTUAL(0x11C);
};
class dSoundSource_c : public dSoundSourceIf_c, public dSnd3DActor_c {
public:
dSoundSource_c(u8, dAcBase_c *, UNKWORD, UNKWORD);
virtual ~dSoundSource_c();
u32 getRemoConSoundVariant(u32 soundId) const;
// This is where it gets a bit wild and this class starts mixing in overrides between
// new virtual functions, which causes the vtable to list these functions in exactly this
// order.
virtual void d_s_vt_0x17C();
virtual void d_s_vt_0x180();
virtual void d_s_vt_0x184();
virtual void d_s_vt_0x188();
virtual void d_s_vt_0x18C();
virtual void d_s_vt_0x190();
virtual void d_s_vt_0x194();
virtual void d_vt_0x58() override;
virtual void d_s_vt_0x19C();
virtual void d_s_vt_0x1A0();
virtual void d_vt_0x5C() override;
virtual StartResult
SetupSound(nw4r::snd::SoundHandle *pHandle, u32 soundId, const StartInfo *pStartInfo, void *) override;
virtual void d_s_vt_0x1AC();
virtual void d_s_vt_0x1B0();
virtual void d_s_vt_0x1B4();
virtual void d_s_vt_0x1B8();
virtual void d_s_vt_0x1BC();
virtual void d_s_vt_0x1C0();
virtual void d_s_vt_0x1C4(bool flag, int fadeFrames);
virtual void d_s_vt_0x1C8();
virtual void d_s_vt_0x1CC();
virtual void d_vt_0x38(bool flag, int fadeFrames) override;
virtual void d_s_vt_0x1D4();
virtual void d_s_vt_0x1D8();
virtual void d_s_vt_0x1DC();
virtual void d_s_vt_0x1E0();
virtual void d_s_vt_0x1E4();
virtual void d_s_vt_0x1E8();
// Overrides of dSoundSourceIf_c
virtual bool hasPlayingSounds() const override;
private:
// at 0x00: dSoundSourceIf_c vtable
// at 0x04: dSnd3DActor_c sub-object
// at 0x58: thunk-vtable
/* 0xE8 */ u8 field_0xE8[0xF0 - 0xE8];
/* 0x0F0 */ UNKWORD field_0x0F0;
/* 0x0F4 */ UNKWORD field_0x0F4;
/* 0x0F8 */ dAcBase_c *mpPlayer;
/* 0x0FC */ u8 field_0x0FC;
/* 0x0FD */ u8 field_0x0FD;
/* 0x0FE */ u8 field_0x0FE;
/* 0x0FF */ u8 field_0x0FF;
/* 0x100 */ u8 field_0x100;
/* 0x101 */ u8 field_0x101;
/* 0x102 */ u8 field_0x102;
/* 0x104 */ UNKWORD field_0x104;
/* 0x108 */ UNKWORD field_0x108;
/* 0x10C */ UNKWORD field_0x10C;
/* 0x110 */ nw4r::ut::List field_0x110; // node offset 0xEC
/* 0x11C */ UNKWORD field_0x11C;
/* 0x120 */ nw4r::ut::List field_0x120; // node offset 0x4
/* 0x12C */ nw4r::ut::List field_0x12C; // node offset 0x4
/* 0x138 */ nw4r::ut::Node mNode;
/* 0x140 */ UNKWORD field_0x140;
/* 0x144 */ u8 _0x144[0x154 - 0x144];
/* 0x154 */ UNKWORD field_0x154;
/* 0x158 */ s16 field_0x158;
/* 0x15A */ s16 field_0x15A;
};
#endif
+42
View File
@@ -0,0 +1,42 @@
#ifndef D_SND_UTIL_H
#define D_SND_UTIL_H
#include "common.h"
#include "egg/core/eggDisposer.h"
// This setup is only inferred. d/snd uses it all over the place.
// This works for dSndPlayerMgr_c, which has a vtable of its own but the Disposer at offset 0.
// It also works for the factory at 0x80399c20, which calls a base class ctor,
// an inline ctor, and has the Disposer at offset 0x18
template <typename T>
struct SndMgrDisposer : public EGG::Disposer {
virtual ~SndMgrDisposer();
static T *create();
static void remove();
};
template <typename T>
SndMgrDisposer<T>::~SndMgrDisposer() {
if (this == T::sDisposer) {
remove();
}
}
template <typename T>
T *SndMgrDisposer<T>::create() {
if (T::sInstance == nullptr) {
T::sInstance = new T();
T::sDisposer = T::sInstance->GetDisposer();
}
return T::sInstance;
}
template <typename T>
void SndMgrDisposer<T>::remove() {
T::sInstance = nullptr;
T::sDisposer = nullptr;
}
#endif
+12 -19
View File
@@ -26,12 +26,20 @@ public:
void stopAllSound();
u32 changeNameToId(const char *name) {
return mOpenSndArchive->ConvertLabelStringToSoundId(name);
u32 id = -1;
if (mOpenSndArchive != nullptr) {
id = mOpenSndArchive->ConvertLabelStringToSoundId(name);
}
return id;
}
nw4r::snd::SoundArchivePlayer *getPlayer() {
return mActiveSndArchivePlayer;
}
nw4r::snd::SoundArchive *getArchive() {
return mOpenSndArchive;
}
void setLoadStringLabels(bool bLoad) {
mLoadLabelStringData = bLoad;
}
@@ -65,12 +73,7 @@ public:
virtual bool startSound(nw4r::snd::SoundHandle *handle, const char *name) // at 0x40
{
u32 id = -1;
if (mOpenSndArchive) {
id = changeNameToId(name);
}
return ArcPlayer::startSound(handle, id);
return ArcPlayer::startSound(handle, changeNameToId(name));
}
virtual bool prepareSound(nw4r::snd::SoundHandle *handle, u32 id) // at 0x44
@@ -85,12 +88,7 @@ public:
virtual bool prepareSound(nw4r::snd::SoundHandle *handle, const char *name) // at 0x4C
{
u32 id = -1;
if (mOpenSndArchive) {
id = changeNameToId(name);
}
return ArcPlayer::prepareSound(handle, id);
return ArcPlayer::prepareSound(handle, changeNameToId(name));
}
virtual bool holdSound(nw4r::snd::SoundHandle *handle, u32 id) // at 0x50
@@ -105,12 +103,7 @@ public:
virtual bool holdSound(nw4r::snd::SoundHandle *handle, const char *name) // at 0x58
{
u32 id = -1;
if (mOpenSndArchive) {
id = changeNameToId(name);
}
return ArcPlayer::holdSound(handle, id);
return ArcPlayer::holdSound(handle, changeNameToId(name));
}
private:
+35 -4
View File
@@ -21,9 +21,38 @@ public:
~SoundHeapMgr() {
destroySoundHeap();
}
virtual bool loadState(s32 id) {}
virtual int getCurrentLevel() {}
virtual void stateProc() {}
int saveState() {
return mSoundHeap.SaveState();
}
virtual bool loadState(s32 id) {
s32 level = mSoundHeap.GetCurrentLevel();
if (id > 0 && level >= id) {
mSoundHeap.LoadState(id);
return true;
} else {
return false;
}
}
virtual int getCurrentLevel() {
return mSoundHeap.GetCurrentLevel();
}
virtual void stateProc() {
OSMessage msg;
if (OSReceiveMessage(&mQueue1.mQueue, &msg, 0)) {
bool ok = loadState((s32)msg);
OSSendMessage(&mQueue3.mQueue, (OSMessage)ok, 0);
}
if (OSReceiveMessage(&mQueue2.mQueue, &msg, 0)) {
int ok = mSoundHeap.SaveState();
OSSendMessage(&mQueue3.mQueue, (OSMessage)ok, 0);
}
if (OSReceiveMessage(&mQueue, &msg, 0)) {
int level = getCurrentLevel();
OSSendMessage(&mQueue3.mQueue, (OSMessage)level, 0);
}
}
void createSoundHeap(Allocator *allocator, u32 size);
void destroySoundHeap();
@@ -34,7 +63,9 @@ public:
private:
nw4r::snd::SoundHeap mSoundHeap;
u8 unk[0x68 - 0x38];
// I guess we're not initializing this queue?
OSMessageQueue mQueue;
OSMessage mBuffer[4];
SoundMessageQueue mQueue1;
SoundMessageQueue mQueue2;
SoundMessageQueue mQueue3;
+1 -1
View File
@@ -12,7 +12,7 @@ namespace EGG {
struct MultiArcSimpleAudioMgr {
u8 field_0x000[0x0FC - 0x000];
s32 field_0x0FC;
ArcPlayer players[];
ArcPlayer players[1];
nw4r::snd::SoundArchivePlayer *getPlayer(int i) {
return players[i].getPlayer();
+23 -1
View File
@@ -6,7 +6,6 @@
#include "egg/core/eggHeap.h"
#include "egg/core/eggStreamDecomp.h"
namespace EGG {
class DvdRipper {
@@ -28,6 +27,29 @@ public:
typedef void (*UnkCallback)(void *);
public:
// Not sure
struct Arg {
Arg(const char *path, u8 *pOut, Heap *pHeap, EAllocDirection allocDir, u32 offset, u32 *pRead, u32 *fileSize)
: path(path),
pOut(pOut),
pHeap(pHeap),
allocDir(allocDir),
offset(offset),
pRead(pRead),
fileSize(fileSize) {}
const char *path;
u8 *pOut;
Heap *pHeap;
EAllocDirection allocDir;
u32 offset;
u32 *pRead;
u32 *fileSize;
};
static u8 *loadToMainRAM(Arg &arg) {
return loadToMainRAM(arg.path, arg.pOut, arg.pHeap, arg.allocDir, arg.offset, arg.pRead, arg.fileSize);
}
static u8 *
loadToMainRAM(s32 entryNum, u8 *pOut, Heap *pHeap, EAllocDirection allocDir, u32 offset, u32 *pRead, u32 *fileSize);
+18 -1
View File
@@ -35,6 +35,15 @@ protected:
class LookAtCamera : public BaseCamera {
public:
LookAtCamera() : mPos(0.0f, 10.0f, 0.0f), mAt(0.0f, 0.0f, 0.0f), mUp(0.0f, 1.0f, 0.0f) {}
LookAtCamera& operator=(const LookAtCamera &other) {
mViewMtx.copyFrom(other.mViewMtx);
mOtherMtx.copyFrom(other.mOtherMtx);
mPos = other.mPos;
mAt = other.mAt;
mUp = other.mUp;
return *this;
}
// Which way around?
virtual Matrix34f &getViewMatrix() override {
return mViewMtx;
@@ -53,7 +62,15 @@ public:
virtual void doDraw() override;
virtual Matrix34f &getViewMatrixOld() override;
protected:
Vector3f getDirection() const {
return mAt - mPos;
}
Vector3f getOtherDirection() const {
return mPos - mAt;
}
public:
/* 0x64 */ Vector3f mPos;
/* 0x70 */ Vector3f mAt;
/* 0x7C */ Vector3f mUp;
+9
View File
@@ -4,6 +4,7 @@
#include "common.h"
#include "egg/math/eggQuat.h"
#include "egg/math/eggVector.h"
#include "nw4r/math/math_types.h"
namespace EGG {
@@ -55,6 +56,14 @@ struct Matrix34f {
void multiplyTo(const Matrix34f &m2, Matrix34f &to) const;
void dump();
operator nw4r::math::MTX34 *() {
return (nw4r::math::MTX34 *)this;
}
operator const nw4r::math::MTX34 *() const {
return (nw4r::math::MTX34 *)this;
}
public:
void concat(const Matrix34f &, Matrix34f &) const;
void rotate(const Vector3f &rpy) const;
+1 -1
View File
@@ -2,11 +2,11 @@
#define NW4R_LYT_LAYOUT_H
#include "common.h"
#include "new.h"
#include "nw4r/lyt/lyt_animation.h"
#include "nw4r/lyt/lyt_types.h"
#include "rvl/MEM/mem_allocator.h"
#include <new>
namespace nw4r {
namespace lyt {
+31 -31
View File
@@ -327,40 +327,40 @@ namespace nw4r { namespace snd { namespace detail
ExternalSoundPlayer *mExtSoundPlayer; // size 0x04, offset 0x18
AmbientInfo mAmbientInfo; // size 0x14, offset 0x1c
SoundParam mAmbientParam; // size 0x24, offset 0x30
SoundActorParam mActorParam; // size 0x0c, offset 0x54
MoveValue<f32, int> mFadeVolume; // size 0x10, offset 0x60
MoveValue<f32, int> mPauseFadeVolume; // size 0x10, offset 0x70
bool mStartFlag; // size 0x01, offset 0x80
bool mStartedFlag; // size 0x01, offset 0x81
bool mAutoStopFlag; // size 0x01, offset 0x82
bool mFadeOutFlag; // size 0x01, offset 0x83
PauseState mPauseState; // size 0x04, offset 0x84
bool mUnPauseFlag; // size 0x01, offset 0x88
SoundActorParam mActorParam; // size 0x0c, offset 0x58
MoveValue<f32, int> mFadeVolume; // size 0x10, offset 0x64
MoveValue<f32, int> mPauseFadeVolume; // size 0x10, offset 0x74
bool mStartFlag; // size 0x01, offset 0x84
bool mStartedFlag; // size 0x01, offset 0x85
bool mAutoStopFlag; // size 0x01, offset 0x86
bool mFadeOutFlag; // size 0x01, offset 0x87
PauseState mPauseState; // size 0x04, offset 0x88
bool mUnPauseFlag; // size 0x01, offset 0x8c
/* 3 bytes padding */
s32 mAutoStopCounter; // size 0x04, offset 0x8c
u32 mUpdateCounter; // size 0x04, offset 0x90
u8 mPriority; // size 0x01, offset 0x94
u8 mVoiceOutCount; // size 0x01, offset 0x95
u8 mBiquadFilterType; // size 0x01, offset 0x96
s32 mAutoStopCounter; // size 0x04, offset 0x90
u32 mUpdateCounter; // size 0x04, offset 0x94
u8 mPriority; // size 0x01, offset 0x98
u8 mVoiceOutCount; // size 0x01, offset 0x99
u8 mBiquadFilterType; // size 0x01, offset 0x9a
/* 1 byte padding */
u32 mId; // size 0x04, offset 0x98
MoveValue<f32, int> mExtMoveVolume; // size 0x10, offset 0x9c
f32 mInitVolume; // size 0x04, offset 0xac
f32 mExtPan; // size 0x04, offset 0xb0
f32 mExtSurroundPan; // size 0x04, offset 0xb4
f32 mExtPitch; // size 0x04, offset 0xb8
f32 mLpfFreq; // size 0x04, offset 0xbc
f32 mBiquadFilterValue; // size 0x04, offset 0xc0
int mOutputLineFlag; // size 0x04, offset 0xc4
f32 mMainOutVolume; // size 0x04, offset 0xc8
f32 mMainSend; // size 0x04, offset 0xcc
f32 mFxSend[AUX_BUS_NUM]; // size 0x0c, offset 0xd0
f32 mRemoteOutVolume[4]; // size 0x10, offset 0xdc
u32 mId; // size 0x04, offset 0x9c
MoveValue<f32, int> mExtMoveVolume; // size 0x10, offset 0xa0
f32 mInitVolume; // size 0x04, offset 0xb0
f32 mExtPan; // size 0x04, offset 0xb4
f32 mExtSurroundPan; // size 0x04, offset 0xb8
f32 mExtPitch; // size 0x04, offset 0xbc
f32 mLpfFreq; // size 0x04, offset 0xc0
f32 mBiquadFilterValue; // size 0x04, offset 0xc4
int mOutputLineFlag; // size 0x04, offset 0xc8
f32 mMainOutVolume; // size 0x04, offset 0xcc
f32 mMainSend; // size 0x04, offset 0xd0
f32 mFxSend[AUX_BUS_NUM]; // size 0x0c, offset 0xd4
f32 mRemoteOutVolume[4]; // size 0x10, offset 0xe0
public:
ut::LinkListNode mPriorityLink; // size 0x08, offset 0xe0
ut::LinkListNode mSoundPlayerPlayLink; // size 0x08, offset 0xe8
ut::LinkListNode mSoundPlayerPriorityLink; // size 0x08, offset 0xf0
ut::LinkListNode mExtSoundPlayerPlayLink; // size 0x08, offset 0xf8
ut::LinkListNode mPriorityLink; // size 0x08, offset 0xf0
ut::LinkListNode mSoundPlayerPlayLink; // size 0x08, offset 0xf8
ut::LinkListNode mSoundPlayerPriorityLink; // size 0x08, offset 0x100
ut::LinkListNode mExtSoundPlayerPlayLink; // size 0x08, offset 0x108
// friends
private:
+7
View File
@@ -21,8 +21,15 @@ public:
// AmbientArgUpdateCallback
virtual void at_0x0c(void *arg, detail::BasicSound* sound) override;
const nw4r::math::VEC3 &GetPosition() const {
return mPosition;
}
void SetPosition(const math::VEC3 &rPosition);
void SetUserParam(u32 userParam) {
mUserParam = userParam;
}
private:
static void ClearUpdateCallback(SoundHandle &rHandle);
+1 -1
View File
@@ -19,7 +19,7 @@ public:
virtual void UpdateAmbientParam(const Sound3DManager*, const Sound3DParam*, u32, int, SoundAmbientParam*);
virtual s32 GetAmbientPriority(const Sound3DManager*, const Sound3DParam*, u32);
virtual s32 GetRequiredVoiceOutCount(const Sound3DManager*, const Sound3DParam*, u32);
virtual void UpdateAmbientParam(const Sound3DManager*, const Sound3DParam*, u32, u32, SoundAmbientParam*);
virtual void UpdateAmbientParam(const Sound3DManager*, const Sound3DParam*, u32, u32 flags, SoundAmbientParam*);
private:
Sound3DCalculator::CalcPanParam mPanParam; // at 0x04
+8
View File
@@ -68,10 +68,18 @@ public:
return field_0x20;
}
void SetField0x20(f32 value) {
field_0x20 = value;
}
f32 GetField0x24() const {
return field_0x24;
}
void SetField0x24(f32 value) {
field_0x24 = value;
}
void SetEngine(Sound3DEngine *engine);
enum ParamDecayCurve {
+4
View File
@@ -39,6 +39,10 @@ namespace nw4r { namespace snd
mSound->Stop(0);
}
bool IsPause() const {
return IsAttachedSound() && mSound->IsPause();
}
u32 GetId() const
{
if (IsAttachedSound())
+1
View File
@@ -5,6 +5,7 @@
#include "common.h"
#include "string.h"
#include "wstring.h"
#include "printf.h"
extern "C" bool strequals(const char *a, const char *b);
-13
View File
@@ -1,13 +0,0 @@
#ifndef SOUND_AUDIO_MANAGER_H
#define SOUND_AUDIO_MANAGER_H
#include "common.h"
#include "egg/audio/eggAudioMgr.h"
// Size: 0x6d0
class SndAudioMgr : public EGG::SimpleAudioMgr {
public:
};
#endif
+2 -2
View File
@@ -91,14 +91,14 @@ public:
return create2(ac, mdlFile, mdlName, anmName, callback, bufferOption);
}
void setSoundSource(SoundSource *pSource);
void setSoundSource(dSoundSourceIf_c *pSource);
protected:
bool loadSounds(const char *name);
void syncAnmFrame();
void setSoundRate(f32 rate);
/* 0x68 */ SoundSource *mpSoundSource;
/* 0x68 */ dSoundSourceIf_c *mpSoundSource;
/* 0x6C */ void *mpSoundData;
};
+16 -7
View File
@@ -2,16 +2,18 @@
#define MUSIC_MGRS_H
#include "common.h"
#include "d/snd/d_snd_player_mgr.h"
class BgmMgr;
class dSndPlayerMgr_c;
extern "C" BgmMgr *BGM_MGR;
#define BGM_MGR (dSndPlayerMgr_c::GetInstance())
extern "C" void fn_8035E000();
extern "C" void fn_8035E860(BgmMgr *);
extern "C" void fn_8035E310(BgmMgr *);
extern "C" void fn_8035E820(BgmMgr *);
extern "C" void fn_8035E880(BgmMgr *);
extern "C" void fn_8035E790(BgmMgr *, UNKWORD, void *);
extern "C" void fn_8035E860(dSndPlayerMgr_c *);
extern "C" void fn_8035E310(dSndPlayerMgr_c *);
extern "C" void fn_8035E820(dSndPlayerMgr_c *);
extern "C" void fn_8035E880(dSndPlayerMgr_c *);
extern "C" void fn_8035E790(dSndPlayerMgr_c *, UNKWORD, void *);
extern "C" bool fn_8035ED90(dSndPlayerMgr_c *, u8);
extern "C" void *ENEMY_SOUND_MGR;
extern "C" void fn_80362150(void *, u16);
@@ -21,6 +23,8 @@ extern "C" void fn_80362730(void *);
extern "C" void fn_80365D20(void *);
extern "C" void fn_803624F0(void *);
extern "C" void fn_80364FD0(void *, s32);
extern "C" bool fn_80364DA0(void *);
extern "C" void fn_80364D00(void*, s32);
extern "C" void *ENEMY_BGM_RELATED_MGR;
extern "C" void fn_80384570(void *, bool);
@@ -28,5 +32,10 @@ extern "C" void fn_803858D0(void *);
extern "C" void *FANFARE_SOUND_MGR;
extern "C" void AnotherSoundMgr__playSound(void *, s32);
extern "C" bool fn_803721F0(void *, u32);
extern "C" bool fn_803720E0(void *, u32);
extern "C" bool fn_80372070(void *, u32);
extern "C" bool fn_803734C0(void *, u32);
extern "C" bool fn_80373550(void *, u32);
#endif
@@ -66,5 +66,12 @@ inline float sqrtf(float x) {
} // namespace std
#define _HUGE_ENUF 1e+300
#define INFINITY ((float)(_HUGE_ENUF * _HUGE_ENUF))
#define HUGE_VAL ((double)INFINITY)
#define HUGE_VALL ((long double)INFINITY)
#define DOUBLE_INF HUGE_VAL
#endif
#endif
+3 -9
View File
@@ -3,6 +3,7 @@
#include "d/a/d_a_player.h"
#include "d/a/obj/d_a_obj_base.h"
#include "d/col/c/c_m3d_g_cps.h"
#include "d/snd/d_snd_3d_manager.h"
#include "d/t/d_t_sound_area_mgr.h"
#include "rvl/MTX.h" // IWYU pragma: export
@@ -45,20 +46,13 @@ int dTgSndAr_c::doDelete() {
return SUCCEEDED;
}
struct Unk {
u8 unk[0x144];
mVec3_c v;
};
extern Unk *lbl_80575D58;
int dTgSndAr_c::actorExecute() {
dAcBase_c *link = dAcPy_c::LINK;
if (link != nullptr && checkPosInArea(link->position)) {
link->setBit_field_0xE8(params & 0xFF);
}
if (lbl_80575D58 != nullptr) {
mVec3_c pos = lbl_80575D58->v;
if (dSnd3DManager_c::GetInstance() != nullptr) {
mVec3_c pos = dSnd3DManager_c::GetInstance()->getListenerPos();
if (checkPosInArea(pos) && dTgSndMg_c::GetInstance() != nullptr) {
dTgSndMg_c::GetInstance()->setBgmFlag(params & 0xFF);
}
+3 -3
View File
@@ -39,7 +39,7 @@ u8 dAcBase_c::s_Create_Subtype;
extern "C" ObjInfo *getObjByActorIdAndSubtype_unkNamespace(ProfileName, u8);
extern "C" ObjInfo *getObjByActorName_unkNamespace(char *name);
extern "C" char *getObjectName_8006a730(ObjInfo *);
extern "C" SoundSource *soundForActorInitRelated_803889c0(s8, fBase_c *, char *, u8);
extern "C" dSoundSourceIf_c *soundForActorInitRelated_803889c0(s8, fBase_c *, char *, u8);
bool dAcBase_c::createHeap() {
return true;
@@ -113,7 +113,7 @@ void dAcBase_c::setTempCreateParams(
}
// has regswap
SoundSource *dAcBase_c::FUN_8002c690() {
dSoundSourceIf_c *dAcBase_c::FUN_8002c690() {
if (obj_info == nullptr) {
return nullptr;
}
@@ -515,7 +515,7 @@ void dAcBase_c::FUN_8002d830() {}
void dAcBase_c::FUN_8002d860(UNKWORD) {}
// 8002d880
SoundSource *dAcBase_c::getSoundSource() {
dSoundSourceIf_c *dAcBase_c::getSoundSource() {
return sound_source.get();
}
// End of SoundSource stuff
+3 -3
View File
@@ -631,7 +631,7 @@ bool daPlBaseMdl_c::create(
field_0x58 = 0;
mpSoundData = nullptr;
field_0x5A = 0xFFFF;
SoundSource *sound = player->getSoundSource();
dSoundSourceIf_c *sound = player->getSoundSource();
if (sound->isReadyMaybe()) {
sound->load(nullptr, "");
}
@@ -1772,7 +1772,7 @@ void daPlayerModelBase_c::removeAnmChr(s32 childIdx) {
}
void daPlayerModelBase_c::loadSound(nw4r::g3d::ResFile &file, const char *name, s32 childIdx) {
SoundSource *s = getSoundSource();
dSoundSourceIf_c *s = getSoundSource();
mCurrentAnmChrIdx = childIdx;
SizedString<64> path;
path.sprintf("%s.brasd", name);
@@ -1785,7 +1785,7 @@ void daPlayerModelBase_c::loadSound(nw4r::g3d::ResFile &file, const char *name,
}
void daPlayerModelBase_c::loadSoundForAnim(s32 childIdx) {
SoundSource *s = getSoundSource();
dSoundSourceIf_c *s = getSoundSource();
s32 anim = mAnimations[childIdx];
mCurrentAnmChrIdx = childIdx;
if (anim != mMainMdl.getField_0x5A()) {
+96
View File
@@ -0,0 +1,96 @@
#include "d/snd/d_snd_3d_actor.h"
#include "common.h"
#include "d/a/d_a_player.h"
#include "d/snd/d_snd_3d_manager.h"
#include "nw4r/math/math_types.h"
#include "toBeSorted/music_mgrs.h"
#include <cmath>
dSnd3DActor_c::dSnd3DActor_c(UNKTYPE *a1, u8 a2)
: nw4r::snd::Sound3DActor(
dSndPlayerMgr_c::GetInstance()->getSoundArchivePlayerForType(a2), dSnd3DManager_c::GetInstance()->getManager()
),
a_field_0x7D(0),
a_field_0x7E(0),
a_field_0x7F(0),
a_field_0x80(0),
a_field_0x84(0.0f),
a_field_0x88(0.0f),
a_field_0x8C(0.0f),
a_field_0x90(INFINITY),
a_field_0x94(INFINITY),
a_field_0x98(0.0f),
a_field_0x9C(0.0f),
a_field_0xC8(a1),
mFlags(0),
mDistanceToPlayer(INFINITY),
a_field_0xE0(0.0f) {
resetFloats();
// Portability hazard
SetUserParam(reinterpret_cast<u32>(this));
if (fn_8035ED90(BGM_MGR, a2)) {
a_field_0x7F = 1;
}
}
void dSnd3DActor_c::d_vt_0x34(const nw4r::math::VEC3 &rPosition) {
SetPosition(rPosition);
// TODO - 0xE0
mFlags = 0;
}
void dSnd3DActor_c::updatePositionRelativeToPlayer() {
if (!checkFlag(0x40)) {
nw4r::math::VEC3 linkTranslation = dAcPy_c::GetLink()->getCenterTranslation();
nw4r::math::VEC3 pos = GetPosition();
nw4r::math::VEC3Sub(&mPositionRelativeToPlayer, &pos, &linkTranslation);
mFlags |= 0x40;
}
}
const nw4r::math::VEC3 &dSnd3DActor_c::getPositionRelativeToPlayer() {
updatePositionRelativeToPlayer();
return mPositionRelativeToPlayer;
}
void dSnd3DActor_c::updateDistanceToPlayer() {
if (!checkFlag(0x80)) {
updatePositionRelativeToPlayer();
nw4r::math::VEC3 linkTranslation = dAcPy_c::GetLink()->getCenterTranslation();
nw4r::math::VEC3 pos = GetPosition();
if ((linkTranslation.x == 0.0f && linkTranslation.y == 0.0f && linkTranslation.z == 0.0f) ||
(pos.x == 0.0f && pos.y == 0.0f && pos.z == 0.0f)) {
// Don't bother if we received dummy values
mDistanceToPlayer = INFINITY;
} else {
mDistanceToPlayer = nw4r::math::VEC3Len(&mPositionRelativeToPlayer);
}
mFlags |= 0x80;
}
}
f32 dSnd3DActor_c::getDistanceToPlayer() {
updateDistanceToPlayer();
return mDistanceToPlayer;
}
bool dSnd3DActor_c::hasPlayingSounds() const {
for (int i = 0; i < ACTOR_PLAYER_COUNT; i++) {
if (GetPlayingSoundCount(i) > 0) {
return true;
}
}
return false;
}
bool dSnd3DActor_c::isPlayingSound(u32 id) {
bool result = false;
IsCurrentSoundIdChecker handler(id, &result);
ForEachSound(handler, false);
return result;
}
+56
View File
@@ -0,0 +1,56 @@
#include "d/snd/d_snd_3d_engine.h"
#include "common.h"
#include "nw4r/snd/snd_Sound3DListener.h"
dSnd3DEngine_c::dSnd3DEngine_c() {}
static void CalcPitch(
const nw4r::math::VEC3 *vec, f32 mag, const nw4r::snd::Sound3DManager &mgr,
const nw4r::snd::Sound3DListener &listener, const nw4r::snd::Sound3DParam &param, f32 *pPitch
);
void dSnd3DEngine_c::UpdateAmbientParam(
const nw4r::snd::Sound3DManager *mgr, const nw4r::snd::Sound3DParam *param3d, u32 unk, u32 flags,
nw4r::snd::SoundAmbientParam *paramAmb
) {
f32 pitch;
CalcPitch(nullptr, 0.0f, *mgr, mgr->GetListenerList().GetFront(), *param3d, &pitch);
}
// Largely copied from Sound3DCalculator::CalcPitch
static void CalcPitch(
const nw4r::math::VEC3 *vec, f32 mag, const nw4r::snd::Sound3DManager &mgr,
const nw4r::snd::Sound3DListener &listener, const nw4r::snd::Sound3DParam &param, f32 *pPitch
) {
f32 f0 = mgr.GetField0x24();
if (f0 == 0.0f) {
*pPitch = 1.0f;
return;
}
nw4r::math::VEC3 relativePos(*vec);
if (mag > 0.0f) {
relativePos /= mag;
}
f32 f3 = param.field_0x1E / 32.0f;
f32 f1, f2;
if (mag > 0.0f) {
f1 = -nw4r::math::VEC3Dot(&relativePos, &param.velocity);
f2 = -nw4r::math::VEC3Dot(&relativePos, &listener.GetVelocity());
} else {
f1 = -nw4r::math::VEC3Len(&param.velocity);
f2 = nw4r::math::VEC3Len(&listener.GetVelocity());
}
f32 pitch;
f1 *= f3;
f2 *= f3;
if (f2 > f0) {
pitch = 0.0f;
} else if (f1 >= f0) {
pitch = 65535.0f;
} else {
pitch = (f0 - f2) / (f0 - f1);
}
*pPitch = pitch;
}
+135
View File
@@ -0,0 +1,135 @@
#include "d/snd/d_snd_3d_manager.h"
#include "d/snd/d_snd_3d_engine.h"
#include "d/snd/d_snd_mgr.h"
#include "egg/math/eggMatrix.h"
#include "egg/math/eggVector.h"
#include "nw4r/math/math_arithmetic.h"
#include "nw4r/math/math_types.h"
#include "nw4r/snd/snd_SoundArchive.h"
#include "toBeSorted/music_mgrs.h"
template class SndMgrDisposer<dSnd3DManager_c>;
dSnd3DManager_c::dSnd3DManager_c() : mIsSetup(false), field_0x11(0) {
mCameraPosSqVelocity = 0.0f;
mCameraAtSqVelocity = 0.0f;
mCamDistance = 0.9f;
mTimer = 0;
mpEngine = new dSnd3DEngine_c();
field_0x138.x = 0.0f;
field_0x138.y = 0.0f;
field_0x138.z = 1.0f;
}
void dSnd3DManager_c::setup() {
if (mIsSetup) {
return;
}
nw4r::snd::SoundArchive *archive = dSndMgr_c::GetInstance()->getArchive();
u32 requiredSize = mManager.GetRequiredMemSize(archive);
void *buf = dSndMgr_c::GetInstance()->getSoundHeap()->Alloc(requiredSize);
mManager.Setup(archive, buf, requiredSize);
mManager.SetEngine(mpEngine);
mManager.SetMaxPriorityReduction(32);
mManager.SetField0x20(0.9f);
mManager.SetField0x24(3400.0f / 3.0f);
mListener.SetMaxVolumeDistance(300.0f);
mListener.SetUnitDistance(1000.0f);
mListener.SetInteriorSize(400.0f);
mManager.SetBiquadFilterType(3);
mListener.SetUnitBiquadFilterMax(0.5f);
mListener.SetUnitBiquadFilterValue(0.2f);
mManager.GetListenerList().Insert(mManager.GetListenerList().GetEndIter(), &mListener);
mIsSetup = true;
}
void dSnd3DManager_c::resetCamDistance() {
mCamDistance = 0.9f;
}
void dSnd3DManager_c::setCamDistance(f32 value) {
// @bug ? not actually clamped
nw4r::ut::Clamp(value, -1.0f, 2.0f);
mCamDistance = value;
}
void dSnd3DManager_c::calc() {
field_0x11 = 0;
}
void dSnd3DManager_c::clearState() {
mCameraPosSqVelocity = 0.0f;
mCameraAtSqVelocity = 0.0f;
mTimer = 0;
}
void dSnd3DManager_c::updateFromCamera(EGG::LookAtCamera &camera) {
if (field_0x11) {
return;
}
f32 dist = 0.5f;
if (fn_80364DA0(ENEMY_SOUND_MGR)) {
dist = mCamDistance;
f32 prevCameraAtSqVelocity = mCameraAtSqVelocity;
f32 prevCameraPosSqVelocity = mCameraPosSqVelocity;
mCameraAtSqVelocity = VECSquareDistance(camera.mAt, mCamera.mAt);
mCameraPosSqVelocity = VECSquareDistance(camera.mPos, mCamera.mPos);
if (((u32 *)ENEMY_SOUND_MGR)[71] > 30) {
bool bigMovement = false;
bool hugeMovement = false;
if (mTimer > 0) {
mTimer--;
} else {
f32 atAccel = prevCameraAtSqVelocity - mCameraAtSqVelocity;
f32 atAccelAbs = nw4r::math::FAbs(atAccel);
if (mCameraAtSqVelocity > 490000.0f) {
bigMovement = true;
hugeMovement = true;
} else if (atAccelAbs > 10000.0f) {
bigMovement = true;
}
if (!hugeMovement) {
f32 posAccel = prevCameraPosSqVelocity - mCameraPosSqVelocity;
f32 posAccelAbs = nw4r::math::FAbs(posAccel);
if (mCameraPosSqVelocity > 490000.0f) {
bigMovement = true;
hugeMovement = true;
} else if (posAccelAbs > 10000.0f) {
bigMovement = true;
}
if (bigMovement && !hugeMovement && nw4r::math::FAbs(atAccelAbs - posAccelAbs) < 22500.0f) {
nw4r::math::VEC3 myDir = mCamera.getOtherDirection();
nw4r::math::VEC3 camDir = camera.getOtherDirection();
VECNormalize(myDir, myDir);
VECNormalize(camDir, camDir);
if (nw4r::math::VEC3Dot(&myDir, &camDir) > 0.99f) {
bigMovement = false;
}
}
}
if (bigMovement) {
fn_80364D00(ENEMY_SOUND_MGR, -1);
mTimer = 30;
}
}
}
}
mCamera = camera;
updateListenerPos(dist);
field_0x11 = 1;
}
void dSnd3DManager_c::updateListenerPos(f32 f) {
const EGG::Matrix34f &mtx = mCamera.getViewMatrix();
mListener.SetMatrix(*mtx);
EGG::Vector3f dir = mCamera.getDirection();
VECNormalize(dir, field_0x138);
dir *= f;
mSoundListenerPosition = mCamera.mPos + dir;
}
+66
View File
@@ -0,0 +1,66 @@
#include "d/snd/d_snd_actor.h"
#include "common.h"
#include "d/snd/d_snd_checkers.h"
#include "nw4r/snd/snd_BasicSound.h"
#include "nw4r/snd/snd_SoundArchivePlayer.h"
#include "nw4r/snd/snd_SoundHandle.h"
#include "toBeSorted/music_mgrs.h"
dSndActor_c::dSndActor_c(nw4r::snd::SoundArchivePlayer &rStartable) : nw4r::snd::SoundActor(rStartable) {}
void d_snd_actor_SoundHandle_dtor() {
nw4r::snd::SoundHandle handle[2];
}
void SoundPropertiesChecker::operator()(nw4r::snd::SoundHandle &pHandle) {
if (mSoundId != -1 && mSoundId != pHandle.GetId()) {
return;
}
if (mpPlayCounter != nullptr) {
(*mpPlayCounter)++;
} else {
mPlayCounter++;
}
if (pHandle.IsPause()) {
if (mpPauseCounter != nullptr) {
(*mpPauseCounter)++;
} else {
mPauseCounter++;
}
return;
}
if (fn_803721F0(FANFARE_SOUND_MGR, pHandle.GetId())) {
if (mpCounter3 != nullptr) {
(*mpCounter3)++;
} else {
mCounter3++;
}
return;
}
if (fn_803720E0(FANFARE_SOUND_MGR, pHandle.GetId())) {
if (mpCounter3 != nullptr) {
(*mpCounter3)++;
} else {
mCounter3++;
}
return;
}
if (fn_80372070(FANFARE_SOUND_MGR, pHandle.GetId())) {
if (mpCounter4 != nullptr) {
(*mpCounter4)++;
} else {
mCounter4++;
}
return;
}
if (fn_803734C0(FANFARE_SOUND_MGR, pHandle.GetId()) && !fn_80373550(FANFARE_SOUND_MGR, pHandle.GetId())) {
mCounter3++;
}
}
+58
View File
@@ -0,0 +1,58 @@
#include "d/snd/d_snd_mgr.h"
#include "d/snd/d_snd_3d_manager.h"
#include "d/snd/d_snd_player_mgr.h"
#include "d/snd/d_snd_util.h"
#include "egg/audio/eggAudioRmtSpeakerMgr.h"
#include "egg/audio/eggAudioUtility.h"
extern "C" void fn_8035F120();
extern "C" void initEnemySoundMgr();
extern "C" void initFanfareSoundMgr();
extern "C" void initSomeUnusedSoundMgr();
extern "C" void initSoundEffectSoundMgr();
extern "C" void fn_8036A430();
extern "C" void initEnemyBgmRelatedMgr();
extern "C" void fn_80393530();
extern "C" void fn_80394830();
extern "C" void fn_8037F940();
extern "C" void fn_80399600();
extern "C" void fn_80399C20();
dSndMgr_c *dSndMgr_c::sInstance;
dSndMgr_c::dSndMgr_c(): field_0x6CC(0) {
sInstance = this;
SndMgrDisposer<dSndPlayerMgr_c>::create();
fn_8035F120();
initEnemySoundMgr();
SndMgrDisposer<dSnd3DManager_c>::create();
initFanfareSoundMgr();
initSomeUnusedSoundMgr();
initSoundEffectSoundMgr();
fn_8036A430();
initEnemyBgmRelatedMgr();
fn_80393530();
fn_80394830();
fn_8037F940();
fn_80399600();
fn_80399C20();
initHbm(9);
}
void dSndMgr_c::initialize(EGG::Heap *heap, u32 size) {}
void dSndMgr_c::initHbm(u32 frame) {
EGG::AudioUtility::HBM::init(this, restoreEffectsCallback, frame);
}
void dSndMgr_c::calc() {
if (field_0x6CC) {
EGG::SimpleAudioMgr::calc();
EGG::AudioRmtSpeakerMgr::calc();
dSndPlayerMgr_c::GetInstance()->calc();
}
}
void dSndMgr_c::restoreEffectsCallback() {}
+86
View File
@@ -0,0 +1,86 @@
#include "d/snd/d_snd_player_mgr.h"
#include "common.h"
#include "d/snd/d_snd_mgr.h"
#include "egg/core/eggDvdRipper.h"
#include "nw4r/snd/snd_SoundHandle.h"
#include "nw4r/snd/snd_SoundStartable.h"
#include "sized_string.h"
const char *dSndPlayerMgr_c::getSoundArchivePath() {
return "Sound/WZSound.brsar";
}
template class SndMgrDisposer<dSndPlayerMgr_c>;
dSndPlayerMgr_c::dSndPlayerMgr_c()
: field_0x010(0), field_0x011(0), field_0x014(-1), field_0x018(-1), field_0x01C(-1), mFlags(0) {}
u32 dSndPlayerMgr_c::getFreeSize() {
return dSndMgr_c::GetInstance()->getSoundHeap()->GetFreeSize();
}
nw4r::snd::SoundStartable::StartResult dSndPlayerMgr_c::startSound(
nw4r::snd::SoundHandle *pHandle, u32 soundId, const nw4r::snd::SoundStartable::StartInfo *pStartInfo
) {
if (mFlags & 0x2) {
return nw4r::snd::SoundStartable::START_ERR_USER;
}
nw4r::snd::SoundHandle handle;
if (pHandle == nullptr) {
pHandle = &handle;
}
nw4r::snd::SoundStartable::StartResult res;
if (pStartInfo != nullptr) {
res = dSndMgr_c::getPlayer()->detail_StartSound(pHandle, soundId, pStartInfo);
} else {
res = dSndMgr_c::getPlayer()->detail_StartSound(pHandle, soundId, nullptr);
}
return res;
}
nw4r::snd::SoundStartable::StartResult dSndPlayerMgr_c::startSound(
nw4r::snd::SoundHandle *pHandle, const char *soundLabel, const nw4r::snd::SoundStartable::StartInfo *pStartInfo
) {
u32 id = dSndPlayerMgr_c::GetInstance()->convertLabelStringToSoundId(soundLabel);
return startSound(pHandle, id, pStartInfo);
}
u32 dSndPlayerMgr_c::convertLabelStringToSoundId(const char *label) const {
return dSndMgr_c::GetInstance()->changeNameToId(label);
}
bool dSndPlayerMgr_c::loadDemoArchive(const char *demoArchiveName) {
if (demoArchiveName == nullptr) {
return false;
}
int stateId = dSndMgr_c::GetInstance()->saveState();
SizedString<64> path;
path.sprintf("Sound/demo/%s.brsar", demoArchiveName);
void *buf = dSndMgr_c::GetInstance()->getSoundHeap()->Alloc(getFreeSize() - 0x40000);
if (buf == nullptr) {
return false;
}
bool ok = false;
u32 amountRead = 0;
u32 fileSize = 0;
EGG::DvdRipper::Arg arg(path, (u8 *)buf, nullptr, EGG::DvdRipper::ALLOC_DIR_TOP, 0, &amountRead, &fileSize);
void *ptr = EGG::DvdRipper::loadToMainRAM(arg);
if (ptr != nullptr) {
ok = mSoundArchive.Setup(ptr);
if (ok) {
u32 size = mSoundArchivePlayer.GetRequiredMemSize(&mSoundArchive);
void *buf2 = dSndMgr_c::GetInstance()->getSoundHeap()->Alloc(size);
if (buf2 != nullptr) {
ok = mSoundArchivePlayer.Setup(&mSoundArchive, buf2, size, nullptr, 0);
}
}
}
if (!ok) {
dSndMgr_c::GetInstance()->loadState(stateId);
}
return ok;
}
+94
View File
@@ -0,0 +1,94 @@
#include "d/snd/d_snd_source.h"
#include "common.h"
#include "d/snd/d_snd_3d_actor.h"
#include "nw4r/snd/snd_SoundStartable.h"
#include "nw4r/ut/ut_list.h"
#include "sized_string.h"
extern "C" u8 fn_80382590(u8, UNKWORD);
extern "C" void fn_80386C50(UNKWORD, dSoundSource_c *);
extern "C" void fn_80386C70(dSoundSource_c *);
struct d_snd_mgr_unk_6_sinit {
d_snd_mgr_unk_6_sinit() : field_0x00(0), field_0x04(0.0f) {}
u32 field_0x00;
f32 field_0x04;
};
d_snd_mgr_unk_6_sinit d_snd_mgr_unk_6_sinit_instance;
const char *help_i_need_data() {
return "%s_%s_%d";
}
dSoundSource_c::dSoundSource_c(u8 a1, dAcBase_c *player, UNKWORD a3, UNKWORD a4)
: dSnd3DActor_c(((char *)a4) + 0x50, a1),
field_0x0F0(a3),
field_0x0F4(0),
mpPlayer(player),
field_0x0FD(a1),
field_0x0FE(0),
field_0x0FF(0),
field_0x100(0),
field_0x101(0),
field_0x102(0),
field_0x104(0),
field_0x108(0),
field_0x10C(0),
field_0x11C(0),
field_0x140(a4),
field_0x154(0),
field_0x158(-1),
field_0x15A(-1) {
field_0x0FC = fn_80382590(a1, a3);
// TODO: Offsetof
nw4r::ut::List_Init(&field_0x110, 0xEC);
nw4r::ut::List_Init(&field_0x120, 0x04);
nw4r::ut::List_Init(&field_0x12C, 0x04);
fn_80386C50(a4, this);
}
dSoundSource_c::~dSoundSource_c() {
SetUserParam(0);
vt_0x44();
fn_80386C70(this);
}
bool dSoundSource_c::hasPlayingSounds() const {
return dSnd3DActor_c::hasPlayingSounds();
}
void dSoundSource_c::d_vt_0x38(bool flag, int fadeFrames) {
if (flag == 0) {
PauseAllSound(flag, fadeFrames);
d_s_vt_0x1C4(flag, fadeFrames);
a_field_0x80 = 0;
} else if (a_field_0x7E == 0) {
PauseAllSound(flag, fadeFrames);
d_s_vt_0x1C4(flag, fadeFrames);
a_field_0x80 = 1;
}
}
nw4r::snd::SoundStartable::StartResult
dSoundSource_c::SetupSound(nw4r::snd::SoundHandle *pHandle, u32 soundId, const StartInfo *pStartInfo, void *) {
// TODO
return START_SUCCESS;
}
void dSoundSource_c::d_vt_0x58() {
// noop
}
void dSoundSource_c::d_vt_0x5C() {
// noop
}
u32 dSoundSource_c::getRemoConSoundVariant(u32 soundId) const {
const char *label = soundIdToSoundLabel(soundId);
SizedString<64> str;
str.sprintf("%s_RC", label);
return soundLabelToSoundId(str);
}
+36
View File
@@ -0,0 +1,36 @@
#include "d/snd/d_snd_util.h"
class SndClass80399a40 {
public:
SndClass80399a40();
virtual ~SndClass80399a40() {}
/* 0x04 */ u8 _0x04[0x18 - 0x04];
};
// This is a test for SndMgrDisposer, since this
// class has the disposer at 0x18, which is interesting
class SndMgr80399c20;
extern template class SndMgrDisposer<SndMgr80399c20>;
class SndMgr80399c20 : SndClass80399a40 {
public:
SndMgrDisposer<SndMgr80399c20> *GetDisposer() {
return &mDisposer;
}
static SndMgr80399c20 *GetInstance() {
return sInstance;
}
static SndMgr80399c20 *sInstance;
static SndMgrDisposer<SndMgr80399c20> *sDisposer;
private:
SndMgrDisposer<SndMgr80399c20> mDisposer;
};
template class SndMgrDisposer<SndMgr80399c20>;
+3 -3
View File
@@ -31,10 +31,10 @@ AnmMdlWrapper::AnmMdlWrapper() : mpSoundSource(nullptr), mpSoundData(nullptr) {}
AnmMdlWrapper::~AnmMdlWrapper() {
if (mpSoundSource != nullptr) {
if (mpSoundSource->shutdown()) {
if (mpSoundSource->hasPlayingSounds()) {
do {
VIWaitForRetrace();
} while (mpSoundSource->shutdown());
} while (mpSoundSource->hasPlayingSounds());
}
}
}
@@ -119,7 +119,7 @@ void AnmMdlWrapper::setRate(f32 rate) {
setSoundRate(rate);
}
void AnmMdlWrapper::setSoundSource(SoundSource *pSource) {
void AnmMdlWrapper::setSoundSource(dSoundSourceIf_c *pSource) {
mpSoundSource = pSource;
}
+1 -1
View File
@@ -1,6 +1,6 @@
#include "d/a/d_a_base.h"
extern "C" SoundSource *soundForActorInitRelated_803889c0(int, fBase_c *, char *, u8);
extern "C" dSoundSourceIf_c *soundForActorInitRelated_803889c0(int, fBase_c *, char *, u8);
extern "C" bool fn_8002C250(SoundInfo *p1, int someNum, char *name, mVec3_c *position) {
p1->sound_source = soundForActorInitRelated_803889c0(someNum, p1->actor, name, 0);