mirror of
https://github.com/zeldaret/tp
synced 2026-06-28 03:03:14 -04:00
another d_a_alink pass (#305)
* big pass on many d_a_alink files * remove asm * fix d_a_tag_spring * fix --------- Co-authored-by: root <root@DESKTOP-BTVP2BC>
This commit is contained in:
+814
-589
File diff suppressed because it is too large
Load Diff
@@ -1,3 +1,5 @@
|
||||
#include "d/d_insect.h"
|
||||
|
||||
/* 8010E48C-8010E52C 108DCC 00A0+00 1/1 0/0 0/0 .text bottleModelCallBack__9daAlink_cFv
|
||||
*/
|
||||
int daAlink_c::bottleModelCallBack() {
|
||||
@@ -322,7 +324,8 @@ int daAlink_c::procBottleGet() {
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void dInsect_c::Insect_Release() {
|
||||
// asm void dInsect_c::Insect_Release() {
|
||||
extern "C" asm void Insect_Release__9dInsect_cFv() {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_alink/Insect_Release__9dInsect_cFv.s"
|
||||
}
|
||||
|
||||
@@ -129,7 +129,8 @@ void daAlink_c::deleteArrow() {
|
||||
|
||||
if (arrow != NULL && fopAcM_GetName(arrow) == PROC_ARROW) {
|
||||
if (arrow->checkBombArrow() &&
|
||||
(mDamageTimer == daAlinkHIO_damage_c0::m.mInvincibleTime || i_checkModeFlg(8))) {
|
||||
(mDamageTimer == daAlinkHIO_damage_c0::m.mInvincibleTime || i_checkModeFlg(8)))
|
||||
{
|
||||
arrow->setBombArrowExplode();
|
||||
dComIfGp_addSelectItemNum(mSelectItemId, -1);
|
||||
dComIfGp_setItemArrowNumCount(-1);
|
||||
@@ -173,7 +174,8 @@ BOOL daAlink_c::cancelBowMoveRideNotAtn() {
|
||||
#pragma optimization_level 2
|
||||
BOOL daAlink_c::cancelBowMove() {
|
||||
if (mTargetedActor == NULL && !i_checkAttentionLock() && mFastShotTime == 0 &&
|
||||
!checkBowReadyAnime() && (!checkBowShootAnime() || mUpperFrameCtrl[2].checkAnmEnd())) {
|
||||
!checkBowReadyAnime() && (!checkBowShootAnime() || mUpperFrameCtrl[2].checkAnmEnd()))
|
||||
{
|
||||
resetUpperAnime(UPPER_2, lit_6041);
|
||||
return true;
|
||||
}
|
||||
@@ -266,6 +268,21 @@ asm int daAlink_c::checkNextActionBow() {
|
||||
#pragma pop
|
||||
|
||||
/* 800DFAE8-800DFBC8 0DA428 00E0+00 1/1 0/0 0/0 .text setBowModel__9daAlink_cFv */
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
void daAlink_c::setBowModel() {
|
||||
J3DAnmTransform* bck = (J3DAnmTransform*)mAnmHeap9.loadDataIdx(0x59);
|
||||
JKRHeap* old_heap = setItemHeap();
|
||||
|
||||
mHeldItemModel = initModel(loadAramBmd(0x314, 0x4C00), 0);
|
||||
field_0x730.init(bck, FALSE, 2, 1.0f, 0, -1, false);
|
||||
|
||||
mDoExt_setCurrentHeap(old_heap);
|
||||
field_0x33dc = field_0x730.getBckAnm()->getFrameMax() - 0.001f;
|
||||
field_0x2f95 = 5;
|
||||
field_0x2f94 = 0x67;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
@@ -274,6 +291,7 @@ asm void daAlink_c::setBowModel() {
|
||||
#include "asm/d/a/d_a_alink/setBowModel__9daAlink_cFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 800DFBC8-800DFC28 0DA508 0060+00 4/4 0/0 0/0 .text checkBowGrabLeftHand__9daAlink_cCFv
|
||||
*/
|
||||
|
||||
+237
-86
@@ -1,33 +1,75 @@
|
||||
/* 800F7C50-800F7C74 0F2590 0024+00 2/2 0/0 0/0 .text getCrawlMoveAnmSpeed__9daAlink_cFv
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daAlink_c::getCrawlMoveAnmSpeed() {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_alink/getCrawlMoveAnmSpeed__9daAlink_cFv.s"
|
||||
f32 daAlink_c::getCrawlMoveAnmSpeed() {
|
||||
return getAnmSpeedStickRate(daAlinkHIO_crouch_c0::m.mCrawlAnmSpeedMin,
|
||||
daAlinkHIO_crouch_c0::m.mCrawlAnmSpeedMax);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 800F7C74-800F7CE8 0F25B4 0074+00 2/2 0/0 0/0 .text getCrawlMoveSpeed__9daAlink_cFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daAlink_c::getCrawlMoveSpeed() {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_alink/getCrawlMoveSpeed__9daAlink_cFv.s"
|
||||
f32 daAlink_c::getCrawlMoveSpeed() {
|
||||
daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
|
||||
|
||||
f32 frame = frame_ctrl->getFrame();
|
||||
if (frame >= lit_16210) {
|
||||
frame = frame_ctrl->getFrame() - lit_16210;
|
||||
} else {
|
||||
frame = frame_ctrl->getFrame();
|
||||
}
|
||||
|
||||
return frame_ctrl->getRate() * daAlinkHIO_crouch_c0::m.mCrawlMoveRate *
|
||||
cM_fsin(lit_22146 * frame);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 800F7CE8-800F7E48 0F2628 0160+00 4/4 0/0 0/0 .text setCrawlMoveDirectionArrow__9daAlink_cFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daAlink_c::setCrawlMoveDirectionArrow() {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_alink/setCrawlMoveDirectionArrow__9daAlink_cFv.s"
|
||||
void daAlink_c::setCrawlMoveDirectionArrow() {
|
||||
u8 direction = 0;
|
||||
camera_class* camera = dComIfGp_getCamera(field_0x317c);
|
||||
BOOL bvar = cLib_distanceAngleS(fopCamM_GetAngleY(camera), shape_angle.y) > 0x4000;
|
||||
|
||||
if (field_0x3198 & 4) {
|
||||
if (!bvar) {
|
||||
direction = data_80452F38;
|
||||
} else {
|
||||
direction = data_80452F39;
|
||||
}
|
||||
}
|
||||
|
||||
if (field_0x3198 & 8) {
|
||||
if (!bvar) {
|
||||
direction |= data_80452F39;
|
||||
} else {
|
||||
direction |= data_80452F38;
|
||||
}
|
||||
}
|
||||
|
||||
if (field_0x3198 & 1) {
|
||||
if (shape_angle.y == current.angle.y) {
|
||||
if (!bvar) {
|
||||
direction |= 8;
|
||||
} else {
|
||||
direction |= 2;
|
||||
}
|
||||
} else if (!bvar) {
|
||||
direction |= 2;
|
||||
} else {
|
||||
direction |= 8;
|
||||
}
|
||||
}
|
||||
|
||||
if (shape_angle.y == current.angle.y) {
|
||||
if (!bvar) {
|
||||
direction |= 2;
|
||||
} else {
|
||||
direction |= 8;
|
||||
}
|
||||
} else if (!bvar) {
|
||||
direction |= 8;
|
||||
} else {
|
||||
direction |= 2;
|
||||
}
|
||||
|
||||
dComIfGp_setAdvanceDirection(direction);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 800F7E48-800F81C0 0F2788 0378+00 2/2 0/0 0/0 .text changeCrawlAutoMoveProc__9daAlink_cFP4cXyz
|
||||
*/
|
||||
@@ -45,22 +87,37 @@ asm void daAlink_c::changeCrawlAutoMoveProc(cXyz* param_0) {
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daAlink_c::getCrawlMoveVec(cXyz* param_0, cXyz* param_1, cXyz* param_2, int param_3,
|
||||
int param_4, u8* param_5) {
|
||||
asm int daAlink_c::getCrawlMoveVec(cXyz* param_0, cXyz* param_1, cXyz* param_2, int param_3,
|
||||
int param_4, u8* param_5) {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_alink/getCrawlMoveVec__9daAlink_cFP4cXyzP4cXyzP4cXyziiPUc.s"
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 800F85C0-800F8700 0F2F00 0140+00 2/2 0/0 0/0 .text crawlBgCheck__9daAlink_cFP4cXyzP4cXyzi */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daAlink_c::crawlBgCheck(cXyz* param_0, cXyz* param_1, int param_2) {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_alink/crawlBgCheck__9daAlink_cFP4cXyzP4cXyzi.s"
|
||||
void daAlink_c::crawlBgCheck(cXyz* param_0, cXyz* param_1, int param_2) {
|
||||
cXyz sp28;
|
||||
cXyz sp34;
|
||||
cXyz sp40;
|
||||
|
||||
cMtx_multVec(mpLinkModel->getBaseTRMtx(), &l_crawlTopOffset, &sp28);
|
||||
int temp_r30 = getCrawlMoveVec(&sp28, param_0, &sp34, 1, param_2, NULL);
|
||||
|
||||
cMtx_multVec(mpLinkModel->getBaseTRMtx(), &l_crawlTopUpOffset, &sp28);
|
||||
int temp_r29 = getCrawlMoveVec(&sp28, param_1, &sp40, 1, param_2, NULL);
|
||||
|
||||
if (temp_r30 != 0 && temp_r29 != 0) {
|
||||
if (sp34.abs2() > sp40.abs2()) {
|
||||
current.pos -= sp34;
|
||||
} else {
|
||||
current.pos -= sp40;
|
||||
}
|
||||
} else if (temp_r30 != 0) {
|
||||
current.pos -= sp34;
|
||||
} else if (temp_r29 != 0) {
|
||||
current.pos -= sp40;
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 800F8700-800F88F8 0F3040 01F8+00 2/2 0/0 0/0 .text
|
||||
* checkCrawlSideWall__9daAlink_cFP4cXyzP4cXyzP4cXyzP4cXyzPsPs */
|
||||
@@ -76,35 +133,47 @@ asm void daAlink_c::checkCrawlSideWall(cXyz* param_0, cXyz* param_1, cXyz* param
|
||||
|
||||
/* 800F88F8-800F89E0 0F3238 00E8+00 6/6 0/0 0/0 .text decideCrawlDoStatus__9daAlink_cFv
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daAlink_c::decideCrawlDoStatus() {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_alink/decideCrawlDoStatus__9daAlink_cFv.s"
|
||||
void daAlink_c::decideCrawlDoStatus() {
|
||||
if (dComIfGp_checkCameraAttentionStatus(field_0x317c, 0x80)) {
|
||||
if (checkSubjectEnd(1) || mWaterY > current.pos.y) {
|
||||
dComIfGp_clearPlayerStatus0(0, 0x2000);
|
||||
}
|
||||
} else {
|
||||
dCamera_c* camera = dCam_getBody();
|
||||
|
||||
if (camera->ChangeModeOK(4) && mWaterY <= current.pos.y) {
|
||||
i_onResetFlg0(RFLG0_UNK_4000000);
|
||||
|
||||
if (dComIfGp_checkCameraAttentionStatus(field_0x317c, 0x1000) && !checkEventRun()) {
|
||||
setSubjectMode();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 800F89E0-800F8A50 0F3320 0070+00 3/3 0/0 0/0 .text checkNotCrawlStand__9daAlink_cFP4cXyz */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daAlink_c::checkNotCrawlStand(cXyz* param_0) {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_alink/checkNotCrawlStand__9daAlink_cFP4cXyz.s"
|
||||
BOOL daAlink_c::checkNotCrawlStand(cXyz* param_0) {
|
||||
mLinkRoofChk.i_SetPos(*param_0);
|
||||
return dComIfG_Bgsp().RoofChk(&mLinkRoofChk) - current.pos.y <= field_0x598;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 800F8A50-800F8B00 0F3390 00B0+00 2/2 0/0 0/0 .text checkNotCrawlStand__9daAlink_cFP4cXyzP4cXyz
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daAlink_c::checkNotCrawlStand(cXyz* param_0, cXyz* param_1) {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_alink/checkNotCrawlStand__9daAlink_cFP4cXyzP4cXyz.s"
|
||||
BOOL daAlink_c::checkNotCrawlStand(cXyz* param_0, cXyz* param_1) {
|
||||
cXyz sp20;
|
||||
|
||||
sp20 = *param_0 + *param_1;
|
||||
if (checkNotCrawlStand(&sp20)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
sp20 = *param_0 - *param_1;
|
||||
if (checkNotCrawlStand(&sp20)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 800F8B00-800F8D04 0F3440 0204+00 2/2 0/0 0/0 .text
|
||||
* checkCrawlInHoll__9daAlink_cFP4cXyzP4cXyzP4cXyzi */
|
||||
@@ -118,34 +187,69 @@ asm void daAlink_c::checkCrawlInHoll(cXyz* param_0, cXyz* param_1, cXyz* param_2
|
||||
#pragma pop
|
||||
|
||||
/* 800F8D04-800F8DBC 0F3644 00B8+00 2/2 0/0 0/0 .text setCrawlMoveHoll__9daAlink_cFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daAlink_c::setCrawlMoveHoll() {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_alink/setCrawlMoveHoll__9daAlink_cFv.s"
|
||||
void daAlink_c::setCrawlMoveHoll() {
|
||||
f32 frame_ctrl_rate = mUnderFrameCtrl[0].getRate();
|
||||
|
||||
if (frame_ctrl_rate != FLOAT_LABEL(lit_6108)) {
|
||||
cLib_addCalcAngleS(&shape_angle.y, field_0x300c, 5, 0x1000, 0x800);
|
||||
current.angle.y = shape_angle.y;
|
||||
}
|
||||
|
||||
if (fabsf(current.pos.x - field_0x37c8.x) > lit_6040) {
|
||||
cLib_addCalc(¤t.pos.x, field_0x37c8.x, lit_5943, lit_7625, lit_6040);
|
||||
}
|
||||
|
||||
if (fabsf(current.pos.z - field_0x37c8.z) > lit_6040) {
|
||||
cLib_addCalc(¤t.pos.z, field_0x37c8.z, lit_5943, lit_7625, lit_6040);
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 800F8DBC-800F8F08 0F36FC 014C+00 1/1 0/0 0/0 .text setCrawlMoveAngle__9daAlink_cFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daAlink_c::setCrawlMoveAngle() {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_alink/setCrawlMoveAngle__9daAlink_cFv.s"
|
||||
void daAlink_c::setCrawlMoveAngle() {
|
||||
cXyz sp20;
|
||||
cXyz sp2C;
|
||||
cXyz sp38;
|
||||
|
||||
cLib_addCalcAngleS(&shape_angle.y, field_0x2fe2, daAlinkHIO_crouch_c0::m.mCrawlTurnRate,
|
||||
daAlinkHIO_crouch_c0::m.mCrawlTurnMax,
|
||||
daAlinkHIO_crouch_c0::m.mCrawlTurnMin);
|
||||
|
||||
if (shape_angle.y != current.angle.y) {
|
||||
if ((s16)(shape_angle.y - current.angle.y) > 0) {
|
||||
cMtx_multVec(mpLinkModel->getBaseTRMtx(), &l_crawlLSideFrontOffset, &sp20);
|
||||
cMtx_multVec(mpLinkModel->getBaseTRMtx(), &l_crawlLSideOffset, &sp38);
|
||||
} else {
|
||||
cMtx_multVec(mpLinkModel->getBaseTRMtx(), &l_crawlRSideFrontOffset, &sp20);
|
||||
cMtx_multVec(mpLinkModel->getBaseTRMtx(), &l_crawlRSideOffset, &sp38);
|
||||
}
|
||||
|
||||
mLinkGndChk.SetPos(&sp20);
|
||||
sp2C.set(sp20.x - sp38.x, dComIfG_Bgsp().GroundCross(&mLinkGndChk) - sp38.y,
|
||||
sp20.z - sp38.z);
|
||||
|
||||
if (cLib_distanceAngleS(sp2C.atan2sY_XZ(), shape_angle.x) > 0x800) {
|
||||
shape_angle.y = current.angle.y;
|
||||
} else {
|
||||
current.angle.y = shape_angle.y;
|
||||
}
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 800F8F08-800F8F84 0F3848 007C+00 6/6 0/0 0/0 .text stopHalfMoveAnime__9daAlink_cFf */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daAlink_c::stopHalfMoveAnime(f32 param_0) {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_alink/stopHalfMoveAnime__9daAlink_cFf.s"
|
||||
void daAlink_c::stopHalfMoveAnime(f32 param_0) {
|
||||
daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
|
||||
|
||||
f32 frame;
|
||||
if (frame_ctrl->checkPass(FLOAT_LABEL(lit_6108))) {
|
||||
frame = FLOAT_LABEL(lit_6108);
|
||||
} else {
|
||||
frame = param_0;
|
||||
}
|
||||
|
||||
frame_ctrl->setRate(FLOAT_LABEL(lit_6108));
|
||||
frame_ctrl->setFrame(frame);
|
||||
getNowAnmPackUnder(UNDER_0)->setFrame(frame);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 800F8F84-800F9210 0F38C4 028C+00 2/2 0/0 0/0 .text setCrawlAutoMoveAimPos__9daAlink_cFv */
|
||||
#pragma push
|
||||
@@ -168,14 +272,29 @@ asm int daAlink_c::procCrawlStartInit() {
|
||||
#pragma pop
|
||||
|
||||
/* 800F9384-800F9474 0F3CC4 00F0+00 1/0 0/0 0/0 .text procCrawlStart__9daAlink_cFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm int daAlink_c::procCrawlStart() {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_alink/procCrawlStart__9daAlink_cFv.s"
|
||||
int daAlink_c::procCrawlStart() {
|
||||
daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
|
||||
|
||||
decideCrawlDoStatus();
|
||||
field_0x33cc = lit_6040 - field_0x3478 * (field_0x347c - frame_ctrl->getFrame());
|
||||
|
||||
cXyz sp20(l_crawlFrontOffset.x, l_crawlFrontOffset.y, l_crawlFrontOffset.z * field_0x33cc);
|
||||
cXyz sp2C;
|
||||
cXyz sp38;
|
||||
|
||||
cMtx_multVec(mpLinkModel->getBaseTRMtx(), &sp20, &sp2C);
|
||||
sp20.y = lit_10039;
|
||||
|
||||
cMtx_multVec(mpLinkModel->getBaseTRMtx(), &sp20, &sp38);
|
||||
crawlBgCheck(&sp2C, &sp38, 0);
|
||||
|
||||
field_0x2f99 = 4;
|
||||
if (checkAnmEnd(frame_ctrl)) {
|
||||
procCrawlMoveInit(shape_angle.x, shape_angle.z);
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 800F9474-800F95B8 0F3DB4 0144+00 3/3 0/0 0/0 .text procCrawlMoveInit__9daAlink_cFss */
|
||||
#pragma push
|
||||
@@ -198,6 +317,29 @@ asm int daAlink_c::procCrawlMove() {
|
||||
#pragma pop
|
||||
|
||||
/* 800F99FC-800F9ABC 0F433C 00C0+00 1/1 0/0 0/0 .text procCrawlAutoMoveInit__9daAlink_cFiP4cXyz */
|
||||
// r30 / r31 swap
|
||||
#ifdef NONMATCHING
|
||||
int daAlink_c::procCrawlAutoMoveInit(int param_0, cXyz* param_1) {
|
||||
BOOL var_r30 = i_dComIfGp_checkPlayerStatus0(0, 0x2000);
|
||||
commonProcInit(PROC_CRAWL_AUTO_MOVE);
|
||||
field_0x37c8 = *param_1;
|
||||
field_0x33cc = lit_6040;
|
||||
field_0x3198 = param_0;
|
||||
field_0x3008 = 20;
|
||||
field_0x300a = 300;
|
||||
|
||||
dComIfGp_setPlayerStatus0(0, 0x8000000);
|
||||
setCrawlMoveDirectionArrow();
|
||||
mNormalSpeed = FLOAT_LABEL(lit_6108);
|
||||
field_0x2f99 = 12;
|
||||
|
||||
if (var_r30) {
|
||||
dComIfGp_setPlayerStatus0(0, 0x2000);
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
@@ -206,6 +348,7 @@ asm int daAlink_c::procCrawlAutoMoveInit(int param_0, cXyz* param_1) {
|
||||
#include "asm/d/a/d_a_alink/procCrawlAutoMoveInit__9daAlink_cFiP4cXyz.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 800F9ABC-800F9D7C 0F43FC 02C0+00 1/0 0/0 0/0 .text procCrawlAutoMove__9daAlink_cFv */
|
||||
#pragma push
|
||||
@@ -228,11 +371,19 @@ asm int daAlink_c::procCrawlEndInit(int param_0, s16 param_1, s16 param_2) {
|
||||
#pragma pop
|
||||
|
||||
/* 800F9F30-800F9FDC 0F4870 00AC+00 1/0 0/0 0/0 .text procCrawlEnd__9daAlink_cFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm int daAlink_c::procCrawlEnd() {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_alink/procCrawlEnd__9daAlink_cFv.s"
|
||||
int daAlink_c::procCrawlEnd() {
|
||||
daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
|
||||
|
||||
field_0x33cc = field_0x3478 * (frame_ctrl->getFrame() - field_0x347c);
|
||||
field_0x2f99 = 4;
|
||||
|
||||
if (checkAnmEnd(frame_ctrl)) {
|
||||
if (!checkNextActionFromCrouch(0)) {
|
||||
procWaitInit();
|
||||
}
|
||||
} else if (frame_ctrl->getFrame() < daAlinkHIO_crouch_c0::m.mCrawlEndAnm.mCheckFrame) {
|
||||
checkNextActionFromCrouch(1);
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
#pragma pop
|
||||
@@ -57,6 +57,25 @@ void daAlink_c::onPressedDamage(cXyz const& param_0, s16 param_1) {
|
||||
|
||||
/* 800D6F2C-800D6FE0 0D186C 00B4+00 3/3 0/0 0/0 .text checkNoLandDamageSlidePolygon__9daAlink_cFv
|
||||
*/
|
||||
// matches with cM3dGPla vtable
|
||||
#ifdef NONMATCHING
|
||||
BOOL daAlink_c::checkNoLandDamageSlidePolygon() {
|
||||
if (field_0x2fbb == 3) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (dComIfG_Bgsp().ChkPolySafe(mLinkAcch.m_gnd)) {
|
||||
cM3dGPla poly;
|
||||
dComIfG_Bgsp().GetTriPla(mLinkAcch.m_gnd, &poly);
|
||||
|
||||
if (poly.mNormal.y < field_0x3470) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
@@ -65,13 +84,15 @@ asm BOOL daAlink_c::checkNoLandDamageSlidePolygon() {
|
||||
#include "asm/d/a/d_a_alink/checkNoLandDamageSlidePolygon__9daAlink_cFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 800D6FE0-800D70A0 0D1920 00C0+00 6/6 0/0 0/0 .text checkCutLandDamage__9daAlink_cFv */
|
||||
void daAlink_c::checkCutLandDamage() {
|
||||
if (!checkEventRun()) {
|
||||
f32 var_f31 = (mFallHeight - current.pos.y) * lit_8782;
|
||||
|
||||
if (var_f31 >= daAlinkHIO_damFall_c0::m.mSmallDmgHeight && !checkNoLandDamageSlidePolygon()) {
|
||||
if (var_f31 >= daAlinkHIO_damFall_c0::m.mSmallDmgHeight && !checkNoLandDamageSlidePolygon())
|
||||
{
|
||||
if (var_f31 >= daAlinkHIO_damFall_c0::m.mBigDmgHeight) {
|
||||
setLandDamagePoint(8);
|
||||
} else {
|
||||
@@ -85,7 +106,9 @@ void daAlink_c::checkCutLandDamage() {
|
||||
|
||||
/* 800D70A0-800D7160 0D19E0 00C0+00 2/2 0/0 0/0 .text checkCaughtEscapeCutTurn__9daAlink_cFv */
|
||||
BOOL daAlink_c::checkCaughtEscapeCutTurn() {
|
||||
if (mLinkAcch.ChkGroundHit() && (i_checkSwordGet() || i_checkWolf()) && checkCutTurnInputTrigger()) {
|
||||
if (mLinkAcch.ChkGroundHit() && (i_checkSwordGet() || i_checkWolf()) &&
|
||||
checkCutTurnInputTrigger())
|
||||
{
|
||||
if (i_checkWolf()) {
|
||||
return procWolfRollAttackInit(2, 0);
|
||||
}
|
||||
@@ -104,7 +127,7 @@ BOOL daAlink_c::checkCaughtEscapeCutTurn() {
|
||||
/* 800D7160-800D7208 0D1AA0 00A8+00 1/0 0/0 0/0 .text setThrowDamage__9daAlink_cFsffiii
|
||||
*/
|
||||
bool daAlink_c::setThrowDamage(s16 param_0, f32 param_1, f32 param_2, int param_3, int param_4,
|
||||
int param_5) {
|
||||
int param_5) {
|
||||
field_0x3408 = param_1;
|
||||
field_0x340c = param_2;
|
||||
field_0x318c = param_3;
|
||||
@@ -134,10 +157,12 @@ bool daAlink_c::setThrowDamage(s16 param_0, f32 param_1, f32 param_2, int param_
|
||||
f32 daAlink_c::damageMagnification(int i_checkZoraMag, int param_1) {
|
||||
f32 base_mag;
|
||||
|
||||
if (param_1 == 0 && i_checkNoResetFlg3(FLG3_UNK_40000000) && !i_checkEndResetFlg2(ERFLG2_UNK_40)) {
|
||||
base_mag = lit_7624; /* 1.5 */
|
||||
if (param_1 == 0 && i_checkNoResetFlg3(FLG3_UNK_40000000) &&
|
||||
!i_checkEndResetFlg2(ERFLG2_UNK_40))
|
||||
{
|
||||
base_mag = lit_7624; /* 1.5 */
|
||||
} else {
|
||||
base_mag = lit_6040; /* 1.0 */
|
||||
base_mag = lit_6040; /* 1.0 */
|
||||
}
|
||||
|
||||
if (i_checkWolf() && !checkCargoCarry() && param_1 == 0) {
|
||||
@@ -260,14 +285,18 @@ asm void daAlink_c::checkPolyDamage() {
|
||||
|
||||
/* 800D7A98-800D7B18 0D23D8 0080+00 1/1 0/0 0/0 .text
|
||||
* checkElecReturnDamage__9daAlink_cFR12dCcD_GObjInfPP10fopAc_ac_c */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daAlink_c::checkElecReturnDamage(dCcD_GObjInf& param_0, fopAc_ac_c** param_1) {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_alink/checkElecReturnDamage__9daAlink_cFR12dCcD_GObjInfPP10fopAc_ac_c.s"
|
||||
bool daAlink_c::checkElecReturnDamage(dCcD_GObjInf& param_0, fopAc_ac_c** param_1) {
|
||||
if (param_0.ChkAtHit() && param_0.GetAtHitGObj() != NULL) {
|
||||
dCcD_GObjInf* gobj_p = (dCcD_GObjInf*)param_0.GetAtHitGObj();
|
||||
|
||||
if (gobj_p->GetTgSpl() == dCcG_Tg_Spl_UNK_1) {
|
||||
*param_1 = param_0.GetAtHitAc();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 800D7B18-800D7BE8 0D2458 00D0+00 1/1 0/0 0/0 .text damageTimerCount__9daAlink_cFv */
|
||||
void daAlink_c::damageTimerCount() {
|
||||
@@ -340,7 +369,7 @@ asm int daAlink_c::procDamage() {
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm int daAlink_c::procCoLargeDamageInit(int param_0, int param_1, s16 param_2, s16 param_3,
|
||||
dCcD_GObjInf* param_4, int param_5) {
|
||||
dCcD_GObjInf* param_4, int param_5) {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_alink/procCoLargeDamageInit__9daAlink_cFiissP12dCcD_GObjInfi.s"
|
||||
}
|
||||
@@ -453,15 +482,15 @@ asm int daAlink_c::procLandDamageInit(int param_0) {
|
||||
/* 800DB060-800DB140 0D59A0 00E0+00 1/0 0/0 0/0 .text procLandDamage__9daAlink_cFv */
|
||||
int daAlink_c::procLandDamage() {
|
||||
daPy_frameCtrl_c* frameCtrl = mUnderFrameCtrl;
|
||||
|
||||
|
||||
if (field_0x3198 != 0) {
|
||||
if (frameCtrl->checkAnmEnd()) {
|
||||
checkNextAction(0);
|
||||
} else if (frameCtrl->getFrame() > daAlinkHIO_damFall_c0::m.mStandAnm.mCheckFrame) {
|
||||
onModeFlg(4);
|
||||
checkNextAction(1);
|
||||
}
|
||||
} else {
|
||||
}
|
||||
} else {
|
||||
if (frameCtrl->checkAnmEnd()) {
|
||||
if (field_0x3008 > 0) {
|
||||
field_0x3008--;
|
||||
@@ -561,7 +590,8 @@ int daAlink_c::procScreamWaitInit() {
|
||||
if (i_checkEndResetFlg1(ERFLG1_UNK_2)) {
|
||||
setScreamWaitAnime();
|
||||
} else {
|
||||
setSingleAnimeBaseSpeed(ANM_WAIT, daAlinkHIO_move_c0::m.mWaitAnmSpeed, daAlinkHIO_basic_c0::m.mAnmBlendFactor);
|
||||
setSingleAnimeBaseSpeed(ANM_WAIT, daAlinkHIO_move_c0::m.mWaitAnmSpeed,
|
||||
daAlinkHIO_basic_c0::m.mAnmBlendFactor);
|
||||
field_0x300c = 0;
|
||||
}
|
||||
|
||||
@@ -655,14 +685,16 @@ int daAlink_c::procCoSwimFreezeReturnInit() {
|
||||
|
||||
f32 var_f31;
|
||||
if (i_checkWolf()) {
|
||||
setSingleAnimeWolfBaseSpeed(WANM_SWIM_WAIT, daAlinkHIO_wlDamNormal_c0::m.field_0x5C, lit_7625);
|
||||
setSingleAnimeWolfBaseSpeed(WANM_SWIM_WAIT, daAlinkHIO_wlDamNormal_c0::m.field_0x5C,
|
||||
lit_7625);
|
||||
mUnderFrameCtrl[0].setEnd(3);
|
||||
mUnderFrameCtrl[0].setAttribute(0);
|
||||
setFaceBasicTexture(FTANM_UNK_90);
|
||||
field_0x2f9b = 1;
|
||||
var_f31 = daAlinkHIO_wlSwim_c0::m.field_0x48;
|
||||
} else {
|
||||
setSingleAnime(ANM_SWIM_DMG_FREEZE, daAlinkHIO_damNormal_c0::m.field_0x60, FLOAT_LABEL(lit_6108), 5, lit_7625);
|
||||
setSingleAnime(ANM_SWIM_DMG_FREEZE, daAlinkHIO_damNormal_c0::m.field_0x60,
|
||||
FLOAT_LABEL(lit_6108), 5, lit_7625);
|
||||
voiceStart(Z2SE_AL_V_DAMAGE_FREEZE);
|
||||
var_f31 = daAlinkHIO_swim_c0::m.mInitHeight;
|
||||
}
|
||||
@@ -687,6 +719,25 @@ int daAlink_c::procCoSwimFreezeReturnInit() {
|
||||
}
|
||||
|
||||
/* 800DC474-800DC548 0D6DB4 00D4+00 1/0 0/0 0/0 .text procCoSwimFreezeReturn__9daAlink_cFv */
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
int daAlink_c::procCoSwimFreezeReturn() {
|
||||
if (field_0x300c == 0) {
|
||||
if (checkRestartDead(4, 1)) {
|
||||
i_onNoResetFlg1(FLG1_UNK_40000000);
|
||||
} else {
|
||||
u32 mode = 4;
|
||||
setLastSceneDamage(4, &mode);
|
||||
seStartSystem(Z2SE_FORCE_BACK);
|
||||
dStage_changeScene(3, 0.0f, mode, fopAcM_GetRoomNo(this), shape_angle.y, -1);
|
||||
}
|
||||
} else {
|
||||
field_0x300c--;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
@@ -694,4 +745,5 @@ asm int daAlink_c::procCoSwimFreezeReturn() {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_alink/procCoSwimFreezeReturn__9daAlink_cFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
+850
-413
File diff suppressed because it is too large
Load Diff
@@ -1,24 +1,3 @@
|
||||
#include "dolphin/types.h"
|
||||
#include "d/a/d_a_alink.h"
|
||||
#include "JSystem/J2DGraph/J2DAnmLoader.h"
|
||||
#include "JSystem/J3DGraphLoader/J3DAnmLoader.h"
|
||||
#include "JSystem/JMath/JMath.h"
|
||||
#include "SSystem/SComponent/c_math.h"
|
||||
#include "Z2AudioLib/Z2AudioMgr.h"
|
||||
#include "d/com/d_com_inf_game.h"
|
||||
#include "d/msg/d_msg_object.h"
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
#include "m_Do/m_Do_audio.h"
|
||||
#include "m_Do/m_Do_ext.h"
|
||||
#include "m_Do/m_Do_mtx.h"
|
||||
#include "rel/d/a/d_a_crod/d_a_crod.h"
|
||||
#include "rel/d/a/d_a_horse/d_a_horse.h"
|
||||
#include "rel/d/a/d_a_scene_exit/d_a_scene_exit.h"
|
||||
#include "rel/d/a/d_a_mg_rod/d_a_mg_rod.h"
|
||||
#include "rel/d/a/d_a_spinner/d_a_spinner.h"
|
||||
#include "rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.h"
|
||||
#include "rel/d/a/tag/d_a_tag_magne/d_a_tag_magne.h"
|
||||
|
||||
/* 800E23FC-800E243C 0DCD3C 0040+00 6/6 0/0 0/0 .text concatMagneBootMtx__9daAlink_cFv */
|
||||
void daAlink_c::concatMagneBootMtx() {
|
||||
if (i_checkMagneBootsOn()) {
|
||||
|
||||
+10
-10
@@ -3003,23 +3003,23 @@ asm daAlink_c::~daAlink_c() {
|
||||
/* 800CE208-800CE294 0C8B48 008C+00 1/0 0/0 0/0 .text daAlink_Delete__FP9daAlink_c */
|
||||
// destructor issue
|
||||
#ifdef NONMATCHING
|
||||
static bool daAlink_Delete(daAlink_c* p_link) {
|
||||
if (p_link->getClothesChangeWaitTimer() != 0) {
|
||||
p_link->loadModelDVD();
|
||||
return false;
|
||||
} else if (p_link->getShieldChangeWaitTimer() != 0) {
|
||||
p_link->loadShieldModelDVD();
|
||||
return false;
|
||||
static int daAlink_Delete(daAlink_c* i_this) {
|
||||
if (i_this->getClothesChangeWaitTimer() != 0) {
|
||||
i_this->loadModelDVD();
|
||||
return 0;
|
||||
} else if (i_this->getShieldChangeWaitTimer() != 0) {
|
||||
i_this->loadShieldModelDVD();
|
||||
return 0;
|
||||
} else {
|
||||
delete p_link;
|
||||
return true;
|
||||
delete i_this;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm bool daAlink_Delete(daAlink_c* param_0) {
|
||||
static asm int daAlink_Delete(daAlink_c* i_this) {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_alink/daAlink_Delete__FP9daAlink_c.s"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user