From 88075f00a9a1e021f3eb0e9b88e86a8396ceac17 Mon Sep 17 00:00:00 2001 From: robojumper Date: Sun, 23 Nov 2025 15:59:09 +0100 Subject: [PATCH] d_lyt_control_game OK --- config/SOUE01/splits.txt | 4 +- config/SOUE01/symbols.txt | 769 ++++++++++++---------- configure.py | 2 +- include/d/a/d_a_item.h | 9 + include/d/a/d_a_itembase.h | 4 + include/d/d_cs_game.h | 5 +- include/d/d_message.h | 16 +- include/d/flag/storyflag_map.h | 14 +- include/d/lyt/d_lyt_control_game.h | 75 ++- include/d/lyt/d_lyt_draw_mark.h | 48 ++ include/d/lyt/d_lyt_help.h | 20 +- include/d/lyt/d_lyt_map.h | 54 +- include/d/lyt/d_lyt_map_global.h | 10 +- include/d/lyt/d_lyt_pause.h | 6 +- include/d/lyt/meter/d_lyt_meter.h | 25 + include/d/snd/d_snd_source_mgr.h | 2 + include/toBeSorted/d_beacon.h | 2 + include/toBeSorted/event_manager.h | 1 + include/toBeSorted/raii_ptr.h | 7 + src/d/d_message.cpp | 21 +- src/d/lyt/d_lyt_control_game.cpp | 696 +++++++++++++++++++- src/d/lyt/d_lyt_help.cpp | 12 +- src/d/lyt/d_lyt_map_markers.cpp | 2 +- src/d/lyt/d_lyt_pause.cpp | 4 +- src/d/lyt/meter/d_lyt_meter.cpp | 2 +- src/d/lyt/meter/d_lyt_meter_cross_btn.cpp | 5 +- src/d/lyt/msg_window/d_lyt_msg_window.cpp | 2 +- 27 files changed, 1417 insertions(+), 400 deletions(-) create mode 100644 include/d/lyt/d_lyt_draw_mark.h diff --git a/config/SOUE01/splits.txt b/config/SOUE01/splits.txt index 92bd8260..b655c968 100644 --- a/config/SOUE01/splits.txt +++ b/config/SOUE01/splits.txt @@ -1712,8 +1712,10 @@ d/lyt/d_lyt_control_game.cpp: .text start:0x802CC7B0 end:0x802D16A8 align:16 .ctors start:0x804DB8A0 end:0x804DB8A4 .data start:0x805403F8 end:0x80540C88 + .sdata start:0x80573EF0 end:0x80573F28 .sbss start:0x80575A00 end:0x80575A18 - .bss start:0x805B7DD0 end:0x805B8040 + .sdata2 start:0x8057CA68 end:0x8057CAA0 + .bss start:0x805B7DD0 end:0x805B8030 d/lyt/d_lyt_control_title.cpp: .text start:0x802D16B0 end:0x802D17BC align:16 diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt index 497938d6..587eb1c6 100644 --- a/config/SOUE01/symbols.txt +++ b/config/SOUE01/symbols.txt @@ -3565,7 +3565,7 @@ copyQueuedEventToCurrentAndHandleSkipEvent = .text:0x8009EB30; // type:function fn_8009EEA0 = .text:0x8009EEA0; // type:function size:0x53C alsoSetAsCurrentEvent__12EventManagerFP9dAcBase_cP5EventPv = .text:0x8009F3E0; // type:function size:0x470 fn_8009F850 = .text:0x8009F850; // type:function size:0x134 -fn_8009F990 = .text:0x8009F990; // type:function size:0x80 +fn_8009F990__12EventManagerFv = .text:0x8009F990; // type:function size:0x80 fn_8009FA10 = .text:0x8009FA10; // type:function size:0x8 attachSkipEvent = .text:0x8009FA20; // type:function size:0x1A0 setAsEvent = .text:0x8009FBC0; // type:function size:0x120 @@ -3788,12 +3788,12 @@ remove__Q23d2d9AnmGroupsFv = .text:0x800ACA30; // type:function size:0x64 draw__Q23d2d9LytBase_cFv = .text:0x800ACAA0; // type:function size:0x18 scope:weak fn_800ACAC0 = .text:0x800ACAC0; // type:function size:0x5C fn_800ACB20 = .text:0x800ACB20; // type:function size:0x40 -fn_800ACB60 = .text:0x800ACB60; // type:function size:0x208 -fn_800ACD70 = .text:0x800ACD70; // type:function size:0x10 -fn_800ACD80 = .text:0x800ACD80; // type:function size:0x3C -fn_800ACDC0 = .text:0x800ACDC0; // type:function size:0xBC -fn_800ACE80 = .text:0x800ACE80; // type:function size:0x10 -fn_800ACE90 = .text:0x800ACE90; // type:function size:0x28 +build__14dLytDrawMark_cFi = .text:0x800ACB60; // type:function size:0x208 +changeState__83sStateMgr_c<14dLytDrawMark_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x800ACD70; // type:function size:0x10 +remove__14dLytDrawMark_cFv = .text:0x800ACD80; // type:function size:0x3C +execute__14dLytDrawMark_cFv = .text:0x800ACDC0; // type:function size:0xBC +executeState__83sStateMgr_c<14dLytDrawMark_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x800ACE80; // type:function size:0x10 +draw__14dLytDrawMark_cFv = .text:0x800ACE90; // type:function size:0x28 fn_800ACEC0 = .text:0x800ACEC0; // type:function size:0x4 fn_800ACED0 = .text:0x800ACED0; // type:function size:0x4 fn_800ACEE0 = .text:0x800ACEE0; // type:function size:0x4 @@ -7059,7 +7059,7 @@ convertScreenPosToDpdPos__15SelectBtnHelperCFP7mVec2_cP7mVec2_c = .text:0x8011E0 fn_8011E110__15SelectBtnHelperCF7mVec2_c = .text:0x8011E110; // type:function size:0x38 initializeState_Wait__29dLytMsgWindowSelectBtnParts_cFv = .text:0x8011E150; // type:function size:0x4 executeState_Wait__29dLytMsgWindowSelectBtnParts_cFv = .text:0x8011E160; // type:function size:0xA4 -changeState__98sStateMgr_c<29dLytMsgWindowSelectBtnParts_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x8011E210; // type:function size:0x10 +changeState__98sStateMgr_c<29dLytMsgWindowSelectBtnParts_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x8011E210; // type:function size:0x10 scope:weak finalizeState_Wait__29dLytMsgWindowSelectBtnParts_cFv = .text:0x8011E220; // type:function size:0x4 initializeState_On__29dLytMsgWindowSelectBtnParts_cFv = .text:0x8011E230; // type:function size:0x4 executeState_On__29dLytMsgWindowSelectBtnParts_cFv = .text:0x8011E240; // type:function size:0xF4 @@ -7072,9 +7072,9 @@ executeState_Off__29dLytMsgWindowSelectBtnParts_cFv = .text:0x8011E430; // type: finalizeState_Off__29dLytMsgWindowSelectBtnParts_cFv = .text:0x8011E500; // type:function size:0x4 init__29dLytMsgWindowSelectBtnParts_cFv = .text:0x8011E510; // type:function size:0x54 execute__29dLytMsgWindowSelectBtnParts_cFv = .text:0x8011E570; // type:function size:0x4C -executeState__98sStateMgr_c<29dLytMsgWindowSelectBtnParts_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8011E5C0; // type:function size:0x10 +executeState__98sStateMgr_c<29dLytMsgWindowSelectBtnParts_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8011E5C0; // type:function size:0x10 scope:weak requestIn__24dLytMsgWindowSelectBtn_cFlb = .text:0x8011E5D0; // type:function size:0x138 -changeState__93sStateMgr_c<24dLytMsgWindowSelectBtn_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x8011E710; // type:function size:0x10 +changeState__93sStateMgr_c<24dLytMsgWindowSelectBtn_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x8011E710; // type:function size:0x10 scope:weak initializeState_Wait__24dLytMsgWindowSelectBtn_cFv = .text:0x8011E720; // type:function size:0x2C executeState_Wait__24dLytMsgWindowSelectBtn_cFv = .text:0x8011E750; // type:function size:0x4 finalizeState_Wait__24dLytMsgWindowSelectBtn_cFv = .text:0x8011E760; // type:function size:0x4 @@ -7099,23 +7099,23 @@ finalizeState_Out__24dLytMsgWindowSelectBtn_cFv = .text:0x8011F520; // type:func build__24dLytMsgWindowSelectBtn_cFPQ23d2d10ResAccIf_c = .text:0x8011F530; // type:function size:0x3E4 remove__24dLytMsgWindowSelectBtn_cFv = .text:0x8011F920; // type:function size:0x84 execute__24dLytMsgWindowSelectBtn_cFv = .text:0x8011F9B0; // type:function size:0x444 -executeState__93sStateMgr_c<24dLytMsgWindowSelectBtn_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8011FE00; // type:function size:0x10 +executeState__93sStateMgr_c<24dLytMsgWindowSelectBtn_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8011FE00; // type:function size:0x10 scope:weak draw__24dLytMsgWindowSelectBtn_cFv = .text:0x8011FE10; // type:function size:0x34 getSelectBtnMode__24dLytMsgWindowSelectBtn_cFv = .text:0x8011FE50; // type:function size:0x24 -getName__24dLytMsgWindowSelectBtn_cCFv = .text:0x8011FE80; // type:function size:0x8 -getLyt__24dLytMsgWindowSelectBtn_cFv = .text:0x8011FE90; // type:function size:0x8 -getPane__24dLytMsgWindowSelectBtn_cFv = .text:0x8011FEA0; // type:function size:0x8 -finalizeState__44sFStateID_c<29dLytMsgWindowSelectBtnParts_c>CFR29dLytMsgWindowSelectBtnParts_c = .text:0x8011FEB0; // type:function size:0x30 -executeState__44sFStateID_c<29dLytMsgWindowSelectBtnParts_c>CFR29dLytMsgWindowSelectBtnParts_c = .text:0x8011FEE0; // type:function size:0x30 -initializeState__44sFStateID_c<29dLytMsgWindowSelectBtnParts_c>CFR29dLytMsgWindowSelectBtnParts_c = .text:0x8011FF10; // type:function size:0x30 -finalizeState__39sFStateID_c<24dLytMsgWindowSelectBtn_c>CFR24dLytMsgWindowSelectBtn_c = .text:0x8011FF40; // type:function size:0x30 -executeState__39sFStateID_c<24dLytMsgWindowSelectBtn_c>CFR24dLytMsgWindowSelectBtn_c = .text:0x8011FF70; // type:function size:0x30 -initializeState__39sFStateID_c<24dLytMsgWindowSelectBtn_c>CFR24dLytMsgWindowSelectBtn_c = .text:0x8011FFA0; // type:function size:0x30 -__sinit_\d_lyt_msg_window_select_btn_cpp = .text:0x8011FFD0; // type:function size:0x868 -__dt__44sFStateID_c<29dLytMsgWindowSelectBtnParts_c>Fv = .text:0x80120840; // type:function size:0x58 -__dt__39sFStateID_c<24dLytMsgWindowSelectBtn_c>Fv = .text:0x801208A0; // type:function size:0x58 -isSameName__39sFStateID_c<24dLytMsgWindowSelectBtn_c>CFPCc = .text:0x80120900; // type:function size:0x88 -isSameName__44sFStateID_c<29dLytMsgWindowSelectBtnParts_c>CFPCc = .text:0x80120990; // type:function size:0x88 +getName__24dLytMsgWindowSelectBtn_cCFv = .text:0x8011FE80; // type:function size:0x8 scope:weak +getLyt__24dLytMsgWindowSelectBtn_cFv = .text:0x8011FE90; // type:function size:0x8 scope:weak +getPane__24dLytMsgWindowSelectBtn_cFv = .text:0x8011FEA0; // type:function size:0x8 scope:weak +finalizeState__44sFStateID_c<29dLytMsgWindowSelectBtnParts_c>CFR29dLytMsgWindowSelectBtnParts_c = .text:0x8011FEB0; // type:function size:0x30 scope:weak +executeState__44sFStateID_c<29dLytMsgWindowSelectBtnParts_c>CFR29dLytMsgWindowSelectBtnParts_c = .text:0x8011FEE0; // type:function size:0x30 scope:weak +initializeState__44sFStateID_c<29dLytMsgWindowSelectBtnParts_c>CFR29dLytMsgWindowSelectBtnParts_c = .text:0x8011FF10; // type:function size:0x30 scope:weak +finalizeState__39sFStateID_c<24dLytMsgWindowSelectBtn_c>CFR24dLytMsgWindowSelectBtn_c = .text:0x8011FF40; // type:function size:0x30 scope:weak +executeState__39sFStateID_c<24dLytMsgWindowSelectBtn_c>CFR24dLytMsgWindowSelectBtn_c = .text:0x8011FF70; // type:function size:0x30 scope:weak +initializeState__39sFStateID_c<24dLytMsgWindowSelectBtn_c>CFR24dLytMsgWindowSelectBtn_c = .text:0x8011FFA0; // type:function size:0x30 scope:weak +__sinit_\d_lyt_msg_window_select_btn_cpp = .text:0x8011FFD0; // type:function size:0x868 scope:local +__dt__44sFStateID_c<29dLytMsgWindowSelectBtnParts_c>Fv = .text:0x80120840; // type:function size:0x58 scope:weak +__dt__39sFStateID_c<24dLytMsgWindowSelectBtn_c>Fv = .text:0x801208A0; // type:function size:0x58 scope:weak +isSameName__39sFStateID_c<24dLytMsgWindowSelectBtn_c>CFPCc = .text:0x80120900; // type:function size:0x88 scope:weak +isSameName__44sFStateID_c<29dLytMsgWindowSelectBtnParts_c>CFPCc = .text:0x80120990; // type:function size:0x88 scope:weak build__20dLytMsgWindowSubtypeFPQ23d2d10ResAccIf_cPQ23d2d10ResAccIf_cP15dTagProcessor_c = .text:0x80120A20; // type:function size:0x8 remove__20dLytMsgWindowSubtypeFv = .text:0x80120A30; // type:function size:0x8 execute__20dLytMsgWindowSubtypeFv = .text:0x80120A40; // type:function size:0x8 @@ -10103,7 +10103,7 @@ fn_8018B3A0 = .text:0x8018B3A0; // type:function size:0x80 shouldDropItemForChance = .text:0x8018B420; // type:function size:0x84 getMaxBeaconCount__Fv = .text:0x8018B4B0; // type:function size:0x44 doesStageForbidBeaconPlacement__Fv = .text:0x8018B500; // type:function size:0x40 -getBeaconPositionByIndex = .text:0x8018B540; // type:function size:0x60 +getBeaconPosition__FUl = .text:0x8018B540; // type:function size:0x60 setBeaconPosition__FPC7mVec3_cUl = .text:0x8018B5A0; // type:function size:0x7C setBeaconPositionChecked__FPC7mVec3_cUl = .text:0x8018B620; // type:function size:0x194 fn_8018B7C0 = .text:0x8018B7C0; // type:function size:0x40 @@ -16763,158 +16763,158 @@ fn_802CC270 = .text:0x802CC270; // type:function size:0x448 fn_802CC6C0 = .text:0x802CC6C0; // type:function size:0x8 CreateJStudioysObj = .text:0x802CC6D0; // type:function size:0x7C fn_802CC750 = .text:0x802CC750; // type:function size:0x58 -fn_802CC7B0 = .text:0x802CC7B0; // type:function size:0x38 -fn_802CC7F0 = .text:0x802CC7F0; // type:function size:0x40 +__ct__21dLytControlGame_HIO_cFv = .text:0x802CC7B0; // type:function size:0x38 +__dt__21dLytControlGame_HIO_cFv = .text:0x802CC7F0; // type:function size:0x40 dLytControlGame_c_classInit__Fv = .text:0x802CC830; // type:function size:0x34 -fn_802CC870 = .text:0x802CC870; // type:function size:0x4 -fn_802CC880 = .text:0x802CC880; // type:function size:0x4 -fn_802CC890 = .text:0x802CC890; // type:function size:0x4 -fn_802CC8A0 = .text:0x802CC8A0; // type:function size:0x58 -fn_802CC900 = .text:0x802CC900; // type:function size:0x54 -changeState__86sStateMgr_c<17dLytControlGame_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x802CC960; // type:function size:0x10 -fn_802CC970 = .text:0x802CC970; // type:function size:0x4 -fn_802CC980 = .text:0x802CC980; // type:function size:0x4 -fn_802CC990 = .text:0x802CC990; // type:function size:0x68 -fn_802CCA00 = .text:0x802CCA00; // type:function size:0x4 -LytControlGame__statePauseEnter = .text:0x802CCA10; // type:function size:0x74 -LytControlGame__statePauseUpdate = .text:0x802CCA90; // type:function size:0x34 -LytControlGame__statePauseLeave = .text:0x802CCAD0; // type:function size:0x4 -LytControlGame__statePauseDelResEnter = .text:0x802CCAE0; // type:function size:0x4 -LytControlGame__statePauseDelResUpdate = .text:0x802CCAF0; // type:function size:0x70 -LytControlGame__statePauseDelResLeave = .text:0x802CCB60; // type:function size:0x14 -LytControlGame__stateMapSetResEnter = .text:0x802CCB80; // type:function size:0x58 -LytControlGame__stateMapSetResUpdate = .text:0x802CCBE0; // type:function size:0x8C -LytControlGame__stateMapSetResLeave = .text:0x802CCC70; // type:function size:0x4 -LytControlGame__stateMapSyncResEnter = .text:0x802CCC80; // type:function size:0x4 -LytControlGame__stateMapSetResUpdate2 = .text:0x802CCC90; // type:function size:0x9C -LytControlGame__stateMapSyncResLeave = .text:0x802CCD30; // type:function size:0x4 -fn_802CCD40__17dLytControlGame_cFb = .text:0x802CCD40; // type:function size:0x10 -LytControlGame__stateMapEnter = .text:0x802CCD50; // type:function size:0x110 -LytControlGame__stateMapUpdate = .text:0x802CCE60; // type:function size:0x138 -LytControlGame__stateMapLeave = .text:0x802CCFA0; // type:function size:0x4 -LytControlGame__stateMapDelResEnter = .text:0x802CCFB0; // type:function size:0x4 -LytControlGame__stateMapDelResUpdate = .text:0x802CCFC0; // type:function size:0x158 -fn_802CD120 = .text:0x802CD120; // type:function size:0xD8 -LytControlGame__stateMapDelResLeave = .text:0x802CD200; // type:function size:0x30 +initializeState_Normal__17dLytControlGame_cFv = .text:0x802CC870; // type:function size:0x4 +executeState_Normal__17dLytControlGame_cFv = .text:0x802CC880; // type:function size:0x4 +finalizeState_Normal__17dLytControlGame_cFv = .text:0x802CC890; // type:function size:0x4 +initializeState_Pause_SetRes__17dLytControlGame_cFv = .text:0x802CC8A0; // type:function size:0x58 +executeState_Pause_SetRes__17dLytControlGame_cFv = .text:0x802CC900; // type:function size:0x54 +changeState__86sStateMgr_c<17dLytControlGame_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x802CC960; // type:function size:0x10 scope:weak +finalizeState_Pause_SetRes__17dLytControlGame_cFv = .text:0x802CC970; // type:function size:0x4 +initializeState_Pause_SyncRes__17dLytControlGame_cFv = .text:0x802CC980; // type:function size:0x4 +executeState_Pause_SyncRes__17dLytControlGame_cFv = .text:0x802CC990; // type:function size:0x68 +finalizeState_Pause_SyncRes__17dLytControlGame_cFv = .text:0x802CCA00; // type:function size:0x4 +initializeState_Pause__17dLytControlGame_cFv = .text:0x802CCA10; // type:function size:0x74 +executeState_Pause__17dLytControlGame_cFv = .text:0x802CCA90; // type:function size:0x34 +finalizeState_Pause__17dLytControlGame_cFv = .text:0x802CCAD0; // type:function size:0x4 +initializeState_Pause_DelRes__17dLytControlGame_cFv = .text:0x802CCAE0; // type:function size:0x4 +executeState_Pause_DelRes__17dLytControlGame_cFv = .text:0x802CCAF0; // type:function size:0x70 +finalizeState_Pause_DelRes__17dLytControlGame_cFv = .text:0x802CCB60; // type:function size:0x14 +initializeState_Map_SetRes__17dLytControlGame_cFv = .text:0x802CCB80; // type:function size:0x58 +executeState_Map_SetRes__17dLytControlGame_cFv = .text:0x802CCBE0; // type:function size:0x8C +finalizeState_Map_SetRes__17dLytControlGame_cFv = .text:0x802CCC70; // type:function size:0x4 +initializeState_Map_SyncRes__17dLytControlGame_cFv = .text:0x802CCC80; // type:function size:0x4 +executeState_Map_SyncRes__17dLytControlGame_cFv = .text:0x802CCC90; // type:function size:0x9C +finalizeState_Map_SyncRes__17dLytControlGame_cFv = .text:0x802CCD30; // type:function size:0x4 +setMapEventDone__17dLytControlGame_cFb = .text:0x802CCD40; // type:function size:0x10 +initializeState_Map__17dLytControlGame_cFv = .text:0x802CCD50; // type:function size:0x110 +executeState_Map__17dLytControlGame_cFv = .text:0x802CCE60; // type:function size:0x138 +finalizeState_Map__17dLytControlGame_cFv = .text:0x802CCFA0; // type:function size:0x4 +initializeState_Map_DelRes__17dLytControlGame_cFv = .text:0x802CCFB0; // type:function size:0x4 +executeState_Map_DelRes__17dLytControlGame_cFv = .text:0x802CCFC0; // type:function size:0x158 +__dt__9dLytMap_cFv = .text:0x802CD120; // type:function size:0xD8 scope:weak +finalizeState_Map_DelRes__17dLytControlGame_cFv = .text:0x802CD200; // type:function size:0x30 __ct__17dLytControlGame_cFv = .text:0x802CD230; // type:function size:0x3F0 -__dt__28sFState_c<15dLytMsgWindow_c>Fv = .text:0x802CD620; // type:function size:0x58 -__dt__31sFStateFct_c<15dLytMsgWindow_c>Fv = .text:0x802CD680; // type:function size:0x6C -__dt__84sStateMgr_c<15dLytMsgWindow_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802CD6F0; // type:function size:0xA0 -__dt__54sFStateMgr_c<15dLytMsgWindow_c,20sStateMethodUsr_FI_c>Fv = .text:0x802CD790; // type:function size:0xA4 -__dt__15dLytMsgWindow_cFv = .text:0x802CD840; // type:function size:0x1BC -__dt__23sFState_c<10dLytWipe_c>Fv = .text:0x802CDA00; // type:function size:0x58 -__dt__26sFStateFct_c<10dLytWipe_c>Fv = .text:0x802CDA60; // type:function size:0x6C -__dt__79sStateMgr_c<10dLytWipe_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802CDAD0; // type:function size:0xA0 -__dt__49sFStateMgr_c<10dLytWipe_c,20sStateMethodUsr_FI_c>Fv = .text:0x802CDB70; // type:function size:0xA4 -__ct__18dMapFootPrintEntryFv = .text:0x802CDC20; // type:function size:0x4 -__dt__18dMapFootPrintEntryFv = .text:0x802CDC30; // type:function size:0x40 -__dt__19dMapFootPrintsMgr_cFv = .text:0x802CDC70; // type:function size:0x6C -__dt__30sFState_c<17dLytControlGame_c>Fv = .text:0x802CDCE0; // type:function size:0x58 -__dt__33sFStateFct_c<17dLytControlGame_c>Fv = .text:0x802CDD40; // type:function size:0x6C -__dt__86sStateMgr_c<17dLytControlGame_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802CDDB0; // type:function size:0xA0 -__dt__56sFStateMgr_c<17dLytControlGame_c,20sStateMethodUsr_FI_c>Fv = .text:0x802CDE50; // type:function size:0xA4 +__dt__28sFState_c<15dLytMsgWindow_c>Fv = .text:0x802CD620; // type:function size:0x58 scope:weak +__dt__31sFStateFct_c<15dLytMsgWindow_c>Fv = .text:0x802CD680; // type:function size:0x6C scope:weak +__dt__84sStateMgr_c<15dLytMsgWindow_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802CD6F0; // type:function size:0xA0 scope:weak +__dt__54sFStateMgr_c<15dLytMsgWindow_c,20sStateMethodUsr_FI_c>Fv = .text:0x802CD790; // type:function size:0xA4 scope:weak +__dt__15dLytMsgWindow_cFv = .text:0x802CD840; // type:function size:0x1BC scope:weak +__dt__23sFState_c<10dLytWipe_c>Fv = .text:0x802CDA00; // type:function size:0x58 scope:weak +__dt__26sFStateFct_c<10dLytWipe_c>Fv = .text:0x802CDA60; // type:function size:0x6C scope:weak +__dt__79sStateMgr_c<10dLytWipe_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802CDAD0; // type:function size:0xA0 scope:weak +__dt__49sFStateMgr_c<10dLytWipe_c,20sStateMethodUsr_FI_c>Fv = .text:0x802CDB70; // type:function size:0xA4 scope:weak +__ct__18dMapFootPrintEntryFv = .text:0x802CDC20; // type:function size:0x4 scope:weak +__dt__18dMapFootPrintEntryFv = .text:0x802CDC30; // type:function size:0x40 scope:weak +__dt__19dMapFootPrintsMgr_cFv = .text:0x802CDC70; // type:function size:0x6C scope:weak +__dt__30sFState_c<17dLytControlGame_c>Fv = .text:0x802CDCE0; // type:function size:0x58 scope:weak +__dt__33sFStateFct_c<17dLytControlGame_c>Fv = .text:0x802CDD40; // type:function size:0x6C scope:weak +__dt__86sStateMgr_c<17dLytControlGame_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802CDDB0; // type:function size:0xA0 scope:weak +__dt__56sFStateMgr_c<17dLytControlGame_c,20sStateMethodUsr_FI_c>Fv = .text:0x802CDE50; // type:function size:0xA4 scope:weak __dt__17dLytControlGame_cFv = .text:0x802CDF00; // type:function size:0xFDC -LytControlGame__init = .text:0x802CEEE0; // type:function size:0x218 -fn_802CF100 = .text:0x802CF100; // type:function size:0x22C -fn_802CF330 = .text:0x802CF330; // type:function size:0xA4 -fn_802CF3E0 = .text:0x802CF3E0; // type:function size:0xA0 -fn_802CF480 = .text:0x802CF480; // type:function size:0x6C -fn_802CF4F0 = .text:0x802CF4F0; // type:function size:0x58 -LytControlGame__update = .text:0x802CF550; // type:function size:0x42C -executeState__86sStateMgr_c<17dLytControlGame_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802CF980; // type:function size:0x10 -fn_802CF990 = .text:0x802CF990; // type:function size:0xA4 -checkStoryflag2 = .text:0x802CFA40; // type:function size:0x44 -fn_802CFA90 = .text:0x802CFA90; // type:function size:0x2E0 -fn_802CFD70 = .text:0x802CFD70; // type:function size:0x20 -updateHelpText = .text:0x802CFD90; // type:function size:0x1C -isStateNormalOrNotInEvent__17dLytControlGame_cCFv = .text:0x802CFDB0; // type:function size:0x74 +create__17dLytControlGame_cFv = .text:0x802CEEE0; // type:function size:0x218 +doDelete__17dLytControlGame_cFv = .text:0x802CF100; // type:function size:0x22C +__dt__53sFStateMgr_c<14dLytDrawMark_c,20sStateMethodUsr_FI_c>Fv = .text:0x802CF330; // type:function size:0xA4 scope:weak +__dt__83sStateMgr_c<14dLytDrawMark_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802CF3E0; // type:function size:0xA0 scope:weak +__dt__30sFStateFct_c<14dLytDrawMark_c>Fv = .text:0x802CF480; // type:function size:0x6C scope:weak +__dt__27sFState_c<14dLytDrawMark_c>Fv = .text:0x802CF4F0; // type:function size:0x58 scope:weak +execute__17dLytControlGame_cFv = .text:0x802CF550; // type:function size:0x42C +executeState__86sStateMgr_c<17dLytControlGame_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802CF980; // type:function size:0x10 scope:weak +draw__17dLytControlGame_cFv = .text:0x802CF990; // type:function size:0xA4 +checkStoryflag__17dLytControlGame_cCFl = .text:0x802CFA40; // type:function size:0x44 +fn_802CFA90__17dLytControlGame_cFv = .text:0x802CFA90; // type:function size:0x2E0 +hideHelp__17dLytControlGame_cFv = .text:0x802CFD70; // type:function size:0x20 +changeHelpText__17dLytControlGame_cFl = .text:0x802CFD90; // type:function size:0x1C +isStateNotNormalOrInEvent__17dLytControlGame_cCFv = .text:0x802CFDB0; // type:function size:0x74 isInSomeMapState__17dLytControlGame_cCFv = .text:0x802CFE30; // type:function size:0xD8 isNotInStateMap__17dLytControlGame_cCFv = .text:0x802CFF10; // type:function size:0x4C -fn_802CFF60 = .text:0x802CFF60; // type:function size:0x90 -fn_802CFFF0 = .text:0x802CFFF0; // type:function size:0x1C -somehowRelatedToEnteringLightPillars__17dLytControlGame_cFlll = .text:0x802D0010; // type:function size:0x254 -fn_802D0270 = .text:0x802D0270; // type:function size:0x4C -openCollectionScreenDemo__17dLytControlGame_cFv = .text:0x802D02C0; // type:function size:0xA0 -fn_802D0360 = .text:0x802D0360; // type:function size:0xA0 -fn_802D0400 = .text:0x802D0400; // type:function size:0xC -fn_802D0410 = .text:0x802D0410; // type:function size:0xD4 +fn_802CFF60__17dLytControlGame_cCFv = .text:0x802CFF60; // type:function size:0x90 +openMap__17dLytControlGame_cFv = .text:0x802CFFF0; // type:function size:0x1C +openMapEvent__17dLytControlGame_cFlll = .text:0x802D0010; // type:function size:0x254 +openPause__17dLytControlGame_cFv = .text:0x802D0270; // type:function size:0x4C +openPauseDemo__17dLytControlGame_cFv = .text:0x802D02C0; // type:function size:0xA0 +openHelp__17dLytControlGame_cFl = .text:0x802D0360; // type:function size:0xA0 +releaseRes__17dLytControlGame_cFv = .text:0x802D0400; // type:function size:0xC +decrementRes__17dLytControlGame_cFv = .text:0x802D0410; // type:function size:0xD4 fn_802D04F0__17dLytControlGame_cFv = .text:0x802D04F0; // type:function size:0x10 -fn_802D0500 = .text:0x802D0500; // type:function size:0x9C -fn_802D05A0 = .text:0x802D05A0; // type:function size:0x148 -fn_802D06F0 = .text:0x802D06F0; // type:function size:0xC -fn_802D0700 = .text:0x802D0700; // type:function size:0x60 -fn_802D0760 = .text:0x802D0760; // type:function size:0xC -build__33sFStateFct_c<17dLytControlGame_c>FRC12sStateIDIf_c = .text:0x802D0770; // type:function size:0x60 -dispose__33sFStateFct_c<17dLytControlGame_c>FRP10sStateIf_c = .text:0x802D07D0; // type:function size:0xC -build__26sFStateFct_c<10dLytHelp_c>FRC12sStateIDIf_c = .text:0x802D07E0; // type:function size:0x60 -dispose__26sFStateFct_c<10dLytHelp_c>FRP10sStateIf_c = .text:0x802D0840; // type:function size:0xC -build__26sFStateFct_c<10dLytWipe_c>FRC12sStateIDIf_c = .text:0x802D0850; // type:function size:0x60 -dispose__26sFStateFct_c<10dLytWipe_c>FRP10sStateIf_c = .text:0x802D08B0; // type:function size:0xC -build__34sFStateFct_c<18dLytSimpleWindow_c>FRC12sStateIDIf_c = .text:0x802D08C0; // type:function size:0x60 -dispose__34sFStateFct_c<18dLytSimpleWindow_c>FRP10sStateIf_c = .text:0x802D0920; // type:function size:0xC -build__31sFStateFct_c<15dLytMsgWindow_c>FRC12sStateIDIf_c = .text:0x802D0930; // type:function size:0x60 -dispose__31sFStateFct_c<15dLytMsgWindow_c>FRP10sStateIf_c = .text:0x802D0990; // type:function size:0xC -fn_802D09A0 = .text:0x802D09A0; // type:function size:0x1C -fn_802D09C0 = .text:0x802D09C0; // type:function size:0x1C -fn_802D09E0 = .text:0x802D09E0; // type:function size:0x1C -initialize__30sFState_c<17dLytControlGame_c>Fv = .text:0x802D0A00; // type:function size:0x1C -execute__30sFState_c<17dLytControlGame_c>Fv = .text:0x802D0A20; // type:function size:0x1C -finalize__30sFState_c<17dLytControlGame_c>Fv = .text:0x802D0A40; // type:function size:0x1C -initialize__23sFState_c<10dLytHelp_c>Fv = .text:0x802D0A60; // type:function size:0x1C -execute__23sFState_c<10dLytHelp_c>Fv = .text:0x802D0A80; // type:function size:0x1C -finalize__23sFState_c<10dLytHelp_c>Fv = .text:0x802D0AA0; // type:function size:0x1C -initialize__23sFState_c<10dLytWipe_c>Fv = .text:0x802D0AC0; // type:function size:0x1C -execute__23sFState_c<10dLytWipe_c>Fv = .text:0x802D0AE0; // type:function size:0x1C -finalize__23sFState_c<10dLytWipe_c>Fv = .text:0x802D0B00; // type:function size:0x1C -initialize__31sFState_c<18dLytSimpleWindow_c>Fv = .text:0x802D0B20; // type:function size:0x1C -execute__31sFState_c<18dLytSimpleWindow_c>Fv = .text:0x802D0B40; // type:function size:0x1C -finalize__31sFState_c<18dLytSimpleWindow_c>Fv = .text:0x802D0B60; // type:function size:0x1C -initialize__28sFState_c<15dLytMsgWindow_c>Fv = .text:0x802D0B80; // type:function size:0x1C -execute__28sFState_c<15dLytMsgWindow_c>Fv = .text:0x802D0BA0; // type:function size:0x1C -finalize__28sFState_c<15dLytMsgWindow_c>Fv = .text:0x802D0BC0; // type:function size:0x1C -fn_802D0BE0 = .text:0x802D0BE0; // type:function size:0x10 -fn_802D0BF0 = .text:0x802D0BF0; // type:function size:0x10 -fn_802D0C00 = .text:0x802D0C00; // type:function size:0x10 -fn_802D0C10 = .text:0x802D0C10; // type:function size:0x10 -fn_802D0C20 = .text:0x802D0C20; // type:function size:0x10 -fn_802D0C30 = .text:0x802D0C30; // type:function size:0x10 -fn_802D0C40 = .text:0x802D0C40; // type:function size:0x10 -initializeState__86sStateMgr_c<17dLytControlGame_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802D0C50; // type:function size:0x10 -finalizeState__86sStateMgr_c<17dLytControlGame_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802D0C60; // type:function size:0x10 -refreshState__86sStateMgr_c<17dLytControlGame_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802D0C70; // type:function size:0x10 -getState__86sStateMgr_c<17dLytControlGame_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802D0C80; // type:function size:0x10 -getNewStateID__86sStateMgr_c<17dLytControlGame_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802D0C90; // type:function size:0x10 -getOldStateID__86sStateMgr_c<17dLytControlGame_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802D0CA0; // type:function size:0x10 -initializeState__79sStateMgr_c<10dLytHelp_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802D0CB0; // type:function size:0x10 -finalizeState__79sStateMgr_c<10dLytHelp_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802D0CC0; // type:function size:0x10 -refreshState__79sStateMgr_c<10dLytHelp_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802D0CD0; // type:function size:0x10 -getState__79sStateMgr_c<10dLytHelp_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802D0CE0; // type:function size:0x10 -getNewStateID__79sStateMgr_c<10dLytHelp_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802D0CF0; // type:function size:0x10 -getOldStateID__79sStateMgr_c<10dLytHelp_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802D0D00; // type:function size:0x10 -initializeState__79sStateMgr_c<10dLytWipe_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802D0D10; // type:function size:0x10 -finalizeState__79sStateMgr_c<10dLytWipe_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802D0D20; // type:function size:0x10 -refreshState__79sStateMgr_c<10dLytWipe_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802D0D30; // type:function size:0x10 -getState__79sStateMgr_c<10dLytWipe_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802D0D40; // type:function size:0x10 -getNewStateID__79sStateMgr_c<10dLytWipe_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802D0D50; // type:function size:0x10 -getOldStateID__79sStateMgr_c<10dLytWipe_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802D0D60; // type:function size:0x10 -initializeState__87sStateMgr_c<18dLytSimpleWindow_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802D0D70; // type:function size:0x10 -finalizeState__87sStateMgr_c<18dLytSimpleWindow_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802D0D80; // type:function size:0x10 -refreshState__87sStateMgr_c<18dLytSimpleWindow_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802D0D90; // type:function size:0x10 -getState__87sStateMgr_c<18dLytSimpleWindow_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802D0DA0; // type:function size:0x10 -getNewStateID__87sStateMgr_c<18dLytSimpleWindow_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802D0DB0; // type:function size:0x10 -getOldStateID__87sStateMgr_c<18dLytSimpleWindow_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802D0DC0; // type:function size:0x10 -initializeState__84sStateMgr_c<15dLytMsgWindow_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802D0DD0; // type:function size:0x10 -finalizeState__84sStateMgr_c<15dLytMsgWindow_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802D0DE0; // type:function size:0x10 -refreshState__84sStateMgr_c<15dLytMsgWindow_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802D0DF0; // type:function size:0x10 -getState__84sStateMgr_c<15dLytMsgWindow_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802D0E00; // type:function size:0x10 -getNewStateID__84sStateMgr_c<15dLytMsgWindow_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802D0E10; // type:function size:0x10 -getOldStateID__84sStateMgr_c<15dLytMsgWindow_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802D0E20; // type:function size:0x10 -fn_802D0E30 = .text:0x802D0E30; // type:function size:0x30 -fn_802D0E60 = .text:0x802D0E60; // type:function size:0x30 -fn_802D0E90 = .text:0x802D0E90; // type:function size:0x30 -LytControlGame__initStates = .text:0x802D0EC0; // type:function size:0x700 -LytControlGame__dtor = .text:0x802D15C0; // type:function size:0x58 -fn_802D1620 = .text:0x802D1620; // type:function size:0x88 +canOpenPause__17dLytControlGame_cFv = .text:0x802D0500; // type:function size:0x9C +checkForBeaconNextToMark__17dLytControlGame_cFv = .text:0x802D05A0; // type:function size:0x148 +resetFootsteps__17dLytControlGame_cFv = .text:0x802D06F0; // type:function size:0xC +build__30sFStateFct_c<14dLytDrawMark_c>FRC12sStateIDIf_c = .text:0x802D0700; // type:function size:0x60 scope:weak +dispose__30sFStateFct_c<14dLytDrawMark_c>FRP10sStateIf_c = .text:0x802D0760; // type:function size:0xC scope:weak +build__33sFStateFct_c<17dLytControlGame_c>FRC12sStateIDIf_c = .text:0x802D0770; // type:function size:0x60 scope:weak +dispose__33sFStateFct_c<17dLytControlGame_c>FRP10sStateIf_c = .text:0x802D07D0; // type:function size:0xC scope:weak +build__26sFStateFct_c<10dLytHelp_c>FRC12sStateIDIf_c = .text:0x802D07E0; // type:function size:0x60 scope:weak +dispose__26sFStateFct_c<10dLytHelp_c>FRP10sStateIf_c = .text:0x802D0840; // type:function size:0xC scope:weak +build__26sFStateFct_c<10dLytWipe_c>FRC12sStateIDIf_c = .text:0x802D0850; // type:function size:0x60 scope:weak +dispose__26sFStateFct_c<10dLytWipe_c>FRP10sStateIf_c = .text:0x802D08B0; // type:function size:0xC scope:weak +build__34sFStateFct_c<18dLytSimpleWindow_c>FRC12sStateIDIf_c = .text:0x802D08C0; // type:function size:0x60 scope:weak +dispose__34sFStateFct_c<18dLytSimpleWindow_c>FRP10sStateIf_c = .text:0x802D0920; // type:function size:0xC scope:weak +build__31sFStateFct_c<15dLytMsgWindow_c>FRC12sStateIDIf_c = .text:0x802D0930; // type:function size:0x60 scope:weak +dispose__31sFStateFct_c<15dLytMsgWindow_c>FRP10sStateIf_c = .text:0x802D0990; // type:function size:0xC scope:weak +initialize__27sFState_c<14dLytDrawMark_c>Fv = .text:0x802D09A0; // type:function size:0x1C scope:weak +execute__27sFState_c<14dLytDrawMark_c>Fv = .text:0x802D09C0; // type:function size:0x1C scope:weak +finalize__27sFState_c<14dLytDrawMark_c>Fv = .text:0x802D09E0; // type:function size:0x1C scope:weak +initialize__30sFState_c<17dLytControlGame_c>Fv = .text:0x802D0A00; // type:function size:0x1C scope:weak +execute__30sFState_c<17dLytControlGame_c>Fv = .text:0x802D0A20; // type:function size:0x1C scope:weak +finalize__30sFState_c<17dLytControlGame_c>Fv = .text:0x802D0A40; // type:function size:0x1C scope:weak +initialize__23sFState_c<10dLytHelp_c>Fv = .text:0x802D0A60; // type:function size:0x1C scope:weak +execute__23sFState_c<10dLytHelp_c>Fv = .text:0x802D0A80; // type:function size:0x1C scope:weak +finalize__23sFState_c<10dLytHelp_c>Fv = .text:0x802D0AA0; // type:function size:0x1C scope:weak +initialize__23sFState_c<10dLytWipe_c>Fv = .text:0x802D0AC0; // type:function size:0x1C scope:weak +execute__23sFState_c<10dLytWipe_c>Fv = .text:0x802D0AE0; // type:function size:0x1C scope:weak +finalize__23sFState_c<10dLytWipe_c>Fv = .text:0x802D0B00; // type:function size:0x1C scope:weak +initialize__31sFState_c<18dLytSimpleWindow_c>Fv = .text:0x802D0B20; // type:function size:0x1C scope:weak +execute__31sFState_c<18dLytSimpleWindow_c>Fv = .text:0x802D0B40; // type:function size:0x1C scope:weak +finalize__31sFState_c<18dLytSimpleWindow_c>Fv = .text:0x802D0B60; // type:function size:0x1C scope:weak +initialize__28sFState_c<15dLytMsgWindow_c>Fv = .text:0x802D0B80; // type:function size:0x1C scope:weak +execute__28sFState_c<15dLytMsgWindow_c>Fv = .text:0x802D0BA0; // type:function size:0x1C scope:weak +finalize__28sFState_c<15dLytMsgWindow_c>Fv = .text:0x802D0BC0; // type:function size:0x1C scope:weak +initializeState__83sStateMgr_c<14dLytDrawMark_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802D0BE0; // type:function size:0x10 scope:weak +finalizeState__83sStateMgr_c<14dLytDrawMark_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802D0BF0; // type:function size:0x10 scope:weak +refreshState__83sStateMgr_c<14dLytDrawMark_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802D0C00; // type:function size:0x10 scope:weak +getState__83sStateMgr_c<14dLytDrawMark_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802D0C10; // type:function size:0x10 scope:weak +getNewStateID__83sStateMgr_c<14dLytDrawMark_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802D0C20; // type:function size:0x10 scope:weak +getStateID__83sStateMgr_c<14dLytDrawMark_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802D0C30; // type:function size:0x10 scope:weak +getOldStateID__83sStateMgr_c<14dLytDrawMark_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802D0C40; // type:function size:0x10 scope:weak +initializeState__86sStateMgr_c<17dLytControlGame_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802D0C50; // type:function size:0x10 scope:weak +finalizeState__86sStateMgr_c<17dLytControlGame_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802D0C60; // type:function size:0x10 scope:weak +refreshState__86sStateMgr_c<17dLytControlGame_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802D0C70; // type:function size:0x10 scope:weak +getState__86sStateMgr_c<17dLytControlGame_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802D0C80; // type:function size:0x10 scope:weak +getNewStateID__86sStateMgr_c<17dLytControlGame_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802D0C90; // type:function size:0x10 scope:weak +getOldStateID__86sStateMgr_c<17dLytControlGame_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802D0CA0; // type:function size:0x10 scope:weak +initializeState__79sStateMgr_c<10dLytHelp_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802D0CB0; // type:function size:0x10 scope:weak +finalizeState__79sStateMgr_c<10dLytHelp_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802D0CC0; // type:function size:0x10 scope:weak +refreshState__79sStateMgr_c<10dLytHelp_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802D0CD0; // type:function size:0x10 scope:weak +getState__79sStateMgr_c<10dLytHelp_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802D0CE0; // type:function size:0x10 scope:weak +getNewStateID__79sStateMgr_c<10dLytHelp_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802D0CF0; // type:function size:0x10 scope:weak +getOldStateID__79sStateMgr_c<10dLytHelp_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802D0D00; // type:function size:0x10 scope:weak +initializeState__79sStateMgr_c<10dLytWipe_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802D0D10; // type:function size:0x10 scope:weak +finalizeState__79sStateMgr_c<10dLytWipe_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802D0D20; // type:function size:0x10 scope:weak +refreshState__79sStateMgr_c<10dLytWipe_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802D0D30; // type:function size:0x10 scope:weak +getState__79sStateMgr_c<10dLytWipe_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802D0D40; // type:function size:0x10 scope:weak +getNewStateID__79sStateMgr_c<10dLytWipe_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802D0D50; // type:function size:0x10 scope:weak +getOldStateID__79sStateMgr_c<10dLytWipe_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802D0D60; // type:function size:0x10 scope:weak +initializeState__87sStateMgr_c<18dLytSimpleWindow_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802D0D70; // type:function size:0x10 scope:weak +finalizeState__87sStateMgr_c<18dLytSimpleWindow_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802D0D80; // type:function size:0x10 scope:weak +refreshState__87sStateMgr_c<18dLytSimpleWindow_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802D0D90; // type:function size:0x10 scope:weak +getState__87sStateMgr_c<18dLytSimpleWindow_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802D0DA0; // type:function size:0x10 scope:weak +getNewStateID__87sStateMgr_c<18dLytSimpleWindow_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802D0DB0; // type:function size:0x10 scope:weak +getOldStateID__87sStateMgr_c<18dLytSimpleWindow_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802D0DC0; // type:function size:0x10 scope:weak +initializeState__84sStateMgr_c<15dLytMsgWindow_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802D0DD0; // type:function size:0x10 scope:weak +finalizeState__84sStateMgr_c<15dLytMsgWindow_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802D0DE0; // type:function size:0x10 scope:weak +refreshState__84sStateMgr_c<15dLytMsgWindow_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x802D0DF0; // type:function size:0x10 scope:weak +getState__84sStateMgr_c<15dLytMsgWindow_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802D0E00; // type:function size:0x10 scope:weak +getNewStateID__84sStateMgr_c<15dLytMsgWindow_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802D0E10; // type:function size:0x10 scope:weak +getOldStateID__84sStateMgr_c<15dLytMsgWindow_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x802D0E20; // type:function size:0x10 scope:weak +finalizeState__32sFStateID_c<17dLytControlGame_c>CFR17dLytControlGame_c = .text:0x802D0E30; // type:function size:0x30 scope:weak +executeState__32sFStateID_c<17dLytControlGame_c>CFR17dLytControlGame_c = .text:0x802D0E60; // type:function size:0x30 scope:weak +initializeState__32sFStateID_c<17dLytControlGame_c>CFR17dLytControlGame_c = .text:0x802D0E90; // type:function size:0x30 scope:weak +__sinit_\d_lyt_control_game_cpp = .text:0x802D0EC0; // type:function size:0x700 scope:local +__dt__32sFStateID_c<17dLytControlGame_c>Fv = .text:0x802D15C0; // type:function size:0x58 scope:weak +isSameName__32sFStateID_c<17dLytControlGame_c>CFPCc = .text:0x802D1620; // type:function size:0x88 scope:weak fn_802D16B0 = .text:0x802D16B0; // type:function size:0x30 fn_802D16E0 = .text:0x802D16E0; // type:function size:0x3C fn_802D1720 = .text:0x802D1720; // type:function size:0x8 @@ -20991,8 +20991,8 @@ fn_80385090 = .text:0x80385090; // type:function size:0x18 fn_803850B0 = .text:0x803850B0; // type:function size:0x108 fn_803851C0 = .text:0x803851C0; // type:function size:0x74 clearSourceList__15dSndSourceMgr_cFPQ34nw4r2ut4List = .text:0x80385240; // type:function size:0x64 -fn_803852B0 = .text:0x803852B0; // type:function size:0x3C -fn_803852F0 = .text:0x803852F0; // type:function size:0x3C +fn_803852B0__15dSndSourceMgr_cFv = .text:0x803852B0; // type:function size:0x3C +fn_803852F0__15dSndSourceMgr_cFv = .text:0x803852F0; // type:function size:0x3C pauseAllSound__15dSndSourceMgr_cFv = .text:0x80385330; // type:function size:0x94 fn_803853D0 = .text:0x803853D0; // type:function size:0xA0 stopAllSound__15dSndSourceMgr_cFv = .text:0x80385470; // type:function size:0x78 @@ -28283,7 +28283,7 @@ brlanMapPart1 = .rodata:0x804E7390; // type:object size:0x38 scope:local data:4b brlanMapPart2 = .rodata:0x804E73C8; // type:object size:0x50 scope:local data:4byte brlanMapPart3 = .rodata:0x804E7418; // type:object size:0x18 scope:local data:4byte lbl_804E7430 = .rodata:0x804E7430; // type:object size:0x38 data:4byte -lbl_804E7468 = .rodata:0x804E7468; // type:object size:0xD8 data:4byte +brlanMap = .rodata:0x804E7468; // type:object size:0xD8 scope:local data:4byte brlanMap = .rodata:0x804E7540; // type:object size:0x20 scope:local data:4byte brlanMap = .rodata:0x804E7560; // type:object size:0x20 scope:local data:4byte brlanMap = .rodata:0x804E7580; // type:object size:0x18 scope:local data:4byte @@ -33087,63 +33087,112 @@ __vt__13dLytTextLight = .data:0x8051BCB4; // type:object size:0xC __vt__13dLytTextSword = .data:0x8051BCC0; // type:object size:0xC lbl_8051BCCC = .data:0x8051BCCC; // type:object size:0x600 __vt__30sFStateID_c<15dLytMsgWindow_c> = .data:0x8051C2CC; // type:object size:0x34 -lbl_8051C300 = .data:0x8051C300; // type:object size:0x9 data:string -lbl_8051C30C = .data:0x8051C30C; // type:object size:0xC data:string -lbl_8051C318 = .data:0x8051C318; // type:object size:0xD data:string -lbl_8051C328 = .data:0x8051C328; // type:object size:0x17 data:string -lbl_8051C340 = .data:0x8051C340; // type:object size:0xB data:string -lbl_8051C350 = .data:0x8051C350; // type:object size:0x20 data:string -lbl_8051C370 = .data:0x8051C370; // type:object size:0x11 data:string -lbl_8051C388 = .data:0x8051C388; // type:object size:0x20 data:string -lbl_8051C3A8 = .data:0x8051C3A8; // type:object size:0x10 data:string -lbl_8051C3B8 = .data:0x8051C3B8; // type:object size:0x1F data:string -lbl_8051C3D8 = .data:0x8051C3D8; // type:object size:0x10 data:string -lbl_8051C3E8 = .data:0x8051C3E8; // type:object size:0x1E data:string -lbl_8051C408 = .data:0x8051C408; // type:object size:0xF data:string -lbl_8051C418 = .data:0x8051C418; // type:object size:0xF data:string -lbl_8051C428 = .data:0x8051C428; // type:object size:0x19 data:string -lbl_8051C444 = .data:0x8051C444; // type:object size:0x9 data:string -lbl_8051C450 = .data:0x8051C450; // type:object size:0x9 data:string -lbl_8051C45C = .data:0x8051C45C; // type:object size:0x9 data:string -lbl_8051C468 = .data:0x8051C468; // type:object size:0x9 data:string -lbl_8051C474 = .data:0x8051C474; // type:object size:0x1B data:string -lbl_8051C490 = .data:0x8051C490; // type:object size:0xC data:string -lbl_8051C49C = .data:0x8051C49C; // type:object size:0xC data:string -lbl_8051C4A8 = .data:0x8051C4A8; // type:object size:0xC data:string -lbl_8051C4B4 = .data:0x8051C4B4; // type:object size:0xC data:string -lbl_8051C4C0 = .data:0x8051C4C0; // type:object size:0x1B data:string -lbl_8051C4DC = .data:0x8051C4DC; // type:object size:0xC data:string -lbl_8051C4E8 = .data:0x8051C4E8; // type:object size:0xC data:string -lbl_8051C4F4 = .data:0x8051C4F4; // type:object size:0xC data:string -lbl_8051C500 = .data:0x8051C500; // type:object size:0xC data:string -lbl_8051C50C = .data:0x8051C50C; // type:object size:0x1B data:string -lbl_8051C528 = .data:0x8051C528; // type:object size:0x1B data:string -lbl_8051C548 = .data:0x8051C548; // type:object size:0x18 data:string -lbl_8051C560 = .data:0x8051C560; // type:object size:0xD data:string -lbl_8051C570 = .data:0x8051C570; // type:object size:0xC data:string -lbl_8051C57C = .data:0x8051C57C; // type:object size:0xD data:string -lbl_8051C58C = .data:0x8051C58C; // type:object size:0xC data:string -lbl_8051C598 = .data:0x8051C598; // type:object size:0xD data:string -lbl_8051C5A8 = .data:0x8051C5A8; // type:object size:0xC data:string -lbl_8051C5B4 = .data:0x8051C5B4; // type:object size:0xD data:string -lbl_8051C5C4 = .data:0x8051C5C4; // type:object size:0x2C -lbl_8051C5F0 = .data:0x8051C5F0; // type:object size:0xC data:string -lbl_8051C5FC = .data:0x8051C5FC; // type:object size:0xD data:string -lbl_8051C60C = .data:0x8051C60C; // type:object size:0x9 data:string -lbl_8051C618 = .data:0x8051C618; // type:object size:0x9 data:string -lbl_8051C624 = .data:0x8051C624; // type:object size:0x9 data:string -lbl_8051C630 = .data:0x8051C630; // type:object size:0x9 data:string -lbl_8051C63C = .data:0x8051C63C; // type:object size:0x1C -lbl_8051C658 = .data:0x8051C658; // type:object size:0xF data:string -lbl_8051C668 = .data:0x8051C668; // type:object size:0xF data:string -lbl_8051C678 = .data:0x8051C678; // type:object size:0xA data:string -lbl_8051C688 = .data:0x8051C688; // type:object size:0x10 data:string -lbl_8051C698 = .data:0x8051C698; // type:object size:0x10 data:string -lbl_8051C6A8 = .data:0x8051C6A8; // type:object size:0x10 data:string -lbl_8051C6B8 = .data:0x8051C6B8; // type:object size:0x40 -__vt__24dLytMsgWindowSelectBtn_c = .data:0x8051C6F8; // type:object size:0x3AC -lbl_8051CAA4 = .data:0x8051CAA4; // type:object size:0x34 -lbl_8051CAD8 = .data:0x8051CAD8; // type:object size:0x38 +@34830 = .data:0x8051C300; // type:object size:0x9 scope:local data:string +...data.0 = .data:0x8051C300; // type:label scope:local +@35537 = .data:0x8051C30C; // type:object size:0xC scope:local data:string +@35539 = .data:0x8051C318; // type:object size:0xD scope:local data:string +@29701 = .data:0x8051C328; // type:object size:0x17 scope:local data:string +@29702 = .data:0x8051C340; // type:object size:0xB scope:local data:string +@29703 = .data:0x8051C350; // type:object size:0x20 scope:local data:string +@29704 = .data:0x8051C370; // type:object size:0x11 scope:local data:string +@29705 = .data:0x8051C388; // type:object size:0x20 scope:local data:string +@29706 = .data:0x8051C3A8; // type:object size:0x10 scope:local data:string +@29707 = .data:0x8051C3B8; // type:object size:0x1F scope:local data:string +@29708 = .data:0x8051C3D8; // type:object size:0x10 scope:local data:string +@29709 = .data:0x8051C3E8; // type:object size:0x1E scope:local data:string +@29710 = .data:0x8051C408; // type:object size:0xF scope:local data:string +@29711 = .data:0x8051C418; // type:object size:0xF scope:local data:string +@29712 = .data:0x8051C428; // type:object size:0x19 scope:local data:string +@29713 = .data:0x8051C444; // type:object size:0x9 scope:local data:string +@29714 = .data:0x8051C450; // type:object size:0x9 scope:local data:string +@29715 = .data:0x8051C45C; // type:object size:0x9 scope:local data:string +@29716 = .data:0x8051C468; // type:object size:0x9 scope:local data:string +@29717 = .data:0x8051C474; // type:object size:0x1B scope:local data:string +@29718 = .data:0x8051C490; // type:object size:0xC scope:local data:string +@29719 = .data:0x8051C49C; // type:object size:0xC scope:local data:string +@29720 = .data:0x8051C4A8; // type:object size:0xC scope:local data:string +@29721 = .data:0x8051C4B4; // type:object size:0xC scope:local data:string +@29722 = .data:0x8051C4C0; // type:object size:0x1B scope:local data:string +@29723 = .data:0x8051C4DC; // type:object size:0xC scope:local data:string +@29724 = .data:0x8051C4E8; // type:object size:0xC scope:local data:string +@29725 = .data:0x8051C4F4; // type:object size:0xC scope:local data:string +@29726 = .data:0x8051C500; // type:object size:0xC scope:local data:string +@29727 = .data:0x8051C50C; // type:object size:0x1B scope:local data:string +@29728 = .data:0x8051C528; // type:object size:0x1B scope:local data:string +@29729 = .data:0x8051C548; // type:object size:0x18 scope:local data:string +@29730 = .data:0x8051C560; // type:object size:0xD scope:local data:string +@29731 = .data:0x8051C570; // type:object size:0xC scope:local data:string +@29732 = .data:0x8051C57C; // type:object size:0xD scope:local data:string +@29733 = .data:0x8051C58C; // type:object size:0xC scope:local data:string +@29734 = .data:0x8051C598; // type:object size:0xD scope:local data:string +@29735 = .data:0x8051C5A8; // type:object size:0xC scope:local data:string +@29736 = .data:0x8051C5B4; // type:object size:0xD scope:local data:string +@29737 = .data:0x8051C5C4; // type:object size:0xC scope:local data:string +sSelectTextBoxes = .data:0x8051C5D0; // type:object size:0x20 scope:local +@29738 = .data:0x8051C5F0; // type:object size:0xC scope:local data:string +@29739 = .data:0x8051C5FC; // type:object size:0xD scope:local data:string +@29740 = .data:0x8051C60C; // type:object size:0x9 scope:local data:string +@29741 = .data:0x8051C618; // type:object size:0x9 scope:local data:string +@29742 = .data:0x8051C624; // type:object size:0x9 scope:local data:string +@29743 = .data:0x8051C630; // type:object size:0x9 scope:local data:string +@29744 = .data:0x8051C63C; // type:object size:0x9 scope:local data:string +sBoundings = .data:0x8051C648; // type:object size:0x10 scope:local +@29745 = .data:0x8051C658; // type:object size:0xF scope:local data:string +@29746 = .data:0x8051C668; // type:object size:0xF scope:local data:string +@29747 = .data:0x8051C678; // type:object size:0xA scope:local data:string +@29748 = .data:0x8051C688; // type:object size:0x10 scope:local data:string +@29749 = .data:0x8051C698; // type:object size:0x10 scope:local data:string +@29750 = .data:0x8051C6A8; // type:object size:0x10 scope:local data:string +@29751 = .data:0x8051C6B8; // type:object size:0x10 scope:local data:string +sSelectPanes = .data:0x8051C6C8; // type:object size:0x1C scope:local +@35871 = .data:0x8051C6E4; // type:object size:0x14 scope:local data:string +__vt__24dLytMsgWindowSelectBtn_c = .data:0x8051C6F8; // type:object size:0x34 +@36090 = .data:0x8051C72C; // type:object size:0xC scope:local +@36091 = .data:0x8051C738; // type:object size:0xC scope:local +@36092 = .data:0x8051C744; // type:object size:0xC scope:local +@36093 = .data:0x8051C750; // type:object size:0xC scope:local +@36094 = .data:0x8051C75C; // type:object size:0xC scope:local +@36095 = .data:0x8051C768; // type:object size:0xC scope:local +@36096 = .data:0x8051C774; // type:object size:0xC scope:local +@36097 = .data:0x8051C780; // type:object size:0xC scope:local +@36098 = .data:0x8051C78C; // type:object size:0xC scope:local +@36099 = .data:0x8051C798; // type:object size:0xC scope:local +@36100 = .data:0x8051C7A4; // type:object size:0xC scope:local +@36101 = .data:0x8051C7B0; // type:object size:0xC scope:local +@36102 = .data:0x8051C7BC; // type:object size:0xC scope:local +@36103 = .data:0x8051C7C8; // type:object size:0xC scope:local +@36104 = .data:0x8051C7D4; // type:object size:0xC scope:local +@36105 = .data:0x8051C7E0; // type:object size:0xC scope:local +@36106 = .data:0x8051C7EC; // type:object size:0xC scope:local +@36107 = .data:0x8051C7F8; // type:object size:0xC scope:local +@36108 = .data:0x8051C804; // type:object size:0xC scope:local +@36109 = .data:0x8051C810; // type:object size:0xC scope:local +@36110 = .data:0x8051C81C; // type:object size:0xC scope:local +@36111 = .data:0x8051C828; // type:object size:0xC scope:local +@36112 = .data:0x8051C834; // type:object size:0xC scope:local +@36113 = .data:0x8051C840; // type:object size:0xC scope:local +@36114 = .data:0x8051C84C; // type:object size:0xC scope:local +@36115 = .data:0x8051C858; // type:object size:0xC scope:local +@36116 = .data:0x8051C864; // type:object size:0xC scope:local +@36117 = .data:0x8051C870; // type:object size:0xC scope:local +@36118 = .data:0x8051C87C; // type:object size:0xC scope:local +@36119 = .data:0x8051C888; // type:object size:0xC scope:local +@36120 = .data:0x8051C894; // type:object size:0xC scope:local +@36121 = .data:0x8051C8A0; // type:object size:0xC scope:local +@36122 = .data:0x8051C8AC; // type:object size:0xC scope:local +@36124 = .data:0x8051C8B8; // type:object size:0x2C scope:local data:string +@36125 = .data:0x8051C8E4; // type:object size:0x2A scope:local data:string +@36126 = .data:0x8051C910; // type:object size:0x2E scope:local data:string +@36127 = .data:0x8051C940; // type:object size:0x2B scope:local data:string +@36128 = .data:0x8051C96C; // type:object size:0x27 scope:local data:string +@36129 = .data:0x8051C994; // type:object size:0x25 scope:local data:string +@36130 = .data:0x8051C9BC; // type:object size:0x2D scope:local data:string +@36131 = .data:0x8051C9EC; // type:object size:0x2E scope:local data:string +@36132 = .data:0x8051CA1C; // type:object size:0x2D scope:local data:string +@36133 = .data:0x8051CA4C; // type:object size:0x2D scope:local data:string +@36134 = .data:0x8051CA7C; // type:object size:0x26 scope:local data:string +__vt__39sFStateID_c<24dLytMsgWindowSelectBtn_c> = .data:0x8051CAA4; // type:object size:0x34 scope:weak +__vt__44sFStateID_c<29dLytMsgWindowSelectBtnParts_c> = .data:0x8051CAD8; // type:object size:0x34 scope:weak @17001 = .data:0x8051CB10; // type:object size:0x9 scope:local data:string ...data.0 = .data:0x8051CB10; // type:label scope:local @17002 = .data:0x8051CB1C; // type:object size:0xA scope:local data:string @@ -37526,39 +37575,76 @@ g_profile_JSTUDIO_SYSOBJ = .data:0x805402D8; // type:object size:0x10 lbl_805402E8 = .data:0x805402E8; // type:object size:0x9C data:4byte lbl_80540384 = .data:0x80540384; // type:object size:0x74 g_profile_LYT_CONTROL_GAME = .data:0x805403F8; // type:object size:0xC -lbl_80540404 = .data:0x80540404; // type:object size:0xA data:string -lbl_80540410 = .data:0x80540410; // type:object size:0x9 data:string -lbl_8054041C = .data:0x8054041C; // type:object size:0xC data:string -lbl_80540428 = .data:0x80540428; // type:object size:0x10 -lbl_80540438 = .data:0x80540438; // type:object size:0x30 -lbl_80540468 = .data:0x80540468; // type:object size:0x30 -lbl_80540498 = .data:0x80540498; // type:object size:0x18 -lbl_805404B0 = .data:0x805404B0; // type:object size:0x18 -__vt__17dLytControlGame_c = .data:0x805404C8; // type:object size:0x50 -__vt__56sFStateMgr_c<17dLytControlGame_c,20sStateMethodUsr_FI_c> = .data:0x80540518; // type:object size:0x30 -__vt__86sStateMgr_c<17dLytControlGame_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80540548; // type:object size:0x30 -__vt__33sFStateFct_c<17dLytControlGame_c> = .data:0x80540578; // type:object size:0x18 -__vt__30sFState_c<17dLytControlGame_c> = .data:0x80540590; // type:object size:0x18 -lbl_805405A8 = .data:0x805405A8; // type:object size:0xC -__vt__19dMapFootPrintsMgr_c = .data:0x805405B4; // type:object size:0xC -__vt__49sFStateMgr_c<10dLytHelp_c,20sStateMethodUsr_FI_c> = .data:0x805405C0; // type:object size:0x30 -__vt__79sStateMgr_c<10dLytHelp_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x805405F0; // type:object size:0x30 -__vt__26sFStateFct_c<10dLytHelp_c> = .data:0x80540620; // type:object size:0x18 -__vt__23sFState_c<10dLytHelp_c> = .data:0x80540638; // type:object size:0x18 -__vt__49sFStateMgr_c<10dLytWipe_c,20sStateMethodUsr_FI_c> = .data:0x80540650; // type:object size:0x30 -__vt__79sStateMgr_c<10dLytWipe_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80540680; // type:object size:0x30 -__vt__26sFStateFct_c<10dLytWipe_c> = .data:0x805406B0; // type:object size:0x18 -__vt__23sFState_c<10dLytWipe_c> = .data:0x805406C8; // type:object size:0x18 -__vt__57sFStateMgr_c<18dLytSimpleWindow_c,20sStateMethodUsr_FI_c> = .data:0x805406E0; // type:object size:0x30 -__vt__87sStateMgr_c<18dLytSimpleWindow_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80540710; // type:object size:0x30 -__vt__34sFStateFct_c<18dLytSimpleWindow_c> = .data:0x80540740; // type:object size:0x18 -__vt__31sFState_c<18dLytSimpleWindow_c> = .data:0x80540758; // type:object size:0x18 -__vt__15dLytMsgWindow_c = .data:0x80540770; // type:object size:0x10 -__vt__54sFStateMgr_c<15dLytMsgWindow_c,20sStateMethodUsr_FI_c> = .data:0x80540780; // type:object size:0x30 -__vt__84sStateMgr_c<15dLytMsgWindow_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x805407B0; // type:object size:0x30 -__vt__31sFStateFct_c<15dLytMsgWindow_c> = .data:0x805407E0; // type:object size:0x18 -__vt__28sFState_c<15dLytMsgWindow_c> = .data:0x805407F8; // type:object size:0x458 -lbl_80540C50 = .data:0x80540C50; // type:object size:0x38 +...data.0 = .data:0x805403F8; // type:label scope:local +@36306 = .data:0x80540404; // type:object size:0xA scope:local data:string +@36308 = .data:0x80540410; // type:object size:0x9 scope:local data:string +@36310 = .data:0x8054041C; // type:object size:0xC scope:local data:string +__vt__21dLytControlGame_HIO_c = .data:0x80540428; // type:object size:0xC +__vt__53sFStateMgr_c<14dLytDrawMark_c,20sStateMethodUsr_FI_c> = .data:0x80540438; // type:object size:0x30 scope:weak +__vt__83sStateMgr_c<14dLytDrawMark_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80540468; // type:object size:0x30 scope:weak +__vt__30sFStateFct_c<14dLytDrawMark_c> = .data:0x80540498; // type:object size:0x14 scope:weak +__vt__27sFState_c<14dLytDrawMark_c> = .data:0x805404B0; // type:object size:0x18 scope:weak +__vt__17dLytControlGame_c = .data:0x805404C8; // type:object size:0x4C +__vt__56sFStateMgr_c<17dLytControlGame_c,20sStateMethodUsr_FI_c> = .data:0x80540518; // type:object size:0x30 scope:weak +__vt__86sStateMgr_c<17dLytControlGame_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80540548; // type:object size:0x30 scope:weak +__vt__33sFStateFct_c<17dLytControlGame_c> = .data:0x80540578; // type:object size:0x14 scope:weak +__vt__30sFState_c<17dLytControlGame_c> = .data:0x80540590; // type:object size:0x18 scope:weak +__vt__9dLytMap_c = .data:0x805405A8; // type:object size:0xC scope:weak +__vt__19dMapFootPrintsMgr_c = .data:0x805405B4; // type:object size:0xC scope:weak +__vt__49sFStateMgr_c<10dLytHelp_c,20sStateMethodUsr_FI_c> = .data:0x805405C0; // type:object size:0x30 scope:weak +__vt__79sStateMgr_c<10dLytHelp_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x805405F0; // type:object size:0x30 scope:weak +__vt__26sFStateFct_c<10dLytHelp_c> = .data:0x80540620; // type:object size:0x14 scope:weak +__vt__23sFState_c<10dLytHelp_c> = .data:0x80540638; // type:object size:0x18 scope:weak +__vt__49sFStateMgr_c<10dLytWipe_c,20sStateMethodUsr_FI_c> = .data:0x80540650; // type:object size:0x30 scope:weak +__vt__79sStateMgr_c<10dLytWipe_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80540680; // type:object size:0x30 scope:weak +__vt__26sFStateFct_c<10dLytWipe_c> = .data:0x805406B0; // type:object size:0x14 scope:weak +__vt__23sFState_c<10dLytWipe_c> = .data:0x805406C8; // type:object size:0x18 scope:weak +__vt__57sFStateMgr_c<18dLytSimpleWindow_c,20sStateMethodUsr_FI_c> = .data:0x805406E0; // type:object size:0x30 scope:weak +__vt__87sStateMgr_c<18dLytSimpleWindow_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x80540710; // type:object size:0x30 scope:weak +__vt__34sFStateFct_c<18dLytSimpleWindow_c> = .data:0x80540740; // type:object size:0x14 scope:weak +__vt__31sFState_c<18dLytSimpleWindow_c> = .data:0x80540758; // type:object size:0x18 scope:weak +__vt__15dLytMsgWindow_c = .data:0x80540770; // type:object size:0xC scope:weak +__vt__54sFStateMgr_c<15dLytMsgWindow_c,20sStateMethodUsr_FI_c> = .data:0x80540780; // type:object size:0x30 scope:weak +__vt__84sStateMgr_c<15dLytMsgWindow_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x805407B0; // type:object size:0x30 scope:weak +__vt__31sFStateFct_c<15dLytMsgWindow_c> = .data:0x805407E0; // type:object size:0x14 scope:weak +__vt__28sFState_c<15dLytMsgWindow_c> = .data:0x805407F8; // type:object size:0x18 scope:weak +@51175 = .data:0x805409AC; // type:object size:0xC scope:local +@51176 = .data:0x805409B8; // type:object size:0xC scope:local +@51177 = .data:0x805409C4; // type:object size:0xC scope:local +@51178 = .data:0x805409D0; // type:object size:0xC scope:local +@51179 = .data:0x805409DC; // type:object size:0xC scope:local +@51180 = .data:0x805409E8; // type:object size:0xC scope:local +@51181 = .data:0x805409F4; // type:object size:0xC scope:local +@51182 = .data:0x80540A00; // type:object size:0xC scope:local +@51183 = .data:0x80540A0C; // type:object size:0xC scope:local +@51184 = .data:0x80540A18; // type:object size:0xC scope:local +@51185 = .data:0x80540A24; // type:object size:0xC scope:local +@51186 = .data:0x80540A30; // type:object size:0xC scope:local +@51187 = .data:0x80540A3C; // type:object size:0xC scope:local +@51188 = .data:0x80540A48; // type:object size:0xC scope:local +@51189 = .data:0x80540A54; // type:object size:0xC scope:local +@51190 = .data:0x80540A60; // type:object size:0xC scope:local +@51191 = .data:0x80540A6C; // type:object size:0xC scope:local +@51192 = .data:0x80540A78; // type:object size:0xC scope:local +@51193 = .data:0x80540A84; // type:object size:0xC scope:local +@51194 = .data:0x80540A90; // type:object size:0xC scope:local +@51195 = .data:0x80540A9C; // type:object size:0xC scope:local +@51196 = .data:0x80540AA8; // type:object size:0xC scope:local +@51197 = .data:0x80540AB4; // type:object size:0xC scope:local +@51198 = .data:0x80540AC0; // type:object size:0xC scope:local +@51199 = .data:0x80540ACC; // type:object size:0xC scope:local +@51200 = .data:0x80540AD8; // type:object size:0xC scope:local +@51201 = .data:0x80540AE4; // type:object size:0xC scope:local +@51203 = .data:0x80540AF0; // type:object size:0x22 scope:local data:string +@51204 = .data:0x80540B18; // type:object size:0x28 scope:local data:string +@51205 = .data:0x80540B40; // type:object size:0x29 scope:local data:string +@51206 = .data:0x80540B6C; // type:object size:0x21 scope:local data:string +@51207 = .data:0x80540B90; // type:object size:0x28 scope:local data:string +@51208 = .data:0x80540BB8; // type:object size:0x26 scope:local data:string +@51209 = .data:0x80540BE0; // type:object size:0x27 scope:local data:string +@51210 = .data:0x80540C08; // type:object size:0x1F scope:local data:string +@51211 = .data:0x80540C28; // type:object size:0x26 scope:local data:string +__vt__32sFStateID_c<17dLytControlGame_c> = .data:0x80540C50; // type:object size:0x34 scope:weak g_profile_LYT_CONTROL_TITLE = .data:0x80540C88; // type:object size:0xC lbl_80540C94 = .data:0x80540C94; // type:object size:0x4C g_profile_MAP_AREA_TAG = .data:0x80540CE0; // type:object size:0x10 @@ -40119,8 +40205,8 @@ part2TextBoxes = .sdata:0x80572570; // type:object size:0x8 scope:local data:4by part2Bounding = .sdata:0x80572578; // type:object size:0x4 scope:local data:4byte part3Bounding = .sdata:0x8057257C; // type:object size:0x4 scope:local data:4byte lbl_80572580 = .sdata:0x80572580; // type:object size:0x8 -lbl_80572588 = .sdata:0x80572588; // type:object size:0x8 data:4byte -lbl_80572590 = .sdata:0x80572590; // type:object size:0x8 data:4byte +sDecideTextBoxes = .sdata:0x80572588; // type:object size:0x8 scope:local data:4byte +sWindowNames = .sdata:0x80572590; // type:object size:0x4 scope:local data:4byte sSwordPane = .sdata:0x80572598; // type:object size:0x4 scope:local data:4byte sLightPane = .sdata:0x8057259C; // type:object size:0x4 scope:local data:4byte sTextBoxes = .sdata:0x805725A0; // type:object size:0x8 scope:local data:4byte @@ -41140,13 +41226,13 @@ lbl_80573ED4 = .sdata:0x80573ED4; // type:object size:0x4 data:4byte lbl_80573ED8 = .sdata:0x80573ED8; // type:object size:0x5 data:string lbl_80573EE0 = .sdata:0x80573EE0; // type:object size:0x5 data:string lbl_80573EE8 = .sdata:0x80573EE8; // type:object size:0x5 data:string -lbl_80573EF0 = .sdata:0x80573EF0; // type:object size:0x6 data:string -lbl_80573EF8 = .sdata:0x80573EF8; // type:object size:0x7 data:string -lbl_80573F00 = .sdata:0x80573F00; // type:object size:0x7 data:string -lbl_80573F08 = .sdata:0x80573F08; // type:object size:0x8 data:string -lbl_80573F10 = .sdata:0x80573F10; // type:object size:0x5 data:string -lbl_80573F18 = .sdata:0x80573F18; // type:object size:0x8 data:string -lbl_80573F20 = .sdata:0x80573F20; // type:object size:0x5 data:string +@36307 = .sdata:0x80573EF0; // type:object size:0x6 scope:local data:string +@36309 = .sdata:0x80573EF8; // type:object size:0x7 scope:local data:string +@50393 = .sdata:0x80573F00; // type:object size:0x7 scope:local data:string +@50394 = .sdata:0x80573F08; // type:object size:0x8 scope:local data:string +@50395 = .sdata:0x80573F10; // type:object size:0x5 scope:local data:string +@50396 = .sdata:0x80573F18; // type:object size:0x8 scope:local data:string +@50397 = .sdata:0x80573F20; // type:object size:0x5 scope:local data:string lbl_80573F28 = .sdata:0x80573F28; // type:object size:0x4 data:4byte lbl_80573F2C = .sdata:0x80573F2C; // type:object size:0x4 data:4byte lbl_80573F30 = .sdata:0x80573F30; // type:object size:0x8 data:string @@ -42283,7 +42369,7 @@ lbl_805758C8 = .sbss:0x805758C8; // type:object size:0x8 data:4byte NUMBER_OF_ITEMS = .sbss:0x805758D0; // type:object size:0x4 data:4byte sIsPerformingInitialCollection__9dAcItem_c = .sbss:0x805758D4; // type:object size:0x1 data:byte TREASURE_TEMP_COLLECT = .sbss:0x805758D8; // type:object size:0x4 data:4byte -CURRENT_COUNT_VALUE = .sbss:0x805758DC; // type:object size:0x4 data:4byte +sCollectionCurrentCount__9dAcItem_c = .sbss:0x805758DC; // type:object size:0x4 data:4byte lbl_805758E0 = .sbss:0x805758E0; // type:object size:0x4 align:4 data:float lbl_805758E4 = .sbss:0x805758E4; // type:object size:0x4 align:4 data:float lbl_805758E8 = .sbss:0x805758E8; // type:object size:0x4 align:4 data:float @@ -42348,9 +42434,9 @@ lbl_805759F0 = .sbss:0x805759F0; // type:object size:0x1 data:byte lbl_805759F1 = .sbss:0x805759F1; // type:object size:0x1 data:byte lbl_805759F4 = .sbss:0x805759F4; // type:object size:0x4 align:4 data:float lbl_805759F8 = .sbss:0x805759F8; // type:object size:0x8 data:byte -sInstance__17dLytControlGame_c = .sbss:0x80575A00; // type:object size:0x8 data:4byte -MENU_PAUSE = .sbss:0x80575A08; // type:object size:0x8 data:4byte -lbl_80575A10 = .sbss:0x80575A10; // type:object size:0x8 data:byte +sInstance__17dLytControlGame_c = .sbss:0x80575A00; // type:object size:0x4 data:4byte +@LOCAL@initializeState_Pause_SetRes__17dLytControlGame_cFv@sLytArcs = .sbss:0x80575A08; // type:object size:0x8 scope:local data:4byte +@GUARD@initializeState_Pause_SetRes__17dLytControlGame_cFv@sLytArcs = .sbss:0x80575A10; // type:object size:0x1 scope:local data:byte lbl_80575A18 = .sbss:0x80575A18; // type:object size:0x1 data:byte lbl_80575A19 = .sbss:0x80575A19; // type:object size:0x1 data:byte lbl_80575A1A = .sbss:0x80575A1A; // type:object size:0x6 data:byte @@ -42437,8 +42523,8 @@ mVec2__Zero = .sbss:0x80575C70; // type:object size:0x4 align:4 data:float mVec2__Ex = .sbss:0x80575C78; // type:object size:0x4 align:4 data:float mVec2__Ey = .sbss:0x80575C80; // type:object size:0x4 align:4 data:float m_video__6mVideo = .sbss:0x80575C88; // type:object size:0x8 data:4byte -MSB_ALLOC_FUNC = .sbss:0x80575C90; // type:object size:0x4 data:4byte -MSB_FREE_FUNC = .sbss:0x80575C94; // type:object size:0x4 data:4byte +MSB_ALLOC_FUNC = .sbss:0x80575C90; // type:object size:0x4 scope:local data:4byte +MSB_FREE_FUNC = .sbss:0x80575C94; // type:object size:0x4 scope:local data:4byte AudioDecodeThreadCreated = .sbss:0x80575C98; // type:object size:0x8 scope:local data:4byte lbl_80575CA0 = .sbss:0x80575CA0; // type:object size:0x4 scope:local data:4byte OldVIPostCallback = .sbss:0x80575CA4; // type:object size:0x4 data:4byte @@ -45374,22 +45460,22 @@ lbl_80579DF8 = .sdata2:0x80579DF8; // type:object size:0x4 align:4 data:float lbl_80579E00 = .sdata2:0x80579E00; // type:object size:0x8 align:8 data:double lbl_80579E08 = .sdata2:0x80579E08; // type:object size:0x4 align:4 data:float lbl_80579E10 = .sdata2:0x80579E10; // type:object size:0x8 align:8 data:double -lbl_80579E18 = .sdata2:0x80579E18; // type:object size:0x4 align:4 data:float -lbl_80579E20 = .sdata2:0x80579E20; // type:object size:0x8 align:8 data:double -lbl_80579E28 = .sdata2:0x80579E28; // type:object size:0x4 align:4 data:float -lbl_80579E2C = .sdata2:0x80579E2C; // type:object size:0x4 align:4 data:float -lbl_80579E30 = .sdata2:0x80579E30; // type:object size:0x4 align:4 data:float -lbl_80579E34 = .sdata2:0x80579E34; // type:object size:0x4 align:4 data:float -lbl_80579E38 = .sdata2:0x80579E38; // type:object size:0x4 align:4 data:float -lbl_80579E3C = .sdata2:0x80579E3C; // type:object size:0x4 align:4 data:float -lbl_80579E40 = .sdata2:0x80579E40; // type:object size:0x4 align:4 data:float -lbl_80579E44 = .sdata2:0x80579E44; // type:object size:0x4 align:4 data:float -lbl_80579E48 = .sdata2:0x80579E48; // type:object size:0x4 align:4 data:float -lbl_80579E4C = .sdata2:0x80579E4C; // type:object size:0x4 align:4 data:float -lbl_80579E50 = .sdata2:0x80579E50; // type:object size:0x4 align:4 data:float -lbl_80579E54 = .sdata2:0x80579E54; // type:object size:0x4 align:4 data:float -lbl_80579E58 = .sdata2:0x80579E58; // type:object size:0x4 align:4 data:float -lbl_80579E5C = .sdata2:0x80579E5C; // type:object size:0x4 align:4 data:float +@34553 = .sdata2:0x80579E18; // type:object size:0x4 scope:local align:4 data:float +@34621 = .sdata2:0x80579E20; // type:object size:0x8 scope:local align:8 data:double +@34831 = .sdata2:0x80579E28; // type:object size:0x4 scope:local align:4 data:float +@34832 = .sdata2:0x80579E2C; // type:object size:0x4 scope:local align:4 data:float +@34833 = .sdata2:0x80579E30; // type:object size:0x4 scope:local align:4 data:float +@35090 = .sdata2:0x80579E34; // type:object size:0x4 scope:local align:4 data:float +@35091 = .sdata2:0x80579E38; // type:object size:0x4 scope:local align:4 data:float +@35092 = .sdata2:0x80579E3C; // type:object size:0x4 scope:local align:4 data:float +@35093 = .sdata2:0x80579E40; // type:object size:0x4 scope:local align:4 data:float +@35094 = .sdata2:0x80579E44; // type:object size:0x4 scope:local align:4 data:float +@35095 = .sdata2:0x80579E48; // type:object size:0x4 scope:local align:4 data:float +@35096 = .sdata2:0x80579E4C; // type:object size:0x4 scope:local align:4 data:float +@35456 = .sdata2:0x80579E50; // type:object size:0x4 scope:local align:4 data:float +@35457 = .sdata2:0x80579E54; // type:object size:0x4 scope:local align:4 data:float +@35550 = .sdata2:0x80579E58; // type:object size:0x4 scope:local align:4 data:float +@35624 = .sdata2:0x80579E5C; // type:object size:0x4 scope:local align:4 data:float @17201 = .sdata2:0x80579E60; // type:object size:0x8 scope:local align:8 data:double @19382 = .sdata2:0x80579E68; // type:object size:0x4 scope:local align:4 data:float @19383 = .sdata2:0x80579E6C; // type:object size:0x4 scope:local align:4 data:float @@ -48463,19 +48549,19 @@ lbl_8057CA54 = .sdata2:0x8057CA54; // type:object size:0x4 align:4 data:float lbl_8057CA58 = .sdata2:0x8057CA58; // type:object size:0x4 align:4 data:float lbl_8057CA5C = .sdata2:0x8057CA5C; // type:object size:0x4 align:4 data:float lbl_8057CA60 = .sdata2:0x8057CA60; // type:object size:0x8 align:8 data:double -lbl_8057CA68 = .sdata2:0x8057CA68; // type:object size:0x4 align:4 data:float -lbl_8057CA6C = .sdata2:0x8057CA6C; // type:object size:0x4 align:4 data:float -lbl_8057CA70 = .sdata2:0x8057CA70; // type:object size:0x4 data:4byte -lbl_8057CA74 = .sdata2:0x8057CA74; // type:object size:0x4 data:4byte -lbl_8057CA78 = .sdata2:0x8057CA78; // type:object size:0x4 data:4byte -lbl_8057CA7C = .sdata2:0x8057CA7C; // type:object size:0x4 data:4byte -lbl_8057CA80 = .sdata2:0x8057CA80; // type:object size:0x4 data:4byte -lbl_8057CA84 = .sdata2:0x8057CA84; // type:object size:0x4 align:4 data:float -lbl_8057CA88 = .sdata2:0x8057CA88; // type:object size:0x4 align:4 data:float -lbl_8057CA8C = .sdata2:0x8057CA8C; // type:object size:0x4 align:4 data:float -lbl_8057CA90 = .sdata2:0x8057CA90; // type:object size:0x4 align:4 data:float -lbl_8057CA94 = .sdata2:0x8057CA94; // type:object size:0x4 align:4 data:float -lbl_8057CA98 = .sdata2:0x8057CA98; // type:object size:0x8 align:8 data:double +@48591 = .sdata2:0x8057CA68; // type:object size:0x4 scope:local align:4 data:float +@48592 = .sdata2:0x8057CA6C; // type:object size:0x4 scope:local align:4 data:float +sMenuPause = .sdata2:0x8057CA70; // type:object size:0x4 scope:local data:4byte +sMap2D = .sdata2:0x8057CA74; // type:object size:0x4 scope:local data:4byte +sMapField = .sdata2:0x8057CA78; // type:object size:0x4 scope:local data:4byte +sMapSky = .sdata2:0x8057CA7C; // type:object size:0x4 scope:local data:4byte +sCommonArrow = .sdata2:0x8057CA80; // type:object size:0x4 scope:local data:4byte +@48940 = .sdata2:0x8057CA84; // type:object size:0x4 scope:local align:4 data:float +@50709 = .sdata2:0x8057CA88; // type:object size:0x4 scope:local align:4 data:float +@50710 = .sdata2:0x8057CA8C; // type:object size:0x4 scope:local align:4 data:float +@50711 = .sdata2:0x8057CA90; // type:object size:0x4 scope:local align:4 data:float +@50712 = .sdata2:0x8057CA94; // type:object size:0x4 scope:local align:4 data:float +@50839 = .sdata2:0x8057CA98; // type:object size:0x8 scope:local align:8 data:double lbl_8057CAA0 = .sdata2:0x8057CAA0; // type:object size:0x4 align:4 data:float lbl_8057CAA4 = .sdata2:0x8057CAA4; // type:object size:0x4 align:4 data:float lbl_8057CAA8 = .sdata2:0x8057CAA8; // type:object size:0x4 align:4 data:float @@ -51502,16 +51588,29 @@ LytMsgWindow__STATE_DEMO_IN = .bss:0x805AD5B0; // type:object size:0x40 data:4by LytMsgWindow__STATE_DEMO_VISIBLE = .bss:0x805AD5F0; // type:object size:0x40 data:4byte LytMsgWindow__STATE_DEMO_OUT = .bss:0x805AD630; // type:object size:0x30 data:4byte lbl_805AD660 = .bss:0x805AD660; // type:object size:0x1010 data:4byte -lbl_805AE670 = .bss:0x805AE670; // type:object size:0x10 -LytMsgWindowSelectBtn__LytMsgWindowSelectBtnParts__STATE_WAIT = .bss:0x805AE680; // type:object size:0x40 data:4byte -LytMsgWindowSelectBtn__LytMsgWindowSelectBtnParts__STATE_ON = .bss:0x805AE6C0; // type:object size:0x40 data:4byte -LytMsgWindowSelectBtn__LytMsgWindowSelectBtnParts__STATE_SELECT = .bss:0x805AE700; // type:object size:0x40 data:4byte -LytMsgWindowSelectBtn__LytMsgWindowSelectBtnParts__STATE_OFF = .bss:0x805AE740; // type:object size:0x40 data:4byte -StateID_Wait__24dLytMsgWindowSelectBtn_c = .bss:0x805AE780; // type:object size:0x40 data:4byte -LytMsgWindowSelectBtn__STATE_IN = .bss:0x805AE7C0; // type:object size:0x40 data:4byte -LytMsgWindowSelectBtn__STATE_WAIT_SELECT = .bss:0x805AE800; // type:object size:0x80 data:4byte -LytMsgWindowSelectBtn__STATE_WAIT_DECIDE = .bss:0x805AE880; // type:object size:0x80 data:4byte -LytMsgWindowSelectBtn__STATE_OUT = .bss:0x805AE900; // type:object size:0x30 data:4byte +@28943 = .bss:0x805AE670; // type:object size:0xC scope:local +...bss.0 = .bss:0x805AE670; // type:label scope:local +StateID_Wait__29dLytMsgWindowSelectBtnParts_c = .bss:0x805AE680; // type:object size:0x30 data:4byte +@28947 = .bss:0x805AE6B0; // type:object size:0xC scope:local +StateID_On__29dLytMsgWindowSelectBtnParts_c = .bss:0x805AE6C0; // type:object size:0x30 data:4byte +@28951 = .bss:0x805AE6F0; // type:object size:0xC scope:local +StateID_Select__29dLytMsgWindowSelectBtnParts_c = .bss:0x805AE700; // type:object size:0x30 data:4byte +@28955 = .bss:0x805AE730; // type:object size:0xC scope:local +StateID_Off__29dLytMsgWindowSelectBtnParts_c = .bss:0x805AE740; // type:object size:0x30 data:4byte +@28959 = .bss:0x805AE770; // type:object size:0xC scope:local +StateID_Wait__24dLytMsgWindowSelectBtn_c = .bss:0x805AE780; // type:object size:0x30 data:4byte +@28963 = .bss:0x805AE7B0; // type:object size:0xC scope:local +StateID_In__24dLytMsgWindowSelectBtn_c = .bss:0x805AE7C0; // type:object size:0x30 data:4byte +@28967 = .bss:0x805AE7F0; // type:object size:0xC scope:local +StateID_WaitSelect__24dLytMsgWindowSelectBtn_c = .bss:0x805AE800; // type:object size:0x30 data:4byte +@28971 = .bss:0x805AE830; // type:object size:0xC scope:local +StateID_CursorInOut__24dLytMsgWindowSelectBtn_c = .bss:0x805AE840; // type:object size:0x30 scope:global +@28975 = .bss:0x805AE870; // type:object size:0xC scope:local +StateID_WaitDecide__24dLytMsgWindowSelectBtn_c = .bss:0x805AE880; // type:object size:0x30 data:4byte +@28979 = .bss:0x805AE8B0; // type:object size:0xC scope:local +StateID_WaitCancel__24dLytMsgWindowSelectBtn_c = .bss:0x805AE8C0; // type:object size:0x30 scope:global +@28983 = .bss:0x805AE8F0; // type:object size:0xC scope:local +StateID_Out__24dLytMsgWindowSelectBtn_c = .bss:0x805AE900; // type:object size:0x30 data:4byte @18287 = .bss:0x805AE930; // type:object size:0xC scope:local ...bss.0 = .bss:0x805AE930; // type:label scope:local StateID_Invisible__19dLytMsgWindowTalk_c = .bss:0x805AE940; // type:object size:0x30 data:4byte @@ -52294,17 +52393,27 @@ AcJstudioAct__STATE_PERFORMANCE = .bss:0x805B7CF0; // type:object size:0x40 data AcJstudioAct__STATE_LEAVING = .bss:0x805B7D30; // type:object size:0x30 data:4byte lbl_805B7D60 = .bss:0x805B7D60; // type:object size:0x10 data:4byte lbl_805B7D70 = .bss:0x805B7D70; // type:object size:0x60 data:4byte -lbl_805B7DD0 = .bss:0x805B7DD0; // type:object size:0x10 -lbl_805B7DE0 = .bss:0x805B7DE0; // type:object size:0x20 -StateID_Normal__17dLytControlGame_c = .bss:0x805B7E00; // type:object size:0x40 data:4byte -LytControlGame__StateID_Pause_SetRes = .bss:0x805B7E40; // type:object size:0x40 data:4byte -LytControlGame__StateID_Pause_SyncRes = .bss:0x805B7E80; // type:object size:0x40 data:4byte -LytControlGame__StateID_Pause = .bss:0x805B7EC0; // type:object size:0x40 data:4byte -LytControlGame__StateID_DelRes = .bss:0x805B7F00; // type:object size:0x40 data:4byte -LytControlGame__StateID_Map_SetRes = .bss:0x805B7F40; // type:object size:0x40 data:4byte -LytControlGame__StateID_Map_SyncRes = .bss:0x805B7F80; // type:object size:0x40 data:4byte -LytControlGame__StateID_Map = .bss:0x805B7FC0; // type:object size:0x40 data:4byte -LytControlGame__StateID_DelRes2 = .bss:0x805B8000; // type:object size:0x40 data:4byte +@36242 = .bss:0x805B7DD0; // type:object size:0xC scope:local +...bss.0 = .bss:0x805B7DD0; // type:label scope:local +sHio = .bss:0x805B7DE0; // type:object size:0x10 +@36261 = .bss:0x805B7DF0; // type:object size:0xC scope:local +StateID_Normal__17dLytControlGame_c = .bss:0x805B7E00; // type:object size:0x30 data:4byte +@36265 = .bss:0x805B7E30; // type:object size:0xC scope:local +StateID_Pause_SetRes__17dLytControlGame_c = .bss:0x805B7E40; // type:object size:0x30 data:4byte +@36269 = .bss:0x805B7E70; // type:object size:0xC scope:local +StateID_Pause_SyncRes__17dLytControlGame_c = .bss:0x805B7E80; // type:object size:0x30 data:4byte +@36273 = .bss:0x805B7EB0; // type:object size:0xC scope:local +StateID_Pause__17dLytControlGame_c = .bss:0x805B7EC0; // type:object size:0x30 data:4byte +@36277 = .bss:0x805B7EF0; // type:object size:0xC scope:local +StateID_Pause_DelRes__17dLytControlGame_c = .bss:0x805B7F00; // type:object size:0x30 data:4byte +@36281 = .bss:0x805B7F30; // type:object size:0xC scope:local +StateID_Map_SetRes__17dLytControlGame_c = .bss:0x805B7F40; // type:object size:0x30 data:4byte +@36285 = .bss:0x805B7F70; // type:object size:0xC scope:local +StateID_Map_SyncRes__17dLytControlGame_c = .bss:0x805B7F80; // type:object size:0x30 data:4byte +@36289 = .bss:0x805B7FB0; // type:object size:0xC scope:local +StateID_Map__17dLytControlGame_c = .bss:0x805B7FC0; // type:object size:0x30 data:4byte +@36293 = .bss:0x805B7FF0; // type:object size:0xC scope:local +StateID_Map_DelRes__17dLytControlGame_c = .bss:0x805B8000; // type:object size:0x30 data:4byte lbl_805B8040 = .bss:0x805B8040; // type:object size:0xE0 align:4 data:float lbl_805B8120 = .bss:0x805B8120; // type:object size:0x10 lbl_805B8130 = .bss:0x805B8130; // type:object size:0x60 data:4byte diff --git a/configure.py b/configure.py index 8c71ad3b..02365a0b 100644 --- a/configure.py +++ b/configure.py @@ -663,7 +663,7 @@ config.libs = [ Object(NonMatching, "toBeSorted/d_a_npc_ken_talk.cpp"), Object(NonMatching, "toBeSorted/d_a_jstudio_act.cpp"), Object(NonMatching, "toBeSorted/d_a_jstudio_sys.cpp"), - Object(NonMatching, "d/lyt/d_lyt_control_game.cpp"), + Object(Matching, "d/lyt/d_lyt_control_game.cpp"), Object(NonMatching, "d/lyt/d_lyt_control_title.cpp"), Object(NonMatching, "d/tg/d_t_map_area.cpp"), Object(NonMatching, "d/tg/d_t_truck_rails.cpp"), diff --git a/include/d/a/d_a_item.h b/include/d/a/d_a_item.h index 0997fb68..ed78c6c4 100644 --- a/include/d/a/d_a_item.h +++ b/include/d/a/d_a_item.h @@ -105,8 +105,17 @@ public: return sIsPerformingInitialCollection; } + static s32 getCollectionCurrentCount() { + return sCollectionCurrentCount; + } + + s32 getQuantity() const { + return mItemQuantity; + } + private: static bool sIsPerformingInitialCollection; + static s32 sCollectionCurrentCount; /* 0x334 */ UNKTYPE *mpMdl; // Model has its own handling system /* 0x338 */ dShadowCircle_c mShdw; diff --git a/include/d/a/d_a_itembase.h b/include/d/a/d_a_itembase.h index a08c33a2..9f91e60d 100644 --- a/include/d/a/d_a_itembase.h +++ b/include/d/a/d_a_itembase.h @@ -250,6 +250,10 @@ public: static u16 getTearBit(int tearNum); static bool setDungeonFlagForTear(int tearNum); + u16 getItemId_i() const { + return mId; + } + private: u16 mId; diff --git a/include/d/d_cs_game.h b/include/d/d_cs_game.h index b064844f..52940b71 100644 --- a/include/d/d_cs_game.h +++ b/include/d/d_cs_game.h @@ -436,8 +436,9 @@ public: bool isCursorActive() const { return mCursorActive; } - void setField0x9A0(u8 val) { - mCursorActive = val; + + void setField_0x9A2(bool value) { + field_0x9A2 = value; } void offNextCursor() { diff --git a/include/d/d_message.h b/include/d/d_message.h index a0729e2c..2c17253a 100644 --- a/include/d/d_message.h +++ b/include/d/d_message.h @@ -247,12 +247,12 @@ public: mInMapEvent = val; } - s32 getField_0x32C() const { - return field_0x32C; + s32 getMapEvent() const { + return mMapEvent; } - void setField_0x32C(s32 val) { - field_0x32C = val; + void setMapEvent(s32 val) { + mMapEvent = val; } void setField_0x329(bool v) { @@ -267,6 +267,10 @@ public: return field_0x32A; } + bool getField_0x330() const { + return field_0x330; + } + void setField_0x330(bool v) { field_0x330 = v; } @@ -367,8 +371,8 @@ private: /* 0x32A */ bool field_0x32A; /* 0x32B */ u8 field_0x32B; - /* 0x32C */ s32 field_0x32C; - /* 0x330 */ u8 field_0x330; + /* 0x32C */ s32 mMapEvent; + /* 0x330 */ bool field_0x330; /* 0x334 */ u32 mMinigameResultPoints; /* 0x338 */ u32 mMinigameTime; diff --git a/include/d/flag/storyflag_map.h b/include/d/flag/storyflag_map.h index 5ebbc965..64ca1504 100644 --- a/include/d/flag/storyflag_map.h +++ b/include/d/flag/storyflag_map.h @@ -60,7 +60,7 @@ enum StoryFlags_e { /** [Harp Cutscene (Lanayru Desert layer 2 / Lanayru Mines layer 2 / Temple of Time layer 2 / Behind The Temple * layer 3)] Story Flag #9 (0x0009) - JP 805ACD58 0x04 / US 805A9AD8 0x04 */ - STORYFLAG_9, + STORYFLAG_HARP_CUTSCENE, /** [Entering Ancient Cistern Cutscene] * Story Flag #10 (0x000A) - JP 805ACD58 0x08 / US 805A9AD8 0x08 @@ -111,7 +111,7 @@ enum StoryFlags_e { /** [Fire Dragon Text after SotH part Cutscene (Eldin Volcano, Digging Mitts Cave, Volcano Summit Waterfall layer * 4)] Story Flag #19 (0x0013) - JP 805ACD5B 0x08 / US 805A9ADB 0x08 */ - STORYFLAG_19, + STORYFLAG_BOKO_BASE_BEATEN, /** [Set when learning 3rd SotH part (Groosenator to Lanayru ready)] * Story Flag #20 (0x0014) - JP 805ACD5B 0x10 / US 805A9ADB 0x10 @@ -718,7 +718,7 @@ enum StoryFlags_e { /** [Groose lands in Faron after Harp (Sealed Temple layer 2)] * Story Flag #140 (0x008C) - JP 805ACD67 0x04 / US 805A9AE7 0x04 */ - STORYFLAG_140, + STORYFLAG_GROOSE_LANDS_IN_FARON, /** [Ballad of the Goddess played with Impa (Sealed Grounds layer 2)] * Story Flag #141 (0x008D) - JP 805ACD6C 0x01 / US 805A9AEC 0x01 @@ -863,7 +863,7 @@ enum StoryFlags_e { /** [Eldin Eruption Cutscene ready to play (set when Levias explains SotH quest, set and unset by Faron and Lanayru * SotH)] Story Flag #169 (0x00A9) - JP 805ACD62 0x01 / US 805A9AE2 0x01 */ - STORYFLAG_169, + STORYFLAG_ELDIN_VOLCANO_CAN_ERUPT, /** [Fire Dragon teaches SotH part Cutscene (Fire Dragon's Lair layer 2)] * Story Flag #170 (0x00AA) - JP 805ACD62 0x02 / US 805A9AE2 0x02 @@ -948,12 +948,12 @@ enum StoryFlags_e { /** [Water Basin collected (unsets when scrapper picks up anything else)] * Story Flag #186 (0x00BA) - JP 805ACD69 0x02 / US 805A9AE9 0x02 */ - STORYFLAG_186, + STORYFLAG_SCRAPPER_HAS_WATER_BASIN, /** [Big Frog Watered] * Story Flag #187 (0x00BB) - JP 805ACD69 0x04 / US 805A9AE9 0x04 */ - STORYFLAG_187, + STORYFLAG_SUMMIT_BIG_FROG_WATERED, /** [Asking Fi about the Water Basin after finding the Big Flames in fromt of FS] * Story Flag #188 (0x00BC) - JP 805ACD69 0x08 / US 805A9AE9 0x08 @@ -3738,7 +3738,7 @@ enum StoryFlags_e { /** [set after scrappers text at start of Water Basin Escord] * Story Flag #743 (0x02E7) - JP 805ACDA6 0x80 / US 805A9B26 0x80 */ - STORYFLAG_743, + STORYFLAG_WATER_BASIN_ESCORT_STARTED, /** [Scrapper text at start of scrapper escort] * Story Flag #744 (0x02E8) - JP 805ACDA9 0x01 / US 805A9B29 0x01 diff --git a/include/d/lyt/d_lyt_control_game.h b/include/d/lyt/d_lyt_control_game.h index c36b2ee0..a14bc610 100644 --- a/include/d/lyt/d_lyt_control_game.h +++ b/include/d/lyt/d_lyt_control_game.h @@ -1,29 +1,58 @@ #ifndef D_LYT_CONTROL_GAME_H #define D_LYT_CONTROL_GAME_H +// clang-format off +// vtable order +#include "common.h" #include "d/d_base.h" -#include "d/lyt/d_lyt_map.h" -#include "d/lyt/d_lyt_wipe.h" #include "d/lyt/meter/d_lyt_meter.h" #include "d/lyt/msg_window/d_lyt_msg_window.h" #include "d/lyt/msg_window/d_lyt_simple_window.h" +#include "d/lyt/d_lyt_wipe.h" +#include "d/lyt/d_lyt_help.h" +#include "d/lyt/d_lyt_map.h" #include "s/s_State.hpp" #include "toBeSorted/arc_managers/layout_arc_manager.h" #include "toBeSorted/raii_ptr.h" +// clang-format on + +class dLytDrawMark_c; class dLytControlGame_c : public dBase_c { public: dLytControlGame_c(); virtual ~dLytControlGame_c(); + enum Cmd_e { + CMD_NONE = 0, + CMD_MAP = 1, + CMD_PAUSE = 2, + CMD_HELP = 3, + }; + + virtual int create() override; + virtual int doDelete() override; + virtual int execute() override; + virtual int draw() override; + bool isInSomeMapState() const; bool isNotInStateMap() const; - void openCollectionScreenDemo(); - bool isStateNormalOrNotInEvent() const; - void somehowRelatedToEnteringLightPillars(s32, s32, s32); - - void fn_802CCD40(bool); + bool isStateNotNormalOrInEvent() const; + bool fn_802CFF60() const; + + void setMapEventDone(bool); void fn_802D04F0(); + void checkForBeaconNextToMark(); + + void hideHelp(); + void changeHelpText(s32 textIndex); + void openPause(); + void openPauseDemo(); + void openHelp(s32 textIndex); + void openMap(); + void openMapEvent(s32 mapEvent, s32 arg1, s32 arg2); + + void resetFootsteps(); const dMapFootPrintsQueue_c *getFootprintsQueue() const { return mFootprintsMgr.getQueue(); @@ -80,31 +109,43 @@ public: } private: + bool checkStoryflag(s32 flag) const; + void fn_802CFA90(); + bool canOpenPause(); + bool releaseRes(); + bool decrementRes(); + /* 0x00068 */ UI_STATE_MGR_DECLARE(dLytControlGame_c); - /* 0x000A4 */ RaiiPtr field_0x000A4; + /* 0x000A4 */ RaiiPtr mpMap; /* 0x000A8 */ dLytMeter_c mMeter; /* 0x13C10 */ dLytMsgWindow_c mMsgWindow; /* 0x14E34 */ dLytSimpleWindow_c mSimpleWindow; /* 0x152A0 */ dLytWipe_c mWipe; - /* 0x15848 */ u8 _0x15848[0x15850 - 0x15848]; + /* 0x15848 */ dLytHelp_c *mpHelp; + /* 0x1584C */ dLytDrawMark_c *mpDrawMark; /* 0x15850 */ dMapFootPrintsMgr_c mFootprintsMgr; - /* 0x15C24 */ UNKWORD field_0x15C24; - /* 0x15C28 */ UNKWORD field_0x15C28; - + /* 0x15C24 */ s32 mCommand; + /* 0x15C28 */ s32 mHelpTextIndex; /* 0x15C2C */ s32 mCurrentPauseDisp; /* 0x15C30 */ s32 mPauseDisp00Tab; + /* 0x15C34 */ u8 mIsEvent; + /* 0x15C38 */ s32 mMapEvent; - /* 0x15C34 */ u8 _0x15C34[0x15C40 - 0x15C34]; + /* 0x15C3C */ u8 _0x15C3C[0x15C40 - 0x15C3C]; /* 0x15C40 */ LayoutArcControl mLytArcControl; - /* 0x15C4C */ u8 _0x15C4C[0x15C60 - 0x15C4C]; + /* 0x15C4C */ s32 mMapEventArg1; + /* 0x15C50 */ s32 mMapEventArg2; + + /* 0x15C54 */ UNKWORD field_0x15C54; + /* 0x15C58 */ UNKWORD field_0x15C58; + + /* 0x15C5C */ u8 _0x15C5C[0x15C60 - 0x15C5C]; /* 0x15C60 */ u16 mItemForPauseDemo; - - /* 0x15C62 */ u8 _0x15C62[0x15C64 - 0x15C62]; - + /* 0x15C62 */ u16 mPickupItemCount; /* 0x15C64 */ u16 mItemCountForPauseDemo; /* 0x15C66 */ u8 field_0x15C66; /* 0x15C67 */ bool mIsPauseDemo; diff --git a/include/d/lyt/d_lyt_draw_mark.h b/include/d/lyt/d_lyt_draw_mark.h new file mode 100644 index 00000000..8ec65799 --- /dev/null +++ b/include/d/lyt/d_lyt_draw_mark.h @@ -0,0 +1,48 @@ +#ifndef D_LYT_DRAW_MARK_H +#define D_LYT_DRAW_MARK_H + +#include "d/lyt/d2d.h" +#include "m/m_vec.h" +#include "s/s_State.hpp" + +class dLytDrawMark_c { +public: + dLytDrawMark_c() : mStateMgr(*this) {} + ~dLytDrawMark_c() {} + + bool build(UNKWORD); + bool remove(); + bool execute(); + bool draw(); + + u8 getField_0x940() const { + return field_0x940; + } + + void setField_0x941(u8 v) { + field_0x941 = v; + } + +private: + /* 0x000 */ UI_STATE_MGR_DECLARE(dLytDrawMark_c); + /* 0x018 */ d2d::LytBase_c mLyt; + /* 0x0CC */ d2d::AnmGroup_c mAnm[16]; + + /* 0x4CC */ u8 _0x4CC[0x504 - 0x4CC]; + + /* 0x504 */ d2d::ResAccIf_c mResAcc; + + /* 0x874 */ u8 _0x874[0x88C - 0x874]; + + /* 0x88C */ mVec2_c field_0x88C[6]; + /* 0x8BC */ mVec2_c field_0x8BC[6]; + + /* 0x8EC */ u8 _0x8EC[0x940 - 0x8EC]; + + /* 0x940 */ u8 field_0x940; + /* 0x941 */ u8 field_0x941; + + /* 0x942 */ u8 _0x942[0x958 - 0x942]; +}; + +#endif diff --git a/include/d/lyt/d_lyt_help.h b/include/d/lyt/d_lyt_help.h index e3bd2401..10f9f377 100644 --- a/include/d/lyt/d_lyt_help.h +++ b/include/d/lyt/d_lyt_help.h @@ -65,6 +65,22 @@ public: bool setText(s32 textIndex); void changeText(s32 textIndex); + static dLytHelp_c *GetInstance() { + return sInstance; + } + + bool isStateEnd() const { + return *mStateMgr.getStateID() == StateID_End; + } + + void requestOut() { + mOutRequest = true; + } + + bool isWaiting() const { + return mIsWaiting; + } + private: static dLytHelp_c *sInstance; @@ -80,8 +96,8 @@ private: /* 0x04C */ d2d::ResAccIf_c mResAcc; /* 0x3BC */ dLytHelpMain_c *mpMain; /* 0x3C0 */ bool field_0x3C0; - /* 0x3C1 */ bool field_0x3C1; - /* 0x3C2 */ bool field_0x3C2; + /* 0x3C1 */ bool mOutRequest; + /* 0x3C2 */ bool mIsWaiting; /* 0x3C4 */ s32 mTextIndex; /* 0x3C8 */ s32 field_0x3C8; }; diff --git a/include/d/lyt/d_lyt_map.h b/include/d/lyt/d_lyt_map.h index 54df7cf9..539c0721 100644 --- a/include/d/lyt/d_lyt_map.h +++ b/include/d/lyt/d_lyt_map.h @@ -4,6 +4,7 @@ #include "common.h" #include "d/d_cursor_hit_check.h" #include "d/d_message.h" +#include "d/d_sc_game.h" #include "d/lyt/d2d.h" #include "d/lyt/d_lyt_map_capture.h" #include "d/lyt/d_lyt_map_global.h" @@ -13,6 +14,7 @@ #include "egg/core/eggColorFader.h" #include "egg/core/eggFader.h" #include "m/m2d.h" +#include "m/m_allocator.h" #include "m/m_angle.h" #include "m/m_vec.h" #include "nw4r/lyt/lyt_bounding.h" @@ -87,10 +89,18 @@ public: void execute(); + void reset() { + mQueue.init(); + } + const dMapFootPrintsQueue_c *getQueue() const { return &mQueue; } + void setFootstepMinDistSq(f32 value) { + mMinStepDistanceSq = value; + } + private: /* 0x004 */ dMapFootPrintsQueue_c mQueue; /* 0x3D0 */ f32 mMinStepDistanceSq; @@ -636,10 +646,9 @@ public: /** arg1 = surface province */ MAP_EVENT_SAVE_OBJ = 10, MAP_EVENT_11 = 11, - }; -private: - // TODO - need to come up with better names for all of these enums and concepts + MAP_EVENT_MAX = 12, + }; enum SurfaceProvince_e { SURFACE_PROVINCE_FARON = 0, @@ -647,6 +656,9 @@ private: SURFACE_PROVINCE_LANAYRU = 2, }; +private: + // TODO - need to come up with better names for all of these enums and concepts + enum AreaGroup_e { AREAGROUP_SKY = 1, AREAGROUP_FARON = 2, @@ -716,7 +728,7 @@ private: void loadTextboxes(); void saveMapState(); - void initMapState(); + static void initMapState(); void loadMapState(); void checkCursorPointedAtMap(); @@ -747,6 +759,10 @@ private: mMapEvent == MAP_EVENT_11; } + void setMapEventDone(bool done) { + mEventDone = done; + } + /* 0x0010 */ UI_STATE_MGR_DECLARE(dLytMapMain_c); /* 0x004C */ dFlowMgrBase_c mFlowMgr; /* 0x00A4 */ dFlow_c mFlow; @@ -896,9 +912,13 @@ private: class dLytMap_c { public: dLytMap_c() { + mMapFader.setVisible(false); sInstance = this; } virtual ~dLytMap_c() { + if (dScGame_c::GetInstance() != nullptr) { + dScGame_c::GetInstance()->setTargetingScreenPrio(0x85); + } sInstance = nullptr; } @@ -918,6 +938,22 @@ public: return mMapMain.isOpen(); } + bool checkClose() const { + return mMapMain.checkClose(); + } + + bool isMapIntroDone() const { + return mMapMain.isMapIntroDone(); + } + + void close() { + mMapMain.close(); + } + + static void initMapState() { + dLytMapMain_c::initMapState(); + } + bool isVisibleNoIntro() const { return mMapMain.isVisibleNoIntro(); } @@ -938,6 +974,14 @@ public: return mMapMain.mMapEvent == dLytMapMain_c::MAP_EVENT_SAVE_OBJ; } + void startMapEvent(s32 mapEvent, s32 arg1, s32 arg2) { + mMapMain.startMapEvent(mapEvent, arg1, arg2); + } + + void setMapEventDone(bool done) { + mMapMain.setMapEventDone(done); + } + void queueMapEvent(s32 mapEvent, s32 arg1, s32 arg2) { mMapMain.queueMapEvent(mapEvent, arg1, arg2); } @@ -951,7 +995,7 @@ public: private: /* 0x0004 */ d2d::ResAccIf_c mResAcc; /* 0x0374 */ dLytMapMain_c mMapMain; - /* 0x91A4 */ u8 _0x91A4[0x91C0 - 0x91A4]; + /* 0x91A4 */ mHeapAllocator_c field_0x91A4; /* 0x91C0 */ dLytMapFader_c mMapFader; static dLytMap_c *sInstance; diff --git a/include/d/lyt/d_lyt_map_global.h b/include/d/lyt/d_lyt_map_global.h index fb0b25bf..ef5d74fa 100644 --- a/include/d/lyt/d_lyt_map_global.h +++ b/include/d/lyt/d_lyt_map_global.h @@ -176,8 +176,12 @@ public: mMapEvent = v; } - u8 getField_0x54() const { - return field_0x54; + bool isInMapEvent() const { + return mInMapEvent; + } + + void setInMapEvent(bool v) { + mInMapEvent = v; } void projectOntoMap(mVec2_c &result, const mVec3_c &position) const; @@ -213,7 +217,7 @@ private: /* 0x4E */ u8 mAlpha; /* 0x4F */ u8 field_0x4F; /* 0x50 */ s32 mMapEvent; - /* 0x54 */ u8 field_0x54; + /* 0x54 */ bool mInMapEvent; /* 0x55 */ u8 field_0x55; /* 0x56 */ mAng field_0x56; /* 0x58 */ f32 field_0x58; diff --git a/include/d/lyt/d_lyt_pause.h b/include/d/lyt/d_lyt_pause.h index 033ee400..f38dcc3a 100644 --- a/include/d/lyt/d_lyt_pause.h +++ b/include/d/lyt/d_lyt_pause.h @@ -215,6 +215,10 @@ public: void inRequest(); + bool isActive() const { + return mIsActive; + } + static f32 sDisp00ArrowRotation; static f32 sDisp00ArrowLength; @@ -256,7 +260,7 @@ private: /* 0x0833 */ u8 mCurrentSelectionTab; /* 0x0834 */ u8 mTimer; /* 0x0835 */ u8 field_0x0835; - /* 0x0836 */ bool field_0x0836; + /* 0x0836 */ bool mIsActive; /* 0x0837 */ bool field_0x0837; /* 0x0838 */ bool field_0x0838; /* 0x0839 */ bool field_0x0839; diff --git a/include/d/lyt/meter/d_lyt_meter.h b/include/d/lyt/meter/d_lyt_meter.h index 26f36e5a..a0ae18cc 100644 --- a/include/d/lyt/meter/d_lyt_meter.h +++ b/include/d/lyt/meter/d_lyt_meter.h @@ -74,6 +74,13 @@ public: POSITION_MAP = 1, }; + enum Mode_e { + MODE_MAP_INIT = 0, + MODE_MAP = 1, + MODE_PAUSE = 2, + MODE_NONE = 4, + }; + dLytMeterMain_c(); virtual ~dLytMeterMain_c() {} @@ -250,6 +257,18 @@ public: return mMain.mItemSelect.fn_800F0220(arg); } + bool itemSelectFn800EFDF0(bool b) const { + return mMain.mItemSelect.fn_800EFDF0(b); + } + + bool minusBtnFn800F7600() const { + return mMain.mMinusBtn.fn_800F7600(); + } + + bool dowsingFn800FE4B0() const { + return mMain.mDowsing.fn_800FE4B0(); + } + bool dowsingDemoRelated(s32 arg) { return mMain.mDowsing.fn_800FE3C0(arg); } @@ -484,6 +503,12 @@ public: } } + static void setPlusBtnCall(bool call) { + if (sInstance != nullptr) { + sInstance->mMain.mPlusBtn.setCall(call); + } + } + static void setSelectBtn(f32 angle, f32 length) { if (sInstance != nullptr) { dLytMeterMain_c *main = &sInstance->mMain; diff --git a/include/d/snd/d_snd_source_mgr.h b/include/d/snd/d_snd_source_mgr.h index f3f56952..c94b3404 100644 --- a/include/d/snd/d_snd_source_mgr.h +++ b/include/d/snd/d_snd_source_mgr.h @@ -66,6 +66,8 @@ public: void setMutedFromFader(bool muteFlag); void onEventStart(); void onEventEnd(); + void fn_803852B0(); + void fn_803852F0(); private: void calcEnemyObjVolume(); diff --git a/include/toBeSorted/d_beacon.h b/include/toBeSorted/d_beacon.h index b963d98a..a0e0d588 100644 --- a/include/toBeSorted/d_beacon.h +++ b/include/toBeSorted/d_beacon.h @@ -19,4 +19,6 @@ void setBeaconPositionChecked(const mVec3_c *position, u32 beaconIndex); /** Checks whether the current stage is ineligible for beacon placement */ bool doesStageForbidBeaconPlacement(); +const mVec3_c *getBeaconPosition(u32 beaconIndex); + #endif diff --git a/include/toBeSorted/event_manager.h b/include/toBeSorted/event_manager.h index d1c8bae8..1b89074f 100644 --- a/include/toBeSorted/event_manager.h +++ b/include/toBeSorted/event_manager.h @@ -52,6 +52,7 @@ public: // Something like isActorInEvent maybe? static bool FUN_800a0570(const dAcBase_c *actor); static bool FUN_800a0ba0(); + static bool fn_8009F990(); private: /* 0x000 */ u8 _000[0x084 - 0x000]; diff --git a/include/toBeSorted/raii_ptr.h b/include/toBeSorted/raii_ptr.h index 31d8ac21..22bab4d4 100644 --- a/include/toBeSorted/raii_ptr.h +++ b/include/toBeSorted/raii_ptr.h @@ -17,6 +17,13 @@ public: } } + void destruct() { + if (mPtr != nullptr) { + delete mPtr; + mPtr = nullptr; + } + } + void operator=(T *ptr) { mPtr = ptr; } diff --git a/src/d/d_message.cpp b/src/d/d_message.cpp index f2343080..a031544e 100644 --- a/src/d/d_message.cpp +++ b/src/d/d_message.cpp @@ -431,13 +431,13 @@ bool dFlow_c::handleEventInternal(const MsbFlowInfo *element) { case 6: mapEvent = dLytMapMain_c::MAP_EVENT_FIELD_MAP_CHANGE_8; break; case 7: mapEvent = dLytMapMain_c::MAP_EVENT_GODDESS_CUBE; break; } - dMessage_c::getInstance()->setField_0x32C(mapEvent); + dMessage_c::getInstance()->setMapEvent(mapEvent); dMessage_c::getInstance()->setField_0x329(true); if (dMessage_c::getInstance()->getInMapEvent() == false) { dMessage_c::getInstance()->setInMapEvent(true); dMessage_c::getInstance()->clearLightPillarRelatedArgs(); - if (dLytControlGame_c::getInstance()->isStateNormalOrNotInEvent()) { - dLytControlGame_c::getInstance()->somehowRelatedToEnteringLightPillars( + if (dLytControlGame_c::getInstance()->isStateNotNormalOrInEvent()) { + dLytControlGame_c::getInstance()->openMapEvent( mapEvent, arg1, arg2 ); } @@ -450,18 +450,19 @@ bool dFlow_c::handleEventInternal(const MsbFlowInfo *element) { case EVENT_END_MAP_EVENT: { // TODO what do these modes do? if (params1n2 == 1) { + // Close map if (!dLytControlGame_c::getInstance()->isNotInStateMap()) { - dLytControlGame_c::getInstance()->fn_802CCD40(true); + dLytControlGame_c::getInstance()->setMapEventDone(true); } } else if (params1n2 == 2) { dMessage_c::getInstance()->setField_0x330(1); - if (dMessage_c::getInstance()->getField_0x32C() != 4 && - dMessage_c::getInstance()->getField_0x32C() != 12) { + if (dMessage_c::getInstance()->getMapEvent() != dLytMapMain_c::MAP_EVENT_DUNGEON_MAP_GET && + dMessage_c::getInstance()->getMapEvent() != dLytMapMain_c::MAP_EVENT_MAX) { dMessage_c::getInstance()->setField_0x32A(1); } } else { - if (dMessage_c::getInstance()->getField_0x32C() != 4 && - dMessage_c::getInstance()->getField_0x32C() != 12) { + if (dMessage_c::getInstance()->getMapEvent() != dLytMapMain_c::MAP_EVENT_DUNGEON_MAP_GET && + dMessage_c::getInstance()->getMapEvent() != dLytMapMain_c::MAP_EVENT_MAX) { dMessage_c::getInstance()->setField_0x32A(1); } } @@ -517,7 +518,7 @@ bool dFlow_c::handleEventInternal(const MsbFlowInfo *element) { break; case EVENT_DEMO_COLLECTION_SCREEN: if (!MinigameManager::isInMinigameState(MinigameManager::INSECT_CAPTURE)) { - dLytControlGame_c::getInstance()->openCollectionScreenDemo(); + dLytControlGame_c::getInstance()->openPauseDemo(); } break; } @@ -1767,7 +1768,7 @@ void dMessage_c::init() { mInMapEvent = false; field_0x329 = 0; field_0x32A = 0; - sInstance->setField_0x32C(12); + sInstance->setMapEvent(dLytMapMain_c::MAP_EVENT_MAX); field_0x330 = 0; } diff --git a/src/d/lyt/d_lyt_control_game.cpp b/src/d/lyt/d_lyt_control_game.cpp index 23c96f7d..357bc1ee 100644 --- a/src/d/lyt/d_lyt_control_game.cpp +++ b/src/d/lyt/d_lyt_control_game.cpp @@ -1,14 +1,706 @@ #include "d/lyt/d_lyt_control_game.h" #include "common.h" +#include "d/a/d_a_base.h" +#include "d/a/d_a_item.h" +#include "d/a/d_a_itembase.h" +#include "d/a/d_a_player.h" +#include "d/d_base.h" +#include "d/d_cs_game.h" +#include "d/d_d2d.h" +#include "d/d_heap.h" +#include "d/d_message.h" +#include "d/d_rawarchive.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/lyt/d_lyt_draw_mark.h" +#include "d/lyt/d_lyt_help.h" +#include "d/lyt/d_lyt_map.h" +#include "d/lyt/d_lyt_map_global.h" +#include "d/lyt/d_lyt_pause.h" +#include "d/lyt/meter/d_lyt_meter.h" +#include "d/snd/d_snd_player_mgr.h" +#include "d/snd/d_snd_source_mgr.h" +#include "d/t/d_t_map_mark.h" +#include "f/f_base.h" +#include "f/f_manager.h" #include "f/f_profile_name.h" +#include "m/m2d.h" +#include "m/m_vec.h" +#include "toBeSorted/arc_managers/layout_arc_manager.h" +#include "toBeSorted/d_beacon.h" +#include "toBeSorted/event_manager.h" +#include "toBeSorted/raii_ptr.h" -SPECIAL_BASE_PROFILE(LYT_CONTROL_GAME, dLytControlGame_c, fProfile::LYT_CONTROL_GAME, 0x9, 96); +class dLytControlGame_HIO_c { +public: + dLytControlGame_HIO_c(); + virtual ~dLytControlGame_HIO_c(); -dLytControlGame_c::dLytControlGame_c() : mStateMgr(*this), field_0x15C24(0), field_0x15C28(0) { + /* 0x04 */ f32 field_0x04; + /* 0x08 */ f32 field_0x08; + /* 0x0C */ s16 field_0x0C; + /* 0x0E */ u8 field_0x0E; + /* 0x0F */ u8 field_0x0F; +}; + +dLytControlGame_HIO_c sHio; + +dLytControlGame_HIO_c::dLytControlGame_HIO_c() : field_0x04(300.0f), field_0x08(1.0f), field_0x0E(1), field_0x0F(0) { + field_0x0C = 0x1F4; +} +dLytControlGame_HIO_c::~dLytControlGame_HIO_c() {} + +SPECIAL_BASE_PROFILE(LYT_CONTROL_GAME, dLytControlGame_c, fProfile::LYT_CONTROL_GAME, 0x2A9, 0x19); + +dLytControlGame_c *dLytControlGame_c::sInstance; + +STATE_DEFINE(dLytControlGame_c, Normal); +STATE_DEFINE(dLytControlGame_c, Pause_SetRes); +STATE_DEFINE(dLytControlGame_c, Pause_SyncRes); +STATE_DEFINE(dLytControlGame_c, Pause); +STATE_DEFINE(dLytControlGame_c, Pause_DelRes); +STATE_DEFINE(dLytControlGame_c, Map_SetRes); +STATE_DEFINE(dLytControlGame_c, Map_SyncRes); +STATE_DEFINE(dLytControlGame_c, Map); +STATE_DEFINE(dLytControlGame_c, Map_DelRes); + +void dLytControlGame_c::initializeState_Normal() {} +void dLytControlGame_c::executeState_Normal() {} +void dLytControlGame_c::finalizeState_Normal() {} + +static const char *const sMenuPause = "MenuPause"; +static const char *const sMap2D = "Map2D"; +static const char *const sMapField = "MapField"; +static const char *const sMapSky = "MapSky"; +static const char *const sCommonArrow = "CommonArrow"; + +void dLytControlGame_c::initializeState_Pause_SetRes() { + dLytMeter_c::GetInstance()->setMeterField_0x13750(dLytMeterMain_c::MODE_PAUSE); + dBase_c::s_NextExecuteControlFlags |= BASE_PROP_0x1; + static const char *sLytArcs[] = {sMenuPause, sCommonArrow}; + mLytArcControl.set(sLytArcs, ARRAY_LENGTH(sLytArcs)); +} +void dLytControlGame_c::executeState_Pause_SetRes() { + mLytArcControl.load(nullptr); + mStateMgr.changeState(StateID_Pause_SyncRes); +} +void dLytControlGame_c::finalizeState_Pause_SetRes() {} + +void dLytControlGame_c::initializeState_Pause_SyncRes() {} +void dLytControlGame_c::executeState_Pause_SyncRes() { + if (!mLytArcControl.allLoaded()) { + return; + } + if (mpHelp != nullptr) { + return; + } + mStateMgr.changeState(StateID_Pause); +} +void dLytControlGame_c::finalizeState_Pause_SyncRes() {} + +void dLytControlGame_c::initializeState_Pause() { + dBase_c::createBase(fProfile::LYT_PAUSE, this, 0, OTHER); + if (dLytPauseMgr_c::GetInstance() == nullptr) { + return; + } + dLytPauseMgr_c::GetInstance()->inRequest(); + if (dCsGame_c::GetInstance()->shouldDraw()) { + dCsGame_c::GetInstance()->offNextCursor(); + } + mCommand = CMD_NONE; +} +void dLytControlGame_c::executeState_Pause() { + if (dLytPauseMgr_c::GetInstance() != nullptr && !dLytPauseMgr_c::GetInstance()->isActive()) { + mStateMgr.changeState(StateID_Pause_DelRes); + } +} +void dLytControlGame_c::finalizeState_Pause() {} + +void dLytControlGame_c::initializeState_Pause_DelRes() {} +void dLytControlGame_c::executeState_Pause_DelRes() { + if (!mLytArcControl.release()) { + return; + } + if (dLytPauseMgr_c::GetInstance() != nullptr) { + dLytPauseMgr_c::GetInstance()->deleteRequest(); + } + dSndSourceMgr_c::GetInstance()->fn_803852F0(); + mStateMgr.changeState(StateID_Normal); +} +void dLytControlGame_c::finalizeState_Pause_DelRes() { + dLytMeter_c::GetInstance()->setMeterField_0x13750(dLytMeterMain_c::MODE_NONE); +} + +void dLytControlGame_c::initializeState_Map_SetRes() { + // Not sure if this is the right enum + if (!EventManager::isInEvent() || mMapEvent == dLytMapMain_c::MAP_EVENT_11) { + dBase_c::s_NextExecuteControlFlags |= BASE_PROP_0x10; + } + dLytMeter_c::GetInstance()->setMeterField_0x13750(dLytMeterMain_c::MODE_MAP_INIT); +} +void dLytControlGame_c::executeState_Map_SetRes() { + LayoutArcManager::GetInstance()->loadLayoutArcFromDisk(sMap2D, nullptr); + if (dStageMgr_c::GetInstance()->isSTIFAreaSky()) { + LayoutArcManager::GetInstance()->loadLayoutArcFromDisk(sMapSky, nullptr); + } else { + LayoutArcManager::GetInstance()->loadLayoutArcFromDisk(sMapField, nullptr); + } + mStateMgr.changeState(StateID_Map_SyncRes); +} +void dLytControlGame_c::finalizeState_Map_SetRes() {} + +void dLytControlGame_c::initializeState_Map_SyncRes() {} +void dLytControlGame_c::executeState_Map_SyncRes() { + dArcResult_e result1 = LayoutArcManager::GetInstance()->ensureLoaded1(sMap2D); + dArcResult_e result2; + if (dStageMgr_c::GetInstance()->isSTIFAreaSky()) { + result2 = LayoutArcManager::GetInstance()->ensureLoaded1(sMapSky); + } else { + result2 = LayoutArcManager::GetInstance()->ensureLoaded1(sMapField); + } + if (result1 == D_ARC_RESULT_OK && result2 == D_ARC_RESULT_OK) { + mStateMgr.changeState(StateID_Map); + } +} +void dLytControlGame_c::finalizeState_Map_SyncRes() {} + +void dLytControlGame_c::setMapEventDone(bool b) { + mpMap->setMapEventDone(b); +} + +void dLytControlGame_c::initializeState_Map() { + mpMap = new (dHeap::layoutEx2Heap.heap) dLytMap_c(); + mpMap->build(); + mpMap->startMapEvent(mMapEvent, mMapEventArg1, mMapEventArg2); + dLytMapGlobal_c::GetInstance()->setInMapEvent(mMapEvent != dLytMapMain_c::MAP_EVENT_NONE); +} +void dLytControlGame_c::executeState_Map() { + if (dLytMap_c::GetInstance()->isOpen()) { + if (dLytMeter_c::GetInstance()->getMeterField_0x13750() != dLytMeterMain_c::MODE_MAP) { + dLytMeter_c::GetInstance()->setMeterField_0x13750(dLytMeterMain_c::MODE_MAP); + if (StoryflagManager::sInstance->getCounterOrFlag(STORYFLAG_PLUS_BTN_NOTICE)) { + StoryflagManager::sInstance->unsetFlag(STORYFLAG_PLUS_BTN_NOTICE); + } + } + if (dLytMeter_c::GetInstance()->getBasicPosition() != dLytMeterMain_c::POSITION_MAP) { + dLytMeter_c::GetInstance()->setBasicPosition(dLytMeterMain_c::POSITION_MAP); + } + } + + if (mpMap->checkClose()) { + mpMap->close(); + if (dMessage_c::getInstance()->getField_0x330()) { + checkForBeaconNextToMark(); + } + mStateMgr.changeState(StateID_Map_DelRes); + } + + if (mpMap->isMapIntroDone()) { + mStateMgr.changeState(StateID_Map_DelRes); + } + mpMap->execute(); +} +void dLytControlGame_c::finalizeState_Map() {} + +void dLytControlGame_c::initializeState_Map_DelRes() {} +void dLytControlGame_c::executeState_Map_DelRes() { + // Maybe an inline + if (dLytMap_c::GetInstance()->isVisible()) { + mpMap->execute(); + return; + } + + dArcResult_e result1 = LayoutArcManager::GetInstance()->ensureLoaded1(sMap2D); + dArcResult_e result2; + + if (result1 != D_ARC_RESULT_ERROR_NOT_FOUND) { + if (result1 != D_ARC_RESULT_OK) { + return; + } + if (LayoutArcManager::GetInstance()->decrement(sMap2D)) { + if (mpMap != nullptr) { + mpMap->remove(); + mpMap.destruct(); + m2d::setLytAllocator(); + } + dSndSourceMgr_c::GetInstance()->fn_803852F0(); + mStateMgr.changeState(StateID_Normal); + } + } + + if (dStageMgr_c::GetInstance()->isSTIFAreaSky()) { + result2 = LayoutArcManager::GetInstance()->ensureLoaded1(sMapSky); + } else { + result2 = LayoutArcManager::GetInstance()->ensureLoaded1(sMapField); + } + + if (result2 != D_ARC_RESULT_ERROR_NOT_FOUND) { + if (result2 != D_ARC_RESULT_OK) { + return; + } + if (dStageMgr_c::GetInstance()->isSTIFAreaSky()) { + LayoutArcManager::GetInstance()->decrement(sMapSky); + } else { + LayoutArcManager::GetInstance()->decrement(sMapField); + } + } +} +void dLytControlGame_c::finalizeState_Map_DelRes() { + dLytMeter_c::GetInstance()->setMeterField_0x13750(dLytMeterMain_c::MODE_NONE); + dLytMeter_c::GetInstance()->setBasicPosition(dLytMeterMain_c::POSITION_NORMAL); + dMessage_c::getInstance()->setMapEvent(dLytMapMain_c::MAP_EVENT_MAX); +} + +dLytControlGame_c::dLytControlGame_c() : mStateMgr(*this), mCommand(CMD_NONE), mHelpTextIndex(0) { sInstance = this; } dLytControlGame_c::~dLytControlGame_c() { sInstance = nullptr; } + +int dLytControlGame_c::create() { + if (dStage_c::GetInstance() == nullptr) { + return NOT_READY; + } + dLytMap_c::initMapState(); + mMeter.build(); + mMsgWindow.build(); + mSimpleWindow.build(); + mWipe.build(); + + dBase_c::createBase(fProfile::LYT_ENEMY_ICON, this, 0, OTHER); + dBase_c::createBase(fProfile::LYT_DROP_LINE, this, 0, OTHER); + dBase_c::createBase(fProfile::LYT_FORCE_LINE, this, 0, OTHER); + dBase_c::createBase(fProfile::LYT_SAVE_MGR, this, 0, OTHER); + + if (dScGame_c::currentSpawnInfo.stageName == "F103_1" || dScGame_c::currentSpawnInfo.stageName == "t_tkm26" || + dScGame_c::currentSpawnInfo.stageName == "F103" || dScGame_c::currentSpawnInfo.stageName == "t_tkm24") { + dBase_c::createBase(fProfile::LYT_SUIRYU_SCORE, this, 0, OTHER); + dBase_c::createBase(fProfile::LYT_SUIRYU_SCORE_COMP, this, 0, OTHER); + } else if (dScGame_c::isCurrentStage("B301")) { + dBase_c::createBase(fProfile::LYT_DEMO_DOWSING, this, 0, OTHER); + } + + mCommand = CMD_NONE; + mHelpTextIndex = 0; + + StoryflagManager *mgr = StoryflagManager::sInstance; + + mCurrentPauseDisp = mgr->getCounterOrFlag(STORYFLAG_ON_COLLECTION_SCREEN); + mPauseDisp00Tab = mgr->getCounterOrFlag(STORYFLAG_SAVED_DISP00_TAB); + + field_0x15C66 = 0; + mIsPauseDemo = false; + + mItemForPauseDemo = 0; + mPickupItemCount = 0; + mItemCountForPauseDemo = 0; + mPauseDemoDisp = 0; + + mStateMgr.changeState(StateID_Normal); + + mpHelp = nullptr; + mpDrawMark = nullptr; + + field_0x15C54 = 0; + field_0x15C58 = 0; + + return SUCCEEDED; +} + +int dLytControlGame_c::doDelete() { + if (!releaseRes()) { + return NOT_READY; + } + if (!decrementRes()) { + return NOT_READY; + } + mMsgWindow.remove(); + mSimpleWindow.remove(); + mMeter.remove(); + mWipe.remove(); + if (mpHelp != nullptr) { + mpHelp->remove(); + delete mpHelp; + mpHelp = nullptr; + } + if (mpDrawMark != nullptr) { + mpDrawMark->remove(); + delete mpDrawMark; + mpDrawMark = nullptr; + } + + if (mpMap != nullptr) { + mpMap->remove(); + mpMap.destruct(); + m2d::setLytAllocator(); + } + + return SUCCEEDED; +} + +int dLytControlGame_c::execute() { + if (!isInSomeMapState()) { + mFootprintsMgr.setFootstepMinDistSq(sHio.field_0x04 * sHio.field_0x04); + mFootprintsMgr.execute(); + } + + if (*mStateMgr.getStateID() == StateID_Normal) { + fn_802CFA90(); + } else { + if (dCsGame_c::GetInstance() != nullptr) { + dCsGame_c::GetInstance()->setField_0x9A2(true); + } + } + + if (mpDrawMark != nullptr) { + if (field_0x15C54 == 0) { + mpDrawMark->setField_0x941(1); + } + mpDrawMark->execute(); + if (mpDrawMark->getField_0x940() != 0) { + mpDrawMark->remove(); + delete mpDrawMark; + mpDrawMark = nullptr; + } + } else { + if (field_0x15C54 != 0) { + mpDrawMark = new dLytDrawMark_c(); + mpDrawMark->build(field_0x15C58); + } + } + + mMeter.execute(); + mMsgWindow.execute(); + mSimpleWindow.execute(); + mWipe.execute(); + + if (mpHelp != nullptr) { + mpHelp->execute(); + + if (dLytHelp_c::GetInstance() != nullptr) { + if (mpHelp->isStateEnd()) { + mpHelp->remove(); + delete mpHelp; + mpHelp = nullptr; + } + } + } + + mStateMgr.executeState(); + + return SUCCEEDED; +} + +int dLytControlGame_c::draw() { + mMeter.draw(); + // okay + if (dLytMap_c::GetInstance() != nullptr && dLytMap_c::GetInstance() != nullptr) { + mpMap->draw(); + } + mMsgWindow.draw(); + mSimpleWindow.addToDrawList(); + mWipe.draw(); + if (mpHelp != nullptr) { + mpHelp->draw(); + } + if (mpDrawMark != nullptr) { + mpDrawMark->draw(); + } + return SUCCEEDED; +} + +bool dLytControlGame_c::checkStoryflag(s32 flag) const { + return StoryflagManager::sInstance->getCounterOrFlag(flag); +} + +void dLytControlGame_c::fn_802CFA90() { + if (mCommand != CMD_NONE) { + if (dLytMeter_c::GetInstance()->itemSelectFn800EFDF0(true) || + dLytMeter_c::GetInstance()->minusBtnFn800F7600() || dLytMeter_c::GetInstance()->dowsingFn800FE4B0()) { + mCommand = CMD_NONE; + return; + } + + if (!mIsEvent && !EventManager::fn_8009F990() && mCommand != CMD_HELP) { + mCommand = CMD_NONE; + } + } + + if (mCommand == CMD_MAP) { + if (mMapEvent == dLytMapMain_c::MAP_EVENT_SAVE_OBJ) { + mCommand = CMD_NONE; + } + bool b = false; + if (dLytMap_c::GetInstance() != nullptr) { + b = dLytMap_c::GetInstance()->isVisible(); + } + + if (!b) { + mStateMgr.changeState(StateID_Map_SetRes); + dSndPlayerMgr_c::GetInstance()->enterMap(); + dSndSourceMgr_c::GetInstance()->fn_803852B0(); + hideHelp(); + dLytMeter_c::setPlusBtnCall(false); + } + mCommand = CMD_NONE; + } + + if (mCommand == CMD_PAUSE) { + mStateMgr.changeState(StateID_Pause_SetRes); + dSndPlayerMgr_c::GetInstance()->enterMenu(); + dSndSourceMgr_c::GetInstance()->fn_803852B0(); + hideHelp(); + mCommand = CMD_NONE; + } + + if (mCommand == CMD_HELP) { + if (mpHelp == nullptr) { + mpHelp = new dLytHelp_c(); + mpHelp->build(); + } + if (dLytHelp_c::GetInstance() != nullptr) { + mpHelp->setText(mHelpTextIndex); + mCommand = CMD_NONE; + } + } +} + +void dLytControlGame_c::hideHelp() { + if (dLytHelp_c::GetInstance() != nullptr) { + mpHelp->requestOut(); + } +} + +void dLytControlGame_c::changeHelpText(s32 textIndex) { + if (dLytHelp_c::GetInstance() != nullptr) { + mpHelp->changeText(textIndex); + } +} + +bool dLytControlGame_c::isStateNotNormalOrInEvent() const { + if (*mStateMgr.getStateID() != StateID_Normal) { + return false; + } + return EventManager::isInEvent(); +} + +bool dLytControlGame_c::isInSomeMapState() const { + bool ret = false; + const sStateIDIf_c &id = *mStateMgr.getStateID(); + if (id == StateID_Map_SetRes || id == StateID_Map_SyncRes || id == StateID_Map || id == StateID_Map_DelRes) { + ret = true; + } + return ret; +} + +bool dLytControlGame_c::isNotInStateMap() const { + return !(*mStateMgr.getStateID() == StateID_Map); +} + +bool dLytControlGame_c::fn_802CFF60() const { + bool ret = false; + const sStateIDIf_c &id = *mStateMgr.getStateID(); + if (id == StateID_Map_SetRes || id == StateID_Map_SyncRes) { + ret = true; + } + return ret; +} + +void dLytControlGame_c::openMap() { + mCommand = CMD_MAP; + mMapEvent = dLytMapMain_c::MAP_EVENT_NONE; + mIsEvent = false; +} + +void dLytControlGame_c::openMapEvent(s32 mapEvent, s32 arg1, s32 arg2) { + mCommand = CMD_MAP; + mMapEvent = mapEvent; + mIsEvent = true; + mMapEventArg1 = arg1; + mMapEventArg2 = arg2; + + if (mapEvent != dLytMapMain_c::MAP_EVENT_SAVE_OBJ) { + return; + } + + bool showStatueSelect = true; + u8 exitId = 0; + + if (dAcPy_c::GetLinkM()->getPosition().z > -78700.0f && dAcPy_c::GetLinkM()->getPosition().z < -76700.0f) { + mMapEventArg1 = dLytMapMain_c::SURFACE_PROVINCE_ELDIN; + if (!checkStoryflag(STORYFLAG_ELDIN_DISCOVERED)) { + exitId = 1; + showStatueSelect = false; + } + } else if (dAcPy_c::GetLinkM()->getPosition().z > 62800.0f && dAcPy_c::GetLinkM()->getPosition().z < 64800) { + mMapEventArg1 = dLytMapMain_c::SURFACE_PROVINCE_LANAYRU; + if (!checkStoryflag(STORYFLAG_LANAYRU_DISCOVERED)) { + exitId = 2; + showStatueSelect = false; + } + } else { + mMapEventArg1 = dLytMapMain_c::SURFACE_PROVINCE_FARON; + if (!checkStoryflag(STORYFLAG_FARON_DISCOVERED)) { + exitId = 0; + showStatueSelect = false; + } + } + + if (mMapEventArg1 == dLytMapMain_c::SURFACE_PROVINCE_FARON && checkStoryflag(STORYFLAG_HARP_CUTSCENE) && + !checkStoryflag(STORYFLAG_GROOSE_LANDS_IN_FARON)) { + // Forced descent to Sealed Grounds with Groose + exitId = 15; + showStatueSelect = false; + } else if (mMapEventArg1 == dLytMapMain_c::SURFACE_PROVINCE_ELDIN && + checkStoryflag(STORYFLAG_ELDIN_VOLCANO_CAN_ERUPT) && !checkStoryflag(STORYFLAG_BOKO_BASE_BEATEN)) { + // Forced descent to Boko Base + exitId = 8; + showStatueSelect = false; + } else if (mMapEventArg1 == dLytMapMain_c::SURFACE_PROVINCE_ELDIN && + checkStoryflag(STORYFLAG_SCRAPPER_HAS_WATER_BASIN) && + !checkStoryflag(STORYFLAG_SUMMIT_BIG_FROG_WATERED) && + !checkStoryflag(STORYFLAG_WATER_BASIN_ESCORT_STARTED)) { + // Forced descent to Eldin entry with Scrapper and the water basin + exitId = 1; + showStatueSelect = false; + } else if (checkStoryflag(STORYFLAG_LEVIAS_FIGHT_DEFEATED) && !checkStoryflag(STORYFLAG_WATER_DRAGON_SOTH_PART)) { + // TODO: When is this condition hit? showStatueSelect is only false here if we haven't discovered a surface + // province, but with Levias beaten we should've set foot in each province + showStatueSelect = true; + } + + if (!showStatueSelect) { + dScGame_c::GetInstance()->triggerExit(dAcPy_c::GetLink()->mRoomID, exitId); + mCommand = CMD_NONE; + } +} + +void dLytControlGame_c::openPause() { + if (canOpenPause() == true) { + mCommand = CMD_PAUSE; + mIsEvent = false; + mIsPauseDemo = false; + } +} + +extern "C" dAcBase_c *getCurrentEventActor(); + +void dLytControlGame_c::openPauseDemo() { + if (canOpenPause() == true) { + dAcItem_c *item = static_cast(getCurrentEventActor()); + if (item != nullptr) { + mItemForPauseDemo = item->getItemId_i(); + mCommand = CMD_PAUSE; + mIsEvent = true; + mIsPauseDemo = true; + if (mItemForPauseDemo == ITEM_EXTRA_WALLET) { + mPauseDemoDisp = dLytPauseMgr_c::DISP_00_INVENTORY; + } else { + mPauseDemoDisp = dLytPauseMgr_c::DISP_01_COLLECTION; + } + mItemCountForPauseDemo = dAcItem_c::getCollectionCurrentCount(); + mPickupItemCount = item->getQuantity() != 0 ? item->getQuantity() : 1; + } + } +} + +void dLytControlGame_c::openHelp(s32 textIndex) { + if (dLytMeter_c::GetInstance()->itemSelectFn800EFDF0(true) || dLytMeter_c::GetInstance()->minusBtnFn800F7600() || + dLytMeter_c::GetInstance()->dowsingFn800FE4B0()) { + return; + } + + if (mpHelp == nullptr) { + mCommand = CMD_HELP; + mIsEvent = false; + mHelpTextIndex = textIndex; + } +} + +bool dLytControlGame_c::releaseRes() { + return mLytArcControl.release(); +} + +bool dLytControlGame_c::decrementRes() { + dArcResult_e result1 = LayoutArcManager::GetInstance()->ensureLoaded2(sMap2D); + if (result1 != D_ARC_RESULT_ERROR_NOT_FOUND) { + if (result1 != D_ARC_RESULT_OK) { + return false; + } + LayoutArcManager::GetInstance()->decrement(sMap2D); + } + + dArcResult_e result2; + if (dStageMgr_c::GetInstance()->isSTIFAreaSky()) { + result2 = LayoutArcManager::GetInstance()->ensureLoaded2(sMapSky); + } else { + result2 = LayoutArcManager::GetInstance()->ensureLoaded2(sMapField); + } + if (result2 != D_ARC_RESULT_ERROR_NOT_FOUND) { + if (result2 != D_ARC_RESULT_OK) { + return false; + } + if (dStageMgr_c::GetInstance()->isSTIFAreaSky()) { + LayoutArcManager::GetInstance()->decrement(sMapSky); + } else { + LayoutArcManager::GetInstance()->decrement(sMapField); + } + } + + return true; +} + +void dLytControlGame_c::fn_802D04F0() { + field_0x15C66 = 0; + d2d::defaultSet(); +} + +bool dLytControlGame_c::canOpenPause() { + if (dLytMeter_c::GetInstance()->itemSelectFn800EFDF0(true) || dLytMeter_c::GetInstance()->minusBtnFn800F7600() || + dLytMeter_c::GetInstance()->dowsingFn800FE4B0()) { + return false; + } + + if (mpHelp == nullptr || mpHelp->isWaiting()) { + return true; + } + + return false; +} + +void dLytControlGame_c::checkForBeaconNextToMark() { + fBase_c *base = nullptr; + bool found = false; + mVec3_c markPos; + while ((base = fManager_c::searchBaseByGroupType(STAGE, base)) != nullptr) { + if (base->mProfileName == fProfile::T_MAP_MARK) { + dTgMapMark_c *mark = static_cast(base); + if (!mark->checkActorProperty(dAcBase_c::AC_PROP_0x100) && mark->rotz_shift0_0xf == 0) { + found = true; + markPos = mark->mPosition; + } + } + } + + if (found) { + for (u32 i = 0; i < 5; i++) { + const mVec3_c *pos = getBeaconPosition(i); + if (pos != nullptr) { + mVec3_c diff = markPos - *pos; + if (diff.mag() <= sHio.field_0x0C) { + SceneflagManager::sInstance->setFlag(0x3F, 0x18); + } + } + } + } +} + +void dLytControlGame_c::resetFootsteps() { + mFootprintsMgr.reset(); +} diff --git a/src/d/lyt/d_lyt_help.cpp b/src/d/lyt/d_lyt_help.cpp index 1de1a71b..3ebfdf7f 100644 --- a/src/d/lyt/d_lyt_help.cpp +++ b/src/d/lyt/d_lyt_help.cpp @@ -345,7 +345,7 @@ void dLytHelp_c::finalizeState_None() {} void dLytHelp_c::initializeState_In() {} void dLytHelp_c::executeState_In() { if (mpMain->isIdle()) { - field_0x3C2 = true; + mIsWaiting = true; mpMain->modeRequestWait(); mStateMgr.changeState(StateID_Wait); field_0x3C8 = 0; @@ -355,7 +355,7 @@ void dLytHelp_c::finalizeState_In() {} void dLytHelp_c::initializeState_Wait() {} void dLytHelp_c::executeState_Wait() { - if (dPad::getDownTrig2() || dPad::getDownTrigMinus() || dPad::getDownTrigB() || field_0x3C1) { + if (dPad::getDownTrig2() || dPad::getDownTrigMinus() || dPad::getDownTrigB() || mOutRequest) { mpMain->modeRequestOut(); dSndPlayerMgr_c::GetInstance()->leaveHelp(); dLytMeter_c::GetInstance()->setHelpOpen(false); @@ -381,7 +381,7 @@ void dLytHelp_c::finalizeState_End() {} bool dLytHelp_c::setText(s32 textIndex) { if (*mStateMgr.getStateID() == StateID_None) { field_0x3C0 = true; - field_0x3C1 = false; + mOutRequest = false; if (textIndex <= ARRAY_LENGTH(sHelpTextKeys) - 1) { mTextIndex = textIndex; } else { @@ -497,7 +497,7 @@ void dLytHelp_c::changeText(s32 textIndex) { mpMain->setText(mTextIndex); } else if (mTextIndex != textIndex) { mTextIndex = textIndex; - field_0x3C1 = true; + mOutRequest = true; } } @@ -509,8 +509,8 @@ bool dLytHelp_c::build() { mpMain->build(&mResAcc); mStateMgr.changeState(StateID_None); field_0x3C0 = false; - field_0x3C1 = false; - field_0x3C2 = false; + mOutRequest = false; + mIsWaiting = false; mTextIndex = -1; field_0x3C8 = 0; m2d::setLytAllocator(); diff --git a/src/d/lyt/d_lyt_map_markers.cpp b/src/d/lyt/d_lyt_map_markers.cpp index d07d235a..4cb3abc2 100644 --- a/src/d/lyt/d_lyt_map_markers.cpp +++ b/src/d/lyt/d_lyt_map_markers.cpp @@ -1538,7 +1538,7 @@ void dLytMapIcon01_c::setupStageDrawCommands() { while ((ac = static_cast(fManager_c::searchBaseByGroupType(fBase_c::STAGE, ac))) != nullptr) { setupTgMapMarkDrawCommand(ac); - if (dLytMapGlobal_c::GetInstance()->getField_0x54()) { + if (dLytMapGlobal_c::GetInstance()->isInMapEvent()) { setupTgMapInstDrawCommand(ac); } diff --git a/src/d/lyt/d_lyt_pause.cpp b/src/d/lyt/d_lyt_pause.cpp index aa6cc565..8b11b9a8 100644 --- a/src/d/lyt/d_lyt_pause.cpp +++ b/src/d/lyt/d_lyt_pause.cpp @@ -559,7 +559,7 @@ void dLytPauseMgr_c::initializeState_None() { mPrevSelectionId = 0; field_0x083C = false; field_0x083D = false; - field_0x0836 = false; + mIsActive = false; field_0x0837 = false; field_0x0838 = false; mIsNavLeft = false; @@ -830,7 +830,7 @@ void dLytPauseMgr_c::finalizeState_Out() { void dLytPauseMgr_c::inRequest() { mInRequest = true; - field_0x0836 = 1; + mIsActive = true; } bool dLytPauseMgr_c::isStateWait() const { diff --git a/src/d/lyt/meter/d_lyt_meter.cpp b/src/d/lyt/meter/d_lyt_meter.cpp index 3d7382b7..8c962391 100644 --- a/src/d/lyt/meter/d_lyt_meter.cpp +++ b/src/d/lyt/meter/d_lyt_meter.cpp @@ -1088,7 +1088,7 @@ bool dLytMeterMain_c::fn_800D56B0() { } if ((EventManager::isInEvent() && field_0x1377E == 0 && dAcPy_c::GetLink()->getCurrentAction() != 0x8C && - dMessage_c::getInstance()->getField_0x32C() == 0xC) || + dMessage_c::getInstance()->getMapEvent() == dLytMapMain_c::MAP_EVENT_MAX) || mHelpOpen) { return true; } diff --git a/src/d/lyt/meter/d_lyt_meter_cross_btn.cpp b/src/d/lyt/meter/d_lyt_meter_cross_btn.cpp index 34c25f6e..4144671b 100644 --- a/src/d/lyt/meter/d_lyt_meter_cross_btn.cpp +++ b/src/d/lyt/meter/d_lyt_meter_cross_btn.cpp @@ -5,6 +5,7 @@ #include "d/d_message.h" #include "d/flag/storyflag_manager.h" #include "d/lyt/d2d.h" +#include "d/lyt/d_lyt_map.h" #include "d/lyt/d_lyt_unknowns.h" #include "d/lyt/meter/d_lyt_meter.h" #include "d/snd/d_snd_small_effect_mgr.h" @@ -172,8 +173,8 @@ void dLytMeterCrossBtnParts_c::execute(bool bIsVisible) { mpLyt->calc(); } - if ((EventManager::isInEvent() && dMessage_c::getInstance()->getField_0x32C() == 12 && !checkIsInSkykeepPuzzle() && - !dLytMeter_c::GetInstance()->fn_800D5670()) || + if ((EventManager::isInEvent() && dMessage_c::getInstance()->getMapEvent() == dLytMapMain_c::MAP_EVENT_MAX && + !checkIsInSkykeepPuzzle() && !dLytMeter_c::GetInstance()->fn_800D5670()) || ((dLytMeter_c::getItemSelect0x75A2() && (mIndex != 1 || mCurrentIcon != 0)) || !bIsVisible)) { field_0x7C = 0; diff --git a/src/d/lyt/msg_window/d_lyt_msg_window.cpp b/src/d/lyt/msg_window/d_lyt_msg_window.cpp index 7e3971c4..cd26b754 100644 --- a/src/d/lyt/msg_window/d_lyt_msg_window.cpp +++ b/src/d/lyt/msg_window/d_lyt_msg_window.cpp @@ -562,7 +562,7 @@ void dLytMsgWindow_c::finalizeState_MapOpen() {} void dLytMsgWindow_c::initializeState_WaitKeyMapClose() {} void dLytMsgWindow_c::executeState_WaitKeyMapClose() { if ((dPad::getDownTrigB() || dPad::getDownTrigPlus()) && !dLytControlGame_c::getInstance()->isNotInStateMap()) { - dLytControlGame_c::getInstance()->fn_802CCD40(true); + dLytControlGame_c::getInstance()->setMapEventDone(true); mStateMgr.changeState(StateID_MapClose); } }