summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/d/actor/d_a_npc.h12
-rw-r--r--include/d/actor/d_a_npc_gnd.h117
-rw-r--r--include/d/actor/d_a_npc_toby.h180
-rw-r--r--include/d/actor/d_a_obj_automata.h10
4 files changed, 198 insertions, 121 deletions
diff --git a/include/d/actor/d_a_npc.h b/include/d/actor/d_a_npc.h
index 2abb1e1ea9..f0cfcc579d 100644
--- a/include/d/actor/d_a_npc.h
+++ b/include/d/actor/d_a_npc.h
@@ -440,6 +440,7 @@ public:
/* 80145C74 */ int setPathInfo(u8, s8, u8);
/* 80145D2C */ int setNextPathInfo(s8, u8);
/* 80145DA0 */ void reverse();
+ void setNextIdx() { setNextIdx(getNumPnts()); }
/* 80145DD0 */ int setNextIdx(int);
int getDstPos(cXyz i_pnt, cXyz* o_pos_p) {
return getDstPos(i_pnt, o_pos_p, getNumPnts());
@@ -460,7 +461,9 @@ public:
Vec getPntPos(int i_idx) { return mPathInfo->m_points[i_idx].m_position; }
- u8 getArg0() { return mPathInfo->m_points[mIdx].mArg0; }
+ int getArg0() { return mPathInfo->m_points[mIdx].mArg0; }
+ int getArg1() { return mPathInfo->m_points[mIdx].mArg1; }
+ int getArg2() { return mPathInfo->m_points[mIdx].mArg2; }
int chkClose() {
BOOL rt = dPath_ChkClose(mPathInfo);
@@ -473,7 +476,11 @@ public:
void setIdx(int i_idx) { mIdx = i_idx; }
- const u16 getIdx() { return mIdx; }
+ const int getIdx() { return mIdx; }
+#if VERSION != VERSION_SHIELD_DEBUG
+ // fakematch inline to fix daNpcT_Path_c::chkPassed1
+ const u16 get_u16_Idx() { return mIdx; }
+#endif
dPath* getPathInfo() { return mPathInfo; }
@@ -791,6 +798,7 @@ void daNpcT_offTmpBit(u32 i_idx);
void daNpcT_onTmpBit(u32 i_idx);
BOOL daNpcT_chkTmpBit(u32 i_idx);
void daNpcT_onEvtBit(u32 i_idx);
+void daNpcT_offEvtBit(u32 i_idx);
BOOL daNpcT_chkTmpBit(u32 i_idx);
BOOL daNpcT_getPlayerInfoFromPlayerList(int param_0, int i_roomNo, cXyz* o_spawnPos,
csXyz* o_angle);
diff --git a/include/d/actor/d_a_npc_gnd.h b/include/d/actor/d_a_npc_gnd.h
index 8dc52c4061..5a3a436509 100644
--- a/include/d/actor/d_a_npc_gnd.h
+++ b/include/d/actor/d_a_npc_gnd.h
@@ -3,6 +3,33 @@
#include "d/actor/d_a_npc.h"
+struct daNpc_Gnd_HIOParam {
+ /* 0x00 */ daNpcT_HIOParam common;
+};
+
+class daNpc_Gnd_Param_c {
+public:
+ /* 809BE434 */ virtual ~daNpc_Gnd_Param_c() {}
+
+ static const daNpc_Gnd_HIOParam m;
+};
+
+#if DEBUG
+class daNpc_Gnd_HIO_c : public mDoHIO_entry_c {
+public:
+ daNpc_Gnd_HIO_c();
+
+ void listenPropertyEvent(const JORPropertyEvent*);
+ void genMessage(JORMContext*);
+
+ daNpc_Gnd_HIOParam m;
+};
+
+#define NPC_GND_HIO_CLASS daNpc_Gnd_HIO_c
+#else
+#define NPC_GND_HIO_CLASS daNpc_Gnd_Param_c
+#endif
+
/**
* @ingroup actors-npcs
* @class daNpc_Gnd_c
@@ -27,7 +54,7 @@ public:
/* 809BBE60 */ int Execute();
/* 809BBE80 */ int Draw();
/* 809BBF44 */ static int createHeapCallBack(fopAc_ac_c*);
- /* 809BBF64 */ int ctrlJointCallBack(J3DJoint*, int);
+ /* 809BBF64 */ static int ctrlJointCallBack(J3DJoint*, int);
/* 809BBFBC */ u8 getType();
/* 809BBFDC */ int getFlowNodeNo();
/* 809BBFF8 */ int isDelete();
@@ -50,76 +77,38 @@ public:
/* 809BCD5C */ void setAction(int (daNpc_Gnd_c::*)(void*));
/* 809BCE04 */ void wait(void*);
/* 809BD050 */ void talk(void*);
- /* 809BE2D0 */ daNpc_Gnd_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)
- {}
- /* 809BE40C */ u16 getEyeballRMaterialNo();
- /* 809BE414 */ u16 getEyeballLMaterialNo();
- /* 809BE41C */ s32 getHeadJointNo();
- /* 809BE424 */ s32 getNeckJointNo();
- /* 809BE42C */ s32 getBackboneJointNo();
+ /* 809BE2D0 */ daNpc_Gnd_c(
+ daNpcT_faceMotionAnmData_c const* i_faceMotionAnmData,
+ daNpcT_motionAnmData_c const* i_motionAnmData,
+ daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_faceMotionSequenceData,
+ int i_faceMotionStepNum,
+ daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_motionSequenceData, int i_motionStepNum,
+ daNpcT_evtData_c const* i_evtData, char** i_arcNames)
+ : daNpcT_c(i_faceMotionAnmData, i_motionAnmData, i_faceMotionSequenceData,
+ i_faceMotionStepNum, i_motionSequenceData, i_motionStepNum, i_evtData,
+ i_arcNames) {
+ // "|%06d:%x|daNpc_Gnd_c -> Construct\n"
+ OS_REPORT("|%06d:%x|daNpc_Gnd_c -> コンストラクト\n", g_Counter.mCounter0, this);
+ }
+ /* 809BE40C */ u16 getEyeballRMaterialNo() { return 3; }
+ /* 809BE414 */ u16 getEyeballLMaterialNo() { return 2; }
+ /* 809BE41C */ s32 getHeadJointNo() { return 4; }
+ /* 809BE424 */ s32 getNeckJointNo() { return 3; }
+ /* 809BE42C */ s32 getBackboneJointNo() { return 1; }
static char* mCutNameList;
static cutFunc mCutList[1];
private:
- /* 0xE40 */ u8 field_0xe40[0xf80 - 0xe40];
+ /* 0xE40 */ NPC_GND_HIO_CLASS* mpHIO;
+ /* 0xE44 */ dCcD_Cyl mCyl1;
/* 0xF80 */ u8 mType;
- /* 0xF81 */ u8 field_0xf81[0xfa0 - 0xf81];
-};
-
-STATIC_ASSERT(sizeof(daNpc_Gnd_c) == 0xfa0);
-
-class daNpc_Gnd_Param_c {
-public:
- /* 809BE434 */ ~daNpc_Gnd_Param_c();
-
- struct Data {
- /* 0x00 */ f32 field_0x00;
- /* 0x04 */ f32 field_0x04;
- /* 0x08 */ f32 field_0x08;
- /* 0x0C */ f32 field_0x0c;
- /* 0x10 */ f32 field_0x10;
- /* 0x14 */ f32 field_0x14;
- /* 0x18 */ f32 field_0x18;
- /* 0x1C */ f32 field_0x1c;
- /* 0x20 */ f32 field_0x20;
- /* 0x24 */ f32 field_0x24;
- /* 0x28 */ f32 field_0x28;
- /* 0x2C */ f32 field_0x2c;
- /* 0x30 */ f32 field_0x30;
- /* 0x34 */ f32 field_0x34;
- /* 0x38 */ f32 field_0x38;
- /* 0x3C */ f32 field_0x3c;
- /* 0x40 */ f32 field_0x40;
- /* 0x44 */ f32 field_0x44;
- /* 0x48 */ s16 field_0x48;
- /* 0x4A */ s16 field_0x4a;
- /* 0x4C */ s16 field_0x4c;
- /* 0x4E */ s16 field_0x4e;
- /* 0x50 */ f32 field_0x50;
- /* 0x54 */ f32 field_0x54;
- /* 0x58 */ f32 field_0x58;
- /* 0x5C */ f32 field_0x5c;
- /* 0x60 */ s16 field_0x60;
- /* 0x62 */ s16 field_0x62;
- /* 0x64 */ f32 field_0x64;
- /* 0x68 */ f32 field_0x68;
- /* 0x6C */ f32 field_0x6c;
- /* 0x70 */ f32 field_0x70;
- /* 0x74 */ f32 field_0x74;
- /* 0x78 */ f32 field_0x78;
- /* 0x7C */ f32 field_0x7c;
- /* 0x80 */ f32 field_0x80;
- /* 0x84 */ f32 field_0x84;
- /* 0x88 */ f32 field_0x88;
- };
-
- static const Data m;
+ /* 0xF81 */ u8 field_0xf81[0xF84 - 0xF81];
+ /* 0xF84 */ u8 field_0xF84;
+ /* 0xF85 */ u8 field_0xF85[0xF9C - 0xF85];
+ /* 0xF9C */ u8 field_0xF9C;
};
+STATIC_ASSERT(sizeof(daNpc_Gnd_c) == 0xFA0);
#endif /* D_A_NPC_GND_H */
diff --git a/include/d/actor/d_a_npc_toby.h b/include/d/actor/d_a_npc_toby.h
index d2cc7ea278..48503f091a 100644
--- a/include/d/actor/d_a_npc_toby.h
+++ b/include/d/actor/d_a_npc_toby.h
@@ -4,6 +4,37 @@
#include "dolphin/types.h"
#include "d/actor/d_a_npc.h"
+struct daNpc_Toby_HIOParam {
+ /* 0x00 */ daNpcT_HIOParam common;
+ /* 0x8C */ f32 performance_speed;
+ /* 0x90 */ f32 speedup_performance;
+ /* 0x94 */ f32 init_play_speed;
+ /* 0x98 */ f32 switching_speed;
+};
+
+class daNpc_Toby_Param_c {
+public:
+ /* 80B24978 */ virtual ~daNpc_Toby_Param_c() {}
+
+ static const daNpc_Toby_HIOParam m;
+};
+
+#if DEBUG
+class daNpc_Toby_HIO_c : public mDoHIO_entry_c {
+public:
+ daNpc_Toby_HIO_c();
+
+ void listenPropertyEvent(const JORPropertyEvent*);
+ void genMessage(JORMContext*);
+
+ daNpc_Toby_HIOParam m;
+};
+
+#define NPC_TOBY_HIO_CLASS daNpc_Toby_HIO_c
+#else
+#define NPC_TOBY_HIO_CLASS daNpc_Toby_Param_c
+#endif
+
/**
* @ingroup actors-npcs
* @class daNpc_Toby_c
@@ -12,78 +43,119 @@
* @details
*
*/
-class daNpc_Toby_c : public fopAc_ac_c {
+class daNpc_Toby_c : public daNpcT_c {
public:
+ typedef int (daNpc_Toby_c::*cutFunc)(int);
+ typedef int (daNpc_Toby_c::*actionFunc)(void*);
+
/* 80B1E64C */ ~daNpc_Toby_c();
- /* 80B1E798 */ void create();
- /* 80B1EA60 */ void CreateHeap();
- /* 80B1EF28 */ void Delete();
- /* 80B1EF5C */ void Execute();
- /* 80B1EF7C */ void Draw();
- /* 80B1F010 */ void createHeapCallBack(fopAc_ac_c*);
- /* 80B1F030 */ void ctrlJointCallBack(J3DJoint*, int);
- /* 80B1F088 */ void srchToby(void*, void*);
- /* 80B1F124 */ void getOtherTobyP(int);
- /* 80B1F200 */ void getType();
- /* 80B1F274 */ void isDelete();
+ /* 80B1E798 */ int create();
+ /* 80B1EA60 */ int CreateHeap();
+ /* 80B1EF28 */ int Delete();
+ /* 80B1EF5C */ int Execute();
+ /* 80B1EF7C */ int Draw();
+ /* 80B1F010 */ static int createHeapCallBack(fopAc_ac_c*);
+ /* 80B1F030 */ static int ctrlJointCallBack(J3DJoint*, int);
+ /* 80B1F088 */ static void* srchToby(void*, void*);
+ /* 80B1F124 */ fopAc_ac_c* getOtherTobyP(int);
+ /* 80B1F200 */ u8 getType();
+ /* 80B1F274 */ int isDelete();
/* 80B1F384 */ void reset();
/* 80B1F5AC */ void afterJntAnm(int);
/* 80B1F638 */ void setParam();
- /* 80B1F784 */ void checkChangeEvt();
+ /* 80B1F784 */ BOOL checkChangeEvt();
/* 80B1F950 */ void setAfterTalkMotion();
/* 80B1FA08 */ void srchActors();
- /* 80B1FB34 */ void evtTalk();
- /* 80B1FBD4 */ void evtCutProc();
+ /* 80B1FB34 */ BOOL evtTalk();
+ /* 80B1FBD4 */ BOOL evtCutProc();
/* 80B1FC9C */ void action();
/* 80B1FE68 */ void beforeMove();
/* 80B1FF2C */ void setAttnPos();
/* 80B20278 */ void setCollision();
- /* 80B2042C */ bool drawDbgInfo();
+ /* 80B2042C */ int drawDbgInfo();
/* 80B20434 */ void drawOtherMdl();
- /* 80B2050C */ void afterSetFaceMotionAnm(int, int, f32, int);
- /* 80B20568 */ void afterSetMotionAnm(int, int, f32, int);
- /* 80B205F4 */ void selectAction();
- /* 80B20710 */ void chkAction(int (daNpc_Toby_c::*)(void*));
- /* 80B2073C */ void setAction(int (daNpc_Toby_c::*)(void*));
- /* 80B207E4 */ void cutTobyHouseFire(int);
- /* 80B20AB0 */ void cutTalkToOneself(int);
- /* 80B20FC0 */ void cutRepairSCannon(int);
- /* 80B215B4 */ void cutSCannon(int);
- /* 80B219F4 */ void cutConversationAboutSCannon(int);
- /* 80B22434 */ void cutConversationAboutZra(int);
- /* 80B22614 */ void chkAttnZra();
- /* 80B226B0 */ void wait(void*);
- /* 80B22D98 */ void walk(void*);
- /* 80B22FAC */ void play(void*);
- /* 80B23344 */ void talk(void*);
- /* 80B24840 */ daNpc_Toby_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**);
- /* 80B24920 */ u16 getEyeballMaterialNo();
- /* 80B24928 */ s32 getHeadJointNo();
- /* 80B24930 */ s32 getNeckJointNo();
- /* 80B24938 */ bool getBackboneJointNo();
- /* 80B24940 */ void checkChangeJoint(int);
- /* 80B24950 */ void checkRemoveJoint(int);
- /* 80B24960 */ s32 getFootLJointNo();
- /* 80B24968 */ s32 getFootRJointNo();
- /* 80B24970 */ bool chkXYItems();
+ /* 80B2050C */ bool afterSetFaceMotionAnm(int, int, f32, int);
+ /* 80B20568 */ bool afterSetMotionAnm(int, int, f32, int);
+ /* 80B205F4 */ int selectAction();
+ /* 80B20710 */ int chkAction(actionFunc);
+ /* 80B2073C */ int setAction(actionFunc);
+ /* 80B207E4 */ int cutTobyHouseFire(int);
+ /* 80B20AB0 */ int cutTalkToOneself(int);
+ /* 80B20FC0 */ int cutRepairSCannon(int);
+ /* 80B215B4 */ int cutSCannon(int);
+ /* 80B219F4 */ int cutConversationAboutSCannon(int);
+ /* 80B22434 */ int cutConversationAboutZra(int);
+ /* 80B22614 */ int chkAttnZra();
+ /* 80B226B0 */ int wait(void*);
+ /* 80B22D98 */ int walk(void*);
+ /* 80B22FAC */ int play(void*);
+ /* 80B23344 */ int talk(void*);
+#if DEBUG
+ int test(void*);
+#endif
+ /* 80B24840 */ daNpc_Toby_c(
+ daNpcT_faceMotionAnmData_c const* i_faceMotionAnmData,
+ daNpcT_motionAnmData_c const* i_motionAnmData,
+ daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_faceMotionSequenceData,
+ int i_faceMotionStepNum,
+ daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_motionSequenceData, int i_motionStepNum,
+ daNpcT_evtData_c const* i_evtData, char** i_arcNames)
+ : daNpcT_c(i_faceMotionAnmData, i_motionAnmData, i_faceMotionSequenceData,
+ i_faceMotionStepNum, i_motionSequenceData, i_motionStepNum, i_evtData,
+ i_arcNames) {
+ // "|%06d:%x|daNpc_Toby_c -> Construct\n"
+ OS_REPORT("|%06d:%x|daNpc_Toby_c -> コンストラクト\n", g_Counter.mCounter0, this);
+ }
+ /* 80B24920 */ u16 getEyeballMaterialNo() { return 2; }
+ /* 80B24928 */ s32 getHeadJointNo() { return 4; }
+ /* 80B24930 */ s32 getNeckJointNo() { return 3; }
+ /* 80B24938 */ s32 getBackboneJointNo() { return 1; }
+ /* 80B24940 */ BOOL checkChangeJoint(int arg0) { return arg0 == 4; }
+ /* 80B24950 */ BOOL checkRemoveJoint(int arg0) { return arg0 == 8; }
+ /* 80B24960 */ s32 getFootLJointNo() { return 24; }
+ /* 80B24968 */ s32 getFootRJointNo() { return 27; }
+ /* 80B24970 */ BOOL chkXYItems() { return TRUE; }
+
+ int getFlowNodeNo() {
+ u16 nodeNo = home.angle.x;
+ u32 rv;
+ if (nodeNo == 0xffff) {
+ rv = -1;
+ } else {
+ rv = nodeNo;
+ }
+
+ return rv;
+ }
+
+ u8 getPathID() { return (fopAcM_GetParam(this) & 0xFF00) >> 8; }
+ u8 getBitSW() { return (fopAcM_GetParam(this) & 0xFF0000) >> 16; }
static char* mCutNameList[7];
- static u8 mCutList[84];
+ static cutFunc mCutList[7];
private:
- /* 0x568 */ u8 field_0x568[0x1008 - 0x568];
+ /* 0x0E40 */ NPC_TOBY_HIO_CLASS* mpHIO;
+ /* 0x0E44 */ J3DModel* mpTobyModels[1];
+ /* 0x0E48 */ dCcD_Cyl mCyl1;
+ /* 0x0F84 */ u8 mType;
+ /* 0x0F88 */ daNpcT_ActorMngr_c mActorMngr[4];
+ /* 0x0FA8 */ actionFunc mActFunc_0;
+ /* 0x0FB4 */ actionFunc mActFunc_1;
+ /* 0x0FC0 */ daNpcT_Path_c mPath;
+ /* 0x0FE8 */ cXyz field_0x0FE8;
+ /* 0x0FF4 */ int field_0x0FF4;
+ /* 0x0FF8 */ f32 mPlaySpeed;
+ /* 0x0FFC */ u16 field_0x0FFC;
+ /* 0x0FFE */ u8 field_0x0FFE;
+ /* 0x0FFF */ u8 field_0x0FFF;
+ /* 0x1000 */ u8 field_0x1000;
+ /* 0x1001 */ bool field_0x1001;
+ /* 0x1002 */ bool field_0x1002;
+ /* 0x1003 */ u8 field_0x1003;
+ /* 0x1004 */ u8 field_0x1004;
};
STATIC_ASSERT(sizeof(daNpc_Toby_c) == 0x1008);
-class daNpc_Toby_Param_c {
-public:
- /* 80B24978 */ ~daNpc_Toby_Param_c();
-
- static u8 const m[156];
-};
-
#endif /* D_A_NPC_TOBY_H */
diff --git a/include/d/actor/d_a_obj_automata.h b/include/d/actor/d_a_obj_automata.h
index 46b28b4396..6a1939ee0f 100644
--- a/include/d/actor/d_a_obj_automata.h
+++ b/include/d/actor/d_a_obj_automata.h
@@ -30,7 +30,7 @@ private:
/* 0xB28 */ f32 mGroundH;
/* 0xB2C */ f32 mAnmPlaySpeed;
/* 0xB30 */ u8 field_0xb30;
- /* 0xB31 */ u8 field_0xb31;
+ /* 0xB31 */ u8 mCoNone;
public:
/* 80BA56EC */ virtual ~daObj_AutoMata_c();
@@ -46,6 +46,14 @@ public:
/* 80BA6690 */ void setRoomNo();
/* 80BA66D4 */ void setMtx();
/* 80BA674C */ void setSe();
+
+ void setAnmPlaySpeed(f32 i_playspeed) {
+ mAnmPlaySpeed = i_playspeed;
+ }
+
+ void setCoNone() {
+ mCoNone = true;
+ }
};
STATIC_ASSERT(sizeof(daObj_AutoMata_c) == 0xb38);