From 5fc12fec4794cbba49594ec70af9e11ee774585a Mon Sep 17 00:00:00 2001 From: swekka Date: Wed, 27 Aug 2025 18:02:29 +0200 Subject: [PATCH] d_a_invisible OK --- .../SOUE01/rels/d_a_invisibleNP/symbols.txt | 26 +++++++-------- configure.py | 2 +- include/d/a/d_a_invisible.h | 14 ++++++-- src/REL/d/a/d_a_invisible.cpp | 32 +++++++++++++++++++ 4 files changed, 58 insertions(+), 16 deletions(-) diff --git a/config/SOUE01/rels/d_a_invisibleNP/symbols.txt b/config/SOUE01/rels/d_a_invisibleNP/symbols.txt index 8723a951..df8b6f18 100644 --- a/config/SOUE01/rels/d_a_invisibleNP/symbols.txt +++ b/config/SOUE01/rels/d_a_invisibleNP/symbols.txt @@ -8,12 +8,12 @@ __dt__25sFState_c<12dAcInvisible>Fv = .text:0x000001C0; // type:function size:0x __dt__28sFStateFct_c<12dAcInvisible>Fv = .text:0x00000220; // type:function size:0x6C __dt__81sStateMgr_c<12dAcInvisible,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000290; // type:function size:0xA0 __dt__51sFStateMgr_c<12dAcInvisible,20sStateMethodUsr_FI_c>Fv = .text:0x00000330; // type:function size:0xA4 -fn_244_3E0 = .text:0x000003E0; // type:function size:0xE4 +create__12dAcInvisibleFv = .text:0x000003E0; // type:function size:0xE4 changeState__81sStateMgr_c<12dAcInvisible,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x000004D0; // type:function size:0x10 -fn_244_4E0 = .text:0x000004E0; // type:function size:0x8 -fn_244_4F0 = .text:0x000004F0; // type:function size:0x50 +doDelete__12dAcInvisibleFv = .text:0x000004E0; // type:function size:0x8 +actorExecute__12dAcInvisibleFv = .text:0x000004F0; // type:function size:0x50 executeState__81sStateMgr_c<12dAcInvisible,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000540; // type:function size:0x10 -fn_244_550 = .text:0x00000550; // type:function size:0x8 +draw__12dAcInvisibleFv = .text:0x00000550; // type:function size:0x8 initializeState_Wait__12dAcInvisibleFv = .text:0x00000560; // type:function size:0x4 executeState_Wait__12dAcInvisibleFv = .text:0x00000570; // type:function size:0x4 finalizeState_Wait__12dAcInvisibleFv = .text:0x00000580; // type:function size:0x4 @@ -39,14 +39,14 @@ isSameName__27sFStateID_c<12dAcInvisible>CFPCc = .text:0x000009C0; // type:funct _ctors = .ctors:0x00000000; // type:label scope:global _dtors = .dtors:0x00000000; // type:label scope:global __destroy_global_chain_reference = .dtors:0x00000000; // type:object size:0x4 scope:global -lbl_244_rodata_0 = .rodata:0x00000000; // type:object size:0x14 data:float +lbl_244_rodata_0 = .rodata:0x00000000; // type:object size:0x14 scope:local data:float g_profile_INVISIBLE = .data:0x00000000; // type:object size:0x10 data:4byte -lbl_244_data_10 = .data:0x00000010; // type:object size:0x80 -lbl_244_data_90 = .data:0x00000090; // type:object size:0x30 -lbl_244_data_C0 = .data:0x000000C0; // type:object size:0x30 -lbl_244_data_F0 = .data:0x000000F0; // type:object size:0x18 -lbl_244_data_108 = .data:0x00000108; // type:object size:0x58 -lbl_244_data_160 = .data:0x00000160; // type:object size:0x34 +__vt__12dAcInvisible = .data:0x00000010; // type:object size:0x80 +__vt__51sFStateMgr_c<12dAcInvisible,20sStateMethodUsr_FI_c> = .data:0x00000090; // type:object size:0x30 +__vt__81sStateMgr_c<12dAcInvisible,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x000000C0; // type:object size:0x30 +lbl_244_data_F0 = .data:0x000000F0; // type:object size:0x18 scope:local +lbl_244_data_108 = .data:0x00000108; // type:object size:0x58 scope:local +__vt__27sFStateID_c<12dAcInvisible> = .data:0x00000160; // type:object size:0x34 __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global -lbl_244_bss_8 = .bss:0x00000008; // type:object size:0x10 -lbl_244_bss_18 = .bss:0x00000018; // type:object size:0x30 data:4byte +lbl_244_bss_8 = .bss:0x00000008; // type:object size:0x10 scope:local +lbl_244_bss_18 = .bss:0x00000018; // type:object size:0x30 scope:local data:4byte diff --git a/configure.py b/configure.py index d2aca699..dbd53c4e 100644 --- a/configure.py +++ b/configure.py @@ -2092,7 +2092,7 @@ config.libs = [ Rel(NonMatching, "d_a_insect_grasshopper", "REL/d/a/d_a_insect_grasshopper.cpp"), Rel(NonMatching, "d_a_insect_ladybug", "REL/d/a/d_a_insect_ladybug.cpp"), Rel(NonMatching, "d_a_insect_scarab", "REL/d/a/d_a_insect_scarab.cpp"), - Rel(NonMatching, "d_a_invisible", "REL/d/a/d_a_invisible.cpp"), + Rel(Matching, "d_a_invisible", "REL/d/a/d_a_invisible.cpp"), Rel(NonMatching, "d_a_kanban", "REL/d/a/d_a_kanban.cpp"), Rel(NonMatching, "d_a_knight_leader_bird", "REL/d/a/d_a_knight_leader_bird.cpp"), Rel(NonMatching, "d_a_little_bird", "REL/d/a/d_a_little_bird.cpp"), diff --git a/include/d/a/d_a_invisible.h b/include/d/a/d_a_invisible.h index 4311a604..b29c0b47 100644 --- a/include/d/a/d_a_invisible.h +++ b/include/d/a/d_a_invisible.h @@ -2,18 +2,28 @@ #define D_A_INVISIBLE_H #include "d/a/obj/d_a_obj_base.h" +#include "d/col/bg/d_bg_s_acch.h" +#include "d/col/cc/d_cc_d.h" #include "s/s_State.hpp" -#include "s/s_StateMgr.hpp" class dAcInvisible : public dAcObjBase_c { public: dAcInvisible() : mStateMgr(*this, sStateID::null) {} virtual ~dAcInvisible() {} + virtual int create() override; + virtual int doDelete() override; + virtual int actorExecute() override; + virtual int draw() override; + STATE_FUNC_DECLARE(dAcInvisible, Wait); private: - /* 0x??? */ STATE_MGR_DECLARE(dAcInvisible); + /* 0x330 */ dCcD_Sph mSph; + /* 0x480 */ dCcD_Cps mCps; + /* 0x5F0 */ dBgS_AcchCir mAcchCir; + /* 0x64C */ dBgS_ObjAcch mObjAcch; + /* 0x9FC */ STATE_MGR_DECLARE(dAcInvisible); }; #endif diff --git a/src/REL/d/a/d_a_invisible.cpp b/src/REL/d/a/d_a_invisible.cpp index 8aa5e0cf..3905f488 100644 --- a/src/REL/d/a/d_a_invisible.cpp +++ b/src/REL/d/a/d_a_invisible.cpp @@ -1,9 +1,41 @@ #include "d/a/d_a_invisible.h" +#include "d/col/bg/d_bg_s.h" +#include "f/f_base.h" +#include "m/m_vec.h" + SPECIAL_ACTOR_PROFILE(INVISIBLE, dAcInvisible, fProfile::INVISIBLE, 0x11D, 0, 0); STATE_DEFINE(dAcInvisible, Wait); +int dAcInvisible::create() { + mObjAcch.Set(this, 1, &mAcchCir); + mObjAcch.mFlags |= 0x408; + mAcchCir.SetWall(15.0f, 120.0f); + mStts.mRank = 9; + mSph.mStts = &mStts; + mCps.mStts = &mStts; + forwardAccel = 0.0; + forwardMaxSpeed = -40.0f; + mStateMgr.changeState(StateID_Wait); + boundingBox.Set(mVec3_c(-0.0f, -0.0f, -0.0f), mVec3_c(0.0f, 0.0f, 0.0f)); + return SUCCEEDED; +} + +int dAcInvisible::doDelete() { + return SUCCEEDED; +} + +int dAcInvisible::actorExecute() { + mStateMgr.executeState(); + mObjAcch.CrrPos(*dBgS::GetInstance()); + return SUCCEEDED; +} + +int dAcInvisible::draw() { + return SUCCEEDED; +} + void dAcInvisible::initializeState_Wait() {} void dAcInvisible::executeState_Wait() {} void dAcInvisible::finalizeState_Wait() {}