summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorelijah-thomas774 <elijahthomas774@gmail.com>2026-09-20 11:53:53 -0400
committerelijah-thomas774 <elijahthomas774@gmail.com>2026-09-20 11:53:53 -0400
commit600cefbc7dd1e00772c591be90a86f4567d2ab43 (patch)
treee8ae834bf980256571cefba4ee74f1d2b840b9cc /include
parent9481f3ab62d690bd6534cb0adf7e02db5579b333 (diff)
unrelated Bomb Changes
Diffstat (limited to 'include')
-rw-r--r--include/d/a/d_a_player.h26
-rw-r--r--include/d/a/e/d_a_en_base.h1
-rw-r--r--include/d/a/obj/d_a_obj_base.h3
-rw-r--r--include/d/col/bg/d_bg_pc.h1
-rw-r--r--include/d/col/bg/d_bg_s_acch.h21
-rw-r--r--include/d/col/c/c_cc_d.h17
-rw-r--r--include/d/col/c/c_m3d_g_pla.h7
-rw-r--r--include/d/col/cc/d_cc_s.h3
-rw-r--r--include/d/d_linkage.h27
-rw-r--r--include/d/d_player_act.h7
-rw-r--r--include/s/s_State.hpp10
11 files changed, 102 insertions, 21 deletions
diff --git a/include/d/a/d_a_player.h b/include/d/a/d_a_player.h
index e5e6669c..a768c823 100644
--- a/include/d/a/d_a_player.h
+++ b/include/d/a/d_a_player.h
@@ -4,6 +4,7 @@
#include "common.h"
#include "d/a/d_a_base.h"
#include "d/a/d_a_item.h"
+#include "d/a/obj/d_a_obj_base.h"
#include "d/col/c/c_bg_s_poly_info.h"
#include "d/d_player_mdl.h"
#include "m/m_angle.h"
@@ -32,8 +33,22 @@ public:
/* vt 0x314 */ virtual void vt_0x314();
/* vt 0x318 */ virtual void vt_0x318();
+ struct ObjectArray {
+ static const size_t sNumObjects = 16;
+
+ bool insert(dAcObjBase_c *);
+ void execute();
+ dAcObjBase_c *get(s32 index);
+ void removeBombs();
+
+ dAcObjRef_c mObjs[sNumObjects];
+ u32 mCounter[sNumObjects];
+ };
+
protected:
- /* 0x137C */ u8 _0x137C[0x16F0 - 0x137C];
+ /* 0x137C */ ObjectArray mOwnedObjects;
+ /* 0x147C */ ObjectArray mOwnedProjectiles;
+ /* 0x157C */ u8 _0x157C[0x16F0 - 0x157C];
/* 0x16F0 */ nw4r::g3d::ResFile mHeldResFile;
/* 0x16F4 */ u8 _0x16F4[0x4564 - 0x16F4];
/* 0x4564 */ f32 field_0x4564;
@@ -58,6 +73,7 @@ public:
void setBeetleFlashClr(const mColor &);
void setBeetleBackAnim();
s32 getBeetleWarningTimeLeft();
+ void setBeetleReleasedObject(dAcObjBase_c *pObj);
// Item select/equip/use functions [0x801E3160 - 0x801E7AD0] ?
static s32 calcItemWheelSelection(bool reset, s32 numOptions);
@@ -117,6 +133,14 @@ public:
return LINK2;
}
+ static bool insertOwnedObject(dAcObjBase_c *pObj) {
+ return LINK2->mOwnedObjects.insert(pObj);
+ }
+
+ ObjectArray &getOwnedObjects() {
+ return mOwnedObjects;
+ }
+
void onShieldUpdate();
static dAcPy_c *LINK;
diff --git a/include/d/a/e/d_a_en_base.h b/include/d/a/e/d_a_en_base.h
index adbc1d0c..1c1382e8 100644
--- a/include/d/a/e/d_a_en_base.h
+++ b/include/d/a/e/d_a_en_base.h
@@ -86,6 +86,7 @@ public:
bool fn_80030570(m3d::mdl_c &, u8, f32); // lighting related
void fn_800306D0();
void fn_80030700();
+ static void fn_800307E0(mVec3_c *pPos, s32);
dAcObjBase_c *targetPlayerOrScrapper(f32 biasToScrapper);
static void fn_80030980(m3d::mdl_c &, s32, bool markDirty);
diff --git a/include/d/a/obj/d_a_obj_base.h b/include/d/a/obj/d_a_obj_base.h
index fab81e6d..1d8eff2e 100644
--- a/include/d/a/obj/d_a_obj_base.h
+++ b/include/d/a/obj/d_a_obj_base.h
@@ -1,7 +1,6 @@
#ifndef D_A_OBJ_BASE_H
#define D_A_OBJ_BASE_H
-#include "c/c_math.h"
#include "common.h"
#include "d/a/d_a_base.h"
#include "d/a/d_a_salbage_if.h"
@@ -14,11 +13,9 @@
#include "m/m3d/m_shadow.h"
#include "m/m3d/m_smdl.h"
#include "m/m_angle.h"
-#include "m/m_color.h"
#include "m/m_mtx.h"
#include "m/m_vec.h"
#include "m/types_m.h"
-#include "nw4r/math/math_arithmetic.h"
// Ghidra: ActorObjectBase
// size: 0x330
diff --git a/include/d/col/bg/d_bg_pc.h b/include/d/col/bg/d_bg_pc.h
index e3b05ced..a5845962 100644
--- a/include/d/col/bg/d_bg_pc.h
+++ b/include/d/col/bg/d_bg_pc.h
@@ -61,6 +61,7 @@ enum dBgPc_Attribute {
POLY_ATTR_DAMAGE = 13,
POLY_ATTR_SLOPE_RUN = 15,
POLY_ATTR_SAND_DEEP_SLOW = 16,
+ POLY_ATTR_CURSED_WATER = 17,
};
class dBgPc {
public:
diff --git a/include/d/col/bg/d_bg_s_acch.h b/include/d/col/bg/d_bg_s_acch.h
index 6756420f..6eb05d22 100644
--- a/include/d/col/bg/d_bg_s_acch.h
+++ b/include/d/col/bg/d_bg_s_acch.h
@@ -532,8 +532,17 @@ public:
return mRoof;
}
- void SetField_0xD4(f32 v) {
- field_0x0D4 = v;
+ void SetGndChkOffset(f32 v) {
+ mGndChkOffset = v;
+ }
+ void SetRoofCrrHeight(f32 v) {
+ mRoofCrrHeight = v;
+ }
+ void SetWaterCheckOffset(f32 v) {
+ mWtrCheckOffset = v;
+ }
+ void SetWtrChkMode(u8 v) {
+ mWtrMode = v;
}
public:
@@ -555,12 +564,12 @@ public:
/* 0x0A8 */ f32 field_0x0A8;
/* 0x0AC */ f32 field_0x0AC;
/* 0x0B0 */ f32 mGroundHeight;
- /* 0x0B4 */ f32 field_0x0B4;
+ /* 0x0B4 */ f32 mGndChkOffset;
/* 0x0B8 */ cM3dGPla mPlane_0x0B8;
/* 0x0C8 */ f32 field_0x0C8;
/* 0x0CC */ f32 field_0x0CC;
/* 0x0D0 */ f32 mRoofHeight;
- /* 0x0D4 */ f32 field_0x0D4;
+ /* 0x0D4 */ f32 mRoofCrrHeight;
/* 0x0D8 */ f32 field_0x0D8;
/* 0x0DC */ cBgS_PolyInfo *mpOutPolyInfo;
/* 0x0E0 */ f32 mRoofH_0x0E0;
@@ -572,9 +581,9 @@ public:
/* 0x1D0 */ f32 field_0x1D0;
/* 0x1D4 */ dBgS_GndChk mGnd;
/* 0x264 */ dBgS_RoofChk mRoof;
- /* 0x2F4 */ f32 field_0x2F4;
+ /* 0x2F4 */ f32 mWtrCheckOffset;
/* 0x2F8 */ dBgS_WtrChk mWtr;
- /* 0x390 */ u8 field_0x390;
+ /* 0x390 */ u8 mWtrMode;
/* 0x394 */ s32 field_0x394;
/* 0x398 */ mVec3_c field_0x398;
/* 0x3A4 */ mVec3_c field_0x3A4;
diff --git a/include/d/col/c/c_cc_d.h b/include/d/col/c/c_cc_d.h
index fa5fec03..a6165353 100644
--- a/include/d/col/c/c_cc_d.h
+++ b/include/d/col/c/c_cc_d.h
@@ -526,6 +526,9 @@ public:
void SetSrcModifer(u32 modifier) {
mSrc.mInfo.mModifier = modifier;
}
+ u32 GetSrcModifer() const {
+ return mSrc.mInfo.mModifier;
+ }
void OnSrcModifer(u32 m) {
mSrc.mInfo.mModifier |= m;
}
@@ -949,6 +952,10 @@ public:
mAt.SetCallback(cb);
}
+ void SetTgCallback(cCcD_HitCallback cb) {
+ mTg.SetCallback(cb);
+ }
+
void SetCoCallback(cCcD_HitCallback cb) {
mCo.SetCallback(cb);
}
@@ -1006,6 +1013,13 @@ public:
void OnAt_0x4000() {
mAt.OnSPrm(0x4000);
}
+ // Related to Beetle (no hook)
+ u32 ChkAt_0x4000() {
+ return mAt.MskSPrm(0x4000);
+ }
+ u32 GetAtSrcModifier() const {
+ return mAt.GetSrcModifer();
+ }
void SetAtInfo_0x0(u8 amount) {
@@ -1115,6 +1129,9 @@ public:
void ClrCo_0x400() {
mCo.OffSPrm(0x400);
}
+ u32 ChkCo_0x8000() {
+ return mCo.MskSPrm(0x8000);
+ }
void OnCo_0x8000() {
mCo.OnSPrm(0x8000);
}
diff --git a/include/d/col/c/c_m3d_g_pla.h b/include/d/col/c/c_m3d_g_pla.h
index 2e178d45..9fdf5ffb 100644
--- a/include/d/col/c/c_m3d_g_pla.h
+++ b/include/d/col/c/c_m3d_g_pla.h
@@ -5,6 +5,7 @@
#include "d/col/c/c_m3d.h"
#include "m/m_angle.h"
#include "m/m_vec.h"
+#include "nw4r/math/math_types.h"
#include "rvl/MTX/vec.h"
// Plane with a normal
@@ -29,8 +30,12 @@ public:
mD = -VECDotProduct(mNormal, point);
}
+ void SetupNP(const mVec3_c &normal, const mVec3_c &point) {
+ mNormal = normal;
+ mD = -nw4r::math::VEC3Dot(mNormal, point);
+ }
+
// Unused
- // void SetupNP(const mVec3_c &, const mVec3_c &);
// bool getCrossY(const mVec3_c &, f32 *) const;
// void Set(const cM3dGPla *);
diff --git a/include/d/col/cc/d_cc_s.h b/include/d/col/cc/d_cc_s.h
index 65b6d518..ae0f4945 100644
--- a/include/d/col/cc/d_cc_s.h
+++ b/include/d/col/cc/d_cc_s.h
@@ -41,6 +41,9 @@ public:
dCcMassS_Mng &GetMassMng() {
return mMassMng;
}
+ void SetMass(cCcD_Obj *p_obj, u8 priority) {
+ mMassMng.SetObj(p_obj, priority);
+ }
void Ct();
void Dt();
diff --git a/include/d/d_linkage.h b/include/d/d_linkage.h
index 2739ab49..9cf24418 100644
--- a/include/d/d_linkage.h
+++ b/include/d/d_linkage.h
@@ -19,15 +19,15 @@ public:
public:
enum ConnectionType_e {
CONNECTION_0 = 0,
- CONNECTION_1 = 1,
+ CONNECTION_1 = 1, // Standard
CONNECTION_2 = 2,
CONNECTION_3 = 3,
- CONNECTION_4 = 4,
- CONNECTION_5 = 5,
- CONNECTION_6 = 6,
- CONNECTION_7 = 7,
- CONNECTION_8 = 8,
- CONNECTION_9 = 9,
+ CONNECTION_4 = 4, // clawshot
+ CONNECTION_5 = 5, // Beetle
+ CONNECTION_6 = 6, // From Sword Swing?
+ CONNECTION_7 = 7, // Whip
+ CONNECTION_8 = 8, // Arrow/Heartf
+ CONNECTION_9 = 9, // Chandelier/lotus flower
};
enum State_e {
STATE_0 = 0,
@@ -87,6 +87,19 @@ public:
return field_0xA0->getArrowOffsetPosAndAngle(param_1, param_2, param_3, param_4, param_5);
}
+ dAcBase_c *getControllingActor() {
+ return static_cast<dAcBase_c *>(mControllingActor.p_owner);
+ }
+
+ void setField_0x8C_0x90(f32 f0, f32 f1) {
+ field_0x8C = f0;
+ field_0x90 = f1;
+ }
+ void setField_0x94_0x98(f32 f0, f32 f1) {
+ field_0x94 = f0;
+ field_0x98 = f1;
+ }
+
public:
void set(u32 flags, f32, f32, f32, void *unk);
bool tryAttach(dAcObjBase_c *, dAcObjBase_c *, dAcRefBase_c *, ConnectionType_e, bool);
diff --git a/include/d/d_player_act.h b/include/d/d_player_act.h
index a9a9a2b3..0ddaaedf 100644
--- a/include/d/d_player_act.h
+++ b/include/d/d_player_act.h
@@ -2,10 +2,11 @@
#define D_A_PLAYER_ACT_H
#include "d/a/d_a_base.h"
-#include "d/a/obj/d_a_obj_bomb.h"
+#include "d/a/obj/d_a_obj_base.h"
#include "d/d_player_base.h"
#include "m/m_vec.h"
+
class dAcEnBase_c;
class dAcOFairy_c;
@@ -247,7 +248,7 @@ public:
return false;
}
/* vt 0x1B8 */ virtual void canHandleGameOver() {}
- /* vt 0x1BC */ virtual UNKWORD vt_0x1BC() {
+ /* vt 0x1BC */ virtual dAcObjBase_c *getBeetleHeldActor() {
return 0;
}
@@ -414,7 +415,7 @@ public:
/* vt 0x2A4 */ virtual bool isRunningUpWall() {
return false;
}
- /* vt 0x2A8 */ virtual void lookTowardItem() {}
+ /* vt 0x2A8 */ virtual void lookTowardItem(const mVec3_c &, u32, mAng, f32, f32, f32) {}
/* vt 0x2AC */ virtual void vt_0x2AC() {}
/* vt 0x2B0 */ virtual void vt_0x2B0() {}
/* vt 0x2B4 */ virtual void triggerMoveEventMaybe(u32, u32, u32, const mVec3_c *, const mAng &, u32, u32) {}
diff --git a/include/s/s_State.hpp b/include/s/s_State.hpp
index 807a1bd9..fb8ab775 100644
--- a/include/s/s_State.hpp
+++ b/include/s/s_State.hpp
@@ -48,11 +48,21 @@
return *mStateMgr.getStateID() == value; \
}
+#define STATE_MGR_DEFINE_UTIL_GETSTATEID(class_name) \
+ const sFStateID_c<class_name> &getStateID() const { \
+ return (sFStateID_c<class_name> &)*mStateMgr.getStateID(); \
+ }
+
#define STATE_MGR_DEFINE_UTIL_GETOLDSTATEID(class_name) \
const sFStateID_c<class_name> &getOldStateID() const { \
return (sFStateID_c<class_name> &)*mStateMgr.getOldStateID(); \
}
+#define STATE_MGR_DEFINE_UTIL_GETNEWSTATEID(class_name) \
+ const sFStateID_c<class_name> &getNewStateID() const { \
+ return (sFStateID_c<class_name> &)*mStateMgr.getNewStateID(); \
+ }
+
// Use this when you need need sFStateID_c vtables to appear in a different order
#define STATE_MGR_DEFINE_UTIL_INSTANCIATE_STATE(class_name) \
bool dummy_need_state_instanciation(const sFStateID_c<class_name> &value) const { \