summaryrefslogtreecommitdiff
path: root/src/d
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2025-01-09 05:45:46 -0800
committerGitHub <noreply@github.com>2025-01-09 15:45:46 +0200
commit36daa2588496eb4d84220274c82ea85b0723619f (patch)
tree6964d23efdf3b1b6ceda28b05df8a8a9f643446f /src/d
parent0cdacf4bff5d77cb4835fbf0e65270dd21896ac7 (diff)
d_a_horse mostly done (#2284)
* checkpoint * d_a_horse mostly done * some horse doc
Diffstat (limited to 'src/d')
-rw-r--r--src/d/actor/d_a_alink.cpp14
-rw-r--r--src/d/actor/d_a_alink_boom.inc4
-rw-r--r--src/d/actor/d_a_alink_bottle.inc6
-rw-r--r--src/d/actor/d_a_alink_bow.inc2
-rw-r--r--src/d/actor/d_a_alink_copyrod.inc6
-rw-r--r--src/d/actor/d_a_alink_crawl.inc10
-rw-r--r--src/d/actor/d_a_alink_cut.inc20
-rw-r--r--src/d/actor/d_a_alink_damage.inc30
-rw-r--r--src/d/actor/d_a_alink_grab.inc22
-rw-r--r--src/d/actor/d_a_alink_guard.inc6
-rw-r--r--src/d/actor/d_a_alink_hang.inc24
-rw-r--r--src/d/actor/d_a_alink_hook.inc4
-rw-r--r--src/d/actor/d_a_alink_horse.inc4
-rw-r--r--src/d/actor/d_a_alink_hvyboots.inc2
-rw-r--r--src/d/actor/d_a_alink_ironball.inc2
-rw-r--r--src/d/actor/d_a_alink_kandelaar.inc4
-rw-r--r--src/d/actor/d_a_alink_link.inc26
-rw-r--r--src/d/actor/d_a_alink_swim.inc12
-rw-r--r--src/d/actor/d_a_alink_wolf.inc92
-rw-r--r--src/d/actor/d_a_cow.cpp2
-rw-r--r--src/d/actor/d_a_horse.cpp6593
21 files changed, 4329 insertions, 2556 deletions
diff --git a/src/d/actor/d_a_alink.cpp b/src/d/actor/d_a_alink.cpp
index 05707963b6..b20962d769 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 a896076cce..33f8daedcf 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 da5d305187..9d435ed89f 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 8a12168bc1..dfbe8befad 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 bb68ec4317..5558eb3a95 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 d897b2a971..11fc7fe458 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 73ba33e0fb..ba2d349271 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 2ff72f0f56..fa0d6280b0 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 e74f1ae9de..1d0db5abd5 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 c549fd068b..4f3c6f9a01 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 1483d4cf50..baccdc8331 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 7e1600e9bf..550f3a0ebb 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 908b6c0d76..48687f7394 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 4d50830a3a..625f989730 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 7551872a8a..b27678de21 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 451f5aacc8..c326735e1f 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 bc5a17b03b..ec69ecda45 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 b383a21870..4daa835e47 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 dd45d17cad..96af3f657c 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 a2bb0bd723..488ae2dd39 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 6feb755a8a..e8786d0027 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"
-
-//
-// Forward References:
-//
-
-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:
-//
-
-/* ############################################################################################## */
+#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 <cmath.h>
+
+#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
+
/* 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++;
+
+ 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);
-/* 8083836C-808383A8 00052C 003C+00 7/7 0/0 0/0 .text __dt__4cXyzFv */
-// cXyz::~cXyz() {
-extern "C" void __dt__4cXyzFv() {
- // NONMATCHING
+ 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
-}
-
-/* ############################################################################################## */
-/* 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,
-};
+ field_0x8[0] = param_0 + 1;
+ field_0x0[1][param_0] = cXyz::Zero;
-/* 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
+ 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);
+ }
+}
+
+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,2175 +248,4324 @@ 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
-
-/* 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
-
-/* 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
-
-/* 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
-
-/* 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
-
-/* 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
-
-/* 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
-
-/* 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,
-};
-
-/* 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,
-};
-
-/* 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,
-};
-
-/* 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,
-};
-
-/* 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,
-};
-
-/* 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,
-};
-
-/* 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,
-};
-
-/* 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,
-};
-
-/* 80845A30-80845A34 00015C 0004+00 1/1 0/0 0/0 .data reinLineColor$10541 */
-SECTION_DATA static u8 reinLineColor[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0xFF,
-};
-
-/* 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,
- 0,
- (process_method_func)daHorse_Draw__FP9daHorse_c,
-};
-
-/* 80845A54-80845A84 -00001 0030+00 0/0 0/0 1/0 .data g_profile_HORSE */
-extern actor_process_profile_definition g_profile_HORSE = {
- fpcLy_CURRENT_e, // mLayerID
- 4, // mListID
- fpcPi_CURRENT_e, // mListPrio
- PROC_HORSE, // mProcName
- &g_fpcLf_Method.base, // sub_method
- sizeof(daHorse_c), // mSize
- 0, // mSizeOther
- 0, // mParameters
- &g_fopAc_Method.base, // sub_method
- 90, // mPriority
- &l_daHorse_Method, // sub_method
- 0x00060000, // mStatus
- fopAc_UNK_GROUP_5_e, // mActorType
- 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
+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;
+
+ cXyz start(current.pos);
+ cXyz end(start.x + (jump_chk_dist * sin_y), start.y, start.z + (jump_chk_dist * cos_y));
+
+ 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);
+
+ if (dComIfG_Bgsp().LineCross(&m_linechk)) {
+ cM3dGPla plane;
+ dComIfG_Bgsp().GetTriPla(m_linechk, &plane);
+
+ if (cBgW_CheckBWall(plane.mNormal.y)) {
+ break;
+ }
+ }
+ }
+
+ 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);
+
+ if (!fopAcM_gc_c::gndCheck(&chk_pos) || fopAcM_gc_c::getHorseNoEntry()) {
+ break;
+ }
+
+ jump_chk_dist -= 25.0f;
+ }
+ }
+
+ 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);
+ }
+ }
}
/* 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
+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;
+ }
+ }
+
+ 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);
+ }
+ }
}
/* 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
+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();
+
+ 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;
+ }
+
+ m_cowHit = 5;
+ }
+ } else if (fopAcM_GetName(i_hitActor) == PROC_ALINK) {
+ if (daAlink_getAlinkActorClass()->checkSlideMode()) {
+ onEndResetStateFlg0(ERFLG0_UNK_800);
+ }
+ }
}
/* 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
+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);
}
/* 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
+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* param_0, dCcD_GObjInf* param_1,
- fopAc_ac_c* param_2, dCcD_GObjInf* param_3) {
- // NONMATCHING
+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* param_0, void* param_1) {
- // NONMATCHING
+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 */
-void daHorse_c::modelCallBack(int param_0) {
- // NONMATCHING
+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 void daHorse_modelCallBack(J3DJoint* param_0, int param_1) {
- // NONMATCHING
-}
+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();
-/* 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
-}
+ if (param_1 == 0) {
+ a_this->modelCallBack(jnt_no);
+ }
-/* 808392D8-808392DC 001498 0004+00 1/1 0/0 0/0 .text __ct__4cXyzFv */
-// cXyz::cXyz()
-extern "C" void __ct__4cXyzFv() {
- /* empty function */
+ return 1;
}
-/* 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
-}
+/* 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;
+ }
-/* 80839348-808393A4 001508 005C+00 1/0 0/0 0/0 .text __dt__19J3DMtxCalcNoAnmBaseFv */
-// J3DMtxCalcNoAnmBase::~J3DMtxCalcNoAnmBase() {
-extern "C" void __dt__19J3DMtxCalcNoAnmBaseFv() {
- // NONMATCHING
+ return NULL;
}
-/* 808393A4-808393EC 001564 0048+00 1/0 0/0 0/0 .text __dt__10J3DMtxCalcFv */
-// J3DMtxCalc::~J3DMtxCalc() {
-extern "C" void __dt__10J3DMtxCalcFv() {
- // NONMATCHING
+/* 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 void daHorse_createHeap(fopAc_ac_c* param_0) {
- // NONMATCHING
+static int daHorse_createHeap(fopAc_ac_c* i_this) {
+ return ((daHorse_c*)i_this)->createHeap();
}
-/* ############################################################################################## */
-/* 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
+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 */
-void daHorse_c::create() {
- // NONMATCHING
+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(&current.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 void daHorse_Create(fopAc_ac_c* param_0) {
- // NONMATCHING
+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) {
- // NONMATCHING
+ 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() {
- // NONMATCHING
+ field_0x16f6 = 0xFFFF;
+ field_0x1144 = NULL;
}
-/* ############################################################################################## */
-/* 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
+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 */
-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
+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() {
- // NONMATCHING
+ 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++;
+ }
}
-/* ############################################################################################## */
-/* 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
+int daHorse_c::checkDemoAction() {
+ if (checkStateFlg0(FLG0_CALL_HORSE)) {
+ setStickCallMove();
+ offStateFlg0(FLG0_CALL_HORSE);
+ onStateFlg0(FLG0_UNK_10000000);
+
+ shape_angle.y = cLib_targetAngleY(&current.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;
}
-/* ############################################################################################## */
-/* 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
+ 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() {
- // NONMATCHING
-}
+ m_padStickValue = 1.0f;
-/* ############################################################################################## */
-/* 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
+ u32 mode = 3;
+ setDemoMoveData(&mode, &daAlink_getAlinkActorClass()->current.pos);
+ m_padStickAngleY = m_demoMoveAngle;
-/* 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
+ 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* 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
+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() {
- // NONMATCHING
+ 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 = &current.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() {
- // NONMATCHING
+ 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() {
- // NONMATCHING
+ 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() {
- /* empty function */
-}
+void daHorse_c::setTurnStartVibration() {}
/* 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
+void daHorse_c::setTurnVibration() {}
/* 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
+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 */
-void daHorse_c::checkHorseNoMove(int param_0) {
- // NONMATCHING
+// 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
*/
-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
+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 */
-void daHorse_c::setSpeedAndAngle() {
- // NONMATCHING
+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(&current.angle.y, 0, 2, 0x2000, 0x100);
+ } else {
+ cLib_addCalcAngleS(&current.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(&current.angle.y, m_padStickAngleY + 0x8000, 5, field_0x16c2, daHorse_hio_c0::m.min_turn);
+ } else {
+ cLib_addCalcAngleS(&current.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(&current.angle.y, m_padStickAngleY, 5, field_0x16c2 * var_f28, daHorse_hio_c0::m.min_turn * var_f28);
+ }
+ } else {
+ cLib_addCalcAngleS(&current.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(&current.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(&current.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 */
-void daHorse_c::checkWaitTurn() const {
- // NONMATCHING
+BOOL daHorse_c::checkWaitTurn() const {
+ return m_procID == PROC_WAIT_e && shape_angle.y != field_0x16e8;
}
-/* ############################################################################################## */
-/* 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
+ 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);
+ }
+}
-/* 80845C04-80845C10 000054 000C+00 1/2 0/0 0/0 .bss l_frontFootOffset */
-static u8 l_frontFootOffset[12];
+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)
-/* 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
+/* 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 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
+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() {
- // 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
+ 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() {
- // NONMATCHING
+ 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);
+ }
}
-/* ############################################################################################## */
-/* 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
+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() {
- // NONMATCHING
+ 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,
+ &current.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,
+ &current.angle,
+ NULL,
+ fopAcM_GetRoomNo(this),
+ 1.0f,
+ speedF);
+ } else {
+ field_0x17dc.setEffectFour(&tevStr,
+ &current.pos,
+ sp44,
+ sp40,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ &current.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);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
-/* ############################################################################################## */
-/* 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
+ 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, &center);
+ 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() {
- // NONMATCHING
+ 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() {
- // NONMATCHING
+ 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;
+ }
+ }
+ }
}
-/* ############################################################################################## */
-/* 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
+ 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() {
- // NONMATCHING
+ 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 */
-void daHorse_c::setFootMatrix() {
- // NONMATCHING
+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;
}
-/* ############################################################################################## */
-/* 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
+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() {
- // 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
+ 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) {
- // NONMATCHING
+ 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() {
- // NONMATCHING
+ 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];
+ }
}
-/* ############################################################################################## */
-/* 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
+ 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() {
- // 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
+ 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() {
- // NONMATCHING
+ 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 */
-void daHorse_c::checkSpecialWallHitSubstance(cXyz const& param_0) const {
- // NONMATCHING
+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() {
- // NONMATCHING
+ m_serviceWaitTimer = cM_rndF(80.0f) + 150.0f;
}
/* 80840800-80840844 0089C0 0044+00 2/2 0/0 0/0 .text checkServiceWaitAnime__9daHorse_cFv
*/
-void daHorse_c::checkServiceWaitAnime() {
- // NONMATCHING
+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;
}
-/* ############################################################################################## */
-/* 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
+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 */
-void daHorse_c::checkTgHitTurn() {
- // NONMATCHING
+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 */
-void daHorse_c::checkTurnAfterFastMove(f32 param_0) {
- // NONMATCHING
+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() {
- // NONMATCHING
+ 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 param_0, f32 param_1, f32 param_2, s16 param_3) {
- // NONMATCHING
+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() {
- // NONMATCHING
+ 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() {
- // NONMATCHING
+ 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() {
- // NONMATCHING
+ 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) {
- // NONMATCHING
+ 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() {
- // 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
+ 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 */
-void daHorse_c::callHorseSubstance(cXyz const* param_0) {
- // NONMATCHING
+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 */
-void daHorse_c::setHorsePosAndAngleSubstance(cXyz const* param_0, s16 param_1) {
- // NONMATCHING
+// 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 */
-void daHorse_c::checkPlayerHeavy() {
- // NONMATCHING
+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 param_0, u32 param_1) {
- // NONMATCHING
+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() {
- // NONMATCHING
+ 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() {
- // NONMATCHING
+ offStateFlg0(FLG0_UNK_1);
+ setTgCoGrp(8, 0x70);
}
/* 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
+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 */
-void daHorse_c::procWait() {
- // NONMATCHING
+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 */
-void daHorse_c::procMoveInit() {
- // NONMATCHING
+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;
}
-/* ############################################################################################## */
-/* 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
+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;
}
-/* ############################################################################################## */
-/* 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
+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 */
-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
+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 */
-void daHorse_c::procTurnInit(int param_0) {
- // NONMATCHING
+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;
}
-/* ############################################################################################## */
-/* 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
+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, &current.pos);
+ current.pos.y += 300.0f;
+
+ if (fopAcM_gc_c::gndCheck(&current.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 */
-void daHorse_c::procJumpInit(int param_0) {
- // NONMATCHING
+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;
}
-/* ############################################################################################## */
-/* 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
+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 */
-void daHorse_c::procLandInit(f32 param_0, int param_1) {
- // NONMATCHING
+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 */
-void daHorse_c::procLand() {
- // NONMATCHING
+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
*/
-void daHorse_c::procLargeDamageInit() {
- // NONMATCHING
+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 */
-void daHorse_c::procLargeDamage() {
- // NONMATCHING
+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 */
-void daHorse_c::procToolDemoInit() {
- // NONMATCHING
+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 */
-void daHorse_c::procToolDemo() {
- // NONMATCHING
+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* param_0) {
- // NONMATCHING
+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* param_0, void* param_1) {
- // NONMATCHING
+static void* daHorse_searchSceneChangeArea(fopAc_ac_c* i_actor, void* i_data) {
+ dComIfGp_getHorseActor()->searchSceneChangeArea(i_actor);
+ return NULL;
}
-/* ############################################################################################## */
-/* 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
+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, &current.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 void daHorse_Execute(daHorse_c* param_0) {
- // NONMATCHING
+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 */
-void daHorse_c::draw() {
- // NONMATCHING
+int daHorse_c::draw() {
+ g_env_light.settingTevStruct(0, &current.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 void daHorse_Draw(daHorse_c* param_0) {
- // NONMATCHING
+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() {
- // 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 (&param_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
-}
+ m_sound.deleteObject();
+ dComIfG_resDelete(&m_phase, l_arcName);
-/* 80844CA8-80844CB0 00CE68 0008+00 1/0 0/0 0/0 .text @20@__dt__14dBgS_HorseAcchFv */
-static void func_80844CA8() {
- // NONMATCHING
+ if (dComIfGp_getHorseActor() == this) {
+ dComIfGp_setHorseActor(NULL);
+ }
}
-/* 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
+/* 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;
}
-/* ############################################################################################## */
-/* 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
+/* 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,
+ (process_method_func)daHorse_Delete,
+ (process_method_func)daHorse_Execute,
+ 0,
+ (process_method_func)daHorse_Draw,
+};
-/* 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
+/* 80845A54-80845A84 -00001 0030+00 0/0 0/0 1/0 .data g_profile_HORSE */
+extern actor_process_profile_definition g_profile_HORSE = {
+ fpcLy_CURRENT_e, // mLayerID
+ 4, // mListID
+ fpcPi_CURRENT_e, // mListPrio
+ PROC_HORSE, // mProcName
+ &g_fpcLf_Method.base, // sub_method
+ sizeof(daHorse_c), // mSize
+ 0, // mSizeOther
+ 0, // mParameters
+ &g_fopAc_Method.base, // sub_method
+ 90, // mPriority
+ &l_daHorse_Method, // sub_method
+ 0x00060000, // mStatus
+ fopAc_UNK_GROUP_5_e, // mActorType
+ fopAc_CULLBOX_CUSTOM_e, // cullType
+};
-/* 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;