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:
TakaRikka
2023-03-07 10:44:25 -08:00
committed by GitHub
parent d7ab9423ad
commit 6c2e18af70
116 changed files with 2109 additions and 4931 deletions
+814 -589
View File
File diff suppressed because it is too large Load Diff
+4 -1
View File
@@ -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"
}
+20 -2
View File
@@ -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
View File
@@ -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(&current.pos.x, field_0x37c8.x, lit_5943, lit_7625, lit_6040);
}
if (fabsf(current.pos.z - field_0x37c8.z) > lit_6040) {
cLib_addCalc(&current.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
+73 -21
View File
@@ -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
View File
File diff suppressed because it is too large Load Diff
-21
View File
@@ -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
View File
@@ -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"
}