summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorCarco_21 <144170194+carter-ktb21@users.noreply.github.com>2025-03-07 12:41:36 -0500
committerGitHub <noreply@github.com>2025-03-07 19:41:36 +0200
commit0f141c2a9ccf9b447fa7765c9b279685bdafdd60 (patch)
tree5e81d1e8903c70848c3b17c0e52595c2add2ffe0 /include
parent53ae95cd95754841a7e908f7c4160fd7117c35ad (diff)
d_a_npc_jagar - ~94% (#2309)
* Began work on d_a_npc_jagar * Major work on daNpc_Jagar_c::create() * Jagar create() - 11% * Continued work on daNpc_Jagar_c * Jagar create() - 87% * Continues work on Jagar * Work on Jagar.checkChangeEvt() * Working on Jagar.talk() * Work on Jagar.changeBtp() * Jagar.checkChangeJoint() & checkRemoveJoint() * Jagar.chkAction() & setAction() * Jagar.chkChuMotion() * Jagar.chkSitMotion() & chkSitMotion2() * Jagar.chkToMotion() * Jagar.CreateHeap() * Jagar.createHeapCallBack() & ctrlJointCallBack() * Jagar.cuAnger() * Jagar.cutClimbUp() - 92% * Jagar.setAttnPos() - 85% * Jagar.cutConversationWithBou() - 48% * Jagar work and daNpcT_c::getActorDistance - 83% * Jagar setParam work and daNpcT_c::getActorDistance - 85% * Prep Jagar push to main * little cleanup * Fixed return type discrepancy * Fixed *other* return type issues & variable names for Jagar * Jagar talkWithBou work * Work on Jagar talk * Data & function cleanup * I dont remember what i added this time lol * Finished some functions * Reworking Jagar talk() * Finished some functions * Attempting to rework cutNeedYourHelp * Almost(ish) done with Jaggle * Almost done with Jaggle * Took out inline assembly in Jagar.chkToMotion() * Cleanup * Minor variable initialization change * Small cleanup * Hopefully fixed d_a_npc_bou compilation error
Diffstat (limited to 'include')
-rw-r--r--include/d/actor/d_a_npc_bou.h85
-rw-r--r--include/d/actor/d_a_npc_jagar.h170
-rw-r--r--include/d/actor/d_a_player.h2
3 files changed, 205 insertions, 52 deletions
diff --git a/include/d/actor/d_a_npc_bou.h b/include/d/actor/d_a_npc_bou.h
index e6469b2cb7..d0bb47750a 100644
--- a/include/d/actor/d_a_npc_bou.h
+++ b/include/d/actor/d_a_npc_bou.h
@@ -11,8 +11,70 @@
* @details
*
*/
+ class daNpc_Bou_Param_c {
+ public:
+ /* 809727F4 */ ~daNpc_Bou_Param_c();
+
+ struct Data {
+ /* 0x00 */ f32 field_0x00; // 255.0f
+ /* 0x04 */ f32 field_0x04; // 3.0f
+ /* 0x08 */ f32 field_0x08; // 1.0f
+ /* 0x0C */ f32 field_0x0c; // 600.0f
+ /* 0x10 */ f32 field_0x10; // 255.0f
+ /* 0x14 */ f32 field_0x14; // 200.0f
+ /* 0x18 */ f32 field_0x18; // 35.0f
+ /* 0x1C */ f32 field_0x1c; // 40.0f
+ /* 0x20 */ f32 field_0x20; // 0.0f
+ /* 0x24 */ f32 field_0x24; // 0.0f
+ /* 0x28 */ f32 field_0x28; // 10.0f
+ /* 0x2C */ f32 field_0x2c; // -10.0f
+ /* 0x30 */ f32 field_0x30; // 30.0f
+ /* 0x34 */ f32 field_0x34; // -10.0f
+ /* 0x38 */ f32 field_0x38; // 45.0f
+ /* 0x3C */ f32 field_0x3c; // -45.0f
+ /* 0x40 */ f32 field_0x40; // 0.6f
+ /* 0x44 */ f32 field_0x44; // 12.0f
+ /* 0x48 */ s16 field_0x48; // 3
+ /* 0x4C */ s16 field_0x4c; // 6
+ /* 0x50 */ s16 field_0x50; // 5
+ /* 0x54 */ s16 field_0x54; // 6
+ /* 0x58 */ f32 field_0x58; // 110.0f
+ /* 0x5C */ f32 field_0x5c; // 500.0f
+ /* 0x60 */ f32 field_0x60; // 300.0f
+ /* 0x64 */ f32 field_0x64; // -300.0f
+ /* 0x68 */ s16 field_0x68; // 60
+ /* 0x6C */ s16 field_0x6c; // 8
+ /* 0x70 */ f32 field_0x70; // 0.0f
+ /* 0x74 */ f32 field_0x74; // 0.0f
+ /* 0x78 */ f32 field_0x78; // 4.0f
+ /* 0x7C */ f32 field_0x7c; // 0.0f
+ /* 0x80 */ f32 field_0x80; // 0.0f
+ /* 0x84 */ f32 field_0x84; // 0.0f
+ /* 0x88 */ f32 field_0x88; // 0.0f
+ /* 0x8C */ f32 field_0x8c; // 0.0f
+ /* 0x90 */ f32 field_0x90; // 0.0f
+ /* 0x94 */ f32 field_0x94; // 0.0f
+ /* 0x98 */ f32 field_0x98; // 16.0f
+ /* 0x9C */ f32 field_0x9c; // 1000.0f
+ /* 0x100 */ f32 field_0x100; // 500.0f
+ /* 0x104 */ f32 field_0x104; // -500.0f
+ };
+
+ static const Data m;
+};
+
class daNpc_Bou_c : public daNpcT_c {
public:
+
+ enum Type {
+ TYPE_0,
+ TYPE_1,
+ TYPE_2,
+ TYPE_3,
+ TYPE_4,
+ TYPE_5,
+ };
+
/* 8096CF8C */ ~daNpc_Bou_c();
/* 8096D0D8 */ void create();
/* 8096D38C */ void CreateHeap();
@@ -23,7 +85,7 @@ public:
/* 8096D8C0 */ void ctrlJointCallBack(J3DJoint*, int);
/* 8096D918 */ void srchCow(void*, void*);
/* 8096D9B4 */ void getCowP();
- /* 8096DA78 */ void getType();
+ /* 8096DA78 */ u8 getType();
/* 8096DADC */ void isDelete();
/* 8096DBBC */ void reset();
/* 8096E18C */ void srchActors();
@@ -69,6 +131,12 @@ public:
static void* mCutNameList[9];
static u8 mCutList[108];
+ BOOL chkFindWolf() {
+ int iVar1 = daNpcT_getDistTableIdx(field_0xfe0, field_0xfe4);
+ return daNpcT_c::chkFindWolf(mCurAngle.y, iVar1, field_0xfdc, daNpc_Bou_Param_c::m.field_0x5c,
+ daNpc_Bou_Param_c::m.field_0x58, daNpc_Bou_Param_c::m.field_0x60, daNpc_Bou_Param_c::m.field_0x100, 1);
+ }
+
BOOL speakTo() {
if (field_0xf80 == 4) {
if (current.pos.absXZ(daPy_getPlayerActorClass()->current.pos) < 1100.0f && strlen(mpEvtData[5].eventName) != 0) {
@@ -88,22 +156,19 @@ public:
}
private:
- /* 0xE40 */ u8 field_0xE40[0xE44 - 0xE40];
+ /* 0xE40 */ int field_0xe40;
/* 0xE44 */ dCcD_Cyl field_0xe44;
/* 0xF80 */ u8 field_0xf80;
/* 0xF84 */ daNpcT_ActorMngr_c field_0xf84[3];
/* 0xF9C */ daNpcT_Path_c field_0xf9c;
- /* 0xFC4 */ u8 field_0xfc4[0xFFC - 0xFC4];
+ /* 0xFC4 */ u8 field_0xfc4[0xFDC - 0xFC4];
+ /* 0xFDC */ int field_0xfdc;
+ /* 0xFE0 */ int field_0xfe0;
+ /* 0xFE4 */ int field_0xfe4;
+ /* 0xFE8 */ u8 field_0xfe8[0xFFC - 0xFE8];
};
STATIC_ASSERT(sizeof(daNpc_Bou_c) == 0xffc);
-class daNpc_Bou_Param_c {
-public:
- /* 809727F4 */ ~daNpc_Bou_Param_c();
-
- static u8 const m[156];
-};
-
#endif /* D_A_NPC_BOU_H */
diff --git a/include/d/actor/d_a_npc_jagar.h b/include/d/actor/d_a_npc_jagar.h
index 38732a793b..780cc2e862 100644
--- a/include/d/actor/d_a_npc_jagar.h
+++ b/include/d/actor/d_a_npc_jagar.h
@@ -11,75 +11,161 @@
* @details
*
*/
-class daNpc_Jagar_c : public fopAc_ac_c {
+
+class daNpc_Jagar_c : public daNpcT_c {
public:
+ typedef int (daNpc_Jagar_c::*cutFunc)(int);
+ typedef int (daNpc_Jagar_c::*actionFunc)(void*);
+
+ enum Type {
+ TYPE_0,
+ TYPE_1,
+ TYPE_2,
+ TYPE_3,
+ };
+
/* 80A1470C */ ~daNpc_Jagar_c();
- /* 80A14858 */ void create();
- /* 80A14B20 */ void CreateHeap();
- /* 80A14F4C */ void Delete();
- /* 80A14F80 */ void Execute();
- /* 80A14FA0 */ void Draw();
- /* 80A15034 */ void createHeapCallBack(fopAc_ac_c*);
- /* 80A15054 */ void ctrlJointCallBack(J3DJoint*, int);
- /* 80A150AC */ void getType();
- /* 80A150F8 */ void isDelete();
+ /* 80A14858 */ int create();
+ /* 80A14B20 */ int CreateHeap();
+ /* 80A14F4C */ int Delete();
+ /* 80A14F80 */ int Execute();
+ /* 80A14FA0 */ int Draw();
+ /* 80A15034 */ static int createHeapCallBack(fopAc_ac_c*);
+ /* 80A15054 */ static int ctrlJointCallBack(J3DJoint*, int);
+ /* 80A150AC */ u8 getType();
+ /* 80A150F8 */ int isDelete();
/* 80A15198 */ void reset();
/* 80A15364 */ void afterJntAnm(int);
/* 80A153E8 */ void setParam();
- /* 80A155E4 */ void checkChangeEvt();
+ /* 80A155E4 */ BOOL checkChangeEvt();
/* 80A15714 */ void setAfterTalkMotion();
/* 80A157B4 */ void srchActors();
- /* 80A158A0 */ void evtTalk();
- /* 80A15940 */ void evtCutProc();
+ /* 80A158A0 */ BOOL evtTalk();
+ /* 80A15940 */ BOOL evtCutProc();
/* 80A15A08 */ void action();
/* 80A15CA4 */ void beforeMove();
/* 80A15D68 */ void setAttnPos();
/* 80A1607C */ void setCollision();
- /* 80A161EC */ bool drawDbgInfo();
+ /* 80A161EC */ int drawDbgInfo();
/* 80A161F4 */ void changeBtp(int*, int*);
- /* 80A16234 */ void selectAction();
- /* 80A162B0 */ void chkAction(int (daNpc_Jagar_c::*)(void*));
- /* 80A162DC */ void setAction(int (daNpc_Jagar_c::*)(void*));
- /* 80A16384 */ void cutClimbUp(int);
- /* 80A16544 */ void cutNeedYourHelp(int);
- /* 80A16CD8 */ void cutAnger(int);
- /* 80A16EFC */ void cutConversationWithBou(int);
- /* 80A1705C */ void cutConfidentialConversation(int);
- /* 80A173D8 */ void cutFindWolf(int);
- /* 80A17898 */ void chkSitMotion();
- /* 80A17924 */ void chkSitMotion2();
- /* 80A17984 */ void chkChuMotion();
- /* 80A179F8 */ void chkToMotion();
- /* 80A17A2C */ void wait(void*);
- /* 80A1856C */ void talkwithBou(void*);
- /* 80A18B74 */ void talk(void*);
- /* 80A1A194 */ daNpc_Jagar_c(daNpcT_faceMotionAnmData_c const*, daNpcT_motionAnmData_c const*,
- daNpcT_MotionSeqMngr_c::sequenceStepData_c const*, int,
- daNpcT_MotionSeqMngr_c::sequenceStepData_c const*, int,
- daNpcT_evtData_c const*, char**);
+ /* 80A16234 */ int selectAction();
+ /* 80A162B0 */ int chkAction(int (daNpc_Jagar_c::*)(void*));
+ /* 80A162DC */ int setAction(int (daNpc_Jagar_c::*)(void*));
+ /* 80A16384 */ int cutClimbUp(int);
+ /* 80A16544 */ int cutNeedYourHelp(int);
+ /* 80A16CD8 */ int cutAnger(int);
+ /* 80A16EFC */ int cutConversationWithBou(int);
+ /* 80A1705C */ int cutConfidentialConversation(int);
+ /* 80A173D8 */ int cutFindWolf(int);
+ /* 80A17898 */ int chkSitMotion();
+ /* 80A17924 */ int chkSitMotion2();
+ /* 80A17984 */ int chkChuMotion();
+ /* 80A179F8 */ int chkToMotion();
+ /* 80A17A2C */ int wait(void*);
+ /* 80A1856C */ int talkwithBou(void*);
+ /* 80A18B74 */ int talk(void*);
+ /* 80A1A194 */ daNpc_Jagar_c(daNpcT_faceMotionAnmData_c const* param_1, daNpcT_motionAnmData_c const* param_2,
+ daNpcT_MotionSeqMngr_c::sequenceStepData_c const* param_3, int param_4,
+ daNpcT_MotionSeqMngr_c::sequenceStepData_c const* param_5, int param_6,
+ daNpcT_evtData_c const* param_7, char** param_8) :
+ daNpcT_c(param_1, param_2, param_3, param_4, param_5, param_6, param_7, param_8)
+ {}
/* 80A1A274 */ s32 getEyeballMaterialNo();
/* 80A1A27C */ s32 getHeadJointNo();
/* 80A1A284 */ s32 getNeckJointNo();
- /* 80A1A28C */ bool getBackboneJointNo();
- /* 80A1A294 */ void checkChangeJoint(int);
- /* 80A1A2A4 */ void checkRemoveJoint(int);
+ /* 80A1A28C */ s32 getBackboneJointNo();
+ /* 80A1A294 */ BOOL checkChangeJoint(int param_1) { return param_1 == 4; }
+ /* 80A1A2A4 */ BOOL checkRemoveJoint(int param_1) { return param_1 == 8; }
/* 80A1A2B4 */ s32 getFootLJointNo();
/* 80A1A2BC */ s32 getFootRJointNo();
- static void* mCutNameList[7];
- static u8 mCutList[84];
+ int getFlowNodeNo() {
+ u16 nodeNo = home.angle.x;
+ if (nodeNo == 0xffff) {
+ return -1;
+ }
+ return nodeNo;
+ }
+
+ u8 getPathID() { return (fopAcM_GetParam(this) & 0xff00) >> 8; }
+ static char* mCutNameList[7];
+ static cutFunc mCutList[7];
private:
- /* 0x568 */ u8 field_0x568[0x100c - 0x568];
+ /* 0x0E40 */ int field_0xe40;
+ /* 0x0E44 */ dCcD_Cyl mCyl1;
+ /* 0x0F80 */ u8 mType;
+ /* 0x0F84 */ daNpcT_ActorMngr_c mActorMngr[5];
+ /* 0x0FAC */ daNpcT_Path_c field_0xfac;
+ /* 0x0FD4 */ actionFunc field_0xfd4;
+ /* 0x0FE0 */ actionFunc field_0xfe0;
+ /* 0x0FEC */ int field_0xfec;
+ /* 0x0FF0 */ int field_0xff0;
+ /* 0x0FF4 */ int field_0xff4;
+ /* 0x0FF8 */ int field_0xff8;
+ /* 0x0FFC */ u8 field_0xffc[0x1000 - 0xffc];
+ /* 0x1000 */ u8 field_0x1000;
+ /* 0x1001 */ u8 field_0x1001;
+ /* 0x1002 */ u8 field_0x1002;
+ /* 0x1003 */ u8 field_0x1003;
+ /* 0x1004 */ u8 field_0x1004;
+ /* 0x1005 */ u8 field_0x1005;
+ /* 0x1008 */ int field_0x1008;
};
STATIC_ASSERT(sizeof(daNpc_Jagar_c) == 0x100c);
class daNpc_Jagar_Param_c {
public:
- /* 80A1A2C4 */ ~daNpc_Jagar_Param_c();
+ /* 80A1A2C4 */ virtual ~daNpc_Jagar_Param_c() {}
- static u8 const m[160];
+ struct Data {
+ /* 0x00 */ f32 field_0x00; // 170.0f
+ /* 0x04 */ f32 field_0x04; // -3.0f
+ /* 0x08 */ f32 field_0x08; // 1.0f
+ /* 0x0C */ f32 field_0x0c; // 400.0f
+ /* 0x10 */ f32 field_0x10; // 255.0f
+ /* 0x14 */ f32 field_0x14; // 160.0f
+ /* 0x18 */ f32 field_0x18; // 35.0f
+ /* 0x1C */ f32 field_0x1c; // 30.0f
+ /* 0x20 */ f32 field_0x20; // 0.0f
+ /* 0x24 */ f32 field_0x24; // 0.0f
+ /* 0x28 */ f32 field_0x28; // 10.0f
+ /* 0x2C */ f32 field_0x2c; // -10.0f
+ /* 0x30 */ f32 field_0x30; // 30.0f
+ /* 0x34 */ f32 field_0x34; // -10.0f
+ /* 0x38 */ f32 field_0x38; // 45.0f
+ /* 0x3C */ f32 field_0x3c; // -45.0f
+ /* 0x40 */ f32 field_0x40; // 0.6f
+ /* 0x44 */ f32 field_0x44; // 12.0f
+ /* 0x48 */ s16 field_0x48;
+ /* 0x4A */ s16 field_0x4a;
+ /* 0x4C */ s16 field_0x4c;
+ /* 0x4E */ s16 field_0x4e;
+ /* 0x50 */ f32 field_0x50; // 110.0f
+ /* 0x54 */ f32 field_0x54; // 500.0f
+ /* 0x58 */ f32 field_0x58; // 300.0f
+ /* 0x5C */ f32 field_0x5c; // -300.0f
+ /* 0x60 */ s16 field_0x60; // 60
+ /* 0x62 */ s16 field_0x62; // 8
+ /* 0x64 */ f32 field_0x64; // 0.0f
+ /* 0x68 */ f32 field_0x68; // 0.0f
+ /* 0x6C */ f32 field_0x6c; // 4.0f
+ /* 0x70 */ f32 field_0x70; // 0.0f
+ /* 0x74 */ f32 field_0x74; // 0.0f
+ /* 0x78 */ f32 field_0x78; // 0.0f
+ /* 0x7C */ f32 field_0x7c; // 0.0f
+ /* 0x80 */ f32 field_0x80; // 0.0f
+ /* 0x84 */ f32 field_0x84; // 0.0f
+ /* 0x88 */ f32 field_0x88; // 0.0f
+ /* 0x8C */ f32 field_0x8c; // 1400.0f
+ /* 0x90 */ f32 field_0x90; // 200.0f
+ /* 0x94 */ f32 field_0x94; // -800.0f
+ /* 0x98 */ f32 field_0x98; // 16.0f
+ /* 0x9C */ f32 field_0x9c; // 1800.0f
+ };
+
+ static const Data m;
};
#endif /* D_A_NPC_JAGAR_H */
diff --git a/include/d/actor/d_a_player.h b/include/d/actor/d_a_player.h
index cb65bc2f5f..f1be27ad5d 100644
--- a/include/d/actor/d_a_player.h
+++ b/include/d/actor/d_a_player.h
@@ -1102,6 +1102,8 @@ public:
onNoResetFlg3(FLG3_UNK_200000);
}
+ BOOL checkClimbEndHang() { return checkResetFlg0(RFLG0_UNK_40000); }
+
static daMidna_c* m_midnaActor;
};