From 18d7897d764309208033c507980b555a947fbce6 Mon Sep 17 00:00:00 2001 From: robojumper Date: Thu, 3 Apr 2025 23:24:12 +0200 Subject: [PATCH] I keep getting distracted by side quests --- config/SOUE01/splits.txt | 11 + config/SOUE01/symbols.txt | 324 +++++++++--------- configure.py | 1 + include/d/d_message.h | 60 ++++ include/d/d_textunk.h | 4 + include/d/d_textwindow_unk.h | 20 ++ include/d/lyt/msg_window/d_lyt_msg_window.h | 111 ++++++ include/s/s_State.hpp | 4 + include/toBeSorted/global_fi_context.h | 8 + .../MSL/MSL_C/MSL_Common/Include/string.h | 2 + src/REL/d/d_s_boot.cpp | 4 +- src/d/d_font_manager.cpp | 5 +- src/d/d_message.cpp | 304 ++++++++++++++++ src/d/d_sc_title.cpp | 4 +- src/d/lyt/d2d.cpp | 8 +- src/d/lyt/d_textbox.cpp | 7 +- src/d/lyt/meter/d_lyt_meter.cpp | 5 +- src/d/lyt/msg_window/d_lyt_msg_window.cpp | 188 ++++++++++ .../d_lyt_msg_window_select_btn.cpp | 3 - 19 files changed, 889 insertions(+), 184 deletions(-) create mode 100644 include/d/d_message.h create mode 100644 include/d/d_textwindow_unk.h create mode 100644 include/d/lyt/msg_window/d_lyt_msg_window.h create mode 100644 include/toBeSorted/global_fi_context.h create mode 100644 src/d/d_message.cpp create mode 100644 src/d/lyt/msg_window/d_lyt_msg_window.cpp diff --git a/config/SOUE01/splits.txt b/config/SOUE01/splits.txt index 46635e87..fbbbe2dc 100644 --- a/config/SOUE01/splits.txt +++ b/config/SOUE01/splits.txt @@ -261,6 +261,9 @@ d/d_textunk.cpp: .sdata2 start:0x805797F8 end:0x80579848 .bss start:0x805A6F70 end:0x805A7730 +d/d_textwindow_unk.cpp: + .text start:0x800B20E0 end:0x800B34F0 + d/d_tag_processor.cpp: .text start:0x800B34F0 end:0x800B9274 .ctors start:0x804DB6D4 end:0x804DB6D8 @@ -749,6 +752,14 @@ d/tg/d_t_weather.cpp: .text start:0x801A65D0 end:0x801AF7D8 .ctors start:0x804DB804 end:0x804DB808 +d/d_message.cpp: + .text start:0x801AF7E0 end:0x801B329C + .ctors start:0x804DB808 end:0x804DB80C + .data start:0x8052C858 end:0x8052DF40 + .sdata start:0x80573248 end:0x80573290 + .sbss start:0x80575740 end:0x80575760 + .bss start:0x805B29E0 end:0x805B36E0 + d/d_stage.cpp: .text start:0x801B32A0 end:0x801B5BC8 .ctors start:0x804DB80C end:0x804DB810 diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt index c7d063fc..6b4ab60f 100644 --- a/config/SOUE01/symbols.txt +++ b/config/SOUE01/symbols.txt @@ -6743,9 +6743,9 @@ fn_80114440 = .text:0x80114440; // type:function size:0x248 fn_80114690 = .text:0x80114690; // type:function size:0x25C fn_801148F0 = .text:0x801148F0; // type:function size:0x24 fn_80114920 = .text:0x80114920; // type:function size:0x40 -LytMsgWindow__init = .text:0x80114960; // type:function size:0x228 -fn_80114B90 = .text:0x80114B90; // type:function size:0x10 -fn_80114BA0 = .text:0x80114BA0; // type:function size:0xB8 +build__15dLytMsgWindow_cFv = .text:0x80114960; // type:function size:0x228 +changeState__84sStateMgr_c<15dLytMsgWindow_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x80114B90; // type:function size:0x10 +remove__15dLytMsgWindow_cFv = .text:0x80114BA0; // type:function size:0xB8 LytMsgWindow__stateInvisibleEnter = .text:0x80114C60; // type:function size:0x4 LytMsgWindow__stateInvisibleUpdate = .text:0x80114C70; // type:function size:0x6A8 fn_80115320 = .text:0x80115320; // type:function size:0x58 @@ -6873,7 +6873,7 @@ fn_801192A0 = .text:0x801192A0; // type:function size:0x58 fn_80119300 = .text:0x80119300; // type:function size:0x6C fn_80119370 = .text:0x80119370; // type:function size:0xA0 fn_80119410 = .text:0x80119410; // type:function size:0xA4 -fn_801194C0 = .text:0x801194C0; // type:function size:0x40C +removeAllWindowSubtypes__15dLytMsgWindow_cFv = .text:0x801194C0; // type:function size:0x40C LytMsgWindowTalk__dtor = .text:0x801198D0; // type:function size:0x198 fn_80119A70 = .text:0x80119A70; // type:function size:0x198 LytMsgWindowSword__dtor = .text:0x80119C10; // type:function size:0x198 @@ -7040,9 +7040,9 @@ initializeState__32sFStateID_c<17dLytAutoExplain_c>CFR17dLytAutoExplain_c = .tex finalizeState__32sFStateID_c<17dLytAutoCaption_c>CFR17dLytAutoCaption_c = .text:0x8011B8F0; // type:function size:0x30 executeState__32sFStateID_c<17dLytAutoCaption_c>CFR17dLytAutoCaption_c = .text:0x8011B920; // type:function size:0x30 initializeState__32sFStateID_c<17dLytAutoCaption_c>CFR17dLytAutoCaption_c = .text:0x8011B950; // type:function size:0x30 -LytMsgWindow__initStates = .text:0x8011B980; // type:function size:0xE58 -LytMsgWindow__dtor = .text:0x8011C7E0; // type:function size:0x58 -fn_8011C840 = .text:0x8011C840; // type:function size:0x88 +__sinit_\d_lyt_msg_window_cpp = .text:0x8011B980; // type:function size:0xE58 +__dt__30sFStateID_c<15dLytMsgWindow_c>Fv = .text:0x8011C7E0; // type:function size:0x58 +isSameName__30sFStateID_c<15dLytMsgWindow_c>CFPCc = .text:0x8011C840; // type:function size:0x88 __ct__15SelectBtnHelperFv = .text:0x8011C8D0; // type:function size:0x60 __dt__15SelectBtnHelperFv = .text:0x8011C930; // type:function size:0x40 fn_8011C970 = .text:0x8011C970; // type:function size:0x6C @@ -10907,14 +10907,14 @@ fn_801B1F10 = .text:0x801B1F10; // type:function size:0x38 ActorEventFlowManager__clear = .text:0x801B1F50; // type:function size:0x2C fn_801B1F80 = .text:0x801B1F80; // type:function size:0xD8 fn_801B2060 = .text:0x801B2060; // type:function size:0x98 -fn_801B2100 = .text:0x801B2100; // type:function size:0x30 -msbAlloc = .text:0x801B2130; // type:function size:0x2C -msbFree = .text:0x801B2160; // type:function size:0x24 -GlobalMessageRelatedContext__ctor = .text:0x801B2190; // type:function size:0x48 -fn_801B21E0 = .text:0x801B21E0; // type:function size:0x268 -fn_801B2450 = .text:0x801B2450; // type:function size:0xBC -fn_801B2510 = .text:0x801B2510; // type:function size:0x7C -fn_801B2590 = .text:0x801B2590; // type:function size:0x8 +dMessage_c_classInit__Fv = .text:0x801B2100; // type:function size:0x30 +msbAlloc__FUl = .text:0x801B2130; // type:function size:0x2C +msbFree__FPv = .text:0x801B2160; // type:function size:0x24 +__ct__10dMessage_cFv = .text:0x801B2190; // type:function size:0x48 +create__10dMessage_cFv = .text:0x801B21E0; // type:function size:0x268 +doDelete__10dMessage_cFv = .text:0x801B2450; // type:function size:0xBC +execute__10dMessage_cFv = .text:0x801B2510; // type:function size:0x7C +draw__10dMessage_cFv = .text:0x801B2590; // type:function size:0x8 getTextMessageByLabel = .text:0x801B25A0; // type:function size:0x24 fn_801B25D0 = .text:0x801B25D0; // type:function size:0x2C fn_801B2600 = .text:0x801B2600; // type:function size:0xC @@ -10922,10 +10922,10 @@ fn_801B2610 = .text:0x801B2610; // type:function size:0x180 fn_801B2790 = .text:0x801B2790; // type:function size:0x98 fn_801B2830 = .text:0x801B2830; // type:function size:0xC fn_801B2840 = .text:0x801B2840; // type:function size:0x38 -getMsbtNameInArc = .text:0x801B2880; // type:function size:0x88 -getMsbfNameInArc = .text:0x801B2910; // type:function size:0x88 -getMajorNumberForMsbt = .text:0x801B29A0; // type:function size:0x24 -fn_801B29D0 = .text:0x801B29D0; // type:function size:0x24 +getMsbtFileName__10dMessage_cFl = .text:0x801B2880; // type:function size:0x88 +getMsbfFileName__10dMessage_cFl = .text:0x801B2910; // type:function size:0x88 +getMsbtNumberByIndex__10dMessage_cFl = .text:0x801B29A0; // type:function size:0x24 +getMsbfNumberByIndex__10dMessage_cFl = .text:0x801B29D0; // type:function size:0x24 fn_801B2A00 = .text:0x801B2A00; // type:function size:0x14 fn_801B2A20 = .text:0x801B2A20; // type:function size:0x4C fn_801B2A70 = .text:0x801B2A70; // type:function size:0xC @@ -10939,18 +10939,18 @@ fn_801B2BE0 = .text:0x801B2BE0; // type:function size:0x40 fn_801B2C20 = .text:0x801B2C20; // type:function size:0x30 fn_801B2C50 = .text:0x801B2C50; // type:function size:0xC0 fn_801B2D10 = .text:0x801B2D10; // type:function size:0x4C -fn_801B2D60 = .text:0x801B2D60; // type:function size:0x44 -getUsedLanguageString = .text:0x801B2DB0; // type:function size:0x1B0 -getEventFlowFileNameByIndex = .text:0x801B2F60; // type:function size:0x4 +reset__10dMessage_cFv = .text:0x801B2D60; // type:function size:0x44 +getLanguageIdentifier__10dMessage_cFv = .text:0x801B2DB0; // type:function size:0x1B0 +getArcNameByIndex__10dMessage_cFlb = .text:0x801B2F60; // type:function size:0x4 getEventFlowFileNameByIndex2 = .text:0x801B2F70; // type:function size:0x14 -getDataFromMsbArc = .text:0x801B2F90; // type:function size:0x70 -setZevFromMsbArc = .text:0x801B3000; // type:function size:0x68 +getDataFromMsbArc__10dMessage_cFlPCcb = .text:0x801B2F90; // type:function size:0x70 +setZevFromMsbArc__10dMessage_cFv = .text:0x801B3000; // type:function size:0x68 fn_801B3070 = .text:0x801B3070; // type:function size:0x104 fn_801B3180 = .text:0x801B3180; // type:function size:0x24 fn_801B31B0 = .text:0x801B31B0; // type:function size:0x24 -fn_801B31E0 = .text:0x801B31E0; // type:function size:0x34 -fn_801B3220 = .text:0x801B3220; // type:function size:0x64 -initCurrentLangString = .text:0x801B3290; // type:function size:0xC +getArcIndexForFile__10dMessage_cFPCc = .text:0x801B31E0; // type:function size:0x34 +__dt__10dMessage_cFv = .text:0x801B3220; // type:function size:0x64 +__sinit_\d_message_cpp = .text:0x801B3290; // type:function size:0xC scope:local dStage_c_classInit__Fv = .text:0x801B32A0; // type:function size:0x30 __ct__8dStage_cFv = .text:0x801B32D0; // type:function size:0xF0 __dt__18sFPhase<8dStage_c>Fv = .text:0x801B33C0; // type:function size:0x58 @@ -33984,170 +33984,170 @@ jumptable_8052CAC8 = .data:0x8052CAC8; // type:object size:0x28 scope:local lbl_8052CAF0 = .data:0x8052CAF0; // type:object size:0x114 jumptable_8052CC04 = .data:0x8052CC04; // type:object size:0x20 scope:local g_profile_MESSAGE = .data:0x8052CC24; // type:object size:0xC -lbl_8052CC30 = .data:0x8052CC30; // type:object size:0x10 +lbl_8052CC30 = .data:0x8052CC30; // type:object size:0xE data:string lbl_8052CC40 = .data:0x8052CC40; // type:object size:0x10 data:string lbl_8052CC50 = .data:0x8052CC50; // type:object size:0x10 data:string -lbl_8052CC60 = .data:0x8052CC60; // type:object size:0x18 +lbl_8052CC60 = .data:0x8052CC60; // type:object size:0x11 data:string lbl_8052CC78 = .data:0x8052CC78; // type:object size:0x10 data:string -lbl_8052CC88 = .data:0x8052CC88; // type:object size:0x14 -lbl_8052CC9C = .data:0x8052CC9C; // type:object size:0x18 -lbl_8052CCB4 = .data:0x8052CCB4; // type:object size:0x18 -lbl_8052CCCC = .data:0x8052CCCC; // type:object size:0x18 -lbl_8052CCE4 = .data:0x8052CCE4; // type:object size:0x18 -lbl_8052CCFC = .data:0x8052CCFC; // type:object size:0x18 -lbl_8052CD14 = .data:0x8052CD14; // type:object size:0x18 -lbl_8052CD2C = .data:0x8052CD2C; // type:object size:0x18 -lbl_8052CD44 = .data:0x8052CD44; // type:object size:0x18 -lbl_8052CD5C = .data:0x8052CD5C; // type:object size:0x18 -lbl_8052CD74 = .data:0x8052CD74; // type:object size:0x18 -lbl_8052CD8C = .data:0x8052CD8C; // type:object size:0x14 -lbl_8052CDA0 = .data:0x8052CDA0; // type:object size:0x10 -lbl_8052CDB0 = .data:0x8052CDB0; // type:object size:0xC -lbl_8052CDBC = .data:0x8052CDBC; // type:object size:0x10 -lbl_8052CDCC = .data:0x8052CDCC; // type:object size:0x10 -lbl_8052CDDC = .data:0x8052CDDC; // type:object size:0x10 +lbl_8052CC88 = .data:0x8052CC88; // type:object size:0x12 data:string +lbl_8052CC9C = .data:0x8052CC9C; // type:object size:0x16 data:string +lbl_8052CCB4 = .data:0x8052CCB4; // type:object size:0x17 data:string +lbl_8052CCCC = .data:0x8052CCCC; // type:object size:0x17 data:string +lbl_8052CCE4 = .data:0x8052CCE4; // type:object size:0x17 data:string +lbl_8052CCFC = .data:0x8052CCFC; // type:object size:0x17 data:string +lbl_8052CD14 = .data:0x8052CD14; // type:object size:0x17 data:string +lbl_8052CD2C = .data:0x8052CD2C; // type:object size:0x17 data:string +lbl_8052CD44 = .data:0x8052CD44; // type:object size:0x17 data:string +lbl_8052CD5C = .data:0x8052CD5C; // type:object size:0x17 data:string +lbl_8052CD74 = .data:0x8052CD74; // type:object size:0x17 data:string +lbl_8052CD8C = .data:0x8052CD8C; // type:object size:0x11 data:string +lbl_8052CDA0 = .data:0x8052CDA0; // type:object size:0xE data:string +lbl_8052CDB0 = .data:0x8052CDB0; // type:object size:0xA data:string +lbl_8052CDBC = .data:0x8052CDBC; // type:object size:0xE data:string +lbl_8052CDCC = .data:0x8052CDCC; // type:object size:0xE data:string +lbl_8052CDDC = .data:0x8052CDDC; // type:object size:0xF data:string lbl_8052CDEC = .data:0x8052CDEC; // type:object size:0x14 data:string -lbl_8052CE00 = .data:0x8052CE00; // type:object size:0x10 -lbl_8052CE10 = .data:0x8052CE10; // type:object size:0x10 -lbl_8052CE20 = .data:0x8052CE20; // type:object size:0x18 +lbl_8052CE00 = .data:0x8052CE00; // type:object size:0xF data:string +lbl_8052CE10 = .data:0x8052CE10; // type:object size:0xF data:string +lbl_8052CE20 = .data:0x8052CE20; // type:object size:0x13 data:string lbl_8052CE38 = .data:0x8052CE38; // type:object size:0x10 data:string -lbl_8052CE48 = .data:0x8052CE48; // type:object size:0x14 -lbl_8052CE5C = .data:0x8052CE5C; // type:object size:0x14 +lbl_8052CE48 = .data:0x8052CE48; // type:object size:0x12 data:string +lbl_8052CE5C = .data:0x8052CE5C; // type:object size:0x13 data:string lbl_8052CE70 = .data:0x8052CE70; // type:object size:0x14 data:string -lbl_8052CE84 = .data:0x8052CE84; // type:object size:0x18 -lbl_8052CE9C = .data:0x8052CE9C; // type:object size:0x14 -lbl_8052CEB0 = .data:0x8052CEB0; // type:object size:0x18 +lbl_8052CE84 = .data:0x8052CE84; // type:object size:0x17 data:string +lbl_8052CE9C = .data:0x8052CE9C; // type:object size:0x11 data:string +lbl_8052CEB0 = .data:0x8052CEB0; // type:object size:0x16 data:string lbl_8052CEC8 = .data:0x8052CEC8; // type:object size:0x10 data:string -lbl_8052CED8 = .data:0x8052CED8; // type:object size:0x10 +lbl_8052CED8 = .data:0x8052CED8; // type:object size:0xF data:string lbl_8052CEE8 = .data:0x8052CEE8; // type:object size:0x14 data:string -lbl_8052CEFC = .data:0x8052CEFC; // type:object size:0x14 -lbl_8052CF10 = .data:0x8052CF10; // type:object size:0x10 -lbl_8052CF20 = .data:0x8052CF20; // type:object size:0x14 -lbl_8052CF34 = .data:0x8052CF34; // type:object size:0x10 -lbl_8052CF44 = .data:0x8052CF44; // type:object size:0x14 -lbl_8052CF58 = .data:0x8052CF58; // type:object size:0x10 -lbl_8052CF68 = .data:0x8052CF68; // type:object size:0x10 -lbl_8052CF78 = .data:0x8052CF78; // type:object size:0x10 +lbl_8052CEFC = .data:0x8052CEFC; // type:object size:0x11 data:string +lbl_8052CF10 = .data:0x8052CF10; // type:object size:0xF data:string +lbl_8052CF20 = .data:0x8052CF20; // type:object size:0x11 data:string +lbl_8052CF34 = .data:0x8052CF34; // type:object size:0xF data:string +lbl_8052CF44 = .data:0x8052CF44; // type:object size:0x12 data:string +lbl_8052CF58 = .data:0x8052CF58; // type:object size:0xF data:string +lbl_8052CF68 = .data:0x8052CF68; // type:object size:0xF data:string +lbl_8052CF78 = .data:0x8052CF78; // type:object size:0xF data:string lbl_8052CF88 = .data:0x8052CF88; // type:object size:0xC data:string -lbl_8052CF94 = .data:0x8052CF94; // type:object size:0x10 -lbl_8052CFA4 = .data:0x8052CFA4; // type:object size:0x10 -lbl_8052CFB4 = .data:0x8052CFB4; // type:object size:0x14 +lbl_8052CF94 = .data:0x8052CF94; // type:object size:0xF data:string +lbl_8052CFA4 = .data:0x8052CFA4; // type:object size:0xE data:string +lbl_8052CFB4 = .data:0x8052CFB4; // type:object size:0xE data:string lbl_8052CFC8 = .data:0x8052CFC8; // type:object size:0x10 data:string -lbl_8052CFD8 = .data:0x8052CFD8; // type:object size:0x14 -lbl_8052CFEC = .data:0x8052CFEC; // type:object size:0x14 -lbl_8052D000 = .data:0x8052D000; // type:object size:0x14 -lbl_8052D014 = .data:0x8052D014; // type:object size:0x14 -lbl_8052D028 = .data:0x8052D028; // type:object size:0x18 -lbl_8052D040 = .data:0x8052D040; // type:object size:0x14 -lbl_8052D054 = .data:0x8052D054; // type:object size:0x10 -lbl_8052D064 = .data:0x8052D064; // type:object size:0x14 +lbl_8052CFD8 = .data:0x8052CFD8; // type:object size:0x12 data:string +lbl_8052CFEC = .data:0x8052CFEC; // type:object size:0x12 data:string +lbl_8052D000 = .data:0x8052D000; // type:object size:0x12 data:string +lbl_8052D014 = .data:0x8052D014; // type:object size:0x12 data:string +lbl_8052D028 = .data:0x8052D028; // type:object size:0x15 data:string +lbl_8052D040 = .data:0x8052D040; // type:object size:0x11 data:string +lbl_8052D054 = .data:0x8052D054; // type:object size:0xE data:string +lbl_8052D064 = .data:0x8052D064; // type:object size:0x12 data:string lbl_8052D078 = .data:0x8052D078; // type:object size:0x14 data:string -lbl_8052D08C = .data:0x8052D08C; // type:object size:0x14 +lbl_8052D08C = .data:0x8052D08C; // type:object size:0x11 data:string lbl_8052D0A0 = .data:0x8052D0A0; // type:object size:0x14 data:string lbl_8052D0B4 = .data:0x8052D0B4; // type:object size:0x14 data:string lbl_8052D0C8 = .data:0x8052D0C8; // type:object size:0x14 data:string -lbl_8052D0DC = .data:0x8052D0DC; // type:object size:0x18 -lbl_8052D0F4 = .data:0x8052D0F4; // type:object size:0x14 -lbl_8052D108 = .data:0x8052D108; // type:object size:0x10 +lbl_8052D0DC = .data:0x8052D0DC; // type:object size:0x17 data:string +lbl_8052D0F4 = .data:0x8052D0F4; // type:object size:0x11 data:string +lbl_8052D108 = .data:0x8052D108; // type:object size:0xE data:string lbl_8052D118 = .data:0x8052D118; // type:object size:0x10 data:string -lbl_8052D128 = .data:0x8052D128; // type:object size:0x14 -lbl_8052D13C = .data:0x8052D13C; // type:object size:0x14 -lbl_8052D150 = .data:0x8052D150; // type:object size:0x14 -lbl_8052D164 = .data:0x8052D164; // type:object size:0x14 -lbl_8052D178 = .data:0x8052D178; // type:object size:0x18 -lbl_8052D190 = .data:0x8052D190; // type:object size:0x18 -lbl_8052D1A8 = .data:0x8052D1A8; // type:object size:0x18 -lbl_8052D1C0 = .data:0x8052D1C0; // type:object size:0x18 +lbl_8052D128 = .data:0x8052D128; // type:object size:0x12 data:string +lbl_8052D13C = .data:0x8052D13C; // type:object size:0x12 data:string +lbl_8052D150 = .data:0x8052D150; // type:object size:0x12 data:string +lbl_8052D164 = .data:0x8052D164; // type:object size:0x12 data:string +lbl_8052D178 = .data:0x8052D178; // type:object size:0x17 data:string +lbl_8052D190 = .data:0x8052D190; // type:object size:0x15 data:string +lbl_8052D1A8 = .data:0x8052D1A8; // type:object size:0x15 data:string +lbl_8052D1C0 = .data:0x8052D1C0; // type:object size:0x11 data:string lbl_8052D1D8 = .data:0x8052D1D8; // type:object size:0x18 data:string -lbl_8052D1F0 = .data:0x8052D1F0; // type:object size:0x10 -lbl_8052D200 = .data:0x8052D200; // type:object size:0x18 -lbl_8052D218 = .data:0x8052D218; // type:object size:0x10 -lbl_8052D228 = .data:0x8052D228; // type:object size:0x1C -lbl_8052D244 = .data:0x8052D244; // type:object size:0x10 -lbl_8052D254 = .data:0x8052D254; // type:object size:0x14 -lbl_8052D268 = .data:0x8052D268; // type:object size:0x10 -MSBT_FILENAMES = .data:0x8052D278; // type:object size:0x148 -lbl_8052D3C0 = .data:0x8052D3C0; // type:object size:0x10 +lbl_8052D1F0 = .data:0x8052D1F0; // type:object size:0xE data:string +lbl_8052D200 = .data:0x8052D200; // type:object size:0x15 data:string +lbl_8052D218 = .data:0x8052D218; // type:object size:0xE data:string +lbl_8052D228 = .data:0x8052D228; // type:object size:0x19 data:string +lbl_8052D244 = .data:0x8052D244; // type:object size:0xF data:string +lbl_8052D254 = .data:0x8052D254; // type:object size:0x11 data:string +lbl_8052D268 = .data:0x8052D268; // type:object size:0xE data:string +sMsbtFileNames = .data:0x8052D278; // type:object size:0x148 +lbl_8052D3C0 = .data:0x8052D3C0; // type:object size:0xE data:string lbl_8052D3D0 = .data:0x8052D3D0; // type:object size:0x10 data:string lbl_8052D3E0 = .data:0x8052D3E0; // type:object size:0x10 data:string -lbl_8052D3F0 = .data:0x8052D3F0; // type:object size:0x18 +lbl_8052D3F0 = .data:0x8052D3F0; // type:object size:0x11 data:string lbl_8052D408 = .data:0x8052D408; // type:object size:0x10 data:string -lbl_8052D418 = .data:0x8052D418; // type:object size:0x14 -lbl_8052D42C = .data:0x8052D42C; // type:object size:0x18 -lbl_8052D444 = .data:0x8052D444; // type:object size:0x18 -lbl_8052D45C = .data:0x8052D45C; // type:object size:0x18 -lbl_8052D474 = .data:0x8052D474; // type:object size:0x18 -lbl_8052D48C = .data:0x8052D48C; // type:object size:0x18 -lbl_8052D4A4 = .data:0x8052D4A4; // type:object size:0x18 -lbl_8052D4BC = .data:0x8052D4BC; // type:object size:0x18 -lbl_8052D4D4 = .data:0x8052D4D4; // type:object size:0x18 -lbl_8052D4EC = .data:0x8052D4EC; // type:object size:0x18 -lbl_8052D504 = .data:0x8052D504; // type:object size:0x18 -lbl_8052D51C = .data:0x8052D51C; // type:object size:0x10 -lbl_8052D52C = .data:0x8052D52C; // type:object size:0x10 -lbl_8052D53C = .data:0x8052D53C; // type:object size:0x10 -lbl_8052D54C = .data:0x8052D54C; // type:object size:0x10 +lbl_8052D418 = .data:0x8052D418; // type:object size:0x12 data:string +lbl_8052D42C = .data:0x8052D42C; // type:object size:0x16 data:string +lbl_8052D444 = .data:0x8052D444; // type:object size:0x17 data:string +lbl_8052D45C = .data:0x8052D45C; // type:object size:0x17 data:string +lbl_8052D474 = .data:0x8052D474; // type:object size:0x17 data:string +lbl_8052D48C = .data:0x8052D48C; // type:object size:0x17 data:string +lbl_8052D4A4 = .data:0x8052D4A4; // type:object size:0x17 data:string +lbl_8052D4BC = .data:0x8052D4BC; // type:object size:0x17 data:string +lbl_8052D4D4 = .data:0x8052D4D4; // type:object size:0x17 data:string +lbl_8052D4EC = .data:0x8052D4EC; // type:object size:0x17 data:string +lbl_8052D504 = .data:0x8052D504; // type:object size:0x17 data:string +lbl_8052D51C = .data:0x8052D51C; // type:object size:0xE data:string +lbl_8052D52C = .data:0x8052D52C; // type:object size:0xE data:string +lbl_8052D53C = .data:0x8052D53C; // type:object size:0xE data:string +lbl_8052D54C = .data:0x8052D54C; // type:object size:0xF data:string lbl_8052D55C = .data:0x8052D55C; // type:object size:0x14 data:string -lbl_8052D570 = .data:0x8052D570; // type:object size:0x10 -lbl_8052D580 = .data:0x8052D580; // type:object size:0x10 -lbl_8052D590 = .data:0x8052D590; // type:object size:0x18 +lbl_8052D570 = .data:0x8052D570; // type:object size:0xF data:string +lbl_8052D580 = .data:0x8052D580; // type:object size:0xF data:string +lbl_8052D590 = .data:0x8052D590; // type:object size:0x13 data:string lbl_8052D5A8 = .data:0x8052D5A8; // type:object size:0x10 data:string -lbl_8052D5B8 = .data:0x8052D5B8; // type:object size:0x14 -lbl_8052D5CC = .data:0x8052D5CC; // type:object size:0x14 +lbl_8052D5B8 = .data:0x8052D5B8; // type:object size:0x12 data:string +lbl_8052D5CC = .data:0x8052D5CC; // type:object size:0x13 data:string lbl_8052D5E0 = .data:0x8052D5E0; // type:object size:0x14 data:string -lbl_8052D5F4 = .data:0x8052D5F4; // type:object size:0x18 -lbl_8052D60C = .data:0x8052D60C; // type:object size:0x14 -lbl_8052D620 = .data:0x8052D620; // type:object size:0x18 +lbl_8052D5F4 = .data:0x8052D5F4; // type:object size:0x17 data:string +lbl_8052D60C = .data:0x8052D60C; // type:object size:0x11 data:string +lbl_8052D620 = .data:0x8052D620; // type:object size:0x16 data:string lbl_8052D638 = .data:0x8052D638; // type:object size:0x10 data:string -lbl_8052D648 = .data:0x8052D648; // type:object size:0x10 +lbl_8052D648 = .data:0x8052D648; // type:object size:0xF data:string lbl_8052D658 = .data:0x8052D658; // type:object size:0x14 data:string -lbl_8052D66C = .data:0x8052D66C; // type:object size:0x14 -lbl_8052D680 = .data:0x8052D680; // type:object size:0x10 -lbl_8052D690 = .data:0x8052D690; // type:object size:0x14 -lbl_8052D6A4 = .data:0x8052D6A4; // type:object size:0x10 -lbl_8052D6B4 = .data:0x8052D6B4; // type:object size:0x14 -lbl_8052D6C8 = .data:0x8052D6C8; // type:object size:0x10 -lbl_8052D6D8 = .data:0x8052D6D8; // type:object size:0x10 -lbl_8052D6E8 = .data:0x8052D6E8; // type:object size:0x10 +lbl_8052D66C = .data:0x8052D66C; // type:object size:0x11 data:string +lbl_8052D680 = .data:0x8052D680; // type:object size:0xF data:string +lbl_8052D690 = .data:0x8052D690; // type:object size:0x11 data:string +lbl_8052D6A4 = .data:0x8052D6A4; // type:object size:0xF data:string +lbl_8052D6B4 = .data:0x8052D6B4; // type:object size:0x12 data:string +lbl_8052D6C8 = .data:0x8052D6C8; // type:object size:0xF data:string +lbl_8052D6D8 = .data:0x8052D6D8; // type:object size:0xF data:string +lbl_8052D6E8 = .data:0x8052D6E8; // type:object size:0xF data:string lbl_8052D6F8 = .data:0x8052D6F8; // type:object size:0xC data:string -lbl_8052D704 = .data:0x8052D704; // type:object size:0x10 -lbl_8052D714 = .data:0x8052D714; // type:object size:0x10 -lbl_8052D724 = .data:0x8052D724; // type:object size:0x14 +lbl_8052D704 = .data:0x8052D704; // type:object size:0xF data:string +lbl_8052D714 = .data:0x8052D714; // type:object size:0xE data:string +lbl_8052D724 = .data:0x8052D724; // type:object size:0xE data:string lbl_8052D738 = .data:0x8052D738; // type:object size:0x10 data:string -lbl_8052D748 = .data:0x8052D748; // type:object size:0x14 -lbl_8052D75C = .data:0x8052D75C; // type:object size:0x14 -lbl_8052D770 = .data:0x8052D770; // type:object size:0x14 -lbl_8052D784 = .data:0x8052D784; // type:object size:0x14 -lbl_8052D798 = .data:0x8052D798; // type:object size:0x18 -lbl_8052D7B0 = .data:0x8052D7B0; // type:object size:0x14 -lbl_8052D7C4 = .data:0x8052D7C4; // type:object size:0x10 -lbl_8052D7D4 = .data:0x8052D7D4; // type:object size:0x14 +lbl_8052D748 = .data:0x8052D748; // type:object size:0x12 data:string +lbl_8052D75C = .data:0x8052D75C; // type:object size:0x12 data:string +lbl_8052D770 = .data:0x8052D770; // type:object size:0x12 data:string +lbl_8052D784 = .data:0x8052D784; // type:object size:0x12 data:string +lbl_8052D798 = .data:0x8052D798; // type:object size:0x15 data:string +lbl_8052D7B0 = .data:0x8052D7B0; // type:object size:0x11 data:string +lbl_8052D7C4 = .data:0x8052D7C4; // type:object size:0xE data:string +lbl_8052D7D4 = .data:0x8052D7D4; // type:object size:0x12 data:string lbl_8052D7E8 = .data:0x8052D7E8; // type:object size:0x14 data:string -lbl_8052D7FC = .data:0x8052D7FC; // type:object size:0x14 +lbl_8052D7FC = .data:0x8052D7FC; // type:object size:0x11 data:string lbl_8052D810 = .data:0x8052D810; // type:object size:0x14 data:string lbl_8052D824 = .data:0x8052D824; // type:object size:0x14 data:string lbl_8052D838 = .data:0x8052D838; // type:object size:0x14 data:string -lbl_8052D84C = .data:0x8052D84C; // type:object size:0x18 -lbl_8052D864 = .data:0x8052D864; // type:object size:0x14 -lbl_8052D878 = .data:0x8052D878; // type:object size:0x10 +lbl_8052D84C = .data:0x8052D84C; // type:object size:0x17 data:string +lbl_8052D864 = .data:0x8052D864; // type:object size:0x11 data:string +lbl_8052D878 = .data:0x8052D878; // type:object size:0xE data:string lbl_8052D888 = .data:0x8052D888; // type:object size:0x10 data:string -lbl_8052D898 = .data:0x8052D898; // type:object size:0x14 -lbl_8052D8AC = .data:0x8052D8AC; // type:object size:0x14 -lbl_8052D8C0 = .data:0x8052D8C0; // type:object size:0x14 -lbl_8052D8D4 = .data:0x8052D8D4; // type:object size:0x14 -lbl_8052D8E8 = .data:0x8052D8E8; // type:object size:0x18 -lbl_8052D900 = .data:0x8052D900; // type:object size:0x18 -lbl_8052D918 = .data:0x8052D918; // type:object size:0x18 -lbl_8052D930 = .data:0x8052D930; // type:object size:0x18 +lbl_8052D898 = .data:0x8052D898; // type:object size:0x12 data:string +lbl_8052D8AC = .data:0x8052D8AC; // type:object size:0x12 data:string +lbl_8052D8C0 = .data:0x8052D8C0; // type:object size:0x12 data:string +lbl_8052D8D4 = .data:0x8052D8D4; // type:object size:0x12 data:string +lbl_8052D8E8 = .data:0x8052D8E8; // type:object size:0x17 data:string +lbl_8052D900 = .data:0x8052D900; // type:object size:0x15 data:string +lbl_8052D918 = .data:0x8052D918; // type:object size:0x15 data:string +lbl_8052D930 = .data:0x8052D930; // type:object size:0x11 data:string lbl_8052D948 = .data:0x8052D948; // type:object size:0x18 data:string -lbl_8052D960 = .data:0x8052D960; // type:object size:0x10 -lbl_8052D970 = .data:0x8052D970; // type:object size:0x18 -lbl_8052D988 = .data:0x8052D988; // type:object size:0x10 -lbl_8052D998 = .data:0x8052D998; // type:object size:0x1C -lbl_8052D9B4 = .data:0x8052D9B4; // type:object size:0x10 -lbl_8052D9C4 = .data:0x8052D9C4; // type:object size:0x14 -lbl_8052D9D8 = .data:0x8052D9D8; // type:object size:0x10 -lbl_8052D9E8 = .data:0x8052D9E8; // type:object size:0x140 +lbl_8052D960 = .data:0x8052D960; // type:object size:0xE data:string +lbl_8052D970 = .data:0x8052D970; // type:object size:0x15 data:string +lbl_8052D988 = .data:0x8052D988; // type:object size:0xE data:string +lbl_8052D998 = .data:0x8052D998; // type:object size:0x19 data:string +lbl_8052D9B4 = .data:0x8052D9B4; // type:object size:0xF data:string +lbl_8052D9C4 = .data:0x8052D9C4; // type:object size:0x11 data:string +lbl_8052D9D8 = .data:0x8052D9D8; // type:object size:0xE data:string +sMsbfFileNames = .data:0x8052D9E8; // type:object size:0x140 lbl_8052DB28 = .data:0x8052DB28; // type:object size:0x1C lbl_8052DB44 = .data:0x8052DB44; // type:object size:0x1C lbl_8052DB60 = .data:0x8052DB60; // type:object size:0x1C @@ -34178,7 +34178,7 @@ lbl_8052DE34 = .data:0x8052DE34; // type:object size:0xC lbl_8052DE40 = .data:0x8052DE40; // type:object size:0x10 EVENT_FLOW_FILENAMES = .data:0x8052DE50; // type:object size:0x18 lbl_8052DE68 = .data:0x8052DE68; // type:object size:0x10 -GlobalMessageRelatedContext__vtable = .data:0x8052DE78; // type:object size:0x4C +__vt__10dMessage_c = .data:0x8052DE78; // type:object size:0x4C ActorEventFlowManager__vtable = .data:0x8052DEC4; // type:object size:0x78 g_profile_STAGE = .data:0x8052DF40; // type:object size:0xC sCallbacks__8dStage_c = .data:0x8052DF4C; // type:object size:0x24 @@ -40228,8 +40228,8 @@ lbl_80575730 = .sbss:0x80575730; // type:object size:0x2 data:2byte lbl_80575734 = .sbss:0x80575734; // type:object size:0x4 data:float lbl_80575738 = .sbss:0x80575738; // type:object size:0x2 data:2byte lbl_8057573C = .sbss:0x8057573C; // type:object size:0x4 data:float -GLOBAL_MESSAGE_RELATED_CONTEXT = .sbss:0x80575740; // type:object size:0x4 data:4byte -GLOBAL_TEXT_MANAGER = .sbss:0x80575744; // type:object size:0x4 data:4byte +sInstance__10dMessage_c = .sbss:0x80575740; // type:object size:0x4 data:4byte +sTagProcessor__10dMessage_c = .sbss:0x80575744; // type:object size:0x4 data:4byte lbl_80575748 = .sbss:0x80575748; // type:object size:0x1 data:byte lbl_80575749 = .sbss:0x80575749; // type:object size:0x7 data:byte CURRENT_LANGUAGE_STRING = .sbss:0x80575750; // type:object size:0x8 data:byte diff --git a/configure.py b/configure.py index 716a2b79..0ae0a939 100644 --- a/configure.py +++ b/configure.py @@ -436,6 +436,7 @@ config.libs = [ Object(NonMatching, "d/a/d_a_insect.cpp"), Object(NonMatching, "d/d_stage_mgr.cpp"), Object(NonMatching, "d/d_last.cpp"), + Object(NonMatching, "d/d_message.cpp"), Object(NonMatching, "d/d_stage.cpp"), Object(Matching, "d/d_room.cpp"), Object(NonMatching, "d/d_cs_base.cpp"), diff --git a/include/d/d_message.h b/include/d/d_message.h new file mode 100644 index 00000000..d9fa29df --- /dev/null +++ b/include/d/d_message.h @@ -0,0 +1,60 @@ +#ifndef D_MESSAGE_H +#define D_MESSAGE_H + +#include "common.h" +#include "d/d_base.h" +#include "d/d_tag_processor.h" +#include "libms/flowfile.h" +#include "sized_string.h" + +class dMessage_c : public dBase_c { +public: + dMessage_c(); + virtual ~dMessage_c() { + sInstance = nullptr; + } + + int create() override; + int doDelete() override; + int execute() override; + int draw() override; + + static const char *getLanguageIdentifier(); + + static dMessage_c *getInstance() { + return sInstance; + } + + static dTagProcessor_c *getGlobalTagProcessor() { + return sTagProcessor; + } + + void reset(); + +private: + static s32 getArcIndexForFile(const char *fileName); + static const char *getArcNameByIndex(s32 idx, bool); + + static void setZevFromMsbArc(); + static const char *getMsbtFileName(s32 index); + static s32 getMsbtNumberByIndex(s32 index); + static const char *getMsbfFileName(s32 index); + static s32 getMsbfNumberByIndex(s32 index); + static void *getDataFromMsbArc(s32 number, const char *fileName, bool); + + static dMessage_c *sInstance; + static dTagProcessor_c *sTagProcessor; + + /* 0x068 */ MsbtInfo *mpMsgs[82]; + /* 0x1B0 */ MsbfInfo *mpFlows[80]; + /* 0x2F0 */ SizedString<8> mLanguage; + /* 0x2F8 */ s32 mCurrentTextFileNumber; + + /* 0x2FC */ s32 field_0x2FC; + + /* 0x334 */ u32 mMinigameResultPoints; + /* 0x338 */ u32 mMinigameTime; + /* 0x344 */ s32 field_0x344; +}; + +#endif diff --git a/include/d/d_textunk.h b/include/d/d_textunk.h index f79cf061..086785cf 100644 --- a/include/d/d_textunk.h +++ b/include/d/d_textunk.h @@ -109,6 +109,10 @@ public: return 0.0f; } + static UnkTextThing *getInstance() { + return sInstance; + } + private: static UnkTextThing *sInstance; diff --git a/include/d/d_textwindow_unk.h b/include/d/d_textwindow_unk.h new file mode 100644 index 00000000..0e929df2 --- /dev/null +++ b/include/d/d_textwindow_unk.h @@ -0,0 +1,20 @@ +#ifndef D_TEXTWINDOW_UNK_H +#define D_TEXTWINDOW_UNK_H + +#include "d/d_tag_processor.h" + +// Size 0x1554 +class TextWindowUnk { +public: + TextWindowUnk(dTagProcessor_c *tagProcessor); + virtual ~TextWindowUnk() {} + +private: + /* 0x0004 */ dTagProcessor_c *mpTagProcessor; + /* 0x0008 */ wchar_t mRawTextBuffer[1023]; + /* 0x0806 */ wchar_t mProcessedTextBuffer[1023]; + /* 0x1004 */ wchar_t mUnkBuffer[679]; // ??? + /* 0x1550 */ void* field_0x1559; +}; + +#endif diff --git a/include/d/lyt/msg_window/d_lyt_msg_window.h b/include/d/lyt/msg_window/d_lyt_msg_window.h new file mode 100644 index 00000000..701b22d7 --- /dev/null +++ b/include/d/lyt/msg_window/d_lyt_msg_window.h @@ -0,0 +1,111 @@ +#ifndef D_LYT_MSG_WINDOW_H +#define D_LYT_MSG_WINDOW_H + +#include "d/d_tag_processor.h" +#include "d/d_textwindow_unk.h" +#include "d/lyt/d2d.h" +#include "d/lyt/d_lyt_auto_caption.h" +#include "d/lyt/d_lyt_auto_explain.h" +#include "d/lyt/msg_window/d_lyt_msg_window_common.h" +#include "d/lyt/msg_window/d_lyt_msg_window_select_btn.h" +#include "d/lyt/msg_window/d_lyt_msg_window_stone.h" +#include "d/lyt/msg_window/d_lyt_msg_window_wood.h" +#include "s/s_State.hpp" +#include "sized_string.h" + +class dLytMsgWindow_c { +public: + dLytMsgWindow_c() : mStateMgr(*this) {} + virtual ~dLytMsgWindow_c() {} + + bool build(); + bool remove(); + +private: + + void removeAllWindowSubtypes(); + + static dLytMsgWindow_c *sInstance; + + STATE_FUNC_DECLARE(dLytMsgWindow_c, Invisible); + STATE_FUNC_DECLARE(dLytMsgWindow_c, In); + STATE_FUNC_DECLARE(dLytMsgWindow_c, OutputText); + STATE_FUNC_DECLARE(dLytMsgWindow_c, WaitKeyChangePage0); + STATE_FUNC_DECLARE(dLytMsgWindow_c, WaitKeyChangePage1); + STATE_FUNC_DECLARE(dLytMsgWindow_c, WaitKeyMsgEnd0); + STATE_FUNC_DECLARE(dLytMsgWindow_c, WaitKeyMsgEnd1); + STATE_FUNC_DECLARE(dLytMsgWindow_c, WaitKeyMsgEnd2); + STATE_FUNC_DECLARE(dLytMsgWindow_c, WaitKeySelectQuestion); + STATE_FUNC_DECLARE(dLytMsgWindow_c, MapOpen); + STATE_FUNC_DECLARE(dLytMsgWindow_c, WaitKeyMapClose); + STATE_FUNC_DECLARE(dLytMsgWindow_c, MapClose); + STATE_FUNC_DECLARE(dLytMsgWindow_c, Out); + STATE_FUNC_DECLARE(dLytMsgWindow_c, ExplainIn); + STATE_FUNC_DECLARE(dLytMsgWindow_c, ExplainVisible); + STATE_FUNC_DECLARE(dLytMsgWindow_c, ExplainOut); + STATE_FUNC_DECLARE(dLytMsgWindow_c, DemoIn); + STATE_FUNC_DECLARE(dLytMsgWindow_c, DemoVisible); + STATE_FUNC_DECLARE(dLytMsgWindow_c, DemoOut); + + + /* 0x004 */ UI_STATE_MGR_DECLARE(dLytMsgWindow_c); + /* 0x040 */ d2d::ResAccIf_c mResAcc1; + /* 0x3B0 */ d2d::ResAccIf_c mResAcc2; + + /* 0x720 */ TextWindowUnk *mpMsgWindowUnk; + /* 0x724 */ dTagProcessor_c *mpTagProcessor; + + /* 0x728 */ dLytMsgWindowSubtype *mpCurrentSubtype; + /* 0x72C */ dLytMsgWindowSubtype *mpWindowTalk; + /* 0x730 */ dLytMsgWindowSubtype *mpWindowLink; + /* 0x734 */ dLytMsgWindowSubtype *mpWindowSword; + /* 0x738 */ dLytMsgWindowWood_c *mpWindowWood; + /* 0x73C */ dLytMsgWindowStone_c *mpWindowStone; + /* 0x740 */ dLytMsgWindowSubtype *mpWindowGet; + /* 0x744 */ dLytMsgWindowSubtype *mpWindowDemo; + /* 0x748 */ dLytAutoExplain_c *mpAutoExplain; + /* 0x74C */ dLytAutoCaption_c *mpAutoCaption; + + /* 0x774 */ s32 field_0x774; + /* 0x778 */ s32 field_0x778; + /* 0x77C */ s32 field_0x77C; + /* 0x780 */ s32 field_0x780; + /* 0x784 */ s32 field_0x784; + + /* 0x788 */ u16 mEntryPointToTrigger; + /* 0x78A */ u16 mAlsoEntryPointToTrigger; + + /* 0x78C */ SizedString<0x40> mName; + + /* 0x80C */ u8 field_0x80C; + /* 0x80D */ u8 field_0x80D; + /* 0x80E */ u8 field_0x80E; + /* 0x80F */ u8 mShowAutoMessage; + /* 0x810 */ u8 field_0x810; + /* 0x811 */ u8 field_0x811; + /* 0x812 */ u8 field_0x812; + /* 0x813 */ u8 field_0x813; + /* 0x814 */ u8 field_0x814; + /* 0x815 */ u8 field_0x815; + /* 0x816 */ u8 field_0x816; + /* 0x817 */ u8 field_0x817; + /* 0x818 */ u8 field_0x818; + /* 0x819 */ u8 field_0x819; + /* 0x81A */ u8 field_0x81A; + /* 0x81B */ u8 field_0x81B; + /* 0x81C */ u8 field_0x81C; + /* 0x81D */ u8 field_0x81D; + /* 0x81E */ u8 field_0x81E; + + /* 0x820 */ u16 field_0x820; + /* 0x824 */ void *field_0x824; + /* 0x828 */ s32 field_0x828; + + /* 0x82C */ u32 mTextOptionSelection; + /* 0x830 */ u32 mSpecialFiMenuValue; + + /* 0x834 */ dLytMsgWindowSelectBtn_c mSelectBtn; + /* 0x1220 */ u8 field_0x1220; +}; + +#endif diff --git a/include/s/s_State.hpp b/include/s/s_State.hpp index 3a8c4ec5..23dbc2f8 100644 --- a/include/s/s_State.hpp +++ b/include/s/s_State.hpp @@ -8,6 +8,10 @@ // Note: Ported from https://github.com/NSMBW-Community/NSMBW-Decomp/tree/master/include/dol/sLib // See include/s/README.txt for changes made +// Handy search and replace regex to generate functions based on define macros +// STATE_DEFINE\(([A-Za-z_0-9]+), ([A-Za-z_0-9]+)\); +// void $1::initializeState_$2() {}\nvoid $1::executeState_$2() {}\nvoid $1::finalizeState_$2() {}\n + #define STATE_FUNC_DECLARE(class, name) \ void initializeState_##name(); \ void executeState_##name(); \ diff --git a/include/toBeSorted/global_fi_context.h b/include/toBeSorted/global_fi_context.h new file mode 100644 index 00000000..be63a65f --- /dev/null +++ b/include/toBeSorted/global_fi_context.h @@ -0,0 +1,8 @@ +#ifndef GLOBAL_FI_CONTEXT_H +#define GLOBAL_FI_CONTEXT_H + +extern "C" void *GLOBAL_FI_CONTEXT; +extern "C" void fn_8016C9F0(void*); +extern "C" void createGlobalFiContext(); + +#endif diff --git a/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/string.h b/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/string.h index 8e36bf83..db8c619e 100644 --- a/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/string.h +++ b/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/string.h @@ -25,6 +25,8 @@ char *strcpy(char *dst, const char *src); int sscanf(const char *buffer, const char *format, ...); size_t strlen(const char *str); +int atoi(const char *str); + #ifdef __cplusplus } #endif diff --git a/src/REL/d/d_s_boot.cpp b/src/REL/d/d_s_boot.cpp index 905fe2f3..e2733224 100644 --- a/src/REL/d/d_s_boot.cpp +++ b/src/REL/d/d_s_boot.cpp @@ -5,6 +5,7 @@ #include "d/d_dylink.h" #include "d/d_font_manager.h" #include "d/d_heap.h" +#include "d/d_message.h" #include "d/d_scene.h" #include "d/d_sys.h" #include "d/lyt/d_lyt_battery.h" @@ -42,7 +43,6 @@ sFPhaseBase::sFPhaseState dScBoot_c::executeLoadPhase() { extern "C" u8 getUsedLanguageNTSCNum(); extern "C" const char *getEventFlowFileNameByIndex(int, int); -extern "C" const char *getUsedLanguageString(); extern "C" u8 fn_80054F30(); extern "C" nw4r::ut::ResFont *lbl_805750D8; @@ -54,7 +54,7 @@ sFPhaseBase::sFPhaseState dScBoot_c::cb1() { for (int i = 0; i < 6; i++) { SizedString<128> str; - str.sprintf("%s/%s", getUsedLanguageString(), getEventFlowFileNameByIndex(i, 1)); + str.sprintf("%s/%s", dMessage_c::getLanguageIdentifier(), getEventFlowFileNameByIndex(i, 1)); OarcManager::GetInstance()->loadObjectArcFromDisk(str, mHeap::g_archiveHeap); } OarcManager::GetInstance()->loadObjectArcFromDisk("System", mHeap::g_archiveHeap); diff --git a/src/d/d_font_manager.cpp b/src/d/d_font_manager.cpp index c992484b..a63f2889 100644 --- a/src/d/d_font_manager.cpp +++ b/src/d/d_font_manager.cpp @@ -1,6 +1,7 @@ #include "d/d_font_manager.h" #include "d/d_heap.h" +#include "d/d_message.h" #include "sized_string.h" @@ -48,14 +49,12 @@ void dFontMng_c::setFontFile(int idx, void *fileData) { l_dFontMng_obj[idx].mpFileData = fileData; } -extern "C" const char *getUsedLanguageString(); - const char *dFontMng_c::getFontPath(u8 idx) { static SizedString<128> TEMP_FONT_NAME; if (idx == 2) { TEMP_FONT_NAME.sprintf("/Font/%s", systemFonts[idx]); } else { - TEMP_FONT_NAME.sprintf("/US/Font/%s/%s", getUsedLanguageString(), systemFonts[idx]); + TEMP_FONT_NAME.sprintf("/US/Font/%s/%s", dMessage_c::getLanguageIdentifier(), systemFonts[idx]); } return TEMP_FONT_NAME; } diff --git a/src/d/d_message.cpp b/src/d/d_message.cpp new file mode 100644 index 00000000..1b7a49eb --- /dev/null +++ b/src/d/d_message.cpp @@ -0,0 +1,304 @@ +#include "d/d_message.h" + +#include "common.h" +#include "d/d_tag_processor.h" +#include "d/d_textunk.h" +#include "f/f_base.h" +#include "f/f_profile.h" +#include "f/f_profile_name.h" +#include "libms/libms.h" +#include "libms/msgfile.h" +#include "sized_string.h" +#include "toBeSorted/global_fi_context.h" + +SPECIAL_BASE_PROFILE(MESSAGE, dMessage_c, fProfile::MESSAGE, 0x2A8, 0); + +static const char *sMsbtFileNames[82] = { + "000-Test.msbt", + "001-Action.msbt", + "002-System.msbt", + "003-ItemGet.msbt", + "004-Object.msbt", + "005-Tutorial.msbt", + "006-KenseiNormal.msbt", + "006-1KenseiNormal.msbt", + "006-2KenseiNormal.msbt", + "006-3KenseiNormal.msbt", + "006-4KenseiNormal.msbt", + "006-5KenseiNormal.msbt", + "006-6KenseiNormal.msbt", + "006-7KenseiNormal.msbt", + "006-8KenseiNormal.msbt", + "006-9KenseiNormal.msbt", + "007-MapText.msbt", + "008-Hint.msbt", + "word.msbt", + "100-Town.msbt", + "101-Shop.msbt", + "102-Zelda.msbt", + "103-DaiShinkan.msbt", + "104-Rival.msbt", + "105-Terry.msbt", + "106-DrugStore.msbt", + "107-Kanban.msbt", + "108-ShinkanA.msbt", + "109-TakeGoron.msbt", + "110-DivingGame.msbt", + "111-FortuneTeller.msbt", + "112-Trustee.msbt", + "113-RemodelStore.msbt", + "114-Friend.msbt", + "115-Town2.msbt", + "116-InsectGame.msbt", + "117-Pumpkin.msbt", + "118-Town3.msbt", + "119-Captain.msbt", + "120-Nushi.msbt", + "121-AkumaKun.msbt", + "122-Town4.msbt", + "123-Town5.msbt", + "124-Town6.msbt", + "125-D3.msbt", + "150-Siren.msbt", + "198-Test.msbt", + "199-Demo.msbt", + "200-Forest.msbt", + "201-ForestD1.msbt", + "202-ForestD2.msbt", + "203-ForestF2.msbt", + "204-ForestF3.msbt", + "250-ForestSiren.msbt", + "251-Salvage.msbt", + "299-Demo.msbt", + "300-Mountain.msbt", + "301-MountainD1.msbt", + "302-Anahori.msbt", + "303-MountainF2.msbt", + "304-MountainD2.msbt", + "305-MountainF3.msbt", + "350-MountainSiren.msbt", + "351-Salvage.msbt", + "399-Demo.msbt", + "400-Desert.msbt", + "401-DesertD2.msbt", + "402-DesertF2.msbt", + "403-DesertD1.msbt", + "404-DesertF3.msbt", + "405-DesertD2Clear.msbt", + "406-TrolleyRace.msbt", + "450-DesertSiren.msbt", + "451-Salvage.msbt", + "460-RairyuMinigame.msbt", + "499-Demo.msbt", + "500-CenterField.msbt", + "501-Inpa.msbt", + "502-CenterFieldBack.msbt", + "503-Goron.msbt", + "510-Salvage.msbt", + "599-Demo.msbt", +}; + +static char *sMsbfFileNames[80] = { + "000-Test.msbf", + "001-Action.msbf", + "002-System.msbf", + "003-ItemGet.msbf", + "004-Object.msbf", + "005-Tutorial.msbf", + "006-KenseiNormal.msbf", + "006-1KenseiNormal.msbf", + "006-2KenseiNormal.msbf", + "006-3KenseiNormal.msbf", + "006-4KenseiNormal.msbf", + "006-5KenseiNormal.msbf", + "006-6KenseiNormal.msbf", + "006-7KenseiNormal.msbf", + "006-8KenseiNormal.msbf", + "006-9KenseiNormal.msbf", + "008-Hint.msbf", + "100-Town.msbf", + "101-Shop.msbf", + "102-Zelda.msbf", + "103-DaiShinkan.msbf", + "104-Rival.msbf", + "105-Terry.msbf", + "106-DrugStore.msbf", + "107-Kanban.msbf", + "108-ShinkanA.msbf", + "109-TakeGoron.msbf", + "110-DivingGame.msbf", + "111-FortuneTeller.msbf", + "112-Trustee.msbf", + "113-RemodelStore.msbf", + "114-Friend.msbf", + "115-Town2.msbf", + "116-InsectGame.msbf", + "117-Pumpkin.msbf", + "118-Town3.msbf", + "119-Captain.msbf", + "120-Nushi.msbf", + "121-AkumaKun.msbf", + "122-Town4.msbf", + "123-Town5.msbf", + "124-Town6.msbf", + "125-D3.msbf", + "150-Siren.msbf", + "198-Test.msbf", + "199-Demo.msbf", + "200-Forest.msbf", + "201-ForestD1.msbf", + "202-ForestD2.msbf", + "203-ForestF2.msbf", + "204-ForestF3.msbf", + "250-ForestSiren.msbf", + "251-Salvage.msbf", + "299-Demo.msbf", + "300-Mountain.msbf", + "301-MountainD1.msbf", + "302-Anahori.msbf", + "303-MountainF2.msbf", + "304-MountainD2.msbf", + "305-MountainF3.msbf", + "350-MountainSiren.msbf", + "351-Salvage.msbf", + "399-Demo.msbf", + "400-Desert.msbf", + "401-DesertD2.msbf", + "402-DesertF2.msbf", + "403-DesertD1.msbf", + "404-DesertF3.msbf", + "405-DesertD2Clear.msbf", + "406-TrolleyRace.msbf", + "450-DesertSiren.msbf", + "451-Salvage.msbf", + "460-RairyuMinigame.msbf", + "499-Demo.msbf", + "500-CenterField.msbf", + "501-Inpa.msbf", + "502-CenterFieldBack.msbf", + "503-Goron.msbf", + "510-Salvage.msbf", + "599-Demo.msbf", +}; + +static void *msbAlloc(size_t size) {} + +static void msbFree(void *ptr) {} + +dMessage_c::dMessage_c() { + sInstance = this; +} + +int dMessage_c::create() { + mLanguage = getLanguageIdentifier(); + + mCurrentTextFileNumber = -1; + field_0x2FC = 0; + field_0x344 = 0; + LMS_SetMemFuncs(msbAlloc, msbFree); + setZevFromMsbArc(); + + for (s32 i = 0; i < 82; i++) { + SizedString<0x40> fileName = getMsbtFileName(i); + s32 num = getMsbtNumberByIndex(i); + void *data = getDataFromMsbArc(num, fileName, true); + if (data == nullptr) { + mpMsgs[i] = nullptr; + } else { + mpMsgs[i] = LMS_InitMessage(data); + } + } + + for (s32 i = 0; i < 80; i++) { + SizedString<0x40> fileName = getMsbfFileName(i); + s32 num = getMsbfNumberByIndex(i); + void *data = getDataFromMsbArc(num, fileName, true); + if (data == nullptr) { + mpFlows[i] = nullptr; + } else { + mpFlows[i] = LMS_InitFlow(data); + } + } + + sTagProcessor = new dTagProcessor_c(); + createGlobalFiContext(); + reset(); + return SUCCEEDED; +} + +int dMessage_c::doDelete() { + UnkTextThing::getInstance()->destroy(); + if (sTagProcessor != nullptr) { + delete sTagProcessor; + sTagProcessor = nullptr; + } + + for (int i = 0; i < 82; i++) { + if (mpMsgs[i] != nullptr) { + LMS_CloseMessage(mpMsgs[i]); + } + } + + for (int i = 0; i < 80; i++) { + if (mpFlows[i] != nullptr) { + LMS_CloseFlow(mpFlows[i]); + } + } + return SUCCEEDED; +} + +int dMessage_c::execute() { + return SUCCEEDED; +} + +int dMessage_c::draw() { + return SUCCEEDED; +} + +const char *dMessage_c::getMsbtFileName(s32 idx) { + static SizedString<128> sPath; + + s32 arcIdx = getArcIndexForFile(sMsbtFileNames[idx]); + const char *arcName = getArcNameByIndex(arcIdx, true); + sPath.sprintf("%s/%s", arcName, sMsbtFileNames[idx]); + return sPath; +} + +const char *dMessage_c::getMsbfFileName(s32 idx) { + static SizedString<128> sPath; + + s32 arcIdx = getArcIndexForFile(sMsbfFileNames[idx]); + const char *arcName = getArcNameByIndex(arcIdx, true); + sPath.sprintf("%s/%s", arcName, sMsbfFileNames[idx]); + return sPath; +} + +s32 dMessage_c::getMsbtNumberByIndex(s32 index) { + return atoi(getMsbtFileName(index)); +} + +s32 dMessage_c::getMsbfNumberByIndex(s32 index) { + return atoi(getMsbfFileName(index)); +} + +extern "C" u8 fn_80054F30(); + +static SizedString<8> sCurrentLanguage; +const char *dMessage_c::getLanguageIdentifier() { + u8 lang = fn_80054F30(); + if (lang == 3) { + sCurrentLanguage = "fr_US"; + } else if (lang == 4) { + sCurrentLanguage = "es_US"; + } else { + sCurrentLanguage = "en_US"; + } + return sCurrentLanguage; +} + +s32 dMessage_c::getArcIndexForFile(const char *fileName) { + char buf[2]; + buf[0] = fileName[0]; + buf[1] = '\0'; + return atoi(buf); +} diff --git a/src/d/d_sc_title.cpp b/src/d/d_sc_title.cpp index 8b7469cd..ffb231fb 100644 --- a/src/d/d_sc_title.cpp +++ b/src/d/d_sc_title.cpp @@ -2,6 +2,7 @@ #include "common.h" #include "d/d_heap.h" +#include "d/d_message.h" #include "d/d_sc_game.h" #include "d/d_sys.h" #include "f/f_base.h" @@ -67,7 +68,6 @@ extern "C" u32 TITLE_SCREEN_CHANGE; extern "C" void fn_80059450(); extern "C" void fn_80058C90(s32); extern "C" void fn_80015E40(); -extern "C" const char *getUsedLanguageString(); static const char *const sFileSelect = "FileSelect"; static const char *const sSkb = "SoftwareKeyboard"; @@ -98,7 +98,7 @@ int dScTitle_c::create() { LayoutArcManager::GetInstance()->loadLayoutArcFromDisk(sSkb, nullptr); mDvd_toMainRam_normal_c::create2(&mpSkbArc, "/SKB/sofkeybd.arc", 0, dHeap::work2Heap.heap); SizedString<128> fntPath; - fntPath.sprintf("/US/Font/%s/%s", getUsedLanguageString(), "normal_02.brfnt"); + fntPath.sprintf("/US/Font/%s/%s", dMessage_c::getLanguageIdentifier(), "normal_02.brfnt"); mDvd_toMainRam_normal_c::create2(&mpSkbFont, fntPath, 0, dHeap::work2Heap.heap); fn_8035E310(BGM_MGR); } diff --git a/src/d/lyt/d2d.cpp b/src/d/lyt/d2d.cpp index 10c6e806..c36d25fc 100644 --- a/src/d/lyt/d2d.cpp +++ b/src/d/lyt/d2d.cpp @@ -1,6 +1,7 @@ #include "d/lyt/d2d.h" #include "d/d_font_manager.h" +#include "d/d_message.h" #include "d/d_textunk.h" #include "d/lyt/d_textbox.h" #include "d/lyt/d_window.h" @@ -278,9 +279,6 @@ LytBase_c::~LytBase_c() { } } -extern "C" const char *getUsedLanguageString(); -extern "C" nw4r::ut::TagProcessorBase *GLOBAL_TEXT_MANAGER; - bool LytBase_c::build(const char *name, m2d::ResAccIf_c *acc) { if (mLayout.GetRootPane() != nullptr) { return true; @@ -332,7 +330,7 @@ bool LytBase_c::build(const char *name, m2d::ResAccIf_c *acc) { } SizedString<0x80> localizedName; - localizedName.sprintf("%s_%s", getUsedLanguageString(), fileName); + localizedName.sprintf("%s_%s", dMessage_c::getLanguageIdentifier(), fileName); void *data = acc->getAccessor()->GetResource(0, localizedName, nullptr); if (data == nullptr) { @@ -343,7 +341,7 @@ bool LytBase_c::build(const char *name, m2d::ResAccIf_c *acc) { bool ok = mLayout.Build(resource, acc->getAccessor()); if (ok) { - mLayout.SetTagProcessor(GLOBAL_TEXT_MANAGER); + mLayout.SetTagProcessor(dMessage_c::getGlobalTagProcessor()); calc(); setPropertiesRecursive(mLayout.GetRootPane(), -9999.0f, -9999.0f, -9999.0f, -9999.0f, -9999.0f); } diff --git a/src/d/lyt/d_textbox.cpp b/src/d/lyt/d_textbox.cpp index e9fd6c00..a7ede0a3 100644 --- a/src/d/lyt/d_textbox.cpp +++ b/src/d/lyt/d_textbox.cpp @@ -2,6 +2,7 @@ #include "common.h" #include "d/d_font_manager.h" +#include "d/d_message.h" #include "d/d_tag_processor.h" #include "d/d_textunk.h" #include "libms/msgfile.h" @@ -255,12 +256,10 @@ void dTextBox_c::setTextWithGlobalTextProcessor(const wchar_t *str, void *unk, . va_end(l); } -extern "C" dTagProcessor_c *GLOBAL_TEXT_MANAGER; - void dTextBox_c::setTextWithGlobalTextProcessorV(const wchar_t *str, void *unk, va_list list) { SetFontSize(mMyTextScale); mHasTextWriter = true; - mpMyTagProcessor = GLOBAL_TEXT_MANAGER; + mpMyTagProcessor = dMessage_c::getGlobalTagProcessor(); u32 outLen = 0; mWindowSubtype = mpMyTagProcessor->getMsgWindowSubtype(); mpMyTagProcessor->setField_0xEE1(field_0x1F6); @@ -326,7 +325,7 @@ void dTextBox_c::setMessageWithGlobalTextProcessorAndMsbtInfo( mHasTextWriter = true; field_0x1FA = 1; u32 outLen = 0; - mpMyTagProcessor = GLOBAL_TEXT_MANAGER; + mpMyTagProcessor = dMessage_c::getGlobalTagProcessor(); mpMyTagProcessor->setMsgWindowSubtype(0x22); mWindowSubtype = mpMyTagProcessor->getMsgWindowSubtype(); mpMyTagProcessor->setField_0xEE1(field_0x1F6); diff --git a/src/d/lyt/meter/d_lyt_meter.cpp b/src/d/lyt/meter/d_lyt_meter.cpp index a5a1c1fe..1dd58d3a 100644 --- a/src/d/lyt/meter/d_lyt_meter.cpp +++ b/src/d/lyt/meter/d_lyt_meter.cpp @@ -1,5 +1,6 @@ // clang-format off #include "common.h" +#include "d/d_message.h" #include "d/d_sc_game.h" #include "d/d_sc_title.h" #include "d/d_stage_mgr.h" @@ -285,8 +286,6 @@ dLytMeter_c::dLytMeter_c() {} extern "C" void fn_800D97E0(int i); extern "C" void fn_800D9800(int i); -extern "C" void fn_801B2D10(void *); -extern "C" void *GLOBAL_MESSAGE_RELATED_CONTEXT; static const d2d::LytBrlanMapping meterBrlanMap[] = { { "basicPosition_00_in.brlan", "G_remoConBtn_00"}, @@ -632,7 +631,7 @@ bool dLytMeterContainer_c::build() { fn_800D97E0(0xb); fn_800D9800(1); - fn_801B2D10(GLOBAL_MESSAGE_RELATED_CONTEXT); + dMessage_c::getInstance()->reset(); return true; } diff --git a/src/d/lyt/msg_window/d_lyt_msg_window.cpp b/src/d/lyt/msg_window/d_lyt_msg_window.cpp new file mode 100644 index 00000000..e377d3b9 --- /dev/null +++ b/src/d/lyt/msg_window/d_lyt_msg_window.cpp @@ -0,0 +1,188 @@ +#include "d/lyt/msg_window/d_lyt_msg_window.h" +#include "common.h" +#include "d/d_tag_processor.h" +#include "d/d_textwindow_unk.h" +#include "s/s_State.hpp" +#include "toBeSorted/arc_managers/layout_arc_manager.h" +#include "toBeSorted/global_fi_context.h" + +STATE_DEFINE(dLytMsgWindow_c, Invisible); +STATE_DEFINE(dLytMsgWindow_c, In); +STATE_DEFINE(dLytMsgWindow_c, OutputText); +STATE_DEFINE(dLytMsgWindow_c, WaitKeyChangePage0); +STATE_DEFINE(dLytMsgWindow_c, WaitKeyChangePage1); +STATE_DEFINE(dLytMsgWindow_c, WaitKeyMsgEnd0); +STATE_DEFINE(dLytMsgWindow_c, WaitKeyMsgEnd1); +STATE_DEFINE(dLytMsgWindow_c, WaitKeyMsgEnd2); +STATE_DEFINE(dLytMsgWindow_c, WaitKeySelectQuestion); +STATE_DEFINE(dLytMsgWindow_c, MapOpen); +STATE_DEFINE(dLytMsgWindow_c, WaitKeyMapClose); +STATE_DEFINE(dLytMsgWindow_c, MapClose); +STATE_DEFINE(dLytMsgWindow_c, Out); +STATE_DEFINE(dLytMsgWindow_c, ExplainIn); +STATE_DEFINE(dLytMsgWindow_c, ExplainVisible); +STATE_DEFINE(dLytMsgWindow_c, ExplainOut); +STATE_DEFINE(dLytMsgWindow_c, DemoIn); +STATE_DEFINE(dLytMsgWindow_c, DemoVisible); +STATE_DEFINE(dLytMsgWindow_c, DemoOut); + +bool dLytMsgWindow_c::build() { + mResAcc1.attach(LayoutArcManager::GetInstance()->getLoadedData("DoButton"), ""); + mResAcc2.attach(LayoutArcManager::GetInstance()->getLoadedData("System2D"), ""); + mSelectBtn.build(&mResAcc2); + + mpTagProcessor = new dTagProcessor_c(); + mpMsgWindowUnk = new TextWindowUnk(mpTagProcessor); + + if (GLOBAL_FI_CONTEXT != nullptr) { + fn_8016C9F0(GLOBAL_FI_CONTEXT); + } + + mpWindowTalk = nullptr; + mpWindowLink = nullptr; + mpWindowSword = nullptr; + mpWindowWood = nullptr; + mpWindowStone = nullptr; + mpWindowGet = nullptr; + mpWindowDemo = nullptr; + mpAutoExplain = nullptr; + mpAutoCaption = nullptr; + mpCurrentSubtype = nullptr; + + mTextOptionSelection = 0; + mSpecialFiMenuValue = 7; + + field_0x1220 = 0; + + field_0x80C = 0; + field_0x80D = 0; + field_0x80E = 0; + mShowAutoMessage = 0; + field_0x810 = 0; + + field_0x774 = 0; + field_0x778 = 0; + field_0x77C = 0; + field_0x780 = 0; + field_0x784 = -1; + + mAlsoEntryPointToTrigger = 0xFFFF; + mEntryPointToTrigger = 0xFFFF; + + mName = ""; + + field_0x811 = 0; + field_0x812 = 0; + field_0x813 = 0; + field_0x814 = 0; + field_0x815 = 0; + field_0x816 = 0; + field_0x817 = 0; + field_0x818 = 0; + field_0x819 = 0; + field_0x81B = 0; + field_0x81A = 0; + field_0x81C = 0; + field_0x81D = 0; + + field_0x824 = nullptr; + field_0x820 = 0; + + field_0x81E = 0; + + field_0x828 = 0; + + mStateMgr.changeState(StateID_Invisible); + + return true; +} + + +bool dLytMsgWindow_c::remove() { + delete mpMsgWindowUnk; + mpMsgWindowUnk = nullptr; + delete mpTagProcessor; + mpTagProcessor = nullptr; + mSelectBtn.remove(); + removeAllWindowSubtypes(); + field_0x824 = 0; + mResAcc1.detach(); + mResAcc2.detach(); + return true; +} + +void dLytMsgWindow_c::initializeState_Invisible() {} +void dLytMsgWindow_c::executeState_Invisible() {} +void dLytMsgWindow_c::finalizeState_Invisible() {} + +void dLytMsgWindow_c::initializeState_In() {} +void dLytMsgWindow_c::executeState_In() {} +void dLytMsgWindow_c::finalizeState_In() {} + +void dLytMsgWindow_c::initializeState_OutputText() {} +void dLytMsgWindow_c::executeState_OutputText() {} +void dLytMsgWindow_c::finalizeState_OutputText() {} + +void dLytMsgWindow_c::initializeState_WaitKeyChangePage0() {} +void dLytMsgWindow_c::executeState_WaitKeyChangePage0() {} +void dLytMsgWindow_c::finalizeState_WaitKeyChangePage0() {} + +void dLytMsgWindow_c::initializeState_WaitKeyChangePage1() {} +void dLytMsgWindow_c::executeState_WaitKeyChangePage1() {} +void dLytMsgWindow_c::finalizeState_WaitKeyChangePage1() {} + +void dLytMsgWindow_c::initializeState_WaitKeyMsgEnd0() {} +void dLytMsgWindow_c::executeState_WaitKeyMsgEnd0() {} +void dLytMsgWindow_c::finalizeState_WaitKeyMsgEnd0() {} + +void dLytMsgWindow_c::initializeState_WaitKeyMsgEnd1() {} +void dLytMsgWindow_c::executeState_WaitKeyMsgEnd1() {} +void dLytMsgWindow_c::finalizeState_WaitKeyMsgEnd1() {} + +void dLytMsgWindow_c::initializeState_WaitKeyMsgEnd2() {} +void dLytMsgWindow_c::executeState_WaitKeyMsgEnd2() {} +void dLytMsgWindow_c::finalizeState_WaitKeyMsgEnd2() {} + +void dLytMsgWindow_c::initializeState_WaitKeySelectQuestion() {} +void dLytMsgWindow_c::executeState_WaitKeySelectQuestion() {} +void dLytMsgWindow_c::finalizeState_WaitKeySelectQuestion() {} + +void dLytMsgWindow_c::initializeState_MapOpen() {} +void dLytMsgWindow_c::executeState_MapOpen() {} +void dLytMsgWindow_c::finalizeState_MapOpen() {} + +void dLytMsgWindow_c::initializeState_WaitKeyMapClose() {} +void dLytMsgWindow_c::executeState_WaitKeyMapClose() {} +void dLytMsgWindow_c::finalizeState_WaitKeyMapClose() {} + +void dLytMsgWindow_c::initializeState_MapClose() {} +void dLytMsgWindow_c::executeState_MapClose() {} +void dLytMsgWindow_c::finalizeState_MapClose() {} + +void dLytMsgWindow_c::initializeState_Out() {} +void dLytMsgWindow_c::executeState_Out() {} +void dLytMsgWindow_c::finalizeState_Out() {} + +void dLytMsgWindow_c::initializeState_ExplainIn() {} +void dLytMsgWindow_c::executeState_ExplainIn() {} +void dLytMsgWindow_c::finalizeState_ExplainIn() {} + +void dLytMsgWindow_c::initializeState_ExplainVisible() {} +void dLytMsgWindow_c::executeState_ExplainVisible() {} +void dLytMsgWindow_c::finalizeState_ExplainVisible() {} + +void dLytMsgWindow_c::initializeState_ExplainOut() {} +void dLytMsgWindow_c::executeState_ExplainOut() {} +void dLytMsgWindow_c::finalizeState_ExplainOut() {} + +void dLytMsgWindow_c::initializeState_DemoIn() {} +void dLytMsgWindow_c::executeState_DemoIn() {} +void dLytMsgWindow_c::finalizeState_DemoIn() {} + +void dLytMsgWindow_c::initializeState_DemoVisible() {} +void dLytMsgWindow_c::executeState_DemoVisible() {} +void dLytMsgWindow_c::finalizeState_DemoVisible() {} + +void dLytMsgWindow_c::initializeState_DemoOut() {} +void dLytMsgWindow_c::executeState_DemoOut() {} +void dLytMsgWindow_c::finalizeState_DemoOut() {} diff --git a/src/d/lyt/msg_window/d_lyt_msg_window_select_btn.cpp b/src/d/lyt/msg_window/d_lyt_msg_window_select_btn.cpp index fc846d23..3f9a1218 100644 --- a/src/d/lyt/msg_window/d_lyt_msg_window_select_btn.cpp +++ b/src/d/lyt/msg_window/d_lyt_msg_window_select_btn.cpp @@ -39,9 +39,6 @@ SelectBtnHelper::SelectBtnHelper() { } SelectBtnHelper::~SelectBtnHelper() {} -// STATE_DEFINE\(([A-Za-z_0-9]+), ([A-Za-z_0-9]+)\); -// void $1::initializeState_$2() {}\nvoid $1::executeState_$2() {}\nvoid $1::finalizeState_$2() {}\n - void dLytMsgWindowSelectBtnParts_c::initializeState_Wait() {} void dLytMsgWindowSelectBtnParts_c::executeState_Wait() { if (field_0x48 != 0) {