alink horse mostly done (#2229)

* d_a_horse work

* more work on alink horse

* finish alink horse

* little work on d_a_alink_link
This commit is contained in:
TakaRikka 2024-10-30 15:41:08 -07:00 committed by GitHub
parent 7f2e42ba19
commit 36519ddf15
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 1702 additions and 173 deletions

View File

@ -23,6 +23,7 @@ struct J3DTransformInfo {
return *this; return *this;
} */ } */
#ifdef __MWERKS__
inline J3DTransformInfo& operator=(const register J3DTransformInfo& b) { inline J3DTransformInfo& operator=(const register J3DTransformInfo& b) {
register const J3DTransformInfo& var_r31 = b; register const J3DTransformInfo& var_r31 = b;
register J3DTransformInfo& var_r30 = *this; register J3DTransformInfo& var_r30 = *this;
@ -46,6 +47,7 @@ struct J3DTransformInfo {
} }
return *this; return *this;
} }
#endif
}; // Size: 0x20 }; // Size: 0x20
extern J3DTransformInfo const j3dDefaultTransformInfo; extern J3DTransformInfo const j3dDefaultTransformInfo;

View File

@ -676,6 +676,10 @@ public:
FTANM_UNK_9 = 9, FTANM_UNK_9 = 9,
FTANM_UNK_13 = 0x13, FTANM_UNK_13 = 0x13,
FTANM_UNK_14 = 0x14, FTANM_UNK_14 = 0x14,
FTANM_UNK_20 = 0x20,
FTANM_UNK_21 = 0x21,
FTANM_UNK_22 = 0x22,
FTANM_UNK_23 = 0x23,
FTANM_UNK_27 = 0x27, FTANM_UNK_27 = 0x27,
FTANM_UNK_2D = 0x2D, FTANM_UNK_2D = 0x2D,
FTANM_UNK_48 = 0x48, FTANM_UNK_48 = 0x48,
@ -1677,8 +1681,8 @@ public:
/* 800CB480 */ bool checkSwordDraw(); /* 800CB480 */ bool checkSwordDraw();
/* 800CB53C */ bool checkShieldDraw(); /* 800CB53C */ bool checkShieldDraw();
/* 800CB5F8 */ bool checkItemDraw(); /* 800CB5F8 */ bool checkItemDraw();
/* 800CB694 */ void initShadowScaleLight(); /* 800CB694 */ int initShadowScaleLight();
/* 800CBA38 */ void moveShadowScaleLight(); /* 800CBA38 */ int moveShadowScaleLight();
/* 800CBC18 */ void shadowDraw(); /* 800CBC18 */ void shadowDraw();
/* 800CC25C */ void modelCalc(J3DModel*); /* 800CC25C */ void modelCalc(J3DModel*);
/* 800CC298 */ void basicModelDraw(J3DModel*); /* 800CC298 */ void basicModelDraw(J3DModel*);
@ -1709,7 +1713,7 @@ public:
/* 800D014C */ void setMidnaTalkStatus(u8 status) { /* 800D014C */ void setMidnaTalkStatus(u8 status) {
dComIfGp_setZStatus(status, 0); dComIfGp_setZStatus(status, 0);
} }
/* 800D0164 */ void set3DStatus(u8, u8); /* 800D0164 */ void set3DStatus(u8 status, u8 direction) { dComIfGp_set3DStatus(status, direction, 0); }
/* 800D2684 */ void checkCutTurnCharge(); /* 800D2684 */ void checkCutTurnCharge();
/* 800D0E08 */ void checkLightSwordMtrl(); /* 800D0E08 */ void checkLightSwordMtrl();
/* 800D0E98 */ BOOL checkSwordEquipAnime() const; /* 800D0E98 */ BOOL checkSwordEquipAnime() const;
@ -2093,14 +2097,14 @@ public:
/* 800ECD90 */ BOOL checkHorseNotDamageReaction() const; /* 800ECD90 */ BOOL checkHorseNotDamageReaction() const;
/* 800ECDC4 */ BOOL checkHorseWaitLashAnime() const; /* 800ECDC4 */ BOOL checkHorseWaitLashAnime() const;
/* 800ECDEC */ BOOL checkHorseReinLeftOnly() const; /* 800ECDEC */ BOOL checkHorseReinLeftOnly() const;
/* 800ECE10 */ void getReinHandType() const; /* 800ECE10 */ int getReinHandType() const;
/* 800ECF04 */ BOOL checkHorseLieAnime() const; /* 800ECF04 */ BOOL checkHorseLieAnime() const;
/* 800ECF5C */ BOOL checkHorseSubjectivity() const; /* 800ECF5C */ BOOL checkHorseSubjectivity() const;
/* 800ECF9C */ void setHorseSwordUpAnime(); /* 800ECF9C */ void setHorseSwordUpAnime();
/* 800ECFF4 */ void setHorseTurnUpperAnime(int); /* 800ECFF4 */ void setHorseTurnUpperAnime(int);
/* 800ED074 */ BOOL checkHorseNoUpperAnime() const; /* 800ED074 */ BOOL checkHorseNoUpperAnime() const;
/* 800ED0D4 */ void getHorseReinHandPos(cXyz*, cXyz*); /* 800ED0D4 */ void getHorseReinHandPos(cXyz*, cXyz*);
/* 800ED1F0 */ void checkHorseNotGrab() const; /* 800ED1F0 */ BOOL checkHorseNotGrab() const;
/* 800ED310 */ void setHorseStirrup(); /* 800ED310 */ void setHorseStirrup();
/* 800ED4B8 */ void changeBoarRunRide(); /* 800ED4B8 */ void changeBoarRunRide();
/* 800ED4DC */ int setSyncHorsePos(); /* 800ED4DC */ int setSyncHorsePos();
@ -2127,7 +2131,7 @@ public:
/* 800EF394 */ void horseGetOffEnd(); /* 800EF394 */ void horseGetOffEnd();
/* 800EF450 */ int checkNextActionHorse(); /* 800EF450 */ int checkNextActionHorse();
/* 800EF598 */ BOOL checkHorseGetOff(); /* 800EF598 */ BOOL checkHorseGetOff();
/* 800EF6B0 */ void checkHorseGetOffAndSetDoStatus(); /* 800EF6B0 */ int checkHorseGetOffAndSetDoStatus();
/* 800EF884 */ int setHorseGetOff(int); /* 800EF884 */ int setHorseGetOff(int);
/* 800EF95C */ int procHorseRideInit(); /* 800EF95C */ int procHorseRideInit();
/* 800EFDC4 */ int procHorseRide(); /* 800EFDC4 */ int procHorseRide();
@ -4115,12 +4119,12 @@ struct daAlink_cutParamTbl {
}; // Size: 0x10 }; // Size: 0x10
struct daAlink_cutHorseParamTbl { struct daAlink_cutHorseParamTbl {
/* 0x0 */ int field_0x0; /* 0x0 */ daAlink_c::daAlink_FTANM m_faceanm;
/* 0x4 */ u16 field_0x4; /* 0x4 */ u16 m_upperAnm;
/* 0x6 */ u16 field_0x6; /* 0x6 */ u16 m_faceBtk;
/* 0x8 */ u8 field_0x8; /* 0x8 */ u8 field_0x8;
/* 0x9 */ u8 field_0x9; /* 0x9 */ u8 field_0x9;
/* 0xA */ u8 field_0xa; /* 0xA */ u8 m_cutType;
}; // Size: 0xC }; // Size: 0xC
struct daAlinkHIO_anm_c { struct daAlinkHIO_anm_c {
@ -4446,56 +4450,32 @@ public:
static daAlinkHIO_cutTurn_c1 const m; static daAlinkHIO_cutTurn_c1 const m;
}; };
class daAlinkHIO_hoCutLA_c1 { class daAlinkHIO_hoCut_c1 {
public: public:
/* 0x00 */ daAlinkHIO_anm_c field_0x0; /* 0x00 */ daAlinkHIO_anm_c mCutAnm;
/* 0x14 */ f32 field_0x14; /* 0x14 */ f32 mAttackStartFrame;
/* 0x18 */ f32 field_0x18; /* 0x18 */ f32 mAttackEndFrame;
/* 0x1C */ f32 field_0x1C; /* 0x1C */ f32 mAfterCutMorf;
}; // Size: 0x20 };
class daAlinkHIO_hoCutLA_c0 { class daAlinkHIO_hoCutLA_c0 {
public: public:
static daAlinkHIO_hoCutLA_c1 const m; static daAlinkHIO_hoCut_c1 const m;
}; };
class daAlinkHIO_hoCutLB_c1 {
public:
/* 0x00 */ daAlinkHIO_anm_c field_0x0;
/* 0x14 */ f32 field_0x14;
/* 0x18 */ f32 field_0x18;
/* 0x1C */ f32 field_0x1C;
}; // Size: 0x20
class daAlinkHIO_hoCutLB_c0 { class daAlinkHIO_hoCutLB_c0 {
public: public:
static daAlinkHIO_hoCutLB_c1 const m; static daAlinkHIO_hoCut_c1 const m;
}; };
class daAlinkHIO_hoCutRA_c1 {
public:
/* 0x00 */ daAlinkHIO_anm_c field_0x0;
/* 0x14 */ f32 field_0x14;
/* 0x18 */ f32 field_0x18;
/* 0x1C */ f32 field_0x1C;
}; // Size: 0x20
class daAlinkHIO_hoCutRA_c0 { class daAlinkHIO_hoCutRA_c0 {
public: public:
static daAlinkHIO_hoCutRA_c1 const m; static daAlinkHIO_hoCut_c1 const m;
}; };
class daAlinkHIO_hoCutRB_c1 {
public:
/* 0x00 */ daAlinkHIO_anm_c field_0x0;
/* 0x14 */ f32 field_0x14;
/* 0x18 */ f32 field_0x18;
/* 0x1C */ f32 field_0x1C;
}; // Size: 0x20
class daAlinkHIO_hoCutRB_c0 { class daAlinkHIO_hoCutRB_c0 {
public: public:
static daAlinkHIO_hoCutRB_c1 const m; static daAlinkHIO_hoCut_c1 const m;
}; };
class daAlinkHIO_hoCutCharge_c1 { class daAlinkHIO_hoCutCharge_c1 {

View File

@ -35,6 +35,9 @@ public:
f32 nowAnimeFrame() const { return field_0x5e0->getFrame(); } f32 nowAnimeFrame() const { return field_0x5e0->getFrame(); }
s16 getWaitRollAngle() const { return mWaitRollAngle; } s16 getWaitRollAngle() const { return mWaitRollAngle; }
bool checkGetOff() const { return speedF < 3.0f; } bool checkGetOff() const { return speedF < 3.0f; }
f32 rideSpeedRate() const { return speedF / mSpeedRate; }
f32 getAnimeFrameRate() { return field_0x5e0->getFrame() / field_0x5e0->getEndFrame(); }
BOOL checkAnmLoopFrame() { return field_0x5e0->checkFrame(0.0f); }
J3DModel* getModel() { J3DModel* getModel() {
if (field_0x5e0 != NULL) { if (field_0x5e0 != NULL) {

View File

@ -7,6 +7,7 @@
#include "d/d_bg_s_lin_chk.h" #include "d/d_bg_s_lin_chk.h"
#include "d/d_cc_d.h" #include "d/d_cc_d.h"
#include "d/d_msg_flow.h" #include "d/d_msg_flow.h"
#include "m_Do/m_Do_audio.h"
class daHorseRein_c { class daHorseRein_c {
public: public:
@ -47,31 +48,37 @@ class daHorse_c : public fopAc_ac_c {
public: public:
enum daHorse_ERFLG0 { enum daHorse_ERFLG0 {
/* 0x001 */ ERFLG0_UNK_1 = 0x1, /* 0x001 */ ERFLG0_UNK_1 = 0x1,
/* 0x010 */ MOVE_ACCEPT = 0x10, /* 0x010 */ ERFLG0_MOVE_ACCEPT = 0x10,
/* 0x080 */ RIDE_RUN_FLG = 0x80, /* 0x080 */ ERFLG0_RIDE_RUN_FLG = 0x80,
/* 0x100 */ CUT_TURN_CANCEL = 0x100, /* 0x100 */ ERFLG0_CUT_TURN_CANCEL = 0x100,
ERFLG0_UNK_18 = 0x18, ERFLG0_UNK_18 = 0x18,
}; };
enum daHorse_RFLG0 { enum daHorse_RFLG0 {
/* 0x02 */ ENEMY_SEARCH = 2, /* 0x02 */ RFLG0_ENEMY_SEARCH = 2,
/* 0x08 */ LASH_DASH_START = 8, /* 0x08 */ RFLG0_LASH_DASH_START = 8,
/* 0x10 */ TURN_STAND = 0x10, /* 0x10 */ RFLG0_TURN_STAND = 0x10,
/* 0x40 */ TURN_STAND_CAMERA = 0x40, /* 0x40 */ RFLG0_TURN_STAND_CAMERA = 0x40,
}; };
enum daHorse_FLG0 { enum daHorse_FLG0 {
/* 0x00000020 */ RODEO_LEFT = 0x20, /* 0x00000020 */ FLG0_RODEO_LEFT = 0x20,
/* 0x00000040 */ RIDE_START_FLG = 0x40, /* 0x00000040 */ FLG0_RIDE_START_FLG = 0x40,
/* 0x00000080 */ NO_DRAW_WAIT = 0x80, /* 0x00000080 */ FLG0_NO_DRAW_WAIT = 0x80,
/* 0x00010000 */ PLAYER_BACK_RIDE_LASH = 0x10000, /* 0x00010000 */ FLG0_PLAYER_BACK_RIDE_LASH = 0x10000,
/* 0x20000000 */ TURN_CANCEL_KEEP = 0x20000000, /* 0x00400000 */ FLG0_UNK_400000 = 0x400000,
/* 0x20000000 */ FLG0_TURN_CANCEL_KEEP = 0x20000000,
/* 0x80000000 */ FLG0_RODEO_MODE = 0x80000000 /* 0x80000000 */ FLG0_RODEO_MODE = 0x80000000
}; };
fopAc_ac_c* getZeldaActor(); fopAc_ac_c* getZeldaActor();
/* 807E27BC */ void cancelOriginalDemo();
void cancelOriginalDemo() {
field_0x16b8 = 2;
field_0x1740 = 1;
}
/* 807E27F8 */ void onDemoJumpDistance(f32, f32); /* 807E27F8 */ void onDemoJumpDistance(f32, f32);
/* 807E28B8 */ void changeDemoPos0(cXyz const*); /* 807E28B8 */ void changeDemoPos0(cXyz const*);
/* 807E28E0 */ void setHorsePosAndAngle(cXyz const*, s16); /* 807E28E0 */ void setHorsePosAndAngle(cXyz const*, s16);
@ -166,7 +173,7 @@ public:
bool checkNoBombProc() const { return field_0x16b4 == 0 || field_0x16b4 == 1; } bool checkNoBombProc() const { return field_0x16b4 == 0 || field_0x16b4 == 1; }
bool checkResetStateFlg0(daHorse_RFLG0 flag) const { return mResetStateFlg0 & flag; } bool checkResetStateFlg0(daHorse_RFLG0 flag) const { return mResetStateFlg0 & flag; }
bool checkEndResetStateFlg0(daHorse_ERFLG0 flag) const { return mEndResetStateFlg0 & flag; } bool checkEndResetStateFlg0(daHorse_ERFLG0 flag) const { return mEndResetStateFlg0 & flag; }
bool checkStateFlg0(daHorse_FLG0 flag) const { return mStateFlg0 & flag; } u32 checkStateFlg0(daHorse_FLG0 flag) const { return mStateFlg0 & flag; }
f32 getNormalMaxSpeedF() { return mNormalMaxSpeedF; } f32 getNormalMaxSpeedF() { return mNormalMaxSpeedF; }
f32 getLashMaxSpeedF() { return mLashMaxSpeedF; } f32 getLashMaxSpeedF() { return mLashMaxSpeedF; }
void changeDemoMoveAngle(s16 angle) { mDemoMoveAngle = angle; } void changeDemoMoveAngle(s16 angle) { mDemoMoveAngle = angle; }
@ -179,7 +186,8 @@ public:
void onStateFlg0(daHorse_FLG0 flag) { mStateFlg0 |= flag; } void onStateFlg0(daHorse_FLG0 flag) { mStateFlg0 |= flag; }
void offStateFlg0(daHorse_FLG0 flag) { mStateFlg0 &= ~flag; } void offStateFlg0(daHorse_FLG0 flag) { mStateFlg0 &= ~flag; }
void onEndResetStateFlg0(daHorse_ERFLG0 i_flag) { mEndResetStateFlg0 |= i_flag;} void onEndResetStateFlg0(daHorse_ERFLG0 i_flag) { mEndResetStateFlg0 |= i_flag;}
void offNoDrawWait() { offStateFlg0(NO_DRAW_WAIT); } void offEndResetStateFlg0(daHorse_ERFLG0 i_flag) { mEndResetStateFlg0 &= ~i_flag;}
void offNoDrawWait() { offStateFlg0(FLG0_NO_DRAW_WAIT); }
bool checkSpecialWallHit(const cXyz& param_0) { return (this->*mpCheckSpecialWallHitFn)(param_0); } bool checkSpecialWallHit(const cXyz& param_0) { return (this->*mpCheckSpecialWallHitFn)(param_0); }
MtxP getSaddleMtx() { return field_0x570->getAnmMtx(21); } MtxP getSaddleMtx() { return field_0x570->getAnmMtx(21); }
MtxP getRootMtx() { return field_0x570->getAnmMtx(0); } MtxP getRootMtx() { return field_0x570->getAnmMtx(0); }
@ -193,21 +201,23 @@ public:
daHoZelda_c* i_getZeldaActor() { return (daHoZelda_c*)mZeldaActorKeep.getActor(); } daHoZelda_c* i_getZeldaActor() { return (daHoZelda_c*)mZeldaActorKeep.getActor(); }
bool checkTurnStandCamera() const { return checkResetStateFlg0(TURN_STAND_CAMERA); } bool checkTurnStandCamera() const { return checkResetStateFlg0(RFLG0_TURN_STAND_CAMERA); }
bool checkTurnStand() const { return checkResetStateFlg0(TURN_STAND); } bool checkTurnStand() const { return checkResetStateFlg0(RFLG0_TURN_STAND); }
bool checkRodeoMode() const { return checkStateFlg0(FLG0_RODEO_MODE); } u32 checkRodeoMode() const { return checkStateFlg0(FLG0_RODEO_MODE); }
bool checkCutTurnCancel() const { return checkEndResetStateFlg0(CUT_TURN_CANCEL); } bool checkCutTurnCancel() const { return checkEndResetStateFlg0(ERFLG0_CUT_TURN_CANCEL); }
bool checkTurnCancelKeep() const { return checkStateFlg0(TURN_CANCEL_KEEP); } bool checkTurnCancelKeep() const { return checkStateFlg0(FLG0_TURN_CANCEL_KEEP); }
bool checkTurn() const { return field_0x16b4 == 3 && field_0x1720 == 0; } BOOL checkRodeoLeft() const { return checkStateFlg0(FLG0_RODEO_LEFT); }
bool checkStop() const { return field_0x16b4 == 2; } 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 checkJump() const { return field_0x16b4 == 4; }
bool checkWait() const { return field_0x16b4 == 0; } bool checkWait() const { return field_0x16b4 == 0; }
bool checkLand() const { return field_0x16b4 == 5 && field_0x171a == 0; } bool checkLand() const { return field_0x16b4 == 5 && field_0x171a == 0; }
bool checkGetOff() const { return fabsf(speedF) < 3.0f; } bool checkGetOff() const { return fabsf(speedF) < 3.0f; }
bool checkEnemySearch() { return checkResetStateFlg0(ENEMY_SEARCH); } bool checkEnemySearch() { return checkResetStateFlg0(RFLG0_ENEMY_SEARCH); }
bool checkOriginalDemo() const { return field_0x16b8 == 3; } bool checkOriginalDemo() const { return field_0x16b8 == 3; }
s16 checkCowHit() const { return mCowHit; } s16 checkCowHit() const { return mCowHit; }
s16 getCowHitAngle() const { return mCowHitAngle; } s16 getCowHitAngle() const { return mCowHitAngle; }
u8 getRodeoPointCnt() const { return mRodeoPointCnt; }
void onTagJump(f32 param_0, f32 param_1, f32 param_2) { void onTagJump(f32 param_0, f32 param_1, f32 param_2) {
field_0x1768 = param_0; field_0x1768 = param_0;
@ -216,10 +226,20 @@ public:
onEndResetStateFlg0(ERFLG0_UNK_1); onEndResetStateFlg0(ERFLG0_UNK_1);
} }
void onMoveAccept() { onEndResetStateFlg0(MOVE_ACCEPT); } void onMoveAccept() { onEndResetStateFlg0(ERFLG0_MOVE_ACCEPT); }
void onPlayerLash() { onEndResetStateFlg0(ERFLG0_UNK_18); } void onPlayerLash() { onEndResetStateFlg0(ERFLG0_UNK_18); }
void offPlayerBackRideLash() { offStateFlg0(PLAYER_BACK_RIDE_LASH); } void offPlayerBackRideLash() { offStateFlg0(FLG0_PLAYER_BACK_RIDE_LASH); }
void onRodeoMode() { onStateFlg0(FLG0_RODEO_MODE); } void onRodeoMode() { onStateFlg0(FLG0_RODEO_MODE); }
void onRideStartFlg() { onStateFlg0(FLG0_RIDE_START_FLG); }
void onRideRunFlg() { onEndResetStateFlg0(ERFLG0_RIDE_RUN_FLG); }
void onPlayerBackRideLash() { onStateFlg0(FLG0_PLAYER_BACK_RIDE_LASH); }
void onCutTurnCancel() { onEndResetStateFlg0(ERFLG0_CUT_TURN_CANCEL); }
void offCutTurnCancel() { offEndResetStateFlg0(ERFLG0_CUT_TURN_CANCEL); }
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(); }
void initHorseMtx() { void initHorseMtx() {
mDoMtx_stack_c::transS(current.pos); mDoMtx_stack_c::transS(current.pos);
@ -228,9 +248,22 @@ public:
field_0x570->calc(); field_0x570->calc();
} }
void offRodeoMode() {
offStateFlg0(daHorse_FLG0(FLG0_RODEO_MODE | FLG0_UNK_400000));
field_0x16bc = 0;
mDoAud_subBgmStop();
}
void setSpeedF(f32 i_speed) { speedF = i_speed; } void setSpeedF(f32 i_speed) { speedF = i_speed; }
void setWalkSpeedF() { speedF = field_0x1764; } void setWalkSpeedF() { speedF = field_0x1764; }
MtxP getLeftStirrupMtx() { return field_0x570->getAnmMtx(0x17); }
MtxP getRightStirrupMtx() { return field_0x570->getAnmMtx(0x19); }
void calcWeightEnvMtx() { field_0x570->calcWeightEnvelopeMtx(); }
void setReinPosNormal() { (this->*mpSetReinPosNormalFn)(); }
void setReinPosHand(int param_0) { (this->*mpSetReinPosHandFn)(param_0); }
static u8 const m_footJointTable[8]; static u8 const m_footJointTable[8];
static f32 const m_callLimitDistance2; static f32 const m_callLimitDistance2;
@ -266,7 +299,8 @@ public:
/* 0x16B8 */ u8 field_0x16b8; /* 0x16B8 */ u8 field_0x16b8;
/* 0x16B9 */ u8 field_0x16b9[2]; /* 0x16B9 */ u8 field_0x16b9[2];
/* 0x16BB */ u8 mRodeoPointCnt; /* 0x16BB */ u8 mRodeoPointCnt;
/* 0x16BC */ u8 field_0x16bc[0x16C4 - 0x16BC]; /* 0x16BC */ u8 field_0x16bc;
/* 0x16BD */ u8 field_0x16bd[0x16C4 - 0x16BD];
/* 0x16C4 */ u16 mAnmIdx[3]; /* 0x16C4 */ u16 mAnmIdx[3];
/* 0x16CA */ u8 field_0x16ca[0x16F2 - 0x16CA]; /* 0x16CA */ u8 field_0x16ca[0x16F2 - 0x16CA];
/* 0x16F2 */ s16 mAimNeckAngleY; /* 0x16F2 */ s16 mAimNeckAngleY;
@ -294,7 +328,9 @@ public:
/* 0x1768 */ f32 field_0x1768; /* 0x1768 */ f32 field_0x1768;
/* 0x176C */ f32 field_0x176c; /* 0x176C */ f32 field_0x176c;
/* 0x1770 */ f32 field_0x1770; /* 0x1770 */ f32 field_0x1770;
/* 0x1774 */ u8 field_0x1774[0x14]; /* 0x1774 */ u8 field_0x1774[0x177C - 0x1774];
/* 0x177C */ f32 field_0x177C;
/* 0x1780 */ u8 field_0x1780[0x1788 - 0x1780];
/* 0x1788 */ f32 mDemoStickR; /* 0x1788 */ f32 mDemoStickR;
/* 0x178C */ f32 mNormalMaxSpeedF; /* 0x178C */ f32 mNormalMaxSpeedF;
/* 0x1790 */ f32 mLashMaxSpeedF; /* 0x1790 */ f32 mLashMaxSpeedF;

View File

@ -291,10 +291,9 @@ public:
FLG2_UNK_4000000 = 0x4000000, FLG2_UNK_4000000 = 0x4000000,
FLG2_UNK_2080000 = 0x2080000, FLG2_UNK_2080000 = 0x2080000,
FLG2_UNK_2000000 = 0x2000000, FLG2_UNK_2000000 = 0x2000000,
FLG2_BOAR_SINGLE_BATTLE = 0x1800000,
FLG2_UNK_8000000 = 0x8000000, FLG2_UNK_8000000 = 0x8000000,
FLG2_UNK_1000000 = 0x1000000, FLG2_UNK_1000000 = 0x1000000,
FLG2_UNK_800000 = 0x800000, FLG2_BOAR_SINGLE_BATTLE = 0x800000,
FLG2_STATUS_WINDOW_DRAW = 0x400000, FLG2_STATUS_WINDOW_DRAW = 0x400000,
FLG2_UNK_280000 = 0x280000, FLG2_UNK_280000 = 0x280000,
FLG2_UNK_200000 = 0x200000, FLG2_UNK_200000 = 0x200000,
@ -307,8 +306,10 @@ public:
FLG2_UNK_4000 = 0x4000, FLG2_UNK_4000 = 0x4000,
FLG2_UNK_2000 = 0x2000, FLG2_UNK_2000 = 0x2000,
FLG2_UNK_1000 = 0x1000, FLG2_UNK_1000 = 0x1000,
FLG2_UNK_800 = 0x800,
FLG2_PLAYER_SHADOW = 0x400, FLG2_PLAYER_SHADOW = 0x400,
FLG2_UNK_200 = 0x200, FLG2_UNK_200 = 0x200,
FLG2_UNK_100 = 0x100,
FLG2_UNK_80 = 0x80, FLG2_UNK_80 = 0x80,
FLG2_WOLF_ENEMY_HANG_BITE = 0x40, FLG2_WOLF_ENEMY_HANG_BITE = 0x40,
FLG2_WOLF_ENEMY_LEFT_THROW = 0x20, FLG2_WOLF_ENEMY_LEFT_THROW = 0x20,
@ -368,6 +369,7 @@ public:
ERFLG0_BEE_FOLLOW = 0x400000, ERFLG0_BEE_FOLLOW = 0x400000,
ERFLG0_UNK_200000 = 0x200000, ERFLG0_UNK_200000 = 0x200000,
ERFLG0_UNK_100000 = 0x100000, ERFLG0_UNK_100000 = 0x100000,
ERFLG0_UNK_80000 = 0x80000,
ERFLG0_UNK_40000 = 0x40000, ERFLG0_UNK_40000 = 0x40000,
ERFLG0_UNK_20000 = 0x20000, ERFLG0_UNK_20000 = 0x20000,
ERFLG0_UNK_10000 = 0x10000, ERFLG0_UNK_10000 = 0x10000,
@ -799,7 +801,7 @@ public:
bool getGrabPutStart() const { return checkResetFlg0(RFLG0_GRAB_PUT_START); } bool getGrabPutStart() const { return checkResetFlg0(RFLG0_GRAB_PUT_START); }
bool checkSwimUp() const { return checkNoResetFlg0(FLG0_SWIM_UP); } bool checkSwimUp() const { return checkNoResetFlg0(FLG0_SWIM_UP); }
BOOL checkHorseZelda() const { return checkNoResetFlg2(FLG2_HORSE_ZELDA); } BOOL checkHorseZelda() const { return checkNoResetFlg2(FLG2_HORSE_ZELDA); }
BOOL checkSpecialHorseRide() { return checkNoResetFlg2(daPy_FLG2(FLG2_HORSE_ZELDA | FLG2_UNK_1000000 | FLG2_UNK_800000)); } BOOL checkSpecialHorseRide() { return checkNoResetFlg2(daPy_FLG2(FLG2_HORSE_ZELDA | FLG2_UNK_1000000 | FLG2_BOAR_SINGLE_BATTLE)); }
BOOL checkBoardNoFootAngle() const { return checkResetFlg1(RFLG1_UNK_40); } BOOL checkBoardNoFootAngle() const { return checkResetFlg1(RFLG1_UNK_40); }
bool checkGrabThrow() const { return checkResetFlg0(RFLG0_GRAB_THROW); } bool checkGrabThrow() const { return checkResetFlg0(RFLG0_GRAB_THROW); }
@ -813,6 +815,7 @@ public:
void onFogFade() { onNoResetFlg2(FLG2_UNK_4000); } void onFogFade() { onNoResetFlg2(FLG2_UNK_4000); }
BOOL checkStickArrowReset() const { return checkResetFlg0(RFLG0_UNK_1); } BOOL checkStickArrowReset() const { return checkResetFlg0(RFLG0_UNK_1); }
u32 getCutAtFlg() const { return checkNoResetFlg0(FLG0_UNK_40); } u32 getCutAtFlg() const { return checkNoResetFlg0(FLG0_UNK_40); }
u32 checkBoarSingleBattleFirst() const { return checkNoResetFlg2(FLG2_BOAR_SINGLE_BATTLE); }
void offWolfEnemyHangBite() { offNoResetFlg2(FLG2_WOLF_ENEMY_HANG_BITE); } void offWolfEnemyHangBite() { offNoResetFlg2(FLG2_WOLF_ENEMY_HANG_BITE); }
bool onWolfEnemyHangBite(fopAc_ac_c* param_0) { return onWolfEnemyBiteAll(param_0, FLG2_WOLF_ENEMY_HANG_BITE); } bool onWolfEnemyHangBite(fopAc_ac_c* param_0) { return onWolfEnemyBiteAll(param_0, FLG2_WOLF_ENEMY_HANG_BITE); }
@ -907,7 +910,7 @@ public:
void onNsScream() { onEndResetFlg1(ERFLG1_UNK_1); } void onNsScream() { onEndResetFlg1(ERFLG1_UNK_1); }
void onNsScreamAnm() { onEndResetFlg1(daPy_ERFLG1(ERFLG1_UNK_1 | ERFLG1_UNK_2)); } void onNsScreamAnm() { onEndResetFlg1(daPy_ERFLG1(ERFLG1_UNK_1 | ERFLG1_UNK_2)); }
u32 checkBoarSingleBattle() const { return checkNoResetFlg2(FLG2_BOAR_SINGLE_BATTLE); } u32 checkBoarSingleBattle() const { return checkNoResetFlg2(daPy_FLG2(FLG2_UNK_1000000 | FLG2_BOAR_SINGLE_BATTLE)); }
u32 checkWolfDashAutoJump() const { return checkNoResetFlg2(FLG2_WOLF_DASH_AUTO_JUMP); } u32 checkWolfDashAutoJump() const { return checkNoResetFlg2(FLG2_WOLF_DASH_AUTO_JUMP); }
void changeOriginalDemo() { void changeOriginalDemo() {

View File

@ -48,6 +48,10 @@ inline void mDoAud_subBgmStart(u32 i_bgmID) {
Z2AudioMgr::getInterface()->subBgmStart(i_bgmID); Z2AudioMgr::getInterface()->subBgmStart(i_bgmID);
} }
inline void mDoAud_subBgmStop() {
Z2AudioMgr::getInterface()->subBgmStop();
}
inline void mDoAud_bgmNowBattle(f32 param_0) { inline void mDoAud_bgmNowBattle(f32 param_0) {
Z2AudioMgr::getInterface()->bgmNowBattle(param_0); Z2AudioMgr::getInterface()->bgmNowBattle(param_0);
} }

View File

@ -1703,7 +1703,7 @@ COMPILER_STRIP_GATE(0x8039199C, &rightOffset);
#pragma force_active on #pragma force_active on
static daAlink_cutHorseParamTbl const cutParamTable_19765[] = { static daAlink_cutHorseParamTbl const cutParamTable_19765[] = {
{ {
0x20, daAlink_c::FTANM_UNK_20,
0x91, 0x91,
0x10C, 0x10C,
0x00, 0x00,
@ -1711,7 +1711,7 @@ static daAlink_cutHorseParamTbl const cutParamTable_19765[] = {
0x22, 0x22,
}, },
{ {
0x21, daAlink_c::FTANM_UNK_21,
0x92, 0x92,
0x10D, 0x10D,
0x00, 0x00,
@ -1719,7 +1719,7 @@ static daAlink_cutHorseParamTbl const cutParamTable_19765[] = {
0x23, 0x23,
}, },
{ {
0x22, daAlink_c::FTANM_UNK_22,
0x93, 0x93,
0x10E, 0x10E,
0x00, 0x00,
@ -1727,7 +1727,7 @@ static daAlink_cutHorseParamTbl const cutParamTable_19765[] = {
0x2A, 0x2A,
}, },
{ {
0x23, daAlink_c::FTANM_UNK_23,
0x94, 0x94,
0x10F, 0x10F,
0x00, 0x00,
@ -4511,7 +4511,7 @@ int daAlink_c::create() {
if (checkStageName("F_SP102") && fopAcM_GetRoomNo(this) == 0 && if (checkStageName("F_SP102") && fopAcM_GetRoomNo(this) == 0 &&
dComIfG_play_c::getLayerNo(0) == 4) dComIfG_play_c::getLayerNo(0) == 4)
{ {
onNoResetFlg2(FLG2_UNK_800000); onNoResetFlg2(FLG2_BOAR_SINGLE_BATTLE);
} else if (checkStageName("F_SP123") && fopAcM_GetRoomNo(this) == 13 && } else if (checkStageName("F_SP123") && fopAcM_GetRoomNo(this) == 13 &&
dComIfG_play_c::getLayerNo(0) == 0) dComIfG_play_c::getLayerNo(0) == 0)
{ {

View File

@ -571,7 +571,7 @@ const daAlinkHIO_cutTurn_c1 daAlinkHIO_cutTurn_c0::m = {
/* 8038DC1C-8038DC3C 01A27C 0020+00 0/1 0/0 0/0 .rodata m__21daAlinkHIO_hoCutLA_c0 */ /* 8038DC1C-8038DC3C 01A27C 0020+00 0/1 0/0 0/0 .rodata m__21daAlinkHIO_hoCutLA_c0 */
#pragma push #pragma push
#pragma force_active on #pragma force_active on
const daAlinkHIO_hoCutLA_c1 daAlinkHIO_hoCutLA_c0::m = { const daAlinkHIO_hoCut_c1 daAlinkHIO_hoCutLA_c0::m = {
{ {
21, 21,
0.9f, 0.9f,
@ -588,7 +588,7 @@ const daAlinkHIO_hoCutLA_c1 daAlinkHIO_hoCutLA_c0::m = {
/* 8038DC3C-8038DC5C 01A29C 0020+00 0/1 0/0 0/0 .rodata m__21daAlinkHIO_hoCutLB_c0 */ /* 8038DC3C-8038DC5C 01A29C 0020+00 0/1 0/0 0/0 .rodata m__21daAlinkHIO_hoCutLB_c0 */
#pragma push #pragma push
#pragma force_active on #pragma force_active on
const daAlinkHIO_hoCutLB_c1 daAlinkHIO_hoCutLB_c0::m = { const daAlinkHIO_hoCut_c1 daAlinkHIO_hoCutLB_c0::m = {
{ {
24, 24,
0.9f, 0.9f,
@ -605,7 +605,7 @@ const daAlinkHIO_hoCutLB_c1 daAlinkHIO_hoCutLB_c0::m = {
/* 8038DC5C-8038DC7C 01A2BC 0020+00 0/1 0/0 0/0 .rodata m__21daAlinkHIO_hoCutRA_c0 */ /* 8038DC5C-8038DC7C 01A2BC 0020+00 0/1 0/0 0/0 .rodata m__21daAlinkHIO_hoCutRA_c0 */
#pragma push #pragma push
#pragma force_active on #pragma force_active on
const daAlinkHIO_hoCutRA_c1 daAlinkHIO_hoCutRA_c0::m = { const daAlinkHIO_hoCut_c1 daAlinkHIO_hoCutRA_c0::m = {
{ {
24, 24,
0.95f, 0.95f,
@ -622,7 +622,7 @@ const daAlinkHIO_hoCutRA_c1 daAlinkHIO_hoCutRA_c0::m = {
/* 8038DC7C-8038DC9C 01A2DC 0020+00 0/1 0/0 0/0 .rodata m__21daAlinkHIO_hoCutRB_c0 */ /* 8038DC7C-8038DC9C 01A2DC 0020+00 0/1 0/0 0/0 .rodata m__21daAlinkHIO_hoCutRB_c0 */
#pragma push #pragma push
#pragma force_active on #pragma force_active on
const daAlinkHIO_hoCutRB_c1 daAlinkHIO_hoCutRB_c0::m = { const daAlinkHIO_hoCut_c1 daAlinkHIO_hoCutRB_c0::m = {
{ {
11, 11,
0.9f, 0.9f,

File diff suppressed because it is too large Load Diff

View File

@ -6,6 +6,8 @@
#include "JSystem/J3DGraphBase/J3DDrawBuffer.h" #include "JSystem/J3DGraphBase/J3DDrawBuffer.h"
#include "d/actor/d_a_alink.h" #include "d/actor/d_a_alink.h"
#include "d/actor/d_a_canoe.h" #include "d/actor/d_a_canoe.h"
#include "d/actor/d_a_tag_mstop.h"
#include "d/actor/d_a_tag_mhint.h"
/* 800C2DDC-800C2EAC 0BD71C 00D0+00 17/17 0/0 0/0 .text /* 800C2DDC-800C2EAC 0BD71C 00D0+00 17/17 0/0 0/0 .text
* procPreActionUnequipInit__9daAlink_cFiP10fopAc_ac_c */ * procPreActionUnequipInit__9daAlink_cFiP10fopAc_ac_c */
@ -247,7 +249,6 @@ int daAlink_c::procWait() {
return 1; return 1;
} }
/* 800C36CC-800C3730 0BE00C 0064+00 3/3 0/0 0/0 .text procMoveInit__9daAlink_cFv */ /* 800C36CC-800C3730 0BE00C 0064+00 3/3 0/0 0/0 .text procMoveInit__9daAlink_cFv */
int daAlink_c::procMoveInit() { int daAlink_c::procMoveInit() {
if (!commonProcInitNotSameProc(PROC_MOVE)) { if (!commonProcInitNotSameProc(PROC_MOVE)) {
@ -706,7 +707,6 @@ int daAlink_c::procSlide() {
return 1; return 1;
} }
/* 800C47AC-800C4894 0BF0EC 00E8+00 1/1 0/0 0/0 .text procSlideLandInit__9daAlink_cFi */ /* 800C47AC-800C4894 0BF0EC 00E8+00 1/1 0/0 0/0 .text procSlideLandInit__9daAlink_cFi */
int daAlink_c::procSlideLandInit(int param_0) { int daAlink_c::procSlideLandInit(int param_0) {
commonProcInit(PROC_SLIDE_LAND); commonProcInit(PROC_SLIDE_LAND);
@ -906,7 +906,6 @@ int daAlink_c::procFrontRoll() {
return 1; return 1;
} }
/* 800C4F14-800C4FFC 0BF854 00E8+00 1/1 0/0 0/0 .text procFrontRollCrashInit__9daAlink_cFv */ /* 800C4F14-800C4FFC 0BF854 00E8+00 1/1 0/0 0/0 .text procFrontRollCrashInit__9daAlink_cFv */
int daAlink_c::procFrontRollCrashInit() { int daAlink_c::procFrontRollCrashInit() {
commonProcInit(PROC_FRONT_ROLL_CRASH); commonProcInit(PROC_FRONT_ROLL_CRASH);
@ -1116,7 +1115,6 @@ int daAlink_c::procSideRoll() {
return 1; return 1;
} }
/* 800C5700-800C57A4 0C0040 00A4+00 2/2 0/0 0/0 .text backJumpSpeedDec__9daAlink_cFv */ /* 800C5700-800C57A4 0C0040 00A4+00 2/2 0/0 0/0 .text backJumpSpeedDec__9daAlink_cFv */
void daAlink_c::backJumpSpeedDec() { void daAlink_c::backJumpSpeedDec() {
if (mLinkAcch.ChkGroundHit()) { if (mLinkAcch.ChkGroundHit()) {
@ -1316,7 +1314,6 @@ int daAlink_c::procSlip() {
return 1; return 1;
} }
// TODO: Move / setup later // TODO: Move / setup later
class ni_class : public fopAc_ac_c { class ni_class : public fopAc_ac_c {
public: public:
@ -1431,8 +1428,6 @@ int daAlink_c::procAutoJumpInit(int param_0) {
return 1; return 1;
} }
/* ############################################################################################## */
/* 800C61EC-800C66DC 0C0B2C 04F0+00 1/0 0/0 0/0 .text procAutoJump__9daAlink_cFv */ /* 800C61EC-800C66DC 0C0B2C 04F0+00 1/0 0/0 0/0 .text procAutoJump__9daAlink_cFv */
int daAlink_c::procAutoJump() { int daAlink_c::procAutoJump() {
int direction = getDirectionFromCurrentAngle(); int direction = getDirectionFromCurrentAngle();
@ -1562,7 +1557,6 @@ int daAlink_c::procAutoJump() {
return 1; return 1;
} }
/* 800C66DC-800C6798 0C101C 00BC+00 1/1 0/0 0/0 .text procDiveJumpInit__9daAlink_cFv */ /* 800C66DC-800C6798 0C101C 00BC+00 1/1 0/0 0/0 .text procDiveJumpInit__9daAlink_cFv */
int daAlink_c::procDiveJumpInit() { int daAlink_c::procDiveJumpInit() {
commonProcInit(PROC_DIVE_JUMP); commonProcInit(PROC_DIVE_JUMP);
@ -1743,7 +1737,6 @@ int daAlink_c::procFallInit(int param_0, f32 param_1) {
return 1; return 1;
} }
/* 800C6D20-800C6F18 0C1660 01F8+00 1/0 0/0 0/0 .text procFall__9daAlink_cFv */ /* 800C6D20-800C6F18 0C1660 01F8+00 1/0 0/0 0/0 .text procFall__9daAlink_cFv */
int daAlink_c::procFall() { int daAlink_c::procFall() {
if (mProcVar5.field_0x3012 == 0) { if (mProcVar5.field_0x3012 == 0) {
@ -1897,7 +1890,6 @@ int daAlink_c::procSmallJumpInit(int param_0) {
return 1; return 1;
} }
/* 800C72D4-800C74D4 0C1C14 0200+00 1/0 0/0 0/0 .text procSmallJump__9daAlink_cFv */ /* 800C72D4-800C74D4 0C1C14 0200+00 1/0 0/0 0/0 .text procSmallJump__9daAlink_cFv */
// NONMATCHING - one out of order block with sqrt // NONMATCHING - one out of order block with sqrt
int daAlink_c::procSmallJump() { int daAlink_c::procSmallJump() {
@ -2139,7 +2131,6 @@ int daAlink_c::procCoMetamorphoseInit() {
return 1; return 1;
} }
/* 800C7C64-800C82E8 0C25A4 0684+00 1/0 0/0 0/0 .text procCoMetamorphose__9daAlink_cFv */ /* 800C7C64-800C82E8 0C25A4 0684+00 1/0 0/0 0/0 .text procCoMetamorphose__9daAlink_cFv */
int daAlink_c::procCoMetamorphose() { int daAlink_c::procCoMetamorphose() {
if (mProcVar1.field_0x300a != 0) { if (mProcVar1.field_0x300a != 0) {
@ -2389,8 +2380,35 @@ int daAlink_c::procGoronRideWaitInit(fopAc_ac_c* param_0) {
/* 800C85D8-800C8700 0C2F18 0128+00 1/0 0/0 0/0 .text procGoronRideWait__9daAlink_cFv */ /* 800C85D8-800C8700 0C2F18 0128+00 1/0 0/0 0/0 .text procGoronRideWait__9daAlink_cFv */
int daAlink_c::procGoronRideWait() { int daAlink_c::procGoronRideWait() {
// NONMATCHING if (!checkGoronRide()) {
return 0; checkNextAction(0);
} else {
if (checkInputOnR()) {
cLib_addCalcAngleS(&shape_angle.y, field_0x2fe2, 2, 500, 100);
}
s16 temp_r0 = shape_angle.y - current.angle.y;
daAlink_ANM var_r28;
if (temp_r0 > 0) {
var_r28 = ANM_STEP_TURN;
} else if (temp_r0 < 0) {
var_r28 = ANM_SMALL_GUARD;
} else {
var_r28 = ANM_WAIT;
}
f32 var_f31 = 0.8f + (0.002f * abs(temp_r0));
if (var_f31 > 1.0f) {
var_f31 = 1.0f;
}
var_f31 = 1.0f - var_f31;
setDoubleAnime(var_f31, daAlinkHIO_basic_c0::m.mWaitTurnSpeed, daAlinkHIO_move_c0::m.mWaitAnmSpeed, var_r28, ANM_WAIT, 2, -1.0f);
current.angle.y = shape_angle.y;
}
return 1;
} }
/* 800C8700-800CAFA8 0C3040 28A8+00 1/1 0/0 0/0 .text execute__9daAlink_cFv */ /* 800C8700-800CAFA8 0C3040 28A8+00 1/1 0/0 0/0 .text execute__9daAlink_cFv */
@ -3391,7 +3409,124 @@ static int daAlink_Execute(daAlink_c* i_this) {
/* 800CAFC8-800CB480 0C5908 04B8+00 2/2 0/0 0/0 .text setDrawHand__9daAlink_cFv */ /* 800CAFC8-800CB480 0C5908 04B8+00 2/2 0/0 0/0 .text setDrawHand__9daAlink_cFv */
void daAlink_c::setDrawHand() { void daAlink_c::setDrawHand() {
// NONMATCHING field_0x06d0->hide();
field_0x06d4->hide();
u8 var_r30;
u8 var_r29;
if (checkNoResetFlg2(FLG2_STATUS_WINDOW_DRAW)) {
if (i_checkSwordGet()) {
var_r30 = 0;
} else {
var_r30 = 0xFE;
}
if (i_checkShieldGet()) {
var_r29 = 6;
} else {
var_r29 = 0xFE;
}
} else if (mProcID == PROC_TOOL_DEMO) {
var_r30 = field_0x2f92;
var_r29 = field_0x2f93;
} else {
if (field_0x2f92 == 0x64) {
if (mProcID == PROC_BOSS_BODY_HANG || mProcID == PROC_MASTER_SWORD_PULL || (mProcID == PROC_CUT_DOWN_LAND && mProcVar2.field_0x300c != 0)) {
var_r30 = mProcVar4.field_0x3010;
} else if (checkUnderMove0BckNoArc(ANM_RIDE_CUT_TURN_CHARGE) && mUnderFrameCtrl[0].getFrame() < 6.0f) {
var_r30 = 0;
} else {
var_r30 = 2;
}
} else if (field_0x2f96 != 0xFF && (!checkNoResetFlg1(FLG1_UNK_100000) || field_0x2f94 == 0xFF)) {
var_r30 = field_0x2f96;
} else if (field_0x2f94 != 0xFF) {
if (field_0x2f94 == 0x67) {
if (checkBowGrabLeftHand()) {
var_r30 = 0;
} else {
var_r30 = field_0x2f92;
}
} else if (field_0x2f94 == 0x65) {
if (mUpperAnmHeap[0].getIdx() == 0xC7) {
var_r30 = 0;
} else if (mItemVar0.field_0x3018 == 1) {
var_r30 = 4;
} else {
var_r30 = 2;
}
} else if (field_0x2f94 == 0 && mProcID == PROC_SWORD_UNEQUIP_SP) {
var_r30 = field_0x2f92;
} else if (field_0x2f94 == 0 && mEquipItem == 0x103 && (checkHorseRide() || checkUnderMove0BckNoArc(ANM_SWIM_DIE))) {
var_r30 = 2;
} else {
var_r30 = field_0x2f94;
}
} else {
var_r30 = field_0x2f92;
}
if ((mCutType == CUT_TYPE_FINISH_STAB || mCutType == CUT_TYPE_DOWN) && mProcID != PROC_BOSS_BODY_HANG) {
var_r29 = 5;
} else if (field_0x2f97 != 0xFF && (!checkNoResetFlg1(FLG1_UNK_100000) || (field_0x2f95 == 0xFF && field_0x2e44.checkPassNum(0xF)))) {
var_r29 = field_0x2f97;
} else if (field_0x2f95 != 0xFF) {
if (field_0x2f95 == 0x65) {
if (mItemVar0.field_0x3018 == 1) {
var_r29 = 5;
} else {
var_r29 = field_0x2f93;
}
} else {
var_r29 = field_0x2f95;
}
} else if (!field_0x2e44.checkPassNum(0xF)) {
var_r29 = 6;
} else {
var_r29 = field_0x2f93;
}
}
mpLinkHandModel->setBaseTRMtx(mpLinkModel->getBaseTRMtx());
mpLinkHandModel->calc();
if (var_r30 == 0xFE || var_r30 == 0xFB) {
field_0x06d0 = field_0x06d8;
} else {
field_0x06d0 = mpLinkHandModel->getModelData()->getMaterialNodePointer(var_r30)->getShape();
mpLinkHandModel->setAnmMtx(1, mpLinkModel->getAnmMtx(9));
}
if (var_r30 == 0xFB) {
mpDemoHLTmpModel->setBaseTRMtx(mpLinkModel->getAnmMtx(9));
if (mpDemoHLTmpBck != NULL) {
mpDemoHLTmpBck->entry(mpDemoHLTmpModel->getModelData());
}
mpDemoHLTmpModel->calc();
field_0x06d0->hide();
} else {
field_0x06d0->show();
}
if (var_r29 == 0xFE || var_r29 == 0xFB) {
field_0x06d4 = field_0x06dc;
} else {
field_0x06d4 = mpLinkHandModel->getModelData()->getMaterialNodePointer(var_r29)->getShape();
mpLinkHandModel->setAnmMtx(2, mpLinkModel->getAnmMtx(0xE));
}
if (var_r29 == 0xFB) {
mpDemoHRTmpModel->setBaseTRMtx(mpLinkModel->getAnmMtx(0xE));
if (mpDemoHRTmpBck != NULL) {
mpDemoHRTmpBck->entry(mpDemoHRTmpModel->getModelData());
}
mpDemoHRTmpModel->calc();
field_0x06d4->hide();
} else {
field_0x06d4->show();
}
} }
/* 800CB480-800CB53C 0C5DC0 00BC+00 3/3 0/0 0/0 .text checkSwordDraw__9daAlink_cFv */ /* 800CB480-800CB53C 0C5DC0 00BC+00 3/3 0/0 0/0 .text checkSwordDraw__9daAlink_cFv */
@ -3422,15 +3557,122 @@ bool daAlink_c::checkItemDraw() {
/* 800CB694-800CBA38 0C5FD4 03A4+00 0/0 0/0 1/1 .text initShadowScaleLight__9daAlink_cFv /* 800CB694-800CBA38 0C5FD4 03A4+00 0/0 0/0 1/1 .text initShadowScaleLight__9daAlink_cFv
*/ */
void daAlink_c::initShadowScaleLight() { // NONMATCHING - float stuff
// NONMATCHING int daAlink_c::initShadowScaleLight() {
dKy_shadow_mode_set(4);
if (checkWolf()) {
f32 temp_f26 = 0.5f * field_0x850[0].GetH();
field_0x850[0].GetC();
}
cXyz sp20(tevStr.mLightPosWorld.x - field_0x3834.x, tevStr.mLightPosWorld.y - field_0x3454, tevStr.mLightPosWorld.z - field_0x3834.z);
field_0x2ff6 = sp20.atan2sX_Z();
fopAc_ac_c* temp_r29 = fopAcM_getTalkEventPartner(this);
f32 var_f30;
if (dComIfGp_checkPlayerStatus0(0, 0x100000)) {
var_f30 = 0.0f;
} else {
var_f30 = 150.0f;
}
BOOL var_r28;
f32 var_f31;
if (temp_r29 != NULL && ((fopAcM_GetName(temp_r29) == PROC_Tag_Mhint && !((daTagMhint_c*)temp_r29)->checkNoAttention()) || (fopAcM_GetName(temp_r29) == PROC_Tag_Mstop && !((daTagMstop_c*)temp_r29)->checkNoAttention()))) {
field_0x2ff8 = cLib_targetAngleY(&temp_r29->eyePos, &current.pos);
var_r28 = 1;
} else {
field_0x2ff8 = shape_angle.y + 0x8000;
if (checkWolf()) {
var_f31 = 200.0f;
} else {
var_f31 = 120.0f;
}
cXyz sp14(current.pos.x, current.pos.y + var_f30, current.pos.z);
cXyz sp8(sp14.x + ((30.0f + var_f31) * cM_ssin(shape_angle.y)), sp14.y, sp14.z + ((30.0f + var_f31) * cM_scos(shape_angle.y)));
if (fopAcM_lc_c::lineCheck(&sp14, &sp8, this)) {
var_r28 = 1;
} else {
var_r28 = 0;
}
}
field_0x2ffa = field_0x2ff8 + 0x8000;
field_0x2ff4 = cM_atan2s(sp20.y, sp20.absXZ());
offNoResetFlg2(FLG2_UNK_800);
field_0x2ffc = 0;
field_0x375c.y = current.pos.y + var_f30;
f32 temp_f29 = cM_ssin(field_0x2ff8);
f32 temp_f28 = cM_scos(field_0x2ff8);
if (var_r28 == 0) {
field_0x375c.x = current.pos.x - (var_f31 * temp_f29);
field_0x375c.z = current.pos.z - (var_f31 * temp_f28);
} else {
field_0x375c.x = (current.pos.x - (temp_f29 * -30.0f)) - (temp_f28 * 65.0f);
field_0x375c.z = (current.pos.z - (temp_f28 * -30.0f)) + (temp_f29 * 65.0f);
}
if (checkReinRide()) {
var_r28 = 1;
}
return var_r28;
} }
/* ############################################################################################## */
/* 800CBA38-800CBC18 0C6378 01E0+00 0/0 0/0 1/1 .text moveShadowScaleLight__9daAlink_cFv /* 800CBA38-800CBC18 0C6378 01E0+00 0/0 0/0 1/1 .text moveShadowScaleLight__9daAlink_cFv
*/ */
void daAlink_c::moveShadowScaleLight() { int daAlink_c::moveShadowScaleLight() {
// NONMATCHING int var_r29 = 0;
if (field_0x2ff8 != field_0x2ffa) {
s16 temp_r0 = field_0x2ff6 - field_0x2ff8;
if (abs(temp_r0) < 0x4000) {
if (temp_r0 >= 0) {
field_0x2ff8 -= 0x4000;
} else {
field_0x2ff8 += 0x4000;
}
if (cLib_distanceAngleS(field_0x2ff8, field_0x2ffa) < 0x100) {
field_0x2ff8 = field_0x2ffa;
}
}
} else if (cLib_distanceAngleS(field_0x2ff8, field_0x2ff6) < 0x1600) {
onNoResetFlg2(FLG2_UNK_800);
}
if (cLib_addCalcAngleS(&field_0x2ff6, field_0x2ff8, 4, 0x1800, 0x200) == 0) {
if (cLib_chaseS(&field_0x2ff4, 0x4000, 0x650)) {
dKy_shadow_mode_reset(4);
tevStr.field_0x344 = 1.0f;
} else {
tevStr.field_0x344 = 2.0f;
}
if (field_0x2ff4 > 0x3000) {
var_r29 = 1;
}
} else {
if (!checkNoResetFlg2(FLG2_UNK_800)) {
cLib_chaseS(&field_0x2ff4, 0x2600, 0x800);
} else {
cLib_chaseS(&field_0x2ffc, 0x800, 0x100);
cLib_chaseS(&field_0x2ff4, 0, field_0x2ffc);
}
cLib_chaseF(&tevStr.field_0x344, 2.0f, 0.1f);
}
f32 temp_f31 = 50000.0f * cM_scos(field_0x2ff4);
tevStr.mLightPosWorld.set(field_0x3834.x + (temp_f31 * cM_ssin(field_0x2ff6)), field_0x3454 + (50000.0f * cM_ssin(field_0x2ff4)), field_0x3834.z + (temp_f31 * cM_scos(field_0x2ff6)));
return var_r29;
} }
/* 800CBC18-800CC25C 0C6558 0644+00 1/1 0/0 0/0 .text shadowDraw__9daAlink_cFv */ /* 800CBC18-800CC25C 0C6558 0644+00 1/1 0/0 0/0 .text shadowDraw__9daAlink_cFv */
@ -3869,7 +4111,6 @@ int daAlink_c::draw() {
return 1; return 1;
} }
/* 800CD78C-800CD7AC 0C80CC 0020+00 1/0 0/0 0/0 .text daAlink_Draw__FP9daAlink_c */ /* 800CD78C-800CD7AC 0C80CC 0020+00 1/0 0/0 0/0 .text daAlink_Draw__FP9daAlink_c */
static int daAlink_Draw(daAlink_c* i_this) { static int daAlink_Draw(daAlink_c* i_this) {
return i_this->draw(); return i_this->draw();
@ -3912,7 +4153,6 @@ daAlink_c::~daAlink_c() {
dComIfGp_setLinkPlayer(NULL); dComIfGp_setLinkPlayer(NULL);
} }
/* 800CE208-800CE294 0C8B48 008C+00 1/0 0/0 0/0 .text daAlink_Delete__FP9daAlink_c */ /* 800CE208-800CE294 0C8B48 008C+00 1/0 0/0 0/0 .text daAlink_Delete__FP9daAlink_c */
static int daAlink_Delete(daAlink_c* i_this) { static int daAlink_Delete(daAlink_c* i_this) {
if (i_this->getClothesChangeWaitTimer() != 0) { if (i_this->getClothesChangeWaitTimer() != 0) {
@ -4243,7 +4483,6 @@ daAlink_c::daAlink_c()
: mAnmHeap3(0), mAnmHeap4(0), mFaceBtpHeap(0x800), mFaceBtkHeap(0x400), mFaceBckHeap(0xC00), : mAnmHeap3(0), mAnmHeap4(0), mFaceBtpHeap(0x800), mFaceBtkHeap(0x400), mFaceBckHeap(0xC00),
mAnmHeap9(0x800) {} mAnmHeap9(0x800) {}
/* 800CFC3C-800CFC78 0CA57C 003C+00 2/2 0/0 0/0 .text __dt__Q29daAlink_c14firePointEff_cFv */ /* 800CFC3C-800CFC78 0CA57C 003C+00 2/2 0/0 0/0 .text __dt__Q29daAlink_c14firePointEff_cFv */
daAlink_c::firePointEff_c::~firePointEff_c() {} daAlink_c::firePointEff_c::~firePointEff_c() {}