dStageMgr_c start, more splits

This commit is contained in:
robojumper
2025-03-08 22:40:04 +01:00
parent c558c88f25
commit 32b7ce138d
20 changed files with 593 additions and 109 deletions
+28
View File
@@ -623,6 +623,16 @@ d/lyt/d_screen_fader.cpp:
.data start:0x80528D68 end:0x80528D90
.sdata2 start:0x8057ABE0 end:0x8057AC08
d/a/d_a_bird_base.cpp:
.text start:0x80175FD0 end:0x80179128
d/a/d_a_door_base.cpp:
.text start:0x80179130 end:0x801792C4
.ctors start:0x804DB7DC end:0x804DB7E0
d/lyt/d_lyt_map_popup.cpp:
.text start:0x801792D0 end:0x80189F9C
d/a/d_a_fish_mgr_base.cpp:
.text start:0x8018B880 end:0x8018BFC8
.ctors start:0x804DB7E4 end:0x804DB7E8
@@ -631,6 +641,9 @@ d/a/d_a_fish_base.cpp:
.text start:0x8018BFD0 end:0x8018E378
.ctors start:0x804DB7E8 end:0x804DB7EC
toBeSorted/sword_proj_effect_list.cpp:
.text start:0x8018E380 end:0x8018F188
d/a/d_a_insect.cpp:
.text start:0x8018F190 end:0x80190710
.data start:0x8052ABD8 end:0x8052ACC0
@@ -644,6 +657,21 @@ d/a/d_a_salbage_npc.cpp:
.text start:0x80192B00 end:0x80194080
.ctors start:0x804DB7F0 end:0x804DB7F4
d/d_stage_mgr.cpp:
.text start:0x801975C0 end:0x8019CFD8
.ctors start:0x804DB7FC end:0x804DB800
.data start:0x8052B708 end:0x8052C128
d/d_last.cpp:
.text start:0x8019CFE0 end:0x8019D15C
d/d_camera.cpp:
.text start:0x8019D160 end:0x8019ED0C
.ctors start:0x804DB800 end:0x804DB804
d/d_light_obj.cpp:
.text start:0x8019ED10 end:0x801A65C8
d/tg/d_t_weather.cpp:
.text start:0x801A65D0 end:0x801AF7D8
.ctors start:0x804DB804 end:0x804DB808
+67 -67
View File
@@ -10516,21 +10516,21 @@ fn_801973C0 = .text:0x801973C0; // type:function size:0x58
fn_80197420 = .text:0x80197420; // type:function size:0x140
fn_80197560 = .text:0x80197560; // type:function size:0x28
fn_80197590 = .text:0x80197590; // type:function size:0x28
StageManager__ctor = .text:0x801975C0; // type:function size:0x34
dStageMgr_c_classInit__Fv = .text:0x801975C0; // type:function size:0x34
fn_80197600 = .text:0x80197600; // type:function size:0xA0
fn_801976A0 = .text:0x801976A0; // type:function size:0x90
StageManager__ctorCont = .text:0x80197730; // type:function size:0x39C
__ct__11dStageMgr_cFv = .text:0x80197730; // type:function size:0x39C
fn_80197AD0 = .text:0x80197AD0; // type:function size:0x4C
fn_80197B20 = .text:0x80197B20; // type:function size:0x54
fn_80197B80 = .text:0x80197B80; // type:function size:0x40
__dt__Q23EGG6ScreenFv = .text:0x80197B80; // type:function size:0x40
fn_80197BC0 = .text:0x80197BC0; // type:function size:0x40
fn_80197C00 = .text:0x80197C00; // type:function size:0x64
fn_80197C70 = .text:0x80197C70; // type:function size:0x5C
fn_80197CD0 = .text:0x80197CD0; // type:function size:0x58
fn_80197D30 = .text:0x80197D30; // type:function size:0x58
fn_80197D90 = .text:0x80197D90; // type:function size:0x6C
fn_80197E00 = .text:0x80197E00; // type:function size:0xA0
fn_80197EA0 = .text:0x80197EA0; // type:function size:0xA4
__dt__22sFPhase<11dStageMgr_c>Fv = .text:0x80197CD0; // type:function size:0x58
__dt__24sFState_c<11dStageMgr_c>Fv = .text:0x80197D30; // type:function size:0x58
__dt__27sFStateFct_c<11dStageMgr_c>Fv = .text:0x80197D90; // type:function size:0x6C
__dt__80sStateMgr_c<11dStageMgr_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x80197E00; // type:function size:0xA0
__dt__50sFStateMgr_c<11dStageMgr_c,20sStateMethodUsr_FI_c>Fv = .text:0x80197EA0; // type:function size:0xA4
fn_80197F50 = .text:0x80197F50; // type:function size:0x5C
fn_80197FB0 = .text:0x80197FB0; // type:function size:0x5C
fn_80198010 = .text:0x80198010; // type:function size:0x60
@@ -10539,16 +10539,16 @@ EGG__DrawPathShadowVolume____dt = .text:0x801980E0; // type:function size:0x60
fn_80198140 = .text:0x80198140; // type:function size:0x58
fn_801981A0 = .text:0x801981A0; // type:function size:0x58
fn_80198200 = .text:0x80198200; // type:function size:0x58
fn_80198260 = .text:0x80198260; // type:function size:0x308
__dt__11dStageMgr_cFv = .text:0x80198260; // type:function size:0x308
StageManager__init = .text:0x80198570; // type:function size:0xDC
fn_80198650 = .text:0x80198650; // type:function size:0x1CC
StageManager__baseUpdate = .text:0x80198820; // type:function size:0x3D8
fn_80198C00 = .text:0x80198C00; // type:function size:0x10
fn_80198C10 = .text:0x80198C10; // type:function size:0x10
getStateID__80sStateMgr_c<11dStageMgr_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x80198C00; // type:function size:0x10
executeState__80sStateMgr_c<11dStageMgr_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x80198C10; // type:function size:0x10
StageManager__draw = .text:0x80198C20; // type:function size:0x14C
fn_80198D70 = .text:0x80198D70; // type:function size:0x14
StageManager__init2 = .text:0x80198D90; // type:function size:0x25C
fn_80198FF0 = .text:0x80198FF0; // type:function size:0x10
changeState__80sStateMgr_c<11dStageMgr_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x80198FF0; // type:function size:0x10
fn_80199000 = .text:0x80199000; // type:function size:0x110
fn_80199110 = .text:0x80199110; // type:function size:0x8
fn_80199120 = .text:0x80199120; // type:function size:0x10
@@ -10601,41 +10601,41 @@ fn_8019A390 = .text:0x8019A390; // type:function size:0x44
fn_8019A3E0 = .text:0x8019A3E0; // type:function size:0x2C8
fn_8019A6B0 = .text:0x8019A6B0; // type:function size:0xF0
fn_8019A7A0 = .text:0x8019A7A0; // type:function size:0x3C
StageMgr__stateReadStageResEnter = .text:0x8019A7E0; // type:function size:0x10
StageMgr__stateReadStageResUpdate = .text:0x8019A7F0; // type:function size:0x58
StageMgr__stateReadStageResLeave = .text:0x8019A850; // type:function size:0x60
StageManager__loadRoomsAndAdditionalLayouts = .text:0x8019A8B0; // type:function size:0x218
StageMgr__stateReadRoomResUpdate = .text:0x8019AAD0; // type:function size:0x6C
StageMgr__stateReadRoomResLeave = .text:0x8019AB40; // type:function size:0xB8
StageMgr__stateReadObjectResEnter = .text:0x8019AC00; // type:function size:0x8
StageMgr__stateReadObjectResUpdate = .text:0x8019AC10; // type:function size:0x54
StageMgr__stateReadObjectResLeave = .text:0x8019AC70; // type:function size:0x4
StageMgr__stateReadStageLayerResEnter = .text:0x8019AC80; // type:function size:0x14
StageMgr__stateReadStageLayerResUpdate = .text:0x8019ACA0; // type:function size:0x58
StageMgr__stateReadObjectResLeave2 = .text:0x8019AD00; // type:function size:0x4
StageMgr__stateReadLayerObjectResEnter = .text:0x8019AD10; // type:function size:0x19C
StageMgr__stateReadLayerObjectResUpdate = .text:0x8019AEB0; // type:function size:0x68
StageMgr__stateReadLayerObjectResLeave = .text:0x8019AF20; // type:function size:0x98
initializeState_ReadStageRes__11dStageMgr_cFv = .text:0x8019A7E0; // type:function size:0x10
executeState_ReadStageRes__11dStageMgr_cFv = .text:0x8019A7F0; // type:function size:0x58
finalizeState_ReadStageRes__11dStageMgr_cFv = .text:0x8019A850; // type:function size:0x60
initializeState_ReadRoomRes__11dStageMgr_cFv = .text:0x8019A8B0; // type:function size:0x218
executeState_ReadRoomRes__11dStageMgr_cFv = .text:0x8019AAD0; // type:function size:0x6C
finalizeState_ReadRoomRes__11dStageMgr_cFv = .text:0x8019AB40; // type:function size:0xB8
initializeState_ReadObjectRes__11dStageMgr_cFv = .text:0x8019AC00; // type:function size:0x8
executeState_ReadObjectRes__11dStageMgr_cFv = .text:0x8019AC10; // type:function size:0x54
finalizeState_ReadObjectRes__11dStageMgr_cFv = .text:0x8019AC70; // type:function size:0x4
initializeState_ReadStageLayerRes__11dStageMgr_cFv = .text:0x8019AC80; // type:function size:0x14
executeState_ReadStageLayerRes__11dStageMgr_cFv = .text:0x8019ACA0; // type:function size:0x58
finalizeState_ReadStageLayerRes__11dStageMgr_cFv = .text:0x8019AD00; // type:function size:0x4
initializeState_ReadLayerObjectRes__11dStageMgr_cFv = .text:0x8019AD10; // type:function size:0x19C
executeState_ReadLayerObjectRes__11dStageMgr_cFv = .text:0x8019AEB0; // type:function size:0x68
finalizeState_ReadLayerObjectRes__11dStageMgr_cFv = .text:0x8019AF20; // type:function size:0x98
fn_8019AFC0 = .text:0x8019AFC0; // type:function size:0x28
StageMgr__stateSoundLoadSceneDataEnter = .text:0x8019AFF0; // type:function size:0x44
StageMgr__stateSoundLoadSceneDataUpdate = .text:0x8019B040; // type:function size:0x34
StageMgr__stateSoundLoadSceneDataLeave = .text:0x8019B080; // type:function size:0x38
StageMgr__stateCreateObjectEnter = .text:0x8019B0C0; // type:function size:0x684
StageMgr__stateCreateObjectUpdate = .text:0x8019B750; // type:function size:0x50
StageMgr__stateCreateObjectLeave = .text:0x8019B7A0; // type:function size:0x4
initializeState_SoundLoadSceneData__11dStageMgr_cFv = .text:0x8019AFF0; // type:function size:0x44
executeState_SoundLoadSceneData__11dStageMgr_cFv = .text:0x8019B040; // type:function size:0x34
finalizeState_SoundLoadSceneData__11dStageMgr_cFv = .text:0x8019B080; // type:function size:0x38
initializeState_CreateObject__11dStageMgr_cFv = .text:0x8019B0C0; // type:function size:0x684
executeState_CreateObject__11dStageMgr_cFv = .text:0x8019B750; // type:function size:0x50
finalizeState_CreateObject__11dStageMgr_cFv = .text:0x8019B7A0; // type:function size:0x4
fn_8019B7B0 = .text:0x8019B7B0; // type:function size:0x28
StageMgr__stateReadObjectSoundEnter = .text:0x8019B7E0; // type:function size:0x3C
StageMgr__stateReadObjectSoundUpdate = .text:0x8019B820; // type:function size:0x7C
StageMgr__stateReadObjectSoundLeave = .text:0x8019B8A0; // type:function size:0x4C
StageMgr__stateSceneChangeSaveEnter = .text:0x8019B8F0; // type:function size:0x54
StageMgr__stateSceneChangeSaveUpdate = .text:0x8019B950; // type:function size:0x4C
StageMgr__stateSceneChangeSaveLeave = .text:0x8019B9A0; // type:function size:0x1C
StageMgr__stateRestartSceneWaitEnter = .text:0x8019B9C0; // type:function size:0x8
StageMgr__stateRestartSceneWaitUpdate = .text:0x8019B9D0; // type:function size:0x118
StageMgr__stateRestartSceneWaitLeave = .text:0x8019BAF0; // type:function size:0x4
StageMgr__stateRestartSceneEnter = .text:0x8019BB00; // type:function size:0x5C
StageMgr__stateRestartSceneUpdate = .text:0x8019BB60; // type:function size:0x130
StageMgr__stateRestartSceneLeave = .text:0x8019BC90; // type:function size:0x28
initializeState_ReadObjectSound__11dStageMgr_cFv = .text:0x8019B7E0; // type:function size:0x3C
executeState_ReadObjectSound__11dStageMgr_cFv = .text:0x8019B820; // type:function size:0x7C
finalizeState_ReadObjectSound__11dStageMgr_cFv = .text:0x8019B8A0; // type:function size:0x4C
initializeState_SceneChangeSave__11dStageMgr_cFv = .text:0x8019B8F0; // type:function size:0x54
executeState_SceneChangeSave__11dStageMgr_cFv = .text:0x8019B950; // type:function size:0x4C
finalizeState_SceneChangeSave__11dStageMgr_cFv = .text:0x8019B9A0; // type:function size:0x1C
initializeState_RestartSceneWait__11dStageMgr_cFv = .text:0x8019B9C0; // type:function size:0x8
executeState_RestartSceneWait__11dStageMgr_cFv = .text:0x8019B9D0; // type:function size:0x118
finalizeState_RestartSceneWait__11dStageMgr_cFv = .text:0x8019BAF0; // type:function size:0x4
initializeState_RestartScene__11dStageMgr_cFv = .text:0x8019BB00; // type:function size:0x5C
executeState_RestartScene__11dStageMgr_cFv = .text:0x8019BB60; // type:function size:0x130
finalizeState_RestartScene__11dStageMgr_cFv = .text:0x8019BC90; // type:function size:0x28
fn_8019BCC0 = .text:0x8019BCC0; // type:function size:0x16C
fn_8019BE30 = .text:0x8019BE30; // type:function size:0x8
fn_8019BE40 = .text:0x8019BE40; // type:function size:0x74
@@ -10656,21 +10656,21 @@ fn_8019C270 = .text:0x8019C270; // type:function size:0x4
fn_8019C280 = .text:0x8019C280; // type:function size:0x4
fn_8019C290 = .text:0x8019C290; // type:function size:0x8
fn_8019C2A0 = .text:0x8019C2A0; // type:function size:0x8
fn_8019C2B0 = .text:0x8019C2B0; // type:function size:0x60
fn_8019C310 = .text:0x8019C310; // type:function size:0xC
fn_8019C320 = .text:0x8019C320; // type:function size:0x1C
fn_8019C340 = .text:0x8019C340; // type:function size:0x1C
fn_8019C360 = .text:0x8019C360; // type:function size:0x1C
fn_8019C380 = .text:0x8019C380; // type:function size:0x10
fn_8019C390 = .text:0x8019C390; // type:function size:0x10
fn_8019C3A0 = .text:0x8019C3A0; // type:function size:0x10
fn_8019C3B0 = .text:0x8019C3B0; // type:function size:0x10
fn_8019C3C0 = .text:0x8019C3C0; // type:function size:0x10
fn_8019C3D0 = .text:0x8019C3D0; // type:function size:0x10
fn_8019C3E0 = .text:0x8019C3E0; // type:function size:0x30
fn_8019C410 = .text:0x8019C410; // type:function size:0xC
fn_8019C420 = .text:0x8019C420; // type:function size:0x10
fn_8019C430 = .text:0x8019C430; // type:function size:0x2C
build__27sFStateFct_c<11dStageMgr_c>FRC12sStateIDIf_c = .text:0x8019C2B0; // type:function size:0x60
dispose__27sFStateFct_c<11dStageMgr_c>FRP10sStateIf_c = .text:0x8019C310; // type:function size:0xC
initialize__24sFState_c<11dStageMgr_c>Fv = .text:0x8019C320; // type:function size:0x1C
execute__24sFState_c<11dStageMgr_c>Fv = .text:0x8019C340; // type:function size:0x1C
finalize__24sFState_c<11dStageMgr_c>Fv = .text:0x8019C360; // type:function size:0x1C
initializeState__80sStateMgr_c<11dStageMgr_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8019C380; // type:function size:0x10
finalizeState__80sStateMgr_c<11dStageMgr_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8019C390; // type:function size:0x10
refreshState__80sStateMgr_c<11dStageMgr_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8019C3A0; // type:function size:0x10
getState__80sStateMgr_c<11dStageMgr_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x8019C3B0; // type:function size:0x10
getNewStateID__80sStateMgr_c<11dStageMgr_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x8019C3C0; // type:function size:0x10
getOldStateID__80sStateMgr_c<11dStageMgr_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x8019C3D0; // type:function size:0x10
callPhase__22sFPhase<11dStageMgr_c>Fv = .text:0x8019C3E0; // type:function size:0x30
onReset__22sFPhase<11dStageMgr_c>Fv = .text:0x8019C410; // type:function size:0xC
nextPhase__22sFPhase<11dStageMgr_c>Fv = .text:0x8019C420; // type:function size:0x10
hasReachedEnd__22sFPhase<11dStageMgr_c>CFv = .text:0x8019C430; // type:function size:0x2C
fn_8019C460 = .text:0x8019C460; // type:function size:0x10
fn_8019C470 = .text:0x8019C470; // type:function size:0x10
fn_8019C480 = .text:0x8019C480; // type:function size:0x10
@@ -10678,12 +10678,12 @@ fn_8019C490 = .text:0x8019C490; // type:function size:0x8
fn_8019C4A0 = .text:0x8019C4A0; // type:function size:0x10
fn_8019C4B0 = .text:0x8019C4B0; // type:function size:0x8
fn_8019C4C0 = .text:0x8019C4C0; // type:function size:0x10
fn_8019C4D0 = .text:0x8019C4D0; // type:function size:0x30
fn_8019C500 = .text:0x8019C500; // type:function size:0x30
fn_8019C530 = .text:0x8019C530; // type:function size:0x30
StageMgr__initStates = .text:0x8019C560; // type:function size:0x87C
StageMgr__state_dtor = .text:0x8019CDE0; // type:function size:0x58
fn_8019CE40 = .text:0x8019CE40; // type:function size:0x88
finalizeState__26sFStateID_c<11dStageMgr_c>CFR11dStageMgr_c = .text:0x8019C4D0; // type:function size:0x30
executeState__26sFStateID_c<11dStageMgr_c>CFR11dStageMgr_c = .text:0x8019C500; // type:function size:0x30
initializeState__26sFStateID_c<11dStageMgr_c>CFR11dStageMgr_c = .text:0x8019C530; // type:function size:0x30
__sinit_\d_stage_mgr_cpp = .text:0x8019C560; // type:function size:0x87C scope:local
__dt__26sFStateID_c<11dStageMgr_c>Fv = .text:0x8019CDE0; // type:function size:0x58
isSameName__26sFStateID_c<11dStageMgr_c>CFPCc = .text:0x8019CE40; // type:function size:0x88
fn_8019CED0 = .text:0x8019CED0; // type:function size:0x8
fn_8019CEE0 = .text:0x8019CEE0; // type:function size:0x8
fn_8019CEF0 = .text:0x8019CEF0; // type:function size:0x8
@@ -11020,7 +11020,7 @@ onReset__18sFPhase<8dStage_c>Fv = .text:0x801B5B40; // type:function size:0xC
nextPhase__18sFPhase<8dStage_c>Fv = .text:0x801B5B50; // type:function size:0x10
hasReachedEnd__18sFPhase<8dStage_c>CFv = .text:0x801B5B60; // type:function size:0x2C
fn_801B5B90 = .text:0x801B5B90; // type:function size:0x10
__sinit_\d_stage_cpp = .text:0x801B5BA0; // type:function size:0x28
__sinit_\d_stage_cpp = .text:0x801B5BA0; // type:function size:0x28 scope:local
AcStageSelect__ctor = .text:0x801B5BD0; // type:function size:0x4C
AcStageSelect__dtor = .text:0x801B5C20; // type:function size:0x5C
dRoom_c_classInit__Fv = .text:0x801B5C80; // type:function size:0x17C
+2
View File
@@ -429,6 +429,8 @@ config.libs = [
Object(Matching, "d/lyt/d_lyt_fader.cpp"),
Object(Matching, "d/lyt/d_screen_fader.cpp"),
Object(NonMatching, "d/a/d_a_insect.cpp"),
Object(NonMatching, "d/d_stage_mgr.cpp"),
Object(NonMatching, "d/d_last.cpp"),
Object(NonMatching, "d/d_stage.cpp"),
Object(NonMatching, "d/d_room.cpp"),
Object(NonMatching, "d/d_cs_base.cpp"),
+4
View File
@@ -1,3 +1,5 @@
#ifndef D_CC_MASS_OBJ_H
#define D_CC_MASS_OBJ_H
#include "common.h"
#include "d/a/obj/d_a_obj_base.h"
@@ -102,3 +104,5 @@ public:
// u8 GetResultCam() const;
// void GetCamTopPos(Vec *p_out);
};
#endif
+5
View File
@@ -1,3 +1,6 @@
#ifndef D_CC_S_H
#define D_CC_S_H
#include "common.h"
#include "d/col/c/c_cc_d.h"
#include "d/col/cc/d_cc_mass_s.h"
@@ -76,3 +79,5 @@ public:
static dCcS *GetInstance();
static dCcS *sInstance;
};
#endif
+17
View File
@@ -0,0 +1,17 @@
#ifndef D_LAST_H
#define D_LAST_H
#include "d/d_base.h"
class dLast_c : public dBase_c {
public:
typedef void (*executeCallback)(void);
static void setExecuteCallback(executeCallback cb) {
sExecuteCallback = cb;
}
private:
static executeCallback sExecuteCallback;
};
#endif
+12 -2
View File
@@ -62,7 +62,7 @@ struct SpawnInfo {
/* 0x24 */ s8 entrance;
/* 0x25 */ u8 night;
/* 0x26 */ u8 trial;
/* 0x27 */ s8 transitionType;
/* 0x27 */ u8 transitionType;
/* 0x28 */ s8 unk;
enum DayNight {
@@ -137,6 +137,8 @@ public:
static bool isCurrentStage(const char *stageName);
static bool isStageSkyloftLayer20();
static bool isInCredits();
static bool isStateLayerWithSeekerStoneHintMenu();
static SpawnInfo currentSpawnInfo;
static SpawnInfo nextSpawnInfo;
@@ -156,6 +158,14 @@ public:
sUpdateFrameCount = 0;
}
bool savePromptFlag() const {
return mSavePromptFlag;
}
void setSavePromptFlag(bool val) {
mSavePromptFlag = val;
}
protected:
static u32 sUpdateFrameCount;
static u8 sCurrentLayer;
@@ -225,7 +235,7 @@ protected:
/* 0x29C */ s32 mLastAreaType;
/* 0x2A0 */ u8 mType0PosFlag;
/* 0x2A1 */ u8 field_0x2A1;
/* 0x2A2 */ u8 mSavePromptFlag;
/* 0x2A2 */ bool mSavePromptFlag;
/* 0x2A3 */ bool mPreventSaveRespawnInfo;
};
+114
View File
@@ -0,0 +1,114 @@
#ifndef D_STAGE_MGR_H
#define D_STAGE_MGR_H
#include "d/col/bg/d_bg_s.h"
#include "d/col/cc/d_cc_s.h"
#include "d/d_base.h"
#include "d/d_dylink.h"
#include "d/d_fader.h"
#include "d/d_bzs_types.h"
#include "egg/gfx/eggScreen.h"
#include "m/m_allocator.h"
#include "m/m_dvd.h"
#include "s/s_FPhase.h"
#include "s/s_State.hpp"
#include "sized_string.h"
#include "toBeSorted/arc_managers/layout_arc_manager.h"
#include "toBeSorted/arc_managers/oarc_manager.h"
#include "toBeSorted/attention.h"
#include "toBeSorted/time_area_mgr.h"
#include "toBeSorted/unk_with_water.h"
class RelObjCtrl {
public:
dDynamicModuleControl mRelCtrl;
ObjectArcControl mOarcCtrl;
void doLoad();
bool isLoaded() const;
};
class dStageMgr_c : public dBase_c {
public:
dStageMgr_c();
virtual ~dStageMgr_c();
STATE_FUNC_DECLARE(dStageMgr_c, ReadStageRes);
STATE_FUNC_DECLARE(dStageMgr_c, ReadRoomRes);
STATE_FUNC_DECLARE(dStageMgr_c, ReadObjectRes);
STATE_FUNC_DECLARE(dStageMgr_c, ReadStageLayerRes);
STATE_FUNC_DECLARE(dStageMgr_c, ReadLayerObjectRes);
STATE_FUNC_DECLARE(dStageMgr_c, SoundLoadSceneData);
STATE_FUNC_DECLARE(dStageMgr_c, CreateObject);
STATE_FUNC_DECLARE(dStageMgr_c, ReadObjectSound);
STATE_FUNC_DECLARE(dStageMgr_c, SceneChangeSave);
STATE_FUNC_DECLARE(dStageMgr_c, RestartSceneWait);
STATE_FUNC_DECLARE(dStageMgr_c, RestartScene);
public:
bool isAreaTypeDungeon() const;
bool isAreaTypeSky() const;
bool isAreaTypeDungeonOrBoss() const;
bool isAreaTypeOverworldOrSkyloft() const;
s32 getSTIFunk1() const;
s32 getAreaType() const;
static dStageMgr_c *GetInstance() {
return sInstance;
}
bool checkFlag0x88A0(u32 flag) const {
return (field_0x88A0 & flag) != 0;
}
void initUnkWithWater(u32 val, UnkWithWater *waterThing);
void destroyUnkWithWater(u32 val, UnkWithWater *waterThing);
void addActorId(u16 actorId);
private:
static void lastExecuteCallback();
void triggerFade(s32 fadeType, u8 fadeFrames);
static dStageMgr_c *sInstance;
static sFPhase<dStageMgr_c>::phaseCallback sCallbacks[];
/* 0x0068 */ mHeapAllocator_c mAlloc;
/* 0x0084 */ sFPhase<dStageMgr_c> mPhase;
/* 0x0098 */ STATE_MGR_DECLARE(dStageMgr_c);
/* 0x00D4 */ RelObjCtrl mStageObjCtrl;
/* 0x0324 */ RelObjCtrl mLayerObjCtrl;
/* 0x0574 */ LayoutArcControl mLayoutArcCtrl1;
/* 0x0580 */ LayoutArcControl mLayoutArcCtrl2;
/* 0x058C */ dBgS mBg;
// ...
/* 0x3E40 */ dCcS mCc;
// ...
/* 0x7930 */ dFader_c mFader;
/* 0x7954 */ u16 mPcamCount;
/* 0x7956 */ u16 mLyseCount;
/* 0x7958 */ u16 mRmplCount;
/* 0x795C */ PCAM *pcam;
/* 0x7960 */ PCAM *lyse;
/* 0x7964 */ STIF *stif;
/* 0x7968 */ RMPL *rmpl;
/* 0x799C */ mDvd_callback_c *mpDvdCallback;
/* 0x79A0 */ mDvd_callback_c *mpDvdCallback2;
/* 0x79A4 */ EGG::Screen mScreens[2];
/* 0x7AB4 */ AttentionManager mAttention;
/* 0x8694 */ dTimeAreaMgr_c mTimeAreaMgr;
// ...
u8 ___[2450];
/* 0x88A0 */ u32 field_0x88A0;
/* 0x88A4 */ SizedString<16> mDemoName;
/* 0x88BC */ bool field_0x88BC;
};
#endif
+12
View File
@@ -0,0 +1,12 @@
#ifndef D_STAGE_PARSE_H
#define D_STAGE_PARSE_H
#include "common.h"
typedef s32 parseCallbackArg;
void parseStageBzs(parseCallbackArg arg, void *bzs);
void parseRoomStageBzs(parseCallbackArg arg, void *bzs);
void parseBzsStageRoom(parseCallbackArg arg, void *bzs);
#endif
+4
View File
@@ -16,6 +16,10 @@ public:
return isStatus(status) != true;
}
bool isSettled() const {
return isStatus(mFaderBase_c::FADED_IN) || isStatus(mFaderBase_c::FADED_OUT);
}
mFaderBase_c::EStatus getStatus() const {
return mpFader->getStatus();
}
+4
View File
@@ -76,6 +76,10 @@ struct SizedString {
va_end(list);
return printed;
}
size_t len() const {
return strlen(mChars);
}
};
// TODO this might be a shared template with SizedString but I'm
@@ -32,6 +32,10 @@ public:
EGG::ExpHeap *getHeap(s32 roomid);
inline int ensureAllEntriesLoaded() {
return mArcTable.ensureAllEntriesLoaded();
}
private:
SizedString<32> mStageName;
SizedString<32> mCurrentLoadingStageArcName;
@@ -38,4 +38,17 @@ private:
dRawArcTable_c mArcTable;
};
class ObjectArcControl {
public:
ObjectArcControl() : mObjectArcs(nullptr), mNumArcs(0) {}
virtual ~ObjectArcControl();
void set(const char *const *objectArcs, s32 numArcs);
void load(EGG::Heap *heap);
void release();
private:
const char **mObjectArcs;
s32 mNumArcs;
};
#endif
+5
View File
@@ -9,6 +9,11 @@ extern "C" void fn_8035E310(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 *ENEMY_BGM_RELATED_MGR;
extern "C" void fn_80384570(void *, bool);
-35
View File
@@ -1,35 +0,0 @@
#ifndef STAGE_MANAGER_H
#define STAGE_MANAGER_H
#include "d/d_base.h"
#include "toBeSorted/unk_with_water.h"
class dStageMgr_c : dBase_c {
public:
bool isAreaTypeDungeon() const;
bool isAreaTypeSky() const;
bool isAreaTypeDungeonOrBoss() const;
bool isAreaTypeOverworldOrSkyloft() const;
s32 getSTIFunk1() const;
s32 getAreaType() const;
static dStageMgr_c *GetInstance() {
return sInstance;
}
bool checkFlag0x88A0(u32 flag) const {
return (field_0x88A0 & flag) != 0;
}
void initUnkWithWater(u32 val, UnkWithWater *waterThing);
void destroyUnkWithWater(u32 val, UnkWithWater *waterThing);
private:
static dStageMgr_c *sInstance;
/* 0x0068 */ u8 _0x0068[0x88A0 - 0x0068];
/* 0x88A0 */ u32 field_0x88A0;
};
#endif
+1 -2
View File
@@ -4,9 +4,9 @@
#include "d/a/obj/d_a_obj_base.h"
#include "d/col/c/c_cc_d.h"
#include "d/col/c/c_m3d_g_aab.h"
#include "d/d_stage_mgr.h"
#include "f/f_base.h"
#include "rvl/MTX/mtx.h"
#include "toBeSorted/stage_manager.h"
dCcS *dCcS::sInstance;
@@ -168,7 +168,6 @@ void dCcS::ClearArea() {
mAreaCount = 0;
}
extern "C" bool fn_8019A7A0(void *stg, f32 *, f32 *);
void dCcS::AdjustHitPos() {
f32 x, z;
+1 -1
View File
@@ -9,6 +9,7 @@
#include "d/col/bg/d_bg_w_kcol.h"
#include "d/d_sc_game.h"
#include "d/d_stage.h"
#include "d/d_stage_mgr.h"
#include "d/flag/sceneflag_manager.h"
#include "d/flag/storyflag_manager.h"
#include "d/t/d_t_mass_obj.h"
@@ -36,7 +37,6 @@
#include "nw4r/math/math_types.h"
#include "sized_string.h"
#include "toBeSorted/arc_managers/current_stage_arc_manager.h"
#include "toBeSorted/stage_manager.h"
#include "toBeSorted/time_area_mgr.h"
#include "toBeSorted/unk_with_water.h"
+1 -1
View File
@@ -2,6 +2,7 @@
#include "common.h"
#include "d/d_base.h"
#include "d/d_stage_mgr.h"
#include "d/flag/storyflag_manager.h"
#include "f/f_base.h"
#include "f/f_profile_name.h"
@@ -15,7 +16,6 @@
#include "toBeSorted/minigame_mgr.h"
#include "toBeSorted/music_mgrs.h"
#include "toBeSorted/some_gxf_thing.h"
#include "toBeSorted/stage_manager.h"
#include <cstring>
+298
View File
@@ -0,0 +1,298 @@
#include "d/d_stage_mgr.h"
#include "common.h"
#include "d/d_base.h"
#include "d/d_bzs_types.h"
#include "d/d_heap.h"
#include "d/d_last.h"
#include "d/d_sc_game.h"
#include "d/d_stage_parse.h"
#include "d/d_sys.h"
#include "d/flag/flag_managers.h"
#include "egg/core/eggHeap.h"
#include "f/f_base.h"
#include "f/f_profile_name.h"
#include "m/m_dvd.h"
#include "toBeSorted/arc_managers/current_stage_arc_manager.h"
#include "toBeSorted/arc_managers/layout_arc_manager.h"
#include "toBeSorted/arc_managers/oarc_manager.h"
#include "toBeSorted/music_mgrs.h"
#include <cstddef>
SPECIAL_BASE_PROFILE(STAGE_MANAGER, dStageMgr_c, fProfile::STAGE_MANAGER, 0X5, 1536);
STATE_DEFINE(dStageMgr_c, ReadStageRes);
STATE_DEFINE(dStageMgr_c, ReadRoomRes);
STATE_DEFINE(dStageMgr_c, ReadObjectRes);
STATE_DEFINE(dStageMgr_c, ReadStageLayerRes);
STATE_DEFINE(dStageMgr_c, ReadLayerObjectRes);
STATE_DEFINE(dStageMgr_c, SoundLoadSceneData);
STATE_DEFINE(dStageMgr_c, CreateObject);
STATE_DEFINE(dStageMgr_c, ReadObjectSound);
STATE_DEFINE(dStageMgr_c, SceneChangeSave);
STATE_DEFINE(dStageMgr_c, RestartSceneWait);
STATE_DEFINE(dStageMgr_c, RestartScene);
dStageMgr_c::dStageMgr_c() : mStateMgr(*this, sStateID::null), mPhase(this, sCallbacks) {
sInstance = this;
}
dStageMgr_c::~dStageMgr_c() {
sInstance = nullptr;
}
void dStageMgr_c::initializeState_ReadStageRes() {
CurrentStageArcManager::sInstance->setStage(dScGame_c::currentSpawnInfo.stageName);
}
void dStageMgr_c::executeState_ReadStageRes() {
if (CurrentStageArcManager::sInstance->ensureAllEntriesLoaded() == 0) {
mStateMgr.changeState(StateID_ReadRoomRes);
}
}
void dStageMgr_c::finalizeState_ReadStageRes() {
void *stageBzs = CurrentStageArcManager::sInstance->getData("dat/stage.bzs");
if (stageBzs != nullptr) {
parseStageBzs(-1, stageBzs);
parseRoomStageBzs(-1, stageBzs);
}
fn_803618F0(ENEMY_SOUND_MGR);
}
void dStageMgr_c::initializeState_ReadRoomRes() {}
void dStageMgr_c::executeState_ReadRoomRes() {
if (CurrentStageArcManager::sInstance->ensureAllEntriesLoaded() == 0 &&
LayoutArcManager::sInstance->ensureAllEntriesLoaded() == 0) {
mStateMgr.changeState(StateID_ReadObjectRes);
}
}
void dStageMgr_c::finalizeState_ReadRoomRes() {
if (rmpl != nullptr) {
RMPL *itRmpl = rmpl;
for (int i = 0; i < mRmplCount; itRmpl++, i++) {
void *bzs = CurrentStageArcManager::sInstance->loadFromRoomArc(itRmpl->roomId, "dat/room.bzs");
parseRoomStageBzs(itRmpl->roomId, bzs);
}
} else {
u32 roomId = dScGame_c::currentSpawnInfo.room;
void *bzs =
CurrentStageArcManager::sInstance->loadFromRoomArc(dScGame_c::currentSpawnInfo.room, "dat/room.bzs");
parseRoomStageBzs(roomId, bzs);
}
}
void dStageMgr_c::initializeState_ReadObjectRes() {
mStageObjCtrl.doLoad();
}
void dStageMgr_c::executeState_ReadObjectRes() {
if (mStageObjCtrl.isLoaded()) {
mStateMgr.changeState(StateID_ReadStageLayerRes);
}
}
void dStageMgr_c::finalizeState_ReadObjectRes() {}
void dStageMgr_c::initializeState_ReadStageLayerRes() {
CurrentStageArcManager::sInstance->loadFileFromExtraLayerArc(dScGame_c::currentSpawnInfo.layer);
}
void dStageMgr_c::executeState_ReadStageLayerRes() {
if (CurrentStageArcManager::sInstance->ensureAllEntriesLoaded() == 0) {
mStateMgr.changeState(StateID_ReadLayerObjectRes);
}
}
void dStageMgr_c::finalizeState_ReadStageLayerRes() {}
const char demoName[] = "";
static const char *sSeekerStoneLayoutArcs[] = {
"SeekerStone",
};
void dStageMgr_c::initializeState_ReadLayerObjectRes() {
mDemoName = demoName;
void *bzs = CurrentStageArcManager::sInstance->getData("dat/stage.bzs");
if (bzs != nullptr) {
parseBzsStageRoom(-1, bzs);
}
if (rmpl != nullptr) {
RMPL *itRmpl = rmpl;
for (int i = 0; i < mRmplCount; itRmpl++, i++) {
void *bzs = CurrentStageArcManager::sInstance->loadFromRoomArc(itRmpl->roomId, "dat/room.bzs");
parseBzsStageRoom(itRmpl->roomId, bzs);
}
} else {
u32 roomId = dScGame_c::currentSpawnInfo.room;
void *bzs =
CurrentStageArcManager::sInstance->loadFromRoomArc(dScGame_c::currentSpawnInfo.room, "dat/room.bzs");
parseBzsStageRoom(roomId, bzs);
}
if (dScGame_c::isStateLayerWithSeekerStoneHintMenu()) {
mLayoutArcCtrl2.set(sSeekerStoneLayoutArcs, ARRAY_LENGTH(sSeekerStoneLayoutArcs));
mLayoutArcCtrl2.load(dHeap::work2Heap.heap);
addActorId(fProfile::LYT_SEEKER_STONE);
}
mLayerObjCtrl.doLoad();
}
void dStageMgr_c::executeState_ReadLayerObjectRes() {
if (mLayerObjCtrl.isLoaded() && LayoutArcManager::sInstance->ensureAllEntriesLoaded() == 0) {
mStateMgr.changeState(StateID_SoundLoadSceneData);
}
}
extern "C" void fn_800C85D0(void *, EGG::Heap *heap, bool, void *jpc, void *jpn);
extern "C" void *FOR_LOADED_PARTICLES;
void dStageMgr_c::finalizeState_ReadLayerObjectRes() {
if (mDemoName.len() != 0) {
const char *name = mDemoName;
void *jpc = OarcManager::sInstance->getSubEntryData(name, "dat/jparticle.jpc");
if (jpc != nullptr) {
void *jpn = OarcManager::sInstance->getSubEntryData(name, "dat/jparticle.jpn");
fn_800C85D0(FOR_LOADED_PARTICLES, dHeap::work2Heap.heap, true, jpc, jpn);
}
}
}
static void *soundCallback(void *arg) {
fn_80362730(ENEMY_SOUND_MGR);
return reinterpret_cast<void *>(true);
}
void dStageMgr_c::initializeState_SoundLoadSceneData() {
fn_803624F0(ENEMY_SOUND_MGR);
mpDvdCallback = mDvd_callback_c::createOrDie(soundCallback, nullptr);
}
void dStageMgr_c::executeState_SoundLoadSceneData() {
if (mpDvdCallback != nullptr && mpDvdCallback->mStatus != 0) {
mStateMgr.changeState(StateID_CreateObject);
}
}
void dStageMgr_c::finalizeState_SoundLoadSceneData() {
mpDvdCallback->do_delete();
mpDvdCallback = nullptr;
}
void dStageMgr_c::initializeState_CreateObject() {
// too much egg
}
void dStageMgr_c::executeState_CreateObject() {
if (!checkChildProcessCreateState()) {
mStateMgr.changeState(StateID_ReadObjectSound);
}
}
void dStageMgr_c::finalizeState_CreateObject() {}
static void *soundCallback2(void *arg) {
fn_80365D20(ENEMY_SOUND_MGR);
return reinterpret_cast<void *>(true);
}
void dStageMgr_c::initializeState_ReadObjectSound() {
mpDvdCallback2 = mDvd_callback_c::createOrDie(soundCallback2, nullptr);
}
void dStageMgr_c::executeState_ReadObjectSound() {
if (mpDvdCallback2 == nullptr) {
return;
}
if (mpDvdCallback2->mStatus == 0) {
return;
}
if (dScGame_c::sInstance != nullptr) {
if (dScGame_c::sInstance->savePromptFlag() == true) {
mStateMgr.changeState(StateID_SceneChangeSave);
} else {
mStateMgr.changeState(StateID_RestartSceneWait);
}
return;
}
mStateMgr.changeState(StateID_RestartSceneWait);
}
void dStageMgr_c::finalizeState_ReadObjectSound() {
mpDvdCallback2->do_delete();
// mpDvdCallback2 = nullptr;
clearProcControlFlag(ROOT_DISABLE_EXECUTE);
clearProcControlFlag(ROOT_DISABLE_DRAW);
dLast_c::setExecuteCallback(lastExecuteCallback);
}
extern "C" void *LYT_SAVE_MGR;
extern "C" void fn_80285600(void*, int, int);
void dStageMgr_c::initializeState_SceneChangeSave() {
dScGame_c::sInstance->setSavePromptFlag(false);
if (LYT_SAVE_MGR != nullptr) {
fn_80285600(LYT_SAVE_MGR, 3, 0);
}
dBase_c::s_NextExecuteControlFlags |= 1;
dSys::setFrameRate(2);
}
void dStageMgr_c::executeState_SceneChangeSave() {
if (LYT_SAVE_MGR != nullptr) {
// "isNotSaving???"
if (((u8*)LYT_SAVE_MGR)[0x119C] == true) {
mStateMgr.changeState(StateID_RestartSceneWait);
}
} else {
mStateMgr.changeState(StateID_RestartSceneWait);
}
}
void dStageMgr_c::finalizeState_SceneChangeSave() {
dBase_c::s_NextExecuteControlFlags &= ~1;
dBase_c::s_DrawControlFlags &= ~1;
}
void dStageMgr_c::initializeState_RestartSceneWait() {
dSys::setFrameRate(2);
}
void dStageMgr_c::executeState_RestartSceneWait() {
if (mFader.isSettled()) {
if (mFader.isStatus(mFaderBase_c::FADED_IN)) {
if (field_0x88BC) {
mStateMgr.changeState(StateID_RestartScene);
}
} else {
mFader.fadeIn();
}
// TODO
mFader.calc();
}
}
void dStageMgr_c::finalizeState_RestartSceneWait() {}
void dStageMgr_c::initializeState_RestartScene() {
triggerFade(dScGame_c::nextSpawnInfo.transitionType, dScGame_c::nextSpawnInfo.transitionFadeFrames);
mFader.setFadeInType(dScGame_c::nextSpawnInfo.transitionType);
fn_803625F0(ENEMY_SOUND_MGR, mFader.getFadeOutFrame());
}
void dStageMgr_c::executeState_RestartScene() {
if (mFader.isStatus(mFaderBase_c::FADED_OUT)) {
}
}
void dStageMgr_c::finalizeState_RestartScene() {
commitAllFlagManagers();
dSys::setFrameRate(1);
}
+1 -1
View File
@@ -2,11 +2,11 @@
#include "common.h"
#include "d/d_sc_game.h"
#include "d/d_sc_title.h"
#include "d/d_stage_mgr.h"
#include "d/lyt/d_lyt_area_caption.h"
#include "d/lyt/d_lyt_meter_configuration.h"
#include "d/lyt/d_window.h"
#include "d/lyt/meter/d_lyt_meter.h"
#include "toBeSorted/stage_manager.h"
#include "toBeSorted/arc_managers/layout_arc_manager.h"
// clang-format on