Skip to content
Merged
Show file tree
Hide file tree
Changes from 44 commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
2d8c2b5
Began work on d_a_npc_jagar
carter-ktb21 Feb 12, 2025
d9b7f65
Major work on daNpc_Jagar_c::create()
carter-ktb21 Feb 12, 2025
bcd3df6
Jagar create() - 11%
carter-ktb21 Feb 13, 2025
52b7b77
Continued work on daNpc_Jagar_c
carter-ktb21 Feb 13, 2025
3f7e0fe
Jagar create() - 87%
carter-ktb21 Feb 14, 2025
db2e20f
Continues work on Jagar
carter-ktb21 Feb 14, 2025
bdb2f5b
Work on Jagar.checkChangeEvt()
carter-ktb21 Feb 17, 2025
6c9db98
Working on Jagar.talk()
carter-ktb21 Feb 18, 2025
6584d5c
Work on Jagar.changeBtp()
carter-ktb21 Feb 19, 2025
6df3c09
Jagar.checkChangeJoint() & checkRemoveJoint()
carter-ktb21 Feb 19, 2025
1167076
Jagar.chkAction() & setAction()
carter-ktb21 Feb 19, 2025
1ac5c84
Jagar.chkChuMotion()
carter-ktb21 Feb 19, 2025
4f7a385
Jagar.chkSitMotion() & chkSitMotion2()
carter-ktb21 Feb 19, 2025
ce61e79
Jagar.chkToMotion()
carter-ktb21 Feb 19, 2025
15adb57
Jagar.CreateHeap()
carter-ktb21 Feb 19, 2025
554de51
Jagar.createHeapCallBack() & ctrlJointCallBack()
carter-ktb21 Feb 19, 2025
a2e9b16
Jagar.cuAnger()
carter-ktb21 Feb 19, 2025
fb8fa94
Jagar.cutClimbUp() - 92%
carter-ktb21 Feb 20, 2025
876bf11
Jagar.setAttnPos() - 85%
carter-ktb21 Feb 20, 2025
356a74a
Jagar.cutConversationWithBou() - 48%
carter-ktb21 Feb 21, 2025
8563354
Jagar work and daNpcT_c::getActorDistance - 83%
carter-ktb21 Feb 21, 2025
f3c23d6
Jagar setParam work and daNpcT_c::getActorDistance - 85%
carter-ktb21 Feb 21, 2025
6d0103c
Prep Jagar push to main
carter-ktb21 Feb 23, 2025
249fc72
Merge branch 'initial_jaggle_work'
carter-ktb21 Feb 23, 2025
69cd70c
Merge pull request #1 from carter-ktb21/initial_jaggle_work
carter-ktb21 Feb 23, 2025
c36ba45
Merge branch 'main' of https://github.com/carter-ktb21/tp
carter-ktb21 Feb 23, 2025
0b556e5
little cleanup
carter-ktb21 Feb 23, 2025
b71d421
Fixed return type discrepancy
carter-ktb21 Feb 23, 2025
cc3f401
Merge branch 'initial_jaggle_work'
carter-ktb21 Feb 23, 2025
5d670d7
Fixed *other* return type issues & variable names for Jagar
carter-ktb21 Feb 24, 2025
443bfd3
Jagar talkWithBou work
carter-ktb21 Feb 24, 2025
4c4f2cf
Work on Jagar talk
carter-ktb21 Feb 25, 2025
ebc0662
Data & function cleanup
carter-ktb21 Feb 26, 2025
ff3ed46
I dont remember what i added this time lol
carter-ktb21 Feb 27, 2025
a7d0caa
Finished some functions
carter-ktb21 Feb 27, 2025
cf7a68a
Reworking Jagar talk()
carter-ktb21 Feb 28, 2025
3739114
Finished some functions
carter-ktb21 Feb 28, 2025
44f37d9
Attempting to rework cutNeedYourHelp
carter-ktb21 Mar 1, 2025
9e59016
Merge branch 'zeldaret:main' into main
carter-ktb21 Mar 1, 2025
cd1a498
Almost(ish) done with Jaggle
carter-ktb21 Mar 2, 2025
ad4e31a
Almost done with Jaggle
carter-ktb21 Mar 2, 2025
2eb6805
Took out inline assembly in Jagar.chkToMotion()
carter-ktb21 Mar 2, 2025
51ba596
Cleanup
carter-ktb21 Mar 2, 2025
b5426ed
Minor variable initialization change
carter-ktb21 Mar 3, 2025
b772c03
Merge branch 'zeldaret:main' into main
carter-ktb21 Mar 4, 2025
b7915f0
Small cleanup
carter-ktb21 Mar 4, 2025
f28c011
Hopefully fixed d_a_npc_bou compilation error
carter-ktb21 Mar 7, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 27 additions & 10 deletions include/d/actor/d_a_npc_bou.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,20 @@
* @details
*
*/
class daNpc_Bou_Param_c {
public:
/* 809727F4 */ ~daNpc_Bou_Param_c();

struct Data {
/* 0x58 */ f32 field_0x58;
/* 0x5C */ f32 field_0x5c;
/* 0x60 */ f32 field_0x60;
/* 0x100 */ f32 field_0x100;
};

static const Data m;
};

class daNpc_Bou_c : public daNpcT_c {
public:
/* 8096CF8C */ ~daNpc_Bou_c();
Expand All @@ -23,7 +37,7 @@ class daNpc_Bou_c : public daNpcT_c {
/* 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();
Expand Down Expand Up @@ -69,6 +83,12 @@ class daNpc_Bou_c : public daNpcT_c {
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) {
Expand All @@ -88,22 +108,19 @@ class daNpc_Bou_c : public daNpcT_c {
}

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 */
170 changes: 128 additions & 42 deletions include/d/actor/d_a_npc_jagar.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 param {
/* 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 param m;
};

#endif /* D_A_NPC_JAGAR_H */
2 changes: 2 additions & 0 deletions include/d/actor/d_a_player.h
Original file line number Diff line number Diff line change
Expand Up @@ -1102,6 +1102,8 @@ class daPy_py_c : public fopAc_ac_c {
onNoResetFlg3(FLG3_UNK_200000);
}

BOOL checkClimbEndHang() { return checkResetFlg0(RFLG0_UNK_40000); }

static daMidna_c* m_midnaActor;
};

Expand Down
17 changes: 15 additions & 2 deletions src/d/actor/d_a_npc_bou.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1088,8 +1088,21 @@ void daNpc_Bou_c::getCowP() {
}

/* 8096DA78-8096DADC 000BD8 0064+00 1/1 0/0 2/2 .text getType__11daNpc_Bou_cFv */
void daNpc_Bou_c::getType() {
// NONMATCHING
u8 daNpc_Bou_c::getType() {
switch ((u8)fopAcM_GetParam(this)) {
case 0:
return TYPE_0;
case 1:
return TYPE_1;
case 2:
return TYPE_2;
case 3:
return TYPE_3;
case 4:
return TYPE_4;
default:
return TYPE_5;
}
}

/* 8096DADC-8096DBBC 000C3C 00E0+00 1/1 0/0 0/0 .text isDelete__11daNpc_Bou_cFv */
Expand Down
Loading
Loading