diff --git a/config/SOUE01/splits.txt b/config/SOUE01/splits.txt index 27ad9e06..3b37935b 100644 --- a/config/SOUE01/splits.txt +++ b/config/SOUE01/splits.txt @@ -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 diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt index e2b45c5b..cf2428cb 100644 --- a/config/SOUE01/symbols.txt +++ b/config/SOUE01/symbols.txt @@ -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 diff --git a/configure.py b/configure.py index be60b1f5..fe71ad1b 100644 --- a/configure.py +++ b/configure.py @@ -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"), diff --git a/include/d/col/cc/d_cc_mass_s.h b/include/d/col/cc/d_cc_mass_s.h index d6c7db55..056ec3cf 100644 --- a/include/d/col/cc/d_cc_mass_s.h +++ b/include/d/col/cc/d_cc_mass_s.h @@ -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 diff --git a/include/d/col/cc/d_cc_s.h b/include/d/col/cc/d_cc_s.h index 7b9096a7..06b24d0b 100644 --- a/include/d/col/cc/d_cc_s.h +++ b/include/d/col/cc/d_cc_s.h @@ -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 diff --git a/include/d/d_last.h b/include/d/d_last.h new file mode 100644 index 00000000..a4cf0fb4 --- /dev/null +++ b/include/d/d_last.h @@ -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 diff --git a/include/d/d_sc_game.h b/include/d/d_sc_game.h index 1a948eb9..67099a2d 100644 --- a/include/d/d_sc_game.h +++ b/include/d/d_sc_game.h @@ -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; }; diff --git a/include/d/d_stage_mgr.h b/include/d/d_stage_mgr.h new file mode 100644 index 00000000..7ae15250 --- /dev/null +++ b/include/d/d_stage_mgr.h @@ -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::phaseCallback sCallbacks[]; + + /* 0x0068 */ mHeapAllocator_c mAlloc; + /* 0x0084 */ sFPhase 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 diff --git a/include/d/d_stage_parse.h b/include/d/d_stage_parse.h new file mode 100644 index 00000000..00143224 --- /dev/null +++ b/include/d/d_stage_parse.h @@ -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 diff --git a/include/m/m_fader.h b/include/m/m_fader.h index 1d61c0ef..2d8c1189 100644 --- a/include/m/m_fader.h +++ b/include/m/m_fader.h @@ -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(); } diff --git a/include/sized_string.h b/include/sized_string.h index c1aac98b..64b01a5a 100644 --- a/include/sized_string.h +++ b/include/sized_string.h @@ -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 diff --git a/include/toBeSorted/arc_managers/current_stage_arc_manager.h b/include/toBeSorted/arc_managers/current_stage_arc_manager.h index ee25ec14..11c8951c 100644 --- a/include/toBeSorted/arc_managers/current_stage_arc_manager.h +++ b/include/toBeSorted/arc_managers/current_stage_arc_manager.h @@ -32,6 +32,10 @@ public: EGG::ExpHeap *getHeap(s32 roomid); + inline int ensureAllEntriesLoaded() { + return mArcTable.ensureAllEntriesLoaded(); + } + private: SizedString<32> mStageName; SizedString<32> mCurrentLoadingStageArcName; diff --git a/include/toBeSorted/arc_managers/oarc_manager.h b/include/toBeSorted/arc_managers/oarc_manager.h index 319f44e9..5634b080 100644 --- a/include/toBeSorted/arc_managers/oarc_manager.h +++ b/include/toBeSorted/arc_managers/oarc_manager.h @@ -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 diff --git a/include/toBeSorted/music_mgrs.h b/include/toBeSorted/music_mgrs.h index 620d125a..0702156c 100644 --- a/include/toBeSorted/music_mgrs.h +++ b/include/toBeSorted/music_mgrs.h @@ -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); diff --git a/include/toBeSorted/stage_manager.h b/include/toBeSorted/stage_manager.h deleted file mode 100644 index c5cf9984..00000000 --- a/include/toBeSorted/stage_manager.h +++ /dev/null @@ -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 diff --git a/src/d/col/cc/d_cc_s.cpp b/src/d/col/cc/d_cc_s.cpp index 01f1d9e2..120ee9f0 100644 --- a/src/d/col/cc/d_cc_s.cpp +++ b/src/d/col/cc/d_cc_s.cpp @@ -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; diff --git a/src/d/d_room.cpp b/src/d/d_room.cpp index 8d486c1a..7b466eab 100644 --- a/src/d/d_room.cpp +++ b/src/d/d_room.cpp @@ -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" diff --git a/src/d/d_sc_game.cpp b/src/d/d_sc_game.cpp index ce809c76..c0948c6e 100644 --- a/src/d/d_sc_game.cpp +++ b/src/d/d_sc_game.cpp @@ -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 diff --git a/src/d/d_stage_mgr.cpp b/src/d/d_stage_mgr.cpp new file mode 100644 index 00000000..26dd73d9 --- /dev/null +++ b/src/d/d_stage_mgr.cpp @@ -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 + +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(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(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); +} diff --git a/src/d/lyt/meter/d_lyt_meter.cpp b/src/d/lyt/meter/d_lyt_meter.cpp index 302892bd..2f6bcfbc 100644 --- a/src/d/lyt/meter/d_lyt_meter.cpp +++ b/src/d/lyt/meter/d_lyt_meter.cpp @@ -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