diff options
| author | Caroline Madsen <69010899+randomsalience@users.noreply.github.com> | 2024-04-26 22:20:26 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-26 19:20:26 -0700 |
| commit | 669c7d920b196d8f1b998420014bcc9397abaa32 (patch) | |
| tree | b8d660dc7d05769be5e6aa1c91f184b3389ecc10 /include | |
| parent | c163dc9ed31c69eb791be1dcdcd7ab8b296e95a1 (diff) | |
d_a_npc_zra mostly done, misc npc work (#2140)
Diffstat (limited to 'include')
| -rw-r--r-- | include/d/a/d_a_npc.h | 462 | ||||
| -rw-r--r-- | include/d/a/d_a_player.h | 8 | ||||
| -rw-r--r-- | include/d/com/d_com_inf_game.h | 4 | ||||
| -rw-r--r-- | include/d/d_attention.h | 14 | ||||
| -rw-r--r-- | include/d/d_drawlist.h | 4 | ||||
| -rw-r--r-- | include/d/d_path.h | 4 | ||||
| -rw-r--r-- | include/d/d_stage.h | 2 | ||||
| -rw-r--r-- | include/d/meter/d_meter2_info.h | 8 | ||||
| -rw-r--r-- | include/m_Do/m_Do_ext.h | 1 | ||||
| -rw-r--r-- | include/rel/d/a/d_a_canoe/d_a_canoe.h | 11 | ||||
| -rw-r--r-- | include/rel/d/a/d_a_formation_mng/d_a_formation_mng.h | 2 | ||||
| -rw-r--r-- | include/rel/d/a/npc/d_a_npc_ash/d_a_npc_ash.h | 155 | ||||
| -rw-r--r-- | include/rel/d/a/npc/d_a_npc_hoz/d_a_npc_hoz.h | 87 | ||||
| -rw-r--r-- | include/rel/d/a/npc/d_a_npc_the/d_a_npc_the.h | 128 | ||||
| -rw-r--r-- | include/rel/d/a/npc/d_a_npc_zra/d_a_npc_zra.h | 456 | ||||
| -rw-r--r-- | include/rel/d/a/obj/d_a_obj_zraMark/d_a_obj_zraMark.h | 20 |
16 files changed, 1051 insertions, 315 deletions
diff --git a/include/d/a/d_a_npc.h b/include/d/a/d_a_npc.h index 63afb943ee..70c4d898dd 100644 --- a/include/d/a/d_a_npc.h +++ b/include/d/a/d_a_npc.h @@ -20,7 +20,7 @@ struct daNpc_GetParam2 { // name unknown /* 0x8 */ int arcIdx; }; -struct dPnt {}; +struct dPnt : public dStage_dPnt_c {}; class daNpcT_ActorMngr_c { private: @@ -421,7 +421,172 @@ STATIC_ASSERT(sizeof(daNpcT_c) == 0xE40); BOOL daNpcT_chkEvtBit(u32 i_idx); BOOL daNpcT_chkPointInArea(cXyz param_0, cXyz param_1, cXyz param_2, s16 param_3, int param_4); -BOOL daNpcF_chkPointInArea(cXyz, cXyz, cXyz, s16); + +struct daBaseNpc_matAnm_c { + /* 8014D884 */ void calc(J3DMaterial*) const; + /* 80150444 */ ~daBaseNpc_matAnm_c(); +}; + +class daBaseNpc_acMngr_c { +private: + /* 0x00 */ u8 field_0x00[4]; + /* 0x04 */ u32 mActorId; + +public: + /* 8014D804 */ daBaseNpc_acMngr_c(); + /* 8014D81C */ void entry(fopAc_ac_c*); + /* 8014D838 */ fopAc_ac_c* getActor(); + /* 80150524 */ ~daBaseNpc_acMngr_c(); +}; + +class daBaseNpc_path_c { +private: + /* 0x000 */ f32 field_0x0; + /* 0x004 */ dPath* mpRoomPath; + /* 0x008 */ f32 field_0x8; + /* 0x010 */ u8 field_0xc[2562]; + /* 0xA0E */ u16 field_0xa0e; + /* 0xA10 */ u16 mIdx; + /* 0xA12 */ s8 mDirection; + /* 0xA13 */ u8 field_0xa13[17]; + +public: + /* 8014D998 */ daBaseNpc_path_c(); + /* 8014D9A8 */ BOOL isPath(); + /* 8014D9BC */ int setPathInfo(u8, s8, s8); + /* 8014DA48 */ void reverseDir(); + /* 8014DA64 */ s32 chkPnt(cXyz); + /* 8014DAC4 */ void setNextPnt(); + /* 8014DB04 */ u16 getIdx(); + /* 8014DB0C */ void setIdx(u16); + /* 8014DB14 */ Vec getPntPos(u16); + /* 801503FC */ ~daBaseNpc_path_c(); +}; + +class daBaseNpc_lookat_c { +private: + /* 0x00 */ int field_0x00; + /* 0x04 */ csXyz mMaxJntLmt[2]; + /* 0x10 */ u8 field_0x0A[12]; + /* 0x1C */ csXyz mMinJntLmt[2]; + /* 0x28 */ u8 field_0x28[12]; + /* 0x34 */ cXyz mJntPos[3]; + /* 0x4C */ u8 field_0x4C[24]; + /* 0x64 */ csXyz mUnk[2]; + /* 0x70 */ csXyz mRotation[2]; + /* 0x7C */ csXyz mUnk2[2]; + /* 0x88 */ u8 field_0x88[4]; + /* 0x8C */ cXyz* mpAttnPos; + +public: + /* 8014DB40 */ void limitter(s16, s16*, s16, s16); + /* 8014DBB4 */ void calc(fopAc_ac_c*, f32 (*)[4], s16); + /* 8014E634 */ void setMaxJntLmt(csXyz, int); + /* 8014E658 */ void setMinJntLmt(csXyz, int); + /* 8014E67C */ void setJntPos(cXyz, int); + /* 8014E6A0 */ int setAttnPos(cXyz*); + /* 8014E6AC */ csXyz getRot(int); + /* 801502EC */ ~daBaseNpc_lookat_c(); +}; + +class daBaseNpc_c : public fopAc_ac_c { +private: + /* 0x568 */ void* vtable; + /* 0x56C */ dBgS_Acch field_0x56c; + /* 0x744 */ u8 field_0x744[16]; + /* 0x754 */ mDoExt_McaMorfSO* mpMorf[2]; + /* 0x758 */ Z2Creature mCreature; + /* 0x7EC */ mDoExt_bckAnm mBckAnm; + /* 0x808 */ mDoExt_btpAnm mBtpAnm; + /* 0x820 */ u8 tmp2[28]; + /* 0x83c */ u16* field_0x83c; + /* 0x840 */ u16 field_0x840; + /* 0x842 */ u8 field_0x842[6]; + /* 0x848 */ s32 mUnk; + /* 0x84C */ dMsgFlow_c mMsg; + /* 0x898 */ u8 field_0x898[2]; + /* 0x89A */ s16 mEvtIdx; + /* 0x89C */ u8 field_0x89C[34]; + /* 0x8BE */ u8 mRoomId; + /* 0x8C0 */ u8 field_0x8C0[90]; + /* 0x91A */ csXyz field_0x91a; + /* 0x920 */ csXyz field_0xd7e; + /* 0x926 */ csXyz field_0xd84; + /* 0x92C */ csXyz field_0xd8a; + /* 0x932 */ csXyz field_0x932; + /* 0x938 */ u8 field_0x938[4]; + /* 0x93C */ csXyz field_0x93c; + /* 0x940 */ u8 field_0x940[18]; + /* 0x954 */ cXyz field_0x954; + /* 0x960 */ u8 field_0x960[36]; + /* 0x984 */ csXyz field_0x984; + /* 0x98A */ u8 field_0x98A[18]; + /* 0x99C */ csXyz field_0x99c; + /* 0x9A2 */ u8 field_0x9a2[70]; + /* 0x9E8 */ const cBgS_PolyInfo mBgSPolyInfo; + /* 0x9F9 */ u8 field_0x9f9[27]; + +public: + /* 8014E6C8 */ daBaseNpc_c(); + /* 8014E89C */ ~daBaseNpc_c(); + /* 8014EAD0 */ void execute(); + /* 8014EC50 */ void draw(f32); + /* 8014EE3C */ bool getResName(); + /* 8014EE44 */ J3DAnmTransform* getTrnsfrmKeyAnmP(char*, int); + /* 8014EE80 */ void setMcaMorfAnm(J3DAnmTransformKey*, f32, f32, int, int, int); + /* 8014EEE4 */ void setBckAnm(J3DAnmTransform*, f32, int, int, int, bool); + /* 8014EF28 */ J3DAnmTransform* getTexPtrnAnmP(char*, int); + /* 8014EF64 */ void setBtpAnm(J3DAnmTexPattern*, J3DModelData*, f32, int); + /* 8014EFA4 */ void attnSttsOn(int, int); + /* 8014EFF0 */ void setParam(); + /* 8014EFF4 */ void orderEvent(int, char*); + /* 8014F09C */ void mainProc(); + /* 8014F0A0 */ void setEnvTevColor(); + /* 8014F0FC */ void setRoomNo(); + /* 8014F140 */ bool btkCtrl(); + /* 8014F148 */ int checkEndAnm(f32); + /* 8014F1C8 */ int checkEndAnm(J3DFrameCtrl*); + /* 8014F228 */ void allAnmPlay(); + /* 8014F38C */ void adjustShapeAngle(); + /* 8014F390 */ void setMtx(int); + /* 8014F4A0 */ void setCollisions(); + /* 8014F4A4 */ void setAttnPos(); + /* 8014F4A8 */ void drawOtherMdls(); + /* 8014F4AC */ bool dbgDraw(); + + void setVtable(void* table) { vtable = table; } + + static u8 const mCcDObj[48]; + static dCcD_SrcCyl mCcDCyl; + static dCcD_SrcSph mCcDSph; +}; + +class daBaseNpc_moveBgActor_c : public daBaseNpc_c { +private: + /* 0xA14 */ u32 field_0xa14; + +public: + /* 8014F4B4 */ daBaseNpc_moveBgActor_c(); + /* 8014F518 */ void MoveBGCreateHeap(); + /* 8014F60C */ void + MoveBGCreate(char const*, int, + void (*)(dBgW*, void*, cBgS_PolyInfo const&, bool, cXyz*, csXyz*, csXyz*), u32); + /* 8014F6FC */ void MoveBGDelete(); + /* 8014F770 */ void MoveBGExecute(); + /* 801503BC */ bool CreateHeap(); + /* 801503C4 */ bool Create(); + /* 801503CC */ bool Delete(); + /* 801503D4 */ bool Execute(f32 (**)[3][4]); + /* 801503DC */ bool Draw(); + /* 801503E4 */ bool IsDelete(); + /* 801503EC */ bool ToFore(); + /* 801503F4 */ bool ToBack(); + /* 80155FB0 */ ~daBaseNpc_moveBgActor_c(); + + static u8 m_name[4]; + static u8 m_dzb_id[4]; + static u8 m_set_func[4]; +}; class daNpcF_ActorMngr_c { private: @@ -462,41 +627,41 @@ protected: /* 0x8CC */ cXyz field_0x8cc; /* 0x8D8 */ cXyz field_0x8d8; /* 0x8E4 */ cXyz mHeadPos; - /* 0x8F0 */ csXyz field_0x8f0; - /* 0x8F6 */ csXyz field_0x8f6; + /* 0x8F0 */ csXyz mCurAngle; + /* 0x8F6 */ csXyz mOldAngle; /* 0x8FC */ csXyz mEyeAngle; /* 0x902 */ csXyz mHeadAngle; /* 0x908 */ csXyz field_0x908[3]; - /* 0x91A */ csXyz field_0x91a[3]; + /* 0x91A */ csXyz mLookatAngle[3]; /* 0x92C */ int mCutIndex; /* 0x930 */ u32 field_0x930; /* 0x934 */ int mAttnIdx; /* 0x938 */ int mAttnChangeTimer; /* 0x93C */ int mAttnActorTimer[5]; - /* 0x950 */ int field_0x950; + /* 0x950 */ int mMsgTimer; /* 0x954 */ int field_0x954; /* 0x958 */ int field_0x958; /* 0x95C */ int field_0x95c; - /* 0x960 */ int field_0x960; - /* 0x964 */ int field_0x964; - /* 0x968 */ int field_0x968; - /* 0x96C */ int field_0x96c; - /* 0x970 */ f32 field_0x970; + /* 0x960 */ int mEventTimer; + /* 0x964 */ int mBtpTimer; + /* 0x968 */ int mTurnAmount; + /* 0x96C */ int mTurnMode; + /* 0x970 */ f32 mTurnStepNum; /* 0x974 */ f32 mExpressionMorfOverride; /* 0x978 */ f32 mExpressionMorf; /* 0x97C */ f32 mMotionMorfOverride; - /* 0x980 */ f32 field_0x980; + /* 0x980 */ f32 mGroundH; /* 0x984 */ f32 field_0x984[3]; - /* 0x990 */ u16 field_0x990; - /* 0x992 */ u16 field_0x992; - /* 0x994 */ u16 field_0x994; - /* 0x996 */ s16 field_0x996; + /* 0x990 */ s16 field_0x990; + /* 0x992 */ s16 field_0x992; + /* 0x994 */ s16 mTurnStartAngle; + /* 0x996 */ s16 mTurnTargetAngle; /* 0x998 */ u16 field_0x998; /* 0x99C */ u32 mAnmFlags; - /* 0x9A0 */ u32 field_0x9a0; + /* 0x9A0 */ u32 mShadowKey; /* 0x9A4 */ u32 field_0x9a4; /* 0x9A8 */ u32 mHitodamaParticleKey[2]; - /* 0x9B0 */ u32 field_0x9b0; + /* 0x9B0 */ u32 mPolySound; /* 0x9B4 */ int mFlowNodeNo; /* 0x9B8 */ cXyz field_0x9b8; /* 0x9C4 */ cXyz field_0x9c4; @@ -512,12 +677,12 @@ protected: /* 0x9E2 */ u16 mMotionLoops; /* 0x9E4 */ u16 mExpressionLoops; /* 0x9E6 */ u16 mOrderEvtNo; - /* 0x9E8 */ s8 field_0x9e8; - /* 0x9E9 */ u8 field_0x9e9; - /* 0x9EA */ u8 field_0x9ea; + /* 0x9E8 */ s8 mReverb; + /* 0x9E9 */ bool mOrderSpeakEvt; + /* 0x9EA */ bool field_0x9ea; /* 0x9EB */ bool field_0x9eb; - /* 0x9EC */ u8 field_0x9ec; - /* 0x9ED */ bool field_0x9ed; + /* 0x9EC */ bool field_0x9ec; + /* 0x9ED */ bool mOrderNewEvt; /* 0x9EE */ bool field_0x9ee; /* 0x9EF */ u8 field_0x9ef; /* 0x9F0 */ u8 field_0x9f0; @@ -528,7 +693,7 @@ protected: /* 0x9F5 */ u8 field_0x9f5; /* 0x9F6 */ u8 field_0x9f6; /* 0x9F8 */ dMsgFlow_c mFlow; - /* 0xA44 */ cBgS_GndChk field_0xa44; + /* 0xA44 */ cBgS_GndChk mGndChk; /* 0xA80 */ dBgS_GndChk field_0xa80; /* 0xAD4 */ dBgS_LinChk field_0xad4; @@ -553,6 +718,8 @@ public: ANM_FLAG_400 = 0x0400, ANM_FLAG_800 = 0x0800, ANM_PAUSE_EXPRESSION = 0x1000, + ANM_PAUSE_BPK = 0x2000, + ANM_PLAY_BPK = 0x4000, ANM_MOTION_FLAGS = ANM_PAUSE_MORF | ANM_PAUSE_BTK | ANM_PAUSE_BRK | ANM_PLAY_MORF | ANM_PLAY_BTK | ANM_PLAY_BRK, ANM_EXPRESSION_FLAGS = ANM_PAUSE_BCK | ANM_PAUSE_BTP | ANM_PLAY_BCK | ANM_PLAY_BTP | @@ -561,9 +728,19 @@ public: ANM_PAUSE_BTP | ANM_PAUSE_EXPRESSION, }; + enum LookMode { + /* 0 */ LOOK_NONE, + /* 1 */ LOOK_RESET, + /* 2 */ LOOK_PLAYER, + /* 3 */ LOOK_PLAYER_TALK, + /* 4 */ LOOK_ACTOR, + /* 5 */ LOOK_ATTN, + }; + /* 80152014 */ BOOL execute(); - /* 801522AC */ BOOL draw(int, int, f32, _GXColorS10*, int); - /* 80152614 */ void tgHitCallBack(fopAc_ac_c*, dCcD_GObjInf*, fopAc_ac_c*, dCcD_GObjInf*); + /* 801522AC */ BOOL draw(BOOL, BOOL, f32, _GXColorS10*, BOOL); + /* 80152614 */ static void tgHitCallBack(fopAc_ac_c*, dCcD_GObjInf*, fopAc_ac_c*, + dCcD_GObjInf*); /* 80152654 */ static void* srchAttnActor1(void*, void*); /* 801526E8 */ static void* srchActor(void*, void*); @@ -592,26 +769,26 @@ public: /* 8015337C */ void setLookatMtx(int, int*, f32); /* 80153578 */ void hitChk2(dCcD_Cyl*, int, int); /* 80153658 */ void setDamage(int, int, int); - /* 80153718 */ int ctrlMsgAnm(int&, int&, fopAc_ac_c*, int); + /* 80153718 */ int ctrlMsgAnm(int&, int&, fopAc_ac_c*, BOOL); /* 8015387C */ void orderEvent(int, char*, u16, u16, u8, u16); /* 80153954 */ void changeEvent(char*, char*, u16, u16); /* 801539F0 */ BOOL chkActorInSight(fopAc_ac_c*, f32); /* 80153A78 */ BOOL chkActorInArea(fopAc_ac_c*, cXyz, cXyz, s16); /* 80153BDC */ BOOL chkActorInAttnArea(fopAc_ac_c*, fopAc_ac_c*, int); - /* 80153D1C */ int initTalk(int, fopAc_ac_c**); + /* 80153D1C */ BOOL initTalk(int, fopAc_ac_c**); /* 80153D84 */ BOOL talkProc(int*, BOOL, fopAc_ac_c**); /* 80153EF4 */ BOOL turn(s16, f32, int); /* 801540A4 */ BOOL step(s16, int, int, int); /* 80154250 */ void setAngle(s16); /* 80154278 */ u8 getDistTableIdx(int, int); /* 801542A0 */ fopAc_ac_c* getEvtAreaTagP(int, int); - /* 8015436C */ fopAc_ac_c* getAttnActorP(int, fpcLyIt_JudgeFunc, f32, f32, f32, f32, s16, - int, int); + /* 8015436C */ fopAc_ac_c* getAttnActorP(BOOL, fpcLyIt_JudgeFunc, f32, f32, f32, f32, s16, + int, BOOL); /* 80154730 */ BOOL chkActorInSight2(fopAc_ac_c*, f32, s16); /* 80154834 */ BOOL chkPointInArea(cXyz, cXyz, f32, f32, f32, s16); /* 801548F4 */ BOOL chkPointInArea(cXyz, cXyz, cXyz, s16); /* 8015496C */ cXyz getAttentionPos(fopAc_ac_c*); - /* 801549E0 */ BOOL chkFindPlayer2(int, s16); + /* 801549E0 */ BOOL chkFindPlayer2(BOOL, s16); /* 80154BD8 */ void setHitodamaPrtcl(); /* 80155BF4 */ virtual ~daNpcF_c(); @@ -659,176 +836,17 @@ public: STATIC_ASSERT(sizeof(daNpcF_c) == 0xB48); BOOL daNpcF_chkEvtBit(u32 i_idx); +void daNpcF_onEvtBit(u32 i_idx); BOOL daNpcF_chkTmpBit(u32 i_idx); void daNpcF_offTmpBit(u32 i_idx); +BOOL daNpcF_chkPointInArea(cXyz, cXyz, cXyz, s16); int daNpcF_getPlayerInfoFromPlayerList(int param_0, int i_roomNo, cXyz& param_2, csXyz& param_3); s16 daNpcF_getGroundAngle(cBgS_PolyInfo*, s16); - -struct daBaseNpc_matAnm_c { - /* 8014D884 */ void calc(J3DMaterial*) const; - /* 80150444 */ ~daBaseNpc_matAnm_c(); -}; - -class daBaseNpc_acMngr_c { -private: - /* 0x00 */ u8 field_0x00[4]; - /* 0x04 */ u32 mActorId; - -public: - /* 8014D804 */ daBaseNpc_acMngr_c(); - /* 8014D81C */ void entry(fopAc_ac_c*); - /* 8014D838 */ fopAc_ac_c* getActor(); - /* 80150524 */ ~daBaseNpc_acMngr_c(); -}; - -class daBaseNpc_path_c { -private: - /* 0x000 */ f32 field_0x0; - /* 0x004 */ dPath* mpRoomPath; - /* 0x008 */ f32 field_0x8; - /* 0x010 */ u8 field_0xc[2562]; - /* 0xA0E */ u16 field_0xa0e; - /* 0xA10 */ u16 mIdx; - /* 0xA12 */ s8 mDirection; - /* 0xA13 */ u8 field_0xa13[17]; - -public: - /* 8014D998 */ daBaseNpc_path_c(); - /* 8014D9A8 */ BOOL isPath(); - /* 8014D9BC */ int setPathInfo(u8, s8, s8); - /* 8014DA48 */ void reverseDir(); - /* 8014DA64 */ s32 chkPnt(cXyz); - /* 8014DAC4 */ void setNextPnt(); - /* 8014DB04 */ u16 getIdx(); - /* 8014DB0C */ void setIdx(u16); - /* 8014DB14 */ Vec getPntPos(u16); - /* 801503FC */ ~daBaseNpc_path_c(); -}; - -class daBaseNpc_lookat_c { -private: - /* 0x00 */ int field_0x00; - /* 0x04 */ csXyz mMaxJntLmt[2]; - /* 0x10 */ u8 field_0x0A[12]; - /* 0x1C */ csXyz mMinJntLmt[2]; - /* 0x28 */ u8 field_0x28[12]; - /* 0x34 */ cXyz mJntPos[3]; - /* 0x4C */ u8 field_0x4C[24]; - /* 0x64 */ csXyz mUnk[2]; - /* 0x70 */ csXyz mRotation[2]; - /* 0x7C */ csXyz mUnk2[2]; - /* 0x88 */ u8 field_0x88[4]; - /* 0x8C */ cXyz* mpAttnPos; - -public: - /* 8014DB40 */ void limitter(s16, s16*, s16, s16); - /* 8014DBB4 */ void calc(fopAc_ac_c*, f32 (*)[4], s16); - /* 8014E634 */ void setMaxJntLmt(csXyz, int); - /* 8014E658 */ void setMinJntLmt(csXyz, int); - /* 8014E67C */ void setJntPos(cXyz, int); - /* 8014E6A0 */ int setAttnPos(cXyz*); - /* 8014E6AC */ csXyz getRot(int); - /* 801502EC */ ~daBaseNpc_lookat_c(); -}; - -class daBaseNpc_c : public fopAc_ac_c { -private: - /* 0x568 */ void* vtable; - /* 0x56C */ dBgS_Acch field_0x56c; - /* 0x744 */ u8 field_0x744[16]; - /* 0x754 */ mDoExt_McaMorfSO* mpMorf[2]; - /* 0x758 */ Z2Creature mCreature; - /* 0x7EC */ mDoExt_bckAnm mBckAnm; - /* 0x808 */ mDoExt_btpAnm mBtpAnm; - /* 0x820 */ u8 tmp2[28]; - /* 0x83c */ u16* field_0x83c; - /* 0x840 */ u16 field_0x840; - /* 0x842 */ u8 field_0x842[6]; - /* 0x848 */ s32 mUnk; - /* 0x84C */ dMsgFlow_c mMsg; - /* 0x898 */ u8 field_0x898[2]; - /* 0x89A */ s16 mEvtIdx; - /* 0x89C */ u8 field_0x89C[34]; - /* 0x8BE */ u8 mRoomId; - /* 0x8C0 */ u8 field_0x8C0[90]; - /* 0x91A */ csXyz field_0x91a; - /* 0x920 */ csXyz field_0xd7e; - /* 0x926 */ csXyz field_0xd84; - /* 0x92C */ csXyz field_0xd8a; - /* 0x932 */ csXyz field_0x932; - /* 0x938 */ u8 field_0x938[4]; - /* 0x93C */ csXyz field_0x93c; - /* 0x940 */ u8 field_0x940[18]; - /* 0x954 */ cXyz field_0x954; - /* 0x960 */ u8 field_0x960[36]; - /* 0x984 */ csXyz field_0x984; - /* 0x98A */ u8 field_0x98A[18]; - /* 0x99C */ csXyz field_0x99c; - /* 0x9A2 */ u8 field_0x9a2[70]; - /* 0x9E8 */ const cBgS_PolyInfo mBgSPolyInfo; - /* 0x9F9 */ u8 field_0x9f9[27]; - -public: - /* 8014E6C8 */ daBaseNpc_c(); - /* 8014E89C */ ~daBaseNpc_c(); - /* 8014EAD0 */ void execute(); - /* 8014EC50 */ void draw(f32); - /* 8014EE3C */ bool getResName(); - /* 8014EE44 */ J3DAnmTransform* getTrnsfrmKeyAnmP(char*, int); - /* 8014EE80 */ void setMcaMorfAnm(J3DAnmTransformKey*, f32, f32, int, int, int); - /* 8014EEE4 */ void setBckAnm(J3DAnmTransform*, f32, int, int, int, bool); - /* 8014EF28 */ J3DAnmTransform* getTexPtrnAnmP(char*, int); - /* 8014EF64 */ void setBtpAnm(J3DAnmTexPattern*, J3DModelData*, f32, int); - /* 8014EFA4 */ void attnSttsOn(int, int); - /* 8014EFF0 */ void setParam(); - /* 8014EFF4 */ void orderEvent(int, char*); - /* 8014F09C */ void mainProc(); - /* 8014F0A0 */ void setEnvTevColor(); - /* 8014F0FC */ void setRoomNo(); - /* 8014F140 */ bool btkCtrl(); - /* 8014F148 */ int checkEndAnm(f32); - /* 8014F1C8 */ int checkEndAnm(J3DFrameCtrl*); - /* 8014F228 */ void allAnmPlay(); - /* 8014F38C */ void adjustShapeAngle(); - /* 8014F390 */ void setMtx(int); - /* 8014F4A0 */ void setCollisions(); - /* 8014F4A4 */ void setAttnPos(); - /* 8014F4A8 */ void drawOtherMdls(); - /* 8014F4AC */ bool dbgDraw(); - - void setVtable(void* table) { vtable = table; } - - static u8 const mCcDObj[48]; - static dCcD_SrcCyl mCcDCyl; - static dCcD_SrcSph mCcDSph; -}; - -class daBaseNpc_moveBgActor_c : public daBaseNpc_c { -private: - /* 0xA14 */ u32 field_0xa14; - -public: - /* 8014F4B4 */ daBaseNpc_moveBgActor_c(); - /* 8014F518 */ void MoveBGCreateHeap(); - /* 8014F60C */ void - MoveBGCreate(char const*, int, - void (*)(dBgW*, void*, cBgS_PolyInfo const&, bool, cXyz*, csXyz*, csXyz*), u32); - /* 8014F6FC */ void MoveBGDelete(); - /* 8014F770 */ void MoveBGExecute(); - /* 801503BC */ bool CreateHeap(); - /* 801503C4 */ bool Create(); - /* 801503CC */ bool Delete(); - /* 801503D4 */ bool Execute(f32 (**)[3][4]); - /* 801503DC */ bool Draw(); - /* 801503E4 */ bool IsDelete(); - /* 801503EC */ bool ToFore(); - /* 801503F4 */ bool ToBack(); - /* 80155FB0 */ ~daBaseNpc_moveBgActor_c(); - - static u8 m_name[4]; - static u8 m_dzb_id[4]; - static u8 m_set_func[4]; -}; +BOOL daNpcF_pntVsLineSegmentLengthSquare2D(f32 i_pntX, f32 i_pntZ, f32 i_startX, f32 i_startZ, + f32 i_endX, f32 i_endZ, f32* o_projX, f32* o_projZ, + f32* o_dist2); +BOOL daNpcF_chkPassed(cXyz i_pos, dPnt* i_points, u16 i_idx, u16 i_num, BOOL i_isClosed, + BOOL i_isReversed); class daNpcF_MatAnm_c : public J3DMaterialAnm { private: @@ -854,7 +872,7 @@ class daNpcF_SPCurve_c { private: /* 0x00 */ u16 mNurbs; /* 0x02 */ u16 field_0x02; - /* 0x04 */ u8 field_0x04; + /* 0x04 */ bool mIsReversed; /* 0x05 */ bool mIsClosed; /* 0x08 */ dStage_dPnt_c mPoints[96]; @@ -869,13 +887,13 @@ public: }; // Size: 0x60C class daNpcF_Path_c { -private: +protected: /* 0x00 */ u16 mIdx; - /* 0x02 */ u8 field_0x02; - /* 0x03 */ u8 mIsClosed; + /* 0x02 */ u8 mIsReversed; + /* 0x03 */ bool mIsClosed; /* 0x04 */ dPath* mpRoomPath; - /* 0x08 */ f32 field_0x08; - /* 0x0C */ f32 field_0x0C; + /* 0x08 */ f32 mRange; + /* 0x0C */ f32 mPosDst; /* 0x10 */ f32 field_0x10; /* 0x14 */ cXyz mPosition; /* 0x20 */ daNpcF_SPCurve_c mSPCurve; @@ -883,15 +901,15 @@ private: public: /* 80150900 */ void initialize(); /* 8015095C */ int setPathInfo(u8, s8, u8); - /* 80150A24 */ int chkPassed(cXyz); - /* 80150A7C */ void chkPassedDst(cXyz); + /* 80150A24 */ BOOL chkPassed(cXyz); + /* 80150A7C */ BOOL chkPassedDst(cXyz); /* 80150BBC */ void reverse(); - /* 80150BE0 */ int setNextIdx(); + /* 80150BE0 */ BOOL setNextIdx(); /* 80150C18 */ int getNextIdx(); - /* 80150C60 */ u16 getBeforeIdx(); - /* 80150CA8 */ int getBeforePos(cXyz&); - /* 80150D44 */ int getNextPos(cXyz&); - /* 80150DE0 */ int getDstPos(cXyz, cXyz&); + /* 80150C60 */ int getBeforeIdx(); + /* 80150CA8 */ BOOL getBeforePos(cXyz&); + /* 80150D44 */ BOOL getNextPos(cXyz&); + /* 80150DE0 */ BOOL getDstPos(cXyz, cXyz&); /* 80150EB4 */ void setNextIdxDst(cXyz); daNpcF_Path_c() { @@ -901,30 +919,36 @@ public: virtual ~daNpcF_Path_c() {} int getIdx() { return mIdx; }; + void setIdx(int i_idx) { mIdx = i_idx; } + u8 getArg0(int i_idx) { return mpRoomPath->m_points[i_idx].mArg0; } Vec getPntPos(int i_idx) { return mpRoomPath->m_points[i_idx].m_position; } - int chkClose() { return dPath_ChkClose(mpRoomPath); } + BOOL chkClose() { return dPath_ChkClose(mpRoomPath); } + BOOL chkReverse() { return mIsReversed == true; } + void onReverse() { mIsReversed = true; } + dPath* getPathInfo() { return mpRoomPath; } + void setRange(f32 i_range) { mRange = i_range; } }; // Size: 0x630 class daNpcF_Lookat_c { private: - /* 0x00 */ cXyz field_0x00[4]; + /* 0x00 */ cXyz mJointPos[4]; /* 0x30 */ cXyz* mAttnPos; - /* 0x34 */ csXyz field_0x34[4]; - /* 0x4C */ csXyz field_0x4c[4]; - /* 0x64 */ csXyz field_0x64[4]; + /* 0x34 */ csXyz mAngularMoveDis[4]; + /* 0x4C */ csXyz mMinAngle[4]; + /* 0x64 */ csXyz mMaxAngle[4]; /* 0x7C */ csXyz mRotAngle[4]; - /* 0x94 */ u8 field_0x94[4]; + /* 0x94 */ bool field_0x94[4]; /* 0x98 vtable */ public: /* 80151038 */ void initialize(); /* 801510B8 */ void setParam(f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, s16, cXyz*); - /* 80151350 */ void calc(fopAc_ac_c*, f32 (*)[4], csXyz**, int, int, int); + /* 80151350 */ void calc(fopAc_ac_c*, Mtx, csXyz**, BOOL, int, BOOL); /* 801515D4 */ void adjustMoveDisAngle(s16&, s16, s16, s16); - /* 80151648 */ void initCalc(fopAc_ac_c*, f32 (*)[4], cXyz*, csXyz*, f32*, cXyz&, int); + /* 80151648 */ void initCalc(fopAc_ac_c*, Mtx, cXyz*, csXyz*, f32*, cXyz&, BOOL); /* 80151A54 */ void update(cXyz*, csXyz*, f32*); - /* 80151B68 */ void calcMoveDisAngle(int, cXyz*, csXyz*, cXyz, int, int); + /* 80151B68 */ void calcMoveDisAngle(int, cXyz*, csXyz*, cXyz, int, BOOL); /* 80151F54 */ void setRotAngle(); /* 80151FE0 */ void clrRotAngle(); daNpcF_Lookat_c() { initialize(); } diff --git a/include/d/a/d_a_player.h b/include/d/a/d_a_player.h index 6d551c2e6f..955f2fb15b 100644 --- a/include/d/a/d_a_player.h +++ b/include/d/a/d_a_player.h @@ -753,6 +753,14 @@ public: void onFogFade() { onNoResetFlg2(FLG2_UNK_4000); } BOOL checkStickArrowReset() const { return checkResetFlg0(RFLG0_UNK_1); } + void setCanoeSlider() { mSpecialMode = 0x2D; } + + void offCanoeSlider() { + if (checkCanoeSlider()) { + mSpecialMode = 0; + } + } + void offCargoCarry() { if (checkCargoCarry()) { mSpecialMode = 0; diff --git a/include/d/com/d_com_inf_game.h b/include/d/com/d_com_inf_game.h index c88d73544b..3d75d8aa37 100644 --- a/include/d/com/d_com_inf_game.h +++ b/include/d/com/d_com_inf_game.h @@ -3676,6 +3676,10 @@ inline int dComIfGd_setSimpleShadow(cXyz* pos, f32 param_1, f32 param_2, cXyz* p param_5, tex); } +inline bool dComIfGd_addRealShadow(u32 key, J3DModel* model) { + return g_dComIfG_gameInfo.drawlist.addRealShadow(key, model); +} + inline void dComIfGd_drawListItem3d() { g_dComIfG_gameInfo.drawlist.drawOpaListItem3d(); g_dComIfG_gameInfo.drawlist.drawXluListItem3d(); diff --git a/include/d/d_attention.h b/include/d/d_attention.h index 79c2839697..27a8a9a34e 100644 --- a/include/d/d_attention.h +++ b/include/d/d_attention.h @@ -141,13 +141,13 @@ public: }; struct dist_entry { - f32 field_0x0; - f32 field_0x4; - f32 field_0x8; - f32 field_0xc; - f32 field_0x10; - f32 field_0x14; - u32 field_0x18; + /* 0x00 */ f32 mRadius1; + /* 0x04 */ f32 mRadius2; + /* 0x08 */ f32 mDistanceAdjust; + /* 0x0C */ f32 mUpperY; + /* 0x10 */ f32 mLowerY; + /* 0x14 */ f32 mWeight; + /* 0x18 */ u32 mAngleSelect; }; // Size: 0x1C struct type_tbl_entry { diff --git a/include/d/d_drawlist.h b/include/d/d_drawlist.h index cbc9de6d05..f8311e2468 100644 --- a/include/d/d_drawlist.h +++ b/include/d/d_drawlist.h @@ -369,6 +369,10 @@ public: param_6); } + bool addRealShadow(u32 key, J3DModel* model) { + return mShadowControl.addReal(key, model); + } + void newPeekZdata(s16 param_0, s16 param_1, u32* param_2) { mPeekZ.newData(param_0, param_1, param_2); } diff --git a/include/d/d_path.h b/include/d/d_path.h index 6906646b5f..82e25d6b5c 100644 --- a/include/d/d_path.h +++ b/include/d/d_path.h @@ -11,12 +11,12 @@ struct dPath { /* 0x0 */ u16 m_num; /* 0x2 */ u16 m_nextID; /* 0x4 */ u8 field_0x4; - /* 0x5 */ u8 m_closed; + /* 0x5 */ bool m_closed; /* 0x6 */ u8 field_0x6; /* 0x8 */ dStage_dPnt_c* m_points; }; -inline int dPath_ChkClose(dPath* i_path) { return (i_path->m_closed & 1); } +inline BOOL dPath_ChkClose(dPath* i_path) { return i_path->m_closed & 1; } dPath* dPath_GetRoomPath(int path_index, int room_no); dPath* dPath_GetNextRoomPath(dPath const* i_path, int room_no); diff --git a/include/d/d_stage.h b/include/d/d_stage.h index 2ccdb8412d..caf818306b 100644 --- a/include/d/d_stage.h +++ b/include/d/d_stage.h @@ -290,7 +290,7 @@ struct dStage_dPnt_c { /* 0x0 */ u8 field_0x0; /* 0x1 */ u8 field_0x1; /* 0x2 */ u8 field_0x2; - /* 0x3 */ u8 field_0x3; + /* 0x3 */ u8 mArg0; /* 0x4 */ Vec m_position; }; // Size: 0x10 diff --git a/include/d/meter/d_meter2_info.h b/include/d/meter/d_meter2_info.h index 7884dc3f4e..b030682561 100644 --- a/include/d/meter/d_meter2_info.h +++ b/include/d/meter/d_meter2_info.h @@ -154,8 +154,8 @@ public: void setMsgTimeMs(u32 msgTime) { mMsgTimeMs = msgTime; } void setTimeMs(s32 i_time) { mTimeMs = i_time; } u32 getTimeMs() { return mTimeMs; } - u8 getNowCount() { return mNowCount; } - u8 getMaxCount() { return mMaxCount; } + int getNowCount() { return mNowCount; } + int getMaxCount() { return mMaxCount; } void setScopeZoomPointer(u8 param_0) { mScopeZoomPointer = param_0; } u8 getItemExplainWindowStatus() { return mItemExplainWindowStatus; } void setItemExplainWindowStatus(u8 i_value) { mItemExplainWindowStatus = i_value; } @@ -611,11 +611,11 @@ inline void dMeter2Info_setTimeMs(s32 i_time) { g_meter2_info.setTimeMs(i_time); } -inline u8 dMeter2Info_getNowCount() { +inline int dMeter2Info_getNowCount() { return g_meter2_info.getNowCount(); } -inline u8 dMeter2Info_getMaxCount() { +inline int dMeter2Info_getMaxCount() { return g_meter2_info.getMaxCount(); } diff --git a/include/m_Do/m_Do_ext.h b/include/m_Do/m_Do_ext.h index 866d255f05..996f68a2f1 100644 --- a/include/m_Do/m_Do_ext.h +++ b/include/m_Do/m_Do_ext.h @@ -128,6 +128,7 @@ public: } int remove(J3DModelData* i_modelData) { return i_modelData->removeMatColorAnimator(mpAnm); } + J3DAnmColor* getBpkAnm() { return mpAnm; } private: /* 0x14 */ J3DAnmColor* mpAnm; diff --git a/include/rel/d/a/d_a_canoe/d_a_canoe.h b/include/rel/d/a/d_a_canoe/d_a_canoe.h index 64cdab8bc6..48df9bd069 100644 --- a/include/rel/d/a/d_a_canoe/d_a_canoe.h +++ b/include/rel/d/a/d_a_canoe/d_a_canoe.h @@ -30,6 +30,13 @@ public: void incShapeOffsetY(f32 offset) { mShapeOffsetY += offset; } void incShapeAngleZ(s16 incZ) { shape_angle.z += incZ; } void onRodID(unsigned int i_rodID) { mRodID = i_rodID; } + void setWaterFallDownSe() { field_0x141c.startSound(Z2SE_AL_CANOE_FALL_DW, 0, -1); } + + void setPosAndAngle(cXyz const* i_pos, s16 i_angle) { + field_0x14d0 = *i_pos; + field_0x144a = i_angle; + field_0x1446 = 1; + } /* 0x0568 */ request_of_phase_process_class mPhaseReq; /* 0x0570 */ J3DModel* mpModel; @@ -48,9 +55,9 @@ public: /* 0x1443 */ u8 mJumpRideFlg; /* 0x1444 */ u8 field_0x1444; /* 0x1445 */ u8 mReverb; - /* 0x1446 */ u8 field_0x1446[0x1448 - 0x1446]; + /* 0x1446 */ u8 field_0x1446; /* 0x1448 */ s16 field_0x1448; - /* 0x144A */ u8 field_0x144a[0x144C - 0x144A]; + /* 0x144A */ s16 field_0x144a; /* 0x144C */ s16 mAimAngle; /* 0x144E */ s16 field_0x144e; /* 0x1450 */ s16 field_0x1450; diff --git a/include/rel/d/a/d_a_formation_mng/d_a_formation_mng.h b/include/rel/d/a/d_a_formation_mng/d_a_formation_mng.h index 5fc0bc4326..6e31be08b5 100644 --- a/include/rel/d/a/d_a_formation_mng/d_a_formation_mng.h +++ b/include/rel/d/a/d_a_formation_mng/d_a_formation_mng.h @@ -12,7 +12,7 @@ struct daFmtMng_Path_c { /* 8083665C */ bool checkPoint(cXyz, f32); bool isPathClose() { return dPath_ChkClose(mPath); } - s8 getArg0() { return mPath->m_points[field_0x4].field_0x3; } + s8 getArg0() { return mPath->m_points[field_0x4].mArg0; } s8 getArg1() { return mPath->m_points[field_0x4].field_0x0; } void chgDir() { diff --git a/include/rel/d/a/npc/d_a_npc_ash/d_a_npc_ash.h b/include/rel/d/a/npc/d_a_npc_ash/d_a_npc_ash.h index f850159428..be2bc7bb44 100644 --- a/include/rel/d/a/npc/d_a_npc_ash/d_a_npc_ash.h +++ b/include/rel/d/a/npc/d_a_npc_ash/d_a_npc_ash.h @@ -3,19 +3,68 @@ #include "d/a/d_a_npc.h" -class daNpcAsh_c; - -typedef bool (daNpcAsh_c::*daNpcAsh_actionFn)(void*); -typedef BOOL (daNpcAsh_c::*daNpcAsh_eventFn)(int); - /** * @ingroup actors-npcs * @brief Ashei * */ class daNpcAsh_c : public daNpcF_c { +public: + typedef bool (daNpcAsh_c::*ActionFn)(void*); + typedef BOOL (daNpcAsh_c::*EventFn)(int); + + enum Type { + /* 0 */ TYPE_BAR, + /* 1 */ TYPE_CASTLE, + }; + + enum Animation { + /* 0x00 */ ANM_NONE, + /* 0x01 */ ANM_F_TALK_A, + /* 0x02 */ ANM_F_TALK_B, + /* 0x03 */ ANM_F_SILENT, + /* 0x04 */ ANM_F_COOL, + /* 0x05 */ ANM_F_ASK, + /* 0x06 */ ANM_F_EXPLAIN_A, + /* 0x07 */ ANM_F_EXPLAIN_B, + /* 0x08 */ ANM_WAIT_A, + /* 0x09 */ ANM_WAIT_B, + /* 0x0A */ ANM_WAIT_C, + /* 0x0B */ ANM_STEP, + /* 0x0C */ ANM_COOL, + /* 0x0D */ ANM_ASK, + /* 0x0E */ ANM_EXPLAIN_A, + /* 0x0F */ ANM_EXPLAIN_B, + /* 0x10 */ ANM_BOWWAIT, + /* 0x11 */ ANM_BOWRUN, + }; + + enum Expression { + /* 0x0 */ EXPR_TALK_A, + /* 0x1 */ EXPR_TALK_B, + /* 0x2 */ EXPR_SILENT, + /* 0x3 */ EXPR_COOL, + /* 0x4 */ EXPR_ASK, + /* 0x5 */ EXPR_EXPLAIN_A, + /* 0x6 */ EXPR_EXPLAIN_B, + /* 0x7 */ EXPR_NONE, + }; + + enum Motion { + /* 0x0 */ MOT_WAIT_A, + /* 0x1 */ MOT_WAIT_B, + /* 0x2 */ MOT_WAIT_C, + /* 0x3 */ MOT_COOL, + /* 0x4 */ MOT_ASK, + /* 0x5 */ MOT_EXPLAIN_A, + /* 0x6 */ MOT_EXPLAIN_B, + /* 0x7 */ MOT_BOWWAIT, + /* 0x8 */ MOT_BOWRUN, + /* 0x9 */ MOT_STEP, + }; + private: - /* 0xB48 */ Z2Creature mZ2; + /* 0xB48 */ Z2Creature mCreatureSound; /* 0xBD8 */ J3DModel* mModelBow; /* 0xBDC */ J3DModel* mModelQuiver; /* 0xBE0 */ daNpcF_MatAnm_c* mpMatAnm; @@ -24,17 +73,17 @@ private: /* 0xCB0 */ fopAc_ac_c* mTalkPartner; /* 0xCB4 */ u32 field_0xcb4; // unused /* 0xCB8 */ dCcD_Cyl mCcCyl[2]; - /* 0xF30 */ daNpcAsh_actionFn mpActionFn; + /* 0xF30 */ ActionFn mpActionFn; /* 0xF3C */ request_of_phase_process_class mPhase[2]; /* 0xF4C */ u32 mItemPartnerId; /* 0xF50 */ u32 field_0xf50; // unused /* 0xF54 */ u32 field_0xf54; - /* 0xF58 */ s16 mMessageNo; + /* 0xF58 */ s16 mFlowID; /* 0xF5A */ s16 mLookMode; - /* 0xF5C */ u16 field_0xf5c; + /* 0xF5C */ u16 mMode; /* 0xF5E */ u8 mMapToolId; /* 0xF5F */ u8 field_0xf5f; - /* 0xF60 */ u8 field_0xf60; + /* 0xF60 */ u8 mType; public: /* 809582EC */ daNpcAsh_c(); @@ -51,8 +100,13 @@ public: /* 809596E0 */ bool setExpressionBtp(int); /* 809597C0 */ void setMotionAnm(int i_idx, f32 i_morf); /* 80959910 */ void reset(); - /* 80959B28 */ /* inline */ bool setAction(daNpcAsh_actionFn); - /* 80959BD0 */ /* inline */ bool isSneaking(); +#ifdef NONMATCHING + /* 80959B28 */ inline bool setAction(ActionFn); + /* 80959BD0 */ inline bool isSneaking(); +#else + /* 80959B28 */ bool setAction(ActionFn); + /* 80959BD0 */ bool isSneaking(); +#endif /* 80959C40 */ bool wait_type0(void*); /* 8095A67C */ void setMotion(int, f32, int); /* 8095A6C0 */ void setExpression(int, f32); @@ -60,13 +114,17 @@ public: /* 8095A8EC */ bool talk(void*); /* 8095AD28 */ bool demo(void*); /* 8095B164 */ bool leave(void*); - /* 8095B48C */ BOOL EvCut_Introduction(int cutIndex); - /* 8095B58C */ BOOL EvCut_Meeting(int cutIndex); - /* 8095B83C */ BOOL EvCut_WiretapSponsor(int cutIndex); - /* 8095BA80 */ BOOL EvCut_WiretapEntrant(int cutIndex); + /* 8095B48C */ BOOL EvCut_Introduction(int i_cutIndex); + /* 8095B58C */ BOOL EvCut_Meeting(int i_cutIndex); + /* 8095B83C */ BOOL EvCut_WiretapSponsor(int i_cutIndex); + /* 8095BA80 */ BOOL EvCut_WiretapEntrant(int i_cutIndex); /* 8095BCF0 */ void setParam(); /* 8095BF6C */ BOOL main(); - /* 8095C200 */ /* inline */ void playMotion(); +#ifdef NONMATCHING + /* 8095C200 */ inline void playMotion(); +#else + /* 8095C200 */ void playMotion(); +#endif /* 8095C520 */ BOOL ctrlBtk(); /* 8095C5C4 */ void setAttnPos(); /* 8095C9BC */ void lookat(); @@ -81,11 +139,11 @@ public: inline bool step(s16, bool); inline void playExpression(); - #ifdef NONMATCHING - static daNpcAsh_eventFn mEvtSeqList[6]; - #else +#ifdef NONMATCHING + static EventFn mEvtSeqList[6]; +#else static u8 mEvtSeqList[72]; - #endif +#endif }; STATIC_ASSERT(sizeof(daNpcAsh_c) == 0xF64); @@ -95,31 +153,38 @@ public: /* 8095D5D4 */ virtual ~daNpcAsh_Param_c(); struct param { - /* 0x00 */ f32 m00; + /* 0x00 */ f32 mAttnOffsetY; /* 0x04 */ f32 mGravity; - /* 0x08 */ f32 m08; - /* 0x0C */ f32 mShadow; - /* 0x10 */ f32 mCcSttsWeight; - /* 0x14 */ f32 m14; - /* 0x18 */ f32 m18; - /* 0x1C */ f32 m1C; - /* 0x20 */ f32 m20; - /* 0x24 */ f32 m24; - /* 0x28 */ f32 m28; - /* 0x2C */ f32 m2C; - /* 0x30 */ f32 m30; - /* 0x34 */ f32 m34; - /* 0x38 */ f32 m38; - /* 0x3C */ f32 m3C; - /* 0x40 */ f32 mLookatScl; - /* 0x44 */ f32 m44; - /* 0x48 */ s16 m48; - /* 0x4A */ s16 m4A; - /* 0x4C */ s16 m4C; - /* 0x4E */ s16 m4E; - /* 0x50 */ f32 mSightAngle; - /* 0x54 */ f32 m54[3]; - /* 0x60 */ u16 m60[6]; + /* 0x08 */ f32 mScale; + /* 0x0C */ f32 mShadowDepth; + /* 0x10 */ f32 mCcWeight; + /* 0x14 */ f32 mCylH; + /* 0x18 */ f32 mWallH; + /* 0x1C */ f32 mWallR; + /* 0x20 */ f32 mBodyUpAngle; + /* 0x24 */ f32 mBodyDownAngle; + /* 0x28 */ f32 mBodyLeftAngle; + /* 0x2C */ f32 mBodyRightAngle; + /* 0x30 */ f32 mHeadUpAngle; + /* 0x34 */ f32 mHeadDownAngle; + /* 0x38 */ f32 mHeadLeftAngle; + /* 0x3C */ f32 mHeadRightAngle; + /* 0x40 */ f32 mNeckAngleScl; + /* 0x44 */ f32 mMorfFrames; + /* 0x48 */ s16 mSpeakDistIdx; + /* 0x4A */ s16 mSpeakAngleIdx; + /* 0x4C */ s16 mTalkDistIdx; + /* 0x4E */ s16 mTalkAngleIdx; + /* 0x50 */ f32 mAttnFovY; + /* 0x54 */ f32 mAttnRadius; + /* 0x58 */ f32 mAttnUpperY; + /* 0x5C */ f32 mAttnLowerY; + /* 0x60 */ u16 field_0x60; + /* 0x62 */ u16 field_0x62; + /* 0x64 */ u16 mTestExpression; + /* 0x66 */ u16 mTestMotion; + /* 0x68 */ u16 mTestLookMode; + /* 0x6A */ bool mTest; }; static param const m; diff --git a/include/rel/d/a/npc/d_a_npc_hoz/d_a_npc_hoz.h b/include/rel/d/a/npc/d_a_npc_hoz/d_a_npc_hoz.h index f0fb5f363a..69be9985ec 100644 --- a/include/rel/d/a/npc/d_a_npc_hoz/d_a_npc_hoz.h +++ b/include/rel/d/a/npc/d_a_npc_hoz/d_a_npc_hoz.h @@ -1,6 +1,91 @@ #ifndef D_A_NPC_HOZ_H #define D_A_NPC_HOZ_H -#include "dolphin/types.h" +#include "d/a/d_a_npc.h" + +class daNpc_Hoz_c : public daNpcT_c { +public: + enum Type { + /* 0 */ TYPE_0, + /* 1 */ TYPE_1, + /* 2 */ TYPE_2, + /* 3 */ TYPE_3, + /* 4 */ TYPE_4, + /* 5 */ TYPE_5, + /* 6 */ TYPE_6, + }; + + /* 80A0150C */ ~daNpc_Hoz_c(); + /* 80A01658 */ void create(); + /* 80A01904 */ void CreateHeap(); + /* 80A01D54 */ void Delete(); + /* 80A01D88 */ void Execute(); + /* 80A01DA8 */ void Draw(); + /* 80A01E44 */ void createHeapCallBack(fopAc_ac_c*); + /* 80A01E64 */ void ctrlJointCallBack(J3DJoint*, int); + /* 80A01F54 */ u8 getType(); + /* 80A01FC8 */ void getFlowNodeNo(); + /* 80A01FE4 */ bool isDelete(); + /* 80A01FEC */ void reset(); + /* 80A021DC */ void setParam(); + /* 80A0236C */ void setAfterTalkMotion(); + /* 80A02370 */ void srchActors(); + /* 80A02374 */ bool checkChangeEvt(); + /* 80A023EC */ bool evtTalk(); + /* 80A024D0 */ bool evtEndProc(); + /* 80A0260C */ bool evtCutProc(); + /* 80A026D4 */ int evtProc(); + /* 80A02918 */ void action(); + /* 80A029A0 */ void beforeMove(); + /* 80A02A18 */ void setAttnPos(); + /* 80A02C50 */ void setCollision(); + /* 80A02DD4 */ void evtOrder(); + /* 80A02F78 */ int drawDbgInfo(); + /* 80A02F80 */ void selectAction(); + /* 80A030A8 */ void chkAction(int (daNpc_Hoz_c::*)(void*)); + /* 80A030D4 */ void setAction(int (daNpc_Hoz_c::*)(void*)); + /* 80A0317C */ void wait(void*); + /* 80A03304 */ void waitBattle(void*); + /* 80A03578 */ void waitTwilightBattle(void*); + /* 80A037E4 */ void waitBoat(void*); + /* 80A03BDC */ void waitBoat2(void*); + /* 80A03F8C */ void waitBoat1_5(void*); + /* 80A04400 */ void waitTw(void*); + /* 80A045FC */ void talk(void*); + /* 80A0487C */ void ECut_boatRace(int); + /* 80A04BE4 */ void ECut_beforeBattle(int); + /* 80A04CDC */ void ECut_afterBattle(int); + /* 80A04E24 */ void ECut_beforeBlast(int); + /* 80A04F6C */ void ECut_afterBlast(int); + /* 80A050B4 */ void ECut_yMushi(int); + /* 80A051C8 */ void ECut_talkBreak(int); + /* 80A064E4 */ daNpc_Hoz_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**); + /* 80A065A4 */ bool getEyeballMaterialNo(); + /* 80A065AC */ s32 getHeadJointNo(); + /* 80A065B4 */ s32 getNeckJointNo(); + /* 80A065BC */ s32 getBackboneJointNo(); + /* 80A065C4 */ bool checkChangeJoint(int); + /* 80A065D4 */ bool checkRemoveJoint(int); + + bool getGameStartFlag() { return mGameStartFlag; } + + static void* mCutNameList[8]; + static u8 mCutList[96]; + + /* 0xE40 */ u8 field_0xe40[0x14d]; + /* 0xF8D */ bool mGameStartFlag; + /* 0xF8E */ u8 field_0xf8e[0x3a]; +}; + +STATIC_ASSERT(sizeof(daNpc_Hoz_c) == 0xFC8); + +struct daNpc_Hoz_Param_c { + /* 80A065E4 */ ~daNpc_Hoz_Param_c(); + + static u8 const m[144]; +}; #endif /* D_A_NPC_HOZ_H */ diff --git a/include/rel/d/a/npc/d_a_npc_the/d_a_npc_the.h b/include/rel/d/a/npc/d_a_npc_the/d_a_npc_the.h index f167e1f506..5bdb9357c1 100644 --- a/include/rel/d/a/npc/d_a_npc_the/d_a_npc_the.h +++ b/include/rel/d/a/npc/d_a_npc_the/d_a_npc_the.h @@ -3,13 +3,78 @@ #include "d/a/d_a_npc.h" -// #define NONMATCHING - class daNpcThe_c : public daNpcF_c { public: typedef BOOL (daNpcThe_c::*ActionFn)(void*); typedef BOOL (daNpcThe_c::*EventFn)(int); + enum Type { + /* 0 */ TYPE_BAR, + /* 1 */ TYPE_1, + /* 2 */ TYPE_KAKARIKO, + }; + + enum Animation { + /* 0x00 */ ANM_NONE, + /* 0x01 */ ANM_F_TALK_A, + /* 0x02 */ ANM_F_SMILE, + /* 0x03 */ ANM_F_CHUCKLE, + /* 0x04 */ ANM_F_TALK_B, + /* 0x05 */ ANM_F_TALK_C, + /* 0x06 */ ANM_F_LAUGH, + /* 0x07 */ ANM_F_TALK_R, + /* 0x08 */ ANM_FH_SMILE, + /* 0x09 */ ANM_FH_CHUCKLE, + /* 0x0A */ ANM_FH_TALK_B, + /* 0x0B */ ANM_FH_TALK_C, + /* 0x0C */ ANM_FH_LAUGH, + /* 0x0D */ ANM_FH_TALK_R, + /* 0x0E */ ANM_WAIT_A, + /* 0x0F */ ANM_WAIT_LOOKING, + /* 0x10 */ ANM_TO_WAIT_B, + /* 0x11 */ ANM_WAIT_B, + /* 0x12 */ ANM_WAIT_LOOKUP, + /* 0x13 */ ANM_TALK_R, + /* 0x14 */ ANM_TALKING_R, + /* 0x15 */ ANM_LOOK_A, + /* 0x16 */ ANM_LOOK, + /* 0x17 */ ANM_KUNE_WAIT_A, + /* 0x18 */ ANM_KUNE_TALK, + /* 0x19 */ ANM_KUNE_WAIT_B, + /* 0x1A */ ANM_KUNE_SHISHI, + }; + + enum Expression { + /* 0x0 */ EXPR_TALK_A, + /* 0x1 */ EXPR_SMILE, + /* 0x2 */ EXPR_CHUCKLE, + /* 0x3 */ EXPR_TALK_B, + /* 0x4 */ EXPR_TALK_C, + /* 0x5 */ EXPR_LAUGH, + /* 0x6 */ EXPR_TALK_R, + /* 0x7 */ EXPR_H_TALK_R, + /* 0x8 */ EXPR_H_SMILE, + /* 0x9 */ EXPR_H_CHUCKLE, + /* 0xA */ EXPR_H_TALK_B, + /* 0xB */ EXPR_H_TALK_C, + /* 0xC */ EXPR_H_LAUGH, + /* 0xD */ EXPR_NONE, + }; + + enum Motion { + /* 0x0 */ MOT_WAIT_A, + /* 0x1 */ MOT_LOOK_A, + /* 0x2 */ MOT_TO_WAIT_B, + /* 0x3 */ MOT_WAIT_LOOKUP, + /* 0x4 */ MOT_KUNE_TALK, + /* 0x5 */ MOT_KUNE_WAIT_A, + /* 0x6 */ MOT_KUNE_SHISHI, + /* 0x7 */ MOT_WAIT_B, + /* 0x8 */ MOT_KUNE_WAIT_B, + /* 0x9 */ MOT_TALK_R, + /* 0xA */ MOT_LOOK, + }; + /* 80AF76CC */ daNpcThe_c(); /* 80AF78E0 */ ~daNpcThe_c(); /* inline */ inline BOOL CreateHeap(); @@ -45,18 +110,18 @@ public: u8 getTypeFromParam() { switch (fopAcM_GetParam(this) & 0xff) { case 0: - return 0; + return TYPE_BAR; case 1: - return 1; + return TYPE_1; case 2: - return 2; + return TYPE_KAKARIKO; default: - return 0; + return TYPE_BAR; } } bool isDelete() { - if (mType == 0 || mType == 1 || mType == 2) { + if (mType == TYPE_BAR || mType == TYPE_1 || mType == TYPE_KAKARIKO) { return false; } else { return true; @@ -83,12 +148,12 @@ public: BOOL setAction(ActionFn action) { if (mpActionFn != NULL) { - mState = 3; + mMode = 3; (this->*mpActionFn)(NULL); } if (action != NULL) { mpActionFn = action; - mState = 0; + mMode = 0; (this->*mpActionFn)(NULL); } return true; @@ -106,6 +171,7 @@ public: } } +private: /* 0xB48 */ Z2Creature mSound; /* 0xBD8 */ daNpcF_MatAnm_c* mpMatAnm; /* 0xBDC */ daNpcF_Lookat_c mLookat; @@ -123,7 +189,7 @@ public: /* 0xE10 */ u32 field_0xe10; /* 0xE14 */ int mFlowID; /* 0xE18 */ s16 mLookMode; - /* 0xE1A */ u16 mState; + /* 0xE1A */ u16 mMode; /* 0xE1C */ bool field_0xe1c; /* 0xE1D */ bool field_0xe1d; /* 0xE1E */ u8 mType; @@ -141,32 +207,32 @@ STATIC_ASSERT(sizeof(daNpcThe_c) == 0xE20); class daNpcThe_Param_c { public: struct param { - /* 0x00 */ f32 field_0x00; + /* 0x00 */ f32 mAttnOffsetY; /* 0x04 */ f32 mGravity; /* 0x08 */ f32 mScale; - /* 0x0C */ f32 field_0x0c; - /* 0x10 */ f32 field_0x10; + /* 0x0C */ f32 mShadowDepth; + /* 0x10 */ f32 mCcWeight; /* 0x14 */ f32 mCylH; /* 0x18 */ f32 mWallH; /* 0x1C */ f32 mWallR; - /* 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 mLookatScl; - /* 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; + /* 0x20 */ f32 mBodyUpAngle; + /* 0x24 */ f32 mBodyDownAngle; + /* 0x28 */ f32 mBodyLeftAngle; + /* 0x2C */ f32 mBodyRightAngle; + /* 0x30 */ f32 mHeadUpAngle; + /* 0x34 */ f32 mHeadDownAngle; + /* 0x38 */ f32 mHeadLeftAngle; + /* 0x3C */ f32 mHeadRightAngle; + /* 0x40 */ f32 mNeckAngleScl; + /* 0x44 */ f32 mMorfFrames; + /* 0x48 */ s16 mSpeakDistIdx; + /* 0x4A */ s16 mSpeakAngleIdx; + /* 0x4C */ s16 mTalkDistIdx; + /* 0x4E */ s16 mTalkAngleIdx; + /* 0x50 */ f32 mAttnFovY; + /* 0x54 */ f32 mAttnRadius; + /* 0x58 */ f32 mAttnUpperY; + /* 0x5C */ f32 mAttnLowerY; /* 0x60 */ s16 field_0x60; /* 0x62 */ s16 field_0x62; /* 0x64 */ s16 mTestExpression; diff --git a/include/rel/d/a/npc/d_a_npc_zra/d_a_npc_zra.h b/include/rel/d/a/npc/d_a_npc_zra/d_a_npc_zra.h index f92d0c08ad..7ec9c9424c 100644 --- a/include/rel/d/a/npc/d_a_npc_zra/d_a_npc_zra.h +++ b/include/rel/d/a/npc/d_a_npc_zra/d_a_npc_zra.h @@ -1,6 +1,460 @@ #ifndef D_A_NPC_ZRA_H #define D_A_NPC_ZRA_H -#include "dolphin/types.h" +#include "d/a/d_a_npc.h" + +class daNpc_zrA_Path_c : public daNpcF_Path_c { +public: + /* 80B7850C */ BOOL getDstPosDst2(cXyz, cXyz&); + /* 80B7876C */ void setNextIdxDst(cXyz); + /* 80B788F8 */ BOOL chkPassedDstXZ(cXyz); + /* 80B78A60 */ BOOL getDstPosDstXZ(cXyz, cXyz&); + /* 80B78CA0 */ BOOL chkPassedChase(u16, cXyz); + /* 80B78CFC */ int getDstPosChase(u16, cXyz, cXyz&); + /* 80B78E08 */ f32 chkPassDst(u16, cXyz); + /* 80B7EF88 */ ~daNpc_zrA_Path_c() {} + int getEndIdx() { return mpRoomPath->m_num - 1; } +}; + +STATIC_ASSERT(sizeof(daNpc_zrA_Path_c) == 0x630); + +class daNpc_zrA_c : public daNpcF_c { +public: + typedef BOOL (daNpc_zrA_c::*ActionFn)(void*); + typedef BOOL (daNpc_zrA_c::*EventFn)(int); + + enum Type { + /* 0 */ TYPE_WAIT, + /* 1 */ TYPE_SWIM, + /* 2 */ TYPE_WATERFALL, + /* 3 */ TYPE_RIVER, + /* 4 */ TYPE_TOBIKOMI, + /* 5 */ TYPE_SEARCH, + /* 6 */ TYPE_SPA, + }; + + enum SoldierType { + /* 0 */ SOLDIER_SPEAR, + /* 1 */ SOLDIER_NOSPEAR, + /* 2 */ SOLDIER_NONE, + }; + + enum ActionType { + /* 0 */ ACT_TYPE_0, + /* 1 */ ACT_TYPE_1, + /* 2 */ ACT_TYPE_2, + /* 3 */ ACT_TYPE_3, + /* 4 */ ACT_TYPE_4, + /* 5 */ ACT_TYPE_5, + /* 6 */ ACT_TYPE_6, + }; + + enum GameMode { + /* 0 */ GAME_MODE_0, + /* 1 */ GAME_MODE_1, + /* 2 */ GAME_MODE_2, + /* 3 */ GAME_MODE_3, + }; + + enum SwimMode { + /* 0 */ SWIM_WAIT, + /* 1 */ SWIM_RAIL, + /* 2 */ SWIM_TURN, + /* 3 */ SWIM_3, + }; + + enum Animation { + /* 0x00 */ ANM_NONE, + /* 0x01 */ ANM_F_TALK_A, + /* 0x02 */ ANM_F_TALK_A_SP, + /* 0x03 */ ANM_F_WAIT_SWIM, + /* 0x04 */ ANM_F_TALK_NOMAL, + /* 0x05 */ ANM_FH_TALK_NOMAL, + /* 0x06 */ ANM_FH_SADSIT_A, + /* 0x07 */ ANM_FH_SADSIT_B, + /* 0x08 */ ANM_FH_SADSIT_C, + /* 0x09 */ ANM_FH_SADSIT_D, + /* 0x0A */ ANM_FH_SADSIT_E, + /* 0x0B */ ANM_F_LOOKING_SP, + /* 0x0C */ ANM_FH_LOOKING_SP, + /* 0x0D */ ANM_F_LOOKUP, + /* 0x0E */ ANM_FH_LOOKUP, + /* 0x0F */ ANM_F_TALK_SWIM_SP, + /* 0x10 */ ANM_F_TALK_B_SP, + /* 0x11 */ ANM_F_SPA_TALK_A, + /* 0x12 */ ANM_FH_SPA_WAIT_A, + /* 0x13 */ ANM_F_SPA_TALK_B, + /* 0x14 */ ANM_FH_SPA_WAIT_B, + /* 0x15 */ ANM_SWIM_TURN, + /* 0x16 */ ANM_STILL, + /* 0x17 */ ANM_FALLSWIM, + /* 0x18 */ ANM_SWIM_TALK, + /* 0x19 */ ANM_SADSIT_A, + /* 0x1A */ ANM_SADSIT_B, + /* 0x1B */ ANM_SADSIT_C, + /* 0x1C */ ANM_SADSIT_D, + /* 0x1D */ ANM_SADSIT_E, + /* 0x1E */ ANM_TOBIKOMI_S, + /* 0x1F */ ANM_TOBIKOMI_T, + /* 0x20 */ ANM_TOBIKOMI_E, + /* 0x21 */ ANM_LOOKING_SP, + /* 0x22 */ ANM_TALK_SWIM_SP, + /* 0x23 */ ANM_TALK_B_SP, + /* 0x24 */ ANM_LOOKUP, + /* 0x25 */ ANM_SPA_WAIT_B, + /* 0x26 */ ANM_SPA_TALK_B, + /* 0x27 */ ANM_SPA_WAIT_A, + /* 0x28 */ ANM_SPA_TALK_A, + /* 0x29 */ ANM_WAIT_A, + /* 0x2A */ ANM_WALK_A, + /* 0x2B */ ANM_TALK_A, + /* 0x2C */ ANM_SWIM_A, + /* 0x2D */ ANM_SWIM_B, + /* 0x2E */ ANM_WAIT_SWIM, + /* 0x2F */ ANM_DIVE, + /* 0x30 */ ANM_DIVE_B, + /* 0x31 */ ANM_FLOAT, + /* 0x32 */ ANM_FLOAT_B, + /* 0x33 */ ANM_STEP, + /* 0x34 */ ANM_WAIT_SP, + /* 0x35 */ ANM_WALK_A_SP, + /* 0x36 */ ANM_TALK_A_SP, + /* 0x37 */ ANM_SWIM_A_SP, + /* 0x38 */ ANM_SWIM_B_SP, + /* 0x39 */ ANM_WAIT_SWIM_SP, + /* 0x3A */ ANM_DIVE_SP, + /* 0x3B */ ANM_DIVE_B_SP, + /* 0x3C */ ANM_FLOAT_SP, + /* 0x3D */ ANM_FLOAT_B_SP, + /* 0x3E */ ANM_STEP_SP, + }; + + enum Expression { + /* 0x00 */ EXPR_TALK_NOMAL, + /* 0x01 */ EXPR_SADSIT_A, + /* 0x02 */ EXPR_SADSIT_B, + /* 0x03 */ EXPR_SADSIT_C, + /* 0x04 */ EXPR_SADSIT_D, + /* 0x05 */ EXPR_SADSIT_E, + /* 0x06 */ EXPR_LOOKING_SP, + /* 0x07 */ EXPR_LOOKUP, + /* 0x08 */ EXPR_SPA_TALK_A, + /* 0x09 */ EXPR_SPA_TALK_B, + /* 0x0A */ EXPR_TALK_SWIM_SP, + /* 0x0B */ EXPR_TALK_B_SP, + /* 0x0C */ EXPR_TALK_A, + /* 0x0D */ EXPR_WAIT_SWIM, + /* 0x0E */ EXPR_TALK_A_SP, + /* 0x0F */ EXPR_TALK_NOMAL_2, + /* 0x10 */ EXPR_LOOKING_SP_2, + /* 0x11 */ EXPR_LOOKUP_2, + /* 0x12 */ EXPR_SPA_WAIT_A, + /* 0x13 */ EXPR_SPA_WAIT_B, + /* 0x14 */ EXPR_NONE, + }; + + enum Motion { + /* 0x00 */ MOT_WAIT_A, + /* 0x01 */ MOT_WAIT_SWIM, + /* 0x02 */ MOT_SWIM_TALK, + /* 0x03 */ MOT_WAIT_A_2, + /* 0x04 */ MOT_WAIT_SWIM_2, + /* 0x05 */ MOT_TALK_A, + /* 0x06 */ MOT_SADSIT_A, + /* 0x07 */ MOT_SADSIT_B, + /* 0x08 */ MOT_SADSIT_C, + /* 0x09 */ MOT_SADSIT_D, + /* 0x0A */ MOT_SADSIT_E, + /* 0x0B */ MOT_LOOKING_SP, + /* 0x0C */ MOT_LOOKUP, + /* 0x0D */ MOT_SPA_TALK_A, + /* 0x0E */ MOT_SPA_TALK_B, + /* 0x0F */ MOT_TALK_SWIM_SP, + /* 0x10 */ MOT_TALK_B_SP, + /* 0x11 */ MOT_TALK_A_2, + /* 0x12 */ MOT_SPA_WAIT_A, + /* 0x13 */ MOT_SPA_WAIT_B, + /* 0x14 */ MOT_WALK_A, + /* 0x16 */ MOT_SWIM_A = 0x16, + /* 0x17 */ MOT_SWIM_B, + /* 0x18 */ MOT_DIVE_SWIM_A, + /* 0x19 */ MOT_DIVE_B_SWIM_A, + /* 0x1A */ MOT_DIVE_SWIM_B, + /* 0x1B */ MOT_DIVE_B_SWIM_B, + /* 0x1C */ MOT_STEP, + /* 0x1D */ MOT_FLOAT, + /* 0x1E */ MOT_FLOAT_B, + /* 0x1F */ MOT_SWIM_TURN, + /* 0x20 */ MOT_TOBIKOMI_S, + /* 0x21 */ MOT_TOBIKOMI_T, + /* 0x22 */ MOT_TOBIKOMI_E, + /* 0x23 */ MOT_FALLSWIM, + }; + + enum Event { + /* 0x0 */ EVT_NONE, + /* 0x1 */ EVT_TALK_SWIM, + /* 0x2 */ EVT_BEFORE_BLAST_ZRR, + /* 0x3 */ EVT_AFTER_BLAST_ZRR, + /* 0x4 */ EVT_THANKS_BLAST, + /* 0x5 */ EVT_RESULT_ANNOUNCE, + /* 0x6 */ EVT_CARRY_WATERFALL, + /* 0x7 */ EVT_CARRY_WATERFALL_NIGHT, + /* 0x8 */ EVT_CARRY_WATERFALL_SKIP, + /* 0x9 */ EVT_CARRY_WATERFALL_NIGHT_SKIP, + /* 0xA */ EVT_SEARCH_PRINCE, + /* 0xB */ EVT_TALK_MULTI, + /* 0xC */ EVT_TALK_MULTI2, + }; + + /* 80B7956C */ daNpc_zrA_c(); + /* 80B79828 */ ~daNpc_zrA_c(); + /* 80B79B58 */ cPhs__Step create(); + /* 80B79F38 */ int CreateHeap(); + /* 80B7A51C */ int Delete(); + /* 80B7A550 */ int Execute(); + /* 80B7A570 */ int Draw(); + /* 80B7A864 */ int ctrlJoint(J3DJoint*, J3DModel*); + /* 80B7AB9C */ static int createHeapCallBack(fopAc_ac_c*); + /* 80B7ABBC */ static int ctrlJointCallBack(J3DJoint*, int); + /* 80B7AC08 */ void setParam(); + /* 80B7ADF0 */ BOOL main(); + /* 80B7B0A4 */ BOOL ctrlBtk(); + /* 80B7B1DC */ void setAttnPos(); + /* 80B7B91C */ void setMtx(); + /* 80B7B9D4 */ bool setExpressionAnm(int, bool); + /* 80B7BD60 */ bool setExpressionBtp(int); + /* 80B7BE74 */ void setExpression(int, f32); + /* 80B7BEA0 */ void setMotionAnm(int, f32); + /* 80B7C070 */ void setMotionWaterAnm(int); + /* 80B7C308 */ void setMotion(int, f32, BOOL); + /* 80B7C34C */ BOOL drawDbgInfo(); + /* 80B7C354 */ void drawOtherMdls(); + /* 80B7C44C */ Type getTypeFromArgument(); + /* 80B7C4B4 */ SoldierType getSoldierTypeFromParam(); + /* 80B7C500 */ GameMode getGameModeFromParam(); + /* 80B7C524 */ ActionType getActionTypeFromParam(); + /* 80B7C5E4 */ u8 getMultiModeFromParam(); + /* 80B7C614 */ u8 getMultiNoFromParam(); + /* inline */ u8 getNoFromParam() { return (u8)fopAcM_GetParam(this); } + /* inline */ u8 getPathNoFromParam() { return (u8)(fopAcM_GetParam(this) >> 8); } + /* 80B7C644 */ BOOL isDelete(); + /* 80B7C71C */ void reset(); + /* 80B7CA8C */ void playExpression(); + /* 80B7D0FC */ void playMotion(); + /* 80B7DAF4 */ BOOL chkAction(ActionFn); + /* 80B7DB20 */ bool setAction(ActionFn); + /* 80B7DBC8 */ bool selectAction(); + /* 80B7DF40 */ BOOL doEvent(); + /* 80B7E668 */ BOOL setSkipZev(int, int); + /* 80B7E6F4 */ void setLookMode(int); + /* 80B7E718 */ void lookat(); + /* 80B7E9E0 */ BOOL chkFindPlayer(); + /* 80B7EA90 */ void setExpressionTalkAfter(); + /* 80B7EBA0 */ void setPrtcl(); + /* 80B7EC54 */ BOOL test(void*); + /* 80B7F8C4 */ BOOL wait(void*); + /* 80B7FD10 */ void walkCalc(); + /* 80B7FE18 */ void waitCalc(); + /* 80B800A4 */ BOOL waitSpa(void*); + /* 80B80228 */ BOOL waitLake(void*); + /* 80B80418 */ BOOL talk(void*); + /* 80B806FC */ BOOL ECut_talkMulti(int); + /* 80B80860 */ BOOL swim(void*); + /* 80B80A94 */ BOOL railSwim(); + /* 80B81788 */ BOOL waitSwim(); + /* 80B81918 */ BOOL turnSwimInit(); + /* 80B81A18 */ BOOL turnSwim(); + /* 80B81CC8 */ BOOL turnSwimCheck(); + /* 80B81D68 */ BOOL evasionCalc(cXyz&, csXyz&); + /* 80B81FB8 */ void calcBank(s16, s16, s16&, s16&); + /* 80B8204C */ void calcWaistAngle(); + /* 80B82238 */ void calcWaistAngleInit(); + /* 80B822CC */ void calcWaistAngleStop(); + /* 80B822D8 */ BOOL calcWaistAngleCheck(); + /* 80B82300 */ void calcModulation(); + /* 80B8247C */ void resetModulation(); + /* 80B824F4 */ void calcSwimAngle(csXyz&, csXyz&, s16, s16); + /* 80B82584 */ void calcSwimPos(cXyz&); + /* 80B825FC */ void calcWaitSwim(BOOL); + /* 80B826F0 */ BOOL ECut_talkSwim(int); + /* 80B82C54 */ BOOL waitWaterfall(void*); + /* 80B82E88 */ BOOL swimWaterfall(void*); + /* 80B833C8 */ BOOL diveWaterfall(void*); + /* 80B83548 */ BOOL talkSwim(void*); + /* 80B837E8 */ BOOL ECut_carryWaterfall(int); + /* 80B83D08 */ BOOL ECut_carryWaterfallSkip(int); + /* 80B83FA4 */ BOOL diveCalc(s16, s16, BOOL); + /* 80B84298 */ BOOL waitRiverDescend(void*); + /* 80B84B74 */ BOOL swimRiverDescend(void*); + /* 80B85B14 */ BOOL swimRiverDescend2(void*); + /* 80B8601C */ BOOL diveRiverDescend(void*); + /* 80B86440 */ BOOL swimGoalRiverDescend(void*); + /* 80B86A2C */ BOOL returnRiverDescend(void*); + /* 80B86D9C */ void moveRiverPosCalc(cXyz&); + /* 80B86E78 */ void createRuppi(); + /* 80B86FAC */ BOOL ECut_beforeBlastzrR(int); + /* 80B872F0 */ BOOL ECut_afterBlastzrR(int); + /* 80B87510 */ BOOL ECut_thanksBlast(int); + /* 80B88B04 */ BOOL ECut_resultAnnounce(int); + /* 80B8A064 */ void calcCanoeMove(BOOL); + /* 80B8A43C */ BOOL tobiSearch(void*); + /* 80B8A54C */ BOOL tobiWait(void*); + /* 80B8A648 */ BOOL tobikomi1(void*); + /* 80B8A7F8 */ BOOL tobikomi2(void*); + /* 80B8AA1C */ BOOL tobikomi3(void*); + /* 80B8AB78 */ BOOL tobiJump(void*); + /* 80B8B1FC */ BOOL tobiEnd(void*); + /* 80B8B420 */ BOOL waitSearch(void*); + /* 80B8B530 */ BOOL ECut_searchPrince1(int); + /* 80B8BCE8 */ BOOL ECut_searchPrince2(int); + /* 80B8C3E8 */ void adjustShapeAngle(); + int getType() { return mType; } + u32 getAngleNoFromParam() { return (u8)(fopAcM_GetParam(this) >> 8); } + + /* 0x0B48 */ Z2Creature mCreatureSound; + /* 0x0BD8 */ J3DModel* mpObjectModel[3]; + /* 0x0BE4 */ daNpcF_MatAnm_c* mpMatAnm; + /* 0x0BE8 */ mDoExt_btkAnm mWaterBtkAnm; + /* 0x0C00 */ mDoExt_bpkAnm mWaterBpkAnm; + /* 0x0C18 */ daNpc_zrA_Path_c mPath; + /* 0x1248 */ daNpcF_Lookat_c mLookat; + /* 0x12E4 */ dPaPo_c mPaPo; + /* 0x131C */ daNpcF_ActorMngr_c mActorMngr[3]; + /* 0x1334 */ u8 field_0x1334[4]; + /* 0x1338 */ dCcD_Cyl mCcCyl; + /* 0x1474 */ ActionFn mpNextActionFn; + /* 0x1480 */ ActionFn mpActionFn; + /* 0x148C */ request_of_phase_process_class mPhase[8]; + /* 0x14CC */ u32 mItemID; + /* 0x14D0 */ int field_0x14d0; + /* 0x14D4 */ int field_0x14d4; + /* 0x14D8 */ int mSwimTurnTimer; + /* 0x14DC */ int field_0x14dc; + /* 0x14E0 */ int mFlowID; + /* 0x14E4 */ s16 mLookMode; + /* 0x14E6 */ u16 mMode; + /* 0x14E8 */ u8 mType; + /* 0x14E9 */ u8 mSoldierType; + /* 0x14EC */ int mBaseMotionAnm; + /* 0x14F0 */ int mBtkID; + /* 0x14F4 */ int mBpkID; + /* 0x14F8 */ u32 mWaterAnmFlags; + /* 0x14FC */ char* mStaffName; + /* 0x1500 */ cXyz field_0x1500; + /* 0x150C */ u8 mMeterCount; + /* 0x150D */ u8 mGameMode; + /* 0x150E */ u8 mSwitch1; + /* 0x150F */ u8 mSwitch2; + /* 0x1510 */ int field_0x1510; + /* 0x1514 */ int mSpinAngle; + /* 0x1518 */ s16 field_0x1518; + /* 0x151C */ int mSpinTimer; + /* 0x1520 */ u8 mSwimMode; + /* 0x1521 */ bool field_0x1521; + /* 0x1524 */ f32 mSwimSpeedF; + /* 0x1528 */ f32 mSwimSpeedScale; + /* 0x152C */ u8 field_0x152c[4]; + /* 0x1530 */ csXyz mWaistAngle; + /* 0x1536 */ csXyz mSwimAngleCalc; + /* 0x153C */ bool field_0x153c; + /* 0x153D */ bool field_0x153d; + /* 0x153E */ bool field_0x153e; + /* 0x1540 */ int mSwimFastTurnTimer; + /* 0x1544 */ cXyz mSwimSpeed; + /* 0x1550 */ bool field_0x1550; + /* 0x1554 */ int field_0x1554; + /* 0x1558 */ int field_0x1558; + /* 0x155C */ int mModulationParam; + /* 0x1560 */ cXyz mModulationOffset; + /* 0x156C */ f32 mScaleFactor; + /* 0x1570 */ int mEvasionTimer; + /* 0x1574 */ s16 mEvasionAngle; + /* 0x1576 */ u8 mActionType; + /* 0x1577 */ bool mIsAboveWater; + /* 0x1578 */ cXyz field_0x1578; + /* 0x1584 */ cXyz field_0x1584; + /* 0x1590 */ bool mResetWaistAngle; + /* 0x1591 */ bool mIsTurning; + /* 0x1592 */ u8 mCheckSwimTurnTimer; + /* 0x1593 */ bool mCheckSwimTurn; + /* 0x1594 */ u8 mActionSelect; + /* 0x1595 */ int mRiverPathIdx; + /* 0x159C */ cXyz field_0x159c[3]; + /* 0x15C0 */ u8 field_0x15c0; + /* 0x15C1 */ bool field_0x15c1; + +#ifdef NONMATCHING + static char* mEvtCutNameList[11]; + static EventFn mEvtCutList[11]; +#else + static void* mEvtCutNameList[11]; + static u8 mEvtCutList[132]; +#endif +}; + +STATIC_ASSERT(sizeof(daNpc_zrA_c) == 0x15C4); + +class daNpc_zrA_Param_c { +public: + struct param { + /* 0x00 */ f32 mAttnOffsetY; + /* 0x04 */ f32 mGravity; + /* 0x08 */ f32 mScale; + /* 0x0C */ f32 mShadowDepth; + /* 0x10 */ f32 mCcWeight; + /* 0x14 */ f32 mCylH; + /* 0x18 */ f32 mWallH; + /* 0x1C */ f32 mWallR; + /* 0x20 */ f32 mBodyUpAngle; + /* 0x24 */ f32 mBodyDownAngle; + /* 0x28 */ f32 mBodyLeftAngle; + /* 0x2C */ f32 mBodyRightAngle; + /* 0x30 */ f32 mHeadUpAngle; + /* 0x34 */ f32 mHeadDownAngle; + /* 0x38 */ f32 mHeadLeftAngle; + /* 0x3C */ f32 mHeadRightAngle; + /* 0x40 */ f32 mNeckAngleScl; + /* 0x44 */ f32 mMorfFrames; + /* 0x48 */ s16 mSpeakDistIdx; + /* 0x4A */ s16 mSpeakAngleIdx; + /* 0x4C */ s16 mTalkDistIdx; + /* 0x4E */ s16 mTalkAngleIdx; + /* 0x50 */ f32 mAttnFovY; + /* 0x54 */ f32 mAttnRadius; + /* 0x58 */ f32 mAttnUpperY; + /* 0x5C */ f32 mAttnLowerY; + /* 0x60 */ s16 field_0x60; + /* 0x62 */ s16 field_0x62; + /* 0x64 */ s16 mTestExpression; + /* 0x66 */ s16 mTestMotion; + /* 0x68 */ s16 mTestLookMode; + /* 0x6A */ bool mTest; + /* 0x6C */ f32 mSwimSpeed; + /* 0x70 */ f32 mMinSwimSpeedScale; + /* 0x74 */ s16 mSwimAngleSpeed; + /* 0x78 */ f32 mSwimAnmRate; + /* 0x7C */ f32 field_0x7c; + /* 0x80 */ f32 field_0x80; + /* 0x84 */ f32 mMaxScaleFactor; + /* 0x88 */ f32 mMinDepth; + /* 0x8C */ f32 field_0x8c; + /* 0x90 */ f32 field_0x90; + /* 0x94 */ f32 mWalkSpeed; + /* 0x98 */ s16 mWalkAngleSpeed; + /* 0x9A */ s16 mWalkAngleScale; + /* 0x9C */ f32 mWalkAnmRate; + /* 0xA0 */ f32 field_0xa0; + /* 0xA4 */ f32 field_0xa4; + /* 0xA8 */ f32 field_0xa8; + /* 0xAC */ f32 field_0xac; + }; + + /* 80B8C3EC */ virtual ~daNpc_zrA_Param_c(); + + static param const m; +}; + +STATIC_ASSERT(sizeof(daNpc_zrA_Param_c::param) == 0xB0); #endif /* D_A_NPC_ZRA_H */ diff --git a/include/rel/d/a/obj/d_a_obj_zraMark/d_a_obj_zraMark.h b/include/rel/d/a/obj/d_a_obj_zraMark/d_a_obj_zraMark.h index 4235ef04da..0ad5de021f 100644 --- a/include/rel/d/a/obj/d_a_obj_zraMark/d_a_obj_zraMark.h +++ b/include/rel/d/a/obj/d_a_obj_zraMark/d_a_obj_zraMark.h @@ -1,6 +1,24 @@ #ifndef D_A_OBJ_ZRAMARK_H #define D_A_OBJ_ZRAMARK_H -#include "dolphin/types.h" +#include "f_op/f_op_actor_mng.h" + +class daObjZraMark_c : public fopAc_ac_c { +public: + /* 80D42678 */ void Create(); + /* 80D4287C */ void CreateHeap(); + /* 80D42A7C */ void Execute(); + /* 80D42B0C */ void Draw(); + /* 80D42C98 */ void Delete(); + /* 80D42CE0 */ void getType(); + /* 80D42D2C */ void setBaseMtx(); + /* 80D42EE0 */ void col_init(); + /* 80D42F5C */ void col_set(); + /* 80D432C8 */ void schHoz(); + /* 80D43314 */ void entryPointer(fopAc_ac_c*); + /* 80D43370 */ void informBlast(); + + u8 getMarkNo() { return fopAcM_GetParam(this) & 0xff; } +}; #endif /* D_A_OBJ_ZRAMARK_H */ |
