diff options
| author | lepelog <25211966+lepelog@users.noreply.github.com> | 2026-06-29 23:59:07 +0200 |
|---|---|---|
| committer | lepelog <25211966+lepelog@users.noreply.github.com> | 2026-06-29 23:59:07 +0200 |
| commit | a68b476132e9622597957e16749b10c0a9810015 (patch) | |
| tree | 1750d73d90766bb264f131677258711a446002b6 | |
| parent | 13b68b65df7c8f255302571ff54645a8b86340c0 (diff) | |
more matches
| -rw-r--r-- | config/SOUE01/rels/d_a_npc_beeNP/symbols.txt | 55 | ||||
| -rw-r--r-- | src/REL/d/a/npc/d_a_npc_bee.cpp | 33 |
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); |
