work on daAlink horse, hvyboots, cut (#1981)

* work on alink_cut, alink_horse, alink_hvyboots

* remove asm
This commit is contained in:
TakaRikka
2023-11-08 05:52:54 -08:00
committed by GitHub
parent f909d534da
commit 7d0a02de52
69 changed files with 2600 additions and 2566 deletions
+31 -27
View File
@@ -634,6 +634,7 @@ public:
/* 0x19B */ ANM_DIVE,
/* 0x19C */ ANM_ODOROKU, // ?
/* 0x19D */ ANM_ASHIMOTO, // ?
/* 0x19E */ ANM_MAX,
};
enum daAlink_UPPER {
@@ -1910,12 +1911,12 @@ public:
/* 800E23FC */ void concatMagneBootMtx();
/* 800E243C */ void concatMagneBootInvMtx();
/* 800E247C */ void multVecMagneBootInvMtx(cXyz*);
/* 800E24B0 */ int commonMagneLineCheck(cXyz*, cXyz*);
/* 800E24B0 */ bool commonMagneLineCheck(cXyz*, cXyz*);
/* 800E251C */ BOOL checkBootsMoveAnime(int);
/* 800E2580 */ void setHeavyBoots(int);
/* 800E2580 */ int setHeavyBoots(int);
/* 800E2738 */ s16 getMagneBootsLocalAngleY(s16, int);
/* 800E2808 */ void setMagneBootsMtx(cBgS_PolyInfo*, int);
/* 800E2DC4 */ void cancelMagneBootsOn();
/* 800E2DC4 */ int cancelMagneBootsOn();
/* 800E2F88 */ int checkMagneBootsFly();
/* 800E3048 */ int procBootsEquipInit();
/* 800E30DC */ int procBootsEquip();
@@ -1953,7 +1954,7 @@ public:
/* 800E5170 */ void checkNextActionGrab();
/* 800E53AC */ void initGrabNextMode();
/* 800E53F8 */ void setGrabItemThrow();
/* 800E57AC */ void checkUpperGrabItemThrow(f32);
/* 800E57AC */ BOOL checkUpperGrabItemThrow(f32);
/* 800E5830 */ void putObjLineCheck(dBgS_LinChk&, cXyz*, fopAc_ac_c*);
/* 800E5B6C */ void grabLineCheck(cXyz*, cXyz*);
/* 800E5BB4 */ void setGrabItemActor(fopAc_ac_c*);
@@ -2033,14 +2034,14 @@ public:
/* 800EC3D8 */ int procSumouWinLose();
/* 800EC538 */ int procSumouShikoInit();
/* 800EC5F4 */ int procSumouShiko();
/* 800EC76C */ void checkHorseZeldaBowMode();
/* 800EC7B0 */ void setHorseZeldaDamage();
/* 800EC7DC */ BOOL checkHorseDashAccept();
/* 800EC814 */ BOOL checkCowGame();
/* 800EC76C */ static BOOL checkHorseZeldaBowMode();
/* 800EC7B0 */ static void setHorseZeldaDamage();
/* 800EC7DC */ static BOOL checkHorseDashAccept();
/* 800EC814 */ static BOOL checkCowGame();
/* 800EC87C */ int getReinRideDirection();
/* 800EC8F8 */ void checkReinRideBgCheck();
/* 800EC8F8 */ int checkReinRideBgCheck();
/* 800ECA3C */ void commonInitForceRideRein();
/* 800ECAAC */ void initForceRideBoar();
/* 800ECAAC */ int initForceRideBoar();
/* 800ECB58 */ void initForceRideHorse();
/* 800ECBD0 */ void rideGetOff();
/* 800ECD90 */ BOOL checkHorseNotDamageReaction() const;
@@ -2056,32 +2057,32 @@ public:
/* 800ED1F0 */ void checkHorseNotGrab() const;
/* 800ED310 */ void setHorseStirrup();
/* 800ED4B8 */ void changeBoarRunRide();
/* 800ED4DC */ void setSyncHorsePos();
/* 800ED78C */ void setSyncBoarPos();
/* 800ED90C */ void setSyncBoarRunPos();
/* 800EDA24 */ void setSyncRidePos();
/* 800ED4DC */ int setSyncHorsePos();
/* 800ED78C */ int setSyncBoarPos();
/* 800ED90C */ int setSyncBoarRunPos();
/* 800EDA24 */ BOOL setSyncRidePos();
/* 800EDA78 */ void setHorseTurnAnime();
/* 800EDB48 */ void getBaseHorseAnime(daAlink_c::daAlink_ANM*);
/* 800EDD6C */ void checkHorseSpecialProc();
/* 800EDE8C */ void checkHorseServiceWaitAnime();
/* 800EDEEC */ void setSyncHorse(int);
/* 800EE64C */ void setSyncBoar(int);
/* 800EE918 */ void setSyncRide(int);
/* 800EDD6C */ int checkHorseSpecialProc();
/* 800EDE8C */ BOOL checkHorseServiceWaitAnime();
/* 800EDEEC */ int setSyncHorse(int);
/* 800EE64C */ int setSyncBoar(int);
/* 800EE918 */ int setSyncRide(int);
/* 800EEAE8 */ void setBaseHorseAnimeFrame();
/* 800EEC98 */ void setBaseBoarAnime();
/* 800EED98 */ void setBaseRideAnime();
/* 800EEE30 */ void checkHorseSwordUpSpped();
/* 800EEE30 */ bool checkHorseSwordUpSpped();
/* 800EEE5C */ void setHorseSwordUp(int);
/* 800EEF30 */ void setRideSubjectAngle(s16);
/* 800EEF30 */ int setRideSubjectAngle(s16);
/* 800EF050 */ void setBodyAngleRideReadyAnime();
/* 800EF0E8 */ void checkHorseGetOffWallCheck(cXyz*, cXyz*, s16);
/* 800EF198 */ void checkHorseGetOffDirection();
/* 800EF0E8 */ BOOL checkHorseGetOffWallCheck(cXyz*, cXyz*, s16);
/* 800EF198 */ int checkHorseGetOffDirection();
/* 800EF35C */ void boarForceGetOff();
/* 800EF394 */ void horseGetOffEnd();
/* 800EF450 */ void checkNextActionHorse();
/* 800EF598 */ void checkHorseGetOff();
/* 800EF450 */ int checkNextActionHorse();
/* 800EF598 */ BOOL checkHorseGetOff();
/* 800EF6B0 */ void checkHorseGetOffAndSetDoStatus();
/* 800EF884 */ void setHorseGetOff(int);
/* 800EF884 */ int setHorseGetOff(int);
/* 800EF95C */ int procHorseRideInit();
/* 800EFDC4 */ int procHorseRide();
/* 800F038C */ int procHorseGetOffInit(int);
@@ -3167,9 +3168,12 @@ public:
BOOL checkGrabAnimeSide() const { return checkUpperAnime(0x50); }
BOOL checkGrabAnimeCarry() const { return checkUpperAnime(0x60); }
bool checkHorseUnderDashStartAnime() const { return checkUnderAnime(0xDD); }
bool checkHorseUnderLashAnime() const { return checkUnderAnime(0x1B3); }
bool checkUpperHorseLieAnime() const { return checkUpperAnime(0x265); }
bool checkHorseTiredAnime() const { return checkUpperAnime(0x263); }
bool checkHorseSwordUpAnime() const { return checkUpperAnime(0xCC); }
bool checkHorseUnderItemAnime() const { return checkUnderAnime(0x19); }
bool checkHorseWalkStartAnm() const { return checkUnderMove0BckNoArc(ANM_WSTARTH); }
bool checkIronBallPreSwingAnime() const { return checkUpperAnime(0x19A); }
bool checkIronBallSwingAnime() const { return checkUpperAnime(0x19B); }
bool checkDashDamageAnime() const { return checkUpperAnime(0xAD); }
@@ -3389,7 +3393,7 @@ private:
/* 0x006D4 */ void* field_0x06d4;
/* 0x006D8 */ void* field_0x06d8;
/* 0x006DC */ void* field_0x06dc;
/* 0x006E0 */ void* field_0x06e0;
/* 0x006E0 */ J3DShape* field_0x06e0;
/* 0x006E4 */ J3DShape* field_0x06e4;
/* 0x006E8 */ J3DShape* field_0x06e8;
/* 0x006EC */ J3DShape* field_0x06ec;
+10
View File
@@ -249,6 +249,8 @@ public:
FLG1_UNK_8000 = 0x8000,
FLG1_THROW_DAMAGE = 0x4000,
FLG1_UNK_2000 = 0x2000,
FLG1_UNK_1000 = 0x1000,
FLG1_UNK_800 = 0x800,
FLG1_UNK_80 = 0x80,
FLG1_UNK_40 = 0x40,
FLG1_UNK_20 = 0x20,
@@ -256,6 +258,8 @@ public:
FLG1_UNK_4 = 4,
FLG1_UNK_2 = 2,
FLG1_UNK_1 = 1,
FLG1_UNK_1800 = 0x1800,
};
enum daPy_FLG2 {
@@ -304,6 +308,7 @@ public:
FLG3_UNK_4000 = 0x4000,
FLG3_UNK_200 = 0x200,
FLG3_UNK_100 = 0x100,
FLG3_UNK_80 = 0x80,
FLG3_UNK_40 = 0x40,
FLG3_UNK_20 = 0x20,
FLG3_UNK_10 = 0x10,
@@ -360,6 +365,7 @@ public:
ERFLG2_UNK_100 = 0x100,
ERFLG2_UNK_40 = 0x40,
ERFLG2_UNK_20 = 0x20,
ERFLG2_UNK_2 = 2,
};
enum daPy_RFLG0 {
@@ -369,6 +375,7 @@ public:
RFLG0_FRONT_ROLL_CRASH = 0x2000,
RFLG0_ENEMY_ATTN_LOCK = 0x1000,
RFLG0_UNK_400 = 0x400,
RFLG0_UNK_200 = 0x200,
RFLG0_UNK_100 = 0x100,
RFLG0_UNK_80 = 0x80,
RFLG0_UNK_40 = 0x40,
@@ -750,6 +757,7 @@ public:
void i_offNoResetFlg3(int pFlg) { mNoResetFlg3 &= ~pFlg; }
void i_offResetFlg0(int flag) { mResetFlg0 &= ~flag; }
void i_offResetFlg1(int flag) { mResetFlg1 &= ~flag; }
void i_onResetFlg0(int flag) { mResetFlg0 |= flag; }
void i_onResetFlg1(int flag) { mResetFlg1 |= flag; }
@@ -818,4 +826,6 @@ public:
static daMidna_c* m_midnaActor;
};
int daPy_addCalcShort(s16* param_0, s16 param_1, s16 param_2, s16 param_3, s16 param_4);
#endif /* D_A_D_A_PLAYER_H */
+3
View File
@@ -249,6 +249,9 @@ public:
bool checkHeadLockFlg() const { return mFlags & 0x80; }
bool checkDownFlg() const { return mFlags & 0x1; }
cXyz& getDownPos() { return mDownPos; }
cXyz& getHeadLockPos() { return mHeadLockPos; }
void onCutDownHitFlg() { mFlags |= 2; }
/* 0x568 */ cXyz mDownPos;
/* 0x574 */ cXyz mHeadLockPos;
+4
View File
@@ -125,6 +125,10 @@ inline void mDoAud_startFogWipeTrigger(const Vec* param_0) {
g_mEnvSeMgr.startFogWipeTrigger((Vec*)param_0);
}
inline void mDoAud_changeSubBgmStatus(s32 param_0) {
Z2AudioMgr::getInterface()->changeSubBgmStatus(param_0);
}
inline void mDoAud_mEnvse_framework() {
g_mEnvSeMgr.framework();
}
+4
View File
@@ -314,6 +314,10 @@ public:
*/
static void copy(const Mtx m) { MTXCopy(m, now); }
static void rotAxisRadS(const Vec* axis, f32 rad) {
MTXRotAxisRad(now, axis, rad);
}
static Mtx now;
static Mtx buffer[16];
static Mtx* next;
+179 -1
View File
@@ -1,6 +1,184 @@
#ifndef D_A_B_GND_H
#define D_A_B_GND_H
#include "dolphin/types.h"
#include "d/bg/d_bg_s_acch.h"
#include "d/cc/d_cc_d.h"
#include "d/cc/d_cc_uty.h"
#include "d/msg/d_msg_flow.h"
#include "f_op/f_op_actor_mng.h"
struct g_himo_s {
/* 80601D40 */ ~g_himo_s();
/* 80601DA0 */ g_himo_s();
/* 0x0 */ cXyz field_0x0[16];
};
class b_gnd_class : public fopEn_enemy_c {
public:
/* 80601960 */ b_gnd_class();
bool checkAttackChance() { return field_0x2740 != 0; }
/* 0x05AC */ request_of_phase_process_class mPhaseReq;
/* 0x05B4 */ request_of_phase_process_class mHorsePhaseReq;
/* 0x05BC */ s16 field_0x05bc;
/* 0x05BE */ u8 field_0x05be;
/* 0x05BF */ u8 field_0x05BF[0x05C0 - 0x05BF];
/* 0x05C0 */ cXyz field_0x05c0;
/* 0x05CC */ s16 field_0x05cc;
/* 0x05CE */ u8 field_0x05CE[0x05D0 - 0x05CE];
/* 0x05D0 */ mDoExt_McaMorfSO* mpMorf;
/* 0x05D4 */ mDoExt_McaMorfSO* mpHorseMorf;
/* 0x05D8 */ mDoExt_McaMorf* field_0x05d8;
/* 0x05DC */ Z2CreatureEnemy mZ2Creature;
/* 0x0680 */ Z2CreatureEnemy field_0x0680;
/* 0x0724 */ mDoExt_brkAnm* field_0x0724;
/* 0x0728 */ mDoExt_btkAnm* field_0x0728[6];
/* 0x0740 */ u8 field_0x0740[0x0744 - 0x0740];
/* 0x0744 */ mDoExt_btpAnm* field_0x0744;
/* 0x0748 */ int field_0x0748;
/* 0x074C */ mDoExt_btpAnm* field_0x074c;
/* 0x0750 */ mDoExt_btkAnm* field_0x0750;
/* 0x0754 */ u8 field_0x0754[0x0758 - 0x0754];
/* 0x0758 */ int mAnmID;
/* 0x075C */ int mHorseAnmID;
/* 0x0760 */ f32 field_0x0760;
/* 0x0764 */ u8 field_0x0764[0x0768 - 0x0764];
/* 0x0768 */ J3DModel* field_0x0768;
/* 0x076C */ J3DModel* field_0x076c;
/* 0x0770 */ u8 field_0x0770[0x0772 - 0x0770];
/* 0x0772 */ s16 field_0x0772;
/* 0x0774 */ dKy_tevstr_c field_0x0774;
/* 0x0AFC */ s16 field_0x0afc;
/* 0x0AFE */ s16 mActionID;
/* 0x0B00 */ s16 field_0x0b00;
/* 0x0B02 */ u8 field_0x0B02[0x0B94 - 0x0B02];
/* 0x0B94 */ J3DModel* field_0x0b94[36];
/* 0x0C24 */ s16 field_0x0c24;
/* 0x0C26 */ s16 field_0x0c26;
/* 0x0C28 */ s16 field_0x0c28;
/* 0x0C2A */ u8 field_0x0C2A[0x0C2C - 0x0C2A];
/* 0x0C2C */ J3DModel* field_0x0c2c[2];
/* 0x0C34 */ u8 field_0x0C34[0x0C38 - 0x0C34];
/* 0x0C38 */ f32 field_0x0c38;
/* 0x0C3C */ s16 field_0x0c3c;
/* 0x0C3E */ u8 field_0x0C3E[0x0C40 - 0x0C3E];
/* 0x0C40 */ u32 field_0x0c40;
/* 0x0C44 */ s16 field_0x0c44[10];
/* 0x0C58 */ s16 field_0x0c58;
/* 0x0C5A */ s16 field_0x0c5a;
/* 0x0C5C */ u8 field_0x0C5C[0x0C60 - 0x0C5C];
/* 0x0C60 */ int field_0x0c60;
/* 0x0C64 */ int field_0x0c64;
/* 0x0C68 */ s16 field_0x0c68;
/* 0x0C6A */ s16 field_0x0c6a;
/* 0x0C6C */ f32 field_0x0c6c;
/* 0x0C70 */ s16 field_0x0c70;
/* 0x0C72 */ s16 field_0x0c72;
/* 0x0C74 */ s16 field_0x0c74;
/* 0x0C76 */ u8 field_0x0C76[0x0C7D - 0x0C76];
/* 0x0C7D */ u8 field_0x0c7d;
/* 0x0C7E */ u8 field_0x0C7E[0x0C80 - 0x0C7E];
/* 0x0C80 */ cXyz field_0x0c80;
/* 0x0C8C */ s16 field_0x0c8c;
/* 0x0C8E */ s16 field_0x0c8e;
/* 0x0C90 */ s16 field_0x0c90;
/* 0x0C92 */ s16 field_0x0c92;
/* 0x0C94 */ dBgS_AcchCir field_0x0c94;
/* 0x0CD4 */ dBgS_ObjAcch field_0x0cd4;
/* 0x0EAC */ s16 field_0x0eac;
/* 0x0EAE */ u8 field_0x0EAE[0x0EB0 - 0x0EAE];
/* 0x0EB0 */ f32 field_0x0eb0;
/* 0x0EB4 */ cXyz field_0x0eb4;
/* 0x0EC0 */ csXyz field_0x0ec0;
/* 0x0EC6 */ u8 field_0x0EC6[0x0EC8 - 0x0EC6];
/* 0x0EC8 */ dCcD_Stts field_0x0ec8;
/* 0x0F04 */ dCcD_Sph field_0x0f04[2];
/* 0x1174 */ dCcD_Sph field_0x1174[4];
/* 0x1654 */ dCcD_Stts field_0x1654;
/* 0x1690 */ dCcD_Sph field_0x1690[3];
/* 0x1A38 */ dCcD_Sph field_0x1a38;
/* 0x1B70 */ dCcD_Sph field_0x1b70;
/* 0x1CA8 */ dCcD_Cyl field_0x1ca8;
/* 0x1DE4 */ dCcU_AtInfo mAtInfo;
/* 0x1E08 */ u8 field_0x1E08[0x1E0A - 0x1E08];
/* 0x1E0A */ u16 field_0x1e0a;
/* 0x1E0C */ u16 field_0x1e0c;
/* 0x1E0E */ u8 field_0x1E0E[0x1E0F - 0x1E0E];
/* 0x1E0F */ s8 field_0x1e0f;
/* 0x1E10 */ f32 field_0x1e10;
/* 0x1E14 */ cXyz field_0x1e14;
/* 0x1E20 */ cXyz field_0x1e20;
/* 0x1E2C */ Z2SoundObjSimple field_0x1e2c;
/* 0x1E4C */ f32 field_0x1e4c;
/* 0x1E50 */ csXyz field_0x1e50;
/* 0x1E56 */ u8 field_0x1e56[5];
/* 0x1E5B */ u8 field_0x1E5B[0x1E5C - 0x1E5B];
/* 0x1E5C */ cXyz field_0x1e5c[5];
/* 0x1E98 */ cXyz field_0x1e98[5];
/* 0x1ED4 */ cXyz field_0x1ed4[5];
/* 0x1F10 */ Z2SoundObjSimple field_0x1f10[5];
/* 0x1FB0 */ u8 field_0x1FB0[0x1FB4 - 0x1FB0];
/* 0x1FB4 */ fopAc_ac_c* mMantChild;
/* 0x1FB8 */ cXyz field_0x1fb8;
/* 0x1FC4 */ int field_0x1fc4;
/* 0x1FC8 */ s16 field_0x1fc8;
/* 0x1FCA */ s16 field_0x1fca;
/* 0x1FCC */ s16 field_0x1fcc;
/* 0x1FCE */ u8 field_0x1FCE[0x1FD0 - 0x1FCE];
/* 0x1FD0 */ f32 field_0x1fd0;
/* 0x1FD4 */ s16 field_0x1fd4;
/* 0x1FD6 */ s16 field_0x1fd6;
/* 0x1FD8 */ cXyz field_0x1fd8[2];
/* 0x1FF0 */ g_himo_s field_0x1ff0[2];
/* 0x2170 */ mDoExt_3DlineMat1_c field_0x2170[2];
/* 0x21E8 */ mDoExt_3DlineMat1_c field_0x21e8;
/* 0x2224 */ dKy_tevstr_c field_0x2224;
/* 0x25AC */ u32 field_0x25ac;
/* 0x25B0 */ u32 field_0x25b0;
/* 0x25B4 */ u32 field_0x25b4;
/* 0x25B8 */ u32 field_0x25b8;
/* 0x25BC */ u32 field_0x25bc;
/* 0x25C0 */ u32 field_0x25c0;
/* 0x25C4 */ u32 field_0x25c4;
/* 0x25C8 */ u32 field_0x25c8;
/* 0x25CC */ u32 field_0x25cc;
/* 0x25D0 */ u32 field_0x25d0;
/* 0x25D4 */ u8 field_0x25D4[0x25D8 - 0x25D4];
/* 0x25D8 */ u32 field_0x25d8;
/* 0x25DC */ u32 field_0x25dc;
/* 0x25E0 */ u32 field_0x25e0;
/* 0x25E4 */ u32 field_0x25e4[3];
/* 0x25F0 */ u8 field_0x25F0[0x2688 - 0x25F0];
/* 0x2688 */ u32 field_0x2688;
/* 0x268C */ u32 field_0x268c[3];
/* 0x2698 */ u8 field_0x2698[0x269C - 0x2698];
/* 0x269C */ cXyz field_0x269c;
/* 0x26A8 */ cXyz field_0x26a8[2];
/* 0x26C0 */ s16 field_0x26c0;
/* 0x26C2 */ s16 field_0x26c2;
/* 0x26C4 */ s16 field_0x26c4;
/* 0x26C6 */ s16 field_0x26c6;
/* 0x26C8 */ cXyz field_0x26c8;
/* 0x26D4 */ cXyz field_0x26d4;
/* 0x26E0 */ cXyz field_0x26e0;
/* 0x26EC */ cXyz field_0x26ec;
/* 0x26F8 */ cXyz field_0x26f8;
/* 0x2704 */ cXyz field_0x2704;
/* 0x2710 */ cXyz field_0x2710;
/* 0x271C */ s16 field_0x271c;
/* 0x271E */ u8 field_0x271E[0x272C - 0x271E];
/* 0x272C */ s16 field_0x272c;
/* 0x272E */ u8 field_0x272E[0x2730 - 0x272E];
/* 0x2730 */ f32 field_0x2730;
/* 0x2734 */ f32 field_0x2734;
/* 0x2738 */ u8 field_0x2738;
/* 0x2739 */ u8 field_0x2739[0x273C - 0x2739];
/* 0x273C */ f32 field_0x273c;
/* 0x2740 */ u8 field_0x2740;
/* 0x2741 */ u8 field_0x2741[0x2744 - 0x2741];
/* 0x2744 */ dMsgFlow_c mMsgFlow;
};
#endif /* D_A_B_GND_H */
+35 -3
View File
@@ -34,6 +34,7 @@ private:
/* 0x0 */ u8 field_0x0[0xE4];
}; // Size: 0xE4
class daHoZelda_c;
class daHorse_c : public fopAc_ac_c {
public:
enum daHorse_ERFLG0 {
@@ -41,6 +42,8 @@ public:
/* 0x010 */ MOVE_ACCEPT = 0x10,
/* 0x080 */ RIDE_RUN_FLG = 0x80,
/* 0x100 */ CUT_TURN_CANCEL = 0x100,
ERFLG0_UNK_18 = 0x18,
};
enum daHorse_RFLG0 {
@@ -153,7 +156,7 @@ public:
bool checkNoBombProc() const { return field_0x16b4 == 0 || field_0x16b4 == 1; }
bool checkResetStateFlg0(daHorse_RFLG0 flag) const { return mResetStateFlg0 & flag; }
bool checkEndResetStateFlg0(daHorse_ERFLG0 flag) { return mEndResetStateFlg0 & flag; }
bool checkEndResetStateFlg0(daHorse_ERFLG0 flag) const { return mEndResetStateFlg0 & flag; }
bool checkStateFlg0(daHorse_FLG0 flag) const { return mStateFlg0 & flag; }
f32 getNormalMaxSpeedF() { return mNormalMaxSpeedF; }
f32 getLashMaxSpeedF() { return mLashMaxSpeedF; }
@@ -169,10 +172,29 @@ public:
void onEndResetStateFlg0(daHorse_ERFLG0 i_flag) { mEndResetStateFlg0 |= i_flag;}
void offNoDrawWait() { offStateFlg0(NO_DRAW_WAIT); }
int checkSpecialWallHit(const cXyz& param_0) { return (this->*mpCheckSpecialWallHitFn)(param_0); }
MtxP getSaddleMtx() { return field_0x570->i_getAnmMtx(21); }
MtxP getRootMtx() { return field_0x570->i_getAnmMtx(0); }
f32 getAnmFrameMax(int i_idx) const { return field_0x5b0[i_idx].getEnd(); }
f32 getAnmFrame(int i_idx) const { return field_0x5b0[i_idx].getFrame(); }
s16 getAimNeckAngleY() const { return mAimNeckAngleY; }
f32 getMorfFrame() const { return mMorfFrame; }
f32 getBlendRate() { return field_0x594[1].getRatio(); }
u16 getAnmIdx(int i_idx) const { return mAnmIdx[i_idx]; }
daHoZelda_c* i_getZeldaActor() { return (daHoZelda_c*)mZeldaActorKeep.getActor(); }
bool checkTurnStandCamera() const { return checkResetStateFlg0(TURN_STAND_CAMERA); }
bool checkTurnStand() const { return checkResetStateFlg0(TURN_STAND); }
bool checkRodeoMode() const { return checkStateFlg0(RODEO_MODE); }
bool checkCutTurnCancel() const { return checkEndResetStateFlg0(CUT_TURN_CANCEL); }
bool checkTurnCancelKeep() const { return checkStateFlg0(TURN_CANCEL_KEEP); }
bool checkTurn() const { return field_0x16b4 == 3 && field_0x1720 == 0; }
bool checkStop() const { return field_0x16b4 == 2; }
bool checkJump() const { return field_0x16b4 == 4; }
bool checkWait() const { return field_0x16b4 == 0; }
bool checkLand() const { return field_0x16b4 == 5 && field_0x171a == 0; }
bool checkGetOff() const { return fabsf(speedF) < 3.0f; }
bool checkEnemySearch() { return checkResetStateFlg0(ENEMY_SEARCH); }
void onTagJump(f32 param_0, f32 param_1, f32 param_2) {
field_0x1768 = param_0;
@@ -181,6 +203,10 @@ public:
onEndResetStateFlg0(ERFLG0_UNK_1);
}
void onMoveAccept() { onEndResetStateFlg0(MOVE_ACCEPT); }
void onPlayerLash() { onEndResetStateFlg0(ERFLG0_UNK_18); }
void offPlayerBackRideLash() { offStateFlg0(PLAYER_BACK_RIDE_LASH); }
static u8 const m_footJointTable[8];
static f32 const m_callLimitDistance2;
@@ -216,7 +242,9 @@ public:
/* 0x16B8 */ u8 field_0x16b8;
/* 0x16B9 */ u8 field_0x16b9[2];
/* 0x16BB */ u8 mRodeoPointCnt;
/* 0x16BC */ u8 field_0x16bc[0x36];
/* 0x16BC */ u8 field_0x16bc[0x16C4 - 0x16BC];
/* 0x16C4 */ u16 mAnmIdx[3];
/* 0x16CA */ u8 field_0x16ca[0x16F2 - 0x16CA];
/* 0x16F2 */ s16 mAimNeckAngleY;
/* 0x16F4 */ u8 field_0x16f4[0x8];
/* 0x16FC */ s16 mDemoMoveAngle;
@@ -225,7 +253,11 @@ public:
/* 0x1704 */ u8 field_0x1704[2];
/* 0x1706 */ s16 mCowHitAngle;
/* 0x1708 */ s16 mCowHit;
/* 0x170A */ u8 field_0x170a[0x1E];
/* 0x170A */ u8 field_0x170a[0x171A - 0x170A];
/* 0x171A */ s16 field_0x171a;
/* 0x171C */ u8 field_0x171c[0x1720 - 0x171C];
/* 0x1720 */ s16 field_0x1720;
/* 0x1722 */ u8 field_0x1722[0x1728 - 0x1722];
/* 0x1728 */ int field_0x1728;
/* 0x172C */ u8 field_0x172c[0x14];
/* 0x1740 */ u32 field_0x1740;
+89
View File
@@ -2,5 +2,94 @@
#define D_A_HOZELDA_H
#include "dolphin/types.h"
#include "f_op/f_op_actor_mng.h"
class daHoZelda_matAnm_c : public J3DMaterialAnm {
public:
/* 80845EAC */ void init();
/* 80848D54 */ virtual ~daHoZelda_matAnm_c();
/* 80845EDC */ virtual void calc(J3DMaterial*) const;
static bool mEyeMoveFlg;
static u8 mMorfFrame;
/* 0x0F4 */ f32 field_0xf4;
/* 0x0F8 */ f32 field_0xf8;
/* 0x0FC */ f32 mNowOffsetX;
/* 0x100 */ f32 mNowOffsetY;
};
class daHoZelda_hio_c;
class daHoZelda_c : public fopAc_ac_c {
public:
/* 80846000 */ void createHeap();
/* 80846718 */ void modelCallBack(u16);
/* 808469B0 */ void create();
/* 80846DB0 */ ~daHoZelda_c();
/* 80846F4C */ void setDoubleAnime(f32, f32, f32, u16, u16, f32);
/* 8084718C */ void setUpperAnime(u16);
/* 80847234 */ void resetUpperAnime();
/* 808472C0 */ void setSingleAnime(u16, f32, f32, s16, f32);
/* 80847430 */ void animePlay();
/* 80847574 */ void setEyeBtp(u16);
/* 808475F0 */ void setEyeBtk(u16, u8);
/* 80847670 */ void setNormalFace();
/* 808476B0 */ void setAnm();
/* 80847E44 */ void setBowModel();
/* 80847F54 */ void setMatrix();
/* 80848058 */ void shootArrow();
/* 80848090 */ void deleteArrow();
/* 80848118 */ void setBowBck(u16);
/* 8084819C */ void setRideOffset();
/* 80848204 */ void clearEyeMove();
/* 80848254 */ void setEyeMove(cXyz const*, s16, s16);
/* 808484B8 */ void setNeckAngle();
/* 80848774 */ void searchBodyAngle();
/* 808489CC */ void execute();
/* 80848B64 */ void draw();
u8 checkBowMode() const { return field_0x6d8; }
void setDamageInit() { field_0x6db = 1; }
/* 0x568 */ request_of_phase_process_class mPhase;
/* 0x570 */ J3DModel* mpZeldaModel;
/* 0x574 */ J3DModel* mpBowModel;
/* 0x578 */ mDoExt_btpAnm mEyeBtp;
/* 0x590 */ mDoExt_btkAnm mEyeBtk;
/* 0x5A8 */ mDoExt_MtxCalcAnmBlendTblOld* field_0x5a8;
/* 0x5AC */ mDoExt_AnmRatioPack field_0x5ac[3];
/* 0x5C4 */ mDoExt_MtxCalcOldFrame* field_0x5c4;
/* 0x5C8 */ daPy_frameCtrl_c field_0x5c8[3];
/* 0x610 */ daHoZelda_matAnm_c* field_0x610[2];
/* 0x618 */ Z2Creature mSound;
/* 0x6A8 */ mDoExt_bckAnm mBowBck;
/* 0x6C4 */ daPy_actorKeep_c mArrowAcKeep;
/* 0x6CC */ daPy_actorKeep_c field_0x6cc;
/* 0x6D4 */ daHoZelda_hio_c* mpHIO;
/* 0x6D8 */ u8 field_0x6d8;
/* 0x6D9 */ u8 field_0x6d9;
/* 0x6DA */ u8 field_0x6da;
/* 0x6DB */ u8 field_0x6db;
/* 0x6DC */ u8 field_0x6DC[0x6DD - 0x6DC];
/* 0x6DD */ u8 field_0x6dd;
/* 0x6DE */ u8 field_0x6de;
/* 0x6DF */ u8 field_0x6df;
/* 0x6E0 */ s8 mReverb;
/* 0x6E1 */ u8 field_0x6E1[0x6E4 - 0x6E1];
/* 0x6E4 */ u16 field_0x6e4;
/* 0x6E6 */ u16 field_0x6e6;
/* 0x6E8 */ u16 mUpperAnmID;
/* 0x6EA */ s16 mBowAnmID;
/* 0x6EC */ s16 field_0x6ec;
/* 0x6EE */ s16 field_0x6ee;
/* 0x6F0 */ u8 field_0x6F0[0x6F2 - 0x6F0];
/* 0x6F2 */ s16 field_0x6f2;
/* 0x6F4 */ s16 field_0x6f4;
/* 0x6F6 */ u8 field_0x6F6[0x6F8 - 0x6F6];
/* 0x6F8 */ Vec field_0x6f8;
/* 0x704 */ Vec* mpRideOffset;
};
#endif /* D_A_HOZELDA_H */
@@ -80,6 +80,8 @@ public:
s16 getAngleY() { return shape_angle.y + field_0xa7e; }
void forceDelete() { mDeleteFlg = 1; }
private:
/* 0x568 */ J3DModel* mpModel;
/* 0x56C */ mDoExt_bckAnm mBck;
+15 -1
View File
@@ -19,9 +19,22 @@ public:
void setPlayerRide();
void getOff();
BOOL checkDownDamage();
u8 checkNormalRideMode() const;
BOOL checkNormalRideMode() const;
void setRunRideMode();
MtxP getRideMtx() { return field_0x5e0->getModel()->i_getAnmMtx(15); }
f32 nowAnimeFrame() const { return field_0x5e0->getFrame(); }
s16 getWaitRollAngle() const { return mWaitRollAngle; }
bool checkGetOff() const { return speedF < 3.0f; }
J3DModel* getModel() {
if (field_0x5e0 != NULL) {
return field_0x5e0->getModel();
}
return NULL;
}
private:
/* 0x05AC */ request_of_phase_process_class mPhase;
/* 0x05B4 */ s16 field_0x5b4;
@@ -144,6 +157,7 @@ private:
/* 0x1722 */ s8 field_0x1722;
/* 0x1723 */ u8 field_0x1723[0x17c4 - 0x1723];
/* 0x17C4 */ u32 field_0x17c4;
/* 0x17C8 */ u8 field_0x17c8[0x17D0 - 0x17C8];
/* 0x17D0 */ u32 field_0x17d0[4];
/* 0x17E0 */ u8 field_0x17e0;
/* 0x17E1 */ u8 field_0x17e1;
@@ -1,6 +1,54 @@
#ifndef D_A_OBJ_ICELEAF_H
#define D_A_OBJ_ICELEAF_H
#include "dolphin/types.h"
#include "f_op/f_op_actor_mng.h"
#include "d/cc/d_cc_d.h"
class daObjIceLeaf_c : public fopAc_ac_c {
public:
/* 80C24738 */ void initBaseMtx();
/* 80C24774 */ void setBaseMtx();
/* 80C249E4 */ void Create();
/* 80C24BC4 */ void setAnmPos();
/* 80C24C9C */ void CreateHeap();
/* 80C24E14 */ void create();
/* 80C25158 */ void execute();
/* 80C25360 */ void action();
/* 80C2541C */ void modeDropWait();
/* 80C25614 */ void modeDrop();
/* 80C258F8 */ void modePlayerWait();
/* 80C25904 */ void modeRide();
/* 80C25908 */ void event_proc_call();
/* 80C259C4 */ void actionWait();
/* 80C259C8 */ void actionOrderEvent();
/* 80C25A68 */ void actionEvent();
/* 80C25AC4 */ void actionDead();
/* 80C25AC8 */ void setFallSE();
/* 80C25BB8 */ void draw();
/* 80C25C50 */ void _delete();
void offRide() { mRide = false; }
void setBreakEffect() { mBreakEffect = true; }
/* 0x568 */ request_of_phase_process_class mPhase;
/* 0x570 */ J3DModel* mpModel;
/* 0x574 */ dBgS_ObjAcch mAcch;
/* 0x74C */ dBgS_AcchCir mAcchCir;
/* 0x78C */ dCcD_Stts mStts;
/* 0x7C8 */ dCcD_Cyl mCyl;
/* 0x904 */ mDoExt_bckAnm* mpBck;
/* 0x908 */ J3DTransformInfo field_0x908;
/* 0x928 */ u8 mAction;
/* 0x929 */ u8 field_0x929;
/* 0x92A */ u8 field_0x92a;
/* 0x92B */ u8 field_0x92b;
/* 0x92C */ s16 mEventID;
/* 0x930 */ Mtx field_0x930;
/* 0x960 */ u8 mRide;
/* 0x961 */ u8 field_0x961;
/* 0x962 */ u8 mBreakEffect;
/* 0x964 */ cXyz field_0x964;
/* 0x970 */ cXyz field_0x970;
};
#endif /* D_A_OBJ_ICELEAF_H */
+4
View File
@@ -6,6 +6,10 @@ namespace std {
float fabs(float num) {
return fabsf(num);
}
float abs(float num) {
return fabsf(num);
}
} // namespace std
#endif