More d/snd

This commit is contained in:
robojumper
2025-06-13 11:21:04 +02:00
parent a30123ac3d
commit f9e95f9bb0
34 changed files with 2632 additions and 330 deletions
+10 -2
View File
@@ -2617,9 +2617,17 @@ d/snd/d_snd_3d_manager.cpp:
.sbss start:0x80575D58 end:0x80575D60
.sdata2 start:0x8057D3B8 end:0x8057D3F8
d/snd/d_snd_stage_mgr.cpp:
d/snd/d_snd_state_mgr.cpp:
.text start:0x80361460 end:0x8036642C align:16
.ctors start:0x804DB918 end:0x804DB91C
.data start:0x805487E0 end:0x80548A28
.sdata start:0x80574098 end:0x80574198
.sbss start:0x80575D60 end:0x80575D78
.sdata2 start:0x8057D3F8 end:0x8057D450
d/snd/d_snd_stage_data.cpp:
.rodata start:0x804F0D80 end:0x804F2308
.sdata2 start:0x8057D478 end:0x8057D7C0
d/snd/d_snd_unk_component_2.cpp:
.text start:0x80366430 end:0x8036A3A4 align:16
@@ -2654,7 +2662,7 @@ d/snd/d_snd_bgm_sound_callbacks.cpp:
.text start:0x803739D0 end:0x80378ECC align:16
.sdata2 start:0x8057D970 end:0x8057DA50
d/snd/d_snd_bgm_sound_boss_callbacks.cpp:
d/snd/d_snd_bgm_sound_battle_callbacks.cpp:
.text start:0x80378ED0 end:0x80379D20 align:16
.sdata2 start:0x8057DA50 end:0x8057DA58
+240 -240
View File
@@ -19982,7 +19982,7 @@ loadDemoArchive__15dSndPlayerMgr_cFPCc = .text:0x8035EDF0; // type:function size
shutdown__15dSndPlayerMgr_cFv = .text:0x8035EF90; // type:function size:0x38
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
isBgmPlayerId__15dSndPlayerMgr_cFUl = .text:0x8035F030; // type:function size:0x1C
fn_8035F050 = .text:0x8035F050; // type:function size:0x50
__dt__40SndMgrDisposer<22dSndControlPlayerMgr_c>Fv = .text:0x8035F0A0; // type:function size:0x78
create__40SndMgrDisposer<22dSndControlPlayerMgr_c>Fv = .text:0x8035F120; // type:function size:0x48
@@ -20046,16 +20046,16 @@ 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
EnemySoundMgr__ctor = .text:0x80361540; // type:function size:0x15C
__dt__32SndMgrDisposer<14dSndStateMgr_c>Fv = .text:0x80361460; // type:function size:0x78
create__32SndMgrDisposer<14dSndStateMgr_c>Fv = .text:0x803614E0; // type:function size:0x48
remove__32SndMgrDisposer<14dSndStateMgr_c>Fv = .text:0x80361530; // type:function size:0x10
__ct__14dSndStateMgr_cFv = .text:0x80361540; // type:function size:0x15C
__dt__Q34nw4r3snd15FxReverbStdDpl2Fv = .text:0x803616A0; // type:function size:0x7C
fn_80361720 = .text:0x80361720; // type:function size:0x1CC
fn_803618F0 = .text:0x803618F0; // type:function size:0x3DC
GetStageTypeFlags = .text:0x80361CD0; // type:function size:0x2FC
fn_80361FD0 = .text:0x80361FD0; // type:function size:0x44
fn_80362020 = .text:0x80362020; // type:function size:0x84
setup__14dSndStateMgr_cFPQ23EGG4Heap = .text:0x80361720; // type:function size:0x1CC
onStageOrLayerUpdate__14dSndStateMgr_cFv = .text:0x803618F0; // type:function size:0x3DC
getStageTypeFlags__14dSndStateMgr_cCFPCc = .text:0x80361CD0; // type:function size:0x2FC
isVolcanicDungeon__14dSndStateMgr_cFUl = .text:0x80361FD0; // type:function size:0x44
isSeekerStoneStage__14dSndStateMgr_cFPCcl = .text:0x80362020; // type:function size:0x84
fn_803620B0 = .text:0x803620B0; // type:function size:0x5C
fn_80362110 = .text:0x80362110; // type:function size:0x34
fn_80362150 = .text:0x80362150; // type:function size:0xB0
@@ -20065,7 +20065,7 @@ fn_80362390 = .text:0x80362390; // type:function size:0x6C
fn_80362400 = .text:0x80362400; // type:function size:0x10
fn_80362410 = .text:0x80362410; // type:function size:0xC
fn_80362420 = .text:0x80362420; // type:function size:0x18
isInStage = .text:0x80362440; // type:function size:0x34
isInStage__FPCc = .text:0x80362440; // type:function size:0x34
fn_80362480 = .text:0x80362480; // type:function size:0x6C
fn_803624F0 = .text:0x803624F0; // type:function size:0xF4
fn_803625F0 = .text:0x803625F0; // type:function size:0x140
@@ -20117,7 +20117,7 @@ fn_80364DE0 = .text:0x80364DE0; // type:function size:0x7C
fn_80364E60 = .text:0x80364E60; // type:function size:0x54
fn_80364EC0 = .text:0x80364EC0; // type:function size:0x90
fn_80364F50 = .text:0x80364F50; // type:function size:0x7C
fn_80364FD0 = .text:0x80364FD0; // type:function size:0x50
setFlowEvent__14dSndStateMgr_cFUl = .text:0x80364FD0; // type:function size:0x50
fn_80365020 = .text:0x80365020; // type:function size:0x84
fn_803650B0 = .text:0x803650B0; // type:function size:0x6C
getStageMusicDemoName = .text:0x80365120; // type:function size:0x28
@@ -20149,7 +20149,7 @@ fn_80365DE0 = .text:0x80365DE0; // type:function size:0x1C
findMusicInMusicStruct = .text:0x80365E00; // type:function size:0xC0
fn_80365EC0 = .text:0x80365EC0; // type:function size:0xA8
fn_80365F70 = .text:0x80365F70; // type:function size:0xA8
fn_80366020 = .text:0x80366020; // type:function size:0x28
getStageUnk2__14dSndStateMgr_cFUl = .text:0x80366020; // type:function size:0x28
fn_80366050 = .text:0x80366050; // type:function size:0x28
fn_80366080 = .text:0x80366080; // type:function size:0x10
fn_80366090 = .text:0x80366090; // type:function size:0x88
@@ -20406,13 +20406,13 @@ apply__25dSndControlPlayerFxSend_cFv = .text:0x8036C610; // type:function size:0
getAppliedValue__25dSndControlPlayerFxSend_cFv = .text:0x8036C650; // type:function size:0x58
fn_8036C6B0 = .text:0x8036C6B0; // type:function size:0x64
isInvalidSoundId = .text:0x8036C720; // type:function size:0x10
FanfareSoundMgr__dtor = .text:0x8036C730; // type:function size:0x78
initFanfareSoundMgr = .text:0x8036C7B0; // type:function size:0x48
FanfareSoundMgr__deref = .text:0x8036C800; // type:function size:0x10
FanfareSoundMgr__ctor = .text:0x8036C810; // type:function size:0x204
__dt__30SndMgrDisposer<12dSndBgmMgr_c>Fv = .text:0x8036C730; // type:function size:0x78
create__30SndMgrDisposer<12dSndBgmMgr_c>Fv = .text:0x8036C7B0; // type:function size:0x48
remove__30SndMgrDisposer<12dSndBgmMgr_c>Fv = .text:0x8036C800; // type:function size:0x10
__ct__12dSndBgmMgr_cFv = .text:0x8036C810; // type:function size:0x204
fn_8036CA20 = .text:0x8036CA20; // type:function size:0xF0
fn_8036CB10 = .text:0x8036CB10; // type:function size:0x54
fn_8036CB70 = .text:0x8036CB70; // type:function size:0x19C
calcLists__12dSndBgmMgr_cFv = .text:0x8036CB70; // type:function size:0x19C
fn_8036CD10 = .text:0x8036CD10; // type:function size:0x34
fn_8036CD50 = .text:0x8036CD50; // type:function size:0x88
fn_8036CDE0 = .text:0x8036CDE0; // type:function size:0xFC
@@ -20420,20 +20420,20 @@ fn_8036CEE0 = .text:0x8036CEE0; // type:function size:0x12C
fn_8036D010 = .text:0x8036D010; // type:function size:0x98
fn_8036D0B0 = .text:0x8036D0B0; // type:function size:0x11C
fn_8036D1D0 = .text:0x8036D1D0; // type:function size:0x208
fn_8036D3E0 = .text:0x8036D3E0; // type:function size:0x170
playBgm__12dSndBgmMgr_cFUllb = .text:0x8036D3E0; // type:function size:0x170
fn_8036D550 = .text:0x8036D550; // type:function size:0x174
fn_8036D6D0 = .text:0x8036D6D0; // type:function size:0x60
fn_8036D730 = .text:0x8036D730; // type:function size:0x138
prepareBgmSound__12dSndBgmMgr_cFUlP14dSndBgmSound_cUl = .text:0x8036D730; // type:function size:0x138
fn_8036D870 = .text:0x8036D870; // type:function size:0x1D0
fn_8036DA40 = .text:0x8036DA40; // type:function size:0xA0
fn_8036DAE0 = .text:0x8036DAE0; // type:function size:0x74
fn_8036DB60 = .text:0x8036DB60; // type:function size:0x84
prepareBgm__12dSndBgmMgr_cFUlUl = .text:0x8036DA40; // type:function size:0xA0
stopAllBgm__12dSndBgmMgr_cFl = .text:0x8036DAE0; // type:function size:0x74
stopBgmSound__12dSndBgmMgr_cFP14dSndBgmSound_cl = .text:0x8036DB60; // type:function size:0x84
fn_8036DBF0 = .text:0x8036DBF0; // type:function size:0x2E4
fn_8036DEE0 = .text:0x8036DEE0; // type:function size:0x80
fn_8036DF60 = .text:0x8036DF60; // type:function size:0xBC
fn_8036E020 = .text:0x8036E020; // type:function size:0xC4
fn_8036E0F0 = .text:0x8036E0F0; // type:function size:0x80
fn_8036E170 = .text:0x8036E170; // type:function size:0x1C
stopBgmHandleIdx__12dSndBgmMgr_cFUll = .text:0x8036E170; // type:function size:0x1C
fn_8036E190 = .text:0x8036E190; // type:function size:0x60
fn_8036E1F0 = .text:0x8036E1F0; // type:function size:0x18
fn_8036E210 = .text:0x8036E210; // type:function size:0x78
@@ -20451,10 +20451,10 @@ fn_8036E820 = .text:0x8036E820; // type:function size:0x154
fn_8036E980 = .text:0x8036E980; // type:function size:0xD4
fn_8036EA60 = .text:0x8036EA60; // type:function size:0xC4
fn_8036EB30 = .text:0x8036EB30; // type:function size:0xC4
fn_8036EC00 = .text:0x8036EC00; // type:function size:0x28
checkForPrepareStoppedBgmSound__12dSndBgmMgr_cFUl = .text:0x8036EC00; // type:function size:0x28
fn_8036EC30 = .text:0x8036EC30; // type:function size:0x98
fn_8036ECD0 = .text:0x8036ECD0; // type:function size:0x64
fn_8036ED40 = .text:0x8036ED40; // type:function size:0x58
startAdditionalBgm__12dSndBgmMgr_cFUl = .text:0x8036ED40; // type:function size:0x58
fn_8036EDA0 = .text:0x8036EDA0; // type:function size:0x3F8
fn_8036F1A0 = .text:0x8036F1A0; // type:function size:0x58
fn_8036F200 = .text:0x8036F200; // type:function size:0x100
@@ -20471,12 +20471,12 @@ fn_80370310 = .text:0x80370310; // type:function size:0x8
fn_80370320 = .text:0x80370320; // type:function size:0xF4
fn_80370420 = .text:0x80370420; // type:function size:0xCC
fn_803704F0 = .text:0x803704F0; // type:function size:0xC
fn_80370500 = .text:0x80370500; // type:function size:0x120
playBattleBgm__12dSndBgmMgr_cFUlb = .text:0x80370500; // type:function size:0x120
fn_80370620 = .text:0x80370620; // type:function size:0xC0
fn_803706E0 = .text:0x803706E0; // type:function size:0x24
fn_80370710 = .text:0x80370710; // type:function size:0x64
fn_80370780 = .text:0x80370780; // type:function size:0x54
fn_803707E0 = .text:0x803707E0; // type:function size:0x60
beginBgmBattleRoom__12dSndBgmMgr_cFv = .text:0x80370780; // type:function size:0x54
endBgmBattleRoom__12dSndBgmMgr_cFv = .text:0x803707E0; // type:function size:0x60
fn_80370840 = .text:0x80370840; // type:function size:0x78
fn_803708C0 = .text:0x803708C0; // type:function size:0x34
fn_80370900 = .text:0x80370900; // type:function size:0xA0
@@ -20484,14 +20484,14 @@ fn_803709A0 = .text:0x803709A0; // type:function size:0xA8
fn_80370A50 = .text:0x80370A50; // type:function size:0x74
fn_80370AD0 = .text:0x80370AD0; // type:function size:0x64
fn_80370B40 = .text:0x80370B40; // type:function size:0x44
fn_80370B90 = .text:0x80370B90; // type:function size:0xEC
playDelayedSound__12dSndBgmMgr_cFUll = .text:0x80370B90; // type:function size:0xEC
fn_80370C80 = .text:0x80370C80; // type:function size:0x4C
fn_80370CD0 = .text:0x80370CD0; // type:function size:0x14
fn_80370CF0 = .text:0x80370CF0; // type:function size:0x70
fn_80370D60 = .text:0x80370D60; // type:function size:0xBC
fn_80370E20 = .text:0x80370E20; // type:function size:0x28
cancelDelayedSound__12dSndBgmMgr_cFv = .text:0x80370CD0; // type:function size:0x14
cancelDelayedBgm__12dSndBgmMgr_cFv = .text:0x80370CF0; // type:function size:0x70
startDelayedSound__12dSndBgmMgr_cFv = .text:0x80370D60; // type:function size:0xBC
calcDelayedSound__12dSndBgmMgr_cFv = .text:0x80370E20; // type:function size:0x28
fn_80370E50 = .text:0x80370E50; // type:function size:0x6C
fn_80370EC0 = .text:0x80370EC0; // type:function size:0x70
setBgmHandleIdxVolume__12dSndBgmMgr_cFUlfl = .text:0x80370EC0; // type:function size:0x70
fn_80370F30 = .text:0x80370F30; // type:function size:0x6C
fn_80370FA0 = .text:0x80370FA0; // type:function size:0xA0
fn_80371040 = .text:0x80371040; // type:function size:0x138
@@ -20513,35 +20513,35 @@ fn_80371AF0 = .text:0x80371AF0; // type:function size:0x58
fn_80371B50 = .text:0x80371B50; // type:function size:0x58
fn_80371BB0 = .text:0x80371BB0; // type:function size:0x58
fn_80371C10 = .text:0x80371C10; // type:function size:0x58
fn_80371C70 = .text:0x80371C70; // type:function size:0x70
isPlayingBgmSoundId__12dSndBgmMgr_cCFUl = .text:0x80371C70; // type:function size:0x70
fn_80371CE0 = .text:0x80371CE0; // type:function size:0x64
fn_80371D50 = .text:0x80371D50; // type:function size:0x84
isBgmHandleIdxPlayingSoundId__12dSndBgmMgr_cFUlUl = .text:0x80371D50; // type:function size:0x84
fn_80371DE0 = .text:0x80371DE0; // type:function size:0x10C
fn_80371EF0 = .text:0x80371EF0; // type:function size:0xA0
fn_80371F90 = .text:0x80371F90; // type:function size:0xDC
fn_80372070 = .text:0x80372070; // type:function size:0x68
fn_803720E0 = .text:0x803720E0; // type:function size:0x70
fn_80372150 = .text:0x80372150; // type:function size:0x94
fn_803721F0 = .text:0x803721F0; // type:function size:0xD8
fn_803722D0 = .text:0x803722D0; // type:function size:0x20
fn_803722F0 = .text:0x803722F0; // type:function size:0x70
isFadingOutBgmSoundId__12dSndBgmMgr_cCFUl = .text:0x80372070; // type:function size:0x68
isPreparingBgmSoundId__12dSndBgmMgr_cCFUl = .text:0x803720E0; // type:function size:0x70
isPreparingBgmSoundIdWithStartOffset__12dSndBgmMgr_cCFUlUl = .text:0x80372150; // type:function size:0x94
isPreparedBgmSoundId__12dSndBgmMgr_cCFUl = .text:0x803721F0; // type:function size:0xD8
getBgmSoundByIndex__12dSndBgmMgr_cFUl = .text:0x803722D0; // type:function size:0x20
getBgmSoundHandleForId__12dSndBgmMgr_cCFUl = .text:0x803722F0; // type:function size:0x70
fn_80372360 = .text:0x80372360; // type:function size:0xC4
fn_80372430 = .text:0x80372430; // type:function size:0xD0
getSoundHandleForBgm__12dSndBgmMgr_cFUlUl = .text:0x80372430; // type:function size:0xD0
fn_80372500 = .text:0x80372500; // type:function size:0xD8
fn_803725E0 = .text:0x803725E0; // type:function size:0xB4
fn_803726A0 = .text:0x803726A0; // type:function size:0xE4
fn_80372790 = .text:0x80372790; // type:function size:0x10C
findIdleBgmSoundHandle__12dSndBgmMgr_cFv = .text:0x80372790; // type:function size:0x10C
fn_803728A0 = .text:0x803728A0; // type:function size:0x74
fn_80372920 = .text:0x80372920; // type:function size:0x3C
fn_80372960 = .text:0x80372960; // type:function size:0x8
fn_80372970 = .text:0x80372970; // type:function size:0x6C
fn_803729E0 = .text:0x803729E0; // type:function size:0x6C
fn_80372A50 = .text:0x80372A50; // type:function size:0x70
fn_80372AC0 = .text:0x80372AC0; // type:function size:0x5C
fn_80372B20 = .text:0x80372B20; // type:function size:0x98
fn_80372BC0 = .text:0x80372BC0; // type:function size:0x28
fn_80372BF0 = .text:0x80372BF0; // type:function size:0x28
fn_80372C20 = .text:0x80372C20; // type:function size:0x28
addToBgmSoundList__12dSndBgmMgr_cFQ212dSndBgmMgr_c14BgmSoundList_eP14dSndBgmSound_c = .text:0x80372970; // type:function size:0x6C
appendToBgmSoundList__12dSndBgmMgr_cFQ212dSndBgmMgr_c14BgmSoundList_eP14dSndBgmSound_c = .text:0x803729E0; // type:function size:0x6C
removeFromBgmSoundList__12dSndBgmMgr_cFQ212dSndBgmMgr_c14BgmSoundList_eP14dSndBgmSound_c = .text:0x80372A50; // type:function size:0x70
removeFromAllBgmSoundLists__12dSndBgmMgr_cFP14dSndBgmSound_c = .text:0x80372AC0; // type:function size:0x5C
isInBgmSoundList__12dSndBgmMgr_cFQ212dSndBgmMgr_c14BgmSoundList_eP14dSndBgmSound_c = .text:0x80372B20; // type:function size:0x98
getFirstInBgmSoundList__12dSndBgmMgr_cFQ212dSndBgmMgr_c14BgmSoundList_e = .text:0x80372BC0; // type:function size:0x28
getNextInBgmSoundList__12dSndBgmMgr_cFQ212dSndBgmMgr_c14BgmSoundList_eP14dSndBgmSound_c = .text:0x80372BF0; // type:function size:0x28
getLastInBgmSoundList__12dSndBgmMgr_cFQ212dSndBgmMgr_c14BgmSoundList_e = .text:0x80372C20; // type:function size:0x28
fn_80372C50 = .text:0x80372C50; // type:function size:0x8C
fn_80372CE0 = .text:0x80372CE0; // type:function size:0x8C
fn_80372D70 = .text:0x80372D70; // type:function size:0x74
@@ -20549,20 +20549,20 @@ fn_80372DF0 = .text:0x80372DF0; // type:function size:0x40
fn_80372E30 = .text:0x80372E30; // type:function size:0x40
fn_80372E70 = .text:0x80372E70; // type:function size:0xB0
fn_80372F20 = .text:0x80372F20; // type:function size:0x6C
AnotherSoundMgr__playSound = .text:0x80372F90; // type:function size:0x264
playFanSound__12dSndBgmMgr_cFUl = .text:0x80372F90; // type:function size:0x264
vt_0xF4__14dSoundSource_cFv = .text:0x80373200; // type:function size:0x8
fn_80373210 = .text:0x80373210; // type:function size:0xB4
fn_803732D0 = .text:0x803732D0; // type:function size:0x44
fn_80373320 = .text:0x80373320; // type:function size:0x8C
fn_803733B0 = .text:0x803733B0; // type:function size:0x110
fn_803734C0 = .text:0x803734C0; // type:function size:0x8C
fn_80373550 = .text:0x80373550; // type:function size:0x110
fn_80373660 = .text:0x80373660; // type:function size:0xC8
fn_80373730 = .text:0x80373730; // type:function size:0x68
prepareFanSound__12dSndBgmMgr_cFUl = .text:0x80373210; // type:function size:0xB4
getFreeFanSoundHandle__12dSndBgmMgr_cFv = .text:0x803732D0; // type:function size:0x44
getFanSoundHandleForFan__12dSndBgmMgr_cFUl = .text:0x80373320; // type:function size:0x8C
getSoundHandleCurrentlyPlayingFanSound__12dSndBgmMgr_cFUl = .text:0x803733B0; // type:function size:0x110
getFanSoundHandleForFan2__12dSndBgmMgr_cFUl = .text:0x803734C0; // type:function size:0x8C
isCurrentlyPlayingFanSound__12dSndBgmMgr_cCFUl = .text:0x80373550; // type:function size:0x110
hasPlayingFanSounds__12dSndBgmMgr_cCFv = .text:0x80373660; // type:function size:0xC8
stopFanSounds__12dSndBgmMgr_cFl = .text:0x80373730; // type:function size:0x68
fn_803737A0 = .text:0x803737A0; // type:function size:0x108
fn_803738B0 = .text:0x803738B0; // type:function size:0x4C
fn_80373900 = .text:0x80373900; // type:function size:0x4C
fn_80373950 = .text:0x80373950; // type:function size:0x7C
registSound__12dSndBgmMgr_cFP11dSndSound_c = .text:0x803738B0; // type:function size:0x4C
unregistSound__12dSndBgmMgr_cFP11dSndSound_c = .text:0x80373900; // type:function size:0x4C
isSoundRegist__12dSndBgmMgr_cFP11dSndSound_c = .text:0x80373950; // type:function size:0x7C
fn_803739D0 = .text:0x803739D0; // type:function size:0x58
fn_80373A30 = .text:0x80373A30; // type:function size:0x8
fn_80373A40 = .text:0x80373A40; // type:function size:0x64
@@ -20713,7 +20713,7 @@ fn_80379860 = .text:0x80379860; // type:function size:0x120
fn_80379980 = .text:0x80379980; // type:function size:0x158
fn_80379AE0 = .text:0x80379AE0; // type:function size:0x40
fn_80379B20 = .text:0x80379B20; // type:function size:0x200
fn_80379D20 = .text:0x80379D20; // type:function size:0xF8
__ct__14dSndBgmSound_cFv = .text:0x80379D20; // type:function size:0xF8
fn_80379E20 = .text:0x80379E20; // type:function size:0x58
fn_80379E80 = .text:0x80379E80; // type:function size:0xC
fn_80379E90 = .text:0x80379E90; // type:function size:0xC8
@@ -20751,7 +20751,7 @@ fn_8037B470 = .text:0x8037B470; // type:function size:0x18
fn_8037B490 = .text:0x8037B490; // type:function size:0x18
fn_8037B4B0 = .text:0x8037B4B0; // type:function size:0x18
fn_8037B4D0 = .text:0x8037B4D0; // type:function size:0x8
fn_8037B4E0 = .text:0x8037B4E0; // type:function size:0x58
__ct__20dSndBgmBattleSound_cFv = .text:0x8037B4E0; // type:function size:0x58
fn_8037B540 = .text:0x8037B540; // type:function size:0x44
fn_8037B590 = .text:0x8037B590; // type:function size:0x7C
fn_8037B610 = .text:0x8037B610; // type:function size:0xAC
@@ -21010,7 +21010,7 @@ fn_80385610 = .text:0x80385610; // type:function size:0x4
fn_80385620 = .text:0x80385620; // type:function size:0x4
fn_80385630 = .text:0x80385630; // type:function size:0x8
fn_80385640 = .text:0x80385640; // type:function size:0x134
fn_80385780 = .text:0x80385780; // type:function size:0x34
getPlayerSourceRoomId__15dSndSourceMgr_cCFv = .text:0x80385780; // type:function size:0x34
fn_803857C0 = .text:0x803857C0; // type:function size:0x5C
fn_80385820 = .text:0x80385820; // type:function size:0x8
fn_80385830 = .text:0x80385830; // type:function size:0x44
@@ -21174,7 +21174,7 @@ fn_80389F50 = .text:0x80389F50; // type:function size:0x208
d_s_vt_0x19C__14dSoundSource_cFv = .text:0x8038A160; // type:function size:0x6C
fn_8038A1D0 = .text:0x8038A1D0; // type:function size:0xD8
vt_0xD8__14dSoundSource_cFv = .text:0x8038A2B0; // type:function size:0x48
fn_8038A300 = .text:0x8038A300; // type:function size:0x10
getRoomId__14dSoundSource_cCFv = .text:0x8038A300; // type:function size:0x10
vt_0xA4__14dSoundSource_cFv = .text:0x8038A310; // type:function size:0xB8
vt_0xA8__14dSoundSource_cFv = .text:0x8038A3D0; // type:function size:0x58
vt_0xAC__14dSoundSource_cFv = .text:0x8038A430; // type:function size:0x30
@@ -28855,65 +28855,65 @@ lbl_804F0CC8 = .rodata:0x804F0CC8; // type:object size:0x10
lbl_804F0CD8 = .rodata:0x804F0CD8; // type:object size:0x18
lbl_804F0CF0 = .rodata:0x804F0CF0; // type:object size:0x10 data:string
lbl_804F0D00 = .rodata:0x804F0D00; // type:object size:0x80 data:4byte
lbl_804F0D80 = .rodata:0x804F0D80; // type:object size:0xC
lbl_804F0D8C = .rodata:0x804F0D8C; // type:object size:0xC
lbl_804F0D98 = .rodata:0x804F0D98; // type:object size:0xC
lbl_804F0DA4 = .rodata:0x804F0DA4; // type:object size:0xC
lbl_804F0DB0 = .rodata:0x804F0DB0; // type:object size:0xC
lbl_804F0DBC = .rodata:0x804F0DBC; // type:object size:0xC
lbl_804F0DC8 = .rodata:0x804F0DC8; // type:object size:0xC
lbl_804F0DD4 = .rodata:0x804F0DD4; // type:object size:0xC
lbl_804F0DE0 = .rodata:0x804F0DE0; // type:object size:0xC
lbl_804F0DEC = .rodata:0x804F0DEC; // type:object size:0xC
lbl_804F0DF8 = .rodata:0x804F0DF8; // type:object size:0xC
lbl_804F0E04 = .rodata:0x804F0E04; // type:object size:0xC
lbl_804F0E10 = .rodata:0x804F0E10; // type:object size:0xC
lbl_804F0E1C = .rodata:0x804F0E1C; // type:object size:0xC
lbl_804F0E28 = .rodata:0x804F0E28; // type:object size:0xC
lbl_804F0E34 = .rodata:0x804F0E34; // type:object size:0xC
lbl_804F0E40 = .rodata:0x804F0E40; // type:object size:0xC
lbl_804F0E4C = .rodata:0x804F0E4C; // type:object size:0xC
lbl_804F0E58 = .rodata:0x804F0E58; // type:object size:0xC
lbl_804F0E64 = .rodata:0x804F0E64; // type:object size:0xC
lbl_804F0E70 = .rodata:0x804F0E70; // type:object size:0xC
lbl_804F0E7C = .rodata:0x804F0E7C; // type:object size:0xC
lbl_804F0E88 = .rodata:0x804F0E88; // type:object size:0xC
lbl_804F0E94 = .rodata:0x804F0E94; // type:object size:0xC
lbl_804F0EA0 = .rodata:0x804F0EA0; // type:object size:0xC
lbl_804F0EAC = .rodata:0x804F0EAC; // type:object size:0xC
lbl_804F0EB8 = .rodata:0x804F0EB8; // type:object size:0xC
lbl_804F0EC4 = .rodata:0x804F0EC4; // type:object size:0xC
lbl_804F0ED0 = .rodata:0x804F0ED0; // type:object size:0xC
lbl_804F0EDC = .rodata:0x804F0EDC; // type:object size:0xC
lbl_804F0EE8 = .rodata:0x804F0EE8; // type:object size:0xC
lbl_804F0EF4 = .rodata:0x804F0EF4; // type:object size:0xC
lbl_804F0F00 = .rodata:0x804F0F00; // type:object size:0xC
lbl_804F0F0C = .rodata:0x804F0F0C; // type:object size:0xC
lbl_804F0F18 = .rodata:0x804F0F18; // type:object size:0xC
lbl_804F0F24 = .rodata:0x804F0F24; // type:object size:0xC
lbl_804F0F30 = .rodata:0x804F0F30; // type:object size:0xC
lbl_804F0F3C = .rodata:0x804F0F3C; // type:object size:0xC
lbl_804F0F48 = .rodata:0x804F0F48; // type:object size:0xC
lbl_804F0F54 = .rodata:0x804F0F54; // type:object size:0xC
lbl_804F0F60 = .rodata:0x804F0F60; // type:object size:0xC
lbl_804F0F6C = .rodata:0x804F0F6C; // type:object size:0xC
lbl_804F0F78 = .rodata:0x804F0F78; // type:object size:0xC
lbl_804F0F84 = .rodata:0x804F0F84; // type:object size:0xC
lbl_804F0F90 = .rodata:0x804F0F90; // type:object size:0xC
lbl_804F0F9C = .rodata:0x804F0F9C; // type:object size:0xC
lbl_804F0FA8 = .rodata:0x804F0FA8; // type:object size:0xC
lbl_804F0FB4 = .rodata:0x804F0FB4; // type:object size:0xC
lbl_804F0FC0 = .rodata:0x804F0FC0; // type:object size:0xC
lbl_804F0FCC = .rodata:0x804F0FCC; // type:object size:0xC
lbl_804F0FD8 = .rodata:0x804F0FD8; // type:object size:0xC
lbl_804F0FE4 = .rodata:0x804F0FE4; // type:object size:0xC
lbl_804F0FF0 = .rodata:0x804F0FF0; // type:object size:0xC
lbl_804F0FFC = .rodata:0x804F0FFC; // type:object size:0xC
lbl_804F1008 = .rodata:0x804F1008; // type:object size:0xC
lbl_804F1014 = .rodata:0x804F1014; // type:object size:0xC
lbl_804F1020 = .rodata:0x804F1020; // type:object size:0xC
lbl_804F102C = .rodata:0x804F102C; // type:object size:0xC
STAGE_MUSIC_RELATED = .rodata:0x804F1038; // type:object size:0x12D0 data:4byte
@16 = .rodata:0x804F0D80; // type:object size:0xA scope:local data:string
@26 = .rodata:0x804F0D8C; // type:object size:0xA scope:local data:string
@35 = .rodata:0x804F0D98; // type:object size:0xA scope:local data:string
@37 = .rodata:0x804F0DA4; // type:object size:0xA scope:local data:string
@39 = .rodata:0x804F0DB0; // type:object size:0xA scope:local data:string
@40 = .rodata:0x804F0DBC; // type:object size:0xA scope:local data:string
@41 = .rodata:0x804F0DC8; // type:object size:0xA scope:local data:string
@43 = .rodata:0x804F0DD4; // type:object size:0xA scope:local data:string
@44 = .rodata:0x804F0DE0; // type:object size:0xA scope:local data:string
@45 = .rodata:0x804F0DEC; // type:object size:0xA scope:local data:string
@46 = .rodata:0x804F0DF8; // type:object size:0xA scope:local data:string
@48 = .rodata:0x804F0E04; // type:object size:0xA scope:local data:string
@50 = .rodata:0x804F0E10; // type:object size:0xA scope:local data:string
@51 = .rodata:0x804F0E1C; // type:object size:0xA scope:local data:string
@72 = .rodata:0x804F0E28; // type:object size:0xA scope:local data:string
@74 = .rodata:0x804F0E34; // type:object size:0xA scope:local data:string
@77 = .rodata:0x804F0E40; // type:object size:0xA scope:local data:string
@80 = .rodata:0x804F0E4C; // type:object size:0xA scope:local data:string
@81 = .rodata:0x804F0E58; // type:object size:0xA scope:local data:string
@83 = .rodata:0x804F0E64; // type:object size:0xA scope:local data:string
@85 = .rodata:0x804F0E70; // type:object size:0xA scope:local data:string
@88 = .rodata:0x804F0E7C; // type:object size:0xA scope:local data:string
@91 = .rodata:0x804F0E88; // type:object size:0xA scope:local data:string
@92 = .rodata:0x804F0E94; // type:object size:0xA scope:local data:string
@97 = .rodata:0x804F0EA0; // type:object size:0xA scope:local data:string
@98 = .rodata:0x804F0EAC; // type:object size:0xA scope:local data:string
@102 = .rodata:0x804F0EB8; // type:object size:0xA scope:local data:string
@117 = .rodata:0x804F0EC4; // type:object size:0xA scope:local data:string
@119 = .rodata:0x804F0ED0; // type:object size:0xA scope:local data:string
@121 = .rodata:0x804F0EDC; // type:object size:0xA scope:local data:string
@122 = .rodata:0x804F0EE8; // type:object size:0xA scope:local data:string
@123 = .rodata:0x804F0EF4; // type:object size:0xA scope:local data:string
@124 = .rodata:0x804F0F00; // type:object size:0xA scope:local data:string
@125 = .rodata:0x804F0F0C; // type:object size:0xA scope:local data:string
@126 = .rodata:0x804F0F18; // type:object size:0xA scope:local data:string
@127 = .rodata:0x804F0F24; // type:object size:0xA scope:local data:string
@128 = .rodata:0x804F0F30; // type:object size:0xA scope:local data:string
@129 = .rodata:0x804F0F3C; // type:object size:0xA scope:local data:string
@130 = .rodata:0x804F0F48; // type:object size:0xA scope:local data:string
@131 = .rodata:0x804F0F54; // type:object size:0xA scope:local data:string
@134 = .rodata:0x804F0F60; // type:object size:0xA scope:local data:string
@135 = .rodata:0x804F0F6C; // type:object size:0xA scope:local data:string
@136 = .rodata:0x804F0F78; // type:object size:0xA scope:local data:string
@153 = .rodata:0x804F0F84; // type:object size:0xA scope:local data:string
@154 = .rodata:0x804F0F90; // type:object size:0xA scope:local data:string
@155 = .rodata:0x804F0F9C; // type:object size:0xA scope:local data:string
@157 = .rodata:0x804F0FA8; // type:object size:0xA scope:local data:string
@158 = .rodata:0x804F0FB4; // type:object size:0xA scope:local data:string
@160 = .rodata:0x804F0FC0; // type:object size:0xA scope:local data:string
@161 = .rodata:0x804F0FCC; // type:object size:0xA scope:local data:string
@162 = .rodata:0x804F0FD8; // type:object size:0xA scope:local data:string
@164 = .rodata:0x804F0FE4; // type:object size:0xA scope:local data:string
@165 = .rodata:0x804F0FF0; // type:object size:0xA scope:local data:string
@166 = .rodata:0x804F0FFC; // type:object size:0xA scope:local data:string
@168 = .rodata:0x804F1008; // type:object size:0xA scope:local data:string
@169 = .rodata:0x804F1014; // type:object size:0xA scope:local data:string
@170 = .rodata:0x804F1020; // type:object size:0xA scope:local data:string
@172 = .rodata:0x804F102C; // type:object size:0xA scope:local data:string
sInfos__13dSndStageInfo = .rodata:0x804F1038; // type:object size:0x12D0 data:4byte
lbl_804F2308 = .rodata:0x804F2308; // type:object size:0x10
lbl_804F2318 = .rodata:0x804F2318; // type:object size:0x10
lbl_804F2328 = .rodata:0x804F2328; // type:object size:0x10
@@ -37975,8 +37975,8 @@ lbl_805489C0 = .data:0x805489C0; // type:object size:0x10 data:string
lbl_805489D0 = .data:0x805489D0; // type:object size:0xC
lbl_805489DC = .data:0x805489DC; // type:object size:0xC
lbl_805489E8 = .data:0x805489E8; // type:object size:0xC
vtable3 = .data:0x805489F4; // type:object size:0xC
lbl_80548A00 = .data:0x80548A00; // type:object size:0xC
__vt__32SndMgrDisposer<14dSndStateMgr_c> = .data:0x805489F4; // type:object size:0xC
@STRING@resetStageName__14dSndStateMgr_cFv = .data:0x80548A00; // type:object size:0xB data:string
lbl_80548A0C = .data:0x80548A0C; // type:object size:0xC
lbl_80548A18 = .data:0x80548A18; // type:object size:0x10
lbl_80548A28 = .data:0x80548A28; // type:object size:0x10
@@ -38014,7 +38014,7 @@ __vt__29dSndControlPlayerVolumeBase_c = .data:0x80548CA4; // type:object size:0x
jumptable_80548CC8 = .data:0x80548CC8; // type:object size:0x34 scope:local
jumptable_80548CFC = .data:0x80548CFC; // type:object size:0x284 scope:local
lbl_80548F80 = .data:0x80548F80; // type:object size:0xC
vtable4 = .data:0x80548F8C; // type:object size:0xC
__vt__30SndMgrDisposer<12dSndBgmMgr_c> = .data:0x80548F8C; // type:object size:0xC
lbl_80548F98 = .data:0x80548F98; // type:object size:0xC
lbl_80548FA4 = .data:0x80548FA4; // type:object size:0x10
lbl_80548FB4 = .data:0x80548FB4; // type:object size:0xC
@@ -42276,12 +42276,12 @@ sDisposer__15dSnd3DManager_c = .sbss:0x80575D5C; // type:object size:0x4 data:4b
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
ENEMY_SOUND_MGR = .sbss:0x80575D6C; // type:object size:0x4 data:4byte
ENEMY_SOUND_MGR_source = .sbss:0x80575D70; // type:object size:0x8 data:4byte
sInstance__14dSndStateMgr_c = .sbss:0x80575D6C; // type:object size:0x4 data:4byte
sDisposer__14dSndStateMgr_c = .sbss:0x80575D70; // type:object size:0x8 data:4byte
sInstance__24dSndAreaSoundEffectMgr_c = .sbss:0x80575D78; // type:object size:0x4 data:4byte
sDisposer__24dSndAreaSoundEffectMgr_c = .sbss:0x80575D7C; // type:object size:0x4 data:4byte
FANFARE_SOUND_MGR = .sbss:0x80575D80; // type:object size:0x4 data:4byte
FANFARE_SOUND_MGR_source = .sbss:0x80575D84; // type:object size:0x4 data:4byte
sInstance__12dSndBgmMgr_c = .sbss:0x80575D80; // type:object size:0x4 data:4byte
sDisposer__12dSndBgmMgr_c = .sbss:0x80575D84; // type:object size:0x4 data:4byte
lbl_80575D88 = .sbss:0x80575D88; // type:object size:0x8 data:4byte
SOME_UNUSED_SOUND_MGR = .sbss:0x80575D90; // type:object size:0x4 data:4byte
SOME_UNUSED_SOUND_MGR_source = .sbss:0x80575D94; // type:object size:0x4 data:4byte
@@ -48804,111 +48804,111 @@ lbl_8057D468 = .sdata2:0x8057D468; // type:object size:0x4 align:4 data:float
lbl_8057D46C = .sdata2:0x8057D46C; // type:object size:0x4 align:4 data:float
lbl_8057D470 = .sdata2:0x8057D470; // type:object size:0x4 align:4 data:float
lbl_8057D474 = .sdata2:0x8057D474; // type:object size:0x4 align:4 data:float
lbl_8057D478 = .sdata2:0x8057D478; // type:object size:0x8
lbl_8057D480 = .sdata2:0x8057D480; // type:object size:0x8
lbl_8057D488 = .sdata2:0x8057D488; // type:object size:0x8
lbl_8057D490 = .sdata2:0x8057D490; // type:object size:0x8
lbl_8057D498 = .sdata2:0x8057D498; // type:object size:0x8
lbl_8057D4A0 = .sdata2:0x8057D4A0; // type:object size:0x8
lbl_8057D4A8 = .sdata2:0x8057D4A8; // type:object size:0x8
lbl_8057D4B0 = .sdata2:0x8057D4B0; // type:object size:0x8
lbl_8057D4B8 = .sdata2:0x8057D4B8; // type:object size:0x8
lbl_8057D4C0 = .sdata2:0x8057D4C0; // type:object size:0x8
lbl_8057D4C8 = .sdata2:0x8057D4C8; // type:object size:0x8
lbl_8057D4D0 = .sdata2:0x8057D4D0; // type:object size:0x8
lbl_8057D4D8 = .sdata2:0x8057D4D8; // type:object size:0x8
lbl_8057D4E0 = .sdata2:0x8057D4E0; // type:object size:0x8
lbl_8057D4E8 = .sdata2:0x8057D4E8; // type:object size:0x8
lbl_8057D4F0 = .sdata2:0x8057D4F0; // type:object size:0x8
lbl_8057D4F8 = .sdata2:0x8057D4F8; // type:object size:0x8
lbl_8057D500 = .sdata2:0x8057D500; // type:object size:0x8
lbl_8057D508 = .sdata2:0x8057D508; // type:object size:0x8
lbl_8057D510 = .sdata2:0x8057D510; // type:object size:0x8
lbl_8057D518 = .sdata2:0x8057D518; // type:object size:0x8
lbl_8057D520 = .sdata2:0x8057D520; // type:object size:0x8
lbl_8057D528 = .sdata2:0x8057D528; // type:object size:0x8
lbl_8057D530 = .sdata2:0x8057D530; // type:object size:0x8
lbl_8057D538 = .sdata2:0x8057D538; // type:object size:0x8
lbl_8057D540 = .sdata2:0x8057D540; // type:object size:0x8
lbl_8057D548 = .sdata2:0x8057D548; // type:object size:0x8
lbl_8057D550 = .sdata2:0x8057D550; // type:object size:0x8
lbl_8057D558 = .sdata2:0x8057D558; // type:object size:0x8
lbl_8057D560 = .sdata2:0x8057D560; // type:object size:0x8
lbl_8057D568 = .sdata2:0x8057D568; // type:object size:0x8
lbl_8057D570 = .sdata2:0x8057D570; // type:object size:0x8
lbl_8057D578 = .sdata2:0x8057D578; // type:object size:0x8
lbl_8057D580 = .sdata2:0x8057D580; // type:object size:0x8
lbl_8057D588 = .sdata2:0x8057D588; // type:object size:0x8
lbl_8057D590 = .sdata2:0x8057D590; // type:object size:0x8
lbl_8057D598 = .sdata2:0x8057D598; // type:object size:0x8
lbl_8057D5A0 = .sdata2:0x8057D5A0; // type:object size:0x8
lbl_8057D5A8 = .sdata2:0x8057D5A8; // type:object size:0x8
lbl_8057D5B0 = .sdata2:0x8057D5B0; // type:object size:0x8
lbl_8057D5B8 = .sdata2:0x8057D5B8; // type:object size:0x8
lbl_8057D5C0 = .sdata2:0x8057D5C0; // type:object size:0x8
lbl_8057D5C8 = .sdata2:0x8057D5C8; // type:object size:0x8
lbl_8057D5D0 = .sdata2:0x8057D5D0; // type:object size:0x8
lbl_8057D5D8 = .sdata2:0x8057D5D8; // type:object size:0x8
lbl_8057D5E0 = .sdata2:0x8057D5E0; // type:object size:0x8
lbl_8057D5E8 = .sdata2:0x8057D5E8; // type:object size:0x8
lbl_8057D5F0 = .sdata2:0x8057D5F0; // type:object size:0x8
lbl_8057D5F8 = .sdata2:0x8057D5F8; // type:object size:0x8
lbl_8057D600 = .sdata2:0x8057D600; // type:object size:0x8
lbl_8057D608 = .sdata2:0x8057D608; // type:object size:0x8
lbl_8057D610 = .sdata2:0x8057D610; // type:object size:0x8
lbl_8057D618 = .sdata2:0x8057D618; // type:object size:0x8
lbl_8057D620 = .sdata2:0x8057D620; // type:object size:0x8
lbl_8057D628 = .sdata2:0x8057D628; // type:object size:0x8
lbl_8057D630 = .sdata2:0x8057D630; // type:object size:0x8
lbl_8057D638 = .sdata2:0x8057D638; // type:object size:0x8
lbl_8057D640 = .sdata2:0x8057D640; // type:object size:0x8
lbl_8057D648 = .sdata2:0x8057D648; // type:object size:0x8
lbl_8057D650 = .sdata2:0x8057D650; // type:object size:0x8
lbl_8057D658 = .sdata2:0x8057D658; // type:object size:0x8
lbl_8057D660 = .sdata2:0x8057D660; // type:object size:0x8
lbl_8057D668 = .sdata2:0x8057D668; // type:object size:0x8
lbl_8057D670 = .sdata2:0x8057D670; // type:object size:0x8
lbl_8057D678 = .sdata2:0x8057D678; // type:object size:0x8
lbl_8057D680 = .sdata2:0x8057D680; // type:object size:0x8
lbl_8057D688 = .sdata2:0x8057D688; // type:object size:0x8
lbl_8057D690 = .sdata2:0x8057D690; // type:object size:0x8
lbl_8057D698 = .sdata2:0x8057D698; // type:object size:0x8
lbl_8057D6A0 = .sdata2:0x8057D6A0; // type:object size:0x8
lbl_8057D6A8 = .sdata2:0x8057D6A8; // type:object size:0x8
lbl_8057D6B0 = .sdata2:0x8057D6B0; // type:object size:0x8
lbl_8057D6B8 = .sdata2:0x8057D6B8; // type:object size:0x8
lbl_8057D6C0 = .sdata2:0x8057D6C0; // type:object size:0x8
lbl_8057D6C8 = .sdata2:0x8057D6C8; // type:object size:0x8
lbl_8057D6D0 = .sdata2:0x8057D6D0; // type:object size:0x8
lbl_8057D6D8 = .sdata2:0x8057D6D8; // type:object size:0x8
lbl_8057D6E0 = .sdata2:0x8057D6E0; // type:object size:0x8
lbl_8057D6E8 = .sdata2:0x8057D6E8; // type:object size:0x8
lbl_8057D6F0 = .sdata2:0x8057D6F0; // type:object size:0x8
lbl_8057D6F8 = .sdata2:0x8057D6F8; // type:object size:0x8
lbl_8057D700 = .sdata2:0x8057D700; // type:object size:0x8
lbl_8057D708 = .sdata2:0x8057D708; // type:object size:0x8
lbl_8057D710 = .sdata2:0x8057D710; // type:object size:0x8
lbl_8057D718 = .sdata2:0x8057D718; // type:object size:0x8
lbl_8057D720 = .sdata2:0x8057D720; // type:object size:0x8
lbl_8057D728 = .sdata2:0x8057D728; // type:object size:0x8
lbl_8057D730 = .sdata2:0x8057D730; // type:object size:0x8
lbl_8057D738 = .sdata2:0x8057D738; // type:object size:0x8
lbl_8057D740 = .sdata2:0x8057D740; // type:object size:0x8
lbl_8057D748 = .sdata2:0x8057D748; // type:object size:0x8
lbl_8057D750 = .sdata2:0x8057D750; // type:object size:0x8
lbl_8057D758 = .sdata2:0x8057D758; // type:object size:0x8
lbl_8057D760 = .sdata2:0x8057D760; // type:object size:0x8
lbl_8057D768 = .sdata2:0x8057D768; // type:object size:0x8
lbl_8057D770 = .sdata2:0x8057D770; // type:object size:0x8
lbl_8057D778 = .sdata2:0x8057D778; // type:object size:0x8
lbl_8057D780 = .sdata2:0x8057D780; // type:object size:0x8
lbl_8057D788 = .sdata2:0x8057D788; // type:object size:0x8
lbl_8057D790 = .sdata2:0x8057D790; // type:object size:0x8
lbl_8057D798 = .sdata2:0x8057D798; // type:object size:0x8
lbl_8057D7A0 = .sdata2:0x8057D7A0; // type:object size:0x8
lbl_8057D7A8 = .sdata2:0x8057D7A8; // type:object size:0x8
lbl_8057D7B0 = .sdata2:0x8057D7B0; // type:object size:0x8
lbl_8057D7B8 = .sdata2:0x8057D7B8; // type:object size:0x8 data:4byte
@11 = .sdata2:0x8057D478; // type:object size:0x5 scope:local data:string
@12 = .sdata2:0x8057D480; // type:object size:0x5 scope:local data:string
@13 = .sdata2:0x8057D488; // type:object size:0x5 scope:local data:string
@14 = .sdata2:0x8057D490; // type:object size:0x7 scope:local data:string
@15 = .sdata2:0x8057D498; // type:object size:0x5 scope:local data:string
@17 = .sdata2:0x8057D4A0; // type:object size:0x5 scope:local data:string
@18 = .sdata2:0x8057D4A8; // type:object size:0x7 scope:local data:string
@19 = .sdata2:0x8057D4B0; // type:object size:0x7 scope:local data:string
@20 = .sdata2:0x8057D4B8; // type:object size:0x7 scope:local data:string
@21 = .sdata2:0x8057D4C0; // type:object size:0x7 scope:local data:string
@22 = .sdata2:0x8057D4C8; // type:object size:0x5 scope:local data:string
@23 = .sdata2:0x8057D4D0; // type:object size:0x5 scope:local data:string
@24 = .sdata2:0x8057D4D8; // type:object size:0x7 scope:local data:string
@25 = .sdata2:0x8057D4E0; // type:object size:0x7 scope:local data:string
@27 = .sdata2:0x8057D4E8; // type:object size:0x5 scope:local data:string
@28 = .sdata2:0x8057D4F0; // type:object size:0x7 scope:local data:string
@29 = .sdata2:0x8057D4F8; // type:object size:0x7 scope:local data:string
@30 = .sdata2:0x8057D500; // type:object size:0x7 scope:local data:string
@31 = .sdata2:0x8057D508; // type:object size:0x7 scope:local data:string
@32 = .sdata2:0x8057D510; // type:object size:0x7 scope:local data:string
@33 = .sdata2:0x8057D518; // type:object size:0x7 scope:local data:string
@34 = .sdata2:0x8057D520; // type:object size:0x5 scope:local data:string
@36 = .sdata2:0x8057D528; // type:object size:0x5 scope:local data:string
@38 = .sdata2:0x8057D530; // type:object size:0x5 scope:local data:string
@42 = .sdata2:0x8057D538; // type:object size:0x5 scope:local data:string
@47 = .sdata2:0x8057D540; // type:object size:0x5 scope:local data:string
@49 = .sdata2:0x8057D548; // type:object size:0x5 scope:local data:string
@52 = .sdata2:0x8057D550; // type:object size:0x5 scope:local data:string
@53 = .sdata2:0x8057D558; // type:object size:0x7 scope:local data:string
@54 = .sdata2:0x8057D560; // type:object size:0x5 scope:local data:string
@55 = .sdata2:0x8057D568; // type:object size:0x5 scope:local data:string
@56 = .sdata2:0x8057D570; // type:object size:0x5 scope:local data:string
@57 = .sdata2:0x8057D578; // type:object size:0x5 scope:local data:string
@58 = .sdata2:0x8057D580; // type:object size:0x5 scope:local data:string
@59 = .sdata2:0x8057D588; // type:object size:0x7 scope:local data:string
@60 = .sdata2:0x8057D590; // type:object size:0x5 scope:local data:string
@61 = .sdata2:0x8057D598; // type:object size:0x7 scope:local data:string
@62 = .sdata2:0x8057D5A0; // type:object size:0x7 scope:local data:string
@63 = .sdata2:0x8057D5A8; // type:object size:0x7 scope:local data:string
@64 = .sdata2:0x8057D5B0; // type:object size:0x7 scope:local data:string
@65 = .sdata2:0x8057D5B8; // type:object size:0x7 scope:local data:string
@66 = .sdata2:0x8057D5C0; // type:object size:0x7 scope:local data:string
@67 = .sdata2:0x8057D5C8; // type:object size:0x7 scope:local data:string
@68 = .sdata2:0x8057D5D0; // type:object size:0x7 scope:local data:string
@69 = .sdata2:0x8057D5D8; // type:object size:0x7 scope:local data:string
@70 = .sdata2:0x8057D5E0; // type:object size:0x7 scope:local data:string
@71 = .sdata2:0x8057D5E8; // type:object size:0x5 scope:local data:string
@73 = .sdata2:0x8057D5F0; // type:object size:0x7 scope:local data:string
@75 = .sdata2:0x8057D5F8; // type:object size:0x5 scope:local data:string
@76 = .sdata2:0x8057D600; // type:object size:0x7 scope:local data:string
@78 = .sdata2:0x8057D608; // type:object size:0x5 scope:local data:string
@79 = .sdata2:0x8057D610; // type:object size:0x5 scope:local data:string
@82 = .sdata2:0x8057D618; // type:object size:0x5 scope:local data:string
@84 = .sdata2:0x8057D620; // type:object size:0x7 scope:local data:string
@86 = .sdata2:0x8057D628; // type:object size:0x5 scope:local data:string
@87 = .sdata2:0x8057D630; // type:object size:0x5 scope:local data:string
@89 = .sdata2:0x8057D638; // type:object size:0x5 scope:local data:string
@90 = .sdata2:0x8057D640; // type:object size:0x5 scope:local data:string
@93 = .sdata2:0x8057D648; // type:object size:0x7 scope:local data:string
@94 = .sdata2:0x8057D650; // type:object size:0x7 scope:local data:string
@95 = .sdata2:0x8057D658; // type:object size:0x7 scope:local data:string
@96 = .sdata2:0x8057D660; // type:object size:0x7 scope:local data:string
@99 = .sdata2:0x8057D668; // type:object size:0x5 scope:local data:string
@100 = .sdata2:0x8057D670; // type:object size:0x5 scope:local data:string
@101 = .sdata2:0x8057D678; // type:object size:0x5 scope:local data:string
@103 = .sdata2:0x8057D680; // type:object size:0x7 scope:local data:string
@104 = .sdata2:0x8057D688; // type:object size:0x7 scope:local data:string
@105 = .sdata2:0x8057D690; // type:object size:0x7 scope:local data:string
@106 = .sdata2:0x8057D698; // type:object size:0x7 scope:local data:string
@107 = .sdata2:0x8057D6A0; // type:object size:0x7 scope:local data:string
@108 = .sdata2:0x8057D6A8; // type:object size:0x7 scope:local data:string
@109 = .sdata2:0x8057D6B0; // type:object size:0x7 scope:local data:string
@110 = .sdata2:0x8057D6B8; // type:object size:0x5 scope:local data:string
@111 = .sdata2:0x8057D6C0; // type:object size:0x5 scope:local data:string
@112 = .sdata2:0x8057D6C8; // type:object size:0x5 scope:local data:string
@113 = .sdata2:0x8057D6D0; // type:object size:0x5 scope:local data:string
@114 = .sdata2:0x8057D6D8; // type:object size:0x5 scope:local data:string
@115 = .sdata2:0x8057D6E0; // type:object size:0x5 scope:local data:string
@116 = .sdata2:0x8057D6E8; // type:object size:0x5 scope:local data:string
@118 = .sdata2:0x8057D6F0; // type:object size:0x5 scope:local data:string
@120 = .sdata2:0x8057D6F8; // type:object size:0x5 scope:local data:string
@132 = .sdata2:0x8057D700; // type:object size:0x7 scope:local data:string
@133 = .sdata2:0x8057D708; // type:object size:0x6 scope:local data:string
@137 = .sdata2:0x8057D710; // type:object size:0x6 scope:local data:string
@138 = .sdata2:0x8057D718; // type:object size:0x6 scope:local data:string
@139 = .sdata2:0x8057D720; // type:object size:0x6 scope:local data:string
@140 = .sdata2:0x8057D728; // type:object size:0x6 scope:local data:string
@141 = .sdata2:0x8057D730; // type:object size:0x6 scope:local data:string
@142 = .sdata2:0x8057D738; // type:object size:0x6 scope:local data:string
@143 = .sdata2:0x8057D740; // type:object size:0x6 scope:local data:string
@144 = .sdata2:0x8057D748; // type:object size:0x6 scope:local data:string
@145 = .sdata2:0x8057D750; // type:object size:0x6 scope:local data:string
@146 = .sdata2:0x8057D758; // type:object size:0x6 scope:local data:string
@147 = .sdata2:0x8057D760; // type:object size:0x6 scope:local data:string
@148 = .sdata2:0x8057D768; // type:object size:0x6 scope:local data:string
@149 = .sdata2:0x8057D770; // type:object size:0x6 scope:local data:string
@150 = .sdata2:0x8057D778; // type:object size:0x6 scope:local data:string
@151 = .sdata2:0x8057D780; // type:object size:0x6 scope:local data:string
@152 = .sdata2:0x8057D788; // type:object size:0x5 scope:local data:string
@156 = .sdata2:0x8057D790; // type:object size:0x5 scope:local data:string
@159 = .sdata2:0x8057D798; // type:object size:0x5 scope:local data:string
@163 = .sdata2:0x8057D7A0; // type:object size:0x6 scope:local data:string
@167 = .sdata2:0x8057D7A8; // type:object size:0x6 scope:local data:string
@171 = .sdata2:0x8057D7B0; // type:object size:0x5 scope:local data:string
sNumStageInfos__13dSndStageInfo = .sdata2:0x8057D7B8; // type:object size:0x4 data:4byte
lbl_8057D7C0 = .sdata2:0x8057D7C0; // type:object size:0x4 align:4 data:float
lbl_8057D7C4 = .sdata2:0x8057D7C4; // type:object size:0x4 align:4 data:float
lbl_8057D7C8 = .sdata2:0x8057D7C8; // type:object size:0x4 align:4 data:float
+3 -4
View File
@@ -743,9 +743,8 @@ config.libs = [
Object(NonMatching, "d/snd/d_snd_player_mgr.cpp"),
Object(NonMatching, "d/snd/d_snd_control_player_mgr.cpp"),
Object(Matching, "d/snd/d_snd_3d_manager.cpp"),
# this one is a bit weird. it deals with all the stage definitions,
# but it's not actually the bgm manager?
Object(NonMatching, "d/snd/d_snd_stage_mgr.cpp"),
Object(NonMatching, "d/snd/d_snd_state_mgr.cpp"),
Object(Matching, "d/snd/d_snd_stage_data.cpp"),
Object(NonMatching, "d/snd/d_snd_unk_component_2.cpp"),
Object(NonMatching, "d/snd/d_snd_area_sound_effect_mgr.cpp"),
Object(NonMatching, "d/snd/d_snd_area_sound.cpp"),
@@ -753,7 +752,7 @@ config.libs = [
Object(Matching, "d/snd/d_snd_control_player.cpp"),
Object(NonMatching, "d/snd/d_snd_bgm_mgr.cpp"),
Object(NonMatching, "d/snd/d_snd_bgm_sound_callbacks.cpp"),
Object(NonMatching, "d/snd/d_snd_bgm_sound_boss_callbacks.cpp"),
Object(NonMatching, "d/snd/d_snd_bgm_sound_battle_callbacks.cpp"),
Object(NonMatching, "d/snd/d_snd_bgm_sound.cpp"),
Object(NonMatching, "d/snd/d_snd_unk_15.cpp"),
Object(NonMatching, "d/snd/d_snd_small_effect_mgr.cpp"),
+4
View File
@@ -88,6 +88,10 @@ struct SpawnInfo {
return (Trial)trial;
}
const char *getStageName() const {
return stageName;
}
bool isNight() {
return getTimeOfDay() == NIGHT;
}
+139
View File
@@ -0,0 +1,139 @@
#ifndef D_SND_BGM_MGR_H
#define D_SND_BGM_MGR_H
#include "common.h"
#include "d/snd/d_snd_actor.h"
#include "d/snd/d_snd_sound.h"
#include "d/snd/d_snd_util.h"
#include "nw4r/snd/snd_FxReverbStdDpl2.h"
#include "nw4r/ut/ut_list.h"
SND_DISPOSER_FORWARD_DECL(dSndBgmMgr_c);
class dSndBgmSound_c;
class dSndBgmBattleSound_c;
// Previous Ghidra name: FanfareSoundMgr
class dSndBgmMgr_c {
public:
SND_DISPOSER_MEMBERS(dSndBgmMgr_c);
public:
enum BgmSoundList_e {
BGM_LIST_PREPARING = 0,
BGM_LIST_PLAYING = 1,
BGM_LIST_STOPPED = 2,
BGM_LIST_MAX = 3,
};
dSndBgmMgr_c();
bool playBgm(u32 soundId, s32 fadeFrames, bool paused);
bool prepareBgm(u32 soundId, u32 startOffset);
void stopAllBgm(s32 fadeFrames);
dSndBgmSound_c *getSoundHandleForBgm(u32 soundId, u32 startOffset);
bool isPlayingBgmSoundId(u32 soundId) const;
bool isPreparingBgmSoundId(u32 soundId) const;
bool isFadingOutBgmSoundId(u32 soundId) const;
bool isPreparingBgmSoundIdWithStartOffset(u32 soundId, u32 startOffset) const;
bool isPreparedBgmSoundId(u32 soundId) const;
void registSound(dSndSound_c *sound);
void unregistSound(dSndSound_c *sound);
dSndSound_c *getFanSoundHandleForFan2(u32 soundId);
dSndSound_c *getSoundHandleCurrentlyPlayingFanSound(u32 soundId);
bool isCurrentlyPlayingFanSound(u32 soundId) const;
bool hasPlayingFanSounds() const;
bool playFanSound(u32 soundId);
bool prepareFanSound(u32 soundId);
void playDelayedSound(u32 soundId, s32 delay);
void cancelDelayedSound();
void cancelDelayedBgm();
dSndBgmSound_c *getBgmSoundByIndex(u32 idx);
/**
* E.g. Lizalfos fight in ET. Note that in the ET case, this is only called when triggering
* the fight without a cutscene, the cutscene code runs through "ELizarufos_c_opening"
*/
bool beginBgmBattleRoom();
/** Runs when the fight is over, no matter how you started it */
bool endBgmBattleRoom();
private:
bool stopBgmSound(dSndBgmSound_c *sound, s32 fadeFrames);
void checkForPrepareStoppedBgmSound(u32 stoppedSoundId);
dSndBgmSound_c *findNewBgmSoundHandle();
dSndBgmSound_c *findIdleBgmSoundHandle();
bool prepareBgmSound(u32 soundId, dSndBgmSound_c *handle, u32 startOffset);
bool startAdditionalBgm(u32 soundId);
bool playBattleBgm(u32 soundId, bool immediately);
/** Used to mute other BGM when battle music is playing */
void setBgmHandleIdxVolume(u32 handleIdx, f32 volume, s32 fadeFrames);
bool isBgmHandleIdxPlayingSoundId(u32 handleIdx, u32 soundId);
bool stopBgmHandleIdx(u32 handleIdx, s32 fadeFrames);
void calcLists();
void addToBgmSoundList(BgmSoundList_e list, dSndBgmSound_c *sound);
void appendToBgmSoundList(BgmSoundList_e list, dSndBgmSound_c *sound);
void removeFromBgmSoundList(BgmSoundList_e list, dSndBgmSound_c *sound);
void removeFromAllBgmSoundLists(dSndBgmSound_c *sound);
bool isInBgmSoundList(BgmSoundList_e list, dSndBgmSound_c *sound);
dSndBgmSound_c *getFirstInBgmSoundList(BgmSoundList_e list);
dSndBgmSound_c *getNextInBgmSoundList(BgmSoundList_e list, dSndBgmSound_c *sound);
dSndBgmSound_c *getLastInBgmSoundList(BgmSoundList_e list);
bool startDelayedSound();
void calcDelayedSound();
dSndBgmSound_c *getBgmSoundHandleForId(u32 soundId) const;
dSndSound_c *getFreeFanSoundHandle();
dSndSound_c *getFanSoundHandleForFan(u32 soundId);
void stopFanSounds(s32 fadeFrames);
bool isSoundRegist(dSndSound_c *sound);
/* 0x010 */ nw4r::snd::FxReverbStdDpl2 mFx;
/* 0x240 */ UNKWORD field_0x240;
/* 0x244 */ UNKWORD field_0x244;
/* 0x248 */ UNKWORD field_0x248;
/* 0x24C */ u32 mScheduledSoundId;
/* 0x250 */ s32 mScheduledSoundDelay;
/* 0x254 */ dSndBgmSound_c *mBgmSounds[7];
/* 0x270 */ dSndBgmSound_c *field_0x270;
/* 0x274 */ UNKWORD field_0x274;
/* 0x278 */ nw4r::ut::List mBgmSoundLists[BGM_LIST_MAX]; // node offset 0xF0 -> dSndBgmSound_c
/* 0x29C */ UNKWORD field_0x29C;
/* 0x2A0 */ dSndActor_c mSoundActor;
/* 0x2F4 */ f32 field_0x2F4;
/* 0x2F8 */ s32 field_0x2F8;
/* 0x2FC */ u8 field_0x2FC;
/* 0x300 */ s32 field_0x300;
/* 0x304 */ u8 field_0x304;
/* 0x305 */ u8 field_0x305;
/* 0x306 */ u8 field_0x306;
/* 0x307 */ u8 field_0x307;
/* 0x308 */ u8 field_0x308;
/* 0x30C */ u32 field_0x30C[3];
/* 0x318 */ u32 field_0x318[3];
/* 0x324 */ u32 field_0x324[3];
/* 0x330 */ u8 field_0x330[3];
/* 0x333 */ u8 field_0x333;
/* 0x334 */ dSndSound_c *mFanSounds[3];
/* 0x340 */ u8 field_0x340;
/* 0x344 */ nw4r::ut::List mAllSounds; // node offset 0x8 -> dSndSound_c
};
#endif
+27
View File
@@ -0,0 +1,27 @@
#ifndef D_SND_BGM_SOUND_H
#define D_SND_BGM_SOUND_H
#include "d/snd/d_snd_sound.h"
#include "nw4r/snd/snd_SoundStartable.h"
#include "nw4r/ut/ut_list.h"
class dSndBgmSound_c : public dSndSound_c {
public:
dSndBgmSound_c();
virtual void init(nw4r::snd::SoundStartable &startable, s32 idx); // vt 0x28
bool isPreparedSoundId(u32 soundId) const {
return IsPrepared() && !mIsRunning && GetId() == soundId;
}
private:
/* 0x0F0 */ nw4r::ut::Node mBgmMgrNode;
};
class dSndBgmBattleSound_c : public dSndBgmSound_c {
public:
dSndBgmBattleSound_c();
};
#endif
+8 -6
View File
@@ -1,8 +1,9 @@
#ifndef D_SND_CHECKERS_H
#define D_SND_CHECKERS_H
#include "common.h"
#include "d/snd/d_snd_bgm_mgr.h"
#include "nw4r/snd/snd_SoundHandle.h"
#include "toBeSorted/music_mgrs.h"
class SoundPropertiesChecker {
public:
@@ -26,7 +27,7 @@ public:
return;
}
if (fn_803721F0(FANFARE_SOUND_MGR, pHandle.GetId())) {
if (dSndBgmMgr_c::GetInstance()->isPreparedBgmSoundId(pHandle.GetId())) {
if (mpCounter3 != nullptr) {
(*mpCounter3)++;
} else {
@@ -35,7 +36,7 @@ public:
return;
}
if (fn_803720E0(FANFARE_SOUND_MGR, pHandle.GetId())) {
if (dSndBgmMgr_c::GetInstance()->isPreparingBgmSoundId(pHandle.GetId())) {
if (mpCounter3 != nullptr) {
(*mpCounter3)++;
} else {
@@ -44,7 +45,7 @@ public:
return;
}
if (fn_80372070(FANFARE_SOUND_MGR, pHandle.GetId())) {
if (dSndBgmMgr_c::GetInstance()->isFadingOutBgmSoundId(pHandle.GetId())) {
if (mpCounter4 != nullptr) {
(*mpCounter4)++;
} else {
@@ -53,7 +54,9 @@ public:
return;
}
if (fn_803734C0(FANFARE_SOUND_MGR, pHandle.GetId()) && !fn_80373550(FANFARE_SOUND_MGR, pHandle.GetId())) {
if (dSndBgmMgr_c::GetInstance()->getFanSoundHandleForFan2(pHandle.GetId()) != nullptr &&
!dSndBgmMgr_c::GetInstance()->isCurrentlyPlayingFanSound(pHandle.GetId())) {
// Why not mpCounter3???
mCounter3++;
}
}
@@ -70,7 +73,6 @@ private:
/* 0x24 */ u32 *mpCounter4;
};
// used at the very least when trying to finish Demise
class IsCurrentSoundIdChecker {
public:
+1 -1
View File
@@ -49,7 +49,7 @@ public:
};
enum VolumeControlGroup {
/** PLAYER_BGM, PLAYER_BGM_BOSS */
/** PLAYER_BGM, PLAYER_BGM_BATTLE */
CTRL_GROUP_BGM = 0,
/** PLAYER_TG_SOUND - PLAYER_AREA_IN_WATER_LV */
CTRL_GROUP_STAGE_EFFECTS = 1,
+2 -2
View File
@@ -19,8 +19,8 @@ public:
return sInstance;
}
static nw4r::snd::SoundArchivePlayer* getPlayer() {
return sInstance->ArcPlayer::getPlayer();
static nw4r::snd::SoundArchivePlayer& getPlayer() {
return *sInstance->ArcPlayer::getPlayer();
}
private:
+7 -2
View File
@@ -51,16 +51,21 @@ public:
bool loadDemoArchive(const char *demoArchiveName);
const char *getSoundArchivePath();
u32 convertLabelStringToSoundId(const char *label) const;
static bool isBgmPlayerId(u32 id);
nw4r::snd::SoundArchivePlayer &getSoundArchivePlayerForType(u8 sourceType);
bool canUseThisPlayer(u8 sourceType) const;
void stopAllSound();
enum PlayerMgrFlag_e {
MGR_HBM = 0x1,
MGR_UNK_0x2 = 0x2,
MGR_PAUSE = 0x4,
MGR_MAP = 0x8,
MGR_HELP = 0x10,
MGR_UNK_0x80 = 0x80,
};
bool checkFlag(u32 mask) const {
@@ -111,8 +116,8 @@ public:
enum PlayerIndex_e {
/** Background music */
PLAYER_BGM = 0,
/** Background music, boss battle */
PLAYER_BGM_BOSS = 1,
/** Background music, battles */
PLAYER_BGM_BATTLE = 1,
/** "fanfare?" */
PLAYER_FAN = 2,
/** small sound effects, only a few (UI navigation related) */
+23 -19
View File
@@ -173,11 +173,31 @@ public:
void linkCtrl(dSndControlSound_c *);
void unlinkCtrl(dSndControlSound_c *);
protected:
bool cannotStart() const {
bool isPlaying() const {
return mIsRunning && !mIsFadingOut && IsAttachedSound();
}
bool isPlayingSoundId(u32 soundId) const {
return mIsRunning && !mIsFadingOut && GetId() == soundId;
}
bool isPreparingSoundId(u32 soundId) const {
return mIsPreparing && !mIsRunning && GetId() == soundId;
}
bool isFadingOutSoundId(u32 soundId) const {
return mIsFadingOut && IsAttachedSound();
}
bool isPreparingSoundIdWithStartOffset(u32 soundId, u32 offset) const {
return isPreparingSoundId(soundId) && (offset == 0 || mPrevStartOffset == offset);
}
bool hasState() const {
return mIsRunning || mIsPreparing || IsAttachedSound();
}
protected:
bool isRunning() const {
return mIsRunning && IsAttachedSound();
}
@@ -186,28 +206,12 @@ protected:
return mIsPreparing && !mIsRunning;
}
bool canCancel() const {
return mIsRunning || mIsPreparing || IsAttachedSound();
}
bool isPreparingSoundId(u32 soundId) const {
bool ret = mIsPreparing;
if (ret) {
ret = !mIsRunning;
}
if (ret) {
ret = GetId() == soundId;
}
return ret;
}
void resetControls();
void resetTrackVolumes();
void setControlValue(dSndControlSound_c *ctrl, f32 value, s32 frames);
/* 0x08 */ u8 _0x08[0x10 - 0x08];
/* 0x08 */ nw4r::ut::Node mBgmMgrNode;
/* 0x10 */ u32 mPrevStartOffset;
/* 0x14 */ bool mIsPreparing;
/* 0x15 */ bool mPauseFlag;
+3 -2
View File
@@ -19,6 +19,7 @@ public:
static u32 getCharacterTalkSoundId(u32 baseSoundId, dSoundSource_c *source);
u32 getRemoConSoundVariant(u32 soundId) const;
s32 getRoomId() 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
@@ -86,10 +87,10 @@ private:
// at 0x04: dSnd3DActor_c sub-object
// at 0x58: thunk-vtable
/* 0xE8 */ nw4r::ut::Node mMgrLink;
/* 0x0E8 */ nw4r::ut::Node mMgrLink;
/* 0x0F0 */ const char *mpName;
/* 0x0F4 */ UNKWORD field_0x0F4;
/* 0x0F8 */ dAcBase_c *mpPlayer;
/* 0x0F8 */ dAcBase_c *mpActor;
/* 0x0FC */ u8 mSourceCategory;
/* 0x0FD */ u8 mSourceType;
/* 0x0FE */ u8 field_0x0FE;
+1
View File
@@ -19,6 +19,7 @@ enum SoundSourceType_e {
// 10-31: Enemy? (2)
SND_SOURCE_ENEMY_10 = 10,
SND_SOURCE_SPARK = 17,
SND_SOURCE_BIGBOSS = 20,
SND_SOURCE_GIRAHUMU_3 = 24,
SND_SOURCE_BULLET = 29,
+5
View File
@@ -22,11 +22,16 @@ public:
void playFlowSound(u32 id);
static s32 getSourceCategoryForSourceType(s32 sourceType, const char *name);
static dSoundSource_c *getBoomerangSource() {
return GetInstance()->mpBoomerangSource;
}
private:
static bool isCertainEnemyType(dSoundSource_c *source);
void removeSourceFromList(dSoundSource_c *source, nw4r::ut::List *list);
void clearSourceLists();
void clearSourceList(nw4r::ut::List *list);
s32 getPlayerSourceRoomId() const;
/* 0x0010 */ u8 field_0x0010;
/* 0x0011 */ u8 field_0x0011;
+197
View File
@@ -0,0 +1,197 @@
#ifndef D_SND_STATE_DEF_H
#define D_SND_STATE_DEF_H
#include "common.h"
struct dSndStageInfo {
/* 0x00 */ const char *stageName;
/* 0x04 */ s32 layer;
/* 0x08 */ u32 unk1;
/* 0x0C */ u32 unk2;
/* 0x10 */ u32 unk3;
/* 0x14 */ u32 unk4;
/* 0x18 */ const char *demoName;
static const s32 sNumStageInfos;
static const dSndStageInfo sInfos[];
};
enum SndStage_e {
/* 0x00 */ SND_STAGE_F100,
/* 0x01 */ SND_STAGE_F101,
/* 0x02 */ SND_STAGE_F102,
/* 0x03 */ SND_STAGE_F102_1,
/* 0x04 */ SND_STAGE_F103_L13,
/* 0x05 */ SND_STAGE_F103,
/* 0x06 */ SND_STAGE_F200,
/* 0x07 */ SND_STAGE_F201_1,
/* 0x08 */ SND_STAGE_F201_2,
/* 0x09 */ SND_STAGE_F201_3,
/* 0x0A */ SND_STAGE_F201_4,
/* 0x0B */ SND_STAGE_F202,
/* 0x0C */ SND_STAGE_F300,
/* 0x0D */ SND_STAGE_F300_1,
/* 0x0E */ SND_STAGE_F300_4_L13,
/* 0x0F */ SND_STAGE_F300_4,
/* 0x10 */ SND_STAGE_F301,
/* 0x11 */ SND_STAGE_F301_1,
/* 0x12 */ SND_STAGE_F301_2,
/* 0x13 */ SND_STAGE_F301_3,
/* 0x14 */ SND_STAGE_F301_4_L2,
/* 0x15 */ SND_STAGE_F301_4,
/* 0x16 */ SND_STAGE_F301_6,
/* 0x17 */ SND_STAGE_F301_7,
/* 0x18 */ SND_STAGE_F302_L13,
/* 0x19 */ SND_STAGE_F302,
/* 0x1A */ SND_STAGE_F400_L13,
/* 0x1B */ SND_STAGE_F400,
/* 0x1C */ SND_STAGE_F401_L2,
/* 0x1D */ SND_STAGE_F401_L3,
/* 0x1E */ SND_STAGE_F401_L4,
/* 0x1F */ SND_STAGE_F401_L13,
/* 0x20 */ SND_STAGE_F401_L14,
/* 0x21 */ SND_STAGE_F401_L15,
/* 0x22 */ SND_STAGE_F401,
/* 0x23 */ SND_STAGE_F403_L13,
/* 0x24 */ SND_STAGE_F403_L14,
/* 0x25 */ SND_STAGE_F403_L15,
/* 0x26 */ SND_STAGE_F403_L16,
/* 0x27 */ SND_STAGE_F403,
/* 0x28 */ SND_STAGE_F405,
/* 0x29 */ SND_STAGE_F406_L13,
/* 0x2A */ SND_STAGE_F406_L14,
/* 0x2B */ SND_STAGE_F406,
/* 0x2C */ SND_STAGE_D301,
/* 0x2D */ SND_STAGE_D301_1,
/* 0x2E */ SND_STAGE_D000,
/* 0x2F */ SND_STAGE_D100,
/* 0x30 */ SND_STAGE_D101,
/* 0x31 */ SND_STAGE_D200,
/* 0x32 */ SND_STAGE_D201,
/* 0x33 */ SND_STAGE_D201_1,
/* 0x34 */ SND_STAGE_D300,
/* 0x35 */ SND_STAGE_D300_1,
/* 0x36 */ SND_STAGE_D003_0,
/* 0x37 */ SND_STAGE_D003_1,
/* 0x38 */ SND_STAGE_D003_2,
/* 0x39 */ SND_STAGE_D003_3,
/* 0x3A */ SND_STAGE_D003_4,
/* 0x3B */ SND_STAGE_D003_5,
/* 0x3C */ SND_STAGE_D003_6,
/* 0x3D */ SND_STAGE_D003_7,
/* 0x3E */ SND_STAGE_D003_8,
/* 0x3F */ SND_STAGE_B100_L13,
/* 0x40 */ SND_STAGE_B100,
/* 0x41 */ SND_STAGE_B100_1_L13,
/* 0x42 */ SND_STAGE_B100_1,
/* 0x43 */ SND_STAGE_B101,
/* 0x44 */ SND_STAGE_B101_1_L13,
/* 0x45 */ SND_STAGE_B101_1,
/* 0x46 */ SND_STAGE_B200_L1,
/* 0x47 */ SND_STAGE_B200_L2,
/* 0x48 */ SND_STAGE_B200_L3,
/* 0x49 */ SND_STAGE_B200,
/* 0x4A */ SND_STAGE_B210_L13,
/* 0x4B */ SND_STAGE_B210_L14,
/* 0x4C */ SND_STAGE_B210,
/* 0x4D */ SND_STAGE_B201_L13,
/* 0x4E */ SND_STAGE_B201,
/* 0x4F */ SND_STAGE_B201_1_L13,
/* 0x50 */ SND_STAGE_B201_1,
/* 0x51 */ SND_STAGE_B300,
/* 0x52 */ SND_STAGE_B301_L13,
/* 0x53 */ SND_STAGE_B301,
/* 0x54 */ SND_STAGE_B003,
/* 0x55 */ SND_STAGE_B400_L13,
/* 0x56 */ SND_STAGE_B400_L14,
/* 0x57 */ SND_STAGE_B400,
/* 0x58 */ SND_STAGE_F100_1,
/* 0x59 */ SND_STAGE_F100_2,
/* 0x5A */ SND_STAGE_F102_2,
/* 0x5B */ SND_STAGE_F103_1_L13,
/* 0x5C */ SND_STAGE_F103_1_L14,
/* 0x5D */ SND_STAGE_F103_1,
/* 0x5E */ SND_STAGE_F210,
/* 0x5F */ SND_STAGE_F211,
/* 0x60 */ SND_STAGE_F221_L13,
/* 0x61 */ SND_STAGE_F221,
/* 0x62 */ SND_STAGE_F202_1,
/* 0x63 */ SND_STAGE_F202_2,
/* 0x64 */ SND_STAGE_F202_3,
/* 0x65 */ SND_STAGE_F202_4,
/* 0x66 */ SND_STAGE_F300_2,
/* 0x67 */ SND_STAGE_F300_3,
/* 0x68 */ SND_STAGE_F300_5,
/* 0x69 */ SND_STAGE_F303,
/* 0x6A */ SND_STAGE_S000,
/* 0x6B */ SND_STAGE_S100,
/* 0x6C */ SND_STAGE_S200,
/* 0x6D */ SND_STAGE_S300,
/* 0x6E */ SND_STAGE_F020_L3,
/* 0x6F */ SND_STAGE_F020,
/* 0x70 */ SND_STAGE_F021_L13,
/* 0x71 */ SND_STAGE_F021,
/* 0x72 */ SND_STAGE_F023_L14,
/* 0x73 */ SND_STAGE_F023,
/* 0x74 */ SND_STAGE_F000_L13,
/* 0x75 */ SND_STAGE_F000_L14,
/* 0x76 */ SND_STAGE_F000_L15,
/* 0x77 */ SND_STAGE_F000_L16,
/* 0x78 */ SND_STAGE_F000_L17,
/* 0x79 */ SND_STAGE_F000_L18,
/* 0x7A */ SND_STAGE_F000_L19,
/* 0x7B */ SND_STAGE_F000_L20,
/* 0x7C */ SND_STAGE_F000_L21,
/* 0x7D */ SND_STAGE_F000_L26,
/* 0x7E */ SND_STAGE_F000_L27,
/* 0x7F */ SND_STAGE_F000,
/* 0x80 */ SND_STAGE_F301_5,
/* 0x81 */ SND_STAGE_F001r_L13,
/* 0x82 */ SND_STAGE_F001r_L14,
/* 0x83 */ SND_STAGE_F001r_L15,
/* 0x84 */ SND_STAGE_F001r,
/* 0x85 */ SND_STAGE_F002r,
/* 0x86 */ SND_STAGE_F004r,
/* 0x87 */ SND_STAGE_F009r,
/* 0x88 */ SND_STAGE_F011r,
/* 0x89 */ SND_STAGE_F012r,
/* 0x8A */ SND_STAGE_F019r,
/* 0x8B */ SND_STAGE_F005r,
/* 0x8C */ SND_STAGE_F006r,
/* 0x8D */ SND_STAGE_F007r,
/* 0x8E */ SND_STAGE_F013r,
/* 0x8F */ SND_STAGE_F014r,
/* 0x90 */ SND_STAGE_F015r,
/* 0x91 */ SND_STAGE_F016r,
/* 0x92 */ SND_STAGE_F017r,
/* 0x93 */ SND_STAGE_F018r,
/* 0x94 */ SND_STAGE_F402_L2,
/* 0x95 */ SND_STAGE_F402_L3,
/* 0x96 */ SND_STAGE_F402_L5,
/* 0x97 */ SND_STAGE_F402_L13,
/* 0x98 */ SND_STAGE_F402_L18,
/* 0x99 */ SND_STAGE_F402_L19,
/* 0x9A */ SND_STAGE_F402,
/* 0x9B */ SND_STAGE_F404_L13,
/* 0x9C */ SND_STAGE_F404_L14,
/* 0x9D */ SND_STAGE_F404,
/* 0x9E */ SND_STAGE_F407_L13,
/* 0x9F */ SND_STAGE_F407_L14,
/* 0xA0 */ SND_STAGE_F407_L15,
/* 0xA1 */ SND_STAGE_F407,
/* 0xA2 */ SND_STAGE_F008r_L13,
/* 0xA3 */ SND_STAGE_F008r_L14,
/* 0xA4 */ SND_STAGE_F008r_L15,
/* 0xA5 */ SND_STAGE_F008r,
/* 0xA6 */ SND_STAGE_F010r_L13,
/* 0xA7 */ SND_STAGE_F010r_L14,
/* 0xA8 */ SND_STAGE_F010r_L15,
/* 0xA9 */ SND_STAGE_F010r,
/* 0xAA */ SND_STAGE_Demo_L13,
/* 0xAB */ SND_STAGE_Demo,
/* 0xAC */ SND_STAGE_MAX,
};
#endif
+139
View File
@@ -0,0 +1,139 @@
#ifndef D_SND_STATE_MGR_H
#define D_SND_STATE_MGR_H
#include "common.h"
#include "d/snd/d_snd_util.h"
#include "nw4r/snd/snd_FxReverbStdDpl2.h"
#include "sized_string.h"
SND_DISPOSER_FORWARD_DECL(dSndStateMgr_c);
// Previous Ghidra name: EnemySoundMgr
class dSndStateMgr_c {
public:
SND_DISPOSER_MEMBERS(dSndStateMgr_c);
public:
enum StageFlags_e {
STAGE_FIELD = 0x1,
STAGE_DUNGEON = 0x2,
STAGE_BOSS = 0x4,
STAGE_SILENT_REALM = 0x8,
STAGE_ROOM = 0x10, // only for sky
STAGE_SKY = 0x20,
STAGE_FOREST = 0x40,
STAGE_MOUNTAIN = 0x80,
STAGE_DESERT = 0x100,
STAGE_SILENT_GROUNDS = 0x200,
};
dSndStateMgr_c();
void setup(EGG::Heap *pHeap);
void onStageOrLayerUpdate();
static bool isInStage(const char *stageName);
u32 getField_0x11C() const {
return field_0x11C;
}
void resetStageName() {
field_0x098 = "EVENT_NONE";
}
bool checkFlag0x10(u32 mask) const {
return field_0x010 & mask;
}
void onFlag0x10(u32 mask) {
field_0x010 |= mask;
}
void offFlag0x10(u32 mask) {
field_0x010 &= ~mask;
}
void setFlowEvent(u32 eventId);
private:
u32 getStageTypeFlags(const char *stageName) const;
// ET, FS, or corresponding Sky Keep rooms
static bool isVolcanicDungeon(u32 stageId);
// Checks if the given stage + layer is the stage you're transported
// to when viewing hint movies.
static bool isSeekerStoneStage(const char *stageName, s32 layer);
void setCallbacksForStage();
u32 getStageId(const char *name, s32 layer);
static u32 getStageUnk2(u32 stageId);
/* 0x010 */ u32 field_0x010;
/* 0x014 */ UNKWORD field_0x014;
/* 0x018 */ UNKWORD field_0x018;
/* 0x01C */ SizedString<32> field_0x01C;
/* 0x03C */ UNKWORD field_0x03C;
/* 0x040 */ s32 mStageId;
/* 0x044 */ UNKWORD field_0x044;
/* 0x048 */ u8 _0x048[0x050 - 0x048];
/* 0x050 */ s32 mPreviousStageId;
/* 0x054 */ UNKWORD field_0x054;
/* 0x058 */ UNKWORD field_0x058;
/* 0x05C */ s32 mLayer;
/* 0x060 */ UNKWORD field_0x060;
/* 0x064 */ u8 field_0x064;
/* 0x065 */ bool field_0x065;
/* 0x066 */ u8 field_0x066;
/* 0x067 */ u8 field_0x067;
/* 0x068 */ UNKWORD field_0x068;
/* 0x06C */ UNKWORD field_0x06C;
/* 0x070 */ UNKWORD field_0x070;
/* 0x074 */ UNKWORD field_0x074;
/* 0x078 */ UNKWORD field_0x078;
/* 0x07C */ UNKWORD field_0x07C;
/* 0x080 */ UNKWORD field_0x080;
/* 0x084 */ UNKWORD field_0x084;
/* 0x088 */ UNKWORD field_0x088;
/* 0x08C */ UNKWORD field_0x08C;
/* 0x090 */ UNKWORD field_0x090;
/* 0x094 */ u32 field_0x094;
/* 0x098 */ SizedString<64> field_0x098;
/* 0x0D8 */ SizedString<64> field_0x0D8;
/* 0x118 */ const char *field_0x118;
/* 0x11C */ u32 field_0x11C;
/* 0x120 */ UNKWORD field_0x120;
/* 0x124 */ UNKWORD field_0x124;
/* 0x128 */ UNKWORD field_0x128;
/* 0x12C */ SizedString<64> field_0x12C;
/* 0x16C */ SizedString<64> field_0x16C;
/* 0x1AC */ SizedString<64> field_0x1AC;
/* 0x1EC */ SizedString<64> field_0x1EC;
/* 0x22C */ UNKWORD field_0x22C;
/* 0x230 */ UNKWORD field_0x230;
/* 0x234 */ UNKWORD field_0x234;
/* 0x238 */ UNKWORD field_0x238;
/* 0x23C */ u8 field_0x23C;
/* 0x23D */ u8 field_0x23D;
/* 0x240 */ UNKWORD field_0x240;
/* 0x244 */ UNKWORD field_0x244;
/* 0x248 */ UNKWORD field_0x248;
/* 0x24C */ UNKWORD field_0x24C;
/* 0x250 */ UNKWORD field_0x250;
/* 0x254 */ u8 field_0x254;
/* 0x258 */ UNKWORD field_0x258;
/* 0x25C */ nw4r::snd::FxReverbStdDpl2 mFx;
/* 0x48C */ UNKWORD field_0x48C;
/* 0x490 */ f32 field_0x490;
/* 0x494 */ f32 field_0x494;
/* 0x498 */ f32 field_0x498;
/* 0x49C */ f32 field_0x49C;
/* 0x4A0 */ f32 field_0x4A0;
/* 0x4A4 */ UNKWORD field_0x4A4;
/* 0x4A8 */ u8 field_0x4A8;
/* 0x4A9 */ bool needsGroupsReload;
};
#endif
+706
View File
@@ -6468,4 +6468,710 @@ enum WZSound {
/* 0x193D */ LABEL_SOUND_END
};
enum WZSound_Group {
/* 0x000 */ GRP_BGM_BOSS_A,
/* 0x001 */ GRP_BGM_STATIC,
/* 0x002 */ GRP_FAN_TIMECHANGE,
/* 0x003 */ GRP_BGM_HARP_GODDESS,
/* 0x004 */ GRP_BGM_HARP_BREEZE,
/* 0x005 */ GRP_BGM_HARP_AQUA,
/* 0x006 */ GRP_BGM_HARP_FLAME,
/* 0x007 */ GRP_BGM_HARP_BRAVE,
/* 0x008 */ GRP_BGM_HARP_PUMPKIN,
/* 0x009 */ GRP_BGM_PLAY_DATA_STATIC,
/* 0x00A */ GRP_SE_SYSTEM_MINIGAME,
/* 0x00B */ GRP_SE_LINK,
/* 0x00C */ GRP_SE_LINK_VOICE,
/* 0x00D */ GRP_SE_HARP,
/* 0x00E */ GRP_SE_NPC_COMMON,
/* 0x00F */ GRP_SE_NpcKen,
/* 0x010 */ GRP_SE_NpcKen_VOCUL,
/* 0x011 */ GRP_SE_A_IN_WATER,
/* 0x012 */ GRP_SE_IN_WATER,
/* 0x013 */ GRP_SE_IN_WATER_MINI,
/* 0x014 */ GRP_SE_STATIC,
/* 0x015 */ GRP_DEFAULT,
/* 0x016 */ GRP_FIELD,
/* 0x017 */ GRP_BOSS,
/* 0x018 */ GRP_DUNGEON,
/* 0x019 */ GRP_DUNGEON_BATTLE_ROOM,
/* 0x01A */ GRP_SIREN,
/* 0x01B */ GRP_SKY,
/* 0x01C */ GRP_INDOOR,
/* 0x01D */ GRP_Demo,
/* 0x01E */ GRP_FOREST,
/* 0x01F */ GRP_MOUNTAIN,
/* 0x020 */ GRP_DESERT,
/* 0x021 */ GRP_STATIC,
/* 0x022 */ GRP_Warp,
/* 0x023 */ GRP_Sw,
/* 0x024 */ GRP_Pumpkin,
/* 0x025 */ GRP_Kanban,
/* 0x026 */ GRP_Item_A43,
/* 0x027 */ GRP_NpcRvl,
/* 0x028 */ GRP_NpcKbn,
/* 0x029 */ GRP_NpcKbn2,
/* 0x02A */ GRP_NpcSkn,
/* 0x02B */ GRP_NpcSkn2,
/* 0x02C */ GRP_NpcZld,
/* 0x02D */ GRP_NpcDsk,
/* 0x02E */ GRP_NpcDrb,
/* 0x02F */ GRP_NpcDrbC,
/* 0x030 */ GRP_NpcSoFa,
/* 0x031 */ GRP_NpcSoMo,
/* 0x032 */ GRP_NpcSoG,
/* 0x033 */ GRP_NpcTer,
/* 0x034 */ GRP_NpcResc,
/* 0x035 */ GRP_NpcResc_A1,
/* 0x036 */ GRP_NpcResc_A2,
/* 0x037 */ GRP_TstShtr,
/* 0x038 */ GRP_Kibako,
/* 0x039 */ GRP_PyBird,
/* 0x03A */ GRP_BirdCommon,
/* 0x03B */ GRP_BirdR,
/* 0x03C */ GRP_BirdZT,
/* 0x03D */ GRP_BirdB,
/* 0x03E */ GRP_Nusi,
/* 0x03F */ GRP_NusiT,
/* 0x040 */ GRP_BMg,
/* 0x041 */ GRP_BKr,
/* 0x042 */ GRP_BKrA,
/* 0x043 */ GRP_BLasBos,
/* 0x044 */ GRP_Bvd,
/* 0x045 */ GRP_Vdb,
/* 0x046 */ GRP_ECptn,
/* 0x047 */ GRP_EAm,
/* 0x048 */ GRP_Swhit,
/* 0x049 */ GRP_ESf,
/* 0x04A */ GRP_ESf4,
/* 0x04B */ GRP_Est,
/* 0x04C */ GRP_ERemly,
/* 0x04D */ GRP_ELizaru,
/* 0x04E */ GRP_EHidoK,
/* 0x04F */ GRP_EHydra,
/* 0x050 */ GRP_EGunho,
/* 0x051 */ GRP_EGunhob,
/* 0x052 */ GRP_EBfish,
/* 0x053 */ GRP_ECactus,
/* 0x054 */ GRP_ESm,
/* 0x055 */ GRP_EBeamos,
/* 0x056 */ GRP_EGeko,
/* 0x057 */ GRP_EPo,
/* 0x058 */ GRP_EPh,
/* 0x059 */ GRP_EOr,
/* 0x05A */ GRP_EEye,
/* 0x05B */ GRP_ESpark,
/* 0x05C */ GRP_EMagma,
/* 0x05D */ GRP_EMagupp,
/* 0x05E */ GRP_EKs,
/* 0x05F */ GRP_Ehb,
/* 0x060 */ GRP_EWs,
/* 0x061 */ GRP_BGh,
/* 0x062 */ GRP_BGh3,
/* 0x063 */ GRP_OGhSwL,
/* 0x064 */ GRP_OGhKf,
/* 0x065 */ GRP_BAsura,
/* 0x066 */ GRP_AsuraB,
/* 0x067 */ GRP_AsuraS,
/* 0x068 */ GRP_AsuraP,
/* 0x069 */ GRP_EMr,
/* 0x06A */ GRP_EMr_A1,
/* 0x06B */ GRP_EGumarm,
/* 0x06C */ GRP_NpcBird,
/* 0x06D */ GRP_Himo,
/* 0x06E */ GRP_SpiderL,
/* 0x06F */ GRP_Wind,
/* 0x070 */ GRP_Wind02,
/* 0x071 */ GRP_Wind03,
/* 0x072 */ GRP_Wind04,
/* 0x073 */ GRP_Tornado,
/* 0x074 */ GRP_SkEnmyT,
/* 0x075 */ GRP_EBc,
/* 0x076 */ GRP_EKGira,
/* 0x077 */ GRP_BcArrow,
/* 0x078 */ GRP_EBcZ,
/* 0x079 */ GRP_ESktl,
/* 0x07A */ GRP_Bamboo,
/* 0x07B */ GRP_TgTrap,
/* 0x07C */ GRP_NpcSalS,
/* 0x07D */ GRP_NpcSalS_A1,
/* 0x07E */ GRP_NpcSalS_A2,
/* 0x07F */ GRP_NpcSalS_A4,
/* 0x080 */ GRP_NpcSalS_A5,
/* 0x081 */ GRP_NpcSalS_A8,
/* 0x082 */ GRP_NpcDoMo,
/* 0x083 */ GRP_NpcJkMo,
/* 0x084 */ GRP_NpcSAMo,
/* 0x085 */ GRP_NpcSMnE,
/* 0x086 */ GRP_NpcSMnD,
/* 0x087 */ GRP_NpcAzFa,
/* 0x088 */ GRP_NpcDskN,
/* 0x089 */ GRP_EChb,
/* 0x08A */ GRP_EGue,
/* 0x08B */ GRP_EGerock,
/* 0x08C */ GRP_PushBlk,
/* 0x08D */ GRP_CyStone,
/* 0x08E */ GRP_HnComb,
/* 0x08F */ GRP_Bee,
/* 0x090 */ GRP_Bubble,
/* 0x091 */ GRP_EChaser,
/* 0x092 */ GRP_EHidory,
/* 0x093 */ GRP_NpcOim,
/* 0x094 */ GRP_NpcYim,
/* 0x095 */ GRP_NpcBgr,
/* 0x096 */ GRP_NpcSlrb,
/* 0x097 */ GRP_NpcSma3,
/* 0x098 */ GRP_NpcSma2,
/* 0x099 */ GRP_NpcPma,
/* 0x09A */ GRP_NpcPdu,
/* 0x09B */ GRP_NpcCbFd,
/* 0x09C */ GRP_NpcFdr,
/* 0x09D */ GRP_NpcTdr,
/* 0x09E */ GRP_NpcAdr,
/* 0x09F */ GRP_NpcGhm,
/* 0x0A0 */ GRP_NpcSha,
/* 0x0A1 */ GRP_NpcGra,
/* 0x0A2 */ GRP_NpcSoBo,
/* 0x0A3 */ GRP_NpcAkum,
/* 0x0A4 */ GRP_NpcSui,
/* 0x0A5 */ GRP_NpcMole,
/* 0x0A6 */ GRP_NpcMole_A1,
/* 0x0A7 */ GRP_NpcMole_A2,
/* 0x0A8 */ GRP_NpcMoN,
/* 0x0A9 */ GRP_NpcMoT,
/* 0x0AA */ GRP_NpcMoEl,
/* 0x0AB */ GRP_NpcChef,
/* 0x0AC */ GRP_Door,
/* 0x0AD */ GRP_Door_A4,
/* 0x0AE */ GRP_SwWall,
/* 0x0AF */ GRP_LeafSwg,
/* 0x0B0 */ GRP_IvyRope,
/* 0x0B1 */ GRP_RopeIga,
/* 0x0B2 */ GRP_RolRock,
/* 0x0B3 */ GRP_RidRock,
/* 0x0B4 */ GRP_MvLiftV,
/* 0x0B5 */ GRP_Truck,
/* 0x0B6 */ GRP_TrapRc1,
/* 0x0B7 */ GRP_StprRc,
/* 0x0B8 */ GRP_Log,
/* 0x0B9 */ GRP_LogWtr,
/* 0x0BA */ GRP_LightLi,
/* 0x0BB */ GRP_TimeStn,
/* 0x0BC */ GRP_BlsRock,
/* 0x0BD */ GRP_BlsRock_A18,
/* 0x0BE */ GRP_BlsRock_A5,
/* 0x0BF */ GRP_BlsRock_A6,
/* 0x0C0 */ GRP_BlsRock_A10,
/* 0x0C1 */ GRP_BlsRock_A8,
/* 0x0C2 */ GRP_FenceIr,
/* 0x0C3 */ GRP_SwDir,
/* 0x0C4 */ GRP_SwDir2,
/* 0x0C5 */ GRP_SwBnk,
/* 0x0C6 */ GRP_SwBnkS,
/* 0x0C7 */ GRP_Fairy,
/* 0x0C8 */ GRP_SnkFlrF,
/* 0x0C9 */ GRP_StpGm,
/* 0x0CA */ GRP_BrgFall,
/* 0x0CB */ GRP_BrgStp,
/* 0x0CC */ GRP_Gear,
/* 0x0CD */ GRP_DNight,
/* 0x0CE */ GRP_Fire,
/* 0x0CF */ GRP_Tshop,
/* 0x0D0 */ GRP_Obstacl,
/* 0x0D1 */ GRP_BeltCvr,
/* 0x0D2 */ GRP_Gcoil,
/* 0x0D3 */ GRP_Lotus,
/* 0x0D4 */ GRP_OcGrs,
/* 0x0D5 */ GRP_StepTS,
/* 0x0D6 */ GRP_WarpObj,
/* 0x0D7 */ GRP_WarpObj_A5,
/* 0x0D8 */ GRP_WarpObj_A4,
/* 0x0D9 */ GRP_WarpObj_A2,
/* 0x0DA */ GRP_WarpObj_A6,
/* 0x0DB */ GRP_WarpObj_A7,
/* 0x0DC */ GRP_Barrel,
/* 0x0DD */ GRP_Boat,
/* 0x0DE */ GRP_Blst,
/* 0x0DF */ GRP_BlstF3,
/* 0x0E0 */ GRP_TrpBrdW,
/* 0x0E1 */ GRP_Tckl,
/* 0x0E2 */ GRP_LvPlt,
/* 0x0E3 */ GRP_TWeed,
/* 0x0E4 */ GRP_TBoat,
/* 0x0E5 */ GRP_TBoatB,
/* 0x0E6 */ GRP_Vortex,
/* 0x0E7 */ GRP_TowerB,
/* 0x0E8 */ GRP_D300Obj,
/* 0x0E9 */ GRP_BrgBn,
/* 0x0EA */ GRP_SwSB,
/* 0x0EB */ GRP_SndStn,
/* 0x0EC */ GRP_SwHrp,
/* 0x0ED */ GRP_SwHrp_A1,
/* 0x0EE */ GRP_SwHrp_A2,
/* 0x0EF */ GRP_SwHrp_A4,
/* 0x0F0 */ GRP_Tubo,
/* 0x0F1 */ GRP_BigTubo,
/* 0x0F2 */ GRP_DoorBs,
/* 0x0F3 */ GRP_TBox,
/* 0x0F4 */ GRP_EffGnT_A2,
/* 0x0F5 */ GRP_PoleStn,
/* 0x0F6 */ GRP_EKg,
/* 0x0F7 */ GRP_BBigBos,
/* 0x0F8 */ GRP_NpcBRvl,
/* 0x0F9 */ GRP_OBBLBom,
/* 0x0FA */ GRP_NpcSoma,
/* 0x0FB */ GRP_NpcSowo,
/* 0x0FC */ GRP_vmSand,
/* 0x0FD */ GRP_wnleaf,
/* 0x0FE */ GRP_tware,
/* 0x0FF */ GRP_swsht,
/* 0x100 */ GRP_rpillar,
/* 0x101 */ GRP_wfall,
/* 0x102 */ GRP_ftower,
/* 0x103 */ GRP_NpcKen,
/* 0x104 */ GRP_sw_whip,
/* 0x105 */ GRP_ShtCS,
/* 0x106 */ GRP_fruit,
/* 0x107 */ GRP_Kinoko,
/* 0x108 */ GRP_chest,
/* 0x109 */ GRP_LBird,
/* 0x10A */ GRP_Fish,
/* 0x10B */ GRP_Eel,
/* 0x10C */ GRP_TerrGmk,
/* 0x10D */ GRP_TgSound_A1,
/* 0x10E */ GRP_TgSound_A2,
/* 0x10F */ GRP_TgSound_A3,
/* 0x110 */ GRP_TgSound_A4,
/* 0x111 */ GRP_TgSound_A5,
/* 0x112 */ GRP_TgSound_A6,
/* 0x113 */ GRP_TgSound_A7,
/* 0x114 */ GRP_TgSound_A8,
/* 0x115 */ GRP_TgSound_A9,
/* 0x116 */ GRP_TgSound_A10,
/* 0x117 */ GRP_TgSound_A11,
/* 0x118 */ GRP_TgSound_A12,
/* 0x119 */ GRP_TgSound_A13,
/* 0x11A */ GRP_TgSound_A14,
/* 0x11B */ GRP_TgSound_A15,
/* 0x11C */ GRP_TgSound_A16,
/* 0x11D */ GRP_TgSound_A17,
/* 0x11E */ GRP_TgSound_A18,
/* 0x11F */ GRP_TgSound_A19,
/* 0x120 */ GRP_TgSound_A20,
/* 0x121 */ GRP_TgSound_A21,
/* 0x122 */ GRP_TgSound_A22,
/* 0x123 */ GRP_TgSound_A23,
/* 0x124 */ GRP_TgSound_A24,
/* 0x125 */ GRP_TgSound_A25,
/* 0x126 */ GRP_TgSound_A26,
/* 0x127 */ GRP_TgSound_A27,
/* 0x128 */ GRP_TgSound_A28,
/* 0x129 */ GRP_TgSound_A29,
/* 0x12A */ GRP_TgSound_A30,
/* 0x12B */ GRP_TgSound_A31,
/* 0x12C */ GRP_TgSound_A32,
/* 0x12D */ GRP_TgSound_A33,
/* 0x12E */ GRP_TgSound_A34,
/* 0x12F */ GRP_TgSound_A35,
/* 0x130 */ GRP_TgSound_A36,
/* 0x131 */ GRP_TgSound_A37,
/* 0x132 */ GRP_TgSound_A38,
/* 0x133 */ GRP_TgSound_A39,
/* 0x134 */ GRP_TgSound_A40,
/* 0x135 */ GRP_ArrowSW,
/* 0x136 */ GRP_VentFan,
/* 0x137 */ GRP_WdBoard,
/* 0x138 */ GRP_ElLight,
/* 0x139 */ GRP_WaterSW,
/* 0x13A */ GRP_WaterSW_A1,
/* 0x13B */ GRP_BulbSW,
/* 0x13C */ GRP_SideST,
/* 0x13D */ GRP_STKraPt,
/* 0x13E */ GRP_HitLVSW,
/* 0x13F */ GRP_UDLava,
/* 0x140 */ GRP_BridgeB,
/* 0x141 */ GRP_Cannon,
/* 0x142 */ GRP_BridgeS,
/* 0x143 */ GRP_BlwCoal,
/* 0x144 */ GRP_UtaStop,
/* 0x145 */ GRP_Windmil,
/* 0x146 */ GRP_Pinwhel,
/* 0x147 */ GRP_WatrIga,
/* 0x148 */ GRP_STSink,
/* 0x149 */ GRP_ShipWin,
/* 0x14A */ GRP_FireObs,
/* 0x14B */ GRP_FireObs_A1,
/* 0x14C */ GRP_SldDoor,
/* 0x14D */ GRP_SliceLg,
/* 0x14E */ GRP_Debris,
/* 0x14F */ GRP_DwnLava,
/* 0x150 */ GRP_ApBridg,
/* 0x151 */ GRP_GrCover,
/* 0x152 */ GRP_TrukStp,
/* 0x153 */ GRP_WFF102,
/* 0x154 */ GRP_RockSkB,
/* 0x155 */ GRP_Bell,
/* 0x156 */ GRP_WndMilD,
/* 0x157 */ GRP_RkDrgn,
/* 0x158 */ GRP_Insect,
/* 0x159 */ GRP_Uground,
/* 0x15A */ GRP_BlockUg,
/* 0x15B */ GRP_MagBoat,
/* 0x15C */ GRP_skull,
/* 0x15D */ GRP_ESyako,
/* 0x15E */ GRP_LtsFlwr,
/* 0x15F */ GRP_LtsSeed,
/* 0x160 */ GRP_Npckyu,
/* 0x161 */ GRP_NpcKyuE,
/* 0x162 */ GRP_lock,
/* 0x163 */ GRP_trolley,
/* 0x164 */ GRP_trolley_A2,
/* 0x165 */ GRP_trlshut,
/* 0x166 */ GRP_swsyako,
/* 0x167 */ GRP_syashtr,
/* 0x168 */ GRP_d2ship,
/* 0x169 */ GRP_Chandel,
/* 0x16A */ GRP_needleU,
/* 0x16B */ GRP_SStatue,
/* 0x16C */ GRP_NpcKyuW,
/* 0x16D */ GRP_BDrD101,
/* 0x16E */ GRP_NpcCbLd,
/* 0x16F */ GRP_TGrD101,
/* 0x170 */ GRP_ShtrWtr,
/* 0x171 */ GRP_NpcKnld,
/* 0x172 */ GRP_TowerHa,
/* 0x173 */ GRP_NpcDgJg,
/* 0x174 */ GRP_NpcMlMg,
/* 0x175 */ GRP_BoxCage,
/* 0x176 */ GRP_FWall,
/* 0x177 */ GRP_SwrdPrj,
/* 0x178 */ GRP_SdCdl,
/* 0x179 */ GRP_NpcSenp,
/* 0x17A */ GRP_NpcSenb,
/* 0x17B */ GRP_Piston,
/* 0x17C */ GRP_GodCube,
/* 0x17D */ GRP_HeartCo,
/* 0x17E */ GRP_Clef,
/* 0x17F */ GRP_TDoor,
/* 0x180 */ GRP_Fence,
/* 0x181 */ GRP_Flag,
/* 0x182 */ GRP_DoorDun,
/* 0x183 */ GRP_DoorDun_A1,
/* 0x184 */ GRP_DoorDun_A2,
/* 0x185 */ GRP_TSBlk,
/* 0x186 */ GRP_Propera,
/* 0x187 */ GRP_Roulete,
/* 0x188 */ GRP_LvD201,
/* 0x189 */ GRP_Grave,
/* 0x18A */ GRP_FruitB,
/* 0x18B */ GRP_RoAtTar,
/* 0x18C */ GRP_PrpLift,
/* 0x18D */ GRP_TAgo,
/* 0x18E */ GRP_DivCrst,
/* 0x18F */ GRP_DNdl,
/* 0x190 */ GRP_CtrlPnl,
/* 0x191 */ GRP_NpcGost,
/* 0x192 */ GRP_D2Mtr,
/* 0x193 */ GRP_HrpHint,
/* 0x194 */ GRP_Paint,
/* 0x195 */ GRP_BrgTs,
/* 0x196 */ GRP_WarpH,
/* 0x197 */ GRP_UgSwitc,
/* 0x198 */ GRP_F000,
/* 0x199 */ GRP_F000_L1,
/* 0x19A */ GRP_F000_L2,
/* 0x19B */ GRP_F000_L3,
/* 0x19C */ GRP_F000_L4,
/* 0x19D */ GRP_F000_L5,
/* 0x19E */ GRP_F000_L6,
/* 0x19F */ GRP_F000_L7,
/* 0x1A0 */ GRP_F000_L8,
/* 0x1A1 */ GRP_F000_L9,
/* 0x1A2 */ GRP_F000_L10,
/* 0x1A3 */ GRP_F000_L12,
/* 0x1A4 */ GRP_F000_L13,
/* 0x1A5 */ GRP_F000_L14,
/* 0x1A6 */ GRP_F000_L15,
/* 0x1A7 */ GRP_F000_L16,
/* 0x1A8 */ GRP_F000_L17,
/* 0x1A9 */ GRP_F000_L18,
/* 0x1AA */ GRP_F000_L19,
/* 0x1AB */ GRP_F000_L20,
/* 0x1AC */ GRP_F000_L21,
/* 0x1AD */ GRP_F000_L26,
/* 0x1AE */ GRP_F000_L27,
/* 0x1AF */ GRP_F000_L28,
/* 0x1B0 */ GRP_F001r,
/* 0x1B1 */ GRP_F001r_L2,
/* 0x1B2 */ GRP_F001r_L3,
/* 0x1B3 */ GRP_F001r_L13,
/* 0x1B4 */ GRP_F001r_L14,
/* 0x1B5 */ GRP_F001r_L15,
/* 0x1B6 */ GRP_F002r,
/* 0x1B7 */ GRP_F004r,
/* 0x1B8 */ GRP_F005r,
/* 0x1B9 */ GRP_F006r,
/* 0x1BA */ GRP_F007r,
/* 0x1BB */ GRP_F008r,
/* 0x1BC */ GRP_F008r_L1,
/* 0x1BD */ GRP_F008r_L2,
/* 0x1BE */ GRP_F008r_L13,
/* 0x1BF */ GRP_F008r_L14,
/* 0x1C0 */ GRP_F008r_L15,
/* 0x1C1 */ GRP_F009r,
/* 0x1C2 */ GRP_F010r,
/* 0x1C3 */ GRP_F010r_L13,
/* 0x1C4 */ GRP_F010r_L14,
/* 0x1C5 */ GRP_F010r_L15,
/* 0x1C6 */ GRP_F011r,
/* 0x1C7 */ GRP_F011r_L12,
/* 0x1C8 */ GRP_F012r,
/* 0x1C9 */ GRP_F013r,
/* 0x1CA */ GRP_F014r,
/* 0x1CB */ GRP_F015r,
/* 0x1CC */ GRP_F016r,
/* 0x1CD */ GRP_F017r,
/* 0x1CE */ GRP_F018r,
/* 0x1CF */ GRP_F019r,
/* 0x1D0 */ GRP_F019r_L2,
/* 0x1D1 */ GRP_F020,
/* 0x1D2 */ GRP_F020_L1,
/* 0x1D3 */ GRP_F020_L2,
/* 0x1D4 */ GRP_F020_L3,
/* 0x1D5 */ GRP_F020_L4,
/* 0x1D6 */ GRP_F020_L5,
/* 0x1D7 */ GRP_F020_L6,
/* 0x1D8 */ GRP_F021_L13,
/* 0x1D9 */ GRP_D000,
/* 0x1DA */ GRP_D003_1,
/* 0x1DB */ GRP_D003_2,
/* 0x1DC */ GRP_D003_3,
/* 0x1DD */ GRP_S000,
/* 0x1DE */ GRP_D003_4,
/* 0x1DF */ GRP_D003_5,
/* 0x1E0 */ GRP_F023,
/* 0x1E1 */ GRP_F023_L2,
/* 0x1E2 */ GRP_F023_L13,
/* 0x1E3 */ GRP_F023_L14,
/* 0x1E4 */ GRP_D003_6,
/* 0x1E5 */ GRP_D003_7,
/* 0x1E6 */ GRP_D003_0,
/* 0x1E7 */ GRP_D003_8,
/* 0x1E8 */ GRP_F100,
/* 0x1E9 */ GRP_F100_L1,
/* 0x1EA */ GRP_F100_L2,
/* 0x1EB */ GRP_F100_L3,
/* 0x1EC */ GRP_F100_L4,
/* 0x1ED */ GRP_F100_1,
/* 0x1EE */ GRP_F101,
/* 0x1EF */ GRP_F102,
/* 0x1F0 */ GRP_F102_1,
/* 0x1F1 */ GRP_F102_2,
/* 0x1F2 */ GRP_F103,
/* 0x1F3 */ GRP_F103_L13,
/* 0x1F4 */ GRP_D100,
/* 0x1F5 */ GRP_D100_L1,
/* 0x1F6 */ GRP_D101,
/* 0x1F7 */ GRP_B100,
/* 0x1F8 */ GRP_B100_L1,
/* 0x1F9 */ GRP_B100_L2,
/* 0x1FA */ GRP_B100_L5,
/* 0x1FB */ GRP_B100_L13,
/* 0x1FC */ GRP_B100_1,
/* 0x1FD */ GRP_B100_1_L13,
/* 0x1FE */ GRP_B101,
/* 0x1FF */ GRP_B101_L2,
/* 0x200 */ GRP_B101_1,
/* 0x201 */ GRP_B101_1_L13,
/* 0x202 */ GRP_S100,
/* 0x203 */ GRP_F103_1,
/* 0x204 */ GRP_F103_1_L13,
/* 0x205 */ GRP_F103_1_L14,
/* 0x206 */ GRP_F200,
/* 0x207 */ GRP_F200_L1,
/* 0x208 */ GRP_F200_L2,
/* 0x209 */ GRP_F200_L3,
/* 0x20A */ GRP_F200_L4,
/* 0x20B */ GRP_F210,
/* 0x20C */ GRP_F211,
/* 0x20D */ GRP_F211_L2,
/* 0x20E */ GRP_F211_L3,
/* 0x20F */ GRP_F211_L4,
/* 0x210 */ GRP_F221,
/* 0x211 */ GRP_F221_L13,
/* 0x212 */ GRP_F202,
/* 0x213 */ GRP_D200,
/* 0x214 */ GRP_D201,
/* 0x215 */ GRP_B200,
/* 0x216 */ GRP_B200_L1,
/* 0x217 */ GRP_B200_L2,
/* 0x218 */ GRP_B200_L3,
/* 0x219 */ GRP_B201_L1,
/* 0x21A */ GRP_B201_L2,
/* 0x21B */ GRP_B201_L3,
/* 0x21C */ GRP_B201_L13,
/* 0x21D */ GRP_B201_1,
/* 0x21E */ GRP_B201_1_L13,
/* 0x21F */ GRP_B210,
/* 0x220 */ GRP_B210_L13,
/* 0x221 */ GRP_B210_L14,
/* 0x222 */ GRP_S200,
/* 0x223 */ GRP_F201_1,
/* 0x224 */ GRP_F201_2,
/* 0x225 */ GRP_F202_1,
/* 0x226 */ GRP_F202_2,
/* 0x227 */ GRP_D201_1,
/* 0x228 */ GRP_F201_3,
/* 0x229 */ GRP_F201_4,
/* 0x22A */ GRP_F202_3,
/* 0x22B */ GRP_F202_4,
/* 0x22C */ GRP_F300,
/* 0x22D */ GRP_F300_L2,
/* 0x22E */ GRP_F300_1,
/* 0x22F */ GRP_F300_2,
/* 0x230 */ GRP_F300_3,
/* 0x231 */ GRP_F300_4,
/* 0x232 */ GRP_F300_4_L13,
/* 0x233 */ GRP_F301,
/* 0x234 */ GRP_F301_1,
/* 0x235 */ GRP_F301_2,
/* 0x236 */ GRP_F301_3,
/* 0x237 */ GRP_F301_4,
/* 0x238 */ GRP_F301_4_L2,
/* 0x239 */ GRP_F301_5,
/* 0x23A */ GRP_F302,
/* 0x23B */ GRP_F302_L1,
/* 0x23C */ GRP_F302_L2,
/* 0x23D */ GRP_F302_L13,
/* 0x23E */ GRP_D300,
/* 0x23F */ GRP_D301,
/* 0x240 */ GRP_D301_L1,
/* 0x241 */ GRP_D301_L2,
/* 0x242 */ GRP_D301_L3,
/* 0x243 */ GRP_D301_L4,
/* 0x244 */ GRP_D301_L9,
/* 0x245 */ GRP_D301_L10,
/* 0x246 */ GRP_D301_L11,
/* 0x247 */ GRP_D301_L12,
/* 0x248 */ GRP_D301_1,
/* 0x249 */ GRP_B300,
/* 0x24A */ GRP_B300_L2,
/* 0x24B */ GRP_B301,
/* 0x24C */ GRP_B301_L2,
/* 0x24D */ GRP_B301_L13,
/* 0x24E */ GRP_S300,
/* 0x24F */ GRP_F301_6,
/* 0x250 */ GRP_F301_7,
/* 0x251 */ GRP_F303,
/* 0x252 */ GRP_F300_5,
/* 0x253 */ GRP_D300_1,
/* 0x254 */ GRP_F400,
/* 0x255 */ GRP_F400_L1,
/* 0x256 */ GRP_F400_L2,
/* 0x257 */ GRP_F400_L3,
/* 0x258 */ GRP_F400_L13,
/* 0x259 */ GRP_F401,
/* 0x25A */ GRP_F401_L1,
/* 0x25B */ GRP_F401_L2,
/* 0x25C */ GRP_F401_L3,
/* 0x25D */ GRP_F401_L4,
/* 0x25E */ GRP_F401_L5,
/* 0x25F */ GRP_F401_L6,
/* 0x260 */ GRP_F401_L13,
/* 0x261 */ GRP_F401_L14,
/* 0x262 */ GRP_F401_L15,
/* 0x263 */ GRP_F402,
/* 0x264 */ GRP_F402_L13,
/* 0x265 */ GRP_F402_L18,
/* 0x266 */ GRP_F402_L19,
/* 0x267 */ GRP_F402_L20,
/* 0x268 */ GRP_F403,
/* 0x269 */ GRP_F403_L1,
/* 0x26A */ GRP_F403_L2,
/* 0x26B */ GRP_F403_L3,
/* 0x26C */ GRP_F403_L4,
/* 0x26D */ GRP_F403_L7,
/* 0x26E */ GRP_F403_L13,
/* 0x26F */ GRP_F403_L14,
/* 0x270 */ GRP_F403_L15,
/* 0x271 */ GRP_F403_L16,
/* 0x272 */ GRP_F404,
/* 0x273 */ GRP_F404_L13,
/* 0x274 */ GRP_F404_L14,
/* 0x275 */ GRP_F405,
/* 0x276 */ GRP_F406,
/* 0x277 */ GRP_F406_L14,
/* 0x278 */ GRP_B400,
/* 0x279 */ GRP_B400_L13,
/* 0x27A */ GRP_B400_L14,
/* 0x27B */ GRP_F407_L13,
/* 0x27C */ GRP_F407_L14,
/* 0x27D */ GRP_F407_L15,
/* 0x27E */ GRP_A_IN_WATER,
/* 0x27F */ GRP_A_QUAKE,
/* 0x280 */ GRP_A_F000,
/* 0x281 */ GRP_A_F000_L2,
/* 0x282 */ GRP_A_F000_L5,
/* 0x283 */ GRP_A_F000_L7,
/* 0x284 */ GRP_A_F000_L9,
/* 0x285 */ GRP_A_F001r,
/* 0x286 */ GRP_A_F002r,
/* 0x287 */ GRP_A_F008r,
/* 0x288 */ GRP_A_F010r,
/* 0x289 */ GRP_A_F012r,
/* 0x28A */ GRP_A_F019r,
/* 0x28B */ GRP_A_F020,
/* 0x28C */ GRP_A_F023,
/* 0x28D */ GRP_A_F023_L2,
/* 0x28E */ GRP_A_D000,
/* 0x28F */ GRP_A_D003_0,
/* 0x290 */ GRP_A_D003_1,
/* 0x291 */ GRP_A_D003_2,
/* 0x292 */ GRP_A_D003_3,
/* 0x293 */ GRP_A_D003_4,
/* 0x294 */ GRP_A_D003_5,
/* 0x295 */ GRP_A_D003_6,
/* 0x296 */ GRP_A_D003_7,
/* 0x297 */ GRP_A_F100,
/* 0x298 */ GRP_A_F100_1,
/* 0x299 */ GRP_A_F102,
/* 0x29A */ GRP_A_F103,
/* 0x29B */ GRP_A_D100,
/* 0x29C */ GRP_A_D101,
/* 0x29D */ GRP_A_B100,
/* 0x29E */ GRP_A_B100_1,
/* 0x29F */ GRP_A_B101,
/* 0x2A0 */ GRP_A_B101_1,
/* 0x2A1 */ GRP_A_F200,
/* 0x2A2 */ GRP_A_F210,
/* 0x2A3 */ GRP_A_F211,
/* 0x2A4 */ GRP_A_F201_1,
/* 0x2A5 */ GRP_A_F201_2,
/* 0x2A6 */ GRP_A_F201_3,
/* 0x2A7 */ GRP_A_F201_4,
/* 0x2A8 */ GRP_A_F221,
/* 0x2A9 */ GRP_A_F202,
/* 0x2AA */ GRP_A_D200,
/* 0x2AB */ GRP_A_D201,
/* 0x2AC */ GRP_A_B210,
/* 0x2AD */ GRP_A_B201,
/* 0x2AE */ GRP_A_B201_1,
/* 0x2AF */ GRP_A_F300,
/* 0x2B0 */ GRP_A_F301,
/* 0x2B1 */ GRP_A_F301_1,
/* 0x2B2 */ GRP_A_F302,
/* 0x2B3 */ GRP_A_F303,
/* 0x2B4 */ GRP_A_D300,
/* 0x2B5 */ GRP_A_D301,
/* 0x2B6 */ GRP_A_B300,
/* 0x2B7 */ GRP_A_B301,
/* 0x2B8 */ GRP_A_F400,
/* 0x2B9 */ GRP_A_F401,
/* 0x2BA */ GRP_A_F402,
/* 0x2BB */ GRP_A_F403,
/* 0x2BC */ GRP_A_F404,
/* 0x2BD */ GRP_A_F406,
/* 0x2BE */ GRP_A_B400,
};
#endif
+4
View File
@@ -69,6 +69,10 @@ namespace nw4r { namespace snd
return IsAttachedSound() && mSound->IsPause();
}
bool IsPrepared() const {
return IsAttachedSound() && mSound->IsPrepared();
}
int GetRemainingFadeFrames() const {
if (IsAttachedSound())
return mSound->GetRemainingFadeFrames();
+15 -23
View File
@@ -2,10 +2,11 @@
#define MUSIC_MGRS_H
#include "common.h"
#include "d/snd/d_snd_bgm_mgr.h"
#include "d/snd/d_snd_player_mgr.h"
#include "d/snd/d_snd_source_mgr.h"
#include "d/snd/d_snd_state_mgr.h"
class dSndPlayerMgr_c;
class dSndSound_c;
// A lot of these names are and were guesses that are probably wrong in a lot of ways.
@@ -17,33 +18,24 @@ 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" void *ENEMY_SOUND_MGR;
extern "C" void fn_80362150(void *, u16);
extern "C" void fn_803625F0(void *, u16);
extern "C" void fn_803618F0(void *);
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_80365020(void *);
extern "C" void fn_80364D00(void *, s32);
#define ENEMY_SOUND_MGR (dSndStateMgr_c::GetInstance())
extern "C" void fn_80362150(dSndStateMgr_c *, u16);
extern "C" void fn_803625F0(dSndStateMgr_c *, u16);
extern "C" void fn_803618F0(dSndStateMgr_c *);
extern "C" void fn_80362730(dSndStateMgr_c *);
extern "C" void fn_80365D20(dSndStateMgr_c *);
extern "C" void fn_803624F0(dSndStateMgr_c *);
extern "C" void fn_80364FD0(dSndStateMgr_c *, s32);
extern "C" bool fn_80364DA0(dSndStateMgr_c *);
extern "C" void fn_80365020(dSndStateMgr_c *);
extern "C" void fn_80364D00(dSndStateMgr_c *, s32);
#define ENEMY_BGM_RELATED_MGR (dSndSourceMgr_c::GetInstance())
extern "C" void fn_80384570(dSndSourceMgr_c *, bool);
// This one has a SoundActor that actually plays the BGM_ music tracks,
// including the battle BGM track.
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);
extern "C" void fn_80372920(void *);
extern "C" void fn_803738B0(void *, dSndSound_c *sound);
extern "C" void fn_80373900(void *, dSndSound_c *sound);
extern "C" bool fn_803733B0(void *, u32);
#define FANFARE_SOUND_MGR (dSndBgmMgr_c::GetInstance())
extern "C" void fn_80372920(dSndBgmMgr_c *);
#endif
+4 -4
View File
@@ -23,8 +23,10 @@
#include "d/lyt/d_lyt_mini_game.h"
#include "d/lyt/meter/d_lyt_meter.h"
#include "d/lyt/msg_window/d_lyt_msg_window.h"
#include "d/snd/d_snd_bgm_mgr.h"
#include "d/snd/d_snd_small_effect_mgr.h"
#include "d/snd/d_snd_source_mgr.h"
#include "d/snd/d_snd_state_mgr.h"
#include "egg/core/eggHeap.h"
#include "f/f_base.h"
#include "f/f_profile.h"
@@ -39,7 +41,6 @@
#include "toBeSorted/fi_context.h"
#include "toBeSorted/file_manager.h"
#include "toBeSorted/minigame_mgr.h"
#include "toBeSorted/music_mgrs.h"
#include "toBeSorted/unk_save_time.h"
#include "rvl/OS.h"
@@ -47,7 +48,6 @@
#include <cstring>
#include <stdio.h>
s32 dFlow_c::sExitId = -1;
dFlow_c::dFlow_c() {
@@ -196,7 +196,7 @@ static const FlowSoundDef sSoundDefs[] = {
void dFlow_c::playSound(u32 params) {
if (params >= 1000) {
fn_80364FD0(ENEMY_SOUND_MGR, params);
dSndStateMgr_c::GetInstance()->setFlowEvent(params);
return;
}
if (params >= 100) {
@@ -217,7 +217,7 @@ void dFlow_c::playSound(u32 params) {
}
switch (sSoundDefs[idx].mSoundMgr) {
case 0: AnotherSoundMgr__playSound(FANFARE_SOUND_MGR, sSoundDefs[idx].mSoundId); break;
case 0: dSndBgmMgr_c::GetInstance()->playFanSound(sSoundDefs[idx].mSoundId); break;
case 1: dSndSmallEffectMgr_c::GetInstance()->playSound(sSoundDefs[idx].mSoundId); break;
}
}
+2 -1
View File
@@ -10,6 +10,7 @@
#include "d/flag/sceneflag_manager.h"
#include "d/lyt/d2d.h"
#include "d/lyt/d_window.h"
#include "d/snd/d_snd_bgm_mgr.h"
#include "d/snd/d_snd_wzsound.h"
#include "f/f_base.h"
#include "nw4r/lyt/lyt_group.h"
@@ -407,7 +408,7 @@ void dLytGameOverMgr_c::executeState_FadeOut() {
if (mMain.requestIn("SYS_GAMEOVER_01", 0, 0)) {
mMain.setField_0x1338(true);
mStateMgr.changeState(StateID_Select);
AnotherSoundMgr__playSound(FANFARE_SOUND_MGR, FAN_GAMEOVER);
dSndBgmMgr_c::GetInstance()->playFanSound(FAN_GAMEOVER);
}
}
}
+2 -1
View File
@@ -2,6 +2,7 @@
#include "d/snd/d_snd_3d_engine.h"
#include "d/snd/d_snd_mgr.h"
#include "d/snd/d_snd_state_mgr.h"
#include "egg/math/eggMatrix.h"
#include "egg/math/eggVector.h"
#include "nw4r/math/math_arithmetic.h"
@@ -80,7 +81,7 @@ void dSnd3DManager_c::updateFromCamera(EGG::LookAtCamera &camera) {
f32 prevCameraPosSqVelocity = mCameraPosSqVelocity;
mCameraAtSqVelocity = VECSquareDistance(camera.mAt, mCamera.mAt);
mCameraPosSqVelocity = VECSquareDistance(camera.mPos, mCamera.mPos);
if (((u32 *)ENEMY_SOUND_MGR)[71] > 30) {
if (dSndStateMgr_c::GetInstance()->getField_0x11C() > 30) {
bool bigMovement = false;
bool hugeMovement = false;
if (mTimer > 0) {
+1 -1
View File
@@ -13,7 +13,7 @@ dSndAreaSoundEffectMgr_c::dSndAreaSoundEffectMgr_c()
: field_0x328(0),
field_0x32C(1.0f),
field_0x330(1.0f),
mActor(*dSndMgr_c::GetInstance()->getPlayer()),
mActor(dSndMgr_c::GetInstance()->getPlayer()),
field_0x388(1.0f) {}
void dSndAreaSoundEffectMgr_c::calc() {
+482
View File
@@ -0,0 +1,482 @@
#include "d/snd/d_snd_bgm_mgr.h"
#include "common.h"
#include "d/snd/d_snd_bgm_sound.h"
#include "d/snd/d_snd_mgr.h"
#include "d/snd/d_snd_player_mgr.h"
#include "d/snd/d_snd_sound.h"
#include "d/snd/d_snd_util.h"
#include "d/snd/d_snd_wzsound.h"
#include "nw4r/snd/snd_SoundArchive.h"
#include "nw4r/ut/ut_list.h"
SND_DISPOSER_DEFINE(dSndBgmMgr_c);
dSndBgmMgr_c::dSndBgmMgr_c()
: field_0x240(2),
field_0x244(0),
field_0x248(0),
mScheduledSoundId(-1),
mScheduledSoundDelay(0),
field_0x274(0),
field_0x29C(0),
mSoundActor(dSndMgr_c::GetInstance()->getPlayer()),
field_0x2F4(1.0f),
field_0x2F8(-1),
field_0x2FC(0),
field_0x300(-1),
field_0x304(0),
field_0x305(0),
field_0x306(0),
field_0x307(0),
field_0x308(0),
field_0x333(0),
field_0x340(0) {
for (int i = 0; i < BGM_LIST_MAX; i++) {
// TODO offsetof
nw4r::ut::List_Init(&mBgmSoundLists[i], 0xF0);
}
for (int i = 0; i < 7; i++) {
if (i == 4) {
mBgmSounds[i] = new dSndBgmBattleSound_c();
} else {
mBgmSounds[i] = new dSndBgmSound_c();
}
mBgmSounds[i]->init(mSoundActor, i);
}
field_0x270 = new dSndBgmSound_c();
field_0x270->init(dSndMgr_c::GetInstance()->getPlayer(), 8);
for (int i = 0; i < 3; i++) {
mFanSounds[i] = new dSndSound_c();
}
nw4r::ut::List_Init(&mAllSounds, 8);
for (int i = 0; i < 3; i++) {
field_0x30C[i] = 0;
field_0x318[i] = 0;
field_0x324[i] = 0;
field_0x330[i] = 0;
}
}
void dSndBgmMgr_c::calcLists() {
// TODO ...
dSndBgmSound_c *next, *it;
for (it = getFirstInBgmSoundList(BGM_LIST_PLAYING); it != nullptr; it = next) {
next = getNextInBgmSoundList(BGM_LIST_PLAYING, it);
it->calc();
}
for (it = getFirstInBgmSoundList(BGM_LIST_STOPPED); it != nullptr; it = next) {
next = getNextInBgmSoundList(BGM_LIST_STOPPED, it);
it->calc();
}
for (it = getFirstInBgmSoundList(BGM_LIST_PREPARING); it != nullptr; it = next) {
next = getNextInBgmSoundList(BGM_LIST_PREPARING, it);
if (!it->IsAttachedSound()) {
it->cancel();
removeFromAllBgmSoundLists(it);
}
}
{
dSndSound_c *it, *next;
for (it = static_cast<dSndSound_c *>(nw4r::ut::List_GetFirst(&mAllSounds)); it != nullptr; it = next) {
next = static_cast<dSndSound_c *>(nw4r::ut::List_GetNext(&mAllSounds, it));
if (!it->IsAttachedSound()) {
unregistSound(it);
}
}
}
}
bool dSndBgmMgr_c::prepareBgm(u32 soundId, u32 startOffset) {
if (isPlayingBgmSoundId(soundId)) {
return false;
}
dSndBgmSound_c *handle = getSoundHandleForBgm(soundId, startOffset);
bool ret = false;
if (handle != nullptr) {
ret = prepareBgmSound(soundId, handle, startOffset);
}
startAdditionalBgm(soundId);
return ret;
}
void dSndBgmMgr_c::stopAllBgm(s32 fadeFrames) {
for (int i = 0; i < 7; i++) {
stopBgmSound(mBgmSounds[i], fadeFrames);
}
cancelDelayedBgm();
}
bool dSndBgmMgr_c::stopBgmSound(dSndBgmSound_c *sound, s32 fadeFrames) {
u32 oldId = sound->GetId();
if (oldId != -1) {
sound->stop(fadeFrames);
checkForPrepareStoppedBgmSound(oldId);
return true;
}
return false;
}
void dSndBgmMgr_c::checkForPrepareStoppedBgmSound(u32 stoppedSoundId) {
// TODO ???
u32 id = stoppedSoundId == BGM_SKYFIELD ? BGM_SKYFIELD : -1;
if (id != -1) {
prepareBgm(id, 0);
}
}
bool dSndBgmMgr_c::beginBgmBattleRoom() {
if (isBgmHandleIdxPlayingSoundId(4, BGM_BATTLE_ROOM_MAIN)) {
return false;
}
return playBattleBgm(BGM_BATTLE_ROOM_MAIN, 5);
}
bool dSndBgmMgr_c::endBgmBattleRoom() {
if (!isBgmHandleIdxPlayingSoundId(4, BGM_BATTLE_ROOM_MAIN)) {
return false;
}
stopBgmHandleIdx(4, 5);
return playFanSound(BGM_BATTLE_ROOM_OUTRO);
}
void dSndBgmMgr_c::playDelayedSound(u32 soundId, s32 delay) {
if (soundId == -1) {
return;
}
nw4r::snd::SoundArchive::SoundInfo info;
u32 playerId;
if (!dSndMgr_c::GetInstance()->getArchive()->ReadSoundInfo(soundId, &info)) {
playerId = -1;
} else {
playerId = info.playerId;
}
switch (playerId) {
case dSndPlayerMgr_c::PLAYER_BGM:
case dSndPlayerMgr_c::PLAYER_BGM_BATTLE:
if (delay == 0) {
playBgm(soundId, 0, false);
return;
}
prepareBgm(soundId, 0);
break;
case dSndPlayerMgr_c::PLAYER_FAN:
if (delay == 0) {
playFanSound(soundId);
return;
}
prepareFanSound(soundId);
break;
default: return;
}
mScheduledSoundId = soundId;
mScheduledSoundDelay = delay;
}
void dSndBgmMgr_c::cancelDelayedSound() {
mScheduledSoundId = -1;
mScheduledSoundDelay = 0;
}
void dSndBgmMgr_c::cancelDelayedBgm() {
if (mScheduledSoundId == -1) {
return;
}
nw4r::snd::SoundArchive::SoundInfo info;
u32 playerId;
if (!dSndMgr_c::GetInstance()->getArchive()->ReadSoundInfo(mScheduledSoundId, &info)) {
playerId = -1;
} else {
playerId = info.playerId;
}
if (dSndPlayerMgr_c::isBgmPlayerId(playerId)) {
cancelDelayedSound();
}
}
bool dSndBgmMgr_c::startDelayedSound() {
if (mScheduledSoundId == -1) {
return false;
}
bool ok = false;
nw4r::snd::SoundArchive::SoundInfo info;
u32 playerId;
if (!dSndMgr_c::GetInstance()->getArchive()->ReadSoundInfo(mScheduledSoundId, &info)) {
playerId = -1;
} else {
playerId = info.playerId;
}
switch (playerId) {
case dSndPlayerMgr_c::PLAYER_BGM:
case dSndPlayerMgr_c::PLAYER_BGM_BATTLE: ok = playBgm(mScheduledSoundId, 0, false); break;
case dSndPlayerMgr_c::PLAYER_FAN: ok = playFanSound(mScheduledSoundId); break;
default: break;
}
cancelDelayedSound();
return ok;
}
void dSndBgmMgr_c::calcDelayedSound() {
if (mScheduledSoundId == -1) {
return;
}
mScheduledSoundDelay--;
if (mScheduledSoundDelay == 0) {
startDelayedSound();
}
}
// 8036e980 - plays additional music for some reason.
// e.g. Sandship (BGM_D301 / 0x1607) also prepares BGM_D301_INSIDE / 0x1608
void dSndBgmMgr_c::setBgmHandleIdxVolume(u32 handleIdx, f32 volume, s32 fadeFrames) {
// Using the getter to check validity but then not using the result is a bit weird
if (getBgmSoundByIndex(handleIdx) != nullptr) {
mBgmSounds[handleIdx]->setVolume(volume, fadeFrames);
}
}
bool dSndBgmMgr_c::isPlayingBgmSoundId(u32 soundId) const {
for (int i = 0; i < 7; i++) {
if (mBgmSounds[i]->isPlayingSoundId(soundId)) {
return true;
}
}
return false;
}
bool dSndBgmMgr_c::isFadingOutBgmSoundId(u32 soundId) const {
for (int i = 0; i < 7; i++) {
if (mBgmSounds[i]->GetId() == soundId && mBgmSounds[i]->isFadingOutSoundId(soundId)) {
return true;
}
}
return false;
}
bool dSndBgmMgr_c::isPreparingBgmSoundId(u32 soundId) const {
for (int i = 0; i < 7; i++) {
if (mBgmSounds[i]->isPreparingSoundId(soundId)) {
return true;
}
}
return false;
}
bool dSndBgmMgr_c::isPreparingBgmSoundIdWithStartOffset(u32 soundId, u32 startOffset) const {
for (int i = 0; i < 7; i++) {
if (mBgmSounds[i]->isPreparingSoundIdWithStartOffset(soundId, startOffset)) {
return true;
}
}
return false;
}
bool dSndBgmMgr_c::isPreparedBgmSoundId(u32 soundId) const {
for (int i = 0; i < 7; i++) {
if (mBgmSounds[i]->isPreparedSoundId(soundId)) {
return true;
}
}
return false;
}
dSndBgmSound_c *dSndBgmMgr_c::getBgmSoundByIndex(u32 idx) {
if (idx >= 7) {
return nullptr;
}
return mBgmSounds[idx];
}
dSndBgmSound_c *dSndBgmMgr_c::getBgmSoundHandleForId(u32 soundId) const {
for (int i = 0; i < 7; i++) {
dSndBgmSound_c *snd = mBgmSounds[i];
if (snd->isPlayingSoundId(soundId)) {
return snd;
}
}
return nullptr;
}
dSndBgmSound_c *dSndBgmMgr_c::findIdleBgmSoundHandle() {
for (int i = 0; i < 4; i++) {
dSndBgmSound_c *snd = mBgmSounds[i];
if (!snd->hasState()) {
return snd;
}
}
return nullptr;
}
void dSndBgmMgr_c::addToBgmSoundList(BgmSoundList_e list, dSndBgmSound_c *sound) {
if (list < BGM_LIST_MAX && sound != nullptr) {
removeFromAllBgmSoundLists(sound);
nw4r::ut::List_Prepend(&mBgmSoundLists[list], sound);
}
}
void dSndBgmMgr_c::appendToBgmSoundList(BgmSoundList_e list, dSndBgmSound_c *sound) {
if (list < BGM_LIST_MAX && sound != nullptr) {
removeFromAllBgmSoundLists(sound);
nw4r::ut::List_Append(&mBgmSoundLists[list], sound);
}
}
void dSndBgmMgr_c::removeFromBgmSoundList(BgmSoundList_e list, dSndBgmSound_c *sound) {
if (list < BGM_LIST_MAX && sound != nullptr) {
if (isInBgmSoundList(list, sound)) {
nw4r::ut::List_Remove(&mBgmSoundLists[list], sound);
}
}
}
void dSndBgmMgr_c::removeFromAllBgmSoundLists(dSndBgmSound_c *sound) {
for (int i = 0; i < BGM_LIST_MAX; i++) {
removeFromBgmSoundList(static_cast<BgmSoundList_e>(i), sound);
}
}
bool dSndBgmMgr_c::isInBgmSoundList(BgmSoundList_e list, dSndBgmSound_c *sound) {
if (list >= BGM_LIST_MAX) {
return false;
}
if (sound == nullptr) {
return false;
}
for (dSndBgmSound_c *it = getFirstInBgmSoundList(list); it != nullptr; it = getNextInBgmSoundList(list, it)) {
if (it == sound) {
return true;
}
}
return false;
}
dSndBgmSound_c *dSndBgmMgr_c::getFirstInBgmSoundList(BgmSoundList_e list) {
if (list >= BGM_LIST_MAX) {
return nullptr;
}
return static_cast<dSndBgmSound_c *>(nw4r::ut::List_GetFirst(&mBgmSoundLists[list]));
}
dSndBgmSound_c *dSndBgmMgr_c::getNextInBgmSoundList(BgmSoundList_e list, dSndBgmSound_c *sound) {
if (list >= BGM_LIST_MAX) {
return nullptr;
}
return static_cast<dSndBgmSound_c *>(nw4r::ut::List_GetNext(&mBgmSoundLists[list], sound));
}
dSndBgmSound_c *dSndBgmMgr_c::getLastInBgmSoundList(BgmSoundList_e list) {
if (list >= BGM_LIST_MAX) {
return nullptr;
}
return static_cast<dSndBgmSound_c *>(nw4r::ut::List_GetLast(&mBgmSoundLists[list]));
}
dSndSound_c *dSndBgmMgr_c::getFreeFanSoundHandle() {
for (int i = 0; i < 3; i++) {
if (!mFanSounds[i]->IsAttachedSound()) {
return mFanSounds[i];
}
}
return nullptr;
}
dSndSound_c *dSndBgmMgr_c::getFanSoundHandleForFan(u32 soundId) {
for (int i = 0; i < 3; i++) {
if (mFanSounds[i]->GetId() == soundId) {
return mFanSounds[i];
}
}
return nullptr;
}
dSndSound_c *dSndBgmMgr_c::getSoundHandleCurrentlyPlayingFanSound(u32 soundId) {
for (int i = 0; i < 3; i++) {
if (mFanSounds[i]->isPlayingSoundId(soundId)) {
return mFanSounds[i];
}
}
return nullptr;
}
dSndSound_c *dSndBgmMgr_c::getFanSoundHandleForFan2(u32 soundId) {
for (int i = 0; i < 3; i++) {
if (mFanSounds[i]->GetId() == soundId) {
return mFanSounds[i];
}
}
return nullptr;
}
bool dSndBgmMgr_c::isCurrentlyPlayingFanSound(u32 soundId) const {
for (int i = 0; i < 3; i++) {
if (mFanSounds[i]->isPlayingSoundId(soundId)) {
return true;
}
}
return false;
}
bool dSndBgmMgr_c::hasPlayingFanSounds() const {
for (int i = 0; i < 3; i++) {
if (mFanSounds[i]->isPlaying()) {
return true;
}
}
return false;
}
void dSndBgmMgr_c::stopFanSounds(s32 fadeFrames) {
for (int i = 0; i < 3; i++) {
mFanSounds[i]->stop(fadeFrames);
}
}
void dSndBgmMgr_c::registSound(dSndSound_c *sound) {
if (sound == nullptr) {
return;
}
unregistSound(sound);
nw4r::ut::List_Append(&mAllSounds, sound);
}
void dSndBgmMgr_c::unregistSound(dSndSound_c *sound) {
if (isSoundRegist(sound)) {
nw4r::ut::List_Remove(&mAllSounds, sound);
}
}
bool dSndBgmMgr_c::isSoundRegist(dSndSound_c *sound) {
if (sound == nullptr) {
return false;
}
for (dSndSound_c *it = static_cast<dSndSound_c *>(nw4r::ut::List_GetFirst(&mAllSounds)); it != nullptr;
it = static_cast<dSndSound_c *>(nw4r::ut::List_GetNext(&mAllSounds, it))) {
if (it == sound) {
return true;
}
}
return false;
}
+2 -3
View File
@@ -2,6 +2,7 @@
#include "common.h"
#include "d/snd/d_snd_control_player_mgr.h"
#include "d/snd/d_snd_player_mgr.h"
#include "d/snd/d_snd_sound.h"
#include "nw4r/snd/snd_SoundPlayer.h"
#include "nw4r/snd/snd_global.h"
@@ -57,11 +58,9 @@ void dSndControlPlayerFxSend_c::apply() {
mpPlayer->SetFxSend(nw4r::snd::AUX_B, mCurrValue);
}
extern "C" bool fn_8035F030(s32);
f32 dSndControlPlayerFxSend_c::getAppliedValue() {
int auxBus = nw4r::snd::AUX_A;
if (fn_8035F030(mIndex)) {
if (dSndPlayerMgr_c::isBgmPlayerId(mIndex)) {
auxBus = nw4r::snd::AUX_B;
}
return mpPlayer->GetFxSend(auxBus);
+3 -2
View File
@@ -1,6 +1,7 @@
#include "d/snd/d_snd_control_player_mgr.h"
#include "common.h"
#include "d/snd/d_snd_bgm_mgr.h"
#include "d/snd/d_snd_control_player.h"
#include "d/snd/d_snd_mgr.h"
#include "d/snd/d_snd_player_mgr.h"
@@ -14,7 +15,7 @@ struct FanfareMuteFlagsApplier {
// The logic here is inverted compared to the others - Fanfares seem to
// mute things by default unless otherwise speciefied
u32 id = handle.GetId();
if (fn_803733B0(FANFARE_SOUND_MGR, id)) {
if (dSndBgmMgr_c::GetInstance()->getSoundHandleCurrentlyPlayingFanSound(handle.GetId())) {
u32 userParam = dSndMgr_c::GetInstance()->getArchive()->GetSoundUserParam(id);
if (!(userParam & dSndPlayerMgr_c::FANFARE_UNMUTE_BGM)) {
dSndControlPlayerMgr_c::GetInstance()->setGroupVolumeFlag(
@@ -369,7 +370,7 @@ void dSndControlPlayerMgr_c::setPlayerVolumeInternal(u32 playerIdx, f32 volume)
}
void dSndControlPlayerMgr_c::setBgmMuteVolume(f32 volume) {
for (u32 i = dSndPlayerMgr_c::PLAYER_BGM; i < dSndPlayerMgr_c::PLAYER_BGM_BOSS + 1; i++) {
for (u32 i = dSndPlayerMgr_c::PLAYER_BGM; i < dSndPlayerMgr_c::PLAYER_BGM_BATTLE + 1; i++) {
setPlayerVolumeInternal(i, volume);
}
}
+11 -3
View File
@@ -94,9 +94,9 @@ nw4r::snd::SoundStartable::StartResult dSndPlayerMgr_c::startSound(
}
nw4r::snd::SoundStartable::StartResult res;
if (pStartInfo != nullptr) {
res = dSndMgr_c::getPlayer()->detail_StartSound(pHandle, soundId, pStartInfo);
res = dSndMgr_c::getPlayer().detail_StartSound(pHandle, soundId, pStartInfo);
} else {
res = dSndMgr_c::getPlayer()->detail_StartSound(pHandle, soundId, nullptr);
res = dSndMgr_c::getPlayer().detail_StartSound(pHandle, soundId, nullptr);
}
return res;
}
@@ -116,7 +116,7 @@ nw4r::snd::SoundArchivePlayer &dSndPlayerMgr_c::getSoundArchivePlayerForType(u8
if (canUseThisPlayer(sourceType)) {
return mSoundArchivePlayer;
}
return *dSndMgr_c::getPlayer();
return dSndMgr_c::getPlayer();
}
bool dSndPlayerMgr_c::canUseThisPlayer(u8 sourceType) const {
@@ -175,3 +175,11 @@ void dSndPlayerMgr_c::calc() {
mSoundArchivePlayer.Update();
}
}
bool dSndPlayerMgr_c::isBgmPlayerId(u32 id) {
switch (id) {
case PLAYER_BGM:
case PLAYER_BGM_BATTLE: return true;
default: return false;
}
}
+7 -6
View File
@@ -1,6 +1,7 @@
#include "d/snd/d_snd_sound.h"
#include "common.h"
#include "d/snd/d_snd_bgm_mgr.h"
#include "d/snd/d_snd_mgr.h"
#include "d/snd/d_snd_player_mgr.h"
#include "nw4r/snd/snd_SeqSoundHandle.h"
@@ -38,13 +39,13 @@ dSndSound_c::~dSndSound_c() {
}
void dSndSound_c::cancel() {
if (canCancel()) {
if (hasState()) {
resetControls();
mIsRunning = false;
mIsFadingOut = false;
mIsPreparing = false;
mPrevStartOffset = 0;
fn_80373900(FANFARE_SOUND_MGR, this);
dSndBgmMgr_c::GetInstance()->unregistSound(this);
}
}
@@ -328,7 +329,7 @@ nw4r::snd::SoundStartable::StartResult dSndSound_c::prepareSound(u32 soundId, u3
return nw4r::snd::SoundStartable::START_ERR_USER;
}
if (cannotStart()) {
if (isPlaying()) {
return nw4r::snd::SoundStartable::START_ERR_USER;
}
@@ -347,13 +348,13 @@ nw4r::snd::SoundStartable::StartResult dSndSound_c::prepareSound(u32 soundId, u3
nw4r::snd::SoundStartable::StartResult res;
if (startOffset == 0) {
res = dSndMgr_c::GetInstance()->getPlayer()->detail_PrepareSound(this, soundId, nullptr);
res = dSndMgr_c::GetInstance()->getPlayer().detail_PrepareSound(this, soundId, nullptr);
} else {
nw4r::snd::SoundStartable::StartInfo info;
info.enableFlag |= nw4r::snd::SoundStartable::StartInfo::ENABLE_START_OFFSET;
info.startOffsetType = nw4r::snd::SoundStartable::StartInfo::START_OFFSET_TYPE_MILLISEC;
info.startOffset = startOffset;
res = dSndMgr_c::GetInstance()->getPlayer()->detail_PrepareSound(this, soundId, &info);
res = dSndMgr_c::GetInstance()->getPlayer().detail_PrepareSound(this, soundId, &info);
}
if (res == nw4r::snd::SoundStartable::START_SUCCESS) {
@@ -375,7 +376,7 @@ void dSndSound_c::onPreparing(u32 soundId, u32 startOffset) {
cancel();
mPrevStartOffset = startOffset;
mIsPreparing = true;
fn_803738B0(FANFARE_SOUND_MGR, this);
dSndBgmMgr_c::GetInstance()->registSound(this);
}
}
+7 -2
View File
@@ -1,6 +1,7 @@
#include "d/snd/d_snd_source.h"
#include "common.h"
#include "d/a/d_a_base.h"
#include "d/snd/d_snd_3d_actor.h"
#include "d/snd/d_snd_3d_manager.h"
#include "d/snd/d_snd_mgr.h"
@@ -24,11 +25,11 @@ const char *help_i_need_data() {
return "%s_%s_%d";
}
dSoundSource_c::dSoundSource_c(u8 sourceType, dAcBase_c *player, const char *name, dSndSourceGroup_c *pOwnerGroup)
dSoundSource_c::dSoundSource_c(u8 sourceType, dAcBase_c *actor, const char *name, dSndSourceGroup_c *pOwnerGroup)
: dSnd3DActor_c(pOwnerGroup->getAmbientParam(), sourceType),
mpName(name),
field_0x0F4(0),
mpPlayer(player),
mpActor(actor),
mSourceType(sourceType),
field_0x0FE(0),
field_0x0FF(0),
@@ -87,6 +88,10 @@ void dSoundSource_c::d_vt_0x38(bool flag, int fadeFrames) {
}
}
s32 dSoundSource_c::getRoomId() const {
return mpActor->roomid;
}
nw4r::snd::SoundStartable::StartResult
dSoundSource_c::SetupSound(nw4r::snd::SoundHandle *pHandle, u32 soundId, const StartInfo *pStartInfo, void *) {
// TODO
+4 -5
View File
@@ -4,12 +4,11 @@
#include "common.h"
#include "d/snd/d_snd_source.h"
#include "d/snd/d_snd_source_enums.h"
#include "d/snd/d_snd_state_mgr.h"
#include "nw4r/ut/ut_list.h"
#include <cmath>
extern "C" bool isInStage(const char *stageName);
void dSndSourceGroup_c::set(s32 sourceType, const char *name) {
resetSoundSourceParam();
bool assignedParam = false;
@@ -47,10 +46,10 @@ void dSndSourceGroup_c::set(s32 sourceType, const char *name) {
break;
}
case SND_SOURCE_NPC_48: {
if (isInStage("F401")) {
if (dSndStateMgr_c::isInStage("F401")) {
mParam.field_0x00 = 500.0f;
mParam.field_0x04 = 4000.0;
} else if (isInStage("F402")) {
} else if (dSndStateMgr_c::isInStage("F402")) {
mParam.field_0x00 = 400.0f;
mParam.field_0x04 = 3500.0;
} else {
@@ -164,7 +163,7 @@ dSoundSource_c *dSndSourceGroup_c::getSourceClosestToPlayer() {
return mpCachedClosestSourceToPlayer;
}
bool dSndSourceGroup_c::setParamFromName(const char*) {
bool dSndSourceGroup_c::setParamFromName(const char *) {
// TODO
return false;
}
+10
View File
@@ -180,3 +180,13 @@ void dSndSourceMgr_c::clearSourceList(nw4r::ut::List *list) {
}
}
}
s32 dSndSourceMgr_c::getPlayerSourceRoomId() const {
if (mpPlayerSource == nullptr) {
return -1;
}
if (getBoomerangSource() != nullptr) {
return getBoomerangSource()->getRoomId();
}
return mpPlayerSource->getRoomId();
}
+358
View File
@@ -0,0 +1,358 @@
#include "d/snd/d_snd_stage_data.h"
#include "common.h"
#pragma push
#pragma readonly_strings on
const dSndStageInfo dSndStageInfo::sInfos[] = {
/* SND_STAGE_F100 */
{ "F100", -1, SND_STAGE_F100, SND_STAGE_F100, SND_STAGE_F100, SND_STAGE_F100, nullptr},
/* SND_STAGE_F101 */
{ "F101", -1, SND_STAGE_F101, SND_STAGE_F101, SND_STAGE_F100, SND_STAGE_F100, nullptr},
/* SND_STAGE_F102 */
{ "F102", -1, SND_STAGE_F102, SND_STAGE_F102, SND_STAGE_F102, SND_STAGE_F102, nullptr},
/* SND_STAGE_F102_1 */
{"F102_1", -1, SND_STAGE_F102_1, SND_STAGE_F102_1, SND_STAGE_F102, SND_STAGE_F102, nullptr},
/* SND_STAGE_F103_L13 */
{ "F103", 13, SND_STAGE_F103_L13, SND_STAGE_F103, SND_STAGE_F103_L13, SND_STAGE_F103_L13, "Demo64_03"},
/* SND_STAGE_F103 */
{ "F103", -1, SND_STAGE_F103, SND_STAGE_F103, SND_STAGE_F103, SND_STAGE_F103, nullptr},
/* SND_STAGE_F200 */
{ "F200", -1, SND_STAGE_F200, SND_STAGE_F200, SND_STAGE_F200, SND_STAGE_F200, nullptr},
/* SND_STAGE_F201_1 */
{"F201_1", -1, SND_STAGE_F201_1, SND_STAGE_F201_1, SND_STAGE_F201_1, SND_STAGE_F201_1, nullptr},
/* SND_STAGE_F201_2 */
{"F201_2", -1, SND_STAGE_F201_2, SND_STAGE_F201_2, SND_STAGE_F201_2, SND_STAGE_F201_2, nullptr},
/* SND_STAGE_F201_3 */
{"F201_3", -1, SND_STAGE_F201_3, SND_STAGE_F201_3, SND_STAGE_F201_1, SND_STAGE_F201_3, nullptr},
/* SND_STAGE_F201_4 */
{"F201_4", -1, SND_STAGE_F201_4, SND_STAGE_F201_4, SND_STAGE_F201_4, SND_STAGE_F201_4, nullptr},
/* SND_STAGE_F202 */
{ "F202", -1, SND_STAGE_F202, SND_STAGE_F202, SND_STAGE_F202, SND_STAGE_F202, nullptr},
/* SND_STAGE_F300 */
{ "F300", -1, SND_STAGE_F300, SND_STAGE_F300, SND_STAGE_F300, SND_STAGE_F300, nullptr},
/* SND_STAGE_F300_1 */
{"F300_1", -1, SND_STAGE_F300_1, SND_STAGE_F300_1, SND_STAGE_F300, SND_STAGE_F300, nullptr},
/* SND_STAGE_F300_4_L13 */
{"F300_4", 13, SND_STAGE_F300_4_L13, SND_STAGE_F300_4, SND_STAGE_F300_4_L13, SND_STAGE_F300_4_L13, "Demo36_01"},
/* SND_STAGE_F300_4 */
{"F300_4", -1, SND_STAGE_F300_4, SND_STAGE_F300_4, SND_STAGE_F300, SND_STAGE_F300, nullptr},
/* SND_STAGE_F301 */
{ "F301", -1, SND_STAGE_F301, SND_STAGE_F301, SND_STAGE_F301, SND_STAGE_F301, nullptr},
/* SND_STAGE_F301_1 */
{"F301_1", -1, SND_STAGE_F301_1, SND_STAGE_F301_1, SND_STAGE_F301_1, SND_STAGE_F301_1, nullptr},
/* SND_STAGE_F301_2 */
{"F301_2", -1, SND_STAGE_F301_2, SND_STAGE_F301_2, SND_STAGE_F301_2, SND_STAGE_F301, nullptr},
/* SND_STAGE_F301_3 */
{"F301_3", -1, SND_STAGE_F301_3, SND_STAGE_F301_3, SND_STAGE_F301_3, SND_STAGE_F301, nullptr},
/* SND_STAGE_F301_4_L2 */
{"F301_4", 2, SND_STAGE_F301_4_L2, SND_STAGE_F301_4, SND_STAGE_F301_4_L2, SND_STAGE_F301, nullptr},
/* SND_STAGE_F301_4 */
{"F301_4", -1, SND_STAGE_F301_4, SND_STAGE_F301_4, SND_STAGE_F301_4, SND_STAGE_F301, nullptr},
/* SND_STAGE_F301_6 */
{"F301_6", -1, SND_STAGE_F301_6, SND_STAGE_F301_6, SND_STAGE_F301, SND_STAGE_F301, nullptr},
/* SND_STAGE_F301_7 */
{"F301_7", -1, SND_STAGE_F301_7, SND_STAGE_F301_7, SND_STAGE_F301_7, SND_STAGE_F301, nullptr},
/* SND_STAGE_F302_L13 */
{ "F302", 13, SND_STAGE_F302_L13, SND_STAGE_F302, SND_STAGE_F302_L13, SND_STAGE_F302_L13, "Demo64_05"},
/* SND_STAGE_F302 */
{ "F302", -1, SND_STAGE_F302, SND_STAGE_F302, SND_STAGE_F302, SND_STAGE_F302, nullptr},
/* SND_STAGE_F400_L13 */
{ "F400", 13, SND_STAGE_F400_L13, SND_STAGE_F400, SND_STAGE_F400_L13, SND_STAGE_F400_L13, "Demo38_01"},
/* SND_STAGE_F400 */
{ "F400", -1, SND_STAGE_F400, SND_STAGE_F400, SND_STAGE_F400, SND_STAGE_F400, nullptr},
/* SND_STAGE_F401_L2 */
{ "F401", 2, SND_STAGE_F401_L2, SND_STAGE_F401, SND_STAGE_F401_L2, SND_STAGE_F401_L2, nullptr},
/* SND_STAGE_F401_L3 */
{ "F401", 3, SND_STAGE_F401_L3, SND_STAGE_F401, SND_STAGE_F401_L3, SND_STAGE_F401_L3, nullptr},
/* SND_STAGE_F401_L4 */
{ "F401", 4, SND_STAGE_F401_L4, SND_STAGE_F401, SND_STAGE_F401_L4, SND_STAGE_F401_L4, nullptr},
/* SND_STAGE_F401_L13 */
{ "F401", 13, SND_STAGE_F401_L13, SND_STAGE_F401, SND_STAGE_F401_L13, SND_STAGE_F401_L13, "Demo17_01"},
/* SND_STAGE_F401_L14 */
{ "F401", 14, SND_STAGE_F401_L14, SND_STAGE_F401, SND_STAGE_F401_L14, SND_STAGE_F401_L14, "Demo43_01"},
/* SND_STAGE_F401_L15 */
{ "F401", 15, SND_STAGE_F401_L15, SND_STAGE_F401, SND_STAGE_F401_L15, SND_STAGE_F401_L15, "Demo69_02"},
/* SND_STAGE_F401 */
{ "F401", -1, SND_STAGE_F401, SND_STAGE_F401, SND_STAGE_F401, SND_STAGE_F401, nullptr},
/* SND_STAGE_F403_L13 */
{ "F403", 13, SND_STAGE_F403_L13, SND_STAGE_F403, SND_STAGE_F403_L13, SND_STAGE_F403_L13, "Demo72_01"},
/* SND_STAGE_F403_L14 */
{ "F403", 14, SND_STAGE_F403_L14, SND_STAGE_F403, SND_STAGE_F403_L14, SND_STAGE_F403_L14, "Demo73_01"},
/* SND_STAGE_F403_L15 */
{ "F403", 15, SND_STAGE_F403_L15, SND_STAGE_F403, SND_STAGE_F403_L15, SND_STAGE_F403_L15, "Demo75_01"},
/* SND_STAGE_F403_L16 */
{ "F403", 16, SND_STAGE_F403_L16, SND_STAGE_F403, SND_STAGE_F403_L16, SND_STAGE_F403_L16, "Demo75_02"},
/* SND_STAGE_F403 */
{ "F403", -1, SND_STAGE_F403, SND_STAGE_F403, SND_STAGE_F403, SND_STAGE_F403, nullptr},
/* SND_STAGE_F405 */
{ "F405", -1, SND_STAGE_F405, SND_STAGE_F405, SND_STAGE_F405, SND_STAGE_F405, "Demo02_01"},
/* SND_STAGE_F406_L13 */
{ "F406", 13, SND_STAGE_F406_L13, SND_STAGE_F406, SND_STAGE_F406_L13, SND_STAGE_F406_L13, "Demo79_02"},
/* SND_STAGE_F406_L14 */
{ "F406", 14, SND_STAGE_F406_L14, SND_STAGE_F406, SND_STAGE_F406_L14, SND_STAGE_F406_L14, "Demo69_03"},
/* SND_STAGE_F406 */
{ "F406", -1, SND_STAGE_F406, SND_STAGE_F406, SND_STAGE_F406, SND_STAGE_F406, nullptr},
/* SND_STAGE_D301 */
{ "D301", -1, SND_STAGE_D301, SND_STAGE_D301, SND_STAGE_D301, SND_STAGE_D301, nullptr},
/* SND_STAGE_D301_1 */
{"D301_1", -1, SND_STAGE_D301_1, SND_STAGE_D301_1, SND_STAGE_D301_1, SND_STAGE_D301, nullptr},
/* SND_STAGE_D000 */
{ "D000", -1, SND_STAGE_D000, SND_STAGE_D000, SND_STAGE_D000, SND_STAGE_D000, nullptr},
/* SND_STAGE_D100 */
{ "D100", -1, SND_STAGE_D100, SND_STAGE_D100, SND_STAGE_D100, SND_STAGE_D100, nullptr},
/* SND_STAGE_D101 */
{ "D101", -1, SND_STAGE_D101, SND_STAGE_D101, SND_STAGE_D101, SND_STAGE_D101, nullptr},
/* SND_STAGE_D200 */
{ "D200", -1, SND_STAGE_D200, SND_STAGE_D200, SND_STAGE_D200, SND_STAGE_D200, nullptr},
/* SND_STAGE_D201 */
{ "D201", -1, SND_STAGE_D201, SND_STAGE_D201, SND_STAGE_D201, SND_STAGE_D201, nullptr},
/* SND_STAGE_D201_1 */
{"D201_1", -1, SND_STAGE_D201_1, SND_STAGE_D201_1, SND_STAGE_D201, SND_STAGE_D201, nullptr},
/* SND_STAGE_D300 */
{ "D300", -1, SND_STAGE_D300, SND_STAGE_D300, SND_STAGE_D300, SND_STAGE_D300, nullptr},
/* SND_STAGE_D300_1 */
{"D300_1", -1, SND_STAGE_D300_1, SND_STAGE_D300_1, SND_STAGE_D300, SND_STAGE_D300, nullptr},
/* SND_STAGE_D003_0 */
{"D003_0", -1, SND_STAGE_D003_0, SND_STAGE_D003_0, SND_STAGE_D003_0, SND_STAGE_D003_0, nullptr},
/* SND_STAGE_D003_1 */
{"D003_1", -1, SND_STAGE_D003_1, SND_STAGE_D003_1, SND_STAGE_D003_1, SND_STAGE_D003_1, nullptr},
/* SND_STAGE_D003_2 */
{"D003_2", -1, SND_STAGE_D003_2, SND_STAGE_D003_2, SND_STAGE_D003_2, SND_STAGE_D003_2, nullptr},
/* SND_STAGE_D003_3 */
{"D003_3", -1, SND_STAGE_D003_3, SND_STAGE_D003_3, SND_STAGE_D003_3, SND_STAGE_D003_3, nullptr},
/* SND_STAGE_D003_4 */
{"D003_4", -1, SND_STAGE_D003_4, SND_STAGE_D003_4, SND_STAGE_D003_4, SND_STAGE_D003_4, nullptr},
/* SND_STAGE_D003_5 */
{"D003_5", -1, SND_STAGE_D003_5, SND_STAGE_D003_5, SND_STAGE_D003_5, SND_STAGE_D003_5, nullptr},
/* SND_STAGE_D003_6 */
{"D003_6", -1, SND_STAGE_D003_6, SND_STAGE_D003_6, SND_STAGE_D003_6, SND_STAGE_D003_6, nullptr},
/* SND_STAGE_D003_7 */
{"D003_7", -1, SND_STAGE_D003_7, SND_STAGE_D003_7, SND_STAGE_D003_7, SND_STAGE_D003_7, nullptr},
/* SND_STAGE_D003_8 */
{"D003_8", -1, SND_STAGE_D003_8, SND_STAGE_D003_8, SND_STAGE_D003_8, SND_STAGE_D003_8, nullptr},
/* SND_STAGE_B100_L13 */
{ "B100", 13, SND_STAGE_B100_L13, SND_STAGE_B100, SND_STAGE_B100_L13, SND_STAGE_B100_L13, "Demo21_01"},
/* SND_STAGE_B100 */
{ "B100", -1, SND_STAGE_B100, SND_STAGE_B100, SND_STAGE_B100, SND_STAGE_B100, nullptr},
/* SND_STAGE_B100_1_L13 */
{"B100_1", 13, SND_STAGE_B100_1_L13, SND_STAGE_B100_1, SND_STAGE_B100_1_L13, SND_STAGE_B100_1_L13, "Demo23_01"},
/* SND_STAGE_B100_1 */
{"B100_1", -1, SND_STAGE_B100_1, SND_STAGE_B100_1, SND_STAGE_B100_1, SND_STAGE_B100_1, nullptr},
/* SND_STAGE_B101 */
{ "B101", -1, SND_STAGE_B101, SND_STAGE_B101, SND_STAGE_B101, SND_STAGE_B101, nullptr},
/* SND_STAGE_B101_1_L13 */
{"B101_1", 13, SND_STAGE_B101_1_L13, SND_STAGE_B101_1, SND_STAGE_B101_1_L13, SND_STAGE_B101_1_L13, "Demo47_01"},
/* SND_STAGE_B101_1 */
{"B101_1", -1, SND_STAGE_B101_1, SND_STAGE_B101_1, SND_STAGE_B101_1, SND_STAGE_B101_1, nullptr},
/* SND_STAGE_B200_L1 */
{ "B200", 1, SND_STAGE_B200_L1, SND_STAGE_B200, SND_STAGE_B200_L1, SND_STAGE_D200, nullptr},
/* SND_STAGE_B200_L2 */
{ "B200", 2, SND_STAGE_B200_L2, SND_STAGE_B200, SND_STAGE_B200_L2, SND_STAGE_D200, nullptr},
/* SND_STAGE_B200_L3 */
{ "B200", 3, SND_STAGE_B200_L3, SND_STAGE_B200, SND_STAGE_B200_L3, SND_STAGE_D200, nullptr},
/* SND_STAGE_B200 */
{ "B200", -1, SND_STAGE_B200, SND_STAGE_B200, SND_STAGE_B200, SND_STAGE_D200, nullptr},
/* SND_STAGE_B210_L13 */
{ "B210", 13, SND_STAGE_B210_L13, SND_STAGE_B210, SND_STAGE_B210_L13, SND_STAGE_B210_L13, "Demo29_01"},
/* SND_STAGE_B210_L14 */
{ "B210", 14, SND_STAGE_B210_L14, SND_STAGE_B210, SND_STAGE_B210_L14, SND_STAGE_B210_L14, "Demo31_01"},
/* SND_STAGE_B210 */
{ "B210", -1, SND_STAGE_B210, SND_STAGE_B210, SND_STAGE_B210, SND_STAGE_B210, nullptr},
/* SND_STAGE_B201_L13 */
{ "B201", 13, SND_STAGE_B201_L13, SND_STAGE_B201, SND_STAGE_B201_L13, SND_STAGE_B201_L13, "Demo51_01"},
/* SND_STAGE_B201 */
{ "B201", -1, SND_STAGE_B201, SND_STAGE_B201, SND_STAGE_B201, SND_STAGE_B201, nullptr},
/* SND_STAGE_B201_1_L13 */
{"B201_1", 13, SND_STAGE_B201_1_L13, SND_STAGE_B201_1, SND_STAGE_B201_1_L13, SND_STAGE_B201_1_L13, "Demo52_01"},
/* SND_STAGE_B201_1 */
{"B201_1", -1, SND_STAGE_B201_1, SND_STAGE_B201_1, SND_STAGE_B201_1, SND_STAGE_B201_1, nullptr},
/* SND_STAGE_B300 */
{ "B300", -1, SND_STAGE_B300, SND_STAGE_B300, SND_STAGE_B300, SND_STAGE_B300, nullptr},
/* SND_STAGE_B301_L13 */
{ "B301", 13, SND_STAGE_B301_L13, SND_STAGE_B301, SND_STAGE_B301_L13, SND_STAGE_B301_L13, "Demo49_01"},
/* SND_STAGE_B301 */
{ "B301", -1, SND_STAGE_B301, SND_STAGE_B301, SND_STAGE_B301, SND_STAGE_B301, nullptr},
/* SND_STAGE_B003 */
{ "B003", -1, SND_STAGE_B003, SND_STAGE_B003, SND_STAGE_B003, SND_STAGE_B003, nullptr},
/* SND_STAGE_B400_L13 */
{ "B400", 13, SND_STAGE_B400_L13, SND_STAGE_B400, SND_STAGE_B400_L13, SND_STAGE_B400_L13, "Demo75_04"},
/* SND_STAGE_B400_L14 */
{ "B400", 14, SND_STAGE_B400_L14, SND_STAGE_B400, SND_STAGE_B400_L14, SND_STAGE_B400_L14, "Demo76_01"},
/* SND_STAGE_B400 */
{ "B400", -1, SND_STAGE_B400, SND_STAGE_B400, SND_STAGE_B400, SND_STAGE_B400, nullptr},
/* SND_STAGE_F100_1 */
{"F100_1", -1, SND_STAGE_F100_1, SND_STAGE_F100_1, SND_STAGE_F100_1, SND_STAGE_F100_1, nullptr},
/* SND_STAGE_F100_2 */
{"F100_2", -1, SND_STAGE_F100_2, SND_STAGE_F100_2, SND_STAGE_F100_2, SND_STAGE_F100_2, nullptr},
/* SND_STAGE_F102_2 */
{"F102_2", -1, SND_STAGE_F102_2, SND_STAGE_F102_2, SND_STAGE_F102, SND_STAGE_F102, nullptr},
/* SND_STAGE_F103_1_L13 */
{"F103_1", 13, SND_STAGE_F103_1_L13, SND_STAGE_F103_1, SND_STAGE_F103_1_L13, SND_STAGE_F103_1_L13, "Demo64_02"},
/* SND_STAGE_F103_1_L14 */
{"F103_1", 14, SND_STAGE_F103_1_L14, SND_STAGE_F103_1, SND_STAGE_F103_1_L14, SND_STAGE_F103_1_L14, "Demo64_04"},
/* SND_STAGE_F103_1 */
{"F103_1", -1, SND_STAGE_F103_1, SND_STAGE_F103_1, SND_STAGE_F103_1, SND_STAGE_F103, nullptr},
/* SND_STAGE_F210 */
{ "F210", -1, SND_STAGE_F210, SND_STAGE_F210, SND_STAGE_F210, SND_STAGE_F210, nullptr},
/* SND_STAGE_F211 */
{ "F211", -1, SND_STAGE_F211, SND_STAGE_F211, SND_STAGE_F211, SND_STAGE_F211, nullptr},
/* SND_STAGE_F221_L13 */
{ "F221", 13, SND_STAGE_F221_L13, SND_STAGE_F221, SND_STAGE_F221_L13, SND_STAGE_F221_L13, "Demo64_01"},
/* SND_STAGE_F221 */
{ "F221", -1, SND_STAGE_F221, SND_STAGE_F221, SND_STAGE_F221, SND_STAGE_F221, nullptr},
/* SND_STAGE_F202_1 */
{"F202_1", -1, SND_STAGE_F202_1, SND_STAGE_F202_1, SND_STAGE_F202_1, SND_STAGE_D200, nullptr},
/* SND_STAGE_F202_2 */
{"F202_2", -1, SND_STAGE_F202_2, SND_STAGE_F202_2, SND_STAGE_F202_2, SND_STAGE_D200, nullptr},
/* SND_STAGE_F202_3 */
{"F202_3", -1, SND_STAGE_F202_3, SND_STAGE_F202_3, SND_STAGE_F202_3, SND_STAGE_D200, nullptr},
/* SND_STAGE_F202_4 */
{"F202_4", -1, SND_STAGE_F202_4, SND_STAGE_F202_4, SND_STAGE_F202_4, SND_STAGE_D200, nullptr},
/* SND_STAGE_F300_2 */
{"F300_2", -1, SND_STAGE_F300_2, SND_STAGE_F300_2, SND_STAGE_F300, SND_STAGE_F300, nullptr},
/* SND_STAGE_F300_3 */
{"F300_3", -1, SND_STAGE_F300_3, SND_STAGE_F300_3, SND_STAGE_F300, SND_STAGE_F300, nullptr},
/* SND_STAGE_F300_5 */
{"F300_5", -1, SND_STAGE_F300_5, SND_STAGE_F300_5, SND_STAGE_F300_5, SND_STAGE_F300_5, nullptr},
/* SND_STAGE_F303 */
{ "F303", -1, SND_STAGE_F303, SND_STAGE_F303, SND_STAGE_F303, SND_STAGE_F303, nullptr},
/* SND_STAGE_S000 */
{ "S000", -1, SND_STAGE_S000, SND_STAGE_S000, SND_STAGE_S000, SND_STAGE_S000, nullptr},
/* SND_STAGE_S100 */
{ "S100", -1, SND_STAGE_S100, SND_STAGE_S100, SND_STAGE_S100, SND_STAGE_S100, nullptr},
/* SND_STAGE_S200 */
{ "S200", -1, SND_STAGE_S200, SND_STAGE_S200, SND_STAGE_S200, SND_STAGE_S200, nullptr},
/* SND_STAGE_S300 */
{ "S300", -1, SND_STAGE_S300, SND_STAGE_S300, SND_STAGE_S300, SND_STAGE_S300, nullptr},
/* SND_STAGE_F020_L3 */
{ "F020", 3, SND_STAGE_F020_L3, SND_STAGE_F020, SND_STAGE_F020_L3, SND_STAGE_F000, nullptr},
/* SND_STAGE_F020 */
{ "F020", -1, SND_STAGE_F020, SND_STAGE_F020, SND_STAGE_F020, SND_STAGE_F000, nullptr},
/* SND_STAGE_F021_L13 */
{ "F021", 13, SND_STAGE_F021_L13, SND_STAGE_F021, SND_STAGE_F021_L13, SND_STAGE_F021_L13, "Demo12_02"},
/* SND_STAGE_F021 */
{ "F021", -1, SND_STAGE_F021, SND_STAGE_F021, SND_STAGE_F021, SND_STAGE_F021, nullptr},
/* SND_STAGE_F023_L14 */
{ "F023", 14, SND_STAGE_F023_L14, SND_STAGE_F023, SND_STAGE_F023_L14, SND_STAGE_F023_L14, "Demo64_06"},
/* SND_STAGE_F023 */
{ "F023", -1, SND_STAGE_F023, SND_STAGE_F023, SND_STAGE_F023, SND_STAGE_F023, nullptr},
/* SND_STAGE_F000_L13 */
{ "F000", 13, SND_STAGE_F000_L13, SND_STAGE_F000, SND_STAGE_F000_L13, SND_STAGE_F000_L13, "Demo04_01"},
/* SND_STAGE_F000_L14 */
{ "F000", 14, SND_STAGE_F000_L14, SND_STAGE_F000, SND_STAGE_F000_L14, SND_STAGE_F000_L14, "Demo12_01"},
/* SND_STAGE_F000_L15 */
{ "F000", 15, SND_STAGE_F000_L15, SND_STAGE_F000, SND_STAGE_F000_L15, SND_STAGE_F000_L15, "Demo05_01"},
/* SND_STAGE_F000_L16 */
{ "F000", 16, SND_STAGE_F000_L16, SND_STAGE_F000, SND_STAGE_F000_L16, SND_STAGE_F000_L16, "Demo08_01"},
/* SND_STAGE_F000_L17 */
{ "F000", 17, SND_STAGE_F000_L17, SND_STAGE_F000, SND_STAGE_F000_L17, SND_STAGE_F000_L17, "Demo11_01"},
/* SND_STAGE_F000_L18 */
{ "F000", 18, SND_STAGE_F000_L18, SND_STAGE_F000, SND_STAGE_F000_L18, SND_STAGE_F000_L18, "Demo68_01"},
/* SND_STAGE_F000_L19 */
{ "F000", 19, SND_STAGE_F000_L19, SND_STAGE_F000, SND_STAGE_F000_L19, SND_STAGE_F000_L19, "Demo69_01"},
/* SND_STAGE_F000_L20 */
{ "F000", 20, SND_STAGE_F000_L20, SND_STAGE_F000, SND_STAGE_F000_L20, SND_STAGE_F000_L20, "Demo03_01"},
/* SND_STAGE_F000_L21 */
{ "F000", 21, SND_STAGE_F000_L21, SND_STAGE_F000, SND_STAGE_F000_L21, SND_STAGE_F000_L21, "Demo03_02"},
/* SND_STAGE_F000_L26 */
{ "F000", 26, SND_STAGE_F000_L26, SND_STAGE_F000, SND_STAGE_F000_L26, SND_STAGE_F000_L26, "Demo01_01"},
/* SND_STAGE_F000_L27 */
{ "F000", 27, SND_STAGE_F000_L27, SND_STAGE_F000, SND_STAGE_F000_L27, SND_STAGE_F000_L27, "Demo01_02"},
/* SND_STAGE_F000 */
{ "F000", -1, SND_STAGE_F000, SND_STAGE_F000, SND_STAGE_F000, SND_STAGE_F000, nullptr},
/* SND_STAGE_F301_5 */
{"F301_5", -1, SND_STAGE_F301_5, SND_STAGE_F301_5, SND_STAGE_F301_3, SND_STAGE_F301, nullptr},
/* SND_STAGE_F001r_L13 */
{ "F001r", 13, SND_STAGE_F001r_L13, SND_STAGE_F001r, SND_STAGE_F001r_L13, SND_STAGE_F001r_L13, "Demo13_01"},
/* SND_STAGE_F001r_L14 */
{ "F001r", 14, SND_STAGE_F001r_L14, SND_STAGE_F001r, SND_STAGE_F001r_L14, SND_STAGE_F001r_L14, "Demo15_04"},
/* SND_STAGE_F001r_L15 */
{ "F001r", 15, SND_STAGE_F001r_L15, SND_STAGE_F001r, SND_STAGE_F001r_L15, SND_STAGE_F001r_L15, "Demo03_03"},
/* SND_STAGE_F001r */
{ "F001r", -1, SND_STAGE_F001r, SND_STAGE_F001r, SND_STAGE_F001r, SND_STAGE_F001r, nullptr},
/* SND_STAGE_F002r */
{ "F002r", -1, SND_STAGE_F002r, SND_STAGE_F002r, SND_STAGE_F002r, SND_STAGE_F002r, nullptr},
/* SND_STAGE_F004r */
{ "F004r", -1, SND_STAGE_F004r, SND_STAGE_F004r, SND_STAGE_F004r, SND_STAGE_F004r, nullptr},
/* SND_STAGE_F009r */
{ "F009r", -1, SND_STAGE_F009r, SND_STAGE_F009r, SND_STAGE_F009r, SND_STAGE_F009r, nullptr},
/* SND_STAGE_F011r */
{ "F011r", -1, SND_STAGE_F011r, SND_STAGE_F011r, SND_STAGE_F011r, SND_STAGE_F011r, nullptr},
/* SND_STAGE_F012r */
{ "F012r", -1, SND_STAGE_F012r, SND_STAGE_F012r, SND_STAGE_F012r, SND_STAGE_F012r, nullptr},
/* SND_STAGE_F019r */
{ "F019r", -1, SND_STAGE_F019r, SND_STAGE_F019r, SND_STAGE_F019r, SND_STAGE_F019r, nullptr},
/* SND_STAGE_F005r */
{ "F005r", -1, SND_STAGE_F005r, SND_STAGE_F005r, SND_STAGE_F005r, SND_STAGE_F005r, nullptr},
/* SND_STAGE_F006r */
{ "F006r", -1, SND_STAGE_F006r, SND_STAGE_F006r, SND_STAGE_F006r, SND_STAGE_F006r, nullptr},
/* SND_STAGE_F007r */
{ "F007r", -1, SND_STAGE_F007r, SND_STAGE_F007r, SND_STAGE_F007r, SND_STAGE_F007r, nullptr},
/* SND_STAGE_F013r */
{ "F013r", -1, SND_STAGE_F013r, SND_STAGE_F013r, SND_STAGE_F013r, SND_STAGE_F013r, nullptr},
/* SND_STAGE_F014r */
{ "F014r", -1, SND_STAGE_F014r, SND_STAGE_F014r, SND_STAGE_F014r, SND_STAGE_F014r, nullptr},
/* SND_STAGE_F015r */
{ "F015r", -1, SND_STAGE_F015r, SND_STAGE_F015r, SND_STAGE_F015r, SND_STAGE_F015r, nullptr},
/* SND_STAGE_F016r */
{ "F016r", -1, SND_STAGE_F016r, SND_STAGE_F016r, SND_STAGE_F016r, SND_STAGE_F016r, nullptr},
/* SND_STAGE_F017r */
{ "F017r", -1, SND_STAGE_F017r, SND_STAGE_F017r, SND_STAGE_F017r, SND_STAGE_F017r, nullptr},
/* SND_STAGE_F018r */
{ "F018r", -1, SND_STAGE_F018r, SND_STAGE_F018r, SND_STAGE_F018r, SND_STAGE_F018r, nullptr},
/* SND_STAGE_F402_L2 */
{ "F402", 2, SND_STAGE_F402_L2, SND_STAGE_F402, SND_STAGE_F402_L2, SND_STAGE_F402_L2, nullptr},
/* SND_STAGE_F402_L3 */
{ "F402", 3, SND_STAGE_F402_L3, SND_STAGE_F402, SND_STAGE_F402_L3, SND_STAGE_F402_L3, nullptr},
/* SND_STAGE_F402_L5 */
{ "F402", 5, SND_STAGE_F402_L5, SND_STAGE_F402, SND_STAGE_F402_L5, SND_STAGE_F402_L5, nullptr},
/* SND_STAGE_F402_L13 */
{ "F402", 13, SND_STAGE_F402_L13, SND_STAGE_F402, SND_STAGE_F402_L13, SND_STAGE_F402_L13, "Demo41_01"},
/* SND_STAGE_F402_L18 */
{ "F402", 18, SND_STAGE_F402_L18, SND_STAGE_F402, SND_STAGE_F402_L18, SND_STAGE_F402_L18, "Demo43_02"},
/* SND_STAGE_F402_L19 */
{ "F402", 19, SND_STAGE_F402_L19, SND_STAGE_F402, SND_STAGE_F402_L19, SND_STAGE_F402_L19, "Demo79_01"},
/* SND_STAGE_F402 */
{ "F402", -1, SND_STAGE_F402, SND_STAGE_F402, SND_STAGE_F402, SND_STAGE_F402, nullptr},
/* SND_STAGE_F404_L13 */
{ "F404", 13, SND_STAGE_F404_L13, SND_STAGE_F404, SND_STAGE_F404_L13, SND_STAGE_F404_L13, "Demo62_01"},
/* SND_STAGE_F404_L14 */
{ "F404", 14, SND_STAGE_F404_L14, SND_STAGE_F404, SND_STAGE_F404_L14, SND_STAGE_F404_L14, "Demo77_01"},
/* SND_STAGE_F404 */
{ "F404", -1, SND_STAGE_F404, SND_STAGE_F404, SND_STAGE_F404, SND_STAGE_F404, nullptr},
/* SND_STAGE_F407_L13 */
{ "F407", 13, SND_STAGE_F407_L13, SND_STAGE_F407, SND_STAGE_F407_L13, SND_STAGE_F407_L13, "Demo59_01"},
/* SND_STAGE_F407_L14 */
{ "F407", 14, SND_STAGE_F407_L14, SND_STAGE_F407, SND_STAGE_F407_L14, SND_STAGE_F407_L14, "Demo70_01"},
/* SND_STAGE_F407_L15 */
{ "F407", 15, SND_STAGE_F407_L15, SND_STAGE_F407, SND_STAGE_F407_L15, SND_STAGE_F407_L15, "Demo70_02"},
/* SND_STAGE_F407 */
{ "F407", -1, SND_STAGE_F407, SND_STAGE_F407, SND_STAGE_F407, SND_STAGE_F407, nullptr},
/* SND_STAGE_F008r_L13 */
{ "F008r", 13, SND_STAGE_F008r_L13, SND_STAGE_F008r, SND_STAGE_F008r_L13, SND_STAGE_F008r_L13, "Demo15_01"},
/* SND_STAGE_F008r_L14 */
{ "F008r", 14, SND_STAGE_F008r_L14, SND_STAGE_F008r, SND_STAGE_F008r_L14, SND_STAGE_F008r_L14, "Demo15_02"},
/* SND_STAGE_F008r_L15 */
{ "F008r", 15, SND_STAGE_F008r_L15, SND_STAGE_F008r, SND_STAGE_F008r_L15, SND_STAGE_F008r_L15, "Demo15_03"},
/* SND_STAGE_F008r */
{ "F008r", -1, SND_STAGE_F008r, SND_STAGE_F008r, SND_STAGE_F008r, SND_STAGE_F008r, nullptr},
/* SND_STAGE_F010r_L13 */
{ "F010r", 13, SND_STAGE_F010r_L13, SND_STAGE_F010r, SND_STAGE_F010r_L13, SND_STAGE_F010r_L13, "Demo44_01"},
/* SND_STAGE_F010r_L14 */
{ "F010r", 14, SND_STAGE_F010r_L14, SND_STAGE_F010r, SND_STAGE_F010r_L14, SND_STAGE_F010r_L14, "Demo48_01"},
/* SND_STAGE_F010r_L15 */
{ "F010r", 15, SND_STAGE_F010r_L15, SND_STAGE_F010r, SND_STAGE_F010r_L15, SND_STAGE_F010r_L15, "Demo50_01"},
/* SND_STAGE_F010r */
{ "F010r", -1, SND_STAGE_F010r, SND_STAGE_F010r, SND_STAGE_F010r, SND_STAGE_F010r, nullptr},
/* SND_STAGE_Demo_L13 */
{ "Demo", 13, SND_STAGE_Demo_L13, SND_STAGE_Demo, SND_STAGE_Demo_L13, SND_STAGE_Demo_L13, "Demo78_01"},
/* SND_STAGE_Demo */
{ "Demo", -1, SND_STAGE_Demo, SND_STAGE_Demo, SND_STAGE_Demo, SND_STAGE_Demo, nullptr},
};
#pragma pop
const s32 dSndStageInfo::sNumStageInfos = ARRAY_LENGTH(dSndStageInfo::sInfos);
+204
View File
@@ -0,0 +1,204 @@
#include "d/snd/d_snd_state_mgr.h"
#include "common.h"
#include "d/d_sc_game.h"
#include "d/snd/d_snd_player_mgr.h"
#include "d/snd/d_snd_stage_data.h"
#include "egg/core/eggHeap.h"
#include "nw4r/snd/snd_FxReverbStdDpl2.h"
#include <cstring>
SND_DISPOSER_DEFINE(dSndStateMgr_c);
dSndStateMgr_c::dSndStateMgr_c()
: field_0x010(0),
field_0x014(0),
field_0x018(0),
field_0x03C(0),
mStageId(0xAC),
mPreviousStageId(0xAC),
field_0x054(0),
field_0x058(0),
mLayer(-1),
field_0x060(0),
field_0x064(0),
field_0x065(false),
field_0x066(0),
field_0x067(0),
field_0x068(-1),
field_0x06C(-1),
field_0x070(0),
field_0x074(0),
field_0x078(0),
field_0x07C(0),
field_0x080(0),
field_0x084(0),
field_0x088(0),
field_0x08C(0x89),
field_0x090(0),
field_0x094(0),
field_0x118(nullptr),
field_0x11C(0),
field_0x120(0),
field_0x124(0),
field_0x128(-1),
field_0x22C(0),
field_0x230(0),
field_0x234(0),
field_0x238(-1),
field_0x23C(0),
field_0x23D(0),
field_0x240(0),
field_0x244(0),
field_0x248(0),
field_0x24C(-1),
field_0x250(0),
field_0x254(0),
field_0x258(0),
field_0x48C(0),
field_0x490(0.02f),
field_0x494(-1.0f),
field_0x498(-1.0f),
field_0x49C(0.02f),
field_0x4A0(0.02f),
field_0x4A4(-1),
field_0x4A8(0),
needsGroupsReload(false) {}
extern "C" void fn_803665B0(nw4r::snd::detail::FxReverbStdParam &, int);
void dSndStateMgr_c::setup(EGG::Heap *pHeap) {
u32 max = 0;
for (int i = 0; i < 5; i++) {
nw4r::snd::detail::FxReverbStdParam param;
fn_803665B0(param, i);
mFx.SetParam(param);
u32 thisSize = mFx.GetRequiredMemSize();
if (max < thisSize) {
max = thisSize;
}
}
void *mem = pHeap->alloc(max, 4);
mFx.AssignWorkBuffer(mem, max);
resetStageName();
}
inline bool streq(const char *stageName, const char *name) {
return !std::strcmp(stageName, name);
}
void dSndStateMgr_c::onStageOrLayerUpdate() {
if (dSndPlayerMgr_c::GetInstance()->checkFlag(dSndPlayerMgr_c::MGR_UNK_0x80)) {
dSndPlayerMgr_c::GetInstance()->stopAllSound();
}
bool unk_0x065 = field_0x065;
onFlag0x10(0x2);
field_0x064 = 0;
if (!streq(field_0x098, dScGame_c::currentSpawnInfo.getStageName())) {
needsGroupsReload = true;
field_0x01C = dScGame_c::currentSpawnInfo.getStageName();
}
if (!needsGroupsReload && dScGame_c::currentSpawnInfo.layer != mLayer) {
needsGroupsReload = true;
}
mLayer = dScGame_c::currentSpawnInfo.layer;
u32 newStageId = getStageId(dScGame_c::currentSpawnInfo.getStageName(), dScGame_c::currentSpawnInfo.layer);
mPreviousStageId = mStageId;
field_0x044 = getStageUnk2(newStageId);
mStageId = newStageId;
if (unk_0x065) {
setCallbacksForStage();
}
}
inline bool checkStagePrefix(const char *stageName, const char *prefix) {
return !std::strncmp(prefix, stageName, 2);
}
u32 dSndStateMgr_c::getStageTypeFlags(const char *stageName) const {
u32 flags = 0;
if (checkStagePrefix(stageName, "F0")) {
flags |= STAGE_SKY | STAGE_FIELD;
} else if (checkStagePrefix(stageName, "D0")) {
flags |= STAGE_SKY | STAGE_DUNGEON;
} else if (checkStagePrefix(stageName, "B0")) {
flags |= STAGE_SKY | STAGE_BOSS;
} else if (checkStagePrefix(stageName, "S0")) {
flags |= STAGE_SKY | STAGE_SILENT_REALM;
} else if (checkStagePrefix(stageName, "F1")) {
flags |= STAGE_FOREST | STAGE_FIELD;
} else if (checkStagePrefix(stageName, "D1")) {
flags |= STAGE_FOREST | STAGE_DUNGEON;
} else if (checkStagePrefix(stageName, "B1")) {
flags |= STAGE_FOREST | STAGE_BOSS;
} else if (checkStagePrefix(stageName, "S1")) {
flags |= STAGE_FOREST | STAGE_SILENT_REALM;
} else if (checkStagePrefix(stageName, "F2")) {
flags |= STAGE_MOUNTAIN | STAGE_FIELD;
} else if (checkStagePrefix(stageName, "D2")) {
flags |= STAGE_MOUNTAIN | STAGE_DUNGEON;
} else if (checkStagePrefix(stageName, "B2")) {
flags |= STAGE_MOUNTAIN | STAGE_BOSS;
} else if (checkStagePrefix(stageName, "S2")) {
flags |= STAGE_MOUNTAIN | STAGE_SILENT_REALM;
} else if (checkStagePrefix(stageName, "F3")) {
flags |= STAGE_DESERT | STAGE_FIELD;
} else if (checkStagePrefix(stageName, "D3")) {
flags |= STAGE_DESERT | STAGE_DUNGEON;
} else if (checkStagePrefix(stageName, "B3")) {
flags |= STAGE_DESERT | STAGE_BOSS;
} else if (checkStagePrefix(stageName, "S3")) {
flags |= STAGE_DESERT | STAGE_SILENT_REALM;
} else if (checkStagePrefix(stageName, "F4")) {
flags |= STAGE_SILENT_GROUNDS | STAGE_FIELD;
} else if (checkStagePrefix(stageName, "D4")) {
flags |= STAGE_SILENT_GROUNDS | STAGE_DUNGEON;
} else if (checkStagePrefix(stageName, "B4")) {
flags |= STAGE_SILENT_GROUNDS | STAGE_BOSS;
}
if ((flags & STAGE_SKY) != 0 && std::strstr(stageName, "r") != nullptr) {
flags |= STAGE_ROOM;
}
return flags;
}
bool dSndStateMgr_c::isVolcanicDungeon(u32 stageId) {
u32 base = getStageUnk2(stageId);
switch (base) {
case SND_STAGE_D200:
case SND_STAGE_D201:
case SND_STAGE_D201_1:
case SND_STAGE_D003_0:
case SND_STAGE_D003_1:
return true;
default:
return false;
}
}
bool dSndStateMgr_c::isSeekerStoneStage(const char *stageName, s32 layer) {
if (streq(stageName, "F000") && layer == 22) {
// Skyloft hint stone
return true;
}
if (streq(stageName, "F202") && layer == 10) {
// Boko base hint stone
return true;
}
return false;
}
bool isInStage(const char *stageName) {
return !std::strcmp(dScGame_c::currentSpawnInfo.getStageName(), stageName);
}
+1 -1
View File
@@ -271,7 +271,7 @@ static const ActorInfo sInfos[] = {
{ "ESiren", fProfile::E_SIREN, fProfile::E_SIREN, 0xFFFF, 18, 0},
{ "ESktl", fProfile::E_SKYTAIL, fProfile::E_SKYTAIL, 2, 10, 0},
{ "ESm", fProfile::E_SM, fProfile::E_SM, 59, 11, 0},
{ "ESpark", fProfile::E_SPARK, fProfile::E_SPARK, 67, 17, 0},
{ "ESpark", fProfile::E_SPARK, fProfile::E_SPARK, 67, SND_SOURCE_SPARK, 0},
{ "ESyako", fProfile::E_SYAKOMAITO, fProfile::E_SYAKOMAITO, 68, 10, 0},
{ "EWs", fProfile::E_WS, fProfile::E_WS, 6, 15, 0},
{ "Eel", fProfile::EEL, fProfile::EEL, 0xFFFF, 0xFF, 0},