From ca8d58a59caf96ca7c799a5bb07aee3a0b6aee7a Mon Sep 17 00:00:00 2001 From: robojumper Date: Sun, 20 Apr 2025 14:36:31 +0200 Subject: [PATCH] d_lyt_{auto_caption, area_explain} OK --- config/SOUE01/symbols.txt | 44 ++++++++++----------- configure.py | 4 +- include/d/lyt/meter/d_lyt_meter.h | 16 ++++++++ include/d/lyt/meter/d_lyt_meter_minus_btn.h | 2 +- src/d/lyt/d_lyt_auto_caption.cpp | 9 ++++- src/d/lyt/d_lyt_auto_explain.cpp | 10 ++++- 6 files changed, 58 insertions(+), 27 deletions(-) diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt index d9709f1e..ae0f47fb 100644 --- a/config/SOUE01/symbols.txt +++ b/config/SOUE01/symbols.txt @@ -7444,7 +7444,7 @@ isDoneClosing__17dLytAutoCaption_cCFv = .text:0x8012BF70; // type:function size: setText__17dLytAutoCaption_cFPCw = .text:0x8012BFC0; // type:function size:0x64 checkSomethingMeter__17dLytAutoCaption_cFv = .text:0x8012C030; // type:function size:0xF4 getTextBox__17dLytAutoCaption_cFv = .text:0x8012C130; // type:function size:0x8 -__sinit_\d_lyt_auto_caption_cpp = .text:0x8012C140; // type:function size:0x338 +__sinit_\d_lyt_auto_caption_cpp = .text:0x8012C140; // type:function size:0x338 scope:local __dt__32sFStateID_c<17dLytAutoCaption_c>Fv = .text:0x8012C480; // type:function size:0x58 isSameName__32sFStateID_c<17dLytAutoCaption_c>CFPCc = .text:0x8012C4E0; // type:function size:0x88 initializeState_Invisible__17dLytAutoExplain_cFv = .text:0x8012C570; // type:function size:0x4 @@ -7470,7 +7470,7 @@ isDoneClosing__17dLytAutoExplain_cCFv = .text:0x8012CB80; // type:function size: setText__17dLytAutoExplain_cFPCw = .text:0x8012CBD0; // type:function size:0x7C checkSomethingMeter__17dLytAutoExplain_cFv = .text:0x8012CC50; // type:function size:0xF4 getTextBox__17dLytAutoExplain_cFv = .text:0x8012CD50; // type:function size:0x8 -__sinit_\d_lyt_auto_explain_cpp = .text:0x8012CD60; // type:function size:0x338 +__sinit_\d_lyt_auto_explain_cpp = .text:0x8012CD60; // type:function size:0x338 scope:local __dt__32sFStateID_c<17dLytAutoExplain_c>Fv = .text:0x8012D0A0; // type:function size:0x58 isSameName__32sFStateID_c<17dLytAutoExplain_c>CFPCc = .text:0x8012D100; // type:function size:0x88 fn_8012D190 = .text:0x8012D190; // type:function size:0x68 @@ -32308,27 +32308,27 @@ lbl_8051E2FC = .data:0x8051E2FC; // type:object size:0x3C lbl_8051E338 = .data:0x8051E338; // type:object size:0x1D8 lbl_8051E510 = .data:0x8051E510; // type:object size:0x38 lbl_8051E548 = .data:0x8051E548; // type:object size:0x18 data:string -lbl_8051E560 = .data:0x8051E560; // type:object size:0xC -lbl_8051E56C = .data:0x8051E56C; // type:object size:0x1C -lbl_8051E588 = .data:0x8051E588; // type:object size:0x1C -lbl_8051E5A4 = .data:0x8051E5A4; // type:object size:0xC -lbl_8051E5B0 = .data:0x8051E5B0; // type:object size:0x20 -lbl_8051E5D0 = .data:0x8051E5D0; // type:object size:0x10 -lbl_8051E5E0 = .data:0x8051E5E0; // type:object size:0x10 -lbl_8051E5F0 = .data:0x8051E5F0; // type:object size:0x10 -lbl_8051E600 = .data:0x8051E600; // type:object size:0x10 -lbl_8051E610 = .data:0x8051E610; // type:object size:0x18 +lbl_8051E560 = .data:0x8051E560; // type:object size:0xB data:string +lbl_8051E56C = .data:0x8051E56C; // type:object size:0x19 data:string +lbl_8051E588 = .data:0x8051E588; // type:object size:0x1A data:string +lbl_8051E5A4 = .data:0x8051E5A4; // type:object size:0xA data:string +lbl_8051E5B0 = .data:0x8051E5B0; // type:object size:0x1E data:string +lbl_8051E5D0 = .data:0x8051E5D0; // type:object size:0xE data:string +lbl_8051E5E0 = .data:0x8051E5E0; // type:object size:0xE data:string +lbl_8051E5F0 = .data:0x8051E5F0; // type:object size:0xD data:string +lbl_8051E600 = .data:0x8051E600; // type:object size:0xE data:string +lbl_8051E610 = .data:0x8051E610; // type:object size:0x15 data:string __vt__17dLytAutoCaption_c = .data:0x8051E628; // type:object size:0x44 __vt__32sFStateID_c<17dLytAutoCaption_c> = .data:0x8051E78C; // type:object size:0x34 lbl_8051E7C0 = .data:0x8051E7C0; // type:object size:0x18 data:string -lbl_8051E7D8 = .data:0x8051E7D8; // type:object size:0xC -lbl_8051E7E4 = .data:0x8051E7E4; // type:object size:0x1C -lbl_8051E800 = .data:0x8051E800; // type:object size:0x1C -lbl_8051E81C = .data:0x8051E81C; // type:object size:0xC -lbl_8051E828 = .data:0x8051E828; // type:object size:0x10 -lbl_8051E838 = .data:0x8051E838; // type:object size:0x10 -lbl_8051E848 = .data:0x8051E848; // type:object size:0x10 -lbl_8051E858 = .data:0x8051E858; // type:object size:0x18 +lbl_8051E7D8 = .data:0x8051E7D8; // type:object size:0xB data:string +lbl_8051E7E4 = .data:0x8051E7E4; // type:object size:0x19 data:string +lbl_8051E800 = .data:0x8051E800; // type:object size:0x1A data:string +lbl_8051E81C = .data:0x8051E81C; // type:object size:0xA data:string +lbl_8051E828 = .data:0x8051E828; // type:object size:0xE data:string +lbl_8051E838 = .data:0x8051E838; // type:object size:0xD data:string +lbl_8051E848 = .data:0x8051E848; // type:object size:0xE data:string +lbl_8051E858 = .data:0x8051E858; // type:object size:0x15 data:string __vt__17dLytAutoExplain_c = .data:0x8051E870; // type:object size:0x44 __vt__32sFStateID_c<17dLytAutoExplain_c> = .data:0x8051E9D4; // type:object size:0x34 lbl_8051EA08 = .data:0x8051EA08; // type:object size:0xA0 data:4byte @@ -38217,9 +38217,9 @@ 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 -lbl_80572638 = .sdata:0x80572638; // type:object size:0x8 data:4byte +lbl_80572638 = .sdata:0x80572638; // type:object size:0x4 data:4byte lbl_80572640 = .sdata:0x80572640; // type:object size:0x8 data:4byte -lbl_80572648 = .sdata:0x80572648; // type:object size:0x8 data:4byte +lbl_80572648 = .sdata:0x80572648; // type:object size:0x4 data:4byte lbl_80572650 = .sdata:0x80572650; // type:object size:0x8 data:4byte lbl_80572658 = .sdata:0x80572658; // type:object size:0x4 data:4byte lbl_8057265C = .sdata:0x8057265C; // type:object size:0x4 data:4byte diff --git a/configure.py b/configure.py index f128ced4..c645ce93 100644 --- a/configure.py +++ b/configure.py @@ -420,8 +420,8 @@ config.libs = [ 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/d_lyt_simple_window.cpp"), - Object(NonMatching, "d/lyt/d_lyt_auto_caption.cpp"), - Object(NonMatching, "d/lyt/d_lyt_auto_explain.cpp"), + Object(Matching, "d/lyt/d_lyt_auto_caption.cpp"), + Object(Matching, "d/lyt/d_lyt_auto_explain.cpp"), Object(NonMatching, "d/lyt/d_lyt_map_capture.cpp"), Object(NonMatching, "d/lyt/d_lyt_map.cpp"), Object(Matching, "d/lyt/d_lyt_note.cpp"), diff --git a/include/d/lyt/meter/d_lyt_meter.h b/include/d/lyt/meter/d_lyt_meter.h index 102157a0..32510333 100644 --- a/include/d/lyt/meter/d_lyt_meter.h +++ b/include/d/lyt/meter/d_lyt_meter.h @@ -397,6 +397,22 @@ public: } } + static bool getMinusBtnFn800F7600() { + if (sInstance != nullptr) { + return sInstance->mMeter.mMinusBtn.fn_800F7600(); + } else { + return false; + } + } + + static bool getDowsingFn800FE4B0() { + if (sInstance != nullptr) { + return sInstance->mMeter.mDowsing.fn_800FE4B0(); + } else { + return false; + } + } + private: /* 0x00004 */ d2d::ResAccIf_c mResAcc; /* 0x00374 */ dLytMeterEventSkip_c *mpEventSkip; diff --git a/include/d/lyt/meter/d_lyt_meter_minus_btn.h b/include/d/lyt/meter/d_lyt_meter_minus_btn.h index 5bc90743..7478aea3 100644 --- a/include/d/lyt/meter/d_lyt_meter_minus_btn.h +++ b/include/d/lyt/meter/d_lyt_meter_minus_btn.h @@ -131,11 +131,11 @@ public: } bool fn_800F75E0() const; + bool fn_800F7600() const; private: bool shouldCall() const; void fn_800F7300(); - bool fn_800F7600() const; bool fn_800F7760() const; void realizeShieldDurability(); bool isUnequippable(s32 num) const; diff --git a/src/d/lyt/d_lyt_auto_caption.cpp b/src/d/lyt/d_lyt_auto_caption.cpp index 12b89a55..2bdf0dbd 100644 --- a/src/d/lyt/d_lyt_auto_caption.cpp +++ b/src/d/lyt/d_lyt_auto_caption.cpp @@ -3,8 +3,11 @@ #include "common.h" #include "d/d_tag_processor.h" #include "d/lyt/d2d.h" +#include "d/lyt/d_lyt_control_game.h" #include "d/lyt/d_textbox.h" +#include "d/lyt/meter/d_lyt_meter.h" #include "s/s_State.hpp" +#include "toBeSorted/event_manager.h" STATE_DEFINE(dLytAutoCaption_c, Invisible); STATE_DEFINE(dLytAutoCaption_c, In); @@ -171,6 +174,10 @@ bool dLytAutoCaption_c::setText(const wchar_t *text) { } bool dLytAutoCaption_c::checkSomethingMeter() { - // TODO - too many dependencies on dLytMeter + if (EventManager::isInEvent() || !dLytControlGame_c::getInstance()->isStateNormal() || + dLytMeterContainer_c::getItemSelect0x75A2() || dLytMeterContainer_c::getMinusBtnFn800F7600() || + dLytMeterContainer_c::getDowsingFn800FE4B0()) { + return true; + } return false; } diff --git a/src/d/lyt/d_lyt_auto_explain.cpp b/src/d/lyt/d_lyt_auto_explain.cpp index 6b1e3e4b..69cfba74 100644 --- a/src/d/lyt/d_lyt_auto_explain.cpp +++ b/src/d/lyt/d_lyt_auto_explain.cpp @@ -3,8 +3,11 @@ #include "common.h" #include "d/d_tag_processor.h" #include "d/lyt/d2d.h" +#include "d/lyt/d_lyt_control_game.h" #include "d/lyt/d_textbox.h" +#include "d/lyt/meter/d_lyt_meter.h" #include "s/s_State.hpp" +#include "toBeSorted/event_manager.h" STATE_DEFINE(dLytAutoExplain_c, Invisible); STATE_DEFINE(dLytAutoExplain_c, In); @@ -164,6 +167,11 @@ bool dLytAutoExplain_c::setText(const wchar_t *text) { } bool dLytAutoExplain_c::checkSomethingMeter() { - // TODO - too many dependencies on dLytMeter + if (EventManager::isInEvent() || !dLytControlGame_c::getInstance()->isStateNormal() || + dLytMeterContainer_c::getItemSelect0x75A2() || dLytMeterContainer_c::getMinusBtnFn800F7600() || + dLytMeterContainer_c::getDowsingFn800FE4B0()) { + return true; + } + return false; }