summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrobojumper <robojumper@gmail.com>2025-11-22 22:27:54 +0100
committerGitHub <noreply@github.com>2025-11-22 22:27:54 +0100
commit71713b520bf0179cbfd962928c326de5ec697db6 (patch)
treeaf53729245320a6452ee443596070d448cbb31dd
parentcd78f5b78b5233474375ff7898e848fb000d4b54 (diff)
parentab83c7628f2f1bb1d8842cfee839338a8ccc86d9 (diff)
Merge pull request #269 from robojumper/d_lyt_simple_window
d_lyt_simple_window OK
-rw-r--r--config/SOUE01/symbols.txt749
-rw-r--r--configure.py2
-rw-r--r--include/d/d_tag_processor.h10
-rw-r--r--include/d/d_textwindow_unk.h8
-rw-r--r--include/d/lyt/d_lyt_control_game.h23
-rw-r--r--include/d/lyt/d_lyt_map.h8
-rw-r--r--include/d/lyt/d_lyt_wipe.h3
-rw-r--r--include/d/lyt/msg_window/d_lyt_msg_window.h9
-rw-r--r--include/d/lyt/msg_window/d_lyt_msg_window_sword.h4
-rw-r--r--include/d/lyt/msg_window/d_lyt_simple_window.h200
-rw-r--r--src/d/d_textwindow_unk.cpp4
-rw-r--r--src/d/lyt/d_lyt_control_game.cpp14
-rw-r--r--src/d/lyt/meter/d_lyt_meter.cpp6
-rw-r--r--src/d/lyt/msg_window/d_lyt_msg_window_sword.cpp14
-rw-r--r--src/d/lyt/msg_window/d_lyt_simple_window.cpp795
15 files changed, 1488 insertions, 361 deletions
diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt
index a358e059..5cc5fd31 100644
--- a/config/SOUE01/symbols.txt
+++ b/config/SOUE01/symbols.txt
@@ -7145,7 +7145,7 @@ initializeState_Wait__19dLytMsgWindowTalk_cFv = .text:0x80121720; // type:functi
executeState_Wait__19dLytMsgWindowTalk_cFv = .text:0x80121730; // type:function size:0x2C
finalizeState_Wait__19dLytMsgWindowTalk_cFv = .text:0x80121760; // type:function size:0x4
initializeState_Visible__19dLytMsgWindowTalk_cFv = .text:0x80121770; // type:function size:0x10C
-getTextBox__19dLytMsgWindowTalk_cFv = .text:0x80121880; // type:function size:0x8
+getTextBox__19dLytMsgWindowTalk_cFv = .text:0x80121880; // type:function size:0x8 scope:weak
executeState_Visible__19dLytMsgWindowTalk_cFv = .text:0x80121890; // type:function size:0x28
finalizeState_Visible__19dLytMsgWindowTalk_cFv = .text:0x801218C0; // type:function size:0x4
initializeState_Out__19dLytMsgWindowTalk_cFv = .text:0x801218D0; // type:function size:0x60
@@ -7158,12 +7158,12 @@ isDoneOpening__19dLytMsgWindowTalk_cCFv = .text:0x80121D30; // type:function siz
close__19dLytMsgWindowTalk_cFv = .text:0x80121DD0; // type:function size:0xC
isDoneClosing__19dLytMsgWindowTalk_cCFv = .text:0x80121DE0; // type:function size:0x4C
setText__19dLytMsgWindowTalk_cFPCw = .text:0x80121E30; // type:function size:0x7C
-isDoneDecide__19dLytMsgWindowTalk_cCFv = .text:0x80121EB0; // type:function size:0x8
-startDecide__19dLytMsgWindowTalk_cFb = .text:0x80121EC0; // type:function size:0x8
-startConfirm__19dLytMsgWindowTalk_cFv = .text:0x80121ED0; // type:function size:0x8
-__sinit_\d_lyt_msg_window_talk_cpp = .text:0x80121EE0; // type:function size:0x3F4
-__dt__34sFStateID_c<19dLytMsgWindowTalk_c>Fv = .text:0x801222E0; // type:function size:0x58
-isSameName__34sFStateID_c<19dLytMsgWindowTalk_c>CFPCc = .text:0x80122340; // type:function size:0x88
+isDoneDecide__19dLytMsgWindowTalk_cCFv = .text:0x80121EB0; // type:function size:0x8 scope:weak
+startDecide__19dLytMsgWindowTalk_cFb = .text:0x80121EC0; // type:function size:0x8 scope:weak
+startConfirm__19dLytMsgWindowTalk_cFv = .text:0x80121ED0; // type:function size:0x8 scope:weak
+__sinit_\d_lyt_msg_window_talk_cpp = .text:0x80121EE0; // type:function size:0x3F4 scope:local
+__dt__34sFStateID_c<19dLytMsgWindowTalk_c>Fv = .text:0x801222E0; // type:function size:0x58 scope:weak
+isSameName__34sFStateID_c<19dLytMsgWindowTalk_c>CFPCc = .text:0x80122340; // type:function size:0x88 scope:weak
build__19dLytMsgWindowLink_cFPQ23d2d10ResAccIf_cPQ23d2d10ResAccIf_cP15dTagProcessor_c = .text:0x801223D0; // type:function size:0x2F8
remove__19dLytMsgWindowLink_cFv = .text:0x801226D0; // type:function size:0xE0
initializeState_Invisible__19dLytMsgWindowLink_cFv = .text:0x801227B0; // type:function size:0x8
@@ -7176,7 +7176,7 @@ initializeState_Wait__19dLytMsgWindowLink_cFv = .text:0x80122A80; // type:functi
executeState_Wait__19dLytMsgWindowLink_cFv = .text:0x80122A90; // type:function size:0x2C
finalizeState_Wait__19dLytMsgWindowLink_cFv = .text:0x80122AC0; // type:function size:0x4
initializeState_Visible__19dLytMsgWindowLink_cFv = .text:0x80122AD0; // type:function size:0x10C
-getTextBox__19dLytMsgWindowLink_cFv = .text:0x80122BE0; // type:function size:0x8
+getTextBox__19dLytMsgWindowLink_cFv = .text:0x80122BE0; // type:function size:0x8 scope:weak
executeState_Visible__19dLytMsgWindowLink_cFv = .text:0x80122BF0; // type:function size:0x28
finalizeState_Visible__19dLytMsgWindowLink_cFv = .text:0x80122C20; // type:function size:0x4
initializeState_Out__19dLytMsgWindowLink_cFv = .text:0x80122C30; // type:function size:0x60
@@ -7189,12 +7189,12 @@ isDoneOpening__19dLytMsgWindowLink_cCFv = .text:0x801230A0; // type:function siz
close__19dLytMsgWindowLink_cFv = .text:0x801230F0; // type:function size:0xC
isDoneClosing__19dLytMsgWindowLink_cCFv = .text:0x80123100; // type:function size:0x9C
setText__19dLytMsgWindowLink_cFPCw = .text:0x801231A0; // type:function size:0x7C
-isDoneDecide__19dLytMsgWindowLink_cCFv = .text:0x80123220; // type:function size:0x8
-startDecide__19dLytMsgWindowLink_cFb = .text:0x80123230; // type:function size:0x8
-startConfirm__19dLytMsgWindowLink_cFv = .text:0x80123240; // type:function size:0x8
-__sinit_\d_lyt_msg_window_link_cpp = .text:0x80123250; // type:function size:0x3F4
-__dt__34sFStateID_c<19dLytMsgWindowLink_c>Fv = .text:0x80123650; // type:function size:0x58
-isSameName__34sFStateID_c<19dLytMsgWindowLink_c>CFPCc = .text:0x801236B0; // type:function size:0x88
+isDoneDecide__19dLytMsgWindowLink_cCFv = .text:0x80123220; // type:function size:0x8 scope:weak
+startDecide__19dLytMsgWindowLink_cFb = .text:0x80123230; // type:function size:0x8 scope:weak
+startConfirm__19dLytMsgWindowLink_cFv = .text:0x80123240; // type:function size:0x8 scope:weak
+__sinit_\d_lyt_msg_window_link_cpp = .text:0x80123250; // type:function size:0x3F4 scope:local
+__dt__34sFStateID_c<19dLytMsgWindowLink_c>Fv = .text:0x80123650; // type:function size:0x58 scope:weak
+isSameName__34sFStateID_c<19dLytMsgWindowLink_c>CFPCc = .text:0x801236B0; // type:function size:0x88 scope:weak
build__18dLytMsgWindowGet_cFPQ23d2d10ResAccIf_cPQ23d2d10ResAccIf_cP15dTagProcessor_c = .text:0x80123740; // type:function size:0x2A0
remove__18dLytMsgWindowGet_cFv = .text:0x801239E0; // type:function size:0xE0
initializeState_Invisible__18dLytMsgWindowGet_cFv = .text:0x80123AC0; // type:function size:0x8
@@ -7204,7 +7204,7 @@ initializeState_In__18dLytMsgWindowGet_cFv = .text:0x80123B10; // type:function
executeState_In__18dLytMsgWindowGet_cFv = .text:0x80123B60; // type:function size:0x78
finalizeState_In__18dLytMsgWindowGet_cFv = .text:0x80123BE0; // type:function size:0x4
initializeState_Visible__18dLytMsgWindowGet_cFv = .text:0x80123BF0; // type:function size:0x10C
-getTextBox__18dLytMsgWindowGet_cFv = .text:0x80123D00; // type:function size:0x8
+getTextBox__18dLytMsgWindowGet_cFv = .text:0x80123D00; // type:function size:0x8 scope:weak
executeState_Visible__18dLytMsgWindowGet_cFv = .text:0x80123D10; // type:function size:0x28
finalizeState_Visible__18dLytMsgWindowGet_cFv = .text:0x80123D40; // type:function size:0x4
initializeState_Out__18dLytMsgWindowGet_cFv = .text:0x80123D50; // type:function size:0x48
@@ -7217,12 +7217,12 @@ isDoneOpening__18dLytMsgWindowGet_cCFv = .text:0x801240F0; // type:function size
close__18dLytMsgWindowGet_cFv = .text:0x80124140; // type:function size:0xC
isDoneClosing__18dLytMsgWindowGet_cCFv = .text:0x80124150; // type:function size:0x4C
setText__18dLytMsgWindowGet_cFPCw = .text:0x801241A0; // type:function size:0x7C
-isDoneDecide__18dLytMsgWindowGet_cCFv = .text:0x80124220; // type:function size:0x8
-startDecide__18dLytMsgWindowGet_cFb = .text:0x80124230; // type:function size:0x8
-startConfirm__18dLytMsgWindowGet_cFv = .text:0x80124240; // type:function size:0x8
-__sinit_\d_lyt_msg_window_get_cpp = .text:0x80124250; // type:function size:0x338
-__dt__33sFStateID_c<18dLytMsgWindowGet_c>Fv = .text:0x80124590; // type:function size:0x58
-isSameName__33sFStateID_c<18dLytMsgWindowGet_c>CFPCc = .text:0x801245F0; // type:function size:0x88
+isDoneDecide__18dLytMsgWindowGet_cCFv = .text:0x80124220; // type:function size:0x8 scope:weak
+startDecide__18dLytMsgWindowGet_cFb = .text:0x80124230; // type:function size:0x8 scope:weak
+startConfirm__18dLytMsgWindowGet_cFv = .text:0x80124240; // type:function size:0x8 scope:weak
+__sinit_\d_lyt_msg_window_get_cpp = .text:0x80124250; // type:function size:0x338 scope:local
+__dt__33sFStateID_c<18dLytMsgWindowGet_c>Fv = .text:0x80124590; // type:function size:0x58 scope:weak
+isSameName__33sFStateID_c<18dLytMsgWindowGet_c>CFPCc = .text:0x801245F0; // type:function size:0x88 scope:weak
build__20dLytMsgWindowSword_cFPQ23d2d10ResAccIf_cPQ23d2d10ResAccIf_cP15dTagProcessor_c = .text:0x80124680; // type:function size:0x3A4
remove__20dLytMsgWindowSword_cFv = .text:0x80124A30; // type:function size:0xE0
initializeState_Invisible__20dLytMsgWindowSword_cFv = .text:0x80124B10; // type:function size:0x8
@@ -7336,92 +7336,92 @@ setText__19dLytMsgWindowDemo_cFPCw = .text:0x80127D50; // type:function size:0x7
__sinit_\d_lyt_msg_window_demo_cpp = .text:0x80127DD0; // type:function size:0x338 scope:local
__dt__34sFStateID_c<19dLytMsgWindowDemo_c>Fv = .text:0x80128110; // type:function size:0x58 scope:weak
isSameName__34sFStateID_c<19dLytMsgWindowDemo_c>CFPCc = .text:0x80128170; // type:function size:0x88 scope:weak
-fn_80128200 = .text:0x80128200; // type:function size:0x8
-fn_80128210 = .text:0x80128210; // type:function size:0x4
-fn_80128220 = .text:0x80128220; // type:function size:0x8
-fn_80128230 = .text:0x80128230; // type:function size:0x2D0
-fn_80128500 = .text:0x80128500; // type:function size:0x5C
-fn_80128560 = .text:0x80128560; // type:function size:0x94
-fn_80128600 = .text:0x80128600; // type:function size:0x170
-fn_80128770 = .text:0x80128770; // type:function size:0xE4
-fn_80128860 = .text:0x80128860; // type:function size:0x5C
-fn_801288C0 = .text:0x801288C0; // type:function size:0x10C
-fn_801289D0 = .text:0x801289D0; // type:function size:0x8
-fn_801289E0 = .text:0x801289E0; // type:function size:0x48
-fn_80128A30 = .text:0x80128A30; // type:function size:0x5C
-fn_80128A90 = .text:0x80128A90; // type:function size:0x7C
-fn_80128B10 = .text:0x80128B10; // type:function size:0x370
-fn_80128E80 = .text:0x80128E80; // type:function size:0x50
-fn_80128ED0 = .text:0x80128ED0; // type:function size:0x9C
-fn_80128F70 = .text:0x80128F70; // type:function size:0x34
-fn_80128FB0 = .text:0x80128FB0; // type:function size:0xE4
-fn_801290A0 = .text:0x801290A0; // type:function size:0x5C
-fn_80129100 = .text:0x80129100; // type:function size:0x10C
-fn_80129210 = .text:0x80129210; // type:function size:0x8
-fn_80129220 = .text:0x80129220; // type:function size:0x48
-fn_80129270 = .text:0x80129270; // type:function size:0x5C
-fn_801292D0 = .text:0x801292D0; // type:function size:0x16C
-fn_80129440 = .text:0x80129440; // type:function size:0x2D0
-fn_80129710 = .text:0x80129710; // type:function size:0x5C
-fn_80129770 = .text:0x80129770; // type:function size:0x94
-fn_80129810 = .text:0x80129810; // type:function size:0x170
-fn_80129980 = .text:0x80129980; // type:function size:0xE4
-fn_80129A70 = .text:0x80129A70; // type:function size:0x5C
-fn_80129AD0 = .text:0x80129AD0; // type:function size:0x10C
-fn_80129BE0 = .text:0x80129BE0; // type:function size:0x8
-fn_80129BF0 = .text:0x80129BF0; // type:function size:0x48
-fn_80129C40 = .text:0x80129C40; // type:function size:0x5C
-fn_80129CA0 = .text:0x80129CA0; // type:function size:0x7C
-LytSimpleWindow__init = .text:0x80129D20; // type:function size:0x164
-fn_80129E90 = .text:0x80129E90; // type:function size:0x10
-fn_80129EA0 = .text:0x80129EA0; // type:function size:0x114
-fn_80129FC0 = .text:0x80129FC0; // type:function size:0xA4
-fn_8012A070 = .text:0x8012A070; // type:function size:0x40
-fn_8012A0B0 = .text:0x8012A0B0; // type:function size:0xA4
-fn_8012A160 = .text:0x8012A160; // type:function size:0xA4
-stateInvisibleEnter = .text:0x8012A210; // type:function size:0x4
-stateInvisibleUpdate = .text:0x8012A220; // type:function size:0x460
-fn_8012A680 = .text:0x8012A680; // type:function size:0x8
-fn_8012A690 = .text:0x8012A690; // type:function size:0x8
-stateInvisibleLeave = .text:0x8012A6A0; // type:function size:0x4
-stateInEnter2 = .text:0x8012A6B0; // type:function size:0xF0
-stateInUpdate2 = .text:0x8012A7A0; // type:function size:0x8C
-fn_8012A830 = .text:0x8012A830; // type:function size:0x8
-stateInLeave2 = .text:0x8012A840; // type:function size:0x4
-stateOutputTextEnter = .text:0x8012A850; // type:function size:0x14
-fn_8012A870 = .text:0x8012A870; // type:function size:0x4
-stateOutputTextUpdate = .text:0x8012A880; // type:function size:0x130
-stateOutputTextLeave = .text:0x8012A9B0; // type:function size:0x4
-stateOutEnter2 = .text:0x8012A9C0; // type:function size:0x1AC
-fn_8012AB70 = .text:0x8012AB70; // type:function size:0x4
-stateOutUpdate2 = .text:0x8012AB80; // type:function size:0x174
-fn_8012AD00 = .text:0x8012AD00; // type:function size:0x8
-stateOutLeave2 = .text:0x8012AD10; // type:function size:0x4
-fn_8012AD20 = .text:0x8012AD20; // type:function size:0x6C
-fn_8012AD90 = .text:0x8012AD90; // type:function size:0x8
-fn_8012ADA0 = .text:0x8012ADA0; // type:function size:0x10
-fn_8012ADB0 = .text:0x8012ADB0; // type:function size:0xB4
-fn_8012AE70 = .text:0x8012AE70; // type:function size:0x8
-LytSimpleWindow__displayText = .text:0x8012AE80; // type:function size:0x11C
-fn_8012AFA0 = .text:0x8012AFA0; // type:function size:0x4C
-fn_8012AFF0 = .text:0x8012AFF0; // type:function size:0x10
-fn_8012B000__18dLytSimpleWindow_cFv = .text:0x8012B000; // type:function size:0x50
-fn_8012B050 = .text:0x8012B050; // type:function size:0xD4
-fn_8012B130 = .text:0x8012B130; // type:function size:0xF4
-fn_8012B230 = .text:0x8012B230; // type:function size:0xA4
-fn_8012B2E0 = .text:0x8012B2E0; // type:function size:0xA0
-fn_8012B380 = .text:0x8012B380; // type:function size:0x6C
-fn_8012B3F0 = .text:0x8012B3F0; // type:function size:0x58
-fn_8012B450 = .text:0x8012B450; // type:function size:0x8
-fn_8012B460 = .text:0x8012B460; // type:function size:0x8
-fn_8012B470 = .text:0x8012B470; // type:function size:0x8
-fn_8012B480 = .text:0x8012B480; // type:function size:0x8
-fn_8012B490 = .text:0x8012B490; // type:function size:0x30
-fn_8012B4C0 = .text:0x8012B4C0; // type:function size:0x30
-fn_8012B4F0 = .text:0x8012B4F0; // type:function size:0x30
-LytSimpleWindow__initStates = .text:0x8012B520; // type:function size:0x338
-LytSimpleWindow__dtor = .text:0x8012B860; // type:function size:0x58
-fn_8012B8C0 = .text:0x8012B8C0; // type:function size:0x88
+build__23dLytSimpleWindowSubtypeFPQ23d2d10ResAccIf_cP15dTagProcessor_c = .text:0x80128200; // type:function size:0x8
+initializeIn__23dLytSimpleWindowSubtypeFl = .text:0x80128210; // type:function size:0x4
+setText__23dLytSimpleWindowSubtypeFPCw = .text:0x80128220; // type:function size:0x8
+build__22dLytSimpleWindowTalk_cFPQ23d2d10ResAccIf_cP15dTagProcessor_c = .text:0x80128230; // type:function size:0x2D0
+remove__22dLytSimpleWindowTalk_cFv = .text:0x80128500; // type:function size:0x5C
+execute__22dLytSimpleWindowTalk_cFv = .text:0x80128560; // type:function size:0x94
+draw__22dLytSimpleWindowTalk_cFv = .text:0x80128600; // type:function size:0x170
+initializeIn__22dLytSimpleWindowTalk_cFl = .text:0x80128770; // type:function size:0xE4
+isIn__22dLytSimpleWindowTalk_cFv = .text:0x80128860; // type:function size:0x5C
+initializeOutputText__22dLytSimpleWindowTalk_cFv = .text:0x801288C0; // type:function size:0x10C
+getTextBox__22dLytSimpleWindowTalk_cFv = .text:0x801289D0; // type:function size:0x8 scope:weak
+initializeOut__22dLytSimpleWindowTalk_cFv = .text:0x801289E0; // type:function size:0x48
+isOut__22dLytSimpleWindowTalk_cFv = .text:0x80128A30; // type:function size:0x5C
+setText__22dLytSimpleWindowTalk_cFPCw = .text:0x80128A90; // type:function size:0x7C
+build__23dLytSimpleWindowSword_cFPQ23d2d10ResAccIf_cP15dTagProcessor_c = .text:0x80128B10; // type:function size:0x370
+remove__23dLytSimpleWindowSword_cFv = .text:0x80128E80; // type:function size:0x50
+execute__23dLytSimpleWindowSword_cFv = .text:0x80128ED0; // type:function size:0x9C
+draw__23dLytSimpleWindowSword_cFv = .text:0x80128F70; // type:function size:0x34
+initializeIn__23dLytSimpleWindowSword_cFl = .text:0x80128FB0; // type:function size:0xE4
+isIn__23dLytSimpleWindowSword_cFv = .text:0x801290A0; // type:function size:0x5C
+initializeOutputText__23dLytSimpleWindowSword_cFv = .text:0x80129100; // type:function size:0x10C
+getTextBox__23dLytSimpleWindowSword_cFv = .text:0x80129210; // type:function size:0x8 scope:weak
+initializeOut__23dLytSimpleWindowSword_cFv = .text:0x80129220; // type:function size:0x48
+isOut__23dLytSimpleWindowSword_cFv = .text:0x80129270; // type:function size:0x5C
+setText__23dLytSimpleWindowSword_cFPCw = .text:0x801292D0; // type:function size:0x16C
+build__22dLytSimpleWindowLink_cFPQ23d2d10ResAccIf_cP15dTagProcessor_c = .text:0x80129440; // type:function size:0x2D0
+remove__22dLytSimpleWindowLink_cFv = .text:0x80129710; // type:function size:0x5C
+execute__22dLytSimpleWindowLink_cFv = .text:0x80129770; // type:function size:0x94
+draw__22dLytSimpleWindowLink_cFv = .text:0x80129810; // type:function size:0x170
+initializeIn__22dLytSimpleWindowLink_cFl = .text:0x80129980; // type:function size:0xE4
+isIn__22dLytSimpleWindowLink_cFv = .text:0x80129A70; // type:function size:0x5C
+initializeOutputText__22dLytSimpleWindowLink_cFv = .text:0x80129AD0; // type:function size:0x10C
+getTextBox__22dLytSimpleWindowLink_cFv = .text:0x80129BE0; // type:function size:0x8 scope:weak
+initializeOut__22dLytSimpleWindowLink_cFv = .text:0x80129BF0; // type:function size:0x48
+isOut__22dLytSimpleWindowLink_cFv = .text:0x80129C40; // type:function size:0x5C
+setText__22dLytSimpleWindowLink_cFPCw = .text:0x80129CA0; // type:function size:0x7C
+build__18dLytSimpleWindow_cFv = .text:0x80129D20; // type:function size:0x164
+changeState__87sStateMgr_c<18dLytSimpleWindow_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x80129E90; // type:function size:0x10 scope:weak
+remove__18dLytSimpleWindow_cFv = .text:0x80129EA0; // type:function size:0x114
+__dt__22dLytSimpleWindowTalk_cFv = .text:0x80129FC0; // type:function size:0xA4 scope:weak
+__dt__23dLytSimpleWindowSubtypeFv = .text:0x8012A070; // type:function size:0x40 scope:weak
+__dt__23dLytSimpleWindowSword_cFv = .text:0x8012A0B0; // type:function size:0xA4 scope:weak
+__dt__22dLytSimpleWindowLink_cFv = .text:0x8012A160; // type:function size:0xA4 scope:weak
+initializeState_Invisible__18dLytSimpleWindow_cFv = .text:0x8012A210; // type:function size:0x4
+executeState_Invisible__18dLytSimpleWindow_cFv = .text:0x8012A220; // type:function size:0x460
+getTextBox__23dLytSimpleWindowSubtypeFv = .text:0x8012A680; // type:function size:0x8 scope:weak
+getCharData__23dLytSimpleWindowSubtypeFv = .text:0x8012A690; // type:function size:0x8 scope:weak
+finalizeState_Invisible__18dLytSimpleWindow_cFv = .text:0x8012A6A0; // type:function size:0x4
+initializeState_In__18dLytSimpleWindow_cFv = .text:0x8012A6B0; // type:function size:0xF0
+executeState_In__18dLytSimpleWindow_cFv = .text:0x8012A7A0; // type:function size:0x8C
+isIn__23dLytSimpleWindowSubtypeFv = .text:0x8012A830; // type:function size:0x8 scope:weak
+finalizeState_In__18dLytSimpleWindow_cFv = .text:0x8012A840; // type:function size:0x4
+initializeState_OutputText__18dLytSimpleWindow_cFv = .text:0x8012A850; // type:function size:0x14
+initializeOutputText__23dLytSimpleWindowSubtypeFv = .text:0x8012A870; // type:function size:0x4 scope:weak
+executeState_OutputText__18dLytSimpleWindow_cFv = .text:0x8012A880; // type:function size:0x130
+finalizeState_OutputText__18dLytSimpleWindow_cFv = .text:0x8012A9B0; // type:function size:0x4
+initializeState_Out__18dLytSimpleWindow_cFv = .text:0x8012A9C0; // type:function size:0x1AC
+initializeOut__23dLytSimpleWindowSubtypeFv = .text:0x8012AB70; // type:function size:0x4 scope:weak
+executeState_Out__18dLytSimpleWindow_cFv = .text:0x8012AB80; // type:function size:0x174
+isOut__23dLytSimpleWindowSubtypeFv = .text:0x8012AD00; // type:function size:0x8 scope:weak
+finalizeState_Out__18dLytSimpleWindow_cFv = .text:0x8012AD10; // type:function size:0x4
+execute__18dLytSimpleWindow_cFv = .text:0x8012AD20; // type:function size:0x6C
+execute__23dLytSimpleWindowSubtypeFv = .text:0x8012AD90; // type:function size:0x8 scope:weak
+executeState__87sStateMgr_c<18dLytSimpleWindow_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8012ADA0; // type:function size:0x10 scope:weak
+draw__18dLytSimpleWindow_cFv = .text:0x8012ADB0; // type:function size:0xB4
+draw__23dLytSimpleWindowSubtypeFv = .text:0x8012AE70; // type:function size:0x8 scope:weak
+set__18dLytSimpleWindow_cFPCclb = .text:0x8012AE80; // type:function size:0x11C
+isVisible__18dLytSimpleWindow_cFv = .text:0x8012AFA0; // type:function size:0x4C
+getStateID__87sStateMgr_c<18dLytSimpleWindow_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x8012AFF0; // type:function size:0x10 scope:weak
+isOutputText__18dLytSimpleWindow_cFv = .text:0x8012B000; // type:function size:0x50
+isInEvent__18dLytSimpleWindow_cFv = .text:0x8012B050; // type:function size:0xD4
+__dt__18dLytSimpleWindow_cFv = .text:0x8012B130; // type:function size:0xF4 scope:weak
+__dt__57sFStateMgr_c<18dLytSimpleWindow_c,20sStateMethodUsr_FI_c>Fv = .text:0x8012B230; // type:function size:0xA4 scope:weak
+__dt__87sStateMgr_c<18dLytSimpleWindow_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x8012B2E0; // type:function size:0xA0 scope:weak
+__dt__34sFStateFct_c<18dLytSimpleWindow_c>Fv = .text:0x8012B380; // type:function size:0x6C scope:weak
+__dt__31sFState_c<18dLytSimpleWindow_c>Fv = .text:0x8012B3F0; // type:function size:0x58 scope:weak
+getCharData__22dLytSimpleWindowLink_cFv = .text:0x8012B450; // type:function size:0x8 scope:weak
+getCharData__23dLytSimpleWindowSword_cFv = .text:0x8012B460; // type:function size:0x8 scope:weak
+getCharData__22dLytSimpleWindowTalk_cFv = .text:0x8012B470; // type:function size:0x8 scope:weak
+remove__23dLytSimpleWindowSubtypeFv = .text:0x8012B480; // type:function size:0x8 scope:weak
+finalizeState__33sFStateID_c<18dLytSimpleWindow_c>CFR18dLytSimpleWindow_c = .text:0x8012B490; // type:function size:0x30 scope:weak
+executeState__33sFStateID_c<18dLytSimpleWindow_c>CFR18dLytSimpleWindow_c = .text:0x8012B4C0; // type:function size:0x30 scope:weak
+initializeState__33sFStateID_c<18dLytSimpleWindow_c>CFR18dLytSimpleWindow_c = .text:0x8012B4F0; // type:function size:0x30 scope:weak
+__sinit_\d_lyt_simple_window_cpp = .text:0x8012B520; // type:function size:0x338 scope:local
+__dt__33sFStateID_c<18dLytSimpleWindow_c>Fv = .text:0x8012B860; // type:function size:0x58 scope:weak
+isSameName__33sFStateID_c<18dLytSimpleWindow_c>CFPCc = .text:0x8012B8C0; // type:function size:0x88 scope:weak
initializeState_Invisible__17dLytAutoCaption_cFv = .text:0x8012B950; // type:function size:0x4
executeState_Invisible__17dLytAutoCaption_cFv = .text:0x8012B960; // type:function size:0x28
finalizeState_Invisible__17dLytAutoCaption_cFv = .text:0x8012B990; // type:function size:0x4
@@ -16765,13 +16765,13 @@ 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
-LytControlGame__ctor = .text:0x802CC830; // type:function size:0x34
+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
-fn_802CC960 = .text:0x802CC960; // type:function size:0x10
+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
@@ -16796,24 +16796,24 @@ LytControlGame__stateMapDelResEnter = .text:0x802CCFB0; // type:function size:0x
LytControlGame__stateMapDelResUpdate = .text:0x802CCFC0; // type:function size:0x158
fn_802CD120 = .text:0x802CD120; // type:function size:0xD8
LytControlGame__stateMapDelResLeave = .text:0x802CD200; // type:function size:0x30
-LytControlGame__ctorCont = .text:0x802CD230; // type:function size:0x3F0
-fn_802CD620 = .text:0x802CD620; // type:function size:0x58
-fn_802CD680 = .text:0x802CD680; // type:function size:0x6C
-fn_802CD6F0 = .text:0x802CD6F0; // type:function size:0xA0
-fn_802CD790 = .text:0x802CD790; // type:function size:0xA4
-fn_802CD840 = .text:0x802CD840; // type:function size:0x1BC
+__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
-fn_802CDC20 = .text:0x802CDC20; // type:function size:0x4
-fn_802CDC30 = .text:0x802CDC30; // type:function size:0x40
-fn_802CDC70 = .text:0x802CDC70; // type:function size:0x6C
-fn_802CDCE0 = .text:0x802CDCE0; // type:function size:0x58
-fn_802CDD40 = .text:0x802CDD40; // type:function size:0x6C
-fn_802CDDB0 = .text:0x802CDDB0; // type:function size:0xA0
-fn_802CDE50 = .text:0x802CDE50; // type:function size:0xA4
-fn_802CDF00 = .text:0x802CDF00; // type:function size:0xFDC
+__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__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
@@ -16821,7 +16821,7 @@ 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
-fn_802CF980 = .text:0x802CF980; // type:function size:0x10
+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
@@ -16844,34 +16844,34 @@ 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
-fn_802D0770 = .text:0x802D0770; // type:function size:0x60
-fn_802D07D0 = .text:0x802D07D0; // 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
-fn_802D08C0 = .text:0x802D08C0; // type:function size:0x60
-fn_802D0920 = .text:0x802D0920; // type:function size:0xC
-fn_802D0930 = .text:0x802D0930; // type:function size:0x60
-fn_802D0990 = .text:0x802D0990; // 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
-fn_802D0A00 = .text:0x802D0A00; // type:function size:0x1C
-fn_802D0A20 = .text:0x802D0A20; // type:function size:0x1C
-fn_802D0A40 = .text:0x802D0A40; // 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
-fn_802D0B20 = .text:0x802D0B20; // type:function size:0x1C
-fn_802D0B40 = .text:0x802D0B40; // type:function size:0x1C
-fn_802D0B60 = .text:0x802D0B60; // type:function size:0x1C
-fn_802D0B80 = .text:0x802D0B80; // type:function size:0x1C
-fn_802D0BA0 = .text:0x802D0BA0; // type:function size:0x1C
-fn_802D0BC0 = .text:0x802D0BC0; // 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
@@ -16879,12 +16879,12 @@ 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
-fn_802D0C50 = .text:0x802D0C50; // type:function size:0x10
-fn_802D0C60 = .text:0x802D0C60; // type:function size:0x10
-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
+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
@@ -16897,18 +16897,18 @@ refreshState__79sStateMgr_c<10dLytWipe_c,20sStateMethodUsr_FI_c,12sFStateFct_c,1
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
-fn_802D0D70 = .text:0x802D0D70; // type:function size:0x10
-fn_802D0D80 = .text:0x802D0D80; // type:function size:0x10
-fn_802D0D90 = .text:0x802D0D90; // type:function size:0x10
-fn_802D0DA0 = .text:0x802D0DA0; // type:function size:0x10
-fn_802D0DB0 = .text:0x802D0DB0; // type:function size:0x10
-fn_802D0DC0 = .text:0x802D0DC0; // type:function size:0x10
-fn_802D0DD0 = .text:0x802D0DD0; // type:function size:0x10
-fn_802D0DE0 = .text:0x802D0DE0; // type:function size:0x10
-fn_802D0DF0 = .text:0x802D0DF0; // type:function size:0x10
-fn_802D0E00 = .text:0x802D0E00; // type:function size:0x10
-fn_802D0E10 = .text:0x802D0E10; // type:function size:0x10
-fn_802D0E20 = .text:0x802D0E20; // 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
@@ -26627,10 +26627,10 @@ GetBinaryInner__Q23EGG11LightObjectCFPQ33EGG28IBinary<Q23EGG11LightObject>3Bin =
SetBinaryInner__Q23EGG11LightObjectFRCQ33EGG28IBinary<Q23EGG11LightObject>3BinRCQ33EGG28IBinary<Q23EGG11LightObject>3Binf = .text:0x804AAC60; // type:function size:0x5EC
GetBinaryType__Q23EGG29IBinary<Q23EGG12LightTexture>Fv = .text:0x804AB250; // type:function size:0x8
GetVersion__Q23EGG29IBinary<Q23EGG12LightTexture>Fv = .text:0x804AB260; // type:function size:0x8
-setMaterialCommon__29@unnamed@eggLightTexture_cpp@Fv = .text:0x804AB270; // type:function size:0x9C
-setMaterialAmbient__29@unnamed@eggLightTexture_cpp@FRC8_GXColor = .text:0x804AB310; // type:function size:0x124
-setMaterialNormalSphere__29@unnamed@eggLightTexture_cpp@Fv = .text:0x804AB440; // type:function size:0x1B4
-setMaterialCrossOver__29@unnamed@eggLightTexture_cpp@Fv = .text:0x804AB600; // type:function size:0x180
+setMaterialCommon__29@unnamed@eggLightTexture_cpp@Fv = .text:0x804AB270; // type:function size:0x9C scope:local
+setMaterialAmbient__29@unnamed@eggLightTexture_cpp@FRC8_GXColor = .text:0x804AB310; // type:function size:0x124 scope:local
+setMaterialNormalSphere__29@unnamed@eggLightTexture_cpp@Fv = .text:0x804AB440; // type:function size:0x1B4 scope:local
+setMaterialCrossOver__29@unnamed@eggLightTexture_cpp@Fv = .text:0x804AB600; // type:function size:0x180 scope:local
initialize__Q23EGG12LightTextureFUsPQ23EGG4Heap = .text:0x804AB780; // type:function size:0x26C
__ct__Q23EGG12LightTextureFPCcPCQ23EGG19LightTextureManager = .text:0x804AB9F0; // type:function size:0x284
__dt__Q23EGG12LightTextureFv = .text:0x804ABC80; // type:function size:0x90
@@ -28284,16 +28284,16 @@ brlanMapPart2 = .rodata:0x804E73C8; // type:object size:0x50 scope:local data:4b
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
-lbl_804E7540 = .rodata:0x804E7540; // type:object size:0x20 data:4byte
-lbl_804E7560 = .rodata:0x804E7560; // type:object size:0x20 data:4byte
-lbl_804E7580 = .rodata:0x804E7580; // type:object size:0x18 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
brlanMap = .rodata:0x804E7598; // type:object size:0x28 scope:local data:4byte
brlanMap = .rodata:0x804E75C0; // type:object size:0x18 scope:local data:4byte
brlanMap = .rodata:0x804E75D8; // type:object size:0x18 scope:local data:4byte
brlanMap = .rodata:0x804E75F0; // type:object size:0x10 scope:local data:4byte
-lbl_804E7600 = .rodata:0x804E7600; // type:object size:0x20 data:4byte
-lbl_804E7620 = .rodata:0x804E7620; // type:object size:0x28 data:4byte
-lbl_804E7648 = .rodata:0x804E7648; // type:object size:0x20 data:4byte
+brlanMapTalk = .rodata:0x804E7600; // type:object size:0x20 scope:local data:4byte
+brlanMapSword = .rodata:0x804E7620; // type:object size:0x28 scope:local data:4byte
+brlanMapLink = .rodata:0x804E7648; // type:object size:0x20 scope:local data:4byte
brlanMap = .rodata:0x804E7668; // type:object size:0x20 scope:local data:4byte
brlanMap = .rodata:0x804E7688; // type:object size:0x18 scope:local data:4byte
sMapPinIconBrlanMap = .rodata:0x804E76A0; // type:object size:0x18 data:4byte
@@ -33163,64 +33163,121 @@ sSwordTextBoxes = .data:0x8051CB40; // type:object size:0xC scope:local
@17218 = .data:0x8051CC2C; // type:object size:0xA scope:local data:string
@17219 = .data:0x8051CC38; // type:object size:0x18 scope:local data:string
__vt__20dLytMsgWindowSubtype = .data:0x8051CC50; // type:object size:0x44
-lbl_8051CC98 = .data:0x8051CC98; // type:object size:0x1A data:string
-lbl_8051CCB4 = .data:0x8051CCB4; // type:object size:0xB data:string
-lbl_8051CCC0 = .data:0x8051CCC0; // type:object size:0x1B data:string
-lbl_8051CCE0 = .data:0x8051CCE0; // type:object size:0x20 data:string
-lbl_8051CD00 = .data:0x8051CD00; // type:object size:0xE data:string
-lbl_8051CD10 = .data:0x8051CD10; // type:object size:0x1C data:string
-lbl_8051CD2C = .data:0x8051CD2C; // type:object size:0xA data:string
-lbl_8051CD38 = .data:0x8051CD38; // type:object size:0xC data:string
-lbl_8051CD44 = .data:0x8051CD44; // type:object size:0xD data:string
-lbl_8051CD54 = .data:0x8051CD54; // type:object size:0xA data:string
-lbl_8051CD60 = .data:0x8051CD60; // type:object size:0xB data:string
-lbl_8051CD6C = .data:0x8051CD6C; // type:object size:0xE data:string
-lbl_8051CD7C = .data:0x8051CD7C; // type:object size:0x14 data:4byte
-lbl_8051CD90 = .data:0x8051CD90; // type:object size:0xD data:string
-lbl_8051CDA0 = .data:0x8051CDA0; // type:object size:0xE data:string
-lbl_8051CDB0 = .data:0x8051CDB0; // type:object size:0x9 data:string
-lbl_8051CDBC = .data:0x8051CDBC; // type:object size:0x17 data:string
+@18304 = .data:0x8051CC98; // type:object size:0x1A scope:local data:string
+...data.0 = .data:0x8051CC98; // type:label scope:local
+@18305 = .data:0x8051CCB4; // type:object size:0xB scope:local data:string
+@18306 = .data:0x8051CCC0; // type:object size:0x1B scope:local data:string
+@18307 = .data:0x8051CCE0; // type:object size:0x20 scope:local data:string
+@18308 = .data:0x8051CD00; // type:object size:0xE scope:local data:string
+@18309 = .data:0x8051CD10; // type:object size:0x1C scope:local data:string
+@18310 = .data:0x8051CD2C; // type:object size:0xA scope:local data:string
+@18311 = .data:0x8051CD38; // type:object size:0xC scope:local data:string
+@18312 = .data:0x8051CD44; // type:object size:0xD scope:local data:string
+@18313 = .data:0x8051CD54; // type:object size:0xA scope:local data:string
+@18314 = .data:0x8051CD60; // type:object size:0xB scope:local data:string
+@18315 = .data:0x8051CD6C; // type:object size:0xE scope:local data:string
+sPanes = .data:0x8051CD7C; // type:object size:0x14 scope:local data:4byte
+@18316 = .data:0x8051CD90; // type:object size:0xD scope:local data:string
+@18317 = .data:0x8051CDA0; // type:object size:0xE scope:local data:string
+@18318 = .data:0x8051CDB0; // type:object size:0x9 scope:local data:string
+@19381 = .data:0x8051CDBC; // type:object size:0x17 scope:local data:string
__vt__19dLytMsgWindowTalk_c = .data:0x8051CDD4; // type:object size:0x44
-lbl_8051CE18 = .data:0x8051CE18; // type:object size:0x170
-__vt__34sFStateID_c<19dLytMsgWindowTalk_c> = .data:0x8051CF88; // type:object size:0x34
-lbl_8051CFC0 = .data:0x8051CFC0; // type:object size:0x18
-lbl_8051CFD8 = .data:0x8051CFD8; // type:object size:0x10
-lbl_8051CFE8 = .data:0x8051CFE8; // type:object size:0x18 data:string
-lbl_8051D000 = .data:0x8051D000; // type:object size:0x20
-lbl_8051D020 = .data:0x8051D020; // type:object size:0x10
-lbl_8051D030 = .data:0x8051D030; // type:object size:0x1C
-lbl_8051D04C = .data:0x8051D04C; // type:object size:0xC
-lbl_8051D058 = .data:0x8051D058; // type:object size:0xC data:string
-lbl_8051D064 = .data:0x8051D064; // type:object size:0x10
-lbl_8051D074 = .data:0x8051D074; // type:object size:0xC
-lbl_8051D080 = .data:0x8051D080; // type:object size:0xC
-lbl_8051D08C = .data:0x8051D08C; // type:object size:0x10
-lbl_8051D09C = .data:0x8051D09C; // type:object size:0x14 data:4byte
-lbl_8051D0B0 = .data:0x8051D0B0; // type:object size:0x10
-lbl_8051D0C0 = .data:0x8051D0C0; // type:object size:0x10
-lbl_8051D0D0 = .data:0x8051D0D0; // type:object size:0xC
-lbl_8051D0DC = .data:0x8051D0DC; // type:object size:0x14 data:string
-__vt__19dLytMsgWindowLink_c = .data:0x8051D0F0; // type:object size:0x1B0
-__vt__34sFStateID_c<19dLytMsgWindowLink_c> = .data:0x8051D2A0; // type:object size:0x38
-lbl_8051D2D8 = .data:0x8051D2D8; // type:object size:0x18
-lbl_8051D2F0 = .data:0x8051D2F0; // type:object size:0xC
-lbl_8051D2FC = .data:0x8051D2FC; // type:object size:0x1C
-lbl_8051D318 = .data:0x8051D318; // type:object size:0x18 data:string
-lbl_8051D330 = .data:0x8051D330; // type:object size:0xC
-lbl_8051D33C = .data:0x8051D33C; // type:object size:0xC data:string
-lbl_8051D348 = .data:0x8051D348; // type:object size:0xC
-lbl_8051D354 = .data:0x8051D354; // type:object size:0xC
-lbl_8051D360 = .data:0x8051D360; // type:object size:0x10
-lbl_8051D370 = .data:0x8051D370; // type:object size:0xC
-lbl_8051D37C = .data:0x8051D37C; // type:object size:0xC
-lbl_8051D388 = .data:0x8051D388; // type:object size:0x18 data:4byte
-lbl_8051D3A0 = .data:0x8051D3A0; // type:object size:0x10
-lbl_8051D3B0 = .data:0x8051D3B0; // type:object size:0x10
-lbl_8051D3C0 = .data:0x8051D3C0; // type:object size:0xC
-lbl_8051D3CC = .data:0x8051D3CC; // type:object size:0x14
+@19806 = .data:0x8051CE18; // type:object size:0xC scope:local
+@19807 = .data:0x8051CE24; // type:object size:0xC scope:local
+@19808 = .data:0x8051CE30; // type:object size:0xC scope:local
+@19809 = .data:0x8051CE3C; // type:object size:0xC scope:local
+@19810 = .data:0x8051CE48; // type:object size:0xC scope:local
+@19811 = .data:0x8051CE54; // type:object size:0xC scope:local
+@19812 = .data:0x8051CE60; // type:object size:0xC scope:local
+@19813 = .data:0x8051CE6C; // type:object size:0xC scope:local
+@19814 = .data:0x8051CE78; // type:object size:0xC scope:local
+@19815 = .data:0x8051CE84; // type:object size:0xC scope:local
+@19816 = .data:0x8051CE90; // type:object size:0xC scope:local
+@19817 = .data:0x8051CE9C; // type:object size:0xC scope:local
+@19818 = .data:0x8051CEA8; // type:object size:0xC scope:local
+@19819 = .data:0x8051CEB4; // type:object size:0xC scope:local
+@19820 = .data:0x8051CEC0; // type:object size:0xC scope:local
+@19822 = .data:0x8051CECC; // type:object size:0x27 scope:local data:string
+@19823 = .data:0x8051CEF8; // type:object size:0x20 scope:local data:string
+@19824 = .data:0x8051CF18; // type:object size:0x22 scope:local data:string
+@19825 = .data:0x8051CF3C; // type:object size:0x25 scope:local data:string
+@19826 = .data:0x8051CF64; // type:object size:0x21 scope:local data:string
+__vt__34sFStateID_c<19dLytMsgWindowTalk_c> = .data:0x8051CF88; // type:object size:0x34 scope:weak
+@18304 = .data:0x8051CFC0; // type:object size:0x17 scope:local data:string
+...data.0 = .data:0x8051CFC0; // type:label scope:local
+@18305 = .data:0x8051CFD8; // type:object size:0xB scope:local data:string
+@18306 = .data:0x8051CFE8; // type:object size:0x18 scope:local data:string
+@18307 = .data:0x8051D000; // type:object size:0x1D scope:local data:string
+@18308 = .data:0x8051D020; // type:object size:0xE scope:local data:string
+@18309 = .data:0x8051D030; // type:object size:0x19 scope:local data:string
+@18310 = .data:0x8051D04C; // type:object size:0xA scope:local data:string
+@18311 = .data:0x8051D058; // type:object size:0xC scope:local data:string
+@18312 = .data:0x8051D064; // type:object size:0xD scope:local data:string
+@18313 = .data:0x8051D074; // type:object size:0xA scope:local data:string
+@18314 = .data:0x8051D080; // type:object size:0xB scope:local data:string
+@18315 = .data:0x8051D08C; // type:object size:0xE scope:local data:string
+sPanes = .data:0x8051D09C; // type:object size:0x14 scope:local data:4byte
+@18316 = .data:0x8051D0B0; // type:object size:0xD scope:local data:string
+@18317 = .data:0x8051D0C0; // type:object size:0xE scope:local data:string
+@18318 = .data:0x8051D0D0; // type:object size:0x9 scope:local data:string
+@19385 = .data:0x8051D0DC; // type:object size:0x14 scope:local data:string
+__vt__19dLytMsgWindowLink_c = .data:0x8051D0F0; // type:object size:0x44
+@19811 = .data:0x8051D134; // type:object size:0xC scope:local
+@19812 = .data:0x8051D140; // type:object size:0xC scope:local
+@19813 = .data:0x8051D14C; // type:object size:0xC scope:local
+@19814 = .data:0x8051D158; // type:object size:0xC scope:local
+@19815 = .data:0x8051D164; // type:object size:0xC scope:local
+@19816 = .data:0x8051D170; // type:object size:0xC scope:local
+@19817 = .data:0x8051D17C; // type:object size:0xC scope:local
+@19818 = .data:0x8051D188; // type:object size:0xC scope:local
+@19819 = .data:0x8051D194; // type:object size:0xC scope:local
+@19820 = .data:0x8051D1A0; // type:object size:0xC scope:local
+@19821 = .data:0x8051D1AC; // type:object size:0xC scope:local
+@19822 = .data:0x8051D1B8; // type:object size:0xC scope:local
+@19823 = .data:0x8051D1C4; // type:object size:0xC scope:local
+@19824 = .data:0x8051D1D0; // type:object size:0xC scope:local
+@19825 = .data:0x8051D1DC; // type:object size:0xC scope:local
+@19827 = .data:0x8051D1E8; // type:object size:0x27 scope:local data:string
+@19828 = .data:0x8051D210; // type:object size:0x20 scope:local data:string
+@19829 = .data:0x8051D230; // type:object size:0x22 scope:local data:string
+@19830 = .data:0x8051D254; // type:object size:0x25 scope:local data:string
+@19831 = .data:0x8051D27C; // type:object size:0x21 scope:local data:string
+__vt__34sFStateID_c<19dLytMsgWindowLink_c> = .data:0x8051D2A0; // type:object size:0x34 scope:weak
+@18065 = .data:0x8051D2D8; // type:object size:0x16 scope:local data:string
+...data.0 = .data:0x8051D2D8; // type:label scope:local
+@18066 = .data:0x8051D2F0; // type:object size:0xB scope:local data:string
+@18067 = .data:0x8051D2FC; // type:object size:0x17 scope:local data:string
+@18068 = .data:0x8051D318; // type:object size:0x18 scope:local data:string
+@18069 = .data:0x8051D330; // type:object size:0xA scope:local data:string
+@18070 = .data:0x8051D33C; // type:object size:0xC scope:local data:string
+@18071 = .data:0x8051D348; // type:object size:0xB scope:local data:string
+@18072 = .data:0x8051D354; // type:object size:0xB scope:local data:string
+@18073 = .data:0x8051D360; // type:object size:0xD scope:local data:string
+@18074 = .data:0x8051D370; // type:object size:0xA scope:local data:string
+@18075 = .data:0x8051D37C; // type:object size:0xB scope:local data:string
+sPanes = .data:0x8051D388; // type:object size:0x18 scope:local data:4byte
+@18076 = .data:0x8051D3A0; // type:object size:0xD scope:local data:string
+@18077 = .data:0x8051D3B0; // type:object size:0xE scope:local data:string
+@18078 = .data:0x8051D3C0; // type:object size:0x9 scope:local data:string
+@18934 = .data:0x8051D3CC; // type:object size:0x13 scope:local data:string
__vt__18dLytMsgWindowGet_c = .data:0x8051D3E0; // type:object size:0x44
-lbl_8051D424 = .data:0x8051D424; // type:object size:0x11C
-__vt__33sFStateID_c<18dLytMsgWindowGet_c> = .data:0x8051D540; // type:object size:0x34
+@19253 = .data:0x8051D424; // type:object size:0xC scope:local
+@19254 = .data:0x8051D430; // type:object size:0xC scope:local
+@19255 = .data:0x8051D43C; // type:object size:0xC scope:local
+@19256 = .data:0x8051D448; // type:object size:0xC scope:local
+@19257 = .data:0x8051D454; // type:object size:0xC scope:local
+@19258 = .data:0x8051D460; // type:object size:0xC scope:local
+@19259 = .data:0x8051D46C; // type:object size:0xC scope:local
+@19260 = .data:0x8051D478; // type:object size:0xC scope:local
+@19261 = .data:0x8051D484; // type:object size:0xC scope:local
+@19262 = .data:0x8051D490; // type:object size:0xC scope:local
+@19263 = .data:0x8051D49C; // type:object size:0xC scope:local
+@19264 = .data:0x8051D4A8; // type:object size:0xC scope:local
+@19266 = .data:0x8051D4B4; // type:object size:0x26 scope:local data:string
+@19267 = .data:0x8051D4DC; // type:object size:0x1F scope:local data:string
+@19268 = .data:0x8051D4FC; // type:object size:0x24 scope:local data:string
+@19269 = .data:0x8051D520; // type:object size:0x20 scope:local data:string
+__vt__33sFStateID_c<18dLytMsgWindowGet_c> = .data:0x8051D540; // type:object size:0x34 scope:weak
@17505 = .data:0x8051D578; // type:object size:0x1A scope:local data:string
...data.0 = .data:0x8051D578; // type:label scope:local
@17506 = .data:0x8051D594; // type:object size:0xB scope:local data:string
@@ -33355,43 +33412,61 @@ __vt__19dLytMsgWindowDemo_c = .data:0x8051DE68; // type:object size:0x44
@18922 = .data:0x8051DF88; // type:object size:0x25 scope:local data:string
@18923 = .data:0x8051DFB0; // type:object size:0x21 scope:local data:string
__vt__34sFStateID_c<19dLytMsgWindowDemo_c> = .data:0x8051DFD4; // type:object size:0x34 scope:weak
-lbl_8051E008 = .data:0x8051E008; // type:object size:0x1C
-lbl_8051E024 = .data:0x8051E024; // type:object size:0xC
-lbl_8051E030 = .data:0x8051E030; // type:object size:0x20
-lbl_8051E050 = .data:0x8051E050; // type:object size:0x20 data:string
-lbl_8051E070 = .data:0x8051E070; // type:object size:0x10
-lbl_8051E080 = .data:0x8051E080; // type:object size:0x1C data:string
-lbl_8051E09C = .data:0x8051E09C; // type:object size:0xC
-lbl_8051E0A8 = .data:0x8051E0A8; // type:object size:0xC data:string
-lbl_8051E0B4 = .data:0x8051E0B4; // type:object size:0x10
-lbl_8051E0C4 = .data:0x8051E0C4; // type:object size:0xC
-lbl_8051E0D0 = .data:0x8051E0D0; // type:object size:0xC
-lbl_8051E0DC = .data:0x8051E0DC; // type:object size:0x10
-lbl_8051E0EC = .data:0x8051E0EC; // type:object size:0x14 data:4byte
-lbl_8051E100 = .data:0x8051E100; // type:object size:0x10
-lbl_8051E110 = .data:0x8051E110; // type:object size:0x10
-lbl_8051E120 = .data:0x8051E120; // type:object size:0x18
-lbl_8051E138 = .data:0x8051E138; // type:object size:0x1C
-lbl_8051E154 = .data:0x8051E154; // type:object size:0x1C
-lbl_8051E170 = .data:0x8051E170; // type:object size:0x1C data:string
-lbl_8051E18C = .data:0x8051E18C; // type:object size:0x20
-lbl_8051E1AC = .data:0x8051E1AC; // type:object size:0xC
-lbl_8051E1B8 = .data:0x8051E1B8; // type:object size:0x20 data:string
-lbl_8051E1D8 = .data:0x8051E1D8; // type:object size:0xC data:4byte
-lbl_8051E1E4 = .data:0x8051E1E4; // type:object size:0x18
-lbl_8051E1FC = .data:0x8051E1FC; // type:object size:0x1C
-lbl_8051E218 = .data:0x8051E218; // type:object size:0x18 data:string
-lbl_8051E230 = .data:0x8051E230; // type:object size:0x20
-lbl_8051E250 = .data:0x8051E250; // type:object size:0x1C
-lbl_8051E26C = .data:0x8051E26C; // type:object size:0x14 data:4byte
-lbl_8051E280 = .data:0x8051E280; // type:object size:0x14 data:string
-lbl_8051E294 = .data:0x8051E294; // type:object size:0xC
-lbl_8051E2A0 = .data:0x8051E2A0; // type:object size:0x10
-lbl_8051E2B0 = .data:0x8051E2B0; // type:object size:0x10
-lbl_8051E2C0 = .data:0x8051E2C0; // type:object size:0x3C
-lbl_8051E2FC = .data:0x8051E2FC; // type:object size:0x3C
-lbl_8051E338 = .data:0x8051E338; // type:object size:0x1D8
-lbl_8051E510 = .data:0x8051E510; // type:object size:0x38
+@25710 = .data:0x8051E008; // type:object size:0x1A scope:local data:string
+...data.0 = .data:0x8051E008; // type:label scope:local
+@25711 = .data:0x8051E024; // type:object size:0xB scope:local data:string
+@25712 = .data:0x8051E030; // type:object size:0x1B scope:local data:string
+@25713 = .data:0x8051E050; // type:object size:0x20 scope:local data:string
+@25714 = .data:0x8051E070; // type:object size:0xE scope:local data:string
+@25715 = .data:0x8051E080; // type:object size:0x1C scope:local data:string
+@25716 = .data:0x8051E09C; // type:object size:0xA scope:local data:string
+@25717 = .data:0x8051E0A8; // type:object size:0xC scope:local data:string
+@25718 = .data:0x8051E0B4; // type:object size:0xD scope:local data:string
+@25719 = .data:0x8051E0C4; // type:object size:0xA scope:local data:string
+@25720 = .data:0x8051E0D0; // type:object size:0xB scope:local data:string
+@25721 = .data:0x8051E0DC; // type:object size:0xE scope:local data:string
+sTalkPaneNames = .data:0x8051E0EC; // type:object size:0x14 scope:local data:4byte
+@25722 = .data:0x8051E100; // type:object size:0xD scope:local data:string
+@25723 = .data:0x8051E110; // type:object size:0xE scope:local data:string
+@31425 = .data:0x8051E120; // type:object size:0x17 scope:local data:string
+@25829 = .data:0x8051E138; // type:object size:0x1A scope:local data:string
+@25830 = .data:0x8051E154; // type:object size:0x1B scope:local data:string
+@25831 = .data:0x8051E170; // type:object size:0x1C scope:local data:string
+@25832 = .data:0x8051E18C; // type:object size:0x1D scope:local data:string
+@25833 = .data:0x8051E1AC; // type:object size:0xB scope:local data:string
+@25834 = .data:0x8051E1B8; // type:object size:0x20 scope:local data:string
+sSwordPaneNames = .data:0x8051E1D8; // type:object size:0xC scope:local data:4byte
+@31616 = .data:0x8051E1E4; // type:object size:0x17 scope:local data:string
+@25945 = .data:0x8051E1FC; // type:object size:0x17 scope:local data:string
+@25946 = .data:0x8051E218; // type:object size:0x18 scope:local data:string
+@25947 = .data:0x8051E230; // type:object size:0x1D scope:local data:string
+@25948 = .data:0x8051E250; // type:object size:0x19 scope:local data:string
+sLinkPaneNames = .data:0x8051E26C; // type:object size:0x14 scope:local data:4byte
+@31760 = .data:0x8051E280; // type:object size:0x14 scope:local data:string
+@31893 = .data:0x8051E294; // type:object size:0x9 scope:local data:string
+@32311 = .data:0x8051E2A0; // type:object size:0xD scope:local data:string
+__vt__18dLytSimpleWindow_c = .data:0x8051E2B0; // type:object size:0x10
+__vt__22dLytSimpleWindowLink_c = .data:0x8051E2C0; // type:object size:0x3C
+__vt__23dLytSimpleWindowSword_c = .data:0x8051E2FC; // type:object size:0x3C
+__vt__22dLytSimpleWindowTalk_c = .data:0x8051E338; // type:object size:0x3C
+__vt__23dLytSimpleWindowSubtype = .data:0x8051E374; // type:object size:0x3C
+@32371 = .data:0x8051E3EC; // type:object size:0xC scope:local
+@32372 = .data:0x8051E3F8; // type:object size:0xC scope:local
+@32373 = .data:0x8051E404; // type:object size:0xC scope:local
+@32374 = .data:0x8051E410; // type:object size:0xC scope:local
+@32375 = .data:0x8051E41C; // type:object size:0xC scope:local
+@32376 = .data:0x8051E428; // type:object size:0xC scope:local
+@32377 = .data:0x8051E434; // type:object size:0xC scope:local
+@32378 = .data:0x8051E440; // type:object size:0xC scope:local
+@32379 = .data:0x8051E44C; // type:object size:0xC scope:local
+@32380 = .data:0x8051E458; // type:object size:0xC scope:local
+@32381 = .data:0x8051E464; // type:object size:0xC scope:local
+@32382 = .data:0x8051E470; // type:object size:0xC scope:local
+@32384 = .data:0x8051E47C; // type:object size:0x26 scope:local data:string
+@32385 = .data:0x8051E4A4; // type:object size:0x1F scope:local data:string
+@32386 = .data:0x8051E4C4; // type:object size:0x27 scope:local data:string
+@32387 = .data:0x8051E4F0; // type:object size:0x20 scope:local data:string
+__vt__33sFStateID_c<18dLytSimpleWindow_c> = .data:0x8051E510; // type:object size:0x34 scope:weak
@22222 = .data:0x8051E548; // type:object size:0x18 scope:local data:string
...data.0 = .data:0x8051E548; // type:label scope:local
@22223 = .data:0x8051E560; // type:object size:0xB scope:local data:string
@@ -37459,13 +37534,13 @@ 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
-LytControlGame__vtable = .data:0x805404C8; // type:object size:0x50
-lbl_80540518 = .data:0x80540518; // type:object size:0x30
-lbl_80540548 = .data:0x80540548; // type:object size:0x30
-lbl_80540578 = .data:0x80540578; // type:object size:0x18
-lbl_80540590 = .data:0x80540590; // 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
-lbl_805405B4 = .data:0x805405B4; // 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
@@ -37474,15 +37549,15 @@ __vt__49sFStateMgr_c<10dLytWipe_c,20sStateMethodUsr_FI_c> = .data:0x80540650; //
__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
-lbl_805406E0 = .data:0x805406E0; // type:object size:0x30
-lbl_80540710 = .data:0x80540710; // type:object size:0x30
-lbl_80540740 = .data:0x80540740; // type:object size:0x18
-lbl_80540758 = .data:0x80540758; // type:object size:0x18
-LytMsgWindow__vtable = .data:0x80540770; // type:object size:0x10
-lbl_80540780 = .data:0x80540780; // type:object size:0x30
-LytMsgWindow__vtable2 = .data:0x805407B0; // type:object size:0x30
-lbl_805407E0 = .data:0x805407E0; // type:object size:0x18
-lbl_805407F8 = .data:0x805407F8; // type:object size:0x458
+__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
g_profile_LYT_CONTROL_TITLE = .data:0x80540C88; // type:object size:0xC
lbl_80540C94 = .data:0x80540C94; // type:object size:0x4C
@@ -40048,12 +40123,12 @@ lbl_80572588 = .sdata:0x80572588; // type:object size:0x8 data:4byte
lbl_80572590 = .sdata:0x80572590; // type:object size:0x8 data:4byte
sSwordPane = .sdata:0x80572598; // type:object size:0x4 scope:local data:4byte
sLightPane = .sdata:0x8057259C; // type:object size:0x4 scope:local data:4byte
-lbl_805725A0 = .sdata:0x805725A0; // type:object size:0x8 data:4byte
-lbl_805725A8 = .sdata:0x805725A8; // type:object size:0x8 data:4byte
-lbl_805725B0 = .sdata:0x805725B0; // type:object size:0x8 data:4byte
-lbl_805725B8 = .sdata:0x805725B8; // type:object size:0x8 data:4byte
-lbl_805725C0 = .sdata:0x805725C0; // type:object size:0x8 data:4byte
-lbl_805725C8 = .sdata:0x805725C8; // type:object size:0x8 data:4byte
+sTextBoxes = .sdata:0x805725A0; // type:object size:0x8 scope:local data:4byte
+sGroupName = .sdata:0x805725A8; // type:object size:0x4 scope:local data:4byte
+sTextBoxes = .sdata:0x805725B0; // type:object size:0x8 scope:local data:4byte
+sGroupName = .sdata:0x805725B8; // type:object size:0x4 scope:local data:4byte
+sTextBoxes = .sdata:0x805725C0; // type:object size:0x8 scope:local data:4byte
+sGroupName = .sdata:0x805725C8; // type:object size:0x4 scope:local data:4byte
sTextBoxes = .sdata:0x805725D0; // type:object size:0x8 scope:local data:4byte
sGroupName = .sdata:0x805725D8; // type:object size:0x4 scope:local data:4byte
sPanes = .sdata:0x805725E0; // type:object size:0x8 scope:local data:4byte
@@ -40063,10 +40138,10 @@ sPanes = .sdata:0x805725F8; // type:object size:0x8 scope:local data:4byte
sGroupName = .sdata:0x80572600; // type:object size:0x4 scope:local data:4byte
sTextBoxes = .sdata:0x80572608; // type:object size:0x8 scope:local data:4byte
@18694 = .sdata:0x80572610; // type:object size:0x1 scope:local
-lbl_80572618 = .sdata:0x80572618; // type:object size:0x8 data:4byte
-lbl_80572620 = .sdata:0x80572620; // type:object size:0x8 data:4byte
-lbl_80572628 = .sdata:0x80572628; // type:object size:0x8 data:4byte
-lbl_80572630 = .sdata:0x80572630; // type:object size:0x8
+sTalkTextboxNames = .sdata:0x80572618; // type:object size:0x8 scope:local data:4byte
+sSwordTextboxNames = .sdata:0x80572620; // type:object size:0x8 scope:local data:4byte
+sLinkTextboxNames = .sdata:0x80572628; // type:object size:0x8 scope:local data:4byte
+@31894 = .sdata:0x80572630; // type:object size:0x1 scope:local
sPanes = .sdata:0x80572638; // type:object size:0x4 scope:local data:4byte
sTextBoxes = .sdata:0x80572640; // type:object size:0x8 scope:local data:4byte
sPanes = .sdata:0x80572648; // type:object size:0x4 scope:local data:4byte
@@ -41681,7 +41756,7 @@ lbl_80574F28 = .sdata:0x80574F28; // type:object size:0x4
DISABLE_STRING__29@unnamed@eggLightManager_cpp@ = .sdata:0x80574F2C; // type:object size:0x4 data:4byte
lbl_80574F30 = .sdata:0x80574F30; // type:object size:0x8
sTextureSize__Q23EGG12LightTexture = .sdata:0x80574F38; // type:object size:0x2 data:2byte
-sScaleExp__Q23EGG12LightTexture = .sdata:0x80574F3A; // type:object size:0x1 scope:local data:byte
+sScaleExp__Q23EGG12LightTexture = .sdata:0x80574F3A; // type:object size:0x1 scope:global data:byte
@8921 = .sdata:0x80574F3C; // type:object size:0x5 scope:local data:string
sByteCodeCalcStr__Q23EGG7ModelEx = .sdata:0x80574F48; // type:object size:0x4 data:4byte
@5795 = .sdata:0x80574F50; // type:object size:0x8 scope:local data:string
@@ -41957,8 +42032,8 @@ sInstance__16dLytTargetBird_c = .sbss:0x80575480; // type:object size:0x8 data:4
sInstance__15dLytMsgWindow_c = .sbss:0x80575488; // type:object size:0x4 data:4byte
lbl_8057548C = .sbss:0x8057548C; // type:object size:0x4 data:4byte
CURRENT_ACTOR_EVENT_FLOW_MANAGER = .sbss:0x80575490; // type:object size:0x8 data:4byte
-sInstance__18dLytSimpleWindow_c = .sbss:0x80575498; // type:object size:0x8 data:4byte
-sInstance__15dLytMapGlobal_c = .sbss:0x805754A0; // type:object size:0x8 data:4byte
+sInstance__18dLytSimpleWindow_c = .sbss:0x80575498; // type:object size:0x4 data:4byte
+sInstance__15dLytMapGlobal_c = .sbss:0x805754A0; // type:object size:0x4 data:4byte
sMapFaderColor = .sbss:0x805754A8; // type:object size:0x4 data:byte
lbl_805754AC = .sbss:0x805754AC; // type:object size:0x1 data:byte
sInstance__9dLytMap_c = .sbss:0x805754B0; // type:object size:0x8 data:4byte
@@ -45316,17 +45391,17 @@ 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
@17201 = .sdata2:0x80579E60; // type:object size:0x8 scope:local align:8 data:double
-lbl_80579E68 = .sdata2:0x80579E68; // type:object size:0x4 align:4 data:float
-lbl_80579E6C = .sdata2:0x80579E6C; // type:object size:0x4 align:4 data:float
-lbl_80579E70 = .sdata2:0x80579E70; // type:object size:0x8 align:8 data:double
-lbl_80579E78 = .sdata2:0x80579E78; // type:object size:0x4 align:4 data:float
-lbl_80579E80 = .sdata2:0x80579E80; // type:object size:0x4 align:4 data:float
-lbl_80579E84 = .sdata2:0x80579E84; // type:object size:0x4 align:4 data:float
-lbl_80579E88 = .sdata2:0x80579E88; // type:object size:0x8 align:8 data:double
-lbl_80579E90 = .sdata2:0x80579E90; // type:object size:0x4 align:4 data:float
-lbl_80579E98 = .sdata2:0x80579E98; // type:object size:0x4 align:4 data:float
-lbl_80579E9C = .sdata2:0x80579E9C; // type:object size:0x4 align:4 data:float
-lbl_80579EA0 = .sdata2:0x80579EA0; // type:object size:0x4 align:4 data:float
+@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
+@19472 = .sdata2:0x80579E70; // type:object size:0x8 scope:local align:8 data:double
+@19518 = .sdata2:0x80579E78; // type:object size:0x4 scope:local align:4 data:float
+@19386 = .sdata2:0x80579E80; // type:object size:0x4 scope:local align:4 data:float
+@19387 = .sdata2:0x80579E84; // type:object size:0x4 scope:local align:4 data:float
+@19476 = .sdata2:0x80579E88; // type:object size:0x8 scope:local align:8 data:double
+@19522 = .sdata2:0x80579E90; // type:object size:0x4 scope:local align:4 data:float
+@18935 = .sdata2:0x80579E98; // type:object size:0x4 scope:local align:4 data:float
+@18936 = .sdata2:0x80579E9C; // type:object size:0x4 scope:local align:4 data:float
+@19035 = .sdata2:0x80579EA0; // type:object size:0x4 scope:local align:4 data:float
@18605 = .sdata2:0x80579EA8; // type:object size:0x4 scope:local align:4 data:float
@18606 = .sdata2:0x80579EAC; // type:object size:0x4 scope:local align:4 data:float
@18611 = .sdata2:0x80579EB0; // type:object size:0x8 scope:local align:8 data:double
@@ -45338,10 +45413,10 @@ lbl_80579EA0 = .sdata2:0x80579EA0; // type:object size:0x4 align:4 data:float
@18696 = .sdata2:0x80579ED0; // type:object size:0x4 scope:local align:4 data:float
@18698 = .sdata2:0x80579ED4; // type:object size:0x4 scope:local align:4 data:float
@18729 = .sdata2:0x80579ED8; // type:object size:0x4 scope:local align:4 data:float
-lbl_80579EE0 = .sdata2:0x80579EE0; // type:object size:0x4 align:4 data:float
-lbl_80579EE4 = .sdata2:0x80579EE4; // type:object size:0x4 align:4 data:float
-lbl_80579EE8 = .sdata2:0x80579EE8; // type:object size:0x8 align:8 data:double
-lbl_80579EF0 = .sdata2:0x80579EF0; // type:object size:0x4 align:4 data:float
+@31426 = .sdata2:0x80579EE0; // type:object size:0x4 scope:local align:4 data:float
+@31427 = .sdata2:0x80579EE4; // type:object size:0x4 scope:local align:4 data:float
+@31516 = .sdata2:0x80579EE8; // type:object size:0x8 scope:local align:8 data:double
+@31539 = .sdata2:0x80579EF0; // type:object size:0x4 scope:local align:4 data:float
@25586 = .sdata2:0x80579EF8; // type:object size:0x4 scope:local align:4 data:float
@25587 = .sdata2:0x80579EFC; // type:object size:0x4 scope:local align:4 data:float
@25588 = .sdata2:0x80579F00; // type:object size:0x4 scope:local align:4 data:float
@@ -45350,8 +45425,8 @@ lbl_80579EF0 = .sdata2:0x80579EF0; // type:object size:0x4 align:4 data:float
@25570 = .sdata2:0x80579F10; // type:object size:0x4 scope:local align:4 data:float
@25573 = .sdata2:0x80579F18; // type:object size:0x8 scope:local align:8 data:double
@25578 = .sdata2:0x80579F20; // type:object size:0x4 scope:local align:4 data:float
-lbl_80579F28 = .sdata2:0x80579F28; // type:object size:0x4 align:4 data:float
-lbl_80579F2C = .sdata2:0x80579F2C; // type:object size:0x4 align:4 data:float
+@2523 = .sdata2:0x80579F28; // type:object size:0x4 scope:local align:4 data:float
+@2524 = .sdata2:0x80579F2C; // type:object size:0x4 scope:local align:4 data:float
lbl_80579F30 = .sdata2:0x80579F30; // type:object size:0x4 align:4 data:float
lbl_80579F38 = .sdata2:0x80579F38; // type:object size:0x8 align:8 data:double
lbl_80579F40 = .sdata2:0x80579F40; // type:object size:0x4 align:4 data:float
@@ -51437,23 +51512,37 @@ LytMsgWindowSelectBtn__STATE_IN = .bss:0x805AE7C0; // type:object size:0x40 data
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
-lbl_805AE930 = .bss:0x805AE930; // type:object size:0x10
-LytMsgWindowTalk__STATE_INVISIBLE = .bss:0x805AE940; // type:object size:0x40 data:4byte
-LytMsgWindowTalk__STATE_IN = .bss:0x805AE980; // type:object size:0x40 data:4byte
-LytMsgWindowTalk__STATE_WAIT = .bss:0x805AE9C0; // type:object size:0x40 data:4byte
-LytMsgWindowTalk__STATE_VISIBLE = .bss:0x805AEA00; // type:object size:0x40 data:4byte
-LytMsgWindowTalk__STATE_OUT = .bss:0x805AEA40; // type:object size:0x30 data:4byte
-lbl_805AEA70 = .bss:0x805AEA70; // type:object size:0x10
-LytMsgWindowLink__STATE_INVISIBLE = .bss:0x805AEA80; // type:object size:0x40 data:4byte
-LytMsgWindowLink__STATE_IN = .bss:0x805AEAC0; // type:object size:0x40 data:4byte
-LytMsgWindowLink__STATE_WAIT = .bss:0x805AEB00; // type:object size:0x40 data:4byte
-LytMsgWindowLink__STATE_VISIBLE = .bss:0x805AEB40; // type:object size:0x40 data:4byte
-LytMsgWindowLink__STATE_OUT = .bss:0x805AEB80; // type:object size:0x30 data:4byte
-lbl_805AEBB0 = .bss:0x805AEBB0; // type:object size:0x10
-LytMsgWindowGet__STATE_INVISIBLE = .bss:0x805AEBC0; // type:object size:0x40 data:4byte
-LytMsgWindowGet__STATE_IN = .bss:0x805AEC00; // type:object size:0x40 data:4byte
-LytMsgWindowGet__STATE_VISIBLE = .bss:0x805AEC40; // type:object size:0x40 data:4byte
-LytMsgWindowGet__STATE_OUT = .bss:0x805AEC80; // 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
+@18291 = .bss:0x805AE970; // type:object size:0xC scope:local
+StateID_In__19dLytMsgWindowTalk_c = .bss:0x805AE980; // type:object size:0x30 data:4byte
+@18295 = .bss:0x805AE9B0; // type:object size:0xC scope:local
+StateID_Wait__19dLytMsgWindowTalk_c = .bss:0x805AE9C0; // type:object size:0x30 data:4byte
+@18299 = .bss:0x805AE9F0; // type:object size:0xC scope:local
+StateID_Visible__19dLytMsgWindowTalk_c = .bss:0x805AEA00; // type:object size:0x30 data:4byte
+@18303 = .bss:0x805AEA30; // type:object size:0xC scope:local
+StateID_Out__19dLytMsgWindowTalk_c = .bss:0x805AEA40; // type:object size:0x30 data:4byte
+@18287 = .bss:0x805AEA70; // type:object size:0xC scope:local
+...bss.0 = .bss:0x805AEA70; // type:label scope:local
+StateID_Invisible__19dLytMsgWindowLink_c = .bss:0x805AEA80; // type:object size:0x30 data:4byte
+@18291 = .bss:0x805AEAB0; // type:object size:0xC scope:local
+StateID_In__19dLytMsgWindowLink_c = .bss:0x805AEAC0; // type:object size:0x30 data:4byte
+@18295 = .bss:0x805AEAF0; // type:object size:0xC scope:local
+StateID_Wait__19dLytMsgWindowLink_c = .bss:0x805AEB00; // type:object size:0x30 data:4byte
+@18299 = .bss:0x805AEB30; // type:object size:0xC scope:local
+StateID_Visible__19dLytMsgWindowLink_c = .bss:0x805AEB40; // type:object size:0x30 data:4byte
+@18303 = .bss:0x805AEB70; // type:object size:0xC scope:local
+StateID_Out__19dLytMsgWindowLink_c = .bss:0x805AEB80; // type:object size:0x30 data:4byte
+@18052 = .bss:0x805AEBB0; // type:object size:0xC scope:local
+...bss.0 = .bss:0x805AEBB0; // type:label scope:local
+StateID_Invisible__18dLytMsgWindowGet_c = .bss:0x805AEBC0; // type:object size:0x30 data:4byte
+@18056 = .bss:0x805AEBF0; // type:object size:0xC scope:local
+StateID_In__18dLytMsgWindowGet_c = .bss:0x805AEC00; // type:object size:0x30 data:4byte
+@18060 = .bss:0x805AEC30; // type:object size:0xC scope:local
+StateID_Visible__18dLytMsgWindowGet_c = .bss:0x805AEC40; // type:object size:0x30 data:4byte
+@18064 = .bss:0x805AEC70; // type:object size:0xC scope:local
+StateID_Out__18dLytMsgWindowGet_c = .bss:0x805AEC80; // type:object size:0x30 data:4byte
@17488 = .bss:0x805AECB0; // type:object size:0xC scope:local
...bss.0 = .bss:0x805AECB0; // type:label scope:local
StateID_Invisible__20dLytMsgWindowSword_c = .bss:0x805AECC0; // type:object size:0x30 data:4byte
@@ -51492,11 +51581,15 @@ StateID_In__19dLytMsgWindowDemo_c = .bss:0x805AF040; // type:object size:0x30 da
StateID_Visible__19dLytMsgWindowDemo_c = .bss:0x805AF080; // type:object size:0x30 data:4byte
@17842 = .bss:0x805AF0B0; // type:object size:0xC scope:local
StateID_Out__19dLytMsgWindowDemo_c = .bss:0x805AF0C0; // type:object size:0x30 data:4byte
-lbl_805AF0F0 = .bss:0x805AF0F0; // type:object size:0x10
-LytSimpleWindow__STATE_INVISIBLE = .bss:0x805AF100; // type:object size:0x40 data:4byte
-LytSimpleWindow__STATE_IN = .bss:0x805AF140; // type:object size:0x40 data:4byte
-LytSimpleWindow__STATE_OUTPUT_TEXT = .bss:0x805AF180; // type:object size:0x40 data:4byte
-LytSimpleWindow__STATE_OUT = .bss:0x805AF1C0; // type:object size:0x30 data:4byte
+@25681 = .bss:0x805AF0F0; // type:object size:0xC scope:local
+...bss.0 = .bss:0x805AF0F0; // type:label scope:local
+StateID_Invisible__18dLytSimpleWindow_c = .bss:0x805AF100; // type:object size:0x30 data:4byte
+@25685 = .bss:0x805AF130; // type:object size:0xC scope:local
+StateID_In__18dLytSimpleWindow_c = .bss:0x805AF140; // type:object size:0x30 data:4byte
+@25689 = .bss:0x805AF170; // type:object size:0xC scope:local
+StateID_OutputText__18dLytSimpleWindow_c = .bss:0x805AF180; // type:object size:0x30 data:4byte
+@25693 = .bss:0x805AF1B0; // type:object size:0xC scope:local
+StateID_Out__18dLytSimpleWindow_c = .bss:0x805AF1C0; // type:object size:0x30 data:4byte
@22209 = .bss:0x805AF1F0; // type:object size:0xC scope:local
...bss.0 = .bss:0x805AF1F0; // type:label scope:local
StateID_Invisible__17dLytAutoCaption_c = .bss:0x805AF200; // type:object size:0x30 data:4byte
@@ -52578,7 +52671,7 @@ spBufferSet__Q23EGG8StateEfb = .bss:0x80675010; // type:object size:0x30
sWorkSpaceV__Q23EGG8StateEfb = .bss:0x80675040; // type:object size:0x18 align:4 data:float
sWorkSpaceHideV__Q23EGG8StateEfb = .bss:0x80675058; // type:object size:0x18 align:4 data:float
sShiftViewPort__Q23EGG8StateEfb = .bss:0x80675070; // type:object size:0x18 align:4 data:float
-DUMMY_TEX_OBJ__24@unnamed@eggStateGX_cpp@ = .bss:0x806750A0; // type:object size:0x20
+DUMMY_TEX_OBJ__24@unnamed@eggStateGX_cpp@ = .bss:0x806750A0; // type:object size:0x20 scope:local
s_tmem_layout__Q23EGG7StateGX = .bss:0x806750C0; // type:object size:0xA8 data:4byte
s_cacheGX__Q23EGG7StateGX = .bss:0x80675168; // type:object size:0x18
@LOCAL@initialize__Q23EGG7StateGXFUsUs8_GXColor11_GXPixelFmt@NullTexData = .bss:0x80675180; // type:object size:0x10 scope:local
diff --git a/configure.py b/configure.py
index fe8aa3de..560608f0 100644
--- a/configure.py
+++ b/configure.py
@@ -532,7 +532,7 @@ config.libs = [
Object(Matching, "d/lyt/msg_window/d_lyt_msg_window_wood.cpp"),
Object(Matching, "d/lyt/msg_window/d_lyt_msg_window_stone.cpp"),
Object(Matching, "d/lyt/msg_window/d_lyt_msg_window_demo.cpp"),
- Object(NonMatching, "d/lyt/msg_window/d_lyt_simple_window.cpp"),
+ Object(Matching, "d/lyt/msg_window/d_lyt_simple_window.cpp"),
Object(Matching, "d/lyt/d_lyt_auto_caption.cpp"),
Object(Matching, "d/lyt/d_lyt_auto_explain.cpp"),
Object(Matching, "d/lyt/d_lyt_map_global.cpp"),
diff --git a/include/d/d_tag_processor.h b/include/d/d_tag_processor.h
index e7a63110..c643e3f3 100644
--- a/include/d/d_tag_processor.h
+++ b/include/d/d_tag_processor.h
@@ -196,6 +196,16 @@ public:
return mOptionSound[idx];
}
+ void resetSomeThings() {
+ // TODO clean this up - are these arrays or not???
+ for (int i = 0; i < 11; i++) {
+ mNumericArgsCopy[i] = 0;
+ }
+ for (int i = 0; i < 11; i++) {
+ (&field_0xEE5)[i] = 0;
+ }
+ }
+
private:
enum Cmd_e {
TAG_CMD_SCALE = 0x2,
diff --git a/include/d/d_textwindow_unk.h b/include/d/d_textwindow_unk.h
index a599b2d0..f98aec26 100644
--- a/include/d/d_textwindow_unk.h
+++ b/include/d/d_textwindow_unk.h
@@ -30,6 +30,8 @@ struct dLytMsgWindowCharData {
// one by one in the text boxes
class TextWindowUnk {
public:
+ static const int BUF_SIZE = 1023;
+
TextWindowUnk(dTagProcessor_c *tagProcessor);
virtual ~TextWindowUnk() {}
@@ -55,8 +57,8 @@ public:
private:
/* 0x0004 */ dTagProcessor_c *mpTagProcessor;
- /* 0x0008 */ wchar_t mRawTextBuffer[1023];
- /* 0x0806 */ wchar_t mProcessedTextBuffer[1023];
+ /* 0x0008 */ wchar_t mRawTextBuffer[BUF_SIZE];
+ /* 0x0806 */ wchar_t mProcessedTextBuffer[BUF_SIZE];
/* 0x1004 */ wchar_t mUnkBuffer[511]; // ???
/* 0x1402 */ SizedString<64> field_0x1402;
/* 0x1442 */ u8 _0x1442[0x144C - 0x1442];
@@ -90,7 +92,7 @@ public:
}
private:
- dLytMsgWindowCharData mData[1023];
+ dLytMsgWindowCharData mData[TextWindowUnk::BUF_SIZE];
};
#endif
diff --git a/include/d/lyt/d_lyt_control_game.h b/include/d/lyt/d_lyt_control_game.h
index 110e0c03..c36b2ee0 100644
--- a/include/d/lyt/d_lyt_control_game.h
+++ b/include/d/lyt/d_lyt_control_game.h
@@ -3,7 +3,13 @@
#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 "s/s_State.hpp"
+#include "toBeSorted/arc_managers/layout_arc_manager.h"
+#include "toBeSorted/raii_ptr.h"
class dLytControlGame_c : public dBase_c {
public:
@@ -75,16 +81,25 @@ public:
private:
/* 0x00068 */ UI_STATE_MGR_DECLARE(dLytControlGame_c);
- /* 0x000A4 */ u8 _0x000A4[0x15850 - 0x000A4];
-
+ /* 0x000A4 */ RaiiPtr<void*> field_0x000A4;
+ /* 0x000A8 */ dLytMeter_c mMeter;
+ /* 0x13C10 */ dLytMsgWindow_c mMsgWindow;
+ /* 0x14E34 */ dLytSimpleWindow_c mSimpleWindow;
+ /* 0x152A0 */ dLytWipe_c mWipe;
+ /* 0x15848 */ u8 _0x15848[0x15850 - 0x15848];
/* 0x15850 */ dMapFootPrintsMgr_c mFootprintsMgr;
- /* 0x15C24 */ u8 _0x15C24[0x15C2C - 0x15C24];
+ /* 0x15C24 */ UNKWORD field_0x15C24;
+ /* 0x15C28 */ UNKWORD field_0x15C28;
/* 0x15C2C */ s32 mCurrentPauseDisp;
/* 0x15C30 */ s32 mPauseDisp00Tab;
- /* 0x15C34 */ u8 _0x15C34[0x15C60 - 0x15C34];
+ /* 0x15C34 */ u8 _0x15C34[0x15C40 - 0x15C34];
+
+ /* 0x15C40 */ LayoutArcControl mLytArcControl;
+
+ /* 0x15C4C */ u8 _0x15C4C[0x15C60 - 0x15C4C];
/* 0x15C60 */ u16 mItemForPauseDemo;
diff --git a/include/d/lyt/d_lyt_map.h b/include/d/lyt/d_lyt_map.h
index fedd5d13..54df7cf9 100644
--- a/include/d/lyt/d_lyt_map.h
+++ b/include/d/lyt/d_lyt_map.h
@@ -60,6 +60,9 @@ struct dMapFootPrintEntry {
/** Generic footprints queue */
class dMapFootPrintsQueue_c {
public:
+ dMapFootPrintsQueue_c() {
+ init();
+ }
void init();
void addStep(const mVec3_c &pos, const mAng &rot);
dMapFootPrintEntry *getFirst() const;
@@ -79,9 +82,7 @@ private:
/** Records Link's footsteps */
class dMapFootPrintsMgr_c {
public:
- dMapFootPrintsMgr_c() {
- mQueue.init();
- }
+ dMapFootPrintsMgr_c() : mMinStepDistanceSq(0.0f) {}
virtual ~dMapFootPrintsMgr_c() {}
void execute();
@@ -141,7 +142,6 @@ struct LytMap0x80520B5C {
bool field_0x05;
};
-
/** 2D UI - Map - beacon preview icon following the cursor */
class dLytMapPutIcon_c {
public:
diff --git a/include/d/lyt/d_lyt_wipe.h b/include/d/lyt/d_lyt_wipe.h
index ec9b5677..58558856 100644
--- a/include/d/lyt/d_lyt_wipe.h
+++ b/include/d/lyt/d_lyt_wipe.h
@@ -4,6 +4,7 @@
#include "common.h"
#include "d/lyt/d2d.h"
#include "s/s_State.hpp"
+#include "toBeSorted/d_flow_mgr.h"
class dLytWipeMain_c {
public:
@@ -61,7 +62,7 @@ private:
/* 0x03C */ d2d::ResAccIf_c mResAcc;
/* 0x3AC */ dLytWipeMain_c mMain;
- /* 0x4E0 */ u8 _0x4E0[0x59C - 0x4E0];
+ /* 0x4E0 */ dFlowMgr_c mFlowMgr;
/* 0x59C */ bool mWantsIn;
/* 0x59D */ bool mWantsOut;
diff --git a/include/d/lyt/msg_window/d_lyt_msg_window.h b/include/d/lyt/msg_window/d_lyt_msg_window.h
index 74e34487..e0e0e2e1 100644
--- a/include/d/lyt/msg_window/d_lyt_msg_window.h
+++ b/include/d/lyt/msg_window/d_lyt_msg_window.h
@@ -1,6 +1,7 @@
#ifndef D_LYT_MSG_WINDOW_H
#define D_LYT_MSG_WINDOW_H
+#include "common.h"
#include "d/d_tag_processor.h"
#include "d/d_textwindow_unk.h"
#include "d/lyt/d2d.h"
@@ -53,8 +54,12 @@ public:
MSG_WINDOW_36 = 36,
};
- dLytMsgWindow_c() : mStateMgr(*this) {}
- virtual ~dLytMsgWindow_c() {}
+ dLytMsgWindow_c() : mStateMgr(*this) {
+ sInstance = this;
+ }
+ virtual ~dLytMsgWindow_c() {
+ sInstance = nullptr;
+ }
bool build();
bool remove();
diff --git a/include/d/lyt/msg_window/d_lyt_msg_window_sword.h b/include/d/lyt/msg_window/d_lyt_msg_window_sword.h
index ae9a40b8..82e649f5 100644
--- a/include/d/lyt/msg_window/d_lyt_msg_window_sword.h
+++ b/include/d/lyt/msg_window/d_lyt_msg_window_sword.h
@@ -76,8 +76,8 @@ private:
/* 0x05F8 */ dLytCommonABtn_c mBtn;
- /* 0x07A8 */ dLytMsgWindowCharData mCharacterData[1023];
- /* 0x5794 */ wchar_t mTextBuf[1023];
+ /* 0x07A8 */ dLytMsgWindowCharData mCharacterData[TextWindowUnk::BUF_SIZE];
+ /* 0x5794 */ wchar_t mTextBuf[TextWindowUnk::BUF_SIZE];
/* 0x5F94 */ dLytTextSword mSwordText;
/* 0x607C */ dLytTextSword::ESwordType mSwordType;
diff --git a/include/d/lyt/msg_window/d_lyt_simple_window.h b/include/d/lyt/msg_window/d_lyt_simple_window.h
index 2356fd83..83f8e8b1 100644
--- a/include/d/lyt/msg_window/d_lyt_simple_window.h
+++ b/include/d/lyt/msg_window/d_lyt_simple_window.h
@@ -1,18 +1,210 @@
#ifndef D_LYT_SIMPLE_WINDOW_H
#define D_LYT_SIMPLE_WINDOW_H
-class dLytSimpleWindow_c {
+#include "common.h"
+#include "d/d_tag_processor.h"
+#include "d/d_textwindow_unk.h"
+#include "d/lyt/d2d.h"
+#include "d/lyt/d_textbox.h"
+#include "d/lyt/msg_window/d_lyt_msg_window_common.h"
+#include "m/m2d.h"
+#include "m/m_vec.h"
+#include "nw4r/lyt/lyt_pane.h"
+#include "s/s_State.hpp"
+#include "sized_string.h"
+
+class dLytSimpleWindowSubtype {
public:
- dLytSimpleWindow_c() {}
- virtual ~dLytSimpleWindow_c() {}
+ /* 0x08 */ virtual ~dLytSimpleWindowSubtype() {}
+ /* 0x0C */ virtual bool build(d2d::ResAccIf_c *, dTagProcessor_c *);
+ /* 0x10 */ virtual bool remove() {
+ return true;
+ }
+ /* 0x14 */ virtual bool execute() {
+ return true;
+ }
+ /* 0x18 */ virtual bool draw() {
+ return true;
+ }
+ /* 0x1C */ virtual void initializeIn(s32 pos);
+ /* 0x20 */ virtual bool isIn() {
+ return true;
+ }
+ /* 0x24 */ virtual void initializeOutputText() {}
+ /* 0x28 */ virtual void initializeOut() {}
+ /* 0x2C */ virtual bool isOut() {
+ return true;
+ }
+ /* 0x30 */ virtual bool setText(const wchar_t *text);
+ /* 0x34 */ virtual dTextBox_c *getTextBox() {
+ return nullptr;
+ }
+ /* 0x38 */ virtual dLytMsgWindowCharData *getCharData() {
+ return nullptr;
+ }
+
+private:
+};
+
+class dLytSimpleWindowTalk_c : public dLytSimpleWindowSubtype {
+public:
+ /* 0x0C */ virtual bool build(d2d::ResAccIf_c *, dTagProcessor_c *) override;
+ /* 0x10 */ virtual bool remove() override;
+ /* 0x14 */ virtual bool execute() override;
+ /* 0x18 */ virtual bool draw() override;
+ /* 0x1C */ virtual void initializeIn(s32 pos) override;
+ /* 0x20 */ virtual bool isIn() override;
+ /* 0x24 */ virtual void initializeOutputText() override;
+ /* 0x28 */ virtual void initializeOut() override;
+ /* 0x2C */ virtual bool isOut() override;
+ /* 0x30 */ virtual bool setText(const wchar_t *text) override;
+
+ /* 0x34 */ virtual dTextBox_c *getTextBox() override {
+ return mpTextboxes[0];
+ }
+ /* 0x38 */ virtual dLytMsgWindowCharData *getCharData() override {
+ return mBlurRelated.getCharData();
+ }
+
+private:
+ /* 0x0004 */ d2d::ResAccIf_c *mpResAcc;
+ /* 0x0008 */ d2d::LytBase_c mLyt;
+ /* 0x0098 */ d2d::AnmGroup_c mAnm[4];
+ /* 0x0198 */ dTextBox_c *mpTextboxes[2];
+ /* 0x01A0 */ nw4r::lyt::Pane *mpPanes[5];
+ /* 0x01B4 */ dTagProcessor_c *mpTagProcessor;
+ /* 0x01B8 */ dLytTextLight mLightText;
+ /* 0x0294 */ MsgWindowBlurRelated mBlurRelated;
+ /* 0x5284 */ mVec3_c mOrigPosition;
+ /* 0x5290 */ mVec3_c mPosition;
+ /* 0x529C */ mVec2_c mOffset;
+};
+
+class dLytSimpleWindowSword_c : public dLytSimpleWindowSubtype {
+public:
+ /* 0x0C */ virtual bool build(d2d::ResAccIf_c *, dTagProcessor_c *) override;
+ /* 0x10 */ virtual bool remove() override;
+ /* 0x14 */ virtual bool execute() override;
+ /* 0x18 */ virtual bool draw() override;
+ /* 0x1C */ virtual void initializeIn(s32 pos) override;
+ /* 0x20 */ virtual bool isIn() override;
+ /* 0x24 */ virtual void initializeOutputText() override;
+ /* 0x28 */ virtual void initializeOut() override;
+ /* 0x2C */ virtual bool isOut() override;
+ /* 0x30 */ virtual bool setText(const wchar_t *text) override;
+
+ /* 0x34 */ virtual dTextBox_c *getTextBox() override {
+ return mpTextboxes[0];
+ }
+ /* 0x38 */ virtual dLytMsgWindowCharData *getCharData() override {
+ return mCharData;
+ }
+ void setSwordType(s32 b) {
+ mSwordType = b;
+ }
+
+private:
+ /* 0x0004 */ d2d::ResAccIf_c *mpResAcc;
+ /* 0x0008 */ d2d::LytBase_c mLyt;
+ /* 0x0098 */ d2d::AnmGroup_c mAnm[5];
+ /* 0x01D8 */ dTextBox_c *mpTextboxes[2];
+ /* 0x01E0 */ nw4r::lyt::Pane *mpPanes[3];
+ /* 0x01F4 */ dTagProcessor_c *mpTagProcessor;
+ /* 0x01F8 */ dLytMsgWindowCharData mCharData[TextWindowUnk::BUF_SIZE];
+ /* 0x51DC */ wchar_t mTextBuf[TextWindowUnk::BUF_SIZE];
+ /* 0x59DC */ dLytTextSword mSwordText;
+ /* 0x5AC4 */ s32 mSwordType;
+ /* 0x5AC8 */ u8 field_0x5AC8;
+ /* 0x5ACC */ mVec3_c mOrigPosition;
+ /* 0x5AD8 */ mVec3_c mPosition;
+ /* 0x5AE4 */ mVec2_c mOffset;
+};
+
+class dLytSimpleWindowLink_c : public dLytSimpleWindowSubtype {
+public:
+ /* 0x0C */ virtual bool build(d2d::ResAccIf_c *, dTagProcessor_c *) override;
+ /* 0x10 */ virtual bool remove() override;
+ /* 0x14 */ virtual bool execute() override;
+ /* 0x18 */ virtual bool draw() override;
+ /* 0x1C */ virtual void initializeIn(s32 pos) override;
+ /* 0x20 */ virtual bool isIn() override;
+ /* 0x24 */ virtual void initializeOutputText() override;
+ /* 0x28 */ virtual void initializeOut() override;
+ /* 0x2C */ virtual bool isOut() override;
+ /* 0x30 */ virtual bool setText(const wchar_t *text) override;
+
+ /* 0x34 */ virtual dTextBox_c *getTextBox() override {
+ return mpTextboxes[0];
+ }
+ /* 0x38 */ virtual dLytMsgWindowCharData *getCharData() override {
+ return mBlurRelated.getCharData();
+ }
+
+private:
+ /* 0x0004 */ d2d::ResAccIf_c *mpResAcc;
+ /* 0x0008 */ d2d::LytBase_c mLyt;
+ /* 0x0098 */ d2d::AnmGroup_c mAnm[4];
+ /* 0x0198 */ dTextBox_c *mpTextboxes[2];
+ /* 0x01A0 */ nw4r::lyt::Pane *mpPanes[5];
+ /* 0x01B4 */ dTagProcessor_c *mpTagProcessor;
+ /* 0x01B8 */ dLytTextLight mLightText;
+ /* 0x0294 */ MsgWindowBlurRelated mBlurRelated;
+ /* 0x5??? */ mVec3_c mOrigPosition;
+ /* 0x5??? */ mVec3_c mPosition;
+ /* 0x5??? */ mVec2_c mOffset;
+};
+
+/** 2D UI - Message window - Window without a confirm button, automatically closes (on timer or event) */
+class dLytSimpleWindow_c : public m2d::Base_c {
+public:
+ dLytSimpleWindow_c() : mStateMgr(*this) {
+ sInstance = this;
+ }
+ virtual ~dLytSimpleWindow_c() {
+ sInstance = nullptr;
+ }
+ virtual void draw() override;
+
+ bool build();
+ bool remove();
+ bool execute();
static dLytSimpleWindow_c *getInstance() {
return sInstance;
}
- bool fn_8012B000();
+ bool set(const char *label, s32 timer, bool global);
+
+ bool isVisible();
+ bool isOutputText();
+ bool isInEvent();
+
+ STATE_FUNC_DECLARE(dLytSimpleWindow_c, Invisible);
+ STATE_FUNC_DECLARE(dLytSimpleWindow_c, In);
+ STATE_FUNC_DECLARE(dLytSimpleWindow_c, OutputText);
+ STATE_FUNC_DECLARE(dLytSimpleWindow_c, Out);
private:
+ /* 0x010 */ UI_STATE_MGR_DECLARE(dLytSimpleWindow_c);
+ /* 0x04C */ d2d::ResAccIf_c mResAcc;
+
+ /* 0x3BC */ TextWindowUnk *mpUnk;
+ /* 0x3C0 */ dTagProcessor_c *mpTagProcessor;
+ /* 0x3C4 */ dLytSimpleWindowSubtype *mpCurrentWindow;
+ /* 0x3C8 */ dLytSimpleWindowTalk_c *mpWindowTalk;
+ /* 0x3CC */ dLytSimpleWindowSword_c *mpWindowSword;
+ /* 0x3D0 */ dLytSimpleWindowLink_c *mpWindowLink;
+ /* 0x3D4 */ UNKWORD field_0x3D4;
+ /* 0x3D8 */ UNKWORD field_0x3D8;
+ /* 0x3DC */ UNKWORD field_0x3DC;
+ /* 0x3E0 */ UNKWORD field_0x3E0;
+ /* 0x3E4 */ UNKWORD mTimer;
+ /* 0x3E8 */ u16 field_0x3E8;
+ /* 0x3EA */ SizedString<0x40> mLabel;
+ /* 0x42A */ SizedString<0x40> field_0x42A;
+ /* 0x46A */ bool mInRequest;
+ /* 0x46B */ bool mWaitForEvent;
+
static dLytSimpleWindow_c *sInstance;
};
diff --git a/src/d/d_textwindow_unk.cpp b/src/d/d_textwindow_unk.cpp
index 22782a5d..063df1b9 100644
--- a/src/d/d_textwindow_unk.cpp
+++ b/src/d/d_textwindow_unk.cpp
@@ -70,14 +70,14 @@ bool TextWindowUnk::checkEndReached() const {
}
void MsgWindowBlurRelated::build() {
- for (int i = 0; i < 1023; i++) {
+ for (int i = 0; i < TextWindowUnk::BUF_SIZE; i++) {
mData[i].reset();
}
}
void MsgWindowBlurRelated::drawTextBlur(dLytTextLight *thing, mVec2_c size, u8 alpha) {
s8 t = -1;
- for (int i = 0; i < 1023; i++) {
+ for (int i = 0; i < TextWindowUnk::BUF_SIZE; i++) {
if (mData[i].displayTimerMaybe >= 0) {
if (t == -1) {
mData[i].displayTimerMaybe++;
diff --git a/src/d/lyt/d_lyt_control_game.cpp b/src/d/lyt/d_lyt_control_game.cpp
new file mode 100644
index 00000000..23c96f7d
--- /dev/null
+++ b/src/d/lyt/d_lyt_control_game.cpp
@@ -0,0 +1,14 @@
+#include "d/lyt/d_lyt_control_game.h"
+
+#include "common.h"
+#include "f/f_profile_name.h"
+
+SPECIAL_BASE_PROFILE(LYT_CONTROL_GAME, dLytControlGame_c, fProfile::LYT_CONTROL_GAME, 0x9, 96);
+
+dLytControlGame_c::dLytControlGame_c() : mStateMgr(*this), field_0x15C24(0), field_0x15C28(0) {
+ sInstance = this;
+}
+
+dLytControlGame_c::~dLytControlGame_c() {
+ sInstance = nullptr;
+}
diff --git a/src/d/lyt/meter/d_lyt_meter.cpp b/src/d/lyt/meter/d_lyt_meter.cpp
index abfcb738..3d7382b7 100644
--- a/src/d/lyt/meter/d_lyt_meter.cpp
+++ b/src/d/lyt/meter/d_lyt_meter.cpp
@@ -1281,7 +1281,7 @@ void dLytMeterMain_c::checkPaneVisibility() {
MinigameManager::isInMinigameState(MinigameManager::ROLLERCOASTER) || fn_800D56B0() || field_0x1377E)
|| (dLytMeter_c::getField_0x13B66() || fn_800D5420() ||
- (dLytSimpleWindow_c::getInstance() != nullptr && dLytSimpleWindow_c::getInstance()->fn_8012B000()) ||
+ (dLytSimpleWindow_c::getInstance() != nullptr && dLytSimpleWindow_c::getInstance()->isOutputText()) ||
fn_800D5650() || fn_800D5680())) {
mPanesVisible[METER_ANIM_RUPY] = false;
}
@@ -1306,7 +1306,7 @@ void dLytMeterMain_c::checkPaneVisibility() {
field_0x1377E
|| (dLytMeter_c::getField_0x13B66() || fn_800D5420() ||
- (dLytSimpleWindow_c::getInstance() != nullptr && dLytSimpleWindow_c::getInstance()->fn_8012B000()) ||
+ (dLytSimpleWindow_c::getInstance() != nullptr && dLytSimpleWindow_c::getInstance()->isOutputText()) ||
fn_800D5650() || fn_800D5680())) {
mPanesVisible[METER_ANIM_SHIELD] = false;
}
@@ -1333,7 +1333,7 @@ void dLytMeterMain_c::checkPaneVisibility() {
|| (field_0x1377E != 0)
|| (dLytMeter_c::getField_0x13B66() || fn_800D5420() ||
- (dLytSimpleWindow_c::getInstance() != nullptr && dLytSimpleWindow_c::getInstance()->fn_8012B000()) ||
+ (dLytSimpleWindow_c::getInstance() != nullptr && dLytSimpleWindow_c::getInstance()->isOutputText()) ||
fn_800D5650() || fn_800D5680())) {
mPanesVisible[METER_ANIM_HEART] = false;
}
diff --git a/src/d/lyt/msg_window/d_lyt_msg_window_sword.cpp b/src/d/lyt/msg_window/d_lyt_msg_window_sword.cpp
index 27e725f8..16426fc2 100644
--- a/src/d/lyt/msg_window/d_lyt_msg_window_sword.cpp
+++ b/src/d/lyt/msg_window/d_lyt_msg_window_sword.cpp
@@ -4,6 +4,7 @@
#include "d/d_gfx.h"
#include "d/d_tag_processor.h"
#include "d/d_lyt_hio.h"
+#include "d/d_textwindow_unk.h"
#include "d/lyt/d2d.h"
#include "d/lyt/d_textbox.h"
#include "m/m_vec.h"
@@ -96,7 +97,7 @@ bool dLytMsgWindowSword_c::build(d2d::ResAccIf_c *resAcc1, d2d::ResAccIf_c *resA
mSwordText.build(resAcc, mSwordType);
- for (int i = 0; i < 1023; i++) {
+ for (int i = 0; i < TextWindowUnk::BUF_SIZE; i++) {
mCharacterData[i].reset();
mTextBuf[i] = L'\0';
}
@@ -265,7 +266,7 @@ bool dLytMsgWindowSword_c::execute() {
void dLytMsgWindowSword_c::draw() {
mLyt.draw();
- for (int i = 0; i < 1023; i++) {
+ for (int i = 0; i < TextWindowUnk::BUF_SIZE; i++) {
if (mCharacterData[i].displayTimerMaybe >= 0) {
if (!mHasDrawnThisTick) {
mCharacterData[i].displayTimerMaybe += 1;
@@ -313,15 +314,14 @@ bool dLytMsgWindowSword_c::isDoneClosing() const {
}
bool dLytMsgWindowSword_c::setText(const wchar_t *text) {
- int foundIdx = 1023;
- for (int i = 0; i < 1023; i++) {
+ int foundIdx = TextWindowUnk::BUF_SIZE;
+ for (int i = 0; i < TextWindowUnk::BUF_SIZE; i++) {
if (mCharacterData[i].displayTimerMaybe >= 0 && foundIdx > mCharacterData[i].field_0x0C) {
foundIdx = mCharacterData[i].field_0x0C;
}
}
- // How is text bounds-checked here????
- for (int i = 0; i < 1023; i++) {
+ for (int i = 0; i < TextWindowUnk::BUF_SIZE; i++) {
if (i < foundIdx) {
mTextBuf[i] = text[i];
} else {
@@ -333,5 +333,5 @@ bool dLytMsgWindowSword_c::setText(const wchar_t *text) {
mpTextboxes[1]->SetTagProcessor(mpTagProcessor);
mpTextboxes[0]->setTextWithTextProcessor(mTextBuf, mpTagProcessor, 0);
mpTextboxes[1]->setTextWithTextProcessor(mTextBuf, mpTagProcessor, 0);
- return foundIdx == 1023;
+ return foundIdx == TextWindowUnk::BUF_SIZE;
}
diff --git a/src/d/lyt/msg_window/d_lyt_simple_window.cpp b/src/d/lyt/msg_window/d_lyt_simple_window.cpp
new file mode 100644
index 00000000..9991aae7
--- /dev/null
+++ b/src/d/lyt/msg_window/d_lyt_simple_window.cpp
@@ -0,0 +1,795 @@
+#include "d/lyt/msg_window/d_lyt_simple_window.h"
+
+#include "common.h"
+#include "d/d_lyt_hio.h"
+#include "d/d_message.h"
+#include "d/d_tag_processor.h"
+#include "d/d_textwindow_unk.h"
+#include "d/lyt/d_lyt_control_game.h"
+#include "d/lyt/msg_window/d_lyt_msg_window.h"
+#include "d/lyt/msg_window/d_lyt_msg_window_common.h"
+#include "m/m_vec.h"
+#include "nw4r/lyt/lyt_types.h"
+#include "nw4r/math/math_types.h"
+#include "sized_string.h"
+#include "toBeSorted/arc_managers/layout_arc_manager.h"
+#include "toBeSorted/event_manager.h"
+
+STATE_DEFINE(dLytSimpleWindow_c, Invisible);
+STATE_DEFINE(dLytSimpleWindow_c, In);
+STATE_DEFINE(dLytSimpleWindow_c, OutputText);
+STATE_DEFINE(dLytSimpleWindow_c, Out);
+
+dLytSimpleWindow_c *dLytSimpleWindow_c::sInstance;
+
+bool dLytSimpleWindowSubtype::build(d2d::ResAccIf_c *, dTagProcessor_c *) {
+ return true;
+}
+
+void dLytSimpleWindowSubtype::initializeIn(s32 pos) {
+ // no-op
+}
+
+bool dLytSimpleWindowSubtype::setText(const wchar_t *text) {
+ return true;
+}
+
+static const d2d::LytBrlanMapping brlanMapTalk[] = {
+ { "messageWindow_00_in.brlan", "G_inOut_00"},
+ { "messageWindow_00_out.brlan", "G_inOut_00"},
+ {"messageWindow_00_position.brlan", "G_position_00"},
+ { "messageWindow_00_loop.brlan", "G_loop_00"},
+};
+
+#define SIMPLE_WINDOW_TALK_ANIM_IN 0
+#define SIMPLE_WINDOW_TALK_ANIM_OUT 1
+#define SIMPLE_WINDOW_TALK_ANIM_POSITION 2
+#define SIMPLE_WINDOW_TALK_ANIM_LOOP 3
+
+#define SIMPLE_WINDOW_TALK_NUM_ANIMS 4
+
+static const char *sTalkPaneNames[] = {
+ "N_window_00", "N_message_00", "N_aBtn_00", "N_inOut_00", "N_position_00",
+};
+
+#define SIMPLE_WINDOW_TALK_PANE_WINDOW 0
+#define SIMPLE_WINDOW_TALK_PANE_MESSAGE 1
+#define SIMPLE_WINDOW_TALK_PANE_A_BTN 2
+#define SIMPLE_WINDOW_TALK_PANE_IN_OUT 3
+#define SIMPLE_WINDOW_TALK_PANE_POSITION 4
+
+#define SIMPLE_WINDOW_TALK_NUM_PANES 5
+
+static const char *sTalkTextboxNames[] = {
+ "T_message_00",
+ "T_messageS_00",
+};
+
+#define SIMPLE_WINDOW_TALK_NUM_TEXTBOXES 2
+
+bool dLytSimpleWindowTalk_c::build(d2d::ResAccIf_c *resAcc, dTagProcessor_c *tagProcessor) {
+ mpResAcc = resAcc;
+ mLyt.setResAcc(resAcc);
+ mLyt.build("messageWindow_00.brlyt", nullptr);
+ mLyt.setPriority(0x8A);
+
+ for (int i = 0; i < SIMPLE_WINDOW_TALK_NUM_ANIMS; i++) {
+ mAnm[i].init(brlanMapTalk[i].mFile, mpResAcc, mLyt.getLayout(), brlanMapTalk[i].mName);
+ mAnm[i].bind(false);
+ mAnm[i].setAnimEnable(false);
+ }
+
+ mAnm[SIMPLE_WINDOW_TALK_ANIM_LOOP].setAnimEnable(true);
+
+ mAnm[SIMPLE_WINDOW_TALK_ANIM_OUT].setAnimEnable(true);
+ mAnm[SIMPLE_WINDOW_TALK_ANIM_OUT].setToEnd();
+ mLyt.calc();
+ mAnm[SIMPLE_WINDOW_TALK_ANIM_OUT].setAnimEnable(false);
+
+ for (int i = 0; i < SIMPLE_WINDOW_TALK_NUM_PANES; i++) {
+ mpPanes[i] = mLyt.findPane(sTalkPaneNames[i]);
+ }
+
+ for (int i = 0; i < SIMPLE_WINDOW_TALK_NUM_TEXTBOXES; i++) {
+ mpTextboxes[i] = mLyt.getTextBox(sTalkTextboxNames[i]);
+ mpTextboxes[i]->SetTextPositionH(0);
+ mpTextboxes[i]->SetTextPositionV(0);
+ }
+
+ mpTextboxes[1]->setIsShadow(1);
+ mpTagProcessor = tagProcessor;
+
+ mLightText.build(mpResAcc, dLytTextLight::NORMAL);
+ mBlurRelated.build();
+
+ mpPanes[SIMPLE_WINDOW_TALK_PANE_IN_OUT]->SetVisible(true);
+ mLyt.calc();
+ mpPanes[SIMPLE_WINDOW_TALK_PANE_IN_OUT]->SetVisible(false);
+
+ nw4r::math::MTX34 transform = mpPanes[SIMPLE_WINDOW_TALK_PANE_A_BTN]->GetGlobalMtx();
+ mVec2_c _unused;
+ _unused.x = transform._03;
+ _unused.y = transform._13;
+
+ mOrigPosition.copyFrom(mpPanes[SIMPLE_WINDOW_TALK_PANE_POSITION]->GetTranslate());
+ mPosition.copyFrom(mpPanes[SIMPLE_WINDOW_TALK_PANE_POSITION]->GetTranslate());
+ mOffset.x = mOffset.y = 0.0f;
+
+ return true;
+}
+
+bool dLytSimpleWindowTalk_c::remove() {
+ mLightText.remove();
+ for (int i = 0; i < SIMPLE_WINDOW_TALK_NUM_ANIMS; i++) {
+ mAnm[i].remove();
+ }
+ return true;
+}
+
+bool dLytSimpleWindowTalk_c::execute() {
+ for (int i = 0; i < SIMPLE_WINDOW_TALK_NUM_ANIMS; i++) {
+ if (mAnm[i].isEnabled()) {
+ mAnm[i].play();
+ }
+ }
+ mLyt.calc();
+ return true;
+}
+
+bool dLytSimpleWindowTalk_c::draw() {
+ bool bVis[3];
+ for (int i = 0; i < 3; ++i) {
+ bVis[i] = mpPanes[i]->IsVisible();
+ };
+
+ mpPanes[0]->SetVisible(bVis[0]);
+ mpPanes[1]->SetVisible(false);
+ mpPanes[2]->SetVisible(false);
+
+ mLyt.draw();
+ mBlurRelated.drawTextBlur(&mLightText, mOffset, mpPanes[3]->GetAlpha());
+
+ mpPanes[0]->SetVisible(false);
+ mpPanes[1]->SetVisible(bVis[1]);
+ mpPanes[2]->SetVisible(bVis[2]);
+
+ mLyt.draw();
+
+ for (int i = 0; i < 3; ++i) {
+ mpPanes[i]->SetVisible(bVis[i]);
+ };
+ return true;
+}
+
+void dLytSimpleWindowTalk_c::initializeIn(s32 pos) {
+ mAnm[SIMPLE_WINDOW_TALK_ANIM_IN].setAnimEnable(true);
+ mAnm[SIMPLE_WINDOW_TALK_ANIM_IN].setFrame(0.0f);
+
+ mAnm[SIMPLE_WINDOW_TALK_ANIM_POSITION].setFrame(pos);
+ mAnm[SIMPLE_WINDOW_TALK_ANIM_POSITION].setAnimEnable(true);
+ mLyt.calc();
+ mAnm[SIMPLE_WINDOW_TALK_ANIM_POSITION].setAnimEnable(false);
+
+ mPosition = mOrigPosition;
+ mPosition.y = mpPanes[SIMPLE_WINDOW_TALK_PANE_POSITION]->GetTranslate().y;
+ mpPanes[SIMPLE_WINDOW_TALK_PANE_POSITION]->SetTranslate(mPosition);
+}
+
+bool dLytSimpleWindowTalk_c::isIn() {
+ if (mAnm[SIMPLE_WINDOW_TALK_ANIM_IN].isEndReached()) {
+ mAnm[SIMPLE_WINDOW_TALK_ANIM_IN].setAnimEnable(false);
+ return true;
+ }
+ return false;
+}
+
+void dLytSimpleWindowTalk_c::initializeOutputText() {
+ nw4r::lyt::Size size = getTextBox()->GetSize();
+ nw4r::lyt::Size fontSize = getTextBox()->GetFontSize();
+ nw4r::math::MTX34 transform = getTextBox()->GetGlobalMtx();
+
+ mOffset.x = transform._03 - size.width / 2;
+ mOffset.y = transform._13 + size.height / 2;
+}
+
+void dLytSimpleWindowTalk_c::initializeOut() {
+ mAnm[SIMPLE_WINDOW_TALK_ANIM_OUT].setAnimEnable(true);
+ mAnm[SIMPLE_WINDOW_TALK_ANIM_OUT].setFrame(0.0f);
+}
+
+bool dLytSimpleWindowTalk_c::isOut() {
+ if (mAnm[SIMPLE_WINDOW_TALK_ANIM_OUT].isEndReached()) {
+ mAnm[SIMPLE_WINDOW_TALK_ANIM_OUT].setAnimEnable(false);
+ return true;
+ }
+ return false;
+}
+
+bool dLytSimpleWindowTalk_c::setText(const wchar_t *text) {
+ mpTextboxes[0]->SetTagProcessor(mpTagProcessor);
+ mpTextboxes[1]->SetTagProcessor(mpTagProcessor);
+ mpTextboxes[0]->setTextWithTextProcessor(text, mpTagProcessor, nullptr);
+ mpTextboxes[1]->setTextWithTextProcessor(text, mpTagProcessor, nullptr);
+ return true;
+}
+
+static const d2d::LytBrlanMapping brlanMapSword[] = {
+ { "messageWindow_01_in.brlan", "G_inOut_00"},
+ { "messageWindow_01_out.brlan", "G_inOut_00"},
+ { "messageWindow_01_loop.brlan", "G_loop_00"},
+ { "messageWindow_01_color.brlan", "G_color_00"},
+ {"messageWindow_01_position.brlan", "G_position_00"},
+};
+
+#define SIMPLE_WINDOW_SWORD_ANIM_IN 0
+#define SIMPLE_WINDOW_SWORD_ANIM_OUT 1
+#define SIMPLE_WINDOW_SWORD_ANIM_LOOP 2
+#define SIMPLE_WINDOW_SWORD_ANIM_COLOR 3
+#define SIMPLE_WINDOW_SWORD_ANIM_POSITION 4
+
+#define SIMPLE_WINDOW_SWORD_NUM_ANIMS 5
+
+static const char *sSwordPaneNames[] = {
+ "N_aBtn_00",
+ "N_inOut_00",
+ "N_position_00",
+};
+
+#define SIMPLE_WINDOW_SWORD_PANE_A_BTN 0
+#define SIMPLE_WINDOW_SWORD_PANE_IN_OUT 1
+#define SIMPLE_WINDOW_SWORD_PANE_POSITION 2
+
+#define SIMPLE_WINDOW_SWORD_NUM_PANES 3
+
+static const char *sSwordTextboxNames[] = {
+ "T_message_00",
+ "T_messageS_00",
+};
+
+#define SIMPLE_WINDOW_SWORD_NUM_TEXTBOXES 2
+
+bool dLytSimpleWindowSword_c::build(d2d::ResAccIf_c *resAcc, dTagProcessor_c *tagProcessor) {
+ mpResAcc = resAcc;
+ mLyt.setResAcc(resAcc);
+ mLyt.build("messageWindow_01.brlyt", nullptr);
+ mLyt.setPriority(0x8A);
+
+ for (int i = 0; i < SIMPLE_WINDOW_SWORD_NUM_ANIMS; i++) {
+ mAnm[i].init(brlanMapSword[i].mFile, mpResAcc, mLyt.getLayout(), brlanMapSword[i].mName);
+ mAnm[i].bind(false);
+ mAnm[i].setAnimEnable(false);
+ }
+
+ mAnm[SIMPLE_WINDOW_SWORD_ANIM_LOOP].setAnimEnable(true);
+
+ mAnm[SIMPLE_WINDOW_SWORD_ANIM_OUT].setAnimEnable(true);
+ mAnm[SIMPLE_WINDOW_SWORD_ANIM_OUT].setToEnd();
+ mLyt.calc();
+ mAnm[SIMPLE_WINDOW_SWORD_ANIM_OUT].setAnimEnable(false);
+
+ for (int i = 0; i < SIMPLE_WINDOW_SWORD_NUM_PANES; i++) {
+ mpPanes[i] = mLyt.findPane(sSwordPaneNames[i]);
+ }
+
+ for (int i = 0; i < SIMPLE_WINDOW_SWORD_NUM_TEXTBOXES; i++) {
+ mpTextboxes[i] = mLyt.getTextBox(sSwordTextboxNames[i]);
+ mpTextboxes[i]->SetTextPositionH(0);
+ mpTextboxes[i]->SetTextPositionV(0);
+ }
+
+ mpTextboxes[1]->setIsShadow(1);
+ mpTagProcessor = tagProcessor;
+
+ for (int i = 0; i < TextWindowUnk::BUF_SIZE; i++) {
+ mCharData[i].reset();
+ mTextBuf[i] = L'\0';
+ }
+
+ mAnm[SIMPLE_WINDOW_SWORD_ANIM_COLOR].setAnimEnable(true);
+ mAnm[SIMPLE_WINDOW_SWORD_ANIM_COLOR].setFrame(mSwordType);
+ mpPanes[SIMPLE_WINDOW_SWORD_PANE_IN_OUT]->SetVisible(true);
+ mLyt.calc();
+ mpPanes[SIMPLE_WINDOW_SWORD_PANE_IN_OUT]->SetVisible(false);
+ mAnm[SIMPLE_WINDOW_SWORD_ANIM_COLOR].setAnimEnable(false);
+
+ nw4r::math::MTX34 transform = mpPanes[SIMPLE_WINDOW_SWORD_PANE_A_BTN]->GetGlobalMtx();
+ mVec2_c _unused;
+ _unused.x = transform._03;
+ _unused.y = transform._13;
+
+ mOrigPosition.copyFrom(mpPanes[SIMPLE_WINDOW_SWORD_PANE_POSITION]->GetTranslate());
+ mPosition.copyFrom(mpPanes[SIMPLE_WINDOW_SWORD_PANE_POSITION]->GetTranslate());
+ mOffset.x = mOffset.y = 0.0f;
+
+ field_0x5AC8 = 0;
+
+ return true;
+}
+
+bool dLytSimpleWindowSword_c::remove() {
+ for (int i = 0; i < SIMPLE_WINDOW_SWORD_NUM_ANIMS; i++) {
+ mAnm[i].remove();
+ }
+ return true;
+}
+
+bool dLytSimpleWindowSword_c::execute() {
+ for (int i = 0; i < SIMPLE_WINDOW_SWORD_NUM_ANIMS; i++) {
+ if (mAnm[i].isEnabled()) {
+ mAnm[i].play();
+ }
+ }
+ mLyt.calc();
+ field_0x5AC8 = 0;
+ return true;
+}
+
+bool dLytSimpleWindowSword_c::draw() {
+ mLyt.draw();
+ return true;
+}
+
+void dLytSimpleWindowSword_c::initializeIn(s32 pos) {
+ mAnm[SIMPLE_WINDOW_SWORD_ANIM_IN].setAnimEnable(true);
+ mAnm[SIMPLE_WINDOW_SWORD_ANIM_IN].setFrame(0.0f);
+
+ mAnm[SIMPLE_WINDOW_SWORD_ANIM_POSITION].setFrame(pos);
+ mAnm[SIMPLE_WINDOW_SWORD_ANIM_POSITION].setAnimEnable(true);
+ mLyt.calc();
+ mAnm[SIMPLE_WINDOW_SWORD_ANIM_POSITION].setAnimEnable(false);
+
+ mPosition = mOrigPosition;
+ mPosition.y = mpPanes[SIMPLE_WINDOW_SWORD_PANE_POSITION]->GetTranslate().y;
+ mpPanes[SIMPLE_WINDOW_SWORD_PANE_POSITION]->SetTranslate(mPosition);
+}
+
+bool dLytSimpleWindowSword_c::isIn() {
+ if (mAnm[SIMPLE_WINDOW_SWORD_ANIM_IN].isEndReached()) {
+ mAnm[SIMPLE_WINDOW_SWORD_ANIM_IN].setAnimEnable(false);
+ return true;
+ }
+ return false;
+}
+
+void dLytSimpleWindowSword_c::initializeOutputText() {
+ nw4r::lyt::Size size = getTextBox()->GetSize();
+ nw4r::lyt::Size fontSize = getTextBox()->GetFontSize();
+ nw4r::math::MTX34 transform = getTextBox()->GetGlobalMtx();
+ mOffset.x = transform._03 - size.width / 2;
+ mOffset.y = transform._13 + size.height / 2;
+}
+
+void dLytSimpleWindowSword_c::initializeOut() {
+ mAnm[SIMPLE_WINDOW_SWORD_ANIM_OUT].setAnimEnable(true);
+ mAnm[SIMPLE_WINDOW_SWORD_ANIM_OUT].setFrame(0.0f);
+}
+
+bool dLytSimpleWindowSword_c::isOut() {
+ if (mAnm[SIMPLE_WINDOW_SWORD_ANIM_OUT].isEndReached()) {
+ mAnm[SIMPLE_WINDOW_SWORD_ANIM_OUT].setAnimEnable(false);
+ return true;
+ }
+ return false;
+}
+
+bool dLytSimpleWindowSword_c::setText(const wchar_t *text) {
+ int foundIdx = TextWindowUnk::BUF_SIZE;
+ for (int i = 0; i < TextWindowUnk::BUF_SIZE; i++) {
+ if (mCharData[i].displayTimerMaybe >= 0 && foundIdx > mCharData[i].field_0x0C) {
+ foundIdx = mCharData[i].field_0x0C;
+ }
+ }
+
+ for (int i = 0; i < TextWindowUnk::BUF_SIZE; i++) {
+ if (i < foundIdx) {
+ mTextBuf[i] = text[i];
+ } else {
+ mTextBuf[i] = L' ';
+ }
+ }
+
+ mpTextboxes[0]->SetTagProcessor(mpTagProcessor);
+ mpTextboxes[1]->SetTagProcessor(mpTagProcessor);
+ mpTextboxes[0]->setTextWithTextProcessor(text, mpTagProcessor, nullptr);
+ mpTextboxes[1]->setTextWithTextProcessor(text, mpTagProcessor, nullptr);
+ return true;
+}
+
+static const d2d::LytBrlanMapping brlanMapLink[] = {
+ { "linkWindow_00_in.brlan", "G_inOut_00"},
+ { "linkWindow_00_out.brlan", "G_inOut_00"},
+ {"linkWindow_00_position.brlan", "G_position_00"},
+ { "linkWindow_00_loop.brlan", "G_loop_00"},
+};
+
+#define SIMPLE_WINDOW_LINK_ANIM_IN 0
+#define SIMPLE_WINDOW_LINK_ANIM_OUT 1
+#define SIMPLE_WINDOW_LINK_ANIM_POSITION 2
+#define SIMPLE_WINDOW_LINK_ANIM_LOOP 3
+
+#define SIMPLE_WINDOW_LINK_NUM_ANIMS 4
+
+static const char *sLinkPaneNames[] = {
+ "N_window_00", "N_message_00", "N_aBtn_00", "N_inOut_00", "N_position_00",
+};
+
+#define SIMPLE_WINDOW_LINK_PANE_WINDOW 0
+#define SIMPLE_WINDOW_LINK_PANE_MESSAGE 1
+#define SIMPLE_WINDOW_LINK_PANE_A_BTN 2
+#define SIMPLE_WINDOW_LINK_PANE_IN_OUT 3
+#define SIMPLE_WINDOW_LINK_PANE_POSITION 4
+
+#define SIMPLE_WINDOW_LINK_NUM_PANES 5
+
+static const char *sLinkTextboxNames[] = {
+ "T_message_00",
+ "T_messageS_00",
+};
+
+#define SIMPLE_WINDOW_LINK_NUM_TEXTBOXES 2
+
+bool dLytSimpleWindowLink_c::build(d2d::ResAccIf_c *resAcc, dTagProcessor_c *tagProcessor) {
+ mpResAcc = resAcc;
+ mLyt.setResAcc(resAcc);
+ mLyt.build("linkWindow_00.brlyt", nullptr);
+ mLyt.setPriority(0x8A);
+
+ for (int i = 0; i < SIMPLE_WINDOW_LINK_NUM_ANIMS; i++) {
+ mAnm[i].init(brlanMapLink[i].mFile, mpResAcc, mLyt.getLayout(), brlanMapLink[i].mName);
+ mAnm[i].bind(false);
+ mAnm[i].setAnimEnable(false);
+ }
+
+ mAnm[SIMPLE_WINDOW_LINK_ANIM_LOOP].setAnimEnable(true);
+
+ mAnm[SIMPLE_WINDOW_LINK_ANIM_OUT].setAnimEnable(true);
+ mAnm[SIMPLE_WINDOW_LINK_ANIM_OUT].setToEnd();
+ mLyt.calc();
+ mAnm[SIMPLE_WINDOW_LINK_ANIM_OUT].setAnimEnable(false);
+
+ for (int i = 0; i < SIMPLE_WINDOW_LINK_NUM_PANES; i++) {
+ mpPanes[i] = mLyt.findPane(sLinkPaneNames[i]);
+ }
+
+ for (int i = 0; i < SIMPLE_WINDOW_LINK_NUM_TEXTBOXES; i++) {
+ mpTextboxes[i] = mLyt.getTextBox(sLinkTextboxNames[i]);
+ mpTextboxes[i]->SetTextPositionH(0);
+ mpTextboxes[i]->SetTextPositionV(0);
+ }
+
+ mpTextboxes[1]->setIsShadow(1);
+ mpTagProcessor = tagProcessor;
+
+ mLightText.build(mpResAcc, dLytTextLight::NORMAL);
+ mBlurRelated.build();
+
+ mpPanes[SIMPLE_WINDOW_LINK_PANE_IN_OUT]->SetVisible(true);
+ mLyt.calc();
+ mpPanes[SIMPLE_WINDOW_LINK_PANE_IN_OUT]->SetVisible(false);
+
+ nw4r::math::MTX34 transform = mpPanes[SIMPLE_WINDOW_LINK_PANE_A_BTN]->GetGlobalMtx();
+ mVec2_c _unused;
+ _unused.x = transform._03;
+ _unused.y = transform._13;
+
+ mOrigPosition.copyFrom(mpPanes[SIMPLE_WINDOW_LINK_PANE_POSITION]->GetTranslate());
+ mPosition.copyFrom(mpPanes[SIMPLE_WINDOW_LINK_PANE_POSITION]->GetTranslate());
+ mOffset.x = mOffset.y = 0.0f;
+
+ return true;
+}
+
+bool dLytSimpleWindowLink_c::remove() {
+ mLightText.remove();
+ for (int i = 0; i < SIMPLE_WINDOW_LINK_NUM_ANIMS; i++) {
+ mAnm[i].remove();
+ }
+ return true;
+}
+
+bool dLytSimpleWindowLink_c::execute() {
+ for (int i = 0; i < SIMPLE_WINDOW_LINK_NUM_ANIMS; i++) {
+ if (mAnm[i].isEnabled()) {
+ mAnm[i].play();
+ }
+ }
+ mLyt.calc();
+ return true;
+}
+
+bool dLytSimpleWindowLink_c::draw() {
+ bool bVis[3];
+ for (int i = 0; i < 3; ++i) {
+ bVis[i] = mpPanes[i]->IsVisible();
+ };
+
+ mpPanes[0]->SetVisible(bVis[0]);
+ mpPanes[1]->SetVisible(false);
+ mpPanes[2]->SetVisible(false);
+
+ mLyt.draw();
+ mBlurRelated.drawTextBlur(&mLightText, mOffset, mpPanes[3]->GetAlpha());
+
+ mpPanes[0]->SetVisible(false);
+ mpPanes[1]->SetVisible(bVis[1]);
+ mpPanes[2]->SetVisible(bVis[2]);
+
+ mLyt.draw();
+
+ for (int i = 0; i < 3; ++i) {
+ mpPanes[i]->SetVisible(bVis[i]);
+ };
+ return true;
+}
+
+void dLytSimpleWindowLink_c::initializeIn(s32 pos) {
+ mAnm[SIMPLE_WINDOW_LINK_ANIM_IN].setAnimEnable(true);
+ mAnm[SIMPLE_WINDOW_LINK_ANIM_IN].setFrame(0.0f);
+
+ mAnm[SIMPLE_WINDOW_LINK_ANIM_POSITION].setFrame(pos);
+ mAnm[SIMPLE_WINDOW_LINK_ANIM_POSITION].setAnimEnable(true);
+ mLyt.calc();
+ mAnm[SIMPLE_WINDOW_LINK_ANIM_POSITION].setAnimEnable(false);
+
+ mPosition = mOrigPosition;
+ mPosition.y = mpPanes[SIMPLE_WINDOW_LINK_PANE_POSITION]->GetTranslate().y;
+ mpPanes[SIMPLE_WINDOW_LINK_PANE_POSITION]->SetTranslate(mPosition);
+}
+
+bool dLytSimpleWindowLink_c::isIn() {
+ if (mAnm[SIMPLE_WINDOW_LINK_ANIM_IN].isEndReached()) {
+ mAnm[SIMPLE_WINDOW_LINK_ANIM_IN].setAnimEnable(false);
+ return true;
+ }
+ return false;
+}
+
+void dLytSimpleWindowLink_c::initializeOutputText() {
+ nw4r::lyt::Size size = getTextBox()->GetSize();
+ nw4r::lyt::Size fontSize = getTextBox()->GetFontSize();
+ nw4r::math::MTX34 transform = getTextBox()->GetGlobalMtx();
+
+ mOffset.x = transform._03 - size.width / 2;
+ mOffset.y = transform._13 + size.height / 2;
+}
+
+void dLytSimpleWindowLink_c::initializeOut() {
+ mAnm[SIMPLE_WINDOW_LINK_ANIM_OUT].setAnimEnable(true);
+ mAnm[SIMPLE_WINDOW_LINK_ANIM_OUT].setFrame(0.0f);
+}
+
+bool dLytSimpleWindowLink_c::isOut() {
+ if (mAnm[SIMPLE_WINDOW_LINK_ANIM_OUT].isEndReached()) {
+ mAnm[SIMPLE_WINDOW_LINK_ANIM_OUT].setAnimEnable(false);
+ return true;
+ }
+ return false;
+}
+
+bool dLytSimpleWindowLink_c::setText(const wchar_t *text) {
+ mpTextboxes[0]->SetTagProcessor(mpTagProcessor);
+ mpTextboxes[1]->SetTagProcessor(mpTagProcessor);
+ mpTextboxes[0]->setTextWithTextProcessor(text, mpTagProcessor, nullptr);
+ mpTextboxes[1]->setTextWithTextProcessor(text, mpTagProcessor, nullptr);
+ return true;
+}
+
+bool dLytSimpleWindow_c::build() {
+ void *data = LayoutArcManager::GetInstance()->getLoadedData("System2D");
+ mResAcc.attach(data, "");
+ mpTagProcessor = new dTagProcessor_c();
+ mpUnk = new TextWindowUnk(mpTagProcessor);
+
+ mInRequest = false;
+ field_0x3D4 = 0;
+ field_0x3D8 = 0;
+ field_0x3DC = 0;
+ field_0x3E0 = 0;
+ field_0x3E8 = -1;
+ mLabel = "";
+ mTimer = 0;
+ mWaitForEvent = false;
+ mpCurrentWindow = nullptr;
+ mpWindowTalk = nullptr;
+ mpWindowSword = nullptr;
+ mpWindowLink = nullptr;
+
+ mStateMgr.changeState(StateID_Invisible);
+
+ return true;
+}
+
+bool dLytSimpleWindow_c::remove() {
+ if (mpWindowTalk != nullptr) {
+ delete mpWindowTalk;
+ mpWindowTalk = nullptr;
+ }
+ if (mpWindowSword != nullptr) {
+ delete mpWindowSword;
+ mpWindowSword = nullptr;
+ }
+ if (mpWindowLink != nullptr) {
+ delete mpWindowLink;
+ mpWindowLink = nullptr;
+ }
+
+ mpCurrentWindow = nullptr;
+ delete mpUnk;
+ mpUnk = nullptr;
+ delete mpTagProcessor;
+ mpTagProcessor = nullptr;
+
+ mResAcc.detach();
+ return true;
+}
+
+void dLytSimpleWindow_c::initializeState_Invisible() {}
+void dLytSimpleWindow_c::executeState_Invisible() {
+ if (!mInRequest) {
+ return;
+ }
+ mInRequest = false;
+ if (!dMessage_c::isValidTextLabel(mLabel)) {
+ return;
+ }
+
+ const wchar_t *message = dMessage_c::getTextMessageByLabel(mLabel, mpTagProcessor, true, nullptr, 0);
+ if (mpTagProcessor->getMsgWindowSubtype() == dLytMsgWindow_c::MSG_WINDOW_SWORD_FI ||
+ mpTagProcessor->getMsgWindowSubtype() == dLytMsgWindow_c::MSG_WINDOW_SWORD_GHIRAHIM) {
+ mpWindowSword = new dLytSimpleWindowSword_c();
+
+ if (mpTagProcessor->getMsgWindowSubtype() == dLytMsgWindow_c::MSG_WINDOW_SWORD_GHIRAHIM) {
+ mpWindowSword->setSwordType(dLytTextSword::GHIRAHIM);
+ } else {
+ mpWindowSword->setSwordType(dLytTextSword::FI);
+ }
+
+ mpWindowSword->build(&mResAcc, mpTagProcessor);
+ mpCurrentWindow = mpWindowSword;
+ } else if (mpTagProcessor->getMsgWindowSubtype() == dLytMsgWindow_c::MSG_WINDOW_LINK) {
+ mpWindowLink = new dLytSimpleWindowLink_c();
+ mpWindowLink->build(&mResAcc, mpTagProcessor);
+ mpCurrentWindow = mpWindowLink;
+ } else {
+ mpWindowTalk = new dLytSimpleWindowTalk_c();
+ mpWindowTalk->build(&mResAcc, mpTagProcessor);
+ mpCurrentWindow = mpWindowTalk;
+ }
+
+ field_0x42A = mLabel;
+
+ mpUnk->fn_800B2130(field_0x42A, mpCurrentWindow->getTextBox(), mpCurrentWindow->getCharData(), true);
+ mpCurrentWindow->setText(mpUnk->getProcessedText());
+ mStateMgr.changeState(StateID_In);
+}
+void dLytSimpleWindow_c::finalizeState_Invisible() {}
+
+void dLytSimpleWindow_c::initializeState_In() {
+ s32 pos;
+ if (mpTagProcessor->getField_0x90D() == 1) {
+ pos = 0;
+ } else if (mpTagProcessor->getField_0x90D() == 3) {
+ pos = 1;
+ } else {
+ pos = 2;
+ }
+
+ mpCurrentWindow->initializeIn(pos);
+ dLyt_HIO_c::getInstance()->setStr2("");
+}
+void dLytSimpleWindow_c::executeState_In() {
+ if (mpCurrentWindow->isIn()) {
+ mpUnk->textAdvancingRelated(true, true);
+ mpCurrentWindow->setText(mpUnk->getProcessedText());
+ mStateMgr.changeState(StateID_OutputText);
+ }
+}
+void dLytSimpleWindow_c::finalizeState_In() {}
+
+void dLytSimpleWindow_c::initializeState_OutputText() {
+ mpCurrentWindow->initializeOutputText();
+}
+void dLytSimpleWindow_c::executeState_OutputText() {
+ if (mTimer > 0) {
+ mTimer--;
+ }
+
+ if (isInEvent() || !dLytControlGame_c::getInstance()->isStateNormal() || dLytMeter_c::getItemSelect0x75A2() ||
+ dLytMeter_c::getMinusBtnFn800F7600() || dLytMeter_c::getDowsingFn800FE4B0()) {
+ mTimer = 0;
+ mWaitForEvent = false;
+ }
+
+ if (!mWaitForEvent && mTimer <= 0) {
+ mStateMgr.changeState(StateID_Out);
+ }
+}
+void dLytSimpleWindow_c::finalizeState_OutputText() {}
+
+void dLytSimpleWindow_c::initializeState_Out() {
+ mpCurrentWindow->initializeOut();
+ dLyt_HIO_c::getInstance()->setStr2("");
+ dLyt_HIO_c::getInstance()->setStr1("");
+ dLyt_HIO_c::getInstance()->setStr3("");
+}
+void dLytSimpleWindow_c::executeState_Out() {
+ if (mpCurrentWindow->isOut()) {
+ mLabel = "";
+ if (mpWindowTalk != nullptr) {
+ delete mpWindowTalk;
+ mpWindowTalk = nullptr;
+ }
+ if (mpWindowSword != nullptr) {
+ delete mpWindowSword;
+ mpWindowSword = nullptr;
+ }
+ if (mpWindowLink != nullptr) {
+ delete mpWindowLink;
+ mpWindowLink = nullptr;
+ }
+
+ mpCurrentWindow = nullptr;
+ mStateMgr.changeState(StateID_Invisible);
+ }
+}
+void dLytSimpleWindow_c::finalizeState_Out() {}
+
+bool dLytSimpleWindow_c::execute() {
+ mStateMgr.executeState();
+ if (isVisible() && mpCurrentWindow != nullptr) {
+ mpCurrentWindow->execute();
+ }
+ return true;
+}
+
+void dLytSimpleWindow_c::draw() {
+ if (isVisible() && mpCurrentWindow != nullptr) {
+ mpTagProcessor->resetSomeThings();
+ mpCurrentWindow->draw();
+ }
+}
+
+bool dLytSimpleWindow_c::set(const char *label, s32 timer, bool global) {
+ if (!isVisible()) {
+ if (global) {
+ s32 idx = dMessage_c::getMsbtIndexForLabel(label);
+ if (idx < 0) {
+ return false;
+ }
+ dMessage_c::getInstance()->setCurrentTextFileNumber(idx);
+ }
+ mInRequest = true;
+ if (timer >= 0) {
+ mTimer = timer;
+ mWaitForEvent = false;
+ } else {
+ // This is a bit weird, the timer will still be running
+ // here and it'll be checked even when the event has happened
+ // Probably not a problem in practice though
+ mWaitForEvent = true;
+ }
+ mLabel = label;
+ return true;
+ } else {
+ return false;
+ }
+}
+
+bool dLytSimpleWindow_c::isVisible() {
+ return !(*mStateMgr.getStateID() == StateID_Invisible);
+}
+
+bool dLytSimpleWindow_c::isOutputText() {
+ return (*mStateMgr.getStateID() == StateID_OutputText);
+}
+
+bool dLytSimpleWindow_c::isInEvent() {
+ if (EventManager::isInEvent()) {
+ if (EventManager::getCurrentEventName() != nullptr &&
+ strequals(EventManager::getCurrentEventName(), "DefaultStart")) {
+ return false;
+ }
+ return true;
+ }
+ return false;
+}