diff options
| author | Zeclos <Zeclos99@gmail.com> | 2026-07-05 19:11:40 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-07-05 13:11:40 -0400 |
| commit | a7a5b5d6364e06e439d53a095ef6fd1ef25d7a68 (patch) | |
| tree | 5f08ec2dc97854a0e8225f3705528f9cbed03737 /include | |
| parent | 6051ac9b5b72f259b9d5d65fc9b7ad097d4bde38 (diff) | |
D_a_npc_tt (#1099)
* matching
* cleanup
* d_a_npc_tt matching outside of _create and rodata
* matching
* cleanup
Diffstat (limited to 'include')
| -rw-r--r-- | include/d/actor/d_a_npc_tt.h | 179 | ||||
| -rw-r--r-- | include/d/d_snap.h | 2 |
2 files changed, 138 insertions, 43 deletions
diff --git a/include/d/actor/d_a_npc_tt.h b/include/d/actor/d_a_npc_tt.h index 0177cf9d..07b3c790 100644 --- a/include/d/actor/d_a_npc_tt.h +++ b/include/d/actor/d_a_npc_tt.h @@ -2,82 +2,177 @@ #define D_A_NPC_TT_H #include "f_op/f_op_actor.h" +#include "d/d_npc.h" struct tt_ke_s { - void ke_control(float); + /* 0x00 */ cXyz field_0x00[10]; + /* 0x78 */ cXyz field_0x78[10]; + void ke_control(f32); void ke_pos_set(cXyz*); }; +struct lineKe { + tt_ke_s field_0x6C8[8]; + mDoExt_3DlineMat0_c mLineMat; +}; + class daNpc_Tt_c : public fopAc_ac_c { public: - void ChkOrder(unsigned char) {} - void ClrOrder() {} - void SetOrder(unsigned char) {} - void chkEvFlag(unsigned short) {} - void chkFlag(unsigned short) {} - void clrEvFlag(unsigned short) {} - void clrFlag(unsigned short) {} - void getBackboneJntNum() {} - void getBackbone_x() {} - void getBackbone_y() {} - void getHeadJntNum() {} - void getHead_x() {} - void getHead_y() {} - void incAttnSetCount() {} - void setAction(int (daNpc_Tt_c::*)(void*), void*) {} - void setAttentionBasePos(cXyz) {} - void setEvFlag(unsigned short) {} - void setEyePos(cXyz) {} - void setFlag(unsigned short) {} - void XyCheckCB(int); + enum ActionStatus { + ACTION_ENDING = -1, + ACTION_STARTING = 0, + ACTION_ONGOING = 1 + }; + + enum TalkStates { + TALK_FINISHED = -1, + TALK_INIT = 0, + TALK_MSG_CREATE = 1, + TALK_ACTIVE = 2 + }; + + typedef BOOL (daNpc_Tt_c::*ActionFunc)(void*); + + bool ChkOrder(u8 flag) { return mOrderFlags & flag; } + void ClrOrder() { mOrderFlags = 0; } + void SetOrder(u8 flag) { mOrderFlags |= flag; } + bool chkEvFlag(u16 evFlag) { return (mEvFlags & evFlag) == evFlag; } + bool chkFlag(u16 flag) { return (mFlags & flag) == flag; } + void clrEvFlag(u16 evFlag) { mEvFlags &= ~evFlag; } + void clrFlag(u16 flag) { mFlags &= ~flag; } + + s8 getBackboneJntNum() { return m_jnt.getBackboneJntNum(); } + s16 getBackbone_y() { return m_jnt.getBackbone_y(); } + s8 getHeadJntNum() { return m_jnt.getHeadJntNum(); } + s16 getHead_x() { return m_jnt.getHead_x(); } + s16 getHead_y() { return m_jnt.getHead_y(); } + + void incAttnSetCount() { + if (mAttnSetCount != 0xff) { + mAttnSetCount++; + } + } + + BOOL setAction(ActionFunc actionFunc, void* arg) { + if (mCurrActionFunc != actionFunc) { + if (mCurrActionFunc != NULL) { + mActionStatus = ACTION_ENDING; + (this->*mCurrActionFunc)(arg); + } + mCurrActionFunc = actionFunc; + mActionStatus = ACTION_STARTING; + (this->*mCurrActionFunc)(arg); + } + return TRUE; + } + + void setAttentionBasePos(cXyz i_attnBasePos) { mAttnBasePos = i_attnBasePos; } + void setEvFlag(u16 evFlag) { mEvFlags |= evFlag;} + void setEyePos(cXyz i_eyePos) { mEyePos = i_eyePos; } + void setFlag(u16 flag) { mFlags |= flag; } + + s16 XyCheckCB(int); void setAnmStatus(); void eventOrder(); void checkOrder(); - void next_msgStatus(unsigned long*); - void getMsg(); + u16 next_msgStatus(u32*); + u32 getMsg(); void setCollision(); void talkInit(); void msgAnm(); void msgPushButton(); void msgContinue(); - void talk(); + u16 talk(); void demoInitChange(); - void demoProcTact1(); + bool demoProcTact1(); void demoInitPatten(); - void demoProcPatten(); + bool demoProcPatten(); void demoInitSpeak(); - void demoProcSpeak(); + bool demoProcSpeak(); void demoInitWait(); - void demoProcWait(); + bool demoProcWait(); void demoInitCom(); void demoProcCom(); - void getNowEventAction(); - void demoProc(); - void init(); + s32 getNowEventAction(); + bool demoProc(); + BOOL init(); void setAttention(bool); void lookBack(); - void wait01(); - void talk01(); - void tact00(); - void wait_action(void*); + bool wait01(); + bool talk01(); + bool tact00(); + BOOL wait_action(void*); void set_ke_root(int, int, int); void ke_execute(); BOOL _draw(); BOOL _execute(); BOOL _delete(); cPhs_State _create(); - void CreateHeap(); + BOOL CreateHeap(); - void initTexPatternAnm(bool); + BOOL initTexPatternAnm(bool); void playTexPatternAnm(); void setAnm(int); void danceInit(int); - void danceProc(); - void danceNext(); - + BOOL danceProc(); + BOOL danceNext(); public: - /* Place member variables here */ -}; + /* 0x290 */ dNpc_HeadAnm_c mHeadAnm; + /* 0x2B4 */ s16 mEventIdx; + /* 0x2B6 */ u8 field_0x2B6[0x2B8 - 0x2B6]; + /* 0x2B8 */ request_of_phase_process_class mPhs; + /* 0x2C0 */ mDoExt_McaMorf* mpMorf; + /* 0x2C4 */ u32 mShadowId; + /* 0x2C8 */ J3DAnmTexPattern* m_head_tex_pattern; + /* 0x2CC */ mDoExt_btpAnm mBtpAnm; + /* 0x2E0 */ u8 mBlinkFrame; + /* 0x2E1 */ u8 field_0x2E1[0x2E2 - 0x2E1]; + /* 0x2E2 */ s16 mBlinkTimer; + /* 0x2E4 */ dBgS_ObjAcch mObjAcch; + /* 0x4A8 */ dBgS_AcchCir mAcchCir; + /* 0x4E8 */ dCcD_Stts mStts; + /* 0x524 */ dCcD_Cyl mCyl; + /* 0x654 */ s8 m_head_jnt_num; + /* 0x655 */ s8 m_backbone_jnt_num; + /* 0x656 */ u8 field_0x656[0x658 - 0x656]; + /* 0x658 */ dNpc_JntCtrl_c m_jnt; + /* 0x68C */ cXyz mEyePos; + /* 0x698 */ cXyz mAttnBasePos; + /* 0x6A4 */ s16 mMaxHeadTurnVelocity; + /* 0x6A6 */ u8 field_0x6A6[0x6A8 - 0x6A6]; + /* 0x6A8 */ s8 mAnmEnded; + /* 0x6A9 */ u8 mAttnSetCount; + /* 0x6AA */ u8 field_0x6AA[0x6AC - 0x6AA]; + /* 0x6AC */ f32 mAnmTimer; + /* 0x6B0 */ u32 mCurrMsgNo; + /* 0x6B4 */ u16 mFlags; + /* 0x6B6 */ s16 mNoticeLinkTimer; + /* 0x6B8 */ ActionFunc mCurrActionFunc; + /* 0x6C4 */ u8 mDanceStep; + /* 0x6C5 */ u8 mDanceStepTimer; + /* 0x6C6 */ u8 field_0x6C6[0x6C8 - 0x6C6]; + /* 0x6C8 */ lineKe mLineKe; + /* 0xE64 */ s8 mTexPatternIdx; + /* 0xE65 */ s8 mCurrAnmIdx; + /* 0xE66 */ s8 mAnmLoopCount; + /* 0xE67 */ u8 mOrderFlags; + /* 0xE68 */ s8 mState; + /* 0xE69 */ s8 mReturnToState; + /* 0xE6A */ u8 mType; + /* 0xE6B */ s8 mActionStatus; + /* 0xE6C */ s8 mTalkState; + /* 0xE6D */ u8 mMsgAnmIdx; + /* 0xE6E */ u8 field_0xE6E[0xE70 - 0xE6E]; + /* 0xE70 */ u32 mMtrlSndId; + /* 0xE74 */ s8 mReverb; + /* 0xE75 */ u8 mEvFlags; + /* 0xE76 */ s16 mSoundTimer; + /* 0xE78 */ s16 mTimer; + /* 0xE7A */ u8 field_0xE7A; + /* 0xE7B */ u8 field_0xE7B[0xE7C - 0xE7B]; + /* 0xE7C */ u32 mMsgNo; + /* 0xE80 */ int mStaffIdx; +}; // Size: 0xE84 #endif /* D_A_NPC_TT_H */ diff --git a/include/d/d_snap.h b/include/d/d_snap.h index e3a522b6..a5e0a54c 100644 --- a/include/d/d_snap.h +++ b/include/d/d_snap.h @@ -92,7 +92,7 @@ enum { /* 0x54 */ DSNAP_TYPE_KB, /* 0x55 */ DSNAP_TYPE_KAMOME, /* 0x56 */ DSNAP_TYPE_KN, - /* 0x57 */ DSNAP_TYPE_UNK57, + /* 0x57 */ DSNAP_TYPE_TT, /* 0x58 */ DSNAP_TYPE_KM1, /* 0x59 */ DSNAP_TYPE_UNK59, /* 0x5A */ DSNAP_TYPE_UNK5A, |
