d_a_horse mostly done (#2284)

* checkpoint

* d_a_horse mostly done

* some horse doc
This commit is contained in:
TakaRikka
2025-01-09 15:45:46 +02:00
committed by GitHub
parent 0cdacf4bff
commit 36daa25884
37 changed files with 5151 additions and 3078 deletions
+29 -2
View File
@@ -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 {
+1 -1
View File
@@ -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);
File diff suppressed because it is too large Load Diff
+3
View File
@@ -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;
+3 -2
View File
@@ -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); }
+10
View File
@@ -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;
+6
View File
@@ -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;
+9
View File
@@ -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 */
+24
View File
@@ -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();
}
+5
View File
@@ -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();
+8 -2
View File
@@ -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; }