diff --git a/include/JSystem/JParticle/JPAEmitter.h b/include/JSystem/JParticle/JPAEmitter.h index f861d83f9b4..697cf042bf9 100644 --- a/include/JSystem/JParticle/JPAEmitter.h +++ b/include/JSystem/JParticle/JPAEmitter.h @@ -168,6 +168,9 @@ public: JPASetRMtxSTVecfromMtx(matrix, mGlobalRot, &mGlobalScl, &mGlobalTrs); mGlobalPScl.set(mGlobalScl.x, mGlobalScl.y); } + void setDirection(const JGeometry::TVec3& direction) { + mLocalDir.set(direction); + } void setLocalScale(const JGeometry::TVec3& scale) { mLocalScl.set(scale); diff --git a/include/SSystem/SComponent/c_cc_d.h b/include/SSystem/SComponent/c_cc_d.h index db50a57acdb..16690f6e2d0 100644 --- a/include/SSystem/SComponent/c_cc_d.h +++ b/include/SSystem/SComponent/c_cc_d.h @@ -496,6 +496,7 @@ public: u32 ChkCoNoCrr() const { return mObjCo.ChkNoCrr(); } void OnCoNoCrrBit() { mObjCo.OnNoCrrBit(); } u32 ChkCoSph3DCrr() const { return mObjCo.ChkSph3DCrr(); } + void OnCoNoCoHitInfSet() { mObjCo.OnSPrmBit(0x200); } void OnAtSPrmBit(u32 flag) { mObjAt.OnSPrmBit(flag); } void OffAtSPrmBit(u32 flag) { mObjAt.OffSPrmBit(flag); } void OffTgSPrmBit(u32 flag) { mObjTg.OffSPrmBit(flag); } @@ -518,6 +519,7 @@ public: void OnCoSPrmBit(u32 flag) { mObjCo.OnSPrmBit(flag); } void SetCoVsGrp(u32 grp) { mObjCo.SetVsGrp(grp); } void SetCoIGrp(u32 grp) { mObjCo.SetIGrp(grp); } + void SetTgGrp(u32 grp) { mObjTg.SetGrp(grp); } void SetAtSPrm(u32 prm) { mObjAt.SetSPrm(prm); } void SetTgSPrm(u32 prm) { mObjTg.SetSPrm(prm); } void SetCoSPrm(u32 prm) { mObjCo.SetSPrm(prm); } diff --git a/include/d/actor/d_a_alink.h b/include/d/actor/d_a_alink.h index 80e2a931834..957b7147e46 100644 --- a/include/d/actor/d_a_alink.h +++ b/include/d/actor/d_a_alink.h @@ -3244,7 +3244,7 @@ public: 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 checkHorseWalkStartAnm() const { return checkUnderMove0BckNoArc(ANM_WSTARTH); } bool checkIronBallPreSwingAnime() const { return checkUpperAnime(0x19A); } bool checkIronBallSwingAnime() const { return checkUpperAnime(0x19B); } bool checkDashDamageAnime() const { return checkUpperAnime(0xAD); } @@ -3382,6 +3382,18 @@ public: return var_r4; } + BOOL checkSlideMode() { + return mProcID == PROC_SLIDE || + mProcID == PROC_SLIDE_LAND || + mProcID == PROC_WOLF_SLIDE_READY || + mProcID == PROC_WOLF_SLIDE_LAND || + mProcID == PROC_WOLF_SLIDE; + } + + BOOL checkHorseGetItem() const { + return (mProcID == PROC_GET_ITEM && checkHorseRide()) || mProcID == PROC_HORSE_GET_KEY; + } + bool checkFisingRodJewl() const { return (mEquipItem == 0x5C || mEquipItem == 0x5F) || mEquipItem == 0x5E; } @@ -3418,7 +3430,10 @@ public: bool checkCopyRodRevive() const { return mProcID == PROC_COPY_ROD_REVIVE; } bool checkHorseGetOffMode() const { return mProcID == PROC_HORSE_GETOFF; } + bool checkHorseHangMode() const { return mProcID == PROC_HORSE_HANG; } + bool checkHorseBackInput() const { return mProcID == PROC_HORSE_WAIT; } bool checkHorseRideOn() const { return mProcID == PROC_HORSE_RIDE; } + bool checkHorseTurnMode() const { return mProcID == PROC_HORSE_TURN; } bool checkGrabUp() const { return mProcID == PROC_GRAB_UP; } bool checkSpinnerRideWait() const { return mProcID == PROC_SPINNER_WAIT && mProcVar2.field_0x300c == 0; @@ -3519,6 +3534,8 @@ public: int getIronBallHandChainNum() const { return mItemMode; } const cXyz& getIronBallChainHandRootPos() const { return mHookshotTopPos; } + fopAc_ac_c* getAtnActor() { return mTargetedActor; } + void itemHitSE(u32 param_1, u32 param_2, Z2SoundObjBase* param_3) { mZ2Link.startHitItemSE(param_1, param_2, param_3, -1.0f); } BOOL checkStartFall() { return getStartMode() == 3; } @@ -3528,6 +3545,16 @@ public: BOOL checkWindSpeedMoveXZ() const { return mWindSpeed.abs2XZ() > 1.0f; } + BOOL checkHorseRideReady() const { return checkHorseRideOn() || checkHorseGetOffMode(); } + + void getHorseReinCenterLeftPos(cXyz* o_pos) { + mDoMtx_multVec(getLeftHandMatrix(), &m_handLeftInSidePos, o_pos); + } + + void getHorseReinCenterRightPos(cXyz* o_pos) { + mDoMtx_multVec(getRightHandMatrix(), &m_handRightInSidePos, o_pos); + } + inline bool checkWindSpeedOnXZ() const; inline void startRestartRoomFromOut(int, u32, int); inline u16 getReadyItem(); @@ -4199,7 +4226,7 @@ struct daAlinkHIO_anm_c { /* 0x04 */ f32 mSpeed; /* 0x08 */ f32 mStartFrame; /* 0x0C */ f32 mInterpolation; - /* 0x10 */ f32 mCheckFrame; // name maybe wrong + /* 0x10 */ f32 mCancelFrame; }; // size: 0x14 struct daAlinkHIO_basic_c1 { diff --git a/include/d/actor/d_a_cow.h b/include/d/actor/d_a_cow.h index ccf86a57251..5b18486124e 100644 --- a/include/d/actor/d_a_cow.h +++ b/include/d/actor/d_a_cow.h @@ -54,7 +54,7 @@ public: /* 8065C508 */ void setCowInCage(); /* 8065C680 */ void setEnterCount(); /* 8065C70C */ void action_enter(); - /* 8065CFBC */ void isAngry(); + /* 8065CFBC */ bool isAngry(); /* 8065D03C */ void isGuardFad(); /* 8065D0B8 */ void setAngryHit(); /* 8065D17C */ void checkBeforeBgAngry(s16); diff --git a/include/d/actor/d_a_horse.h b/include/d/actor/d_a_horse.h index e1590a99505..fdf887030c6 100644 --- a/include/d/actor/d_a_horse.h +++ b/include/d/actor/d_a_horse.h @@ -3,20 +3,20 @@ #include "Z2AudioLib/Z2Creature.h" #include "d/actor/d_a_player.h" +#include "d/actor/d_a_scene_exit.h" #include "d/d_bg_s_acch.h" #include "d/d_bg_s_lin_chk.h" #include "d/d_cc_d.h" #include "d/d_msg_flow.h" #include "m_Do/m_Do_audio.h" +#include "d/d_path.h" +#include "d/d_particle_copoly.h" class daHorseRein_c { public: /* 80837F2C */ void setReinPos(int); /* 808383A8 */ void setReinPosPart(int); - /* 80844FB0 */ ~daHorseRein_c(); - /* 80844FEC */ daHorseRein_c(); -private: /* 0x00 */ cXyz* field_0x0[2]; /* 0x08 */ int field_0x8[2]; /* 0x10 */ f32 field_0x10; @@ -27,14 +27,17 @@ private: class daHorseFootData_c { public: - /* 80844F70 */ ~daHorseFootData_c(); - /* 80844FAC */ daHorseFootData_c(); - -private: - /* 0x0 */ u8 field_0x0[0xE4]; + /* 0x00 */ u8 field_0x0; + /* 0x00 */ u8 field_0x1; + /* 0x02 */ u8 field_0x2[0x4 - 0x2]; + /* 0x04 */ s16 field_0x4[4]; + /* 0x0C */ cXyz field_0xc; + /* 0x18 */ cXyz field_0x18; + /* 0x24 */ Mtx field_0x24[4]; }; // Size: 0xE4 class daHoZelda_c; +class daHorse_hio_c; /** * @ingroup actors-unsorted @@ -48,35 +51,90 @@ class daHorse_c : public fopAc_ac_c { public: enum daHorse_ERFLG0 { /* 0x001 */ ERFLG0_UNK_1 = 0x1, + /* 0x002 */ ERFLG0_UNK_2 = 0x2, + /* 0x004 */ ERFLG0_UNK_4 = 0x4, + /* 0x008 */ ERFLG0_UNK_8 = 0x8, /* 0x010 */ ERFLG0_MOVE_ACCEPT = 0x10, + /* 0x020 */ ERFLG0_UNK_20 = 0x20, + /* 0x040 */ ERFLG0_UNK_40 = 0x40, /* 0x080 */ ERFLG0_RIDE_RUN_FLG = 0x80, /* 0x100 */ ERFLG0_CUT_TURN_CANCEL = 0x100, + /* 0x200 */ ERFLG0_UNK_200 = 0x200, + /* 0x400 */ ERFLG0_UNK_400 = 0x400, + /* 0x800 */ ERFLG0_UNK_800 = 0x800, ERFLG0_UNK_18 = 0x18, }; enum daHorse_RFLG0 { - /* 0x02 */ RFLG0_ENEMY_SEARCH = 2, - /* 0x08 */ RFLG0_LASH_DASH_START = 8, - /* 0x10 */ RFLG0_TURN_STAND = 0x10, - /* 0x40 */ RFLG0_TURN_STAND_CAMERA = 0x40, + /* 0x001 */ RFLG0_UNK_1 = 1, + /* 0x002 */ RFLG0_ENEMY_SEARCH = 2, + /* 0x004 */ RFLG0_UNK_4 = 4, + /* 0x008 */ RFLG0_LASH_DASH_START = 8, + /* 0x010 */ RFLG0_TURN_STAND = 0x10, + /* 0x020 */ RFLG0_UNK_20 = 0x20, + /* 0x040 */ RFLG0_TURN_STAND_CAMERA = 0x40, + /* 0x080 */ RFLG0_UNK_80 = 0x80, + /* 0x100 */ RFLG0_UNK_100 = 0x100, + /* 0x200 */ RFLG0_UNK_200 = 0x200, }; enum daHorse_FLG0 { + /* 0x00000001 */ FLG0_UNK_1 = 0x1, + /* 0x00000002 */ FLG0_UNK_2 = 0x2, + /* 0x00000004 */ FLG0_UNK_4 = 0x4, + /* 0x00000008 */ FLG0_UNK_8 = 0x8, + /* 0x00000010 */ FLG0_UNK_10 = 0x10, /* 0x00000020 */ FLG0_RODEO_LEFT = 0x20, /* 0x00000040 */ FLG0_RIDE_START_FLG = 0x40, /* 0x00000080 */ FLG0_NO_DRAW_WAIT = 0x80, + /* 0x00000100 */ FLG0_UNK_100 = 0x100, + /* 0x00000200 */ FLG0_UNK_200 = 0x200, + /* 0x00000400 */ FLG0_UNK_400 = 0x400, + /* 0x00000800 */ FLG0_UNK_800 = 0x800, + /* 0x00001000 */ FLG0_UNK_1000 = 0x1000, + /* 0x00002000 */ FLG0_UNK_2000 = 0x2000, + /* 0x00004000 */ FLG0_UNK_4000 = 0x4000, + /* 0x00008000 */ FLG0_UNK_8000 = 0x8000, /* 0x00010000 */ FLG0_PLAYER_BACK_RIDE_LASH = 0x10000, + /* 0x00020000 */ FLG0_UNK_20000 = 0x20000, + /* 0x00040000 */ FLG0_UNK_40000 = 0x40000, + /* 0x00080000 */ FLG0_UNK_80000 = 0x80000, + /* 0x00100000 */ FLG0_UNK_100000 = 0x100000, + /* 0x00200000 */ FLG0_UNK_200000 = 0x200000, /* 0x00400000 */ FLG0_UNK_400000 = 0x400000, + /* 0x02000000 */ FLG0_UNK_2000000 = 0x2000000, + /* 0x04000000 */ FLG0_UNK_4000000 = 0x4000000, + /* 0x08000000 */ FLG0_CALL_HORSE = 0x8000000, + /* 0x10000000 */ FLG0_UNK_10000000 = 0x10000000, /* 0x20000000 */ FLG0_TURN_CANCEL_KEEP = 0x20000000, + /* 0x40000000 */ FLG0_UNK_40000000 = 0x40000000, /* 0x80000000 */ FLG0_RODEO_MODE = 0x80000000 }; + enum daHorse_DEMOMODE { + DEMO_LAST_e = 0x11, + DEMO_NEW_ANM0_e = 0x200, + }; + + enum daHorse_PROC { + PROC_WAIT_e, + PROC_MOVE_e, + PROC_STOP_e, + PROC_TURN_e, + PROC_JUMP_e, + PROC_LAND_e, + PROC_LARGE_DAMAGE_e, + PROC_TOOL_DEMO_e, + + PROC_NONE_e = 8, + }; + fopAc_ac_c* getZeldaActor(); void cancelOriginalDemo() { field_0x16b8 = 2; - field_0x1740 = 1; + m_demoMode = 1; } /* 807E27F8 */ void onDemoJumpDistance(f32, f32); @@ -85,16 +143,16 @@ public: /* 80838498 */ void coHitCallbackBoarJump(fopAc_ac_c*); /* 80838798 */ void coHitCallbackBoarHit(fopAc_ac_c*, dCcD_GObjInf*); /* 80838904 */ void coHitCallbackCowHit(fopAc_ac_c*); - /* 80838B78 */ void modelCallBack(int); - /* 80838F98 */ void createHeap(); - /* 8083940C */ void checkEnding(); - /* 80839498 */ void create(); + /* 80838B78 */ int modelCallBack(int); + /* 80838F98 */ int createHeap(); + /* 8083940C */ static BOOL checkEnding(); + /* 80839498 */ int create(); /* 80839D1C */ void setBasAnime(int); /* 80839EBC */ void resetBasAnime(); - /* 80839ED4 */ void setDoubleAnime(f32, f32, f32, u16, u16, f32); - /* 8083A20C */ void setSingleAnime(u16, f32, f32, s16, f32, int); + /* 80839ED4 */ int setDoubleAnime(f32, f32, f32, u16, u16, f32); + /* 8083A20C */ int setSingleAnime(u16, f32, f32, s16, f32, int); /* 8083A3C4 */ void animePlay(); - /* 8083A5AC */ void checkDemoAction(); + /* 8083A5AC */ int checkDemoAction(); /* 8083A890 */ void setStickRodeoMove(); /* 8083AC7C */ void setStickCallMove(); /* 8083ACEC */ void setDemoMoveData(u32*, cXyz const*); @@ -104,10 +162,10 @@ public: /* 8083B828 */ void setTurnStartVibration(); /* 8083B82C */ void setTurnVibration(); /* 8083B830 */ void setMoveAnime(f32); - /* 8083BF48 */ void checkHorseNoMove(int); - /* 8083CA80 */ void checkTurnPlayerState(); - /* 8083CB38 */ void setSpeedAndAngle(); - /* 8083D748 */ void checkWaitTurn() const; + /* 8083BF48 */ int checkHorseNoMove(int); + /* 8083CA80 */ BOOL checkTurnPlayerState(); + /* 8083CB38 */ int setSpeedAndAngle(); + /* 8083D748 */ BOOL checkWaitTurn() const; /* 8083D774 */ void setRoomInfo(int); /* 8083D918 */ void setBodyPart(); /* 8083D9D8 */ void setMatrix(); @@ -118,20 +176,20 @@ public: /* 8083E760 */ void setTailAngle(); /* 8083E8A4 */ void setNeckAngle(); /* 8083EA78 */ void copyFootMatrix(); - /* 8083EB10 */ void setFootMatrix(); - /* 8083ED88 */ void setLegAngle(f32, int, int, s16*); + /* 8083EB10 */ int setFootMatrix(); + /* 8083ED88 */ int setLegAngle(f32, int, int, s16*); /* 8083F3B0 */ void footBgCheck(); /* 8083F9AC */ void setReinPosMoveInit(int); /* 8083FDAC */ void copyReinPos(); /* 8083FEB4 */ void setReinPosHandSubstance(int); /* 8084010C */ void setReinPosNormalSubstance(); /* 808402F8 */ void bgCheck(); - /* 80840714 */ void checkSpecialWallHitSubstance(cXyz const&) const; + /* 80840714 */ bool checkSpecialWallHitSubstance(cXyz const&) const; /* 808407B0 */ void setServiceWaitTimer(); - /* 80840800 */ void checkServiceWaitAnime(); - /* 80840844 */ void checkTurnInput(); - /* 808408F0 */ void checkTgHitTurn(); - /* 808409C0 */ void checkTurnAfterFastMove(f32); + /* 80840800 */ BOOL checkServiceWaitAnime(); + /* 80840844 */ BOOL checkTurnInput(); + /* 808408F0 */ BOOL checkTgHitTurn(); + /* 808409C0 */ BOOL checkTurnAfterFastMove(f32); /* 80840B28 */ void setNeckAnimeMorf(); /* 80840B88 */ void setNeckAnime(u16, f32, f32, s16); /* 80840CA4 */ void resetNeckAnime(); @@ -139,67 +197,67 @@ public: /* 80840FE0 */ void setTalkModeWolf(); /* 80841084 */ void setBoarHit(fopAc_ac_c*, int); /* 8084116C */ void savePos(); - /* 808411D0 */ void callHorseSubstance(cXyz const*); - /* 80841468 */ void setHorsePosAndAngleSubstance(cXyz const*, s16); - /* 808415B4 */ void checkPlayerHeavy(); + /* 808411D0 */ int callHorseSubstance(cXyz const*); + /* 80841468 */ int setHorsePosAndAngleSubstance(cXyz const*, s16); + /* 808415B4 */ BOOL checkPlayerHeavy(); /* 80841628 */ void setTgCoGrp(u32, u32); /* 80841698 */ void onRideFlgSubstance(); /* 808416D4 */ void offRideFlgSubstance(); - /* 80841708 */ void procWaitInit(); - /* 808417B8 */ void procWait(); - /* 80841F04 */ void procMoveInit(); - /* 80841F80 */ void procMove(); - /* 808423DC */ void procStopInit(); - /* 808425BC */ void procStop(); - /* 80842878 */ void procTurnInit(int); - /* 80842AB0 */ void procTurn(); - /* 80843008 */ void procJumpInit(int); - /* 808432E0 */ void procJump(); - /* 80843604 */ void procLandInit(f32, int); - /* 80843770 */ void procLand(); - /* 808438AC */ void procLargeDamageInit(); - /* 8084396C */ void procLargeDamage(); - /* 808439C8 */ void procToolDemoInit(); - /* 80843A44 */ void procToolDemo(); + /* 80841708 */ int procWaitInit(); + /* 808417B8 */ int procWait(); + /* 80841F04 */ int procMoveInit(); + /* 80841F80 */ int procMove(); + /* 808423DC */ int procStopInit(); + /* 808425BC */ int procStop(); + /* 80842878 */ int procTurnInit(int); + /* 80842AB0 */ int procTurn(); + /* 80843008 */ int procJumpInit(int); + /* 808432E0 */ int procJump(); + /* 80843604 */ int procLandInit(f32, int); + /* 80843770 */ int procLand(); + /* 808438AC */ int procLargeDamageInit(); + /* 8084396C */ int procLargeDamage(); + /* 808439C8 */ int procToolDemoInit(); + /* 80843A44 */ int procToolDemo(); /* 80843BFC */ void searchSceneChangeArea(fopAc_ac_c*); - /* 80843C74 */ void execute(); - /* 80844590 */ void draw(); + /* 80843C74 */ int execute(); + /* 80844590 */ int draw(); /* 8084478C */ ~daHorse_c(); - /* 80844CB0 */ daHorse_c(); /* 80182D04 */ void getLashDashStart() const; - bool checkNoBombProc() const { return field_0x16b4 == 0 || field_0x16b4 == 1; } - bool checkResetStateFlg0(daHorse_RFLG0 flag) const { return mResetStateFlg0 & flag; } - bool checkEndResetStateFlg0(daHorse_ERFLG0 flag) const { return mEndResetStateFlg0 & flag; } - u32 checkStateFlg0(daHorse_FLG0 flag) const { return mStateFlg0 & flag; } - f32 getNormalMaxSpeedF() { return mNormalMaxSpeedF; } - f32 getLashMaxSpeedF() { return mLashMaxSpeedF; } - void changeDemoMoveAngle(s16 angle) { mDemoMoveAngle = angle; } - void setDemoStickR(f32 stick) { mDemoStickR = stick; } - void changeDemoMode(u32 param_0, int param_1) { field_0x1740 = param_0; field_0x1728 = param_1; } + bool checkNoBombProc() const { return m_procID == PROC_WAIT_e || m_procID == PROC_MOVE_e; } + bool checkResetStateFlg0(daHorse_RFLG0 flag) const { return m_resetStateFlg0 & flag; } + bool checkEndResetStateFlg0(daHorse_ERFLG0 flag) const { return m_endResetStateFlg0 & flag; } + u32 checkStateFlg0(daHorse_FLG0 flag) const { return m_stateFlg0 & flag; } + f32 getNormalMaxSpeedF() { return m_normalMaxSpeedF; } + f32 getLashMaxSpeedF() { return m_lashMaxSpeedF; } + void changeDemoMoveAngle(s16 angle) { m_demoMoveAngle = angle; } + void setDemoStickR(f32 stick) { m_demoStickR = stick; } + void changeDemoMode(u32 param_0, int param_1) { m_demoMode = param_0; field_0x1728 = param_1; } void changeOriginalDemo() { field_0x16b8 = 3; field_0x1728 = 0; } - void i_setHorsePosAndAngle(cXyz const* i_pos, s16 i_angle) { (this->*mpSetHorsePosAngleFn)(i_pos, i_angle); } - void onRideFlg() { (this->*mpOnRideFlgFn)(); } - void offRideFlg() { (this->*mpOffRideFlgFn)(); } - void onStateFlg0(daHorse_FLG0 flag) { mStateFlg0 |= flag; } - void offStateFlg0(daHorse_FLG0 flag) { mStateFlg0 &= ~flag; } - void onEndResetStateFlg0(daHorse_ERFLG0 i_flag) { mEndResetStateFlg0 |= i_flag;} - void offEndResetStateFlg0(daHorse_ERFLG0 i_flag) { mEndResetStateFlg0 &= ~i_flag;} + void i_setHorsePosAndAngle(cXyz const* i_pos, s16 i_angle) { (this->*m_setHorsePosAngle)(i_pos, i_angle); } + void onRideFlg() { (this->*m_onRideFlg)(); } + void offRideFlg() { (this->*m_offRideFlg)(); } + void onStateFlg0(daHorse_FLG0 flag) { m_stateFlg0 |= flag; } + void offStateFlg0(daHorse_FLG0 flag) { m_stateFlg0 &= ~flag; } + void onEndResetStateFlg0(daHorse_ERFLG0 i_flag) { m_endResetStateFlg0 |= i_flag;} + void offEndResetStateFlg0(daHorse_ERFLG0 i_flag) { m_endResetStateFlg0 &= ~i_flag;} + void onResetStateFlg0(daHorse_RFLG0 i_flag) { m_resetStateFlg0 |= i_flag;} void offNoDrawWait() { offStateFlg0(FLG0_NO_DRAW_WAIT); } - bool checkSpecialWallHit(const cXyz& param_0) { return (this->*mpCheckSpecialWallHitFn)(param_0); } - MtxP getSaddleMtx() { return field_0x570->getAnmMtx(21); } - MtxP getRootMtx() { return field_0x570->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]; } - int callHorse(const cXyz* param_0) { return (this->*mpCallHorseFn)(param_0); } + bool checkSpecialWallHit(const cXyz& param_0) { return (this->*m_checkSpecialWallHit)(param_0); } + MtxP getSaddleMtx() { return m_model->getAnmMtx(21); } + MtxP getRootMtx() { return m_model->getAnmMtx(0); } + f32 getAnmFrameMax(int i_idx) const { return m_frameCtrl[i_idx].getEnd(); } + f32 getAnmFrame(int i_idx) const { return m_frameCtrl[i_idx].getFrame(); } + s16 getAimNeckAngleY() const { return m_aimNeckAngleY; } + f32 getMorfFrame() const { return m_morf_frame; } + f32 getBlendRate() { return m_anmRatio[1].getRatio(); } + u16 getAnmIdx(int i_idx) const { return m_anmIdx[i_idx]; } + int callHorse(const cXyz* param_0) { return (this->*m_callHorse)(param_0); } - daHoZelda_c* i_getZeldaActor() { return (daHoZelda_c*)mZeldaActorKeep.getActor(); } + daHoZelda_c* i_getZeldaActor() { return (daHoZelda_c*)m_zeldaActorKeep.getActor(); } bool checkTurnStandCamera() const { return checkResetStateFlg0(RFLG0_TURN_STAND_CAMERA); } bool checkTurnStand() const { return checkResetStateFlg0(RFLG0_TURN_STAND); } @@ -207,17 +265,18 @@ public: bool checkCutTurnCancel() const { return checkEndResetStateFlg0(ERFLG0_CUT_TURN_CANCEL); } bool checkTurnCancelKeep() const { return checkStateFlg0(FLG0_TURN_CANCEL_KEEP); } BOOL checkRodeoLeft() const { return checkStateFlg0(FLG0_RODEO_LEFT); } - 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 checkTurn() const { return m_procID == PROC_TURN_e && field_0x1720 == 0; } + BOOL checkStop() const { return m_procID == PROC_STOP_e; } + bool checkJump() const { return m_procID == PROC_JUMP_e; } + bool checkWait() const { return m_procID == PROC_WAIT_e; } + bool checkLand() const { return m_procID == PROC_LAND_e && field_0x171a == 0; } bool checkGetOff() const { return fabsf(speedF) < 3.0f; } bool checkEnemySearch() { return checkResetStateFlg0(RFLG0_ENEMY_SEARCH); } bool checkOriginalDemo() const { return field_0x16b8 == 3; } - s16 checkCowHit() const { return mCowHit; } - s16 getCowHitAngle() const { return mCowHitAngle; } - u8 getRodeoPointCnt() const { return mRodeoPointCnt; } + bool checkHorseDemoMode() { return field_0x16b8 != 0; } + s16 checkCowHit() const { return m_cowHit; } + s16 getCowHitAngle() const { return m_cowHitAngle; } + u8 getRodeoPointCnt() const { return m_rodeoPointCnt; } void onTagJump(f32 param_0, f32 param_1, f32 param_2) { field_0x1768 = param_0; @@ -238,14 +297,14 @@ public: void onTurnCancelKeep() { onStateFlg0(FLG0_TURN_CANCEL_KEEP); } void offTurnCancelKeep() { offStateFlg0(FLG0_TURN_CANCEL_KEEP); } - BOOL checkTurnCancelFrame() const { return checkTurn() && field_0x177C < field_0x5b0[0].getFrame(); } - BOOL checkStopCancelFrame() const { return checkStop() && field_0x177C < field_0x5b0[0].getFrame(); } + BOOL checkTurnCancelFrame() const { return checkTurn() && field_0x177C < m_frameCtrl[0].getFrame(); } + BOOL checkStopCancelFrame() const { return checkStop() && field_0x177C < m_frameCtrl[0].getFrame(); } void initHorseMtx() { mDoMtx_stack_c::transS(current.pos); mDoMtx_stack_c::ZXYrotM(shape_angle); - field_0x570->setBaseTRMtx(mDoMtx_stack_c::get()); - field_0x570->calc(); + m_model->setBaseTRMtx(mDoMtx_stack_c::get()); + m_model->calc(); } void offRodeoMode() { @@ -257,108 +316,238 @@ public: void setSpeedF(f32 i_speed) { speedF = i_speed; } void setWalkSpeedF() { speedF = field_0x1764; } - MtxP getLeftStirrupMtx() { return field_0x570->getAnmMtx(0x17); } - MtxP getRightStirrupMtx() { return field_0x570->getAnmMtx(0x19); } - void calcWeightEnvMtx() { field_0x570->calcWeightEnvelopeMtx(); } + MtxP getLeftStirrupMtx() { return m_model->getAnmMtx(0x17); } + MtxP getRightStirrupMtx() { return m_model->getAnmMtx(0x19); } + void calcWeightEnvMtx() { m_model->calcWeightEnvelopeMtx(); } - void setReinPosNormal() { (this->*mpSetReinPosNormalFn)(); } - void setReinPosHand(int param_0) { (this->*mpSetReinPosHandFn)(param_0); } + void setReinPosNormal() { (this->*m_setReinPosNormal)(); } + void setReinPosHand(int param_0) { (this->*m_setReinPosHand)(param_0); } - u32 getShadowID() const { return mShadowID; } + u32 getShadowID() const { return m_shadowID; } - static u8 const m_footJointTable[8]; + bool checkInputOnR() const { return m_padStickValue > 0.05f; } + + static u16 const m_footJointTable[]; static f32 const m_callLimitDistance2; -//private: - /* 0x0568 */ u8 field_0x568[8]; - /* 0x0570 */ J3DModel* field_0x570; - /* 0x0574 */ void* field_0x574; - /* 0x0578 */ J3DFrameCtrl field_0x578; - /* 0x058C */ int field_0x58c; - /* 0x0590 */ u8 field_0x590[4]; - /* 0x0594 */ mDoExt_AnmRatioPack field_0x594[3]; - /* 0x05AC */ void* field_0x5ac; - /* 0x05B0 */ daPy_frameCtrl_c field_0x5b0[3]; - /* 0x05F8 */ u8 field_0x5f8[4]; - /* 0x05FC */ dBgS_AcchCir field_0x5fc[3]; - /* 0x06BC */ dBgS_Acch field_0x6bc; - /* 0x0894 */ dCcD_Stts field_0x894; - /* 0x08D0 */ dBgS_HorseLinChk field_0x8d0; - /* 0x0940 */ dCcD_Cyl field_0x940[3]; - /* 0x0CF4 */ dCcD_Cyl field_0xcf4; - /* 0x0E30 */ dCcD_Cyl field_0xe30; - /* 0x0F6C */ dCcD_Sph field_0xf6c; - /* 0x10A4 */ Z2CreatureRide field_0x10a4; - /* 0x1140 */ u8 field_0x1140[0x10]; - /* 0x1150 */ daHorseRein_c field_0x1150[3]; - /* 0x11C8 */ u8 field_0x11c8[0x40]; - /* 0x1208 */ dMsgFlow_c field_0x1208; - /* 0x1254 */ daPy_actorKeep_c mZeldaActorKeep; - /* 0x125C */ u8 field_0x125c[0xC8]; - /* 0x1324 */ daHorseFootData_c mFootData[4]; - /* 0x16B4 */ u8 field_0x16b4; - /* 0x16B5 */ u8 field_0x16b5[3]; + /* 0x0568 */ request_of_phase_process_class m_phase; + /* 0x0570 */ J3DModel* m_model; + /* 0x0574 */ J3DModelData* m_modelData; + /* 0x0578 */ mDoExt_btpAnm m_btp; + /* 0x0590 */ mDoExt_MtxCalcAnmBlendTblOld* m_mtxcalc; + /* 0x0594 */ mDoExt_AnmRatioPack m_anmRatio[3]; + /* 0x05AC */ mDoExt_MtxCalcOldFrame* m_oldFrame; + /* 0x05B0 */ daPy_frameCtrl_c m_frameCtrl[3]; + /* 0x05F8 */ daHorse_hio_c* m_hio; + /* 0x05FC */ dBgS_AcchCir m_acchcir[3]; + /* 0x06BC */ dBgS_HorseAcch m_acch; + /* 0x0894 */ dCcD_Stts m_cc_stts; + /* 0x08D0 */ dBgS_HorseLinChk m_linechk; + /* 0x0940 */ dCcD_Cyl m_tgco_cyl[3]; + /* 0x0CF4 */ dCcD_Cyl m_boar_cyl; + /* 0x0E30 */ dCcD_Cyl m_at_cyl; + /* 0x0F6C */ dCcD_Sph m_head_sph; + /* 0x10A4 */ Z2CreatureRide m_sound; + /* 0x1140 */ void* field_0x1140; + /* 0x1144 */ daPy_frameCtrl_c* field_0x1144; + /* 0x1148 */ dPath* m_path; + /* 0x114C */ dPath* m_rodeoPath; + /* 0x1150 */ daHorseRein_c m_rein[3]; + /* 0x11C8 */ mDoExt_3DlineMat1_c m_reinLine; + /* 0x1204 */ int field_0x1204; + /* 0x1208 */ dMsgFlow_c m_msgflow; + /* 0x1254 */ daPy_actorKeep_c m_zeldaActorKeep; + /* 0x125C */ daScex_c* m_scnChg_buffer[50]; + /* 0x1324 */ daHorseFootData_c m_footData[4]; + /* 0x16B4 */ u8 m_procID; + /* 0x16B5 */ s8 m_reverb; + /* 0x16B6 */ u8 field_0x16b6; + /* 0x16B7 */ u8 field_0x16b7; /* 0x16B8 */ u8 field_0x16b8; - /* 0x16B9 */ u8 field_0x16b9[2]; - /* 0x16BB */ u8 mRodeoPointCnt; + /* 0x16B9 */ u8 m_poly_sound; + /* 0x16BA */ u8 m_rodeoPoint; + /* 0x16BB */ u8 m_rodeoPointCnt; /* 0x16BC */ u8 field_0x16bc; - /* 0x16BD */ u8 field_0x16bd[0x16C4 - 0x16BD]; - /* 0x16C4 */ u16 mAnmIdx[3]; - /* 0x16CA */ u8 field_0x16ca[0x16F2 - 0x16CA]; - /* 0x16F2 */ s16 mAimNeckAngleY; - /* 0x16F4 */ u8 field_0x16f4[0x8]; - /* 0x16FC */ s16 mDemoMoveAngle; - /* 0x16FE */ u8 field_0x16fe[4]; + /* 0x16BD */ u8 field_0x16bd; + /* 0x16BE */ s8 m_scnChg_num; + /* 0x16C0 */ u16 m_flowID; + /* 0x16C2 */ s16 field_0x16c2; + /* 0x16C4 */ u16 m_anmIdx[3]; + /* 0x16CA */ u8 field_0x16ca[0x16CE - 0x16CA]; + /* 0x16CE */ s16 field_0x16ce; + /* 0x16CE */ s16 field_0x16d0; + /* 0x16D2 */ u8 field_0x16d2[0x16D4 - 0x16D2]; + /* 0x16D4 */ s16 field_0x16d4[3]; + /* 0x16DA */ u8 field_0x16da[0x16E0 - 0x16DA]; + /* 0x16E0 */ s16 field_0x16e0[3]; + /* 0x16E6 */ u8 field_0x16e6[0x16E8 - 0x16E6]; + /* 0x16E8 */ s16 field_0x16e8; + /* 0x16EA */ s16 field_0x16ea; + /* 0x16EC */ s16 m_padStickAngleY; + /* 0x16EE */ s16 m_serviceWaitTimer; + /* 0x16F0 */ s16 field_0x16f0; + /* 0x16F2 */ s16 m_aimNeckAngleY; + /* 0x16F4 */ s16 m_btpFrame; + /* 0x16F6 */ u16 field_0x16f6; + /* 0x16F8 */ s16 m_lashAccelerationTime; + /* 0x16FA */ s16 field_0x16fa; + /* 0x16FC */ s16 m_demoMoveAngle; + /* 0x16FE */ s16 m_lashRecoverTime; + /* 0x1700 */ s16 m_lashCnt; /* 0x1702 */ s16 field_0x1702; - /* 0x1704 */ u8 field_0x1704[2]; - /* 0x1706 */ s16 mCowHitAngle; - /* 0x1708 */ s16 mCowHit; - /* 0x170A */ u8 field_0x170a[0x171A - 0x170A]; + /* 0x1704 */ s16 field_0x1704; + /* 0x1706 */ s16 m_cowHitAngle; + /* 0x1708 */ s16 m_cowHit; + /* 0x170A */ s16 field_0x170a; + /* 0x170C */ s16 field_0x170c; + /* 0x170E */ s16 field_0x170e; + /* 0x1710 */ s16 field_0x1710; + /* 0x1712 */ s16 field_0x1712; + /* 0x1714 */ s16 field_0x1714; + /* 0x1716 */ s16 m_callMoveTimer; + /* 0x1718 */ s16 field_0x1718; /* 0x171A */ s16 field_0x171a; - /* 0x171C */ u8 field_0x171c[0x1720 - 0x171C]; + /* 0x171C */ s16 field_0x171c; + /* 0x171E */ s16 field_0x171e; /* 0x1720 */ s16 field_0x1720; - /* 0x1722 */ u8 field_0x1722[0x1728 - 0x1722]; + /* 0x1722 */ s16 field_0x1722; + /* 0x1724 */ u8 field_0x1724[0x1728 - 0x1724]; /* 0x1728 */ int field_0x1728; - /* 0x172C */ u8 field_0x172c[0x1734 - 0x172C]; - /* 0x1734 */ u32 mShadowID; - /* 0x1738 */ u8 field_0x1738[0x1740 - 0x1738]; - /* 0x1740 */ u32 field_0x1740; - /* 0x1744 */ u32 mStateFlg0; - /* 0x1748 */ u32 mResetStateFlg0; - /* 0x174C */ u32 mEndResetStateFlg0; - /* 0x1750 */ f32 mMorfFrame; - /* 0x1754 */ u8 field_0x1754[0x1764 - 0x1754]; + /* 0x172C */ int m_demoStaffId; + /* 0x1730 */ int field_0x1730; + /* 0x1734 */ u32 m_shadowID; + /* 0x1738 */ u32 field_0x1738[2]; + /* 0x1740 */ u32 m_demoMode; + /* 0x1744 */ u32 m_stateFlg0; + /* 0x1748 */ u32 m_resetStateFlg0; + /* 0x174C */ u32 m_endResetStateFlg0; + /* 0x1750 */ f32 m_morf_frame; + /* 0x1754 */ f32 field_0x1754; + /* 0x1758 */ f32 m_padStickValue; + /* 0x175C */ f32 field_0x175c; + /* 0x1760 */ f32 field_0x1760; /* 0x1764 */ f32 field_0x1764; /* 0x1768 */ f32 field_0x1768; /* 0x176C */ f32 field_0x176c; /* 0x1770 */ f32 field_0x1770; - /* 0x1774 */ u8 field_0x1774[0x177C - 0x1774]; + /* 0x1774 */ f32 field_0x1774; + /* 0x1778 */ f32 field_0x1778; /* 0x177C */ f32 field_0x177C; - /* 0x1780 */ u8 field_0x1780[0x1788 - 0x1780]; - /* 0x1788 */ f32 mDemoStickR; - /* 0x178C */ f32 mNormalMaxSpeedF; - /* 0x1790 */ f32 mLashMaxSpeedF; - /* 0x1794 */ u8 field_0x1794[0x30]; - /* 0x17C4 */ cXyz mDemoPos0; - /* 0x17D0 */ u8 field_0x17d0[0x18A4 - 0x17D0]; - /* 0x18A4 */ int (daHorse_c::*mpProcFn)(); - /* 0x18B0 */ bool (daHorse_c::*mpCheckSpecialWallHitFn)(const cXyz&); - /* 0x18BC */ void (daHorse_c::*mpSetReinPosHandFn)(int); - /* 0x18C8 */ void (daHorse_c::*mpSetReinPosNormalFn)(); - /* 0x18D4 */ int (daHorse_c::*mpCallHorseFn)(const cXyz*); - /* 0x18E0 */ int (daHorse_c::*mpSetHorsePosAngleFn)(const cXyz* i_pos, s16 i_angle); - /* 0x18EC */ void (daHorse_c::*mpOnRideFlgFn)(); - /* 0x18F8 */ void (daHorse_c::*mpOffRideFlgFn)(); + /* 0x1780 */ f32 field_0x1780; + /* 0x1784 */ f32 field_0x1784; + /* 0x1788 */ f32 m_demoStickR; + /* 0x178C */ f32 m_normalMaxSpeedF; + /* 0x1790 */ f32 m_lashMaxSpeedF; + /* 0x1794 */ f32 field_0x1794; + /* 0x1798 */ f32 field_0x1798; + /* 0x179C */ f32 m_lashAddSpeed; + /* 0x17A0 */ cXyz field_0x17a0; + /* 0x17AC */ cXyz m_bodyEyePos; + /* 0x17B8 */ cXyz field_0x17b8; + /* 0x17C4 */ cXyz m_demoPos0; + /* 0x17D0 */ cXyz field_0x17d0; + /* 0x17DC */ dPaPoF_c field_0x17dc; + /* 0x18A4 */ int (daHorse_c::*m_proc)(); + /* 0x18B0 */ bool (daHorse_c::*m_checkSpecialWallHit)(const cXyz&) const; + /* 0x18BC */ void (daHorse_c::*m_setReinPosHand)(int); + /* 0x18C8 */ void (daHorse_c::*m_setReinPosNormal)(); + /* 0x18D4 */ int (daHorse_c::*m_callHorse)(const cXyz*); + /* 0x18E0 */ int (daHorse_c::*m_setHorsePosAngle)(const cXyz* i_pos, s16 i_angle); + /* 0x18EC */ void (daHorse_c::*m_onRideFlg)(); + /* 0x18F8 */ void (daHorse_c::*m_offRideFlg)(); +}; + +class daHorse_hio_c1 { +public: + /* 0x000 */ s16 max_turn; + /* 0x002 */ s16 min_turn; + /* 0x004 */ s16 lash_acceleration_time; + /* 0x006 */ s16 jump_end_frame; + /* 0x008 */ s16 air_end_frame; + /* 0x00A */ s16 land_end_frame; + /* 0x00C */ s16 spur_recovery_time; + /* 0x00E */ s16 full_spur_recovery_time; + /* 0x010 */ s16 continuous_spur_recovery_time; + /* 0x012 */ s16 cliff_jump_end_frame; + /* 0x014 */ s16 cliff_air_end_frame; + /* 0x016 */ s16 cliff_land_end_frame; + /* 0x018 */ s16 min_jump_time; + /* 0x01A */ s16 kakariko_lash_acceleration_time; + /* 0x01C */ f32 max_speed; + /* 0x020 */ f32 wait_anm_speed; + /* 0x024 */ f32 walk_anm_speed; + /* 0x028 */ f32 fast_walk_anm_speed; + /* 0x02C */ f32 run_anm_speed; + /* 0x030 */ f32 fast_run_anm_speed; + /* 0x034 */ f32 backwalk_anm_speed; + /* 0x038 */ f32 wait_to_walk_rate; + /* 0x03C */ f32 walk_to_fastwalk_rate; + /* 0x040 */ f32 fastwalk_to_run_rate; + /* 0x044 */ f32 run_to_fastrun_rate; + /* 0x048 */ f32 walk_run_interpolation; + /* 0x04C */ f32 acceleration; + /* 0x050 */ f32 deceleration; + /* 0x054 */ f32 stopping_deceleration; + /* 0x058 */ f32 max_backward_speed; + /* 0x05C */ f32 max_backward_acceleration; + /* 0x060 */ f32 backward_idle_to_walk_rate; + /* 0x064 */ f32 faststop_anm_speed; + /* 0x068 */ f32 faststop_stand_anm_speed; + /* 0x06C */ f32 faststop_interpolation; + /* 0x070 */ f32 fast_stop_cancel_frame; + /* 0x074 */ f32 faststop_deceleration_slow; + /* 0x078 */ f32 faststop_deceleration; + /* 0x07C */ f32 stand_anm_speed; + /* 0x080 */ f32 stand_interpolation; + /* 0x084 */ f32 faststop_stand_cancel_frame; + /* 0x088 */ f32 stand_cancel_frame; + /* 0x08C */ f32 add_lash_speed; + /* 0x090 */ f32 lash_acceleration; + /* 0x094 */ f32 min_lash_speed; + /* 0x098 */ f32 jump_anm_speed; + /* 0x09C */ f32 jump_start_frame; + /* 0x0A0 */ f32 jump_interpolation; + /* 0x0A4 */ f32 air_start_frame; + /* 0x0A8 */ f32 air_interpolation; + /* 0x0AC */ f32 land_anm_speed; + /* 0x0B0 */ f32 land_start_frame; + /* 0x0B4 */ f32 land_interpolation; + /* 0x0B8 */ f32 land_cancel_frame; + /* 0x0BC */ f32 cliff_rise_rate; + /* 0x0C0 */ f32 boar_jump_horizontal; + /* 0x0C4 */ f32 boar_jump_height; + /* 0x0C8 */ f32 water_depth_limit; + /* 0x0CC */ f32 enemy_search_range; + /* 0x0D0 */ f32 m0D0; + /* 0x0D4 */ f32 floor_angle_limit; + /* 0x0D8 */ f32 dash_anm_speed; + /* 0x0DC */ f32 field_0xdc; + /* 0x0E0 */ f32 walk_min_speed; + /* 0x0E4 */ f32 cliff_jump_anm_speed; + /* 0x0E8 */ f32 cliff_jump_start_frame; + /* 0x0EC */ f32 cliff_jump_interpolation; + /* 0x0F0 */ f32 cliff_air_anm_speed; + /* 0x0F4 */ f32 cliff_air_start_frame; + /* 0x0F8 */ f32 cliff_air_interpolation; + /* 0x0FC */ f32 cliff_land_anm_speed; + /* 0x100 */ f32 cliff_land_start_frame; + /* 0x104 */ f32 cliff_land_interpolation; + /* 0x108 */ f32 cliff_land_cancel_frame; + /* 0x10C */ f32 cliff_jump_horizontal; + /* 0x110 */ f32 cliff_jump_vertical; + /* 0x114 */ f32 kakariko_max_speed; + /* 0x118 */ f32 kakariko_run_anm_speed; + /* 0x11C */ f32 kakariko_fastrun_anm_speed; + /* 0x120 */ f32 kakariko_add_lash_speed; }; class daHorse_hio_c0 { public: - static u8 const m[292]; + static const daHorse_hio_c1 m; }; -class dBgS_HorseAcch { +class daHorse_hio_c { public: - /* 80845274 */ ~dBgS_HorseAcch(); }; #endif /* D_A_HORSE_H */ diff --git a/include/d/actor/d_a_hozelda.h b/include/d/actor/d_a_hozelda.h index 793dafb21e9..27bd11f4f42 100644 --- a/include/d/actor/d_a_hozelda.h +++ b/include/d/actor/d_a_hozelda.h @@ -59,8 +59,11 @@ public: /* 80848B64 */ void draw(); MtxP getRightHandMtx() { return mpZeldaModel->getAnmMtx(22); } + MtxP getRightFingerMtx() { return mpZeldaModel->getAnmMtx(23); } + u8 checkBowMode() const { return field_0x6d8; } void setDamageInit() { field_0x6db = 1; } + u8 checkSingleRide() const { return field_0x6df; } /* 0x568 */ request_of_phase_process_class mPhase; /* 0x570 */ J3DModel* mpZeldaModel; diff --git a/include/d/actor/d_a_player.h b/include/d/actor/d_a_player.h index 1a8a8814b2c..13f8f5f59bb 100644 --- a/include/d/actor/d_a_player.h +++ b/include/d/actor/d_a_player.h @@ -113,8 +113,8 @@ private: class daPy_frameCtrl_c : public J3DFrameCtrl { public: - /* 80140D24 */ ~daPy_frameCtrl_c(); - /* 80140D80 */ daPy_frameCtrl_c(); + /* 80140D24 */ virtual ~daPy_frameCtrl_c() {} + /* 80140D80 */ daPy_frameCtrl_c() {} bool checkAnmEnd(); void updateFrame(); void setFrameCtrl(u8, short, short, f32, f32); @@ -929,6 +929,7 @@ public: BOOL checkStickArrowReset() const { return checkResetFlg0(RFLG0_UNK_1); } u32 getCutAtFlg() const { return checkNoResetFlg0(FLG0_UNK_40); } u32 checkBoarSingleBattleFirst() const { return checkNoResetFlg2(FLG2_BOAR_SINGLE_BATTLE); } + u32 checkBoarSingleBattleSecond() const { return checkNoResetFlg2(FLG2_UNK_1000000); } void offWolfEnemyHangBite() { offNoResetFlg2(FLG2_WOLF_ENEMY_HANG_BITE); } bool onWolfEnemyHangBite(fopAc_ac_c* param_0) { return onWolfEnemyBiteAll(param_0, FLG2_WOLF_ENEMY_HANG_BITE); } diff --git a/include/d/actor/d_a_scene_exit.h b/include/d/actor/d_a_scene_exit.h index bc17922c49f..7195bf29b4e 100644 --- a/include/d/actor/d_a_scene_exit.h +++ b/include/d/actor/d_a_scene_exit.h @@ -25,6 +25,16 @@ public: u8 getPathID() { return (fopAcM_GetParam(this) >> 0x10) & 0xFF; } void setSceneChangeOK() { mSceneChangeOK = true; } + BOOL checkArea(const cXyz* param_0) { + cXyz spC; + mDoMtx_multVec(mMatrix, param_0, &spC); + if (spC.y >= 0.0f && spC.y <= scale.y && fabsf(spC.x) <= scale.x && fabsf(spC.z) <= scale.z) { + return TRUE; + } + + return FALSE; + } + /* 0x568 */ Mtx mMatrix; /* 0x598 */ u8 field_0x598; /* 0x599 */ bool mSceneChangeOK; diff --git a/include/d/actor/d_a_tag_hstop.h b/include/d/actor/d_a_tag_hstop.h index 11a6cab74c5..003ef4ec945 100644 --- a/include/d/actor/d_a_tag_hstop.h +++ b/include/d/actor/d_a_tag_hstop.h @@ -16,6 +16,12 @@ public: daTagHstop_c* getNext() { return mNext; } bool getActiveFlg() const { return mActive; } + void onTagStop() { + if (field_0x573 == 0) { + field_0x573 = 1; + } + } + static daTagHstop_c* m_top; static dMsgFlow_c m_msgFlow; diff --git a/include/d/d_bg_s_acch.h b/include/d/d_bg_s_acch.h index 512a3c9b629..af28fe1944c 100644 --- a/include/d/d_bg_s_acch.h +++ b/include/d/d_bg_s_acch.h @@ -265,4 +265,13 @@ public: virtual ~dBgS_BombAcch() {} }; +class dBgS_HorseAcch : public dBgS_Acch { +public: + dBgS_HorseAcch() { + SetHorse(); + } + + /* 80845274 */ virtual ~dBgS_HorseAcch() {} +}; + #endif /* D_BG_D_BG_S_ACCH_H */ diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h index a649da80ce3..399a8bbc95f 100644 --- a/include/d/d_com_inf_game.h +++ b/include/d/d_com_inf_game.h @@ -1590,6 +1590,26 @@ inline void dComIfGs_setRestartRoomParam(u32 i_param) { g_dComIfG_gameInfo.info.getRestart().setRoomParam(i_param); } +inline cXyz& dComIfGs_getHorseRestartPos() { + return g_dComIfG_gameInfo.info.getPlayer().getHorsePlace().getPos(); +} + +inline s16 dComIfGs_getHorseRestartAngleY() { + return g_dComIfG_gameInfo.info.getPlayer().getHorsePlace().getAngleY(); +} + +inline const char* dComIfGs_getHorseRestartStageName() { + return g_dComIfG_gameInfo.info.getPlayer().getHorsePlace().getStageName(); +} + +inline s8 dComIfGs_getHorseRestartRoomNo() { + return g_dComIfG_gameInfo.info.getPlayer().getHorsePlace().getRoomNo(); +} + +inline void dComIfGs_setHorseRestart(const char* i_stageName, cXyz& i_pos, s16 i_angle, s8 i_roomNo) { + g_dComIfG_gameInfo.info.getPlayer().getHorsePlace().set(i_stageName, i_pos, i_angle, i_roomNo); +} + inline u8 dComIfGs_getMagic() { return g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().getMagic(); } @@ -2121,6 +2141,10 @@ inline daHorse_c* dComIfGp_getHorseActor() { return (daHorse_c*)g_dComIfG_gameInfo.play.getPlayerPtr(1); } +inline void dComIfGp_setHorseActor(fopAc_ac_c* i_horse) { + g_dComIfG_gameInfo.play.setPlayerPtr(1, i_horse); +} + inline dMsgObject_c* dComIfGp_getMsgObjectClass() { return g_dComIfG_gameInfo.play.getMsgObjectClass(); } diff --git a/include/d/d_meter2_info.h b/include/d/d_meter2_info.h index 3d3451a0c3c..0f490633243 100644 --- a/include/d/d_meter2_info.h +++ b/include/d/d_meter2_info.h @@ -192,6 +192,7 @@ public: u8 getTableMapRegionNo() { return mTableMapRegionNo; } u8 getGoldWolfMapType() { return mGoldWolfMapType; } bool isWindowAccept(int param_0) { return mWindowAccept & (1 << param_0); } + void setHorseLifeCount(s16 i_count) { mHorseLifeCount = i_count; } public: /* 0x04 */ u8 unk4[4]; @@ -794,6 +795,10 @@ inline bool dMeter2Info_isWindowAccept(int param_0) { return g_meter2_info.isWindowAccept(param_0); } +inline void dMeter2Info_setHorseLifeCount(s16 i_count) { + g_meter2_info.setHorseLifeCount(i_count); +} + const char* dMeter2Info_getPlusTextureName(); const char* dMeter2Info_getNumberTextureName(int pIndex); int dMeter2Info_recieveLetter(); diff --git a/include/d/d_save.h b/include/d/d_save.h index 6e6d832c569..d51bd1f9abb 100644 --- a/include/d/d_save.h +++ b/include/d/d_save.h @@ -211,12 +211,17 @@ public: void init(); void set(const char* i_name, const cXyz& i_pos, s16 i_angle, s8 i_roomNo); + cXyz& getPos() { return mPos; } + s16 getAngleY() const { return mAngleY; } + const char* getStageName() const { return mName; } + s8 getRoomNo() const { return mRoomNo; } + private: /* 0x00 */ cXyz mPos; - /* 0x0C */ u16 mAngleY; + /* 0x0C */ s16 mAngleY; /* 0x0E */ char mName[8]; /* 0x16 */ u8 mSpawnId; - /* 0x17 */ u8 mRoomNo; + /* 0x17 */ s8 mRoomNo; }; // Size: 0x18 class dSv_player_return_place_c { @@ -514,6 +519,7 @@ public: dSv_player_info_c& getPlayerInfo() { return mPlayerInfo; } dSv_player_status_a_c& getPlayerStatusA() { return mPlayerStatusA; } dSv_player_status_b_c& getPlayerStatusB() { return mPlayerStatusB; } + dSv_horse_place_c& getHorsePlace() { return mHorsePlace; } dSv_player_item_c& getItem() { return mItem; } dSv_player_collect_c& getCollect() { return mCollect; } dSv_player_item_record_c& getItemRecord() { return mItemRecord; } diff --git a/include/f_op/f_op_actor_mng.h b/include/f_op/f_op_actor_mng.h index 096fc441c50..1df58d088b0 100644 --- a/include/f_op/f_op_actor_mng.h +++ b/include/f_op/f_op_actor_mng.h @@ -86,63 +86,6 @@ public: dBgS& dComIfG_Bgsp(); -class fopAcM_lc_c { -public: - fopAcM_lc_c() { mLineCheck.ClrSttsRoofOff(); } - - static dBgS_ObjLinChk* getLineCheck() { return &mLineCheck; } - static bool checkMoveBG() { return dComIfG_Bgsp().ChkMoveBG(mLineCheck); } - static cXyz* getCrossP() { return mLineCheck.GetCrossP(); } - static bool lineCheck(const cXyz*, const cXyz*, const fopAc_ac_c*); - static bool getTriPla(cM3dGPla* o_tri) { return dComIfG_Bgsp().GetTriPla(mLineCheck, o_tri); } - static bool checkWallHit() { - cM3dGPla poly; - getTriPla(&poly); - return cBgW_CheckBWall(poly.mNormal.y); - } - - static dBgS_ObjLinChk mLineCheck; -}; - -class dBgS_RoofChk; -class fopAcM_rc_c { -public: - static dBgS_ObjRoofChk* getRoofCheck() { return &mRoofCheck; } - static f32 getRoofY() { return mRoofY; } - static bool roofCheck(const cXyz*); - - static dBgS_ObjRoofChk mRoofCheck; - static f32 mRoofY; -}; - -class dBgS_GndChk; -class fopAcM_gc_c { -public: - static bool gndCheck(const cXyz*); - static dBgS_ObjGndChk mGndCheck; - static f32 mGroundY; - - static bool getTriPla(cM3dGPla* i_plane) { - return dComIfG_Bgsp().GetTriPla(mGndCheck, i_plane); - } - static int getRoomId() { return dComIfG_Bgsp().GetRoomId(mGndCheck); } - static int getPolyColor() { return dComIfG_Bgsp().GetPolyColor(mGndCheck); } - static int getPolyAtt0() { return dComIfG_Bgsp().GetPolyAtt0(mGndCheck); } - static dBgS_ObjGndChk* getGroundCheck() { return &mGndCheck; } - static f32 getGroundY() { return mGroundY; } -}; - -class fopAcM_wt_c { -public: - static dBgS_WtrChk* getWaterCheck() { return &mWaterCheck; } - static f32 getWaterY() { return mWaterY; } - static int getPolyAtt0() { return dComIfG_Bgsp().GetPolyAtt0(mWaterCheck); } - - static bool waterCheck(const cXyz*); - static dBgS_WtrChk mWaterCheck; - static f32 mWaterY; -}; - class dKy_tevstr_c; class cBgS_PolyInfo; typedef int (*heapCallbackFunc)(fopAc_ac_c*); @@ -796,4 +739,69 @@ inline void fopAcM_setWarningMessage_f(const fopAc_ac_c* i_actor, const char* i_ #define fopAcM_setWarningMessage(...) #endif +class fopAcM_lc_c { +public: + fopAcM_lc_c() { mLineCheck.ClrSttsRoofOff(); } + + static dBgS_ObjLinChk* getLineCheck() { return &mLineCheck; } + static bool checkMoveBG() { return dComIfG_Bgsp().ChkMoveBG(mLineCheck); } + static cXyz* getCrossP() { return mLineCheck.GetCrossP(); } + static bool lineCheck(const cXyz*, const cXyz*, const fopAc_ac_c*); + static bool getTriPla(cM3dGPla* o_tri) { return dComIfG_Bgsp().GetTriPla(mLineCheck, o_tri); } + static bool checkWallHit() { + cM3dGPla poly; + getTriPla(&poly); + return cBgW_CheckBWall(poly.mNormal.y); + } + + static dBgS_ObjLinChk mLineCheck; +}; + +class dBgS_RoofChk; +class fopAcM_rc_c { +public: + static dBgS_ObjRoofChk* getRoofCheck() { return &mRoofCheck; } + static f32 getRoofY() { return mRoofY; } + static bool roofCheck(const cXyz*); + + static dBgS_ObjRoofChk mRoofCheck; + static f32 mRoofY; +}; + +class dBgS_GndChk; +class fopAcM_gc_c { +public: + static bool gndCheck(const cXyz*); + static dBgS_ObjGndChk mGndCheck; + static f32 mGroundY; + + static bool getTriPla(cM3dGPla* i_plane) { + return dComIfG_Bgsp().GetTriPla(mGndCheck, i_plane); + } + + static s16 getGroundAngleDirection(s16 param_0) { + cM3dGPla spC; + getTriPla(&spC); + return fopAcM_getPolygonAngle(&spC, param_0); + } + + static int getRoomId() { return dComIfG_Bgsp().GetRoomId(mGndCheck); } + static int getPolyColor() { return dComIfG_Bgsp().GetPolyColor(mGndCheck); } + static int getPolyAtt0() { return dComIfG_Bgsp().GetPolyAtt0(mGndCheck); } + static int getHorseNoEntry() { return dComIfG_Bgsp().GetHorseNoEntry(mGndCheck); } + static dBgS_ObjGndChk* getGroundCheck() { return &mGndCheck; } + static f32 getGroundY() { return mGroundY; } +}; + +class fopAcM_wt_c { +public: + static dBgS_WtrChk* getWaterCheck() { return &mWaterCheck; } + static f32 getWaterY() { return mWaterY; } + static int getPolyAtt0() { return dComIfG_Bgsp().GetPolyAtt0(mWaterCheck); } + + static bool waterCheck(const cXyz*); + static dBgS_WtrChk mWaterCheck; + static f32 mWaterY; +}; + #endif diff --git a/include/global.h b/include/global.h index a2617285db2..e7a695c3d15 100644 --- a/include/global.h +++ b/include/global.h @@ -40,6 +40,8 @@ inline BOOL checkEqual(s32 a, s32 b) { #define FAST_DIV(x, n) (x >> (n / 2)) +#define SQUARE(x) ((x) * (x)) + // hack to make strings with no references compile properly #define DEAD_STRING(s) OSReport(s) diff --git a/include/m_Do/m_Do_ext.h b/include/m_Do/m_Do_ext.h index 4320d106a37..53924d1267a 100644 --- a/include/m_Do/m_Do_ext.h +++ b/include/m_Do/m_Do_ext.h @@ -187,6 +187,8 @@ public: int remove(J3DModelData* i_modelData) { return i_modelData->removeTexNoAnimator(mpAnm); } + J3DAnmTexPattern* getBtpAnm() const { return mpAnm; } + private: /* 0x14 */ J3DAnmTexPattern* mpAnm; }; @@ -210,8 +212,11 @@ class J3DTransformInfo; class mDoExt_AnmRatioPack { public: - /* 80140DF0 */ ~mDoExt_AnmRatioPack(); - /* 80140E2C */ mDoExt_AnmRatioPack(); + ~mDoExt_AnmRatioPack() {} + mDoExt_AnmRatioPack() { + mRatio = 0.0f; + mAnmTransform = NULL; + } void setRatio(f32 ratio) { mRatio = ratio; } f32 getRatio() { return mRatio; } diff --git a/src/d/actor/d_a_alink.cpp b/src/d/actor/d_a_alink.cpp index 05707963b67..b20962d7693 100644 --- a/src/d/actor/d_a_alink.cpp +++ b/src/d/actor/d_a_alink.cpp @@ -13046,9 +13046,9 @@ BOOL daAlink_c::checkItemAction() { if (mEquipItem == 0x103) { daPy_frameCtrl_c* frame_ctrl = &mUpperFrameCtrl[2]; - if ((checkUpperAnime(0x80) && frame_ctrl->getFrame() <= daAlinkHIO_cutDaL_c0::m.mCutAnm.mCheckFrame) || - (checkUpperAnime(0x81) && frame_ctrl->getFrame() <= daAlinkHIO_cutDaR_c0::m.mCutAnm.mCheckFrame) || - (checkUpperAnime(0x82) && frame_ctrl->getFrame() <= daAlinkHIO_cutDaCharge_c0::m.mCutAnm.mCheckFrame) || + if ((checkUpperAnime(0x80) && frame_ctrl->getFrame() <= daAlinkHIO_cutDaL_c0::m.mCutAnm.mCancelFrame) || + (checkUpperAnime(0x81) && frame_ctrl->getFrame() <= daAlinkHIO_cutDaR_c0::m.mCutAnm.mCancelFrame) || + (checkUpperAnime(0x82) && frame_ctrl->getFrame() <= daAlinkHIO_cutDaCharge_c0::m.mCutAnm.mCancelFrame) || checkModeFlg(0x40000)) { return false; @@ -13791,25 +13791,25 @@ void daAlink_c::setItemAction() { setCopyRodControllUpperSpeedRate(); } } else if (checkBoomerangCatchAnime()) { - if (checkAnmEnd(frame_ctrl) || (checkInputOnR() && frame_ctrl->getFrame() > daAlinkHIO_boom_c0::m.mCatchAnm.mCheckFrame)) { + if (checkAnmEnd(frame_ctrl) || (checkInputOnR() && frame_ctrl->getFrame() > daAlinkHIO_boom_c0::m.mCatchAnm.mCancelFrame)) { resetUpperAnime(UPPER_2, 3.0f); } else if (frame_ctrl->getFrame() >= 20.0f) { field_0x2f97 = 6; } } else if (checkBoomerangThrowAnime()) { - if (checkAnmEnd(frame_ctrl) || (checkInputOnR() && frame_ctrl->getFrame() > daAlinkHIO_boom_c0::m.mThrowAnm.mCheckFrame)) { + if (checkAnmEnd(frame_ctrl) || (checkInputOnR() && frame_ctrl->getFrame() > daAlinkHIO_boom_c0::m.mThrowAnm.mCancelFrame)) { resetUpperAnime(UPPER_2, 3.0f); } else if (frame_ctrl->checkPass(5.5f)) { throwBoomerang(); } } else if (checkCopyRodThrowAnime()) { - if (checkAnmEnd(frame_ctrl) || (checkInputOnR() && frame_ctrl->getFrame() > daAlinkHIO_boom_c0::m.mThrowAnm.mCheckFrame)) { + if (checkAnmEnd(frame_ctrl) || (checkInputOnR() && frame_ctrl->getFrame() > daAlinkHIO_boom_c0::m.mThrowAnm.mCancelFrame)) { resetUpperAnime(UPPER_2, 3.0f); } else if (frame_ctrl->checkPass(6.5f)) { throwCopyRod(); } } else if (checkKandelaarSwingAnime()) { - if (checkAnmEnd(frame_ctrl) || (checkInputOnR() && frame_ctrl->getFrame() > daAlinkHIO_kandelaar_c0::m.mShakeAnm.mCheckFrame)) { + if (checkAnmEnd(frame_ctrl) || (checkInputOnR() && frame_ctrl->getFrame() > daAlinkHIO_kandelaar_c0::m.mShakeAnm.mCancelFrame)) { resetUpperAnime(UPPER_2, 3.0f); } } else if (checkEquipAnime()) { diff --git a/src/d/actor/d_a_alink_boom.inc b/src/d/actor/d_a_alink_boom.inc index a896076cce4..33f8daedcf2 100644 --- a/src/d/actor/d_a_alink_boom.inc +++ b/src/d/actor/d_a_alink_boom.inc @@ -313,7 +313,7 @@ void daAlink_c::checkUpperItemActionBoomerangFly() { /* 800E0BE4-800E0D8C 0DB524 01A8+00 4/4 0/0 0/0 .text checkNextActionBoomerang__9daAlink_cFv */ int daAlink_c::checkNextActionBoomerang() { if ((checkBoomerangCatchAnime() && - mUpperFrameCtrl[2].getFrame() <= daAlinkHIO_boom_c0::m.mCatchAnm.mCheckFrame) || + mUpperFrameCtrl[2].getFrame() <= daAlinkHIO_boom_c0::m.mCatchAnm.mCancelFrame) || checkNoResetFlg1(FLG1_UNK_2)) { return 0; } @@ -495,7 +495,7 @@ int daAlink_c::procBoomerangCatch() { daPy_frameCtrl_c* frameCtrl = mUnderFrameCtrl; onEndResetFlg0(ERFLG0_UNK_8000000); - if (frameCtrl->getFrame() > daAlinkHIO_boom_c0::m.mCatchAnm.mCheckFrame) { + if (frameCtrl->getFrame() > daAlinkHIO_boom_c0::m.mCatchAnm.mCancelFrame) { onModeFlg(4); } diff --git a/src/d/actor/d_a_alink_bottle.inc b/src/d/actor/d_a_alink_bottle.inc index da5d3051878..9d435ed89f5 100644 --- a/src/d/actor/d_a_alink_bottle.inc +++ b/src/d/actor/d_a_alink_bottle.inc @@ -604,7 +604,7 @@ int daAlink_c::procBottleSwingInit(fopAc_ac_c* param_0, int param_1) { } } - field_0x3478 = daAlinkHIO_bottle_c0::m.mScoopAnm.mCheckFrame; + field_0x3478 = daAlinkHIO_bottle_c0::m.mScoopAnm.mCancelFrame; field_0x347c = 14.0f; if (var_r31 != NULL) { @@ -620,11 +620,11 @@ int daAlink_c::procBottleSwingInit(fopAc_ac_c* param_0, int param_1) { } } else if (temp_r3) { setSingleAnimeParam(ANM_BOTTLE_SWING_DOWN, &daAlinkHIO_bottle_c0::m.mSwingDownAnm); - field_0x3478 = daAlinkHIO_bottle_c0::m.mSwingDownAnm.mCheckFrame; + field_0x3478 = daAlinkHIO_bottle_c0::m.mSwingDownAnm.mCancelFrame; field_0x347c = 8.0f; } else { setSingleAnimeParam(ANM_BOTTLE_SWING, &daAlinkHIO_bottle_c0::m.mSwingSideAnm); - field_0x3478 = daAlinkHIO_bottle_c0::m.mSwingSideAnm.mCheckFrame; + field_0x3478 = daAlinkHIO_bottle_c0::m.mSwingSideAnm.mCancelFrame; field_0x347c = 4.0f; } diff --git a/src/d/actor/d_a_alink_bow.inc b/src/d/actor/d_a_alink_bow.inc index 8a12168bc1d..dfbe8befad7 100644 --- a/src/d/actor/d_a_alink_bow.inc +++ b/src/d/actor/d_a_alink_bow.inc @@ -424,7 +424,7 @@ BOOL daAlink_c::checkUpperItemActionBow() { } if (checkAnmEnd(&mUpperFrameCtrl[2]) || - (mUpperFrameCtrl[2].getFrame() > daAlinkHIO_bow_c0::m.mShootAnm.mCheckFrame && + (mUpperFrameCtrl[2].getFrame() > daAlinkHIO_bow_c0::m.mShootAnm.mCancelFrame && itemButton())) { setBowReadyAnime(); diff --git a/src/d/actor/d_a_alink_copyrod.inc b/src/d/actor/d_a_alink_copyrod.inc index bb68ec43178..5558eb3a95a 100644 --- a/src/d/actor/d_a_alink_copyrod.inc +++ b/src/d/actor/d_a_alink_copyrod.inc @@ -251,7 +251,7 @@ void daAlink_c::checkUpperItemActionCopyRodFly() { /* 800E1C44-800E1D6C 0DC584 0128+00 2/2 0/0 0/0 .text checkNextActionCopyRod__9daAlink_cFv */ int daAlink_c::checkNextActionCopyRod() { if ((checkBoomerangCatchAnime() && - mUpperFrameCtrl[2].getFrame() <= daAlinkHIO_boom_c0::m.mCatchAnm.mCheckFrame) || + mUpperFrameCtrl[2].getFrame() <= daAlinkHIO_boom_c0::m.mCatchAnm.mCancelFrame) || checkNoResetFlg1(FLG1_UNK_10000)) { return 0; } @@ -386,13 +386,13 @@ int daAlink_c::procCopyRodSwingInit() { setSingleAnimeParam(ANM_COPYROD_SWING_LARGE, &daAlinkHIO_copyRod_c0::m.mBigSwingAnm); field_0x3478 = 13.0f; field_0x347c = 21.0f; - field_0x3480 = daAlinkHIO_copyRod_c0::m.mBigSwingAnm.mCheckFrame; + field_0x3480 = daAlinkHIO_copyRod_c0::m.mBigSwingAnm.mCancelFrame; field_0x3484 = 27.0f; } else { setSingleAnimeParam(ANM_COPYROD_SWING, &daAlinkHIO_copyRod_c0::m.mSwingAnm); field_0x3478 = 4.0f; field_0x347c = 8.0f; - field_0x3480 = daAlinkHIO_copyRod_c0::m.mSwingAnm.mCheckFrame; + field_0x3480 = daAlinkHIO_copyRod_c0::m.mSwingAnm.mCancelFrame; field_0x3484 = 14.0f; } diff --git a/src/d/actor/d_a_alink_crawl.inc b/src/d/actor/d_a_alink_crawl.inc index d897b2a971c..11fc7fe4586 100644 --- a/src/d/actor/d_a_alink_crawl.inc +++ b/src/d/actor/d_a_alink_crawl.inc @@ -482,10 +482,10 @@ int daAlink_c::procCrawlStartInit() { current.pos.x = field_0x34ec.x + (35.0f * cM_ssin(field_0x306e)); current.pos.z = field_0x34ec.z + (35.0f * cM_scos(field_0x306e)); - if (daAlinkHIO_crouch_c0::m.mCrawlStartAnm.mCheckFrame > daAlinkHIO_crouch_c0::m.mCrawlStartAnm.mEndFrame) { + if (daAlinkHIO_crouch_c0::m.mCrawlStartAnm.mCancelFrame > daAlinkHIO_crouch_c0::m.mCrawlStartAnm.mEndFrame) { field_0x347c = daAlinkHIO_crouch_c0::m.mCrawlStartAnm.mEndFrame; } else { - field_0x347c = daAlinkHIO_crouch_c0::m.mCrawlStartAnm.mCheckFrame; + field_0x347c = daAlinkHIO_crouch_c0::m.mCrawlStartAnm.mCancelFrame; } field_0x3478 = 1.0f / (field_0x347c - daAlinkHIO_crouch_c0::m.mCrawlStartAnm.mStartFrame); @@ -819,8 +819,8 @@ int daAlink_c::procCrawlEndInit(int param_0, s16 param_1, s16 param_2) { shape_angle.x = param_1; shape_angle.z = param_2; - if (temp_r30->mCheckFrame > temp_r30->mStartFrame) { - field_0x347c = temp_r30->mCheckFrame; + if (temp_r30->mCancelFrame > temp_r30->mStartFrame) { + field_0x347c = temp_r30->mCancelFrame; } else { field_0x347c = temp_r30->mStartFrame; } @@ -841,7 +841,7 @@ int daAlink_c::procCrawlEnd() { if (!checkNextActionFromCrouch(0)) { procWaitInit(); } - } else if (frame_ctrl->getFrame() < daAlinkHIO_crouch_c0::m.mCrawlEndAnm.mCheckFrame) { + } else if (frame_ctrl->getFrame() < daAlinkHIO_crouch_c0::m.mCrawlEndAnm.mCancelFrame) { checkNextActionFromCrouch(1); } diff --git a/src/d/actor/d_a_alink_cut.inc b/src/d/actor/d_a_alink_cut.inc index 73ba33e0fb0..ba2d3492714 100644 --- a/src/d/actor/d_a_alink_cut.inc +++ b/src/d/actor/d_a_alink_cut.inc @@ -846,7 +846,7 @@ int daAlink_c::procCutNormalInit(int i_type) { field_0x3480 *= mHeavySpeedMultiplier; } - field_0x3484 = cutData->mCutAnm.mCheckFrame; + field_0x3484 = cutData->mCutAnm.mCancelFrame; f32 morf; if (!checkZoraWearAbility() && checkNoResetFlg0(FLG0_UNDERWATER)) { @@ -1045,7 +1045,7 @@ int daAlink_c::procCutFinishInit(int i_type) { daAlinkHIO_cut_c0::m.mSwordLength, daAlinkHIO_cut_c0::m.mSwordRadius); field_0x32d0 = Z2SE_AL_SWORD_SWING_S; } else { - field_0x3484 = cutData->mCutAnm.mCheckFrame; + field_0x3484 = cutData->mCutAnm.mCancelFrame; mProcVar0.field_0x3008 = cutData->mStopTime; setSwordAtParam(dCcG_At_Spl_UNK_1, 3, cutParams->m_atSe, (var_r30 ? TRUE : FALSE) + 3, daAlinkHIO_cut_c0::m.mSwordLength, daAlinkHIO_cut_c0::m.mSwordRadius); @@ -1267,7 +1267,7 @@ int daAlink_c::procCutFinishJumpUpLandInit() { field_0x3484 = daAlinkHIO_cutFnJU_c0::m.mComboCheckFrame; mProcVar0.field_0x3008 = daAlinkHIO_cutFnJU_c0::m.mComboStopTime; } else { - field_0x3484 = daAlinkHIO_cutFnJU_c0::m.mLandAnm.mCheckFrame; + field_0x3484 = daAlinkHIO_cutFnJU_c0::m.mLandAnm.mCancelFrame; mProcVar0.field_0x3008 = daAlinkHIO_cutFnJU_c0::m.mStopTime; } @@ -1338,13 +1338,13 @@ int daAlink_c::procCutReverseInit(daAlink_c::daAlink_ANM i_anmID) { if (i_anmID == ANM_SHIELD_ATTACK_RECOIL) { setSingleAnimeParam(i_anmID, &daAlinkHIO_guard_c0::m.mRecoilAnm); mProcVar2.field_0x300c = 1; - field_0x3478 = daAlinkHIO_guard_c0::m.mRecoilAnm.mCheckFrame; + field_0x3478 = daAlinkHIO_guard_c0::m.mRecoilAnm.mCancelFrame; field_0x2f98 = 2; setUpperGuardAnime(-1.0f); } else { setSingleAnimeParam(i_anmID, &daAlinkHIO_cut_c0::m.mRecoilAnm); mProcVar2.field_0x300c = 0; - field_0x3478 = daAlinkHIO_cut_c0::m.mRecoilAnm.mCheckFrame; + field_0x3478 = daAlinkHIO_cut_c0::m.mRecoilAnm.mCancelFrame; field_0x2f98 = 4; } @@ -1509,7 +1509,7 @@ int daAlink_c::procCutJumpLand() { { procCutTurnInit(1, field_0x3198); } else { - if (frameCtrl->getFrame() > daAlinkHIO_cutJump_c0::m.mLandAnm.mCheckFrame) { + if (frameCtrl->getFrame() > daAlinkHIO_cutJump_c0::m.mLandAnm.mCancelFrame) { onModeFlg(4); if (checkNextAction(1)) { @@ -1569,7 +1569,7 @@ int daAlink_c::procCutTurnInit(int param_0, int param_1) { mProcVar1.field_0x300a = 8; } - field_0x3480 = anm_data->mCheckFrame; + field_0x3480 = anm_data->mCancelFrame; resetCombo(1); f32 morf; @@ -2065,7 +2065,7 @@ int daAlink_c::procCutDownLand() { seStartSwordCut(Z2SE_SWORD_STICK_PULLOUT); } - if (frameCtrl_p->getFrame() > daAlinkHIO_cutDown_c0::m.mMissAnm.mCheckFrame) { + if (frameCtrl_p->getFrame() > daAlinkHIO_cutDown_c0::m.mMissAnm.mCancelFrame) { onModeFlg(4); checkNextAction(1); } @@ -2186,7 +2186,7 @@ int daAlink_c::procCutHeadLand() { } else { checkNextAction(0); } - } else if (frameCtrl->getFrame() > daAlinkHIO_cutHead_c0::m.mLandAnm.mCheckFrame) { + } else if (frameCtrl->getFrame() > daAlinkHIO_cutHead_c0::m.mLandAnm.mCancelFrame) { checkNextAction(1); } @@ -2366,7 +2366,7 @@ int daAlink_c::procCutLargeJumpLand() { field_0x3198 != 2) { procCutTurnInit(1, field_0x3198); - } else if (frameCtrl->getFrame() > daAlinkHIO_cutLargeJump_c0::m.mLandAnm.mCheckFrame) { + } else if (frameCtrl->getFrame() > daAlinkHIO_cutLargeJump_c0::m.mLandAnm.mCancelFrame) { checkNextAction(1); } else if (frameCtrl->getFrame() < daAlinkHIO_cutLargeJump_c0::m.mLandAttackEndFrame) { onResetFlg0(RFLG0_UNK_2); diff --git a/src/d/actor/d_a_alink_damage.inc b/src/d/actor/d_a_alink_damage.inc index 2ff72f0f562..fa0d6280b09 100644 --- a/src/d/actor/d_a_alink_damage.inc +++ b/src/d/actor/d_a_alink_damage.inc @@ -852,16 +852,16 @@ int daAlink_c::procDamageInit(dCcD_GObjInf* param_0, int param_1) { int direction = getDirectionFromAngle(cM_atan2s(-sp88.x, -sp88.z)); if (direction == DIR_FORWARD) { setSingleAnimeParam(ANM_DMG_SMALL_A, &daAlinkHIO_damNormal_c0::m.field_0x0); - field_0x3478 = daAlinkHIO_damNormal_c0::m.field_0x0.mCheckFrame; + field_0x3478 = daAlinkHIO_damNormal_c0::m.field_0x0.mCancelFrame; } else if (direction == DIR_BACKWARD) { setSingleAnimeParam(ANM_DMG_SMALL_B, &daAlinkHIO_damNormal_c0::m.field_0x14); - field_0x3478 = daAlinkHIO_damNormal_c0::m.field_0x14.mCheckFrame; + field_0x3478 = daAlinkHIO_damNormal_c0::m.field_0x14.mCancelFrame; } else if (direction == DIR_LEFT) { setSingleAnimeParam(ANM_DMG_SMALL_LEFT, &daAlinkHIO_damNormal_c0::m.field_0x28); - field_0x3478 = daAlinkHIO_damNormal_c0::m.field_0x28.mCheckFrame; + field_0x3478 = daAlinkHIO_damNormal_c0::m.field_0x28.mCancelFrame; } else { setSingleAnimeParam(ANM_DMG_SMALL_RIGHT, &daAlinkHIO_damNormal_c0::m.field_0x3C); - field_0x3478 = daAlinkHIO_damNormal_c0::m.field_0x3C.mCheckFrame; + field_0x3478 = daAlinkHIO_damNormal_c0::m.field_0x3C.mCancelFrame; } current.angle.y = var_r29->atan2sX_Z(); @@ -1271,7 +1271,7 @@ int daAlink_c::procLargeDamageUpInit(int param_0, int param_1, s16 param_2, s16 setSingleAnimeBase(ANM_DMG_FBW); field_0x32cc = 0x88; - field_0x3478 = var_r30->field_0x14.mCheckFrame; + field_0x3478 = var_r30->field_0x14.mCancelFrame; field_0x3480 = 39.0f; field_0x3484 = 1000.0f; } else if (param_0 < 0) { @@ -1289,7 +1289,7 @@ int daAlink_c::procLargeDamageUpInit(int param_0, int param_1, s16 param_2, s16 var_f31 = 1.0f; mProcVar0.field_0x3008 = -1; - field_0x3478 = var_r30->field_0x0.mCheckFrame; + field_0x3478 = var_r30->field_0x0.mCancelFrame; field_0x3480 = 39.0f; field_0x2f9d = 4; field_0x3484 = 18.0f; @@ -1304,7 +1304,7 @@ int daAlink_c::procLargeDamageUpInit(int param_0, int param_1, s16 param_2, s16 var_r28 = ANM_DMG_LARGE_LAND; var_f29 = 9.0f; var_r27 = -1; - field_0x3478 = var_r30->field_0x14.mCheckFrame; + field_0x3478 = var_r30->field_0x14.mCancelFrame; if (param_0 == -5 && mDemo.getParam1() > 0) { mProcVar0.field_0x3008 = mDemo.getParam1(); @@ -1333,26 +1333,26 @@ int daAlink_c::procLargeDamageUpInit(int param_0, int param_1, s16 param_2, s16 if (param_0 == 0x84) { setSingleAnimeParam(ANM_DMG_LARGE_LAND, &var_r30->field_0x14); - field_0x3478 = var_r30->field_0x14.mCheckFrame; + field_0x3478 = var_r30->field_0x14.mCancelFrame; mProcVar1.field_0x300a = 1; field_0x3480 = 39.0f; field_0x32cc = 0x88; field_0x3484 = 9.0f; } else if (param_0 == 0x85) { setSingleAnimeParam(ANM_DMG_AIR_LEFT_LAND, &var_r30->field_0x28); - field_0x3478 = var_r30->field_0x28.mCheckFrame; + field_0x3478 = var_r30->field_0x28.mCancelFrame; field_0x3480 = 29.0f; field_0x32cc = 0x89; field_0x3484 = 6.0f; } else if (param_0 == 0x86) { setSingleAnimeParam(ANM_DMG_AIR_RIGHT_LAND, &var_r30->field_0x3C); - field_0x3478 = var_r30->field_0x3C.mCheckFrame; + field_0x3478 = var_r30->field_0x3C.mCancelFrame; field_0x3480 = 29.0f; field_0x32cc = 0x8A; field_0x3484 = 6.0f; } else { setSingleAnimeParam(ANM_DMG_AIR_LAND, &var_r30->field_0x0); - field_0x3478 = var_r30->field_0x0.mCheckFrame; + field_0x3478 = var_r30->field_0x0.mCancelFrame; field_0x3480 = 39.0f; field_0x32cc = 0x87; field_0x3484 = 18.0f; @@ -1547,10 +1547,10 @@ int daAlink_c::procCoPolyDamageInit() { if (checkWolf()) { setSingleAnimeWolfParam(WANM_DMG_SMALL, &daAlinkHIO_wlDamage_c0::m.field_0x14); voiceStart(Z2SE_WL_V_DAMAGE); - field_0x3478 = daAlinkHIO_wlDamage_c0::m.field_0x14.mCheckFrame; + field_0x3478 = daAlinkHIO_wlDamage_c0::m.field_0x14.mCancelFrame; } else { setSingleAnimeParam(ANM_DMG, &daAlinkHIO_damage_c0::m.mFloorDmgAnm); - field_0x3478 = daAlinkHIO_damage_c0::m.mFloorDmgAnm.mCheckFrame; + field_0x3478 = daAlinkHIO_damage_c0::m.mFloorDmgAnm.mCancelFrame; } mNormalSpeed = 0.0f; @@ -1627,7 +1627,7 @@ int daAlink_c::procLandDamage() { if (field_0x3198 != 0) { if (frameCtrl->checkAnmEnd()) { checkNextAction(0); - } else if (frameCtrl->getFrame() > daAlinkHIO_damFall_c0::m.mStandAnm.mCheckFrame) { + } else if (frameCtrl->getFrame() > daAlinkHIO_damFall_c0::m.mStandAnm.mCancelFrame) { onModeFlg(4); checkNextAction(1); } @@ -1786,7 +1786,7 @@ int daAlink_c::procStEscape() { if (frameCtrl->checkAnmEnd()) { checkNextAction(0); - } else if (frameCtrl->getFrame() > daAlinkHIO_damCaught_c0::m.field_0x0.mCheckFrame) { + } else if (frameCtrl->getFrame() > daAlinkHIO_damCaught_c0::m.field_0x0.mCancelFrame) { onModeFlg(4); checkNextAction(1); } diff --git a/src/d/actor/d_a_alink_grab.inc b/src/d/actor/d_a_alink_grab.inc index e74f1ae9ded..1d0db5abd5f 100644 --- a/src/d/actor/d_a_alink_grab.inc +++ b/src/d/actor/d_a_alink_grab.inc @@ -780,7 +780,7 @@ int daAlink_c::procGrabReady() { if (checkAnmEnd(&mUnderFrameCtrl[0])) { if (field_0x3198 != 0) { - setSingleAnime(ANM_PICK_UP_LARGE_START, daAlinkHIO_grab_c0::m.field_0x78.mSpeed, daAlinkHIO_grab_c0::m.field_0x78.mStartFrame, daAlinkHIO_grab_c0::m.field_0x78.mCheckFrame, daAlinkHIO_grab_c0::m.field_0x78.mInterpolation); + setSingleAnime(ANM_PICK_UP_LARGE_START, daAlinkHIO_grab_c0::m.field_0x78.mSpeed, daAlinkHIO_grab_c0::m.field_0x78.mStartFrame, daAlinkHIO_grab_c0::m.field_0x78.mCancelFrame, daAlinkHIO_grab_c0::m.field_0x78.mInterpolation); field_0x3198 = 0; } else { procGrabUpInit(); @@ -833,7 +833,7 @@ int daAlink_c::procGrabUp() { return checkNextAction(0); } - if (checkAnmEnd(temp_r29) || (checkInputOnR() && (temp_r29->getFrame() > daAlinkHIO_grab_c0::m.field_0x14.mCheckFrame))) { + if (checkAnmEnd(temp_r29) || (checkInputOnR() && (temp_r29->getFrame() > daAlinkHIO_grab_c0::m.field_0x14.mCancelFrame))) { onResetFlg0(RFLG0_GRAB_UP_END); if (fopAcM_CheckCarryType(temp_r3, fopAcM_CARRY(fopAcM_CARRY_UNK_40 | fopAcM_CARRY_HEAVY | fopAcM_CARRY_TYPE_1))) { @@ -895,7 +895,7 @@ int daAlink_c::procGrabThrowInit(int param_0) { if (checkGrabHeavyActor()) { setSingleAnimeParam(ANM_THROW_HEAVY, &daAlinkHIO_grab_c0::m.field_0xC8); field_0x343c = 14.0f; - field_0x347c = daAlinkHIO_grab_c0::m.field_0xC8.mCheckFrame; + field_0x347c = daAlinkHIO_grab_c0::m.field_0xC8.mCancelFrame; mProcVar2.field_0x300c = 2; } else if (checkGrabSideActor()) { f32 var_f31; @@ -908,12 +908,12 @@ int daAlink_c::procGrabThrowInit(int param_0) { setSingleAnimeBaseSpeed(ANM_ATN_WAIT_RIGHT, var_f31, daAlinkHIO_basic_c0::m.mAnmBlendFactor); setUpperAnimeParam(0x51, UPPER_0, &daAlinkHIO_grab_c0::m.field_0xB4); field_0x343c = 4.0f; - field_0x347c = daAlinkHIO_grab_c0::m.field_0xB4.mCheckFrame; + field_0x347c = daAlinkHIO_grab_c0::m.field_0xB4.mCancelFrame; mProcVar2.field_0x300c = 1; } else { setSingleAnimeParam(ANM_THROW, &daAlinkHIO_grab_c0::m.field_0x3C); field_0x343c = 5.0f; - field_0x347c = daAlinkHIO_grab_c0::m.field_0x3C.mCheckFrame; + field_0x347c = daAlinkHIO_grab_c0::m.field_0x3C.mCancelFrame; mProcVar2.field_0x300c = 0; } @@ -1143,7 +1143,7 @@ int daAlink_c::procGrabRebound() { setWaterInAnmRate(temp_r30, daAlinkHIO_grab_c0::m.field_0x64.mSpeed); field_0x3198 = 0; } - } else if (checkAnmEnd(temp_r30) || (checkInputOnR() && (temp_r30->getFrame() > daAlinkHIO_grab_c0::m.field_0x64.mCheckFrame))) { + } else if (checkAnmEnd(temp_r30) || (checkInputOnR() && (temp_r30->getFrame() > daAlinkHIO_grab_c0::m.field_0x64.mCancelFrame))) { initGrabNextMode(); } @@ -1156,13 +1156,13 @@ int daAlink_c::procGrabStandInit() { if (checkUnderMove0BckNoArc(ANM_CARRY)) { setSingleAnime(ANM_CARRY, daAlinkHIO_grab_c0::m.field_0xA0.mSpeed, daAlinkHIO_grab_c0::m.field_0xA0.mStartFrame, (9.0f + daAlinkHIO_grab_c0::m.field_0xA0.mSpeed), 0.0f); - field_0x3478 = daAlinkHIO_grab_c0::m.field_0xA0.mCheckFrame; + field_0x3478 = daAlinkHIO_grab_c0::m.field_0xA0.mCancelFrame; field_0x347c = 1.0f / (9.0f - daAlinkHIO_grab_c0::m.field_0xA0.mStartFrame); mProcVar3.field_0x300e = 1; setCarryArmAngle(1.0f, 0.0f); } else { setSingleAnimeParam(ANM_GRAB_UP_START, &daAlinkHIO_grab_c0::m.field_0x28); - field_0x3478 = daAlinkHIO_grab_c0::m.field_0x28.mCheckFrame; + field_0x3478 = daAlinkHIO_grab_c0::m.field_0x28.mCancelFrame; mProcVar3.field_0x300e = 0; } @@ -1329,7 +1329,7 @@ int daAlink_c::procPickUp() { } } else if (checkAnmEnd(temp_r30)) { checkNextAction(0); - } else if (temp_r30->getFrame() > daAlinkHIO_pickUp_c0::m.field_0x0.mCheckFrame) { + } else if (temp_r30->getFrame() > daAlinkHIO_pickUp_c0::m.field_0x0.mCancelFrame) { onModeFlg(4); checkNextAction(1); } else if (temp_r30->checkPass(9.0f)) { @@ -1388,7 +1388,7 @@ int daAlink_c::procPickPut() { if (checkAnmEnd(temp_r28)) { checkNextAction(0); - } else if (temp_r28->getFrame() < daAlinkHIO_pickUp_c0::m.field_0x14.mCheckFrame) { + } else if (temp_r28->getFrame() < daAlinkHIO_pickUp_c0::m.field_0x14.mCancelFrame) { onModeFlg(4); checkNextAction(1); } else if (temp_r28->checkPass(9.0f)) { @@ -1513,7 +1513,7 @@ int daAlink_c::procFmChainUp() { setGrabStatus(0x96, 2); setShapeAngleToAtnActor(0); - if (checkAnmEnd(temp_r29) || (checkInputOnR() && temp_r29->getFrame() > daAlinkHIO_fmChain_c0::m.field_0x0.mCheckFrame)) { + if (checkAnmEnd(temp_r29) || (checkInputOnR() && temp_r29->getFrame() > daAlinkHIO_fmChain_c0::m.field_0x0.mCancelFrame)) { u8 temp_r27 = field_0x2fa3; fopAc_ac_c* temp_r28 = field_0x2844.getActor(); diff --git a/src/d/actor/d_a_alink_guard.inc b/src/d/actor/d_a_alink_guard.inc index c549fd068be..4f3c6f9a013 100644 --- a/src/d/actor/d_a_alink_guard.inc +++ b/src/d/actor/d_a_alink_guard.inc @@ -412,7 +412,7 @@ int daAlink_c::procGuardAttackInit() { field_0x3484 = 1000.0f; field_0x3488 = 1000.0f; } else { - field_0x3484 = temp_r30->mAttackAnm.mCheckFrame; + field_0x3484 = temp_r30->mAttackAnm.mCancelFrame; field_0x3488 = temp_r30->mSlashCheckFrame; } @@ -537,7 +537,7 @@ int daAlink_c::procGuardBreak() { onEndResetFlg1(ERFLG1_UNK_20); } checkNextAction(0); - } else if (temp_r30->getFrame() > daAlinkHIO_guard_c0::m.mGuardBreakAnm.mCheckFrame) { + } else if (temp_r30->getFrame() > daAlinkHIO_guard_c0::m.mGuardBreakAnm.mCancelFrame) { if (!checkGuardActionChange()) { onEndResetFlg1(ERFLG1_UNK_20); } @@ -660,7 +660,7 @@ int daAlink_c::procTurnMove() { procCutFinishJumpUpInit(); dComIfGp_setPlayerStatus0(0, 4); } else { - if (temp_r30->getFrame() > daAlinkHIO_turnMove_c0::m.mTurnAnm.mCheckFrame) { + if (temp_r30->getFrame() > daAlinkHIO_turnMove_c0::m.mTurnAnm.mCancelFrame) { onModeFlg(4); if (checkNextAction(1)) { diff --git a/src/d/actor/d_a_alink_hang.inc b/src/d/actor/d_a_alink_hang.inc index 1483d4cf50b..baccdc83316 100644 --- a/src/d/actor/d_a_alink_hang.inc +++ b/src/d/actor/d_a_alink_hang.inc @@ -291,11 +291,11 @@ int daAlink_c::procHangStartInit() { if (checkHangFootWall()) { if (!hang_ready && cM_rnd() < 0.7f) { setSingleAnimeParam(ANM_CLIMB_HANG_MISS, &daAlinkHIO_ladder_c0::m.field_0x14); - field_0x3478 = daAlinkHIO_ladder_c0::m.field_0x14.mCheckFrame; + field_0x3478 = daAlinkHIO_ladder_c0::m.field_0x14.mCancelFrame; voiceStart(Z2SE_AL_V_FOOT_MISS); } else { setSingleAnimeParam(ANM_CLIMB_HANG, &daAlinkHIO_ladder_c0::m.field_0x0); - field_0x3478 = daAlinkHIO_ladder_c0::m.field_0x0.mCheckFrame; + field_0x3478 = daAlinkHIO_ladder_c0::m.field_0x0.mCancelFrame; voiceStart(Z2SE_AL_V_JUMP_HANG); } @@ -303,7 +303,7 @@ int daAlink_c::procHangStartInit() { field_0x2f93 = 0xFE; } else { setSingleAnimeParam(ANM_HANG_READY, &daAlinkHIO_wallCatch_c0::m.mGrabAAnm); - field_0x3478 = daAlinkHIO_wallCatch_c0::m.mGrabAAnm.mCheckFrame; + field_0x3478 = daAlinkHIO_wallCatch_c0::m.mGrabAAnm.mCancelFrame; voiceStart(Z2SE_AL_V_JUMP_HANG); } @@ -417,7 +417,7 @@ int daAlink_c::procHangFallStart() { BOOL bvar; if (checkAnmEnd(frame_ctrl) || - frame_ctrl->getFrame() > daAlinkHIO_wallFall_c0::m.mOneHandGrabAnm.mCheckFrame) + frame_ctrl->getFrame() > daAlinkHIO_wallFall_c0::m.mOneHandGrabAnm.mCancelFrame) { bvar = true; } else { @@ -467,7 +467,7 @@ int daAlink_c::procHangUp() { } return 1; } else if (checkAnmEnd(frame_ctrl) || - frame_ctrl->getFrame() > daAlinkHIO_wallFall_c0::m.mTwoHandGrabAnm.mCheckFrame) + frame_ctrl->getFrame() > daAlinkHIO_wallFall_c0::m.mTwoHandGrabAnm.mCancelFrame) { if (field_0x3198 == 0) { procHangClimbInit(daAlinkHIO_wallCatch_c0::m.mClimbAnm.mStartFrame); @@ -752,7 +752,7 @@ int daAlink_c::procHangClimb() { if (checkAnmEnd(frameCtrl)) { checkNextAction(0); - } else if (frameCtrl->getFrame() > daAlinkHIO_wallCatch_c0::m.mClimbAnm.mCheckFrame) { + } else if (frameCtrl->getFrame() > daAlinkHIO_wallCatch_c0::m.mClimbAnm.mCancelFrame) { onModeFlg(4); checkNextAction(1); } @@ -1134,7 +1134,7 @@ int daAlink_c::procBossBodyHang() { } field_0x3198 = 0x16C; - field_0x3478 = daAlinkHIO_cut_c0::m.mStabAnm.mCheckFrame; + field_0x3478 = daAlinkHIO_cut_c0::m.mStabAnm.mCancelFrame; field_0x347c = 10.0f; mProcVar4.field_0x3010 = 0; mProcVar1.field_0x300a = 1; @@ -2145,11 +2145,11 @@ int daAlink_c::procClimbUpStartInit(int param_0) { if (param_0 || var_r29 || cM_rnd() < 0.3f) { setSingleAnimeParam(ANM_CLIMB_HANG, &daAlinkHIO_ladder_c0::m.field_0x0); - field_0x3478 = daAlinkHIO_ladder_c0::m.field_0x0.mCheckFrame; + field_0x3478 = daAlinkHIO_ladder_c0::m.field_0x0.mCancelFrame; voiceStart(Z2SE_AL_V_JUMP_HANG); } else { setSingleAnimeParam(ANM_CLIMB_HANG_MISS, &daAlinkHIO_ladder_c0::m.field_0x14); - field_0x3478 = daAlinkHIO_ladder_c0::m.field_0x14.mCheckFrame; + field_0x3478 = daAlinkHIO_ladder_c0::m.field_0x14.mCancelFrame; voiceStart(Z2SE_AL_V_FOOT_MISS); } @@ -2226,11 +2226,11 @@ int daAlink_c::procClimbDownStartInit(s16 param_0) { if (cM_rnd() < 0.7f) { setSingleAnimeParam(ANM_CLIMB_HANG, &daAlinkHIO_ladder_c0::m.field_0x0); - field_0x3478 = daAlinkHIO_ladder_c0::m.field_0x0.mCheckFrame; + field_0x3478 = daAlinkHIO_ladder_c0::m.field_0x0.mCancelFrame; mProcVar0.field_0x3008 = 0; } else { setSingleAnimeParam(ANM_CLIMB_HANG_MISS, &daAlinkHIO_ladder_c0::m.field_0x14); - field_0x3478 = daAlinkHIO_ladder_c0::m.field_0x14.mCheckFrame; + field_0x3478 = daAlinkHIO_ladder_c0::m.field_0x14.mCancelFrame; mProcVar0.field_0x3008 = 1; voiceStart(Z2SE_AL_V_FOOT_MISS); } @@ -2758,7 +2758,7 @@ int daAlink_c::procRoofHangStart() { if (mProcVar0.field_0x3008 == 0 && (checkAnmEnd(frame_ctrl) || (checkInputOnR() && - frame_ctrl->getFrame() > daAlinkHIO_roofHang_c0::m.field_0x0.mCheckFrame))) + frame_ctrl->getFrame() > daAlinkHIO_roofHang_c0::m.field_0x0.mCancelFrame))) { checkNextActionRoofHang(); } else if (checkAnmEnd(frame_ctrl)) { diff --git a/src/d/actor/d_a_alink_hook.inc b/src/d/actor/d_a_alink_hook.inc index 7e1600e9bfc..550f3a0ebb9 100644 --- a/src/d/actor/d_a_alink_hook.inc +++ b/src/d/actor/d_a_alink_hook.inc @@ -1813,7 +1813,7 @@ int daAlink_c::procHookshotRoofWait() { daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl; if (frameCtrl_p->checkAnmEnd() || ((checkInputOnR() || mProcVar5.field_0x3012 != 0 || checkHookshotRoofLv7Boss()) && - frameCtrl_p->getFrame() > daAlinkHIO_hookshot_c0::m.mRoofHangAnm.mCheckFrame)) + frameCtrl_p->getFrame() > daAlinkHIO_hookshot_c0::m.mRoofHangAnm.mCancelFrame)) { setHookshotRoofWaitAnime(); mProcVar2.field_0x300c = 1; @@ -2090,7 +2090,7 @@ int daAlink_c::procHookshotWallWait() { daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl; if (frameCtrl_p->checkAnmEnd() || ((checkInputOnR() || mProcVar5.field_0x3012 != 0) && - frameCtrl_p->getFrame() > daAlinkHIO_hookshot_c0::m.mWallHangAnm.mCheckFrame)) + frameCtrl_p->getFrame() > daAlinkHIO_hookshot_c0::m.mWallHangAnm.mCancelFrame)) { setHookshotWallWaitAnime(); mProcVar2.field_0x300c = 1; diff --git a/src/d/actor/d_a_alink_horse.inc b/src/d/actor/d_a_alink_horse.inc index 908b6c0d761..48687f7394d 100644 --- a/src/d/actor/d_a_alink_horse.inc +++ b/src/d/actor/d_a_alink_horse.inc @@ -2001,7 +2001,7 @@ int daAlink_c::procHorseCutInit() { field_0x3478 = var_r29->mAttackStartFrame; field_0x347c = var_r29->mAttackEndFrame; field_0x3480 = var_r29->mAfterCutMorf; - field_0x3484 = var_r29->mCutAnm.mCheckFrame; + field_0x3484 = var_r29->mCutAnm.mCancelFrame; if (checkBoarSingleBattle()) { setSwordAtParam(dCcG_At_Spl_UNK_0, 1, 1, 2, daAlinkHIO_cut_c0::m.mSwordLengthHorsebackFight, daAlinkHIO_cut_c0::m.mSwordRadiusHorsebackFight); @@ -2167,7 +2167,7 @@ int daAlink_c::procHorseCutTurn() { procHorseWaitInit(); field_0x2060->initOldFrameMorf(4.0f, 0, 0x23); } else { - if (temp_r30->getFrame() > daAlinkHIO_hoCutCharge_c0::m.field_0x28.mCheckFrame) { + if (temp_r30->getFrame() > daAlinkHIO_hoCutCharge_c0::m.field_0x28.mCancelFrame) { if (orderTalk(1)) { return 1; } diff --git a/src/d/actor/d_a_alink_hvyboots.inc b/src/d/actor/d_a_alink_hvyboots.inc index 4d50830a3a7..625f9897307 100644 --- a/src/d/actor/d_a_alink_hvyboots.inc +++ b/src/d/actor/d_a_alink_hvyboots.inc @@ -303,7 +303,7 @@ int daAlink_c::procBootsEquip() { } offModeFlg(2); - } else if (frameCtrl_p->getFrame() > daAlinkHIO_magneBoots_c0::m.mEquipAnm.mCheckFrame) { + } else if (frameCtrl_p->getFrame() > daAlinkHIO_magneBoots_c0::m.mEquipAnm.mCancelFrame) { onModeFlg(4); checkNextAction(1); } else if (frameCtrl_p->getFrame() >= 5.0f) { diff --git a/src/d/actor/d_a_alink_ironball.inc b/src/d/actor/d_a_alink_ironball.inc index 7551872a8ac..b27678de210 100644 --- a/src/d/actor/d_a_alink_ironball.inc +++ b/src/d/actor/d_a_alink_ironball.inc @@ -1112,7 +1112,7 @@ int daAlink_c::procIronBallReturn() { setIronBallWaitUpperAnime(1); checkNextAction(0); } - } else if (mItemVar0.field_0x3018 == 8 && frameCtrl->getFrame() > daAlinkHIO_ironBall_c0::m.mCatchAnm.mCheckFrame) { + } else if (mItemVar0.field_0x3018 == 8 && frameCtrl->getFrame() > daAlinkHIO_ironBall_c0::m.mCatchAnm.mCancelFrame) { mItemVar0.field_0x3018 = 0; setIronBallWaitUpperAnime(1); diff --git a/src/d/actor/d_a_alink_kandelaar.inc b/src/d/actor/d_a_alink_kandelaar.inc index 451f5aacc8e..c326735e1f2 100644 --- a/src/d/actor/d_a_alink_kandelaar.inc +++ b/src/d/actor/d_a_alink_kandelaar.inc @@ -398,12 +398,12 @@ int daAlink_c::procKandelaarSwingInit() { fopAcIt_Judge((fopAcIt_JudgeFunc)daAlink_searchTagKtOnFire, NULL) != NULL)) { setSingleAnimeParam(ANM_BOTTLE_SWING_DOWN, &daAlinkHIO_bottle_c0::m.mSwingDownAnm); - field_0x3478 = daAlinkHIO_bottle_c0::m.mSwingDownAnm.mCheckFrame; + field_0x3478 = daAlinkHIO_bottle_c0::m.mSwingDownAnm.mCancelFrame; field_0x347c = 5.0f; field_0x3480 = 12.0f; } else { setSingleAnimeParam(ANM_LANTERN_SWING, &daAlinkHIO_kandelaar_c0::m.mShakeAnm); - field_0x3478 = daAlinkHIO_kandelaar_c0::m.mShakeAnm.mCheckFrame; + field_0x3478 = daAlinkHIO_kandelaar_c0::m.mShakeAnm.mCancelFrame; field_0x347c = 4.0f; field_0x3480 = 11.0f; } diff --git a/src/d/actor/d_a_alink_link.inc b/src/d/actor/d_a_alink_link.inc index bc5a17b03bd..ec69ecda459 100644 --- a/src/d/actor/d_a_alink_link.inc +++ b/src/d/actor/d_a_alink_link.inc @@ -537,7 +537,7 @@ int daAlink_c::procSideStepLandInit() { if (field_0x2f98 == 1) { field_0x2f9d = 4; setSingleAnimeParam(ANM_BACK_JUMP_LAND, &daAlinkHIO_sideStep_c0::m.mBackLandAnm); - field_0x3478 = daAlinkHIO_sideStep_c0::m.mBackLandAnm.mCheckFrame; + field_0x3478 = daAlinkHIO_sideStep_c0::m.mBackLandAnm.mCancelFrame; field_0x2f98 = 2; mProcVar1.field_0x300a = 0; field_0x2fb0 = 0; @@ -554,7 +554,7 @@ int daAlink_c::procSideStepLandInit() { } setSingleAnimeParam(anm_id, &daAlinkHIO_sideStep_c0::m.mSideLandAnm); - field_0x3478 = daAlinkHIO_sideStep_c0::m.mSideLandAnm.mCheckFrame; + field_0x3478 = daAlinkHIO_sideStep_c0::m.mSideLandAnm.mCancelFrame; mProcVar1.field_0x300a = 1; field_0x2fb0 = 8; field_0x2fcc = 0; @@ -713,13 +713,13 @@ int daAlink_c::procSlideLandInit(int param_0) { if (param_0 != 0) { setSingleAnimeParam(ANM_SLIDE_FORWARD_END, &daAlinkHIO_slide_c0::m.mForwardLandAnm); - field_0x3478 = daAlinkHIO_slide_c0::m.mForwardLandAnm.mCheckFrame; + field_0x3478 = daAlinkHIO_slide_c0::m.mForwardLandAnm.mCancelFrame; field_0x3198 = 1; field_0x2f99 = 4; field_0x3588 = l_waitBaseAnime; } else { setSingleAnimeParam(ANM_SLIDE_BACKWARD_END, &daAlinkHIO_slide_c0::m.mBackwardLandAnm); - field_0x3478 = daAlinkHIO_slide_c0::m.mBackwardLandAnm.mCheckFrame; + field_0x3478 = daAlinkHIO_slide_c0::m.mBackwardLandAnm.mCancelFrame; field_0x3198 = 0; } @@ -844,7 +844,7 @@ int daAlink_c::procFrontRoll() { checkNextAction(0); } - } else if (frameCtrl_p->getFrame() > daAlinkHIO_frontRoll_c0::m.mRollAnm.mCheckFrame) { + } else if (frameCtrl_p->getFrame() > daAlinkHIO_frontRoll_c0::m.mRollAnm.mCancelFrame) { onModeFlg(4); cLib_chaseF(&mNormalSpeed, 0.0f, 2.5f); @@ -937,7 +937,7 @@ int daAlink_c::procFrontRollCrash() { if (!checkModeFlg(2)) { if (frameCtrl->checkAnmEnd()) { checkNextAction(0); - } else if (frameCtrl->getFrame() > daAlinkHIO_frontRoll_c0::m.mCrashAnm.mCheckFrame) { + } else if (frameCtrl->getFrame() > daAlinkHIO_frontRoll_c0::m.mCrashAnm.mCancelFrame) { onModeFlg(4); checkNextAction(1); } else if (frameCtrl->getFrame() >= 18.0f) { @@ -997,7 +997,7 @@ int daAlink_c::procFrontRollSuccess() { if (frameCtrl->checkAnmEnd()) { current.angle.y = shape_angle.y; checkNextAction(0); - } else if (frameCtrl->getFrame() > daAlinkHIO_frontRoll_c0::m.mCrashHitAnm.mCheckFrame) { + } else if (frameCtrl->getFrame() > daAlinkHIO_frontRoll_c0::m.mCrashHitAnm.mCancelFrame) { onModeFlg(4); current.angle.y = shape_angle.y; checkNextAction(1); @@ -1092,10 +1092,10 @@ int daAlink_c::procSideRoll() { checkNextAction(0); } } else if (mProcVar2.field_0x300c != 0 && !checkNotJumpSinkLimit() && - frameCtrl_p->getFrame() > daAlinkHIO_turnMove_c0::m.mTurnAnm.mCheckFrame) + frameCtrl_p->getFrame() > daAlinkHIO_turnMove_c0::m.mTurnAnm.mCancelFrame) { procCutFinishJumpUpInit(); - } else if (frameCtrl_p->getFrame() > daAlinkHIO_turnMove_c0::m.mTurnAnm.mCheckFrame) { + } else if (frameCtrl_p->getFrame() > daAlinkHIO_turnMove_c0::m.mTurnAnm.mCancelFrame) { onModeFlg(4); if (!checkNextAction(1)) { cLib_chaseF(&mNormalSpeed, 0.0f, 7.5f); @@ -1246,7 +1246,7 @@ int daAlink_c::procBackJumpLand() { } checkNextAction(0); } - } else if (frameCtrl->getFrame() > daAlinkHIO_backJump_c0::m.mLandAnm.mCheckFrame) { + } else if (frameCtrl->getFrame() > daAlinkHIO_backJump_c0::m.mLandAnm.mCancelFrame) { if (mEquipItem == 0x103 && (field_0x3198 != 2 || checkCutTurnInput())) { return procCutTurnInit(1, field_0x3198); } @@ -1824,7 +1824,7 @@ int daAlink_c::procLand() { if (frameCtrl->checkAnmEnd()) { checkNextAction(0); - } else if (frameCtrl->getFrame() > daAlinkHIO_autoJump_c0::m.mLandAnm.mCheckFrame) { + } else if (frameCtrl->getFrame() > daAlinkHIO_autoJump_c0::m.mLandAnm.mCancelFrame) { checkNextAction(1); } else if (frameCtrl->checkPass(4.0f)) { int var_r4; @@ -1958,7 +1958,7 @@ int daAlink_c::procStepMove() { return checkNextAction(0); } - if (frameCtrl->getFrame() > daAlinkHIO_smallJump_c0::m.mStepLandAnm.mCheckFrame) { + if (frameCtrl->getFrame() > daAlinkHIO_smallJump_c0::m.mStepLandAnm.mCancelFrame) { mNormalSpeed = field_0x3478; if (checkNextAction(1)) { @@ -2350,7 +2350,7 @@ int daAlink_c::procFloorDownRebound() { if (frameCtrl->checkAnmEnd()) { checkNextAction(0); - } else if (frameCtrl->getFrame() > daAlinkHIO_autoJump_c0::m.mLandAnm.mCheckFrame) { + } else if (frameCtrl->getFrame() > daAlinkHIO_autoJump_c0::m.mLandAnm.mCancelFrame) { checkNextAction(1); } diff --git a/src/d/actor/d_a_alink_swim.inc b/src/d/actor/d_a_alink_swim.inc index b383a218708..4daa835e47c 100644 --- a/src/d/actor/d_a_alink_swim.inc +++ b/src/d/actor/d_a_alink_swim.inc @@ -970,7 +970,7 @@ int daAlink_c::procSwimUp() { } } else if (checkAnmEnd(frame_ctrl)) { procSwimWaitInit(0); - } else if (frame_ctrl->getFrame() > daAlinkHIO_swim_c0::m.mResurfaceAnm.mCheckFrame && + } else if (frame_ctrl->getFrame() > daAlinkHIO_swim_c0::m.mResurfaceAnm.mCancelFrame && checkInputOnR()) { procSwimMoveInit(); @@ -1468,21 +1468,21 @@ int daAlink_c::procSwimDamageInit(dCcD_GObjInf* param_0) { int dir = getDirectionFromAngle(cM_atan2s(-sp24.x, -sp24.z)); if (bvar4) { setSingleAnimeParam(ANM_SWIM_DMG_FREEZE, &daAlinkHIO_damSwim_c0::m.field_0x64); - field_0x3478 = daAlinkHIO_damSwim_c0::m.field_0x64.mCheckFrame; + field_0x3478 = daAlinkHIO_damSwim_c0::m.field_0x64.mCancelFrame; mProcVar0.field_0x3008 = 0; mProcVar1.field_0x300a = 0; } else if (dir == DIR_FORWARD) { setSingleAnimeParam(ANM_SWIM_DMG_FRONT, &daAlinkHIO_damSwim_c0::m.field_0x0); - field_0x3478 = daAlinkHIO_damSwim_c0::m.field_0x0.mCheckFrame; + field_0x3478 = daAlinkHIO_damSwim_c0::m.field_0x0.mCancelFrame; } else if (dir == DIR_BACKWARD) { setSingleAnimeParam(ANM_SWIM_DMG_BACK, &daAlinkHIO_damSwim_c0::m.field_0x14); - field_0x3478 = daAlinkHIO_damSwim_c0::m.field_0x14.mCheckFrame; + field_0x3478 = daAlinkHIO_damSwim_c0::m.field_0x14.mCancelFrame; } else if (dir == DIR_LEFT) { setSingleAnimeParam(ANM_SWIM_DMG_LEFT, &daAlinkHIO_damSwim_c0::m.field_0x28); - field_0x3478 = daAlinkHIO_damSwim_c0::m.field_0x28.mCheckFrame; + field_0x3478 = daAlinkHIO_damSwim_c0::m.field_0x28.mCancelFrame; } else { setSingleAnimeParam(ANM_SWIM_DMG_RIGHT, &daAlinkHIO_damSwim_c0::m.field_0x3C); - field_0x3478 = daAlinkHIO_damSwim_c0::m.field_0x3C.mCheckFrame; + field_0x3478 = daAlinkHIO_damSwim_c0::m.field_0x3C.mCancelFrame; } mNormalSpeed = 0.0f; diff --git a/src/d/actor/d_a_alink_wolf.inc b/src/d/actor/d_a_alink_wolf.inc index dd45d17cadc..96af3f657cd 100644 --- a/src/d/actor/d_a_alink_wolf.inc +++ b/src/d/actor/d_a_alink_wolf.inc @@ -2642,7 +2642,7 @@ int daAlink_c::procWolfDash() { } return checkNextActionWolf(0); - } else if (frameCtrl_p->getFrame() > daAlinkHIO_wlMove_c0::m.field_0x28.mCheckFrame) { + } else if (frameCtrl_p->getFrame() > daAlinkHIO_wlMove_c0::m.field_0x28.mCancelFrame) { if (mProcVar3.field_0x300e != 0) { return checkWolfAttackAction(); } @@ -2714,7 +2714,7 @@ int daAlink_c::procWolfDashReverse() { if (!checkModeFlg(0x2)) { if (checkAnmEnd(frameCtrl_p)) { checkNextActionWolf(0); - } else if (frameCtrl_p->getFrame() > daAlinkHIO_wlMove_c0::m.field_0x3C.mCheckFrame) { + } else if (frameCtrl_p->getFrame() > daAlinkHIO_wlMove_c0::m.field_0x3C.mCancelFrame) { checkNextActionWolf(1); } } else if (mProcVar2.field_0x300c != 0) { @@ -2939,14 +2939,14 @@ int daAlink_c::procWolfSideStepLandInit(s16 param_0) { if (field_0x2f98 == 1) { setSingleAnimeWolfParam(WANM_BACK_JUMP_END, &daAlinkHIO_wlSideStep_c0::m.field_0x3C); - field_0x3478 = daAlinkHIO_wlSideStep_c0::m.field_0x3C.mCheckFrame; + field_0x3478 = daAlinkHIO_wlSideStep_c0::m.field_0x3C.mCancelFrame; field_0x2fcc = 10; } else { field_0x2fcc = 0; setSingleAnimeWolfParam(field_0x2f98 == 2 ? WANM_SIDE_JUMP_LEFT_END : WANM_SIDE_JUMP_RIGHT_END, &daAlinkHIO_wlSideStep_c0::m.field_0x14); - field_0x3478 = daAlinkHIO_wlSideStep_c0::m.field_0x14.mCheckFrame; + field_0x3478 = daAlinkHIO_wlSideStep_c0::m.field_0x14.mCancelFrame; } mProcVar5.field_0x3012 = param_0; @@ -3088,7 +3088,7 @@ int daAlink_c::procWolfBackJumpLand() { } else { checkNextActionWolf(0); } - } else if (frameCtrl->getFrame() > daAlinkHIO_wlBackJump_c0::m.field_0x14.mCheckFrame) { + } else if (frameCtrl->getFrame() > daAlinkHIO_wlBackJump_c0::m.field_0x14.mCancelFrame) { checkNextActionWolf(1); } @@ -3106,11 +3106,11 @@ int daAlink_c::procWolfHowlInit(int param_0) { if (param_0 != 0) { setSingleAnimeWolfParam(WANM_HOWL_SIT, &daAlinkHIO_wlHowl_c0::m.field_0x14); onModeFlg(0x800000); - field_0x3478 = daAlinkHIO_wlHowl_c0::m.field_0x14.mCheckFrame; + field_0x3478 = daAlinkHIO_wlHowl_c0::m.field_0x14.mCancelFrame; mProcVar3.field_0x300e = 1; } else { setSingleAnimeWolfParam(WANM_HOWL, &daAlinkHIO_wlHowl_c0::m.field_0x0); - field_0x3478 = daAlinkHIO_wlHowl_c0::m.field_0x0.mCheckFrame; + field_0x3478 = daAlinkHIO_wlHowl_c0::m.field_0x0.mCancelFrame; mProcVar3.field_0x300e = 0; } @@ -3361,7 +3361,7 @@ int daAlink_c::procWolfLandInit() { field_0x2f99 = 12; setSingleAnimeWolfParam(WANM_JUMP_ATTACK_END, &daAlinkHIO_wlAutoJump_c0::m.field_0x14); - field_0x3478 = daAlinkHIO_wlAutoJump_c0::m.field_0x14.mCheckFrame; + field_0x3478 = daAlinkHIO_wlAutoJump_c0::m.field_0x14.mCancelFrame; mProcVar2.field_0x300c = 1; field_0x2f9d = 4; @@ -3459,7 +3459,7 @@ int daAlink_c::procWolfStepMove() { return checkNextActionWolf(0); } - if (frameCtrl_p->getFrame() > daAlinkHIO_wlWallHang_c0::m.field_0x64.mCheckFrame) { + if (frameCtrl_p->getFrame() > daAlinkHIO_wlWallHang_c0::m.field_0x64.mCancelFrame) { mNormalSpeed = field_0x3478; if (checkNextActionWolf(1)) { @@ -3624,7 +3624,7 @@ int daAlink_c::procWolfSlipTurnLand() { if (frameCtrl->checkAnmEnd()) { checkNextActionWolf(0); - } else if (frameCtrl->getFrame() > daAlinkHIO_wlMove_c0::m.field_0x14.mCheckFrame) { + } else if (frameCtrl->getFrame() > daAlinkHIO_wlMove_c0::m.field_0x14.mCancelFrame) { checkNextActionWolf(1); } @@ -3750,7 +3750,7 @@ int daAlink_c::procWolfSlideLand() { if (frameCtrl->checkAnmEnd()) { current.angle.y = shape_angle.y; checkNextActionWolf(0); - } else if (frameCtrl->getFrame() > daAlinkHIO_wlSlide_c0::m.field_0x28.mCheckFrame) { + } else if (frameCtrl->getFrame() > daAlinkHIO_wlSlide_c0::m.field_0x28.mCancelFrame) { s16 old_angle = current.angle.y; current.angle.y = shape_angle.y; @@ -3846,7 +3846,7 @@ int daAlink_c::procWolfSlopeStart() { if (frameCtrl->checkAnmEnd()) { checkNextActionWolf(0); - } else if (frameCtrl->getFrame() > daAlinkHIO_wlSlide_c0::m.field_0x3C.mCheckFrame) { + } else if (frameCtrl->getFrame() > daAlinkHIO_wlSlide_c0::m.field_0x3C.mCancelFrame) { if (!checkNextActionWolf(1)) { field_0x2f99 = 5; } @@ -5043,7 +5043,7 @@ int daAlink_c::procWolfRopeSubjectivity() { int daAlink_c::getWolfTagJumpTime() const { int time; if (mProcID == PROC_WOLF_TAG_JUMP) { - time = mProcVar0.field_0x3008 + (int)((daAlinkHIO_wlPoint_c0::m.field_0x28.mCheckFrame - + time = mProcVar0.field_0x3008 + (int)((daAlinkHIO_wlPoint_c0::m.field_0x28.mCancelFrame - daAlinkHIO_wlPoint_c0::m.field_0x28.mStartFrame) / daAlinkHIO_wlPoint_c0::m.field_0x28.mSpeed); } else { @@ -5182,7 +5182,7 @@ int daAlink_c::procWolfTagJump() { mProcVar5.field_0x3012 = 1; } - if (mProcVar5.field_0x3012 && (checkModeFlg(0x100) || checkAnmEnd(temp_r28) || temp_r28->getFrame() > daAlinkHIO_wlPoint_c0::m.field_0x28.mCheckFrame)) { + if (mProcVar5.field_0x3012 && (checkModeFlg(0x100) || checkAnmEnd(temp_r28) || temp_r28->getFrame() > daAlinkHIO_wlPoint_c0::m.field_0x28.mCancelFrame)) { procWolfTagJumpInit(temp_r29); } else if (checkAnmEnd(temp_r28)) { onModeFlg(0x100); @@ -5288,7 +5288,7 @@ int daAlink_c::procWolfTagJumpLand() { onResetFlg0(RFLG0_UNK_20000); field_0x3738 = *wljump_p->getLockPos(); - if (frameCtrl_p->getFrame() > daAlinkHIO_wlPoint_c0::m.field_0x3C.mCheckFrame) { + if (frameCtrl_p->getFrame() > daAlinkHIO_wlPoint_c0::m.field_0x3C.mCancelFrame) { setDoStatus(0x93); if (doTrigger()) { @@ -5304,7 +5304,7 @@ int daAlink_c::procWolfTagJumpLand() { { if (checkAnmEnd(frameCtrl_p)) { checkNextActionWolf(0); - } else if (!(frameCtrl_p->getFrame() > daAlinkHIO_wlPoint_c0::m.field_0x3C.mCheckFrame) || + } else if (!(frameCtrl_p->getFrame() > daAlinkHIO_wlPoint_c0::m.field_0x3C.mCancelFrame) || !checkNextActionWolf(1)) { field_0x2f9d = 0x78; @@ -5612,7 +5612,7 @@ int daAlink_c::procWolfHangWallCatch() { onNoResetFlg1(FLG1_UNK_20); } } else if (mProcVar3.field_0x300e != 0 && - frameCtrl_p->getFrame() > daAlinkHIO_wlWallHang_c0::m.field_0x14.mCheckFrame && + frameCtrl_p->getFrame() > daAlinkHIO_wlWallHang_c0::m.field_0x14.mCancelFrame && checkNextActionWolf(1)) { onNoResetFlg1(FLG1_UNK_20); @@ -5736,16 +5736,16 @@ int daAlink_c::procWolfDamageInit(dCcD_GObjInf* param_0) { int temp_r3 = getDirectionFromAngle(cM_atan2s(-sp8.x, -sp8.z)); if (temp_r3 == DIR_FORWARD) { setSingleAnimeWolfParam(WANM_DMG_FRONT, &daAlinkHIO_wlDamNormal_c0::m.field_0x0); - field_0x3478 = daAlinkHIO_wlDamNormal_c0::m.field_0x0.mCheckFrame; + field_0x3478 = daAlinkHIO_wlDamNormal_c0::m.field_0x0.mCancelFrame; } else if (temp_r3 == DIR_BACKWARD) { setSingleAnimeWolfParam(WANM_DMG_BACK, &daAlinkHIO_wlDamNormal_c0::m.field_0x14); - field_0x3478 = daAlinkHIO_wlDamNormal_c0::m.field_0x14.mCheckFrame; + field_0x3478 = daAlinkHIO_wlDamNormal_c0::m.field_0x14.mCancelFrame; } else if (temp_r3 == DIR_LEFT) { setSingleAnimeWolfParam(WANM_DMG_LEFT, &daAlinkHIO_wlDamNormal_c0::m.field_0x28); - field_0x3478 = daAlinkHIO_wlDamNormal_c0::m.field_0x28.mCheckFrame; + field_0x3478 = daAlinkHIO_wlDamNormal_c0::m.field_0x28.mCancelFrame; } else { setSingleAnimeWolfParam(WANM_DMG_RIGHT, &daAlinkHIO_wlDamNormal_c0::m.field_0x3C); - field_0x3478 = daAlinkHIO_wlDamNormal_c0::m.field_0x3C.mCheckFrame; + field_0x3478 = daAlinkHIO_wlDamNormal_c0::m.field_0x3C.mCancelFrame; } setFaceBasicTexture(FTANM_UNK_90); @@ -5865,7 +5865,7 @@ int daAlink_c::procWolfLargeDamageUpInit(int param_0, int param_1, s16 param_2, var_f29 = 16.0f; var_r27 = -1; - field_0x3478 = daAlinkHIO_wlDamLarge_c0::m.field_0x0.mCheckFrame; + field_0x3478 = daAlinkHIO_wlDamLarge_c0::m.field_0x0.mCancelFrame; if (param_0 == -4) { onNoResetFlg2(FLG2_UNK_1000); @@ -5900,26 +5900,26 @@ int daAlink_c::procWolfLargeDamageUpInit(int param_0, int param_1, s16 param_2, if (param_0 == 0x29) { setSingleAnimeWolfParam(WANM_DMG_AIR_BACK_GETUP, &var_r30->field_0x14); setFaceBasicTexture(FTANM_UNK_92); - field_0x3478 = var_r30->field_0x14.mCheckFrame; + field_0x3478 = var_r30->field_0x14.mCancelFrame; field_0x347c = 16.0f; field_0x3198 = 1; field_0x3484 = 15.0; } else if (param_0 == 0x2A) { setSingleAnimeWolfParam(WANM_DMG_AIR_LEFT_GETUP, &var_r30->field_0x28); setFaceBasicTexture(FTANM_UNK_93); - field_0x3478 = var_r30->field_0x28.mCheckFrame; + field_0x3478 = var_r30->field_0x28.mCancelFrame; field_0x347c = 11.0f; field_0x3484 = 13.0f; } else if (param_0 == 0x2B) { setSingleAnimeWolfParam(WANM_DMG_AIR_RIGHT_GETUP, &var_r30->field_0x3C); setFaceBasicTexture(FTANM_UNK_93); - field_0x3478 = var_r30->field_0x3C.mCheckFrame; + field_0x3478 = var_r30->field_0x3C.mCancelFrame; field_0x347c = 11.0f; field_0x3484 = 13.0f; } else { setSingleAnimeWolfParam(WANM_DMG_AIR_FRONT_GETUP, &var_r30->field_0x0); setFaceBasicTexture(FTANM_UNK_92); - field_0x3478 = var_r30->field_0x0.mCheckFrame; + field_0x3478 = var_r30->field_0x0.mCancelFrame; field_0x347c = 9.0f; field_0x3484 = 13.0f; } @@ -6058,7 +6058,7 @@ int daAlink_c::procWolfLandDamage() { if (field_0x3198 != 0) { if (frameCtrl->checkAnmEnd()) { checkNextActionWolf(0); - } else if (frameCtrl->getFrame() > daAlinkHIO_wlDamFall_c0::m.field_0x14.mCheckFrame) { + } else if (frameCtrl->getFrame() > daAlinkHIO_wlDamFall_c0::m.field_0x14.mCancelFrame) { checkNextActionWolf(1); } } else if (frameCtrl->checkAnmEnd()) { @@ -6112,7 +6112,7 @@ int daAlink_c::procWolfScreamWait() { if (frameCtrl->checkAnmEnd()) { checkNextActionWolf(0); - } else if (frameCtrl->getFrame() > daAlinkHIO_wlDamLarge_c0::m.field_0x0.mCheckFrame) { + } else if (frameCtrl->getFrame() > daAlinkHIO_wlDamLarge_c0::m.field_0x0.mCancelFrame) { checkNextActionWolf(1); } } else { @@ -6256,7 +6256,7 @@ int daAlink_c::procWolfLieStart() { checkNextActionWolfFromLie(); } else if (checkInputOnR() && (checkAnmEnd(frameCtrl_p) || - frameCtrl_p->getFrame() > daAlinkHIO_wlLie_c0::m.field_0x14.mCheckFrame)) + frameCtrl_p->getFrame() > daAlinkHIO_wlLie_c0::m.field_0x14.mCancelFrame)) { procWolfLieMoveInit(0); } else { @@ -6690,7 +6690,7 @@ int daAlink_c::procWolfSwimUp() { if (frameCtrl->checkAnmEnd()) { procWolfSwimWaitInit(0); } else if (checkInputOnR() && - frameCtrl->getFrame() > daAlinkHIO_wlSwim_c0::m.field_0x0.mCheckFrame) + frameCtrl->getFrame() > daAlinkHIO_wlSwim_c0::m.field_0x0.mCancelFrame) { procWolfSwimMoveInit(); } else { @@ -6880,7 +6880,7 @@ int daAlink_c::procWolfSwimEndWait() { if (checkAnmEnd(frameCtrl_p)) { checkNextActionWolf(0); - } else if (frameCtrl_p->getFrame() > daAlinkHIO_wlSwim_c0::m.field_0x14.mCheckFrame) { + } else if (frameCtrl_p->getFrame() > daAlinkHIO_wlSwim_c0::m.field_0x14.mCancelFrame) { checkNextActionWolf(1); } @@ -7625,12 +7625,12 @@ int daAlink_c::procWolfJumpAttackSlideLandInit(int param_0, int param_1, int par setSingleAnimeWolfParam(WANM_ATTACK_A_END_BACK, &daAlinkHIO_wlAtLand_c0::m.field_0x28); mProcVar2.field_0x300c = 1; field_0x3588.set(-l_wolfBaseAnime.x, l_wolfBaseAnime.y, -l_wolfBaseAnime.z); - field_0x3478 = daAlinkHIO_wlAtLand_c0::m.field_0x28.mCheckFrame; + field_0x3478 = daAlinkHIO_wlAtLand_c0::m.field_0x28.mCancelFrame; } else { setSingleAnimeWolfParam(WANM_ATTACK_A_END_FRONT, &daAlinkHIO_wlAtLand_c0::m.field_0x14); mProcVar2.field_0x300c = 0; field_0x3588 = l_wolfBaseAnime; - field_0x3478 = daAlinkHIO_wlAtLand_c0::m.field_0x14.mCheckFrame; + field_0x3478 = daAlinkHIO_wlAtLand_c0::m.field_0x14.mCancelFrame; } field_0x2f9d = 4; @@ -7730,7 +7730,7 @@ int daAlink_c::procWolfJumpAttackNormalLand() { if (frameCtrl->checkAnmEnd()) { checkNextActionWolf(0); - } else if (frameCtrl->getFrame() > daAlinkHIO_wlAtLand_c0::m.field_0x0.mCheckFrame) { + } else if (frameCtrl->getFrame() > daAlinkHIO_wlAtLand_c0::m.field_0x0.mCancelFrame) { if (mProcVar2.field_0x300c != 0) { shape_angle.y -= -0x8000; return procWolfJumpAttackInit(3); @@ -7768,7 +7768,7 @@ int daAlink_c::procWolfWaitAttackInit(int i_attackType) { if (mComboCutCount == 4) { setCylAtParam(0x80000000, dCcG_At_Spl_UNK_1, 3, 4, 3, atk_hio->field_0x34, atk_hio->field_0x38); - field_0x3478 = atk_hio->field_0x0.mCheckFrame; + field_0x3478 = atk_hio->field_0x0.mCancelFrame; mProcVar0.field_0x3008 = atk_hio->field_0x14; var_f2 = atk_hio->field_0x0.mStartFrame; } else { @@ -7932,7 +7932,7 @@ int daAlink_c::procWolfRollAttack() { if (checkAnmEnd(frameCtrl_p)) { checkNextActionWolf(0); - } else if (frameCtrl_p->getFrame() > daAlinkHIO_wlAtRoll_c0::m.field_0x0.mCheckFrame) { + } else if (frameCtrl_p->getFrame() > daAlinkHIO_wlAtRoll_c0::m.field_0x0.mCancelFrame) { checkNextActionWolf(1); } else if (mProcVar3.field_0x300e == 0 && frameCtrl_p->getFrame() >= 4.0f && frameCtrl_p->getFrame() < 13.0f) @@ -8097,7 +8097,7 @@ int daAlink_c::procWolfDownAtMissLand() { if (frameCtrl->checkAnmEnd()) { checkNextActionWolf(0); - } else if (frameCtrl->getFrame() > daAlinkHIO_wlAtDown_c0::m.field_0x64.mCheckFrame) { + } else if (frameCtrl->getFrame() > daAlinkHIO_wlAtDown_c0::m.field_0x64.mCancelFrame) { checkNextActionWolf(1); } else if (frameCtrl->getFrame() >= 3.0f && frameCtrl->getFrame() < 8.0f) { seStartMapInfoLevel(Z2SE_FN_WOLF_SLIP); @@ -8151,11 +8151,11 @@ int daAlink_c::procWolfLockAttackInit(int param_0) { } f32 var_f29 = l_eyePosDelta.abs(); - f32 var_f31 = var_f29 / daAlinkHIO_wlAtLock_c0::m.field_0x28.mCheckFrame; + f32 var_f31 = var_f29 / daAlinkHIO_wlAtLock_c0::m.field_0x28.mCancelFrame; if (var_f31 < 1.0f) var_f31 = 1.0f; - f32 var_f28 = daAlinkHIO_wlAtLock_c0::m.field_0x28.mCheckFrame / var_f29; + f32 var_f28 = daAlinkHIO_wlAtLock_c0::m.field_0x28.mCancelFrame / var_f29; mNormalSpeed = var_f28 * l_eyePosDelta.absXZ(); setSpecialGravity((l_eyePosDelta.y * -2.0f) / (var_f31 * var_f31), maxFallSpeed, 0); speed.y = -gravity * var_f31; @@ -8339,7 +8339,7 @@ int daAlink_c::procWolfAttackReverse() { if (checkAnmEnd(frameCtrl_p)) { checkNextActionWolf(0); - } else if (frameCtrl_p->getFrame() > daAlinkHIO_wlAttack_c0::m.mLandAnm.mCheckFrame) { + } else if (frameCtrl_p->getFrame() > daAlinkHIO_wlAttack_c0::m.mLandAnm.mCancelFrame) { checkNextActionWolf(1); } } else if ((mLinkAcch.ChkGroundHit() || checkEndResetFlg2(ERFLG2_UNK_100)) && checkModeFlg(2)) { @@ -8531,12 +8531,12 @@ int daAlink_c::procWolfGrabUpInit() { setSingleAnimeWolfParam(WANM_PICKUP_A, &daAlinkHIO_wlGrab_c0::m.field_0x0); var_f31 = 120.0f; field_0x3478 = 10.0f; - field_0x347c = daAlinkHIO_wlGrab_c0::m.field_0x0.mCheckFrame; + field_0x347c = daAlinkHIO_wlGrab_c0::m.field_0x0.mCancelFrame; } else { setSingleAnimeWolfParam(WANM_PICKUP_B, &daAlinkHIO_wlGrab_c0::m.field_0x28); var_f31 = 80.0f; field_0x3478 = 7.0f; - field_0x347c = daAlinkHIO_wlGrab_c0::m.field_0x28.mCheckFrame; + field_0x347c = daAlinkHIO_wlGrab_c0::m.field_0x28.mCancelFrame; } setGrabItemActor(field_0x27f4); @@ -8615,11 +8615,11 @@ int daAlink_c::procWolfGrabPutInit() { if (grab_obj) { setSingleAnimeWolfParam(WANM_PICKUP_A, &daAlinkHIO_wlGrab_c0::m.field_0x14); field_0x3478 = 10.0f; - field_0x347c = daAlinkHIO_wlGrab_c0::m.field_0x14.mCheckFrame; + field_0x347c = daAlinkHIO_wlGrab_c0::m.field_0x14.mCancelFrame; } else { setSingleAnimeWolfParam(WANM_PICKUP_B, &daAlinkHIO_wlGrab_c0::m.field_0x3C); field_0x3478 = 7.0f; - field_0x347c = daAlinkHIO_wlGrab_c0::m.field_0x3C.mCheckFrame; + field_0x347c = daAlinkHIO_wlGrab_c0::m.field_0x3C.mCancelFrame; } mNormalSpeed = 0.0f; @@ -8693,7 +8693,7 @@ int daAlink_c::procWolfGrabThrow() { if (frameCtrl->checkAnmEnd()) { checkNextActionWolf(0); - } else if (frameCtrl->getFrame() > daAlinkHIO_wlGrab_c0::m.field_0x50.mCheckFrame) { + } else if (frameCtrl->getFrame() > daAlinkHIO_wlGrab_c0::m.field_0x50.mCancelFrame) { checkNextActionWolf(1); } @@ -8867,7 +8867,7 @@ int daAlink_c::procWolfChainUp() { setWallGrabStatus(0x96, 2); if (frameCtrl->checkAnmEnd() || - (checkInputOnR() && frameCtrl->getFrame() > daAlinkHIO_wlGrab_c0::m.field_0x28.mCheckFrame)) + (checkInputOnR() && frameCtrl->getFrame() > daAlinkHIO_wlGrab_c0::m.field_0x28.mCancelFrame)) { u8 old_2fa3 = field_0x2fa3; fopAc_ac_c* old_actor = field_0x2844.getActor(); diff --git a/src/d/actor/d_a_cow.cpp b/src/d/actor/d_a_cow.cpp index a2bb0bd7238..488ae2dd398 100644 --- a/src/d/actor/d_a_cow.cpp +++ b/src/d/actor/d_a_cow.cpp @@ -1808,7 +1808,7 @@ void daCow_c::action_enter() { } /* 8065CFBC-8065D03C 004ADC 0080+00 4/4 0/0 1/1 .text isAngry__7daCow_cFv */ -void daCow_c::isAngry() { +bool daCow_c::isAngry() { // NONMATCHING } diff --git a/src/d/actor/d_a_horse.cpp b/src/d/actor/d_a_horse.cpp index 6feb755a8a8..e8786d00279 100644 --- a/src/d/actor/d_a_horse.cpp +++ b/src/d/actor/d_a_horse.cpp @@ -4,597 +4,224 @@ */ #include "d/actor/d_a_horse.h" -#include "d/d_stage.h" -#include "dol2asm.h" +#include "d/actor/d_a_alink.h" +#include "d/d_com_inf_game.h" +#include "d/actor/d_a_hozelda.h" +#include "d/actor/d_a_cow.h" +#include "d/actor/d_a_tag_hstop.h" +#include "d/d_demo.h" +#include "d/d_meter2_info.h" +#include "m_Do/m_Do_controller_pad.h" +#include "SSystem/SComponent/c_math.h" +#include "Z2AudioLib/Z2Instances.h" +#include -// -// Forward References: -// +#define ANM_HS_BACK_WALK 6 +#define ANM_HS_WALK_START 7 +#define ANM_HS_EXCITEMENT 8 +#define ANM_HS_EXCITEMENT_2 9 +#define ANM_HS_JUMP_END 10 +#define ANM_HS_JUMP_MIDDLE 11 +#define ANM_HS_JUMP_START 12 +#define ANM_HS_JUMP_START_CLIFT 13 +#define ANM_HS_LASH 14 +#define ANM_HS_NECK_WAITBACK_LEFT 15 +#define ANM_HS_NECK_WAITBACK_RIGHT 16 +#define ANM_HS_RUN_DASH 17 +#define ANM_HS_RUN_FAST 18 +#define ANM_HS_RUN_SLOW 19 +#define ANM_HS_STAND 20 +#define ANM_HS_STOP_SLOW 21 +#define ANM_HS_STOP_STAND 22 +#define ANM_HS_TURN_LEFT 23 +#define ANM_HS_TURN_LEFT_START 24 +#define ANM_HS_TURN_RIGHT 25 +#define ANM_HS_TURN_RIGHT_START 26 +#define ANM_HS_WAIT_01 27 +#define ANM_HS_WAIT_01B 28 +#define ANM_HS_WAIT_01B_CONNECT 29 +#define ANM_HS_WAIT_02 30 +#define ANM_HS_WAIT_03 31 +#define ANM_HS_WAIT_04 32 +#define ANM_HS_WAIT_05 33 +#define ANM_HS_WALK_FAST 34 +#define ANM_HS_WALK_SLOW 35 -extern "C" void setReinPos__13daHorseRein_cFi(); -extern "C" void __dt__4cXyzFv(); -extern "C" void setReinPosPart__13daHorseRein_cFi(); -extern "C" void coHitCallbackBoarJump__9daHorse_cFP10fopAc_ac_c(); -extern "C" void __dt__8cM3dGPlaFv(); -extern "C" void coHitCallbackBoarHit__9daHorse_cFP10fopAc_ac_cP12dCcD_GObjInf(); -extern "C" void coHitCallbackCowHit__9daHorse_cFP10fopAc_ac_c(); -extern "C" static void -daHorse_coHitCallbackBoarJump__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf(); -extern "C" static void -daHorse_coHitCallbackCowHit__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf(); -extern "C" static void -daHorse_coHitCallbackAll__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf(); -extern "C" static void daHorse_searchEnemy__FP10fopAc_ac_cPv(); -extern "C" void modelCallBack__9daHorse_cFi(); -extern "C" static void daHorse_modelCallBack__FP8J3DJointi(); -extern "C" static void daHorse_searchSingleBoar__FP10fopAc_ac_cPv(); -extern "C" void createHeap__9daHorse_cFv(); -extern "C" void __ct__4cXyzFv(); -extern "C" void func_808392DC(void* _this); -extern "C" void __dt__19J3DMtxCalcNoAnmBaseFv(); -extern "C" void __dt__10J3DMtxCalcFv(); -extern "C" static void daHorse_createHeap__FP10fopAc_ac_c(); -extern "C" void checkEnding__9daHorse_cFv(); -extern "C" void create__9daHorse_cFv(); -extern "C" static void daHorse_Create__FP10fopAc_ac_c(); -extern "C" void setBasAnime__9daHorse_cFi(); -extern "C" void resetBasAnime__9daHorse_cFv(); -extern "C" void setDoubleAnime__9daHorse_cFfffUsUsf(); -extern "C" void setSingleAnime__9daHorse_cFUsffsfi(); -extern "C" void animePlay__9daHorse_cFv(); -extern "C" void checkDemoAction__9daHorse_cFv(); -extern "C" void setStickRodeoMove__9daHorse_cFv(); -extern "C" void setStickCallMove__9daHorse_cFv(); -extern "C" void setDemoMoveData__9daHorse_cFPUlPC4cXyz(); -extern "C" void setDemoData__9daHorse_cFv(); -extern "C" void acceptPlayerRide__9daHorse_cFv(); -extern "C" void setStickData__9daHorse_cFv(); -extern "C" void setTurnStartVibration__9daHorse_cFv(); -extern "C" void setTurnVibration__9daHorse_cFv(); -extern "C" void setMoveAnime__9daHorse_cFf(); -extern "C" void checkHorseNoMove__9daHorse_cFi(); -extern "C" void checkTurnPlayerState__9daHorse_cFv(); -extern "C" void setSpeedAndAngle__9daHorse_cFv(); -extern "C" void checkWaitTurn__9daHorse_cCFv(); -extern "C" void setRoomInfo__9daHorse_cFi(); -extern "C" void setBodyPart__9daHorse_cFv(); -extern "C" void setMatrix__9daHorse_cFv(); -extern "C" void setDashEffect__9daHorse_cFPUl(); -extern "C" void setEffect__9daHorse_cFv(); -extern "C" void setCollision__9daHorse_cFv(); -extern "C" void autoGroundHit__9daHorse_cFv(); -extern "C" void setTailAngle__9daHorse_cFv(); -extern "C" void setNeckAngle__9daHorse_cFv(); -extern "C" void copyFootMatrix__9daHorse_cFv(); -extern "C" void setFootMatrix__9daHorse_cFv(); -extern "C" void setLegAngle__9daHorse_cFfiiPs(); -extern "C" void footBgCheck__9daHorse_cFv(); -extern "C" void setReinPosMoveInit__9daHorse_cFi(); -extern "C" void copyReinPos__9daHorse_cFv(); -extern "C" void setReinPosHandSubstance__9daHorse_cFi(); -extern "C" void setReinPosNormalSubstance__9daHorse_cFv(); -extern "C" void bgCheck__9daHorse_cFv(); -extern "C" void checkSpecialWallHitSubstance__9daHorse_cCFRC4cXyz(); -extern "C" void setServiceWaitTimer__9daHorse_cFv(); -extern "C" void checkServiceWaitAnime__9daHorse_cFv(); -extern "C" void checkTurnInput__9daHorse_cFv(); -extern "C" void checkTgHitTurn__9daHorse_cFv(); -extern "C" void checkTurnAfterFastMove__9daHorse_cFf(); -extern "C" void setNeckAnimeMorf__9daHorse_cFv(); -extern "C" void setNeckAnime__9daHorse_cFUsffs(); -extern "C" void resetNeckAnime__9daHorse_cFv(); -extern "C" void setLashCnt__9daHorse_cFv(); -extern "C" void setTalkModeWolf__9daHorse_cFv(); -extern "C" void setBoarHit__9daHorse_cFP10fopAc_ac_ci(); -extern "C" void savePos__9daHorse_cFv(); -extern "C" void callHorseSubstance__9daHorse_cFPC4cXyz(); -extern "C" void setHorsePosAndAngleSubstance__9daHorse_cFPC4cXyzs(); -extern "C" void checkPlayerHeavy__9daHorse_cFv(); -extern "C" void setTgCoGrp__9daHorse_cFUlUl(); -extern "C" void onRideFlgSubstance__9daHorse_cFv(); -extern "C" void offRideFlgSubstance__9daHorse_cFv(); -extern "C" void procWaitInit__9daHorse_cFv(); -extern "C" void procWait__9daHorse_cFv(); -extern "C" void procMoveInit__9daHorse_cFv(); -extern "C" void procMove__9daHorse_cFv(); -extern "C" void procStopInit__9daHorse_cFv(); -extern "C" void procStop__9daHorse_cFv(); -extern "C" void procTurnInit__9daHorse_cFi(); -extern "C" void procTurn__9daHorse_cFv(); -extern "C" void procJumpInit__9daHorse_cFi(); -extern "C" void procJump__9daHorse_cFv(); -extern "C" void procLandInit__9daHorse_cFfi(); -extern "C" void procLand__9daHorse_cFv(); -extern "C" void procLargeDamageInit__9daHorse_cFv(); -extern "C" void procLargeDamage__9daHorse_cFv(); -extern "C" void procToolDemoInit__9daHorse_cFv(); -extern "C" void procToolDemo__9daHorse_cFv(); -extern "C" void searchSceneChangeArea__9daHorse_cFP10fopAc_ac_c(); -extern "C" static void daHorse_searchSceneChangeArea__FP10fopAc_ac_cPv(); -extern "C" void execute__9daHorse_cFv(); -extern "C" static void daHorse_Execute__FP9daHorse_c(); -extern "C" void draw__9daHorse_cFv(); -extern "C" static void daHorse_Draw__FP9daHorse_c(); -extern "C" void __dt__9daHorse_cFv(); -extern "C" static void daHorse_Delete__FP9daHorse_c(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" void setAnmTransform__10J3DMtxCalcFUcP15J3DAnmTransform(); -extern "C" void setAnmTransform__10J3DMtxCalcFP15J3DAnmTransform(); -extern "C" bool getAnmTransform__10J3DMtxCalcFUc(); -extern "C" bool getAnmTransform__10J3DMtxCalcFv(); -extern "C" void setWeight__10J3DMtxCalcFUcf(); -extern "C" void getWeight__10J3DMtxCalcCFUc(); -extern "C" void func_80844BB4(void* _this, Vec const&, f32 const (&)[3][4]); -extern "C" void func_80844BDC(void* _this); -extern "C" void __sinit_d_a_horse_cpp(); -extern "C" static void func_80844CA0(); -extern "C" static void func_80844CA8(); -extern "C" void __ct__9daHorse_cFv(); -extern "C" void __dt__17daHorseFootData_cFv(); -extern "C" void __ct__17daHorseFootData_cFv(); -extern "C" void __dt__13daHorseRein_cFv(); -extern "C" void __ct__13daHorseRein_cFv(); -extern "C" void __dt__8cM3dGSphFv(); -extern "C" void __dt__8cM3dGCylFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__8dCcD_CylFv(); -extern "C" void __ct__8dCcD_CylFv(); -extern "C" void __dt__10dCcD_GSttsFv(); -extern "C" void __dt__14dBgS_HorseAcchFv(); -extern "C" void __dt__12dBgS_AcchCirFv(); -extern "C" void __dt__16daPy_frameCtrl_cFv(); -extern "C" void __ct__16daPy_frameCtrl_cFv(); -extern "C" void __dt__19mDoExt_AnmRatioPackFv(); -extern "C" void __ct__19mDoExt_AnmRatioPackFv(); -extern "C" void __dt__12J3DFrameCtrlFv(); -extern "C" u8 const m_footJointTable__9daHorse_c[8]; -extern "C" f32 const m_callLimitDistance2__9daHorse_c; -extern "C" u8 const m__14daHorse_hio_c0[292]; -extern "C" extern char const* const d_a_horse__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_ZXYrotM__FPA4_fsss(); -extern "C" void mDoMtx_YrotS__FPA4_fs(); -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void mDoMtx_ZrotS__FPA4_fs(); -extern "C" void mDoMtx_ZrotM__FPA4_fs(); -extern "C" void mDoMtx_QuatConcat__FPC10QuaternionPC10QuaternionP10Quaternion(); -extern "C" void transS__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void transM__14mDoMtx_stack_cFfff(); -extern "C" void scaleM__14mDoMtx_stack_cFfff(); -extern "C" void quatM__14mDoMtx_stack_cFPC10Quaternion(); -extern "C" void init__13mDoExt_btpAnmFP16J3DMaterialTableP16J3DAnmTexPatterniifss(); -extern "C" void entry__13mDoExt_btpAnmFP16J3DMaterialTables(); -extern "C" void mDoExt_modelEntryDL__FP8J3DModel(); -extern "C" void initOldFrameMorf__22mDoExt_MtxCalcOldFrameFfUsUs(); -extern "C" void init__19mDoExt_3DlineMat1_cFUsUsP7ResTIMGi(); -extern "C" void update__19mDoExt_3DlineMat1_cFifR8_GXColorUsP12dKy_tevstr_c(); -extern "C" void setMat__26mDoExt_3DlineMatSortPacketFP18mDoExt_3DlineMat_c(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void __dt__10fopAc_ac_cFv(); -extern "C" void fopAcIt_Executor__FPFPvPv_iPv(); -extern "C" void fopAcIt_Judge__FPFPvPv_PvPv(); -extern "C" void fopAcM_setStageLayer__FPv(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void fopAcM_posMoveF__FP10fopAc_ac_cPC4cXyz(); -extern "C" void fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fopAcM_seenActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fopAcM_searchActorDistanceXZ2__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fpoAcM_relativePos__FPC10fopAc_ac_cPC4cXyzP4cXyz(); -extern "C" void fopAcM_getPolygonAngle__FRC13cBgS_PolyInfos(); -extern "C" void fopAcM_getPolygonAngle__FPC8cM3dGPlas(); -extern "C" void gndCheck__11fopAcM_gc_cFPC4cXyz(); -extern "C" void waterCheck__11fopAcM_wt_cFPC4cXyz(); -extern "C" void getLayerNo__14dComIfG_play_cFi(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfGp_getReverb__Fi(); -extern "C" void -dComIfGd_setShadow__FUlScP8J3DModelP4cXyzffffR13cBgS_PolyInfoP12dKy_tevstr_csfP9_GXTexObj(); -extern "C" void set__17dSv_horse_place_cFPCcRC4cXyzsSc(); -extern "C" void isEventBit__11dSv_event_cCFUs(); -extern "C" void getDemoIDData__13dDemo_actor_cFPiPiPiPUsPUc(); -extern "C" void getActor__14dDemo_object_cFUc(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void getIDRes__14dRes_control_cFPCcUsP11dRes_info_ci(); -extern "C" void reset__14dEvt_control_cFv(); -extern "C" void getMyStaffId__16dEvent_manager_cFPCcP10fopAc_ac_ci(); -extern "C" void getMyNowCutName__16dEvent_manager_cFi(); -extern "C" void getMySubstanceP__16dEvent_manager_cFiPCci(); -extern "C" void cutEnd__16dEvent_manager_cFi(); -extern "C" void getGoal__16dEvent_manager_cFv(); -extern "C" void getEmitter__Q213dPa_control_c7level_cFUl(); -extern "C" void -set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void init__7dPaPo_cFP9dBgS_Acchff(); -extern "C" void -setEffectFour__8dPaPoF_cFPC12dKy_tevstr_cPC4cXyzUlUlPC4cXyzPC4cXyzPC4cXyzPC4cXyzPC4cXyzPC5csXyzPC4cXyzScff(); -extern "C" void dPath_GetRoomPath__Fii(); -extern "C" void dPath_GetNextRoomPath__FPC5dPathi(); -extern "C" void StartShock__12dVibration_cFii4cXyz(); -extern "C" void StartQuake__12dVibration_cFii4cXyz(); -extern "C" void StopQuake__12dVibration_cFi(); -extern "C" void GetLockonList__12dAttention_cFl(); -extern "C" void LockonTruth__12dAttention_cFv(); -extern "C" void getActor__10dAttList_cFv(); -extern "C" void LineCross__4cBgSFP11cBgS_LinChk(); -extern "C" void ChkPolySafe__4cBgSFRC13cBgS_PolyInfo(); -extern "C" void GetTriPla__4cBgSCFRC13cBgS_PolyInfoP8cM3dGPla(); -extern "C" void GetExitId__4dBgSFRC13cBgS_PolyInfo(); -extern "C" void GetPolyColor__4dBgSFRC13cBgS_PolyInfo(); -extern "C" void GetHorseNoEntry__4dBgSFRC13cBgS_PolyInfo(); -extern "C" void GetSpecialCode__4dBgSFRC13cBgS_PolyInfo(); -extern "C" void GetGroundCode__4dBgSFRC13cBgS_PolyInfo(); -extern "C" void GetRoomId__4dBgSFRC13cBgS_PolyInfo(); -extern "C" void __ct__12dBgS_AcchCirFv(); -extern "C" void SetWall__12dBgS_AcchCirFff(); -extern "C" void __dt__9dBgS_AcchFv(); -extern "C" void __ct__9dBgS_AcchFv(); -extern "C" void Set__9dBgS_AcchFP10fopAc_ac_ciP12dBgS_AcchCir(); -extern "C" void CrrPos__9dBgS_AcchFR4dBgS(); -extern "C" void Set__11dBgS_LinChkFPC4cXyzPC4cXyzPC10fopAc_ac_c(); -extern "C" void __ct__16dBgS_HorseLinChkFv(); -extern "C" void __dt__16dBgS_HorseLinChkFv(); -extern "C" void SetHorse__16dBgS_PolyPassChkFv(); -extern "C" void __ct__10dCcD_GSttsFv(); -extern "C" void Move__10dCcD_GSttsFv(); -extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c(); -extern "C" void __ct__12dCcD_GObjInfFv(); -extern "C" void __dt__12dCcD_GObjInfFv(); -extern "C" void ResetAtHit__12dCcD_GObjInfFv(); -extern "C" void ChkTgHit__12dCcD_GObjInfFv(); -extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl(); -extern "C" void MoveCAt__8dCcD_CylFR4cXyz(); -extern "C" void Set__8dCcD_SphFRC11dCcD_SrcSph(); -extern "C" void Set__12dCcMassS_MngFP8cCcD_ObjUc(); -extern "C" void checkStageName__9daAlink_cFPCc(); -extern "C" void getMoveBGActorName__9daAlink_cFR13cBgS_PolyInfoi(); -extern "C" void checkUnderMove0BckNoArc__9daAlink_cCFQ29daAlink_c11daAlink_ANM(); -extern "C" void checkHorseWaitLashAnime__9daAlink_cCFv(); -extern "C" void checkHorseLieAnime__9daAlink_cCFv(); -extern "C" void checkHorseSubjectivity__9daAlink_cCFv(); -extern "C" void getHorseReinHandPos__9daAlink_cFP4cXyzP4cXyz(); -extern "C" void checkAnmEnd__16daPy_frameCtrl_cFv(); -extern "C" void updateFrame__16daPy_frameCtrl_cFv(); -extern "C" void setFrameCtrl__16daPy_frameCtrl_cFUcssff(); -extern "C" void setActor__16daPy_actorKeep_cFv(); -extern "C" void clearData__16daPy_actorKeep_cFv(); -extern "C" void setLookPos__9daPy_py_cFP4cXyz(); -extern "C" void dCam_getControledAngleY__FP12camera_class(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void dKy_pol_sound_get__FPC13cBgS_PolyInfo(); -extern "C" void __ct__10dMsgFlow_cFv(); -extern "C" void __dt__10dMsgFlow_cFv(); -extern "C" void init__10dMsgFlow_cFP10fopAc_ac_ciiPP10fopAc_ac_c(); -extern "C" void doFlow__10dMsgFlow_cFP10fopAc_ac_cPP10fopAc_ac_ci(); -extern "C" void ClrCcMove__9cCcD_SttsFv(); -extern "C" void SetGrp__10cCcD_ObjTgFUl(); -extern "C" void SetVsGrp__10cCcD_ObjCoFUl(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void __pl__4cXyzCFRC3Vec(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void __ml__4cXyzCFf(); -extern "C" void normalizeZP__4cXyzFv(); -extern "C" void atan2sX_Z__4cXyzCFv(); -extern "C" void atan2sY_XZ__4cXyzCFv(); -extern "C" void cM_rad2s__Ff(); -extern "C" void cM_atan2s__Fff(); -extern "C" void cM_rnd__Fv(); -extern "C" void cM_rndF__Ff(); -extern "C" void cM_rndFX__Ff(); -extern "C" void __dt__13cBgS_PolyInfoFv(); -extern "C" void cBgW_CheckBWall__Ff(); -extern "C" void __dt__8cM3dGCirFv(); -extern "C" void SetC__8cM3dGCylFRC4cXyz(); -extern "C" void SetH__8cM3dGCylFf(); -extern "C" void SetR__8cM3dGCylFf(); -extern "C" void SetC__8cM3dGSphFRC4cXyz(); -extern "C" void cLib_addCalcAngleS__FPsssss(); -extern "C" void cLib_chaseF__FPfff(); -extern "C" void cLib_chaseAngleS__FPsss(); -extern "C" void cLib_targetAngleY__FPC3VecPC3Vec(); -extern "C" void cLib_distanceAngleS__Fss(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void subBgmStart__8Z2SeqMgrFUl(); -extern "C" void initAnime__10Z2CreatureFPvbff(); -extern "C" void updateAnime__10Z2CreatureFff(); -extern "C" void __ct__14Z2CreatureRideFv(); -extern "C" void __dt__14Z2CreatureRideFv(); -extern "C" void init__14Z2CreatureRideFP3VecP3VecUcUc(); -extern "C" void setLinkRiding__14Z2CreatureRideFb(); -extern "C" void* __nw__FUl(); -extern "C" void* __nwa__FUl(); -extern "C" void __dl__FPv(); -extern "C" void init__12J3DFrameCtrlFs(); -extern "C" void checkPass__12J3DFrameCtrlFf(); -extern "C" void init__24J3DMtxCalcJ3DSysInitMayaFRC3VecRA3_A4_Cf(); -extern "C" void calcTransform__27J3DMtxCalcCalcTransformMayaFRC16J3DTransformInfo(); -extern "C" void JMAEulerToQuat__FsssP10Quaternion(); -extern "C" void __destroy_arr(); -extern "C" void __construct_array(); -extern "C" void __construct_new_array(); -extern "C" void __ptmf_scall(); -extern "C" void _savegpr_14(); -extern "C" void _savegpr_19(); -extern "C" void _savegpr_21(); -extern "C" void _savegpr_23(); -extern "C" void _savegpr_24(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_14(); -extern "C" void _restgpr_19(); -extern "C" void _restgpr_21(); -extern "C" void _restgpr_23(); -extern "C" void _restgpr_24(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" u8 const m_handLeftInSidePos__9daAlink_c[12]; -extern "C" u8 const m_handRightInSidePos__9daAlink_c[12]; -extern "C" extern void* __vt__19mDoExt_3DlineMat1_c[5]; -extern "C" extern void* __vt__28mDoExt_MtxCalcAnmBlendTblOld[11]; -extern "C" extern void* __vt__25mDoExt_MtxCalcAnmBlendTbl[11]; -extern "C" u8 m_typeFourData__8dPaPoF_c[60]; -extern "C" u8 m_emitterFourData__8dPaPoF_c[60 + 28 /* padding */]; -extern "C" extern void* __vt__8dCcD_Sph[36]; -extern "C" extern void* __vt__8dCcD_Cyl[36]; -extern "C" extern void* __vt__9dCcD_Stts[11]; -extern "C" extern void* __vt__12cCcD_SphAttr[25]; -extern "C" extern void* __vt__12cCcD_CylAttr[25]; -extern "C" extern void* __vt__14cCcD_ShapeAttr[22]; -extern "C" extern void* __vt__9cCcD_Stts[8]; -extern "C" u8 m_cpadInfo__8mDoCPd_c[256]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" u8 mGndCheck__11fopAcM_gc_c[84]; -extern "C" u8 mDemoArcName__20dStage_roomControl_c[10 + 2 /* padding */]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32]; -extern "C" extern u8 g_meter2_info[248]; -extern "C" f32 Zero__4cXyz[3]; -extern "C" u8 BaseX__4cXyz[12]; -extern "C" u8 mCurrentMtx__6J3DSys[48]; -extern "C" u8 sincosTable___5JMath[65536]; -extern "C" f32 mGroundY__11fopAcM_gc_c; -extern "C" f32 mWaterY__11fopAcM_wt_c[1 + 1 /* padding */]; -extern "C" u8 m_top__12daTagHstop_c[4 + 4 /* padding */]; -extern "C" u8 m_object__7dDemo_c[4]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" u8 mJoint__10J3DMtxCalc[4]; -extern "C" void isAngry__7daCow_cFv(); -extern "C" void setAngryHit__7daCow_cFv(); -extern "C" void __register_global_object(); - -// -// Declarations: -// - -/* ############################################################################################## */ /* 808454AC-808454B8 000000 000C+00 41/41 0/0 0/0 .rodata @3894 */ -SECTION_RODATA static u8 const lit_3894[12] = { +static u8 const lit_3894[12] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; -COMPILER_STRIP_GATE(0x808454AC, &lit_3894); /* 808454B8-808454C0 00000C 0006+02 2/6 0/0 0/0 .rodata l_arcName */ -SECTION_RODATA static u8 const l_arcName[6 + 2 /* padding */] = { - 0x48, - 0x6F, - 0x72, - 0x73, - 0x65, - 0x00, - /* padding */ - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x808454B8, &l_arcName); +static char const l_arcName[] = "Horse"; /* 808454C0-808454C8 000014 0008+00 2/5 0/0 0/0 .rodata m_footJointTable__9daHorse_c */ -SECTION_RODATA u8 const daHorse_c::m_footJointTable[8] = { - 0x00, 0x03, 0x00, 0x07, 0x00, 0x1B, 0x00, 0x1F, +const u16 daHorse_c::m_footJointTable[] = { + 3, 7, 27, 31, }; -COMPILER_STRIP_GATE(0x808454C0, &daHorse_c::m_footJointTable); /* 808454C8-808454CC 00001C 0004+00 0/0 0/0 0/0 .rodata m_callLimitDistance2__9daHorse_c */ -#pragma push -#pragma force_active on -SECTION_RODATA f32 const daHorse_c::m_callLimitDistance2 = 640000.0f; -COMPILER_STRIP_GATE(0x808454C8, &daHorse_c::m_callLimitDistance2); -#pragma pop +const f32 daHorse_c::m_callLimitDistance2 = 640000.0f; /* 808454CC-808455F0 000020 0124+00 1/20 0/0 0/0 .rodata m__14daHorse_hio_c0 */ -SECTION_RODATA u8 const daHorse_hio_c0::m[292] = { - 0x02, 0x58, 0x00, 0x32, 0x00, 0x2D, 0x00, 0x07, 0x00, 0x0E, 0x00, 0x08, 0x00, 0x5A, 0x00, 0xD2, - 0x00, 0x0F, 0x00, 0x07, 0x00, 0x0D, 0x00, 0x08, 0x00, 0x03, 0x00, 0x2D, 0x42, 0x28, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x4C, 0xCC, 0xCD, 0x3F, 0xC0, 0x00, 0x00, 0x3F, 0x99, 0x99, 0x9A, - 0x3F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3D, 0xA3, 0xD7, 0x0A, 0x3E, 0xE6, 0x66, 0x66, - 0x3F, 0x66, 0x66, 0x66, 0x3F, 0x8C, 0xCC, 0xCD, 0x40, 0xA0, 0x00, 0x00, 0x3F, 0xB3, 0x33, 0x33, - 0x3E, 0xCC, 0xCC, 0xCD, 0x40, 0x00, 0x00, 0x00, 0x40, 0xD0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x8C, 0xCC, 0xCD, 0x40, 0xA0, 0x00, 0x00, - 0x42, 0x34, 0x00, 0x00, 0x3F, 0xD9, 0x99, 0x9A, 0x40, 0x20, 0x00, 0x00, 0x3F, 0x8C, 0xCC, 0xCD, - 0x40, 0xA0, 0x00, 0x00, 0x42, 0x64, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, 0x41, 0xF8, 0x00, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x41, 0x40, 0x00, 0x00, 0x3F, 0xD9, 0x99, 0x9A, 0x40, 0x80, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x41, 0x10, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, - 0x43, 0xAF, 0x00, 0x00, 0x43, 0x16, 0x00, 0x00, 0x42, 0xC8, 0x00, 0x00, 0x44, 0x7A, 0x00, 0x00, - 0x42, 0x48, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, 0x3F, 0xA6, 0x66, 0x66, 0x3F, 0x00, 0x00, 0x00, - 0x40, 0x80, 0x00, 0x00, 0x3F, 0x33, 0x33, 0x33, 0x40, 0x00, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, - 0x3E, 0x99, 0x99, 0x9A, 0x40, 0xE0, 0x00, 0x00, 0x40, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x41, 0x10, 0x00, 0x00, 0x42, 0xFA, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x42, 0x0C, 0x00, 0x00, 0x3F, 0x8C, 0xCC, 0xCD, 0x3F, 0xA6, 0x66, 0x66, - 0x41, 0x70, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x808454CC, &daHorse_hio_c0::m); - -/* 808455F0-808455F4 000144 0004+00 3/11 0/0 0/0 .rodata @4303 */ -SECTION_RODATA static f32 const lit_4303 = 3.0f; -COMPILER_STRIP_GATE(0x808455F0, &lit_4303); - -/* 808455F4-808455F8 000148 0004+00 4/28 0/0 0/0 .rodata @4304 */ -SECTION_RODATA static f32 const lit_4304 = 1.0f; -COMPILER_STRIP_GATE(0x808455F4, &lit_4304); - -/* 808455F8-808455FC 00014C 0004+00 0/1 0/0 0/0 .rodata @4305 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4305 = -4.5f; -COMPILER_STRIP_GATE(0x808455F8, &lit_4305); -#pragma pop - -/* 808455FC-80845600 000150 0004+00 14/51 0/0 0/0 .rodata @4306 */ -SECTION_RODATA static u8 const lit_4306[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x808455FC, &lit_4306); - -/* 80845600-80845604 000154 0004+00 0/1 0/0 0/0 .rodata @4307 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4307 = 20.0f / 17.0f; -COMPILER_STRIP_GATE(0x80845600, &lit_4307); -#pragma pop - -/* 80845604-8084560C 000158 0004+04 0/1 0/0 0/0 .rodata @4308 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4308[1 + 1 /* padding */] = { - 5.5f, - /* padding */ +const daHorse_hio_c1 daHorse_hio_c0::m = { + 600, + 50, + 45, + 7, + 14, + 8, + 90, + 210, + 15, + 7, + 13, + 8, + 3, + 45, + 42.0f, + 1.0f, + 0.8f, + 1.5f, + 1.2f, + 1.5f, + 1.0f, + 0.08f, + 0.45f, + 0.9f, + 1.1f, + 5.0f, + 1.4f, + 0.4f, + 2.0f, + 6.5f, + 1.0f, + 0.5f, + 1.0f, + 1.1f, + 5.0f, + 45.0f, + 1.7f, + 2.5f, + 1.1f, + 5.0f, + 57.0f, + 50.0f, + 31.0f, + 2.0f, + 12.0f, + 1.7f, + 4.0f, + 1.0f, 0.0f, + 1.0f, + 1.0f, + 1.0f, + 1.0f, + 9.0f, + 40.0f, + 350.0f, + 150.0f, + 100.0f, + 1000.0f, + 50.0f, + 40.0f, + 1.3f, + 0.5f, + 4.0f, + 0.7f, + 2.0f, + 3.0f, + 0.3f, + 7.0f, + 6.0f, + 1.0f, + 2.0f, + 2.0f, + 9.0f, + 125.0f, + 0.0f, + 35.0f, + 1.1f, + 1.3f, + 15.0f, }; -COMPILER_STRIP_GATE(0x80845604, &lit_4308); -#pragma pop - -/* 8084560C-80845614 000160 0008+00 0/8 0/0 0/0 .rodata @4309 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4309[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8084560C, &lit_4309); -#pragma pop - -/* 80845614-8084561C 000168 0008+00 0/8 0/0 0/0 .rodata @4310 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4310[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80845614, &lit_4310); -#pragma pop - -/* 8084561C-80845624 000170 0008+00 0/8 0/0 0/0 .rodata @4311 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4311[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8084561C, &lit_4311); -#pragma pop - -/* 80845624-80845628 000178 0004+00 0/1 0/0 0/0 .rodata @4312 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4312 = 6.0f / 5.0f; -COMPILER_STRIP_GATE(0x80845624, &lit_4312); -#pragma pop - -/* 80845628-8084562C 00017C 0004+00 0/4 0/0 0/0 .rodata @4313 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4313 = 1.0f / 5.0f; -COMPILER_STRIP_GATE(0x80845628, &lit_4313); -#pragma pop - -/* 8084562C-80845634 000180 0008+00 3/15 0/0 0/0 .rodata @4315 */ -SECTION_RODATA static u8 const lit_4315[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8084562C, &lit_4315); /* 80837F2C-8083836C 0000EC 0440+00 1/1 0/0 0/0 .text setReinPos__13daHorseRein_cFi */ +// NONMATCHING void daHorseRein_c::setReinPos(int param_0) { - // NONMATCHING -} + cXyz* var_r27 = &field_0x0[0][param_0]; + var_r27++; -/* 8083836C-808383A8 00052C 003C+00 7/7 0/0 0/0 .text __dt__4cXyzFv */ -// cXyz::~cXyz() { -extern "C" void __dt__4cXyzFv() { - // NONMATCHING + cXyz spE0 = *field_0x0[0] - *var_r27; + spE0.normalizeZP(); + + f32 var_f31 = (f32)param_0 / (f32)field_0x8[0]; + f32 var_f30 = var_f31 * var_f31; + + spE0 *= (1.0f - var_f30) * 3.0f; + + spE0.y += -4.5f; + spE0.x += var_f30 * field_0x10; + spE0.z += var_f30 * field_0x14; + + cXyz* var_r28 = &field_0x0[0][param_0]; + cXyz* var_r25 = &field_0x0[1][param_0]; + cXyz spD4(*var_r28); + + cXyz spC8 = ((*var_r28 - *var_r27) + *var_r25) + spE0; + + if (field_0x18 > 0.0f) { + cXyz spBC = field_0x1c - *var_r27; + spBC.normalizeZP(); + + spC8 += spBC * field_0x18; + field_0x18 -= 1.1764706f; + } + + spC8.normalizeZP(); + *var_r28 = *var_r27 + (spC8 * 5.5f); + + spC8 = *var_r28 - *field_0x0[0]; + + f32 var_f29 = spC8.abs(); + f32 var_f28 = (f32)param_0 * 5.5f * 1.2f; + if (var_f29 > var_f28) { + spC8 *= var_f28 / var_f29; + *var_r28 = ((*field_0x0[0] + spC8) * (1.0f - var_f31)) + (*var_r28 * var_f31); + } + + *var_r25 = (*var_r28 - spD4) * 0.2f; } /* 808383A8-80838498 000568 00F0+00 2/2 0/0 0/0 .text setReinPosPart__13daHorseRein_cFi */ void daHorseRein_c::setReinPosPart(int param_0) { - // NONMATCHING + field_0x8[0] = param_0 + 1; + field_0x0[1][param_0] = cXyz::Zero; + + cXyz* var_r25 = &field_0x0[0][param_0]; + + int var_r28 = field_0x8[1] - 1; + cXyz* var_r27 = &field_0x0[0][var_r28]; + cXyz* var_r26 = &field_0x0[1][var_r28]; + + for (int i = var_r28; i > param_0; i--, var_r27--, var_r26--) { + *var_r27 = *var_r25; + *var_r26 = cXyz::Zero; + } + + for (int i = param_0 - 1; i > 0; i--) { + setReinPos(i); + } } -/* ############################################################################################## */ -/* 80845634-80845638 000188 0004+00 0/4 0/0 0/0 .rodata @4465 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4465 = 100.0f; -COMPILER_STRIP_GATE(0x80845634, &lit_4465); -#pragma pop - -/* 80845638-8084563C 00018C 0004+00 0/5 0/0 0/0 .rodata @4466 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4466 = 200.0f; -COMPILER_STRIP_GATE(0x80845638, &lit_4466); -#pragma pop - -/* 8084563C-80845640 000190 0004+00 0/3 0/0 0/0 .rodata @4467 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4467 = 25.0f; -COMPILER_STRIP_GATE(0x8084563C, &lit_4467); -#pragma pop - -/* 80845640-80845644 000194 0004+00 0/2 0/0 0/0 .rodata @4468 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4468 = 5.0f; -COMPILER_STRIP_GATE(0x80845640, &lit_4468); -#pragma pop - -/* 808458D4-808458E0 000000 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */ -SECTION_DATA static u8 cNullVec__6Z2Calc[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; - -/* 808458E0-808458F4 00000C 0004+10 0/0 0/0 0/0 .data @1787 */ -#pragma push -#pragma force_active on -SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = { - 0x02000201, - /* padding */ - 0x40080000, - 0x00000000, - 0x3FE00000, - 0x00000000, -}; -#pragma pop +UNK_REL_DATA /* 808458F4-808458F8 000020 0004+00 1/2 0/0 0/0 .data l_autoUpHeight */ -SECTION_DATA static f32 l_autoUpHeight = 50.0f; +static f32 l_autoUpHeight = 50.0f; /* 808458F8-8084593C 000024 0044+00 0/1 0/0 0/0 .data l_cylSrc */ -#pragma push -#pragma force_active on static dCcD_SrcCyl l_cylSrc = { { {0x0, {{AT_TYPE_HORSE, 0x1, 0x12}, {0xd8fbfdff, 0x9}, 0x79}}, // mObj @@ -608,11 +235,8 @@ static dCcD_SrcCyl l_cylSrc = { 230.0f // mHeight } // mCyl }; -#pragma pop /* 8084593C-8084597C 000068 0040+00 0/1 0/0 0/0 .data l_sphSrc */ -#pragma push -#pragma force_active on static dCcD_SrcSph l_sphSrc = { { {0x0, {{0x0, 0x0, 0x0}, {0xd8fbfdff, 0x9}, 0x79}}, // mObj @@ -624,149 +248,4306 @@ static dCcD_SrcSph l_sphSrc = { {{0.0f, 0.0f, 0.0f}, 35.0f} // mSph } // mSphAttr }; -#pragma pop -/* 8084597C-80845988 -00001 000C+00 0/1 0/0 0/0 .data @4886 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4886[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)checkSpecialWallHitSubstance__9daHorse_cCFRC4cXyz, -}; -#pragma pop +/* 80838498-80838750 000658 02B8+00 2/2 0/0 0/0 .text + * coHitCallbackBoarJump__9daHorse_cFP10fopAc_ac_c */ +void daHorse_c::coHitCallbackBoarJump(fopAc_ac_c* i_hitActor) { + if (!dComIfGp_event_runCheck() && + !checkEndResetStateFlg0(daHorse_ERFLG0(ERFLG0_UNK_4 | ERFLG0_UNK_2 | ERFLG0_UNK_1)) && + fopAcM_GetName(i_hitActor) == PROC_E_WB && + ((fopEn_enemy_c*)i_hitActor)->checkDownFlg()) + { + f32 sin_y = cM_ssin(current.angle.y); + f32 cos_y = cM_scos(current.angle.y); + f32 jump_chk_dist = (daHorse_hio_c0::m.boar_jump_horizontal + daHorse_hio_c0::m.boar_jump_horizontal) + 100.0f; -/* 80845988-80845994 -00001 000C+00 0/1 0/0 0/0 .data @4887 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4887[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)setReinPosHandSubstance__9daHorse_cFi, -}; -#pragma pop + cXyz start(current.pos); + cXyz end(start.x + (jump_chk_dist * sin_y), start.y, start.z + (jump_chk_dist * cos_y)); -/* 80845994-808459A0 -00001 000C+00 0/1 0/0 0/0 .data @4888 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4888[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)setReinPosNormalSubstance__9daHorse_cFv, -}; -#pragma pop + int i; + for (i = 0; i < 3; i++) { + start.y = current.pos.y + m_acchcir[i].GetWallH(); + end.y = start.y; + m_linechk.Set(&start, &end, this); -/* 808459A0-808459AC -00001 000C+00 0/1 0/0 0/0 .data @4889 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4889[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)callHorseSubstance__9daHorse_cFPC4cXyz, -}; -#pragma pop + if (dComIfG_Bgsp().LineCross(&m_linechk)) { + cM3dGPla plane; + dComIfG_Bgsp().GetTriPla(m_linechk, &plane); -/* 808459AC-808459B8 -00001 000C+00 0/1 0/0 0/0 .data @4890 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4890[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)setHorsePosAndAngleSubstance__9daHorse_cFPC4cXyzs, -}; -#pragma pop + if (cBgW_CheckBWall(plane.mNormal.y)) { + break; + } + } + } -/* 808459B8-808459C4 -00001 000C+00 0/1 0/0 0/0 .data @4891 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4891[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)onRideFlgSubstance__9daHorse_cFv, -}; -#pragma pop + if (i == 3) { + cXyz chk_pos; + chk_pos.y = current.pos.y + 200.0f; + + while (jump_chk_dist > 0.0f) { + chk_pos.x = current.pos.x + (jump_chk_dist * sin_y); + chk_pos.z = current.pos.z + (jump_chk_dist * cos_y); -/* 808459C4-808459D0 -00001 000C+00 0/1 0/0 0/0 .data @4892 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_4892[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)offRideFlgSubstance__9daHorse_cFv, -}; -#pragma pop + if (!fopAcM_gc_c::gndCheck(&chk_pos) || fopAcM_gc_c::getHorseNoEntry()) { + break; + } -/* 808459D0-808459DC -00001 000C+00 1/1 0/0 0/0 .data @9343 */ -SECTION_DATA static void* lit_9343[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)procWait__9daHorse_cFv, -}; + jump_chk_dist -= 25.0f; + } + } -/* 808459DC-808459E8 -00001 000C+00 1/1 0/0 0/0 .data @9546 */ -SECTION_DATA static void* lit_9546[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)procMove__9daHorse_cFv, -}; + if (jump_chk_dist <= 0.0f) { + onEndResetStateFlg0(ERFLG0_UNK_20); + field_0x1768 = daHorse_hio_c0::m.boar_jump_horizontal; + field_0x176c = daHorse_hio_c0::m.boar_jump_height + current.pos.y; + field_0x1770 = field_0x1768; + } else if (m_procID == PROC_MOVE_e && speedF > 5.0f) { + setBoarHit(this, 0); + } + } +} -/* 808459E8-808459F4 -00001 000C+00 1/1 0/0 0/0 .data @9680 */ -SECTION_DATA static void* lit_9680[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)procStop__9daHorse_cFv, -}; +/* 80838798-80838904 000958 016C+00 1/1 0/0 0/0 .text + * coHitCallbackBoarHit__9daHorse_cFP10fopAc_ac_cP12dCcD_GObjInf */ +void daHorse_c::coHitCallbackBoarHit(fopAc_ac_c* i_hitActor, dCcD_GObjInf* i_hitGObj) { + if (!dComIfGp_event_runCheck() && + ((m_procID == PROC_MOVE_e && speedF > 5.0f) || checkStateFlg0(daHorse_FLG0(FLG0_UNK_200000 | FLG0_UNK_100000))) && + checkStateFlg0(FLG0_UNK_1) && + fopAcM_GetName(i_hitActor) == PROC_E_WB && + !((fopEn_enemy_c*)i_hitActor)->checkDownFlg()) + { + if (checkStateFlg0(daHorse_FLG0(FLG0_UNK_200000 | FLG0_UNK_100000))) { + m_cowHitAngle = fopAcM_searchActorAngleY(i_hitActor, this); + if (m_cowHitAngle > 0x5000) { + m_cowHitAngle = 0x5000; + } else if (m_cowHitAngle < -0x5000) { + m_cowHitAngle = -0x5000; + } else if (abs(m_cowHitAngle) < 0x3000) { + if (m_cowHitAngle > 0) { + m_cowHitAngle = 0x3000; + } else { + m_cowHitAngle = -0x3000; + } + } -/* 808459F4-80845A00 -00001 000C+00 1/1 0/0 0/0 .data @9802 */ -SECTION_DATA static void* lit_9802[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)procTurn__9daHorse_cFv, -}; + m_cowHit = 5; + dComIfGp_getVibration().StartShock(VIBMODE_S_POWER3, 1, cXyz(0.0f, 1.0f, 0.0f)); + if (checkStateFlg0(FLG0_UNK_100000)) { + procLargeDamageInit(); + } + } else { + setBoarHit(i_hitActor, i_hitGObj->GetStts()->GetWeightUc() == 0xFE); + } + } +} -/* 80845A00-80845A0C -00001 000C+00 1/1 0/0 0/0 .data @9992 */ -SECTION_DATA static void* lit_9992[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)procJump__9daHorse_cFv, -}; +/* 80838904-80838A20 000AC4 011C+00 2/2 0/0 0/0 .text + * coHitCallbackCowHit__9daHorse_cFP10fopAc_ac_c */ +void daHorse_c::coHitCallbackCowHit(fopAc_ac_c* i_hitActor) { + if ((fopAcM_GetName(i_hitActor) == PROC_COW) && ((daCow_c*)i_hitActor)->isAngry()) { + ((daCow_c*)i_hitActor)->setAngryHit(); -/* 80845A0C-80845A18 -00001 000C+00 1/1 0/0 0/0 .data @10113 */ -SECTION_DATA static void* lit_10113[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)procLand__9daHorse_cFv, -}; + if (!dComIfGp_event_runCheck() && checkStateFlg0(FLG0_UNK_1)) { + m_cowHitAngle = fopAcM_searchActorAngleY(i_hitActor, this); + if ((s16)(m_cowHitAngle - shape_angle.y) >= 0) { + field_0x1702 = -0x500; + } else { + field_0x1702 = 0x500; + } -/* 80845A18-80845A24 -00001 000C+00 1/1 0/0 0/0 .data @10171 */ -SECTION_DATA static void* lit_10171[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)procLargeDamage__9daHorse_cFv, -}; + m_cowHit = 5; + } + } else if (fopAcM_GetName(i_hitActor) == PROC_ALINK) { + if (daAlink_getAlinkActorClass()->checkSlideMode()) { + onEndResetStateFlg0(ERFLG0_UNK_800); + } + } +} -/* 80845A24-80845A30 -00001 000C+00 1/1 0/0 0/0 .data @10185 */ -SECTION_DATA static void* lit_10185[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)procToolDemo__9daHorse_cFv, -}; +/* 80838A20-80838A44 000BE0 0024+00 1/1 0/0 0/0 .text + * daHorse_coHitCallbackBoarJump__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf */ +static void daHorse_coHitCallbackBoarJump(fopAc_ac_c* i_coActorA, dCcD_GObjInf* i_coObjInfA, + fopAc_ac_c* i_coActorB, dCcD_GObjInf* i_coObjInfB) { + ((daHorse_c*)i_coActorA)->coHitCallbackBoarJump(i_coActorB); +} -/* 80845A30-80845A34 00015C 0004+00 1/1 0/0 0/0 .data reinLineColor$10541 */ -SECTION_DATA static u8 reinLineColor[4] = { - 0x00, - 0x00, - 0x00, - 0xFF, -}; +/* 80838A44-80838A68 000C04 0024+00 1/1 0/0 0/0 .text + * daHorse_coHitCallbackCowHit__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf */ +static void daHorse_coHitCallbackCowHit(fopAc_ac_c* i_coActorA, dCcD_GObjInf* i_coObjInfA, + fopAc_ac_c* i_coActorB, dCcD_GObjInf* i_coObjInfB) { + ((daHorse_c*)i_coActorA)->coHitCallbackCowHit(i_coActorB); +} + +/* 80838A68-80838AC4 000C28 005C+00 1/1 0/0 0/0 .text + * daHorse_coHitCallbackAll__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf */ +static void daHorse_coHitCallbackAll(fopAc_ac_c* i_coActorA, dCcD_GObjInf* i_coObjInfA, + fopAc_ac_c* i_coActorB, dCcD_GObjInf* i_coObjInfB) { + daHorse_c* a_this = (daHorse_c*)i_coActorA; + + a_this->coHitCallbackBoarJump(i_coActorB); + a_this->coHitCallbackBoarHit(i_coActorB, i_coObjInfB); + a_this->coHitCallbackCowHit(i_coActorB); +} + +/* 80838AC4-80838B78 000C84 00B4+00 1/1 0/0 0/0 .text daHorse_searchEnemy__FP10fopAc_ac_cPv */ +static void* daHorse_searchEnemy(fopAc_ac_c* i_actor, void* i_data) { + daHorse_c* horse_p = dComIfGp_getHorseActor(); + f32 search_dist = *(f32*)i_data; + + if (fopAcM_GetGroup(i_actor) == fopAc_ENEMY_e && fopAcM_GetName(i_actor) != PROC_E_WS && horse_p->current.pos.abs2XZ(i_actor->current.pos) < search_dist * search_dist) { + return i_actor; + } + + return NULL; +} + +/* 80838B78-80838F3C 000D38 03C4+00 1/1 0/0 0/0 .text modelCallBack__9daHorse_cFi */ +int daHorse_c::modelCallBack(int i_jntNo) { + if (i_jntNo == 0) { + if (m_procID == PROC_TOOL_DEMO_e) { + J3DTransformInfo* var_r24 = m_oldFrame->getOldFrameTransInfo(i_jntNo); + var_r24->mTranslate.x = 0.0f; + var_r24->mTranslate.z = 0.0f; + + MtxP m = m_model->getAnmMtx(i_jntNo); + m[0][3] = current.pos.x; + m[2][3] = current.pos.z; + cMtx_copy(m, J3DSys::mCurrentMtx); + } + } else if (i_jntNo == 3 || i_jntNo == 7 || i_jntNo == 11 || i_jntNo == 22 || i_jntNo == 24 || i_jntNo == 27 || i_jntNo == 31) { + if (i_jntNo == 11) { + MtxP m = m_model->getAnmMtx(11); + mDoMtx_stack_c::transS(m[0][3], m[1][3], m[2][3]); + mDoMtx_stack_c::YrotM(field_0x16f0); + mDoMtx_stack_c::transM(-m[0][3], -m[1][3], -m[2][3]); + mDoMtx_stack_c::concat(m); + } else { + mDoMtx_stack_c::copy(m_model->getAnmMtx(i_jntNo)); + } + + if (i_jntNo == 27 || i_jntNo == 31 || i_jntNo == 22 || i_jntNo == 24) { + mDoMtx_stack_c::ZrotM((shape_angle.x >> 1)); + } else { + mDoMtx_stack_c::ZrotM(-(shape_angle.x >> 1)); + } + + m_model->setAnmMtx(i_jntNo, mDoMtx_stack_c::get()); + mDoMtx_copy(m_model->getAnmMtx(i_jntNo), J3DSys::mCurrentMtx); + } else if ((!checkEndResetStateFlg0(ERFLG0_UNK_40) && (i_jntNo == 35 || i_jntNo == 36 || i_jntNo == 37)) || i_jntNo == 2 || i_jntNo == 26) { + Quaternion sp20; + Quaternion sp10; + BOOL spC; + s16 sp8; + if (i_jntNo == 2 || i_jntNo == 26) { + sp8 = -field_0x16fa; + spC = FALSE; + } else { + sp8 = field_0x16d4[i_jntNo - 35]; + spC = TRUE; + } + + JMAEulerToQuat(0, sp8, 0, &sp10); + mDoMtx_QuatConcat(m_oldFrame->getOldFrameQuaternion(i_jntNo), &sp10, &sp20); + + J3DTransformInfo* var_r27 = m_oldFrame->getOldFrameTransInfo(i_jntNo); + mDoMtx_stack_c::transS(var_r27->mTranslate.x, var_r27->mTranslate.y, var_r27->mTranslate.z); + mDoMtx_stack_c::quatM(m_oldFrame->getOldFrameQuaternion(i_jntNo)); + mDoMtx_stack_c::inverse(); + + MtxP m = m_model->getAnmMtx(i_jntNo); + cMtx_concat(m, mDoMtx_stack_c::get(), J3DSys::mCurrentMtx); + MTXQuat(m, (PSQuaternion*)&sp20); + m[0][3] = var_r27->mTranslate.x; + m[1][3] = var_r27->mTranslate.y; + m[2][3] = var_r27->mTranslate.z; + cMtx_concat(J3DSys::mCurrentMtx, m, J3DSys::mCurrentMtx); + cMtx_copy(J3DSys::mCurrentMtx, m); + + if (spC) { + *m_oldFrame->getOldFrameQuaternion(i_jntNo) = sp20; + } + } else if (i_jntNo == 34) { + setFootMatrix(); + } + + if (m_anmRatio[2].getAnmTransform() != NULL) { + if (i_jntNo == 10) { + m_anmRatio[2].setRatio(1.0f); + } else if (i_jntNo == 20) { + m_anmRatio[2].setRatio(0.0f); + } + } + + return 1; +} + +/* 80838F3C-80838F80 0010FC 0044+00 1/1 0/0 0/0 .text daHorse_modelCallBack__FP8J3DJointi + */ +static int daHorse_modelCallBack(J3DJoint* i_joint, int param_1) { + int jnt_no = i_joint->getJntNo(); + daHorse_c* a_this = (daHorse_c*)j3dSys.getModel()->getUserArea(); + + if (param_1 == 0) { + a_this->modelCallBack(jnt_no); + } + + return 1; +} + +/* 80838F80-80838F98 001140 0018+00 1/1 0/0 0/0 .text daHorse_searchSingleBoar__FP10fopAc_ac_cPv + */ +static void* daHorse_searchSingleBoar(fopAc_ac_c* i_actor, void* i_data) { + if (fopAcM_GetName(i_actor) == PROC_E_WB) { + *(fopAc_ac_c**)i_data = i_actor; + } + + return NULL; +} + +/* 80838F98-808392D8 001158 0340+00 1/1 0/0 0/0 .text createHeap__9daHorse_cFv */ +int daHorse_c::createHeap() { + m_modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 0x26); + JUT_ASSERT(0x487, m_modelData != 0); + + m_model = mDoExt_J3DModel__create(m_modelData, 0x80000, 0x11020084); + if (m_model == NULL) { + return 0; + } + + J3DTransformInfo* transInfoBuf = new J3DTransformInfo[38]; + if (transInfoBuf == NULL) { + return 0; + } + + Quaternion* quatBuf = new Quaternion[38]; + if (quatBuf == NULL) { + return 0; + } + + m_oldFrame = new mDoExt_MtxCalcOldFrame(transInfoBuf, quatBuf); + if (m_oldFrame == NULL) { + return 0; + } + + m_mtxcalc = new mDoExt_MtxCalcAnmBlendTblOld(m_oldFrame, 3, m_anmRatio); + if (m_mtxcalc == NULL) { + return 0; + } + + if (!m_btp.init(m_modelData, (J3DAnmTexPattern*)dComIfG_getObjectRes(l_arcName, 0x29), FALSE, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1)) { + return 0; + } + + m_hio = new daHorse_hio_c(); + if (m_hio == NULL) { + return 0; + } + + ResTIMG* texImg = (ResTIMG*)dComIfG_getObjectRes(l_arcName, 0x2C); + JUT_ASSERT(0x4B6, texImg != 0); + + if (!m_reinLine.init(1, 75, texImg, 0)) { + return 0; + } + + m_rein[0].field_0x8[1] = 35; + m_rein[1].field_0x8[1] = 35; + m_rein[2].field_0x8[1] = 5; + + daHorseRein_c* rein_p = m_rein; + for (int i = 0; i < 3; i++) { + rein_p->field_0x0[0] = new cXyz[rein_p->field_0x8[1]]; + if (rein_p->field_0x0[0] == NULL) { + return 0; + } + + rein_p->field_0x0[1] = new cXyz[rein_p->field_0x8[1]]; + if (rein_p->field_0x0[1] == NULL) { + return 0; + } + + rein_p++; + } + + return 1; +} + +/* 808393EC-8083940C 0015AC 0020+00 1/1 0/0 0/0 .text daHorse_createHeap__FP10fopAc_ac_c + */ +static int daHorse_createHeap(fopAc_ac_c* i_this) { + return ((daHorse_c*)i_this)->createHeap(); +} + +/* 8083940C-80839498 0015CC 008C+00 1/1 0/0 0/0 .text checkEnding__9daHorse_cFv */ +BOOL daHorse_c::checkEnding() { + return (daAlink_c::checkStageName("F_SP108") && dComIfG_play_c::getLayerNo(0) == 4) || + (daAlink_c::checkStageName("F_SP104") && dComIfG_play_c::getLayerNo(0) == 12 && dComIfGp_roomControl_getStayNo() == 1); +} + +/* 80839498-80839CFC 001658 0864+00 1/1 0/0 0/0 .text create__9daHorse_cFv */ +int daHorse_c::create() { + fopAcM_SetupActor(this, daHorse_c); + + if (checkEnding()) { + onStateFlg0(FLG0_UNK_8000); + } + + if (!checkStateFlg0(FLG0_UNK_8000) && + (((dComIfGs_isEventBit(dSv_event_flag_c::M_008) && !dComIfGs_isEventBit(dSv_event_flag_c::M_023)) && + (!daAlink_c::checkStageName("F_SP109") || !dComIfGs_isEventBit(dSv_event_flag_c::F_0066))) || + dComIfGs_isTmpBit(dSv_event_tmp_flag_c::NO_TELOP))) + { + return cPhs_ERROR_e; + } + + int phase_state = dComIfG_resLoad(&m_phase, l_arcName); + if (phase_state == cPhs_COMPLEATE_e) { + if (daAlink_getAlinkActorClass() == NULL) { + return cPhs_INIT_e; + } + + if (dComIfGp_getHorseActor() != NULL) { + return cPhs_ERROR_e; + } + + int room_no; + if (((fopAcM_GetParam(this) >> 8) & 0xF) == 1) { + room_no = fopAcM_GetRoomNo(this); + } else { + room_no = -1; + } + + m_checkSpecialWallHit = &daHorse_c::checkSpecialWallHitSubstance; + m_setReinPosHand = &daHorse_c::setReinPosHandSubstance; + m_setReinPosNormal = &daHorse_c::setReinPosNormalSubstance; + m_callHorse = &daHorse_c::callHorseSubstance; + m_setHorsePosAngle = &daHorse_c::setHorsePosAndAngleSubstance; + m_onRideFlg = &daHorse_c::onRideFlgSubstance; + m_offRideFlg = &daHorse_c::offRideFlgSubstance; + + if (!daAlink_getAlinkActorClass()->checkHorseStart() && !checkStateFlg0(FLG0_UNK_8000)) { + if (strcmp(dComIfGs_getHorseRestartStageName(), "") != 0 && (!dComIfGs_isEventBit(0x1580) || dComIfGs_isEventBit(0x601))) { + if (daAlink_c::checkStageName(dComIfGs_getHorseRestartStageName()) && (room_no == -1 || fopAcM_GetRoomNo(this) == dComIfGs_getHorseRestartRoomNo())) { + current.pos = dComIfGs_getHorseRestartPos(); + old.pos = current.pos; + shape_angle.y = dComIfGs_getHorseRestartAngleY(); + current.angle.y = shape_angle.y; + fopAcM_SetRoomNo(this, dComIfGs_getHorseRestartRoomNo()); + } else { + onStateFlg0(FLG0_NO_DRAW_WAIT); + } + } + } + + if (!fopAcM_entrySolidHeap(this, daHorse_createHeap, 0x6E60)) { + return cPhs_ERROR_e; + } + + if (daAlink_c::checkStageName("F_SP00") || daAlink_c::checkStageName("F_SP103") || daAlink_c::checkStageName("F_SP104") || daAlink_c::checkStageName("F_SP108") || daAlink_c::checkStageName("F_SP113")) { + onStateFlg0(FLG0_UNK_2000); + m_normalMaxSpeedF = daHorse_hio_c0::m.kakariko_max_speed; + m_lashAddSpeed = daHorse_hio_c0::m.kakariko_add_lash_speed; + } else { + m_normalMaxSpeedF = daHorse_hio_c0::m.max_speed; + m_lashAddSpeed = daHorse_hio_c0::m.add_lash_speed; + } + + field_0x16c2 = daHorse_hio_c0::m.max_turn; + m_flowID = shape_angle.z; + if (m_flowID == 0) { + m_flowID = 5000; + } + + shape_angle.z = 0; + current.angle.z = 0; + + m_path = dPath_GetRoomPath(fopAcM_GetParam(this) & 0xFF, room_no); + if (m_path != NULL) { + m_rodeoPath = dPath_GetNextRoomPath(m_path, room_no); + } + + m_rodeoPoint = 1; + + m_modelData->getJointNodePointer(0)->setMtxCalc(m_mtxcalc); + fopAcM_SetMtx(this, m_model->getBaseTRMtx()); + + m_cc_stts.Init(0xFE, 0xFF, this); + m_acchcir[0].SetWall(l_autoUpHeight + 0.1f, 60.0f); + m_acchcir[1].SetWall(150.0f, 60.0f); + m_acchcir[2].SetWall(240.0f, 60.0f); + m_acch.Set(this, 3, m_acchcir); + m_acch.SetWaterCheckOffset(500.0f); + + field_0x1764 = daHorse_hio_c0::m.walk_to_fastwalk_rate * m_normalMaxSpeedF; + m_lashMaxSpeedF = m_normalMaxSpeedF + m_lashAddSpeed; + + attention_info.distances[fopAc_attn_ETC_e] = 14; + attention_info.distances[fopAc_attn_SPEAK_e] = 38; + + m_sound.init(¤t.pos, &eyePos, 6, 1); + + resetBasAnime(); + m_anmRatio[2].setAnmTransform(NULL); + m_anmRatio[2].setRatio(0.0f); + m_anmIdx[2] = 0xFFFF; + + field_0x17dc.init(&m_acch, 60.0f, 200.0f); + gravity = -5.0f; + field_0x16ce = 0xD000; + field_0x16d0 = 0xF000; + + dCcD_Cyl* cyl_p = m_tgco_cyl; + for (int i = 0; i < 3; i++) { + cyl_p->Set(l_cylSrc); + cyl_p->SetStts(&m_cc_stts); + cyl_p++; + } + + m_tgco_cyl[1].SetR(35.0f); + + m_head_sph.Set(l_sphSrc); + m_head_sph.SetStts(&m_cc_stts); + + setServiceWaitTimer(); + + m_tgco_cyl[0].SetCoHitCallback(daHorse_coHitCallbackAll); + m_tgco_cyl[1].SetCoHitCallback(daHorse_coHitCallbackCowHit); + m_tgco_cyl[2].SetCoHitCallback(daHorse_coHitCallbackCowHit); + + m_boar_cyl.Set(l_cylSrc); + m_boar_cyl.SetStts(&m_cc_stts); + m_boar_cyl.SetCoHitCallback(daHorse_coHitCallbackBoarJump); + m_boar_cyl.SetCoVsGrp(0x20); + m_boar_cyl.OnCoNoCrrBit(); + m_boar_cyl.OnCoNoCoHitInfSet(); + m_boar_cyl.OffTgSetBit(); + m_boar_cyl.SetR(55.0f); + + m_at_cyl.Set(l_cylSrc); + m_at_cyl.SetStts(&m_cc_stts); + m_at_cyl.OffTgSetBit(); + m_at_cyl.OffCoSetBit(); + m_at_cyl.OnAtSetBit(); + m_at_cyl.SetH(150.0f); + m_at_cyl.SetR(60.0f); + + m_procID = PROC_NONE_e; + m_demoStaffId = -1; + this->model = m_model; + + procWaitInit(); + + m_model->setUserArea((u32)this); + for (u16 i = 0; i < 38; i++) { + m_modelData->getJointNodePointer(i)->setCallBack(daHorse_modelCallBack); + } + + setMatrix(); + m_model->calc(); + setBodyPart(); + field_0x17b8 = m_bodyEyePos; + + m_acch.CrrPos(dComIfG_Bgsp()); + setRoomInfo(1); + + dComIfGp_setHorseActor(this); + field_0x16e8 = shape_angle.y; + + cXyz* sp2C; + cXyz* sp28; + int j; + daHorseRein_c* rein_p = m_rein; + for (int i = 0; i < 3; i++) { + sp2C = rein_p->field_0x0[0]; + sp28 = rein_p->field_0x0[1]; + + for (j = 0; j < rein_p->field_0x8[1]; j++, sp2C++, sp28++) { + *sp2C = cXyz::Zero; + *sp28 = cXyz::Zero; + } + + rein_p++; + } + + field_0x170e = shape_angle.y; + field_0x1710 = field_0x170e; + + (this->*m_setReinPosNormal)(); + m_lashCnt = 6; + field_0x170a = shape_angle.y; + + if (daAlink_c::checkStageName("F_SP102") || daAlink_c::checkStageName("D_MN09B") || daAlink_c::checkStageName("F_SP123")) { + onStateFlg0(FLG0_UNK_4000000); + } + + fopAcM_setStageLayer(this); + } + + return phase_state; +} + +/* 80839CFC-80839D1C 001EBC 0020+00 1/0 0/0 0/0 .text daHorse_Create__FP10fopAc_ac_c */ +static int daHorse_Create(fopAc_ac_c* i_this) { + return ((daHorse_c*)i_this)->create(); +} + +/* 80839D1C-80839EBC 001EDC 01A0+00 2/2 0/0 0/0 .text setBasAnime__9daHorse_cFi */ +void daHorse_c::setBasAnime(int param_0) { + daPy_frameCtrl_c* frame_ctrl = &m_frameCtrl[param_0]; + + if (((mDoExt_transAnmBas*)m_anmRatio[param_0].getAnmTransform())->getBas() == NULL) { + resetBasAnime(); + } else if (field_0x16f6 == m_anmIdx[param_0] && field_0x175c * frame_ctrl->getRate() >= 0.0f) { + field_0x1144 = frame_ctrl; + } else { + field_0x1140 = ((mDoExt_transAnmBas*)m_anmRatio[param_0].getAnmTransform())->getBas(); + field_0x1144 = frame_ctrl; + field_0x16f6 = m_anmIdx[param_0]; + field_0x175c = frame_ctrl->getRate(); + + f32 var_f31; + if (field_0x1144->getAttribute() == 2) { + f32 temp_f30 = field_0x1144->getRate(); + var_f31 = field_0x1144->getFrame() - temp_f30; + + if (var_f31 <= (f32)field_0x1144->getStart()) { + var_f31 = (f32)field_0x1144->getEnd() - var_f31; + } else if (var_f31 >= (f32)field_0x1144->getEnd()) { + var_f31 -= (f32)field_0x1144->getEnd(); + } + } else { + var_f31 = 0.0f; + } + + m_sound.initAnime(field_0x1140, field_0x1144->getRate() >= 0.0f, field_0x1144->getLoop(), var_f31); + } +} + +/* 80839EBC-80839ED4 00207C 0018+00 2/2 0/0 0/0 .text resetBasAnime__9daHorse_cFv */ +void daHorse_c::resetBasAnime() { + field_0x16f6 = 0xFFFF; + field_0x1144 = NULL; +} + +/* 80839ED4-8083A20C 002094 0338+00 1/1 0/0 0/0 .text setDoubleAnime__9daHorse_cFfffUsUsf + */ +int daHorse_c::setDoubleAnime(f32 i_ratio, f32 i_anmSpeedA, f32 i_anmSpeedB, u16 i_anmIdxA, u16 i_anmIdxB, + f32 i_morf) { + J3DAnmTransform* temp_r26 = m_anmRatio[0].getAnmTransform(); + if (i_morf < 0.0f && (m_anmIdx[0] != ANM_HS_RUN_DASH || i_anmIdxA != ANM_HS_RUN_SLOW) && (m_anmIdx[0] != i_anmIdxA || m_anmIdx[1] != i_anmIdxB)) { + i_morf = 3.0f; + } + + if (i_anmIdxA == ANM_HS_TURN_LEFT || i_anmIdxA == ANM_HS_TURN_RIGHT) { + i_morf = -1.0f; + } else if (i_anmIdxA != ANM_HS_TURN_RIGHT_START && i_anmIdxA != ANM_HS_TURN_LEFT_START) { + if (m_anmIdx[0] == ANM_HS_TURN_LEFT) { + setNeckAnime(ANM_HS_NECK_WAITBACK_LEFT, 1.0f, 0.0f, -1); + i_morf = 8.0f; + } else if (m_anmIdx[0] == ANM_HS_TURN_RIGHT) { + setNeckAnime(ANM_HS_NECK_WAITBACK_RIGHT, 1.0f, 0.0f, -1); + i_morf = 8.0f; + } + } + + f32 var_f28; + if (temp_r26 != NULL && m_anmRatio[1].getAnmTransform() != NULL) { + var_f28 = temp_r26->getFrame() / temp_r26->getFrameMax(); + } else { + var_f28 = 0.0f; + } + + J3DAnmTransform* bckA = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, i_anmIdxA); + J3DAnmTransform* bckB = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, i_anmIdxB); + m_anmIdx[0] = i_anmIdxA; + m_anmIdx[1] = i_anmIdxB; + + m_anmRatio[0].setRatio(1.0f - i_ratio); + m_anmRatio[1].setRatio(i_ratio); + + f32 frame_maxA = bckA->getFrameMax(); + f32 frame_maxB = bckB->getFrameMax(); + f32 temp_f25 = 1.0f / frame_maxA; + f32 speed = i_anmSpeedA + (i_ratio * (((i_anmSpeedB * frame_maxA) / frame_maxB) - i_anmSpeedA)); + + m_frameCtrl[0].setFrameCtrl(bckA->getAttribute(), 0, frame_maxA, speed, var_f28 * frame_maxA); + bckA->setFrame(m_frameCtrl[0].getFrame()); + + m_frameCtrl[1].setFrameCtrl(bckB->getAttribute(), 0, frame_maxB, temp_f25 * (speed * frame_maxB), var_f28 * frame_maxB); + bckB->setFrame(m_frameCtrl[1].getFrame()); + + m_anmRatio[0].setAnmTransform(bckA); + m_anmRatio[1].setAnmTransform(bckB); + + if (i_morf >= 0.0f) { + m_oldFrame->initOldFrameMorf(i_morf, 0, 38); + m_morf_frame = i_morf; + } + + if (m_procID == PROC_WAIT_e || i_ratio < 0.5f) { + setBasAnime(0); + } else { + setBasAnime(1); + } + + return 1; +} + +/* 8083A20C-8083A3C4 0023CC 01B8+00 10/10 0/0 0/0 .text setSingleAnime__9daHorse_cFUsffsfi */ +int daHorse_c::setSingleAnime(u16 i_anmIdx, f32 i_speed, f32 i_startF, s16 i_endF, f32 i_morf, + BOOL i_isDemoAnm) { + J3DAnmTransform* bck; + if (i_isDemoAnm) { + if (i_anmIdx & 0x8000) { + JUT_ASSERT(0x6D4, 0); + } + + bck = (J3DAnmTransform*)dComIfG_getObjectIDRes(dStage_roomControl_c::getDemoArcName(), i_anmIdx); + i_anmIdx |= 0x8000; + } else { + bck = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, i_anmIdx); + } + + m_anmIdx[0] = i_anmIdx; + m_anmIdx[1] = 0xFFFF; + + m_anmRatio[0].setRatio(1.0f); + m_anmRatio[1].setRatio(0.0f); + m_anmRatio[0].setAnmTransform(bck); + m_anmRatio[1].setAnmTransform(NULL); + + s16 end_frame; + if (i_endF < 0) { + end_frame = bck->getFrameMax(); + } else { + end_frame = i_endF; + } + + f32 frame; + if (i_speed < 0.0f) { + frame = end_frame; + } else { + frame = i_startF; + } + + m_frameCtrl[0].setFrameCtrl(bck->getAttribute(), i_startF, end_frame, i_speed, frame); + bck->setFrame(frame); + + if (i_morf >= 0.0f) { + m_oldFrame->initOldFrameMorf(i_morf, 0, 38); + m_morf_frame = i_morf; + } + + setBasAnime(0); + return 1; +} + +/* 8083A3C4-8083A5AC 002584 01E8+00 1/1 0/0 0/0 .text animePlay__9daHorse_cFv */ +void daHorse_c::animePlay() { + if (m_frameCtrl[2].getRate() < 0.1f) { + resetNeckAnime(); + } + + if (daAlink_getAlinkActorClass()->checkHorseGetItem()) { + m_frameCtrl[0].setFrame(0); + } else { + m_frameCtrl[0].updateFrame(); + } + + m_anmRatio[0].getAnmTransform()->setFrame(m_frameCtrl[0].getFrame()); + + if (m_anmRatio[1].getAnmTransform() != NULL) { + if (daAlink_getAlinkActorClass()->checkHorseGetItem()) { + m_frameCtrl[1].setFrame(0); + } else { + m_frameCtrl[1].updateFrame(); + } + + m_anmRatio[1].getAnmTransform()->setFrame(m_frameCtrl[1].getFrame()); + } + + if (m_anmRatio[2].getAnmTransform() != NULL) { + m_frameCtrl[2].updateFrame(); + if (m_anmIdx[2] == ANM_HS_WAIT_03 && m_frameCtrl[2].checkPass(18)) { + m_sound.startCreatureVoice(Z2SE_HS_V_BURURU, m_reverb); + } + + m_anmRatio[2].getAnmTransform()->setFrame(m_frameCtrl[2].getFrame()); + } + + if (m_btpFrame != 0) { + m_btpFrame++; + if (m_btpFrame > m_btp.getBtpAnm()->getFrameMax()) { + m_btpFrame = 0; + } + } else if (cM_rnd() < 0.012f) { + m_btpFrame++; + } +} + +/* 8083A5AC-8083A890 00276C 02E4+00 1/1 0/0 0/0 .text checkDemoAction__9daHorse_cFv */ +int daHorse_c::checkDemoAction() { + if (checkStateFlg0(FLG0_CALL_HORSE)) { + setStickCallMove(); + offStateFlg0(FLG0_CALL_HORSE); + onStateFlg0(FLG0_UNK_10000000); + + shape_angle.y = cLib_targetAngleY(¤t.pos, &daAlink_getAlinkActorClass()->current.pos); + current.angle.y = shape_angle.y; + field_0x1728 = 0; + field_0x16b8 = 0; + m_callMoveTimer = 450; + speedF = m_normalMaxSpeedF; + return procMoveInit(); + } + + if (dComIfGp_getEvent().isOrderOK()) { + return 0; + } + + JUT_ASSERT(0x752, (m_demoMode < DEMO_LAST_e) || (m_demoMode == DEMO_NEW_ANM0_e)); + + if (m_demoMode == DEMO_NEW_ANM0_e) { + onStateFlg0(FLG0_UNK_80000); + if (m_procID == PROC_TOOL_DEMO_e) { + return 1; + } + + return procToolDemoInit(); + } + + if (m_demoMode == 7) { + onStateFlg0(FLG0_UNK_80000); + if (m_procID == PROC_JUMP_e || m_procID == PROC_LAND_e) { + return 1; + } + + return procJumpInit(0); + } + + if (m_demoMode == 16) { + onStateFlg0(FLG0_UNK_80000); + if (m_procID == PROC_STOP_e) { + return 1; + } + + if (m_procID == PROC_MOVE_e && checkStateFlg0(FLG0_UNK_2)) { + return procStopInit(); + } + + if (m_procID == PROC_WAIT_e) { + dComIfGp_evmng_cutEnd(m_demoStaffId); + } + + return 1; + } + + if (m_demoMode == 8 || m_demoMode == 14) { + onStateFlg0(FLG0_UNK_80000); + if (m_procID == PROC_STOP_e) { + return 1; + } + + return procStopInit(); + } + + if (m_demoMode == 9 || m_demoMode == 15) { + onStateFlg0(FLG0_UNK_80000); + if (m_procID == PROC_TURN_e) { + return 1; + } + + return procTurnInit(0); + } + + if (m_demoMode == 5) { + int temp_r3 = procWaitInit(); + if (temp_r3 != 0) { + m_oldFrame->initOldFrameMorf(0.0f, 0, 38); + } + + return temp_r3; + } + + if (checkStateFlg0(FLG0_UNK_80000) && (m_demoMode == 1 || m_demoMode == 2 || m_demoMode == 10 || m_demoMode == 3 || m_demoMode == 11 || m_demoMode == 4)) { + offStateFlg0(FLG0_UNK_80000); + if (fabsf(speedF) < 0.05f) { + return procWaitInit(); + } + + return procMoveInit(); + } + + return 0; +} + +/* 8083A890-8083AC7C 002A50 03EC+00 1/1 0/0 0/0 .text setStickRodeoMove__9daHorse_cFv */ +void daHorse_c::setStickRodeoMove() { + if (m_rodeoPath != NULL) { + Vec* path_pnt_pos = &m_rodeoPath->m_points[m_rodeoPoint].m_position; + + cXyz pos_vec(path_pnt_pos->x - current.pos.x, path_pnt_pos->y - current.pos.y, path_pnt_pos->z - current.pos.z); + f32 dist_to_pnt = pos_vec.absXZ(); + + m_padStickValue = 1.0f; + onEndResetStateFlg0(ERFLG0_MOVE_ACCEPT); + + BOOL var_r27; + if (dist_to_pnt < 400.0f && field_0x16bc == 0) { + if (((!checkStateFlg0(FLG0_UNK_1) && m_rodeoPath->m_points[m_rodeoPoint].mArg0 != 1) || m_rodeoPointCnt >= 15) && m_procID == PROC_MOVE_e) { + onEndResetStateFlg0(ERFLG0_UNK_200); + if (!checkStateFlg0(FLG0_UNK_1)) { + field_0x16bc = cM_rndF(3.0f); + } + } + + m_rodeoPoint++; + if (m_rodeoPath->m_num == m_rodeoPoint) { + m_rodeoPoint = 0; + } + + path_pnt_pos = &m_rodeoPath->m_points[m_rodeoPoint].m_position; + pos_vec.set(path_pnt_pos->x - current.pos.x, path_pnt_pos->y - current.pos.y, path_pnt_pos->z - current.pos.z); + + var_r27 = 1; + if (checkStateFlg0(FLG0_UNK_1)) { + m_rodeoPointCnt++; + } + } else { + if (dist_to_pnt < 400.0f && m_procID != PROC_STOP_e && m_procID != PROC_TURN_e && field_0x16bc != 0) { + field_0x16bc = 0; + } + var_r27 = 0; + } + + m_padStickAngleY = pos_vec.atan2sX_Z(); + + if (m_procID != PROC_TURN_e && cLib_distanceAngleS(m_padStickAngleY, shape_angle.y) > 0x5000) { + m_rodeoPoint++; + if (m_rodeoPath->m_num == m_rodeoPoint) { + m_rodeoPoint = 0; + } + + path_pnt_pos = &m_rodeoPath->m_points[m_rodeoPoint].m_position; + pos_vec.set(path_pnt_pos->x - current.pos.x, path_pnt_pos->y - current.pos.y, path_pnt_pos->z - current.pos.z); + m_padStickAngleY = pos_vec.atan2sX_Z(); + var_r27 = 1; + field_0x16bc = 0; + } + + if (var_r27) { + if ((s16)(m_padStickAngleY - shape_angle.y) > 0) { + offStateFlg0(FLG0_RODEO_LEFT); + } else { + onStateFlg0(FLG0_RODEO_LEFT); + } + } + } else { + m_padStickAngleY = 0; + m_padStickValue = 0.0f; + } +} + +/* 8083AC7C-8083ACEC 002E3C 0070+00 2/2 0/0 0/0 .text setStickCallMove__9daHorse_cFv */ +void daHorse_c::setStickCallMove() { + m_padStickValue = 1.0f; + + u32 mode = 3; + setDemoMoveData(&mode, &daAlink_getAlinkActorClass()->current.pos); + m_padStickAngleY = m_demoMoveAngle; + + if (m_callMoveTimer != 0) { + m_callMoveTimer--; + } +} + +/* 8083ACEC-8083AEC0 002EAC 01D4+00 2/2 0/0 0/0 .text setDemoMoveData__9daHorse_cFPUlPC4cXyz */ +void daHorse_c::setDemoMoveData(u32* i_mode, cXyz const* i_pos) { + cXyz pos_vec; + pos_vec = *i_pos - current.pos; + + if (field_0x1728 != 0 && (*i_mode == 4 || *i_mode == 11 || *i_mode == 3)) { + m_demoMoveAngle = pos_vec.atan2sX_Z(); + if (abs((s16)(m_demoMoveAngle - shape_angle.y)) > 0x4000 && m_demoStaffId != -1) { + dComIfGp_evmng_cutEnd(m_demoStaffId); + } + } else { + f32 temp_f29 = SQUARE(20.0f); + f32 temp_f28 = SQUARE(40.0f); + f32 temp_f30 = SQUARE(100.0f); + + f32 dist_xz2 = pos_vec.abs2XZ(); + if (dist_xz2 < temp_f29 || (dist_xz2 < temp_f30 && fabsf(speedF) <= 0.05f)) { + *i_mode = 1; + speedF = 0.0f; + m_padStickValue = 0.0f; + } else if (((*i_mode == 2 || *i_mode == 10) && dist_xz2 < temp_f28) || dist_xz2 < temp_f30) { + if (*i_mode == 10) { + *i_mode = 10; + } else { + *i_mode = 2; + } + } + + if ((0.5f * (speedF * speedF)) / daHorse_hio_c0::m.stopping_deceleration > JMAFastSqrt(dist_xz2)) { + m_padStickValue = 0.0f; + } + + m_demoMoveAngle = pos_vec.atan2sX_Z(); + } +} + +/* 8083AEC0-8083B578 003080 06B8+00 1/1 0/0 0/0 .text setDemoData__9daHorse_cFv */ +void daHorse_c::setDemoData() { + if (!dComIfGp_event_runCheck()) { + offStateFlg0(FLG0_UNK_2000000); + } + + if (dComIfGp_getEvent().isOrderOK()) { + if (checkHorseDemoMode()) { + u32 old_demoMode = m_demoMode; + field_0x16b8 = 0; + m_demoMode = 0; + field_0x1728 = 0; + m_demoStaffId = -1; + m_demoStickR = 0.0f; + + offStateFlg0(FLG0_UNK_80000); + + if (checkStateFlg0(FLG0_UNK_400)) { + offStateFlg0(FLG0_UNK_400); + speedF = field_0x1794; + } + + if (old_demoMode != 12 && old_demoMode != 15 && old_demoMode != 13) { + if (fabsf(speedF) < 0.05f) { + procWaitInit(); + } else { + procMoveInit(); + } + } + } + } else { + m_lashAccelerationTime = 0; + dDemo_actor_c* demo_actor_p = dDemo_c::getActor(demoActorID); + cXyz* pos_p = NULL; + u32 mode = 1; + s16 angle; + int* prm_p = NULL; + m_demoStaffId = dComIfGp_evmng_getMyStaffId("Horse", this, 0); + + if (demo_actor_p != NULL) { + demo_actor_p->setModel(m_model); + m_demoStaffId = -1; + + if (field_0x16b8 != 1) { + field_0x16b8 = 1; + procWaitInit(); + } + + if (demo_actor_p->checkEnable(dDemo_actor_c::ENABLE_ANM_e)) { + mode = demo_actor_p->getAnmId(); + } + + if (demo_actor_p->checkEnable(dDemo_actor_c::ENABLE_TRANS_e)) { + pos_p = &demo_actor_p->getTrans(); + } else { + pos_p = ¤t.pos; + } + + if (demo_actor_p->checkEnable(dDemo_actor_c::ENABLE_ROTATE_e)) { + angle = demo_actor_p->getRatate().y; + } else { + angle = shape_angle.y; + } + + if (demo_actor_p->checkEnable(1)) { + int sp20, sp1C, sp18; + u16 sp8; + while (demo_actor_p->getDemoIDData(&sp20, &sp1C, &sp18, &sp8, NULL) != 0) { + if (sp20 == 0 && sp1C == 0) { + if (sp18 == 2) { + if (sp8 != 0) { + onEndResetStateFlg0(ERFLG0_UNK_40); + } + } else if (sp18 == 3) { + if (sp8 != 0) { + onResetStateFlg0(RFLG0_UNK_1); + } + } else if (sp18 == 4) { + if (sp8 != 0) { + onResetStateFlg0(RFLG0_UNK_80); + } + } else if (sp18 == 5) { + if (sp8 != 0) { + onResetStateFlg0(RFLG0_UNK_100); + } + } else if (sp18 == 6 && sp8 != 0) { + onResetStateFlg0(RFLG0_UNK_200); + } + } + } + } + } else { + if (!checkHorseDemoMode()) { + field_0x16b8 = 2; + } + + if (m_demoStaffId != -1) { + char* cutname = dComIfGp_getPEvtManager()->getMyNowCutName(m_demoStaffId); + if (cutname != NULL) { + mode = ((cutname[0] - '0') * 100) + ((cutname[1] - '0') * 10) + (cutname[2] - '0'); + + pos_p = dComIfGp_evmng_getMyXyzP(m_demoStaffId, "pos"); + if (pos_p == NULL) { + pos_p = dComIfGp_evmng_getGoal(); + } + + int* angle_p = dComIfGp_evmng_getMyIntegerP(m_demoStaffId, "angle"); + if (angle_p != NULL) { + angle = *angle_p; + } else { + angle = shape_angle.y; + } + + prm_p = dComIfGp_evmng_getMyIntegerP(m_demoStaffId, "prm0"); + + if (dComIfGp_evmng_getMyIntegerP(m_demoStaffId, "ride") != NULL && !checkStateFlg0(FLG0_UNK_1)) { + mode = 1; + } + } + } + } + + if (field_0x16b8 == 1 || (field_0x16b8 == 2 && m_demoStaffId != -1)) { + if (prm_p != NULL) { + field_0x1728 = *prm_p; + } else { + field_0x1728 = 0; + } + + if (mode == 5) { + speedF = 0.0f; + m_cc_stts.ClrCcMove(); + i_setHorsePosAndAngle(pos_p, angle); + m_demoMoveAngle = angle; + } else if (mode == 2 || mode == 10 || mode == 3 || mode == 11 || mode == 4) { + setDemoMoveData(&mode, pos_p); + } else if (field_0x16b8 == 2 && mode == 7) { + f32* dis_p = dComIfGp_evmng_getMyFloatP(m_demoStaffId, "disXZ"); + if (dis_p != NULL) { + field_0x1768 = *dis_p; + field_0x1770 = field_0x1768; + } + + dis_p = dComIfGp_evmng_getMyFloatP(m_demoStaffId, "disY"); + if (dis_p != NULL) { + field_0x176c = *dis_p; + } + } + + m_demoMode = mode; + if (m_demoMode == 1) { + speedF = 0.0f; + } + } else if (field_0x16b8 == 3) { + if (m_demoMode == 14 && !checkStateFlg0(FLG0_UNK_400)) { + if (checkStateFlg0(FLG0_UNK_2)) { + onStateFlg0(FLG0_UNK_400); + field_0x1794 = speedF; + } else { + m_demoMode = 1; + } + + speedF = 0.0f; + } + + if (m_demoMode == 2 || m_demoMode == 10 || m_demoMode == 3 || m_demoMode == 11 || m_demoMode == 4) { + setDemoMoveData(&m_demoMode, &m_demoPos0); + } + + if (m_demoMode == 5) { + speedF = 0.0f; + m_cc_stts.ClrCcMove(); + } else if (m_demoMode == 1) { + speedF = 0.0f; + } + } else if (checkStateFlg0(FLG0_RODEO_MODE)) { + m_demoMode = 13; + } else { + if ((m_demoMode != 0 || mode != 1) && !checkStateFlg0(FLG0_UNK_10000000) && (m_procID != PROC_STOP_e || field_0x171c == 0)) { + speedF = 0.0f; + } + + m_demoMode = mode; + } + + if (m_demoStaffId != -1 && (m_demoMode == 1 || m_demoMode == 6 || m_demoMode == 5)) { + dComIfGp_evmng_cutEnd(m_demoStaffId); + } + } +} + +/* 8083B578-8083B600 003738 0088+00 4/4 0/0 0/0 .text acceptPlayerRide__9daHorse_cFv */ +void daHorse_c::acceptPlayerRide() { + if (!checkStateFlg0(FLG0_UNK_1) && !daPy_py_c::i_checkNowWolf()) { + int angle = fopAcM_seenPlayerAngleY(this); + if (angle > 0x2800 && (!daAlink_getAlinkActorClass()->checkHorseZelda() || angle < 0x5800)) { + attention_info.flags |= 0x80; + } + } +} + +/* 8083B600-8083B828 0037C0 0228+00 1/1 0/0 0/0 .text setStickData__9daHorse_cFv */ +void daHorse_c::setStickData() { + if (checkStateFlg0(daHorse_FLG0(FLG0_RODEO_MODE | FLG0_UNK_10000000))) { + field_0x16c2 = 2000; + } else { + field_0x16c2 = daHorse_hio_c0::m.max_turn; + } + + if (dComIfGp_event_runCheck()) { + if (field_0x16b8 == 1 || field_0x16b8 == 3 || (field_0x16b8 == 2 && m_demoStaffId != -1)) { + if (m_demoMode == 2 || m_demoMode == 10 || m_demoMode == 4 || m_demoMode == 11 || m_demoMode == 3) { + m_padStickValue = 1.0f; + } else if (m_demoMode == 6) { + m_padStickValue = m_demoStickR; + } else { + m_padStickValue = 0.0f; + } + + m_padStickAngleY = m_demoMoveAngle; + } else if (checkStateFlg0(FLG0_RODEO_MODE)) { + setStickRodeoMove(); + } else if (checkStateFlg0(FLG0_UNK_10000000)) { + setStickCallMove(); + } else { + m_padStickValue = 0.0f; + m_padStickAngleY = 0; + } + } else if (checkStateFlg0(FLG0_UNK_10000000)) { + setStickCallMove(); + } else if (checkStateFlg0(FLG0_RODEO_MODE)) { + if (!checkStateFlg0(FLG0_UNK_400000)) { + onStateFlg0(FLG0_UNK_400000); + mDoAud_subBgmStart(Z2BGM_RODEO); + } + setStickRodeoMove(); + } else { + if (checkStateFlg0(FLG0_UNK_1) && !daAlink_getAlinkActorClass()->checkHorseGetOffMode()) { + if (!daAlink_getAlinkActorClass()->checkHorseHangMode()) { + if (!checkStateFlg0(FLG0_PLAYER_BACK_RIDE_LASH)) { + m_padStickValue = mDoCPd_c::getStickValue(PAD_1); + + s16 stick_angle = mDoCPd_c::getStickAngle3D(PAD_1); + m_padStickAngleY = (dCam_getControledAngleY(dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0))) + 0x10000 + stick_angle) - 0x8000; + return; + } + } + } + + if (checkEndResetStateFlg0(ERFLG0_RIDE_RUN_FLG)) { + m_padStickValue = 1.0f; + m_padStickAngleY = shape_angle.y; + } else { + m_padStickValue = 0.0f; + m_padStickAngleY = 0; + } + } +} + +/* 8083B828-8083B82C 0039E8 0004+00 1/1 0/0 0/0 .text setTurnStartVibration__9daHorse_cFv + */ +void daHorse_c::setTurnStartVibration() {} + +/* 8083B82C-8083B830 0039EC 0004+00 1/1 0/0 0/0 .text setTurnVibration__9daHorse_cFv */ +void daHorse_c::setTurnVibration() {} + +/* 8083B830-8083BF48 0039F0 0718+00 6/6 0/0 0/0 .text setMoveAnime__9daHorse_cFf */ +void daHorse_c::setMoveAnime(f32 i_morf) { + daPy_frameCtrl_c* frame_ctrl = &m_frameCtrl[0]; + + f32 run_anm_speed, fastrun_anm_speed; + if (checkStateFlg0(FLG0_UNK_2000)) { + run_anm_speed = daHorse_hio_c0::m.kakariko_run_anm_speed; + fastrun_anm_speed = daHorse_hio_c0::m.kakariko_fastrun_anm_speed; + } else { + run_anm_speed = daHorse_hio_c0::m.run_anm_speed; + fastrun_anm_speed = daHorse_hio_c0::m.fast_run_anm_speed; + } + + if (m_anmIdx[0] == ANM_HS_RUN_DASH && !m_frameCtrl[0].checkAnmEnd()) { + field_0x16b7 = 0; + if (frame_ctrl->checkPass(10) || frame_ctrl->checkPass(34)) { + field_0x16b6 |= 4; + } + + if (frame_ctrl->checkPass(12) || frame_ctrl->checkPass(35)) { + field_0x16b6 |= 8; + } else if (frame_ctrl->checkPass(14)) { + field_0x16b6 |= 1; + } else if (frame_ctrl->checkPass(19)) { + field_0x16b6 |= 2; + } + return; + } + + f32 var_f31; + f32 ratio; + if (speedF >= 0.0f) { + var_f31 = speedF * (1.0f / m_normalMaxSpeedF); + } else { + var_f31 = speedF * (1.0f / daHorse_hio_c0::m.max_backward_speed); + } + + if (var_f31 < daHorse_hio_c0::m.walk_to_fastwalk_rate) { + if (checkStateFlg0(FLG0_UNK_2)) { + offStateFlg0(FLG0_UNK_2); + i_morf = daHorse_hio_c0::m.walk_run_interpolation; + } + + if (var_f31 < 0.0f && m_anmIdx[0] == ANM_HS_WALK_START && !m_frameCtrl[0].checkAnmEnd()) { + return; + } + + if (var_f31 < -daHorse_hio_c0::m.backward_idle_to_walk_rate) { + setDoubleAnime(1.0f, daHorse_hio_c0::m.backwalk_anm_speed, daHorse_hio_c0::m.backwalk_anm_speed, ANM_HS_BACK_WALK, ANM_HS_BACK_WALK, i_morf); + } else if (var_f31 < 0.0f) { + ratio = 1.0f - ((var_f31 + daHorse_hio_c0::m.backward_idle_to_walk_rate) / daHorse_hio_c0::m.backward_idle_to_walk_rate); + setDoubleAnime(ratio, daHorse_hio_c0::m.wait_anm_speed, daHorse_hio_c0::m.backwalk_anm_speed, ANM_HS_WAIT_01, ANM_HS_BACK_WALK, i_morf); + } else if (var_f31 < daHorse_hio_c0::m.wait_to_walk_rate) { + int sp8 = cLib_distanceAngleS(m_padStickAngleY, shape_angle.y); + if (checkWaitTurn() && checkInputOnR() && sp8 >= 0x800 && sp8 <= 0x6000) { + f32 anm_speed = 1.0f; + u16 anm_idx; + resetNeckAnime(); + + if ((s16)(shape_angle.y - field_0x16e8) > 0) { + if (m_anmIdx[0] == ANM_HS_TURN_LEFT_START) { + if (m_frameCtrl[0].checkAnmEnd()) { + anm_idx = ANM_HS_TURN_LEFT; + } else { + setTurnStartVibration(); + return; + } + } else if (m_anmIdx[0] == ANM_HS_TURN_LEFT) { + anm_idx = ANM_HS_TURN_LEFT; + anm_speed = 0.5f + ((0.5f / (f32)field_0x16c2) * (f32)abs((s16)(shape_angle.y - field_0x16e8))); + if (anm_speed > 1.0f) { + anm_speed = 1.0f; + } + setTurnVibration(); + } else { + m_anmRatio[0].getAnmTransform()->setFrame(0); + anm_idx = ANM_HS_TURN_LEFT_START; + } + } else if (m_anmIdx[0] == ANM_HS_TURN_RIGHT_START) { + if (m_frameCtrl[0].checkAnmEnd()) { + anm_idx = ANM_HS_TURN_RIGHT; + } else { + setTurnStartVibration(); + return; + } + } else { + if (m_anmIdx[0] == ANM_HS_TURN_RIGHT) { + anm_idx = ANM_HS_TURN_RIGHT; + anm_speed = 0.5f + ((0.5f / (f32)field_0x16c2) * (f32)abs((s16)(shape_angle.y - field_0x16e8))); + if (anm_speed > 1.0f) { + anm_speed = 1.0f; + } + setTurnVibration(); + } else { + m_anmRatio[0].getAnmTransform()->setFrame(0); + anm_idx = ANM_HS_TURN_RIGHT_START; + } + } + + setDoubleAnime(0.0f, anm_speed, anm_speed, anm_idx, anm_idx, i_morf); + } else { + ratio = var_f31 / daHorse_hio_c0::m.wait_to_walk_rate; + if (m_procID != PROC_WAIT_e && speedF > 0.05f) { + ratio = daHorse_hio_c0::m.field_0xdc + (ratio * (1.0f - daHorse_hio_c0::m.field_0xdc)); + } + setDoubleAnime(ratio, daHorse_hio_c0::m.wait_anm_speed, daHorse_hio_c0::m.walk_anm_speed, ANM_HS_WAIT_01, ANM_HS_WALK_SLOW, i_morf); + } + } else { + ratio = (var_f31 - daHorse_hio_c0::m.wait_to_walk_rate) / (daHorse_hio_c0::m.walk_to_fastwalk_rate - daHorse_hio_c0::m.wait_to_walk_rate); + setDoubleAnime(ratio, daHorse_hio_c0::m.walk_anm_speed, daHorse_hio_c0::m.fast_walk_anm_speed, ANM_HS_WALK_SLOW, ANM_HS_WALK_FAST, i_morf); + } + } else if (var_f31 < daHorse_hio_c0::m.fastwalk_to_run_rate) { + if (checkStateFlg0(FLG0_UNK_2) == 0) { + setDoubleAnime(1.0f, daHorse_hio_c0::m.fast_walk_anm_speed, daHorse_hio_c0::m.fast_walk_anm_speed, ANM_HS_WALK_FAST, ANM_HS_WALK_FAST, i_morf); + } else { + setDoubleAnime(0.0f, run_anm_speed, run_anm_speed, ANM_HS_RUN_SLOW, ANM_HS_RUN_SLOW, i_morf); + } + } else { + if (!checkStateFlg0(FLG0_UNK_2)) { + onStateFlg0(FLG0_UNK_2); + if (m_lashAccelerationTime == 0) { + onResetStateFlg0(RFLG0_UNK_4); + setSingleAnime(ANM_HS_RUN_DASH, daHorse_hio_c0::m.dash_anm_speed, 0.0f, -1, 3.0f, 0); + } + return; + } + + if (var_f31 < daHorse_hio_c0::m.run_to_fastrun_rate) { + ratio = 0.1f * ((var_f31 - daHorse_hio_c0::m.fastwalk_to_run_rate) / (daHorse_hio_c0::m.run_to_fastrun_rate - daHorse_hio_c0::m.fastwalk_to_run_rate)); + } else { + ratio = 0.1f + ((var_f31 - daHorse_hio_c0::m.run_to_fastrun_rate) / ((1.0f + (m_lashAddSpeed / m_normalMaxSpeedF)) - daHorse_hio_c0::m.run_to_fastrun_rate)); + if (ratio > 1.0f) { + ratio = 1.0f; + } + } + + setDoubleAnime(ratio, run_anm_speed, fastrun_anm_speed, ANM_HS_RUN_SLOW, ANM_HS_RUN_FAST, i_morf); + } + + if (checkStateFlg0(FLG0_UNK_2)) { + onResetStateFlg0(RFLG0_UNK_20); + + if (m_lashAccelerationTime != 0 || (checkStateFlg0(FLG0_RODEO_MODE) && checkStateFlg0(FLG0_UNK_1))) { + m_at_cyl.SetAtSpl(dCcG_At_Spl_UNK_1); + m_at_cyl.SetAtHitMark(3); + m_at_cyl.SetAtAtp(2); + } else { + m_at_cyl.SetAtSpl(dCcG_At_Spl_UNK_0); + m_at_cyl.SetAtHitMark(1); + m_at_cyl.SetAtAtp(1); + } + } + + if (checkStateFlg0(FLG0_UNK_2)) { + field_0x16b7 = 0; + + for (int i = 0; i < 4; i++) { + static f32 const footEffectRate[4] = { + 0.27f, 0.4f, 0.9f, 0.17f + }; + + if (frame_ctrl->checkPass(footEffectRate[i] * frame_ctrl->getEnd())) { + field_0x16b6 |= (1 << i); + } + } + } +} + +/* 8083BF48-8083CA80 004108 0B38+00 6/6 0/0 0/0 .text checkHorseNoMove__9daHorse_cFi */ +// NONMATCHING - some float regalloc, equivalent +int daHorse_c::checkHorseNoMove(int param_0) { + cXyz sp50; + cXyz sp44; + + if (checkStateFlg0(FLG0_UNK_2000000)) { + return 0; + } + + if (checkPlayerHeavy()) { + return 3; + } + + s16 spA; + if (daAlink_c::getMoveBGActorName(m_acch.m_gnd, 0) == PROC_OBJ_BRG) { + spA = 0; + } else if (m_procID == PROC_TURN_e && dComIfG_Bgsp().ChkPolySafe(m_acch.m_gnd)) { + spA = fopAcM_getPolygonAngle(m_acch.m_gnd, shape_angle.y); + } else { + spA = field_0x1714; + } + + f32 sp28; + f32 var_f31; + f32 var_f30; + f32 var_f29; + f32 var_f28; + f32 var_f27; + + if (param_0 != 0) { + if (checkEndResetStateFlg0(ERFLG0_UNK_200) || (checkStateFlg0(FLG0_UNK_100000) && (m_procID == PROC_MOVE_e || m_procID == PROC_TURN_e || m_procID == PROC_STOP_e) && ((current.pos.z < -33500.0f && abs(shape_angle.y) > 0x4000) || (current.pos.z > -20500.0f && abs(shape_angle.y) < 0x4000)))) { + return 3; + } + + var_f31 = fabsf(speedF) / m_normalMaxSpeedF; + if (var_f31 > 1.0f) { + var_f31 = 1.0f; + } else if (m_procID == PROC_WAIT_e || m_procID == PROC_STOP_e) { + var_f31 = 0.5f; + } + var_f31 *= var_f31; + + var_f31 = 200.0f + (300.0f * var_f31); + var_f29 = cM_ssin(current.angle.y); + var_f28 = cM_scos(current.angle.y); + sp28 = -var_f31 * cM_ssin(spA); + var_f27 = var_f31 * cM_scos(spA); + } else { + var_f29 = -cM_ssin(current.angle.y); + var_f28 = -cM_scos(current.angle.y); + sp28 = 200.0f * cM_ssin(spA); + var_f27 = 200.0f * cM_scos(spA); + } + + daAlink_c* player = daAlink_getAlinkActorClass(); + cXyz start(current.pos.x, current.pos.y + m_acchcir[0].GetWallH(), current.pos.z); + + if (daAlink_c::getMoveBGActorName(m_acch.m_gnd, 0) == PROC_OBJ_BRG) { + start.y = 200.0f + current.pos.y; + } + + cXyz end(start.x + (var_f27 * var_f29), start.y + sp28, start.z + (var_f27 * var_f28)); + int rt = 0; + m_linechk.Set(&start, &end, this); + + onStateFlg0(FLG0_UNK_100); + BOOL line_cross = dComIfG_Bgsp().LineCross(&m_linechk); + offStateFlg0(FLG0_UNK_100); + + if (line_cross) { + cM3dGPla plane; + dComIfG_Bgsp().GetTriPla(m_linechk, &plane); + sp50 = m_linechk.i_GetCross(); + + if (cBgW_CheckBWall(plane.mNormal.y) && ((param_0 != 0 && cLib_distanceAngleS(plane.mNormal.atan2sX_Z(), shape_angle.y) > 0x6000) || (param_0 == 0 && cLib_distanceAngleS(plane.mNormal.atan2sX_Z(), shape_angle.y) < 0x2000))) { + m_linechk.Set(&start, &end, this); + if (m_procID == PROC_MOVE_e && param_0 != 0 && !dComIfG_Bgsp().LineCross(&m_linechk)) { + if (sp50.abs2(start) < 23716.0f) { + return 4; + } + return 0; + } + + if (start.abs(sp50) < 300.0f) { + return 2; + } + rt = 1; + } + } + + if (m_procID == PROC_TURN_e) { + var_f30 = 0.0f; + } else { + var_f30 = 50.0f; + } + + sp50.y = 200.0f + current.pos.y; + + f32 sp18; + if (param_0 != 0 && speedF > (0.5f * m_normalMaxSpeedF)) { + sp18 = 500.0; + } else { + sp18 = 200.0f; + } + + while (var_f30 < sp18) { + sp50.x = current.pos.x + (var_f30 * var_f29); + sp50.z = current.pos.z + (var_f30 * var_f28); + + if (fopAcM_gc_c::gndCheck(&sp50)) { + cM3dGPla sp5C; + fopAcM_gc_c::getTriPla(&sp5C); + + s16 sp8 = cM_atan2s(sp5C.mNormal.absXZ(), sp5C.mNormal.y); + f32 sp14 = cM_deg2s(daHorse_hio_c0::m.floor_angle_limit); + + if (!checkStateFlg0(FLG0_UNK_1)) { + for (int i = 0; i < m_scnChg_num; i++) { + if (m_scnChg_buffer[i]->checkArea(&sp50)) { + if (var_f30 <= 101.0f) { + if (param_0 != 0 && !player->checkHorseGetOffMode()) { + onStateFlg0(FLG0_UNK_40000); + field_0x1704 = 30; + } + return 2; + } + return 1; + } + } + } + + if (fopAcM_gc_c::getHorseNoEntry() || + (!checkStateFlg0(FLG0_UNK_1) && dComIfG_Bgsp().GetExitId(*fopAcM_gc_c::getGroundCheck()) != 0x3F) || + (sp8 > sp14 && daAlink_c::getMoveBGActorName(*fopAcM_gc_c::getGroundCheck(), 1) != PROC_OBJ_BRG && dComIfG_Bgsp().GetSpecialCode(*fopAcM_gc_c::getGroundCheck()) != 2)) + { + if (var_f30 <= 101.0f) { + if (sp8 > sp14 && param_0 != 0) { + onStateFlg0(FLG0_UNK_40000); + field_0x1704 = 30; + } + return 2; + } + return 1; + } + + if (fopAcM_wt_c::waterCheck(&sp50)) { + if (fopAcM_wt_c::getWaterY() - fopAcM_gc_c::getGroundY() > daHorse_hio_c0::m.water_depth_limit) { + if (var_f30 <= 101.0f) { + if (param_0 != 0) { + onStateFlg0(FLG0_UNK_40000); + field_0x1704 = 30; + } + return 2; + } + return 1; + } + } + } + + if (daTagHstop_c::getTop() != NULL) { + for (daTagHstop_c* hstop = daTagHstop_c::getTop(); hstop != NULL; hstop = hstop->getNext()) { + if (hstop->getActiveFlg()) { + fpoAcM_relativePos(hstop, &sp50, &sp44); + + if (sp44.y >= -200.0f && sp44.y <= (400.0f + hstop->scale.y) && fabsf(sp44.x) <= hstop->scale.x && fabsf(sp44.z) <= hstop->scale.z) { + if (param_0 != 0 && speedF > 0.0f && m_procID == PROC_MOVE_e) { + onStateFlg0(FLG0_UNK_200); + hstop->onTagStop(); + } + + if (var_f30 <= 101.0f) { + return 2; + } + return 1; + } + } + } + } + + var_f30 += 25.0f; + } + + return rt; +} + +/* 8083CA80-8083CB38 004C40 00B8+00 1/1 0/0 0/0 .text checkTurnPlayerState__9daHorse_cFv + */ +BOOL daHorse_c::checkTurnPlayerState() { + daAlink_c* player = daAlink_getAlinkActorClass(); + return player->checkHorseBackInput() && !player->checkHorseWaitLashAnime() && (!player->checkHorseWalkStartAnm() || player->getBaseAnimeFrame() < 1.0f); +} + +/* 8083CB38-8083D748 004CF8 0C10+00 2/2 0/0 0/0 .text setSpeedAndAngle__9daHorse_cFv */ +int daHorse_c::setSpeedAndAngle() { + int var_r28 = checkHorseNoMove(1); + if (var_r28 == 3) { + if (checkStateFlg0(FLG0_UNK_2)) { + return 3; + } + return 1; + } + + if (var_r28 == 4) { + return 5; + } + + if (var_r28 == 2 && m_procID == PROC_MOVE_e) { + if (speedF >= 0.0f) { + if (speedF <= daHorse_hio_c0::m.cliff_rise_rate) { + onStateFlg0(FLG0_UNK_40000000); + } + return 4; + } + } + + daAlink_c* player = daAlink_getAlinkActorClass(); + + if (player->checkHorseSubjectivity() && checkStateFlg0(FLG0_UNK_1)) { + if (speedF < 0.0f) { + var_r28 = checkHorseNoMove(0); + if (var_r28 == 2) { + speedF = 0.0f; + } else if (var_r28 == 1) { + cLib_chaseF(&speedF, 0.0f, daHorse_hio_c0::m.stopping_deceleration); + } + } else if (m_lashAccelerationTime == 0 && speedF > m_normalMaxSpeedF) { + cLib_chaseF(&speedF, m_normalMaxSpeedF, daHorse_hio_c0::m.stopping_deceleration); + } + + if (checkStateFlg0(FLG0_UNK_200000)) { + if (abs(current.angle.y) < 0x4000) { + cLib_addCalcAngleS(¤t.angle.y, 0, 2, 0x2000, 0x100); + } else { + cLib_addCalcAngleS(¤t.angle.y, -0x8000, 2, 0x2000, 0x100); + } + cLib_addCalcAngleS(&shape_angle.y, current.angle.y, 2, 0x2000, 0x100); + } + + return 0; + } + + s16 spA; + if (checkInputOnR()) { + spA = m_padStickAngleY - shape_angle.y; + } else { + spA = 0; + } + + int var_r27; + if (abs(spA) > 0x6000 && !checkStateFlg0(FLG0_UNK_10000000)) { + var_r27 = 1; + } else if (spA >= 0x3000) { + var_r27 = 2; + } else if (spA <= -0x3000) { + var_r27 = 3; + } else { + var_r27 = 0; + } + + if (checkInputOnR()) { + if (checkStateFlg0(FLG0_UNK_40000) && (m_anmIdx[2] != ANM_HS_WAIT_03 || m_frameCtrl[2].getFrame() >= 18.0f)) { + if (var_r27 == 1) { + cLib_addCalcAngleS(¤t.angle.y, m_padStickAngleY + 0x8000, 5, field_0x16c2, daHorse_hio_c0::m.min_turn); + } else { + cLib_addCalcAngleS(¤t.angle.y, m_padStickAngleY, 5, field_0x16c2, daHorse_hio_c0::m.min_turn); + } + + if (!checkStateFlg0(daHorse_FLG0(FLG0_UNK_100000 | FLG0_UNK_200000))) { + shape_angle.y = current.angle.y; + } + } else if (var_r27 != 1) { + if (checkStateFlg0(FLG0_UNK_10000000) || (!player->checkHorseWalkStartAnm() && (!player->checkHorseWaitLashAnime() || checkEndResetStateFlg0(ERFLG0_MOVE_ACCEPT)))) { + if (speedF <= 0.05f) { + f32 var_f28 = m_padStickValue; + if (var_f28 < 0.5f) { + var_f28 = 0.5f; + } + + if (!checkStateFlg0(daHorse_FLG0(FLG0_UNK_100000 | FLG0_UNK_200000))) { + cLib_addCalcAngleS(¤t.angle.y, m_padStickAngleY, 5, field_0x16c2 * var_f28, daHorse_hio_c0::m.min_turn * var_f28); + } + } else { + cLib_addCalcAngleS(¤t.angle.y, m_padStickAngleY, 5, field_0x16c2, daHorse_hio_c0::m.min_turn); + } + + if (!checkStateFlg0(daHorse_FLG0(FLG0_UNK_100000 | FLG0_UNK_200000))) { + shape_angle.y = current.angle.y; + } + } + } else { + if (checkStateFlg0(FLG0_UNK_2) && player->checkHorseBackInput()) { + return 3; + } + + cLib_addCalcAngleS(¤t.angle.y, (m_padStickAngleY + 0x8000), 5, field_0x16c2, daHorse_hio_c0::m.min_turn); + + if (!checkStateFlg0(daHorse_FLG0(FLG0_UNK_100000 | FLG0_UNK_200000))) { + shape_angle.y = current.angle.y; + } + } + } + + if (m_demoMode == 6) { + if (var_r28 != 0 && speedF > 0.0f) { + cLib_chaseF(&speedF, 0.0f, daHorse_hio_c0::m.stopping_deceleration); + } + return 0; + } + + if (checkStateFlg0(FLG0_UNK_1)) { + dAttention_c* attention = &dComIfGp_getAttention(); + if (attention->GetLockonList(0) != NULL && attention->LockonTruth() && fopAcM_searchActorDistanceXZ2(this, attention->GetLockonList(0)->getActor()) > 1000000.0f) { + cLib_addCalcAngleS(¤t.angle.y, fopAcM_searchActorAngleY(this, attention->GetLockonList(0)->getActor()), 5, field_0x16c2, daHorse_hio_c0::m.min_turn); + if (!checkStateFlg0(daHorse_FLG0(FLG0_UNK_100000 | FLG0_UNK_200000))) { + shape_angle.y = current.angle.y; + } + } + } + + if (field_0x1702 != 0) { + shape_angle.y += field_0x1702; + current.angle.y = shape_angle.y; + } + + if (checkStateFlg0(daHorse_FLG0(FLG0_UNK_100000 | FLG0_UNK_200000))) { + fopAc_ac_c* boar_p = NULL; + fopAcIt_Executor((fopAcIt_ExecutorFunc)daHorse_searchSingleBoar, &boar_p); + + if (checkInputOnR() && boar_p != NULL && fopAcM_seenActorAngleY(this, boar_p) < 0x4000 && boar_p->current.pos.abs2XZ(current.pos) < 2250000.0f) { + s16 sp8; + if (abs((s16)(shape_angle.y - current.angle.y)) > 0x5000) { + sp8 = field_0x170a + ((s16)((current.angle.y + 0x8000) - field_0x170a) / 4); + } else { + sp8 = field_0x170a + ((s16)(current.angle.y - field_0x170a) / 4); + } + + cLib_addCalcAngleS(&shape_angle.y, sp8, 5, 0x2000, 0x100); + } else { + if (current.angle.y < 0x4000 && current.angle.y > 0x1800) { + current.angle.y = 0x1800; + } else if (current.angle.y > -0x4000 && current.angle.y < -0x1800) { + current.angle.y = -0x1800; + } else if (current.angle.y < 0x6800 && current.angle.y >= 0x4000) { + current.angle.y = 0x6800; + } else if (current.angle.y > -0x6800 && current.angle.y <= -0x4000) { + current.angle.y = -0x6800; + } + + cLib_addCalcAngleS(&shape_angle.y, current.angle.y, 5, 0x2000, 0x100); + } + } + + cLib_chaseAngleS(&field_0x1702, 0, 0xC0); + + f32 var_f30 = cM_scos(spA); + if (checkStateFlg0(FLG0_UNK_2)) { + if (var_f30 < 0.7f) { + var_f30 = 0.7f; + } + } else if (speedF < 0.05f && var_r27 != 0) { + var_f30 = 0.0f; + } else if (var_f30 < 0.0f) { + var_f30 = 0.0f; + } + + if (var_r28 != 0 && speedF > 0.0f) { + cLib_chaseF(&speedF, 0.0f, daHorse_hio_c0::m.stopping_deceleration); + } else if (checkStateFlg0(FLG0_UNK_40000)) { + if (m_anmIdx[2] != ANM_HS_WAIT_03 || m_frameCtrl[2].getFrame() >= 18.0f) { + cLib_chaseF(&speedF, -daHorse_hio_c0::m.max_backward_speed, daHorse_hio_c0::m.max_backward_acceleration); + + field_0x1704--; + if (field_0x1704 == 0) { + offStateFlg0(FLG0_UNK_40000); + } else if (checkHorseNoMove(0) == 2) { + offStateFlg0(FLG0_UNK_40000); + field_0x1704 = 0; + speedF = 0.0f; + } + } + } else if (checkInputOnR() && m_lashAccelerationTime == 0 && var_r27 == 1) { + if (speedF > 0.0f) { + cLib_chaseF(&speedF, 0.0f, daHorse_hio_c0::m.stopping_deceleration); + } else if (!checkStateFlg0(FLG0_UNK_8) && (checkTurnInput() || checkStateFlg0(daHorse_FLG0(FLG0_UNK_100000 | FLG0_UNK_200000))) && checkTurnPlayerState() && speedF > (0.2f * -daHorse_hio_c0::m.max_backward_speed)) { + return 1; + } else { + int spC = checkHorseNoMove(0); + if (spC == 0) { + if (!checkStateFlg0(daHorse_FLG0(FLG0_UNK_100000 | FLG0_UNK_200000))) { + cLib_chaseF(&speedF, -daHorse_hio_c0::m.max_backward_speed, daHorse_hio_c0::m.max_backward_acceleration); + } + } else if (spC == 1) { + cLib_chaseF(&speedF, 0.0f, daHorse_hio_c0::m.stopping_deceleration); + } else { + speedF = 0.0f; + } + } + } else if (m_cowHit != 0) { + if (!checkStateFlg0(daHorse_FLG0(FLG0_UNK_100000 | FLG0_UNK_200000))) { + cLib_chaseF(&speedF, 0.5f * m_normalMaxSpeedF, daHorse_hio_c0::m.lash_acceleration); + } + } else { + f32 var_f31; + f32 var_f29; + if (var_r28 != 0) { + var_f31 = 0.0f; + var_f29 = daHorse_hio_c0::m.deceleration; + } else if (m_lashAccelerationTime != 0 || (checkStateFlg0(FLG0_RODEO_MODE) && checkStateFlg0(FLG0_UNK_1)) || m_demoMode == 4) { + var_f31 = m_lashMaxSpeedF; + var_f29 = daHorse_hio_c0::m.lash_acceleration; + if (speedF < daHorse_hio_c0::m.min_lash_speed) { + speedF = daHorse_hio_c0::m.min_lash_speed; + } + } else { + if (player->checkHorseHangMode()) { + var_f31 = speedF; + if (m_lashAccelerationTime == 0 && speedF > m_normalMaxSpeedF) { + var_f31 = m_normalMaxSpeedF; + } + } else { + var_f31 = var_f30 * (m_normalMaxSpeedF * (m_padStickValue * m_padStickValue)); + } + + var_f29 = daHorse_hio_c0::m.acceleration; + if (checkStateFlg0(FLG0_UNK_4) && abs(field_0x16ea) < 0x4000) { + var_f31 *= 1.0f - (0.8f * cM_scos(field_0x16ea)); + } + } + + if (dComIfG_Bgsp().ChkPolySafe(m_acch.m_gnd) && dComIfG_Bgsp().GetGroundCode(m_acch.m_gnd) == 11 && var_f31 > (m_normalMaxSpeedF + (0.5f * m_lashAddSpeed))) { + var_f31 = m_normalMaxSpeedF + (0.5f * m_lashAddSpeed); + } + + if (var_f31 > fabsf(speedF)) { + cLib_chaseF(&speedF, var_f31, var_f29); + } else if (checkStateFlg0(FLG0_UNK_4) || (!dComIfGp_event_runCheck() && !daAlink_getAlinkActorClass()->checkHorseRide() && !checkStateFlg0(daHorse_FLG0(FLG0_RODEO_MODE | FLG0_UNK_10000000)) && m_procID == PROC_MOVE_e)) { + if (checkStateFlg0(FLG0_UNK_2) && !checkStateFlg0(FLG0_UNK_4)) { + return 3; + } + + cLib_chaseF(&speedF, var_f31, daHorse_hio_c0::m.stopping_deceleration); + } else { + if (dComIfGp_event_runCheck() || checkStateFlg0(FLG0_UNK_10000000)) { + var_f29 = daHorse_hio_c0::m.stopping_deceleration; + } else { + var_f29 = daHorse_hio_c0::m.deceleration; + } + + cLib_chaseF(&speedF, var_f31, var_f29); + } + } + + if (checkInputOnR() && m_procID == PROC_MOVE_e && var_r28 == 0 && var_r27 == 0 && speedF > 0.05f && speedF < daHorse_hio_c0::m.walk_min_speed) { + speedF = daHorse_hio_c0::m.walk_min_speed; + } + + return 0; +} + +/* 8083D748-8083D774 005908 002C+00 1/1 0/0 0/0 .text checkWaitTurn__9daHorse_cCFv */ +BOOL daHorse_c::checkWaitTurn() const { + return m_procID == PROC_WAIT_e && shape_angle.y != field_0x16e8; +} + +/* 8083D774-8083D918 005934 01A4+00 2/2 0/0 0/0 .text setRoomInfo__9daHorse_cFi */ +void daHorse_c::setRoomInfo(int param_0) { + int room_no; + if (-1000000000.0f != m_acch.GetGroundH() && (checkStateFlg0(FLG0_UNK_1) || m_procID == PROC_LARGE_DAMAGE_e || m_procID == PROC_JUMP_e || current.pos.y - m_acch.GetGroundH() < 500.0f)) { + room_no = dComIfG_Bgsp().GetRoomId(m_acch.m_gnd); + tevStr.YukaCol = dComIfG_Bgsp().GetPolyColor(m_acch.m_gnd); + + if (m_acch.ChkWaterHit() && m_acch.m_wtr.GetHeight() > current.pos.y) { + m_poly_sound = dKy_pol_sound_get(&m_acch.m_wtr); + } else if (m_acch.i_ChkGroundHit()) { + m_poly_sound = dKy_pol_sound_get(&m_acch.m_gnd); + } else { + m_poly_sound = 0; + } + + if (m_acch.i_ChkGroundHit() && m_procID != PROC_LARGE_DAMAGE_e && m_procID != PROC_JUMP_e) { + savePos(); + } + + onStateFlg0(FLG0_UNK_4000); + } else { + room_no = fopAcM_GetRoomNo(this); + m_poly_sound = 0; + savePos(); + offStateFlg0(FLG0_UNK_4000); + } + + if (param_0 != 0 || room_no != fopAcM_GetRoomNo(this)) { + tevStr.room_no = room_no; + if (tevStr.room_no == -1) { + tevStr.room_no = dComIfGp_roomControl_getStayNo(); + } + + m_reverb = dComIfGp_getReverb(room_no); + m_cc_stts.SetRoomId(room_no); + fopAcM_SetRoomNo(this, room_no); + } +} + +UNK_BSS(1109) +UNK_BSS(1107) +UNK_BSS(1105) +UNK_BSS(1104) +UNK_BSS(1099) +UNK_BSS(1097) +UNK_BSS(1095) +UNK_BSS(1094) +UNK_BSS(1057) +UNK_BSS(1055) +UNK_BSS(1053) +UNK_BSS(1052) +UNK_BSS(1014) +UNK_BSS(1012) +UNK_BSS(1010) +UNK_BSS(1009) + +/* 80845C04-80845C10 000054 000C+00 1/2 0/0 0/0 .bss l_frontFootOffset */ +static cXyz l_frontFootOffset(23.5f, -20.0f, 0.0f); + +/* 80845C1C-80845C28 00006C 000C+00 1/2 0/0 0/0 .bss l_backFootOffset */ +static cXyz l_backFootOffset(25.5f, 12.0f, 0.0f); + +/* 8083D918-8083D9D8 005AD8 00C0+00 2/2 0/0 0/0 .text setBodyPart__9daHorse_cFv */ +void daHorse_c::setBodyPart() { + static cXyz localEyePos(25.0f, -15.0f, 0.0f); + + mDoMtx_multVec(m_model->getAnmMtx(15), &localEyePos, &eyePos); + mDoMtx_multVecZero(m_model->getAnmMtx(0), &m_bodyEyePos); +} + +/* 8083D9D8-8083DC58 005B98 0280+00 2/2 0/0 0/0 .text setMatrix__9daHorse_cFv */ +void daHorse_c::setMatrix() { + s16 var_r29 = 0; + s16 var_r27 = 0; + f32 temp_f31 = m_normalMaxSpeedF * daHorse_hio_c0::m.fastwalk_to_run_rate; + + if (m_procID == PROC_MOVE_e && speedF > temp_f31) { + f32 var_f30; + if (speedF <= m_normalMaxSpeedF) { + var_f30 = (0.3f * (speedF - temp_f31)) / (m_normalMaxSpeedF - temp_f31); + } else { + var_f30 = 0.5f + ((0.5f * speedF) / m_lashMaxSpeedF); + } + + var_r29 = 4.0f * var_f30 * ((500.0f / (f32)field_0x16c2) * (f32)(s16)(field_0x16e8 - shape_angle.y)); + var_r27 = -var_r29; + } + + if (checkStateFlg0(FLG0_UNK_1) && checkStateFlg0(FLG0_RODEO_MODE) && m_procID == PROC_MOVE_e) { + if (checkStateFlg0(FLG0_RODEO_LEFT)) { + if (var_r29 < 1500) { + var_r29 = 1500; + } + } else if (var_r29 > -1500) { + var_r29 = -1500; + } + } + + cLib_addCalcAngleS(&shape_angle.z, var_r29, 4, 1000, 100); + + if (var_r27 == 0) { + cLib_addCalcAngleS(&field_0x16fa, 0, 2, 4000, 1000); + } else { + cLib_addCalcAngleS(&field_0x16fa, var_r27, 4, 1200, 200); + } + + setNeckAngle(); + + mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); + mDoMtx_stack_c::ZXYrotM(shape_angle.x, shape_angle.y, shape_angle.z); + m_model->setBaseTRMtx(mDoMtx_stack_c::get()); + + if (daPy_py_c::i_checkNowWolf()) { + attention_info.position.set(current.pos.x + (140.0f * cM_ssin(shape_angle.y)), 200.0f + current.pos.y, current.pos.z + (140.0f * cM_scos(shape_angle.y))); + } else { + attention_info.position.set(current.pos.x, 200.0f + current.pos.y, current.pos.z); + } +} + +/* 8083DC58-8083DEEC 005E18 0294+00 1/1 0/0 0/0 .text setDashEffect__9daHorse_cFPUl */ +void daHorse_c::setDashEffect(u32* i_emitterID) { + camera_class* camera_p = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)); + cXyz* eye_p = fopCamM_GetEye_p(camera_p); + + if (!(eye_p->abs(current.pos) > 1200.0f)) { + s16 var_r28 = shape_angle.y - fopCamM_GetAngleY(camera_p); + f32 temp_f31 = (200.0f * std::abs(cM_ssin(var_r28))) + (700.0f * std::abs(cM_scos(var_r28))); + f32 temp_f30 = temp_f31 * cM_scos(fopCamM_GetAngleX(camera_p)); + + Vec pos = {0.0f, 0.0f, 0.0f}; + pos.x = eye_p->x + (temp_f30 * cM_ssin(fopCamM_GetAngleY(camera_p))); + pos.y = eye_p->y + (temp_f31 * cM_ssin(-fopCamM_GetAngleX(camera_p))); + pos.z = eye_p->z + (temp_f30 * cM_scos(fopCamM_GetAngleY(camera_p))); + + SVec angle = {0, shape_angle.y, 0}; + + *i_emitterID = dComIfGp_particle_set(*i_emitterID, 0x8657, (cXyz*)&pos, &tevStr, (csXyz*)&angle, NULL, 0xFF, NULL, -1, 0, 0, 0); + } +} + +/* 8083DEEC-8083E4D8 0060AC 05EC+00 1/1 0/0 0/0 .text setEffect__9daHorse_cFv */ +// NONMATCHING - regalloc +void daHorse_c::setEffect() { + JPABaseEmitter* sp50; + int sp4C; + if (checkEndResetStateFlg0(ERFLG0_UNK_400)) { + setDashEffect(&field_0x1738[field_0x16bd]); + sp4C = field_0x16bd; + field_0x16bd ^= 1; + } else { + sp4C = -1; + } + + f32 var_f31 = 2.0f * (speedF / m_normalMaxSpeedF); + if (var_f31 > 1.0f) { + var_f31 = 1.0f; + } + + u8 sp21 = 255.0f * var_f31; + + for (int sp48 = 0; sp48 < 2; sp48++) { + if (sp48 != sp4C) { + sp50 = dComIfGp_particle_getEmitter(field_0x1738[sp48]); + if (sp50 != NULL && !sp50->isEnableDeleteEmitter()) { + setDashEffect(&field_0x1738[sp48]); + if (sp50->getGlobalAlpha() > sp21) { + sp50->setGlobalAlpha(sp21); + } + } + } + } + + u32 sp44 = 0; + if (field_0x16b7 == 2) { + sp44 |= 3; + } + + u32 sp40 = 0; + if (field_0x16b8 == 1) { + sp40 |= 0x20000; + } + + if (m_acch.i_ChkGroundHit()) { + field_0x17dc.setEffectFour(&tevStr, + ¤t.pos, + sp44, + sp40, + NULL, + (field_0x16b6 & 1) ? &m_footData[0].field_0xc : NULL, + (field_0x16b6 & 2) ? &m_footData[1].field_0xc : NULL, + (field_0x16b6 & 4) ? &m_footData[2].field_0xc : NULL, + (field_0x16b6 & 8) ? &m_footData[3].field_0xc : NULL, + ¤t.angle, + NULL, + fopAcM_GetRoomNo(this), + 1.0f, + speedF); + } else { + field_0x17dc.setEffectFour(&tevStr, + ¤t.pos, + sp44, + sp40, + NULL, + NULL, + NULL, + NULL, + NULL, + ¤t.angle, + NULL, + fopAcM_GetRoomNo(this), + 1.0f, + speedF); + } + + static cXyz runScale(2.0f, 2.0f, 2.0f); + static cXyz landScale(1.5f, 1.5f, 1.5f); + static cXyz grassRunScale(1.8f, 1.8f, 1.8f); + static cXyz waterDirection(0.0f, 1.0f, -0.75f); + + int k, j, i; + for (i = 0; i < 5; i++) { + for (j = 0; j < 2; j++) { + u8 sp20 = field_0x17dc.getTypeFour(i, j); + if (sp20 == 0) { + sp50 = field_0x17dc.getEmitterFour(i, j, 0); + if (sp50 != NULL) { + if (field_0x16b7 == 2) { + sp50->setGlobalScale(landScale); + } else { + sp50->setGlobalScale(runScale); + if (field_0x16b7 == 0) { + sp50->setRate(3.0f); + } else { + sp50->setRate(0.75f); + } + } + } + } else if (sp20 == 1) { + sp50 = field_0x17dc.getEmitterFour(i, j, 0); + if (sp50 != NULL) { + if (field_0x16b7 == 2) { + sp50->setGlobalScale(landScale); + } else { + sp50->setGlobalScale(grassRunScale); + if (field_0x16b7 == 0) { + sp50->setRate(4.0f); + } else { + sp50->setRate(0.5f); + } + } + } + } else if (sp20 == 2) { + for (k = 0; k < 4; k++) { + sp50 = field_0x17dc.getEmitterFour(i, j, k); + if (sp50 != NULL) { + if (field_0x16b7 == 2) { + sp50->setGlobalScale(landScale); + } else { + sp50->setGlobalScale(this->scale); + if (field_0x16b7 == 1) { + sp50->setRateStep(3); + } + + if (k != 0) { + sp50->setDirection(waterDirection); + } + } + } + } + } + } + } +} + +/* 8083E4D8-8083E6E8 006698 0210+00 1/1 0/0 0/0 .text setCollision__9daHorse_cFv */ +void daHorse_c::setCollision() { + m_cc_stts.Move(); + f32 sin_y = cM_ssin(shape_angle.y); + f32 cos_y = cM_scos(shape_angle.y); + + cXyz center(current.pos.x + (170.0f * sin_y), current.pos.y, current.pos.z + (170.0f * cos_y)); + m_boar_cyl.SetC(center); + + center.set(current.pos.x + (83.0f * sin_y), current.pos.y, current.pos.z + (83.0f * cos_y)); + + sin_y *= 80.0f; + cos_y *= 80.0f; + + for (int i = 0; i < 3; i++) { + m_tgco_cyl[i].SetC(center); + center.x -= sin_y; + center.z -= cos_y; + } + + static const Vec localHeadPos = {20.0f, 0.0f, 0.0f}; + mDoMtx_multVec(m_model->getAnmMtx(15), &localHeadPos, ¢er); + m_head_sph.SetC(center); + + dComIfG_Ccsp()->Set(&m_tgco_cyl[0]); + dComIfG_Ccsp()->Set(&m_tgco_cyl[1]); + dComIfG_Ccsp()->Set(&m_tgco_cyl[2]); + g_dComIfG_gameInfo.play.mCcs.SetMass(&m_tgco_cyl[0], 1); // fakematch + g_dComIfG_gameInfo.play.mCcs.SetMass(&m_tgco_cyl[2], 1); // fakematch + dComIfG_Ccsp()->Set(&m_head_sph); + dComIfG_Ccsp()->Set(&m_boar_cyl); + + center.y = current.pos.y; + m_at_cyl.MoveCAt(center); + + if (checkResetStateFlg0(RFLG0_UNK_20)) { + dComIfG_Ccsp()->Set(&m_at_cyl); + g_dComIfG_gameInfo.play.mCcs.SetMass(&m_at_cyl, 1); // fakematch + } else { + m_at_cyl.ResetAtHit(); + } +} + +/* 8083E6E8-8083E760 0068A8 0078+00 1/1 0/0 0/0 .text autoGroundHit__9daHorse_cFv */ +void daHorse_c::autoGroundHit() { + if (checkStateFlg0(FLG0_UNK_10) && m_procID != PROC_LARGE_DAMAGE_e && m_procID != PROC_JUMP_e) { + f32 dist_to_ground = m_acch.GetGroundH() - current.pos.y; + if (!m_acch.i_ChkGroundHit() && dist_to_ground < 0.0f && dist_to_ground >= -l_autoUpHeight) { + current.pos.y = m_acch.GetGroundH(); + m_acch.SetGroundHit(); + speed.y = 0.0f; + } + } +} + +/* 8083E760-8083E8A4 006920 0144+00 1/1 0/0 0/0 .text setTailAngle__9daHorse_cFv */ +void daHorse_c::setTailAngle() { + s16* var_r30 = field_0x16d4; + s16* var_r29 = field_0x16e0; + s16 var_r27 = shape_angle.y - field_0x16e8; + + for (int i = 0; i < 3; i++, var_r30++, var_r29++) { + if (checkResetStateFlg0(RFLG0_UNK_1) || m_procID == PROC_TOOL_DEMO_e) { + *var_r30 = 0; + *var_r29 = 0; + } else { + *var_r30 -= var_r27; + s16 sp8 = *var_r30; + + cLib_addCalcAngleS(var_r30, 0, 5, 400, 35); + *var_r30 += *var_r29; + if (*var_r30 > 0x1000) { + *var_r30 = 0x1000; + } else if (*var_r30 < -0x1000) { + *var_r30 = -0x1000; + } + + var_r27 = *var_r30 - sp8; + *var_r29 = 0.5f * var_r27; + + if (checkEndResetStateFlg0(ERFLG0_UNK_40)) { + *var_r29 = 0; + } + } + } +} + +/* 8083E8A4-8083EA78 006A64 01D4+00 1/1 0/0 0/0 .text setNeckAngle__9daHorse_cFv */ +void daHorse_c::setNeckAngle() { + int var_r27 = 0; + if (eventInfo.checkCommandTalk()) { + m_aimNeckAngleY = fopAcM_searchActorAngleY(this, daAlink_getAlinkActorClass()) - shape_angle.y; + } else if (field_0x1702 != 0) { + cLib_addCalcAngleS(&field_0x16f0, field_0x1702 * 3, 3, 0x400, 0x100); + return; + } else if (field_0x16fa != 0) { + field_0x16f0 = field_0x16fa; + return; + } else if (!checkStateFlg0(FLG0_UNK_1) && !checkResetStateFlg0(RFLG0_ENEMY_SEARCH) && m_procID == PROC_WAIT_e && m_anmIdx[0] == ANM_HS_WAIT_01) { + var_r27 = 1; + + if (current.pos.abs2XZ(daAlink_getAlinkActorClass()->current.pos) < 250000.0f) { + daPy_py_c::setLookPos(&eyePos); + + s16 var_r26 = fopAcM_searchActorAngleY(this, daAlink_getAlinkActorClass()) - shape_angle.y; + if (abs(var_r26) < 0x2000) { + m_aimNeckAngleY = var_r26; + } else { + m_aimNeckAngleY = 0; + } + } else { + m_aimNeckAngleY = 0; + } + } else { + m_aimNeckAngleY = 0; + } + + s16 var_r29; + s16 var_r28; + if (var_r27 != 0) { + var_r29 = 0x100; + var_r28 = 0x40; + } else if (m_aimNeckAngleY == 0 || (m_aimNeckAngleY * field_0x16f0) < 0) { + var_r29 = 0x1000; + var_r28 = 0x100; + } else { + var_r29 = 0x200; + var_r28 = 0x40; + } + + cLib_addCalcAngleS(&field_0x16f0, m_aimNeckAngleY, 3, var_r29, var_r28); +} + +/* 8083EA78-8083EB10 006C38 0098+00 1/1 0/0 0/0 .text copyFootMatrix__9daHorse_cFv */ +void daHorse_c::copyFootMatrix() { + daHorseFootData_c* footdata_p = m_footData; + for (int i = 0; i < 4; i++, footdata_p++) { + for (int j = 0; j < 4; j++) { + cMtx_copy(m_model->getAnmMtx(j + m_footJointTable[i]), footdata_p->field_0x24[j]); + } + } +} + +/* 8083EB10-8083ED88 006CD0 0278+00 1/1 0/0 0/0 .text setFootMatrix__9daHorse_cFv */ +int daHorse_c::setFootMatrix() { + copyFootMatrix(); + + if (!m_oldFrame->getOldFrameFlg()) { + return 0; + } + + daHorseFootData_c* footdata_p = m_footData; + int i; + int spC = 1; + + for (i = 0; i < 4; i++, footdata_p++) { + u16 joint_no = m_footJointTable[i]; + + mDoMtx_stack_c::ZrotS(footdata_p->field_0x4[0] * spC); + mDoMtx_stack_c::revConcat(m_model->getAnmMtx(joint_no)); + m_model->setAnmMtx(joint_no, mDoMtx_stack_c::get()); + joint_no++; + + J3DTransformInfo* transInfo_p = m_oldFrame->getOldFrameTransInfo(joint_no); + Quaternion* quat_p = m_oldFrame->getOldFrameQuaternion(joint_no); + + mDoMtx_stack_c::transM(transInfo_p->mTranslate.x, transInfo_p->mTranslate.y, transInfo_p->mTranslate.z); + mDoMtx_stack_c::quatM(quat_p); + mDoMtx_stack_c::ZrotM(spC * (footdata_p->field_0x4[1] - footdata_p->field_0x4[0])); + mDoMtx_stack_c::scaleM(transInfo_p->mScale.x, transInfo_p->mScale.y, transInfo_p->mScale.z); + m_model->setAnmMtx(joint_no, mDoMtx_stack_c::get()); + joint_no++; + transInfo_p++; + quat_p++; + + mDoMtx_stack_c::transM(transInfo_p->mTranslate.x, transInfo_p->mTranslate.y, transInfo_p->mTranslate.z); + mDoMtx_stack_c::quatM(quat_p); + mDoMtx_stack_c::ZrotM(spC * (footdata_p->field_0x4[2] - footdata_p->field_0x4[1])); + mDoMtx_stack_c::scaleM(transInfo_p->mScale.x, transInfo_p->mScale.y, transInfo_p->mScale.z); + m_model->setAnmMtx(joint_no, mDoMtx_stack_c::get()); + joint_no++; + transInfo_p++; + quat_p++; + + mDoMtx_stack_c::transM(transInfo_p->mTranslate.x, transInfo_p->mTranslate.y, transInfo_p->mTranslate.z); + mDoMtx_stack_c::quatM(quat_p); + mDoMtx_stack_c::scaleM(transInfo_p->mScale.x, transInfo_p->mScale.y, transInfo_p->mScale.z); + + if (i >= 2) { + mDoMtx_stack_c::ZrotM(spC * (footdata_p->field_0x4[3] - footdata_p->field_0x4[2])); + } else { + mDoMtx_stack_c::ZrotM(footdata_p->field_0x4[3]); + } + + m_model->setAnmMtx(joint_no, mDoMtx_stack_c::get()); + + if (i == 1) { + spC = -1; + } + } + + return 1; +} + +/* 8083ED88-8083F3B0 006F48 0628+00 1/1 0/0 0/0 .text setLegAngle__9daHorse_cFfiiPs */ +int daHorse_c::setLegAngle(f32 param_0, int param_1, int param_2, s16* param_3) { + if (fabsf(param_0) < 0.1f || ((param_1 == 0 || param_1 == 1) && param_2 == 0)) { + return 0; + } + + cXyz spC0[4]; + cXyz spB0; + cXyz spA4; + cXyz sp98; + cXyz sp8C; + cXyz sp80; + cXyz sp74; + cXyz sp68; + cXyz sp5C; + + for (int i = 0; i < 4; i++) { + mDoMtx_multVecZero(m_footData[param_1].field_0x24[i], &spB0); + mDoMtx_stack_c::multVec(&spB0, &spC0[i]); + spC0[i].x = 0.0f; + } + + int sp10; + f32 var_f27; + if (param_1 == 0 || param_1 == 1) { + sp10 = 0; + var_f27 = 0.005f; + } else { + sp10 = 1; + var_f27 = 0.05f; + } + + for (int i = 0; i < 2; i++) { + cXyz* sp1C = &spC0[i]; + cXyz* sp18 = &spC0[i + 1]; + cXyz* sp14 = &spC0[i + 2]; + + spA4 = *sp18 - *sp1C; + sp98 = *sp14 - *sp18; + + if (i == 0) { + sp14->y += param_0 * var_f27; + } else { + sp14->y += param_0 * (1.0f - var_f27); + } + + if (sp14->y >= sp1C->y) { + return 0; + } + + sp74 = *sp14 - *sp1C; + + f32 var_f29 = sp74.abs2(); + if (cM3d_IsZero(var_f29)) { + return 0; + } + + f32 temp_f26 = spA4.abs2(); + f32 temp_f25 = sp98.abs2(); + if (JMAFastSqrt(temp_f26) + JMAFastSqrt(temp_f25) <= JMAFastSqrt(var_f29)) { + return 0; + } + + f32 temp_f28 = ((var_f29 + temp_f26) - temp_f25) / (2.0f * var_f29); + sp68.x = 0.0f; + sp68.y = sp1C->y + (temp_f28 * sp74.y); + sp68.z = sp1C->z + (temp_f28 * sp74.z); + + f32 var_f31 = temp_f26 - (temp_f28 * (var_f29 * temp_f28)); + if (var_f31 < 0.0f) { + var_f31 = 0.0f; + } + + var_f31 = JMAFastSqrt(var_f31); + if (param_1 == 0 || param_1 == 1) { + if (i == 0) { + sp5C.set(0.0f, -sp74.z, sp74.y); + } else { + sp5C.set(0.0f, sp74.z, -sp74.y); + } + } else if (i == 0) { + sp5C.set(0.0f, sp74.z, -sp74.y); + } else { + sp5C.set(0.0f, -sp74.z, sp74.y); + } + + f32 temp_f30 = sp5C.abs(); + if (cM3d_IsZero(temp_f30)) { + return 0; + } + + temp_f30 = var_f31 / temp_f30; + + sp18->set(0.0f, sp68.y + (temp_f30 * sp5C.y), sp68.z + (temp_f30 * sp5C.z)); + + sp8C = *sp18 - *sp1C; + sp80 = *sp14 - *sp18; + + param_3[i] += (s16)(cM_atan2s(spA4.y, spA4.z) - cM_atan2s(sp8C.y, sp8C.z)); + param_3[i + 1] += (s16)(cM_atan2s(sp98.y, sp98.z) - cM_atan2s(sp80.y, sp80.z)); + + if (i == 0) { + spC0[3].y += param_0 * var_f27; + } + } + + return 1; +} + +/* 8083F3B0-8083F9AC 007570 05FC+00 1/1 0/0 0/0 .text footBgCheck__9daHorse_cFv */ +void daHorse_c::footBgCheck() { + int i; + daHorseFootData_c* footdata_p; + s16 spA0[4][4]; + cXyz sp94; + cXyz sp88; + + int sp24 = 4; + u32 sp20; + + MtxP sp18 = m_model->getBaseTRMtx(); + sp20 = fabsf(speedF) < 0.05f && m_procID != PROC_TURN_e; + + footdata_p = m_footData; + mDoMtx_multVec(m_model->getAnmMtx(6), &l_frontFootOffset, &m_footData[0].field_0xc); + mDoMtx_multVec(m_model->getAnmMtx(0xA), &l_frontFootOffset, &m_footData[1].field_0xc); + mDoMtx_multVec(m_model->getAnmMtx(0x1E), &l_backFootOffset, &m_footData[2].field_0xc); + mDoMtx_multVec(m_model->getAnmMtx(0x22), &l_backFootOffset, &m_footData[3].field_0xc); + + cXyz sp7C = current.pos - old.pos; + + for (i = 0; i < 4; i++) { + for (int j = 0; j < 4; j++) { + spA0[i][j] = 0; + } + } + + for (i = 0; i < 4; i++, footdata_p++) { + sp88 = footdata_p->field_0xc - footdata_p->field_0x18; + footdata_p->field_0xc += sp7C; + + if (m_anmIdx[0] == ANM_HS_WAIT_02) { + footdata_p->field_0xc = footdata_p->field_0x18; + } else if (sp88.abs2XZ() < 100.0f && sp20 != 0) { + if (footdata_p->field_0x1 != 0) { + footdata_p->field_0x1--; + } else { + footdata_p->field_0xc = footdata_p->field_0x18 + sp7C; + } + } else { + footdata_p->field_0x1 = 5; + } + + footdata_p->field_0x18 = footdata_p->field_0xc; + footdata_p->field_0xc.y += 120.0f; + + if (fopAcM_gc_c::gndCheck(&footdata_p->field_0xc) && footdata_p->field_0xc.y - fopAcM_gc_c::getGroundY() < 240.0f) { + spA0[i][3] = fopAcM_gc_c::getGroundAngleDirection(shape_angle.y); + if (spA0[i][3] < 0) { + spA0[i][3] = 0; + } + footdata_p->field_0xc.y = fopAcM_gc_c::getGroundY(); + } else { + footdata_p->field_0xc.y = current.pos.y; + } + } + + if (!m_acch.i_ChkGroundHit() || m_procID == PROC_TOOL_DEMO_e) { + sp24 = 4; + } else { + f32 var_f30 = 1000.0f + current.pos.y; + + if (checkResetStateFlg0(RFLG0_TURN_STAND)) { + i = 2; + } else { + i = 0; + } + + for (; i < 4; i++) { + if (var_f30 > m_footData[i].field_0xc.y) { + var_f30 = m_footData[i].field_0xc.y; + sp24 = i; + } + } + } + + int sp14; + if (m_anmIdx[0] != ANM_HS_WAIT_02 && fabsf(m_footData[0].field_0xc.y - m_footData[1].field_0xc.y) > 30.0f) { + sp14 = 1; + } else { + sp14 = 0; + } + + if (m_procID == PROC_JUMP_e || m_procID == PROC_TOOL_DEMO_e) { + field_0x1714 = 0; + } else { + cXyz sp70 = ((m_footData[0].field_0xc + m_footData[1].field_0xc) * 0.5f) - ((m_footData[2].field_0xc + m_footData[3].field_0xc) * 0.5f); + field_0x1714 = sp70.atan2sY_XZ(); + } + + s16 spA; + if (checkResetStateFlg0(RFLG0_TURN_STAND)) { + spA = 0; + } else { + spA = field_0x1714; + if (spA > 0x1C72) { + spA = 0x1C72; + } else if (spA < -0x1C72) { + spA = -0x1C72; + } + } + + cLib_addCalcAngleS(&shape_angle.x, spA, 10, 2000, 182); + + if (sp24 != 4) { + mDoMtx_stack_c::YrotS(-field_0x16e8); + mDoMtx_stack_c::transM(-old.pos.x, -old.pos.y, -old.pos.z); + setLegAngle(m_footData[sp24].field_0xc.y - sp18[1][3], sp24, sp14, spA0[sp24]); + + for (int i = 0; i < 4; i++) { + if (i != sp24) { + f32 temp_f31 = m_footData[i].field_0xc.y - sp18[1][3]; + if (temp_f31 > 0.0f || sp20 != 0) { + setLegAngle(temp_f31, i, sp14, spA0[i]); + } + } + } + } + + footdata_p = m_footData; + for (i = 0; i < 4; i++, footdata_p++) { + for (int j = 0; j < 4; j++) { + cLib_addCalcAngleS(&footdata_p->field_0x4[j], spA0[i][j], 2, 0x1800, 0x10); + } + } +} + +/* 8083F9AC-8083FDAC 007B6C 0400+00 2/2 0/0 0/0 .text setReinPosMoveInit__9daHorse_cFi */ +void daHorse_c::setReinPosMoveInit(int param_0) { + static cXyz reinLeftStart(63.0f, 17.0f, 11.0f); + static cXyz reinRightStart(63.0f, 17.0f, -11.0f); + static cXyz localNeckLeft(10.0f, 10.0f, 35.0f); + static cXyz localNeckRight(10.0f, 10.0f, -35.0f); + + mDoMtx_multVec(m_model->getAnmMtx(0xF), &reinLeftStart, m_rein[0].field_0x0[0]); + mDoMtx_multVec(m_model->getAnmMtx(0xF), &reinRightStart, m_rein[1].field_0x0[0]); + + s16 spC = field_0x170e + 0x4000; + f32 var_f31 = 10.0f; + f32 temp_f28 = cM_ssin(spC); + f32 temp_f27 = cM_scos(spC); + f32 temp_f29 = fabsf((f32)field_0x1712 / 8192.0f); + + if (shape_angle.x < 0) { + var_f31 += 0.0005f * -shape_angle.x; + } + + if (param_0 != 3) { + var_f31 += 1.0f; + } + + f32 var_f30 = var_f31; + m_rein[0].field_0x18 = 0.0f; + m_rein[1].field_0x18 = 0.0f; + + if (field_0x1712 > 0) { + mDoMtx_multVec(m_model->getAnmMtx(0xB), &localNeckRight, &m_rein[1].field_0x1c); + m_rein[1].field_0x18 = 20.0f * temp_f29; + var_f30 += 10.0f * temp_f29; + } else if (field_0x1712 < 0) { + mDoMtx_multVec(m_model->getAnmMtx(0xB), &localNeckLeft, &m_rein[0].field_0x1c); + m_rein[0].field_0x18 = 20.0f * temp_f29; + var_f31 += 10.0f * temp_f29; + } + + m_rein[0].field_0x10 = var_f31 * temp_f28; + m_rein[0].field_0x14 = var_f31 * temp_f27; + m_rein[1].field_0x10 = -var_f30 * temp_f28; + m_rein[1].field_0x14 = -var_f30 * temp_f27; + + if ((current.pos.abs2(old.pos) < 1.0f && field_0x170e - field_0x1710 == 0) || checkResetStateFlg0(RFLG0_UNK_1)) { + return; + } + + mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); + mDoMtx_stack_c::YrotM(field_0x170e - field_0x1710); + mDoMtx_stack_c::transM(-old.pos.x, -old.pos.y, -old.pos.z); + cXyz sp24; + + cXyz* sp20; + int j, i; + daHorseRein_c* rein_p = m_rein; + + for (i = 0; i < 3; i++, rein_p++) { + sp20 = rein_p->field_0x0[0] + 1; + for (j = 1; j < rein_p->field_0x8[1]; j++, sp20++) { + sp24 = *sp20; + mDoMtx_stack_c::multVec(&sp24, sp20); + } + } +} + +/* 8083FDAC-8083FEB4 007F6C 0108+00 2/2 0/0 0/0 .text copyReinPos__9daHorse_cFv */ +void daHorse_c::copyReinPos() { + int i; + cXyz* pos_p = m_reinLine.getPos(0); + field_0x1204 = m_rein[0].field_0x8[0]; + + for (i = 0; i < m_rein[0].field_0x8[0]; i++, pos_p++) { + *pos_p = m_rein[0].field_0x0[0][i]; + } + + if (m_rein[2].field_0x8[0] > 1) { + field_0x1204 += m_rein[2].field_0x8[0]; + for (i = 0; i < m_rein[2].field_0x8[0]; i++, pos_p++) { + *pos_p = m_rein[2].field_0x0[0][i]; + } + } + + field_0x1204 += m_rein[1].field_0x8[0]; + for (i = m_rein[1].field_0x8[0] - 1; i >= 0; i--, pos_p++) { + *pos_p = m_rein[1].field_0x0[0][i]; + } +} + +/* 8083FEB4-8084010C 008074 0258+00 1/0 0/0 0/0 .text setReinPosHandSubstance__9daHorse_cFi */ +void daHorse_c::setReinPosHandSubstance(int param_0) { + static const Vec zeldaLocalLeft = {3.0f, -0.5f, -5.0f}; + static const Vec zeldaLocalRight = {3.0f, -0.5f, 5.0f}; + + setReinPosMoveInit(param_0); + + daAlink_c* player_p = daAlink_getAlinkActorClass(); + int var_r29 = (-field_0x1712 * 5) / 0x2000; + if (param_0 != 3) { + var_r29 *= 2; + } + + int var_r25; + if (param_0 & 1) { + var_r25 = var_r29 + 20; + } else { + var_r25 = var_r29 + 24; + } + + int var_r24; + if (param_0 & 2) { + var_r24 = 20 - var_r29; + } else { + var_r24 = 24 - var_r29; + } + + if (param_0 & 4) { + daHoZelda_c* hozelda_p = (daHoZelda_c*)m_zeldaActorKeep.getActor(); + mDoMtx_multVec(hozelda_p->getRightFingerMtx(), &zeldaLocalLeft, &m_rein[0].field_0x0[0][var_r25]); + mDoMtx_multVec(hozelda_p->getRightFingerMtx(), &zeldaLocalRight, &m_rein[1].field_0x0[0][var_r24]); + } else { + player_p->getHorseReinHandPos(&m_rein[0].field_0x0[0][var_r25], &m_rein[1].field_0x0[0][var_r24]); + } + + m_rein[0].setReinPosPart(var_r25); + m_rein[1].setReinPosPart(var_r24); + + if (param_0 & 4) { + m_rein[2].setReinPosPart(0); + } else { + cXyz* temp_r26 = m_rein[2].field_0x0[0]; + player_p->getHorseReinCenterLeftPos(temp_r26); + + if (param_0 == 3) { + player_p->getHorseReinCenterRightPos(temp_r26 + 4); + m_rein[2].setReinPosPart(4); + } else { + m_rein[2].setReinPosPart(0); + } + + if (checkResetStateFlg0(RFLG0_UNK_1)) { + for (int i = 0; i < 5; i++) { + m_rein[0].setReinPosPart(var_r25); + m_rein[1].setReinPosPart(var_r24); + + temp_r26 = m_rein[2].field_0x0[0]; + player_p->getHorseReinCenterLeftPos(temp_r26); + + if (param_0 == 3) { + player_p->getHorseReinCenterRightPos(temp_r26 + 4); + m_rein[2].setReinPosPart(4); + } else { + m_rein[2].setReinPosPart(0); + } + } + } + } + + copyReinPos(); +} + +/* 8084010C-808402F8 0082CC 01EC+00 1/0 0/0 0/0 .text setReinPosNormalSubstance__9daHorse_cFv */ +void daHorse_c::setReinPosNormalSubstance() { + static cXyz saddleLeft(29.0f, -2.0f, 30.0f); + static cXyz saddleRight(29.0f, 2.0f, 30.0f); + + if (!checkStateFlg0(FLG0_UNK_1) && i_getZeldaActor() != NULL) { + if (((daHoZelda_c*)i_getZeldaActor())->checkSingleRide()) { + offStateFlg0(FLG0_UNK_4000000); + return; + } + } + + setReinPosMoveInit(0); + + mDoMtx_multVec(m_model->getAnmMtx(0x15), &saddleLeft, m_rein[0].field_0x0[0] + 24); + m_rein[0].setReinPosPart(24); + + mDoMtx_multVec(m_model->getAnmMtx(0x15), &saddleRight, m_rein[1].field_0x0[0] + 24); + m_rein[1].setReinPosPart(24); + + *m_rein[2].field_0x0[0] = m_rein[0].field_0x0[0][24]; + m_rein[2].setReinPosPart(0); + + if (checkResetStateFlg0(RFLG0_UNK_1)) { + for (int i = 0; i < 5; i++) { + m_rein[0].setReinPosPart(24); + m_rein[1].setReinPosPart(24); + *m_rein[2].field_0x0[0] = m_rein[0].field_0x0[0][24]; + m_rein[2].setReinPosPart(0); + } + } + + copyReinPos(); +} + +/* 808402F8-80840714 0084B8 041C+00 1/1 0/0 0/0 .text bgCheck__9daHorse_cFv */ +void daHorse_c::bgCheck() { + if (m_procID != PROC_LARGE_DAMAGE_e) { + static cXyz localCenterPos(0.0f, 100.0f, 0.0f); + static cXyz localFrontPos(0.0f, 100.0f, 220.0f); + static cXyz localBackPos(0.0f, 100.0f, -170.0f); + + cXyz line_start; + cXyz line_end; + cXyz* linecross_p = NULL; + + mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); + mDoMtx_stack_c::ZXYrotM(field_0x1714, shape_angle.y, 0); + mDoMtx_stack_c::multVec(&localCenterPos, &line_start); + mDoMtx_stack_c::multVec(&localFrontPos, &line_end); + + cM3dGPla plane; + m_linechk.Set(&line_start, &line_end, this); + + if (dComIfG_Bgsp().LineCross(&m_linechk)) { + dComIfG_Bgsp().GetTriPla(m_linechk, &plane); + if (cBgW_CheckBWall(plane.mNormal.y)) { + linecross_p = m_linechk.GetCrossP(); + onStateFlg0(FLG0_UNK_4); + field_0x16ea = (current.angle.y + 0x8000) - plane.mNormal.atan2sX_Z(); + } + } + + if (linecross_p == NULL) { + offStateFlg0(FLG0_UNK_4); + mDoMtx_stack_c::multVec(&localBackPos, &line_end); + + m_linechk.Set(&line_start, &line_end, this); + if (dComIfG_Bgsp().LineCross(&m_linechk) != 0) { + dComIfG_Bgsp().GetTriPla(m_linechk, &plane); + if (cBgW_CheckBWall(plane.mNormal.y)) { + linecross_p = m_linechk.GetCrossP(); + } + } + } + + if (linecross_p != NULL) { + line_end -= *linecross_p; + + f32 temp_f31 = -line_end.absXZ() * cM_scos(line_end.atan2sX_Z() - cM_atan2s(-plane.mNormal.x, -plane.mNormal.z)); + current.pos.x -= temp_f31 * plane.mNormal.x; + current.pos.y -= line_end.y; + current.pos.z -= temp_f31 * plane.mNormal.z; + } + } +} + +/* 80840714-808407B0 0088D4 009C+00 1/0 0/0 0/0 .text + * checkSpecialWallHitSubstance__9daHorse_cCFRC4cXyz */ +bool daHorse_c::checkSpecialWallHitSubstance(const cXyz& param_0) const { + if (m_procID == PROC_JUMP_e) { + return 0; + } + + if (checkStateFlg0(FLG0_UNK_100)) { + return 1; + } + + if (speedF < (0.7f * m_normalMaxSpeedF)) { + return 1; + } + + if (cLib_distanceAngleS(shape_angle.y, param_0.atan2sX_Z()) > 0x6000) { + return 0; + } + + return 1; +} + +/* 808407B0-80840800 008970 0050+00 3/3 0/0 0/0 .text setServiceWaitTimer__9daHorse_cFv + */ +void daHorse_c::setServiceWaitTimer() { + m_serviceWaitTimer = cM_rndF(80.0f) + 150.0f; +} + +/* 80840800-80840844 0089C0 0044+00 2/2 0/0 0/0 .text checkServiceWaitAnime__9daHorse_cFv + */ +BOOL daHorse_c::checkServiceWaitAnime() { + return m_anmIdx[0] == ANM_HS_WAIT_03 || + m_anmIdx[0] == ANM_HS_WAIT_04 || + m_anmIdx[0] == ANM_HS_WAIT_05 || + m_anmIdx[0] == ANM_HS_WAIT_01B || + m_anmIdx[0] == ANM_HS_WAIT_01B_CONNECT || + m_anmIdx[0] == ANM_HS_WAIT_02; +} + +/* 80840844-808408F0 008A04 00AC+00 2/2 0/0 0/0 .text checkTurnInput__9daHorse_cFv */ +BOOL daHorse_c::checkTurnInput() { + return m_padStickValue > 0.9f && (!dComIfGp_getAttention().Lockon() || daAlink_getAlinkActorClass()->getAtnActor() != NULL); +} + +/* 808408F0-808409C0 008AB0 00D0+00 2/2 0/0 0/0 .text checkTgHitTurn__9daHorse_cFv */ +BOOL daHorse_c::checkTgHitTurn() { + if (!dComIfGp_event_runCheck() && !checkStateFlg0(FLG0_UNK_1)) { + if (!daAlink_getAlinkActorClass()->checkHorseRideReady() && + (checkEndResetStateFlg0(ERFLG0_UNK_800) || + m_tgco_cyl[0].ChkTgHit() || + m_tgco_cyl[1].ChkTgHit() || + m_tgco_cyl[2].ChkTgHit() || + m_head_sph.ChkTgHit())) + { + return procTurnInit(1); + } + } + + return 0; +} + +/* 808409C0-80840B28 008B80 0168+00 3/3 0/0 0/0 .text checkTurnAfterFastMove__9daHorse_cFf */ +BOOL daHorse_c::checkTurnAfterFastMove(f32 param_0) { + if (param_0 > field_0x177C) { + if (checkTgHitTurn()) { + return 1; + } + + if (checkInputOnR()) { + int temp_r29 = abs((s16)(m_padStickAngleY - shape_angle.y)); + if (field_0x16bc != 0) { + field_0x16bc--; + return procTurnInit(0); + } + + if (temp_r29 < 0x2000 && !checkHorseNoMove(1)) { + speedF = daHorse_hio_c0::m.fastwalk_to_run_rate * m_normalMaxSpeedF; + return procMoveInit(); + } + + if (m_procID == PROC_TURN_e && field_0x1722 != 0) { + return 0; + } + + if (temp_r29 < 0x6000) { + return procWaitInit(); + } + + if (daAlink_getAlinkActorClass()->checkHorseTurnMode()) { + if (checkTurnInput() && !checkStateFlg0(FLG0_UNK_200)) { + return procTurnInit(0); + } + return procWaitInit(); + } + } + } + + return 0; +} + +/* 80840B28-80840B88 008CE8 0060+00 2/2 0/0 0/0 .text setNeckAnimeMorf__9daHorse_cFv */ +void daHorse_c::setNeckAnimeMorf() { + u16 start_jnt_no; + u16 end_jnt_no; + if (m_oldFrame->getOldFrameRate() > 0.1f && m_oldFrame->getOldFrameStartJoint() == 0) { + start_jnt_no = 0; + end_jnt_no = 38; + } else { + start_jnt_no = 11; + end_jnt_no = 21; + } + + m_oldFrame->initOldFrameMorf(3.0f, start_jnt_no, end_jnt_no); +} + +/* 80840B88-80840CA4 008D48 011C+00 4/4 0/0 0/0 .text setNeckAnime__9daHorse_cFUsffs */ +void daHorse_c::setNeckAnime(u16 i_anmIdx, f32 i_speed, f32 i_startF, s16 i_endF) { + J3DAnmTransform* bck = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, i_anmIdx); + + s16 endF; + if (i_endF < 0) { + endF = bck->getFrameMax(); + } else { + endF = i_endF; + } + + f32 frame; + if (i_speed < 0.0f) { + frame = endF; + } else { + frame = i_startF; + } + + m_anmIdx[2] = i_anmIdx; + m_anmRatio[2].setAnmTransform(bck); + m_frameCtrl[2].setFrameCtrl(bck->getAttribute(), i_startF, endF, i_speed, frame); + bck->setFrame(frame); + setNeckAnimeMorf(); +} + +/* 80840CA4-80840CE4 008E64 0040+00 9/9 0/0 0/0 .text resetNeckAnime__9daHorse_cFv */ +void daHorse_c::resetNeckAnime() { + if (m_anmRatio[2].getAnmTransform() != NULL) { + m_anmRatio[2].setAnmTransform(NULL); + m_anmIdx[2] = 0xFFFF; + setNeckAnimeMorf(); + } +} + +/* 80840CE4-80840FE0 008EA4 02FC+00 1/1 0/0 0/0 .text setLashCnt__9daHorse_cFv */ +void daHorse_c::setLashCnt() { + if (checkEndResetStateFlg0(ERFLG0_UNK_8) && checkStateFlg0(FLG0_UNK_1)) { + dComIfGp_getVibration().StartShock(VIBMODE_S_POWER4, 1, cXyz(0.0f, 1.0f, 0.0f)); + + if (checkStateFlg0(FLG0_PLAYER_BACK_RIDE_LASH) || m_lashCnt > 0) { + mDoAud_seStart(Z2SE_WHIP_HORSE, NULL, 0, 0); + + if (!checkStateFlg0(FLG0_PLAYER_BACK_RIDE_LASH)) { + m_lashCnt--; + if (m_lashCnt == 0) { + m_lashRecoverTime = daHorse_hio_c0::m.full_spur_recovery_time; + } else { + m_lashRecoverTime = daHorse_hio_c0::m.spur_recovery_time; + } + } else { + offStateFlg0(FLG0_PLAYER_BACK_RIDE_LASH); + } + + if (checkStateFlg0(FLG0_UNK_2000)) { + m_lashAccelerationTime = daHorse_hio_c0::m.kakariko_lash_acceleration_time; + } else { + m_lashAccelerationTime = daHorse_hio_c0::m.lash_acceleration_time; + } + + onResetStateFlg0(RFLG0_LASH_DASH_START); + setNeckAnime(ANM_HS_LASH, 1.0f, 0.0f, -1); + m_sound.startCreatureVoice(Z2SE_HS_V_RUSH, -1); + onEndResetStateFlg0(ERFLG0_UNK_400); + } else { + m_sound.startCreatureVoice(Z2SE_HS_V_ANNOY, -1); + } + } else if (checkStateFlg0(FLG0_UNK_1)) { + if (m_lashAccelerationTime > 0) { + m_lashAccelerationTime--; + } + + if (m_lashRecoverTime > 0) { + m_lashRecoverTime--; + if (m_lashRecoverTime == 0) { + if (m_lashCnt == 0) { + m_lashCnt = 6; + if (!dComIfGp_event_runCheck()) { + mDoAud_seStart(Z2SE_WHIP_RECOVER_ALL, NULL, 0, 0); + } + } else { + m_lashCnt++; + if (m_lashCnt < 6) { + m_lashRecoverTime = daHorse_hio_c0::m.continuous_spur_recovery_time; + } + + if (!dComIfGp_event_runCheck()) { + mDoAud_seStart(Z2SE_WHIP_RECOVER, NULL, 0, 0); + } + } + } + } + } else { + m_lashAccelerationTime = 0; + m_lashRecoverTime = 0; + } +} + +/* 80840FE0-80841084 0091A0 00A4+00 1/1 0/0 0/0 .text setTalkModeWolf__9daHorse_cFv */ +void daHorse_c::setTalkModeWolf() { + if (eventInfo.checkCommandTalk()) { + if (!checkStateFlg0(FLG0_UNK_20000)) { + m_msgflow.init(this, m_flowID, 0, NULL); + onStateFlg0(FLG0_UNK_20000); + } else { + if (m_msgflow.doFlow(this, NULL, 0)) { + dComIfGp_event_reset(); + } + } + } else { + offStateFlg0(FLG0_UNK_20000); + } +} + +/* 80841084-8084116C 009244 00E8+00 2/2 0/0 0/0 .text setBoarHit__9daHorse_cFP10fopAc_ac_ci */ +void daHorse_c::setBoarHit(fopAc_ac_c* param_0, int param_1) { + int vibmode; + s16 var_r30; + if (param_1) { + vibmode = VIBMODE_S_POWER2; + var_r30 = 0x800; + } else { + vibmode = VIBMODE_S_POWER1; + var_r30 = 0x500; + } + + if (abs(field_0x1702) < 0x100) { + dComIfGp_getVibration().StartShock(vibmode, 1, cXyz(0.0f, 1.0f, 0.0f)); + daAlink_getAlinkActorClass()->seStartOnlyReverb(Z2SE_HORSE_BODYHIT); + } + + if ((s16)(fopAcM_searchActorAngleY(this, param_0) - shape_angle.y) >= 0) { + field_0x1702 = -var_r30; + } else { + field_0x1702 = var_r30; + } +} + +/* 8084116C-808411D0 00932C 0064+00 1/1 0/0 0/0 .text savePos__9daHorse_cFv */ +void daHorse_c::savePos() { + if (this->model != NULL && !checkStateFlg0(FLG0_UNK_8000) && !checkStateFlg0(FLG0_NO_DRAW_WAIT)) { + dComIfGs_setHorseRestart(dComIfGp_getStartStageName(), current.pos, shape_angle.y, fopAcM_GetRoomNo(this)); + } +} + +/* 808411D0-80841468 009390 0298+00 1/0 0/0 0/0 .text callHorseSubstance__9daHorse_cFPC4cXyz */ +int daHorse_c::callHorseSubstance(cXyz const* i_pos) { + int room_no = dComIfGp_roomControl_getStayNo(); + if (checkStateFlg0(FLG0_RODEO_MODE) || + (daAlink_c::checkStageName("F_SP108") && (room_no == 5 || room_no == 6 || room_no == 11 || room_no == 14)) || + (daAlink_c::checkStageName("F_SP110") && (room_no == 1 || room_no == 2 || room_no == 3))) + { + return 0; + } + + cXyz pos_vec = current.pos - *i_pos; + f32 dist_xz2 = pos_vec.abs2XZ(); + + m_sound.startCreatureVoice(Z2SE_HS_V_CRY_UMAKUSA, m_reverb); + + int rt = 2; + if (m_zeldaActorKeep.getActor() != NULL) { + if (((daHoZelda_c*)m_zeldaActorKeep.getActor())->checkSingleRide()) { + changeOriginalDemo(); + changeDemoMode(15, 0); + return 4; + } + } + + if (m_path != NULL && (checkStateFlg0(FLG0_NO_DRAW_WAIT) || dist_xz2 > SQUARE(2000.0f))) { + daAlink_c* player = daAlink_getAlinkActorClass(); + Vec* farthest_pos; + Vec* path_pnt_pos; + + for (int i = 0; i < m_path->m_num; i++) { + path_pnt_pos = &m_path->m_points[i].m_position; + f32 x_dist = path_pnt_pos->x - i_pos->x; + f32 z_dist = path_pnt_pos->z - i_pos->z; + f32 farthest_sqdist; + f32 sqdist = (x_dist * x_dist) + (z_dist * z_dist); + + if (i == 0 || (farthest_sqdist > sqdist && sqdist > SQUARE(2000.0f))) { + farthest_sqdist = sqdist; + farthest_pos = path_pnt_pos; + } + } + + cXyz pos(farthest_pos->x, farthest_pos->y, farthest_pos->z); + i_setHorsePosAndAngle(&pos, shape_angle.y); + rt = 1; + } else if (dist_xz2 <= SQUARE(800.0f)) { + return 3; + } + + onStateFlg0(FLG0_CALL_HORSE); + changeOriginalDemo(); + changeDemoMode(12, 0); + return rt; +} + +/* 80841468-808415B4 009628 014C+00 1/0 0/0 0/0 .text + * setHorsePosAndAngleSubstance__9daHorse_cFPC4cXyzs */ +// NONMATCHING - small regalloc, equivalent +int daHorse_c::setHorsePosAndAngleSubstance(cXyz const* param_0, s16 param_1) { + int i, j; + + cXyz sp10(current.pos); + s16 var_r24 = shape_angle.y; + + if (param_0 != NULL) { + current.pos = *param_0; + old.pos = current.pos; + } + + shape_angle.y = param_1; + current.angle.y = param_1; + field_0x16e8 = shape_angle.y; + field_0x170e = param_1; + field_0x1710 = param_1; + + mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); + mDoMtx_stack_c::YrotM(shape_angle.y - var_r24); + mDoMtx_stack_c::transM(-sp10.x, -sp10.y, -sp10.z); + mDoMtx_stack_c::multVec(&field_0x17a0, &field_0x17a0); + + daHorseRein_c* m_rein = m_rein; + for (i = 0; i < 3; i++) { + cXyz* var_r28 = m_rein->field_0x0[0]; + for (j = 0; j < m_rein->field_0x8[1]; j++, var_r28++) { + mDoMtx_stack_c::multVec(var_r28, var_r28); + } + m_rein++; + } +} + +/* 808415B4-80841628 009774 0074+00 2/2 0/0 0/0 .text checkPlayerHeavy__9daHorse_cFv */ +BOOL daHorse_c::checkPlayerHeavy() { + return !dComIfGp_event_runCheck() && checkStateFlg0(FLG0_UNK_1) && !checkStateFlg0(daHorse_FLG0(FLG0_UNK_200000 | FLG0_UNK_100000)) && daAlink_getAlinkActorClass()->checkBootsOrArmorHeavy(); +} + +/* 80841628-80841698 0097E8 0070+00 2/2 0/0 0/0 .text setTgCoGrp__9daHorse_cFUlUl */ +void daHorse_c::setTgCoGrp(u32 i_tgGrp, u32 i_coGrp) { + m_head_sph.SetTgGrp(i_tgGrp); + + dCcD_Cyl* cyl_p = m_tgco_cyl; + for (int i = 0; i < 3; i++) { + cyl_p->SetTgGrp(i_tgGrp); + cyl_p->SetCoVsGrp(i_coGrp); + cyl_p++; + } +} + +/* 80841698-808416D4 009858 003C+00 1/0 0/0 0/0 .text onRideFlgSubstance__9daHorse_cFv */ +void daHorse_c::onRideFlgSubstance() { + onStateFlg0(FLG0_UNK_1); + m_rodeoPointCnt = 0; + setTgCoGrp(4, 0x60); +} + +/* 808416D4-80841708 009894 0034+00 1/0 0/0 0/0 .text offRideFlgSubstance__9daHorse_cFv + */ +void daHorse_c::offRideFlgSubstance() { + offStateFlg0(FLG0_UNK_1); + setTgCoGrp(8, 0x70); +} + +/* 80841708-808417B8 0098C8 00B0+00 8/8 0/0 0/0 .text procWaitInit__9daHorse_cFv */ +int daHorse_c::procWaitInit() { + if (m_procID == PROC_WAIT_e) { + return 0; + } + + offStateFlg0(daHorse_FLG0(FLG0_UNK_10000000 | FLG0_PLAYER_BACK_RIDE_LASH | FLG0_UNK_800 | FLG0_UNK_200)); + m_proc = &daHorse_c::procWait; + m_procID = PROC_WAIT_e; + speedF = 0.0f; + field_0x1760 = 0.0f; + + if (!checkServiceWaitAnime()) { + setMoveAnime(3.0f); + setServiceWaitTimer(); + } + + return 1; +} + +/* 808417B8-80841F04 009978 074C+00 1/0 0/0 0/0 .text procWait__9daHorse_cFv */ +int daHorse_c::procWait() { + if ((!dComIfGp_event_runCheck() && checkStateFlg0(FLG0_UNK_4000000)) || checkPlayerHeavy()) { + return procTurnInit(0); + } + + int sp18 = setSpeedAndAngle(); + field_0x1760 = speedF; + + if (!checkEndResetStateFlg0(ERFLG0_MOVE_ACCEPT) && !checkStateFlg0(FLG0_UNK_40000) && (m_anmIdx[0] != ANM_HS_WALK_START || !(m_frameCtrl[0].getFrame() >= 15.0f)) && !dComIfGp_event_runCheck()) { + if (sp18 == 0 && speedF < 0.0f && m_anmIdx[0] != ANM_HS_WALK_START) { + setSingleAnime(ANM_HS_WALK_START, 1.0f, 0.0f, -1, 3.0f, 0); + } + speedF = 0.0f; + } + + if (m_anmIdx[0] == ANM_HS_WAIT_03 && m_frameCtrl[0].checkPass(18)) { + m_sound.startCreatureVoice(Z2SE_HS_V_BURURU, m_reverb); + } + + if (sp18 != 0) { + return procTurnInit(0); + } + + if (fabsf(speedF) >= 0.05f) { + if (checkEndResetStateFlg0(ERFLG0_RIDE_RUN_FLG)) { + speedF = daHorse_hio_c0::m.fastwalk_to_run_rate * m_normalMaxSpeedF; + } + return procMoveInit(); + } + + daAlink_c* player = daAlink_getAlinkActorClass(); + if (checkTgHitTurn()) { + return 1; + } + + f32 enemy_search_range = daHorse_hio_c0::m.enemy_search_range; + if ((!checkInputOnR() || !checkStateFlg0(FLG0_UNK_1)) && fopAcIt_Judge((fopAcIt_JudgeFunc)daHorse_searchEnemy, &enemy_search_range) != NULL) { + onResetStateFlg0(RFLG0_ENEMY_SEARCH); + + if (field_0x170c == 0 && !checkStateFlg0(daHorse_FLG0(FLG0_UNK_200000 | FLG0_UNK_100000)) && !dComIfGp_event_runCheck() && !player->checkHorseRideReady() && !player->checkHorseLieAnime() && !checkStateFlg0(FLG0_PLAYER_BACK_RIDE_LASH) && !checkStateFlg0(FLG0_UNK_1)) { + return procTurnInit(1); + } + + if (!dComIfGp_event_runCheck() && !player->checkHorseRideReady() && m_anmIdx[0] != ANM_HS_EXCITEMENT && m_anmIdx[0] != ANM_HS_EXCITEMENT_2) { + if (cM_rnd() < 0.7f) { + setSingleAnime(ANM_HS_EXCITEMENT_2, 1.0f, 0.0f, -1, 3.0f, 0); + field_0x170c = 80.0f + cM_rndF(30.0f); + } else { + setSingleAnime(ANM_HS_EXCITEMENT, 1.0f, 0.0f, -1, 3.0f, 0); + field_0x170c = 30.0f + cM_rndF(30.0f); + } + } + } else if ((m_anmIdx[0] == ANM_HS_EXCITEMENT || m_anmIdx[0] == ANM_HS_EXCITEMENT_2) && !m_frameCtrl[0].checkPass(0.0f)) { + onResetStateFlg0(RFLG0_ENEMY_SEARCH); + } + + f32 temp_f30 = fabsf(m_frameCtrl[0].getRate()); + + if (m_anmIdx[0] == ANM_HS_WALK_START) { + setServiceWaitTimer(); + if (fabsf(field_0x1760) < 0.05f) { + m_anmIdx[0] = 0xFFFF; + setMoveAnime(3.0f); + } + } else if (temp_f30 < 0.01f || shape_angle.y != field_0x16e8 || field_0x16f0 != 0 || eventInfo.checkCommandTalk()) { + int spC = 0; + if (shape_angle.y == field_0x16e8 && field_0x16f0 == 0 && !eventInfo.checkCommandTalk()) { + if (m_anmIdx[0] == ANM_HS_WAIT_04 || (m_anmIdx[0] == ANM_HS_WAIT_01B_CONNECT && m_frameCtrl[0].getFrame() > 1.0f)) { + setSingleAnime(ANM_HS_WAIT_01B, 1.0f, 0.0f, -1, 3.0f, 0); + m_frameCtrl[0].setAttribute(0); + spC = 1; + } else if (m_anmIdx[0] == ANM_HS_WAIT_01B) { + setSingleAnime(ANM_HS_WAIT_01B_CONNECT, -1.0f, 0.0f, -1, 3.0f, 0); + spC = 1; + } + } + + if (spC == 0) { + f32 var_f29; + if (temp_f30 < 0.01f) { + var_f29 = 3.0f; + } else { + var_f29 = -1.0f; + } + + if (!checkResetStateFlg0(RFLG0_ENEMY_SEARCH) || (checkInputOnR() && checkStateFlg0(FLG0_UNK_1))) { + setMoveAnime(var_f29); + } + + setServiceWaitTimer(); + } + } else if (shape_angle.y == field_0x16e8 && !dComIfGp_event_runCheck() && fabsf(field_0x1760) < 0.05f && !checkResetStateFlg0(RFLG0_ENEMY_SEARCH) && m_anmRatio[2].getAnmTransform() == NULL) { + if (m_serviceWaitTimer == 0) { + if (!checkServiceWaitAnime()) { + f32 rnd = cM_rnd(); + u16 anm_idx; + if (rnd < 0.2f) { + anm_idx = ANM_HS_WAIT_02; + } else if (rnd < 0.4f) { + anm_idx = ANM_HS_WAIT_03; + } else if (rnd < 0.6f) { + anm_idx = ANM_HS_WAIT_04; + } else if (rnd < 0.8f) { + anm_idx = ANM_HS_WAIT_05; + } else { + anm_idx = ANM_HS_WAIT_01B_CONNECT; + } + + setSingleAnime(anm_idx, 1.0f, 0.0f, -1, 6.0f, 0); + } + } else { + m_serviceWaitTimer--; + setMoveAnime(-1.0f); + } + } else { + if (!checkResetStateFlg0(RFLG0_ENEMY_SEARCH) || (checkInputOnR() && checkStateFlg0(FLG0_UNK_1))) { + setMoveAnime(-1.0f); + } + setServiceWaitTimer(); + } + + if (!checkStateFlg0(FLG0_UNK_1)) { + if (daPy_py_c::i_checkNowWolf()) { + attention_info.flags |= 0x8; + eventInfo.i_onCondition(1); + } else if (m_procID == PROC_WAIT_e) { + acceptPlayerRide(); + } + + if (checkStateFlg0(FLG0_RIDE_START_FLG)) { + offStateFlg0(FLG0_RIDE_START_FLG); + if (!checkServiceWaitAnime() || m_anmIdx[0] == ANM_HS_WAIT_01B || m_anmIdx[0] == ANM_HS_WAIT_04 || (m_anmIdx[0] == ANM_HS_WAIT_01B_CONNECT && m_frameCtrl[0].getRate() > 0.0f)) { + setSingleAnime(ANM_HS_WAIT_02, 1.0f, 0.0f, -1, 3.0f, 0); + m_serviceWaitTimer = 0; + } + } + } + + return 1; +} + +/* 80841F04-80841F80 00A0C4 007C+00 6/6 0/0 0/0 .text procMoveInit__9daHorse_cFv */ +int daHorse_c::procMoveInit() { + m_proc = &daHorse_c::procMove; + m_procID = PROC_MOVE_e; + offStateFlg0(daHorse_FLG0(FLG0_PLAYER_BACK_RIDE_LASH | FLG0_UNK_200)); + setMoveAnime(3.0f); + field_0x171a = 0; + return 1; +} + +/* 80841F80-808423DC 00A140 045C+00 1/0 0/0 0/0 .text procMove__9daHorse_cFv */ +int daHorse_c::procMove() { + int var_r30 = setSpeedAndAngle(); + if (var_r30 != 0) { + offStateFlg0(FLG0_UNK_10000000); + } + + if (checkStateFlg0(FLG0_UNK_800) && !daAlink_getAlinkActorClass()->checkHorseSubjectivity()) { + offStateFlg0(FLG0_UNK_800); + if (var_r30 == 0) { + speedF = field_0x1798; + } + } + + if (m_demoMode == 2 && speedF > (daHorse_hio_c0::m.walk_to_fastwalk_rate * m_normalMaxSpeedF)) { + speedF = daHorse_hio_c0::m.walk_to_fastwalk_rate * m_normalMaxSpeedF; + } else if (m_demoMode == 10 && speedF > (daHorse_hio_c0::m.wait_to_walk_rate * m_normalMaxSpeedF)) { + speedF = daHorse_hio_c0::m.wait_to_walk_rate * m_normalMaxSpeedF; + } else if (m_demoMode == 11 && speedF > (daHorse_hio_c0::m.fastwalk_to_run_rate * m_normalMaxSpeedF)) { + speedF = daHorse_hio_c0::m.fastwalk_to_run_rate * m_normalMaxSpeedF; + } + + if (checkStateFlg0(daHorse_FLG0(FLG0_UNK_200000 | FLG0_UNK_100000)) && !m_acch.i_ChkGroundHit()) { + field_0x1768 = 350.0f; + field_0x176c = 0.0f; + field_0x1770 = field_0x1768; + current.pos.y = old.pos.y; + procJumpInit(0); + speed.y = 0.0f; + setSingleAnime(ANM_HS_JUMP_END, 0.0f, 0.0f, -1, 8.0f, 0); + } else if (!checkStateFlg0(FLG0_UNK_10000000) && checkEndResetStateFlg0(daHorse_ERFLG0(ERFLG0_UNK_20 | ERFLG0_UNK_1))) { + procJumpInit(0); + } else if (var_r30 == 5) { + field_0x1768 = daHorse_hio_c0::m.cliff_jump_horizontal; + field_0x176c = daHorse_hio_c0::m.cliff_jump_vertical + current.pos.y; + field_0x1770 = field_0x1768; + procJumpInit(1); + } else if (var_r30 == 1) { + procTurnInit(0); + } else if (var_r30 == 3 || var_r30 == 4) { + if (!checkStateFlg0(FLG0_UNK_2)) { + resetNeckAnime(); + m_lashAccelerationTime = 0; + offStateFlg0(daHorse_FLG0(FLG0_TURN_CANCEL_KEEP | FLG0_PLAYER_BACK_RIDE_LASH | FLG0_UNK_800 | FLG0_UNK_2)); + procWaitInit(); + } else { + if (var_r30 == 4) { + speedF = 0.0f; + } + procStopInit(); + } + } else if (fabsf(speedF) < 0.05f) { + if (checkStateFlg0(FLG0_UNK_200)) { + procTurnInit(0); + } else { + procWaitInit(); + } + } else if (checkStateFlg0(FLG0_UNK_10000000) && field_0x171a != 0 && (m_cc_stts.GetCCMoveP()->abs() > 1.0f || checkStateFlg0(FLG0_UNK_4) || m_acch.ChkWallHit() || m_callMoveTimer == 0 || daAlink_getAlinkActorClass()->current.pos.abs2XZ(current.pos) < 640000.0f)) { + procStopInit(); + offStateFlg0(FLG0_UNK_10000000); + } else { + setMoveAnime(-1.0f); + } + + if (m_procID == PROC_MOVE_e) { + field_0x171a = 1; + } + + return 1; +} + +/* 808423DC-808425BC 00A59C 01E0+00 3/3 0/0 0/0 .text procStopInit__9daHorse_cFv */ +int daHorse_c::procStopInit() { + m_proc = &daHorse_c::procStop; + m_procID = PROC_STOP_e; + resetNeckAnime(); + m_lashAccelerationTime = 0; + offStateFlg0(daHorse_FLG0(FLG0_TURN_CANCEL_KEEP | FLG0_PLAYER_BACK_RIDE_LASH | FLG0_UNK_800 | FLG0_UNK_2)); + field_0x171a = 0; + + if (m_demoMode == 8 || m_demoMode == 16 || m_demoMode == 14 || checkStateFlg0(FLG0_UNK_40000000) || (speedF * (1.0f / m_normalMaxSpeedF)) < daHorse_hio_c0::m.run_to_fastrun_rate) { + setSingleAnime(ANM_HS_STOP_SLOW, daHorse_hio_c0::m.faststop_anm_speed, 0.0f, -1, daHorse_hio_c0::m.faststop_interpolation, 0); + field_0x177C = daHorse_hio_c0::m.fast_stop_cancel_frame; + + if (checkStateFlg0(FLG0_UNK_40000000)) { + offStateFlg0(FLG0_UNK_40000000); + field_0x171a = 1; + } + } else { + setSingleAnime(ANM_HS_STOP_STAND, daHorse_hio_c0::m.faststop_stand_anm_speed, 0.0f, -1, daHorse_hio_c0::m.faststop_interpolation, 0); + field_0x177C = daHorse_hio_c0::m.faststop_stand_cancel_frame; + } + + field_0x16b7 = 1; + field_0x171c = 0; + + if (checkStateFlg0(FLG0_UNK_10000000)) { + field_0x1774 = 2.7f; + field_0x171c = 1; + } else if (speedF <= m_normalMaxSpeedF) { + field_0x1774 = daHorse_hio_c0::m.faststop_deceleration_slow; + } else { + f32 var_f31 = (2.0f * ((m_normalMaxSpeedF * m_normalMaxSpeedF) / (2.0f * daHorse_hio_c0::m.faststop_deceleration_slow))); + field_0x1774 = (speedF * speedF) / var_f31; + if (field_0x1774 > daHorse_hio_c0::m.faststop_deceleration) { + field_0x1774 = daHorse_hio_c0::m.faststop_deceleration; + } + } + + return 1; +} + +/* 808425BC-80842878 00A77C 02BC+00 1/0 0/0 0/0 .text procStop__9daHorse_cFv */ +int daHorse_c::procStop() { + struct unk_foot_eff_t { + f32 _0; + f32 _4; + f32 _8; + }; + + static const unk_foot_eff_t stopFootEffectFrame[] = { + {8, 11, 24}, + {11, 14, 27}, + {5, 8, 18}, + {8, 13, 23} + }; + + static const unk_foot_eff_t stopStandFootEffectFrame[] = { + {7, 12, 24}, + {11, 19, 26}, + {5, 10, 18}, + {7, 18, 26} + }; + + const unk_foot_eff_t* var_r29; + daPy_frameCtrl_c* frame_ctrl = &m_frameCtrl[0]; + int var_r25 = checkHorseNoMove(1); + + if (var_r25 == 2) { + speedF = 0.0f; + } else if (checkStateFlg0(FLG0_RODEO_MODE)) { + cLib_chaseF(&speedF, 0.0f, 3.5f); + } else { + cLib_chaseF(&speedF, 0.0f, field_0x1774); + } + + if (fabsf(speedF) < 1.0f) { + acceptPlayerRide(); + if (checkStateFlg0(FLG0_RIDE_START_FLG)) { + offStateFlg0(FLG0_RIDE_START_FLG); + procWaitInit(); + } + } + + f32 var_f30; + if (frame_ctrl->checkAnmEnd() || checkEndResetStateFlg0(ERFLG0_CUT_TURN_CANCEL)) { + if (m_demoMode == 8 || m_demoMode == 16) { + dComIfGp_evmng_cutEnd(m_demoStaffId); + } else { + if (m_demoMode == 14) { + m_demoMode = 1; + return procWaitInit(); + } else if (checkEndResetStateFlg0(ERFLG0_CUT_TURN_CANCEL)) { + return procMoveInit(); + } else if (field_0x171a != 0) { + setNeckAnime(ANM_HS_WAIT_03, 1.0f, 0.0f, -1); + } + + return procWaitInit(); + } + } else { + if (frame_ctrl->getFrame() > field_0x177C) { + if (checkStateFlg0(FLG0_RODEO_MODE) || checkStateFlg0(FLG0_UNK_200)) { + return procTurnInit(0); + } + + if (var_r25 == 0 && checkTurnAfterFastMove(frame_ctrl->getFrame())) { + return 1; + } + } + + if (m_anmIdx[0] == ANM_HS_STOP_STAND) { + if (frame_ctrl->checkPass(59)) { + field_0x16b6 = 1; + field_0x16b7 = 2; + } + var_r29 = stopStandFootEffectFrame; + var_f30 = 32.0f; + } else { + var_r29 = stopFootEffectFrame; + var_f30 = 29.0f; + } + } + + f32 frame = frame_ctrl->getFrame(); + if (frame <= var_f30) { + for (int i = 0; i < 4; i++, var_r29++) { + if ((frame >= var_r29->_0 && frame <= var_r29->_4) || frame >= var_r29->_8) { + field_0x16b6 |= (1 << i); + } + } + + m_sound.startCreatureSoundLevel(Z2SE_FN_HORSE_SLIP, m_poly_sound, m_reverb); + } + + return 1; +} + +/* 80842878-80842AB0 00AA38 0238+00 6/6 0/0 0/0 .text procTurnInit__9daHorse_cFi */ +int daHorse_c::procTurnInit(int param_0) { + if (checkEndResetStateFlg0(ERFLG0_RIDE_RUN_FLG)) { + speedF = 0.0f; + return 0; + } + + m_proc = &daHorse_c::procTurn; + m_procID = PROC_TURN_e; + + resetNeckAnime(); + setSingleAnime(ANM_HS_STAND, daHorse_hio_c0::m.stand_anm_speed, 0.0f, -1, daHorse_hio_c0::m.stand_interpolation, 0); + + field_0x1774 = 52.0f; + field_0x1778 = 0.09817477f; + field_0x177C = daHorse_hio_c0::m.stand_cancel_frame; + field_0x1780 = 20.0f; + field_0x1784 = 53.0f; + speedF = 0.0f; + + field_0x171a = 0; + field_0x171c = shape_angle.y; + current.angle.y = shape_angle.y; + offStateFlg0(daHorse_FLG0(FLG0_TURN_CANCEL_KEEP | FLG0_PLAYER_BACK_RIDE_LASH | FLG0_UNK_800 | FLG0_UNK_8)); + field_0x171e = shape_angle.y + 0x8000; + + if (!dComIfGp_event_runCheck() && !checkStateFlg0(FLG0_UNK_4000000)) { + field_0x170a += 0x8000; + } else if (checkStateFlg0(FLG0_UNK_4000000)) { + field_0x171e = shape_angle.y; + } + + if (!dComIfGp_event_runCheck()) { + offStateFlg0(FLG0_UNK_4000000); + } + + field_0x1730 = param_0; + if (field_0x1730 != 0) { + field_0x171e = (f32)shape_angle.y + cM_rndFX(8192.0f); + } + + field_0x1720 = 0; + field_0x170c = 30.0f + cM_rndF(30.0f); + field_0x16b7 = 2; + + acceptPlayerRide(); + m_at_cyl.SetAtSpl(dCcG_At_Spl_UNK_1); + m_at_cyl.SetAtHitMark(3); + m_at_cyl.SetAtAtp(2); + + if (checkInputOnR()) { + field_0x1722 = 1; + } else { + field_0x1722 = 0; + } + + return 1; +} + +/* 80842AB0-80843008 00AC70 0558+00 1/0 0/0 0/0 .text procTurn__9daHorse_cFv */ +int daHorse_c::procTurn() { + daPy_frameCtrl_c* frame_ctrl = &m_frameCtrl[0]; + + if (!checkInputOnR()) { + field_0x1722 = 0; + } + + if (field_0x1730 != 0) { + onResetStateFlg0(RFLG0_ENEMY_SEARCH); + } + + int sp14 = checkHorseNoMove(1); + + if (m_anmIdx[0] == ANM_HS_STAND) { + if (frame_ctrl->checkPass(8.0f) && !checkInputOnR()) { + field_0x171a = 0; + } + + if (frame_ctrl->checkPass(14.0f) && !checkEndResetStateFlg0(ERFLG0_CUT_TURN_CANCEL)) { + m_sound.startCreatureVoice(Z2SE_HS_V_CRY, m_reverb); + } + } + + if (frame_ctrl->checkPass(field_0x1784) != 0) { + field_0x16b6 = 1; + } + + bool sp8 = frame_ctrl->getFrame() < field_0x1784; + + if (field_0x1720 != 0) { + dComIfGp_evmng_cutEnd(m_demoStaffId); + setMoveAnime(-1.0f); + } else if (frame_ctrl->checkAnmEnd() || checkEndResetStateFlg0(ERFLG0_CUT_TURN_CANCEL)) { + if (m_demoMode == 9) { + dComIfGp_evmng_cutEnd(m_demoStaffId); + setMoveAnime(3.0f); + field_0x1720 = 1; + } else { + acceptPlayerRide(); + return procWaitInit(); + } + } else { + if (sp14 == 0) { + if (checkTurnAfterFastMove(frame_ctrl->getFrame())) { + if (sp8) { + field_0x16b6 = 1; + field_0x16b7 = 2; + } + return 1; + } + } + + if (frame_ctrl->getFrame() >= field_0x1780 && frame_ctrl->getFrame() < field_0x1774) { + onResetStateFlg0(RFLG0_TURN_STAND); + if (!checkStateFlg0(daHorse_FLG0(FLG0_UNK_200000 | FLG0_UNK_100000)) || frame_ctrl->getFrame() < field_0x1774 - 10.0f) { + onResetStateFlg0(RFLG0_TURN_STAND_CAMERA); + } + + if (checkInputOnR() || (checkStateFlg0(daHorse_FLG0(FLG0_UNK_200000 | FLG0_UNK_100000)) && !dComIfGp_event_runCheck()) || checkStateFlg0(FLG0_UNK_200) || field_0x1730 != 0) { + s16 spE = 2000.0f * cM_fsin(field_0x1778 * (frame_ctrl->getFrame() - field_0x1780)); + s16 var_r27; + if (checkStateFlg0(daHorse_FLG0(FLG0_UNK_200000 | FLG0_UNK_100000 | FLG0_UNK_200)) || field_0x1730 != 0) { + var_r27 = field_0x171e; + } else { + var_r27 = m_padStickAngleY; + } + + s16 var_r26 = var_r27 - shape_angle.y; + if (var_r26 != 0 && (field_0x171a * var_r26) >= 0) { + if (field_0x171a == 0 && abs((s16)(shape_angle.y - field_0x171c)) > 1000) { + if (var_r26 > 0) { + field_0x171a = 1; + } else { + field_0x171a = -1; + } + } + + cLib_chaseAngleS(&shape_angle.y, var_r27, spE); + + cXyz sp24(current.pos.x - (60.0f * cM_ssin(current.angle.y)), current.pos.y, current.pos.z - (60.0f * cM_scos(current.angle.y))); + cXyz sp18 = current.pos - sp24; + + mDoMtx_stack_c::transS(sp24.x, sp24.y, sp24.z); + mDoMtx_stack_c::YrotM(shape_angle.y - current.angle.y); + mDoMtx_stack_c::multVec(&sp18, ¤t.pos); + current.pos.y += 300.0f; + + if (fopAcM_gc_c::gndCheck(¤t.pos)) { + current.pos.y = fopAcM_gc_c::getGroundY(); + } else { + current.pos = old.pos; + } + + current.angle.y = shape_angle.y; + s16 spC = shape_angle.y; + s16 spA = shape_angle.x; + + for (int i = 0; i < 8; i++) { + if (checkHorseNoMove(1) == 2) { + current.pos = old.pos; + break; + } + + shape_angle.y += 0x2000; + current.angle.y = shape_angle.y; + } + + shape_angle.y = spC; + current.angle.y = shape_angle.y; + if (cLib_distanceAngleS(shape_angle.y, field_0x171c) >= 0x4000) { + offStateFlg0(FLG0_UNK_40000); + } + } + } + } + } + + acceptPlayerRide(); + if (checkStateFlg0(FLG0_RIDE_START_FLG)) { + offStateFlg0(FLG0_RIDE_START_FLG); + procWaitInit(); + } else if (frame_ctrl->getFrame() > field_0x1784 - 3.0f && frame_ctrl->getFrame() < 3.0f + field_0x1784) { + onResetStateFlg0(RFLG0_UNK_20); + } + + return 1; +} + +/* 80843008-808432E0 00B1C8 02D8+00 2/2 0/0 0/0 .text procJumpInit__9daHorse_cFi */ +int daHorse_c::procJumpInit(int param_0) { + if (checkEndResetStateFlg0(ERFLG0_RIDE_RUN_FLG)) { + return 0; + } + + if (!checkStateFlg0(FLG0_UNK_1) && m_demoMode != 7) { + return procStopInit(); + } + + m_proc = &daHorse_c::procJump; + + m_procID = PROC_JUMP_e; + resetNeckAnime(); + + field_0x1720 = param_0; + + if (param_0) { + setSingleAnime(ANM_HS_JUMP_START_CLIFT, daHorse_hio_c0::m.cliff_jump_anm_speed, daHorse_hio_c0::m.cliff_jump_start_frame, daHorse_hio_c0::m.cliff_jump_end_frame, daHorse_hio_c0::m.cliff_jump_interpolation, 0); + } else { + setSingleAnime(ANM_HS_JUMP_START, daHorse_hio_c0::m.jump_anm_speed, daHorse_hio_c0::m.jump_start_frame, daHorse_hio_c0::m.jump_end_frame, daHorse_hio_c0::m.jump_interpolation, 0); + } + + if (speedF < 0.75f * m_normalMaxSpeedF) { + speedF = 0.75f * m_normalMaxSpeedF; + } + + field_0x1774 = 0.8f * speedF; + + f32 temp_f31 = 20.0f + (field_0x176c - current.pos.y); + speedF *= field_0x1768 / JMAFastSqrt((field_0x1768 * field_0x1768) + (temp_f31 * temp_f31)); + + field_0x171a = field_0x1768 / speedF; + if (field_0x171a < daHorse_hio_c0::m.min_jump_time) { + field_0x171a = daHorse_hio_c0::m.min_jump_time; + speedF = field_0x1768 / (f32)field_0x171a; + } + + field_0x171e = field_0x1770 / speedF; + if (field_0x171e < daHorse_hio_c0::m.min_jump_time) { + field_0x171e = daHorse_hio_c0::m.min_jump_time; + } + + field_0x177C = (-2.0f * temp_f31) / (f32)(field_0x171e * field_0x171e); + gravity = (-2.0f * temp_f31) / (f32)(field_0x171a * field_0x171a); + speed.y = -gravity * (f32)field_0x171a; + + offStateFlg0(daHorse_FLG0(FLG0_PLAYER_BACK_RIDE_LASH | FLG0_UNK_800 | FLG0_UNK_200 | FLG0_UNK_10)); + field_0x1702 = 0; + field_0x171c = 0; + field_0x17d0 = current.pos; + field_0x1778 = 1.5f * (1.5f * (field_0x1768 * field_0x1768)); + field_0x1722 = 300; + return 1; +} + +/* 808432E0-80843604 00B4A0 0324+00 1/0 0/0 0/0 .text procJump__9daHorse_cFv */ +int daHorse_c::procJump() { + if (field_0x1722 != 0) { + field_0x1722--; + } + + if ((field_0x171c != 0) && ((speed.y < 0.0f && field_0x17d0.abs2XZ(current.pos) > field_0x1778) || field_0x1722 == 0) && m_acch.i_ChkGroundHit()) { + return procLandInit(field_0x1774, field_0x1720); + } + + field_0x171c = 1; + + if (m_anmIdx[0] == ANM_HS_JUMP_START_CLIFT) { + if (m_frameCtrl[0].checkAnmEnd()) { + setSingleAnime(ANM_HS_JUMP_MIDDLE, daHorse_hio_c0::m.cliff_air_anm_speed, daHorse_hio_c0::m.cliff_air_start_frame, daHorse_hio_c0::m.cliff_air_end_frame, daHorse_hio_c0::m.cliff_air_interpolation, 0); + } + } else if (m_anmIdx[0] == ANM_HS_JUMP_START) { + if (m_frameCtrl[0].checkAnmEnd()) { + int temp_r28 = (f32)field_0x171a - ((1.0f / daHorse_hio_c0::m.jump_anm_speed) * (f32)(m_frameCtrl[0].getEnd() - m_frameCtrl[0].getStart())); + if (temp_r28 <= 0) { + temp_r28 += field_0x171e; + gravity = field_0x177C; + + if (temp_r28 <= 0) { + setSingleAnime(ANM_HS_JUMP_END, 0.0f, 0.0f, -1, field_0x171e, 0); + } else { + setSingleAnime(ANM_HS_JUMP_MIDDLE, (daHorse_hio_c0::m.air_end_frame - 6.0f) / temp_r28, 6.0f, daHorse_hio_c0::m.air_end_frame, daHorse_hio_c0::m.air_interpolation, 0); + } + } else { + setSingleAnime(ANM_HS_JUMP_MIDDLE, (6.0f - daHorse_hio_c0::m.air_start_frame) / temp_r28, daHorse_hio_c0::m.air_start_frame, 6, daHorse_hio_c0::m.air_interpolation, 0); + } + } + } else if (m_anmIdx[0] == ANM_HS_JUMP_MIDDLE && field_0x1720 == 0 && m_frameCtrl[0].checkAnmEnd() && m_frameCtrl[0].getEnd() == 6) { + setSingleAnime(ANM_HS_JUMP_MIDDLE, (1.0f + (daHorse_hio_c0::m.air_end_frame - 6.0f)) / field_0x171e, 7.0f, daHorse_hio_c0::m.air_end_frame, -1.0f, 0); + gravity = field_0x177C; + } + + return 1; +} + +/* 80843604-80843770 00B7C4 016C+00 1/1 0/0 0/0 .text procLandInit__9daHorse_cFfi */ +int daHorse_c::procLandInit(f32 i_speedF, BOOL param_1) { + m_proc = &daHorse_c::procLand; + m_procID = PROC_LAND_e; + + resetNeckAnime(); + dComIfGp_getVibration().StartShock(VIBMODE_S_POWER2, 1, cXyz(0.0f, 1.0f, 0.0f)); + + if (param_1) { + setSingleAnime(ANM_HS_JUMP_END, daHorse_hio_c0::m.cliff_land_anm_speed, daHorse_hio_c0::m.cliff_land_start_frame, daHorse_hio_c0::m.cliff_land_end_frame, daHorse_hio_c0::m.cliff_land_interpolation, 0); + field_0x177C = daHorse_hio_c0::m.cliff_land_cancel_frame; + } else { + setSingleAnime(ANM_HS_JUMP_END, daHorse_hio_c0::m.land_anm_speed, daHorse_hio_c0::m.land_start_frame, daHorse_hio_c0::m.land_end_frame, daHorse_hio_c0::m.land_interpolation, 0); + field_0x177C = daHorse_hio_c0::m.land_cancel_frame; + } + + speedF = i_speedF; + if (speedF >= m_lashMaxSpeedF) { + speedF = m_lashMaxSpeedF; + } + + gravity = -5.0f; + field_0x171a = 0; + field_0x16b6 = 1; + field_0x16b7 = 2; + offStateFlg0(daHorse_FLG0(FLG0_PLAYER_BACK_RIDE_LASH | FLG0_UNK_800 | FLG0_UNK_200)); + return 1; +} + +/* 80843770-808438AC 00B930 013C+00 1/0 0/0 0/0 .text procLand__9daHorse_cFv */ +int daHorse_c::procLand() { + daPy_frameCtrl_c* frame_ctrl = &m_frameCtrl[0]; + int temp_r3 = checkHorseNoMove(1); + + if (temp_r3 == 2) { + speedF = 0.0f; + } else if (temp_r3 != 0) { + cLib_chaseF(&speedF, 0.0f, daHorse_hio_c0::m.stopping_deceleration); + } + + if (field_0x171a != 0) { + cLib_chaseF(&speedF, 0.0f, daHorse_hio_c0::m.stopping_deceleration); + dComIfGp_evmng_cutEnd(m_demoStaffId); + setMoveAnime(-1.0f); + } else if (frame_ctrl->checkAnmEnd()) { + if (m_demoMode == 7) { + cLib_chaseF(&speedF, 0.0f, daHorse_hio_c0::m.stopping_deceleration); + dComIfGp_evmng_cutEnd(m_demoStaffId); + setMoveAnime(3.0f); + field_0x171a = 1; + } else { + procMoveInit(); + } + } else if (temp_r3 == 0) { + checkTurnAfterFastMove(frame_ctrl->getFrame()); + } + + return 1; +} + +/* 808438AC-8084396C 00BA6C 00C0+00 1/1 0/0 0/0 .text procLargeDamageInit__9daHorse_cFv + */ +int daHorse_c::procLargeDamageInit() { + m_proc = &daHorse_c::procLargeDamage; + m_procID = PROC_LARGE_DAMAGE_e; + + resetNeckAnime(); + setSingleAnime(ANM_HS_STAND, daHorse_hio_c0::m.stand_anm_speed, 0.0f, -1, daHorse_hio_c0::m.stand_interpolation, 0); + + current.angle.y = m_cowHitAngle; + speedF = 60.0f; + speed.y = 50.0f; + gravity = -5.0f; + offStateFlg0(daHorse_FLG0(FLG0_PLAYER_BACK_RIDE_LASH | FLG0_UNK_800 | FLG0_UNK_200)); + return 1; +} + +/* 8084396C-808439C8 00BB2C 005C+00 1/0 0/0 0/0 .text procLargeDamage__9daHorse_cFv */ +int daHorse_c::procLargeDamage() { + cLib_addCalcAngleS(&shape_angle.y, current.angle.y, 5, 0x2000, 0x1000); + if (m_acch.ChkWallHit()) { + speedF = 0.0f; + } + + return 1; +} + +/* 808439C8-80843A44 00BB88 007C+00 1/1 0/0 0/0 .text procToolDemoInit__9daHorse_cFv */ +int daHorse_c::procToolDemoInit() { + m_proc = &daHorse_c::procToolDemo; + m_procID = PROC_TOOL_DEMO_e; + + speedF = 0.0f; + speed.y = 0.0f; + resetNeckAnime(); + offStateFlg0(daHorse_FLG0(FLG0_PLAYER_BACK_RIDE_LASH | FLG0_UNK_800 | FLG0_UNK_200)); + return 1; +} + +/* 80843A44-80843BFC 00BC04 01B8+00 1/0 0/0 0/0 .text procToolDemo__9daHorse_cFv */ +int daHorse_c::procToolDemo() { + dDemo_actor_c* demo_actor_p = dDemo_c::getActor(demoActorID); + field_0x1730 = 0; + + if (demo_actor_p != NULL) { + f32 anm_frame = 0.0f; + + if (demo_actor_p->checkEnable(2)) { + current.pos = demo_actor_p->getTrans(); + } + + if (demo_actor_p->checkEnable(8)) { + shape_angle = demo_actor_p->getRatate(); + current.angle = shape_angle; + } + + if (demo_actor_p->checkEnable(0x40)) { + anm_frame = demo_actor_p->getAnmFrame(); + } + + if (demo_actor_p->checkEnable(1) != 0) { + int sp14, sp10, spC; + u16 anm_idx; + while (demo_actor_p->getDemoIDData(&sp14, &sp10, &spC, &anm_idx, NULL) != 0) { + if (sp14 != 0 && sp14 == 2 && sp10 == 1 && spC == 2) { + setSingleAnime(anm_idx, 1.0f, 0.0f, -1, -1.0f, 1); + } + } + } + + if (demo_actor_p->checkEnable(0x40)) { + m_anmRatio[0].getAnmTransform()->setFrame(anm_frame); + demo_actor_p->setAnmFrameMax(m_anmRatio[0].getAnmTransform()->getFrameMax()); + m_frameCtrl[0].setFrame(anm_frame); + } + } else { + offStateFlg0(FLG0_UNK_80000); + procWaitInit(); + } + + return 1; +} + +/* 80843BFC-80843C40 00BDBC 0044+00 1/1 0/0 0/0 .text + * searchSceneChangeArea__9daHorse_cFP10fopAc_ac_c */ +void daHorse_c::searchSceneChangeArea(fopAc_ac_c* i_scnChg) { + if (fopAcM_GetName(i_scnChg) == PROC_SCENE_EXIT) { + if (m_scnChg_num == 50) { + // "Exceeded buffer!!!!!\n" + OS_PANIC(0x1CD6, "バッファ越え!!!!!\n"); + m_scnChg_num = 49; + } + + m_scnChg_buffer[m_scnChg_num] = (daScex_c*)i_scnChg; + m_scnChg_num++; + } +} + +/* 80843C40-80843C74 00BE00 0034+00 1/1 0/0 0/0 .text + * daHorse_searchSceneChangeArea__FP10fopAc_ac_cPv */ +static void* daHorse_searchSceneChangeArea(fopAc_ac_c* i_actor, void* i_data) { + dComIfGp_getHorseActor()->searchSceneChangeArea(i_actor); + return NULL; +} + +/* 80843C74-80844570 00BE34 08FC+00 1/1 0/0 0/0 .text execute__9daHorse_cFv */ +int daHorse_c::execute() { + m_scnChg_num = 0; + fopAcIt_Executor((fopAcIt_ExecutorFunc)daHorse_searchSceneChangeArea, NULL); + m_zeldaActorKeep.setActor(); + + if (checkStateFlg0(FLG0_NO_DRAW_WAIT)) { + if (checkStateFlg0(FLG0_CALL_HORSE)) { + offStateFlg0(FLG0_NO_DRAW_WAIT); + } else { + return 1; + } + } + + daAlink_c* player_p = daAlink_getAlinkActorClass(); + + if (player_p->checkBoarSingleBattleFirst()) { + onStateFlg0(FLG0_UNK_100000); + } else if (player_p->checkBoarSingleBattleSecond()) { + onStateFlg0(FLG0_UNK_200000); + } + + if (m_acch.i_ChkGroundHit()) { + onStateFlg0(FLG0_UNK_10); + } else { + offStateFlg0(FLG0_UNK_10); + } + + m_resetStateFlg0 = 0; + attention_info.flags &= ~0x88; + field_0x16b6 = 0; + field_0x16e8 = shape_angle.y; + field_0x1710 = field_0x170e; + + setDemoData(); + setStickData(); + m_morf_frame = -1.0f; + setLashCnt(); + setTalkModeWolf(); + + if (checkStateFlg0(FLG0_UNK_1) && m_anmIdx[2] == 0xFFFF && (m_tgco_cyl[0].ChkTgHit() || m_tgco_cyl[1].ChkTgHit() || m_tgco_cyl[2].ChkTgHit() || m_head_sph.ChkTgHit())) { + setNeckAnime(ANM_HS_LASH, 1.0f, 0.0f, -1); + m_sound.startCreatureVoice(Z2SE_HS_V_RUSH, -1); + } + + if (m_cowHit != 0) { + m_cowHit--; + } + + if (m_procID != PROC_TURN_e && field_0x170c != 0) { + field_0x170c--; + } + + if (checkStateFlg0(FLG0_UNK_1)) { + field_0x16bc = 0; + } + + animePlay(); + checkDemoAction(); + + (this->*m_proc)(); + + cXyz old_pos(current.pos); + f32 old_speedF = speedF; + speedF *= cM_scos(shape_angle.x); + + if (m_procID == PROC_JUMP_e) { + fopAcM_posMoveF(this, NULL); + } else { + fopAcM_posMoveF(this, m_cc_stts.GetCCMoveP()); + if (m_cc_stts.GetCCMoveP()->abs() > 0.0001f) { + s16 old_shape_y = shape_angle.y; + s16 old_angle_y = current.angle.y; + + for (int i = 0; i < 8; i++) { + if (checkHorseNoMove(1) == 2) { + current.pos -= *m_cc_stts.GetCCMoveP(); + break; + } + + shape_angle.y += 0x2000; + current.angle.y = shape_angle.y; + } + + shape_angle.y = old_shape_y; + current.angle.y = old_angle_y; + } + } + + speedF = old_speedF; + + m_cc_stts.ClrCcMove(); + f32 old_speed_y = speed.y; + + bgCheck(); + m_acch.CrrPos(dComIfG_Bgsp()); + + if (checkStateFlg0(FLG0_UNK_4000)) { + autoGroundHit(); + } else { + current.pos.y = old_pos.y; + speed.y = 0.0f; + } + + if (m_procID == PROC_TOOL_DEMO_e) { + J3DTransformInfo sp70; + m_mtxcalc->getAnm(0)->getTransform(0, &sp70); + + mDoMtx_stack_c::transS(old_pos); + mDoMtx_stack_c::YrotM(shape_angle.y); + + Vec sp54 = {0.0f, 0.0f, 0.0f}; + sp54.x = sp70.mTranslate.x; + sp54.z = sp70.mTranslate.z; + + mDoMtx_stack_c::multVec(&sp54, ¤t.pos); + if (field_0x1730 != 0 && -1000000000.0f != m_acch.GetGroundH()) { + current.pos.y = m_acch.GetGroundH(); + } + } else if (m_procID == PROC_JUMP_e) { + speed.y = old_speed_y; + } + + if (checkStateFlg0(FLG0_UNK_1) && m_acch.i_ChkGroundHit() && checkStateFlg0(FLG0_UNK_2)) { + if (!checkStateFlg0(FLG0_UNK_1000)) { + dComIfGp_getVibration().StartQuake(VIBMODE_S_DOKUTT, 1, cXyz(0.0f, 1.0f, 0.0f)); + onStateFlg0(FLG0_UNK_1000); + } + } else if (checkStateFlg0(FLG0_UNK_1000)) { + dComIfGp_getVibration().StopQuake(0x1F); + offStateFlg0(FLG0_UNK_1000); + } + + setRoomInfo(0); + setMatrix(); + footBgCheck(); + setTailAngle(); + + m_model->calc(); + setBodyPart(); + + if (m_procID == PROC_TOOL_DEMO_e) { + cXyz sp48; + mDoMtx_multVec(m_model->getAnmMtx(0), &cXyz::BaseX, &sp48); + field_0x170e = cM_atan2s(-sp48.x, -sp48.z); + } else { + field_0x170e = shape_angle.y; + } + + cXyz sp3C; + cXyz sp30; + mDoMtx_multVecZero(m_model->getAnmMtx(0xB), &sp3C); + mDoMtx_multVecZero(m_model->getAnmMtx(0x14), &sp30); + sp30 -= sp3C; + + field_0x1712 = sp30.atan2sX_Z() - field_0x170e; + if (field_0x1712 > 0x2000) { + field_0x1712 = 0x2000; + } else if (field_0x1712 < -0x2000) { + field_0x1712 = -0x2000; + } + + if (checkResetStateFlg0(RFLG0_UNK_1)) { + mDoMtx_stack_c::transS(m_bodyEyePos.x, m_bodyEyePos.y, m_bodyEyePos.z); + mDoMtx_stack_c::YrotM(field_0x170e - field_0x1710); + mDoMtx_stack_c::transM(-field_0x17b8.x, -field_0x17b8.y, -field_0x17b8.z); + + daHorseRein_c* rein_p = m_rein; + cXyz* var_r26; + for (int i = 0; i < 3; i++) { + var_r26 = rein_p->field_0x0[0]; + for (int j = 0; j < rein_p->field_0x8[1]; j++, var_r26++) { + mDoMtx_stack_c::multVec(var_r26, var_r26); + } + rein_p++; + } + } + + field_0x17b8 = m_bodyEyePos; + + m_sound.framework(m_poly_sound, m_reverb); + + if (field_0x1144 != NULL) { + m_sound.updateAnime(field_0x1144->getFrame(), field_0x1144->getRate()); + } + + setEffect(); + setCollision(); + + if (!checkStateFlg0(FLG0_UNK_1)) { + setReinPosNormal(); + m_sound.setLinkRiding(false); + } else { + m_sound.setLinkRiding(true); + } + + if (!player_p->checkHorseRide()) { + m_lashCnt = 6; + } + + if (!checkInputOnR() && fabsf(speedF) < 0.05f) { + offStateFlg0(FLG0_UNK_8); + } else if (fabsf(speedF) > 0.2f * daHorse_hio_c0::m.max_backward_speed || (m_anmIdx[0] == ANM_HS_WALK_START && m_frameCtrl[0].getFrame() > 2.0f)) { + onStateFlg0(FLG0_UNK_8); + } + + m_endResetStateFlg0 = 0; + + if (checkResetStateFlg0(RFLG0_UNK_200) || player_p->checkHorseZelda()) { + m_modelData->getMaterialNodePointer(5)->getShape()->hide(); + } else { + m_modelData->getMaterialNodePointer(5)->getShape()->show(); + } + + dMeter2Info_setHorseLifeCount(m_lashCnt); + return 1; +} + +/* 80844570-80844590 00C730 0020+00 1/0 0/0 0/0 .text daHorse_Execute__FP9daHorse_c */ +static int daHorse_Execute(daHorse_c* i_this) { + return i_this->execute(); +} + +/* 80844590-8084476C 00C750 01DC+00 1/1 0/0 0/0 .text draw__9daHorse_cFv */ +int daHorse_c::draw() { + g_env_light.settingTevStruct(0, ¤t.pos, &tevStr); + if (checkStateFlg0(FLG0_NO_DRAW_WAIT) || checkResetStateFlg0(RFLG0_UNK_80)) { + return 1; + } + + g_env_light.setLightTevColorType_MAJI(m_model, &tevStr); + + if (dComIfGp_getCameraAttentionStatus(0) & 0x40) { + m_modelData->getMaterialNodePointer(2)->getShape()->hide(); + } else { + m_modelData->getMaterialNodePointer(2)->getShape()->show(); + } + + m_btp.entry(m_modelData, m_btpFrame); + mDoExt_modelEntryDL(m_model); + + cXyz shadow_pos(current.pos.x, 100.0f + current.pos.y, current.pos.z); + m_shadowID = dComIfGd_setShadow(m_shadowID, 0, m_model, &shadow_pos, 1000.0f, 0.0f, current.pos.y, m_acch.GetGroundH(), m_acch.m_gnd, &tevStr, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex()); + + if (!checkResetStateFlg0(RFLG0_UNK_100) && (!checkStateFlg0(FLG0_UNK_1) || !daAlink_getAlinkActorClass()->checkHorseSubjectivity())) { + static GXColor reinLineColor = {0x00, 0x00, 0x00, 0xFF}; + m_reinLine.update(field_0x1204, 1.5f, reinLineColor, 0, &tevStr); + dComIfGd_set3DlineMat(&m_reinLine); + } + + return 1; +} + +/* 8084476C-8084478C 00C92C 0020+00 1/0 0/0 0/0 .text daHorse_Draw__FP9daHorse_c */ +static int daHorse_Draw(daHorse_c* i_this) { + return i_this->draw(); +} + +/* 8084478C-80844B1C 00C94C 0390+00 1/1 0/0 0/0 .text __dt__9daHorse_cFv */ +daHorse_c::~daHorse_c() { + m_sound.deleteObject(); + dComIfG_resDelete(&m_phase, l_arcName); + + if (dComIfGp_getHorseActor() == this) { + dComIfGp_setHorseActor(NULL); + } +} + +/* 80844B1C-80844B44 00CCDC 0028+00 1/0 0/0 0/0 .text daHorse_Delete__FP9daHorse_c */ +static int daHorse_Delete(daHorse_c* i_this) { + i_this->~daHorse_c(); + return 1; +} /* 80845A34-80845A54 -00001 0020+00 1/0 0/0 0/0 .data l_daHorse_Method */ static actor_method_class l_daHorse_Method = { - (process_method_func)daHorse_Create__FP10fopAc_ac_c, - (process_method_func)daHorse_Delete__FP9daHorse_c, - (process_method_func)daHorse_Execute__FP9daHorse_c, + (process_method_func)daHorse_Create, + (process_method_func)daHorse_Delete, + (process_method_func)daHorse_Execute, 0, - (process_method_func)daHorse_Draw__FP9daHorse_c, + (process_method_func)daHorse_Draw, }; /* 80845A54-80845A84 -00001 0030+00 0/0 0/0 1/0 .data g_profile_HORSE */ @@ -787,2012 +4568,4 @@ extern actor_process_profile_definition g_profile_HORSE = { fopAc_CULLBOX_CUSTOM_e, // cullType }; -/* 80845A84-80845A90 0001B0 000C+00 2/2 0/0 0/0 .data __vt__16daPy_frameCtrl_c */ -SECTION_DATA extern void* __vt__16daPy_frameCtrl_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__16daPy_frameCtrl_cFv, -}; - -/* 80845A90-80845A9C 0001BC 000C+00 1/1 0/0 0/0 .data __vt__12dBgS_AcchCir */ -SECTION_DATA extern void* __vt__12dBgS_AcchCir[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12dBgS_AcchCirFv, -}; - -/* 80845A9C-80845AA8 0001C8 000C+00 3/3 0/0 0/0 .data __vt__10cCcD_GStts */ -SECTION_DATA extern void* __vt__10cCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10cCcD_GSttsFv, -}; - -/* 80845AA8-80845AB4 0001D4 000C+00 2/2 0/0 0/0 .data __vt__10dCcD_GStts */ -SECTION_DATA extern void* __vt__10dCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10dCcD_GSttsFv, -}; - -/* 80845AB4-80845AC8 0001E0 0014+00 1/1 0/0 0/0 .data __vt__18mDoExt_3DlineMat_c */ -SECTION_DATA extern void* __vt__18mDoExt_3DlineMat_c[5] = { - (void*)NULL /* RTTI */, (void*)NULL, (void*)NULL, (void*)NULL, (void*)NULL, -}; - -/* 80845AC8-80845AD4 0001F4 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGSph */ -SECTION_DATA extern void* __vt__8cM3dGSph[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGSphFv, -}; - -/* 80845AD4-80845AE0 000200 000C+00 5/5 0/0 0/0 .data __vt__8cM3dGCyl */ -SECTION_DATA extern void* __vt__8cM3dGCyl[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGCylFv, -}; - -/* 80845AE0-80845AEC 00020C 000C+00 5/5 0/0 0/0 .data __vt__8cM3dGAab */ -SECTION_DATA extern void* __vt__8cM3dGAab[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGAabFv, -}; - -/* 80845AEC-80845B10 000218 0024+00 3/3 0/0 0/0 .data __vt__14dBgS_HorseAcch */ -SECTION_DATA extern void* __vt__14dBgS_HorseAcch[9] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__14dBgS_HorseAcchFv, - (void*)NULL, - (void*)NULL, - (void*)func_80844CA8, - (void*)NULL, - (void*)NULL, - (void*)func_80844CA0, -}; - -/* 80845B10-80845B1C 00023C 000C+00 5/5 0/0 0/0 .data __vt__12J3DFrameCtrl */ -SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12J3DFrameCtrlFv, -}; - -/* 80845B1C-80845B48 000248 002C+00 2/2 0/0 0/0 .data - * __vt__73J3DMtxCalcNoAnm<27J3DMtxCalcCalcTransformMaya,24J3DMtxCalcJ3DSysInitMaya> */ -SECTION_DATA extern void* data_80845B1C[11] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)func_808392DC, - (void*)setAnmTransform__10J3DMtxCalcFP15J3DAnmTransform, - (void*)getAnmTransform__10J3DMtxCalcFv, - (void*)setAnmTransform__10J3DMtxCalcFUcP15J3DAnmTransform, - (void*)getAnmTransform__10J3DMtxCalcFUc, - (void*)setWeight__10J3DMtxCalcFUcf, - (void*)getWeight__10J3DMtxCalcCFUc, - (void*)func_80844BB4, - (void*)func_80844BDC, -}; - -/* 80845B48-80845B74 000274 002C+00 3/3 0/0 0/0 .data __vt__19J3DMtxCalcNoAnmBase */ -SECTION_DATA extern void* __vt__19J3DMtxCalcNoAnmBase[11] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__19J3DMtxCalcNoAnmBaseFv, - (void*)setAnmTransform__10J3DMtxCalcFP15J3DAnmTransform, - (void*)getAnmTransform__10J3DMtxCalcFv, - (void*)setAnmTransform__10J3DMtxCalcFUcP15J3DAnmTransform, - (void*)getAnmTransform__10J3DMtxCalcFUc, - (void*)setWeight__10J3DMtxCalcFUcf, - (void*)getWeight__10J3DMtxCalcCFUc, - (void*)NULL, - (void*)NULL, -}; - -/* 80845B74-80845BA0 0002A0 002C+00 4/4 0/0 0/0 .data __vt__10J3DMtxCalc */ -SECTION_DATA extern void* __vt__10J3DMtxCalc[11] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10J3DMtxCalcFv, - (void*)setAnmTransform__10J3DMtxCalcFP15J3DAnmTransform, - (void*)getAnmTransform__10J3DMtxCalcFv, - (void*)setAnmTransform__10J3DMtxCalcFUcP15J3DAnmTransform, - (void*)getAnmTransform__10J3DMtxCalcFUc, - (void*)setWeight__10J3DMtxCalcFUcf, - (void*)getWeight__10J3DMtxCalcCFUc, - (void*)NULL, - (void*)NULL, -}; - -/* 80845BA0-80845BAC 0002CC 000C+00 5/5 0/0 0/0 .data __vt__8cM3dGPla */ -SECTION_DATA extern void* __vt__8cM3dGPla[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGPlaFv, -}; - -/* 80838498-80838750 000658 02B8+00 2/2 0/0 0/0 .text - * coHitCallbackBoarJump__9daHorse_cFP10fopAc_ac_c */ -void daHorse_c::coHitCallbackBoarJump(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 80838750-80838798 000910 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGPlaFv */ -// cM3dGPla::~cM3dGPla() { -extern "C" void __dt__8cM3dGPlaFv() { - // NONMATCHING -} - -/* 80838798-80838904 000958 016C+00 1/1 0/0 0/0 .text - * coHitCallbackBoarHit__9daHorse_cFP10fopAc_ac_cP12dCcD_GObjInf */ -void daHorse_c::coHitCallbackBoarHit(fopAc_ac_c* param_0, dCcD_GObjInf* param_1) { - // NONMATCHING -} - -/* 80838904-80838A20 000AC4 011C+00 2/2 0/0 0/0 .text - * coHitCallbackCowHit__9daHorse_cFP10fopAc_ac_c */ -void daHorse_c::coHitCallbackCowHit(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 80838A20-80838A44 000BE0 0024+00 1/1 0/0 0/0 .text - * daHorse_coHitCallbackBoarJump__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf */ -static void daHorse_coHitCallbackBoarJump(fopAc_ac_c* param_0, dCcD_GObjInf* param_1, - fopAc_ac_c* param_2, dCcD_GObjInf* param_3) { - // NONMATCHING -} - -/* 80838A44-80838A68 000C04 0024+00 1/1 0/0 0/0 .text - * daHorse_coHitCallbackCowHit__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf */ -static void daHorse_coHitCallbackCowHit(fopAc_ac_c* param_0, dCcD_GObjInf* param_1, - fopAc_ac_c* param_2, dCcD_GObjInf* param_3) { - // NONMATCHING -} - -/* 80838A68-80838AC4 000C28 005C+00 1/1 0/0 0/0 .text - * daHorse_coHitCallbackAll__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf */ -static void daHorse_coHitCallbackAll(fopAc_ac_c* param_0, dCcD_GObjInf* param_1, - fopAc_ac_c* param_2, dCcD_GObjInf* param_3) { - // NONMATCHING -} - -/* 80838AC4-80838B78 000C84 00B4+00 1/1 0/0 0/0 .text daHorse_searchEnemy__FP10fopAc_ac_cPv */ -static void daHorse_searchEnemy(fopAc_ac_c* param_0, void* param_1) { - // NONMATCHING -} - -/* 80838B78-80838F3C 000D38 03C4+00 1/1 0/0 0/0 .text modelCallBack__9daHorse_cFi */ -void daHorse_c::modelCallBack(int param_0) { - // NONMATCHING -} - -/* 80838F3C-80838F80 0010FC 0044+00 1/1 0/0 0/0 .text daHorse_modelCallBack__FP8J3DJointi - */ -static void daHorse_modelCallBack(J3DJoint* param_0, int param_1) { - // NONMATCHING -} - -/* 80838F80-80838F98 001140 0018+00 1/1 0/0 0/0 .text daHorse_searchSingleBoar__FP10fopAc_ac_cPv - */ -static void daHorse_searchSingleBoar(fopAc_ac_c* param_0, void* param_1) { - // NONMATCHING -} - -/* 80838F98-808392D8 001158 0340+00 1/1 0/0 0/0 .text createHeap__9daHorse_cFv */ -void daHorse_c::createHeap() { - // NONMATCHING -} - -/* 808392D8-808392DC 001498 0004+00 1/1 0/0 0/0 .text __ct__4cXyzFv */ -// cXyz::cXyz() -extern "C" void __ct__4cXyzFv() { - /* empty function */ -} - -/* 808392DC-80839348 00149C 006C+00 1/0 0/0 0/0 .text - * __dt__73J3DMtxCalcNoAnm<27J3DMtxCalcCalcTransformMaya,24J3DMtxCalcJ3DSysInitMaya>Fv */ -extern "C" void func_808392DC(void* _this) { - // NONMATCHING -} - -/* 80839348-808393A4 001508 005C+00 1/0 0/0 0/0 .text __dt__19J3DMtxCalcNoAnmBaseFv */ -// J3DMtxCalcNoAnmBase::~J3DMtxCalcNoAnmBase() { -extern "C" void __dt__19J3DMtxCalcNoAnmBaseFv() { - // NONMATCHING -} - -/* 808393A4-808393EC 001564 0048+00 1/0 0/0 0/0 .text __dt__10J3DMtxCalcFv */ -// J3DMtxCalc::~J3DMtxCalc() { -extern "C" void __dt__10J3DMtxCalcFv() { - // NONMATCHING -} - -/* 808393EC-8083940C 0015AC 0020+00 1/1 0/0 0/0 .text daHorse_createHeap__FP10fopAc_ac_c - */ -static void daHorse_createHeap(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8084585C-8084585C 0003B0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8084585C = "F_SP108"; -SECTION_DEAD static char const* const stringBase_80845864 = "F_SP104"; -#pragma pop - -/* 8083940C-80839498 0015CC 008C+00 1/1 0/0 0/0 .text checkEnding__9daHorse_cFv */ -void daHorse_c::checkEnding() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80845644-80845648 000198 0004+00 1/5 0/0 0/0 .rodata @5176 */ -SECTION_RODATA static f32 const lit_5176 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x80845644, &lit_5176); - -/* 80845648-8084564C 00019C 0004+00 0/3 0/0 0/0 .rodata @5177 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5177 = 60.0f; -COMPILER_STRIP_GATE(0x80845648, &lit_5177); -#pragma pop - -/* 8084564C-80845650 0001A0 0004+00 1/2 0/0 0/0 .rodata @5178 */ -SECTION_RODATA static f32 const lit_5178 = 150.0f; -COMPILER_STRIP_GATE(0x8084564C, &lit_5178); - -/* 80845650-80845654 0001A4 0004+00 0/2 0/0 0/0 .rodata @5179 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5179 = 240.0f; -COMPILER_STRIP_GATE(0x80845650, &lit_5179); -#pragma pop - -/* 80845654-80845658 0001A8 0004+00 1/4 0/0 0/0 .rodata @5180 */ -SECTION_RODATA static f32 const lit_5180 = 500.0f; -COMPILER_STRIP_GATE(0x80845654, &lit_5180); - -/* 80845658-8084565C 0001AC 0004+00 0/3 0/0 0/0 .rodata @5181 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5181 = -5.0f; -COMPILER_STRIP_GATE(0x80845658, &lit_5181); -#pragma pop - -/* 8084565C-80845660 0001B0 0004+00 0/3 0/0 0/0 .rodata @5182 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5182 = 35.0f; -COMPILER_STRIP_GATE(0x8084565C, &lit_5182); -#pragma pop - -/* 80845660-80845664 0001B4 0004+00 0/1 0/0 0/0 .rodata @5183 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5183 = 55.0f; -COMPILER_STRIP_GATE(0x80845660, &lit_5183); -#pragma pop - -/* 8084585C-8084585C 0003B0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8084586C = "F_SP109"; -SECTION_DEAD static char const* const stringBase_80845874 = ""; -SECTION_DEAD static char const* const stringBase_80845875 = "F_SP00"; -SECTION_DEAD static char const* const stringBase_8084587C = "F_SP103"; -SECTION_DEAD static char const* const stringBase_80845884 = "F_SP113"; -SECTION_DEAD static char const* const stringBase_8084588C = "F_SP102"; -SECTION_DEAD static char const* const stringBase_80845894 = "D_MN09B"; -SECTION_DEAD static char const* const stringBase_8084589C = "F_SP123"; -#pragma pop - -/* 80839498-80839CFC 001658 0864+00 1/1 0/0 0/0 .text create__9daHorse_cFv */ -void daHorse_c::create() { - // NONMATCHING -} - -/* 80839CFC-80839D1C 001EBC 0020+00 1/0 0/0 0/0 .text daHorse_Create__FP10fopAc_ac_c */ -static void daHorse_Create(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 80839D1C-80839EBC 001EDC 01A0+00 2/2 0/0 0/0 .text setBasAnime__9daHorse_cFi */ -void daHorse_c::setBasAnime(int param_0) { - // NONMATCHING -} - -/* 80839EBC-80839ED4 00207C 0018+00 2/2 0/0 0/0 .text resetBasAnime__9daHorse_cFv */ -void daHorse_c::resetBasAnime() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80845664-80845668 0001B8 0004+00 0/9 0/0 0/0 .rodata @5529 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5529 = -1.0f; -COMPILER_STRIP_GATE(0x80845664, &lit_5529); -#pragma pop - -/* 80845668-8084566C 0001BC 0004+00 0/3 0/0 0/0 .rodata @5530 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5530 = 8.0f; -COMPILER_STRIP_GATE(0x80845668, &lit_5530); -#pragma pop - -/* 8084566C-80845670 0001C0 0004+00 1/9 0/0 0/0 .rodata @5531 */ -SECTION_RODATA static f32 const lit_5531 = 0.5f; -COMPILER_STRIP_GATE(0x8084566C, &lit_5531); - -/* 80839ED4-8083A20C 002094 0338+00 1/1 0/0 0/0 .text setDoubleAnime__9daHorse_cFfffUsUsf - */ -void daHorse_c::setDoubleAnime(f32 param_0, f32 param_1, f32 param_2, u16 param_3, u16 param_4, - f32 param_5) { - // NONMATCHING -} - -/* 8083A20C-8083A3C4 0023CC 01B8+00 10/10 0/0 0/0 .text setSingleAnime__9daHorse_cFUsffsfi */ -void daHorse_c::setSingleAnime(u16 param_0, f32 param_1, f32 param_2, s16 param_3, f32 param_4, - int param_5) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80845670-80845674 0001C4 0004+00 0/3 0/0 0/0 .rodata @5629 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5629 = 18.0f; -COMPILER_STRIP_GATE(0x80845670, &lit_5629); -#pragma pop - -/* 80845674-80845678 0001C8 0004+00 0/1 0/0 0/0 .rodata @5630 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5630 = 0x3C449BA6; -COMPILER_STRIP_GATE(0x80845674, &lit_5630); -#pragma pop - -/* 8083A3C4-8083A5AC 002584 01E8+00 1/1 0/0 0/0 .text animePlay__9daHorse_cFv */ -void daHorse_c::animePlay() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80845678-8084567C 0001CC 0004+00 3/13 0/0 0/0 .rodata @5722 */ -SECTION_RODATA static f32 const lit_5722 = 1.0f / 20.0f; -COMPILER_STRIP_GATE(0x80845678, &lit_5722); - -/* 8083A5AC-8083A890 00276C 02E4+00 1/1 0/0 0/0 .text checkDemoAction__9daHorse_cFv */ -void daHorse_c::checkDemoAction() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8084567C-80845680 0001D0 0004+00 0/3 0/0 0/0 .rodata @5814 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5814 = 400.0f; -COMPILER_STRIP_GATE(0x8084567C, &lit_5814); -#pragma pop - -/* 8083A890-8083AC7C 002A50 03EC+00 1/1 0/0 0/0 .text setStickRodeoMove__9daHorse_cFv */ -void daHorse_c::setStickRodeoMove() { - // NONMATCHING -} - -/* 8083AC7C-8083ACEC 002E3C 0070+00 2/2 0/0 0/0 .text setStickCallMove__9daHorse_cFv */ -void daHorse_c::setStickCallMove() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80845680-80845684 0001D4 0004+00 0/1 0/0 0/0 .rodata @5889 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5889 = 10000.0f; -COMPILER_STRIP_GATE(0x80845680, &lit_5889); -#pragma pop - -/* 80845684-80845688 0001D8 0004+00 0/1 0/0 0/0 .rodata @5890 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5890 = 1600.0f; -COMPILER_STRIP_GATE(0x80845684, &lit_5890); -#pragma pop - -/* 8083ACEC-8083AEC0 002EAC 01D4+00 2/2 0/0 0/0 .text setDemoMoveData__9daHorse_cFPUlPC4cXyz */ -void daHorse_c::setDemoMoveData(u32* param_0, cXyz const* param_1) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8084585C-8084585C 0003B0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_808458A4 = "Horse"; -SECTION_DEAD static char const* const stringBase_808458AA = "pos"; -SECTION_DEAD static char const* const stringBase_808458AE = "angle"; -SECTION_DEAD static char const* const stringBase_808458B4 = "prm0"; -SECTION_DEAD static char const* const stringBase_808458B9 = "ride"; -SECTION_DEAD static char const* const stringBase_808458BE = "disXZ"; -SECTION_DEAD static char const* const stringBase_808458C4 = "disY"; -#pragma pop - -/* 8083AEC0-8083B578 003080 06B8+00 1/1 0/0 0/0 .text setDemoData__9daHorse_cFv */ -void daHorse_c::setDemoData() { - // NONMATCHING -} - -/* 8083B578-8083B600 003738 0088+00 4/4 0/0 0/0 .text acceptPlayerRide__9daHorse_cFv */ -void daHorse_c::acceptPlayerRide() { - // NONMATCHING -} - -/* 8083B600-8083B828 0037C0 0228+00 1/1 0/0 0/0 .text setStickData__9daHorse_cFv */ -void daHorse_c::setStickData() { - // NONMATCHING -} - -/* 8083B828-8083B82C 0039E8 0004+00 1/1 0/0 0/0 .text setTurnStartVibration__9daHorse_cFv - */ -void daHorse_c::setTurnStartVibration() { - /* empty function */ -} - -/* 8083B82C-8083B830 0039EC 0004+00 1/1 0/0 0/0 .text setTurnVibration__9daHorse_cFv */ -void daHorse_c::setTurnVibration() { - /* empty function */ -} - -/* ############################################################################################## */ -/* 80845688-80845698 0001DC 0010+00 0/1 0/0 0/0 .rodata footEffectRate$6303 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const footEffectRate[16] = { - 0x3E, 0x8A, 0x3D, 0x71, 0x3E, 0xCC, 0xCC, 0xCD, 0x3F, 0x66, 0x66, 0x66, 0x3E, 0x2E, 0x14, 0x7B, -}; -COMPILER_STRIP_GATE(0x80845688, &footEffectRate); -#pragma pop - -/* 80845698-8084569C 0001EC 0004+00 0/3 0/0 0/0 .rodata @6389 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6389 = 10.0f; -COMPILER_STRIP_GATE(0x80845698, &lit_6389); -#pragma pop - -/* 8084569C-808456A0 0001F0 0004+00 0/1 0/0 0/0 .rodata @6390 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6390 = 34.0f; -COMPILER_STRIP_GATE(0x8084569C, &lit_6390); -#pragma pop - -/* 808456A0-808456A4 0001F4 0004+00 0/2 0/0 0/0 .rodata @6391 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6391 = 12.0f; -COMPILER_STRIP_GATE(0x808456A0, &lit_6391); -#pragma pop - -/* 808456A4-808456A8 0001F8 0004+00 0/2 0/0 0/0 .rodata @6392 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6392 = 14.0f; -COMPILER_STRIP_GATE(0x808456A4, &lit_6392); -#pragma pop - -/* 808456A8-808456AC 0001FC 0004+00 0/1 0/0 0/0 .rodata @6393 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6393 = 19.0f; -COMPILER_STRIP_GATE(0x808456A8, &lit_6393); -#pragma pop - -/* 8083B830-8083BF48 0039F0 0718+00 6/6 0/0 0/0 .text setMoveAnime__9daHorse_cFf */ -void daHorse_c::setMoveAnime(f32 param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 808456AC-808456B0 000200 0004+00 0/1 0/0 0/0 .rodata @6871 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6871 = -33500.0f; -COMPILER_STRIP_GATE(0x808456AC, &lit_6871); -#pragma pop - -/* 808456B0-808456B4 000204 0004+00 0/1 0/0 0/0 .rodata @6872 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6872 = -20500.0f; -COMPILER_STRIP_GATE(0x808456B0, &lit_6872); -#pragma pop - -/* 808456B4-808456B8 000208 0004+00 0/2 0/0 0/0 .rodata @6873 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6873 = 300.0f; -COMPILER_STRIP_GATE(0x808456B4, &lit_6873); -#pragma pop - -/* 808456B8-808456BC 00020C 0004+00 0/1 0/0 0/0 .rodata @6874 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6874 = 23716.0f; -COMPILER_STRIP_GATE(0x808456B8, &lit_6874); -#pragma pop - -/* 808456BC-808456C0 000210 0004+00 0/2 0/0 0/0 .rodata @6875 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6875 = 50.0f; -COMPILER_STRIP_GATE(0x808456BC, &lit_6875); -#pragma pop - -/* 808456C0-808456C4 000214 0004+00 0/1 0/0 0/0 .rodata @6876 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_6876 = 0x43360B61; -COMPILER_STRIP_GATE(0x808456C0, &lit_6876); -#pragma pop - -/* 808456C4-808456C8 000218 0004+00 0/1 0/0 0/0 .rodata @6877 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6877 = 101.0f; -COMPILER_STRIP_GATE(0x808456C4, &lit_6877); -#pragma pop - -/* 808456C8-808456CC 00021C 0004+00 0/1 0/0 0/0 .rodata @6878 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6878 = -200.0f; -COMPILER_STRIP_GATE(0x808456C8, &lit_6878); -#pragma pop - -/* 8083BF48-8083CA80 004108 0B38+00 6/6 0/0 0/0 .text checkHorseNoMove__9daHorse_cFi */ -void daHorse_c::checkHorseNoMove(int param_0) { - // NONMATCHING -} - -/* 8083CA80-8083CB38 004C40 00B8+00 1/1 0/0 0/0 .text checkTurnPlayerState__9daHorse_cFv - */ -void daHorse_c::checkTurnPlayerState() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 808456CC-808456D0 000220 0004+00 0/1 0/0 0/0 .rodata @7216 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7216 = 1000000.0f; -COMPILER_STRIP_GATE(0x808456CC, &lit_7216); -#pragma pop - -/* 808456D0-808456D4 000224 0004+00 0/1 0/0 0/0 .rodata @7217 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7217 = 2250000.0f; -COMPILER_STRIP_GATE(0x808456D0, &lit_7217); -#pragma pop - -/* 808456D4-808456D8 000228 0004+00 1/3 0/0 0/0 .rodata @7218 */ -SECTION_RODATA static f32 const lit_7218 = 7.0f / 10.0f; -COMPILER_STRIP_GATE(0x808456D4, &lit_7218); - -/* 808456D8-808456DC 00022C 0004+00 0/3 0/0 0/0 .rodata @7219 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7219 = 4.0f / 5.0f; -COMPILER_STRIP_GATE(0x808456D8, &lit_7219); -#pragma pop - -/* 8083CB38-8083D748 004CF8 0C10+00 2/2 0/0 0/0 .text setSpeedAndAngle__9daHorse_cFv */ -void daHorse_c::setSpeedAndAngle() { - // NONMATCHING -} - -/* 8083D748-8083D774 005908 002C+00 1/1 0/0 0/0 .text checkWaitTurn__9daHorse_cCFv */ -void daHorse_c::checkWaitTurn() const { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 808456DC-808456E0 000230 0004+00 1/2 0/0 0/0 .rodata @7274 */ -SECTION_RODATA static f32 const lit_7274 = -1000000000.0f; -COMPILER_STRIP_GATE(0x808456DC, &lit_7274); - -/* 8083D774-8083D918 005934 01A4+00 2/2 0/0 0/0 .text setRoomInfo__9daHorse_cFi */ -void daHorse_c::setRoomInfo(int param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 808456E0-808456E4 000234 0004+00 0/1 0/0 0/0 .rodata @7300 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7300 = -15.0f; -COMPILER_STRIP_GATE(0x808456E0, &lit_7300); -#pragma pop - -/* 80845BB8-80845BBC 000008 0001+03 6/6 0/0 0/0 .bss @1109 */ -static u8 lit_1109[1 + 3 /* padding */]; - -/* 80845BBC-80845BC0 00000C 0001+03 0/0 0/0 0/0 .bss @1107 */ -#pragma push -#pragma force_active on -static u8 lit_1107[1 + 3 /* padding */]; -#pragma pop - -/* 80845BC0-80845BC4 000010 0001+03 0/0 0/0 0/0 .bss @1105 */ -#pragma push -#pragma force_active on -static u8 lit_1105[1 + 3 /* padding */]; -#pragma pop - -/* 80845BC4-80845BC8 000014 0001+03 0/0 0/0 0/0 .bss @1104 */ -#pragma push -#pragma force_active on -static u8 lit_1104[1 + 3 /* padding */]; -#pragma pop - -/* 80845BC8-80845BCC 000018 0001+03 0/0 0/0 0/0 .bss @1099 */ -#pragma push -#pragma force_active on -static u8 lit_1099[1 + 3 /* padding */]; -#pragma pop - -/* 80845BCC-80845BD0 00001C 0001+03 0/0 0/0 0/0 .bss @1097 */ -#pragma push -#pragma force_active on -static u8 lit_1097[1 + 3 /* padding */]; -#pragma pop - -/* 80845BD0-80845BD4 000020 0001+03 0/0 0/0 0/0 .bss @1095 */ -#pragma push -#pragma force_active on -static u8 lit_1095[1 + 3 /* padding */]; -#pragma pop - -/* 80845BD4-80845BD8 000024 0001+03 0/0 0/0 0/0 .bss @1094 */ -#pragma push -#pragma force_active on -static u8 lit_1094[1 + 3 /* padding */]; -#pragma pop - -/* 80845BD8-80845BDC 000028 0001+03 0/0 0/0 0/0 .bss @1057 */ -#pragma push -#pragma force_active on -static u8 lit_1057[1 + 3 /* padding */]; -#pragma pop - -/* 80845BDC-80845BE0 00002C 0001+03 0/0 0/0 0/0 .bss @1055 */ -#pragma push -#pragma force_active on -static u8 lit_1055[1 + 3 /* padding */]; -#pragma pop - -/* 80845BE0-80845BE4 000030 0001+03 0/0 0/0 0/0 .bss @1053 */ -#pragma push -#pragma force_active on -static u8 lit_1053[1 + 3 /* padding */]; -#pragma pop - -/* 80845BE4-80845BE8 000034 0001+03 0/0 0/0 0/0 .bss @1052 */ -#pragma push -#pragma force_active on -static u8 lit_1052[1 + 3 /* padding */]; -#pragma pop - -/* 80845BE8-80845BEC 000038 0001+03 0/0 0/0 0/0 .bss @1014 */ -#pragma push -#pragma force_active on -static u8 lit_1014[1 + 3 /* padding */]; -#pragma pop - -/* 80845BEC-80845BF0 00003C 0001+03 0/0 0/0 0/0 .bss @1012 */ -#pragma push -#pragma force_active on -static u8 lit_1012[1 + 3 /* padding */]; -#pragma pop - -/* 80845BF0-80845BF4 000040 0001+03 0/0 0/0 0/0 .bss @1010 */ -#pragma push -#pragma force_active on -static u8 lit_1010[1 + 3 /* padding */]; -#pragma pop - -/* 80845BF4-80845BF8 000044 0001+03 0/0 0/0 0/0 .bss @1009 */ -#pragma push -#pragma force_active on -static u8 lit_1009[1 + 3 /* padding */]; -#pragma pop - -/* 80845BF8-80845C04 000048 000C+00 0/1 0/0 0/0 .bss @4179 */ -#pragma push -#pragma force_active on -static u8 lit_4179[12]; -#pragma pop - -/* 80845C04-80845C10 000054 000C+00 1/2 0/0 0/0 .bss l_frontFootOffset */ -static u8 l_frontFootOffset[12]; - -/* 80845C10-80845C1C 000060 000C+00 0/1 0/0 0/0 .bss @4180 */ -#pragma push -#pragma force_active on -static u8 lit_4180[12]; -#pragma pop - -/* 80845C1C-80845C28 00006C 000C+00 1/2 0/0 0/0 .bss l_backFootOffset */ -static u8 l_backFootOffset[12]; - -/* 80845C28-80845C38 000078 000C+04 0/1 0/0 0/0 .bss @7279 */ -#pragma push -#pragma force_active on -static u8 lit_7279[12 + 4 /* padding */]; -#pragma pop - -/* 80845C38-80845C44 000088 000C+00 0/1 0/0 0/0 .bss localEyePos$7278 */ -#pragma push -#pragma force_active on -static u8 localEyePos[12]; -#pragma pop - -/* 8083D918-8083D9D8 005AD8 00C0+00 2/2 0/0 0/0 .text setBodyPart__9daHorse_cFv */ -void daHorse_c::setBodyPart() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 808456E4-808456E8 000238 0004+00 0/2 0/0 0/0 .rodata @7362 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7362 = 4.0f; -COMPILER_STRIP_GATE(0x808456E4, &lit_7362); -#pragma pop - -/* 808456E8-808456EC 00023C 0004+00 0/1 0/0 0/0 .rodata @7363 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7363 = 3.0f / 10.0f; -COMPILER_STRIP_GATE(0x808456E8, &lit_7363); -#pragma pop - -/* 808456EC-808456F0 000240 0004+00 0/1 0/0 0/0 .rodata @7364 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7364 = 140.0f; -COMPILER_STRIP_GATE(0x808456EC, &lit_7364); -#pragma pop - -/* 8083D9D8-8083DC58 005B98 0280+00 2/2 0/0 0/0 .text setMatrix__9daHorse_cFv */ -void daHorse_c::setMatrix() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 808456F0-808456FC 000244 000C+00 0/1 0/0 0/0 .rodata @7373 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_7373[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x808456F0, &lit_7373); -#pragma pop - -/* 808456FC-80845704 000250 0006+02 0/1 0/0 0/0 .rodata @7374 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_7374[6 + 2 /* padding */] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - /* padding */ - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x808456FC, &lit_7374); -#pragma pop - -/* 80845704-80845708 000258 0004+00 0/1 0/0 0/0 .rodata @7439 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7439 = 1200.0f; -COMPILER_STRIP_GATE(0x80845704, &lit_7439); -#pragma pop - -/* 80845708-8084570C 00025C 0004+00 0/1 0/0 0/0 .rodata @7440 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7440 = 700.0f; -COMPILER_STRIP_GATE(0x80845708, &lit_7440); -#pragma pop - -/* 8083DC58-8083DEEC 005E18 0294+00 1/1 0/0 0/0 .text setDashEffect__9daHorse_cFPUl */ -void daHorse_c::setDashEffect(u32* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8084570C-80845710 000260 0004+00 0/5 0/0 0/0 .rodata @7691 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7691 = 2.0f; -COMPILER_STRIP_GATE(0x8084570C, &lit_7691); -#pragma pop - -/* 80845710-80845714 000264 0004+00 0/1 0/0 0/0 .rodata @7692 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7692 = 255.0f; -COMPILER_STRIP_GATE(0x80845710, &lit_7692); -#pragma pop - -/* 80845714-80845718 000268 0004+00 0/3 0/0 0/0 .rodata @7693 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7693 = 1.5f; -COMPILER_STRIP_GATE(0x80845714, &lit_7693); -#pragma pop - -/* 80845718-8084571C 00026C 0004+00 0/1 0/0 0/0 .rodata @7694 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7694 = 9.0f / 5.0f; -COMPILER_STRIP_GATE(0x80845718, &lit_7694); -#pragma pop - -/* 8084571C-80845720 000270 0004+00 0/1 0/0 0/0 .rodata @7695 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7695 = -0.75f; -COMPILER_STRIP_GATE(0x8084571C, &lit_7695); -#pragma pop - -/* 80845720-80845724 000274 0004+00 0/2 0/0 0/0 .rodata @7696 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7696 = 0.75f; -COMPILER_STRIP_GATE(0x80845720, &lit_7696); -#pragma pop - -/* 80845C44-80845C54 000094 000C+04 0/1 0/0 0/0 .bss @7469 */ -#pragma push -#pragma force_active on -static u8 lit_7469[12 + 4 /* padding */]; -#pragma pop - -/* 80845C54-80845C60 0000A4 000C+00 0/1 0/0 0/0 .bss runScale$7468 */ -#pragma push -#pragma force_active on -static u8 runScale[12]; -#pragma pop - -/* 80845C60-80845C70 0000B0 000C+04 0/1 0/0 0/0 .bss @7473 */ -#pragma push -#pragma force_active on -static u8 lit_7473[12 + 4 /* padding */]; -#pragma pop - -/* 80845C70-80845C7C 0000C0 000C+00 0/1 0/0 0/0 .bss landScale$7472 */ -#pragma push -#pragma force_active on -static u8 landScale[12]; -#pragma pop - -/* 80845C7C-80845C8C 0000CC 000C+04 0/1 0/0 0/0 .bss @7477 */ -#pragma push -#pragma force_active on -static u8 lit_7477[12 + 4 /* padding */]; -#pragma pop - -/* 80845C8C-80845C98 0000DC 000C+00 0/1 0/0 0/0 .bss grassRunScale$7476 */ -#pragma push -#pragma force_active on -static u8 grassRunScale[12]; -#pragma pop - -/* 80845C98-80845CA8 0000E8 000C+04 0/1 0/0 0/0 .bss @7481 */ -#pragma push -#pragma force_active on -static u8 lit_7481[12 + 4 /* padding */]; -#pragma pop - -/* 80845CA8-80845CB4 0000F8 000C+00 0/1 0/0 0/0 .bss waterDirection$7480 */ -#pragma push -#pragma force_active on -static u8 waterDirection[12]; -#pragma pop - -/* 8083DEEC-8083E4D8 0060AC 05EC+00 1/1 0/0 0/0 .text setEffect__9daHorse_cFv */ -void daHorse_c::setEffect() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80845724-80845730 000278 000C+00 0/1 0/0 0/0 .rodata localHeadPos$7706 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const localHeadPos[12] = { - 0x41, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80845724, &localHeadPos); -#pragma pop - -/* 80845730-80845734 000284 0004+00 0/1 0/0 0/0 .rodata @7747 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7747 = 170.0f; -COMPILER_STRIP_GATE(0x80845730, &lit_7747); -#pragma pop - -/* 80845734-80845738 000288 0004+00 0/1 0/0 0/0 .rodata @7748 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7748 = 83.0f; -COMPILER_STRIP_GATE(0x80845734, &lit_7748); -#pragma pop - -/* 80845738-8084573C 00028C 0004+00 1/3 0/0 0/0 .rodata @7749 */ -SECTION_RODATA static f32 const lit_7749 = 80.0f; -COMPILER_STRIP_GATE(0x80845738, &lit_7749); - -/* 8083E4D8-8083E6E8 006698 0210+00 1/1 0/0 0/0 .text setCollision__9daHorse_cFv */ -void daHorse_c::setCollision() { - // NONMATCHING -} - -/* 8083E6E8-8083E760 0068A8 0078+00 1/1 0/0 0/0 .text autoGroundHit__9daHorse_cFv */ -void daHorse_c::autoGroundHit() { - // NONMATCHING -} - -/* 8083E760-8083E8A4 006920 0144+00 1/1 0/0 0/0 .text setTailAngle__9daHorse_cFv */ -void daHorse_c::setTailAngle() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8084573C-80845740 000290 0004+00 1/1 0/0 0/0 .rodata @7848 */ -SECTION_RODATA static f32 const lit_7848 = 250000.0f; -COMPILER_STRIP_GATE(0x8084573C, &lit_7848); - -/* 8083E8A4-8083EA78 006A64 01D4+00 1/1 0/0 0/0 .text setNeckAngle__9daHorse_cFv */ -void daHorse_c::setNeckAngle() { - // NONMATCHING -} - -/* 8083EA78-8083EB10 006C38 0098+00 1/1 0/0 0/0 .text copyFootMatrix__9daHorse_cFv */ -void daHorse_c::copyFootMatrix() { - // NONMATCHING -} - -/* 8083EB10-8083ED88 006CD0 0278+00 1/1 0/0 0/0 .text setFootMatrix__9daHorse_cFv */ -void daHorse_c::setFootMatrix() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80845740-80845744 000294 0004+00 0/1 0/0 0/0 .rodata @8279 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_8279 = 0x3BA3D70A; -COMPILER_STRIP_GATE(0x80845740, &lit_8279); -#pragma pop - -/* 8083ED88-8083F3B0 006F48 0628+00 1/1 0/0 0/0 .text setLegAngle__9daHorse_cFfiiPs */ -void daHorse_c::setLegAngle(f32 param_0, int param_1, int param_2, s16* param_3) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80845744-80845748 000298 0004+00 0/1 0/0 0/0 .rodata @8509 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8509 = 120.0f; -COMPILER_STRIP_GATE(0x80845744, &lit_8509); -#pragma pop - -/* 80845748-8084574C 00029C 0004+00 0/2 0/0 0/0 .rodata @8510 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8510 = 1000.0f; -COMPILER_STRIP_GATE(0x80845748, &lit_8510); -#pragma pop - -/* 8084574C-80845750 0002A0 0004+00 0/4 0/0 0/0 .rodata @8511 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8511 = 30.0f; -COMPILER_STRIP_GATE(0x8084574C, &lit_8511); -#pragma pop - -/* 8083F3B0-8083F9AC 007570 05FC+00 1/1 0/0 0/0 .text footBgCheck__9daHorse_cFv */ -void daHorse_c::footBgCheck() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80845750-80845754 0002A4 0004+00 0/1 0/0 0/0 .rodata @8623 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8623 = 63.0f; -COMPILER_STRIP_GATE(0x80845750, &lit_8623); -#pragma pop - -/* 80845754-80845758 0002A8 0004+00 0/1 0/0 0/0 .rodata @8624 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8624 = 17.0f; -COMPILER_STRIP_GATE(0x80845754, &lit_8624); -#pragma pop - -/* 80845758-8084575C 0002AC 0004+00 0/1 0/0 0/0 .rodata @8625 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8625 = 11.0f; -COMPILER_STRIP_GATE(0x80845758, &lit_8625); -#pragma pop - -/* 8084575C-80845760 0002B0 0004+00 0/1 0/0 0/0 .rodata @8626 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8626 = -11.0f; -COMPILER_STRIP_GATE(0x8084575C, &lit_8626); -#pragma pop - -/* 80845760-80845764 0002B4 0004+00 0/1 0/0 0/0 .rodata @8627 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8627 = -35.0f; -COMPILER_STRIP_GATE(0x80845760, &lit_8627); -#pragma pop - -/* 80845764-80845768 0002B8 0004+00 0/2 0/0 0/0 .rodata @8628 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8628 = 8192.0f; -COMPILER_STRIP_GATE(0x80845764, &lit_8628); -#pragma pop - -/* 80845768-8084576C 0002BC 0004+00 0/1 0/0 0/0 .rodata @8629 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_8629 = 0x3A03126F; -COMPILER_STRIP_GATE(0x80845768, &lit_8629); -#pragma pop - -/* 8084576C-80845770 0002C0 0004+00 0/3 0/0 0/0 .rodata @8630 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8630 = 20.0f; -COMPILER_STRIP_GATE(0x8084576C, &lit_8630); -#pragma pop - -/* 80845CB4-80845CC4 000104 000C+04 0/1 0/0 0/0 .bss @8516 */ -#pragma push -#pragma force_active on -static u8 lit_8516[12 + 4 /* padding */]; -#pragma pop - -/* 80845CC4-80845CD0 000114 000C+00 0/1 0/0 0/0 .bss reinLeftStart$8515 */ -#pragma push -#pragma force_active on -static u8 reinLeftStart[12]; -#pragma pop - -/* 80845CD0-80845CE0 000120 000C+04 0/1 0/0 0/0 .bss @8520 */ -#pragma push -#pragma force_active on -static u8 lit_8520[12 + 4 /* padding */]; -#pragma pop - -/* 80845CE0-80845CEC 000130 000C+00 0/1 0/0 0/0 .bss reinRightStart$8519 */ -#pragma push -#pragma force_active on -static u8 reinRightStart[12]; -#pragma pop - -/* 80845CEC-80845CFC 00013C 000C+04 0/1 0/0 0/0 .bss @8524 */ -#pragma push -#pragma force_active on -static u8 lit_8524[12 + 4 /* padding */]; -#pragma pop - -/* 80845CFC-80845D08 00014C 000C+00 0/1 0/0 0/0 .bss localNeckLeft$8523 */ -#pragma push -#pragma force_active on -static u8 localNeckLeft[12]; -#pragma pop - -/* 80845D08-80845D18 000158 000C+04 0/1 0/0 0/0 .bss @8528 */ -#pragma push -#pragma force_active on -static u8 lit_8528[12 + 4 /* padding */]; -#pragma pop - -/* 80845D18-80845D24 000168 000C+00 0/1 0/0 0/0 .bss localNeckRight$8527 */ -#pragma push -#pragma force_active on -static u8 localNeckRight[12]; -#pragma pop - -/* 8083F9AC-8083FDAC 007B6C 0400+00 2/2 0/0 0/0 .text setReinPosMoveInit__9daHorse_cFi */ -void daHorse_c::setReinPosMoveInit(int param_0) { - // NONMATCHING -} - -/* 8083FDAC-8083FEB4 007F6C 0108+00 2/2 0/0 0/0 .text copyReinPos__9daHorse_cFv */ -void daHorse_c::copyReinPos() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80845770-8084577C 0002C4 000C+00 1/1 0/0 0/0 .rodata zeldaLocalLeft$8682 */ -SECTION_RODATA static u8 const zeldaLocalLeft[12] = { - 0x40, 0x40, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x00, 0xC0, 0xA0, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80845770, &zeldaLocalLeft); - -/* 8084577C-80845788 0002D0 000C+00 1/1 0/0 0/0 .rodata zeldaLocalRight$8683 */ -SECTION_RODATA static u8 const zeldaLocalRight[12] = { - 0x40, 0x40, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x00, 0x40, 0xA0, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8084577C, &zeldaLocalRight); - -/* 8083FEB4-8084010C 008074 0258+00 1/0 0/0 0/0 .text setReinPosHandSubstance__9daHorse_cFi */ -void daHorse_c::setReinPosHandSubstance(int param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80845788-8084578C 0002DC 0004+00 0/2 0/0 0/0 .rodata @8805 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8805 = 29.0f; -COMPILER_STRIP_GATE(0x80845788, &lit_8805); -#pragma pop - -/* 8084578C-80845790 0002E0 0004+00 0/2 0/0 0/0 .rodata @8806 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8806 = -2.0f; -COMPILER_STRIP_GATE(0x8084578C, &lit_8806); -#pragma pop - -/* 80845D24-80845D34 000174 000C+04 0/1 0/0 0/0 .bss @8753 */ -#pragma push -#pragma force_active on -static u8 lit_8753[12 + 4 /* padding */]; -#pragma pop - -/* 80845D34-80845D40 000184 000C+00 0/1 0/0 0/0 .bss saddleLeft$8752 */ -#pragma push -#pragma force_active on -static u8 saddleLeft[12]; -#pragma pop - -/* 80845D40-80845D50 000190 000C+04 0/1 0/0 0/0 .bss @8757 */ -#pragma push -#pragma force_active on -static u8 lit_8757[12 + 4 /* padding */]; -#pragma pop - -/* 80845D50-80845D5C 0001A0 000C+00 0/1 0/0 0/0 .bss saddleRight$8756 */ -#pragma push -#pragma force_active on -static u8 saddleRight[12]; -#pragma pop - -/* 8084010C-808402F8 0082CC 01EC+00 1/0 0/0 0/0 .text setReinPosNormalSubstance__9daHorse_cFv */ -void daHorse_c::setReinPosNormalSubstance() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80845790-80845794 0002E4 0004+00 0/1 0/0 0/0 .rodata @8904 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8904 = 220.0f; -COMPILER_STRIP_GATE(0x80845790, &lit_8904); -#pragma pop - -/* 80845794-80845798 0002E8 0004+00 0/1 0/0 0/0 .rodata @8905 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8905 = -170.0f; -COMPILER_STRIP_GATE(0x80845794, &lit_8905); -#pragma pop - -/* 80845D5C-80845D6C 0001AC 000C+04 0/1 0/0 0/0 .bss @8813 */ -#pragma push -#pragma force_active on -static u8 lit_8813[12 + 4 /* padding */]; -#pragma pop - -/* 80845D6C-80845D78 0001BC 000C+00 0/1 0/0 0/0 .bss localCenterPos$8812 */ -#pragma push -#pragma force_active on -static u8 localCenterPos[12]; -#pragma pop - -/* 80845D78-80845D88 0001C8 000C+04 0/1 0/0 0/0 .bss @8817 */ -#pragma push -#pragma force_active on -static u8 lit_8817[12 + 4 /* padding */]; -#pragma pop - -/* 80845D88-80845D94 0001D8 000C+00 0/1 0/0 0/0 .bss localFrontPos$8816 */ -#pragma push -#pragma force_active on -static u8 localFrontPos[12]; -#pragma pop - -/* 80845D94-80845DA4 0001E4 000C+04 0/1 0/0 0/0 .bss @8821 */ -#pragma push -#pragma force_active on -static u8 lit_8821[12 + 4 /* padding */]; -#pragma pop - -/* 80845DA4-80845DB0 0001F4 000C+00 0/1 0/0 0/0 .bss localBackPos$8820 */ -#pragma push -#pragma force_active on -static u8 localBackPos[12]; -#pragma pop - -/* 808402F8-80840714 0084B8 041C+00 1/1 0/0 0/0 .text bgCheck__9daHorse_cFv */ -void daHorse_c::bgCheck() { - // NONMATCHING -} - -/* 80840714-808407B0 0088D4 009C+00 1/0 0/0 0/0 .text - * checkSpecialWallHitSubstance__9daHorse_cCFRC4cXyz */ -void daHorse_c::checkSpecialWallHitSubstance(cXyz const& param_0) const { - // NONMATCHING -} - -/* 808407B0-80840800 008970 0050+00 3/3 0/0 0/0 .text setServiceWaitTimer__9daHorse_cFv - */ -void daHorse_c::setServiceWaitTimer() { - // NONMATCHING -} - -/* 80840800-80840844 0089C0 0044+00 2/2 0/0 0/0 .text checkServiceWaitAnime__9daHorse_cFv - */ -void daHorse_c::checkServiceWaitAnime() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80845798-8084579C 0002EC 0004+00 1/1 0/0 0/0 .rodata @8963 */ -SECTION_RODATA static f32 const lit_8963 = 9.0f / 10.0f; -COMPILER_STRIP_GATE(0x80845798, &lit_8963); - -/* 80840844-808408F0 008A04 00AC+00 2/2 0/0 0/0 .text checkTurnInput__9daHorse_cFv */ -void daHorse_c::checkTurnInput() { - // NONMATCHING -} - -/* 808408F0-808409C0 008AB0 00D0+00 2/2 0/0 0/0 .text checkTgHitTurn__9daHorse_cFv */ -void daHorse_c::checkTgHitTurn() { - // NONMATCHING -} - -/* 808409C0-80840B28 008B80 0168+00 3/3 0/0 0/0 .text checkTurnAfterFastMove__9daHorse_cFf */ -void daHorse_c::checkTurnAfterFastMove(f32 param_0) { - // NONMATCHING -} - -/* 80840B28-80840B88 008CE8 0060+00 2/2 0/0 0/0 .text setNeckAnimeMorf__9daHorse_cFv */ -void daHorse_c::setNeckAnimeMorf() { - // NONMATCHING -} - -/* 80840B88-80840CA4 008D48 011C+00 4/4 0/0 0/0 .text setNeckAnime__9daHorse_cFUsffs */ -void daHorse_c::setNeckAnime(u16 param_0, f32 param_1, f32 param_2, s16 param_3) { - // NONMATCHING -} - -/* 80840CA4-80840CE4 008E64 0040+00 9/9 0/0 0/0 .text resetNeckAnime__9daHorse_cFv */ -void daHorse_c::resetNeckAnime() { - // NONMATCHING -} - -/* 80840CE4-80840FE0 008EA4 02FC+00 1/1 0/0 0/0 .text setLashCnt__9daHorse_cFv */ -void daHorse_c::setLashCnt() { - // NONMATCHING -} - -/* 80840FE0-80841084 0091A0 00A4+00 1/1 0/0 0/0 .text setTalkModeWolf__9daHorse_cFv */ -void daHorse_c::setTalkModeWolf() { - // NONMATCHING -} - -/* 80841084-8084116C 009244 00E8+00 2/2 0/0 0/0 .text setBoarHit__9daHorse_cFP10fopAc_ac_ci */ -void daHorse_c::setBoarHit(fopAc_ac_c* param_0, int param_1) { - // NONMATCHING -} - -/* 8084116C-808411D0 00932C 0064+00 1/1 0/0 0/0 .text savePos__9daHorse_cFv */ -void daHorse_c::savePos() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8084579C-808457A0 0002F0 0004+00 0/1 0/0 0/0 .rodata @9264 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9264 = 4000000.0f; -COMPILER_STRIP_GATE(0x8084579C, &lit_9264); -#pragma pop - -/* 808457A0-808457A4 0002F4 0004+00 0/2 0/0 0/0 .rodata @9265 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9265 = 640000.0f; -COMPILER_STRIP_GATE(0x808457A0, &lit_9265); -#pragma pop - -/* 8084585C-8084585C 0003B0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_808458C9 = "F_SP110"; -#pragma pop - -/* 808411D0-80841468 009390 0298+00 1/0 0/0 0/0 .text callHorseSubstance__9daHorse_cFPC4cXyz */ -void daHorse_c::callHorseSubstance(cXyz const* param_0) { - // NONMATCHING -} - -/* 80841468-808415B4 009628 014C+00 1/0 0/0 0/0 .text - * setHorsePosAndAngleSubstance__9daHorse_cFPC4cXyzs */ -void daHorse_c::setHorsePosAndAngleSubstance(cXyz const* param_0, s16 param_1) { - // NONMATCHING -} - -/* 808415B4-80841628 009774 0074+00 2/2 0/0 0/0 .text checkPlayerHeavy__9daHorse_cFv */ -void daHorse_c::checkPlayerHeavy() { - // NONMATCHING -} - -/* 80841628-80841698 0097E8 0070+00 2/2 0/0 0/0 .text setTgCoGrp__9daHorse_cFUlUl */ -void daHorse_c::setTgCoGrp(u32 param_0, u32 param_1) { - // NONMATCHING -} - -/* 80841698-808416D4 009858 003C+00 1/0 0/0 0/0 .text onRideFlgSubstance__9daHorse_cFv */ -void daHorse_c::onRideFlgSubstance() { - // NONMATCHING -} - -/* 808416D4-80841708 009894 0034+00 1/0 0/0 0/0 .text offRideFlgSubstance__9daHorse_cFv - */ -void daHorse_c::offRideFlgSubstance() { - // NONMATCHING -} - -/* 80841708-808417B8 0098C8 00B0+00 8/8 0/0 0/0 .text procWaitInit__9daHorse_cFv */ -void daHorse_c::procWaitInit() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 808457A4-808457A8 0002F8 0004+00 0/1 0/0 0/0 .rodata @9537 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9537 = 15.0f; -COMPILER_STRIP_GATE(0x808457A4, &lit_9537); -#pragma pop - -/* 808457A8-808457AC 0002FC 0004+00 0/1 0/0 0/0 .rodata @9538 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9538 = 1.0f / 100.0f; -COMPILER_STRIP_GATE(0x808457A8, &lit_9538); -#pragma pop - -/* 808457AC-808457B0 000300 0004+00 0/1 0/0 0/0 .rodata @9539 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9539 = 2.0f / 5.0f; -COMPILER_STRIP_GATE(0x808457AC, &lit_9539); -#pragma pop - -/* 808457B0-808457B4 000304 0004+00 0/1 0/0 0/0 .rodata @9540 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9540 = 3.0f / 5.0f; -COMPILER_STRIP_GATE(0x808457B0, &lit_9540); -#pragma pop - -/* 808457B4-808457B8 000308 0004+00 0/2 0/0 0/0 .rodata @9541 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9541 = 6.0f; -COMPILER_STRIP_GATE(0x808457B4, &lit_9541); -#pragma pop - -/* 808417B8-80841F04 009978 074C+00 1/0 0/0 0/0 .text procWait__9daHorse_cFv */ -void daHorse_c::procWait() { - // NONMATCHING -} - -/* 80841F04-80841F80 00A0C4 007C+00 6/6 0/0 0/0 .text procMoveInit__9daHorse_cFv */ -void daHorse_c::procMoveInit() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 808457B8-808457BC 00030C 0004+00 0/1 0/0 0/0 .rodata @9676 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9676 = 350.0f; -COMPILER_STRIP_GATE(0x808457B8, &lit_9676); -#pragma pop - -/* 80841F80-808423DC 00A140 045C+00 1/0 0/0 0/0 .text procMove__9daHorse_cFv */ -void daHorse_c::procMove() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 808457BC-808457C0 000310 0004+00 0/1 0/0 0/0 .rodata @9716 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9716 = 27.0f / 10.0f; -COMPILER_STRIP_GATE(0x808457BC, &lit_9716); -#pragma pop - -/* 808423DC-808425BC 00A59C 01E0+00 3/3 0/0 0/0 .text procStopInit__9daHorse_cFv */ -void daHorse_c::procStopInit() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 808457C0-808457F0 000314 0030+00 0/1 0/0 0/0 .rodata stopFootEffectFrame$9720 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const stopFootEffectFrame[48] = { - 0x41, 0x00, 0x00, 0x00, 0x41, 0x30, 0x00, 0x00, 0x41, 0xC0, 0x00, 0x00, 0x41, 0x30, 0x00, 0x00, - 0x41, 0x60, 0x00, 0x00, 0x41, 0xD8, 0x00, 0x00, 0x40, 0xA0, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, - 0x41, 0x90, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x41, 0x50, 0x00, 0x00, 0x41, 0xB8, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x808457C0, &stopFootEffectFrame); -#pragma pop - -/* 808457F0-80845820 000344 0030+00 0/1 0/0 0/0 .rodata stopStandFootEffectFrame$9721 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const stopStandFootEffectFrame[48] = { - 0x40, 0xE0, 0x00, 0x00, 0x41, 0x40, 0x00, 0x00, 0x41, 0xC0, 0x00, 0x00, 0x41, 0x30, 0x00, 0x00, - 0x41, 0x98, 0x00, 0x00, 0x41, 0xD0, 0x00, 0x00, 0x40, 0xA0, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, - 0x41, 0x90, 0x00, 0x00, 0x40, 0xE0, 0x00, 0x00, 0x41, 0x90, 0x00, 0x00, 0x41, 0xD0, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x808457F0, &stopStandFootEffectFrame); -#pragma pop - -/* 80845820-80845824 000374 0004+00 0/1 0/0 0/0 .rodata @9792 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9792 = 3.5f; -COMPILER_STRIP_GATE(0x80845820, &lit_9792); -#pragma pop - -/* 80845824-80845828 000378 0004+00 0/1 0/0 0/0 .rodata @9793 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9793 = 59.0f; -COMPILER_STRIP_GATE(0x80845824, &lit_9793); -#pragma pop - -/* 80845828-8084582C 00037C 0004+00 0/1 0/0 0/0 .rodata @9794 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9794 = 32.0f; -COMPILER_STRIP_GATE(0x80845828, &lit_9794); -#pragma pop - -/* 808425BC-80842878 00A77C 02BC+00 1/0 0/0 0/0 .text procStop__9daHorse_cFv */ -void daHorse_c::procStop() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8084582C-80845830 000380 0004+00 0/1 0/0 0/0 .rodata @9831 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9831 = 52.0f; -COMPILER_STRIP_GATE(0x8084582C, &lit_9831); -#pragma pop - -/* 80845830-80845834 000384 0004+00 0/1 0/0 0/0 .rodata @9832 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_9832 = 0x3DC90FDB; -COMPILER_STRIP_GATE(0x80845830, &lit_9832); -#pragma pop - -/* 80845834-80845838 000388 0004+00 0/1 0/0 0/0 .rodata @9833 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9833 = 53.0f; -COMPILER_STRIP_GATE(0x80845834, &lit_9833); -#pragma pop - -/* 80842878-80842AB0 00AA38 0238+00 6/6 0/0 0/0 .text procTurnInit__9daHorse_cFi */ -void daHorse_c::procTurnInit(int param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80845838-8084583C 00038C 0004+00 0/1 0/0 0/0 .rodata @9982 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_9982 = 2000.0f; -COMPILER_STRIP_GATE(0x80845838, &lit_9982); -#pragma pop - -/* 80842AB0-80843008 00AC70 0558+00 1/0 0/0 0/0 .text procTurn__9daHorse_cFv */ -void daHorse_c::procTurn() { - // NONMATCHING -} - -/* 80843008-808432E0 00B1C8 02D8+00 2/2 0/0 0/0 .text procJumpInit__9daHorse_cFi */ -void daHorse_c::procJumpInit(int param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8084583C-80845840 000390 0004+00 0/1 0/0 0/0 .rodata @10106 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_10106 = 7.0f; -COMPILER_STRIP_GATE(0x8084583C, &lit_10106); -#pragma pop - -/* 808432E0-80843604 00B4A0 0324+00 1/0 0/0 0/0 .text procJump__9daHorse_cFv */ -void daHorse_c::procJump() { - // NONMATCHING -} - -/* 80843604-80843770 00B7C4 016C+00 1/1 0/0 0/0 .text procLandInit__9daHorse_cFfi */ -void daHorse_c::procLandInit(f32 param_0, int param_1) { - // NONMATCHING -} - -/* 80843770-808438AC 00B930 013C+00 1/0 0/0 0/0 .text procLand__9daHorse_cFv */ -void daHorse_c::procLand() { - // NONMATCHING -} - -/* 808438AC-8084396C 00BA6C 00C0+00 1/1 0/0 0/0 .text procLargeDamageInit__9daHorse_cFv - */ -void daHorse_c::procLargeDamageInit() { - // NONMATCHING -} - -/* 8084396C-808439C8 00BB2C 005C+00 1/0 0/0 0/0 .text procLargeDamage__9daHorse_cFv */ -void daHorse_c::procLargeDamage() { - // NONMATCHING -} - -/* 808439C8-80843A44 00BB88 007C+00 1/1 0/0 0/0 .text procToolDemoInit__9daHorse_cFv */ -void daHorse_c::procToolDemoInit() { - // NONMATCHING -} - -/* 80843A44-80843BFC 00BC04 01B8+00 1/0 0/0 0/0 .text procToolDemo__9daHorse_cFv */ -void daHorse_c::procToolDemo() { - // NONMATCHING -} - -/* 80843BFC-80843C40 00BDBC 0044+00 1/1 0/0 0/0 .text - * searchSceneChangeArea__9daHorse_cFP10fopAc_ac_c */ -void daHorse_c::searchSceneChangeArea(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* 80843C40-80843C74 00BE00 0034+00 1/1 0/0 0/0 .text - * daHorse_searchSceneChangeArea__FP10fopAc_ac_cPv */ -static void daHorse_searchSceneChangeArea(fopAc_ac_c* param_0, void* param_1) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80845840-8084584C 000394 000C+00 0/1 0/0 0/0 .rodata @10308 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_10308[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x80845840, &lit_10308); -#pragma pop - -/* 8084584C-80845850 0003A0 0004+00 0/1 0/0 0/0 .rodata @10523 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_10523 = 0x38D1B717; -COMPILER_STRIP_GATE(0x8084584C, &lit_10523); -#pragma pop - -/* 80843C74-80844570 00BE34 08FC+00 1/1 0/0 0/0 .text execute__9daHorse_cFv */ -void daHorse_c::execute() { - // NONMATCHING -} - -/* 80844570-80844590 00C730 0020+00 1/0 0/0 0/0 .text daHorse_Execute__FP9daHorse_c */ -static void daHorse_Execute(daHorse_c* param_0) { - // NONMATCHING -} - -/* 80844590-8084476C 00C750 01DC+00 1/1 0/0 0/0 .text draw__9daHorse_cFv */ -void daHorse_c::draw() { - // NONMATCHING -} - -/* 8084476C-8084478C 00C92C 0020+00 1/0 0/0 0/0 .text daHorse_Draw__FP9daHorse_c */ -static void daHorse_Draw(daHorse_c* param_0) { - // NONMATCHING -} - -/* 8084478C-80844B1C 00C94C 0390+00 1/1 0/0 0/0 .text __dt__9daHorse_cFv */ -daHorse_c::~daHorse_c() { - // NONMATCHING -} - -/* 80844B1C-80844B44 00CCDC 0028+00 1/0 0/0 0/0 .text daHorse_Delete__FP9daHorse_c */ -static void daHorse_Delete(daHorse_c* param_0) { - // NONMATCHING -} - -/* 80844B44-80844B8C 00CD04 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} - -/* 80844BB4-80844BDC 00CD74 0028+00 1/0 0/0 0/0 .text - * init__73J3DMtxCalcNoAnm<27J3DMtxCalcCalcTransformMaya,24J3DMtxCalcJ3DSysInitMaya>FRC3VecRA3_A4_Cf - */ -extern "C" void func_80844BB4(void* _this, Vec const& param_0, f32 const (¶m_1)[3][4]) { - // NONMATCHING -} - -/* 80844BDC-80844C0C 00CD9C 0030+00 1/0 0/0 0/0 .text - * calc__73J3DMtxCalcNoAnm<27J3DMtxCalcCalcTransformMaya,24J3DMtxCalcJ3DSysInitMaya>Fv */ -extern "C" void func_80844BDC(void* _this) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80845850-80845854 0003A4 0004+00 0/1 0/0 0/0 .rodata @10703 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_10703 = 23.5f; -COMPILER_STRIP_GATE(0x80845850, &lit_10703); -#pragma pop - -/* 80845854-80845858 0003A8 0004+00 0/1 0/0 0/0 .rodata @10704 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_10704 = -20.0f; -COMPILER_STRIP_GATE(0x80845854, &lit_10704); -#pragma pop - -/* 80845858-8084585C 0003AC 0004+00 0/1 0/0 0/0 .rodata @10705 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_10705 = 25.5f; -COMPILER_STRIP_GATE(0x80845858, &lit_10705); -#pragma pop - -/* 80844C0C-80844CA0 00CDCC 0094+00 0/0 1/0 0/0 .text __sinit_d_a_horse_cpp */ -void __sinit_d_a_horse_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x80844C0C, __sinit_d_a_horse_cpp); -#pragma pop - -/* 80844CA0-80844CA8 00CE60 0008+00 1/0 0/0 0/0 .text @36@__dt__14dBgS_HorseAcchFv */ -static void func_80844CA0() { - // NONMATCHING -} - -/* 80844CA8-80844CB0 00CE68 0008+00 1/0 0/0 0/0 .text @20@__dt__14dBgS_HorseAcchFv */ -static void func_80844CA8() { - // NONMATCHING -} - -/* 80844CB0-80844F70 00CE70 02C0+00 1/1 0/0 0/0 .text __ct__9daHorse_cFv */ -daHorse_c::daHorse_c() { - // NONMATCHING -} - -/* 80844F70-80844FAC 00D130 003C+00 2/2 0/0 0/0 .text __dt__17daHorseFootData_cFv */ -daHorseFootData_c::~daHorseFootData_c() { - // NONMATCHING -} - -/* 80844FAC-80844FB0 00D16C 0004+00 1/1 0/0 0/0 .text __ct__17daHorseFootData_cFv */ -daHorseFootData_c::daHorseFootData_c() { - /* empty function */ -} - -/* 80844FB0-80844FEC 00D170 003C+00 2/2 0/0 0/0 .text __dt__13daHorseRein_cFv */ -// daHorseRein_c::~daHorseRein_c() { -extern "C" void __dt__13daHorseRein_cFv() { - // NONMATCHING -} - -/* 80844FEC-80844FF0 00D1AC 0004+00 1/1 0/0 0/0 .text __ct__13daHorseRein_cFv */ -// daHorseRein_c::daHorseRein_c() { -extern "C" void __ct__13daHorseRein_cFv() { - /* empty function */ -} - -/* 80844FF0-80845038 00D1B0 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */ -// cM3dGSph::~cM3dGSph() { -extern "C" void __dt__8cM3dGSphFv() { - // NONMATCHING -} - -/* 80845038-80845080 00D1F8 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ -// cM3dGCyl::~cM3dGCyl() { -extern "C" void __dt__8cM3dGCylFv() { - // NONMATCHING -} - -/* 80845080-808450C8 00D240 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 808450C8-80845194 00D288 00CC+00 2/2 0/0 0/0 .text __dt__8dCcD_CylFv */ -// dCcD_Cyl::~dCcD_Cyl() { -extern "C" void __dt__8dCcD_CylFv() { - // NONMATCHING -} - -/* 80845194-80845218 00D354 0084+00 1/1 0/0 0/0 .text __ct__8dCcD_CylFv */ -// dCcD_Cyl::dCcD_Cyl() { -extern "C" void __ct__8dCcD_CylFv() { - // NONMATCHING -} - -/* 80845218-80845274 00D3D8 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 80845274-808452E4 00D434 0070+00 3/2 0/0 0/0 .text __dt__14dBgS_HorseAcchFv */ -dBgS_HorseAcch::~dBgS_HorseAcch() { - // NONMATCHING -} - -/* 808452E4-80845354 00D4A4 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_AcchCirFv */ -// dBgS_AcchCir::~dBgS_AcchCir() { -extern "C" void __dt__12dBgS_AcchCirFv() { - // NONMATCHING -} - -/* 80845354-808453B0 00D514 005C+00 3/2 0/0 0/0 .text __dt__16daPy_frameCtrl_cFv */ -// daPy_frameCtrl_c::~daPy_frameCtrl_c() { -extern "C" void __dt__16daPy_frameCtrl_cFv() { - // NONMATCHING -} - -/* 808453B0-808453FC 00D570 004C+00 1/1 0/0 0/0 .text __ct__16daPy_frameCtrl_cFv */ -daPy_frameCtrl_c::daPy_frameCtrl_c() { - // NONMATCHING -} - -/* 808453FC-80845438 00D5BC 003C+00 2/2 0/0 0/0 .text __dt__19mDoExt_AnmRatioPackFv */ -mDoExt_AnmRatioPack::~mDoExt_AnmRatioPack() { - // NONMATCHING -} - -/* 80845438-80845450 00D5F8 0018+00 1/1 0/0 0/0 .text __ct__19mDoExt_AnmRatioPackFv */ -mDoExt_AnmRatioPack::mDoExt_AnmRatioPack() { - // NONMATCHING -} - -/* 80845450-80845498 00D610 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */ -// J3DFrameCtrl::~J3DFrameCtrl() { -extern "C" void __dt__12J3DFrameCtrlFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80845DB0-80845DB4 000200 0004+00 0/0 0/0 0/0 .bss - * sInstance__40JASGlobalInstance<19JASDefaultBankTable> */ -#pragma push -#pragma force_active on -static u8 data_80845DB0[4]; -#pragma pop - -/* 80845DB4-80845DB8 000204 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14JASAudioThread> */ -#pragma push -#pragma force_active on -static u8 data_80845DB4[4]; -#pragma pop - -/* 80845DB8-80845DBC 000208 0004+00 0/0 0/0 0/0 .bss sInstance__27JASGlobalInstance<7Z2SeMgr> */ -#pragma push -#pragma force_active on -static u8 data_80845DB8[4]; -#pragma pop - -/* 80845DBC-80845DC0 00020C 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8Z2SeqMgr> */ -#pragma push -#pragma force_active on -static u8 data_80845DBC[4]; -#pragma pop - -/* 80845DC0-80845DC4 000210 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SceneMgr> - */ -#pragma push -#pragma force_active on -static u8 data_80845DC0[4]; -#pragma pop - -/* 80845DC4-80845DC8 000214 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2StatusMgr> - */ -#pragma push -#pragma force_active on -static u8 data_80845DC4[4]; -#pragma pop - -/* 80845DC8-80845DCC 000218 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2DebugSys> - */ -#pragma push -#pragma force_active on -static u8 data_80845DC8[4]; -#pragma pop - -/* 80845DCC-80845DD0 00021C 0004+00 0/0 0/0 0/0 .bss - * sInstance__36JASGlobalInstance<15JAISoundStarter> */ -#pragma push -#pragma force_active on -static u8 data_80845DCC[4]; -#pragma pop - -/* 80845DD0-80845DD4 000220 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14Z2SoundStarter> */ -#pragma push -#pragma force_active on -static u8 data_80845DD0[4]; -#pragma pop - -/* 80845DD4-80845DD8 000224 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12Z2SpeechMgr2> */ -#pragma push -#pragma force_active on -static u8 data_80845DD4[4]; -#pragma pop - -/* 80845DD8-80845DDC 000228 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8JAISeMgr> */ -#pragma push -#pragma force_active on -static u8 data_80845DD8[4]; -#pragma pop - -/* 80845DDC-80845DE0 00022C 0004+00 0/0 0/0 0/0 .bss sInstance__29JASGlobalInstance<9JAISeqMgr> */ -#pragma push -#pragma force_active on -static u8 data_80845DDC[4]; -#pragma pop - -/* 80845DE0-80845DE4 000230 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAIStreamMgr> */ -#pragma push -#pragma force_active on -static u8 data_80845DE0[4]; -#pragma pop - -/* 80845DE4-80845DE8 000234 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SoundMgr> - */ -#pragma push -#pragma force_active on -static u8 data_80845DE4[4]; -#pragma pop - -/* 80845DE8-80845DEC 000238 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAISoundInfo> */ -#pragma push -#pragma force_active on -static u8 data_80845DE8[4]; -#pragma pop - -/* 80845DEC-80845DF0 00023C 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13JAUSoundTable> */ -#pragma push -#pragma force_active on -static u8 data_80845DEC[4]; -#pragma pop - -/* 80845DF0-80845DF4 000240 0004+00 0/0 0/0 0/0 .bss - * sInstance__38JASGlobalInstance<17JAUSoundNameTable> */ -#pragma push -#pragma force_active on -static u8 data_80845DF0[4]; -#pragma pop - -/* 80845DF4-80845DF8 000244 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAUSoundInfo> */ -#pragma push -#pragma force_active on -static u8 data_80845DF4[4]; -#pragma pop - -/* 80845DF8-80845DFC 000248 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SoundInfo> - */ -#pragma push -#pragma force_active on -static u8 data_80845DF8[4]; -#pragma pop - -/* 80845DFC-80845E00 00024C 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13Z2SoundObjMgr> */ -#pragma push -#pragma force_active on -static u8 data_80845DFC[4]; -#pragma pop - -/* 80845E00-80845E04 000250 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2Audience> - */ -#pragma push -#pragma force_active on -static u8 data_80845E00[4]; -#pragma pop - -/* 80845E04-80845E08 000254 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2FxLineMgr> - */ -#pragma push -#pragma force_active on -static u8 data_80845E04[4]; -#pragma pop - -/* 80845E08-80845E0C 000258 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2EnvSeMgr> - */ -#pragma push -#pragma force_active on -static u8 data_80845E08[4]; -#pragma pop - -/* 80845E0C-80845E10 00025C 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SpeechMgr> - */ -#pragma push -#pragma force_active on -static u8 data_80845E0C[4]; -#pragma pop - -/* 80845E10-80845E14 000260 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13Z2WolfHowlMgr> */ -#pragma push -#pragma force_active on -static u8 data_80845E10[4]; -#pragma pop - -/* 80845E14-80845E18 000264 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14JAUSectionHeap> */ -#pragma push -#pragma force_active on -static u8 data_80845E14[4]; -#pragma pop - -/* 8084585C-8084585C 0003B0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ +AUDIO_INSTANCES;