Work on J3DSkinDeform

This commit is contained in:
Tal Hayon 2023-07-14 11:30:07 +03:00
parent ed40ffb064
commit 6c945a4e29
29 changed files with 840 additions and 1282 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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;

View File

@ -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(); }

View File

@ -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(); }

View File

@ -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];

View File

@ -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 */

View File

@ -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; }

View File

@ -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;

View File

@ -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 */

View File

@ -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];

View File

@ -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);

View File

@ -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 = &param_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 */

View File

@ -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,
};