summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNhProGamer <neo.huyghe@gmail.com>2026-10-13 09:29:41 +0200
committerNhProGamer <neo.huyghe@gmail.com>2026-10-13 09:29:41 +0200
commitad6bd2aa4c3072b03468d0efbdf5ccc458a8184b (patch)
treed0ad13516499da94ef7966ce609e5e5823c740d2
parent69ec12e947150db9121148be74e967f5e8e5324a (diff)
Address review
-rw-r--r--include/d/t/d_t_belt_obstacle.h15
-rw-r--r--src/REL/d/t/d_t_belt_obstacle.cpp26
2 files changed, 16 insertions, 25 deletions
diff --git a/include/d/t/d_t_belt_obstacle.h b/include/d/t/d_t_belt_obstacle.h
index 1aea6a91..f6e3bd14 100644
--- a/include/d/t/d_t_belt_obstacle.h
+++ b/include/d/t/d_t_belt_obstacle.h
@@ -29,16 +29,13 @@ private:
/* 0x10E */ u16 mFirstSpawnDelay;
/* 0x110 */ u16 mSpawnInterval;
/* 0x112 */ u8 mSpawnType;
- /* 0x113 */ u8 mObstacleParam0;
- /* 0x114 */ u8 mObstacleParam1;
- /* 0x115 */ u8 mObstacleParam2;
- /* 0x116 */ u8 mObstacleParam3;
- /* 0x117 */ u8 mObstacleParam4;
+ // Copied into the spawned dAcObeltObstacle_c's params (same bit layout as read by the obstacle)
+ /* 0x113 */ u8 mObstacleGroupId;
+ /* 0x114 */ u8 mObstacleSceneflag;
+ /* 0x115 */ u8 mObstacleSceneflagInverted;
+ /* 0x116 */ u8 mObstacleTimeVariant;
+ /* 0x117 */ u8 mObstacleCheckPastState;
/* 0x118 */ u8 _0x118[0x11C - 0x118];
-
- static const f32 lbl_446_rodata_0;
- static const f32 lbl_446_rodata_4;
- static const f32 lbl_446_rodata_8;
};
#endif
diff --git a/src/REL/d/t/d_t_belt_obstacle.cpp b/src/REL/d/t/d_t_belt_obstacle.cpp
index b3e43ed3..2f07e2c1 100644
--- a/src/REL/d/t/d_t_belt_obstacle.cpp
+++ b/src/REL/d/t/d_t_belt_obstacle.cpp
@@ -23,11 +23,11 @@ int dTgBeltObstacle_c::create() {
if (mSpawnType == 0xF) {
mSpawnType = SPAWN_BELT_OBSTACLE;
}
- mObstacleParam0 = getFromParams(0, 0xF);
- mObstacleParam1 = getFromParams(4, 0xFF);
- mObstacleParam2 = getFromParams(12, 0x1);
- mObstacleParam3 = getFromParams(13, 0xF);
- mObstacleParam4 = getFromParams(17, 0x1);
+ mObstacleGroupId = getFromParams(0, 0xF);
+ mObstacleSceneflag = getFromParams(4, 0xFF);
+ mObstacleSceneflagInverted = getFromParams(12, 0x1);
+ mObstacleTimeVariant = getFromParams(13, 0xF);
+ mObstacleCheckPastState = getFromParams(17, 0x1);
mSpawnTimer = mFirstSpawnDelay;
return SUCCEEDED;
}
@@ -37,9 +37,8 @@ int dTgBeltObstacle_c::doDelete() {
}
int dTgBeltObstacle_c::actorExecute() {
- mPastState =
- dTimeAreaMgr_c::GetInstance()->checkPositionIsInPastState(mRoomID, mPosition, nullptr, lbl_446_rodata_0);
- if (mPastState > lbl_446_rodata_4 && sLib::calcTimer(&mSpawnTimer) == 0) {
+ mPastState = dTimeAreaMgr_c::GetInstance()->checkPositionIsInPastState(mRoomID, mPosition, nullptr, 100.0f);
+ if (mPastState > 0.0f && sLib::calcTimer(&mSpawnTimer) == 0) {
if (mSpawnType == SPAWN_BELT_OBSTACLE) {
spawnBeltObstacle();
} else if (mSpawnType == SPAWN_STAMINA_FRUIT) {
@@ -55,9 +54,9 @@ int dTgBeltObstacle_c::draw() {
}
void dTgBeltObstacle_c::spawnBeltObstacle() {
- mVec3_c scale(mScale.x * lbl_446_rodata_8, mScale.y * lbl_446_rodata_8, mScale.z * lbl_446_rodata_8);
- u32 params = (mObstacleParam4 << 17 | (mObstacleParam3 & 0xF) << 13) |
- ((mObstacleParam0 & 0xF) | (mObstacleParam1 << 4) | ((mObstacleParam2 & 1) << 12));
+ mVec3_c scale = mScale * 0.01f;
+ u32 params = (mObstacleCheckPastState << 17 | (mObstacleTimeVariant & 0xF) << 13) |
+ ((mObstacleGroupId & 0xF) | (mObstacleSceneflag << 4) | ((mObstacleSceneflagInverted & 1) << 12));
dAcObjBase_c *obstacle =
dAcObjBase_c::create(fProfile::OBJ_BELT_OBSTACLE, mRoomID, params, &mPosition, &mRotation, &scale, -1);
mObstacle.link(static_cast<dAcObeltObstacle_c *>(obstacle));
@@ -67,8 +66,3 @@ void dTgBeltObstacle_c::spawnStaminaFruit() {
u32 params2 = dAcBase_c::buildParams2(-1, dAcItem_c::fn_8024A2A0(0, 0));
dAcItem_c::spawnItem(ITEM_STAMINA_FRUIT, mRoomID, mPosition, mRotation, params2, 1);
}
-
-// Defined after use so that actorExecute does not load them through a rodata pool base register
-const f32 dTgBeltObstacle_c::lbl_446_rodata_0 = 100.0f;
-const f32 dTgBeltObstacle_c::lbl_446_rodata_4 = 0.0f;
-const f32 dTgBeltObstacle_c::lbl_446_rodata_8 = 0.01f;