J3DModel::calcDrawMtx regalloc fix

This commit is contained in:
LagoLunatic
2024-01-04 14:18:52 -05:00
parent 2566627b09
commit d19c0890a1
+13 -13
View File
@@ -596,34 +596,34 @@ extern void J3DPSMtxArrayConcat(f32(*)[4], f32(*)[4], f32(*)[4], u32);
/* 802EEBDC-802EEE30 .text calcDrawMtx__8J3DModelFv */
void J3DModel::calcDrawMtx() {
/* Nonmatching - regalloc */
u16 i;
switch (getMtxCalcMode()) {
case 0:
MtxP viewMtx = j3dSys.getViewMtx();
for (u16 i = 0; i < getModelData()->getDrawFullWgtMtxNum(); i++) {
u16 drawMtxIdx = getModelData()->getDrawMtxIndex(i);
for (i = 0; i < mModelData->getDrawFullWgtMtxNum(); i++) {
u16 drawMtxIdx = mModelData->getDrawMtxIndex(i);
MTXConcat(viewMtx, getAnmMtx(drawMtxIdx), getDrawMtx(i));
}
if (getModelData()->getDrawMtxNum() > getModelData()->getDrawFullWgtMtxNum()) {
J3DPSMtxArrayConcat(viewMtx, getWeightAnmMtx(0), getDrawMtx(getModelData()->getDrawFullWgtMtxNum()), getModelData()->getWEvlpMtxNum());
if (mModelData->getDrawMtxNum() > mModelData->getDrawFullWgtMtxNum()) {
J3DPSMtxArrayConcat(viewMtx, getWeightAnmMtx(0), getDrawMtx(mModelData->getDrawFullWgtMtxNum()), mModelData->getWEvlpMtxNum());
}
break;
case 1:
for (u16 i = 0; i < getModelData()->getDrawFullWgtMtxNum(); i++) {
MTXCopy(getAnmMtx(getModelData()->getDrawMtxIndex(i)), getDrawMtx(i));
for (i = 0; i < mModelData->getDrawFullWgtMtxNum(); i++) {
MTXCopy(getAnmMtx(mModelData->getDrawMtxIndex(i)), getDrawMtx(i));
}
for (u16 i = 0; i < getModelData()->getWEvlpMtxNum(); i++) {
MTXCopy(getWeightAnmMtx(i), getDrawMtx(getModelData()->getDrawFullWgtMtxNum() + i));
for (i = 0; i < mModelData->getWEvlpMtxNum(); i++) {
MTXCopy(getWeightAnmMtx(i), getDrawMtx(mModelData->getDrawFullWgtMtxNum() + i));
}
break;
case 2:
calcViewBaseMtx(j3dSys.getViewMtx(), mBaseScale, mBaseTransformMtx, mViewBaseMtx);
for (u16 i = 0; i < getModelData()->getDrawFullWgtMtxNum(); i++) {
u16 drawMtxIdx = getModelData()->getDrawMtxIndex(i);
for (i = 0; i < mModelData->getDrawFullWgtMtxNum(); i++) {
u16 drawMtxIdx = mModelData->getDrawMtxIndex(i);
MTXConcat(mViewBaseMtx, getAnmMtx(drawMtxIdx), getDrawMtx(i));
}
if (getModelData()->getDrawMtxNum() > getModelData()->getDrawFullWgtMtxNum()) {
J3DPSMtxArrayConcat(mViewBaseMtx, getWeightAnmMtx(0), getDrawMtx(getModelData()->getDrawFullWgtMtxNum()), getModelData()->getWEvlpMtxNum());
if (mModelData->getDrawMtxNum() > mModelData->getDrawFullWgtMtxNum()) {
J3DPSMtxArrayConcat(mViewBaseMtx, getWeightAnmMtx(0), getDrawMtx(mModelData->getDrawFullWgtMtxNum()), mModelData->getWEvlpMtxNum());
}
break;
}