From 306ae916d55c49ba3c1c1d0367a2af9e1acbc60d Mon Sep 17 00:00:00 2001 From: elijah-thomas774 Date: Sun, 23 Nov 2025 13:55:01 -0500 Subject: [PATCH 1/6] init for d_t_barrel --- .../rels/d_a_obj_stage_sinkNP/symbols.txt | 2 +- config/SOUE01/rels/d_t_barrelNP/symbols.txt | 26 +-- include/d/a/obj/d_a_obj_stage_sink.h | 5 +- include/d/t/d_t_barrel.h | 31 +++- include/d/t/d_t_barrel_pos.h | 14 +- src/REL/d/t/d_t_barrel.cpp | 162 +++++++++++++++++- 6 files changed, 218 insertions(+), 22 deletions(-) diff --git a/config/SOUE01/rels/d_a_obj_stage_sinkNP/symbols.txt b/config/SOUE01/rels/d_a_obj_stage_sinkNP/symbols.txt index 8f334956..61479d7c 100644 --- a/config/SOUE01/rels/d_a_obj_stage_sinkNP/symbols.txt +++ b/config/SOUE01/rels/d_a_obj_stage_sinkNP/symbols.txt @@ -25,7 +25,7 @@ finalizeState_Wait__15dAcOstageSink_cFv = .text:0x00000AA0; // type:function siz initializeState_Move__15dAcOstageSink_cFv = .text:0x00000AB0; // type:function size:0x4 executeState_Move__15dAcOstageSink_cFv = .text:0x00000AC0; // type:function size:0x23C finalizeState_Move__15dAcOstageSink_cFv = .text:0x00000D00; // type:function size:0x4 -fn_383_D10 = .text:0x00000D10; // type:function size:0xC +GetInstance__15dAcOstageSink_cFv = .text:0x00000D10; // type:function size:0xC fn_383_D20 = .text:0x00000D20; // type:function size:0xA0 fn_383_DC0 = .text:0x00000DC0; // type:function size:0x18 __dt__15dAcOstageSink_cFv = .text:0x00000DE0; // type:function size:0x100 diff --git a/config/SOUE01/rels/d_t_barrelNP/symbols.txt b/config/SOUE01/rels/d_t_barrelNP/symbols.txt index a56a2e20..fe6cee1f 100644 --- a/config/SOUE01/rels/d_t_barrelNP/symbols.txt +++ b/config/SOUE01/rels/d_t_barrelNP/symbols.txt @@ -4,31 +4,31 @@ _unresolved = .text:0x00000060; // type:function size:0x4 scope:global __register_global_object = .text:0x00000070; // type:function size:0x1C scope:global __destroy_global_chain = .text:0x00000090; // type:function size:0x54 scope:global dTgBarrel_c_classInit__Fv = .text:0x000000F0; // type:function size:0x100 -__dt__11dTgBarrel_cFv = .text:0x000001F0; // type:function size:0x58 +__dt__5dTg_cFv = .text:0x000001F0; // type:function size:0x58 __dt__24sFState_c<11dTgBarrel_c>Fv = .text:0x00000250; // type:function size:0x58 __dt__27sFStateFct_c<11dTgBarrel_c>Fv = .text:0x000002B0; // type:function size:0x6C __dt__80sStateMgr_c<11dTgBarrel_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000320; // type:function size:0xA0 __dt__50sFStateMgr_c<11dTgBarrel_c,20sStateMethodUsr_FI_c>Fv = .text:0x000003C0; // type:function size:0xA4 -fn_442_470 = .text:0x00000470; // type:function size:0x14 -fn_442_490 = .text:0x00000490; // type:function size:0x58 -fn_442_4F0 = .text:0x000004F0; // type:function size:0x14 -fn_442_510 = .text:0x00000510; // type:function size:0x58 -TgBarrel__init1 = .text:0x00000570; // type:function size:0xC0 +__ct__24dAcRef_c<12dAcOBarrel_c>Fv = .text:0x00000470; // type:function size:0x14 +__dt__24dAcRef_c<12dAcOBarrel_c>Fv = .text:0x00000490; // type:function size:0x58 +__ct__26dAcRef_c<14dTgBarrelPos_c>Fv = .text:0x000004F0; // type:function size:0x14 +__dt__26dAcRef_c<14dTgBarrelPos_c>Fv = .text:0x00000510; // type:function size:0x58 +actorCreate__11dTgBarrel_cFv = .text:0x00000570; // type:function size:0xC0 changeState__80sStateMgr_c<11dTgBarrel_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x00000630; // type:function size:0x10 -TgBarrel__init2 = .text:0x00000640; // type:function size:0x9C -fn_442_6E0 = .text:0x000006E0; // type:function size:0x8 -TgBarrel__update = .text:0x000006F0; // type:function size:0x30 +actorPostCreate__11dTgBarrel_cFv = .text:0x00000640; // type:function size:0x9C +doDelete__11dTgBarrel_cFv = .text:0x000006E0; // type:function size:0x8 +actorExecute__11dTgBarrel_cFv = .text:0x000006F0; // type:function size:0x30 executeState__80sStateMgr_c<11dTgBarrel_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000720; // type:function size:0x10 -fn_442_730 = .text:0x00000730; // type:function size:0x8 +draw__11dTgBarrel_cFv = .text:0x00000730; // type:function size:0x8 initializeState_Wait__11dTgBarrel_cFv = .text:0x00000740; // type:function size:0x4 executeState_Wait__11dTgBarrel_cFv = .text:0x00000750; // type:function size:0x2E0 -fn_442_A30 = .text:0x00000A30; // type:function size:0x1C +calcTimer__4sLibFPUc_Uc = .text:0x00000A30; // type:function size:0x1C finalizeState_Wait__11dTgBarrel_cFv = .text:0x00000A50; // type:function size:0x4 initializeState_Stop__11dTgBarrel_cFv = .text:0x00000A60; // type:function size:0x4 executeState_Stop__11dTgBarrel_cFv = .text:0x00000A70; // type:function size:0x74 finalizeState_Stop__11dTgBarrel_cFv = .text:0x00000AF0; // type:function size:0x4 -fn_442_B00 = .text:0x00000B00; // type:function size:0x21C -fn_442_D20 = .text:0x00000D20; // type:function size:0x108 +checkPlayerPos__11dTgBarrel_cFRC7mVec3_c = .text:0x00000B00; // type:function size:0x21C +__dt__11dTgBarrel_cFv = .text:0x00000D20; // type:function size:0x108 getStateID__80sStateMgr_c<11dTgBarrel_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000E30; // type:function size:0x10 build__27sFStateFct_c<11dTgBarrel_c>FRC12sStateIDIf_c = .text:0x00000E40; // type:function size:0x60 dispose__27sFStateFct_c<11dTgBarrel_c>FRP10sStateIf_c = .text:0x00000EA0; // type:function size:0xC diff --git a/include/d/a/obj/d_a_obj_stage_sink.h b/include/d/a/obj/d_a_obj_stage_sink.h index c8da109e..7a0340b4 100644 --- a/include/d/a/obj/d_a_obj_stage_sink.h +++ b/include/d/a/obj/d_a_obj_stage_sink.h @@ -3,7 +3,6 @@ #include "d/a/obj/d_a_obj_base.h" #include "s/s_State.hpp" -#include "s/s_StateMgr.hpp" class dAcOstageSink_c : public dAcObjBase_c { public: @@ -13,8 +12,12 @@ public: STATE_FUNC_DECLARE(dAcOstageSink_c, Wait); STATE_FUNC_DECLARE(dAcOstageSink_c, Move); + static dAcOstageSink_c *GetInstance(); + private: /* 0x??? */ STATE_MGR_DECLARE(dAcOstageSink_c); + + static dAcOstageSink_c *sInstance; }; #endif diff --git a/include/d/t/d_t_barrel.h b/include/d/t/d_t_barrel.h index a1255eb4..b122a196 100644 --- a/include/d/t/d_t_barrel.h +++ b/include/d/t/d_t_barrel.h @@ -1,20 +1,45 @@ #ifndef D_T_BARREL_H #define D_T_BARREL_H +#include "common.h" #include "d/a/d_a_base.h" +#include "d/t/d_tg.h" +#include "m/m_vec.h" #include "s/s_State.hpp" -#include "s/s_StateMgr.hpp" -class dTgBarrel_c : public dAcBase_c { +class dTgBarrelPos_c; +class dAcOBarrel_c; +class dAcOstageSink_c; + +class dTgBarrel_c : public dTg_c { public: dTgBarrel_c() : mStateMgr(*this, sStateID::null) {} virtual ~dTgBarrel_c() {} + virtual int doDelete() override; + virtual int draw() override; + virtual int actorCreate() override; + virtual int actorPostCreate() override; + virtual int actorExecute() override; + STATE_FUNC_DECLARE(dTgBarrel_c, Wait); STATE_FUNC_DECLARE(dTgBarrel_c, Stop); + bool checkPlayerPos(const mVec3_c &playerPos); + private: - /* 0x??? */ STATE_MGR_DECLARE(dTgBarrel_c); + /* 0x0FC */ STATE_MGR_DECLARE(dTgBarrel_c); + /* 0x138 */ dAcRef_c mStageRef; + /* 0x144 */ dAcRef_c mTgBarrelPosArr[10]; + /* 0x1BC */ dAcRef_c mBarrelArr[10]; + /* 0x234 */ mVec3_c mSpawnPosition; + /* 0x240 */ u8 field_0x240; ///< Stop Sceneflag + /* 0x241 */ u8 field_0x241; ///< Barrel Spawn Interval in Seconds + /* 0x242 */ u8 field_0x242; ///< Barrel Spawn Timer + /* 0x243 */ u8 field_0x243; + /* 0x244 */ u8 field_0x244; + /* 0x245 */ u8 field_0x245; + /* 0x246 */ u8 field_0x246; }; #endif diff --git a/include/d/t/d_t_barrel_pos.h b/include/d/t/d_t_barrel_pos.h index 2c0ac8f0..7685cde8 100644 --- a/include/d/t/d_t_barrel_pos.h +++ b/include/d/t/d_t_barrel_pos.h @@ -1,14 +1,24 @@ #ifndef D_T_BARREL_POS_H #define D_T_BARREL_POS_H -#include "d/a/d_a_base.h" +#include "d/t/d_tg.h" -class dTgBarrelPos_c : public dAcBase_c { +class dTgBarrelPos_c : public dTg_c { public: dTgBarrelPos_c() {} virtual ~dTgBarrelPos_c() {} + u8 getLinkIndex() const { + return mLinkIndex; + } + u8 getLinkId() const { + return mLinkId; + } + private: + /* 0x0FC */ u8 _0xFC[0x114 - 0xFC]; + /* 0x114 */ u8 mLinkIndex; + /* 0x115 */ u8 mLinkId; }; #endif diff --git a/src/REL/d/t/d_t_barrel.cpp b/src/REL/d/t/d_t_barrel.cpp index 40a232ef..3161ce50 100644 --- a/src/REL/d/t/d_t_barrel.cpp +++ b/src/REL/d/t/d_t_barrel.cpp @@ -1,13 +1,171 @@ #include "d/t/d_t_barrel.h" +#include "common.h" +#include "d/a/d_a_base.h" +#include "d/a/d_a_player.h" +#include "d/a/obj/d_a_obj_barrel.h" +#include "d/a/obj/d_a_obj_base.h" +#include "d/a/obj/d_a_obj_stage_sink.h" +#include "d/flag/sceneflag_manager.h" +#include "d/t/d_t_barrel_pos.h" +#include "f/f_base.h" +#include "f/f_manager.h" +#include "f/f_profile_name.h" +#include "m/m_angle.h" +#include "m/m_mtx.h" +#include "m/m_vec.h" +#include "s/s_Math.h" + SPECIAL_ACTOR_PROFILE(TAG_BARREL, dTgBarrel_c, fProfile::TAG_BARREL, 0x221, 0, 0); STATE_DEFINE(dTgBarrel_c, Wait); STATE_DEFINE(dTgBarrel_c, Stop); +// Weak function ordering issue of the ctor and dtpr of the objects +// for the following in the member arrays +// dAcRef_c +// dAcRef_c + +int dTgBarrel_c::actorCreate() { + field_0x240 = getFromParams(0, 0xFF); + field_0x245 = getFromParams(16, 0xF); + field_0x241 = getFromParams(8, 0xFF); + field_0x242 = 1; + + mStageRef.link(dAcOstageSink_c::GetInstance()); + mSpawnPosition = mPosition; + + for (int i = 0; i < (int)ARRAY_LENGTH(mBarrelArr); ++i) { + mBarrelArr[i].unlink(); + } + + mStateMgr.changeState(StateID_Wait); + + return SUCCEEDED; +} + +int dTgBarrel_c::actorPostCreate() { + dTgBarrelPos_c *pTgBarrelPos = nullptr; + do { + pTgBarrelPos = + static_cast(fManager_c::searchBaseByProfName(fProfile::TAG_BARREL_POS, pTgBarrelPos)); + + if (pTgBarrelPos != nullptr) { + u8 index = pTgBarrelPos->getLinkIndex(); + if (field_0x245 == pTgBarrelPos->getLinkId()) { + mTgBarrelPosArr[index].link(pTgBarrelPos); + if (index >= field_0x243) { + field_0x243 = index + 1; + } + } + } + + } while (pTgBarrelPos != nullptr); + + return SUCCEEDED; +} + +int dTgBarrel_c::doDelete() { + return SUCCEEDED; +} + +int dTgBarrel_c::actorExecute() { + mStateMgr.executeState(); + return SUCCEEDED; +} + +int dTgBarrel_c::draw() { + return SUCCEEDED; +} + void dTgBarrel_c::initializeState_Wait() {} -void dTgBarrel_c::executeState_Wait() {} +void dTgBarrel_c::executeState_Wait() { + if (SceneflagManager::sInstance->checkBoolFlag(mRoomID, field_0x240)) { + mStateMgr.changeState(StateID_Stop); + return; + } + dAcOstageSink_c *pStage = mStageRef.get(); + + mVec3_c pos = pStage->mPosition; + mAng3_c rot = pStage->mRotation; + + mVec3_c stageDist = mSpawnPosition - pos; + mMtx_c m; + m.transS(pos); + m.ZXYrotM(rot); + m.multVecSR(stageDist, mPosition); + + mPosition += pos; + + if (checkPlayerPos(dAcPy_c::GetLink()->mPosition)) { + if (0 == sLib::calcTimer(&field_0x242)) { + field_0x246 = 1; + + u8 idx = 0xFF; + for (int i = 0; i < (int)ARRAY_LENGTH(mBarrelArr); ++i) { + if (!mBarrelArr[i].isLinked()) { + idx = i; + // I think they forgor a break here + } + } + + if (idx != 0xFF) { + dTgBarrelPos_c *pTgBarrelPos = mTgBarrelPosArr[field_0x244].get(); + if (pTgBarrelPos != nullptr) { + mVec3_c spawnPos = pTgBarrelPos->mPosition; + mAng3_c spawnRot(0, 0x4000, 0); + dAcObjBase_c *pObj = dAcObjBase_c::create( + fProfile::OBJ_BARREL, mRoomID, 0xFF00FF2, &spawnPos, &spawnRot, nullptr, 0xFFFFFFFF + ); + mBarrelArr[idx].link(static_cast(pObj)); + } + if (++field_0x244 >= field_0x243) { + field_0x244 = 0; + } + } + field_0x242 = field_0x241 * 30; + } + } else { + if (field_0x246) { + field_0x242 = field_0x241 * 30; + } + } +} void dTgBarrel_c::finalizeState_Wait() {} + void dTgBarrel_c::initializeState_Stop() {} -void dTgBarrel_c::executeState_Stop() {} +void dTgBarrel_c::executeState_Stop() { + if (!SceneflagManager::sInstance->checkBoolFlag(mRoomID, field_0x240)) { + mStateMgr.changeState(StateID_Wait); + } +} void dTgBarrel_c::finalizeState_Stop() {} + +bool dTgBarrel_c::checkPlayerPos(const mVec3_c &playerPos) { + // NONMATCHING + // https://decomp.me/scratch/TM82x + f32 scale = 0.5f; + + mAng rot = mStageRef.get()->mRotation.y; + + mVec3_c pos = mPosition; + pos += mVec3_c::Ey * (mScale.y * 0.5f); + pos.x = (playerPos.x - pos.x) / mScale.x; + pos.y = (playerPos.y - pos.y) / mScale.y; + pos.z = (playerPos.z - pos.z) / mScale.z; + + f32 cos = rot.cos(); + if (rot.cos() != 0.f) { + scale = mScale.x * ((pos.x * rot.sin()) / rot.cos()) / mScale.y; + } + + bool ret = false; + + if ((pos.x <= cos * 0.5f && -(cos * 0.5f) <= pos.x) // + && pos.y <= scale + 0.5f + 1e-6f && pos.y + -0.5f - 1e-6f <= pos.y // + && pos.z <= 0.5f && pos.z >= -0.5f) { + ret = true; + } + + return ret; +} From 0c129f95fb10af9208f98f135bf3ceec23ea5b0b Mon Sep 17 00:00:00 2001 From: elijah-thomas774 Date: Sun, 23 Nov 2025 14:13:31 -0500 Subject: [PATCH 2/6] d_t_barrel checkPlayerPos func fix. Thank @robojumper --- src/REL/d/t/d_t_barrel.cpp | 29 +++++++++++------------------ 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/src/REL/d/t/d_t_barrel.cpp b/src/REL/d/t/d_t_barrel.cpp index 3161ce50..5d7d70ae 100644 --- a/src/REL/d/t/d_t_barrel.cpp +++ b/src/REL/d/t/d_t_barrel.cpp @@ -142,30 +142,23 @@ void dTgBarrel_c::executeState_Stop() { void dTgBarrel_c::finalizeState_Stop() {} bool dTgBarrel_c::checkPlayerPos(const mVec3_c &playerPos) { - // NONMATCHING - // https://decomp.me/scratch/TM82x f32 scale = 0.5f; - mAng rot = mStageRef.get()->mRotation.y; + mVec3_c pos = playerPos - (mPosition + (mVec3_c::Ey * mScale.y * scale)); + mAng rot = mStageRef.get()->mRotation.z; - mVec3_c pos = mPosition; - pos += mVec3_c::Ey * (mScale.y * 0.5f); - pos.x = (playerPos.x - pos.x) / mScale.x; - pos.y = (playerPos.y - pos.y) / mScale.y; - pos.z = (playerPos.z - pos.z) / mScale.z; + pos.x = pos.x / mScale.x; + pos.y = pos.y / mScale.y; + pos.z = pos.z / mScale.z; - f32 cos = rot.cos(); + f32 halfCos = rot.cos() * scale; if (rot.cos() != 0.f) { scale = mScale.x * ((pos.x * rot.sin()) / rot.cos()) / mScale.y; } - bool ret = false; - - if ((pos.x <= cos * 0.5f && -(cos * 0.5f) <= pos.x) // - && pos.y <= scale + 0.5f + 1e-6f && pos.y + -0.5f - 1e-6f <= pos.y // - && pos.z <= 0.5f && pos.z >= -0.5f) { - ret = true; - } - - return ret; + return ( + (pos.x <= halfCos && pos.x >= -halfCos) // + && pos.y <= scale + 0.5f + 1e-6f && pos.y >= scale + -0.5f - 1e-6f // + && pos.z <= 0.5f && pos.z >= -0.5f + ); } From 51040758a5d8b7fea613df4e6b3234c0951bb42a Mon Sep 17 00:00:00 2001 From: elijah-thomas774 Date: Sun, 23 Nov 2025 14:20:15 -0500 Subject: [PATCH 3/6] d_t_barrel_pos OK --- .../SOUE01/rels/d_t_barrel_posNP/symbols.txt | 10 ++--- configure.py | 2 +- include/d/t/d_t_barrel_pos.h | 11 ++++- src/REL/d/t/d_t_barrel_pos.cpp | 44 +++++++++++++++++++ 4 files changed, 60 insertions(+), 7 deletions(-) diff --git a/config/SOUE01/rels/d_t_barrel_posNP/symbols.txt b/config/SOUE01/rels/d_t_barrel_posNP/symbols.txt index 2b6313ec..b0bfb701 100644 --- a/config/SOUE01/rels/d_t_barrel_posNP/symbols.txt +++ b/config/SOUE01/rels/d_t_barrel_posNP/symbols.txt @@ -2,12 +2,12 @@ _prolog = .text:0x00000000; // type:function size:0x2C scope:global _epilog = .text:0x00000030; // type:function size:0x2C scope:global _unresolved = .text:0x00000060; // type:function size:0x4 scope:global dTgBarrelPos_c_classInit__Fv = .text:0x00000070; // type:function size:0x5C -TgBarrelPos__init = .text:0x000000D0; // type:function size:0x7C -fn_443_150 = .text:0x00000150; // type:function size:0x8 -fn_443_160 = .text:0x00000160; // type:function size:0xE0 -fn_443_240 = .text:0x00000240; // type:function size:0x8 +create__14dTgBarrelPos_cFv = .text:0x000000D0; // type:function size:0x7C +doDelete__14dTgBarrelPos_cFv = .text:0x00000150; // type:function size:0x8 +actorExecute__14dTgBarrelPos_cFv = .text:0x00000160; // type:function size:0xE0 +draw__14dTgBarrelPos_cFv = .text:0x00000240; // type:function size:0x8 __dt__14dTgBarrelPos_cFv = .text:0x00000250; // type:function size:0x74 _ctors = .ctors:0x00000000; // type:label scope:global _dtors = .dtors:0x00000000; // type:label scope:global g_profile_TAG_BARREL_POS = .data:0x00000000; // type:object size:0x10 -lbl_443_section4_10 = .data:0x00000010; // type:object size:0x74 +__vt__14dTgBarrelPos_c = .data:0x00000010; // type:object size:0x74 diff --git a/configure.py b/configure.py index 02365a0b..3e57bbf6 100644 --- a/configure.py +++ b/configure.py @@ -2878,7 +2878,7 @@ config.libs = [ Rel(NonMatching, "d_t_at0", "REL/d/t/d_t_at0.cpp"), Rel(NonMatching, "d_t_auto_message", "REL/d/t/d_t_auto_message.cpp"), Rel(NonMatching, "d_t_barrel", "REL/d/t/d_t_barrel.cpp"), - Rel(NonMatching, "d_t_barrel_pos", "REL/d/t/d_t_barrel_pos.cpp"), + Rel(Matching, "d_t_barrel_pos", "REL/d/t/d_t_barrel_pos.cpp"), Rel(NonMatching, "d_t_bb_quake", "REL/d/t/d_t_bb_quake.cpp"), Rel(NonMatching, "d_t_bcal_tag", "REL/d/t/d_t_bcal_tag.cpp"), Rel(NonMatching, "d_t_bcz", "REL/d/t/d_t_bcz.cpp"), diff --git a/include/d/t/d_t_barrel_pos.h b/include/d/t/d_t_barrel_pos.h index 7685cde8..5ac9d066 100644 --- a/include/d/t/d_t_barrel_pos.h +++ b/include/d/t/d_t_barrel_pos.h @@ -2,12 +2,20 @@ #define D_T_BARREL_POS_H #include "d/t/d_tg.h" +#include "m/m_vec.h" + +class dAcOstageSink_c; class dTgBarrelPos_c : public dTg_c { public: dTgBarrelPos_c() {} virtual ~dTgBarrelPos_c() {} + virtual int create() override; + virtual int doDelete() override; + virtual int draw() override; + virtual int actorExecute() override; + u8 getLinkIndex() const { return mLinkIndex; } @@ -16,7 +24,8 @@ public: } private: - /* 0x0FC */ u8 _0xFC[0x114 - 0xFC]; + /* 0x0FC */ dAcRef_c mStageRef; + /* 0x108 */ mVec3_c mSpawnPosition; /* 0x114 */ u8 mLinkIndex; /* 0x115 */ u8 mLinkId; }; diff --git a/src/REL/d/t/d_t_barrel_pos.cpp b/src/REL/d/t/d_t_barrel_pos.cpp index 05b28f67..d57a19f4 100644 --- a/src/REL/d/t/d_t_barrel_pos.cpp +++ b/src/REL/d/t/d_t_barrel_pos.cpp @@ -1,3 +1,47 @@ #include "d/t/d_t_barrel_pos.h" +#include "d/a/obj/d_a_obj_stage_sink.h" +#include "d/t/d_t_barrel.h" +#include "f/f_base.h" + SPECIAL_ACTOR_PROFILE(TAG_BARREL_POS, dTgBarrelPos_c, fProfile::TAG_BARREL_POS, 0x222, 0, 0); + +int dTgBarrelPos_c::create() { + mLinkIndex = getFromParams(0, 0xFF); + if (mLinkIndex == 0xFF) { + mLinkIndex = 0; + } + + mLinkId = getFromParams(8, 0xF); + + mStageRef.link(dAcOstageSink_c::GetInstance()); + + mSpawnPosition = mPosition; + + return SUCCEEDED; +} + +int dTgBarrelPos_c::doDelete() { + return SUCCEEDED; +} + +int dTgBarrelPos_c::actorExecute() { + dAcOstageSink_c *pStage = mStageRef.get(); + + mVec3_c pos = pStage->mPosition; + mAng3_c rot = pStage->mRotation; + + mVec3_c stageDist = mSpawnPosition - pos; + mMtx_c m; + m.transS(pos); + m.ZXYrotM(rot); + m.multVecSR(stageDist, mPosition); + + mPosition += pos; + + return SUCCEEDED; +} + +int dTgBarrelPos_c::draw() { + return SUCCEEDED; +} From fce6ad876d555bc6d1cfb7d481da6dd80ef36e39 Mon Sep 17 00:00:00 2001 From: elijah-thomas774 Date: Sun, 23 Nov 2025 14:41:54 -0500 Subject: [PATCH 4/6] cleanup and doc --- config/SOUE01/rels/d_t_barrelNP/symbols.txt | 9 +++--- include/d/t/d_t_barrel.h | 14 ++++----- include/d/t/d_t_barrel_pos.h | 4 +-- src/REL/d/t/d_t_barrel.cpp | 34 ++++++++++----------- 4 files changed, 31 insertions(+), 30 deletions(-) diff --git a/config/SOUE01/rels/d_t_barrelNP/symbols.txt b/config/SOUE01/rels/d_t_barrelNP/symbols.txt index fe6cee1f..9fa88cc2 100644 --- a/config/SOUE01/rels/d_t_barrelNP/symbols.txt +++ b/config/SOUE01/rels/d_t_barrelNP/symbols.txt @@ -52,13 +52,14 @@ _dtors = .dtors:0x00000000; // type:label scope:global __destroy_global_chain_reference = .dtors:0x00000000; // type:object size:0x4 scope:global lbl_442_rodata_0 = .rodata:0x00000000; // type:object size:0x14 data:float g_profile_TAG_BARREL = .data:0x00000000; // type:object size:0x10 data:4byte -TgBarrel__vtable = .data:0x00000010; // type:object size:0x78 +__vt__11dTgBarrel_c = .data:0x00000010; // type:object size:0x74 lbl_442_data_88 = .data:0x00000088; // type:object size:0x30 lbl_442_data_B8 = .data:0x000000B8; // type:object size:0x30 lbl_442_data_E8 = .data:0x000000E8; // type:object size:0x18 lbl_442_data_100 = .data:0x00000100; // type:object size:0x10C lbl_442_data_20C = .data:0x0000020C; // type:object size:0x34 __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global -lbl_442_bss_8 = .bss:0x00000008; // type:object size:0x10 data:4byte -TgBarrel__StateID_Wait = .bss:0x00000018; // type:object size:0x40 data:4byte -TgBarrel__StateID_Stop = .bss:0x00000058; // type:object size:0x30 data:4byte +@23673 = .bss:0x00000008; // type:object size:0xC scope:local data:4byte +StateID_Wait__11dTgBarrel_c = .bss:0x00000018; // type:object size:0x30 data:4byte +@23677 = .bss:0x00000048; // type:object size:0xC scope:local data:4byte +StateID_Stop__11dTgBarrel_c = .bss:0x00000058; // type:object size:0x30 data:4byte diff --git a/include/d/t/d_t_barrel.h b/include/d/t/d_t_barrel.h index b122a196..9237c27c 100644 --- a/include/d/t/d_t_barrel.h +++ b/include/d/t/d_t_barrel.h @@ -33,13 +33,13 @@ private: /* 0x144 */ dAcRef_c mTgBarrelPosArr[10]; /* 0x1BC */ dAcRef_c mBarrelArr[10]; /* 0x234 */ mVec3_c mSpawnPosition; - /* 0x240 */ u8 field_0x240; ///< Stop Sceneflag - /* 0x241 */ u8 field_0x241; ///< Barrel Spawn Interval in Seconds - /* 0x242 */ u8 field_0x242; ///< Barrel Spawn Timer - /* 0x243 */ u8 field_0x243; - /* 0x244 */ u8 field_0x244; - /* 0x245 */ u8 field_0x245; - /* 0x246 */ u8 field_0x246; + /* 0x240 */ u8 mStopFlag; ///< Stop Sceneflag - Note there is no checking done to see if valid + /* 0x241 */ u8 mSpawnInterval; ///< Barrel Spawn Interval in Seconds + /* 0x242 */ u8 mSpawnTimer; ///< Barrel Spawn Timer + /* 0x243 */ u8 mBarrelPosCount; ///< Repesents the index of the highest dTgBarrelPos_c in mTgBarrelPosArr + /* 0x244 */ u8 mBarrelPosIndex; ///< Rolling index to spawn dAcOBarrel_c from a dTgBarrelPos_c + /* 0x245 */ u8 mLinkId; ///< Link Id used to find correct dTgBarrelPos_c + /* 0x246 */ bool mSpawnActive; ///< Used to reset the spawn timer after the player has already entered the area }; #endif diff --git a/include/d/t/d_t_barrel_pos.h b/include/d/t/d_t_barrel_pos.h index 5ac9d066..8a3885c3 100644 --- a/include/d/t/d_t_barrel_pos.h +++ b/include/d/t/d_t_barrel_pos.h @@ -26,8 +26,8 @@ public: private: /* 0x0FC */ dAcRef_c mStageRef; /* 0x108 */ mVec3_c mSpawnPosition; - /* 0x114 */ u8 mLinkIndex; - /* 0x115 */ u8 mLinkId; + /* 0x114 */ u8 mLinkIndex; ///< Link Index used in dTgBarrel_c array + /* 0x115 */ u8 mLinkId; ///< Link Id used to find correct dTgBarrel_c }; #endif diff --git a/src/REL/d/t/d_t_barrel.cpp b/src/REL/d/t/d_t_barrel.cpp index 5d7d70ae..39b2778e 100644 --- a/src/REL/d/t/d_t_barrel.cpp +++ b/src/REL/d/t/d_t_barrel.cpp @@ -27,10 +27,10 @@ STATE_DEFINE(dTgBarrel_c, Stop); // dAcRef_c int dTgBarrel_c::actorCreate() { - field_0x240 = getFromParams(0, 0xFF); - field_0x245 = getFromParams(16, 0xF); - field_0x241 = getFromParams(8, 0xFF); - field_0x242 = 1; + mStopFlag = getFromParams(0, 0xFF); + mLinkId = getFromParams(16, 0xF); + mSpawnInterval = getFromParams(8, 0xFF); + mSpawnTimer = 1; mStageRef.link(dAcOstageSink_c::GetInstance()); mSpawnPosition = mPosition; @@ -52,10 +52,10 @@ int dTgBarrel_c::actorPostCreate() { if (pTgBarrelPos != nullptr) { u8 index = pTgBarrelPos->getLinkIndex(); - if (field_0x245 == pTgBarrelPos->getLinkId()) { + if (mLinkId == pTgBarrelPos->getLinkId()) { mTgBarrelPosArr[index].link(pTgBarrelPos); - if (index >= field_0x243) { - field_0x243 = index + 1; + if (index >= mBarrelPosCount) { + mBarrelPosCount = index + 1; } } } @@ -80,7 +80,7 @@ int dTgBarrel_c::draw() { void dTgBarrel_c::initializeState_Wait() {} void dTgBarrel_c::executeState_Wait() { - if (SceneflagManager::sInstance->checkBoolFlag(mRoomID, field_0x240)) { + if (SceneflagManager::sInstance->checkBoolFlag(mRoomID, mStopFlag)) { mStateMgr.changeState(StateID_Stop); return; } @@ -98,8 +98,8 @@ void dTgBarrel_c::executeState_Wait() { mPosition += pos; if (checkPlayerPos(dAcPy_c::GetLink()->mPosition)) { - if (0 == sLib::calcTimer(&field_0x242)) { - field_0x246 = 1; + if (0 == sLib::calcTimer(&mSpawnTimer)) { + mSpawnActive = true; u8 idx = 0xFF; for (int i = 0; i < (int)ARRAY_LENGTH(mBarrelArr); ++i) { @@ -110,7 +110,7 @@ void dTgBarrel_c::executeState_Wait() { } if (idx != 0xFF) { - dTgBarrelPos_c *pTgBarrelPos = mTgBarrelPosArr[field_0x244].get(); + dTgBarrelPos_c *pTgBarrelPos = mTgBarrelPosArr[mBarrelPosIndex].get(); if (pTgBarrelPos != nullptr) { mVec3_c spawnPos = pTgBarrelPos->mPosition; mAng3_c spawnRot(0, 0x4000, 0); @@ -119,15 +119,15 @@ void dTgBarrel_c::executeState_Wait() { ); mBarrelArr[idx].link(static_cast(pObj)); } - if (++field_0x244 >= field_0x243) { - field_0x244 = 0; + if (++mBarrelPosIndex >= mBarrelPosCount) { + mBarrelPosIndex = 0; } } - field_0x242 = field_0x241 * 30; + mSpawnTimer = mSpawnInterval * 30; } } else { - if (field_0x246) { - field_0x242 = field_0x241 * 30; + if (mSpawnActive) { + mSpawnTimer = mSpawnInterval * 30; } } } @@ -135,7 +135,7 @@ void dTgBarrel_c::finalizeState_Wait() {} void dTgBarrel_c::initializeState_Stop() {} void dTgBarrel_c::executeState_Stop() { - if (!SceneflagManager::sInstance->checkBoolFlag(mRoomID, field_0x240)) { + if (!SceneflagManager::sInstance->checkBoolFlag(mRoomID, mStopFlag)) { mStateMgr.changeState(StateID_Wait); } } From 5e3eb2fe3556f9a73dafbca0a67d3a5ae1043422 Mon Sep 17 00:00:00 2001 From: elijah-thomas774 Date: Sun, 23 Nov 2025 15:10:23 -0500 Subject: [PATCH 5/6] fix typos --- include/d/t/d_t_barrel.h | 4 ++-- src/REL/d/t/d_t_barrel.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/include/d/t/d_t_barrel.h b/include/d/t/d_t_barrel.h index 9237c27c..3266d6d1 100644 --- a/include/d/t/d_t_barrel.h +++ b/include/d/t/d_t_barrel.h @@ -36,10 +36,10 @@ private: /* 0x240 */ u8 mStopFlag; ///< Stop Sceneflag - Note there is no checking done to see if valid /* 0x241 */ u8 mSpawnInterval; ///< Barrel Spawn Interval in Seconds /* 0x242 */ u8 mSpawnTimer; ///< Barrel Spawn Timer - /* 0x243 */ u8 mBarrelPosCount; ///< Repesents the index of the highest dTgBarrelPos_c in mTgBarrelPosArr + /* 0x243 */ u8 mBarrelPosCount; ///< Represents the index of the highest dTgBarrelPos_c in mTgBarrelPosArr /* 0x244 */ u8 mBarrelPosIndex; ///< Rolling index to spawn dAcOBarrel_c from a dTgBarrelPos_c /* 0x245 */ u8 mLinkId; ///< Link Id used to find correct dTgBarrelPos_c - /* 0x246 */ bool mSpawnActive; ///< Used to reset the spawn timer after the player has already entered the area + /* 0x246 */ bool mSpawnActive; ///< Used to reset the spawn timer after the player has already entered the area }; #endif diff --git a/src/REL/d/t/d_t_barrel.cpp b/src/REL/d/t/d_t_barrel.cpp index 39b2778e..d6d81a89 100644 --- a/src/REL/d/t/d_t_barrel.cpp +++ b/src/REL/d/t/d_t_barrel.cpp @@ -21,7 +21,7 @@ SPECIAL_ACTOR_PROFILE(TAG_BARREL, dTgBarrel_c, fProfile::TAG_BARREL, 0x221, 0, 0 STATE_DEFINE(dTgBarrel_c, Wait); STATE_DEFINE(dTgBarrel_c, Stop); -// Weak function ordering issue of the ctor and dtpr of the objects +// Weak function ordering issue of the ctor and dtor of the objects // for the following in the member arrays // dAcRef_c // dAcRef_c From c0b8b12ff2233ce883e871ff96bb5fc5267fe1e1 Mon Sep 17 00:00:00 2001 From: elijah-thomas774 Date: Sun, 23 Nov 2025 15:10:38 -0500 Subject: [PATCH 6/6] suppress linker warnings --- .../SOUE01/rels/d_a_obj_barrelNP/symbols.txt | 178 +++++++++--------- config/SOUE01/rels/d_t_barrelNP/symbols.txt | 12 +- 2 files changed, 95 insertions(+), 95 deletions(-) diff --git a/config/SOUE01/rels/d_a_obj_barrelNP/symbols.txt b/config/SOUE01/rels/d_a_obj_barrelNP/symbols.txt index f36e8ac5..fb0a78d8 100644 --- a/config/SOUE01/rels/d_a_obj_barrelNP/symbols.txt +++ b/config/SOUE01/rels/d_a_obj_barrelNP/symbols.txt @@ -99,92 +99,92 @@ isSameName__27sFStateID_c<12dAcOBarrel_c>CFPCc = .text:0x00006500; // 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_293_rodata_0 = .rodata:0x00000000; // type:object size:0x38 data:float -lbl_293_rodata_38 = .rodata:0x00000038; // type:object size:0x4 align:4 data:float -lbl_293_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 align:4 data:float -lbl_293_rodata_40 = .rodata:0x00000040; // type:object size:0x4 align:4 data:float -lbl_293_rodata_44 = .rodata:0x00000044; // type:object size:0x4 align:4 data:float -lbl_293_rodata_48 = .rodata:0x00000048; // type:object size:0x4 align:4 data:float -lbl_293_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 align:4 data:float -lbl_293_rodata_50 = .rodata:0x00000050; // type:object size:0x4 align:4 data:float -lbl_293_rodata_54 = .rodata:0x00000054; // type:object size:0x4 align:4 data:float -lbl_293_rodata_58 = .rodata:0x00000058; // type:object size:0x4 align:4 data:float -lbl_293_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 align:4 data:float -lbl_293_rodata_60 = .rodata:0x00000060; // type:object size:0x4 align:4 data:float -lbl_293_rodata_64 = .rodata:0x00000064; // type:object size:0x4 align:4 data:float -lbl_293_rodata_68 = .rodata:0x00000068; // type:object size:0x4 align:4 data:float -lbl_293_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 align:4 data:float -lbl_293_rodata_70 = .rodata:0x00000070; // type:object size:0x4 align:4 data:float -lbl_293_rodata_78 = .rodata:0x00000078; // type:object size:0x8 align:8 data:double -lbl_293_rodata_80 = .rodata:0x00000080; // type:object size:0x4 align:4 data:float -lbl_293_rodata_84 = .rodata:0x00000084; // type:object size:0x4 align:4 data:float -lbl_293_rodata_88 = .rodata:0x00000088; // type:object size:0x4 align:4 data:float -lbl_293_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 align:4 data:float -lbl_293_rodata_90 = .rodata:0x00000090; // type:object size:0x4 align:4 data:float -lbl_293_rodata_94 = .rodata:0x00000094; // type:object size:0x4 align:4 data:float -lbl_293_rodata_98 = .rodata:0x00000098; // type:object size:0x4 align:4 data:float -lbl_293_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 align:4 data:float -lbl_293_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 align:4 data:float -lbl_293_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 align:4 data:float -lbl_293_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 align:4 data:float -lbl_293_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 align:4 data:float -lbl_293_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 align:4 data:float -lbl_293_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 align:4 data:float -lbl_293_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 align:4 data:float -lbl_293_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 align:4 data:float -lbl_293_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 align:4 data:float -lbl_293_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 align:4 data:float -lbl_293_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 align:4 data:float -lbl_293_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 align:4 data:float -lbl_293_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 align:4 data:float -lbl_293_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 align:4 data:float -lbl_293_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 align:4 data:float -lbl_293_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 align:4 data:float -lbl_293_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 align:4 data:float -lbl_293_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 align:4 data:float -lbl_293_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 align:4 data:float -lbl_293_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 align:4 data:float -lbl_293_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 align:4 data:float -lbl_293_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 align:4 data:float -lbl_293_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 align:4 data:float -lbl_293_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 align:4 data:float -lbl_293_rodata_100 = .rodata:0x00000100; // type:object size:0x4 align:4 data:float -lbl_293_rodata_104 = .rodata:0x00000104; // type:object size:0x4 align:4 data:float -lbl_293_rodata_108 = .rodata:0x00000108; // type:object size:0x4 align:4 data:float -lbl_293_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 align:4 data:float -lbl_293_rodata_110 = .rodata:0x00000110; // type:object size:0x4 align:4 data:float -lbl_293_rodata_114 = .rodata:0x00000114; // type:object size:0x4 align:4 data:float -lbl_293_rodata_118 = .rodata:0x00000118; // type:object size:0x4 align:4 data:float -lbl_293_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 align:4 data:float -lbl_293_rodata_120 = .rodata:0x00000120; // type:object size:0x4 align:4 data:float -lbl_293_rodata_124 = .rodata:0x00000124; // type:object size:0x4 align:4 data:float -lbl_293_rodata_128 = .rodata:0x00000128; // type:object size:0x4 align:4 data:float -lbl_293_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 align:4 data:float -lbl_293_rodata_130 = .rodata:0x00000130; // type:object size:0x4 align:4 data:float -lbl_293_rodata_134 = .rodata:0x00000134; // type:object size:0x4 align:4 data:float -lbl_293_rodata_138 = .rodata:0x00000138; // type:object size:0x4 align:4 data:float -lbl_293_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 align:4 data:float -lbl_293_rodata_140 = .rodata:0x00000140; // type:object size:0x4 align:4 data:float -lbl_293_rodata_144 = .rodata:0x00000144; // type:object size:0x4 align:4 data:float -lbl_293_rodata_148 = .rodata:0x00000148; // type:object size:0x30 -lbl_293_data_0 = .data:0x00000000; // type:object size:0x8 data:4byte +lbl_293_rodata_0 = .rodata:0x00000000; // type:object size:0x38 scope:local data:float +lbl_293_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_78 = .rodata:0x00000078; // type:object size:0x8 scope:local align:8 data:double +lbl_293_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local align:4 data:float +lbl_293_rodata_148 = .rodata:0x00000148; // type:object size:0x30 scope:local +lbl_293_data_0 = .data:0x00000000; // type:object size:0x8 scope:local data:4byte g_profile_OBJ_BARREL = .data:0x00000008; // type:object size:0x6C -lbl_293_data_74 = .data:0x00000074; // type:object size:0x7 data:string -lbl_293_data_7C = .data:0x0000007C; // type:object size:0xB data:string -lbl_293_data_88 = .data:0x00000088; // type:object size:0x10 -lbl_293_data_98 = .data:0x00000098; // type:object size:0x2C -lbl_293_data_C4 = .data:0x000000C4; // type:object size:0xF data:string -lbl_293_data_D4 = .data:0x000000D4; // type:object size:0x10 -lbl_293_data_E4 = .data:0x000000E4; // type:object size:0x4 align:4 data:float -lbl_293_data_E8 = .data:0x000000E8; // type:object size:0x8 align:4 data:float -lbl_293_data_F0 = .data:0x000000F0; // type:object size:0x80 -lbl_293_data_170 = .data:0x00000170; // type:object size:0x30 -lbl_293_data_1A0 = .data:0x000001A0; // type:object size:0x30 -lbl_293_data_1D0 = .data:0x000001D0; // type:object size:0x18 -lbl_293_data_1E8 = .data:0x000001E8; // type:object size:0x18 -lbl_293_data_200 = .data:0x00000200; // type:object size:0xC -lbl_293_data_20C = .data:0x0000020C; // type:object size:0x2A8 -lbl_293_data_4B4 = .data:0x000004B4; // type:object size:0x34 +lbl_293_data_74 = .data:0x00000074; // type:object size:0x7 scope:local data:string +lbl_293_data_7C = .data:0x0000007C; // type:object size:0xB scope:local data:string +lbl_293_data_88 = .data:0x00000088; // type:object size:0x10 scope:local +lbl_293_data_98 = .data:0x00000098; // type:object size:0x2C scope:local +lbl_293_data_C4 = .data:0x000000C4; // type:object size:0xF scope:local data:string +lbl_293_data_D4 = .data:0x000000D4; // type:object size:0x10 scope:local +lbl_293_data_E4 = .data:0x000000E4; // type:object size:0x4 scope:local align:4 data:float +lbl_293_data_E8 = .data:0x000000E8; // type:object size:0x8 scope:local align:4 data:float +lbl_293_data_F0 = .data:0x000000F0; // type:object size:0x80 scope:local +lbl_293_data_170 = .data:0x00000170; // type:object size:0x30 scope:local +lbl_293_data_1A0 = .data:0x000001A0; // type:object size:0x30 scope:local +lbl_293_data_1D0 = .data:0x000001D0; // type:object size:0x18 scope:local +lbl_293_data_1E8 = .data:0x000001E8; // type:object size:0x18 scope:local +lbl_293_data_200 = .data:0x00000200; // type:object size:0xC scope:local +lbl_293_data_20C = .data:0x0000020C; // type:object size:0x2A8 scope:local +lbl_293_data_4B4 = .data:0x000004B4; // type:object size:0x34 scope:local __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global @16558 = .bss:0x00000008; // type:object size:0xC scope:local data:4byte StateID_Wait__12dAcOBarrel_c = .bss:0x00000018; // type:object size:0x30 data:4byte @@ -206,7 +206,7 @@ StateID_Explode__12dAcOBarrel_c = .bss:0x000001D8; // type:object size:0x30 data StateID_KrakenBorn__12dAcOBarrel_c = .bss:0x00000218; // type:object size:0x30 data:4byte @16594 = .bss:0x00000248; // type:object size:0xC scope:local data:4byte StateID_Rebirth__12dAcOBarrel_c = .bss:0x00000258; // type:object size:0x30 data:4byte -lbl_293_bss_288 = .bss:0x00000288; // type:object size:0x8 data:byte -lbl_293_bss_290 = .bss:0x00000290; // type:object size:0x10 align:4 data:float -lbl_293_bss_2A0 = .bss:0x000002A0; // type:object size:0x1 data:byte -lbl_293_bss_2A4 = .bss:0x000002A4; // type:object size:0xC align:4 data:float +@GUARD@draw__12dAcOBarrel_cFv@shadow = .bss:0x00000288; // type:object size:0x1 scope:local data:byte +@LOCAL@draw__12dAcOBarrel_cFv@shadow = .bss:0x00000290; // type:object size:0x10 scope:local align:4 data:float +@GUARD@fn_293_5910__12dAcOBarrel_cFv@scale = .bss:0x000002A0; // type:object size:0x1 scope:local data:byte +@LOCAL@fn_293_5910__12dAcOBarrel_cFv@scale = .bss:0x000002A4; // type:object size:0xC scope:local align:4 data:float diff --git a/config/SOUE01/rels/d_t_barrelNP/symbols.txt b/config/SOUE01/rels/d_t_barrelNP/symbols.txt index 9fa88cc2..3d27630f 100644 --- a/config/SOUE01/rels/d_t_barrelNP/symbols.txt +++ b/config/SOUE01/rels/d_t_barrelNP/symbols.txt @@ -50,14 +50,14 @@ isSameName__26sFStateID_c<11dTgBarrel_c>CFPCc = .text:0x00001220; // type:functi _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_442_rodata_0 = .rodata:0x00000000; // type:object size:0x14 data:float +lbl_442_rodata_0 = .rodata:0x00000000; // type:object size:0x14 scope:local data:float g_profile_TAG_BARREL = .data:0x00000000; // type:object size:0x10 data:4byte __vt__11dTgBarrel_c = .data:0x00000010; // type:object size:0x74 -lbl_442_data_88 = .data:0x00000088; // type:object size:0x30 -lbl_442_data_B8 = .data:0x000000B8; // type:object size:0x30 -lbl_442_data_E8 = .data:0x000000E8; // type:object size:0x18 -lbl_442_data_100 = .data:0x00000100; // type:object size:0x10C -lbl_442_data_20C = .data:0x0000020C; // type:object size:0x34 +lbl_442_data_88 = .data:0x00000088; // type:object size:0x30 scope:local +lbl_442_data_B8 = .data:0x000000B8; // type:object size:0x30 scope:local +lbl_442_data_E8 = .data:0x000000E8; // type:object size:0x18 scope:local +lbl_442_data_100 = .data:0x00000100; // type:object size:0x10C scope:local +lbl_442_data_20C = .data:0x0000020C; // type:object size:0x34 scope:local __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global @23673 = .bss:0x00000008; // type:object size:0xC scope:local data:4byte StateID_Wait__11dTgBarrel_c = .bss:0x00000018; // type:object size:0x30 data:4byte