diff options
| author | Max Roncace <me@caseif.net> | 2025-08-08 05:56:18 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-08-08 12:56:18 +0300 |
| commit | 156d2b24c36309f455e0284806ae9d2170775bdb (patch) | |
| tree | ce861916f208d60d0e75ca0f0417c06c9db377cf /src/JSystem/J3DGraphBase/J3DShapeMtx.cpp | |
| parent | 57c9d6430818186504cd0457313a0197e0f4b84c (diff) | |
Misc. J3D improvements (#2570)
Diffstat (limited to 'src/JSystem/J3DGraphBase/J3DShapeMtx.cpp')
| -rw-r--r-- | src/JSystem/J3DGraphBase/J3DShapeMtx.cpp | 284 |
1 files changed, 141 insertions, 143 deletions
diff --git a/src/JSystem/J3DGraphBase/J3DShapeMtx.cpp b/src/JSystem/J3DGraphBase/J3DShapeMtx.cpp index 65caadad4b..e3fc9f2bc1 100644 --- a/src/JSystem/J3DGraphBase/J3DShapeMtx.cpp +++ b/src/JSystem/J3DGraphBase/J3DShapeMtx.cpp @@ -109,7 +109,6 @@ J3DTexGenBlock* J3DDifferedTexMtx::sTexGenBlock; J3DTexMtxObj* J3DDifferedTexMtx::sTexMtxObj; /* 8031322C-80313828 30DB6C 05FC+00 7/5 0/0 0/0 .text loadExecute__17J3DDifferedTexMtxFPA4_Cf */ -// NONMATCHING regalloc void J3DDifferedTexMtx::loadExecute(f32 const (*param_0)[4]) { static Mtx qMtx = { {0.5f, 0.0f, 0.5f, 0.0f}, @@ -121,194 +120,193 @@ void J3DDifferedTexMtx::loadExecute(f32 const (*param_0)[4]) { {0.0f, -0.5f, 0.0f, 0.5f}, {0.0f, 0.0f, 1.0f, 0.0f} }; - J3DTexCoord* tex_coord; - J3DTexMtx* tex_mtx; - Mtx* mtx; - Mtx44* eff_mtx; - Mtx tmp2; - Mtx44 tmp1, tmp0; - J3DTexMtxInfo* tex_mtx_info; - J3DTexGenBlock* tex_gen_block = sTexGenBlock; - J3DTexMtxObj* tex_mtx_obj = sTexMtxObj; + + Mtx* mtx; // sp_64 + Mtx sp_e8; + Mtx44 sp_a8, sp_68; + + J3DTexGenBlock* tex_gen_block = sTexGenBlock; // sp_60 + JUT_ASSERT_MSG(0xc3, tex_gen_block != NULL, "Error : null pointer"); + + J3DTexMtxObj* tex_mtx_obj = sTexMtxObj; // sp_5c + JUT_ASSERT_MSG(0xc6, tex_mtx_obj != NULL, "Error : null pointer"); + + J3DTexMtxInfo* tex_mtx_info_1; // sp_58 + int tex_gen_type; // sp_54 + J3DTexMtx* tex_mtx_2; // sp_50 + u16 tex_mtx_num = tex_mtx_obj->getNumTexMtx(); - if ((j3dSys.checkFlag(J3DSysFlag_PostTexMtx))) { - for (u16 i = 0; i < (u16)tex_mtx_num; i++) { - tex_coord = tex_gen_block->getTexCoord(i); - int tex_gen_type = tex_coord->getTexGenType(); + + if (j3dSys.checkFlag(J3DSysFlag_PostTexMtx)) { + for (u16 i = 0; i < tex_mtx_num; i++) { + tex_gen_type = tex_gen_block->getTexCoord(i)->getTexGenType(); if (tex_gen_type == 1 || tex_gen_type == 0) { - tex_mtx = tex_gen_block->getTexMtx(i); - u8 tex_gen_src = tex_mtx->getTexMtxInfo().mInfo; - u32 unk; - switch (tex_gen_src & 0x3f) { + tex_mtx_2 = tex_gen_block->getTexMtx(i); + JUT_ASSERT_MSG(0xd7, tex_mtx_2 != NULL, "Error : null pointer"); + tex_mtx_info_1 = &tex_mtx_2->getTexMtxInfo(); + u32 sp_4c = tex_mtx_info_1->mInfo & 0x3f; + switch (sp_4c) { case 3: case 9: { - Mtx& tmp5 = tex_mtx_obj->getMtx(i); - mtx = &tmp5; + mtx = &tex_mtx_obj->getMtx(i); break; } case 1: case 6: case 7: { - Mtx& tmp6 = tex_mtx_obj->getMtx(i); - mtx = &tmp6; + mtx = &tex_mtx_obj->getMtx(i); break; } case 2: - case 8: - PSMTXInverse(j3dSys.mViewMtx, tmp2); - PSMTXConcat(tex_mtx_obj->getMtx(i), tmp2, tmp2); - mtx = &tmp2; + case 8: { + MTXInverse(j3dSys.getViewMtx(), sp_e8); + MTXConcat(tex_mtx_obj->getMtx(i), sp_e8, sp_e8); + mtx = &sp_e8; break; - case 5: - tex_mtx_info = &tex_mtx->getTexMtxInfo(); - unk = (tex_gen_src & 0x80) >> 7; - if (unk == 0) { - J3DGetTextureMtxOld(tex_mtx_info->mSRT, tex_mtx_info->mCenter, tmp0); - } else if (unk == 1) { - J3DGetTextureMtxMayaOld(tex_mtx_info->mSRT, tmp0); + } + case 5: { + J3DTexMtxInfo* tex_mtx_info_2 = &tex_mtx_2->getTexMtxInfo(); // sp_48 + u32 sp_44 = (u32)(tex_mtx_info_2->mInfo & 0x80) >> 7; + if (sp_44 == 0) { + J3DGetTextureMtxOld(tex_mtx_info_2->mSRT, tex_mtx_info_2->mCenter, sp_68); + } else if (sp_44 == 1) { + J3DGetTextureMtxMayaOld(tex_mtx_info_2->mSRT, sp_68); } - eff_mtx = &tex_mtx_obj->getEffectMtx(i); - J3DMtxProjConcat(tmp0, *eff_mtx, tmp2); - PSMTXInverse(j3dSys.mViewMtx, tmp1); - PSMTXConcat(tmp2, tmp1, tmp2); - tmp2[2][3] = 0.0f; - tmp2[1][3] = 0.0f; - tmp2[0][3] = 0.0f; - mtx = &tmp2; + J3DMtxProjConcat(sp_68, tex_mtx_obj->getEffectMtx(i), sp_e8); + MTXInverse(j3dSys.getViewMtx(), sp_a8); + MTXConcat(sp_e8, sp_a8, sp_e8); + sp_e8[0][3] = sp_e8[1][3] = sp_e8[2][3] = 0.0f; + mtx = &sp_e8; break; - case 10: - tex_mtx_info = &tex_mtx->getTexMtxInfo(); - unk = (tex_gen_src & 0x80) >> 7; - if (unk == 0) { - J3DGetTextureMtx(tex_mtx_info->mSRT, tex_mtx_info->mCenter, tmp0); - } else if (unk == 1) { - J3DGetTextureMtxMaya(tex_mtx_info->mSRT, tmp0); + } + case 11: { + J3DTexMtxInfo* tex_mtx_info_2 = &tex_mtx_2->getTexMtxInfo(); // sp_40 + u32 sp_3c = (u32)(tex_mtx_info_2->mInfo & 0x80) >> 7; + if (sp_3c == 0) { + J3DGetTextureMtx(tex_mtx_info_2->mSRT, tex_mtx_info_2->mCenter, sp_68); + } else if (sp_3c == 1) { + J3DGetTextureMtxMaya(tex_mtx_info_2->mSRT, sp_68); } - PSMTXConcat(tmp0, qMtx, tmp0); - eff_mtx = &tex_mtx_obj->getEffectMtx(i); - J3DMtxProjConcat(tmp0, *eff_mtx, tmp2); - PSMTXInverse(j3dSys.mViewMtx, tmp1); - PSMTXConcat(tmp2, tmp1, tmp2); - tmp2[2][3] = 0.0f; - tmp2[1][3] = 0.0f; - tmp2[0][3] = 0.0f; - mtx = &tmp2; + MTXConcat(sp_68, qMtx, sp_68); + J3DMtxProjConcat(sp_68, tex_mtx_obj->getEffectMtx(i), sp_e8); + MTXInverse(j3dSys.getViewMtx(), sp_a8); + MTXConcat(sp_e8, sp_a8, sp_e8); + sp_e8[0][3] = sp_e8[1][3] = sp_e8[2][3] = 0.0f; + mtx = &sp_e8; break; - case 11: - tex_mtx_info = &tex_mtx->getTexMtxInfo(); - unk = (tex_gen_src & 0x80) >> 7; - if (unk == 0) { - J3DGetTextureMtx(tex_mtx_info->mSRT, tex_mtx_info->mCenter, tmp0); - } else if (unk == 1) { - J3DGetTextureMtxMaya(tex_mtx_info->mSRT, tmp0); + } + case 10: { + J3DTexMtxInfo* tex_mtx_info_2 = &tex_mtx_2->getTexMtxInfo(); // sp_38 + u32 sp_34 = (u32)(tex_mtx_info_2->mInfo & 0x80) >> 7; + if (sp_34 == 0) { + J3DGetTextureMtx(tex_mtx_info_2->mSRT, tex_mtx_info_2->mCenter, sp_68); + } else if (sp_34 == 1) { + J3DGetTextureMtxMaya(tex_mtx_info_2->mSRT, sp_68); } - PSMTXConcat(tmp0, qMtx2, tmp0); - eff_mtx = &tex_mtx_obj->getEffectMtx(i); - J3DMtxProjConcat(tmp0, *eff_mtx, tmp2); - PSMTXInverse(j3dSys.mViewMtx, tmp1); - PSMTXConcat(tmp2, tmp1, tmp2); - tmp2[2][3] = 0.0f; - tmp2[1][3] = 0.0f; - tmp2[0][3] = 0.0f; - mtx = &tmp2; - break; - default: - Mtx& tmp7 = tex_mtx_obj->getMtx(i); - mtx = &tmp7; + MTXConcat(sp_68, qMtx2, sp_68); + J3DMtxProjConcat(sp_68, tex_mtx_obj->getEffectMtx(i), sp_e8); + MTXInverse(j3dSys.getViewMtx(), sp_a8); + MTXConcat(sp_e8, sp_a8, sp_e8); + sp_e8[0][3] = sp_e8[1][3] = sp_e8[2][3] = 0.0f; + mtx = &sp_e8; break; } + case 0: + case 4: + default: { + mtx = &tex_mtx_obj->getMtx(i); + } + } GXLoadTexMtxImm(*mtx, i * 3 + 0x40, GX_MTX3x4); } } } else { - for (u16 i = 0; i < (u16)tex_mtx_num; i++) { + for (u16 i = 0; i < tex_mtx_num; i++) { int tex_gen_type = tex_gen_block->getTexCoord(i)->getTexGenType(); if (tex_gen_type == 1 || tex_gen_type == 0) { - tex_mtx = tex_gen_block->getTexMtx(i); - u8 tex_gen_src = tex_mtx->getTexMtxInfo().mInfo; - u32 unk; - switch (tex_gen_src & 0x3f) { + J3DTexMtx* tex_mtx = tex_gen_block->getTexMtx(i); // sp_2c + JUT_ASSERT_MSG(0x145, tex_mtx != NULL, "Error : null pointer"); + tex_mtx_info_1 = &tex_mtx->getTexMtxInfo(); + u32 tex_gen_src = tex_mtx_info_1->mInfo & 0x3f; // sp_28 + switch (tex_gen_src) { case 3: case 9: - PSMTXConcat(tex_mtx_obj->getMtx(i), param_0, tmp2); - mtx = &tmp2; + MTXConcat(tex_mtx_obj->getMtx(i), param_0, sp_e8); + mtx = &sp_e8; break; case 1: case 6: case 7: - PSMTXCopy(param_0, tmp1); - tmp1[2][3] = 0.0f; - tmp1[1][3] = 0.0f; - tmp1[0][3] = 0.0f; - PSMTXConcat(tex_mtx_obj->getMtx(i), tmp1, tmp2); - mtx = &tmp2; + MTXCopy(param_0, sp_a8); + sp_a8[0][3] = sp_a8[1][3] = sp_a8[2][3] = 0.0f; + MTXConcat(tex_mtx_obj->getMtx(i), sp_a8, sp_e8); + mtx = &sp_e8; break; case 2: case 8: mtx = &tex_mtx_obj->getMtx(i); break; - case 5: - tex_mtx_info = &tex_mtx->getTexMtxInfo(); - unk = (tex_gen_src & 0x80) >> 7; - if (unk == 0) { - J3DGetTextureMtxOld(tex_mtx_info->mSRT, tex_mtx_info->mCenter, tmp0); - } else if (unk == 1) { - J3DGetTextureMtxMayaOld(tex_mtx_info->mSRT, tmp0); + case 5: { + J3DTexMtxInfo* tex_mtx_info_2 = &tex_mtx->getTexMtxInfo(); // sp_24 + u32 sp_24 = (u32)(tex_mtx_info_2->mInfo & 0x80) >> 7; + if (sp_24 == 0) { + J3DGetTextureMtxOld(tex_mtx_info_2->mSRT, tex_mtx_info_2->mCenter, sp_68); + } else if (sp_24 == 1) { + J3DGetTextureMtxMayaOld(tex_mtx_info_2->mSRT, sp_68); } - eff_mtx = &tex_mtx_obj->getEffectMtx(i); - J3DMtxProjConcat(tmp0, *eff_mtx, tmp2); - PSMTXInverse(j3dSys.mViewMtx, tmp1); - PSMTXConcat(tmp2, tmp1, tmp2); - PSMTXConcat(tmp2, param_0, tmp2); - tmp2[2][3] = 0.0f; - tmp2[1][3] = 0.0f; - tmp2[0][3] = 0.0f; - mtx = &tmp2; + J3DMtxProjConcat(sp_68, tex_mtx_obj->getEffectMtx(i), sp_e8); + MTXInverse(j3dSys.getViewMtx(), sp_a8); + MTXConcat(sp_e8, sp_a8, sp_e8); + MTXConcat(sp_e8, param_0, sp_e8); + sp_e8[0][3] = sp_e8[1][3] = sp_e8[2][3] = 0.0f; + mtx = &sp_e8; break; - case 10: - tex_mtx_info = &tex_mtx->getTexMtxInfo(); - unk = (tex_gen_src & 0x80) >> 7; - if (unk == 0) { - J3DGetTextureMtx(tex_mtx_info->mSRT, tex_mtx_info->mCenter, tmp0); - } else if (unk == 1) { - J3DGetTextureMtxMaya(tex_mtx_info->mSRT, tmp0); + } + case 11: { + J3DTexMtxInfo* tex_mtx_info_2 = &tex_mtx->getTexMtxInfo(); // sp_1c + u32 sp_18 = (u32)(tex_mtx_info_2->mInfo & 0x80) >> 7; + if (sp_18 == 0) { + J3DGetTextureMtx(tex_mtx_info_2->mSRT, tex_mtx_info_2->mCenter, sp_68); + } else if (sp_18 == 1) { + J3DGetTextureMtxMaya(tex_mtx_info_2->mSRT, sp_68); } - PSMTXConcat(tmp0, qMtx, tmp0); - eff_mtx = &tex_mtx_obj->getEffectMtx(i); - J3DMtxProjConcat(tmp0, *eff_mtx, tmp2); - PSMTXInverse(j3dSys.mViewMtx, tmp1); - PSMTXConcat(tmp2, tmp1, tmp2); - PSMTXConcat(tmp2, param_0, tmp2); - tmp2[2][3] = 0.0f; - tmp2[1][3] = 0.0f; - tmp2[0][3] = 0.0f; - mtx = &tmp2; + MTXConcat(sp_68, qMtx, sp_68); + J3DMtxProjConcat(sp_68, tex_mtx_obj->getEffectMtx(i), sp_e8); + MTXInverse(j3dSys.getViewMtx(), sp_a8); + MTXConcat(sp_e8, sp_a8, sp_e8); + MTXConcat(sp_e8, param_0, sp_e8); + sp_e8[0][3] = sp_e8[1][3] = sp_e8[2][3] = 0.0f; + mtx = &sp_e8; break; - case 11: - tex_mtx_info = &tex_mtx->getTexMtxInfo(); - unk = (tex_gen_src & 0x80) >> 7; - if (unk == 0) { - J3DGetTextureMtx(tex_mtx_info->mSRT, tex_mtx_info->mCenter, tmp0); - } else if (unk == 1) { - J3DGetTextureMtxMaya(tex_mtx_info->mSRT, tmp0); + } + case 10: { + J3DTexMtxInfo* tex_mtx_info_2 = &tex_mtx->getTexMtxInfo(); // sp_14 + u32 sp_10 = (u32)(tex_mtx_info_2->mInfo & 0x80) >> 7; + if (sp_10 == 0) { + J3DGetTextureMtx(tex_mtx_info_2->mSRT, tex_mtx_info_2->mCenter, sp_68); + } else if (sp_10 == 1) { + J3DGetTextureMtxMaya(tex_mtx_info_2->mSRT, sp_68); } - PSMTXConcat(tmp0, qMtx2, tmp0); - eff_mtx = &tex_mtx_obj->getEffectMtx(i); - J3DMtxProjConcat(tmp0, *eff_mtx, tmp2); - PSMTXInverse(j3dSys.mViewMtx, tmp1); - PSMTXConcat(tmp2, tmp1, tmp2); - PSMTXConcat(tmp2, param_0, tmp2); - tmp2[2][3] = 0.0f; - tmp2[1][3] = 0.0f; - tmp2[0][3] = 0.0f; - mtx = &tmp2; + MTXConcat(sp_68, qMtx2, sp_68); + J3DMtxProjConcat(sp_68, tex_mtx_obj->getEffectMtx(i), sp_e8); + MTXInverse(j3dSys.getViewMtx(), sp_a8); + MTXConcat(sp_e8, sp_a8, sp_e8); + MTXConcat(sp_e8, param_0, sp_e8); + sp_e8[2][3] = 0.0f; + sp_e8[1][3] = 0.0f; + sp_e8[0][3] = 0.0f; + mtx = &sp_e8; break; - default: + } + case 0: + case 4: + default: { mtx = &tex_mtx_obj->getMtx(i); break; } - GXLoadTexMtxImm(*mtx, i * 3 + 0x1e, - (GXTexMtxType)tex_mtx->getTexMtxInfo().mProjection); + } + GXLoadTexMtxImm(*mtx, i * 3 + 30, + (GXTexMtxType)tex_mtx_info_1->mProjection); } } } |
