d_a_e_skytail OK

This commit is contained in:
elijah-thomas774
2026-09-24 17:21:34 -04:00
parent 93e4f12526
commit fe566ba5db
9 changed files with 1508 additions and 64 deletions
+2 -2
View File
@@ -138,7 +138,7 @@ fn_129_C390 = .text:0x0000C390; // type:function size:0x40
fn_129_C3D0 = .text:0x0000C3D0; // type:function size:0xA8
fn_129_C480 = .text:0x0000C480; // type:function size:0x14
fn_129_C494 = .text:0x0000C494; // type:function size:0x4
fn_129_C4A0 = .text:0x0000C4A0; // type:function size:0xA4
fn_129_C4A0__7dBird_cFR7mVec3_cUs = .text:0x0000C4A0; // type:function size:0xA4
AcBird__handleDamage = .text:0x0000C550; // type:function size:0x208
fn_129_C760 = .text:0x0000C760; // type:function size:0x4C
AcBird__setDamageAnim = .text:0x0000C7B0; // type:function size:0x50
@@ -149,7 +149,7 @@ fn_129_C980 = .text:0x0000C980; // type:function size:0xC4
fn_129_CA50 = .text:0x0000CA50; // type:function size:0x298
fn_129_CCF0 = .text:0x0000CCF0; // type:function size:0x18
fn_129_CD10 = .text:0x0000CD10; // type:function size:0x29C
fn_129_CFB0 = .text:0x0000CFB0; // type:function size:0x24
fn_129_CFB0__7dBird_cFv = .text:0x0000CFB0; // type:function size:0x24
fn_129_CFE0 = .text:0x0000CFE0; // type:function size:0x50
fn_129_D030 = .text:0x0000D030; // type:function size:0x4
fn_129_D040 = .text:0x0000D040; // type:function size:0x28
+44 -42
View File
@@ -3,32 +3,32 @@ _epilog = .text:0x00000030; // type:function size:0x2C scope:global
_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
fn_172_F0 = .text:0x000000F0; // type:function size:0x40
__dt__7mVec3_cFv = .text:0x000000F0; // type:function size:0x40
dAcESkytail_c_classInit__Fv = .text:0x00000130; // type:function size:0x164
fn_172_2A0 = .text:0x000002A0; // type:function size:0x58
fn_172_300 = .text:0x00000300; // type:function size:0x90
__ct__22dCcD_Linked<8dCcD_Sph>Fv = .text:0x000002A0; // type:function size:0x58
__dt__22dCcD_Linked<8dCcD_Sph>Fv = .text:0x00000300; // type:function size:0x90
__dt__26sFState_c<13dAcESkytail_c>Fv = .text:0x00000390; // type:function size:0x58
__dt__29sFStateFct_c<13dAcESkytail_c>Fv = .text:0x000003F0; // type:function size:0x6C
__dt__82sStateMgr_c<13dAcESkytail_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000460; // type:function size:0xA0
__dt__52sFStateMgr_c<13dAcESkytail_c,20sStateMethodUsr_FI_c>Fv = .text:0x00000500; // type:function size:0xA4
fn_172_5B0 = .text:0x000005B0; // type:function size:0x4
fn_172_5C0 = .text:0x000005C0; // type:function size:0x74
fn_172_640 = .text:0x00000640; // type:function size:0x58
fn_172_6A0 = .text:0x000006A0; // type:function size:0x74
fn_172_720 = .text:0x00000720; // type:function size:0x264
fn_172_990 = .text:0x00000990; // type:function size:0xB0
fn_172_A40 = .text:0x00000A40; // type:function size:0x1FC
fn_172_C40 = .text:0x00000C40; // type:function size:0x4C
__ct__7mVec3_cFv = .text:0x000005B0; // type:function size:0x4
__dt__Q213dAcESkytail_c14callbackBody_cFv = .text:0x000005C0; // type:function size:0x74
__ct__Q213dAcESkytail_c17callbackAntenna_cFv = .text:0x00000640; // type:function size:0x58
__dt__Q213dAcESkytail_c17callbackAntenna_cFv = .text:0x000006A0; // type:function size:0x74
timingB__Q213dAcESkytail_c14callbackBody_cFUlPQ34nw4r3g3d13WorldMtxManipQ34nw4r3g3d6ResMdl = .text:0x00000720; // type:function size:0x264
timingB__Q213dAcESkytail_c17callbackAntenna_cFUlPQ34nw4r3g3d13WorldMtxManipQ34nw4r3g3d6ResMdl = .text:0x00000990; // type:function size:0xB0
fn_172_A40__13dAcESkytail_cFv = .text:0x00000A40; // type:function size:0x1FC
ChkTgHit__8cCcD_ObjFv = .text:0x00000C40; // type:function size:0x4C
changeState__82sStateMgr_c<13dAcESkytail_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x00000C90; // type:function size:0x10
fn_172_CA0 = .text:0x00000CA0; // type:function size:0x1C
fn_172_CC0 = .text:0x00000CC0; // type:function size:0xE8
fn_172_DB0 = .text:0x00000DB0; // type:function size:0x31C
fn_172_10D0 = .text:0x000010D0; // type:function size:0x8
fn_172_10E0 = .text:0x000010E0; // type:function size:0xC0C
calcTimer<s>__4sLibFPs_s = .text:0x00000CA0; // type:function size:0x1C
createHeap__13dAcESkytail_cFv = .text:0x00000CC0; // type:function size:0xE8
create__13dAcESkytail_cFv = .text:0x00000DB0; // type:function size:0x31C
doDelete__13dAcESkytail_cFv = .text:0x000010D0; // type:function size:0x8
actorExecute__13dAcESkytail_cFv = .text:0x000010E0; // type:function size:0xC0C
getStateID__82sStateMgr_c<13dAcESkytail_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00001CF0; // type:function size:0x10
executeState__82sStateMgr_c<13dAcESkytail_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00001D00; // type:function size:0x10
fn_172_1D10 = .text:0x00001D10; // type:function size:0x4C
fn_172_1D60 = .text:0x00001D60; // type:function size:0x68
ChkCoHit__8cCcD_ObjFv = .text:0x00001D10; // type:function size:0x4C
draw__13dAcESkytail_cFv = .text:0x00001D60; // type:function size:0x68
initializeState_RandomMove__13dAcESkytail_cFv = .text:0x00001DD0; // type:function size:0x9C
executeState_RandomMove__13dAcESkytail_cFv = .text:0x00001E70; // type:function size:0x1EC
finalizeState_RandomMove__13dAcESkytail_cFv = .text:0x00002060; // type:function size:0x10
@@ -37,7 +37,7 @@ executeState_Move__13dAcESkytail_cFv = .text:0x00002080; // type:function size:0
finalizeState_Move__13dAcESkytail_cFv = .text:0x00002430; // type:function size:0x4
initializeState_ParallelMove__13dAcESkytail_cFv = .text:0x00002440; // type:function size:0x90
executeState_ParallelMove__13dAcESkytail_cFv = .text:0x000024D0; // type:function size:0xB30
fn_172_3000 = .text:0x00003000; // type:function size:0x48
ChkAtHit__8cCcD_ObjFv = .text:0x00003000; // type:function size:0x48
finalizeState_ParallelMove__13dAcESkytail_cFv = .text:0x00003050; // type:function size:0x1C
initializeState_FrontAttack__13dAcESkytail_cFv = .text:0x00003070; // type:function size:0x78
executeState_FrontAttack__13dAcESkytail_cFv = .text:0x000030F0; // type:function size:0x588
@@ -51,15 +51,15 @@ finalizeState_Dead__13dAcESkytail_cFv = .text:0x00003B80; // type:function size:
initializeState_Skytail__13dAcESkytail_cFv = .text:0x00003B90; // type:function size:0x4
executeState_Skytail__13dAcESkytail_cFv = .text:0x00003BA0; // type:function size:0x118
finalizeState_Skytail__13dAcESkytail_cFv = .text:0x00003CC0; // type:function size:0x4
fn_172_3CD0 = .text:0x00003CD0; // type:function size:0x570
fn_172_4240 = .text:0x00004240; // type:function size:0x384
fn_172_45D0 = .text:0x000045D0; // type:function size:0x4
fn_172_45E0 = .text:0x000045E0; // type:function size:0x4
fn_172_45F0 = .text:0x000045F0; // type:function size:0x40
fn_172_4630 = .text:0x00004630; // type:function size:0x8
fn_172_4640 = .text:0x00004640; // type:function size:0x4
fn_172_4650 = .text:0x00004650; // type:function size:0x4
fn_172_4660 = .text:0x00004660; // type:function size:0x8
fn_172_3CD0__13dAcESkytail_cFv = .text:0x00003CD0; // type:function size:0x570
fn_172_4240__13dAcESkytail_cFl = .text:0x00004240; // type:function size:0x384
fn_172_45D0__13dAcESkytail_cFv = .text:0x000045D0; // type:function size:0x4
fn_172_45E0__13dAcESkytail_cFv = .text:0x000045E0; // type:function size:0x4
fn_172_45F0__13dAcESkytail_cFv = .text:0x000045F0; // type:function size:0x40
vt_0x88__11dAcEnBase_cFi = .text:0x00004630; // type:function size:0x8
vt_0x84__11dAcEnBase_cFv = .text:0x00004640; // type:function size:0x4
vt_0x80__11dAcEnBase_cFv = .text:0x00004650; // type:function size:0x4
getObjectListEntry__11dAcEnBase_cFv = .text:0x00004660; // type:function size:0x8
__dt__13dAcESkytail_cFv = .text:0x00004670; // type:function size:0x164
build__29sFStateFct_c<13dAcESkytail_c>FRC12sStateIDIf_c = .text:0x000047E0; // type:function size:0x60
dispose__29sFStateFct_c<13dAcESkytail_c>FRP10sStateIf_c = .text:0x00004840; // type:function size:0xC
@@ -78,7 +78,7 @@ initializeState__28sFStateID_c<13dAcESkytail_c>CFR13dAcESkytail_c = .text:0x0000
__sinit_\d_a_e_skytail_cpp = .text:0x000049A0; // type:function size:0x5DC scope:local
__dt__28sFStateID_c<13dAcESkytail_c>Fv = .text:0x00004F80; // type:function size:0x58
isSameName__28sFStateID_c<13dAcESkytail_c>CFPCc = .text:0x00004FE0; // type:function size:0x88
fn_172_5070 = .text:0x00005070; // type:function size:0x8
@272@__dt__22dCcD_Linked<8dCcD_Sph>Fv = .text:0x00005070; // type:function size:0x8
_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
@@ -97,21 +97,23 @@ lbl_172_data_F0 = .data:0x000000F0; // type:object size:0xC data:4byte
lbl_172_data_FC = .data:0x000000FC; // type:object size:0x4 data:4byte
lbl_172_data_100 = .data:0x00000100; // type:object size:0x4 data:4byte
lbl_172_data_104 = .data:0x00000104; // type:object size:0x4 data:4byte
lbl_172_data_108 = .data:0x00000108; // type:object size:0x90
lbl_172_data_198 = .data:0x00000198; // type:object size:0x30
lbl_172_data_1C8 = .data:0x000001C8; // type:object size:0x30
lbl_172_data_1F8 = .data:0x000001F8; // type:object size:0x18
lbl_172_data_210 = .data:0x00000210; // type:object size:0x18
lbl_172_data_228 = .data:0x00000228; // type:object size:0x70
lbl_172_data_298 = .data:0x00000298; // type:object size:0x18
lbl_172_data_2B0 = .data:0x000002B0; // type:object size:0x1F8
__vt__13dAcESkytail_c = .data:0x00000108; // type:object size:0x8C
__vt__52sFStateMgr_c<13dAcESkytail_c,20sStateMethodUsr_FI_c> = .data:0x00000198; // type:object size:0x30
__vt__82sStateMgr_c<13dAcESkytail_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x000001C8; // type:object size:0x30
__vt__29sFStateFct_c<13dAcESkytail_c> = .data:0x000001F8; // type:object size:0x14
__vt__26sFState_c<13dAcESkytail_c> = .data:0x00000210; // type:object size:0x18
__vt__22dCcD_Linked<8dCcD_Sph> = .data:0x00000228; // type:object size:0x70
__vt__Q213dAcESkytail_c17callbackAntenna_c = .data:0x00000298; // type:object size:0x18
__vt__Q213dAcESkytail_c14callbackBody_c = .data:0x000002B0; // type:object size:0x1F8
lbl_172_data_4A8 = .data:0x000004A8; // type:object size:0x34
__global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global
lbl_172_bss_8 = .bss:0x00000008; // type:object size:0x10 align:4 data:float
lbl_172_bss_18 = .bss:0x00000018; // type:object size:0x40 data:4byte
lbl_172_bss_58 = .bss:0x00000058; // type:object size:0x40 data:4byte
lbl_172_bss_98 = .bss:0x00000098; // type:object size:0x40 data:4byte
lbl_172_bss_D8 = .bss:0x000000D8; // type:object size:0x80 data:4byte
lbl_172_bss_158 = .bss:0x00000158; // type:object size:0xCC data:4byte
StateID_RandomMove__13dAcESkytail_c = .bss:0x00000018; // type:object size:0x30 data:4byte
StateID_Move__13dAcESkytail_c = .bss:0x00000058; // type:object size:0x30 data:4byte
StateID_ParallelMove__13dAcESkytail_c = .bss:0x00000098; // type:object size:0x30 data:4byte
StateID_FrontAttack__13dAcESkytail_c = .bss:0x000000D8; // type:object size:0x30 data:4byte
StateID_Charge__13dAcESkytail_c = .bss:0x00000118; // type:object size:0x30 data:4byte
StateID_Dead__13dAcESkytail_c = .bss:0x00000158; // type:object size:0x30 data:4byte
StateID_Skytail__13dAcESkytail_c = .bss:0x00000198; // type:object size:0x30 data:4byte
lbl_172_bss_224 = .bss:0x00000224; // type:object size:0x1 data:byte
lbl_172_bss_228 = .bss:0x00000228; // type:object size:0xC align:4 data:float
+1 -1
View File
@@ -1187,7 +1187,7 @@ fn_800307E0 = .text:0x800307E0; // type:function size:0x34
fn_80030820 = .text:0x80030820; // type:function size:0x14
fn_80030840 = .text:0x80030840; // type:function size:0x13C
fn_80030980__11dAcEnBase_cFRQ23m3d5mdl_clb = .text:0x80030980; // type:function size:0x188
fn_80030B10 = .text:0x80030B10; // type:function size:0x10C
isWithinCameraView__11dAcEnBase_cFff = .text:0x80030B10; // type:function size:0x10C
fn_80030c20__11dAcEnBase_cFUlffff = .text:0x80030C20; // type:function size:0x28
fn_80030C50 = .text:0x80030C50; // type:function size:0x8
fn_80030C60 = .text:0x80030C60; // type:function size:0x4
+1 -1
View File
@@ -2138,7 +2138,7 @@ config.libs = [
Rel(NonMatching, "d_a_e_sf4", "REL/d/a/e/d_a_e_sf4.cpp"),
Rel(NonMatching, "d_a_e_sf", "REL/d/a/e/d_a_e_sf.cpp"),
Rel(NonMatching, "d_a_e_siren", "REL/d/a/e/d_a_e_siren.cpp"),
Rel(NonMatching, "d_a_e_skytail", "REL/d/a/e/d_a_e_skytail.cpp"),
Rel(Matching, "d_a_e_skytail", "REL/d/a/e/d_a_e_skytail.cpp"),
Rel(NonMatching, "d_a_e_sm", "REL/d/a/e/d_a_e_sm.cpp"),
Rel(NonMatching, "d_a_e_spark", "REL/d/a/e/d_a_e_spark.cpp"),
Rel(NonMatching, "d_a_e_st", "REL/d/a/e/d_a_e_st.cpp"),
+21 -1
View File
@@ -2,6 +2,7 @@
#define D_A_BIRD_H
#include "d/a/obj/d_a_obj_base.h"
#include "m/m_vec.h"
#include "s/s_State.hpp"
class dBird_c : public dAcObjBase_c {
@@ -28,19 +29,38 @@ public:
// fn_129_8DD0, only referenced by d_a_obj_bird_sp
void accelerateTowards(mVec3_c &targetDirection);
void fn_129_C4A0(mVec3_c &out, u16);
bool fn_129_CFB0();
s16 getNumDashes() const {
return mNumDashes;
}
const mVec3_c &getField_0xFAC() const {
return field_0xFAC;
}
s16 getField_0xFCC() const {
return field_0xFCC;
}
static dBird_c *getInstance() {
return spInstance;
}
dAcObjRef_c &getRef_0xEB8() {
return field_0xEB8;
}
private:
static dBird_c *spInstance;
/* 0x??? */ STATE_MGR_DECLARE(dBird_c);
u8 _0x36C[0xF8E - 0x36C];
u8 _0x36C[0xEB8 - 0x36C];
/* 0xEB8 */ dAcObjRef_c field_0xEB8;
u8 _0xEC4[0xF8E - 0xEC4];
/* 0xF8E */ s16 mNumDashes;
/* 0xFB0 */ u8 _0xFB90[0xFAC - 0xF90];
/* 0xFAC */ mVec3_c field_0xFAC;
/* 0xFB8 */ u8 _0xFB8[0xFCC - 0xFB8];
/* 0xFCC */ s16 field_0xFCC;
};
#endif
+210 -1
View File
@@ -2,13 +2,121 @@
#define D_A_E_SKYTAIL_H
#include "d/a/e/d_a_en_base.h"
#include "d/col/bg/d_bg_s_acch.h"
#include "d/col/cc/d_cc_d.h"
#include "d/d_cc.h"
#include "m/m3d/m_mdl.h"
#include "m/m_angle.h"
#include "m/m_mtx.h"
#include "m/m_vec.h"
#include "s/s_State.hpp"
#include "toBeSorted/d_d3d.h"
class dAcESkytail_c : public dAcEnBase_c {
class callbackBody_c : public m3d::callback_c {
public:
callbackBody_c() {}
virtual ~callbackBody_c() {}
virtual void timingB(u32, nw4r::g3d::WorldMtxManip *, nw4r::g3d::ResMdl) override;
// Node Center -> then all spines
mVec3_c mPos[12];
mAng3_c mAng[12];
f32 mScaleSpine11;
s16 field_0x10DC;
s16 field_0x10DE;
s16 field_0x10E0;
};
enum BodyNode_e {
BODY_NODE_Center,
BODY_NODE_Head,
BODY_NODE_Hair,
BODY_NODE_LMouthBig,
BODY_NODE_LMouthSmall,
BODY_NODE_RMouthBig,
BODY_NODE_RMouthSmall,
BODY_NODE_Spine01,
BODY_NODE_Spine02,
BODY_NODE_Spine03,
BODY_NODE_L1wing01,
BODY_NODE_L1wing02,
BODY_NODE_L1wing03,
BODY_NODE_L1wing04,
BODY_NODE_L1wing05,
BODY_NODE_R1wing01,
BODY_NODE_R1wing02,
BODY_NODE_R1wing03,
BODY_NODE_R1wing04,
BODY_NODE_R1wing05,
BODY_NODE_Spine04,
BODY_NODE_Spine05,
BODY_NODE_L2wing01,
BODY_NODE_L2wing02,
BODY_NODE_L2wing03,
BODY_NODE_L2wing04,
BODY_NODE_R2wing01,
BODY_NODE_R2wing02,
BODY_NODE_R2wing03,
BODY_NODE_R2wing04,
BODY_NODE_Spine06,
BODY_NODE_Spine07,
BODY_NODE_L3wing01,
BODY_NODE_L3wing02,
BODY_NODE_L3wing03,
BODY_NODE_L3wing04,
BODY_NODE_R3wing01,
BODY_NODE_R3wing02,
BODY_NODE_R3wing03,
BODY_NODE_R3wing04,
BODY_NODE_Spine08,
BODY_NODE_Spine09,
BODY_NODE_Spine10,
BODY_NODE_Spine11
};
class callbackAntenna_c : public m3d::callback_c {
public:
callbackAntenna_c() {}
virtual ~callbackAntenna_c() {}
virtual void timingB(u32, nw4r::g3d::WorldMtxManip *, nw4r::g3d::ResMdl) override;
// Corresponds to the AntennaNode_e
mVec3_c mPos[9];
mAng3_c mAng[9];
};
enum AntennaNode_e {
ANTENNA_NODE_AntennaCenter,
ANTENNA_NODE_Antenna01,
ANTENNA_NODE_Antenna02,
ANTENNA_NODE_Antenna03,
ANTENNA_NODE_Antenna04,
ANTENNA_NODE_Antenna05,
ANTENNA_NODE_Antenna06,
ANTENNA_NODE_Antenna07,
ANTENNA_NODE_Antenna08,
};
enum CollisionIdx_e {
COLLIDER_Head,
COLLIDER_Spine4,
COLLIDER_Spine6,
COLLIDER_Spine8,
COLLIDER_Rear,
};
public:
dAcESkytail_c() : mStateMgr(*this) {}
virtual ~dAcESkytail_c() {}
virtual int create() override;
virtual int doDelete() override;
virtual int draw() override;
virtual bool createHeap() override;
virtual int actorExecute() override;
STATE_FUNC_DECLARE(dAcESkytail_c, RandomMove);
STATE_FUNC_DECLARE(dAcESkytail_c, Move);
STATE_FUNC_DECLARE(dAcESkytail_c, ParallelMove);
@@ -17,8 +125,109 @@ public:
STATE_FUNC_DECLARE(dAcESkytail_c, Dead);
STATE_FUNC_DECLARE(dAcESkytail_c, Skytail);
STATE_MGR_DEFINE_UTIL_ISSTATE(dAcESkytail_c);
STATE_MGR_DEFINE_UTIL_EXECUTESTATE(dAcESkytail_c);
STATE_MGR_DEFINE_UTIL_CHANGESTATE(dAcESkytail_c);
void fn_172_A40();
void fn_172_3CD0();
void fn_172_4240(s32);
void fn_172_45D0();
void fn_172_45E0();
void fn_172_45F0();
private:
/* 0x??? */ STATE_MGR_DECLARE(dAcESkytail_c);
/* 0x0378 */ d3d::AnmMdlWrapper mBodyMdl;
/* 0x03E8 */ d3d::AnmMdlWrapper mAntennaMdl[2];
/* 0x04C8 */ dBgS_AcchCir mAcchCir;
/* 0x0524 */ dBgS_ObjAcch mAcch;
/* 0x08D4 */ dCcD_Linked<dCcD_Sph> mCc[5];
/* 0x0FB4 */ dColliderLinkedList mCollider;
/* 0x0FC0 */ STATE_MGR_DECLARE(dAcESkytail_c);
/* 0x0FFC */ callbackBody_c mBodyTransform;
/* 0x10E4 */ callbackAntenna_c mAntennaTransform[2];
/* 0x1234 */ mMtx_c field_0x1234;
/* 0x1264 */ mVec3_c field_0x1264;
/* 0x1270 */ mVec3_c field_0x1270;
/* 0x127C */ mVec3_c field_0x127C;
/* 0x1288 */ mVec3_c field_0x1288;
/* 0x1294 */ mVec3_c field_0x1294;
/* 0x12A0 */ mVec3_c field_0x12A0;
/* 0x12AC */ mVec3_c field_0x12AC;
/* 0x12B8 */ mVec3_c field_0x12B8;
/* 0x12C4 */ mVec3_c mBirdPosition;
/* 0x12D0 */ mVec3_c field_0x12D0;
/* 0x12DC */ mVec3_c field_0x12DC;
/* 0x12E8 */ mVec3_c field_0x12E8;
/* 0x12F4 */ mVec3_c field_0x12F4;
/* 0x1300 */ mAng3_c field_0x1300;
/* 0x1306 */ mAng3_c mBirdRotation;
/* 0x130C */ f32 field_0x130C;
/* 0x1310 */ f32 field_0x1310;
/* 0x1314 */ f32 mScaleF;
/* 0x1318 */ f32 field_0x1318;
/* 0x131C */ f32 field_0x131C;
/* 0x1310 */ f32 field_0x1320;
/* 0x1324 */ f32 mDistanceToBird;
/* 0x1328 */ f32 field_0x1328;
/* 0x132C */ f32 field_0x132C;
/* 0x1330 */ f32 field_0x1330;
/* 0x1334 */ f32 field_0x1334;
/* 0x1338 */ f32 field_0x1338;
/* 0x133C */ f32 field_0x133C;
/* 0x1340 */ f32 field_0x1340;
/* 0x1344 */ f32 field_0x1344;
/* 0x1348 */ f32 field_0x1348;
/* 0x134C */ f32 field_0x134C;
/* 0x1350 */ u8 _0x1350[0x135C - 0x1350];
/* 0x135C */ s32 field_0x135C;
/* 0x1360 */ s32 field_0x1360;
/* 0x1364 */ s32 field_0x1364;
/* 0x1368 */ s16 field_0x1368;
/* 0x136A */ s16 field_0x136A;
/* 0x136C */ s16 field_0x136C;
/* 0x136E */ s16 field_0x136E;
/* 0x1370 */ s16 field_0x1370;
/* 0x1372 */ s16 field_0x1372;
/* 0x1376 */ s16 field_0x1374;
/* 0x1376 */ s16 field_0x1376;
/* 0x1378 */ s16 field_0x1378;
/* 0x137A */ s16 field_0x137A;
/* 0x137C */ s16 field_0x137C;
/* 0x137E */ s16 field_0x137E;
/* 0x1380 */ s16 field_0x1380;
/* 0x1382 */ s16 field_0x1382;
/* 0x1384 */ s16 field_0x1384;
/* 0x1386 */ s16 field_0x1386;
/* 0x1388 */ s16 field_0x1388;
/* 0x1388 */ s16 field_0x138A;
/* 0x138C */ s16 field_0x138C;
/* 0x138E */ s16 field_0x138E;
/* 0x1390 */ s16 field_0x1390;
/* 0x1392 */ s16 field_0x1392;
/* 0x1394 */ s16 field_0x1394;
/* 0x1394 */ s16 field_0x1396;
/* 0x1398 */ s16 field_0x1398;
/* 0x139A */ s16 field_0x139A;
/* 0x139A */ s16 field_0x139C;
/* 0x139E */ s16 field_0x139E;
/* 0x13A0 */ s16 field_0x13A0;
/* 0x13A2 */ s16 field_0x13A2;
/* 0x13A4 */ u16 field_0x13A4[3];
/* 0x13AA */ u16 field_0x13AA;
/* 0x13AC */ u8 field_0x13AC;
/* 0x13AD */ u8 field_0x13AD;
/* 0x13AE */ u8 field_0x13AE;
/* 0x13AF */ u8 field_0x13AF;
/* 0x13B0 */ u8 field_0x13B0;
/* 0x13B1 */ u8 field_0x13B1;
/* 0x13B2 */ u8 field_0x13B2;
/* 0x13B3 */ u8 field_0x13B3;
/* 0x13B4 */ u8 field_0x13B4;
/* 0x13B5 */ u8 field_0x13B5;
/* 0x13B6 */ u8 field_0x13B6;
/* 0x13B7 */ bool field_0x13B7; // Maybe Bird has Player?
/* 0x13B8 */ u8 field_0x13B8;
};
#endif
+1 -1
View File
@@ -88,7 +88,7 @@ public:
void fn_80030700();
dAcObjBase_c *targetPlayerOrScrapper(f32 biasToScrapper);
static void fn_80030980(m3d::mdl_c &, s32, bool markDirty);
bool isWithinCameraView(f32, f32);
void fn_80030c20(u32 flags, f32, f32, f32, f32);
s32 someEnemyDamageCollisionStuffMaybe(dColliderLinkedList &list, u16 *pOutFlags);
File diff suppressed because it is too large Load Diff
+18
View File
@@ -0,0 +1,18 @@
#include "d/a/e/d_a_en_base.h"
#include "d/d_stage_mgr.h"
#include "m/m_vec.h"
#include "nw4r/g3d/g3d_camera.h"
bool dAcEnBase_c::isWithinCameraView(f32 w, f32 h) {
nw4r::g3d::Camera cam = dStageMgr_c::GetInstance()->getCamera(0);
f32 x, y, width, height, near, far;
cam.GetViewport(&x, &y, &width, &height, &near, &far);
mVec3_c src;
cam.Project(src, mPosition);
return ((width * w <= src.x) && (src.x < width * (1.0f - w))) &&
((height * h <= src.y) && src.y < height * (1.0f - h)) && ((near <= src.z) && (src.z < far));
}