mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-06-16 13:59:39 -04:00
alink_grab done (#2234)
* work on alink grab * some grab work * grab almost done * finish alink grab * alink_wolf mostly done * fix cLib_minMaxLimit * alink guard mostly done * extract some embedded assets * extract grass data. wip, alignment wrong
This commit is contained in:
@@ -483,11 +483,9 @@ static const u16 effName_42340[] = {
|
||||
};
|
||||
|
||||
/* 8045314C-80453150 00174C 0004+00 1/1 0/0 0/0 .sdata2 fFootJoint$44785 */
|
||||
static const u8 fFootJoint[4] = {
|
||||
0x00,
|
||||
0x10,
|
||||
0x00,
|
||||
0x15,
|
||||
static const u16 fFootJoint[] = {
|
||||
0x0010,
|
||||
0x0015,
|
||||
};
|
||||
|
||||
/* 80453150-80453154 001750 0004+00 1/1 0/0 0/0 .sdata2 bFootJoint$44786 */
|
||||
@@ -2306,9 +2304,10 @@ void daAlink_c::setMatrixOffset(f32* param_0, f32 param_1) {
|
||||
|
||||
/* 800A2CE0-800A3430 09D620 0750+00 3/3 0/0 0/0 .text
|
||||
* setLegAngle__9daAlink_cFfP18daAlink_footData_cPsPsi */
|
||||
void daAlink_c::setLegAngle(f32 param_0, daAlink_footData_c* param_1, s16* param_2,
|
||||
int daAlink_c::setLegAngle(f32 param_0, daAlink_footData_c* param_1, s16* param_2,
|
||||
s16* param_3, int param_4) {
|
||||
// NONMATCHING
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* 80391EFC-80391F08 01E55C 000C+00 0/1 0/0 0/0 .rodata localLeftFootOffset$56542 */
|
||||
|
||||
@@ -2708,7 +2708,7 @@ const daAlinkHIO_wlDamNormal_c1 daAlinkHIO_wlDamNormal_c0::m = {
|
||||
};
|
||||
|
||||
/* 8038F29C-8038F308 01B8FC 006C+00 2/4 0/0 0/0 .rodata m__24daAlinkHIO_wlDamLarge_c0 */
|
||||
const daAlinkHIO_wlDamLarge_c1 daAlinkHIO_wlDamLarge_c0::m = {
|
||||
const daAlinkHIO_wlDamLaHu_c1 daAlinkHIO_wlDamLarge_c0::m = {
|
||||
{
|
||||
49,
|
||||
1.0f,
|
||||
@@ -2749,7 +2749,7 @@ const daAlinkHIO_wlDamLarge_c1 daAlinkHIO_wlDamLarge_c0::m = {
|
||||
/* 8038F308-8038F374 01B968 006C+00 0/2 0/0 0/0 .rodata m__23daAlinkHIO_wlDamHuge_c0 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
const daAlinkHIO_wlDamHuge_c1 daAlinkHIO_wlDamHuge_c0::m = {
|
||||
const daAlinkHIO_wlDamLaHu_c1 daAlinkHIO_wlDamHuge_c0::m = {
|
||||
{
|
||||
49,
|
||||
1.1f,
|
||||
|
||||
@@ -1153,7 +1153,6 @@ int daAlink_c::procCanoeRodGrab() {
|
||||
}
|
||||
|
||||
/* 800F6464-800F659C 0F0DA4 0138+00 6/6 0/0 0/0 .text procCanoeFishingWaitInit__9daAlink_cFv */
|
||||
// NONMATCHING - cLib_minMaxLimit regalloc
|
||||
int daAlink_c::procCanoeFishingWaitInit() {
|
||||
if (!commonProcInitNotSameProc(PROC_CANOE_FISHING_WAIT)) {
|
||||
field_0x311a = 0;
|
||||
@@ -1241,7 +1240,6 @@ int daAlink_c::procCanoeFishingReelInit() {
|
||||
|
||||
/* 800F6874-800F69D4 0F11B4 0160+00 1/0 0/0 0/0 .text procCanoeFishingReel__9daAlink_cFv
|
||||
*/
|
||||
// NONMATCHING - cLib_minMaxLimit regalloc
|
||||
int daAlink_c::procCanoeFishingReel() {
|
||||
if (canoeCommon()) {
|
||||
mItemVar0.field_0x3018 = 1;
|
||||
|
||||
@@ -79,8 +79,9 @@ void daAlink_c::setCrawlMoveDirectionArrow() {
|
||||
|
||||
/* 800F7E48-800F81C0 0F2788 0378+00 2/2 0/0 0/0 .text changeCrawlAutoMoveProc__9daAlink_cFP4cXyz
|
||||
*/
|
||||
void daAlink_c::changeCrawlAutoMoveProc(cXyz* param_0) {
|
||||
BOOL daAlink_c::changeCrawlAutoMoveProc(cXyz* param_0) {
|
||||
// NONMATCHING
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* 800F81C0-800F85C0 0F2B00 0400+00 2/2 0/0 0/0 .text
|
||||
@@ -169,8 +170,9 @@ BOOL daAlink_c::checkNotCrawlStand(cXyz* param_0, cXyz* param_1) {
|
||||
|
||||
/* 800F8B00-800F8D04 0F3440 0204+00 2/2 0/0 0/0 .text
|
||||
* checkCrawlInHoll__9daAlink_cFP4cXyzP4cXyzP4cXyzi */
|
||||
void daAlink_c::checkCrawlInHoll(cXyz* param_0, cXyz* param_1, cXyz* param_2, int param_3) {
|
||||
BOOL daAlink_c::checkCrawlInHoll(cXyz* param_0, cXyz* param_1, cXyz* param_2, int param_3) {
|
||||
// NONMATCHING
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* 800F8D04-800F8DBC 0F3644 00B8+00 2/2 0/0 0/0 .text setCrawlMoveHoll__9daAlink_cFv */
|
||||
|
||||
@@ -785,7 +785,6 @@ BOOL daAlink_c::checkDamageAction() {
|
||||
|
||||
/* 800D8F3C-800D9514 0D387C 05D8+00 2/2 0/0 0/0 .text procDamageInit__9daAlink_cFP12dCcD_GObjInfi
|
||||
*/
|
||||
// NONMATCHING - cLib_minMaxLimit appears to have issues when using s16
|
||||
int daAlink_c::procDamageInit(dCcD_GObjInf* param_0, int param_1) {
|
||||
BOOL freeze_player;
|
||||
|
||||
|
||||
@@ -4233,8 +4233,29 @@ void daAlink_c::checkWarpStart() {
|
||||
|
||||
/* 8011FBC0-8011FD4C 11A500 018C+00 3/3 0/0 0/0 .text warpModelTexScroll__9daAlink_cFv */
|
||||
int daAlink_c::warpModelTexScroll() {
|
||||
// NONMATCHING
|
||||
return 0;
|
||||
field_0x3478 += 0.15f;
|
||||
if (field_0x3478 >= 1.0f) {
|
||||
field_0x3478 -= 1.0f;
|
||||
}
|
||||
|
||||
int temp_r30 = cLib_chaseF(&field_0x347c, field_0x3480, 0.06f);
|
||||
field_0x3484 = cLib_minMaxLimit<f32>(0.5f * field_0x347c, 0.0f, 1.0f);
|
||||
|
||||
dRes_info_c::setWarpSRT(field_0x064C, current.pos, field_0x3478, field_0x347c);
|
||||
dRes_info_c::setWarpSRT(mSwordModel->getModelData(), current.pos, field_0x3478, field_0x347c);
|
||||
dRes_info_c::setWarpSRT(mShieldModel->getModelData(), current.pos, field_0x3478, field_0x347c);
|
||||
dRes_info_c::setWarpSRT(mSheathModel->getModelData(), current.pos, field_0x3478, field_0x347c);
|
||||
|
||||
if (checkWolf()) {
|
||||
dRes_info_c::setWarpSRT(mpWlChainModels[0]->getModelData(), current.pos, field_0x3478, field_0x347c);
|
||||
} else {
|
||||
dRes_info_c::setWarpSRT(mpLinkFaceModel->getModelData(), current.pos, field_0x3478, field_0x347c);
|
||||
dRes_info_c::setWarpSRT(mpLinkHatModel->getModelData(), current.pos, field_0x3478, field_0x347c);
|
||||
dRes_info_c::setWarpSRT(mpLinkHandModel->getModelData(), current.pos, field_0x3478, field_0x347c);
|
||||
dRes_info_c::setWarpSRT(mpLinkBootModels[0]->getModelData(), current.pos, field_0x3478, field_0x347c);
|
||||
}
|
||||
|
||||
return temp_r30;
|
||||
}
|
||||
|
||||
/* 8011FD4C-80120124 11A68C 03D8+00 2/2 0/0 0/0 .text procCoWarpInit__9daAlink_cFii */
|
||||
|
||||
+2035
-112
File diff suppressed because it is too large
Load Diff
+402
-37
@@ -5,6 +5,7 @@
|
||||
|
||||
#include "d/actor/d_a_alink.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "d/actor/d_a_obj_gra2.h"
|
||||
|
||||
/* 800DC548-800DC5A4 0D6E88 005C+00 13/13 0/0 0/0 .text checkEnemyGroup__9daAlink_cFP10fopAc_ac_c
|
||||
*/
|
||||
@@ -19,14 +20,6 @@ public:
|
||||
bool checkBattleMode() { return true; }
|
||||
};
|
||||
|
||||
class daObj_GrA_c : public fopAc_ac_c {
|
||||
public:
|
||||
bool checkNpcObjGra() { return field_0xa7e == 1; }
|
||||
|
||||
u8 temp[0xA7E - 0x568];
|
||||
u8 field_0xa7e;
|
||||
};
|
||||
|
||||
/* 800DC5A4-800DC5DC 0D6EE4 0038+00 4/4 0/0 0/0 .text checkSpecialNpc__9daAlink_cFP10fopAc_ac_c */
|
||||
BOOL daAlink_c::checkSpecialNpc(fopAc_ac_c* i_actor) {
|
||||
s16 name = fopAcM_GetName(i_actor);
|
||||
@@ -45,15 +38,10 @@ BOOL daAlink_c::checkShieldAttackEmphasys() {
|
||||
}
|
||||
|
||||
/* 800DC678-800DC79C 0D6FB8 0124+00 5/5 0/0 0/0 .text checkGuardActionChange__9daAlink_cFv */
|
||||
/* BOOL daAlink_c::checkGuardActionChange() {
|
||||
return checkAttentionLock() && !checkIronBallWaitAnime() && !checkGrabAnime() &&
|
||||
!checkCopyRodControllAnime() && mTargetedActor != NULL && !checkSpecialNpc(mTargetedActor) &&
|
||||
(fopAcM_GetGroup(mTargetedActor) != 3 && fopAcM_GetGroup(mTargetedActor) != fopAc_NPC_e);
|
||||
} */
|
||||
|
||||
BOOL daAlink_c::checkGuardActionChange() {
|
||||
// NONMATCHING
|
||||
return 0;
|
||||
return checkAttentionLock() && !checkIronBallWaitAnime() && !checkGrabAnime() &&
|
||||
!checkCopyRodControllAnime() && !((mTargetedActor != NULL && !checkSpecialNpc(mTargetedActor)) &&
|
||||
(fopAcM_GetGroup(mTargetedActor) == 3 || fopAcM_GetGroup(mTargetedActor) == fopAc_NPC_e));
|
||||
}
|
||||
|
||||
/* 800DC79C-800DC8C4 0D70DC 0128+00 3/3 0/0 0/0 .text stickArrowIncrement__9daAlink_cFi
|
||||
@@ -246,10 +234,9 @@ void daAlink_c::setGuardSe(dCcD_GObjInf* i_objinf) {
|
||||
}
|
||||
|
||||
/* 800DD1D4-800DD3E4 0D7B14 0210+00 1/1 0/0 0/0 .text setSmallGuard__9daAlink_cFP12dCcD_GObjInf */
|
||||
// NONMATCHING
|
||||
void daAlink_c::setSmallGuard(dCcD_GObjInf* i_objinf) {
|
||||
setUpperAnimeBase(0x16);
|
||||
cXyz* dmg_vec = (cXyz*)getDamageVec(i_objinf);
|
||||
cXyz* dmg_vec = getDamageVec(i_objinf);
|
||||
|
||||
mBodyAngle.y = (dmg_vec->atan2sX_Z() + 0x8000) - shape_angle.y;
|
||||
if (abs(mBodyAngle.y) > 0x7000) {
|
||||
@@ -260,57 +247,435 @@ void daAlink_c::setSmallGuard(dCcD_GObjInf* i_objinf) {
|
||||
daAlinkHIO_guard_c0::m.mSmallGuardLRAngleMax);
|
||||
}
|
||||
|
||||
s16 max = daAlinkHIO_guard_c0::m.mSmallGuardFBAngleMax;
|
||||
s16 min = -max;
|
||||
mBodyAngle.x = cLib_minMaxLimit<s16>(cM_atan2s(dmg_vec->y, dmg_vec->absXZ()), min, max);
|
||||
mBodyAngle.x = cLib_minMaxLimit<s16>(cM_atan2s(dmg_vec->y, dmg_vec->absXZ()), -daAlinkHIO_guard_c0::m.mSmallGuardFBAngleMax, daAlinkHIO_guard_c0::m.mSmallGuardFBAngleMax);
|
||||
}
|
||||
|
||||
/* 800DD3E4-800DD894 0D7D24 04B0+00 1/1 0/0 0/0 .text
|
||||
* procGuardSlipInit__9daAlink_cFiP12dCcD_GObjInf */
|
||||
// NONMATCHING - extra useless mr
|
||||
int daAlink_c::procGuardSlipInit(int param_0, dCcD_GObjInf* param_1) {
|
||||
// NONMATCHING
|
||||
return 0;
|
||||
if (mProcID == PROC_GUARD_SLIP) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
field_0x2fd5++;
|
||||
if (field_0x2fd5 == 4) {
|
||||
field_0x2fd5 = 0;
|
||||
return procGuardBreakInit();
|
||||
}
|
||||
|
||||
commonProcInit(PROC_GUARD_SLIP);
|
||||
field_0x2fd4 = 3;
|
||||
|
||||
cXyz* temp_r3 = getDamageVec(param_1);
|
||||
current.angle.y = temp_r3->atan2sX_Z();
|
||||
|
||||
if (mEquipItem == IRONBALL) {
|
||||
setSingleAnimeBase(ANM_IRONBALL_DEF);
|
||||
setIronBallWaitUpperAnime(1);
|
||||
mNowAnmPackUpper[2].setRatio(0.0f);
|
||||
|
||||
mProcVar1.field_0x300a = 0;
|
||||
mProcVar2.field_0x300c = 0;
|
||||
mProcVar3.field_0x300e = 0;
|
||||
} else {
|
||||
const daAlinkHIO_guard_c1* var_r27 = &daAlinkHIO_guard_c0::m;
|
||||
daAlink_ANM var_r28;
|
||||
if (field_0x2f98 == 2) {
|
||||
var_r28 = ANM_GUARD_LEFT;
|
||||
} else {
|
||||
var_r28 = ANM_GUARD_RIGHT;
|
||||
}
|
||||
|
||||
setSingleAnimeParam(var_r28, &var_r27->mGuardHitAnm);
|
||||
setUpperGuardAnime(-1.0f);
|
||||
|
||||
mProcVar2.field_0x300c = (current.angle.y + 0x8000) - shape_angle.y;
|
||||
if (abs(mProcVar2.field_0x300c) > 0x7000) {
|
||||
mProcVar2.field_0x300c = 0;
|
||||
} else {
|
||||
mProcVar2.field_0x300c = cLib_minMaxLimit<s16>((s16)mProcVar2.field_0x300c, -daAlinkHIO_guard_c0::m.mGuardLRAngleMax, daAlinkHIO_guard_c0::m.mGuardLRAngleMax);
|
||||
}
|
||||
|
||||
mProcVar3.field_0x300e = cLib_minMaxLimit<s16>(cM_atan2s(temp_r3->y, temp_r3->absXZ()), -daAlinkHIO_guard_c0::m.mGuardFBAngleMax, daAlinkHIO_guard_c0::m.mGuardFBAngleMax);
|
||||
mProcVar1.field_0x300a = daAlinkHIO_guard_c0::m.mGuardBodyInterpolation + 1;
|
||||
mProcVar2.field_0x300c = (mProcVar2.field_0x300c - mBodyAngle.y) / mProcVar1.field_0x300a;
|
||||
mProcVar3.field_0x300e = (mProcVar3.field_0x300e - mBodyAngle.x) / mProcVar1.field_0x300a;
|
||||
mProcVar1.field_0x300a--;
|
||||
|
||||
mBodyAngle.y += mProcVar2.field_0x300c;
|
||||
mBodyAngle.x += mProcVar3.field_0x300e;
|
||||
}
|
||||
|
||||
mProcVar4.field_0x3010 = 0;
|
||||
mProcVar5.field_0x3012 = 0;
|
||||
|
||||
if (param_1 != NULL && param_1->GetTgHitAc() != NULL && fopAcM_GetName(param_1->GetTgHitAc()) == PROC_E_MM_MT && param_1->GetTgHitAc()->subtype == 1) {
|
||||
if (checkBootsOrArmorHeavy()) {
|
||||
mNormalSpeed = daAlinkHIO_guard_c0::m.mMagneHvyGuardSpeed;
|
||||
mProcVar5.field_0x3012 = 1;
|
||||
} else {
|
||||
mNormalSpeed = daAlinkHIO_guard_c0::m.mMagneGuardSpeed;
|
||||
mProcVar5.field_0x3012 = 0;
|
||||
}
|
||||
|
||||
mProcVar4.field_0x3010 = 1;
|
||||
} else if (checkHugeAttack(param_0)) {
|
||||
if ((!checkBootsOrArmorHeavy() && checkMiddleBossGoronRoom()) || checkStageName("D_MN07B")) {
|
||||
mNormalSpeed = 40.0f;
|
||||
} else {
|
||||
mNormalSpeed = daAlinkHIO_guard_c0::m.mGuardSpeedHuge;
|
||||
}
|
||||
} else if (checkLargeAttack(param_0)) {
|
||||
mNormalSpeed = daAlinkHIO_guard_c0::m.mGuardSpeedLarge;
|
||||
} else {
|
||||
mNormalSpeed = daAlinkHIO_guard_c0::m.mGuardSpeedNormal;
|
||||
}
|
||||
|
||||
field_0x2f9d = 0x60;
|
||||
setFootEffectProcType(1);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 800DD894-800DDA10 0D81D4 017C+00 1/0 0/0 0/0 .text procGuardSlip__9daAlink_cFv */
|
||||
int daAlink_c::procGuardSlip() {
|
||||
// NONMATCHING
|
||||
return 0;
|
||||
if (mEquipItem != IRONBALL) {
|
||||
setUpperGuardAnime(-1.0f);
|
||||
}
|
||||
|
||||
setShapeAngleToAtnActor(0);
|
||||
|
||||
if (mProcVar1.field_0x300a != 0) {
|
||||
mProcVar1.field_0x300a -= 1;
|
||||
mBodyAngle.y += mProcVar2.field_0x300c;
|
||||
mBodyAngle.x += mProcVar3.field_0x300e;
|
||||
}
|
||||
|
||||
if (mNormalSpeed > 2.5f) {
|
||||
field_0x2f9d = 0x60;
|
||||
}
|
||||
|
||||
f32 var_f31;
|
||||
if (checkBootsOrArmorHeavy() && mProcVar4.field_0x3010 == 0) {
|
||||
var_f31 = 2.5f;
|
||||
} else {
|
||||
var_f31 = 1.25f;
|
||||
}
|
||||
|
||||
if (mProcVar4.field_0x3010 != 0 && mProcVar5.field_0x3012 != checkBootsOrArmorHeavy()) {
|
||||
mNormalSpeed = 0.0f;
|
||||
}
|
||||
|
||||
if (cLib_chaseF(&mNormalSpeed, 0.0f, var_f31) != 0 && checkAnmEnd(&mUnderFrameCtrl[0])) {
|
||||
field_0x814.SetTgApid(0);
|
||||
|
||||
if (!checkGuardActionChange()) {
|
||||
onEndResetFlg1(ERFLG1_UNK_20);
|
||||
}
|
||||
|
||||
if (mEquipItem == IRONBALL) {
|
||||
mNowAnmPackUpper[2].setRatio(1.0f);
|
||||
}
|
||||
|
||||
checkNextAction(0);
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 800DDA10-800DDBA8 0D8350 0198+00 2/1 0/0 0/0 .text procGuardAttackInit__9daAlink_cFv
|
||||
*/
|
||||
int daAlink_c::procGuardAttackInit() {
|
||||
// NONMATCHING
|
||||
return 0;
|
||||
if (mDemo.getDemoMode() == 0x4B && mProcID == PROC_GUARD_ATTACK) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
commonProcInit(PROC_GUARD_ATTACK);
|
||||
const daAlinkHIO_guardAttack_c1* temp_r30 = &daAlinkHIO_gAtPush_c0::m;
|
||||
|
||||
field_0x2f98 = 3;
|
||||
field_0x34d4 = l_rWaitBaseAnime;
|
||||
field_0x3588 = l_rWaitBaseAnime;
|
||||
|
||||
setCutType(0x29);
|
||||
setSingleAnimeParam(ANM_SHIELD_ATTACK, &temp_r30->mAttackAnm);
|
||||
|
||||
field_0x3478 = temp_r30->mAttackStartFrame;
|
||||
field_0x347c = temp_r30->mAttackEndFrame;
|
||||
field_0x3480 = temp_r30->mSpeed;
|
||||
|
||||
if (checkHeavyStateOn(1, 1) != 0) {
|
||||
field_0x3480 *= mHeavySpeedMultiplier;
|
||||
}
|
||||
|
||||
if (mDemo.getDemoMode() == 0x4B) {
|
||||
field_0x3484 = 1000.0f;
|
||||
field_0x3488 = 1000.0f;
|
||||
} else {
|
||||
field_0x3484 = temp_r30->mAttackAnm.mCheckFrame;
|
||||
field_0x3488 = temp_r30->mSlashCheckFrame;
|
||||
}
|
||||
|
||||
mNormalSpeed = 0.0f;
|
||||
setSwordVoiceSe(Z2SE_AL_V_TATE_OSHI);
|
||||
|
||||
mGuardAtCps.ResetAtHit();
|
||||
mGuardAtCps.SetAtSe(2);
|
||||
mGuardAtCps.SetR(daAlinkHIO_guard_c0::m.mAttackRadius);
|
||||
|
||||
current.angle.y = shape_angle.y;
|
||||
|
||||
setUpperGuardAnime(-1.0f);
|
||||
mProcVar2.field_0x300c = 0;
|
||||
mProcVar3.field_0x300e = 0;
|
||||
mProcVar5.field_0x3012 = 0;
|
||||
mProcVar0.field_0x3008 = 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 800DDBA8-800DDE58 0D84E8 02B0+00 1/0 0/0 0/0 .text procGuardAttack__9daAlink_cFv */
|
||||
int daAlink_c::procGuardAttack() {
|
||||
// NONMATCHING
|
||||
return 0;
|
||||
daPy_frameCtrl_c* temp_r30 = &mUnderFrameCtrl[0];
|
||||
|
||||
setUpperGuardAnime(-1.0f);
|
||||
field_0x2f99 = 4;
|
||||
cLib_chaseF(&mNormalSpeed, 0.0f, daAlinkHIO_move_c0::m.mDeceleration);
|
||||
setShapeAngleToAtnActor(1);
|
||||
current.angle.y = shape_angle.y;
|
||||
|
||||
if (checkForceSwordSwing()) {
|
||||
mProcVar2.field_0x300c = 1;
|
||||
}
|
||||
|
||||
BOOL var_r29;
|
||||
if (mEquipItem == 0x103 && !checkMagneBootsOn()) {
|
||||
var_r29 = 1;
|
||||
if (doTrigger()) {
|
||||
mProcVar3.field_0x300e = 1;
|
||||
}
|
||||
} else {
|
||||
var_r29 = 0;
|
||||
}
|
||||
|
||||
if (mProcVar0.field_0x3008 == 0 && mGuardAtCps.ChkAtHit()) {
|
||||
mProcVar0.field_0x3008 = 1;
|
||||
dComIfGp_getVibration().StartShock(3, 1, cXyz(0.0f, 1.0f, 0.0f));
|
||||
}
|
||||
|
||||
if (mProcVar5.field_0x3012 != 0 && commonLineCheck(&field_0x3834, &mRightHandPos) && dComIfG_Bgsp().GetWallCode(mLinkLinChk) != 7) {
|
||||
mZ2Link.startHitItemSE(Z2SE_HIT_SHIELD_ATTACK, dKy_pol_sound_get(&mLinkLinChk), NULL, -1.0f);
|
||||
return procCutReverseInit(ANM_SHIELD_ATTACK_RECOIL);
|
||||
}
|
||||
|
||||
if (var_r29) {
|
||||
if (checkCutHeadState()) {
|
||||
setDoStatusEmphasys(0x77);
|
||||
} else {
|
||||
setDoStatus(0x86);
|
||||
}
|
||||
}
|
||||
|
||||
if (checkAnmEnd(temp_r30)) {
|
||||
if (mDemo.getDemoMode() == 0x4B) {
|
||||
dComIfGp_evmng_cutEnd(field_0x3184);
|
||||
} else {
|
||||
checkNextAction(0);
|
||||
}
|
||||
} else {
|
||||
if (temp_r30->getFrame() > field_0x3488) {
|
||||
if (mProcVar3.field_0x300e != 0) {
|
||||
return checkDoCutAction();
|
||||
}
|
||||
|
||||
if (mProcVar2.field_0x300c != 0) {
|
||||
return checkCutAction();
|
||||
}
|
||||
}
|
||||
|
||||
if (temp_r30->getFrame() > field_0x3484) {
|
||||
onModeFlg(4);
|
||||
checkNextAction(1);
|
||||
} else if (temp_r30->getFrame() >= field_0x3478 && temp_r30->getFrame() < field_0x347c) {
|
||||
if (mProcVar5.field_0x3012 == 0) {
|
||||
mNormalSpeed = field_0x3480;
|
||||
}
|
||||
mProcVar5.field_0x3012 = 1;
|
||||
} else {
|
||||
mProcVar5.field_0x3012 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 800DDE58-800DDF2C 0D8798 00D4+00 2/2 0/0 0/0 .text procGuardBreakInit__9daAlink_cFv */
|
||||
int daAlink_c::procGuardBreakInit() {
|
||||
// NONMATCHING
|
||||
return 0;
|
||||
commonProcInit(PROC_GUARD_BREAK);
|
||||
setSingleAnimeParam(ANM_GUARD_BREAK, &daAlinkHIO_guard_c0::m.mGuardBreakAnm);
|
||||
|
||||
if (mEquipItem == IRONBALL) {
|
||||
deleteEquipItem(0, 0);
|
||||
}
|
||||
|
||||
mNormalSpeed = 0.0f;
|
||||
field_0x3588 = l_halfAtnWaitBaseAnime;
|
||||
dComIfGp_getVibration().StartShock(5, 0x1F, cXyz(0.0f, 1.0f, 0.0f));
|
||||
voiceStart(Z2SE_AL_V_GUARD_BROKEN);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 800DDF2C-800DE008 0D886C 00DC+00 1/0 0/0 0/0 .text procGuardBreak__9daAlink_cFv */
|
||||
int daAlink_c::procGuardBreak() {
|
||||
// NONMATCHING
|
||||
return 0;
|
||||
daPy_frameCtrl_c* temp_r30 = &mUnderFrameCtrl[0];
|
||||
|
||||
setUpperGuardAnime(-1.0f);
|
||||
onEndResetFlg0(ERFLG0_UNK_8000000);
|
||||
field_0x2f99 = 4;
|
||||
|
||||
if (checkAnmEnd(temp_r30)) {
|
||||
if (checkGuardActionChange() == 0) {
|
||||
onEndResetFlg1(ERFLG1_UNK_20);
|
||||
}
|
||||
checkNextAction(0);
|
||||
} else if (temp_r30->getFrame() > daAlinkHIO_guard_c0::m.mGuardBreakAnm.mCheckFrame) {
|
||||
if (!checkGuardActionChange()) {
|
||||
onEndResetFlg1(ERFLG1_UNK_20);
|
||||
}
|
||||
|
||||
onModeFlg(4);
|
||||
checkNextAction(1);
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 800DE008-800DE380 0D8948 0378+00 2/2 0/0 0/0 .text procTurnMoveInit__9daAlink_cFi */
|
||||
int daAlink_c::procTurnMoveInit(int param_0) {
|
||||
// NONMATCHING
|
||||
return 0;
|
||||
BOOL temp_r27 = checkUpperGuardAnime();
|
||||
fopAc_ac_c* temp_r28 = mTargetedActor;
|
||||
|
||||
commonProcInit(PROC_TURN_MOVE);
|
||||
mNormalSpeed = 0.0f;
|
||||
|
||||
daAlink_ANM var_r29;
|
||||
if (param_0 == 2) {
|
||||
var_r29 = ANM_SIDE_ROLL_LEFT;
|
||||
} else if (param_0 == 3) {
|
||||
var_r29 = ANM_SIDE_ROLL_RIGHT;
|
||||
} else if (checkInputOnR()) {
|
||||
if ((s16)(field_0x2fe2 - shape_angle.y) >= 0) {
|
||||
var_r29 = ANM_SIDE_ROLL_LEFT;
|
||||
} else {
|
||||
var_r29 = ANM_SIDE_ROLL_RIGHT;
|
||||
}
|
||||
} else {
|
||||
var_r29 = ANM_SIDE_ROLL_LEFT;
|
||||
}
|
||||
|
||||
f32 temp_f31 = daAlinkHIO_turnMove_c0::m.mTurnAnm.mSpeed;
|
||||
mProcVar1.field_0x300a = daAlinkHIO_turnMove_c0::m.mMaxTurnSpeed;
|
||||
|
||||
if (checkNoResetFlg0(FLG0_UNDERWATER)) {
|
||||
mProcVar1.field_0x300a = mProcVar1.field_0x300a * daAlinkHIO_magneBoots_c0::m.mWaterVelocityX;
|
||||
}
|
||||
|
||||
setSingleAnime(var_r29, temp_f31, daAlinkHIO_turnMove_c0::m.mTurnAnm.mStartFrame, daAlinkHIO_turnMove_c0::m.mTurnAnm.mEndFrame, daAlinkHIO_turnMove_c0::m.mTurnAnm.mInterpolation);
|
||||
|
||||
if (var_r29 == ANM_SIDE_ROLL_LEFT) {
|
||||
mProcVar2.field_0x300c = -0x7FF0;
|
||||
field_0x2f98 = 2;
|
||||
} else {
|
||||
mProcVar2.field_0x300c = 0x7FF0;
|
||||
field_0x2f98 = 3;
|
||||
}
|
||||
|
||||
if (temp_r28 != NULL) {
|
||||
cXyz sp8 = current.pos - temp_r28->current.pos;
|
||||
shape_angle.y = fopAcM_searchActorAngleY(this, temp_r28);
|
||||
field_0x3478 = sp8.absXZ();
|
||||
mProcVar3.field_0x300e = sp8.atan2sX_Z();
|
||||
} else {
|
||||
field_0x3478 = 200.0f;
|
||||
mProcVar3.field_0x300e = shape_angle.y + 0x8000;
|
||||
}
|
||||
|
||||
field_0x347c = (field_0x3478 - 150.0f) / mProcVar2.field_0x300c;
|
||||
voiceStart(Z2SE_AL_V_SOTOMO_ROLL);
|
||||
|
||||
if (mDemo.getDemoMode() == 0x52) {
|
||||
mProcVar0.field_0x3008 = 1;
|
||||
} else {
|
||||
mProcVar0.field_0x3008 = 0;
|
||||
}
|
||||
|
||||
setFootEffectProcType(0);
|
||||
field_0x2f9d = 4;
|
||||
dComIfGp_setPlayerStatus0(0, 4);
|
||||
|
||||
if (temp_r27 != 0) {
|
||||
onNoResetFlg0(FLG0_UNK_2);
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 800DE380-800DE64C 0D8CC0 02CC+00 1/0 0/0 0/0 .text procTurnMove__9daAlink_cFv */
|
||||
int daAlink_c::procTurnMove() {
|
||||
// NONMATCHING
|
||||
return 0;
|
||||
onEndResetFlg0(ERFLG0_UNK_8000000);
|
||||
s16 temp_r28 = mProcVar2.field_0x300c;
|
||||
|
||||
cLib_addCalcAngleS(&mProcVar2.field_0x300c, 0, daAlinkHIO_turnMove_c0::m.mTurnSpeedRate, mProcVar1.field_0x300a, daAlinkHIO_turnMove_c0::m.mMinTurnSpeed);
|
||||
|
||||
s16 temp_r29 = temp_r28 - mProcVar2.field_0x300c;
|
||||
if (temp_r28 > 0) {
|
||||
current.angle.y = mProcVar3.field_0x300e + 0x4000;
|
||||
} else {
|
||||
current.angle.y = mProcVar3.field_0x300e - 0x4000;
|
||||
}
|
||||
|
||||
f32 temp_f31 = current.pos.x - (field_0x3478 * cM_ssin(mProcVar3.field_0x300e));
|
||||
f32 temp_f30 = current.pos.z - (field_0x3478 * cM_scos(mProcVar3.field_0x300e));
|
||||
|
||||
mProcVar3.field_0x300e += temp_r29;
|
||||
field_0x3478 -= field_0x347c * temp_r29;
|
||||
|
||||
current.pos.x = temp_f31 + (field_0x3478 * cM_ssin(mProcVar3.field_0x300e));
|
||||
current.pos.z = temp_f30 + (field_0x3478 * cM_scos(mProcVar3.field_0x300e));
|
||||
|
||||
shape_angle.y = mProcVar3.field_0x300e + 0x8000;
|
||||
mProcVar0.field_0x3008 |= checkCutFinishJumpUp();
|
||||
|
||||
daPy_frameCtrl_c* temp_r30 = &mUnderFrameCtrl[0];
|
||||
|
||||
if (checkNoResetFlg0(FLG0_UNK_2)) {
|
||||
setUpperGuardAnime(-1.0f);
|
||||
}
|
||||
|
||||
if (checkAnmEnd(temp_r30)) {
|
||||
if (!checkAttentionLock()) {
|
||||
offNoResetFlg2(FLG2_UNK_8000000);
|
||||
}
|
||||
checkNextAction(0);
|
||||
} else if (mProcVar0.field_0x3008 != 0 && !checkNotJumpSinkLimit() && temp_r30->getFrame() > daAlinkHIO_turnMove_c0::m.mTwirlCutDelayF) {
|
||||
procCutFinishJumpUpInit();
|
||||
dComIfGp_setPlayerStatus0(0, 4);
|
||||
} else {
|
||||
if (temp_r30->getFrame() > daAlinkHIO_turnMove_c0::m.mTurnAnm.mCheckFrame) {
|
||||
onModeFlg(4);
|
||||
|
||||
if (checkNextAction(1)) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (temp_r30->checkPass(19.0f)) {
|
||||
dComIfGp_getVibration().StartShock(1, 1, cXyz(0.0f, 1.0f, 0.0f));
|
||||
}
|
||||
|
||||
if (abs(temp_r29) > 0x100) {
|
||||
field_0x2f9d = 4;
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -826,7 +826,6 @@ int daAlink_c::setSyncHorse(int param_0) {
|
||||
}
|
||||
|
||||
/* 800EE64C-800EE918 0E8F8C 02CC+00 1/1 0/0 0/0 .text setSyncBoar__9daAlink_cFi */
|
||||
// NONMATCHING - regalloc, equivalent? NONMATCHING
|
||||
int daAlink_c::setSyncBoar(int param_0) {
|
||||
e_wb_class* e_wb_p = static_cast<e_wb_class*>(mRideAcKeep.getActor());
|
||||
BOOL mode_1 = checkModeFlg(1);
|
||||
@@ -1021,7 +1020,6 @@ void daAlink_c::setHorseSwordUp(int param_0) {
|
||||
|
||||
/* 800EEF30-800EF050 0E9870 0120+00 9/9 0/0 0/0 .text setRideSubjectAngle__9daAlink_cFs
|
||||
*/
|
||||
// NONMATCHING - cLib_minMaxLimit regalloc
|
||||
int daAlink_c::setRideSubjectAngle(s16 param_0) {
|
||||
shape_angle.y += mBodyAngle.y;
|
||||
BOOL temp_r27 = setBodyAngleToCamera();
|
||||
@@ -1033,11 +1031,11 @@ int daAlink_c::setRideSubjectAngle(s16 param_0) {
|
||||
var_r30 = daAlinkHIO_horse_c0::m.field_0x58;
|
||||
}
|
||||
|
||||
mBodyAngle.x = cLib_minMaxLimit<s16>(mBodyAngle.x, daAlinkHIO_horse_c0::m.field_0x5A, var_r30);
|
||||
mBodyAngle.x = cLib_minMaxLimit<s16>((s16)mBodyAngle.x, daAlinkHIO_horse_c0::m.field_0x5A, var_r30);
|
||||
|
||||
s16 temp_r29 = shape_angle.y - param_0;
|
||||
if (checkHorseZelda()) {
|
||||
field_0x3190 = cLib_minMaxLimit<s16>(temp_r29, -0x4000, 0x4000);
|
||||
field_0x3190 = cLib_minMaxLimit<s16>((s16)temp_r29, -0x4000, 0x4000);
|
||||
} else {
|
||||
field_0x3190 = temp_r29;
|
||||
}
|
||||
@@ -1055,15 +1053,14 @@ int daAlink_c::setRideSubjectAngle(s16 param_0) {
|
||||
}
|
||||
|
||||
/* 800EF050-800EF0E8 0E9990 0098+00 7/7 0/0 0/0 .text setBodyAngleRideReadyAnime__9daAlink_cFv */
|
||||
// NONMATCHING - missing mr, probably issue with cLib_minMaxLimit implementation
|
||||
void daAlink_c::setBodyAngleRideReadyAnime() {
|
||||
setBodyAngleXReadyAnime(0);
|
||||
|
||||
s16 angle;
|
||||
if (mTargetedActor != NULL) {
|
||||
angle = cLib_minMaxLimit(
|
||||
(s16)(cLib_targetAngleY(¤t.pos, &mTargetedActor->eyePos) - shape_angle.y),
|
||||
(s16)-0x3800, (s16)0x3800);
|
||||
angle = cLib_minMaxLimit<s16>(
|
||||
cLib_targetAngleY(¤t.pos, &mTargetedActor->eyePos) - shape_angle.y,
|
||||
-0x3800, 0x3800);
|
||||
} else {
|
||||
angle = 0;
|
||||
}
|
||||
@@ -2200,7 +2197,6 @@ int daAlink_c::procHorseCutTurn() {
|
||||
|
||||
/* 800F1D18-800F2028 0EC658 0310+00 2/2 0/0 0/0 .text
|
||||
* procHorseDamageInit__9daAlink_cFP12dCcD_GObjInf */
|
||||
// NONMATCHING - cLib_minMaxLimit regalloc
|
||||
int daAlink_c::procHorseDamageInit(dCcD_GObjInf* param_0) {
|
||||
commonProcInit(PROC_HORSE_DAMAGE);
|
||||
|
||||
|
||||
@@ -108,7 +108,6 @@ bool daAlink_c::checkKandelaarSwing(int param_0) const {
|
||||
}
|
||||
|
||||
/* 801108EC-80110BEC 10B22C 0300+00 1/1 0/0 0/0 .text kandelaarModelCallBack__9daAlink_cFv */
|
||||
// NONMATCHING - regalloc from cLib_minMaxLimit
|
||||
int daAlink_c::kandelaarModelCallBack() {
|
||||
cXyz sp44;
|
||||
mDoMtx_multVecZero(J3DSys::mCurrentMtx, &sp44);
|
||||
|
||||
@@ -273,7 +273,7 @@ int daAlink_c::procMove() {
|
||||
setBlendMoveAnime(-1.0f);
|
||||
if (field_0x3174 != 8) {
|
||||
field_0x30a0 =
|
||||
cLib_minMaxLimit2((s16)(field_0x2ff0 >> 1), daAlinkHIO_basic_c0::m.mNeckMaxUp,
|
||||
cLib_minMaxLimit<s16>((s16)(field_0x2ff0 >> 1), daAlinkHIO_basic_c0::m.mNeckMaxUp,
|
||||
daAlinkHIO_basic_c0::m.mNeckMaxDown);
|
||||
}
|
||||
}
|
||||
@@ -656,7 +656,7 @@ int daAlink_c::procSlide() {
|
||||
|
||||
if (checkInputOnR()) {
|
||||
mProcVar2.field_0x300c =
|
||||
cLib_minMaxLimit2<s16>((s16)(mProcVar2.field_0x300c + sin * 256.0f), -0x1000, 0x1000);
|
||||
cLib_minMaxLimit<s16>((s16)(mProcVar2.field_0x300c + sin * 256.0f), -0x1000, 0x1000);
|
||||
} else {
|
||||
cLib_chaseS(&mProcVar2.field_0x300c, 0, 64);
|
||||
}
|
||||
@@ -3677,7 +3677,160 @@ int daAlink_c::moveShadowScaleLight() {
|
||||
|
||||
/* 800CBC18-800CC25C 0C6558 0644+00 1/1 0/0 0/0 .text shadowDraw__9daAlink_cFv */
|
||||
void daAlink_c::shadowDraw() {
|
||||
// NONMATCHING
|
||||
daMidna_c* temp_r3 = getMidnaActor();
|
||||
if (temp_r3 != NULL && ((temp_r3->checkShadowModelDraw() && (field_0x2ff4 >= 0x3FF0 || !checkMidnaRide())) || temp_r3->checkShadowModelDrawDemoForce())) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!checkBoarRide()) {
|
||||
if (mProcID == PROC_WARP) {
|
||||
tevStr.field_0x344 = field_0x3484;
|
||||
}
|
||||
|
||||
u32 var_r29;
|
||||
if (checkHorseRide()) {
|
||||
var_r29 = ((daHorse_c*)dComIfGp_getHorseActor())->getShadowID();
|
||||
if (var_r29 != 0) {
|
||||
dComIfGd_addRealShadow(var_r29, mpLinkModel);
|
||||
}
|
||||
} else {
|
||||
f32 var_f31;
|
||||
if (checkModeFlg(0x40)) {
|
||||
var_f31 = field_0x33d8;
|
||||
} else {
|
||||
var_f31 = mLinkAcch.GetGroundH();
|
||||
}
|
||||
|
||||
cXyz spC(field_0x3834.x, field_0x3454, field_0x3834.z);
|
||||
|
||||
f32 var_f30;
|
||||
if (!checkWolf()) {
|
||||
if (field_0x850[0].GetC().y > field_0x850[2].GetC().y) {
|
||||
var_f30 = field_0x850[2].GetC().y;
|
||||
} else {
|
||||
var_f30 = field_0x850[0].GetC().y;
|
||||
}
|
||||
} else {
|
||||
var_f30 = field_0x850[0].GetC().y;
|
||||
}
|
||||
|
||||
s8 sp8;
|
||||
if (mWaterY > var_f31) {
|
||||
sp8 = 1;
|
||||
} else {
|
||||
sp8 = 0;
|
||||
}
|
||||
|
||||
field_0x31a4 = dComIfGd_setShadow(field_0x31a4, sp8, mpLinkModel, &spC, 800.0f, 0.0f, var_f30, var_f31, mLinkAcch.m_gnd, &tevStr, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex());
|
||||
var_r29 = field_0x31a4;
|
||||
}
|
||||
|
||||
if (var_r29 != 0) {
|
||||
if (checkSwordDraw()) {
|
||||
if (!checkNoResetFlg3(FLG3_UNK_80000000)) {
|
||||
dComIfGd_addRealShadow(var_r29, mSwordModel);
|
||||
}
|
||||
|
||||
if (!checkWoodSwordEquip()) {
|
||||
dComIfGd_addRealShadow(var_r29, mSheathModel);
|
||||
}
|
||||
}
|
||||
|
||||
if (checkShieldDraw()) {
|
||||
dComIfGd_addRealShadow(var_r29, mShieldModel);
|
||||
}
|
||||
|
||||
if (checkWolf()) {
|
||||
if (checkMidnaRide() && !checkCloudSea() && !temp_r3->checkShadowNoDraw() && !temp_r3->checkShadowModelDraw()) {
|
||||
dComIfGd_addRealShadow(var_r29, mpWlMidnaModel);
|
||||
|
||||
if (!temp_r3->checkNoMaskDraw() ) {
|
||||
dComIfGd_addRealShadow(var_r29, mpWlMidnaMaskModel);
|
||||
}
|
||||
|
||||
dComIfGd_addRealShadow(var_r29, mpWlMidnaHairModel);
|
||||
}
|
||||
} else {
|
||||
dComIfGd_addRealShadow(var_r29, mpLinkFaceModel);
|
||||
dComIfGd_addRealShadow(var_r29, mpLinkHatModel);
|
||||
dComIfGd_addRealShadow(var_r29, mpLinkHandModel);
|
||||
|
||||
if (field_0x2f92 == 0xFB) {
|
||||
dComIfGd_addRealShadow(var_r29, mpDemoHLTmpModel);
|
||||
}
|
||||
|
||||
if (field_0x2f93 == 0xFB) {
|
||||
dComIfGd_addRealShadow(var_r29, mpDemoHRTmpModel);
|
||||
}
|
||||
|
||||
if (mEquipItem == BOOMERANG) {
|
||||
if (mItemAcKeep.getActor() != NULL) {
|
||||
dComIfGd_addRealShadow(var_r29, mItemAcKeep.getActor()->model);
|
||||
}
|
||||
} else if (checkItemDraw()) {
|
||||
if (mEquipItem == IRONBALL) {
|
||||
if (mItemVar0.field_0x3018 == 0 || mItemVar0.field_0x3018 == 8) {
|
||||
dComIfGd_addRealShadow(var_r29, mHeldItemModel);
|
||||
} else {
|
||||
if (fopAcM_gc_c::gndCheck(&mIronBallBgChkPos)) {
|
||||
field_0x32d4 = dComIfGd_setShadow(field_0x32d4, 0, mHeldItemModel, &mIronBallCenterPos, 150.0f, 32.0f, mIronBallBgChkPos.y, fopAcM_gc_c::getGroundY(), *fopAcM_gc_c::getGroundCheck(), &tevStr, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
changeHookshotDrawModel();
|
||||
dComIfGd_addRealShadow(var_r29, mHeldItemModel);
|
||||
|
||||
if (checkHookshotItem(mEquipItem)) {
|
||||
if (checkHookshotWait() && !dComIfGp_checkPlayerStatus1(0, 0x10000)) {
|
||||
dComIfGd_addRealShadow(var_r29, mpHookTipModel);
|
||||
}
|
||||
|
||||
if (mEquipItem == W_HOOKSHOT && !checkPlayerGuardAndAttack() && !checkNoResetFlg0(FLG0_UNK_2)) {
|
||||
dComIfGd_addRealShadow(var_r29, field_0x0710);
|
||||
|
||||
if (!dComIfGp_checkPlayerStatus1(0, 0x10000)) {
|
||||
dComIfGd_addRealShadow(var_r29, field_0x0714);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
changeHookshotDrawModel();
|
||||
}
|
||||
}
|
||||
|
||||
if (checkNoResetFlg2(FLG2_UNK_1)) {
|
||||
dComIfGd_addRealShadow(var_r29, mpKanteraModel);
|
||||
}
|
||||
|
||||
if (checkEquipHeavyBoots()) {
|
||||
for (int i = 0; i < 2; i++) {
|
||||
dComIfGd_addRealShadow(var_r29, mpLinkBootModels[i]);
|
||||
}
|
||||
}
|
||||
|
||||
if (checkSpinnerRide()) {
|
||||
fopAc_ac_c* temp_r3_6 = fopAcM_SearchByID(mRideAcKeep.getID());
|
||||
if (temp_r3_6 != NULL) {
|
||||
dComIfGd_addRealShadow(var_r29, temp_r3_6->model);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (mGrabItemAcKeep.getID() != fpcM_ERROR_PROCESS_ID_e) {
|
||||
fopAc_ac_c* temp_r3_7 = fopAcM_SearchByID(mGrabItemAcKeep.getID());
|
||||
if (temp_r3_7 != NULL && temp_r3_7->model != NULL) {
|
||||
dComIfGd_addRealShadow(var_r29, temp_r3_7->model);
|
||||
}
|
||||
}
|
||||
|
||||
if (dComIfGp_checkPlayerStatus1(0, 0x10000) && mCargoCarryAcKeep.getID() != fpcM_ERROR_PROCESS_ID_e) {
|
||||
fopAc_ac_c* temp_r3_8 = fopAcM_SearchByID(mCargoCarryAcKeep.getID());
|
||||
if (temp_r3_8 != NULL && temp_r3_8->model != NULL) {
|
||||
dComIfGd_addRealShadow(var_r29, temp_r3_8->model);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 800CC25C-800CC298 0C6B9C 003C+00 3/3 0/0 0/0 .text modelCalc__9daAlink_cFP8J3DModel */
|
||||
@@ -4224,13 +4377,86 @@ int daAlink_c::checkSubjectAction() {
|
||||
}
|
||||
|
||||
/* 800CE728-800CE8A0 0C9068 0178+00 1/1 0/0 0/0 .text checkBodyAngleX__9daAlink_cFs */
|
||||
void daAlink_c::checkBodyAngleX(s16 param_0) {
|
||||
// NONMATCHING
|
||||
s16 daAlink_c::checkBodyAngleX(s16 param_0) {
|
||||
if (checkWolf() || mProcID == PROC_PEEP_SUBJECTIVITY || mProcID == PROC_HOOKSHOT_WALL_SHOOT) {
|
||||
return param_0;
|
||||
}
|
||||
|
||||
Vec sp2C = {0.0f, 0.0f, 0.0f};
|
||||
sp2C.y = 0.5f * field_0x598;
|
||||
|
||||
cXyz sp20;
|
||||
mDoMtx_multVecZero(mpLinkModel->getAnmMtx(1), &sp20);
|
||||
cXyz sp14;
|
||||
|
||||
if (param_0 >= 0) {
|
||||
sp2C.z = 25.0f;
|
||||
} else {
|
||||
sp2C.z = -25.0f;
|
||||
}
|
||||
|
||||
mDoMtx_stack_c::transS(sp20);
|
||||
concatMagneBootMtx();
|
||||
mDoMtx_stack_c::ZXYrotM(param_0, shape_angle.y, 0);
|
||||
mDoMtx_stack_c::multVec(&sp2C, &sp14);
|
||||
|
||||
if (commonLineCheck(&sp20, &sp14)) {
|
||||
cXyz sp8 = sp14 - mLinkLinChk.i_GetCross();
|
||||
multVecMagneBootInvMtx(&sp8);
|
||||
|
||||
current.pos.x -= sp8.x;
|
||||
current.pos.z -= sp8.z;
|
||||
}
|
||||
|
||||
return param_0;
|
||||
}
|
||||
|
||||
/* 800CE8A0-800CEAF4 0C91E0 0254+00 15/15 0/0 0/0 .text setBodyAngleToCamera__9daAlink_cFv */
|
||||
BOOL daAlink_c::setBodyAngleToCamera() {
|
||||
// NONMATCHING
|
||||
if (dComIfGp_checkCameraAttentionStatus(field_0x317c, 0x10)) {
|
||||
field_0x310e = field_0x310a;
|
||||
field_0x3110 = field_0x310c;
|
||||
onEndResetFlg2(ERFLG2_UNK_20);
|
||||
|
||||
s16 sp8;
|
||||
if (checkInputOnR()) {
|
||||
f32 var_f31 = 512.0f * field_0x33ac * field_0x33ac;
|
||||
if (checkWolfEyeUp()) {
|
||||
var_f31 *= 0.6f;
|
||||
}
|
||||
|
||||
if (dComIfGp_checkPlayerStatus0(0, 0x200000)) {
|
||||
var_f31 /= dComIfGp_getCameraZoomScale(field_0x317c);
|
||||
}
|
||||
|
||||
shape_angle.y = shape_angle.y + (var_f31 * cM_ssin(mStickAngle));
|
||||
sp8 = mBodyAngle.x + (var_f31 * cM_scos(mStickAngle));
|
||||
|
||||
if (checkNotItemSinkLimit() && sp8 > 0 && sp8 > mBodyAngle.x) {
|
||||
sp8 = mBodyAngle.x;
|
||||
}
|
||||
} else {
|
||||
sp8 = mBodyAngle.x;
|
||||
}
|
||||
|
||||
if (checkNotItemSinkLimit() && sp8 > 0) {
|
||||
cLib_addCalcAngleS(&sp8, 0, 5, 0x1000, 0x400);
|
||||
}
|
||||
|
||||
s16 var_r29;
|
||||
if (!dComIfGp_checkPlayerStatus0(0, 0x202000) && mEquipItem == IRONBALL) {
|
||||
var_r29 = -10000;
|
||||
} else {
|
||||
var_r29 = daAlinkHIO_item_c0::m.mItemFPUpMaxUnk;
|
||||
}
|
||||
|
||||
mBodyAngle.x = cLib_minMaxLimit<s16>((s16)sp8, var_r29, daAlinkHIO_item_c0::m.mItemFPMaxUnk);
|
||||
checkBodyAngleX(mBodyAngle.x);
|
||||
field_0x310a = mBodyAngle.x;
|
||||
field_0x310c = shape_angle.y;
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -1414,7 +1414,6 @@ int daAlink_c::procSwimHookshotMove() {
|
||||
|
||||
/* 8010519C-80105728 0FFADC 058C+00 1/1 0/0 0/0 .text
|
||||
* procSwimDamageInit__9daAlink_cFP12dCcD_GObjInf */
|
||||
// NONMATCHING - cLib_minMaxLimit regalloc issue
|
||||
int daAlink_c::procSwimDamageInit(dCcD_GObjInf* param_0) {
|
||||
seStartOnlyReverb(Z2SE_AL_DAMAGE_NORMAL);
|
||||
dComIfGp_getVibration().StartShock(2, 31, cXyz(0.0f, 1.0f, 0.0f));
|
||||
|
||||
+1594
-35
File diff suppressed because it is too large
Load Diff
+37
-926
File diff suppressed because it is too large
Load Diff
+5
-2129
File diff suppressed because it is too large
Load Diff
+4
-4699
File diff suppressed because it is too large
Load Diff
+2
-2
@@ -52,7 +52,7 @@ void dEyeHL_mng_c::update() {
|
||||
for (; obj != NULL; obj = obj->m_next) {
|
||||
ResTIMG* timg = obj->m_timg;
|
||||
timg->LODBias = obj->m_lodBias + tmp;
|
||||
timg->LODBias = cLib_minMaxLimit<s16>(timg->LODBias, -400, 399);
|
||||
timg->LODBias = cLib_minMaxLimit<s16>((s16)timg->LODBias, -400, 399);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -113,4 +113,4 @@ u8 struct_80450FB8[4];
|
||||
extern u8 struct_80450FBC[4];
|
||||
u8 struct_80450FBC[4];
|
||||
|
||||
/* 8037B100-8037B100 007760 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
/* 8037B100-8037B100 007760 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
|
||||
Reference in New Issue
Block a user