summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlepelog <25211966+lepelog@users.noreply.github.com>2026-06-29 23:59:07 +0200
committerlepelog <25211966+lepelog@users.noreply.github.com>2026-06-29 23:59:07 +0200
commita68b476132e9622597957e16749b10c0a9810015 (patch)
tree1750d73d90766bb264f131677258711a446002b6
parent13b68b65df7c8f255302571ff54645a8b86340c0 (diff)
more matches
-rw-r--r--config/SOUE01/rels/d_a_npc_beeNP/symbols.txt55
-rw-r--r--src/REL/d/a/npc/d_a_npc_bee.cpp33
2 files changed, 69 insertions, 19 deletions
diff --git a/config/SOUE01/rels/d_a_npc_beeNP/symbols.txt b/config/SOUE01/rels/d_a_npc_beeNP/symbols.txt
index 88e47829..80b008d5 100644
--- a/config/SOUE01/rels/d_a_npc_beeNP/symbols.txt
+++ b/config/SOUE01/rels/d_a_npc_beeNP/symbols.txt
@@ -30,7 +30,55 @@ drawOpa__11dShpProc1_cFv = .text:0x00002990; // type:function size:0x4
@272@__dt__15dCcD_Linked_SphFv = .text:0x000029A0; // type:function size:0x8
_ctors = .ctors:0x00000000; // type:label scope:global
_dtors = .dtors:0x00000000; // type:label scope:global
-lbl_14_rodata_0 = .rodata:0x00000000; // type:object size:0xC4 data:float
+lbl_14_rodata_0 = .rodata:0x00000000; // type:object size:0x4 data:float
+lbl_14_rodata_4 = .rodata:0x00000004; // type:object size:0x4 data:float
+lbl_14_rodata_8 = .rodata:0x00000008; // type:object size:0x4 data:float
+lbl_14_rodata_c = .rodata:0x0000000C; // type:object size:0x4 data:float
+lbl_14_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float
+lbl_14_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float
+lbl_14_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float
+lbl_14_rodata_1c = .rodata:0x0000001C; // type:object size:0x4 data:float
+lbl_14_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float
+lbl_14_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float
+lbl_14_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float
+lbl_14_rodata_2c = .rodata:0x0000002C; // type:object size:0x4 data:float
+lbl_14_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float
+lbl_14_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float
+lbl_14_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float
+lbl_14_rodata_3c = .rodata:0x0000003C; // type:object size:0x4 data:float
+lbl_14_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float
+lbl_14_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float
+lbl_14_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float
+lbl_14_rodata_4c = .rodata:0x0000004C; // type:object size:0x4 data:float
+lbl_14_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float
+lbl_14_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float
+lbl_14_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float
+lbl_14_rodata_5c = .rodata:0x0000005C; // type:object size:0x4 data:float
+lbl_14_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float
+lbl_14_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float
+lbl_14_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float
+lbl_14_rodata_6c = .rodata:0x0000006C; // type:object size:0x4 data:float
+lbl_14_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float
+lbl_14_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float
+lbl_14_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float
+lbl_14_rodata_7c = .rodata:0x0000007C; // type:object size:0x4 data:float
+lbl_14_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float
+lbl_14_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float
+lbl_14_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float
+lbl_14_rodata_8c = .rodata:0x0000008C; // type:object size:0x4 data:float
+lbl_14_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float
+lbl_14_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float
+lbl_14_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float
+lbl_14_rodata_9c = .rodata:0x0000009C; // type:object size:0x4 data:float
+lbl_14_rodata_a0 = .rodata:0x000000A0; // type:object size:0x4 data:float
+lbl_14_rodata_a4 = .rodata:0x000000A4; // type:object size:0x4 data:float
+lbl_14_rodata_a8 = .rodata:0x000000A8; // type:object size:0x4 data:float
+lbl_14_rodata_ac = .rodata:0x000000AC; // type:object size:0x4 data:float
+lbl_14_rodata_b0 = .rodata:0x000000B0; // type:object size:0x4 data:float
+lbl_14_rodata_b4 = .rodata:0x000000B4; // type:object size:0x4 data:float
+lbl_14_rodata_b8 = .rodata:0x000000B8; // type:object size:0x4 data:float
+lbl_14_rodata_bc = .rodata:0x000000BC; // type:object size:0x4 data:float
+lbl_14_rodata_c0 = .rodata:0x000000C0; // type:object size:0x4 data:float
g_profile_NPC_BEE = .data:0x00000000; // type:object size:0x10 data:4byte
beeColliderSrc = .data:0x00000010; // type:object size:0x2C
lbl_14_data_3C = .data:0x0000003C; // type:object size:0x6 data:string
@@ -39,7 +87,10 @@ lbl_14_data_4C = .data:0x0000004C; // type:object size:0x7 data:string
lbl_14_data_54 = .data:0x00000054; // type:object size:0x7 data:string
@LOCAL@createHeap__11dAcNpcBee_cFv@sModelNames = .data:0x00000060; // type:object size:0x10 data:4byte
lbl_14_data_70 = .data:0x00000070; // type:object size:0x4 data:string
-lbl_14_data_74 = .data:0x00000074; // type:object size:0x28
+lbl_14_data_74 = .data:0x00000074; // type:object size:0x19 data:string
+lbl_14_data_90 = .data:0x00000090; // type:object size:0x4
+lbl_14_data_94 = .data:0x00000094; // type:object size:0x4
+lbl_14_data_98 = .data:0x00000098; // type:object size:0x4
__vt__11dAcNpcBee_c = .data:0x0000009C; // type:object size:0x8C
__vt__15dCcD_Linked_Sph = .data:0x00000128; // type:object size:0x70
__vt__11dShpProc1_c = .data:0x00000198; // type:object size:0x58
diff --git a/src/REL/d/a/npc/d_a_npc_bee.cpp b/src/REL/d/a/npc/d_a_npc_bee.cpp
index 4e79b007..65786ba1 100644
--- a/src/REL/d/a/npc/d_a_npc_bee.cpp
+++ b/src/REL/d/a/npc/d_a_npc_bee.cpp
@@ -40,6 +40,14 @@
SPECIAL_ACTOR_PROFILE(NPC_BEE, dAcNpcBee_c, fProfile::NPC_BEE, 0x123, 0, 0);
+static dCcD_SrcSph beeColliderSrc = {
+ /* mObjInf */ {/* mObjAt */ {AT_TYPE_0x2000000, 0x20000F, {0, 0, 0}, 1, 0, 0, 0, 0, 0},
+ /* mObjTg */ {AT_TYPE_BUGNET | AT_TYPE_BELLOWS | AT_TYPE_BOMB, 0x00004011, {0, 00, 0x40F}, 8, 0},
+ /* mObjCo */ {0}},
+ /* mSphInf */
+ {15.0f}
+};
+
bool dAcNpcBee_c::createHeap() {
mRes = nw4r::g3d::ResFile(getOarcResFile("Bee"));
static const char *sModelNames[4] = {
@@ -55,15 +63,7 @@ bool dAcNpcBee_c::createHeap() {
}
return SUCCEEDED;
}
-static dCcD_SrcSph beeColliderSrc = {
- /* mObjInf */ {/* mObjAt */ {AT_TYPE_0x2000000, 0x20000F, {0, 0, 0}, 1, 0, 0, 0, 0, 0},
- /* mObjTg */ {AT_TYPE_BUGNET | AT_TYPE_BELLOWS | AT_TYPE_BOMB, 0x00004011, {0, 00, 0x40F}, 8, 0},
- /* mObjCo */ {0}},
- /* mSphInf */
- {15.0f}
-};
-// non matching
int dAcNpcBee_c::create() {
mSceneflag = getFromParams(0x10, 0xFF);
// mRoom regalloc
@@ -85,9 +85,8 @@ int dAcNpcBee_c::create() {
bee->mHide = 1;
}
}
- // probably inline here, regswaps
+ setInteractionFlags(0x80);
mStts.SetRank(3);
- mInteractionFlags |= 0x80;
mColliderList.SetStts(mStts);
mFrameCounter = cM::rndF(65536);
dAcObjBase_c *honeycomb =
@@ -156,12 +155,13 @@ void dAcNpcBee_c::actuallyUpdateSwarmBees() {
int beeModelIndex = 0;
static mVec3_c colliderDisabledPos(10000.f, -20000.f, 50000.f);
dCamera_c *camera = dScGame_c::getCamera();
+ bool hideBee;
bool isFirst = true;
int flyingBeeCount = 0;
mAttackActorDistFromHome = mStartingPos.distance(mAttackActor->mPositionCopy2);
mPosition = mStartingPos;
- for (int i = 0; i < mSwarmBeeCount; i++, bee++) {
- bool hideBee = true;
+ for (u32 i = 0; (s32)i < mSwarmBeeCount; i++, bee++) {
+ hideBee = true;
mMtx_c mtx;
if (bee->mBeeState != dAcNpcBeeSingleBee::BEE_STATE_DEAD) {
beesAlive++;
@@ -513,8 +513,8 @@ void dAcNpcBee_c::handleBeeFlyingStates(dAcNpcBeeSingleBee *bee) {
if (distToTarget > 500.f) {
distToTarget = 500.f;
}
- // weird mul vs slwi
- offsetToTarget.x += distToTarget * nw4r::math::SinIdx(bee->mTimer * 0x300);
+ // seems fake, I suspenct there is an inline that takes s16
+ offsetToTarget.x += distToTarget * nw4r::math::SinIdx((s16)(bee->mTimer * 0x400));
offsetToTarget.y += distToTarget * nw4r::math::CosIdx(bee->mTimer * 0x300) * 0.5f;
offsetToTarget.z += distToTarget * nw4r::math::CosIdx(bee->mTimer * 0x500);
}
@@ -529,9 +529,8 @@ void dAcNpcBee_c::handleBeeFlyingStates(dAcNpcBeeSingleBee *bee) {
} else {
s32 fVar17 = nw4r::math::SinIdx(bee->mTimer * 0xDAC) * 1500.f;
s32 fVar16 = nw4r::math::SinIdx(bee->mTimer * 3000) * 1500.f;
- // non match
- sLib::addCalcAngle(bee->mCrawlingRotation.y.ref(), fVar17 + offsetToTarget.atan2sX_Z(), 1, 0x1000);
- sLib::addCalcAngle(bee->mCrawlingRotation.x.ref(), fVar16 - offsetToTarget.atan2sY_XZ(), 1, 0x1000);
+ sLib::addCalcAngle(bee->mCrawlingRotation.y.ref(), fVar17 + cM::atan2s(offsetToTarget.x, offsetToTarget.z), 1, 0x1000);
+ sLib::addCalcAngle(bee->mCrawlingRotation.x.ref(), fVar16 - cM::atan2s(offsetToTarget.y, offsetToTarget.absXZ()), 1, 0x1000);
}
}
mtx.YrotS(bee->mCrawlingRotation.y);