From ba4a58df2304d74b38a74b44ab53394f8d8fcfb8 Mon Sep 17 00:00:00 2001 From: robojumper Date: Tue, 15 Apr 2025 00:32:30 +0200 Subject: [PATCH] d_lyt_meter_nunchaku_bg OK --- config/SOUE01/symbols.txt | 36 ++++++++++----------- configure.py | 2 +- include/d/lyt/meter/d_lyt_meter.h | 10 ++++-- include/d/lyt/meter/d_lyt_meter_dowsing.h | 4 +++ src/d/lyt/meter/d_lyt_meter_nunchaku_bg.cpp | 23 ++++++++++++- 5 files changed, 53 insertions(+), 22 deletions(-) diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt index 5fa272cb..5440f789 100644 --- a/config/SOUE01/symbols.txt +++ b/config/SOUE01/symbols.txt @@ -31362,20 +31362,20 @@ lbl_80514D60 = .data:0x80514D60; // type:object size:0xF data:string lbl_80514D70 = .data:0x80514D70; // type:object size:0x13 data:string __vt__20dLytMeterRemoconBg_c = .data:0x80514D84; // type:object size:0x34 __vt__35sFStateID_c<20dLytMeterRemoconBg_c> = .data:0x80514EDC; // type:object size:0x34 -lbl_80514F10 = .data:0x80514F10; // type:object size:0x18 -lbl_80514F28 = .data:0x80514F28; // type:object size:0xC -lbl_80514F34 = .data:0x80514F34; // type:object size:0x1C +lbl_80514F10 = .data:0x80514F10; // type:object size:0x15 data:string +lbl_80514F28 = .data:0x80514F28; // type:object size:0xB data:string +lbl_80514F34 = .data:0x80514F34; // type:object size:0x16 data:string lbl_80514F50 = .data:0x80514F50; // type:object size:0x10 data:string lbl_80514F60 = .data:0x80514F60; // type:object size:0x14 data:string -lbl_80514F74 = .data:0x80514F74; // type:object size:0xC -lbl_80514F80 = .data:0x80514F80; // type:object size:0xC -lbl_80514F8C = .data:0x80514F8C; // type:object size:0x10 -lbl_80514F9C = .data:0x80514F9C; // type:object size:0x10 -lbl_80514FAC = .data:0x80514FAC; // type:object size:0xC -lbl_80514FB8 = .data:0x80514FB8; // type:object size:0x10 -lbl_80514FC8 = .data:0x80514FC8; // type:object size:0x10 -lbl_80514FD8 = .data:0x80514FD8; // type:object size:0x10 -__vt__21dLytMeterNunchakuBg_c = .data:0x80514FE8; // type:object size:0x158 +lbl_80514F74 = .data:0x80514F74; // type:object size:0xA data:string +lbl_80514F80 = .data:0x80514F80; // type:object size:0xB data:string +lbl_80514F8C = .data:0x80514F8C; // type:object size:0xE data:string +lbl_80514F9C = .data:0x80514F9C; // type:object size:0xF data:string +lbl_80514FAC = .data:0x80514FAC; // type:object size:0x9 data:string +lbl_80514FB8 = .data:0x80514FB8; // type:object size:0xF data:string +lbl_80514FC8 = .data:0x80514FC8; // type:object size:0xE data:string +lbl_80514FD8 = .data:0x80514FD8; // type:object size:0xD data:string +__vt__21dLytMeterNunchakuBg_c = .data:0x80514FE8; // type:object size:0x34 __vt__36sFStateID_c<21dLytMeterNunchakuBg_c> = .data:0x80515140; // type:object size:0x34 lbl_80515178 = .data:0x80515178; // type:object size:0x16 data:string lbl_80515190 = .data:0x80515190; // type:object size:0xB data:string @@ -38134,9 +38134,9 @@ lbl_805723A0 = .sdata:0x805723A0; // type:object size:0x8 data:4byte lbl_805723A8 = .sdata:0x805723A8; // type:object size:0x4 data:4byte lbl_805723AC = .sdata:0x805723AC; // type:object size:0x5 data:string lbl_805723B8 = .sdata:0x805723B8; // type:object size:0x4 data:4byte -lbl_805723C0 = .sdata:0x805723C0; // type:object size:0x8 data:4byte +lbl_805723C0 = .sdata:0x805723C0; // type:object size:0x4 data:4byte lbl_805723C8 = .sdata:0x805723C8; // type:object size:0x8 data:4byte -lbl_805723D0 = .sdata:0x805723D0; // type:object size:0x8 data:4byte +lbl_805723D0 = .sdata:0x805723D0; // type:object size:0x4 data:4byte lbl_805723D8 = .sdata:0x805723D8; // type:object size:0x4 data:4byte lbl_805723E0 = .sdata:0x805723E0; // type:object size:0x8 data:4byte lbl_805723E8 = .sdata:0x805723E8; // type:object size:0x4 data:4byte @@ -48663,10 +48663,10 @@ StateID_Move__16dLytMeterDrink_c = .bss:0x805AA960; // type:object size:0x30 dat StateID_Out__16dLytMeterDrink_c = .bss:0x805AA9A0; // type:object size:0x30 data:4byte lbl_805AA9D0 = .bss:0x805AA9D0; // type:object size:0xC LytMeterRemoconBg__STATE_WAIT = .bss:0x805AA9E0; // type:object size:0x30 data:4byte -lbl_805AAAD0 = .bss:0x805AAAD0; // type:object size:0x10 -LytMeterNunchakuBg__STATE_WAIT = .bss:0x805AAAE0; // type:object size:0x40 data:4byte -LytMeterNunchakuBg__STATE_ON = .bss:0x805AAB20; // type:object size:0x40 data:4byte -LytMeterNunchakuBg__STATE_ACTIVE = .bss:0x805AAB60; // type:object size:0x40 data:4byte +lbl_805AAAD0 = .bss:0x805AAAD0; // type:object size:0xC +LytMeterNunchakuBg__STATE_WAIT = .bss:0x805AAAE0; // type:object size:0x30 data:4byte +LytMeterNunchakuBg__STATE_ON = .bss:0x805AAB20; // type:object size:0x30 data:4byte +LytMeterNunchakuBg__STATE_ACTIVE = .bss:0x805AAB60; // type:object size:0x30 data:4byte LytMeterNunchakuBg__STATE_OFF = .bss:0x805AABA0; // type:object size:0x30 data:4byte lbl_805AABD0 = .bss:0x805AABD0; // type:object size:0xC LytMeterNunStk__STATE_WAIT = .bss:0x805AABE0; // type:object size:0x30 data:4byte diff --git a/configure.py b/configure.py index f90c5889..1815c918 100644 --- a/configure.py +++ b/configure.py @@ -391,7 +391,7 @@ config.libs = [ Object(NonMatching, "d/lyt/meter/d_lyt_meter_key.cpp"), Object(Matching, "d/lyt/meter/d_lyt_meter_drink.cpp"), Object(Matching, "d/lyt/meter/d_lyt_meter_remocon_bg.cpp"), - Object(NonMatching, "d/lyt/meter/d_lyt_meter_nunchaku_bg.cpp"), + Object(Matching, "d/lyt/meter/d_lyt_meter_nunchaku_bg.cpp"), Object(Matching, "d/lyt/meter/d_lyt_meter_nun_stk.cpp"), Object(Matching, "d/lyt/meter/d_lyt_meter_item_select.cpp"), Object(Matching, "d/lyt/meter/d_lyt_meter_plus_btn.cpp"), diff --git a/include/d/lyt/meter/d_lyt_meter.h b/include/d/lyt/meter/d_lyt_meter.h index 4880a21c..126ee7da 100644 --- a/include/d/lyt/meter/d_lyt_meter.h +++ b/include/d/lyt/meter/d_lyt_meter.h @@ -43,7 +43,7 @@ public: bool build(d2d::ResAccIf_c *resAcc); bool remove(); bool draw(); - + bool fn_800D5380(u8); bool fn_800D5650(); bool fn_800D5680(); @@ -218,7 +218,13 @@ public: } } - + static u8 getDowsing0x550A() { + if (sInstance != nullptr) { + return sInstance->mMeter.mDowsing.getField_0x550A(); + } else { + return 0; + } + } private: /* 0x00004 */ d2d::ResAccIf_c mResAcc; diff --git a/include/d/lyt/meter/d_lyt_meter_dowsing.h b/include/d/lyt/meter/d_lyt_meter_dowsing.h index 91f2a351..ea0493d6 100644 --- a/include/d/lyt/meter/d_lyt_meter_dowsing.h +++ b/include/d/lyt/meter/d_lyt_meter_dowsing.h @@ -152,6 +152,10 @@ public: bool fn_800FE4B0() const; bool fn_800FE610(); + u8 getField_0x550A() const { + return field_0x550A; + } + private: void setItemName(s32 id); void setMessage(s32 id); diff --git a/src/d/lyt/meter/d_lyt_meter_nunchaku_bg.cpp b/src/d/lyt/meter/d_lyt_meter_nunchaku_bg.cpp index e2b46ab1..8c225929 100644 --- a/src/d/lyt/meter/d_lyt_meter_nunchaku_bg.cpp +++ b/src/d/lyt/meter/d_lyt_meter_nunchaku_bg.cpp @@ -204,7 +204,28 @@ bool dLytMeterNunchakuBg_c::execute() { field_0x1B4 = LytDoButtonRelated::get(LytDoButtonRelated::DO_BUTTON_NUN_BG); field_0x1B8 = LytDoButtonRelated::getHas(LytDoButtonRelated::DO_BUTTON_NUN_BG); - bool hasZ = LytDoButtonRelated::getHas(LytDoButtonRelated::DO_BUTTON_Z); + bool hasNunStk = LytDoButtonRelated::getHas(LytDoButtonRelated::DO_BUTTON_NUN_STK); + u8 val = dLytMeterContainer_c::getDowsing0x550A(); + if (hasNunStk != field_0x1C5 || val != field_0x1C6) { + field_0x1C5 = hasNunStk; + field_0x1C6 = val; + + if (hasNunStk) { + mAnm[NUN_BG_ANIM_ARROWV].setFrame(1.0f); + mAnm[NUN_BG_ANIM_ARROWV].setAnimEnable(true); + dLytMeterContainer_c::GetMeter()->getNunStk()->getBgPane()->SetVisible(true); + } else { + if (val) { + mAnm[NUN_BG_ANIM_ARROWV].setFrame(1.0f); + mAnm[NUN_BG_ANIM_ARROWV].setAnimEnable(true); + } else { + mAnm[NUN_BG_ANIM_ARROWV].setFrame(0.0f); + mAnm[NUN_BG_ANIM_ARROWV].setAnimEnable(true); + setMessage(field_0x1B4); + } + dLytMeterContainer_c::GetMeter()->getNunStk()->getBgPane()->SetVisible(false); + } + } mStateMgr.executeState(); for (int i = 0; i < NUN_BG_NUM_ANIMS; i++) {