From 6c945a4e29c567960fd77320cf6f72387811eb33 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Fri, 14 Jul 2023 11:30:07 +0300 Subject: [PATCH] Work on J3DSkinDeform --- Progress.md | 8 +- ...DPSWeightMTXMultVecSR__FPA4_ffP3VecP3Vec.s | 41 - ...J3DPSWeightMTXMultVec__FPA4_ffP3VecP3Vec.s | 47 -- .../J3DSkinDeform/__ct__12J3DSkinNListFv.s | 9 - .../J3DSkinDeform/__ct__13J3DSkinDeformFv.s | 18 - .../J3DSkinDeform/__dt__13J3DSkinDeformFv.s | 20 - ...ointMtx__13J3DSkinDeformFP12J3DMtxBuffer.s | 34 - ...cNrmMtx__13J3DSkinDeformFP12J3DMtxBuffer.s | 100 --- ...Skin_VtxNrmF32__12J3DSkinNListFPA4_fPvPv.s | 37 - ...Skin_VtxPosF32__12J3DSkinNListFPA4_fPvPv.s | 37 - .../calc__15J3DVtxColorCalcFP8J3DModel.s | 13 - ...eformCFP15J3DVertexBufferP12J3DMtxBuffer.s | 86 --- ...eformCFP15J3DVertexBufferP12J3DMtxBuffer.s | 82 -- ...DeformFP15J3DVertexBufferP12J3DMtxBuffer.s | 79 -- .../deform__13J3DSkinDeformFP8J3DModel.s | 39 - ...kinInfo__13J3DSkinDeformFP12J3DModelData.s | 385 ---------- ...xPosNrm__13J3DSkinDeformFP12J3DModelData.s | 89 --- .../JSystem/J3DGraphAnimator/J3DJointTree.h | 3 +- include/JSystem/J3DGraphAnimator/J3DModel.h | 1 + .../JSystem/J3DGraphAnimator/J3DModelData.h | 7 + .../JSystem/J3DGraphAnimator/J3DMtxBuffer.h | 5 +- .../JSystem/J3DGraphAnimator/J3DSkinDeform.h | 45 +- include/JSystem/J3DGraphBase/J3DShape.h | 1 + include/JSystem/J3DGraphBase/J3DShapeDraw.h | 1 + include/JSystem/J3DGraphBase/J3DTransform.h | 193 +++++ include/JSystem/J3DGraphBase/J3DVertex.h | 24 + include/dolphin/mtx/mtx.h | 1 + .../J3DGraphAnimator/J3DSkinDeform.cpp | 711 ++++++++++++++---- libs/JSystem/J3DGraphBase/J3DTransform.cpp | 6 +- 29 files changed, 840 insertions(+), 1282 deletions(-) delete mode 100644 asm/JSystem/J3DGraphAnimator/J3DSkinDeform/J3DPSWeightMTXMultVecSR__FPA4_ffP3VecP3Vec.s delete mode 100644 asm/JSystem/J3DGraphAnimator/J3DSkinDeform/J3DPSWeightMTXMultVec__FPA4_ffP3VecP3Vec.s delete mode 100644 asm/JSystem/J3DGraphAnimator/J3DSkinDeform/__ct__12J3DSkinNListFv.s delete mode 100644 asm/JSystem/J3DGraphAnimator/J3DSkinDeform/__ct__13J3DSkinDeformFv.s delete mode 100644 asm/JSystem/J3DGraphAnimator/J3DSkinDeform/__dt__13J3DSkinDeformFv.s delete mode 100644 asm/JSystem/J3DGraphAnimator/J3DSkinDeform/calcAnmInvJointMtx__13J3DSkinDeformFP12J3DMtxBuffer.s delete mode 100644 asm/JSystem/J3DGraphAnimator/J3DSkinDeform/calcNrmMtx__13J3DSkinDeformFP12J3DMtxBuffer.s delete mode 100644 asm/JSystem/J3DGraphAnimator/J3DSkinDeform/calcSkin_VtxNrmF32__12J3DSkinNListFPA4_fPvPv.s delete mode 100644 asm/JSystem/J3DGraphAnimator/J3DSkinDeform/calcSkin_VtxPosF32__12J3DSkinNListFPA4_fPvPv.s delete mode 100644 asm/JSystem/J3DGraphAnimator/J3DSkinDeform/calc__15J3DVtxColorCalcFP8J3DModel.s delete mode 100644 asm/JSystem/J3DGraphAnimator/J3DSkinDeform/deformFastVtxNrm_F32__13J3DSkinDeformCFP15J3DVertexBufferP12J3DMtxBuffer.s delete mode 100644 asm/JSystem/J3DGraphAnimator/J3DSkinDeform/deformFastVtxPos_F32__13J3DSkinDeformCFP15J3DVertexBufferP12J3DMtxBuffer.s delete mode 100644 asm/JSystem/J3DGraphAnimator/J3DSkinDeform/deform__13J3DSkinDeformFP15J3DVertexBufferP12J3DMtxBuffer.s delete mode 100644 asm/JSystem/J3DGraphAnimator/J3DSkinDeform/deform__13J3DSkinDeformFP8J3DModel.s delete mode 100644 asm/JSystem/J3DGraphAnimator/J3DSkinDeform/initSkinInfo__13J3DSkinDeformFP12J3DModelData.s delete mode 100644 asm/JSystem/J3DGraphAnimator/J3DSkinDeform/transformVtxPosNrm__13J3DSkinDeformFP12J3DModelData.s diff --git a/Progress.md b/Progress.md index d0cf12cfcea..bbb782c9177 100644 --- a/Progress.md +++ b/Progress.md @@ -7,22 +7,22 @@ Section | Percentage | Decompiled (bytes) | Total (bytes) .init | 97.972973% | 9280 | 9472 .extab | 100.000000% | 96 | 96 .extabindex | 100.000000% | 96 | 96 -.text | 28.373683% | 1020472 | 3596544 +.text | 28.487793% | 1024576 | 3596544 .ctors | 100.000000% | 448 | 448 .dtors | 100.000000% | 32 | 32 .rodata | 100.000000% | 193856 | 193856 .data | 100.000000% | 197632 | 197632 .sdata | 100.000000% | 1408 | 1408 .sdata2 | 100.000000% | 20832 | 20832 -Total | 35.924542% | 1444408 | 4020672 +Total | 36.026614% | 1448512 | 4020672 ## Total Section | Percentage | Decompiled (bytes) | Total (bytes) ---|---|---|--- -main.dol | 35.924542% | 1444408 | 4020672 +main.dol | 36.026614% | 1448512 | 4020672 RELs | 33.847533% | 3892576 | 11500324 -Total | 34.385577% | 5336984 | 15520996 +Total | 34.412018% | 5341088 | 15520996 ## RELs diff --git a/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/J3DPSWeightMTXMultVecSR__FPA4_ffP3VecP3Vec.s b/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/J3DPSWeightMTXMultVecSR__FPA4_ffP3VecP3Vec.s deleted file mode 100644 index ff23845410b..00000000000 --- a/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/J3DPSWeightMTXMultVecSR__FPA4_ffP3VecP3Vec.s +++ /dev/null @@ -1,41 +0,0 @@ -lbl_8032C7BC: -/* 8032C7BC C0 03 00 00 */ lfs f0, 0(r3) -/* 8032C7C0 C0 44 00 00 */ lfs f2, 0(r4) -/* 8032C7C4 EC 60 00 B2 */ fmuls f3, f0, f2 -/* 8032C7C8 C0 03 00 10 */ lfs f0, 0x10(r3) -/* 8032C7CC EC 80 00 B2 */ fmuls f4, f0, f2 -/* 8032C7D0 C0 03 00 20 */ lfs f0, 0x20(r3) -/* 8032C7D4 EC A0 00 B2 */ fmuls f5, f0, f2 -/* 8032C7D8 C0 03 00 04 */ lfs f0, 4(r3) -/* 8032C7DC C0 44 00 04 */ lfs f2, 4(r4) -/* 8032C7E0 EC 00 00 B2 */ fmuls f0, f0, f2 -/* 8032C7E4 EC 63 00 2A */ fadds f3, f3, f0 -/* 8032C7E8 C0 03 00 14 */ lfs f0, 0x14(r3) -/* 8032C7EC EC 00 00 B2 */ fmuls f0, f0, f2 -/* 8032C7F0 EC 84 00 2A */ fadds f4, f4, f0 -/* 8032C7F4 C0 03 00 24 */ lfs f0, 0x24(r3) -/* 8032C7F8 EC 00 00 B2 */ fmuls f0, f0, f2 -/* 8032C7FC EC A5 00 2A */ fadds f5, f5, f0 -/* 8032C800 C0 03 00 08 */ lfs f0, 8(r3) -/* 8032C804 C0 44 00 08 */ lfs f2, 8(r4) -/* 8032C808 EC 00 00 B2 */ fmuls f0, f0, f2 -/* 8032C80C EC 63 00 2A */ fadds f3, f3, f0 -/* 8032C810 C0 03 00 18 */ lfs f0, 0x18(r3) -/* 8032C814 EC 00 00 B2 */ fmuls f0, f0, f2 -/* 8032C818 EC 84 00 2A */ fadds f4, f4, f0 -/* 8032C81C C0 03 00 28 */ lfs f0, 0x28(r3) -/* 8032C820 EC 00 00 B2 */ fmuls f0, f0, f2 -/* 8032C824 EC A5 00 2A */ fadds f5, f5, f0 -/* 8032C828 C0 45 00 00 */ lfs f2, 0(r5) -/* 8032C82C EC 03 00 72 */ fmuls f0, f3, f1 -/* 8032C830 EC 02 00 2A */ fadds f0, f2, f0 -/* 8032C834 D0 05 00 00 */ stfs f0, 0(r5) -/* 8032C838 C0 45 00 04 */ lfs f2, 4(r5) -/* 8032C83C EC 04 00 72 */ fmuls f0, f4, f1 -/* 8032C840 EC 02 00 2A */ fadds f0, f2, f0 -/* 8032C844 D0 05 00 04 */ stfs f0, 4(r5) -/* 8032C848 C0 45 00 08 */ lfs f2, 8(r5) -/* 8032C84C EC 05 00 72 */ fmuls f0, f5, f1 -/* 8032C850 EC 02 00 2A */ fadds f0, f2, f0 -/* 8032C854 D0 05 00 08 */ stfs f0, 8(r5) -/* 8032C858 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/J3DPSWeightMTXMultVec__FPA4_ffP3VecP3Vec.s b/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/J3DPSWeightMTXMultVec__FPA4_ffP3VecP3Vec.s deleted file mode 100644 index 55cd983d834..00000000000 --- a/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/J3DPSWeightMTXMultVec__FPA4_ffP3VecP3Vec.s +++ /dev/null @@ -1,47 +0,0 @@ -lbl_8032C704: -/* 8032C704 C0 43 00 0C */ lfs f2, 0xc(r3) -/* 8032C708 C0 03 00 00 */ lfs f0, 0(r3) -/* 8032C70C C0 64 00 00 */ lfs f3, 0(r4) -/* 8032C710 EC 00 00 F2 */ fmuls f0, f0, f3 -/* 8032C714 EC 82 00 2A */ fadds f4, f2, f0 -/* 8032C718 C0 43 00 1C */ lfs f2, 0x1c(r3) -/* 8032C71C C0 03 00 10 */ lfs f0, 0x10(r3) -/* 8032C720 EC 00 00 F2 */ fmuls f0, f0, f3 -/* 8032C724 EC A2 00 2A */ fadds f5, f2, f0 -/* 8032C728 C0 43 00 2C */ lfs f2, 0x2c(r3) -/* 8032C72C C0 03 00 20 */ lfs f0, 0x20(r3) -/* 8032C730 EC 00 00 F2 */ fmuls f0, f0, f3 -/* 8032C734 EC 62 00 2A */ fadds f3, f2, f0 -/* 8032C738 C0 03 00 04 */ lfs f0, 4(r3) -/* 8032C73C C0 44 00 04 */ lfs f2, 4(r4) -/* 8032C740 EC 00 00 B2 */ fmuls f0, f0, f2 -/* 8032C744 EC 84 00 2A */ fadds f4, f4, f0 -/* 8032C748 C0 03 00 14 */ lfs f0, 0x14(r3) -/* 8032C74C EC 00 00 B2 */ fmuls f0, f0, f2 -/* 8032C750 EC A5 00 2A */ fadds f5, f5, f0 -/* 8032C754 C0 03 00 24 */ lfs f0, 0x24(r3) -/* 8032C758 EC 00 00 B2 */ fmuls f0, f0, f2 -/* 8032C75C EC 63 00 2A */ fadds f3, f3, f0 -/* 8032C760 C0 03 00 08 */ lfs f0, 8(r3) -/* 8032C764 C0 44 00 08 */ lfs f2, 8(r4) -/* 8032C768 EC 00 00 B2 */ fmuls f0, f0, f2 -/* 8032C76C EC 84 00 2A */ fadds f4, f4, f0 -/* 8032C770 C0 03 00 18 */ lfs f0, 0x18(r3) -/* 8032C774 EC 00 00 B2 */ fmuls f0, f0, f2 -/* 8032C778 EC A5 00 2A */ fadds f5, f5, f0 -/* 8032C77C C0 03 00 28 */ lfs f0, 0x28(r3) -/* 8032C780 EC 00 00 B2 */ fmuls f0, f0, f2 -/* 8032C784 EC 63 00 2A */ fadds f3, f3, f0 -/* 8032C788 C0 45 00 00 */ lfs f2, 0(r5) -/* 8032C78C EC 04 00 72 */ fmuls f0, f4, f1 -/* 8032C790 EC 02 00 2A */ fadds f0, f2, f0 -/* 8032C794 D0 05 00 00 */ stfs f0, 0(r5) -/* 8032C798 C0 45 00 04 */ lfs f2, 4(r5) -/* 8032C79C EC 05 00 72 */ fmuls f0, f5, f1 -/* 8032C7A0 EC 02 00 2A */ fadds f0, f2, f0 -/* 8032C7A4 D0 05 00 04 */ stfs f0, 4(r5) -/* 8032C7A8 C0 45 00 08 */ lfs f2, 8(r5) -/* 8032C7AC EC 03 00 72 */ fmuls f0, f3, f1 -/* 8032C7B0 EC 02 00 2A */ fadds f0, f2, f0 -/* 8032C7B4 D0 05 00 08 */ stfs f0, 8(r5) -/* 8032C7B8 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/__ct__12J3DSkinNListFv.s b/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/__ct__12J3DSkinNListFv.s deleted file mode 100644 index b8b3a94b60b..00000000000 --- a/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/__ct__12J3DSkinNListFv.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_8032C6E4: -/* 8032C6E4 38 00 00 00 */ li r0, 0 -/* 8032C6E8 90 03 00 00 */ stw r0, 0(r3) -/* 8032C6EC 90 03 00 04 */ stw r0, 4(r3) -/* 8032C6F0 90 03 00 08 */ stw r0, 8(r3) -/* 8032C6F4 90 03 00 0C */ stw r0, 0xc(r3) -/* 8032C6F8 B0 03 00 10 */ sth r0, 0x10(r3) -/* 8032C6FC B0 03 00 12 */ sth r0, 0x12(r3) -/* 8032C700 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/__ct__13J3DSkinDeformFv.s b/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/__ct__13J3DSkinDeformFv.s deleted file mode 100644 index 9c93a11c5f4..00000000000 --- a/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/__ct__13J3DSkinDeformFv.s +++ /dev/null @@ -1,18 +0,0 @@ -lbl_8032C96C: -/* 8032C96C 3C 80 80 3D */ lis r4, __vt__13J3DSkinDeform@ha /* 0x803CEE70@ha */ -/* 8032C970 38 04 EE 70 */ addi r0, r4, __vt__13J3DSkinDeform@l /* 0x803CEE70@l */ -/* 8032C974 90 03 00 00 */ stw r0, 0(r3) -/* 8032C978 38 80 00 00 */ li r4, 0 -/* 8032C97C 90 83 00 04 */ stw r4, 4(r3) -/* 8032C980 90 83 00 08 */ stw r4, 8(r3) -/* 8032C984 90 83 00 0C */ stw r4, 0xc(r3) -/* 8032C988 90 83 00 10 */ stw r4, 0x10(r3) -/* 8032C98C 38 00 00 03 */ li r0, 3 -/* 8032C990 90 03 00 14 */ stw r0, 0x14(r3) -/* 8032C994 38 00 00 01 */ li r0, 1 -/* 8032C998 98 03 00 18 */ stb r0, 0x18(r3) -/* 8032C99C 98 83 00 19 */ stb r4, 0x19(r3) -/* 8032C9A0 90 83 00 1C */ stw r4, 0x1c(r3) -/* 8032C9A4 90 83 00 20 */ stw r4, 0x20(r3) -/* 8032C9A8 90 83 00 24 */ stw r4, 0x24(r3) -/* 8032C9AC 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/__dt__13J3DSkinDeformFv.s b/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/__dt__13J3DSkinDeformFv.s deleted file mode 100644 index 731036022b2..00000000000 --- a/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/__dt__13J3DSkinDeformFv.s +++ /dev/null @@ -1,20 +0,0 @@ -lbl_8032E1B0: -/* 8032E1B0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8032E1B4 7C 08 02 A6 */ mflr r0 -/* 8032E1B8 90 01 00 14 */ stw r0, 0x14(r1) -/* 8032E1BC 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8032E1C0 7C 7F 1B 79 */ or. r31, r3, r3 -/* 8032E1C4 41 82 00 1C */ beq lbl_8032E1E0 -/* 8032E1C8 3C A0 80 3D */ lis r5, __vt__13J3DSkinDeform@ha /* 0x803CEE70@ha */ -/* 8032E1CC 38 05 EE 70 */ addi r0, r5, __vt__13J3DSkinDeform@l /* 0x803CEE70@l */ -/* 8032E1D0 90 1F 00 00 */ stw r0, 0(r31) -/* 8032E1D4 7C 80 07 35 */ extsh. r0, r4 -/* 8032E1D8 40 81 00 08 */ ble lbl_8032E1E0 -/* 8032E1DC 4B FA 0B 61 */ bl __dl__FPv -lbl_8032E1E0: -/* 8032E1E0 7F E3 FB 78 */ mr r3, r31 -/* 8032E1E4 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8032E1E8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8032E1EC 7C 08 03 A6 */ mtlr r0 -/* 8032E1F0 38 21 00 10 */ addi r1, r1, 0x10 -/* 8032E1F4 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/calcAnmInvJointMtx__13J3DSkinDeformFP12J3DMtxBuffer.s b/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/calcAnmInvJointMtx__13J3DSkinDeformFP12J3DMtxBuffer.s deleted file mode 100644 index 3da4c450009..00000000000 --- a/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/calcAnmInvJointMtx__13J3DSkinDeformFP12J3DMtxBuffer.s +++ /dev/null @@ -1,34 +0,0 @@ -lbl_8032D87C: -/* 8032D87C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8032D880 7C 08 02 A6 */ mflr r0 -/* 8032D884 90 01 00 24 */ stw r0, 0x24(r1) -/* 8032D888 39 61 00 20 */ addi r11, r1, 0x20 -/* 8032D88C 48 03 49 45 */ bl _savegpr_26 -/* 8032D890 80 A4 00 00 */ lwz r5, 0(r4) -/* 8032D894 A0 05 00 1E */ lhz r0, 0x1e(r5) -/* 8032D898 28 00 00 00 */ cmplwi r0, 0 -/* 8032D89C 41 82 00 40 */ beq lbl_8032D8DC -/* 8032D8A0 A3 C5 00 1C */ lhz r30, 0x1c(r5) -/* 8032D8A4 83 84 00 0C */ lwz r28, 0xc(r4) -/* 8032D8A8 83 A5 00 2C */ lwz r29, 0x2c(r5) -/* 8032D8AC 83 63 00 0C */ lwz r27, 0xc(r3) -/* 8032D8B0 3B 40 00 00 */ li r26, 0 -/* 8032D8B4 3B E0 00 00 */ li r31, 0 -/* 8032D8B8 48 00 00 1C */ b lbl_8032D8D4 -lbl_8032D8BC: -/* 8032D8BC 7C 7C FA 14 */ add r3, r28, r31 -/* 8032D8C0 7C 9D FA 14 */ add r4, r29, r31 -/* 8032D8C4 7C BB FA 14 */ add r5, r27, r31 -/* 8032D8C8 48 01 8C 1D */ bl PSMTXConcat -/* 8032D8CC 3B 5A 00 01 */ addi r26, r26, 1 -/* 8032D8D0 3B FF 00 30 */ addi r31, r31, 0x30 -lbl_8032D8D4: -/* 8032D8D4 7C 1A F0 00 */ cmpw r26, r30 -/* 8032D8D8 41 80 FF E4 */ blt lbl_8032D8BC -lbl_8032D8DC: -/* 8032D8DC 39 61 00 20 */ addi r11, r1, 0x20 -/* 8032D8E0 48 03 49 3D */ bl _restgpr_26 -/* 8032D8E4 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8032D8E8 7C 08 03 A6 */ mtlr r0 -/* 8032D8EC 38 21 00 20 */ addi r1, r1, 0x20 -/* 8032D8F0 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/calcNrmMtx__13J3DSkinDeformFP12J3DMtxBuffer.s b/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/calcNrmMtx__13J3DSkinDeformFP12J3DMtxBuffer.s deleted file mode 100644 index 9020766340c..00000000000 --- a/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/calcNrmMtx__13J3DSkinDeformFP12J3DMtxBuffer.s +++ /dev/null @@ -1,100 +0,0 @@ -lbl_8032D5C4: -/* 8032D5C4 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8032D5C8 7C 08 02 A6 */ mflr r0 -/* 8032D5CC 90 01 00 24 */ stw r0, 0x24(r1) -/* 8032D5D0 39 61 00 20 */ addi r11, r1, 0x20 -/* 8032D5D4 48 03 4C 01 */ bl _savegpr_27 -/* 8032D5D8 7C 7C 1B 78 */ mr r28, r3 -/* 8032D5DC 7C 9D 23 78 */ mr r29, r4 -/* 8032D5E0 83 E4 00 00 */ lwz r31, 0(r4) -/* 8032D5E4 A3 7F 00 34 */ lhz r27, 0x34(r31) -/* 8032D5E8 3B C0 00 00 */ li r30, 0 -/* 8032D5EC 48 00 01 28 */ b lbl_8032D714 -lbl_8032D5F0: -/* 8032D5F0 80 7F 00 38 */ lwz r3, 0x38(r31) -/* 8032D5F4 57 C0 04 3E */ clrlwi r0, r30, 0x10 -/* 8032D5F8 7C 63 00 AE */ lbzx r3, r3, r0 -/* 8032D5FC 28 03 00 00 */ cmplwi r3, 0 -/* 8032D600 40 82 00 8C */ bne lbl_8032D68C -/* 8032D604 80 BD 00 04 */ lwz r5, 4(r29) -/* 8032D608 80 9F 00 3C */ lwz r4, 0x3c(r31) -/* 8032D60C 54 03 08 3C */ slwi r3, r0, 1 -/* 8032D610 7C C4 1A 2E */ lhzx r6, r4, r3 -/* 8032D614 7C 65 30 AE */ lbzx r3, r5, r6 -/* 8032D618 28 03 00 01 */ cmplwi r3, 1 -/* 8032D61C 40 82 00 50 */ bne lbl_8032D66C -/* 8032D620 80 9D 00 0C */ lwz r4, 0xc(r29) -/* 8032D624 1C 66 00 30 */ mulli r3, r6, 0x30 -/* 8032D628 7C 84 1A 14 */ add r4, r4, r3 -/* 8032D62C 80 7C 00 10 */ lwz r3, 0x10(r28) -/* 8032D630 1C 00 00 24 */ mulli r0, r0, 0x24 -/* 8032D634 7C 63 02 14 */ add r3, r3, r0 -/* 8032D638 E0 A4 00 00 */ psq_l f5, 0(r4), 0, 0 /* qr0 */ -/* 8032D63C C0 84 00 08 */ lfs f4, 8(r4) -/* 8032D640 E0 64 00 10 */ psq_l f3, 16(r4), 0, 0 /* qr0 */ -/* 8032D644 C0 44 00 18 */ lfs f2, 0x18(r4) -/* 8032D648 E0 24 00 20 */ psq_l f1, 32(r4), 0, 0 /* qr0 */ -/* 8032D64C C0 04 00 28 */ lfs f0, 0x28(r4) -/* 8032D650 F0 A3 00 00 */ psq_st f5, 0(r3), 0, 0 /* qr0 */ -/* 8032D654 D0 83 00 08 */ stfs f4, 8(r3) -/* 8032D658 F0 63 00 0C */ psq_st f3, 12(r3), 0, 0 /* qr0 */ -/* 8032D65C D0 43 00 14 */ stfs f2, 0x14(r3) -/* 8032D660 F0 23 00 18 */ psq_st f1, 24(r3), 0, 0 /* qr0 */ -/* 8032D664 D0 03 00 20 */ stfs f0, 0x20(r3) -/* 8032D668 48 00 00 A8 */ b lbl_8032D710 -lbl_8032D66C: -/* 8032D66C 80 9D 00 0C */ lwz r4, 0xc(r29) -/* 8032D670 1C 66 00 30 */ mulli r3, r6, 0x30 -/* 8032D674 7C 64 1A 14 */ add r3, r4, r3 -/* 8032D678 80 9C 00 10 */ lwz r4, 0x10(r28) -/* 8032D67C 1C 00 00 24 */ mulli r0, r0, 0x24 -/* 8032D680 7C 84 02 14 */ add r4, r4, r0 -/* 8032D684 4B FE 42 19 */ bl J3DPSCalcInverseTranspose__FPA4_fPA3_f -/* 8032D688 48 00 00 88 */ b lbl_8032D710 -lbl_8032D68C: -/* 8032D68C 80 BD 00 08 */ lwz r5, 8(r29) -/* 8032D690 80 9F 00 3C */ lwz r4, 0x3c(r31) -/* 8032D694 54 03 08 3C */ slwi r3, r0, 1 -/* 8032D698 7C C4 1A 2E */ lhzx r6, r4, r3 -/* 8032D69C 7C 65 30 AE */ lbzx r3, r5, r6 -/* 8032D6A0 28 03 00 01 */ cmplwi r3, 1 -/* 8032D6A4 40 82 00 50 */ bne lbl_8032D6F4 -/* 8032D6A8 80 9D 00 10 */ lwz r4, 0x10(r29) -/* 8032D6AC 1C 66 00 30 */ mulli r3, r6, 0x30 -/* 8032D6B0 7C 84 1A 14 */ add r4, r4, r3 -/* 8032D6B4 80 7C 00 10 */ lwz r3, 0x10(r28) -/* 8032D6B8 1C 00 00 24 */ mulli r0, r0, 0x24 -/* 8032D6BC 7C 63 02 14 */ add r3, r3, r0 -/* 8032D6C0 E0 A4 00 00 */ psq_l f5, 0(r4), 0, 0 /* qr0 */ -/* 8032D6C4 C0 84 00 08 */ lfs f4, 8(r4) -/* 8032D6C8 E0 64 00 10 */ psq_l f3, 16(r4), 0, 0 /* qr0 */ -/* 8032D6CC C0 44 00 18 */ lfs f2, 0x18(r4) -/* 8032D6D0 E0 24 00 20 */ psq_l f1, 32(r4), 0, 0 /* qr0 */ -/* 8032D6D4 C0 04 00 28 */ lfs f0, 0x28(r4) -/* 8032D6D8 F0 A3 00 00 */ psq_st f5, 0(r3), 0, 0 /* qr0 */ -/* 8032D6DC D0 83 00 08 */ stfs f4, 8(r3) -/* 8032D6E0 F0 63 00 0C */ psq_st f3, 12(r3), 0, 0 /* qr0 */ -/* 8032D6E4 D0 43 00 14 */ stfs f2, 0x14(r3) -/* 8032D6E8 F0 23 00 18 */ psq_st f1, 24(r3), 0, 0 /* qr0 */ -/* 8032D6EC D0 03 00 20 */ stfs f0, 0x20(r3) -/* 8032D6F0 48 00 00 20 */ b lbl_8032D710 -lbl_8032D6F4: -/* 8032D6F4 80 9D 00 10 */ lwz r4, 0x10(r29) -/* 8032D6F8 1C 66 00 30 */ mulli r3, r6, 0x30 -/* 8032D6FC 7C 64 1A 14 */ add r3, r4, r3 -/* 8032D700 80 9C 00 10 */ lwz r4, 0x10(r28) -/* 8032D704 1C 00 00 24 */ mulli r0, r0, 0x24 -/* 8032D708 7C 84 02 14 */ add r4, r4, r0 -/* 8032D70C 4B FE 41 91 */ bl J3DPSCalcInverseTranspose__FPA4_fPA3_f -lbl_8032D710: -/* 8032D710 3B DE 00 01 */ addi r30, r30, 1 -lbl_8032D714: -/* 8032D714 57 C0 04 3E */ clrlwi r0, r30, 0x10 -/* 8032D718 7C 00 D8 40 */ cmplw r0, r27 -/* 8032D71C 41 80 FE D4 */ blt lbl_8032D5F0 -/* 8032D720 39 61 00 20 */ addi r11, r1, 0x20 -/* 8032D724 48 03 4A FD */ bl _restgpr_27 -/* 8032D728 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8032D72C 7C 08 03 A6 */ mtlr r0 -/* 8032D730 38 21 00 20 */ addi r1, r1, 0x20 -/* 8032D734 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/calcSkin_VtxNrmF32__12J3DSkinNListFPA4_fPvPv.s b/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/calcSkin_VtxNrmF32__12J3DSkinNListFPA4_fPvPv.s deleted file mode 100644 index ad65cc2abf3..00000000000 --- a/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/calcSkin_VtxNrmF32__12J3DSkinNListFPA4_fPvPv.s +++ /dev/null @@ -1,37 +0,0 @@ -lbl_8032C8E4: -/* 8032C8E4 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 8032C8E8 7C 08 02 A6 */ mflr r0 -/* 8032C8EC 90 01 00 34 */ stw r0, 0x34(r1) -/* 8032C8F0 39 61 00 30 */ addi r11, r1, 0x30 -/* 8032C8F4 48 03 58 D5 */ bl _savegpr_24 -/* 8032C8F8 7C 78 1B 78 */ mr r24, r3 -/* 8032C8FC 7C 99 23 78 */ mr r25, r4 -/* 8032C900 7C BA 2B 78 */ mr r26, r5 -/* 8032C904 7C DB 33 78 */ mr r27, r6 -/* 8032C908 A3 A3 00 12 */ lhz r29, 0x12(r3) -/* 8032C90C 3B 80 00 00 */ li r28, 0 -/* 8032C910 3B E0 00 00 */ li r31, 0 -/* 8032C914 3B C0 00 00 */ li r30, 0 -/* 8032C918 48 00 00 34 */ b lbl_8032C94C -lbl_8032C91C: -/* 8032C91C 80 78 00 04 */ lwz r3, 4(r24) -/* 8032C920 7C 03 F2 2E */ lhzx r0, r3, r30 -/* 8032C924 1C 00 00 0C */ mulli r0, r0, 0xc -/* 8032C928 7F 23 CB 78 */ mr r3, r25 -/* 8032C92C 80 98 00 0C */ lwz r4, 0xc(r24) -/* 8032C930 7C 24 FC 2E */ lfsx f1, r4, r31 -/* 8032C934 7C 9A 02 14 */ add r4, r26, r0 -/* 8032C938 7C BB 02 14 */ add r5, r27, r0 -/* 8032C93C 4B FF FE 81 */ bl J3DPSWeightMTXMultVecSR__FPA4_ffP3VecP3Vec -/* 8032C940 3B 9C 00 01 */ addi r28, r28, 1 -/* 8032C944 3B FF 00 04 */ addi r31, r31, 4 -/* 8032C948 3B DE 00 02 */ addi r30, r30, 2 -lbl_8032C94C: -/* 8032C94C 7C 1C E8 00 */ cmpw r28, r29 -/* 8032C950 41 80 FF CC */ blt lbl_8032C91C -/* 8032C954 39 61 00 30 */ addi r11, r1, 0x30 -/* 8032C958 48 03 58 BD */ bl _restgpr_24 -/* 8032C95C 80 01 00 34 */ lwz r0, 0x34(r1) -/* 8032C960 7C 08 03 A6 */ mtlr r0 -/* 8032C964 38 21 00 30 */ addi r1, r1, 0x30 -/* 8032C968 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/calcSkin_VtxPosF32__12J3DSkinNListFPA4_fPvPv.s b/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/calcSkin_VtxPosF32__12J3DSkinNListFPA4_fPvPv.s deleted file mode 100644 index 9438854c2fb..00000000000 --- a/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/calcSkin_VtxPosF32__12J3DSkinNListFPA4_fPvPv.s +++ /dev/null @@ -1,37 +0,0 @@ -lbl_8032C85C: -/* 8032C85C 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 8032C860 7C 08 02 A6 */ mflr r0 -/* 8032C864 90 01 00 34 */ stw r0, 0x34(r1) -/* 8032C868 39 61 00 30 */ addi r11, r1, 0x30 -/* 8032C86C 48 03 59 5D */ bl _savegpr_24 -/* 8032C870 7C 78 1B 78 */ mr r24, r3 -/* 8032C874 7C 99 23 78 */ mr r25, r4 -/* 8032C878 7C BA 2B 78 */ mr r26, r5 -/* 8032C87C 7C DB 33 78 */ mr r27, r6 -/* 8032C880 A3 A3 00 10 */ lhz r29, 0x10(r3) -/* 8032C884 3B 80 00 00 */ li r28, 0 -/* 8032C888 3B E0 00 00 */ li r31, 0 -/* 8032C88C 3B C0 00 00 */ li r30, 0 -/* 8032C890 48 00 00 34 */ b lbl_8032C8C4 -lbl_8032C894: -/* 8032C894 80 78 00 00 */ lwz r3, 0(r24) -/* 8032C898 7C 03 F2 2E */ lhzx r0, r3, r30 -/* 8032C89C 1C 00 00 0C */ mulli r0, r0, 0xc -/* 8032C8A0 7F 23 CB 78 */ mr r3, r25 -/* 8032C8A4 80 98 00 08 */ lwz r4, 8(r24) -/* 8032C8A8 7C 24 FC 2E */ lfsx f1, r4, r31 -/* 8032C8AC 7C 9A 02 14 */ add r4, r26, r0 -/* 8032C8B0 7C BB 02 14 */ add r5, r27, r0 -/* 8032C8B4 4B FF FE 51 */ bl J3DPSWeightMTXMultVec__FPA4_ffP3VecP3Vec -/* 8032C8B8 3B 9C 00 01 */ addi r28, r28, 1 -/* 8032C8BC 3B FF 00 04 */ addi r31, r31, 4 -/* 8032C8C0 3B DE 00 02 */ addi r30, r30, 2 -lbl_8032C8C4: -/* 8032C8C4 7C 1C E8 00 */ cmpw r28, r29 -/* 8032C8C8 41 80 FF CC */ blt lbl_8032C894 -/* 8032C8CC 39 61 00 30 */ addi r11, r1, 0x30 -/* 8032C8D0 48 03 59 45 */ bl _restgpr_24 -/* 8032C8D4 80 01 00 34 */ lwz r0, 0x34(r1) -/* 8032C8D8 7C 08 03 A6 */ mtlr r0 -/* 8032C8DC 38 21 00 30 */ addi r1, r1, 0x30 -/* 8032C8E0 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/calc__15J3DVtxColorCalcFP8J3DModel.s b/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/calc__15J3DVtxColorCalcFP8J3DModel.s deleted file mode 100644 index 8a9cc778289..00000000000 --- a/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/calc__15J3DVtxColorCalcFP8J3DModel.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_8032E180: -/* 8032E180 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8032E184 7C 08 02 A6 */ mflr r0 -/* 8032E188 90 01 00 14 */ stw r0, 0x14(r1) -/* 8032E18C 81 83 00 00 */ lwz r12, 0(r3) -/* 8032E190 81 8C 00 08 */ lwz r12, 8(r12) -/* 8032E194 7D 89 03 A6 */ mtctr r12 -/* 8032E198 38 84 00 88 */ addi r4, r4, 0x88 -/* 8032E19C 4E 80 04 21 */ bctrl -/* 8032E1A0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8032E1A4 7C 08 03 A6 */ mtlr r0 -/* 8032E1A8 38 21 00 10 */ addi r1, r1, 0x10 -/* 8032E1AC 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/deformFastVtxNrm_F32__13J3DSkinDeformCFP15J3DVertexBufferP12J3DMtxBuffer.s b/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/deformFastVtxNrm_F32__13J3DSkinDeformCFP15J3DVertexBufferP12J3DMtxBuffer.s deleted file mode 100644 index e1f44e55734..00000000000 --- a/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/deformFastVtxNrm_F32__13J3DSkinDeformCFP15J3DVertexBufferP12J3DMtxBuffer.s +++ /dev/null @@ -1,86 +0,0 @@ -lbl_8032DA1C: -/* 8032DA1C 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 8032DA20 7C 08 02 A6 */ mflr r0 -/* 8032DA24 90 01 00 34 */ stw r0, 0x34(r1) -/* 8032DA28 39 61 00 30 */ addi r11, r1, 0x30 -/* 8032DA2C 48 03 47 A1 */ bl _savegpr_25 -/* 8032DA30 7C 9C 23 78 */ mr r28, r4 -/* 8032DA34 7C BD 2B 78 */ mr r29, r5 -/* 8032DA38 80 84 00 24 */ lwz r4, 0x24(r4) -/* 8032DA3C 80 1C 00 28 */ lwz r0, 0x28(r28) -/* 8032DA40 90 1C 00 24 */ stw r0, 0x24(r28) -/* 8032DA44 90 9C 00 28 */ stw r4, 0x28(r28) -/* 8032DA48 80 A5 00 00 */ lwz r5, 0(r5) -/* 8032DA4C 80 9C 00 00 */ lwz r4, 0(r28) -/* 8032DA50 80 04 00 04 */ lwz r0, 4(r4) -/* 8032DA54 83 FC 00 30 */ lwz r31, 0x30(r28) -/* 8032DA58 83 DC 00 24 */ lwz r30, 0x24(r28) -/* 8032DA5C 38 80 00 00 */ li r4, 0 -/* 8032DA60 C0 02 CA 6C */ lfs f0, lit_1578(r2) -/* 8032DA64 7C 09 03 A6 */ mtctr r0 -/* 8032DA68 2C 00 00 00 */ cmpwi r0, 0 -/* 8032DA6C 40 81 00 1C */ ble lbl_8032DA88 -lbl_8032DA70: -/* 8032DA70 7C DE 22 14 */ add r6, r30, r4 -/* 8032DA74 D0 06 00 00 */ stfs f0, 0(r6) -/* 8032DA78 D0 06 00 04 */ stfs f0, 4(r6) -/* 8032DA7C D0 06 00 08 */ stfs f0, 8(r6) -/* 8032DA80 38 84 00 0C */ addi r4, r4, 0xc -/* 8032DA84 42 00 FF EC */ bdnz lbl_8032DA70 -lbl_8032DA88: -/* 8032DA88 A0 05 00 1E */ lhz r0, 0x1e(r5) -/* 8032DA8C 28 00 00 00 */ cmplwi r0, 0 -/* 8032DA90 41 82 00 4C */ beq lbl_8032DADC -/* 8032DA94 A3 45 00 1C */ lhz r26, 0x1c(r5) -/* 8032DA98 3B 20 00 00 */ li r25, 0 -/* 8032DA9C 83 A3 00 24 */ lwz r29, 0x24(r3) -/* 8032DAA0 83 63 00 0C */ lwz r27, 0xc(r3) -/* 8032DAA4 48 00 00 28 */ b lbl_8032DACC -lbl_8032DAA8: -/* 8032DAA8 57 24 04 3E */ clrlwi r4, r25, 0x10 -/* 8032DAAC 1C 04 00 14 */ mulli r0, r4, 0x14 -/* 8032DAB0 7C 7D 02 14 */ add r3, r29, r0 -/* 8032DAB4 1C 04 00 30 */ mulli r0, r4, 0x30 -/* 8032DAB8 7C 9B 02 14 */ add r4, r27, r0 -/* 8032DABC 7F E5 FB 78 */ mr r5, r31 -/* 8032DAC0 7F C6 F3 78 */ mr r6, r30 -/* 8032DAC4 4B FF EE 21 */ bl calcSkin_VtxNrmF32__12J3DSkinNListFPA4_fPvPv -/* 8032DAC8 3B 39 00 01 */ addi r25, r25, 1 -lbl_8032DACC: -/* 8032DACC 57 20 04 3E */ clrlwi r0, r25, 0x10 -/* 8032DAD0 7C 00 D0 40 */ cmplw r0, r26 -/* 8032DAD4 41 80 FF D4 */ blt lbl_8032DAA8 -/* 8032DAD8 48 00 00 48 */ b lbl_8032DB20 -lbl_8032DADC: -/* 8032DADC A3 65 00 1C */ lhz r27, 0x1c(r5) -/* 8032DAE0 3B 20 00 00 */ li r25, 0 -/* 8032DAE4 83 43 00 24 */ lwz r26, 0x24(r3) -/* 8032DAE8 48 00 00 2C */ b lbl_8032DB14 -lbl_8032DAEC: -/* 8032DAEC 57 25 04 3E */ clrlwi r5, r25, 0x10 -/* 8032DAF0 1C 05 00 14 */ mulli r0, r5, 0x14 -/* 8032DAF4 7C 7A 02 14 */ add r3, r26, r0 -/* 8032DAF8 80 9D 00 0C */ lwz r4, 0xc(r29) -/* 8032DAFC 1C 05 00 30 */ mulli r0, r5, 0x30 -/* 8032DB00 7C 84 02 14 */ add r4, r4, r0 -/* 8032DB04 7F E5 FB 78 */ mr r5, r31 -/* 8032DB08 7F C6 F3 78 */ mr r6, r30 -/* 8032DB0C 4B FF ED D9 */ bl calcSkin_VtxNrmF32__12J3DSkinNListFPA4_fPvPv -/* 8032DB10 3B 39 00 01 */ addi r25, r25, 1 -lbl_8032DB14: -/* 8032DB14 57 20 04 3E */ clrlwi r0, r25, 0x10 -/* 8032DB18 7C 00 D8 40 */ cmplw r0, r27 -/* 8032DB1C 41 80 FF D0 */ blt lbl_8032DAEC -lbl_8032DB20: -/* 8032DB20 80 7C 00 00 */ lwz r3, 0(r28) -/* 8032DB24 80 03 00 04 */ lwz r0, 4(r3) -/* 8032DB28 80 7C 00 24 */ lwz r3, 0x24(r28) -/* 8032DB2C 1C 80 00 0C */ mulli r4, r0, 0xc -/* 8032DB30 48 00 DA AD */ bl DCStoreRange -/* 8032DB34 93 DC 00 30 */ stw r30, 0x30(r28) -/* 8032DB38 39 61 00 30 */ addi r11, r1, 0x30 -/* 8032DB3C 48 03 46 DD */ bl _restgpr_25 -/* 8032DB40 80 01 00 34 */ lwz r0, 0x34(r1) -/* 8032DB44 7C 08 03 A6 */ mtlr r0 -/* 8032DB48 38 21 00 30 */ addi r1, r1, 0x30 -/* 8032DB4C 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/deformFastVtxPos_F32__13J3DSkinDeformCFP15J3DVertexBufferP12J3DMtxBuffer.s b/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/deformFastVtxPos_F32__13J3DSkinDeformCFP15J3DVertexBufferP12J3DMtxBuffer.s deleted file mode 100644 index 3bc822299b9..00000000000 --- a/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/deformFastVtxPos_F32__13J3DSkinDeformCFP15J3DVertexBufferP12J3DMtxBuffer.s +++ /dev/null @@ -1,82 +0,0 @@ -lbl_8032D8F4: -/* 8032D8F4 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 8032D8F8 7C 08 02 A6 */ mflr r0 -/* 8032D8FC 90 01 00 34 */ stw r0, 0x34(r1) -/* 8032D900 39 61 00 30 */ addi r11, r1, 0x30 -/* 8032D904 48 03 48 C9 */ bl _savegpr_25 -/* 8032D908 7C 9C 23 78 */ mr r28, r4 -/* 8032D90C 7C BD 2B 78 */ mr r29, r5 -/* 8032D910 80 84 00 1C */ lwz r4, 0x1c(r4) -/* 8032D914 80 1C 00 20 */ lwz r0, 0x20(r28) -/* 8032D918 90 1C 00 1C */ stw r0, 0x1c(r28) -/* 8032D91C 90 9C 00 20 */ stw r4, 0x20(r28) -/* 8032D920 80 A5 00 00 */ lwz r5, 0(r5) -/* 8032D924 80 9C 00 00 */ lwz r4, 0(r28) -/* 8032D928 80 04 00 00 */ lwz r0, 0(r4) -/* 8032D92C 83 FC 00 2C */ lwz r31, 0x2c(r28) -/* 8032D930 80 DC 00 1C */ lwz r6, 0x1c(r28) -/* 8032D934 7C DE 33 78 */ mr r30, r6 -/* 8032D938 1C 80 00 0C */ mulli r4, r0, 0xc -/* 8032D93C 38 04 00 1F */ addi r0, r4, 0x1f -/* 8032D940 54 00 D9 7E */ srwi r0, r0, 5 -/* 8032D944 7C 09 03 A6 */ mtctr r0 -lbl_8032D948: -/* 8032D948 7C 00 37 EC */ dcbz 0, r6 -/* 8032D94C 38 C6 00 20 */ addi r6, r6, 0x20 -/* 8032D950 42 00 FF F8 */ bdnz lbl_8032D948 -/* 8032D954 A0 05 00 1E */ lhz r0, 0x1e(r5) -/* 8032D958 28 00 00 00 */ cmplwi r0, 0 -/* 8032D95C 41 82 00 4C */ beq lbl_8032D9A8 -/* 8032D960 A3 45 00 1C */ lhz r26, 0x1c(r5) -/* 8032D964 3B 20 00 00 */ li r25, 0 -/* 8032D968 83 A3 00 24 */ lwz r29, 0x24(r3) -/* 8032D96C 83 63 00 0C */ lwz r27, 0xc(r3) -/* 8032D970 48 00 00 28 */ b lbl_8032D998 -lbl_8032D974: -/* 8032D974 57 24 04 3E */ clrlwi r4, r25, 0x10 -/* 8032D978 1C 04 00 14 */ mulli r0, r4, 0x14 -/* 8032D97C 7C 7D 02 14 */ add r3, r29, r0 -/* 8032D980 1C 04 00 30 */ mulli r0, r4, 0x30 -/* 8032D984 7C 9B 02 14 */ add r4, r27, r0 -/* 8032D988 7F E5 FB 78 */ mr r5, r31 -/* 8032D98C 7F C6 F3 78 */ mr r6, r30 -/* 8032D990 4B FF EE CD */ bl calcSkin_VtxPosF32__12J3DSkinNListFPA4_fPvPv -/* 8032D994 3B 39 00 01 */ addi r25, r25, 1 -lbl_8032D998: -/* 8032D998 57 20 04 3E */ clrlwi r0, r25, 0x10 -/* 8032D99C 7C 00 D0 40 */ cmplw r0, r26 -/* 8032D9A0 41 80 FF D4 */ blt lbl_8032D974 -/* 8032D9A4 48 00 00 48 */ b lbl_8032D9EC -lbl_8032D9A8: -/* 8032D9A8 A3 65 00 1C */ lhz r27, 0x1c(r5) -/* 8032D9AC 3B 20 00 00 */ li r25, 0 -/* 8032D9B0 83 43 00 24 */ lwz r26, 0x24(r3) -/* 8032D9B4 48 00 00 2C */ b lbl_8032D9E0 -lbl_8032D9B8: -/* 8032D9B8 57 25 04 3E */ clrlwi r5, r25, 0x10 -/* 8032D9BC 1C 05 00 14 */ mulli r0, r5, 0x14 -/* 8032D9C0 7C 7A 02 14 */ add r3, r26, r0 -/* 8032D9C4 80 9D 00 0C */ lwz r4, 0xc(r29) -/* 8032D9C8 1C 05 00 30 */ mulli r0, r5, 0x30 -/* 8032D9CC 7C 84 02 14 */ add r4, r4, r0 -/* 8032D9D0 7F E5 FB 78 */ mr r5, r31 -/* 8032D9D4 7F C6 F3 78 */ mr r6, r30 -/* 8032D9D8 4B FF EE 85 */ bl calcSkin_VtxPosF32__12J3DSkinNListFPA4_fPvPv -/* 8032D9DC 3B 39 00 01 */ addi r25, r25, 1 -lbl_8032D9E0: -/* 8032D9E0 57 20 04 3E */ clrlwi r0, r25, 0x10 -/* 8032D9E4 7C 00 D8 40 */ cmplw r0, r27 -/* 8032D9E8 41 80 FF D0 */ blt lbl_8032D9B8 -lbl_8032D9EC: -/* 8032D9EC 80 7C 00 00 */ lwz r3, 0(r28) -/* 8032D9F0 80 03 00 00 */ lwz r0, 0(r3) -/* 8032D9F4 80 7C 00 1C */ lwz r3, 0x1c(r28) -/* 8032D9F8 1C 80 00 0C */ mulli r4, r0, 0xc -/* 8032D9FC 48 00 DB E1 */ bl DCStoreRange -/* 8032DA00 93 DC 00 2C */ stw r30, 0x2c(r28) -/* 8032DA04 39 61 00 30 */ addi r11, r1, 0x30 -/* 8032DA08 48 03 48 11 */ bl _restgpr_25 -/* 8032DA0C 80 01 00 34 */ lwz r0, 0x34(r1) -/* 8032DA10 7C 08 03 A6 */ mtlr r0 -/* 8032DA14 38 21 00 30 */ addi r1, r1, 0x30 -/* 8032DA18 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/deform__13J3DSkinDeformFP15J3DVertexBufferP12J3DMtxBuffer.s b/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/deform__13J3DSkinDeformFP15J3DVertexBufferP12J3DMtxBuffer.s deleted file mode 100644 index d66f52b515a..00000000000 --- a/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/deform__13J3DSkinDeformFP15J3DVertexBufferP12J3DMtxBuffer.s +++ /dev/null @@ -1,79 +0,0 @@ -lbl_8032E064: -/* 8032E064 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8032E068 7C 08 02 A6 */ mflr r0 -/* 8032E06C 90 01 00 24 */ stw r0, 0x24(r1) -/* 8032E070 39 61 00 20 */ addi r11, r1, 0x20 -/* 8032E074 48 03 41 69 */ bl _savegpr_29 -/* 8032E078 7C 7E 1B 78 */ mr r30, r3 -/* 8032E07C 7C 9F 23 78 */ mr r31, r4 -/* 8032E080 7C BD 2B 78 */ mr r29, r5 -/* 8032E084 80 85 00 00 */ lwz r4, 0(r5) -/* 8032E088 80 04 00 08 */ lwz r0, 8(r4) -/* 8032E08C 54 00 05 EF */ rlwinm. r0, r0, 0, 0x17, 0x17 -/* 8032E090 41 82 00 0C */ beq lbl_8032E09C -/* 8032E094 7F A4 EB 78 */ mr r4, r29 -/* 8032E098 4B FF F7 E5 */ bl calcAnmInvJointMtx__13J3DSkinDeformFP12J3DMtxBuffer -lbl_8032E09C: -/* 8032E09C 80 1E 00 14 */ lwz r0, 0x14(r30) -/* 8032E0A0 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e -/* 8032E0A4 41 82 00 5C */ beq lbl_8032E100 -/* 8032E0A8 80 7D 00 00 */ lwz r3, 0(r29) -/* 8032E0AC 80 03 00 08 */ lwz r0, 8(r3) -/* 8032E0B0 54 00 05 EF */ rlwinm. r0, r0, 0, 0x17, 0x17 -/* 8032E0B4 41 82 00 18 */ beq lbl_8032E0CC -/* 8032E0B8 7F C3 F3 78 */ mr r3, r30 -/* 8032E0BC 7F E4 FB 78 */ mr r4, r31 -/* 8032E0C0 7F A5 EB 78 */ mr r5, r29 -/* 8032E0C4 4B FF F8 31 */ bl deformFastVtxPos_F32__13J3DSkinDeformCFP15J3DVertexBufferP12J3DMtxBuffer -/* 8032E0C8 48 00 00 38 */ b lbl_8032E100 -lbl_8032E0CC: -/* 8032E0CC 80 7F 00 00 */ lwz r3, 0(r31) -/* 8032E0D0 80 03 00 50 */ lwz r0, 0x50(r3) -/* 8032E0D4 2C 00 00 04 */ cmpwi r0, 4 -/* 8032E0D8 40 82 00 18 */ bne lbl_8032E0F0 -/* 8032E0DC 7F C3 F3 78 */ mr r3, r30 -/* 8032E0E0 7F E4 FB 78 */ mr r4, r31 -/* 8032E0E4 7F A5 EB 78 */ mr r5, r29 -/* 8032E0E8 4B FF FA 69 */ bl deformVtxPos_F32__13J3DSkinDeformCFP15J3DVertexBufferP12J3DMtxBuffer -/* 8032E0EC 48 00 00 14 */ b lbl_8032E100 -lbl_8032E0F0: -/* 8032E0F0 7F C3 F3 78 */ mr r3, r30 -/* 8032E0F4 7F E4 FB 78 */ mr r4, r31 -/* 8032E0F8 7F A5 EB 78 */ mr r5, r29 -/* 8032E0FC 4B FF FB 79 */ bl deformVtxPos_S16__13J3DSkinDeformCFP15J3DVertexBufferP12J3DMtxBuffer -lbl_8032E100: -/* 8032E100 80 1E 00 14 */ lwz r0, 0x14(r30) -/* 8032E104 54 00 07 FF */ clrlwi. r0, r0, 0x1f -/* 8032E108 41 82 00 60 */ beq lbl_8032E168 -/* 8032E10C 80 7D 00 00 */ lwz r3, 0(r29) -/* 8032E110 80 03 00 08 */ lwz r0, 8(r3) -/* 8032E114 54 00 05 EF */ rlwinm. r0, r0, 0, 0x17, 0x17 -/* 8032E118 41 82 00 18 */ beq lbl_8032E130 -/* 8032E11C 7F C3 F3 78 */ mr r3, r30 -/* 8032E120 7F E4 FB 78 */ mr r4, r31 -/* 8032E124 7F A5 EB 78 */ mr r5, r29 -/* 8032E128 4B FF F8 F5 */ bl deformFastVtxNrm_F32__13J3DSkinDeformCFP15J3DVertexBufferP12J3DMtxBuffer -/* 8032E12C 48 00 00 3C */ b lbl_8032E168 -lbl_8032E130: -/* 8032E130 7F C3 F3 78 */ mr r3, r30 -/* 8032E134 7F A4 EB 78 */ mr r4, r29 -/* 8032E138 4B FF F4 8D */ bl calcNrmMtx__13J3DSkinDeformFP12J3DMtxBuffer -/* 8032E13C 80 7F 00 00 */ lwz r3, 0(r31) -/* 8032E140 80 03 00 58 */ lwz r0, 0x58(r3) -/* 8032E144 2C 00 00 04 */ cmpwi r0, 4 -/* 8032E148 40 82 00 14 */ bne lbl_8032E15C -/* 8032E14C 7F C3 F3 78 */ mr r3, r30 -/* 8032E150 7F E4 FB 78 */ mr r4, r31 -/* 8032E154 4B FF FC 65 */ bl deformVtxNrm_F32__13J3DSkinDeformCFP15J3DVertexBuffer -/* 8032E158 48 00 00 10 */ b lbl_8032E168 -lbl_8032E15C: -/* 8032E15C 7F C3 F3 78 */ mr r3, r30 -/* 8032E160 7F E4 FB 78 */ mr r4, r31 -/* 8032E164 4B FF FD 59 */ bl deformVtxNrm_S16__13J3DSkinDeformCFP15J3DVertexBuffer -lbl_8032E168: -/* 8032E168 39 61 00 20 */ addi r11, r1, 0x20 -/* 8032E16C 48 03 40 BD */ bl _restgpr_29 -/* 8032E170 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8032E174 7C 08 03 A6 */ mtlr r0 -/* 8032E178 38 21 00 20 */ addi r1, r1, 0x20 -/* 8032E17C 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/deform__13J3DSkinDeformFP8J3DModel.s b/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/deform__13J3DSkinDeformFP8J3DModel.s deleted file mode 100644 index 24773a183e2..00000000000 --- a/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/deform__13J3DSkinDeformFP8J3DModel.s +++ /dev/null @@ -1,39 +0,0 @@ -lbl_8032DFDC: -/* 8032DFDC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8032DFE0 7C 08 02 A6 */ mflr r0 -/* 8032DFE4 90 01 00 14 */ stw r0, 0x14(r1) -/* 8032DFE8 7C 85 23 78 */ mr r5, r4 -/* 8032DFEC 80 04 00 08 */ lwz r0, 8(r4) -/* 8032DFF0 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d -/* 8032DFF4 41 82 00 14 */ beq lbl_8032E008 -/* 8032DFF8 80 03 00 14 */ lwz r0, 0x14(r3) -/* 8032DFFC 60 00 00 02 */ ori r0, r0, 2 -/* 8032E000 90 03 00 14 */ stw r0, 0x14(r3) -/* 8032E004 48 00 00 10 */ b lbl_8032E014 -lbl_8032E008: -/* 8032E008 80 03 00 14 */ lwz r0, 0x14(r3) -/* 8032E00C 54 00 07 FA */ rlwinm r0, r0, 0, 0x1f, 0x1d -/* 8032E010 90 03 00 14 */ stw r0, 0x14(r3) -lbl_8032E014: -/* 8032E014 80 05 00 08 */ lwz r0, 8(r5) -/* 8032E018 54 00 07 39 */ rlwinm. r0, r0, 0, 0x1c, 0x1c -/* 8032E01C 41 82 00 14 */ beq lbl_8032E030 -/* 8032E020 80 03 00 14 */ lwz r0, 0x14(r3) -/* 8032E024 60 00 00 01 */ ori r0, r0, 1 -/* 8032E028 90 03 00 14 */ stw r0, 0x14(r3) -/* 8032E02C 48 00 00 10 */ b lbl_8032E03C -lbl_8032E030: -/* 8032E030 80 03 00 14 */ lwz r0, 0x14(r3) -/* 8032E034 54 00 00 3C */ rlwinm r0, r0, 0, 0, 0x1e -/* 8032E038 90 03 00 14 */ stw r0, 0x14(r3) -lbl_8032E03C: -/* 8032E03C 38 85 00 88 */ addi r4, r5, 0x88 -/* 8032E040 80 A5 00 84 */ lwz r5, 0x84(r5) -/* 8032E044 81 83 00 00 */ lwz r12, 0(r3) -/* 8032E048 81 8C 00 08 */ lwz r12, 8(r12) -/* 8032E04C 7D 89 03 A6 */ mtctr r12 -/* 8032E050 4E 80 04 21 */ bctrl -/* 8032E054 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8032E058 7C 08 03 A6 */ mtlr r0 -/* 8032E05C 38 21 00 10 */ addi r1, r1, 0x10 -/* 8032E060 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/initSkinInfo__13J3DSkinDeformFP12J3DModelData.s b/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/initSkinInfo__13J3DSkinDeformFP12J3DModelData.s deleted file mode 100644 index a32aa58a62f..00000000000 --- a/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/initSkinInfo__13J3DSkinDeformFP12J3DModelData.s +++ /dev/null @@ -1,385 +0,0 @@ -lbl_8032C9B0: -/* 8032C9B0 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8032C9B4 7C 08 02 A6 */ mflr r0 -/* 8032C9B8 90 01 00 24 */ stw r0, 0x24(r1) -/* 8032C9BC 39 61 00 20 */ addi r11, r1, 0x20 -/* 8032C9C0 48 03 58 19 */ bl _savegpr_28 -/* 8032C9C4 7C 7C 1B 78 */ mr r28, r3 -/* 8032C9C8 7C 9D 23 78 */ mr r29, r4 -/* 8032C9CC A0 04 00 2E */ lhz r0, 0x2e(r4) -/* 8032C9D0 80 E4 00 34 */ lwz r7, 0x34(r4) -/* 8032C9D4 81 04 00 38 */ lwz r8, 0x38(r4) -/* 8032C9D8 39 20 00 00 */ li r9, 0 -/* 8032C9DC 39 40 00 00 */ li r10, 0 -/* 8032C9E0 38 60 00 00 */ li r3, 0 -/* 8032C9E4 3C 80 80 43 */ lis r4, sWorkArea_WEvlpMixMtx__13J3DSkinDeform@ha /* 0x80437218@ha */ -/* 8032C9E8 38 C4 72 18 */ addi r6, r4, sWorkArea_WEvlpMixMtx__13J3DSkinDeform@l /* 0x80437218@l */ -/* 8032C9EC 3C 80 80 44 */ lis r4, sWorkArea_WEvlpMixWeight__13J3DSkinDeform@ha /* 0x80438218@ha */ -/* 8032C9F0 38 A4 82 18 */ addi r5, r4, sWorkArea_WEvlpMixWeight__13J3DSkinDeform@l /* 0x80438218@l */ -/* 8032C9F4 7C 09 03 A6 */ mtctr r0 -/* 8032C9F8 2C 00 00 00 */ cmpwi r0, 0 -/* 8032C9FC 40 81 00 38 */ ble lbl_8032CA34 -lbl_8032CA00: -/* 8032CA00 55 20 08 3C */ slwi r0, r9, 1 -/* 8032CA04 7C 07 02 14 */ add r0, r7, r0 -/* 8032CA08 7C 06 19 2E */ stwx r0, r6, r3 -/* 8032CA0C 55 20 10 3A */ slwi r0, r9, 2 -/* 8032CA10 7C 08 02 14 */ add r0, r8, r0 -/* 8032CA14 7C 05 19 2E */ stwx r0, r5, r3 -/* 8032CA18 80 9D 00 30 */ lwz r4, 0x30(r29) -/* 8032CA1C 55 40 04 3E */ clrlwi r0, r10, 0x10 -/* 8032CA20 7C 04 00 AE */ lbzx r0, r4, r0 -/* 8032CA24 7D 29 02 14 */ add r9, r9, r0 -/* 8032CA28 39 4A 00 01 */ addi r10, r10, 1 -/* 8032CA2C 38 63 00 04 */ addi r3, r3, 4 -/* 8032CA30 42 00 FF D0 */ bdnz lbl_8032CA00 -lbl_8032CA34: -/* 8032CA34 A0 1D 00 2C */ lhz r0, 0x2c(r29) -/* 8032CA38 28 00 00 00 */ cmplwi r0, 0 -/* 8032CA3C 41 82 00 30 */ beq lbl_8032CA6C -/* 8032CA40 54 1E 04 3E */ clrlwi r30, r0, 0x10 -/* 8032CA44 1C 7E 00 14 */ mulli r3, r30, 0x14 -/* 8032CA48 38 63 00 10 */ addi r3, r3, 0x10 -/* 8032CA4C 4B FA 22 79 */ bl __nwa__FUl -/* 8032CA50 3C 80 80 33 */ lis r4, __ct__12J3DSkinNListFv@ha /* 0x8032C6E4@ha */ -/* 8032CA54 38 84 C6 E4 */ addi r4, r4, __ct__12J3DSkinNListFv@l /* 0x8032C6E4@l */ -/* 8032CA58 38 A0 00 00 */ li r5, 0 -/* 8032CA5C 38 C0 00 14 */ li r6, 0x14 -/* 8032CA60 7F C7 F3 78 */ mr r7, r30 -/* 8032CA64 48 03 54 B1 */ bl __construct_new_array -/* 8032CA68 90 7C 00 24 */ stw r3, 0x24(r28) -lbl_8032CA6C: -/* 8032CA6C 38 60 00 00 */ li r3, 0 -/* 8032CA70 38 80 00 00 */ li r4, 0 -/* 8032CA74 48 00 00 AC */ b lbl_8032CB20 -lbl_8032CA78: -/* 8032CA78 80 BC 00 04 */ lwz r5, 4(r28) -/* 8032CA7C 7C C5 22 2E */ lhzx r6, r5, r4 -/* 8032CA80 28 06 FF FF */ cmplwi r6, 0xffff -/* 8032CA84 41 82 00 94 */ beq lbl_8032CB18 -/* 8032CA88 80 BD 00 48 */ lwz r5, 0x48(r29) -/* 8032CA8C 7C 05 30 AE */ lbzx r0, r5, r6 -/* 8032CA90 28 00 00 00 */ cmplwi r0, 0 -/* 8032CA94 40 82 00 2C */ bne lbl_8032CAC0 -/* 8032CA98 80 BD 00 4C */ lwz r5, 0x4c(r29) -/* 8032CA9C 54 C0 08 3C */ slwi r0, r6, 1 -/* 8032CAA0 7C 05 02 2E */ lhzx r0, r5, r0 -/* 8032CAA4 80 FC 00 24 */ lwz r7, 0x24(r28) -/* 8032CAA8 1C A0 00 14 */ mulli r5, r0, 0x14 -/* 8032CAAC 38 C5 00 10 */ addi r6, r5, 0x10 -/* 8032CAB0 7C A7 32 2E */ lhzx r5, r7, r6 -/* 8032CAB4 38 05 00 01 */ addi r0, r5, 1 -/* 8032CAB8 7C 07 33 2E */ sthx r0, r7, r6 -/* 8032CABC 48 00 00 5C */ b lbl_8032CB18 -lbl_8032CAC0: -/* 8032CAC0 80 BD 00 4C */ lwz r5, 0x4c(r29) -/* 8032CAC4 54 C0 08 3C */ slwi r0, r6, 1 -/* 8032CAC8 7C 05 02 2E */ lhzx r0, r5, r0 -/* 8032CACC 80 BD 00 30 */ lwz r5, 0x30(r29) -/* 8032CAD0 7C C5 00 AE */ lbzx r6, r5, r0 -/* 8032CAD4 54 00 13 BA */ rlwinm r0, r0, 2, 0xe, 0x1d -/* 8032CAD8 3C A0 80 43 */ lis r5, sWorkArea_WEvlpMixMtx__13J3DSkinDeform@ha /* 0x80437218@ha */ -/* 8032CADC 38 A5 72 18 */ addi r5, r5, sWorkArea_WEvlpMixMtx__13J3DSkinDeform@l /* 0x80437218@l */ -/* 8032CAE0 7D 25 00 2E */ lwzx r9, r5, r0 -/* 8032CAE4 38 A0 00 00 */ li r5, 0 -/* 8032CAE8 7C C9 03 A6 */ mtctr r6 -/* 8032CAEC 2C 06 00 00 */ cmpwi r6, 0 -/* 8032CAF0 40 81 00 28 */ ble lbl_8032CB18 -lbl_8032CAF4: -/* 8032CAF4 81 1C 00 24 */ lwz r8, 0x24(r28) -/* 8032CAF8 7C 09 2A 2E */ lhzx r0, r9, r5 -/* 8032CAFC 1C C0 00 14 */ mulli r6, r0, 0x14 -/* 8032CB00 38 E6 00 10 */ addi r7, r6, 0x10 -/* 8032CB04 7C C8 3A 2E */ lhzx r6, r8, r7 -/* 8032CB08 38 06 00 01 */ addi r0, r6, 1 -/* 8032CB0C 7C 08 3B 2E */ sthx r0, r8, r7 -/* 8032CB10 38 A5 00 02 */ addi r5, r5, 2 -/* 8032CB14 42 00 FF E0 */ bdnz lbl_8032CAF4 -lbl_8032CB18: -/* 8032CB18 38 63 00 01 */ addi r3, r3, 1 -/* 8032CB1C 38 84 00 02 */ addi r4, r4, 2 -lbl_8032CB20: -/* 8032CB20 80 1D 00 88 */ lwz r0, 0x88(r29) -/* 8032CB24 7C 03 00 40 */ cmplw r3, r0 -/* 8032CB28 41 80 FF 50 */ blt lbl_8032CA78 -/* 8032CB2C 38 60 00 00 */ li r3, 0 -/* 8032CB30 38 80 00 00 */ li r4, 0 -/* 8032CB34 48 00 00 AC */ b lbl_8032CBE0 -lbl_8032CB38: -/* 8032CB38 80 BC 00 08 */ lwz r5, 8(r28) -/* 8032CB3C 7C C5 22 2E */ lhzx r6, r5, r4 -/* 8032CB40 28 06 FF FF */ cmplwi r6, 0xffff -/* 8032CB44 41 82 00 94 */ beq lbl_8032CBD8 -/* 8032CB48 80 BD 00 48 */ lwz r5, 0x48(r29) -/* 8032CB4C 7C 05 30 AE */ lbzx r0, r5, r6 -/* 8032CB50 28 00 00 00 */ cmplwi r0, 0 -/* 8032CB54 40 82 00 2C */ bne lbl_8032CB80 -/* 8032CB58 80 BD 00 4C */ lwz r5, 0x4c(r29) -/* 8032CB5C 54 C0 08 3C */ slwi r0, r6, 1 -/* 8032CB60 7C 05 02 2E */ lhzx r0, r5, r0 -/* 8032CB64 80 FC 00 24 */ lwz r7, 0x24(r28) -/* 8032CB68 1C A0 00 14 */ mulli r5, r0, 0x14 -/* 8032CB6C 38 C5 00 12 */ addi r6, r5, 0x12 -/* 8032CB70 7C A7 32 2E */ lhzx r5, r7, r6 -/* 8032CB74 38 05 00 01 */ addi r0, r5, 1 -/* 8032CB78 7C 07 33 2E */ sthx r0, r7, r6 -/* 8032CB7C 48 00 00 5C */ b lbl_8032CBD8 -lbl_8032CB80: -/* 8032CB80 80 BD 00 4C */ lwz r5, 0x4c(r29) -/* 8032CB84 54 C0 08 3C */ slwi r0, r6, 1 -/* 8032CB88 7C 05 02 2E */ lhzx r0, r5, r0 -/* 8032CB8C 80 BD 00 30 */ lwz r5, 0x30(r29) -/* 8032CB90 7C C5 00 AE */ lbzx r6, r5, r0 -/* 8032CB94 54 00 13 BA */ rlwinm r0, r0, 2, 0xe, 0x1d -/* 8032CB98 3C A0 80 43 */ lis r5, sWorkArea_WEvlpMixMtx__13J3DSkinDeform@ha /* 0x80437218@ha */ -/* 8032CB9C 38 A5 72 18 */ addi r5, r5, sWorkArea_WEvlpMixMtx__13J3DSkinDeform@l /* 0x80437218@l */ -/* 8032CBA0 7D 25 00 2E */ lwzx r9, r5, r0 -/* 8032CBA4 38 A0 00 00 */ li r5, 0 -/* 8032CBA8 7C C9 03 A6 */ mtctr r6 -/* 8032CBAC 2C 06 00 00 */ cmpwi r6, 0 -/* 8032CBB0 40 81 00 28 */ ble lbl_8032CBD8 -lbl_8032CBB4: -/* 8032CBB4 81 1C 00 24 */ lwz r8, 0x24(r28) -/* 8032CBB8 7C 09 2A 2E */ lhzx r0, r9, r5 -/* 8032CBBC 1C C0 00 14 */ mulli r6, r0, 0x14 -/* 8032CBC0 38 E6 00 12 */ addi r7, r6, 0x12 -/* 8032CBC4 7C C8 3A 2E */ lhzx r6, r8, r7 -/* 8032CBC8 38 06 00 01 */ addi r0, r6, 1 -/* 8032CBCC 7C 08 3B 2E */ sthx r0, r8, r7 -/* 8032CBD0 38 A5 00 02 */ addi r5, r5, 2 -/* 8032CBD4 42 00 FF E0 */ bdnz lbl_8032CBB4 -lbl_8032CBD8: -/* 8032CBD8 38 63 00 01 */ addi r3, r3, 1 -/* 8032CBDC 38 84 00 02 */ addi r4, r4, 2 -lbl_8032CBE0: -/* 8032CBE0 80 1D 00 8C */ lwz r0, 0x8c(r29) -/* 8032CBE4 7C 03 00 40 */ cmplw r3, r0 -/* 8032CBE8 41 80 FF 50 */ blt lbl_8032CB38 -/* 8032CBEC 3B C0 00 00 */ li r30, 0 -/* 8032CBF0 48 00 00 BC */ b lbl_8032CCAC -lbl_8032CBF4: -/* 8032CBF4 80 7C 00 24 */ lwz r3, 0x24(r28) -/* 8032CBF8 57 C0 04 3E */ clrlwi r0, r30, 0x10 -/* 8032CBFC 1F E0 00 14 */ mulli r31, r0, 0x14 -/* 8032CC00 38 1F 00 10 */ addi r0, r31, 0x10 -/* 8032CC04 7C 03 02 2E */ lhzx r0, r3, r0 -/* 8032CC08 28 00 00 00 */ cmplwi r0, 0 -/* 8032CC0C 41 82 00 44 */ beq lbl_8032CC50 -/* 8032CC10 54 03 0B FC */ rlwinm r3, r0, 1, 0xf, 0x1e -/* 8032CC14 4B FA 20 B1 */ bl __nwa__FUl -/* 8032CC18 80 9C 00 24 */ lwz r4, 0x24(r28) -/* 8032CC1C 7C 64 F9 2E */ stwx r3, r4, r31 -/* 8032CC20 80 7C 00 24 */ lwz r3, 0x24(r28) -/* 8032CC24 38 1F 00 10 */ addi r0, r31, 0x10 -/* 8032CC28 7C 03 02 2E */ lhzx r0, r3, r0 -/* 8032CC2C 54 03 10 3A */ slwi r3, r0, 2 -/* 8032CC30 4B FA 20 95 */ bl __nwa__FUl -/* 8032CC34 80 9C 00 24 */ lwz r4, 0x24(r28) -/* 8032CC38 38 1F 00 08 */ addi r0, r31, 8 -/* 8032CC3C 7C 64 01 2E */ stwx r3, r4, r0 -/* 8032CC40 38 80 00 00 */ li r4, 0 -/* 8032CC44 80 7C 00 24 */ lwz r3, 0x24(r28) -/* 8032CC48 38 1F 00 10 */ addi r0, r31, 0x10 -/* 8032CC4C 7C 83 03 2E */ sthx r4, r3, r0 -lbl_8032CC50: -/* 8032CC50 80 7C 00 24 */ lwz r3, 0x24(r28) -/* 8032CC54 38 1F 00 12 */ addi r0, r31, 0x12 -/* 8032CC58 7C 03 02 2E */ lhzx r0, r3, r0 -/* 8032CC5C 28 00 00 00 */ cmplwi r0, 0 -/* 8032CC60 41 82 00 48 */ beq lbl_8032CCA8 -/* 8032CC64 54 03 0B FC */ rlwinm r3, r0, 1, 0xf, 0x1e -/* 8032CC68 4B FA 20 5D */ bl __nwa__FUl -/* 8032CC6C 80 9C 00 24 */ lwz r4, 0x24(r28) -/* 8032CC70 38 1F 00 04 */ addi r0, r31, 4 -/* 8032CC74 7C 64 01 2E */ stwx r3, r4, r0 -/* 8032CC78 80 7C 00 24 */ lwz r3, 0x24(r28) -/* 8032CC7C 38 1F 00 12 */ addi r0, r31, 0x12 -/* 8032CC80 7C 03 02 2E */ lhzx r0, r3, r0 -/* 8032CC84 54 03 10 3A */ slwi r3, r0, 2 -/* 8032CC88 4B FA 20 3D */ bl __nwa__FUl -/* 8032CC8C 80 9C 00 24 */ lwz r4, 0x24(r28) -/* 8032CC90 38 1F 00 0C */ addi r0, r31, 0xc -/* 8032CC94 7C 64 01 2E */ stwx r3, r4, r0 -/* 8032CC98 38 80 00 00 */ li r4, 0 -/* 8032CC9C 80 7C 00 24 */ lwz r3, 0x24(r28) -/* 8032CCA0 38 1F 00 12 */ addi r0, r31, 0x12 -/* 8032CCA4 7C 83 03 2E */ sthx r4, r3, r0 -lbl_8032CCA8: -/* 8032CCA8 3B DE 00 01 */ addi r30, r30, 1 -lbl_8032CCAC: -/* 8032CCAC 57 C3 04 3E */ clrlwi r3, r30, 0x10 -/* 8032CCB0 A0 1D 00 2C */ lhz r0, 0x2c(r29) -/* 8032CCB4 7C 03 00 40 */ cmplw r3, r0 -/* 8032CCB8 41 80 FF 3C */ blt lbl_8032CBF4 -/* 8032CCBC 38 60 00 00 */ li r3, 0 -/* 8032CCC0 38 80 00 00 */ li r4, 0 -/* 8032CCC4 48 00 01 20 */ b lbl_8032CDE4 -lbl_8032CCC8: -/* 8032CCC8 80 BC 00 04 */ lwz r5, 4(r28) -/* 8032CCCC 7C C5 22 2E */ lhzx r6, r5, r4 -/* 8032CCD0 28 06 FF FF */ cmplwi r6, 0xffff -/* 8032CCD4 41 82 01 08 */ beq lbl_8032CDDC -/* 8032CCD8 80 BD 00 48 */ lwz r5, 0x48(r29) -/* 8032CCDC 7C 05 30 AE */ lbzx r0, r5, r6 -/* 8032CCE0 28 00 00 00 */ cmplwi r0, 0 -/* 8032CCE4 40 82 00 54 */ bne lbl_8032CD38 -/* 8032CCE8 80 BD 00 4C */ lwz r5, 0x4c(r29) -/* 8032CCEC 54 C0 08 3C */ slwi r0, r6, 1 -/* 8032CCF0 7C 05 02 2E */ lhzx r0, r5, r0 -/* 8032CCF4 80 FC 00 24 */ lwz r7, 0x24(r28) -/* 8032CCF8 1D 00 00 14 */ mulli r8, r0, 0x14 -/* 8032CCFC 38 A8 00 10 */ addi r5, r8, 0x10 -/* 8032CD00 7C C7 2A 2E */ lhzx r6, r7, r5 -/* 8032CD04 38 06 00 01 */ addi r0, r6, 1 -/* 8032CD08 7C 07 2B 2E */ sthx r0, r7, r5 -/* 8032CD0C 80 BC 00 24 */ lwz r5, 0x24(r28) -/* 8032CD10 7C A5 40 2E */ lwzx r5, r5, r8 -/* 8032CD14 54 C0 0B FC */ rlwinm r0, r6, 1, 0xf, 0x1e -/* 8032CD18 7C 65 03 2E */ sthx r3, r5, r0 -/* 8032CD1C C0 02 CA 68 */ lfs f0, lit_1110(r2) -/* 8032CD20 80 BC 00 24 */ lwz r5, 0x24(r28) -/* 8032CD24 38 08 00 08 */ addi r0, r8, 8 -/* 8032CD28 7C A5 00 2E */ lwzx r5, r5, r0 -/* 8032CD2C 54 C0 13 BA */ rlwinm r0, r6, 2, 0xe, 0x1d -/* 8032CD30 7C 05 05 2E */ stfsx f0, r5, r0 -/* 8032CD34 48 00 00 A8 */ b lbl_8032CDDC -lbl_8032CD38: -/* 8032CD38 80 BD 00 4C */ lwz r5, 0x4c(r29) -/* 8032CD3C 54 C0 08 3C */ slwi r0, r6, 1 -/* 8032CD40 7C 05 02 2E */ lhzx r0, r5, r0 -/* 8032CD44 80 BD 00 30 */ lwz r5, 0x30(r29) -/* 8032CD48 7C E5 00 AE */ lbzx r7, r5, r0 -/* 8032CD4C 54 00 13 BA */ rlwinm r0, r0, 2, 0xe, 0x1d -/* 8032CD50 3C A0 80 43 */ lis r5, sWorkArea_WEvlpMixMtx__13J3DSkinDeform@ha /* 0x80437218@ha */ -/* 8032CD54 38 A5 72 18 */ addi r5, r5, sWorkArea_WEvlpMixMtx__13J3DSkinDeform@l /* 0x80437218@l */ -/* 8032CD58 7D 45 00 2E */ lwzx r10, r5, r0 -/* 8032CD5C 3C A0 80 44 */ lis r5, sWorkArea_WEvlpMixWeight__13J3DSkinDeform@ha /* 0x80438218@ha */ -/* 8032CD60 38 A5 82 18 */ addi r5, r5, sWorkArea_WEvlpMixWeight__13J3DSkinDeform@l /* 0x80438218@l */ -/* 8032CD64 7D 65 00 2E */ lwzx r11, r5, r0 -/* 8032CD68 38 A0 00 00 */ li r5, 0 -/* 8032CD6C 38 C0 00 00 */ li r6, 0 -/* 8032CD70 7C E9 03 A6 */ mtctr r7 -/* 8032CD74 2C 07 00 00 */ cmpwi r7, 0 -/* 8032CD78 40 81 00 64 */ ble lbl_8032CDDC -lbl_8032CD7C: -/* 8032CD7C 81 1C 00 24 */ lwz r8, 0x24(r28) -/* 8032CD80 7C 0A 32 2E */ lhzx r0, r10, r6 -/* 8032CD84 1C E0 00 14 */ mulli r7, r0, 0x14 -/* 8032CD88 38 E7 00 10 */ addi r7, r7, 0x10 -/* 8032CD8C 7D 28 3A 2E */ lhzx r9, r8, r7 -/* 8032CD90 38 09 00 01 */ addi r0, r9, 1 -/* 8032CD94 7C 08 3B 2E */ sthx r0, r8, r7 -/* 8032CD98 80 FC 00 24 */ lwz r7, 0x24(r28) -/* 8032CD9C 7C 0A 32 2E */ lhzx r0, r10, r6 -/* 8032CDA0 1C 00 00 14 */ mulli r0, r0, 0x14 -/* 8032CDA4 7C E7 00 2E */ lwzx r7, r7, r0 -/* 8032CDA8 55 20 0B FC */ rlwinm r0, r9, 1, 0xf, 0x1e -/* 8032CDAC 7C 67 03 2E */ sthx r3, r7, r0 -/* 8032CDB0 7C 0B 2C 2E */ lfsx f0, r11, r5 -/* 8032CDB4 81 1C 00 24 */ lwz r8, 0x24(r28) -/* 8032CDB8 7C 0A 32 2E */ lhzx r0, r10, r6 -/* 8032CDBC 1C E0 00 14 */ mulli r7, r0, 0x14 -/* 8032CDC0 38 07 00 08 */ addi r0, r7, 8 -/* 8032CDC4 7C E8 00 2E */ lwzx r7, r8, r0 -/* 8032CDC8 55 20 13 BA */ rlwinm r0, r9, 2, 0xe, 0x1d -/* 8032CDCC 7C 07 05 2E */ stfsx f0, r7, r0 -/* 8032CDD0 38 A5 00 04 */ addi r5, r5, 4 -/* 8032CDD4 38 C6 00 02 */ addi r6, r6, 2 -/* 8032CDD8 42 00 FF A4 */ bdnz lbl_8032CD7C -lbl_8032CDDC: -/* 8032CDDC 38 63 00 01 */ addi r3, r3, 1 -/* 8032CDE0 38 84 00 02 */ addi r4, r4, 2 -lbl_8032CDE4: -/* 8032CDE4 80 1D 00 88 */ lwz r0, 0x88(r29) -/* 8032CDE8 7C 03 00 40 */ cmplw r3, r0 -/* 8032CDEC 41 80 FE DC */ blt lbl_8032CCC8 -/* 8032CDF0 38 60 00 00 */ li r3, 0 -/* 8032CDF4 38 A0 00 00 */ li r5, 0 -/* 8032CDF8 48 00 01 28 */ b lbl_8032CF20 -lbl_8032CDFC: -/* 8032CDFC 80 9C 00 08 */ lwz r4, 8(r28) -/* 8032CE00 7C C4 2A 2E */ lhzx r6, r4, r5 -/* 8032CE04 28 06 FF FF */ cmplwi r6, 0xffff -/* 8032CE08 41 82 01 10 */ beq lbl_8032CF18 -/* 8032CE0C 80 9D 00 48 */ lwz r4, 0x48(r29) -/* 8032CE10 7C 04 30 AE */ lbzx r0, r4, r6 -/* 8032CE14 28 00 00 00 */ cmplwi r0, 0 -/* 8032CE18 40 82 00 58 */ bne lbl_8032CE70 -/* 8032CE1C 80 9D 00 4C */ lwz r4, 0x4c(r29) -/* 8032CE20 54 C0 08 3C */ slwi r0, r6, 1 -/* 8032CE24 7C 04 02 2E */ lhzx r0, r4, r0 -/* 8032CE28 80 FC 00 24 */ lwz r7, 0x24(r28) -/* 8032CE2C 1D 00 00 14 */ mulli r8, r0, 0x14 -/* 8032CE30 38 88 00 12 */ addi r4, r8, 0x12 -/* 8032CE34 7C C7 22 2E */ lhzx r6, r7, r4 -/* 8032CE38 38 06 00 01 */ addi r0, r6, 1 -/* 8032CE3C 7C 07 23 2E */ sthx r0, r7, r4 -/* 8032CE40 80 9C 00 24 */ lwz r4, 0x24(r28) -/* 8032CE44 38 08 00 04 */ addi r0, r8, 4 -/* 8032CE48 7C 84 00 2E */ lwzx r4, r4, r0 -/* 8032CE4C 54 C0 0B FC */ rlwinm r0, r6, 1, 0xf, 0x1e -/* 8032CE50 7C 64 03 2E */ sthx r3, r4, r0 -/* 8032CE54 C0 02 CA 68 */ lfs f0, lit_1110(r2) -/* 8032CE58 80 9C 00 24 */ lwz r4, 0x24(r28) -/* 8032CE5C 38 08 00 0C */ addi r0, r8, 0xc -/* 8032CE60 7C 84 00 2E */ lwzx r4, r4, r0 -/* 8032CE64 54 C0 13 BA */ rlwinm r0, r6, 2, 0xe, 0x1d -/* 8032CE68 7C 04 05 2E */ stfsx f0, r4, r0 -/* 8032CE6C 48 00 00 AC */ b lbl_8032CF18 -lbl_8032CE70: -/* 8032CE70 80 9D 00 4C */ lwz r4, 0x4c(r29) -/* 8032CE74 54 C0 08 3C */ slwi r0, r6, 1 -/* 8032CE78 7C 04 02 2E */ lhzx r0, r4, r0 -/* 8032CE7C 80 9D 00 30 */ lwz r4, 0x30(r29) -/* 8032CE80 7D 04 00 AE */ lbzx r8, r4, r0 -/* 8032CE84 54 00 13 BA */ rlwinm r0, r0, 2, 0xe, 0x1d -/* 8032CE88 3C 80 80 43 */ lis r4, sWorkArea_WEvlpMixMtx__13J3DSkinDeform@ha /* 0x80437218@ha */ -/* 8032CE8C 38 84 72 18 */ addi r4, r4, sWorkArea_WEvlpMixMtx__13J3DSkinDeform@l /* 0x80437218@l */ -/* 8032CE90 7C 84 00 2E */ lwzx r4, r4, r0 -/* 8032CE94 3C C0 80 44 */ lis r6, sWorkArea_WEvlpMixWeight__13J3DSkinDeform@ha /* 0x80438218@ha */ -/* 8032CE98 38 C6 82 18 */ addi r6, r6, sWorkArea_WEvlpMixWeight__13J3DSkinDeform@l /* 0x80438218@l */ -/* 8032CE9C 7D 66 00 2E */ lwzx r11, r6, r0 -/* 8032CEA0 38 C0 00 00 */ li r6, 0 -/* 8032CEA4 38 E0 00 00 */ li r7, 0 -/* 8032CEA8 7D 09 03 A6 */ mtctr r8 -/* 8032CEAC 2C 08 00 00 */ cmpwi r8, 0 -/* 8032CEB0 40 81 00 68 */ ble lbl_8032CF18 -lbl_8032CEB4: -/* 8032CEB4 81 3C 00 24 */ lwz r9, 0x24(r28) -/* 8032CEB8 7C 04 3A 2E */ lhzx r0, r4, r7 -/* 8032CEBC 1D 00 00 14 */ mulli r8, r0, 0x14 -/* 8032CEC0 39 08 00 12 */ addi r8, r8, 0x12 -/* 8032CEC4 7D 49 42 2E */ lhzx r10, r9, r8 -/* 8032CEC8 38 0A 00 01 */ addi r0, r10, 1 -/* 8032CECC 7C 09 43 2E */ sthx r0, r9, r8 -/* 8032CED0 81 3C 00 24 */ lwz r9, 0x24(r28) -/* 8032CED4 7C 04 3A 2E */ lhzx r0, r4, r7 -/* 8032CED8 1D 00 00 14 */ mulli r8, r0, 0x14 -/* 8032CEDC 38 08 00 04 */ addi r0, r8, 4 -/* 8032CEE0 7D 09 00 2E */ lwzx r8, r9, r0 -/* 8032CEE4 55 40 0B FC */ rlwinm r0, r10, 1, 0xf, 0x1e -/* 8032CEE8 7C 68 03 2E */ sthx r3, r8, r0 -/* 8032CEEC 7C 0B 34 2E */ lfsx f0, r11, r6 -/* 8032CEF0 81 3C 00 24 */ lwz r9, 0x24(r28) -/* 8032CEF4 7C 04 3A 2E */ lhzx r0, r4, r7 -/* 8032CEF8 1D 00 00 14 */ mulli r8, r0, 0x14 -/* 8032CEFC 38 08 00 0C */ addi r0, r8, 0xc -/* 8032CF00 7D 09 00 2E */ lwzx r8, r9, r0 -/* 8032CF04 55 40 13 BA */ rlwinm r0, r10, 2, 0xe, 0x1d -/* 8032CF08 7C 08 05 2E */ stfsx f0, r8, r0 -/* 8032CF0C 38 C6 00 04 */ addi r6, r6, 4 -/* 8032CF10 38 E7 00 02 */ addi r7, r7, 2 -/* 8032CF14 42 00 FF A0 */ bdnz lbl_8032CEB4 -lbl_8032CF18: -/* 8032CF18 38 63 00 01 */ addi r3, r3, 1 -/* 8032CF1C 38 A5 00 02 */ addi r5, r5, 2 -lbl_8032CF20: -/* 8032CF20 80 1D 00 8C */ lwz r0, 0x8c(r29) -/* 8032CF24 7C 03 00 40 */ cmplw r3, r0 -/* 8032CF28 41 80 FE D4 */ blt lbl_8032CDFC -/* 8032CF2C 39 61 00 20 */ addi r11, r1, 0x20 -/* 8032CF30 48 03 52 F5 */ bl _restgpr_28 -/* 8032CF34 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8032CF38 7C 08 03 A6 */ mtlr r0 -/* 8032CF3C 38 21 00 20 */ addi r1, r1, 0x20 -/* 8032CF40 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/transformVtxPosNrm__13J3DSkinDeformFP12J3DModelData.s b/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/transformVtxPosNrm__13J3DSkinDeformFP12J3DModelData.s deleted file mode 100644 index b26719a545b..00000000000 --- a/asm/JSystem/J3DGraphAnimator/J3DSkinDeform/transformVtxPosNrm__13J3DSkinDeformFP12J3DModelData.s +++ /dev/null @@ -1,89 +0,0 @@ -lbl_8032D738: -/* 8032D738 94 21 FF 70 */ stwu r1, -0x90(r1) -/* 8032D73C 7C 08 02 A6 */ mflr r0 -/* 8032D740 90 01 00 94 */ stw r0, 0x94(r1) -/* 8032D744 39 61 00 90 */ addi r11, r1, 0x90 -/* 8032D748 48 03 4A 81 */ bl _savegpr_24 -/* 8032D74C 7C 7D 1B 78 */ mr r29, r3 -/* 8032D750 7C 9E 23 78 */ mr r30, r4 -/* 8032D754 A0 04 00 2E */ lhz r0, 0x2e(r4) -/* 8032D758 28 00 00 00 */ cmplwi r0, 0 -/* 8032D75C 41 82 01 08 */ beq lbl_8032D864 -/* 8032D760 88 1D 00 19 */ lbz r0, 0x19(r29) -/* 8032D764 28 00 00 00 */ cmplwi r0, 0 -/* 8032D768 40 82 00 FC */ bne lbl_8032D864 -/* 8032D76C 83 5E 00 88 */ lwz r26, 0x88(r30) -/* 8032D770 83 FE 00 8C */ lwz r31, 0x8c(r30) -/* 8032D774 3B 20 00 00 */ li r25, 0 -/* 8032D778 3B 60 00 00 */ li r27, 0 -/* 8032D77C 3B 80 00 00 */ li r28, 0 -/* 8032D780 48 00 00 60 */ b lbl_8032D7E0 -lbl_8032D784: -/* 8032D784 80 7D 00 04 */ lwz r3, 4(r29) -/* 8032D788 7C 83 E2 2E */ lhzx r4, r3, r28 -/* 8032D78C 80 7E 00 48 */ lwz r3, 0x48(r30) -/* 8032D790 7C 03 20 AE */ lbzx r0, r3, r4 -/* 8032D794 28 00 00 00 */ cmplwi r0, 0 -/* 8032D798 40 82 00 3C */ bne lbl_8032D7D4 -/* 8032D79C 80 7E 00 4C */ lwz r3, 0x4c(r30) -/* 8032D7A0 54 80 08 3C */ slwi r0, r4, 1 -/* 8032D7A4 7C 83 02 2E */ lhzx r4, r3, r0 -/* 8032D7A8 80 1E 00 A0 */ lwz r0, 0xa0(r30) -/* 8032D7AC 7F 00 DA 14 */ add r24, r0, r27 -/* 8032D7B0 80 7E 00 3C */ lwz r3, 0x3c(r30) -/* 8032D7B4 1C 04 00 30 */ mulli r0, r4, 0x30 -/* 8032D7B8 7C 63 02 14 */ add r3, r3, r0 -/* 8032D7BC 38 81 00 38 */ addi r4, r1, 0x38 -/* 8032D7C0 48 01 8D F1 */ bl PSMTXInverse -/* 8032D7C4 38 61 00 38 */ addi r3, r1, 0x38 -/* 8032D7C8 7F 04 C3 78 */ mr r4, r24 -/* 8032D7CC 7F 05 C3 78 */ mr r5, r24 -/* 8032D7D0 48 01 95 9D */ bl PSMTXMultVec -lbl_8032D7D4: -/* 8032D7D4 3B 39 00 01 */ addi r25, r25, 1 -/* 8032D7D8 3B 7B 00 0C */ addi r27, r27, 0xc -/* 8032D7DC 3B 9C 00 02 */ addi r28, r28, 2 -lbl_8032D7E0: -/* 8032D7E0 7C 19 D0 00 */ cmpw r25, r26 -/* 8032D7E4 41 80 FF A0 */ blt lbl_8032D784 -/* 8032D7E8 3B 00 00 00 */ li r24, 0 -/* 8032D7EC 3B 80 00 00 */ li r28, 0 -/* 8032D7F0 3B 60 00 00 */ li r27, 0 -/* 8032D7F4 48 00 00 60 */ b lbl_8032D854 -lbl_8032D7F8: -/* 8032D7F8 80 7D 00 08 */ lwz r3, 8(r29) -/* 8032D7FC 7C 83 DA 2E */ lhzx r4, r3, r27 -/* 8032D800 80 7E 00 48 */ lwz r3, 0x48(r30) -/* 8032D804 7C 03 20 AE */ lbzx r0, r3, r4 -/* 8032D808 28 00 00 00 */ cmplwi r0, 0 -/* 8032D80C 40 82 00 3C */ bne lbl_8032D848 -/* 8032D810 80 7E 00 4C */ lwz r3, 0x4c(r30) -/* 8032D814 54 80 08 3C */ slwi r0, r4, 1 -/* 8032D818 7C 83 02 2E */ lhzx r4, r3, r0 -/* 8032D81C 80 1E 00 A4 */ lwz r0, 0xa4(r30) -/* 8032D820 7F 20 E2 14 */ add r25, r0, r28 -/* 8032D824 80 7E 00 3C */ lwz r3, 0x3c(r30) -/* 8032D828 1C 04 00 30 */ mulli r0, r4, 0x30 -/* 8032D82C 7C 63 02 14 */ add r3, r3, r0 -/* 8032D830 38 81 00 08 */ addi r4, r1, 8 -/* 8032D834 48 01 8D 7D */ bl PSMTXInverse -/* 8032D838 38 61 00 08 */ addi r3, r1, 8 -/* 8032D83C 7F 24 CB 78 */ mr r4, r25 -/* 8032D840 7F 25 CB 78 */ mr r5, r25 -/* 8032D844 48 01 96 09 */ bl PSMTXMultVecSR -lbl_8032D848: -/* 8032D848 3B 18 00 01 */ addi r24, r24, 1 -/* 8032D84C 3B 9C 00 0C */ addi r28, r28, 0xc -/* 8032D850 3B 7B 00 02 */ addi r27, r27, 2 -lbl_8032D854: -/* 8032D854 7C 18 F8 00 */ cmpw r24, r31 -/* 8032D858 41 80 FF A0 */ blt lbl_8032D7F8 -/* 8032D85C 38 00 00 01 */ li r0, 1 -/* 8032D860 98 1D 00 19 */ stb r0, 0x19(r29) -lbl_8032D864: -/* 8032D864 39 61 00 90 */ addi r11, r1, 0x90 -/* 8032D868 48 03 49 AD */ bl _restgpr_24 -/* 8032D86C 80 01 00 94 */ lwz r0, 0x94(r1) -/* 8032D870 7C 08 03 A6 */ mtlr r0 -/* 8032D874 38 21 00 90 */ addi r1, r1, 0x90 -/* 8032D878 4E 80 00 20 */ blr diff --git a/include/JSystem/J3DGraphAnimator/J3DJointTree.h b/include/JSystem/J3DGraphAnimator/J3DJointTree.h index dc74089af30..3697cdb62b2 100644 --- a/include/JSystem/J3DGraphAnimator/J3DJointTree.h +++ b/include/JSystem/J3DGraphAnimator/J3DJointTree.h @@ -45,13 +45,14 @@ public: u16 getJointNum() const { return mJointNum; } u16 getDrawMtxNum() const { return mDrawMtxData.mEntryNum; } u8 getDrawMtxFlag(u16 idx) const { return mDrawMtxData.mDrawMtxFlag[idx]; } - u8 getDrawMtxIndex(u16 idx) const { return mDrawMtxData.mDrawMtxIndex[idx]; } + u16 getDrawMtxIndex(u16 idx) const { return mDrawMtxData.mDrawMtxIndex[idx]; } JUTNameTab* getJointName() const { return mJointName; } J3DJoint* getRootNode() { return mRootNode; } J3DJoint* getJointNodePointer(u16 idx) const { return mJointNodePointer[idx]; } J3DMtxCalc* getBasicMtxCalc() const { return mBasicMtxCalc; } Mtx& getInvJointMtx(s32 idx) const { return mInvJointMtx[idx]; } u32 getModelDataType() const { return mModelDataType; } + bool checkFlag(u32 flag) { return mFlags & flag; } private: /* 0x04 */ J3DModelHierarchy* mHierarchy; diff --git a/include/JSystem/J3DGraphAnimator/J3DModel.h b/include/JSystem/J3DGraphAnimator/J3DModel.h index 80176968f8a..d5610fc11b4 100644 --- a/include/JSystem/J3DGraphAnimator/J3DModel.h +++ b/include/JSystem/J3DGraphAnimator/J3DModel.h @@ -79,6 +79,7 @@ public: J3DVertexBuffer* getVertexBuffer() const { return (J3DVertexBuffer*)&mVertexBuffer; } J3DMatPacket* getMatPacket(u16 idx) const { return &mMatPacket[idx]; } J3DShapePacket* getShapePacket(u16 idx) const { return &mShapePacket[idx]; } + J3DMtxBuffer* getMtxBuffer() const { return mMtxBuffer; } Mtx33* getBumpMtxPtr(int idx) const { return mMtxBuffer->getBumpMtxPtr(idx); } Mtx33* getNrmMtxPtr() const { return mMtxBuffer->getNrmMtxPtr(); } Mtx* getDrawMtxPtr() const { return mMtxBuffer->getDrawMtxPtr(); } diff --git a/include/JSystem/J3DGraphAnimator/J3DModelData.h b/include/JSystem/J3DGraphAnimator/J3DModelData.h index 441b2fdebd3..ca2d8ee9719 100644 --- a/include/JSystem/J3DGraphAnimator/J3DModelData.h +++ b/include/JSystem/J3DGraphAnimator/J3DModelData.h @@ -34,6 +34,10 @@ public: J3DMaterial* getMaterialNodePointer(u16 idx) const { return mMaterialTable.getMaterialNodePointer(idx); } + u32 getVtxNum() const { return mVertexData.getVtxNum(); } + u32 getNrmNum() const { return mVertexData.getNrmNum(); } + u8 getDrawMtxFlag(u16 idx) const { return mJointTree.getDrawMtxFlag(idx); } + u16 getDrawMtxIndex(u16 idx) const { return mJointTree.getDrawMtxIndex(idx); } J3DShape* getShapeNodePointer(u16 idx) const { return mShapeTable.getShapeNodePointer(idx); } J3DJoint* getJointNodePointer(u16 idx) const { return mJointTree.getJointNodePointer(idx); } J3DJointTree& getJointTree() { return mJointTree; } @@ -42,6 +46,9 @@ public: J3DTexture* getTexture() const { return mMaterialTable.getTexture(); } JUTNameTab* getTextureName() const { return mMaterialTable.getTextureName(); } u16 getWEvlpMtxNum() const { return mJointTree.getWEvlpMtxNum(); } + u16* getWEvlpMixMtxIndex() const { return mJointTree.getWEvlpMixIndex(); } + f32* getWEvlpMixWeight() const { return mJointTree.getWEvlpMixWeight(); } + u8 getWEvlpMixMtxNum(u16 idx) const { return mJointTree.getWEvlpMixMtxNum(idx); } u32 getModelDataType() const { return mJointTree.getModelDataType(); } void* getVtxPosArray() const { return mVertexData.getVtxPosArray(); } void* getVtxNrmArray() const { return mVertexData.getVtxNrmArray(); } diff --git a/include/JSystem/J3DGraphAnimator/J3DMtxBuffer.h b/include/JSystem/J3DGraphAnimator/J3DMtxBuffer.h index c709985d7c4..4aece3b46d7 100644 --- a/include/JSystem/J3DGraphAnimator/J3DMtxBuffer.h +++ b/include/JSystem/J3DGraphAnimator/J3DMtxBuffer.h @@ -26,11 +26,13 @@ public: MtxP getAnmMtx(int idx) const { return mpAnmMtx[idx]; } void setAnmMtx(int i, Mtx m) { PSMTXCopy(m, (MtxP)mpAnmMtx[i]); } + MtxP getWeightAnmMtx(int idx) const { return mpWeightEvlpMtx[idx]; } void setScaleFlag(int idx, u8 flag) { mpScaleFlagArr[idx] = flag; } u32* getCurrentViewNoPtr() { return &mCurrentViewNo; } u8* getScaleFlagArray() const { return mpScaleFlagArr; } - u8 getScaleFlag(u16 idx) const { return mpScaleFlagArr[idx]; } + u8 getScaleFlag(int idx) const { return mpScaleFlagArr[idx]; } + u8 getEnvScaleFlag(int idx) const { return mpEvlpScaleFlagArr[idx]; } Mtx** getDrawMtxPtrPtr() const { return mpDrawMtxArr[1]; } Mtx* getDrawMtxPtr() const { return mpDrawMtxArr[1][mCurrentViewNo]; } Mtx* getDrawMtx(u16 idx) const { return &mpDrawMtxArr[1][mCurrentViewNo][idx]; } @@ -39,6 +41,7 @@ public: Mtx33* getNrmMtx(u16 idx) const { return &mpNrmMtxArr[1][mCurrentViewNo][idx]; } Mtx33*** getBumpMtxPtrPtr() const { return mpBumpMtxArr[1]; } Mtx33* getBumpMtxPtr(int idx) const { return mpBumpMtxArr[1][idx][mCurrentViewNo]; } + J3DJointTree* getJointTree() const { return mJointTree; } void swapDrawMtx() { Mtx* tmp = mpDrawMtxArr[0][mCurrentViewNo]; diff --git a/include/JSystem/J3DGraphAnimator/J3DSkinDeform.h b/include/JSystem/J3DGraphAnimator/J3DSkinDeform.h index 63d138b1c29..520e0f67fd6 100644 --- a/include/JSystem/J3DGraphAnimator/J3DSkinDeform.h +++ b/include/JSystem/J3DGraphAnimator/J3DSkinDeform.h @@ -5,6 +5,7 @@ #include "JSystem/J3DGraphAnimator/J3DModelData.h" #include "JSystem/J3DGraphAnimator/J3DMtxBuffer.h" #include "JSystem/J3DGraphBase/J3DVertex.h" +#include "JSystem/J3DGraphBase/J3DTransform.h" #include "dolphin/types.h" class J3DModel; @@ -38,10 +39,10 @@ struct J3DSkinNList { /* 8032C85C */ void calcSkin_VtxPosF32(f32 (*)[4], void*, void*); /* 8032C8E4 */ void calcSkin_VtxNrmF32(f32 (*)[4], void*, void*); - /* 0x00 */ int field_0x0; - /* 0x04 */ int field_0x4; - /* 0x08 */ int field_0x8; - /* 0x0C */ int field_0xc; + /* 0x00 */ u16* field_0x0; + /* 0x04 */ u16* field_0x4; + /* 0x08 */ f32* field_0x8; + /* 0x0C */ f32* field_0xc; /* 0x10 */ u16 field_0x10; /* 0x12 */ u16 field_0x12; }; // Size: 0x14 @@ -50,7 +51,7 @@ class J3DSkinDeform { public: /* 8032C96C */ J3DSkinDeform(); /* 8032C9B0 */ void initSkinInfo(J3DModelData*); - /* 8032CF44 */ void initMtxIndexArray(J3DModelData*); + /* 8032CF44 */ int initMtxIndexArray(J3DModelData*); /* 8032D378 */ void changeFastSkinDL(J3DModelData*); /* 8032D5C4 */ void calcNrmMtx(J3DMtxBuffer*); /* 8032D738 */ void transformVtxPosNrm(J3DModelData*); @@ -62,25 +63,32 @@ public: /* 8032DDB8 */ void deformVtxNrm_F32(J3DVertexBuffer*) const; /* 8032DEBC */ void deformVtxNrm_S16(J3DVertexBuffer*) const; /* 8032DFDC */ void deform(J3DModel*); + void setNrmMtx(int i, MtxP mtx) { + J3DPSMtx33CopyFrom34(mtx, (Mtx3P)mNrmMtx[i]); + } + Mtx3P getNrmMtx(int i) { return mNrmMtx[i]; } + void onFlag(u32 flag) { mFlags |= flag; } + void offFlag(u32 flag) { mFlags &= ~flag; } + bool checkFlag(u32 flag) { return mFlags & flag; } /* 8032E064 */ virtual void deform(J3DVertexBuffer*, J3DMtxBuffer*); /* 8032E1B0 */ virtual ~J3DSkinDeform(); - static u8 sWorkArea_WEvlpMixMtx[4096]; - static u8 sWorkArea_WEvlpMixWeight[4096]; - static u8 sWorkArea_MtxReg[2048 + 8 /* padding */]; + static u16* sWorkArea_WEvlpMixMtx[1024]; + static f32* sWorkArea_WEvlpMixWeight[1024]; + static u16 sWorkArea_MtxReg[1024 + 4 /* padding */]; private: - /* 0x04 */ void** mPosData; - /* 0x08 */ void** field_0x8; - /* 0x0C */ void** field_0xc; - /* 0x10 */ Mtx** mNrmMtx; + /* 0x04 */ u16* mPosData; + /* 0x08 */ u16* mNrmData; + /* 0x0C */ Mtx* mPosMtx; + /* 0x10 */ Mtx33* mNrmMtx; /* 0x14 */ u32 mFlags; /* 0x18 */ u8 field_0x18; /* 0x19 */ u8 field_0x19; /* 0x1C */ int field_0x1c; /* 0x20 */ int field_0x20; - /* 0x24 */ J3DSkinNList** mSkinNList; + /* 0x24 */ J3DSkinNList* mSkinNList; }; class J3DDeformer { @@ -100,4 +108,15 @@ private: /* 0x10 */ u32 mFlags; }; // Size: 0x14 +inline void J3DFillZero32B(register void* param_0, register u32 param_1) { + asm { + srwi param_1, param_1, 5 + mtctr param_1 + lbl_8032D948: + dcbz 0, param_0 + addi param_0, param_0, 0x20 + bdnz lbl_8032D948 + } +} + #endif /* J3DSKINDEFORM_H */ diff --git a/include/JSystem/J3DGraphBase/J3DShape.h b/include/JSystem/J3DGraphBase/J3DShape.h index 8ceaf59661f..102fb430dac 100644 --- a/include/JSystem/J3DGraphBase/J3DShape.h +++ b/include/JSystem/J3DGraphBase/J3DShape.h @@ -107,6 +107,7 @@ public: void setTexMtxLoadType(u32 type) { mFlags = (mFlags & 0xFFFF0FFF) | type; } bool getNBTFlag() const { return mHasNBT; } u32 getBumpMtxOffset() const { return mBumpMtxOffset; } + GXVtxDescList* getVtxDesc() const { return mVtxDesc; } J3DMaterial* getMaterial() const { return mMaterial; } u32 getIndex() const { return mIndex; } diff --git a/include/JSystem/J3DGraphBase/J3DShapeDraw.h b/include/JSystem/J3DGraphBase/J3DShapeDraw.h index 8ad82a0c3dd..2293fd6337c 100644 --- a/include/JSystem/J3DGraphBase/J3DShapeDraw.h +++ b/include/JSystem/J3DGraphBase/J3DShapeDraw.h @@ -14,6 +14,7 @@ public: u8* getDisplayList() const { return (u8*)mDisplayList; } u32 getDisplayListSize() const { return mDisplayListSize; } + void setDisplayListSize(u32 size) { mDisplayListSize = size; } private: /* 0x04 */ u32 mDisplayListSize; diff --git a/include/JSystem/J3DGraphBase/J3DTransform.h b/include/JSystem/J3DGraphBase/J3DTransform.h index a162bd5b7c9..884506ce429 100644 --- a/include/JSystem/J3DGraphBase/J3DTransform.h +++ b/include/JSystem/J3DGraphBase/J3DTransform.h @@ -14,8 +14,201 @@ struct J3DTransformInfo { extern J3DTransformInfo const j3dDefaultTransformInfo; extern Vec const j3dDefaultScale; extern Mtx const j3dDefaultMtx; +extern f32 PSMulUnit01[2]; void J3DGetTranslateRotateMtx(J3DTransformInfo const&, Mtx); void J3DGetTranslateRotateMtx(s16, s16, s16, f32, f32, f32, Mtx); +void J3DPSCalcInverseTranspose(f32 (*param_0)[4], f32 (*param_1)[3]); +void J3DGQRSetup7(u32 param_0, u32 param_1, u32 param_2, u32 param_3); + +inline void J3DPSMtx33CopyFrom34(register MtxP src, register Mtx3P dst) { + register f32 x_y1; + register f32 z1; + register f32 x_y2; + register f32 z2; + register f32 x_y3; + register f32 z3; + asm { + psq_l x_y1, 0(src), 0, 0 + lfs z1, 8(src) + psq_l x_y2, 16(src), 0, 0 + lfs z2, 0x18(src) + psq_l x_y3, 32(src), 0, 0 + lfs z3, 0x28(src) + psq_st x_y1, 0(dst), 0, 0 + stfs z1, 8(dst) + psq_st x_y2, 12(dst), 0, 0 + stfs z2, 0x14(dst) + psq_st x_y3, 24(dst), 0, 0 + stfs z3, 0x20(dst) + } +} + +// regalloc issues +inline void J3DPSMulMtxVec(register MtxP mtx, register Vec* vec, register Vec* dst) { + register f32 fr12; + register f32 fr11; + register f32 fr10; + register f32 fr9; + register f32 fr8; + register f32 fr6; + register f32 fra6; + register f32 fr5; + register f32 fra5; + register f32 fra4; + register f32 fr4; + register f32 fr3; + register f32 fr2; + register f32 fra2; + register f32 fr01; + register f32 fr00; + asm { + psq_l fr00, 0(vec), 0, 0 + psq_l fr2, 0(mtx), 0, 0 + psq_l fr01, 8(vec), 1, 0 + ps_mul fr4, fr2, fr00 + psq_l fr3, 8(mtx), 0, 0 + ps_madd fr5, fr3, fr01, fr4 + psq_l fr8, 16(mtx), 0, 0 + ps_sum0 fr6, fr5, fr6, fr5 + psq_l fr9, 24(mtx), 0, 0 + ps_mul fr10, fr8, fr00 + psq_st fr6, 0(dst), 1, 0 + ps_madd fr11, fr9, fr01, fr10 + psq_l fra2, 32(mtx), 0, 0 + ps_sum0 fr12, fr11, fr12, fr11 + psq_l fr3, 40(mtx), 0, 0 + ps_mul fra4, fra2, fr00 + psq_st fr12, 4(dst), 1, 0 + ps_madd fra5, fr3, fr01, fra4 + ps_sum0 fra6, fra5, fra6, fra5 + psq_st fra6, 8(dst), 1, 0 + } +} + +// regalloc issues +inline void J3DPSMulMtxVec(register MtxP mtx, register SVec* vec, register SVec* dst) { + register f32 fr12; + register f32 fr11; + register f32 fr10; + register f32 fr9; + register f32 fr8; + register f32 fr6; + register f32 fra6; + register f32 fr5; + register f32 fra5; + register f32 fra4; + register f32 fr4; + register f32 fr3; + register f32 fr2; + register f32 fra2; + register f32 fr01; + register f32 fr00; + asm { + psq_l fr00, 0(vec), 0, 7 + psq_l fr2, 0(mtx), 0, 0 + psq_l fr01, 4(vec), 1, 7 + ps_mul fr4, fr2, fr00 + psq_l fr3, 8(mtx), 0, 0 + ps_madd fr5, fr3, fr01, fr4 + psq_l fr8, 16(mtx), 0, 0 + ps_sum0 fr6, fr5, fr6, fr5 + psq_l fr9, 24(mtx), 0, 0 + ps_mul fr10, fr8, fr00 + psq_st fr6, 0(dst), 1, 7 + ps_madd fr11, fr9, fr01, fr10 + psq_l fra2, 32(mtx), 0, 0 + ps_sum0 fr12, fr11, fr12, fr11 + psq_l fr3, 40(mtx), 0, 0 + ps_mul fra4, fra2, fr00 + psq_st fr12, 2(dst), 1, 7 + ps_madd fra5, fr3, fr01, fra4 + ps_sum0 fra6, fra5, fra6, fra5 + psq_st fra6, 4(dst), 1, 7 + } +} + +// regalloc issues +inline void J3DPSMulMtxVec(register Mtx3P mtx, register Vec* vec, register Vec* dst) { + register f32* punit; + register f32 unit; + register f32 fr12; + register f32 fr11; + register f32 fr10; + register f32 fr9; + register f32 fr8; + register f32 fr6; + register f32 fr5; + register f32 fr4; + register f32 fr3; + register f32 fr2; + register f32 fr01; + register f32 fr00; + asm { + lis punit, PSMulUnit01@ha + psq_l fr00, 0(vec), 0, 0 + addi punit, punit, PSMulUnit01@l + psq_l fr2, 0(mtx), 0, 0 + psq_l unit, 0(punit), 0, 0 + psq_l fr01, 8(vec), 1, 0 + ps_add fr01, unit, fr01 + psq_l fr3, 8(mtx), 1, 0 + ps_mul fr4, fr2, fr00 + psq_l fr8, 12(mtx), 0, 0 + ps_madd fr5, fr3, fr01, fr4 + ps_sum0 fr6, fr5, fr6, fr5 + psq_l fr9, 20(mtx), 1, 0 + ps_mul fr10, fr8, fr00 + psq_st fr6, 0(dst), 1, 0 + ps_madd fr11, fr9, fr01, fr10 + psq_l fr2, 24(mtx), 0, 0 + ps_sum0 fr12, fr11, fr12, fr11 + psq_l fr3, 32(mtx), 1, 0 + ps_mul fr4, fr2, fr00 + psq_st fr12, 4(dst), 1, 0 + ps_madd fr5, fr3, fr01, fr4 + ps_sum0 fr6, fr5, fr6, fr5 + psq_st fr6, 8(dst), 1, 0 + } +} + +// regalloc issues +inline void J3DPSMulMtxVec(register Mtx3P mtx, register SVec* vec, register SVec* dst) { + register f32* punit; + register f32 unit; + register f32 fr6; + register f32 fr5; + register f32 fr4; + register f32 fr3; + register f32 fr2; + register f32 fr01; + register f32 fr00; + asm { + lis punit, PSMulUnit01@ha + psq_l fr00, 0(vec), 0, 7 + addi punit, punit, PSMulUnit01@l + psq_l fr2, 0(mtx), 0, 0 + psq_l unit, 0(punit), 0, 0 + psq_l fr01, 4(vec), 1, 7 + ps_add fr01, unit, fr01 + psq_l fr3, 8(mtx), 1, 0 + ps_mul fr4, fr2, fr00 + psq_l fr2, 12(mtx), 0, 0 + ps_madd fr5, fr3, fr01, fr4 + ps_sum0 fr6, fr5, fr6, fr5 + psq_l fr3, 20(mtx), 1, 0 + ps_mul fr4, fr2, fr00 + psq_st fr6, 0(dst), 1, 7 + ps_madd fr5, fr3, fr01, fr4 + psq_l fr2, 24(mtx), 0, 0 + ps_sum0 fr6, fr5, fr6, fr5 + psq_l fr3, 32(mtx), 1, 0 + ps_mul fr4, fr2, fr00 + psq_st fr6, 2(dst), 1, 7 + ps_madd fr5, fr3, fr01, fr4 + ps_sum0 fr6, fr5, fr6, fr5 + psq_st fr6, 4(dst), 1, 7 + } +} #endif /* J3DTRANSFORM_H */ diff --git a/include/JSystem/J3DGraphBase/J3DVertex.h b/include/JSystem/J3DGraphBase/J3DVertex.h index a601987c1de..2803c7838a3 100644 --- a/include/JSystem/J3DGraphBase/J3DVertex.h +++ b/include/JSystem/J3DGraphBase/J3DVertex.h @@ -9,9 +9,11 @@ typedef struct _GXColor GXColor; class J3DModel; struct J3DAnmVtxColor; +struct J3DVertexBuffer; struct J3DVtxColorCalc { /* 8032E180 */ void calc(J3DModel*); + virtual void calc(J3DVertexBuffer*); /* 0x0 */ void* vtable; // inlined vtable? /* 0x4 */ u32 mFlags; @@ -30,6 +32,10 @@ public: u32 getNrmNum() const { return mNrmNum; } u32 getVtxNum() const { return mVtxNum; } GXVtxAttrFmtList* getVtxAttrFmtList() { return mVtxAttrFmtList; } + u8 getVtxPosFrac() { return mVtxPosFrac; } + u8 getVtxNrmFrac() { return mVtxNrmFrac; } + int getVtxPosType() { return mVtxPosType; } + int getVtxNrmType() { return mVtxNrmType; } void setVtxPosFrac(u8 frac) { mVtxPosFrac = frac; } void setVtxPosType(GXCompType type) { mVtxPosType = type; } @@ -69,8 +75,10 @@ public: /* 8031152C */ s32 allocTransformedVtxNrmArray(); void setCurrentVtxPos(void* pVtxPos) { mCurrentVtxPos = pVtxPos; } + void* getCurrentVtxPos() { return mCurrentVtxPos; } void setCurrentVtxNrm(void* pVtxNrm) { mCurrentVtxNrm = pVtxNrm; } + void* getCurrentVtxNrm() { return mCurrentVtxNrm; } void setCurrentVtxCol(GXColor* pVtxCol) { mCurrentVtxCol = pVtxCol; } @@ -80,6 +88,22 @@ public: setCurrentVtxCol(mVtxColArray[0]); } + void* getTransformedVtxPos(int idx) { return mTransformedVtxPosArray[idx]; } + void* getTransformedVtxNrm(int idx) { return mTransformedVtxNrmArray[idx]; } + J3DVertexData* getVertexData() { return mVtxData; } + + void swapTransformedVtxPos() { + void* tmp = mTransformedVtxPosArray[0]; + mTransformedVtxPosArray[0] = mTransformedVtxPosArray[1]; + mTransformedVtxPosArray[1] = tmp; + } + + void swapTransformedVtxNrm() { + void* tmp = mTransformedVtxNrmArray[0]; + mTransformedVtxNrmArray[0] = mTransformedVtxNrmArray[1]; + mTransformedVtxNrmArray[1] = tmp; + } + private: /* 0x00 */ J3DVertexData* mVtxData; /* 0x04 */ void* mVtxPosArray[2]; diff --git a/include/dolphin/mtx/mtx.h b/include/dolphin/mtx/mtx.h index edd5dab9f60..3b9b75299f6 100644 --- a/include/dolphin/mtx/mtx.h +++ b/include/dolphin/mtx/mtx.h @@ -14,6 +14,7 @@ typedef f32 Mtx[3][4]; typedef f32 Mtx33[3][3]; typedef f32 Mtx23[2][3]; typedef f32 (*MtxP)[4]; +typedef f32 (*Mtx3P)[3]; typedef const f32 (*CMtxP)[4]; // Change name later? void PSMTXIdentity(Mtx m); diff --git a/libs/JSystem/J3DGraphAnimator/J3DSkinDeform.cpp b/libs/JSystem/J3DGraphAnimator/J3DSkinDeform.cpp index 5d490d31287..7edd25ed23a 100644 --- a/libs/JSystem/J3DGraphAnimator/J3DSkinDeform.cpp +++ b/libs/JSystem/J3DGraphAnimator/J3DSkinDeform.cpp @@ -4,16 +4,17 @@ // #include "JSystem/J3DGraphAnimator/J3DSkinDeform.h" +#include "JSystem/J3DGraphAnimator/J3DModel.h" +#include "JSystem/JKernel/JKRHeap.h" #include "dol2asm.h" #include "dolphin/os/OS.h" #include "dolphin/types.h" +#include "MSL_C/MSL_Common/Src/string.h" // // Types: // -struct J3DModel {}; - // // Forward References: // @@ -43,13 +44,12 @@ extern "C" void __dt__13J3DSkinDeformFv(); extern "C" extern char const* const J3DSkinDeform__stringBase0; extern "C" u8 sWorkArea_WEvlpMixMtx__13J3DSkinDeform[4096]; extern "C" u8 sWorkArea_WEvlpMixWeight__13J3DSkinDeform[4096]; -extern "C" u8 sWorkArea_MtxReg__13J3DSkinDeform[2048 + 8 /* padding */]; +extern "C" u16 sWorkArea_MtxReg__13J3DSkinDeform[1024 + 4 /* padding */]; // // External References: // -SECTION_INIT void memcpy(); extern "C" void* __nwa__FUl(); extern "C" void* __nwa__FUli(); extern "C" void __dl__FPv(); @@ -73,110 +73,208 @@ extern "C" void _restgpr_26(); extern "C" void _restgpr_27(); extern "C" void _restgpr_28(); extern "C" void _restgpr_29(); -extern "C" extern u8 PSMulUnit01[8]; +extern "C" extern f32 PSMulUnit01[2]; // // Declarations: // /* 8032C6E4-8032C704 327024 0020+00 1/1 0/0 0/0 .text __ct__12J3DSkinNListFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm J3DSkinNList::J3DSkinNList() { - nofralloc -#include "asm/JSystem/J3DGraphAnimator/J3DSkinDeform/__ct__12J3DSkinNListFv.s" +J3DSkinNList::J3DSkinNList() { + field_0x0 = NULL; + field_0x4 = NULL; + field_0x8 = NULL; + field_0xc = NULL; + field_0x10 = 0; + field_0x12 = 0; } -#pragma pop /* 8032C704-8032C7BC 327044 00B8+00 1/1 0/0 0/0 .text J3DPSWeightMTXMultVec__FPA4_ffP3VecP3Vec */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void J3DPSWeightMTXMultVec(f32 (*param_0)[4], f32 param_1, Vec* param_2, Vec* param_3) { - nofralloc -#include "asm/JSystem/J3DGraphAnimator/J3DSkinDeform/J3DPSWeightMTXMultVec__FPA4_ffP3VecP3Vec.s" +static void J3DPSWeightMTXMultVec(f32 (*param_0)[4], f32 param_1, Vec* param_2, Vec* param_3) { + f32 f4 = param_0[0][3] + param_0[0][0] * param_2->x; + f32 f5 = param_0[1][3] + param_0[1][0] * param_2->x; + f32 f3 = param_0[2][3] + param_0[2][0] * param_2->x; + f4 += param_0[0][1] * param_2->y; + f5 += param_0[1][1] * param_2->y; + f3 += param_0[2][1] * param_2->y; + f4 += param_0[0][2] * param_2->z; + f5 += param_0[1][2] * param_2->z; + f3 += param_0[2][2] * param_2->z; + param_3->x += f4 * param_1; + param_3->y += f5 * param_1; + param_3->z += f3 * param_1; } -#pragma pop /* 8032C7BC-8032C85C 3270FC 00A0+00 1/1 0/0 0/0 .text J3DPSWeightMTXMultVecSR__FPA4_ffP3VecP3Vec */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void J3DPSWeightMTXMultVecSR(f32 (*param_0)[4], f32 param_1, Vec* param_2, - Vec* param_3) { - nofralloc -#include "asm/JSystem/J3DGraphAnimator/J3DSkinDeform/J3DPSWeightMTXMultVecSR__FPA4_ffP3VecP3Vec.s" +static void J3DPSWeightMTXMultVecSR(f32 (*param_0)[4], f32 param_1, Vec* param_2, + Vec* param_3) { + f32 f4 = param_0[0][0] * param_2->x; + f32 f5 = param_0[1][0] * param_2->x; + f32 f3 = param_0[2][0] * param_2->x; + f4 += param_0[0][1] * param_2->y; + f5 += param_0[1][1] * param_2->y; + f3 += param_0[2][1] * param_2->y; + f4 += param_0[0][2] * param_2->z; + f5 += param_0[1][2] * param_2->z; + f3 += param_0[2][2] * param_2->z; + param_3->x += f4 * param_1; + param_3->y += f5 * param_1; + param_3->z += f3 * param_1; } -#pragma pop /* 8032C85C-8032C8E4 32719C 0088+00 1/1 0/0 0/0 .text calcSkin_VtxPosF32__12J3DSkinNListFPA4_fPvPv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DSkinNList::calcSkin_VtxPosF32(f32 (*param_0)[4], void* param_1, void* param_2) { - nofralloc -#include "asm/JSystem/J3DGraphAnimator/J3DSkinDeform/calcSkin_VtxPosF32__12J3DSkinNListFPA4_fPvPv.s" +void J3DSkinNList::calcSkin_VtxPosF32(f32 (*param_0)[4], void* param_1, void* param_2) { + u16 r29 = field_0x10; + for (int i = 0; i < r29; i++) { + u16 ind = field_0x0[i]; + J3DPSWeightMTXMultVec(param_0, field_0x8[i], ((Vec*)param_1 + ind), ((Vec*)param_2 + ind)); + } } -#pragma pop /* 8032C8E4-8032C96C 327224 0088+00 1/1 0/0 0/0 .text calcSkin_VtxNrmF32__12J3DSkinNListFPA4_fPvPv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DSkinNList::calcSkin_VtxNrmF32(f32 (*param_0)[4], void* param_1, void* param_2) { - nofralloc -#include "asm/JSystem/J3DGraphAnimator/J3DSkinDeform/calcSkin_VtxNrmF32__12J3DSkinNListFPA4_fPvPv.s" +void J3DSkinNList::calcSkin_VtxNrmF32(f32 (*param_0)[4], void* param_1, void* param_2) { + u16 r29 = field_0x12; + for (int i = 0; i < r29; i++) { + u16 ind = field_0x4[i]; + J3DPSWeightMTXMultVecSR(param_0, field_0xc[i], ((Vec*)param_1 + ind), ((Vec*)param_2 + ind)); + } } -#pragma pop /* ############################################################################################## */ -/* 803CEE70-803CEE80 02BF90 0010+00 2/2 0/0 0/0 .data __vt__13J3DSkinDeform */ -SECTION_DATA extern void* __vt__13J3DSkinDeform[4] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)deform__13J3DSkinDeformFP15J3DVertexBufferP12J3DMtxBuffer, - (void*)__dt__13J3DSkinDeformFv, -}; /* 8032C96C-8032C9B0 3272AC 0044+00 0/0 0/0 2/2 .text __ct__13J3DSkinDeformFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm J3DSkinDeform::J3DSkinDeform() { - nofralloc -#include "asm/JSystem/J3DGraphAnimator/J3DSkinDeform/__ct__13J3DSkinDeformFv.s" +J3DSkinDeform::J3DSkinDeform() { + mPosData = NULL; + mNrmData = NULL; + mPosMtx = NULL; + mNrmMtx = NULL; + mFlags = 3; + field_0x18 = 1; + field_0x19 = 0; + field_0x1c = 0; + field_0x20 = 0; + mSkinNList = NULL; } -#pragma pop /* ############################################################################################## */ /* 80437218-80438218 063F38 1000+00 1/1 0/0 0/0 .bss sWorkArea_WEvlpMixMtx__13J3DSkinDeform */ -u8 J3DSkinDeform::sWorkArea_WEvlpMixMtx[4096]; +u16* J3DSkinDeform::sWorkArea_WEvlpMixMtx[1024]; /* 80438218-80439218 064F38 1000+00 1/1 0/0 0/0 .bss sWorkArea_WEvlpMixWeight__13J3DSkinDeform */ -u8 J3DSkinDeform::sWorkArea_WEvlpMixWeight[4096]; - -/* 80456468-8045646C 004A68 0004+00 1/1 0/0 0/0 .sdata2 @1110 */ -SECTION_SDATA2 static f32 lit_1110 = 1.0f; +f32* J3DSkinDeform::sWorkArea_WEvlpMixWeight[1024]; /* 8032C9B0-8032CF44 3272F0 0594+00 0/0 1/1 0/0 .text * initSkinInfo__13J3DSkinDeformFP12J3DModelData */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DSkinDeform::initSkinInfo(J3DModelData* param_0) { - nofralloc -#include "asm/JSystem/J3DGraphAnimator/J3DSkinDeform/initSkinInfo__13J3DSkinDeformFP12J3DModelData.s" +void J3DSkinDeform::initSkinInfo(J3DModelData* param_0) { + u16 wevlpMtxNum = param_0->getWEvlpMtxNum(); + u16* wevlpMtxIndex = param_0->getWEvlpMixMtxIndex(); + f32* wevlpMixWeights = param_0->getWEvlpMixWeight(); + int currentOffset = 0; + for (int i = 0; i < wevlpMtxNum; i++) { + sWorkArea_WEvlpMixMtx[i] = wevlpMtxIndex + currentOffset; + sWorkArea_WEvlpMixWeight[i] = wevlpMixWeights + currentOffset; + currentOffset += param_0->getWEvlpMixMtxNum(i); + } + + if (param_0->getJointNum() != 0) { + mSkinNList = new J3DSkinNList[param_0->getJointNum()]; + } + + for (int i = 0; i < param_0->getVtxNum(); i++) { + u16 uVar8 = mPosData[i]; + if (uVar8 != 0xffff) { + if (param_0->getDrawMtxFlag(uVar8) == 0) { + u16 drawMtxIndex = param_0->getDrawMtxIndex(uVar8); + mSkinNList[drawMtxIndex].field_0x10++; + } else { + u16 drawMtxIndex = param_0->getDrawMtxIndex(uVar8); + wevlpMtxNum = param_0->getWEvlpMixMtxNum(drawMtxIndex); + u16* indices = sWorkArea_WEvlpMixMtx[drawMtxIndex]; + for (int j = 0; j < wevlpMtxNum; j++) { + mSkinNList[indices[j]].field_0x10++; + } + } + } + } + for (int i = 0; i < param_0->getNrmNum(); i++) { + u16 uVar8 = mNrmData[i]; + if (uVar8 != 0xffff) { + if (param_0->getDrawMtxFlag(uVar8) == 0) { + u16 drawMtxIndex = param_0->getDrawMtxIndex(uVar8); + mSkinNList[drawMtxIndex].field_0x12++; + } else { + u16 drawMtxIndex = param_0->getDrawMtxIndex(uVar8); + wevlpMtxNum = param_0->getWEvlpMixMtxNum(drawMtxIndex); + u16* indices = sWorkArea_WEvlpMixMtx[drawMtxIndex]; + for (int j = 0; j < wevlpMtxNum; j++) { + mSkinNList[indices[j]].field_0x12++; + } + } + } + } + for (u16 i = 0; i < param_0->getJointNum(); i++) { + if (mSkinNList[i].field_0x10) { + mSkinNList[i].field_0x0 = new u16[mSkinNList[i].field_0x10]; + mSkinNList[i].field_0x8 = new f32[mSkinNList[i].field_0x10]; + mSkinNList[i].field_0x10 = 0; + } + if (mSkinNList[i].field_0x12) { + mSkinNList[i].field_0x4 = new u16[mSkinNList[i].field_0x12]; + mSkinNList[i].field_0xc = new f32[mSkinNList[i].field_0x12]; + mSkinNList[i].field_0x12 = 0; + } + } + for (int i = 0; i < param_0->getVtxNum(); i++) { + u16 uVar8 = mPosData[i]; + if (uVar8 != 0xffff) { + if (param_0->getDrawMtxFlag(uVar8) == 0) { + u16 drawMtxIndex = param_0->getDrawMtxIndex(uVar8); + u16 uVar9 = mSkinNList[drawMtxIndex].field_0x10++; + mSkinNList[drawMtxIndex].field_0x0[uVar9] = i; + mSkinNList[drawMtxIndex].field_0x8[uVar9] = 1.0f; + } else { + u16 drawMtxIndex = param_0->getDrawMtxIndex(uVar8); + wevlpMtxNum = param_0->getWEvlpMixMtxNum(drawMtxIndex); + u16* indices = sWorkArea_WEvlpMixMtx[drawMtxIndex]; + f32* weights = sWorkArea_WEvlpMixWeight[drawMtxIndex]; + for (int j = 0; j < wevlpMtxNum; j++) { + u16 uVar9 = mSkinNList[indices[j]].field_0x10++; + mSkinNList[indices[j]].field_0x0[uVar9] = i; + mSkinNList[indices[j]].field_0x8[uVar9] = weights[j]; + } + } + } + } + for (int i = 0; i < param_0->getNrmNum(); i++) { + u16 uVar8 = mNrmData[i]; + if (uVar8 != 0xffff) { + if (param_0->getDrawMtxFlag(uVar8) == 0) { + u16 drawMtxIndex = param_0->getDrawMtxIndex(uVar8); + u16 uVar9 = mSkinNList[drawMtxIndex].field_0x12++; + mSkinNList[drawMtxIndex].field_0x4[uVar9] = i; + mSkinNList[drawMtxIndex].field_0xc[uVar9] = 1.0f; + } else { + u16 drawMtxIndex = param_0->getDrawMtxIndex(uVar8); + wevlpMtxNum = param_0->getWEvlpMixMtxNum(drawMtxIndex); + u16* indices = sWorkArea_WEvlpMixMtx[drawMtxIndex]; + f32* weights = sWorkArea_WEvlpMixWeight[drawMtxIndex]; + for (int j = 0; j < wevlpMtxNum; j++) { + u16 uVar9 = mSkinNList[indices[j]].field_0x12++; + mSkinNList[indices[j]].field_0x4[uVar9] = i; + mSkinNList[indices[j]].field_0xc[uVar9] = weights[j]; + } + } + } + } } -#pragma pop /* ############################################################################################## */ /* 803A2008-803A2018 02E668 0010+00 1/1 0/0 0/0 .rodata @1142 */ -SECTION_RODATA static u8 const lit_1142[16] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, +SECTION_RODATA static u32 const lit_1142[4] = { + 0, 1, 1, 2, }; COMPILER_STRIP_GATE(0x803A2008, &lit_1142); @@ -192,18 +290,137 @@ SECTION_DEAD static char const* const pad_803A2062 = "\0\0\0\0\0"; /* 80439218-80439A20 065F38 0800+08 1/1 0/0 0/0 .bss sWorkArea_MtxReg__13J3DSkinDeform */ -u8 J3DSkinDeform::sWorkArea_MtxReg[2048 + 8 /* padding */]; +u16 J3DSkinDeform::sWorkArea_MtxReg[1024 + 4 /* padding */]; /* 8032CF44-8032D378 327884 0434+00 0/0 1/1 0/0 .text * initMtxIndexArray__13J3DSkinDeformFP12J3DModelData */ +// Several register order and regalloc issues +#ifdef NONMATCHING +int J3DSkinDeform::initMtxIndexArray(J3DModelData* param_0) { + if (mPosData != NULL && mNrmData != NULL) { + return 0; + } + + mPosData = new u16[param_0->getVtxNum()]; + if (mPosData == NULL) { + return 4; + } + + for (int i = 0; i < param_0->getVtxNum(); i++) { + mPosData[i] = 0xffff; + } + + if (param_0->getNrmNum()) { + mNrmData = new u16[param_0->getNrmNum()]; + if (mNrmData == NULL) { + return 4; + } + for (int i = 0; i < param_0->getNrmNum(); i++) { + mNrmData[i] = 0; + } + } else { + mNrmData = NULL; + } + + mPosMtx = new Mtx[param_0->getJointNum()]; + mNrmMtx = new (32) Mtx33[param_0->getDrawMtxNum()]; + if (mPosMtx == NULL) { + return 4; + } + if (mNrmMtx == NULL) { + return 4; + } + + for (u16 local_6c = 0; local_6c < param_0->getShapeNum(); local_6c++) { + u32 local_28[4] = {0,1,1,2}; + int r26 = -1; + int r25 = -1; + int r24 = -1; + int r23 = 0; + for (GXVtxDescList* local_4c = param_0->getShapeNodePointer(local_6c)->getVtxDesc(); local_4c->attr != 0xff; local_4c++) { + switch (local_4c->attr) { + case GX_VA_PNMTXIDX: + r26 = r23; + break; + case GX_VA_POS: + r25 = r23; + if (local_4c->type != GX_INDEX16) { + OSReport(" Invlid Data : CPU Pipeline process GX_INDEX16 Data Only\n"); + return 6; + } + break; + case GX_VA_NRM: + r24 = r23; + if (local_4c->type != GX_INDEX16) { + OSReport(" Invlid Data : CPU Pipeline process GX_INDEX16 Data Only\n"); + return 6; + } + break; + case GX_VA_TEX0: + if (local_4c->type != GX_INDEX16) { + OSReport(" Invlid Data : CPU Pipeline process GX_INDEX16 Data Only\n"); + return 6; + } + break; + } + r23 += local_28[(int)local_4c->type]; + } + for (u16 local_6e = 0; local_6e < param_0->getShapeNodePointer(local_6c)->getMtxGroupNum(); local_6e++) { + J3DShapeMtx* piVar8 = param_0->getShapeNodePointer(local_6c)->getShapeMtx(local_6e); + u8* pcVar10 = param_0->getShapeNodePointer(local_6c)->getShapeDraw(local_6e)->getDisplayList(); + u16 uVar13; + for (u8* local_58 = pcVar10; + (int)local_58 - (int)pcVar10 < param_0->getShapeNodePointer(local_6c)->getShapeDraw(local_6e)->getDisplayListSize(); + local_58 += r23 * uVar13, local_58 += 3) { + if (*local_58 != 0xA0 && *local_58 != 0x98) { + break; + } + + uVar13 = *(u16*)(local_58 + 1); + for (int local_60 = 0; local_60 < uVar13; local_60++) { + u8* iVar5 = local_58; + iVar5 += r23 * local_60 + 3; + u8 bVar3 = *(iVar5 + r26) / 3U; + u16 uVar1 = *(u16*)(iVar5 + r25); + u16 uVar2 = *(u16*)(iVar5 + r24); + u32 local_76 = piVar8->getUseMtxIndex(bVar3); + if ((u16)local_76 == 0xffff) { + local_76 = sWorkArea_MtxReg[bVar3]; + } else if (r26 != -1) { + sWorkArea_MtxReg[bVar3] = local_76; + } + mPosData[uVar1] = local_76; + if (r24 != -1) { + mNrmData[uVar2] = local_76; + } + } + } + if (r24 == -1) { + param_0->getShapeNodePointer(local_6c)->onFlag(0x100); + param_0->getShapeNodePointer(local_6c)->offFlag(8); + } + } + } + + for (int local_68 = 0; local_68 < param_0->getVtxNum(); local_68++) { + if (mPosData[local_68] == 0xffff) { + field_0x18 = 0x0; + mPosData[local_68] = 0; + } + } + + return 0; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void J3DSkinDeform::initMtxIndexArray(J3DModelData* param_0) { +asm int J3DSkinDeform::initMtxIndexArray(J3DModelData* param_0) { nofralloc #include "asm/JSystem/J3DGraphAnimator/J3DSkinDeform/initMtxIndexArray__13J3DSkinDeformFP12J3DModelData.s" } #pragma pop +#endif /* ############################################################################################## */ /* 803A2018-803A2028 02E678 0010+00 1/1 0/0 0/0 .rodata @1270 */ @@ -214,6 +431,67 @@ COMPILER_STRIP_GATE(0x803A2018, &lit_1270); /* 8032D378-8032D5C4 327CB8 024C+00 0/0 1/1 0/0 .text * changeFastSkinDL__13J3DSkinDeformFP12J3DModelData */ +// regalloc, display list access issues +#ifdef NONMATCHING +void J3DSkinDeform::changeFastSkinDL(J3DModelData* param_0) { + for (u16 i = 0; i < param_0->getShapeNum(); i++) { + u32 local_28[4] = {0,1,1,2}; + s32 local_30 = -1; + s32 local_34 = 0; + J3DShape* pShapeNode = param_0->getShapeNodePointer(i); + for (GXVtxDescList* local_3c = pShapeNode->getVtxDesc(); local_3c->attr != GX_VA_NULL; local_3c++) { + if (local_3c->attr == GX_VA_PNMTXIDX) { + local_30 = local_34; + } + local_34 += local_28[(int)local_3c->type]; + } + if (local_30 != -1) { + for (u16 j = 0; j < pShapeNode->getMtxGroupNum(); j++) { + u8* puVar5 = pShapeNode->getShapeDraw(j)->getDisplayList(); + u8* puVar10 = puVar5; + u8* local_44 = puVar5; + while ((int)local_44 - (int)puVar5 < pShapeNode->getShapeDraw(j)->getDisplayListSize()) { + u8 cVar1 = *(u8*)local_44; + *puVar10++ = cVar1; + if ((cVar1 != 0xA0) && (cVar1 != 0x98)) + break; + u16 uVar9 = *(u16*)((int)local_44 + 1); + *(u16*)puVar10 = uVar9; + puVar10 += 2; + for (int local_4c = 0; local_4c < uVar9; local_4c++) { + u8* dst; + memcpy(puVar10, &local_44[(local_34 * local_4c) + 4], local_34 - 1); + puVar10 = (u8*)((int)puVar10 + local_34 - 1); + } + local_44 += local_34 * uVar9; + local_44 += 3; + } + int pcVar2 = ((int)puVar10 - (int)puVar5 + 0x1f) & ~0x1f; + while ((int)puVar10 - (int)puVar5 < pShapeNode->getShapeDraw(j)->getDisplayListSize()) { + *puVar10++ = 0; + } + pShapeNode->getShapeDraw(j)->setDisplayListSize(pcVar2); + DCStoreRange(puVar5, pShapeNode->getShapeDraw(j)->getDisplayListSize()); + } + } + } + + for (u16 i = 0; i < param_0->getShapeNum(); i++) { + J3DShape* pShape = param_0->getShapeNodePointer(i); + GXVtxDescList* local_60 = pShape->getVtxDesc(); + for (GXVtxDescList*local_5c = local_60; local_5c->attr != GX_VA_NULL; local_5c++) { + if (local_5c->attr != GX_VA_PNMTXIDX) { + local_60->attr = local_5c->attr; + local_60->type = local_5c->type; + local_60++; + } + } + local_60->attr = GX_VA_NULL; + local_60->type = GX_NONE; + pShape->makeVcdVatCmd(); + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -222,75 +500,151 @@ asm void J3DSkinDeform::changeFastSkinDL(J3DModelData* param_0) { #include "asm/JSystem/J3DGraphAnimator/J3DSkinDeform/changeFastSkinDL__13J3DSkinDeformFP12J3DModelData.s" } #pragma pop +#endif /* 8032D5C4-8032D738 327F04 0174+00 1/1 0/0 0/0 .text calcNrmMtx__13J3DSkinDeformFP12J3DMtxBuffer */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DSkinDeform::calcNrmMtx(J3DMtxBuffer* param_0) { - nofralloc -#include "asm/JSystem/J3DGraphAnimator/J3DSkinDeform/calcNrmMtx__13J3DSkinDeformFP12J3DMtxBuffer.s" +void J3DSkinDeform::calcNrmMtx(J3DMtxBuffer* param_0) { + J3DJointTree* jointTree = param_0->getJointTree(); + u16 drawMtxNum = jointTree->getDrawMtxNum(); + for (u16 i = 0; i < drawMtxNum; i++) { + if (jointTree->getDrawMtxFlag(i) == 0) { + if (param_0->getScaleFlag(jointTree->getDrawMtxIndex(i)) == 1) { + setNrmMtx(i, param_0->getAnmMtx(jointTree->getDrawMtxIndex(i))); + } else { + J3DPSCalcInverseTranspose(param_0->getAnmMtx(jointTree->getDrawMtxIndex(i)), getNrmMtx(i)); + } + } else { + if (param_0->getEnvScaleFlag(jointTree->getDrawMtxIndex(i)) == 1) { + setNrmMtx(i, param_0->getWeightAnmMtx(jointTree->getDrawMtxIndex(i))); + } else { + J3DPSCalcInverseTranspose(param_0->getWeightAnmMtx(jointTree->getDrawMtxIndex(i)), getNrmMtx(i)); + } + } + } } -#pragma pop /* 8032D738-8032D87C 328078 0144+00 0/0 1/1 0/0 .text * transformVtxPosNrm__13J3DSkinDeformFP12J3DModelData */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DSkinDeform::transformVtxPosNrm(J3DModelData* param_0) { - nofralloc -#include "asm/JSystem/J3DGraphAnimator/J3DSkinDeform/transformVtxPosNrm__13J3DSkinDeformFP12J3DModelData.s" +void J3DSkinDeform::transformVtxPosNrm(J3DModelData* param_0) { + if (param_0->getWEvlpMtxNum() != 0 && field_0x19 == 0) { + int vtmNum = param_0->getVtxNum(); + int nrmNum = param_0->getNrmNum(); + for (int i = 0; i < vtmNum; i++) { + u16 posIndex = mPosData[i]; + if (param_0->getDrawMtxFlag(posIndex) == 0) { + u16 drawMtxIndex = param_0->getDrawMtxIndex(posIndex); + Vec* pos = ((Vec*)param_0->getVtxPosArray()) + i; + Mtx invMtx; + PSMTXInverse(param_0->getInvJointMtx(drawMtxIndex), invMtx); + PSMTXMultVec(invMtx, pos, pos); + } + } + for (int i = 0; i < nrmNum; i++) { + u16 nrmIndex = mNrmData[i]; + if (param_0->getDrawMtxFlag(nrmIndex) == 0) { + u16 drawMtxIndex = param_0->getDrawMtxIndex(nrmIndex); + Vec* nrm = ((Vec*)param_0->getVtxNrmArray()) + i; + Mtx invMtx; + PSMTXInverse(param_0->getInvJointMtx(drawMtxIndex), invMtx); + PSMTXMultVecSR(invMtx, nrm, nrm); + } + } + field_0x19 = 1; + } } -#pragma pop /* 8032D87C-8032D8F4 3281BC 0078+00 1/1 0/0 0/0 .text * calcAnmInvJointMtx__13J3DSkinDeformFP12J3DMtxBuffer */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DSkinDeform::calcAnmInvJointMtx(J3DMtxBuffer* param_0) { - nofralloc -#include "asm/JSystem/J3DGraphAnimator/J3DSkinDeform/calcAnmInvJointMtx__13J3DSkinDeformFP12J3DMtxBuffer.s" +void J3DSkinDeform::calcAnmInvJointMtx(J3DMtxBuffer* param_0) { + if (param_0->getJointTree()->getWEvlpMtxNum() != 0) { + u16 jointNum = param_0->getJointTree()->getJointNum(); + Mtx* anmMtx = (Mtx*)param_0->getAnmMtx(0); + Mtx* invJointMtx = ¶m_0->getJointTree()->getInvJointMtx(0); + Mtx* posMtx = mPosMtx; + for (int i = 0; i < jointNum; i++) { + PSMTXConcat(anmMtx[i], invJointMtx[i], posMtx[i]); + } + } } -#pragma pop /* 8032D8F4-8032DA1C 328234 0128+00 1/1 0/0 0/0 .text * deformFastVtxPos_F32__13J3DSkinDeformCFP15J3DVertexBufferP12J3DMtxBuffer */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DSkinDeform::deformFastVtxPos_F32(J3DVertexBuffer* param_0, - J3DMtxBuffer* param_1) const { - nofralloc -#include "asm/JSystem/J3DGraphAnimator/J3DSkinDeform/deformFastVtxPos_F32__13J3DSkinDeformCFP15J3DVertexBufferP12J3DMtxBuffer.s" +void J3DSkinDeform::deformFastVtxPos_F32(J3DVertexBuffer* param_0, J3DMtxBuffer* param_1) const { + param_0->swapTransformedVtxPos(); + J3DJointTree* jointTree = param_1->getJointTree(); + u32 vtxNum = param_0->getVertexData()->getVtxNum(); + void* currentVtxPos = param_0->getCurrentVtxPos(); + void* transformedVtxPos = param_0->getTransformedVtxPos(0); + J3DFillZero32B(transformedVtxPos, (vtxNum * sizeof(Vec) + 0x1f) & ~0x1f); + if (jointTree->getWEvlpMtxNum() != 0) { + u16 jointNum = jointTree->getJointNum(); + for (u16 i = 0; i < jointNum; i++) { + mSkinNList[i].calcSkin_VtxPosF32(mPosMtx[i], currentVtxPos, transformedVtxPos); + } + } else { + u16 jointNum = jointTree->getJointNum(); + for (u16 i = 0; i < jointNum; i++) { + J3DSkinNList* skinList = mSkinNList + i; + skinList->calcSkin_VtxPosF32(param_1->getAnmMtx(i), currentVtxPos, transformedVtxPos); + } + } + DCStoreRange(param_0->getTransformedVtxPos(0), param_0->getVertexData()->getVtxNum() * sizeof(Vec)); + param_0->setCurrentVtxPos(transformedVtxPos); } -#pragma pop /* ############################################################################################## */ -/* 8045646C-80456470 004A6C 0004+00 1/1 0/0 0/0 .sdata2 @1578 */ -SECTION_SDATA2 static u8 lit_1578[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; /* 8032DA1C-8032DB50 32835C 0134+00 1/1 0/0 0/0 .text * deformFastVtxNrm_F32__13J3DSkinDeformCFP15J3DVertexBufferP12J3DMtxBuffer */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DSkinDeform::deformFastVtxNrm_F32(J3DVertexBuffer* param_0, - J3DMtxBuffer* param_1) const { - nofralloc -#include "asm/JSystem/J3DGraphAnimator/J3DSkinDeform/deformFastVtxNrm_F32__13J3DSkinDeformCFP15J3DVertexBufferP12J3DMtxBuffer.s" +void J3DSkinDeform::deformFastVtxNrm_F32(J3DVertexBuffer* param_0, J3DMtxBuffer* param_1) const { + param_0->swapTransformedVtxNrm(); + J3DJointTree* jointTree = param_1->getJointTree(); + int nrmNum = param_0->getVertexData()->getNrmNum(); + void* currentVtxNrm = param_0->getCurrentVtxNrm(); + void* transformedVtxNrm = param_0->getTransformedVtxNrm(0); + for (int i = 0; i < nrmNum; i++) { + ((Vec*)transformedVtxNrm)[i].x = 0.0f; + ((Vec*)transformedVtxNrm)[i].y = 0.0f; + ((Vec*)transformedVtxNrm)[i].z = 0.0f; + } + if (jointTree->getWEvlpMtxNum() != 0) { + u16 jointNum = jointTree->getJointNum(); + for (u16 i = 0; i < jointNum; i++) { + mSkinNList[i].calcSkin_VtxNrmF32(mPosMtx[i], currentVtxNrm, transformedVtxNrm); + } + } else { + u16 jointNum = jointTree->getJointNum(); + for (u16 i = 0; i < jointNum; i++) { + J3DSkinNList* skinList = mSkinNList + i; + skinList->calcSkin_VtxNrmF32(param_1->getAnmMtx(i), currentVtxNrm, transformedVtxNrm); + } + } + DCStoreRange(param_0->getTransformedVtxNrm(0), param_0->getVertexData()->getNrmNum() * sizeof(Vec)); + param_0->setCurrentVtxNrm(transformedVtxNrm); } -#pragma pop /* 8032DB50-8032DC74 328490 0124+00 1/1 0/0 0/0 .text * deformVtxPos_F32__13J3DSkinDeformCFP15J3DVertexBufferP12J3DMtxBuffer */ +// J3DPSMulMtxVec regalloc +#ifdef NONMATCHING +void J3DSkinDeform::deformVtxPos_F32(J3DVertexBuffer* param_0, J3DMtxBuffer* param_1) const { + Mtx* anmMtxs[2]; + anmMtxs[0] = (Mtx*)param_1->getAnmMtx(0); + anmMtxs[1] = (Mtx*)param_1->getWeightAnmMtx(0); + param_0->swapTransformedVtxPos(); + J3DJointTree* jointTree = param_1->getJointTree(); + int vtxNum = param_0->getVertexData()->getVtxNum(); + void* currentVtxPos = param_0->getCurrentVtxPos(); + void* transformedVtxPos = param_0->getTransformedVtxPos(0); + for (int i = 0; i < vtxNum; i++) { + Mtx* anmMtx = anmMtxs[jointTree->getDrawMtxFlag(mPosData[i])]; + J3DPSMulMtxVec(anmMtx[jointTree->getDrawMtxIndex(mPosData[i])], ((Vec*)currentVtxPos) + i, ((Vec*)transformedVtxPos) + i); + } + DCStoreRange(param_0->getTransformedVtxPos(0), param_0->getVertexData()->getVtxNum() * sizeof(Vec)); + param_0->setCurrentVtxPos(transformedVtxPos); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -299,9 +653,31 @@ asm void J3DSkinDeform::deformVtxPos_F32(J3DVertexBuffer* param_0, J3DMtxBuffer* #include "asm/JSystem/J3DGraphAnimator/J3DSkinDeform/deformVtxPos_F32__13J3DSkinDeformCFP15J3DVertexBufferP12J3DMtxBuffer.s" } #pragma pop +#endif /* 8032DC74-8032DDB8 3285B4 0144+00 1/1 0/0 0/0 .text * deformVtxPos_S16__13J3DSkinDeformCFP15J3DVertexBufferP12J3DMtxBuffer */ +// J3DPSMulMtxVec regalloc +#ifdef NONMATCHING +void J3DSkinDeform::deformVtxPos_S16(J3DVertexBuffer* param_0, J3DMtxBuffer* param_1) const { + Mtx* anmMtxs[2]; + anmMtxs[0] = (Mtx*)param_1->getAnmMtx(0); + anmMtxs[1] = (Mtx*)param_1->getWeightAnmMtx(0); + u8 vtxPosFrac = param_0->getVertexData()->getVtxPosFrac(); + J3DGQRSetup7(vtxPosFrac, 7, vtxPosFrac, 7); + param_0->swapTransformedVtxPos(); + J3DJointTree* jointTree = param_1->getJointTree(); + int vtxNum = param_0->getVertexData()->getVtxNum(); + void* currentVtxPos = param_0->getCurrentVtxPos(); + void* transformedVtxPos = param_0->getTransformedVtxPos(0); + for (int i = 0; i < vtxNum; i++) { + Mtx* anmMtx = anmMtxs[jointTree->getDrawMtxFlag(mPosData[i])]; + J3DPSMulMtxVec(anmMtx[jointTree->getDrawMtxIndex(mPosData[i])], ((SVec*)currentVtxPos) + i, ((SVec*)transformedVtxPos) + i); + } + DCStoreRange(param_0->getTransformedVtxPos(0), param_0->getVertexData()->getVtxNum() * sizeof(SVec)); + param_0->setCurrentVtxPos(transformedVtxPos); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -310,9 +686,24 @@ asm void J3DSkinDeform::deformVtxPos_S16(J3DVertexBuffer* param_0, J3DMtxBuffer* #include "asm/JSystem/J3DGraphAnimator/J3DSkinDeform/deformVtxPos_S16__13J3DSkinDeformCFP15J3DVertexBufferP12J3DMtxBuffer.s" } #pragma pop +#endif /* 8032DDB8-8032DEBC 3286F8 0104+00 1/1 0/0 0/0 .text * deformVtxNrm_F32__13J3DSkinDeformCFP15J3DVertexBuffer */ +// J3DPSMulMtxVec regalloc +#ifdef NONMATCHING +void J3DSkinDeform::deformVtxNrm_F32(J3DVertexBuffer* param_0) const { + param_0->swapTransformedVtxNrm(); + int nrmNum = param_0->getVertexData()->getNrmNum(); + void* currentVtxNrm = param_0->getCurrentVtxNrm(); + void* transformedVtxNrm = param_0->getTransformedVtxNrm(0); + for (int i = 0; i < nrmNum; i++) { + J3DPSMulMtxVec(mNrmMtx[mNrmData[i]], ((Vec*)currentVtxNrm) + i, ((Vec*)transformedVtxNrm) + i); + } + DCStoreRange(param_0->getTransformedVtxNrm(0), param_0->getVertexData()->getNrmNum() * sizeof(Vec)); + param_0->setCurrentVtxNrm(transformedVtxNrm); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -321,9 +712,26 @@ asm void J3DSkinDeform::deformVtxNrm_F32(J3DVertexBuffer* param_0) const { #include "asm/JSystem/J3DGraphAnimator/J3DSkinDeform/deformVtxNrm_F32__13J3DSkinDeformCFP15J3DVertexBuffer.s" } #pragma pop +#endif /* 8032DEBC-8032DFDC 3287FC 0120+00 1/1 0/0 0/0 .text * deformVtxNrm_S16__13J3DSkinDeformCFP15J3DVertexBuffer */ +// J3DPSMulMtxVec regalloc +#ifdef NONMATCHING +void J3DSkinDeform::deformVtxNrm_S16(J3DVertexBuffer* param_0) const { + u8 vtxNrmFrac = param_0->getVertexData()->getVtxNrmFrac(); + J3DGQRSetup7(vtxNrmFrac, 7, vtxNrmFrac, 7); + param_0->swapTransformedVtxNrm(); + int nrmNum = param_0->getVertexData()->getNrmNum(); + void* currentVtxNrm = param_0->getCurrentVtxNrm(); + void* transformedVtxNrm = param_0->getTransformedVtxNrm(0); + for (int i = 0; i < nrmNum; i++) { + J3DPSMulMtxVec(mNrmMtx[mNrmData[i]], ((SVec*)currentVtxNrm) + i, ((SVec*)transformedVtxNrm) + i); + } + DCStoreRange(param_0->getTransformedVtxNrm(0), param_0->getVertexData()->getNrmNum() * sizeof(SVec)); + param_0->setCurrentVtxNrm(transformedVtxNrm); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -332,48 +740,63 @@ asm void J3DSkinDeform::deformVtxNrm_S16(J3DVertexBuffer* param_0) const { #include "asm/JSystem/J3DGraphAnimator/J3DSkinDeform/deformVtxNrm_S16__13J3DSkinDeformCFP15J3DVertexBuffer.s" } #pragma pop +#endif /* 8032DFDC-8032E064 32891C 0088+00 0/0 1/1 0/0 .text deform__13J3DSkinDeformFP8J3DModel */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DSkinDeform::deform(J3DModel* param_0) { - nofralloc -#include "asm/JSystem/J3DGraphAnimator/J3DSkinDeform/deform__13J3DSkinDeformFP8J3DModel.s" +void J3DSkinDeform::deform(J3DModel* param_0) { + if (param_0->checkFlag(4)) { + onFlag(2); + } else { + offFlag(2); + } + + if (param_0->checkFlag(8)) { + onFlag(1); + } else { + offFlag(1); + } + deform(param_0->getVertexBuffer(), param_0->getMtxBuffer()); } -#pragma pop /* 8032E064-8032E180 3289A4 011C+00 1/0 0/0 0/0 .text * deform__13J3DSkinDeformFP15J3DVertexBufferP12J3DMtxBuffer */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DSkinDeform::deform(J3DVertexBuffer* param_0, J3DMtxBuffer* param_1) { - nofralloc -#include "asm/JSystem/J3DGraphAnimator/J3DSkinDeform/deform__13J3DSkinDeformFP15J3DVertexBufferP12J3DMtxBuffer.s" +void J3DSkinDeform::deform(J3DVertexBuffer* param_0, J3DMtxBuffer* param_1) { + if (param_1->getJointTree()->checkFlag(0x100)) { + calcAnmInvJointMtx(param_1); + } + if (checkFlag(2) != 0) { + if (param_1->getJointTree()->checkFlag(0x100)) { + deformFastVtxPos_F32(param_0, param_1); + } else { + if (param_0->getVertexData()->getVtxPosType() == 4) { + deformVtxPos_F32(param_0, param_1); + } else { + deformVtxPos_S16(param_0, param_1); + } + } + } + if (checkFlag(1) != 0) { + if (param_1->getJointTree()->checkFlag(0x100)) { + deformFastVtxNrm_F32(param_0, param_1); + } else { + calcNrmMtx(param_1); + if (param_0->getVertexData()->getVtxNrmType() == 4) { + deformVtxNrm_F32(param_0); + } else { + deformVtxNrm_S16(param_0); + } + } + } } -#pragma pop /* 8032E180-8032E1B0 328AC0 0030+00 0/0 1/1 0/0 .text calc__15J3DVtxColorCalcFP8J3DModel */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DVtxColorCalc::calc(J3DModel* param_0) { - nofralloc -#include "asm/JSystem/J3DGraphAnimator/J3DSkinDeform/calc__15J3DVtxColorCalcFP8J3DModel.s" +void J3DVtxColorCalc::calc(J3DModel* param_0) { + calc(param_0->getVertexBuffer()); } -#pragma pop /* 8032E1B0-8032E1F8 328AF0 0048+00 1/0 0/0 0/0 .text __dt__13J3DSkinDeformFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm J3DSkinDeform::~J3DSkinDeform() { - nofralloc -#include "asm/JSystem/J3DGraphAnimator/J3DSkinDeform/__dt__13J3DSkinDeformFv.s" -} -#pragma pop +J3DSkinDeform::~J3DSkinDeform() {} /* 803A2028-803A2028 02E688 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/libs/JSystem/J3DGraphBase/J3DTransform.cpp b/libs/JSystem/J3DGraphBase/J3DTransform.cpp index 823ba92b135..d4c577226ae 100644 --- a/libs/JSystem/J3DGraphBase/J3DTransform.cpp +++ b/libs/JSystem/J3DGraphBase/J3DTransform.cpp @@ -32,7 +32,7 @@ extern "C" void J3DScaleNrmMtx__FPA4_fRC3Vec(); extern "C" void J3DScaleNrmMtx33__FPA3_fRC3Vec(); extern "C" void J3DMtxProjConcat__FPA4_fPA4_fPA4_f(); extern "C" void J3DPSMtxArrayConcat__FPA4_fPA4_fPA4_fUl(); -extern "C" extern u8 PSMulUnit01[8]; +extern "C" extern f32 PSMulUnit01[2]; // // External References: @@ -248,6 +248,6 @@ asm void J3DPSMtxArrayConcat(f32 (*param_0)[4], f32 (*param_1)[4], f32 (*param_2 /* ############################################################################################## */ /* 803CD8F8-803CD900 02AA18 0008+00 0/0 2/2 0/0 .data PSMulUnit01 */ -SECTION_DATA extern u8 PSMulUnit01[8] = { - 0x00, 0x00, 0x00, 0x00, 0xBF, 0x80, 0x00, 0x00, +SECTION_DATA extern f32 PSMulUnit01[2] = { + 0.0f, -1.0f, };