summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrobojumper <robojumper@gmail.com>2025-08-15 21:56:24 +0200
committerrobojumper <robojumper@gmail.com>2025-08-15 22:02:53 +0200
commit3e3487e8347c7e01738469ba2a25b384bdeb5caa (patch)
tree9cabb960c8b75a16b3debaa5df2d600bed7c9ee0
parent897de53b2dd1c5a315a995db768b083b0267ff5d (diff)
d_lyt_help OK
-rw-r--r--config/SOUE01/symbols.txt473
-rw-r--r--configure.py2
-rw-r--r--include/d/d_d2d.h2
-rw-r--r--include/d/lyt/d_lyt_control_game.h1
-rw-r--r--include/d/lyt/d_lyt_help.h89
-rw-r--r--include/d/lyt/d_lyt_sky_gauge.h6
-rw-r--r--include/d/lyt/meter/d_lyt_meter.h10
-rw-r--r--include/m/m2d.h3
-rw-r--r--src/d/lyt/d_lyt_help.cpp542
-rw-r--r--src/d/lyt/d_lyt_map.cpp8
-rw-r--r--src/d/lyt/d_lyt_sky_gauge.cpp24
-rw-r--r--src/d/lyt/meter/d_lyt_meter.cpp12
-rw-r--r--src/d/lyt/meter/d_lyt_meter_dowsing.cpp2
-rw-r--r--src/d/lyt/meter/d_lyt_meter_event_skip.cpp6
-rw-r--r--src/m/m2d.cpp3
15 files changed, 944 insertions, 239 deletions
diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt
index 29eb77f1..65fe8b03 100644
--- a/config/SOUE01/symbols.txt
+++ b/config/SOUE01/symbols.txt
@@ -549,7 +549,7 @@ fn_80016360 = .text:0x80016360; // type:function size:0x54
fn_800163C0 = .text:0x800163C0; // type:function size:0x248
fn_80016610 = .text:0x80016610; // type:function size:0x14
create__3d2dFPQ23EGG4Heap = .text:0x80016630; // type:function size:0x58
-fn_80016690 = .text:0x80016690; // type:function size:0xC
+setLytAllocator__3d2dFv = .text:0x80016690; // type:function size:0xC
fn_800166A0 = .text:0x800166A0; // type:function size:0x58
create__3d3dFPQ23EGG4Heap = .text:0x80016700; // type:function size:0x160
fn_80016860 = .text:0x80016860; // type:function size:0x28
@@ -8376,91 +8376,91 @@ __dt__29sFStateID_c<14dLytWipeMain_c>Fv = .text:0x8014DE30; // type:function siz
__dt__25sFStateID_c<10dLytWipe_c>Fv = .text:0x8014DE90; // type:function size:0x58 scope:weak
isSameName__25sFStateID_c<10dLytWipe_c>CFPCc = .text:0x8014DEF0; // type:function size:0x88 scope:weak
isSameName__29sFStateID_c<14dLytWipeMain_c>CFPCc = .text:0x8014DF80; // type:function size:0x88 scope:weak
-LytHelp__LytHelpMain__stateModeNoneEnter = .text:0x8014E010; // type:function size:0x4
-LytHelp__LytHelpMain__stateModeNoneUpdate = .text:0x8014E020; // type:function size:0xC
-LytHelp__LytHelpMain__stateModeNoneLeave = .text:0x8014E030; // type:function size:0x4
-LytHelp__LytHelpMain__stateModeInEnter = .text:0x8014E040; // type:function size:0x4
-LytHelp__LytHelpMain__stateModeInUpdate = .text:0x8014E050; // type:function size:0x64
-LytHelp__LytHelpMain__stateModeInLeave = .text:0x8014E0C0; // type:function size:0x4
-LytHelp__LytHelpMain__stateModeWaitEnter = .text:0x8014E0D0; // type:function size:0x4
-LytHelp__LytHelpMain__stateModeWaitUpdate = .text:0x8014E0E0; // type:function size:0xC
-LytHelp__LytHelpMain__stateModeWaitLeave = .text:0x8014E0F0; // type:function size:0x4
-LytHelp__LytHelpMain__stateModeOutEnter = .text:0x8014E100; // type:function size:0x4
-LytHelp__LytHelpMain__stateModeOutUpdate = .text:0x8014E110; // type:function size:0x88
-LytHelp__LytHelpMain__statestateModeOutLeave = .text:0x8014E1A0; // type:function size:0x4
-LytHelp__LytHelpMain__stateModeEndEnter = .text:0x8014E1B0; // type:function size:0x4
-LytHelp__LytHelpMain__stateModeEndUpdate = .text:0x8014E1C0; // type:function size:0xC
-LytHelp__LytHelpMain__stateModeEndLeave = .text:0x8014E1D0; // type:function size:0x4
-LytHelp__ctor = .text:0x8014E1E0; // type:function size:0xC0
-fn_8014E2A0 = .text:0x8014E2A0; // type:function size:0xA4
-fn_8014E350 = .text:0x8014E350; // type:function size:0xA0
-fn_8014E3F0 = .text:0x8014E3F0; // type:function size:0x6C
-fn_8014E460 = .text:0x8014E460; // type:function size:0x58
-fn_8014E4C0 = .text:0x8014E4C0; // type:function size:0x1B4
-fn_8014E680 = .text:0x8014E680; // type:function size:0x5C
-fn_8014E6E0 = .text:0x8014E6E0; // type:function size:0x88
-fn_8014E770 = .text:0x8014E770; // type:function size:0x10
-fn_8014E780 = .text:0x8014E780; // type:function size:0x58
-LytHelp__closeHelpWindow = .text:0x8014E7E0; // type:function size:0x8C
-fn_8014E870 = .text:0x8014E870; // type:function size:0x4C
-fn_8014E8C0 = .text:0x8014E8C0; // type:function size:0x4C
-fn_8014E910 = .text:0x8014E910; // type:function size:0x254
-fn_8014EB70 = .text:0x8014EB70; // type:function size:0xA8
-fn_8014EC20 = .text:0x8014EC20; // type:function size:0x10
-fn_8014EC30 = .text:0x8014EC30; // type:function size:0x28
-LytHelp__stateNoneEnter = .text:0x8014EC60; // type:function size:0x4
-LytHelp__stateNoneUpdate = .text:0x8014EC70; // type:function size:0x7C
-fn_8014ECF0 = .text:0x8014ECF0; // type:function size:0x10
-LytHelp__stateNoneLeave = .text:0x8014ED00; // type:function size:0x4
-LytHelp__stateInEnter = .text:0x8014ED10; // type:function size:0x4
-LytHelp__stateInUpdate = .text:0x8014ED20; // type:function size:0x6C
-LytHelp__stateInLeave = .text:0x8014ED90; // type:function size:0x4
-LytHelp__stateWaitEnter = .text:0x8014EDA0; // type:function size:0x4
-LytHelp__stateWaitUpdate = .text:0x8014EDB0; // type:function size:0x94
-LytHelp__stateWaitLeave = .text:0x8014EE50; // type:function size:0x4
-LytHelp__stateOutEnter = .text:0x8014EE60; // type:function size:0x4
-LytHelp__stateOutUpdate = .text:0x8014EE70; // type:function size:0x64
-LytHelp__stateOutLeave = .text:0x8014EEE0; // type:function size:0x4
-LytHelp__stateEndEnter = .text:0x8014EEF0; // type:function size:0x4
-LytHelp__stateEndUpdate = .text:0x8014EF00; // type:function size:0x4
-LytHelp__stateEndLeave = .text:0x8014EF10; // type:function size:0x4
-fn_8014EF20 = .text:0x8014EF20; // type:function size:0x98
-fn_8014EFC0 = .text:0x8014EFC0; // type:function size:0x10
-fn_8014EFD0 = .text:0x8014EFD0; // type:function size:0x250
-fn_8014F220 = .text:0x8014F220; // type:function size:0xAC
-fn_8014F2D0 = .text:0x8014F2D0; // type:function size:0x6C
-fn_8014F340 = .text:0x8014F340; // type:function size:0xD8
-fn_8014F420 = .text:0x8014F420; // type:function size:0x7C
-fn_8014F4A0 = .text:0x8014F4A0; // type:function size:0x10
-fn_8014F4B0 = .text:0x8014F4B0; // type:function size:0x64
-fn_8014F520 = .text:0x8014F520; // type:function size:0xF4
-fn_8014F620 = .text:0x8014F620; // type:function size:0xA4
-fn_8014F6D0 = .text:0x8014F6D0; // type:function size:0xA0
-fn_8014F770 = .text:0x8014F770; // type:function size:0x6C
-fn_8014F7E0 = .text:0x8014F7E0; // type:function size:0x58
-fn_8014F840 = .text:0x8014F840; // type:function size:0x60
-fn_8014F8A0 = .text:0x8014F8A0; // type:function size:0xC
-fn_8014F8B0 = .text:0x8014F8B0; // type:function size:0x1C
-fn_8014F8D0 = .text:0x8014F8D0; // type:function size:0x1C
-fn_8014F8F0 = .text:0x8014F8F0; // type:function size:0x1C
-fn_8014F910 = .text:0x8014F910; // type:function size:0x10
-fn_8014F920 = .text:0x8014F920; // type:function size:0x10
-fn_8014F930 = .text:0x8014F930; // type:function size:0x10
-fn_8014F940 = .text:0x8014F940; // type:function size:0x10
-fn_8014F950 = .text:0x8014F950; // type:function size:0x10
-fn_8014F960 = .text:0x8014F960; // type:function size:0x10
-fn_8014F970 = .text:0x8014F970; // type:function size:0x10
-fn_8014F980 = .text:0x8014F980; // type:function size:0x30
-fn_8014F9B0 = .text:0x8014F9B0; // type:function size:0x30
-fn_8014F9E0 = .text:0x8014F9E0; // type:function size:0x30
-fn_8014FA10 = .text:0x8014FA10; // type:function size:0x30
-fn_8014FA40 = .text:0x8014FA40; // type:function size:0x30
-fn_8014FA70 = .text:0x8014FA70; // type:function size:0x30
-LytHelp__initStates = .text:0x8014FAA0; // type:function size:0x7AC
-LytHelp__LytHelpMain__state_dtor = .text:0x80150250; // type:function size:0x58
-LytHelp__state_dtor = .text:0x801502B0; // type:function size:0x58
-fn_80150310 = .text:0x80150310; // type:function size:0x88
-fn_801503A0 = .text:0x801503A0; // type:function size:0x88
+initializeState_ModeNone__14dLytHelpMain_cFv = .text:0x8014E010; // type:function size:0x4
+executeState_ModeNone__14dLytHelpMain_cFv = .text:0x8014E020; // type:function size:0xC
+finalizeState_ModeNone__14dLytHelpMain_cFv = .text:0x8014E030; // type:function size:0x4
+initializeState_ModeIn__14dLytHelpMain_cFv = .text:0x8014E040; // type:function size:0x4
+executeState_ModeIn__14dLytHelpMain_cFv = .text:0x8014E050; // type:function size:0x64
+finalizeState_ModeIn__14dLytHelpMain_cFv = .text:0x8014E0C0; // type:function size:0x4
+initializeState_ModeWait__14dLytHelpMain_cFv = .text:0x8014E0D0; // type:function size:0x4
+executeState_ModeWait__14dLytHelpMain_cFv = .text:0x8014E0E0; // type:function size:0xC
+finalizeState_ModeWait__14dLytHelpMain_cFv = .text:0x8014E0F0; // type:function size:0x4
+initializeState_ModeOut__14dLytHelpMain_cFv = .text:0x8014E100; // type:function size:0x4
+executeState_ModeOut__14dLytHelpMain_cFv = .text:0x8014E110; // type:function size:0x88
+finalizeState_ModeOut__14dLytHelpMain_cFv = .text:0x8014E1A0; // type:function size:0x4
+initializeState_ModeEnd__14dLytHelpMain_cFv = .text:0x8014E1B0; // type:function size:0x4
+executeState_ModeEnd__14dLytHelpMain_cFv = .text:0x8014E1C0; // type:function size:0xC
+finalizeState_ModeEnd__14dLytHelpMain_cFv = .text:0x8014E1D0; // type:function size:0x4
+__ct__14dLytHelpMain_cFv = .text:0x8014E1E0; // type:function size:0xC0
+__dt__53sFStateMgr_c<14dLytHelpMain_c,20sStateMethodUsr_FI_c>Fv = .text:0x8014E2A0; // type:function size:0xA4 scope:weak
+__dt__83sStateMgr_c<14dLytHelpMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8014E350; // type:function size:0xA0 scope:weak
+__dt__30sFStateFct_c<14dLytHelpMain_c>Fv = .text:0x8014E3F0; // type:function size:0x6C scope:weak
+__dt__27sFState_c<14dLytHelpMain_c>Fv = .text:0x8014E460; // type:function size:0x58 scope:weak
+build__14dLytHelpMain_cFPQ23d2d10ResAccIf_c = .text:0x8014E4C0; // type:function size:0x1B4
+remove__14dLytHelpMain_cFv = .text:0x8014E680; // type:function size:0x5C
+modeRequestIn__14dLytHelpMain_cFl = .text:0x8014E6E0; // type:function size:0x88
+changeState__83sStateMgr_c<14dLytHelpMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x8014E770; // type:function size:0x10 scope:weak
+modeRequestWait__14dLytHelpMain_cFv = .text:0x8014E780; // type:function size:0x58
+modeRequestOut__14dLytHelpMain_cFv = .text:0x8014E7E0; // type:function size:0x8C
+modeRequestEnd__14dLytHelpMain_cFv = .text:0x8014E870; // type:function size:0x4C
+modeRequestNone__14dLytHelpMain_cFv = .text:0x8014E8C0; // type:function size:0x4C
+setText__14dLytHelpMain_cFl = .text:0x8014E910; // type:function size:0x254
+execute__14dLytHelpMain_cFv = .text:0x8014EB70; // type:function size:0xA8
+executeState__83sStateMgr_c<14dLytHelpMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8014EC20; // type:function size:0x10 scope:weak
+draw__14dLytHelpMain_cFv = .text:0x8014EC30; // type:function size:0x28
+initializeState_None__10dLytHelp_cFv = .text:0x8014EC60; // type:function size:0x4
+executeState_None__10dLytHelp_cFv = .text:0x8014EC70; // type:function size:0x7C
+changeState__79sStateMgr_c<10dLytHelp_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x8014ECF0; // type:function size:0x10 scope:weak
+finalizeState_None__10dLytHelp_cFv = .text:0x8014ED00; // type:function size:0x4
+initializeState_In__10dLytHelp_cFv = .text:0x8014ED10; // type:function size:0x4
+executeState_In__10dLytHelp_cFv = .text:0x8014ED20; // type:function size:0x6C
+finalizeState_In__10dLytHelp_cFv = .text:0x8014ED90; // type:function size:0x4
+initializeState_Wait__10dLytHelp_cFv = .text:0x8014EDA0; // type:function size:0x4
+executeState_Wait__10dLytHelp_cFv = .text:0x8014EDB0; // type:function size:0x94
+finalizeState_Wait__10dLytHelp_cFv = .text:0x8014EE50; // type:function size:0x4
+initializeState_Out__10dLytHelp_cFv = .text:0x8014EE60; // type:function size:0x4
+executeState_Out__10dLytHelp_cFv = .text:0x8014EE70; // type:function size:0x64
+finalizeState_Out__10dLytHelp_cFv = .text:0x8014EEE0; // type:function size:0x4
+initializeState_End__10dLytHelp_cFv = .text:0x8014EEF0; // type:function size:0x4
+executeState_End__10dLytHelp_cFv = .text:0x8014EF00; // type:function size:0x4
+finalizeState_End__10dLytHelp_cFv = .text:0x8014EF10; // type:function size:0x4
+setText__10dLytHelp_cFl = .text:0x8014EF20; // type:function size:0x98
+getStateID__79sStateMgr_c<10dLytHelp_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x8014EFC0; // type:function size:0x10 scope:weak
+changeText__10dLytHelp_cFl = .text:0x8014EFD0; // type:function size:0x250
+build__10dLytHelp_cFv = .text:0x8014F220; // type:function size:0xAC
+remove__10dLytHelp_cFv = .text:0x8014F2D0; // type:function size:0x6C
+__dt__14dLytHelpMain_cFv = .text:0x8014F340; // type:function size:0xD8 scope:weak
+execute__10dLytHelp_cFv = .text:0x8014F420; // type:function size:0x7C
+executeState__79sStateMgr_c<10dLytHelp_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8014F4A0; // type:function size:0x10 scope:weak
+draw__10dLytHelp_cFv = .text:0x8014F4B0; // type:function size:0x64
+__dt__10dLytHelp_cFv = .text:0x8014F520; // type:function size:0xF4 scope:weak
+__dt__49sFStateMgr_c<10dLytHelp_c,20sStateMethodUsr_FI_c>Fv = .text:0x8014F620; // type:function size:0xA4 scope:weak
+__dt__79sStateMgr_c<10dLytHelp_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8014F6D0; // type:function size:0xA0 scope:weak
+__dt__26sFStateFct_c<10dLytHelp_c>Fv = .text:0x8014F770; // type:function size:0x6C scope:weak
+__dt__23sFState_c<10dLytHelp_c>Fv = .text:0x8014F7E0; // type:function size:0x58 scope:weak
+build__30sFStateFct_c<14dLytHelpMain_c>FRC12sStateIDIf_c = .text:0x8014F840; // type:function size:0x60 scope:weak
+dispose__30sFStateFct_c<14dLytHelpMain_c>FRP10sStateIf_c = .text:0x8014F8A0; // type:function size:0xC scope:weak
+initialize__27sFState_c<14dLytHelpMain_c>Fv = .text:0x8014F8B0; // type:function size:0x1C scope:weak
+execute__27sFState_c<14dLytHelpMain_c>Fv = .text:0x8014F8D0; // type:function size:0x1C scope:weak
+finalize__27sFState_c<14dLytHelpMain_c>Fv = .text:0x8014F8F0; // type:function size:0x1C scope:weak
+initializeState__83sStateMgr_c<14dLytHelpMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8014F910; // type:function size:0x10 scope:weak
+finalizeState__83sStateMgr_c<14dLytHelpMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8014F920; // type:function size:0x10 scope:weak
+refreshState__83sStateMgr_c<14dLytHelpMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8014F930; // type:function size:0x10 scope:weak
+getState__83sStateMgr_c<14dLytHelpMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x8014F940; // type:function size:0x10 scope:weak
+getNewStateID__83sStateMgr_c<14dLytHelpMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x8014F950; // type:function size:0x10 scope:weak
+getStateID__83sStateMgr_c<14dLytHelpMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x8014F960; // type:function size:0x10 scope:weak
+getOldStateID__83sStateMgr_c<14dLytHelpMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x8014F970; // type:function size:0x10 scope:weak
+finalizeState__29sFStateID_c<14dLytHelpMain_c>CFR14dLytHelpMain_c = .text:0x8014F980; // type:function size:0x30 scope:weak
+executeState__29sFStateID_c<14dLytHelpMain_c>CFR14dLytHelpMain_c = .text:0x8014F9B0; // type:function size:0x30 scope:weak
+initializeState__29sFStateID_c<14dLytHelpMain_c>CFR14dLytHelpMain_c = .text:0x8014F9E0; // type:function size:0x30 scope:weak
+finalizeState__25sFStateID_c<10dLytHelp_c>CFR10dLytHelp_c = .text:0x8014FA10; // type:function size:0x30 scope:weak
+executeState__25sFStateID_c<10dLytHelp_c>CFR10dLytHelp_c = .text:0x8014FA40; // type:function size:0x30 scope:weak
+initializeState__25sFStateID_c<10dLytHelp_c>CFR10dLytHelp_c = .text:0x8014FA70; // type:function size:0x30 scope:weak
+__sinit_\d_lyt_help_cpp = .text:0x8014FAA0; // type:function size:0x7AC scope:local
+__dt__29sFStateID_c<14dLytHelpMain_c>Fv = .text:0x80150250; // type:function size:0x58 scope:weak
+__dt__25sFStateID_c<10dLytHelp_c>Fv = .text:0x801502B0; // type:function size:0x58 scope:weak
+isSameName__25sFStateID_c<10dLytHelp_c>CFPCc = .text:0x80150310; // type:function size:0x88 scope:weak
+isSameName__29sFStateID_c<14dLytHelpMain_c>CFPCc = .text:0x801503A0; // type:function size:0x88 scope:weak
fn_80150430 = .text:0x80150430; // type:function size:0x34
fn_80150470 = .text:0x80150470; // type:function size:0x1CC
fn_80150640 = .text:0x80150640; // type:function size:0x28
@@ -14484,11 +14484,11 @@ doDelete__12dThpPlayer_cFv = .text:0x802733E0; // type:function size:0x38
execute__12dThpPlayer_cFv = .text:0x80273420; // type:function size:0x24
draw__12dThpPlayer_cFv = .text:0x80273450; // type:function size:0x44
__ct__12dThpPlayer_cFv = .text:0x802734A0; // type:function size:0x88
-__dt__14ThpVideoScreenFv = .text:0x80273530; // type:function size:0x58
+__dt__14ThpVideoScreenFv = .text:0x80273530; // type:function size:0x58 scope:weak
__dt__12dThpPlayer_cFv = .text:0x80273590; // type:function size:0xA8
reallyCreate__12dThpPlayer_cFUsUs = .text:0x80273640; // type:function size:0x68
drawTHPFrame__FUlUlUlUlUlUl = .text:0x802736B0; // type:function size:0x2C
-callback__FPv = .text:0x802736E0; // type:function size:0x24
+callback__FPv = .text:0x802736E0; // type:function size:0x24 scope:local
open__12dThpPlayer_cFv = .text:0x80273710; // type:function size:0x44
setupFile__12dThpPlayer_cFPcl = .text:0x80273760; // type:function size:0xD0
reallyExecute__12dThpPlayer_cFv = .text:0x80273830; // type:function size:0x1B0
@@ -16853,8 +16853,8 @@ fn_802D0700 = .text:0x802D0700; // type:function size:0x60
fn_802D0760 = .text:0x802D0760; // type:function size:0xC
fn_802D0770 = .text:0x802D0770; // type:function size:0x60
fn_802D07D0 = .text:0x802D07D0; // type:function size:0xC
-fn_802D07E0 = .text:0x802D07E0; // type:function size:0x60
-fn_802D0840 = .text:0x802D0840; // 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
fn_802D08C0 = .text:0x802D08C0; // type:function size:0x60
@@ -16867,9 +16867,9 @@ fn_802D09E0 = .text:0x802D09E0; // type:function size:0x1C
fn_802D0A00 = .text:0x802D0A00; // type:function size:0x1C
fn_802D0A20 = .text:0x802D0A20; // type:function size:0x1C
fn_802D0A40 = .text:0x802D0A40; // type:function size:0x1C
-fn_802D0A60 = .text:0x802D0A60; // type:function size:0x1C
-fn_802D0A80 = .text:0x802D0A80; // type:function size:0x1C
-fn_802D0AA0 = .text:0x802D0AA0; // 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
@@ -16892,12 +16892,12 @@ fn_802D0C70 = .text:0x802D0C70; // type:function size:0x10
fn_802D0C80 = .text:0x802D0C80; // type:function size:0x10
fn_802D0C90 = .text:0x802D0C90; // type:function size:0x10
fn_802D0CA0 = .text:0x802D0CA0; // type:function size:0x10
-fn_802D0CB0 = .text:0x802D0CB0; // type:function size:0x10
-fn_802D0CC0 = .text:0x802D0CC0; // type:function size:0x10
-fn_802D0CD0 = .text:0x802D0CD0; // type:function size:0x10
-fn_802D0CE0 = .text:0x802D0CE0; // type:function size:0x10
-fn_802D0CF0 = .text:0x802D0CF0; // type:function size:0x10
-fn_802D0D00 = .text:0x802D0D00; // 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
@@ -17374,7 +17374,7 @@ create__3m2dFPQ23EGG4HeapUl = .text:0x802E2DD0; // type:function size:0x94
defaultSet__3m2dFv = .text:0x802E2E70; // type:function size:0x58
draw__3m2dFUc = .text:0x802E2ED0; // type:function size:0x88
drawBefore__3m2dFUc = .text:0x802E2F60; // type:function size:0x88
-getAllocator__3m2dFv = .text:0x802E2FF0; // type:function size:0xC
+setLytAllocator__3m2dFv = .text:0x802E2FF0; // type:function size:0xC
CreateAnimTransform__Q23m2d8Layout_cFPCvPQ34nw4r3lyt16ResourceAccessor = .text:0x802E3000; // type:function size:0x50
__dt__Q23m2d14ResAccIfBase_cFv = .text:0x802E3050; // type:function size:0x40
__dt__Q23m2d10ResAccIf_cFv = .text:0x802E3090; // type:function size:0x88
@@ -19950,7 +19950,7 @@ leaveMenu__15dSndPlayerMgr_cFv = .text:0x8035E470; // type:function size:0x2C
enterMap__15dSndPlayerMgr_cFv = .text:0x8035E4A0; // type:function size:0x44
leaveMap__15dSndPlayerMgr_cFv = .text:0x8035E4F0; // type:function size:0x44
enterHelp__15dSndPlayerMgr_cFv = .text:0x8035E540; // type:function size:0x18
-fn_8035E560 = .text:0x8035E560; // type:function size:0x18
+leaveHelp__15dSndPlayerMgr_cFv = .text:0x8035E560; // type:function size:0x18
fn_8035E580 = .text:0x8035E580; // type:function size:0x50
fn_8035E5D0 = .text:0x8035E5D0; // type:function size:0x44
fn_8035E620 = .text:0x8035E620; // type:function size:0xB4
@@ -28326,7 +28326,7 @@ brlanMap = .rodata:0x804E7F50; // type:object size:0x30 scope:local data:4byte
brlanMap = .rodata:0x804E7F80; // type:object size:0x20 scope:local data:4byte
brlanMap1 = .rodata:0x804E7FA0; // type:object size:0x20 scope:local data:4byte
brlanMap2 = .rodata:0x804E7FC0; // type:object size:0x20 scope:local data:4byte
-lbl_804E7FE0 = .rodata:0x804E7FE0; // type:object size:0x18 data:4byte
+brlanMap = .rodata:0x804E7FE0; // type:object size:0x18 scope:local data:4byte
lbl_804E7FF8 = .rodata:0x804E7FF8; // type:object size:0xD0 data:4byte
lbl_804E80C8 = .rodata:0x804E80C8; // type:object size:0x30
brlanMap = .rodata:0x804E80F8; // type:object size:0x40 scope:local data:4byte
@@ -33988,54 +33988,105 @@ __vt__27sFState_c<14dLytWipeMain_c> = .data:0x80522F40; // type:object size:0x18
@20116 = .data:0x80523168; // type:object size:0x18 scope:local data:string
__vt__25sFStateID_c<10dLytWipe_c> = .data:0x80523180; // type:object size:0x34 scope:weak
__vt__29sFStateID_c<14dLytWipeMain_c> = .data:0x805231B4; // type:object size:0x34 scope:weak
-lbl_805231E8 = .data:0x805231E8; // type:object size:0x18
-lbl_80523200 = .data:0x80523200; // type:object size:0x18
-lbl_80523218 = .data:0x80523218; // type:object size:0x1C
-lbl_80523234 = .data:0x80523234; // type:object size:0xC data:string
-lbl_80523240 = .data:0x80523240; // type:object size:0x10 data:string
-lbl_80523250 = .data:0x80523250; // type:object size:0x10 data:string
-lbl_80523260 = .data:0x80523260; // type:object size:0x1C
-lbl_8052327C = .data:0x8052327C; // type:object size:0x10
-lbl_8052328C = .data:0x8052328C; // type:object size:0x10
-lbl_8052329C = .data:0x8052329C; // type:object size:0x1C
-lbl_805232B8 = .data:0x805232B8; // type:object size:0xC
-lbl_805232C4 = .data:0x805232C4; // type:object size:0xC
-lbl_805232D0 = .data:0x805232D0; // type:object size:0x18
-lbl_805232E8 = .data:0x805232E8; // type:object size:0xC
-lbl_805232F4 = .data:0x805232F4; // type:object size:0xC
-lbl_80523300 = .data:0x80523300; // type:object size:0x2C
-lbl_8052332C = .data:0x8052332C; // type:object size:0xC
-lbl_80523338 = .data:0x80523338; // type:object size:0xC
-lbl_80523344 = .data:0x80523344; // type:object size:0xC
-lbl_80523350 = .data:0x80523350; // type:object size:0xC
-lbl_8052335C = .data:0x8052335C; // type:object size:0xC
-lbl_80523368 = .data:0x80523368; // type:object size:0xC
-lbl_80523374 = .data:0x80523374; // type:object size:0xC data:string
-lbl_80523380 = .data:0x80523380; // type:object size:0xC
-lbl_8052338C = .data:0x8052338C; // type:object size:0x10
-lbl_8052339C = .data:0x8052339C; // type:object size:0xC
-lbl_805233A8 = .data:0x805233A8; // type:object size:0xC
-lbl_805233B4 = .data:0x805233B4; // type:object size:0x10
-lbl_805233C4 = .data:0x805233C4; // type:object size:0xC
-lbl_805233D0 = .data:0x805233D0; // type:object size:0xC data:string
-lbl_805233DC = .data:0x805233DC; // type:object size:0xC
-lbl_805233E8 = .data:0x805233E8; // type:object size:0xC
-lbl_805233F4 = .data:0x805233F4; // type:object size:0xC data:string
-lbl_80523400 = .data:0x80523400; // type:object size:0xC
-lbl_8052340C = .data:0x8052340C; // type:object size:0xC
-lbl_80523418 = .data:0x80523418; // type:object size:0xC data:string
-lbl_80523424 = .data:0x80523424; // type:object size:0x130
-jumptable_80523554 = .data:0x80523554; // type:object size:0x90 scope:local
-jumptable_805235E4 = .data:0x805235E4; // type:object size:0xA0 scope:local
-lbl_80523684 = .data:0x80523684; // type:object size:0xC
-lbl_80523690 = .data:0x80523690; // type:object size:0x1C
-lbl_805236AC = .data:0x805236AC; // type:object size:0xC
-lbl_805236B8 = .data:0x805236B8; // type:object size:0x30
-lbl_805236E8 = .data:0x805236E8; // type:object size:0x30
-lbl_80523718 = .data:0x80523718; // type:object size:0x18
-lbl_80523730 = .data:0x80523730; // type:object size:0x2C0
-lbl_805239F0 = .data:0x805239F0; // type:object size:0x34
-lbl_80523A24 = .data:0x80523A24; // type:object size:0x34
+@26269 = .data:0x805231E8; // type:object size:0x15 scope:local data:string
+...data.0 = .data:0x805231E8; // type:label scope:local
+@26271 = .data:0x80523200; // type:object size:0x16 scope:local data:string
+@26272 = .data:0x80523218; // type:object size:0x19 scope:local data:string
+@26273 = .data:0x80523234; // type:object size:0xC scope:local data:string
+@26274 = .data:0x80523240; // type:object size:0x10 scope:local data:string
+@26275 = .data:0x80523250; // type:object size:0x10 scope:local data:string
+@26276 = .data:0x80523260; // type:object size:0x10 scope:local data:string
+sTextBoxNamesTitleS = .data:0x80523270; // type:object size:0xC scope:local
+@26277 = .data:0x8052327C; // type:object size:0xF scope:local data:string
+@26278 = .data:0x8052328C; // type:object size:0xF scope:local data:string
+@26279 = .data:0x8052329C; // type:object size:0xF scope:local data:string
+sTextBoxNamesTitle = .data:0x805232AC; // type:object size:0xC scope:local
+@26280 = .data:0x805232B8; // type:object size:0xB scope:local data:string
+@26281 = .data:0x805232C4; // type:object size:0xB scope:local data:string
+@26282 = .data:0x805232D0; // type:object size:0xB scope:local data:string
+sTextBoxNamesS = .data:0x805232DC; // type:object size:0xC scope:local
+@26283 = .data:0x805232E8; // type:object size:0xA scope:local data:string
+@26284 = .data:0x805232F4; // type:object size:0xA scope:local data:string
+@26285 = .data:0x80523300; // type:object size:0xA scope:local data:string
+sTextBoxNames = .data:0x8052330C; // type:object size:0xC scope:local
+@30390 = .data:0x80523318; // type:object size:0x12 scope:local data:string
+@26431 = .data:0x8052332C; // type:object size:0x9 scope:local data:string
+@26433 = .data:0x80523338; // type:object size:0xA scope:local data:string
+@26435 = .data:0x80523344; // type:object size:0xA scope:local data:string
+@26436 = .data:0x80523350; // type:object size:0x9 scope:local data:string
+@26437 = .data:0x8052335C; // type:object size:0x9 scope:local data:string
+@26438 = .data:0x80523368; // type:object size:0x9 scope:local data:string
+@26440 = .data:0x80523374; // type:object size:0xC scope:local data:string
+@26441 = .data:0x80523380; // type:object size:0x9 scope:local data:string
+@26443 = .data:0x8052338C; // type:object size:0xE scope:local data:string
+@26451 = .data:0x8052339C; // type:object size:0xA scope:local data:string
+@26456 = .data:0x805233A8; // type:object size:0xA scope:local data:string
+@26457 = .data:0x805233B4; // type:object size:0xF scope:local data:string
+@26459 = .data:0x805233C4; // type:object size:0x9 scope:local data:string
+@26463 = .data:0x805233D0; // type:object size:0xC scope:local data:string
+@26468 = .data:0x805233DC; // type:object size:0x9 scope:local data:string
+@26470 = .data:0x805233E8; // type:object size:0x9 scope:local data:string
+@26474 = .data:0x805233F4; // type:object size:0xC scope:local data:string
+@26475 = .data:0x80523400; // type:object size:0xA scope:local data:string
+@26476 = .data:0x8052340C; // type:object size:0xA scope:local data:string
+@26477 = .data:0x80523418; // type:object size:0xC scope:local data:string
+@26478 = .data:0x80523424; // type:object size:0xA scope:local data:string
+sHelpTextKeys = .data:0x80523430; // type:object size:0xEC scope:local
+@30442 = .data:0x8052351C; // type:object size:0xC scope:local data:string
+@30443 = .data:0x80523528; // type:object size:0xE scope:local data:string
+@30444 = .data:0x80523538; // type:object size:0xC scope:local data:string
+@30445 = .data:0x80523544; // type:object size:0xE scope:local data:string
+@30447 = .data:0x80523554; // type:object size:0x90 scope:local
+@30546 = .data:0x805235E4; // type:object size:0xA0 scope:local
+@30553 = .data:0x80523684; // type:object size:0x9 scope:local data:string
+__vt__10dLytHelp_c = .data:0x80523690; // type:object size:0x1C
+__vt__14dLytHelpMain_c = .data:0x805236AC; // type:object size:0xC scope:weak
+__vt__53sFStateMgr_c<14dLytHelpMain_c,20sStateMethodUsr_FI_c> = .data:0x805236B8; // type:object size:0x30 scope:weak
+__vt__83sStateMgr_c<14dLytHelpMain_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x805236E8; // type:object size:0x30 scope:weak
+__vt__30sFStateFct_c<14dLytHelpMain_c> = .data:0x80523718; // type:object size:0x14 scope:weak
+__vt__27sFState_c<14dLytHelpMain_c> = .data:0x80523730; // type:object size:0x18 scope:weak
+@30667 = .data:0x80523760; // type:object size:0xC scope:local
+@30668 = .data:0x8052376C; // type:object size:0xC scope:local
+@30669 = .data:0x80523778; // type:object size:0xC scope:local
+@30670 = .data:0x80523784; // type:object size:0xC scope:local
+@30671 = .data:0x80523790; // type:object size:0xC scope:local
+@30672 = .data:0x8052379C; // type:object size:0xC scope:local
+@30673 = .data:0x805237A8; // type:object size:0xC scope:local
+@30674 = .data:0x805237B4; // type:object size:0xC scope:local
+@30675 = .data:0x805237C0; // type:object size:0xC scope:local
+@30676 = .data:0x805237CC; // type:object size:0xC scope:local
+@30677 = .data:0x805237D8; // type:object size:0xC scope:local
+@30678 = .data:0x805237E4; // type:object size:0xC scope:local
+@30679 = .data:0x805237F0; // type:object size:0xC scope:local
+@30680 = .data:0x805237FC; // type:object size:0xC scope:local
+@30681 = .data:0x80523808; // type:object size:0xC scope:local
+@30682 = .data:0x80523814; // type:object size:0xC scope:local
+@30683 = .data:0x80523820; // type:object size:0xC scope:local
+@30684 = .data:0x8052382C; // type:object size:0xC scope:local
+@30685 = .data:0x80523838; // type:object size:0xC scope:local
+@30686 = .data:0x80523844; // type:object size:0xC scope:local
+@30687 = .data:0x80523850; // type:object size:0xC scope:local
+@30688 = .data:0x8052385C; // type:object size:0xC scope:local
+@30689 = .data:0x80523868; // type:object size:0xC scope:local
+@30690 = .data:0x80523874; // type:object size:0xC scope:local
+@30691 = .data:0x80523880; // type:object size:0xC scope:local
+@30692 = .data:0x8052388C; // type:object size:0xC scope:local
+@30693 = .data:0x80523898; // type:object size:0xC scope:local
+@30694 = .data:0x805238A4; // type:object size:0xC scope:local
+@30695 = .data:0x805238B0; // type:object size:0xC scope:local
+@30696 = .data:0x805238BC; // type:object size:0xC scope:local
+@30698 = .data:0x805238C8; // type:object size:0x21 scope:local data:string
+@30699 = .data:0x805238EC; // type:object size:0x1F scope:local data:string
+@30700 = .data:0x8052390C; // type:object size:0x21 scope:local data:string
+@30701 = .data:0x80523930; // type:object size:0x20 scope:local data:string
+@30702 = .data:0x80523950; // type:object size:0x20 scope:local data:string
+@30703 = .data:0x80523970; // type:object size:0x19 scope:local data:string
+@30704 = .data:0x8052398C; // type:object size:0x17 scope:local data:string
+@30705 = .data:0x805239A4; // type:object size:0x19 scope:local data:string
+@30706 = .data:0x805239C0; // type:object size:0x18 scope:local data:string
+@30707 = .data:0x805239D8; // type:object size:0x18 scope:local data:string
+__vt__29sFStateID_c<14dLytHelpMain_c> = .data:0x805239F0; // type:object size:0x34 scope:weak
+__vt__25sFStateID_c<10dLytHelp_c> = .data:0x80523A24; // type:object size:0x34 scope:weak
lbl_80523A58 = .data:0x80523A58; // type:object size:0x30
lbl_80523A88 = .data:0x80523A88; // type:object size:0x1C
lbl_80523AA4 = .data:0x80523AA4; // type:object size:0x14
@@ -35920,9 +35971,15 @@ __vt__19dAcOswMdlCallback_c = .data:0x80535E38; // type:object size:0x18
@9734 = .data:0x80535F6C; // type:object size:0x17 scope:local data:string
__vt__22sFStateID_c<8dAcOsw_c> = .data:0x80535F84; // type:object size:0x34 scope:weak
g_profile_THPPLAYER = .data:0x80535FB8; // type:object size:0xC
-lbl_80535FC4 = .data:0x80535FC4; // type:object size:0x7C
-lbl_80536040 = .data:0x80536040; // type:object size:0x50
-lbl_80536090 = .data:0x80536090; // type:object size:0x10
+...data.0 = .data:0x80535FB8; // type:label scope:local
+@10708 = .data:0x80535FC4; // type:object size:0x12 scope:local data:string
+@10709 = .data:0x80535FD8; // type:object size:0x12 scope:local data:string
+@10710 = .data:0x80535FEC; // type:object size:0x12 scope:local data:string
+@10711 = .data:0x80536000; // type:object size:0x11 scope:local data:string
+@10712 = .data:0x80536014; // type:object size:0x17 scope:local data:string
+@10713 = .data:0x8053602C; // type:object size:0x11 scope:local data:string
+__vt__12dThpPlayer_c = .data:0x80536040; // type:object size:0x4C
+__vt__14ThpVideoScreen = .data:0x80536090; // type:object size:0x10
g_profile_ALLDIE_TAG = .data:0x805360A0; // type:object size:0x10
TgAlldie__vtable = .data:0x805360B0; // type:object size:0x78
g_profile_VIEW_CLIP_TAG = .data:0x80536128; // type:object size:0x10
@@ -37057,10 +37114,10 @@ lbl_80540578 = .data:0x80540578; // type:object size:0x18
lbl_80540590 = .data:0x80540590; // type:object size:0x18
lbl_805405A8 = .data:0x805405A8; // type:object size:0xC
lbl_805405B4 = .data:0x805405B4; // type:object size:0xC
-lbl_805405C0 = .data:0x805405C0; // type:object size:0x30
-lbl_805405F0 = .data:0x805405F0; // type:object size:0x30
-lbl_80540620 = .data:0x80540620; // type:object size:0x18
-lbl_80540638 = .data:0x80540638; // type:object size:0x18
+__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
@@ -39725,36 +39782,36 @@ lbl_8057285C = .sdata:0x8057285C; // type:object size:0xC
@24731 = .sdata:0x80572878; // type:object size:0x1 scope:local
@28478 = .sdata:0x8057287C; // type:object size:0x1 scope:local
@20010 = .sdata:0x80572880; // type:object size:0x1 scope:local
-lbl_80572888 = .sdata:0x80572888; // type:object size:0x8 data:string
-lbl_80572890 = .sdata:0x80572890; // type:object size:0x8
-lbl_80572898 = .sdata:0x80572898; // type:object size:0x8
-lbl_805728A0 = .sdata:0x805728A0; // type:object size:0x8 data:string
-lbl_805728A8 = .sdata:0x805728A8; // type:object size:0x8
-lbl_805728B0 = .sdata:0x805728B0; // type:object size:0x8
-lbl_805728B8 = .sdata:0x805728B8; // type:object size:0x4 data:string
-lbl_805728BC = .sdata:0x805728BC; // type:object size:0x8
-lbl_805728C4 = .sdata:0x805728C4; // type:object size:0xC
-lbl_805728D0 = .sdata:0x805728D0; // type:object size:0x8 data:string
-lbl_805728D8 = .sdata:0x805728D8; // type:object size:0x8
-lbl_805728E0 = .sdata:0x805728E0; // type:object size:0x8
-lbl_805728E8 = .sdata:0x805728E8; // type:object size:0x8
-lbl_805728F0 = .sdata:0x805728F0; // type:object size:0x8
-lbl_805728F8 = .sdata:0x805728F8; // type:object size:0x8
-lbl_80572900 = .sdata:0x80572900; // type:object size:0x8
-lbl_80572908 = .sdata:0x80572908; // type:object size:0x8
-lbl_80572910 = .sdata:0x80572910; // type:object size:0x8
-lbl_80572918 = .sdata:0x80572918; // type:object size:0x8 data:string
-lbl_80572920 = .sdata:0x80572920; // type:object size:0x8 data:string
-lbl_80572928 = .sdata:0x80572928; // type:object size:0x8
-lbl_80572930 = .sdata:0x80572930; // type:object size:0x8
-lbl_80572938 = .sdata:0x80572938; // type:object size:0x8 data:string
-lbl_80572940 = .sdata:0x80572940; // type:object size:0x8
-lbl_80572948 = .sdata:0x80572948; // type:object size:0x4 data:string
-lbl_8057294C = .sdata:0x8057294C; // type:object size:0x8
-lbl_80572954 = .sdata:0x80572954; // type:object size:0xC
-lbl_80572960 = .sdata:0x80572960; // type:object size:0x8 data:string
-lbl_80572968 = .sdata:0x80572968; // type:object size:0x8
-lbl_80572970 = .sdata:0x80572970; // type:object size:0x8
+@26270 = .sdata:0x80572888; // type:object size:0x8 scope:local data:string
+@26430 = .sdata:0x80572890; // type:object size:0x7 scope:local data:string
+@26432 = .sdata:0x80572898; // type:object size:0x6 scope:local data:string
+@26434 = .sdata:0x805728A0; // type:object size:0x8 scope:local data:string
+@26439 = .sdata:0x805728A8; // type:object size:0x7 scope:local data:string
+@26442 = .sdata:0x805728B0; // type:object size:0x7 scope:local data:string
+@26444 = .sdata:0x805728B8; // type:object size:0x4 scope:local data:string
+@26445 = .sdata:0x805728BC; // type:object size:0x5 scope:local data:string
+@26446 = .sdata:0x805728C4; // type:object size:0x5 scope:local data:string
+@26447 = .sdata:0x805728D0; // type:object size:0x8 scope:local data:string
+@26448 = .sdata:0x805728D8; // type:object size:0x5 scope:local data:string
+@26449 = .sdata:0x805728E0; // type:object size:0x7 scope:local data:string
+@26450 = .sdata:0x805728E8; // type:object size:0x7 scope:local data:string
+@26452 = .sdata:0x805728F0; // type:object size:0x5 scope:local data:string
+@26453 = .sdata:0x805728F8; // type:object size:0x7 scope:local data:string
+@26454 = .sdata:0x80572900; // type:object size:0x5 scope:local data:string
+@26455 = .sdata:0x80572908; // type:object size:0x6 scope:local data:string
+@26458 = .sdata:0x80572910; // type:object size:0x6 scope:local data:string
+@26460 = .sdata:0x80572918; // type:object size:0x8 scope:local data:string
+@26461 = .sdata:0x80572920; // type:object size:0x8 scope:local data:string
+@26462 = .sdata:0x80572928; // type:object size:0x5 scope:local data:string
+@26464 = .sdata:0x80572930; // type:object size:0x7 scope:local data:string
+@26465 = .sdata:0x80572938; // type:object size:0x8 scope:local data:string
+@26466 = .sdata:0x80572940; // type:object size:0x6 scope:local data:string
+@26467 = .sdata:0x80572948; // type:object size:0x4 scope:local data:string
+@26469 = .sdata:0x8057294C; // type:object size:0x7 scope:local data:string
+@26471 = .sdata:0x80572954; // type:object size:0x7 scope:local data:string
+@26472 = .sdata:0x80572960; // type:object size:0x8 scope:local data:string
+@26473 = .sdata:0x80572968; // type:object size:0x6 scope:local data:string
+@30554 = .sdata:0x80572970; // type:object size:0x1 scope:local
lbl_80572978 = .sdata:0x80572978; // type:object size:0x8 data:4byte
lbl_80572980 = .sdata:0x80572980; // type:object size:0x4 data:4byte
lbl_80572984 = .sdata:0x80572984; // type:object size:0x4
@@ -41545,7 +41602,7 @@ sInstance__9dLytMap_c = .sbss:0x805754B0; // type:object size:0x8 data:4byte
sInstance__13dLytBattery_c = .sbss:0x805754B8; // type:object size:0x4 data:4byte
sInstance__17dLytAreaCaption_c = .sbss:0x805754C0; // type:object size:0x4 data:4byte
sInstance__10dLytWipe_c = .sbss:0x805754C8; // type:object size:0x4 data:4byte
-LYT_HELP_PTR = .sbss:0x805754D0; // type:object size:0x8 data:4byte
+sInstance__10dLytHelp_c = .sbss:0x805754D0; // type:object size:0x4 data:4byte
sInstance__18dLytSystemWindow_c = .sbss:0x805754D8; // type:object size:0x8 data:4byte
sInstance__15dLytBirdGauge_c = .sbss:0x805754E0; // type:object size:0x4 data:4byte
sInstance__14dLytSkyGauge_c = .sbss:0x805754E8; // type:object size:0x4 data:4byte
@@ -44970,8 +45027,8 @@ lbl_80579FB0 = .sdata2:0x80579FB0; // type:object size:0x4 align:4 data:float
@28571 = .sdata2:0x80579FD8; // type:object size:0x8 scope:local align:8 data:double
@19887 = .sdata2:0x80579FE0; // type:object size:0x4 scope:local align:4 data:float
brlanMap = .sdata2:0x80579FE8; // type:object size:0x8 scope:local data:4byte
-lbl_80579FF0 = .sdata2:0x80579FF0; // type:object size:0x4 align:4 data:float
-lbl_80579FF4 = .sdata2:0x80579FF4; // type:object size:0x4 align:4 data:float
+@30309 = .sdata2:0x80579FF0; // type:object size:0x4 scope:local align:4 data:float
+@30361 = .sdata2:0x80579FF4; // type:object size:0x4 scope:local align:4 data:float
lbl_80579FF8 = .sdata2:0x80579FF8; // type:object size:0x4 align:4 data:float
lbl_80579FFC = .sdata2:0x80579FFC; // type:object size:0x4 align:4 data:float
lbl_8057A000 = .sdata2:0x8057A000; // type:object size:0x4 align:4 data:float
@@ -47656,8 +47713,8 @@ lbl_8057C494 = .sdata2:0x8057C494; // type:object size:0x4 align:4 data:float
@9626 = .sdata2:0x8057C4D0; // type:object size:0x4 scope:local align:4 data:float
@9633 = .sdata2:0x8057C4D4; // type:object size:0x4 scope:local align:4 data:float
@9634 = .sdata2:0x8057C4D8; // type:object size:0x4 scope:local align:4 data:float
-lbl_8057C4E0 = .sdata2:0x8057C4E0; // type:object size:0x8
-lbl_8057C4E8 = .sdata2:0x8057C4E8; // type:object size:0x8 align:8 data:double
+SPECIAL_TYPES = .sdata2:0x8057C4E0; // type:object size:0x3 scope:local data:string
+@10716 = .sdata2:0x8057C4E8; // type:object size:0x8 scope:local align:8 data:double
lbl_8057C4F0 = .sdata2:0x8057C4F0; // type:object size:0x4 align:4 data:float
lbl_8057C4F4 = .sdata2:0x8057C4F4; // type:object size:0x4 align:4 data:float
lbl_8057C4F8 = .sdata2:0x8057C4F8; // type:object size:0x4 align:4 data:float
@@ -51224,17 +51281,27 @@ StateID_In__10dLytWipe_c = .bss:0x805B0C80; // type:object size:0x30 data:4byte
StateID_Wait__10dLytWipe_c = .bss:0x805B0CC0; // type:object size:0x30 data:4byte
@18975 = .bss:0x805B0CF0; // type:object size:0xC scope:local
StateID_Out__10dLytWipe_c = .bss:0x805B0D00; // type:object size:0x30 data:4byte
-lbl_805B0D30 = .bss:0x805B0D30; // type:object size:0x10
-LytHelp__LytHelpMain__STATE_MODE_NONE = .bss:0x805B0D40; // type:object size:0x40 data:4byte
-LytHelp__LytHelpMain__STATE_MODE_IN = .bss:0x805B0D80; // type:object size:0x40 data:4byte
-LytHelp__LytHelpMain__STATE_MODE_WAIT = .bss:0x805B0DC0; // type:object size:0x40 data:4byte
-LytHelp__LytHelpMain__STATE_MODE_OUT = .bss:0x805B0E00; // type:object size:0x40 data:4byte
-LytHelp__LytHelpMain__STATE_MODE_END = .bss:0x805B0E40; // type:object size:0x40 data:4byte
-LytHelp__STATE_NONE = .bss:0x805B0E80; // type:object size:0x40 data:4byte
-LytHelp__STATE_IN = .bss:0x805B0EC0; // type:object size:0x40 data:4byte
-LytHelp__STATE_WAIT = .bss:0x805B0F00; // type:object size:0x40 data:4byte
-LytHelp__STATE_OUT = .bss:0x805B0F40; // type:object size:0x40 data:4byte
-LytHelp__STATE_END = .bss:0x805B0F80; // type:object size:0x30 data:4byte
+@26232 = .bss:0x805B0D30; // type:object size:0xC scope:local
+...bss.0 = .bss:0x805B0D30; // type:label scope:local
+StateID_ModeNone__14dLytHelpMain_c = .bss:0x805B0D40; // type:object size:0x30 data:4byte
+@26236 = .bss:0x805B0D70; // type:object size:0xC scope:local
+StateID_ModeIn__14dLytHelpMain_c = .bss:0x805B0D80; // type:object size:0x30 data:4byte
+@26240 = .bss:0x805B0DB0; // type:object size:0xC scope:local
+StateID_ModeWait__14dLytHelpMain_c = .bss:0x805B0DC0; // type:object size:0x30 data:4byte
+@26244 = .bss:0x805B0DF0; // type:object size:0xC scope:local
+StateID_ModeOut__14dLytHelpMain_c = .bss:0x805B0E00; // type:object size:0x30 data:4byte
+@26248 = .bss:0x805B0E30; // type:object size:0xC scope:local
+StateID_ModeEnd__14dLytHelpMain_c = .bss:0x805B0E40; // type:object size:0x30 data:4byte
+@26252 = .bss:0x805B0E70; // type:object size:0xC scope:local
+StateID_None__10dLytHelp_c = .bss:0x805B0E80; // type:object size:0x30 data:4byte
+@26256 = .bss:0x805B0EB0; // type:object size:0xC scope:local
+StateID_In__10dLytHelp_c = .bss:0x805B0EC0; // type:object size:0x30 data:4byte
+@26260 = .bss:0x805B0EF0; // type:object size:0xC scope:local
+StateID_Wait__10dLytHelp_c = .bss:0x805B0F00; // type:object size:0x30 data:4byte
+@26264 = .bss:0x805B0F30; // type:object size:0xC scope:local
+StateID_Out__10dLytHelp_c = .bss:0x805B0F40; // type:object size:0x30 data:4byte
+@26268 = .bss:0x805B0F70; // type:object size:0xC scope:local
+StateID_End__10dLytHelp_c = .bss:0x805B0F80; // type:object size:0x30 data:4byte
@6677 = .bss:0x805B0FB0; // type:object size:0xC scope:local
...bss.0 = .bss:0x805B0FB0; // type:label scope:local
StateID_ModeNone__19dLytBirdGaugeMain_c = .bss:0x805B0FC0; // type:object size:0x30 data:4byte
diff --git a/configure.py b/configure.py
index d2aca699..47669a2c 100644
--- a/configure.py
+++ b/configure.py
@@ -538,7 +538,7 @@ config.libs = [
Object(Matching, "d/lyt/d_lyt_battery.cpp"),
Object(Matching, "d/lyt/d_lyt_area_caption.cpp"),
Object(Matching, "d/lyt/d_lyt_wipe.cpp"),
- Object(NonMatching, "d/lyt/d_lyt_help.cpp"),
+ Object(Matching, "d/lyt/d_lyt_help.cpp"),
Object(NonMatching, "d/lyt/d_lyt_system_window.cpp"),
Object(Matching, "d/lyt/d_lyt_bird_gauge.cpp"),
Object(Matching, "d/lyt/d_lyt_sky_gauge.cpp"),
diff --git a/include/d/d_d2d.h b/include/d/d_d2d.h
index 95fefae5..15398c06 100644
--- a/include/d/d_d2d.h
+++ b/include/d/d_d2d.h
@@ -10,6 +10,8 @@ void defaultSet();
void drawBefore();
void draw();
+void setLytAllocator();
+
} // namespace d2d
#endif
diff --git a/include/d/lyt/d_lyt_control_game.h b/include/d/lyt/d_lyt_control_game.h
index d6908d2a..1c43e800 100644
--- a/include/d/lyt/d_lyt_control_game.h
+++ b/include/d/lyt/d_lyt_control_game.h
@@ -37,6 +37,7 @@ public:
private:
/* 0x00068 */ UI_STATE_MGR_DECLARE(dLytControlGame_c);
+
static dLytControlGame_c *sInstance;
};
diff --git a/include/d/lyt/d_lyt_help.h b/include/d/lyt/d_lyt_help.h
new file mode 100644
index 00000000..e3bd2401
--- /dev/null
+++ b/include/d/lyt/d_lyt_help.h
@@ -0,0 +1,89 @@
+#ifndef D_LYT_HELP_H
+#define D_LYT_HELP_H
+
+#include "common.h"
+#include "d/lyt/d2d.h"
+#include "d/lyt/d_textbox.h"
+#include "m/m2d.h"
+#include "s/s_State.hpp"
+
+class dLytHelpMain_c {
+public:
+ dLytHelpMain_c();
+ virtual ~dLytHelpMain_c() {}
+
+ bool build(d2d::ResAccIf_c *resAcc);
+ bool remove();
+ bool execute();
+ bool draw();
+
+ void modeRequestIn(s32 textIndex);
+ void modeRequestWait();
+ void modeRequestOut();
+ void modeRequestEnd();
+ void modeRequestNone();
+
+ bool isIdle() const {
+ return mIsIdle;
+ }
+
+ void setText(s32 textIndex);
+private:
+
+ STATE_FUNC_DECLARE(dLytHelpMain_c, ModeNone);
+ STATE_FUNC_DECLARE(dLytHelpMain_c, ModeIn);
+ STATE_FUNC_DECLARE(dLytHelpMain_c, ModeWait);
+ STATE_FUNC_DECLARE(dLytHelpMain_c, ModeOut);
+ STATE_FUNC_DECLARE(dLytHelpMain_c, ModeEnd);
+
+ /* 0x004 */ UI_STATE_MGR_DECLARE(dLytHelpMain_c);
+ /* 0x040 */ d2d::LytBase_c mLyt;
+ /* 0x0D0 */ d2d::AnmGroup_c mAnm[3];
+ /* 0x190 */ dTextBox_c *mpTextBoxesTitleS[3];
+ /* 0x19C */ dTextBox_c *mpTextBoxesTitle[3];
+ /* 0x1A8 */ dTextBox_c *mpTextBoxesS[3];
+ /* 0x1B4 */ dTextBox_c *mpTextBoxes[3];
+ /* 0x1C0 */ bool mIsIdle;
+ /* 0x1C4 */ s32 mTextIndex;
+ /* 0x1C8 */ s32 field_0x1C8;
+ /* 0x1CC */ s32 field_0x1CC;
+};
+
+class dLytHelp_c : public m2d::Base_c {
+public:
+ dLytHelp_c() : mStateMgr(*this, sStateID::null) {
+ sInstance = this;
+ }
+ virtual ~dLytHelp_c() {
+ sInstance = nullptr;
+ }
+ virtual void draw() override;
+ virtual bool build();
+ virtual bool remove();
+ virtual bool execute();
+
+ bool setText(s32 textIndex);
+ void changeText(s32 textIndex);
+
+private:
+ static dLytHelp_c *sInstance;
+
+ STATE_FUNC_DECLARE(dLytHelp_c, None);
+ STATE_FUNC_DECLARE(dLytHelp_c, In);
+ STATE_FUNC_DECLARE(dLytHelp_c, Wait);
+ STATE_FUNC_DECLARE(dLytHelp_c, Out);
+ STATE_FUNC_DECLARE(dLytHelp_c, End);
+
+ STATE_MGR_DEFINE_UTIL_ISSTATE(dLytHelp_c);
+
+ /* 0x010 */ UI_STATE_MGR_DECLARE(dLytHelp_c);
+ /* 0x04C */ d2d::ResAccIf_c mResAcc;
+ /* 0x3BC */ dLytHelpMain_c *mpMain;
+ /* 0x3C0 */ bool field_0x3C0;
+ /* 0x3C1 */ bool field_0x3C1;
+ /* 0x3C2 */ bool field_0x3C2;
+ /* 0x3C4 */ s32 mTextIndex;
+ /* 0x3C8 */ s32 field_0x3C8;
+};
+
+#endif
diff --git a/include/d/lyt/d_lyt_sky_gauge.h b/include/d/lyt/d_lyt_sky_gauge.h
index 1c7fa35a..82390128 100644
--- a/include/d/lyt/d_lyt_sky_gauge.h
+++ b/include/d/lyt/d_lyt_sky_gauge.h
@@ -22,8 +22,8 @@ public:
void setHeight(f32 height);
- bool wantsMove() {
- return mWantsModeChange;
+ bool isIdle() {
+ return mIsIdle;
}
const d2d::dLytSub &getLyt() const {
@@ -43,7 +43,7 @@ private:
/* 0x004 */ UI_STATE_MGR_DECLARE(dLytSkyGaugeMain_c);
/* 0x040 */ d2d::dLytSub mLyt;
/* 0x0D4 */ d2d::AnmGroup_c mAnmGroups[3];
- /* 0x194 */ bool mWantsModeChange;
+ /* 0x194 */ bool mIsIdle;
/* 0x195 */ bool field_0x195; // unused
};
diff --git a/include/d/lyt/meter/d_lyt_meter.h b/include/d/lyt/meter/d_lyt_meter.h
index 6f7b5b23..00bc98d4 100644
--- a/include/d/lyt/meter/d_lyt_meter.h
+++ b/include/d/lyt/meter/d_lyt_meter.h
@@ -187,7 +187,7 @@ private:
/* 0x13771 */ bool field_0x13771;
/* 0x13772 */ bool field_0x13772;
/* 0x13773 */ bool field_0x13773;
- /* 0x13774 */ bool field_0x13774;
+ /* 0x13774 */ bool mHelpOpen;
/* 0x13775 */ bool field_0x13775;
/* 0x13776 */ bool mTimerVisible;
/* 0x13777 */ bool mBirdGaugeVisible;
@@ -276,8 +276,12 @@ public:
mMain.field_0x13773 = value;
}
- bool getMeterField_0x13774() const {
- return mMain.field_0x13774;
+ bool isHelpOpen() const {
+ return mMain.mHelpOpen;
+ }
+
+ void setHelpOpen(bool val) {
+ mMain.mHelpOpen = val;
}
void setMeterField_0x13775(bool val) {
diff --git a/include/m/m2d.h b/include/m/m2d.h
index eec17c94..475fc6b0 100644
--- a/include/m/m2d.h
+++ b/include/m/m2d.h
@@ -231,7 +231,8 @@ private:
u32 field_0x94;
};
-void getAllocator();
+// Inofficial, not found in NSMBW
+void setLytAllocator();
} // namespace m2d
diff --git a/src/d/lyt/d_lyt_help.cpp b/src/d/lyt/d_lyt_help.cpp
new file mode 100644
index 00000000..1de1a71b
--- /dev/null
+++ b/src/d/lyt/d_lyt_help.cpp
@@ -0,0 +1,542 @@
+#include "d/lyt/d_lyt_help.h"
+
+#include "common.h"
+#include "d/d_d2d.h"
+#include "d/d_pad.h"
+#include "d/lyt/meter/d_lyt_meter.h"
+#include "d/snd/d_snd_player_mgr.h"
+#include "m/m2d.h"
+#include "sized_string.h"
+#include "toBeSorted/arc_managers/layout_arc_manager.h"
+
+STATE_DEFINE(dLytHelpMain_c, ModeNone);
+STATE_DEFINE(dLytHelpMain_c, ModeIn);
+STATE_DEFINE(dLytHelpMain_c, ModeWait);
+STATE_DEFINE(dLytHelpMain_c, ModeOut);
+STATE_DEFINE(dLytHelpMain_c, ModeEnd);
+
+STATE_DEFINE(dLytHelp_c, None);
+STATE_DEFINE(dLytHelp_c, In);
+STATE_DEFINE(dLytHelp_c, Wait);
+STATE_DEFINE(dLytHelp_c, Out);
+STATE_DEFINE(dLytHelp_c, End);
+
+static const d2d::LytBrlanMapping brlanMap[] = {
+ { "helpMode_02_in.brlan", "G_inOut"},
+ { "helpMode_02_out.brlan", "G_inOut"},
+ {"helpMode_02_loopBg.brlan", "G_loopBg_00"},
+};
+
+#define HELP_MAIN_ANIM_IN 0
+#define HELP_MAIN_ANIM_OUT 1
+#define HELP_MAIN_ANIM_LOOP_BG 2
+
+#define HELP_MAIN_NUM_ANIMS 3
+
+static const char *sTextBoxNamesTitleS[] = {
+ "T_orExTitleS_00",
+ "T_orExTitleS_01",
+ "T_orExTitleS_02",
+};
+
+static const char *sTextBoxNamesTitle[] = {
+ "T_orExTitle_00",
+ "T_orExTitle_01",
+ "T_orExTitle_02",
+};
+
+static const char *sTextBoxNamesS[] = {
+ "T_orExS_00",
+ "T_orExS_01",
+ "T_orExS_02",
+};
+
+static const char *sTextBoxNames[] = {
+ "T_orEx_00",
+ "T_orEx_01",
+ "T_orEx_02",
+};
+
+#define HELP_ANIM_NUM_PANES 3
+
+dLytHelp_c *dLytHelp_c::sInstance;
+
+void dLytHelpMain_c::initializeState_ModeNone() {}
+void dLytHelpMain_c::executeState_ModeNone() {
+ mIsIdle = true;
+}
+void dLytHelpMain_c::finalizeState_ModeNone() {}
+
+void dLytHelpMain_c::initializeState_ModeIn() {}
+void dLytHelpMain_c::executeState_ModeIn() {
+ if (mAnm[HELP_MAIN_ANIM_IN].isEndReached()) {
+ mAnm[HELP_MAIN_ANIM_IN].setAnimEnable(false);
+ mIsIdle = true;
+ }
+}
+void dLytHelpMain_c::finalizeState_ModeIn() {}
+
+void dLytHelpMain_c::initializeState_ModeWait() {}
+void dLytHelpMain_c::executeState_ModeWait() {
+ mIsIdle = true;
+}
+void dLytHelpMain_c::finalizeState_ModeWait() {}
+
+void dLytHelpMain_c::initializeState_ModeOut() {}
+void dLytHelpMain_c::executeState_ModeOut() {
+ if (field_0x1CC == 0) {
+ if (mAnm[HELP_MAIN_ANIM_OUT].isEndReached()) {
+ mAnm[HELP_MAIN_ANIM_LOOP_BG].setAnimEnable(false);
+ mAnm[HELP_MAIN_ANIM_OUT].setAnimEnable(false);
+ field_0x1CC = 1;
+ }
+ } else {
+ mIsIdle = true;
+ }
+}
+void dLytHelpMain_c::finalizeState_ModeOut() {}
+
+void dLytHelpMain_c::initializeState_ModeEnd() {}
+void dLytHelpMain_c::executeState_ModeEnd() {
+ mIsIdle = true;
+}
+void dLytHelpMain_c::finalizeState_ModeEnd() {}
+
+dLytHelpMain_c::dLytHelpMain_c() : mStateMgr(*this) {}
+
+bool dLytHelpMain_c::build(d2d::ResAccIf_c *resAcc) {
+ mLyt.setResAcc(resAcc);
+ mLyt.build("helpMode_02.brlyt", nullptr);
+ mLyt.setPriority(0x8A);
+
+ for (int i = 0; i < HELP_MAIN_NUM_ANIMS; i++) {
+ mAnm[i].init(brlanMap[i].mFile, resAcc, mLyt.getLayout(), brlanMap[i].mName);
+ mAnm[i].bind(false);
+ mAnm[i].setAnimEnable(false);
+ }
+
+ for (int i = 0; i < HELP_ANIM_NUM_PANES; i++) {
+ mpTextBoxesTitleS[i] = mLyt.getTextBox(sTextBoxNamesTitleS[i]);
+ mpTextBoxesTitle[i] = mLyt.getTextBox(sTextBoxNamesTitle[i]);
+ mpTextBoxesS[i] = mLyt.getTextBox(sTextBoxNamesS[i]);
+ mpTextBoxes[i] = mLyt.getTextBox(sTextBoxNames[i]);
+ }
+
+ mAnm[HELP_MAIN_ANIM_IN].setAnimEnable(true);
+ mAnm[HELP_MAIN_ANIM_IN].setFrame(0.0f);
+ mAnm[HELP_MAIN_ANIM_LOOP_BG].setAnimEnable(true);
+ mAnm[HELP_MAIN_ANIM_LOOP_BG].setFrame(0.0f);
+
+ mLyt.calc();
+
+ mAnm[HELP_MAIN_ANIM_IN].setAnimEnable(false);
+ mAnm[HELP_MAIN_ANIM_OUT].setAnimEnable(false);
+
+ modeRequestNone();
+
+ field_0x1C8 = 0;
+ field_0x1CC = 0;
+ return true;
+}
+
+bool dLytHelpMain_c::remove() {
+ mLyt.unbindAnims();
+ for (int i = 0; i < HELP_MAIN_NUM_ANIMS; i++) {
+ mAnm[i].remove();
+ }
+ return true;
+}
+
+void dLytHelpMain_c::modeRequestIn(s32 textIndex) {
+ mTextIndex = textIndex;
+ setText(textIndex);
+
+ mAnm[HELP_MAIN_ANIM_IN].setAnimEnable(true);
+ mAnm[HELP_MAIN_ANIM_IN].setFrame(0.0f);
+ mLyt.calc();
+ mStateMgr.changeState(StateID_ModeIn);
+ mIsIdle = false;
+}
+
+void dLytHelpMain_c::modeRequestWait() {
+ mAnm[HELP_MAIN_ANIM_IN].setAnimEnable(false);
+ mStateMgr.changeState(StateID_ModeWait);
+ mIsIdle = false;
+}
+
+void dLytHelpMain_c::modeRequestOut() {
+ mAnm[HELP_MAIN_ANIM_OUT].setAnimEnable(true);
+ mAnm[HELP_MAIN_ANIM_OUT].setFrame(0.0f);
+ mLyt.calc();
+ field_0x1CC = 0;
+ mStateMgr.changeState(StateID_ModeOut);
+ mIsIdle = false;
+}
+
+void dLytHelpMain_c::modeRequestEnd() {
+ mStateMgr.changeState(StateID_ModeEnd);
+ mIsIdle = false;
+}
+
+void dLytHelpMain_c::modeRequestNone() {
+ mStateMgr.changeState(StateID_ModeNone);
+ mIsIdle = false;
+}
+
+static const char *sHelpTextKeys[] = {
+ "NORMAL", "NORMAL_Z", "SWORD", "SWORD_LV1", "SWORD_LV1", "DOWSING", "SCOOP_LV2",
+ "SWIM_LV0", "SWIM_LV1", "PACHINKO", "PACHINKO", "BEATLE", "BEATLE_HOOK", "BEATLE_HOOK",
+ "BOMB_BAG", "VACUUM", "BUTTERFLY_NET", "BOW", "BOW", "WHIP", "HOOK",
+ "PICK_UP", "HARP", "SHIELD", "DIVING", "DIVING", "PARASHAWL", "BIRD",
+ "BIRD", "BOTTLE", "LOOK", "LOOK", "CLIMB", "TIGHTROPE", "HANG_TIGHTROPE",
+ "SWING", "SWING", "SWING", "CRAWLING", "NORMAL", "BOSSKEY", "TROLLEY",
+ "BOAT", "BALANCEBALL", "SLIDER", "DRAWING", "PANEL", "SIT", "CATAPULT",
+ "LADDER", "BIGSWORD", "GISIKI", "PUMPKIN", "SIREN", "MINI_DIVING", "MINI_MINE",
+ "MINI_TAKE", "MINI_INSECT", "MINI_CLAY",
+};
+
+// TODO - fakematch
+#pragma push
+#pragma ppc_iro_level 2
+
+void dLytHelpMain_c::setText(s32 textIndex) {
+ if (textIndex >= 59) {
+ return;
+ }
+
+ SizedString<64> label;
+
+ if (mTextIndex != textIndex) {
+ mTextIndex = textIndex;
+ }
+
+ for (int i = 0; i < 3; i++) {
+ s32 textSuffix = i + 1;
+ bool bUseCaption2 = false;
+ bool bUseTitle2 = false;
+ switch (mTextIndex) {
+ case 4: {
+ // SWORD_LV1 dupe
+ if (i == 2) {
+ bUseCaption2 = true;
+ }
+ break;
+ }
+ case 36: {
+ // SWING dupe 1
+ if (i == 0) {
+ bUseCaption2 = true;
+ } else if (i == 2) {
+ textSuffix = 4;
+ }
+ break;
+ }
+ case 37: {
+ // SWING dupe 2
+ if (i == 2) {
+ textSuffix = 4;
+ }
+ break;
+ }
+ case 13: {
+ // BEATLE_HOOK dupe
+ if (i == 1) {
+ textSuffix = 3;
+ bUseCaption2 = true;
+ } else if (i == 2) {
+ textSuffix = 4;
+ }
+ break;
+ }
+ case 10: {
+ // PACHINKO dupe
+ if (i == 1) {
+ bUseCaption2 = true;
+ }
+ break;
+ }
+ case 39: {
+ // NORMAL dupe
+ if (i >= 1) {
+ bUseCaption2 = true;
+ }
+ break;
+ }
+
+ case 25: {
+ // DIVING dupe
+ if (i == 2) {
+ bUseCaption2 = true;
+ }
+ break;
+ }
+ case 28: {
+ // BIRD dupe
+ if (i == 1) {
+ bUseCaption2 = true;
+ bUseTitle2 = true;
+ }
+ break;
+ }
+ case 31: {
+ // LOOK dupe
+ if (i == 2) {
+ textSuffix = 4;
+ }
+ break;
+ }
+ case 18: {
+ // BOW dupe
+ bUseCaption2 = true;
+ bUseTitle2 = true;
+ break;
+ }
+ }
+
+ if (!bUseTitle2) {
+ label.sprintf("HLP_%s_%02d", sHelpTextKeys[textIndex], textSuffix);
+ } else {
+ label.sprintf("HLP_%s_%02d_2", sHelpTextKeys[textIndex], textSuffix);
+ }
+ mpTextBoxesTitleS[i]->setMessageWithGlobalTextProcessor2(label, nullptr);
+ mpTextBoxesTitle[i]->setMessageWithGlobalTextProcessor2(label, nullptr);
+
+ if (!bUseCaption2) {
+ label.sprintf("CPT_%s_%02d", sHelpTextKeys[textIndex], textSuffix);
+ } else {
+ label.sprintf("CPT_%s_%02d_2", sHelpTextKeys[textIndex], textSuffix);
+ }
+ mpTextBoxesS[i]->setMessageWithGlobalTextProcessor2(label, nullptr);
+ mpTextBoxes[i]->setMessageWithGlobalTextProcessor2(label, nullptr);
+ }
+}
+
+#pragma pop
+
+bool dLytHelpMain_c::execute() {
+ mStateMgr.executeState();
+
+ for (int i = 0; i < HELP_MAIN_NUM_ANIMS; i++) {
+ if (mAnm[i].isEnabled()) {
+ mAnm[i].play();
+ }
+ }
+ mLyt.calc();
+ return true;
+}
+
+bool dLytHelpMain_c::draw() {
+ mLyt.addToDrawList();
+ return true;
+}
+
+void dLytHelp_c::initializeState_None() {}
+void dLytHelp_c::executeState_None() {
+ if (field_0x3C0 == true) {
+ dSndPlayerMgr_c::GetInstance()->enterHelp();
+ mpMain->modeRequestIn(mTextIndex);
+ dLytMeter_c::GetInstance()->setHelpOpen(true);
+ mStateMgr.changeState(StateID_In);
+ field_0x3C0 = false;
+ }
+}
+void dLytHelp_c::finalizeState_None() {}
+
+void dLytHelp_c::initializeState_In() {}
+void dLytHelp_c::executeState_In() {
+ if (mpMain->isIdle()) {
+ field_0x3C2 = true;
+ mpMain->modeRequestWait();
+ mStateMgr.changeState(StateID_Wait);
+ field_0x3C8 = 0;
+ }
+}
+void dLytHelp_c::finalizeState_In() {}
+
+void dLytHelp_c::initializeState_Wait() {}
+void dLytHelp_c::executeState_Wait() {
+ if (dPad::getDownTrig2() || dPad::getDownTrigMinus() || dPad::getDownTrigB() || field_0x3C1) {
+ mpMain->modeRequestOut();
+ dSndPlayerMgr_c::GetInstance()->leaveHelp();
+ dLytMeter_c::GetInstance()->setHelpOpen(false);
+ mStateMgr.changeState(StateID_Out);
+ }
+}
+void dLytHelp_c::finalizeState_Wait() {}
+
+void dLytHelp_c::initializeState_Out() {}
+void dLytHelp_c::executeState_Out() {
+ if (mpMain->isIdle()) {
+ mTextIndex = -1;
+ mpMain->modeRequestEnd();
+ mStateMgr.changeState(StateID_End);
+ }
+}
+void dLytHelp_c::finalizeState_Out() {}
+
+void dLytHelp_c::initializeState_End() {}
+void dLytHelp_c::executeState_End() {}
+void dLytHelp_c::finalizeState_End() {}
+
+bool dLytHelp_c::setText(s32 textIndex) {
+ if (*mStateMgr.getStateID() == StateID_None) {
+ field_0x3C0 = true;
+ field_0x3C1 = false;
+ if (textIndex <= ARRAY_LENGTH(sHelpTextKeys) - 1) {
+ mTextIndex = textIndex;
+ } else {
+ mTextIndex = 0;
+ }
+ return true;
+ } else {
+ return false;
+ }
+}
+
+void dLytHelp_c::changeText(s32 textIndex) {
+ bool instantSwitch = false;
+ if (*mStateMgr.getStateID() != StateID_None || mTextIndex >= 0) {
+ switch (mTextIndex) {
+ case 0:
+ /* NORMAL */
+ if (textIndex == 1) {
+ mTextIndex = 1;
+ instantSwitch = true;
+ } else if (textIndex == 39) {
+ mTextIndex = 39;
+ instantSwitch = true;
+ }
+ break;
+ case 1:
+ /* NORMAL_Z */
+ if (textIndex == 0) {
+ mTextIndex = 0;
+ instantSwitch = true;
+ }
+ break;
+ case 2:
+ case 3:
+ case 4:
+ /* SWORD / _LV1 */
+ if (textIndex == 23) {
+ mTextIndex = 23;
+ instantSwitch = true;
+ }
+ break;
+ case 11:
+ /* BEATLE */
+ if (textIndex == 12) {
+ mTextIndex = 12;
+ instantSwitch = true;
+ } else if (textIndex == 13) {
+ mTextIndex = 13;
+ instantSwitch = true;
+ }
+ break;
+ case 12:
+ case 13:
+ /* BEATLE / _HOOK */
+ if (textIndex == 11) {
+ mTextIndex = 11;
+ instantSwitch = true;
+ }
+ break;
+ case 23:
+ /* SHIELD */
+ if (textIndex == 2) {
+ mTextIndex = 2;
+ instantSwitch = true;
+ } else if (textIndex == 3) {
+ mTextIndex = 3;
+ instantSwitch = true;
+ } else if (textIndex == 4) {
+ mTextIndex = 4;
+ instantSwitch = true;
+ }
+ break;
+ case 27:
+ if (textIndex == 28) {
+ mTextIndex = 28;
+ instantSwitch = true;
+ }
+ break;
+ case 33:
+ if (textIndex == 34) {
+ mTextIndex = 34;
+ instantSwitch = true;
+ }
+ break;
+ case 34:
+ if (textIndex == 33) {
+ mTextIndex = 33;
+ instantSwitch = true;
+ }
+ break;
+ case 35:
+ if (textIndex == 37) {
+ mTextIndex = 37;
+ instantSwitch = true;
+ }
+ break;
+ case 37:
+ if (textIndex == 35) {
+ mTextIndex = 35;
+ instantSwitch = true;
+ }
+ break;
+ case 39:
+ if (textIndex == 0) {
+ mTextIndex = 0;
+ instantSwitch = true;
+ }
+ break;
+ }
+ }
+
+ if (instantSwitch) {
+ mpMain->setText(mTextIndex);
+ } else if (mTextIndex != textIndex) {
+ mTextIndex = textIndex;
+ field_0x3C1 = true;
+ }
+}
+
+bool dLytHelp_c::build() {
+ d2d::setLytAllocator();
+ void *data = LayoutArcManager::GetInstance()->getLoadedData("MenuHelp");
+ mResAcc.attach(data, "");
+ mpMain = new dLytHelpMain_c();
+ mpMain->build(&mResAcc);
+ mStateMgr.changeState(StateID_None);
+ field_0x3C0 = false;
+ field_0x3C1 = false;
+ field_0x3C2 = false;
+ mTextIndex = -1;
+ field_0x3C8 = 0;
+ m2d::setLytAllocator();
+ return true;
+}
+
+bool dLytHelp_c::remove() {
+ d2d::setLytAllocator();
+ mpMain->remove();
+ delete mpMain;
+ mpMain = nullptr;
+ mResAcc.detach();
+ m2d::setLytAllocator();
+ return true;
+}
+
+bool dLytHelp_c::execute() {
+ if (*mStateMgr.getStateID() != StateID_None) {
+ mpMain->execute();
+ }
+ mStateMgr.executeState();
+ return true;
+}
+
+void dLytHelp_c::draw() {
+ if (*mStateMgr.getStateID() != StateID_None) {
+ mpMain->draw();
+ }
+}
diff --git a/src/d/lyt/d_lyt_map.cpp b/src/d/lyt/d_lyt_map.cpp
index 478117d1..6e008c36 100644
--- a/src/d/lyt/d_lyt_map.cpp
+++ b/src/d/lyt/d_lyt_map.cpp
@@ -1,9 +1,10 @@
#include "d/lyt/d_lyt_map.h"
#include "common.h"
+#include "d/d_cursor_hit_check.h"
+#include "d/d_d2d.h"
#include "d/d_pad_nav.h"
#include "d/lyt/d2d.h"
-#include "d/d_cursor_hit_check.h"
#include "egg/core/eggColorFader.h"
#include "m/m_video.h"
#include "sized_string.h"
@@ -485,13 +486,12 @@ dLytMapMain_c::~dLytMapMain_c() {}
void dLytMapMain_c::draw() {}
-extern "C" void fn_80016690();
void dLytMap_c::build() {
- fn_80016690();
+ d2d::setLytAllocator();
void *data = LayoutArcManager::GetInstance()->getLoadedData("Map2D");
mResAcc.attach(data, "");
mMapMain.build();
- m2d::getAllocator();
+ m2d::setLytAllocator();
mMapMain.setPriority(0x86);
// TODO there's another thing here at 0x91C0
}
diff --git a/src/d/lyt/d_lyt_sky_gauge.cpp b/src/d/lyt/d_lyt_sky_gauge.cpp
index b75541f6..f2eb60ef 100644
--- a/src/d/lyt/d_lyt_sky_gauge.cpp
+++ b/src/d/lyt/d_lyt_sky_gauge.cpp
@@ -27,16 +27,16 @@ dLytSkyGauge_c *dLytSkyGauge_c::sInstance;
void dLytSkyGaugeMain_c::initializeState_ModeNone() {}
void dLytSkyGaugeMain_c::executeState_ModeNone() {
- mWantsModeChange = true;
+ mIsIdle = true;
}
void dLytSkyGaugeMain_c::finalizeState_ModeNone() {}
void dLytSkyGaugeMain_c::initializeState_ModeIn() {}
void dLytSkyGaugeMain_c::executeState_ModeIn() {
- if (!mWantsModeChange) {
+ if (!mIsIdle) {
if (mAnmGroups[LYT_SKY_GAUGE_MAIN_ANIM_IN].isEndReached()) {
mAnmGroups[LYT_SKY_GAUGE_MAIN_ANIM_IN].setAnimEnable(false);
- mWantsModeChange = true;
+ mIsIdle = true;
}
}
}
@@ -44,16 +44,16 @@ void dLytSkyGaugeMain_c::finalizeState_ModeIn() {}
void dLytSkyGaugeMain_c::initializeState_ModeMove() {}
void dLytSkyGaugeMain_c::executeState_ModeMove() {
- mWantsModeChange = true;
+ mIsIdle = true;
}
void dLytSkyGaugeMain_c::finalizeState_ModeMove() {}
void dLytSkyGaugeMain_c::initializeState_ModeOut() {}
void dLytSkyGaugeMain_c::executeState_ModeOut() {
- if (!mWantsModeChange) {
+ if (!mIsIdle) {
if (mAnmGroups[LYT_SKY_GAUGE_MAIN_ANIM_OUT].isEndReached()) {
mAnmGroups[LYT_SKY_GAUGE_MAIN_ANIM_OUT].setAnimEnable(false);
- mWantsModeChange = true;
+ mIsIdle = true;
}
}
}
@@ -112,7 +112,7 @@ bool dLytSkyGaugeMain_c::remove() {
void dLytSkyGaugeMain_c::changeToNone() {
mStateMgr.changeState(StateID_ModeNone);
- mWantsModeChange = false;
+ mIsIdle = false;
}
void dLytSkyGaugeMain_c::changeToIn() {
@@ -120,12 +120,12 @@ void dLytSkyGaugeMain_c::changeToIn() {
mAnmGroups[LYT_SKY_GAUGE_MAIN_ANIM_IN].setFrame(0.0f);
mLyt.calc();
mStateMgr.changeState(StateID_ModeIn);
- mWantsModeChange = false;
+ mIsIdle = false;
}
void dLytSkyGaugeMain_c::changeToMove() {
mStateMgr.changeState(StateID_ModeMove);
- mWantsModeChange = false;
+ mIsIdle = false;
}
void dLytSkyGaugeMain_c::changeToOut() {
@@ -133,7 +133,7 @@ void dLytSkyGaugeMain_c::changeToOut() {
mAnmGroups[LYT_SKY_GAUGE_MAIN_ANIM_OUT].setFrame(0.0f);
mLyt.calc();
mStateMgr.changeState(StateID_ModeOut);
- mWantsModeChange = false;
+ mIsIdle = false;
}
void dLytSkyGaugeMain_c::setHeight(f32 height) {
@@ -154,7 +154,7 @@ void dLytSkyGauge_c::finalizeState_None() {}
void dLytSkyGauge_c::initializeState_In() {}
void dLytSkyGauge_c::executeState_In() {
- if (mMain.wantsMove()) {
+ if (mMain.isIdle()) {
mMain.changeToMove();
mStateMgr.changeState(StateID_Move);
}
@@ -173,7 +173,7 @@ void dLytSkyGauge_c::finalizeState_Move() {}
void dLytSkyGauge_c::initializeState_Out() {}
void dLytSkyGauge_c::executeState_Out() {
- if (mMain.wantsMove()) {
+ if (mMain.isIdle()) {
mMain.changeToNone();
mStateMgr.changeState(StateID_None);
}
diff --git a/src/d/lyt/meter/d_lyt_meter.cpp b/src/d/lyt/meter/d_lyt_meter.cpp
index 50a874b3..5df7025f 100644
--- a/src/d/lyt/meter/d_lyt_meter.cpp
+++ b/src/d/lyt/meter/d_lyt_meter.cpp
@@ -350,7 +350,7 @@ bool dLytMeter2Button_c::remove() {
bool dLytMeter2Button_c::execute() {
dLytMeter_c *meter = dLytMeter_c::GetInstance();
- if (meter->getMeterField_0x13774()) {
+ if (meter->isHelpOpen()) {
StoryflagManager::sInstance->unsetFlag(832);
}
if (mpOwnerPane == nullptr) {
@@ -579,7 +579,7 @@ bool dLytMeterMain_c::fn_800C9FE0() {
}
bool dLytMeterMain_c::fn_800CA040() {
- if (field_0x13774 || fn_800D5650() || fn_800D5680()) {
+ if (mHelpOpen || fn_800D5650() || fn_800D5680()) {
return true;
}
return false;
@@ -853,7 +853,7 @@ bool dLytMeterMain_c::build(d2d::ResAccIf_c *resAcc) {
mBasicPosition = POSITION_NORMAL;
field_0x13750 = 4;
field_0x13770 = 3;
- field_0x13774 = 0;
+ mHelpOpen = false;
field_0x13775 = 0;
field_0x13773 = 0;
mTimerVisible = false;
@@ -1021,7 +1021,7 @@ bool dLytMeterMain_c::fn_800D5380(u8 arg) {
}
bool dLytMeterMain_c::fn_800D53D0() {
- if (checkIsInSkykeepPuzzle() && !field_0x13774) {
+ if (checkIsInSkykeepPuzzle() && !mHelpOpen) {
return true;
}
return false;
@@ -1086,7 +1086,7 @@ bool dLytMeterMain_c::fn_800D56B0() {
if ((EventManager::isInEvent() && field_0x1377E == 0 && dAcPy_c::GetLink()->getCurrentAction() != 0x8C &&
dMessage_c::getInstance()->getField_0x32C() == 0xC) ||
- field_0x13774) {
+ mHelpOpen) {
return true;
}
@@ -1350,7 +1350,7 @@ void dLytMeterMain_c::checkPaneVisibility() {
}
if ((dAcPy_c::GetLink()->hasvt_0x1C0() || dAcPy_c::GetLink()->checkActionFlagsCont(0x10) ||
- (fn_800D56B0() && !field_0x13774) || mGanbariGauge.fn_80104760() ||
+ (fn_800D56B0() && !mHelpOpen) || mGanbariGauge.fn_80104760() ||
MinigameManager::isInMinigameState(MinigameManager::FUN_FUN_ISLAND) ||
MinigameManager::isInMinigameState(MinigameManager::THRILL_DIGGER) ||
diff --git a/src/d/lyt/meter/d_lyt_meter_dowsing.cpp b/src/d/lyt/meter/d_lyt_meter_dowsing.cpp
index a7b426a4..d0562c30 100644
--- a/src/d/lyt/meter/d_lyt_meter_dowsing.cpp
+++ b/src/d/lyt/meter/d_lyt_meter_dowsing.cpp
@@ -631,7 +631,7 @@ void dLytMeterDowsing_c::executeState_Unuse() {
mLyt.calc();
mAnm[DOWSING_ANIM_INPUT_0].setAnimEnable(false);
mStateMgr.changeState(StateID_DemoMove);
- } else if (!dLytMeter_c::GetMain()->fn_800D5680() && dLytMeter_c::GetInstance()->getMeterField_0x13774() == 0 &&
+ } else if (!dLytMeter_c::GetMain()->fn_800D5680() && !dLytMeter_c::GetInstance()->isHelpOpen() &&
dLytMeter_c::GetInstance()->checkAllFlags(METER_BTN_C)) {
if (field_0x54D8 <= 0) {
mStateMgr.changeState(StateID_ToUse);
diff --git a/src/d/lyt/meter/d_lyt_meter_event_skip.cpp b/src/d/lyt/meter/d_lyt_meter_event_skip.cpp
index 4a1e9914..5289b97e 100644
--- a/src/d/lyt/meter/d_lyt_meter_event_skip.cpp
+++ b/src/d/lyt/meter/d_lyt_meter_event_skip.cpp
@@ -22,8 +22,8 @@ static const d2d::LytBrlanMapping brlanMap[] = {
void dLytMeterEventSkip_c::initializeState_Invisible() {}
void dLytMeterEventSkip_c::executeState_Invisible() {
- if (shouldPromptForSkip() || dLytMeter_c::GetInstance()->getMeterField_0x13774()) {
- if (dLytMeter_c::GetInstance()->getMeterField_0x13774()) {
+ if (shouldPromptForSkip() || dLytMeter_c::GetInstance()->isHelpOpen()) {
+ if (dLytMeter_c::GetInstance()->isHelpOpen()) {
for (int i = 0; i < 2; i++) {
mLyt.fn_800AB9A0(mpTextBoxes[i], 1);
}
@@ -54,7 +54,7 @@ void dLytMeterEventSkip_c::finalizeState_In() {}
void dLytMeterEventSkip_c::initializeState_Visible() {}
void dLytMeterEventSkip_c::executeState_Visible() {
- if (!shouldPromptForSkip() && !dLytMeter_c::GetInstance()->getMeterField_0x13774()) {
+ if (!shouldPromptForSkip() && !dLytMeter_c::GetInstance()->isHelpOpen()) {
mAnm[SKIP_ANIM_OUT].setAnimEnable(true);
mAnm[SKIP_ANIM_OUT].setFrame(0.0f);
mStateMgr.changeState(StateID_Out);
diff --git a/src/m/m2d.cpp b/src/m/m2d.cpp
index 5de7dd37..1d980058 100644
--- a/src/m/m2d.cpp
+++ b/src/m/m2d.cpp
@@ -62,8 +62,7 @@ void drawBefore(u8 priority) {
}
}
-// Despite the name this *updates* Lyt's allocator
-void getAllocator() {
+void setLytAllocator() {
nw4r::lyt::Layout::mspAllocator = l_allocator;
}