d_a_npc_fa1 100% with weak order, add inlines

This commit is contained in:
LagoLunatic
2025-06-01 19:09:57 -04:00
parent 5369e5f7fa
commit 4e7f5de0f3
9 changed files with 240 additions and 246 deletions
+31 -31
View File
@@ -1233,7 +1233,7 @@ ERROR_EXIT:
}
/* 80012A2C-80012D78 .text calc__14mDoExt_McaMorfFUs */
void mDoExt_McaMorf::calc(u16 param_0) {
void mDoExt_McaMorf::calc(u16 jnt_no) {
if (!mpModel) {
return;
}
@@ -1243,37 +1243,37 @@ void mDoExt_McaMorf::calc(u16 param_0) {
if (mpTransformInfo == NULL) {
infoPtr = &info1;
} else {
infoPtr = &mpTransformInfo[param_0];
infoPtr = &mpTransformInfo[jnt_no];
}
Quaternion quat1;
Quaternion* quatPtr;
if (mpQuat == NULL) {
quatPtr = &quat1;
} else {
quatPtr = &mpQuat[param_0];
quatPtr = &mpQuat[jnt_no];
}
if (!mpAnm) {
*infoPtr = mpModel->getModelData()->getJointNodePointer(param_0)->getTransformInfo();
*infoPtr = mpModel->getModelData()->getJointNodePointer(jnt_no)->getTransformInfo();
if (mpCallback1) {
mpCallback1->execute(param_0, infoPtr);
mpCallback1->execute(jnt_no, infoPtr);
}
JMAEulerToQuat(infoPtr->mRotation.x, infoPtr->mRotation.y, infoPtr->mRotation.z, quatPtr);
calcTransform(param_0, *infoPtr);
calcTransform(jnt_no, *infoPtr);
} else if (mCurMorf >= 1.0f || !mpTransformInfo || !mpQuat) {
mpAnm->getTransform(param_0, infoPtr);
mpAnm->getTransform(jnt_no, infoPtr);
if (mpCallback1) {
mpCallback1->execute(param_0, infoPtr);
mpCallback1->execute(jnt_no, infoPtr);
}
JMAEulerToQuat(infoPtr->mRotation.x, infoPtr->mRotation.y, infoPtr->mRotation.z, quatPtr);
calcTransform(param_0, *infoPtr);
calcTransform(jnt_no, *infoPtr);
} else {
f32 f31 = (mCurMorf - mPrevMorf) / (1.0f - mPrevMorf);
f32 f30 = 1.0f - f31;
J3DTransformInfo info2;
Quaternion quat2;
mpAnm->getTransform(param_0, &info2);
mpAnm->getTransform(jnt_no, &info2);
if (mpCallback1) {
mpCallback1->execute(param_0, &info2);
mpCallback1->execute(jnt_no, &info2);
}
JMAEulerToQuat(info2.mRotation.x, info2.mRotation.y, info2.mRotation.z, &quat2);
JMAQuatLerp(quatPtr, &quat2, f31, quatPtr);
@@ -1285,10 +1285,10 @@ void mDoExt_McaMorf::calc(u16 param_0) {
infoPtr->mScale.x = infoPtr->mScale.x * f30 + info2.mScale.x * f31;
infoPtr->mScale.y = infoPtr->mScale.y * f30 + info2.mScale.y * f31;
infoPtr->mScale.z = infoPtr->mScale.z * f30 + info2.mScale.z * f31;
mDoExt_setJ3DData(mtx, infoPtr, param_0);
mDoExt_setJ3DData(mtx, infoPtr, jnt_no);
}
if (mpCallback2) {
mpCallback2->execute(param_0);
mpCallback2->execute(jnt_no);
}
}
@@ -1521,7 +1521,7 @@ void mDoExt_McaMorf2::ERROR_EXIT() {
}
/* 80013770-80013E50 .text calc__15mDoExt_McaMorf2FUs */
void mDoExt_McaMorf2::calc(u16 param_0) {
void mDoExt_McaMorf2::calc(u16 jnt_no) {
/* Nonmatching - regalloc (fixing the regalloc causes an instruction swap on f30 = mAnmRate) */
if (!mpModel) {
return;
@@ -1534,7 +1534,7 @@ void mDoExt_McaMorf2::calc(u16 param_0) {
if (mpTransformInfo == NULL) {
infoPtr = &sp88;
} else {
infoPtr = &mpTransformInfo[param_0];
infoPtr = &mpTransformInfo[jnt_no];
}
Quaternion sp48[2];
Quaternion sp28[2];
@@ -1544,29 +1544,29 @@ void mDoExt_McaMorf2::calc(u16 param_0) {
if (mpQuat == NULL) {
quatPtr = &sp18;
} else {
quatPtr = &mpQuat[param_0];
quatPtr = &mpQuat[jnt_no];
}
Mtx mtx;
f32 f31;
f32 f30;
if (!mpAnm1) {
*infoPtr = mpModel->getModelData()->getJointNodePointer(param_0)->getTransformInfo();
*infoPtr = mpModel->getModelData()->getJointNodePointer(jnt_no)->getTransformInfo();
if (mpCallback1) {
mpCallback1->execute(param_0, infoPtr);
mpCallback1->execute(jnt_no, infoPtr);
}
JMAEulerToQuat(infoPtr->mRotation.x, infoPtr->mRotation.y, infoPtr->mRotation.z, quatPtr);
calcTransform(param_0, *infoPtr);
calcTransform(jnt_no, *infoPtr);
} else if (mCurMorf >= 1.0f || !mpTransformInfo || !mpQuat) {
mpAnm1->getTransform(param_0, &spD8[0]);
mpAnm1->getTransform(jnt_no, &spD8[0]);
if (!mpAnm2) {
if (mpCallback1) {
mpCallback1->execute(param_0, &spD8[0]);
mpCallback1->execute(jnt_no, &spD8[0]);
}
JMAEulerToQuat(spD8[0].mRotation.x, spD8[0].mRotation.y, spD8[0].mRotation.z, quatPtr);
calcTransform(param_0, spD8[0]);
calcTransform(jnt_no, spD8[0]);
*infoPtr = spD8[0];
} else {
mpAnm2->getTransform(param_0, &spD8[1]);
mpAnm2->getTransform(jnt_no, &spD8[1]);
f31 = 1.0f - mAnmRate;
f30 = mAnmRate;
infoPtr->mScale.x = spD8[0].mScale.x * f31 + spD8[1].mScale.x * f30;
@@ -1580,14 +1580,14 @@ void mDoExt_McaMorf2::calc(u16 param_0) {
}
JMAQuatLerp(&sp48[0], &sp48[1], f30 / (f31 + f30), quatPtr);
mDoMtx_quat(mtx, quatPtr);
mDoExt_setJ3DData(mtx, infoPtr, param_0);
mDoExt_setJ3DData(mtx, infoPtr, jnt_no);
}
} else if (!mpAnm2) {
f30 = (mCurMorf - mPrevMorf) / (1.0f - mPrevMorf);
f31 = 1.0f - f30;
mpAnm1->getTransform(param_0, &sp68);
mpAnm1->getTransform(jnt_no, &sp68);
if (mpCallback1) {
mpCallback1->execute(param_0, &sp68);
mpCallback1->execute(jnt_no, &sp68);
}
JMAEulerToQuat(sp68.mRotation.x, sp68.mRotation.y, sp68.mRotation.z, &sp08);
JMAQuatLerp(quatPtr, &sp08, f30, quatPtr);
@@ -1598,10 +1598,10 @@ void mDoExt_McaMorf2::calc(u16 param_0) {
infoPtr->mScale.x = infoPtr->mScale.x * f31 + sp68.mScale.x * f30;
infoPtr->mScale.y = infoPtr->mScale.y * f31 + sp68.mScale.y * f30;
infoPtr->mScale.z = infoPtr->mScale.z * f31 + sp68.mScale.z * f30;
mDoExt_setJ3DData(mtx, infoPtr, param_0);
mDoExt_setJ3DData(mtx, infoPtr, jnt_no);
} else {
mpAnm1->getTransform(param_0, &spD8[0]);
mpAnm2->getTransform(param_0, &spD8[1]);
mpAnm1->getTransform(jnt_no, &spD8[0]);
mpAnm2->getTransform(jnt_no, &spD8[1]);
f31 = 1.0f - mAnmRate;
f30 = mAnmRate;
sp68.mScale.x = spD8[0].mScale.x * f31 + spD8[1].mScale.x * f30;
@@ -1626,10 +1626,10 @@ void mDoExt_McaMorf2::calc(u16 param_0) {
infoPtr->mScale.y = infoPtr->mScale.y * f30 + sp68.mScale.y * f31;
infoPtr->mScale.z = infoPtr->mScale.z * f30 + sp68.mScale.z * f31;
mDoMtx_quat(mtx, quatPtr);
mDoExt_setJ3DData(mtx, infoPtr, param_0);
mDoExt_setJ3DData(mtx, infoPtr, jnt_no);
}
if (mpCallback2) {
mpCallback2->execute(param_0);
mpCallback2->execute(jnt_no);
}
}