From 63c782c0d09cd5dd6281defa7117237702cd2449 Mon Sep 17 00:00:00 2001 From: hatal175 Date: Mon, 10 Jul 2023 04:46:15 +0300 Subject: [PATCH] J3DPacket, J3DShape OK (#366) --- Progress.md | 8 +- ...cDifferedBufferSize__14J3DShapePacketFUl.s | 137 ----------------- .../prepareDraw__14J3DShapePacketCFv.s | 78 ---------- .../J3DShape/drawFast__8J3DShapeCFv.s | 114 -------------- include/JSystem/J3DGraphBase/J3DMaterial.h | 2 + include/JSystem/J3DGraphBase/J3DPacket.h | 42 ++++++ include/JSystem/J3DGraphBase/J3DShapeMtx.h | 9 +- include/JSystem/J3DGraphBase/J3DSys.h | 1 + libs/JSystem/J3DGraphBase/J3DPacket.cpp | 141 ++++++++---------- libs/JSystem/J3DGraphBase/J3DShape.cpp | 54 +------ libs/JSystem/J3DGraphBase/J3DShapeMtx.cpp | 6 +- libs/JSystem/J3DGraphBase/J3DSys.cpp | 3 +- 12 files changed, 124 insertions(+), 471 deletions(-) delete mode 100644 asm/JSystem/J3DGraphBase/J3DPacket/calcDifferedBufferSize__14J3DShapePacketFUl.s delete mode 100644 asm/JSystem/J3DGraphBase/J3DPacket/prepareDraw__14J3DShapePacketCFv.s delete mode 100644 asm/JSystem/J3DGraphBase/J3DShape/drawFast__8J3DShapeCFv.s diff --git a/Progress.md b/Progress.md index 3fa5f6200e9..dfd7fe40da1 100644 --- a/Progress.md +++ b/Progress.md @@ -7,22 +7,22 @@ Section | Percentage | Decompiled (bytes) | Total (bytes) .init | 97.972973% | 9280 | 9472 .extab | 100.000000% | 96 | 96 .extabindex | 100.000000% | 96 | 96 -.text | 28.178607% | 1013456 | 3596544 +.text | 28.211305% | 1014632 | 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.750044% | 1437392 | 4020672 +Total | 35.779293% | 1438568 | 4020672 ## Total Section | Percentage | Decompiled (bytes) | Total (bytes) ---|---|---|--- -main.dol | 35.750044% | 1437392 | 4020672 +main.dol | 35.779293% | 1438568 | 4020672 RELs | 33.810282% | 3888292 | 11500324 -Total | 34.312772% | 5325684 | 15520996 +Total | 34.320349% | 5326860 | 15520996 ## RELs diff --git a/asm/JSystem/J3DGraphBase/J3DPacket/calcDifferedBufferSize__14J3DShapePacketFUl.s b/asm/JSystem/J3DGraphBase/J3DPacket/calcDifferedBufferSize__14J3DShapePacketFUl.s deleted file mode 100644 index 68452fc323b..00000000000 --- a/asm/JSystem/J3DGraphBase/J3DPacket/calcDifferedBufferSize__14J3DShapePacketFUl.s +++ /dev/null @@ -1,137 +0,0 @@ -lbl_80312BD4: -/* 80312BD4 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80312BD8 7C 08 02 A6 */ mflr r0 -/* 80312BDC 90 01 00 24 */ stw r0, 0x24(r1) -/* 80312BE0 39 61 00 20 */ addi r11, r1, 0x20 -/* 80312BE4 48 04 F5 F5 */ bl _savegpr_28 -/* 80312BE8 7C 7D 1B 78 */ mr r29, r3 -/* 80312BEC 7C 9E 23 78 */ mr r30, r4 -/* 80312BF0 3B E0 00 00 */ li r31, 0 -/* 80312BF4 38 60 00 00 */ li r3, 0 -/* 80312BF8 3C 80 80 3D */ lis r4, sDifferedRegister@ha /* 0x803CD900@ha */ -/* 80312BFC 38 A4 D9 00 */ addi r5, r4, sDifferedRegister@l /* 0x803CD900@l */ -/* 80312C00 3C 80 80 3D */ lis r4, sSizeOfDiffered@ha /* 0x803CD920@ha */ -/* 80312C04 38 84 D9 20 */ addi r4, r4, sSizeOfDiffered@l /* 0x803CD920@l */ -/* 80312C08 38 00 00 08 */ li r0, 8 -/* 80312C0C 7C 09 03 A6 */ mtctr r0 -lbl_80312C10: -/* 80312C10 7C 05 18 2E */ lwzx r0, r5, r3 -/* 80312C14 7F C0 00 39 */ and. r0, r30, r0 -/* 80312C18 41 82 00 0C */ beq lbl_80312C24 -/* 80312C1C 7C 04 18 2E */ lwzx r0, r4, r3 -/* 80312C20 7F FF 02 14 */ add r31, r31, r0 -lbl_80312C24: -/* 80312C24 38 63 00 04 */ addi r3, r3, 4 -/* 80312C28 42 00 FF E8 */ bdnz lbl_80312C10 -/* 80312C2C 57 C0 E7 3E */ rlwinm r0, r30, 0x1c, 0x1c, 0x1f -/* 80312C30 1C 00 00 48 */ mulli r0, r0, 0x48 -/* 80312C34 7F FF 02 14 */ add r31, r31, r0 -/* 80312C38 57 DC C7 3F */ rlwinm. r28, r30, 0x18, 0x1c, 0x1f -/* 80312C3C 41 82 00 4C */ beq lbl_80312C88 -/* 80312C40 80 7D 00 28 */ lwz r3, 0x28(r29) -/* 80312C44 80 63 00 04 */ lwz r3, 4(r3) -/* 80312C48 80 63 00 28 */ lwz r3, 0x28(r3) -/* 80312C4C 81 83 00 00 */ lwz r12, 0(r3) -/* 80312C50 81 8C 00 40 */ lwz r12, 0x40(r12) -/* 80312C54 7D 89 03 A6 */ mtctr r12 -/* 80312C58 4E 80 04 21 */ bctrl -/* 80312C5C 7C 1C 18 40 */ cmplw r28, r3 -/* 80312C60 40 81 00 08 */ ble lbl_80312C68 -/* 80312C64 7F 83 E3 78 */ mr r3, r28 -lbl_80312C68: -/* 80312C68 57 C0 04 E7 */ rlwinm. r0, r30, 0, 0x13, 0x13 -/* 80312C6C 41 82 00 14 */ beq lbl_80312C80 -/* 80312C70 1C 03 00 3D */ mulli r0, r3, 0x3d -/* 80312C74 7F E0 FA 14 */ add r31, r0, r31 -/* 80312C78 3B FF 00 0A */ addi r31, r31, 0xa -/* 80312C7C 48 00 00 0C */ b lbl_80312C88 -lbl_80312C80: -/* 80312C80 1C 03 00 35 */ mulli r0, r3, 0x35 -/* 80312C84 7F FF 02 14 */ add r31, r31, r0 -lbl_80312C88: -/* 80312C88 57 DC 87 3F */ rlwinm. r28, r30, 0x10, 0x1c, 0x1f -/* 80312C8C 41 82 00 90 */ beq lbl_80312D1C -/* 80312C90 80 7D 00 28 */ lwz r3, 0x28(r29) -/* 80312C94 80 63 00 04 */ lwz r3, 4(r3) -/* 80312C98 80 63 00 2C */ lwz r3, 0x2c(r3) -/* 80312C9C 81 83 00 00 */ lwz r12, 0(r3) -/* 80312CA0 81 8C 00 98 */ lwz r12, 0x98(r12) -/* 80312CA4 7D 89 03 A6 */ mtctr r12 -/* 80312CA8 4E 80 04 21 */ bctrl -/* 80312CAC 54 60 06 3E */ clrlwi r0, r3, 0x18 -/* 80312CB0 28 00 00 08 */ cmplwi r0, 8 -/* 80312CB4 40 81 00 0C */ ble lbl_80312CC0 -/* 80312CB8 38 60 00 08 */ li r3, 8 -/* 80312CBC 48 00 00 20 */ b lbl_80312CDC -lbl_80312CC0: -/* 80312CC0 80 7D 00 28 */ lwz r3, 0x28(r29) -/* 80312CC4 80 63 00 04 */ lwz r3, 4(r3) -/* 80312CC8 80 63 00 2C */ lwz r3, 0x2c(r3) -/* 80312CCC 81 83 00 00 */ lwz r12, 0(r3) -/* 80312CD0 81 8C 00 98 */ lwz r12, 0x98(r12) -/* 80312CD4 7D 89 03 A6 */ mtctr r12 -/* 80312CD8 4E 80 04 21 */ bctrl -lbl_80312CDC: -/* 80312CDC 54 60 06 3E */ clrlwi r0, r3, 0x18 -/* 80312CE0 7C 1C 00 40 */ cmplw r28, r0 -/* 80312CE4 7C 03 03 78 */ mr r3, r0 -/* 80312CE8 40 81 00 08 */ ble lbl_80312CF0 -/* 80312CEC 7F 83 E3 78 */ mr r3, r28 -lbl_80312CF0: -/* 80312CF0 57 C0 01 4B */ rlwinm. r0, r30, 0, 5, 5 -/* 80312CF4 41 82 00 20 */ beq lbl_80312D14 -/* 80312CF8 1C 83 00 37 */ mulli r4, r3, 0x37 -/* 80312CFC 38 03 00 01 */ addi r0, r3, 1 -/* 80312D00 54 00 F8 7E */ srwi r0, r0, 1 -/* 80312D04 1C 00 00 37 */ mulli r0, r0, 0x37 -/* 80312D08 7C 84 02 14 */ add r4, r4, r0 -/* 80312D0C 7F FF 22 14 */ add r31, r31, r4 -/* 80312D10 48 00 00 0C */ b lbl_80312D1C -lbl_80312D14: -/* 80312D14 1C 03 00 37 */ mulli r0, r3, 0x37 -/* 80312D18 7F FF 02 14 */ add r31, r31, r0 -lbl_80312D1C: -/* 80312D1C 57 DC 67 3F */ rlwinm. r28, r30, 0xc, 0x1c, 0x1f -/* 80312D20 41 82 00 7C */ beq lbl_80312D9C -/* 80312D24 80 7D 00 28 */ lwz r3, 0x28(r29) -/* 80312D28 80 63 00 04 */ lwz r3, 4(r3) -/* 80312D2C 80 63 00 2C */ lwz r3, 0x2c(r3) -/* 80312D30 81 83 00 00 */ lwz r12, 0(r3) -/* 80312D34 81 8C 00 98 */ lwz r12, 0x98(r12) -/* 80312D38 7D 89 03 A6 */ mtctr r12 -/* 80312D3C 4E 80 04 21 */ bctrl -/* 80312D40 54 60 06 3E */ clrlwi r0, r3, 0x18 -/* 80312D44 28 00 00 08 */ cmplwi r0, 8 -/* 80312D48 40 81 00 0C */ ble lbl_80312D54 -/* 80312D4C 38 60 00 08 */ li r3, 8 -/* 80312D50 48 00 00 20 */ b lbl_80312D70 -lbl_80312D54: -/* 80312D54 80 7D 00 28 */ lwz r3, 0x28(r29) -/* 80312D58 80 63 00 04 */ lwz r3, 4(r3) -/* 80312D5C 80 63 00 2C */ lwz r3, 0x2c(r3) -/* 80312D60 81 83 00 00 */ lwz r12, 0(r3) -/* 80312D64 81 8C 00 98 */ lwz r12, 0x98(r12) -/* 80312D68 7D 89 03 A6 */ mtctr r12 -/* 80312D6C 4E 80 04 21 */ bctrl -lbl_80312D70: -/* 80312D70 54 60 06 3E */ clrlwi r0, r3, 0x18 -/* 80312D74 7C 1C 00 40 */ cmplw r28, r0 -/* 80312D78 7C 03 03 78 */ mr r3, r0 -/* 80312D7C 40 81 00 08 */ ble lbl_80312D84 -/* 80312D80 7F 83 E3 78 */ mr r3, r28 -lbl_80312D84: -/* 80312D84 1C 03 00 0A */ mulli r0, r3, 0xa -/* 80312D88 7F FF 02 14 */ add r31, r31, r0 -/* 80312D8C 57 C0 01 09 */ rlwinm. r0, r30, 0, 4, 4 -/* 80312D90 41 82 00 0C */ beq lbl_80312D9C -/* 80312D94 1C 03 00 05 */ mulli r0, r3, 5 -/* 80312D98 7F FF 02 14 */ add r31, r31, r0 -lbl_80312D9C: -/* 80312D9C 38 1F 00 1F */ addi r0, r31, 0x1f -/* 80312DA0 54 03 00 34 */ rlwinm r3, r0, 0, 0, 0x1a -/* 80312DA4 39 61 00 20 */ addi r11, r1, 0x20 -/* 80312DA8 48 04 F4 7D */ bl _restgpr_28 -/* 80312DAC 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80312DB0 7C 08 03 A6 */ mtlr r0 -/* 80312DB4 38 21 00 20 */ addi r1, r1, 0x20 -/* 80312DB8 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphBase/J3DPacket/prepareDraw__14J3DShapePacketCFv.s b/asm/JSystem/J3DGraphBase/J3DPacket/prepareDraw__14J3DShapePacketCFv.s deleted file mode 100644 index a15080ce284..00000000000 --- a/asm/JSystem/J3DGraphBase/J3DPacket/prepareDraw__14J3DShapePacketCFv.s +++ /dev/null @@ -1,78 +0,0 @@ -lbl_80312E08: -/* 80312E08 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80312E0C 7C 08 02 A6 */ mflr r0 -/* 80312E10 90 01 00 14 */ stw r0, 0x14(r1) -/* 80312E14 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80312E18 7C 7F 1B 78 */ mr r31, r3 -/* 80312E1C 80 63 00 38 */ lwz r3, 0x38(r3) -/* 80312E20 38 63 00 88 */ addi r3, r3, 0x88 -/* 80312E24 4B FF E2 49 */ bl setArray__15J3DVertexBufferCFv -/* 80312E28 80 9F 00 38 */ lwz r4, 0x38(r31) -/* 80312E2C 3C 60 80 43 */ lis r3, j3dSys@ha /* 0x80434AC8@ha */ -/* 80312E30 38 63 4A C8 */ addi r3, r3, j3dSys@l /* 0x80434AC8@l */ -/* 80312E34 90 83 00 38 */ stw r4, 0x38(r3) -/* 80312E38 93 E3 00 40 */ stw r31, 0x40(r3) -/* 80312E3C 80 04 00 08 */ lwz r0, 8(r4) -/* 80312E40 54 00 E7 FE */ rlwinm r0, r0, 0x1c, 0x1f, 0x1f -/* 80312E44 98 0D 90 31 */ stb r0, struct_804515B0+0x1(r13) -/* 80312E48 80 04 00 08 */ lwz r0, 8(r4) -/* 80312E4C 54 00 07 7B */ rlwinm. r0, r0, 0, 0x1d, 0x1d -/* 80312E50 41 82 00 18 */ beq lbl_80312E68 -/* 80312E54 80 7F 00 28 */ lwz r3, 0x28(r31) -/* 80312E58 80 03 00 0C */ lwz r0, 0xc(r3) -/* 80312E5C 60 00 00 04 */ ori r0, r0, 4 -/* 80312E60 90 03 00 0C */ stw r0, 0xc(r3) -/* 80312E64 48 00 00 14 */ b lbl_80312E78 -lbl_80312E68: -/* 80312E68 80 7F 00 28 */ lwz r3, 0x28(r31) -/* 80312E6C 80 03 00 0C */ lwz r0, 0xc(r3) -/* 80312E70 54 00 07 B8 */ rlwinm r0, r0, 0, 0x1e, 0x1c -/* 80312E74 90 03 00 0C */ stw r0, 0xc(r3) -lbl_80312E78: -/* 80312E78 80 7F 00 38 */ lwz r3, 0x38(r31) -/* 80312E7C 80 03 00 08 */ lwz r0, 8(r3) -/* 80312E80 54 00 07 39 */ rlwinm. r0, r0, 0, 0x1c, 0x1c -/* 80312E84 41 82 00 24 */ beq lbl_80312EA8 -/* 80312E88 80 7F 00 28 */ lwz r3, 0x28(r31) -/* 80312E8C 80 03 00 0C */ lwz r0, 0xc(r3) -/* 80312E90 54 00 C7 FF */ rlwinm. r0, r0, 0x18, 0x1f, 0x1f -/* 80312E94 40 82 00 14 */ bne lbl_80312EA8 -/* 80312E98 80 03 00 0C */ lwz r0, 0xc(r3) -/* 80312E9C 60 00 00 08 */ ori r0, r0, 8 -/* 80312EA0 90 03 00 0C */ stw r0, 0xc(r3) -/* 80312EA4 48 00 00 14 */ b lbl_80312EB8 -lbl_80312EA8: -/* 80312EA8 80 7F 00 28 */ lwz r3, 0x28(r31) -/* 80312EAC 80 03 00 0C */ lwz r0, 0xc(r3) -/* 80312EB0 54 00 07 76 */ rlwinm r0, r0, 0, 0x1d, 0x1b -/* 80312EB4 90 03 00 0C */ stw r0, 0xc(r3) -lbl_80312EB8: -/* 80312EB8 80 7F 00 2C */ lwz r3, 0x2c(r31) -/* 80312EBC 38 03 00 30 */ addi r0, r3, 0x30 -/* 80312EC0 80 9F 00 28 */ lwz r4, 0x28(r31) -/* 80312EC4 90 04 00 60 */ stw r0, 0x60(r4) -/* 80312EC8 80 03 00 04 */ lwz r0, 4(r3) -/* 80312ECC 90 04 00 54 */ stw r0, 0x54(r4) -/* 80312ED0 80 03 00 18 */ lwz r0, 0x18(r3) -/* 80312ED4 90 04 00 58 */ stw r0, 0x58(r4) -/* 80312ED8 88 04 00 34 */ lbz r0, 0x34(r4) -/* 80312EDC 28 00 00 00 */ cmplwi r0, 0 -/* 80312EE0 40 82 00 10 */ bne lbl_80312EF0 -/* 80312EE4 80 03 00 20 */ lwz r0, 0x20(r3) -/* 80312EE8 90 04 00 5C */ stw r0, 0x5c(r4) -/* 80312EEC 48 00 00 18 */ b lbl_80312F04 -lbl_80312EF0: -/* 80312EF0 80 04 00 64 */ lwz r0, 0x64(r4) -/* 80312EF4 80 63 00 28 */ lwz r3, 0x28(r3) -/* 80312EF8 54 00 10 3A */ slwi r0, r0, 2 -/* 80312EFC 7C 03 00 2E */ lwzx r0, r3, r0 -/* 80312F00 90 04 00 5C */ stw r0, 0x5c(r4) -lbl_80312F04: -/* 80312F04 80 7F 00 38 */ lwz r3, 0x38(r31) -/* 80312F08 80 63 00 04 */ lwz r3, 4(r3) -/* 80312F0C 48 01 31 ED */ bl syncJ3DSysFlags__12J3DModelDataCFv -/* 80312F10 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80312F14 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80312F18 7C 08 03 A6 */ mtlr r0 -/* 80312F1C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80312F20 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphBase/J3DShape/drawFast__8J3DShapeCFv.s b/asm/JSystem/J3DGraphBase/J3DShape/drawFast__8J3DShapeCFv.s deleted file mode 100644 index 86c2939d254..00000000000 --- a/asm/JSystem/J3DGraphBase/J3DShape/drawFast__8J3DShapeCFv.s +++ /dev/null @@ -1,114 +0,0 @@ -lbl_8031544C: -/* 8031544C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80315450 7C 08 02 A6 */ mflr r0 -/* 80315454 90 01 00 24 */ stw r0, 0x24(r1) -/* 80315458 39 61 00 20 */ addi r11, r1, 0x20 -/* 8031545C 48 04 CD 79 */ bl _savegpr_27 -/* 80315460 7C 7F 1B 78 */ mr r31, r3 -/* 80315464 80 0D 90 50 */ lwz r0, sOldVcdVatCmd__8J3DShape(r13) -/* 80315468 80 63 00 2C */ lwz r3, 0x2c(r3) -/* 8031546C 7C 00 18 40 */ cmplw r0, r3 -/* 80315470 41 82 00 14 */ beq lbl_80315484 -/* 80315474 38 80 00 C0 */ li r4, 0xc0 -/* 80315478 48 04 AA 79 */ bl GXCallDisplayList -/* 8031547C 80 1F 00 2C */ lwz r0, 0x2c(r31) -/* 80315480 90 0D 90 50 */ stw r0, sOldVcdVatCmd__8J3DShape(r13) -lbl_80315484: -/* 80315484 88 0D 90 54 */ lbz r0, data_804515D4(r13) -/* 80315488 28 00 00 00 */ cmplwi r0, 0 -/* 8031548C 41 82 00 60 */ beq lbl_803154EC -/* 80315490 88 1F 00 48 */ lbz r0, 0x48(r31) -/* 80315494 28 00 00 00 */ cmplwi r0, 0 -/* 80315498 40 82 00 54 */ bne lbl_803154EC -/* 8031549C 80 BF 00 40 */ lwz r5, 0x40(r31) -/* 803154A0 38 80 00 08 */ li r4, 8 -/* 803154A4 3C 60 CC 01 */ lis r3, 0xCC01 /* 0xCC008000@ha */ -/* 803154A8 98 83 80 00 */ stb r4, 0x8000(r3) /* 0xCC008000@l */ -/* 803154AC 38 00 00 30 */ li r0, 0x30 -/* 803154B0 98 03 80 00 */ stb r0, -0x8000(r3) -/* 803154B4 90 A3 80 00 */ stw r5, -0x8000(r3) -/* 803154B8 80 DF 00 44 */ lwz r6, 0x44(r31) -/* 803154BC 98 83 80 00 */ stb r4, -0x8000(r3) -/* 803154C0 38 00 00 40 */ li r0, 0x40 -/* 803154C4 98 03 80 00 */ stb r0, -0x8000(r3) -/* 803154C8 90 C3 80 00 */ stw r6, -0x8000(r3) -/* 803154CC 38 00 00 10 */ li r0, 0x10 -/* 803154D0 98 03 80 00 */ stb r0, -0x8000(r3) -/* 803154D4 38 00 00 01 */ li r0, 1 -/* 803154D8 B0 03 80 00 */ sth r0, -0x8000(r3) -/* 803154DC 38 00 10 18 */ li r0, 0x1018 -/* 803154E0 B0 03 80 00 */ sth r0, -0x8000(r3) -/* 803154E4 90 A3 80 00 */ stw r5, -0x8000(r3) -/* 803154E8 90 C3 80 00 */ stw r6, -0x8000(r3) -lbl_803154EC: -/* 803154EC 7F E3 FB 78 */ mr r3, r31 -/* 803154F0 4B FF FE A9 */ bl setArrayAndBindPipeline__8J3DShapeCFv -/* 803154F4 80 1F 00 0C */ lwz r0, 0xc(r31) -/* 803154F8 54 00 05 AD */ rlwinm. r0, r0, 0, 0x16, 0x16 -/* 803154FC 40 82 00 6C */ bne lbl_80315568 -/* 80315500 88 0D 90 31 */ lbz r0, struct_804515B0+0x1(r13) -/* 80315504 28 00 00 00 */ cmplwi r0, 0 -/* 80315508 41 82 00 08 */ beq lbl_80315510 -/* 8031550C 4B FF DB 9D */ bl resetMtxLoadCache__11J3DShapeMtxFv -lbl_80315510: -/* 80315510 A3 DF 00 0A */ lhz r30, 0xa(r31) -/* 80315514 3B 60 00 00 */ li r27, 0 -/* 80315518 83 BF 00 38 */ lwz r29, 0x38(r31) -/* 8031551C 83 FF 00 3C */ lwz r31, 0x3c(r31) -/* 80315520 48 00 00 38 */ b lbl_80315558 -lbl_80315524: -/* 80315524 57 7C 13 BA */ rlwinm r28, r27, 2, 0xe, 0x1d -/* 80315528 7C 7D E0 2E */ lwzx r3, r29, r28 -/* 8031552C 28 03 00 00 */ cmplwi r3, 0 -/* 80315530 41 82 00 14 */ beq lbl_80315544 -/* 80315534 81 83 00 00 */ lwz r12, 0(r3) -/* 80315538 81 8C 00 18 */ lwz r12, 0x18(r12) -/* 8031553C 7D 89 03 A6 */ mtctr r12 -/* 80315540 4E 80 04 21 */ bctrl -lbl_80315544: -/* 80315544 7C 7F E0 2E */ lwzx r3, r31, r28 -/* 80315548 28 03 00 00 */ cmplwi r3, 0 -/* 8031554C 41 82 00 08 */ beq lbl_80315554 -/* 80315550 4B FF F5 85 */ bl draw__12J3DShapeDrawCFv -lbl_80315554: -/* 80315554 3B 7B 00 01 */ addi r27, r27, 1 -lbl_80315558: -/* 80315558 57 60 04 3E */ clrlwi r0, r27, 0x10 -/* 8031555C 7C 00 F0 40 */ cmplw r0, r30 -/* 80315560 41 80 FF C4 */ blt lbl_80315524 -/* 80315564 48 00 00 64 */ b lbl_803155C8 -lbl_80315568: -/* 80315568 3C 60 80 43 */ lis r3, j3dSys@ha /* 0x80434AC8@ha */ -/* 8031556C 3B C3 4A C8 */ addi r30, r3, j3dSys@l /* 0x80434AC8@l */ -/* 80315570 80 7E 00 40 */ lwz r3, 0x40(r30) -/* 80315574 80 63 00 30 */ lwz r3, 0x30(r3) -/* 80315578 38 80 00 00 */ li r4, 0 -/* 8031557C 4B FF A5 65 */ bl J3DFifoLoadPosMtxImm__FPA4_fUl -/* 80315580 80 7E 00 40 */ lwz r3, 0x40(r30) -/* 80315584 80 63 00 30 */ lwz r3, 0x30(r3) -/* 80315588 38 80 00 00 */ li r4, 0 -/* 8031558C 4B FF A5 D5 */ bl J3DFifoLoadNrmMtxImm__FPA4_fUl -/* 80315590 A0 1F 00 0A */ lhz r0, 0xa(r31) -/* 80315594 3B 60 00 00 */ li r27, 0 -/* 80315598 83 DF 00 3C */ lwz r30, 0x3c(r31) -/* 8031559C 54 1F 04 3E */ clrlwi r31, r0, 0x10 -/* 803155A0 48 00 00 1C */ b lbl_803155BC -lbl_803155A4: -/* 803155A4 57 60 13 BA */ rlwinm r0, r27, 2, 0xe, 0x1d -/* 803155A8 7C 7E 00 2E */ lwzx r3, r30, r0 -/* 803155AC 28 03 00 00 */ cmplwi r3, 0 -/* 803155B0 41 82 00 08 */ beq lbl_803155B8 -/* 803155B4 4B FF F5 21 */ bl draw__12J3DShapeDrawCFv -lbl_803155B8: -/* 803155B8 3B 7B 00 01 */ addi r27, r27, 1 -lbl_803155BC: -/* 803155BC 57 60 04 3E */ clrlwi r0, r27, 0x10 -/* 803155C0 7C 00 F8 40 */ cmplw r0, r31 -/* 803155C4 41 80 FF E0 */ blt lbl_803155A4 -lbl_803155C8: -/* 803155C8 39 61 00 20 */ addi r11, r1, 0x20 -/* 803155CC 48 04 CC 55 */ bl _restgpr_27 -/* 803155D0 80 01 00 24 */ lwz r0, 0x24(r1) -/* 803155D4 7C 08 03 A6 */ mtlr r0 -/* 803155D8 38 21 00 20 */ addi r1, r1, 0x20 -/* 803155DC 4E 80 00 20 */ blr diff --git a/include/JSystem/J3DGraphBase/J3DMaterial.h b/include/JSystem/J3DGraphBase/J3DMaterial.h index a2372499806..d55c532e2ef 100644 --- a/include/JSystem/J3DGraphBase/J3DMaterial.h +++ b/include/JSystem/J3DGraphBase/J3DMaterial.h @@ -70,6 +70,8 @@ public: bool isDrawModeOpaTexEdge() { return (mMaterialMode & 3) == 0; } J3DPEBlock* getPEBlock() { return mPEBlock; } void onInvalid() { mInvalid = 1; } + u32 getTexGenNum() const { return mTexGenBlock->getTexGenNum(); } + u8 getTevStageNum() const { return mTevBlock->getTevStageNum(); } void setTevColor(u32 i, const J3DGXColorS10* i_color) { mTevBlock->setTevColor(i, i_color); } void setTevKColor(u32 i, const J3DGXColor* i_color) { mTevBlock->setTevKColor(i, i_color); } diff --git a/include/JSystem/J3DGraphBase/J3DPacket.h b/include/JSystem/J3DGraphBase/J3DPacket.h index 0b80f6b50b3..06eaa771bd2 100644 --- a/include/JSystem/J3DGraphBase/J3DPacket.h +++ b/include/JSystem/J3DGraphBase/J3DPacket.h @@ -18,6 +18,48 @@ class J3DTexMtx; class J3DTexMtxObj; class J3DTexture; +inline u32 getDiffFlag_LightObjNum(u32 param_1) { + return (param_1 & 0xf0) >> 4; +} + +inline u32 getDiffFlag_TexGenNum(u32 param_1) { + return (param_1 & 0xf00) >> 8; +} + +inline int calcDifferedBufferSize_TexMtxSize(int param_1) { + return param_1 * 0x35; +} + +inline int calcDifferedBufferSize_TexGenSize(int param_1) { + return param_1 * 0x3d + 10; +} + +inline u32 getDiffFlag_TexNoNum(u32 param_1) { + return (param_1 & 0xf0000) >> 0x10; +} + +inline int calcDifferedBufferSize_TexNoSize(int param_1) { + return param_1 * 0x37; +} + +inline u32 calcDifferedBufferSize_TexNoAndTexCoordScaleSize(u32 param_1) { + u32 res = param_1 * 0x37; + res += ((param_1 + 1) >> 1) * 0x37; + return res; +} + +inline u32 getDiffFlag_TevStageNum(u32 param_1) { + return (param_1 & 0xf00000) >> 0x14; +} + +inline int calcDifferedBufferSize_TevStageSize(int param_1) { + return param_1 * 10; +} + +inline int calcDifferedBufferSize_TevStageDirectSize(int param_1) { + return param_1 * 5; +} + class J3DDisplayListObj { public: J3DDisplayListObj() { diff --git a/include/JSystem/J3DGraphBase/J3DShapeMtx.h b/include/JSystem/J3DGraphBase/J3DShapeMtx.h index 177f7542612..97010b8527c 100644 --- a/include/JSystem/J3DGraphBase/J3DShapeMtx.h +++ b/include/JSystem/J3DGraphBase/J3DShapeMtx.h @@ -28,7 +28,10 @@ public: static J3DTexMtxObj* sTexMtxObj; }; -extern u8 struct_804515B0[4]; +extern u8 struct_804515B0; +extern u8 struct_804515B1; +extern u8 struct_804515B2; +extern u8 struct_804515B3; class J3DShapeMtx { public: @@ -57,8 +60,8 @@ public: static u32 sTexMtxLoadType; static void setCurrentPipeline(u32 pipeline) { sCurrentPipeline = pipeline; } - static void setLODFlag(u8 flag) { struct_804515B0[1] = flag; } - static u8 getLODFlag() { return struct_804515B0[1]; } + static void setLODFlag(u8 flag) { struct_804515B1 = flag; } + static u8 getLODFlag() { return struct_804515B1; } static void resetMtxLoadCache(); private: diff --git a/include/JSystem/J3DGraphBase/J3DSys.h b/include/JSystem/J3DGraphBase/J3DSys.h index fe25597bc05..3d97babee0a 100644 --- a/include/JSystem/J3DGraphBase/J3DSys.h +++ b/include/JSystem/J3DGraphBase/J3DSys.h @@ -135,6 +135,7 @@ struct J3DSys { static u16 sTexCoordScaleTable[32]; }; +extern u32 j3dDefaultViewNo; extern J3DSys j3dSys; #endif /* J3DSYS_H */ diff --git a/libs/JSystem/J3DGraphBase/J3DPacket.cpp b/libs/JSystem/J3DGraphBase/J3DPacket.cpp index 561cf053914..3131b264f53 100644 --- a/libs/JSystem/J3DGraphBase/J3DPacket.cpp +++ b/libs/JSystem/J3DGraphBase/J3DPacket.cpp @@ -24,64 +24,10 @@ // Forward References: // -extern "C" void newDisplayList__17J3DDisplayListObjFUl(); -extern "C" void newSingleDisplayList__17J3DDisplayListObjFUl(); -extern "C" void single_To_Double__17J3DDisplayListObjFv(); -extern "C" void setSingleDisplayList__17J3DDisplayListObjFPvUl(); -extern "C" void swapBuffer__17J3DDisplayListObjFv(); -extern "C" void callDL__17J3DDisplayListObjCFv(); -extern "C" void beginDL__17J3DDisplayListObjFv(); -extern "C" void endDL__17J3DDisplayListObjFv(); -extern "C" void beginPatch__17J3DDisplayListObjFv(); -extern "C" void endPatch__17J3DDisplayListObjFv(); -extern "C" bool entry__9J3DPacketFP13J3DDrawBuffer(); -extern "C" void addChildPacket__9J3DPacketFP9J3DPacket(); -extern "C" void __ct__13J3DDrawPacketFv(); -extern "C" void __dt__13J3DDrawPacketFv(); -extern "C" void newDisplayList__13J3DDrawPacketFUl(); -extern "C" void newSingleDisplayList__13J3DDrawPacketFUl(); -extern "C" void draw__13J3DDrawPacketFv(); -extern "C" void __ct__12J3DMatPacketFv(); -extern "C" void __dt__12J3DMatPacketFv(); -extern "C" void addShapePacket__12J3DMatPacketFP14J3DShapePacket(); -extern "C" void beginDiff__12J3DMatPacketFv(); -extern "C" void endDiff__12J3DMatPacketFv(); -extern "C" void isSame__12J3DMatPacketCFP12J3DMatPacket(); -extern "C" void draw__12J3DMatPacketFv(); -extern "C" void __ct__14J3DShapePacketFv(); -extern "C" void __dt__14J3DShapePacketFv(); -extern "C" void calcDifferedBufferSize__14J3DShapePacketFUl(); -extern "C" void newDifferedDisplayList__14J3DShapePacketFUl(); -extern "C" void prepareDraw__14J3DShapePacketCFv(); -extern "C" void draw__14J3DShapePacketFv(); -extern "C" void drawFast__14J3DShapePacketFv(); -extern "C" void draw__9J3DPacketFv(); -extern "C" void entry__12J3DMatPacketFP13J3DDrawBuffer(); -extern "C" u8 sGDLObj__17J3DDisplayListObj[16]; -extern "C" u8 sInterruptFlag__17J3DDisplayListObj[4 + 4 /* padding */]; - // // External References: // -extern "C" void __dt__9J3DPacketFv(); -extern "C" void* __nw__FUl(); -extern "C" void* __nwa__FUli(); -extern "C" void __dl__FPv(); -extern "C" void setArray__15J3DVertexBufferCFv(); -extern "C" void loadPreDrawSetting__8J3DShapeCFv(); -extern "C" void syncJ3DSysFlags__12J3DModelDataCFv(); -extern "C" void GDFlushCurrToMem(); -extern "C" void GDPadCurr32(); -extern "C" void __ptmf_scall(); -extern "C" void _savegpr_28(); -extern "C" void _restgpr_28(); -extern "C" u8 sortFuncTable__13J3DDrawBuffer[72]; -extern "C" extern u8 struct_804515B0[4]; -extern "C" u8 sTexGenBlock__17J3DDifferedTexMtx[4]; -extern "C" u8 sTexMtxObj__17J3DDifferedTexMtx[4]; -extern "C" u8 sOldVcdVatCmd__8J3DShape[4]; - // // Declarations: // @@ -324,14 +270,63 @@ J3DShapePacket::~J3DShapePacket() {} /* 80312BD4-80312DBC 30D514 01E8+00 1/1 0/0 0/0 .text calcDifferedBufferSize__14J3DShapePacketFUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm u32 J3DShapePacket::calcDifferedBufferSize(u32 flag) { - nofralloc -#include "asm/JSystem/J3DGraphBase/J3DPacket/calcDifferedBufferSize__14J3DShapePacketFUl.s" +u32 J3DShapePacket::calcDifferedBufferSize(u32 flag) { + int iVar5 = 0; + for (int i = 0; i < 8; i++) { + if ((flag & sDifferedRegister[i]) != 0) { + iVar5 += sSizeOfDiffered[i]; + } + } + + iVar5 += getDiffFlag_LightObjNum(flag) * 0x48; + u32 uVar2 = getDiffFlag_TexGenNum(flag); + if (uVar2 != 0) { + u32 local_4c = mpShape->getMaterial()->getTexGenNum(); + if (uVar2 > local_4c) { + local_4c = uVar2; + } + if ((flag & 0x1000)) { + iVar5 += calcDifferedBufferSize_TexGenSize(local_4c); + } else { + iVar5 += calcDifferedBufferSize_TexMtxSize(local_4c); + } + } + + uVar2 = getDiffFlag_TexNoNum(flag); + if (uVar2 != 0) { + u8 local_58; + if (mpShape->getMaterial()->getTevStageNum() > 8) { + local_58 = 8; + } else { + local_58 = mpShape->getMaterial()->getTevStageNum(); + } + u32 local_50 = local_58; + local_50 = uVar2 > local_50 ? uVar2 : local_50; + if ((flag & 0x4000000)) { + iVar5 += calcDifferedBufferSize_TexNoAndTexCoordScaleSize(local_50); + } else { + iVar5 += calcDifferedBufferSize_TexNoSize(local_50); + } + } + + uVar2 = getDiffFlag_TevStageNum(flag); + if (uVar2 != 0) { + u8 local_58; + if (mpShape->getMaterial()->getTevStageNum() > 8) { + local_58 = 8; + } else { + local_58 = mpShape->getMaterial()->getTevStageNum(); + } + u32 local_50 = local_58; + local_50 = uVar2 > local_50 ? uVar2 : local_50; + iVar5 += calcDifferedBufferSize_TevStageSize(local_50); + if (flag & 0x8000000) { + iVar5 += calcDifferedBufferSize_TevStageDirectSize(local_50); + } + } + + return (iVar5 + 0x1f) & ~0x1f; } -#pragma pop /* 80312DBC-80312E08 30D6FC 004C+00 0/0 1/1 0/0 .text newDifferedDisplayList__14J3DShapePacketFUl */ @@ -349,7 +344,6 @@ J3DError J3DShapePacket::newDifferedDisplayList(u32 flag) { } /* 80312E08-80312F24 30D748 011C+00 2/2 0/0 0/0 .text prepareDraw__14J3DShapePacketCFv */ -#if defined NONMATCHING void J3DShapePacket::prepareDraw() const { mpModel->getVertexBuffer()->setArray(); j3dSys.setModel(mpModel); @@ -364,34 +358,25 @@ void J3DShapePacket::prepareDraw() const { mpShape->offFlag(J3DShpFlag_SkinPosCpu); } - if (mpModel->checkFlag(J3DMdlFlag_SkinNrmCpu) && !mpShape->checkFlag(J3DShpFlag_EnableLod)) { + if (mpModel->checkFlag(J3DMdlFlag_SkinNrmCpu) && mpShape->checkFlag(J3DShpFlag_EnableLod) == false) { mpShape->onFlag(J3DShpFlag_SkinNrmCpu); } else { mpShape->offFlag(J3DShpFlag_SkinNrmCpu); } - mpShape->setCurrentViewNoPtr(mpMtxBuffer->getCurrentViewNoPtr()); - mpShape->setScaleFlagArray(mpMtxBuffer->getScaleFlagArray()); - mpShape->setDrawMtx(mpMtxBuffer->getDrawMtxPtrPtr()); + J3DMtxBuffer* buffer = mpMtxBuffer; + mpShape->setCurrentViewNoPtr(buffer->getCurrentViewNoPtr()); + mpShape->setScaleFlagArray(buffer->getScaleFlagArray()); + mpShape->setDrawMtx(buffer->getDrawMtxPtrPtr()); if (!mpShape->getNBTFlag()) { - mpShape->setNrmMtx(mpMtxBuffer->getNrmMtxPtrPtr()); + mpShape->setNrmMtx(buffer->getNrmMtxPtrPtr()); } else { - mpShape->setNrmMtx(mpMtxBuffer->getBumpMtxPtrPtr()[mpShape->getBumpMtxOffset()]); + mpShape->setNrmMtx(buffer->getBumpMtxPtrPtr()[mpShape->getBumpMtxOffset()]); } mpModel->getModelData()->syncJ3DSysFlags(); } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DShapePacket::prepareDraw() const { - nofralloc -#include "asm/JSystem/J3DGraphBase/J3DPacket/prepareDraw__14J3DShapePacketCFv.s" -} -#pragma pop -#endif /* 80312F24-80312FBC 30D864 0098+00 1/0 0/0 0/0 .text draw__14J3DShapePacketFv */ void J3DShapePacket::draw() { diff --git a/libs/JSystem/J3DGraphBase/J3DShape.cpp b/libs/JSystem/J3DGraphBase/J3DShape.cpp index efe817b6175..04e7e854589 100644 --- a/libs/JSystem/J3DGraphBase/J3DShape.cpp +++ b/libs/JSystem/J3DGraphBase/J3DShape.cpp @@ -17,26 +17,6 @@ // Forward References: // -extern "C" void initialize__8J3DShapeFv(); -extern "C" void addTexMtxIndexInDL__8J3DShapeF7_GXAttrUl(); -extern "C" void addTexMtxIndexInVcd__8J3DShapeF7_GXAttr(); -extern "C" void calcNBTScale__8J3DShapeFRC3VecPA3_A3_fPA3_A3_f(); -extern "C" void countBumpMtxNum__8J3DShapeCFv(); -extern "C" static void J3DLoadCPCmd__FUcUl(); -extern "C" static void J3DLoadArrayBasePtr__F7_GXAttrPv(); -extern "C" void loadVtxArray__8J3DShapeCFv(); -extern "C" void isSameVcdVatCmd__8J3DShapeFP8J3DShape(); -extern "C" void makeVtxArrayCmd__8J3DShapeFv(); -extern "C" void makeVcdVatCmd__8J3DShapeFv(); -extern "C" void loadPreDrawSetting__8J3DShapeCFv(); -extern "C" void setArrayAndBindPipeline__8J3DShapeCFv(); -extern "C" void drawFast__8J3DShapeCFv(); -extern "C" void draw__8J3DShapeCFv(); -extern "C" void simpleDraw__8J3DShapeCFv(); -extern "C" void simpleDrawCache__8J3DShapeCFv(); -extern "C" extern void* __vt__8J3DShape[6]; -extern "C" u8 sOldVcdVatCmd__8J3DShape[4]; - // // External References: // @@ -45,25 +25,6 @@ void J3DGDSetVtxAttrFmtv(_GXVtxFmt, GXVtxAttrFmtList const*, bool); void J3DFifoLoadPosMtxImm(Mtx, u32); void J3DFifoLoadNrmMtxImm(Mtx, u32); -extern "C" void* __nwa__FUl(); -extern "C" void J3DGDSetVtxAttrFmtv__F9_GXVtxFmtPC17_GXVtxAttrFmtListb(); -extern "C" void J3DFifoLoadPosMtxImm__FPA4_fUl(); -extern "C" void J3DFifoLoadNrmMtxImm__FPA4_fUl(); -extern "C" void resetMtxLoadCache__11J3DShapeMtxFv(); -extern "C" void addTexMtxIndexInDL__12J3DShapeDrawFUlUlUl(); -extern "C" void draw__12J3DShapeDrawCFv(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" extern u32 j3dDefaultViewNo; -extern "C" u32 sCurrentPipeline__11J3DShapeMtx; -extern "C" u32 sCurrentScaleFlag__11J3DShapeMtx; -extern "C" extern u8 struct_804515B0[4]; -extern "C" u32 sTexMtxLoadType__11J3DShapeMtx; - // // Declarations: // @@ -340,13 +301,12 @@ void J3DShape::setArrayAndBindPipeline() const { J3DShapeMtx::sCurrentScaleFlag = mScaleFlagArray; // The below struct_804515B0 is actually a continuation of sCurrentScaleFlag, I believe? // Also, there seems to be an extra entry in the array that's only there in DEBUG builds. - struct_804515B0[0] = mHasNBT; + struct_804515B0 = mHasNBT; data_804515D4[0] = mHasPNMTXIdx; J3DShapeMtx::sTexMtxLoadType = getTexMtxLoadType(); } /* 8031544C-803155E0 30FD8C 0194+00 1/0 0/0 0/0 .text drawFast__8J3DShapeCFv */ -#ifdef NONMATCHING void J3DShape::drawFast() const { if (sOldVcdVatCmd != mVcdVatCmd) { GXCallDisplayList(mVcdVatCmd, kVcdVatDLSize); @@ -376,18 +336,6 @@ void J3DShape::drawFast() const { getShapeDraw(i)->draw(); } } -#else - -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DShape::drawFast() const { - nofralloc -#include "asm/JSystem/J3DGraphBase/J3DShape/drawFast__8J3DShapeCFv.s" -} -#pragma pop - -#endif /* 803155E0-80315628 30FF20 0048+00 1/0 0/0 0/0 .text draw__8J3DShapeCFv */ void J3DShape::draw() const { diff --git a/libs/JSystem/J3DGraphBase/J3DShapeMtx.cpp b/libs/JSystem/J3DGraphBase/J3DShapeMtx.cpp index dd9d77b10c3..a4ecff84c09 100644 --- a/libs/JSystem/J3DGraphBase/J3DShapeMtx.cpp +++ b/libs/JSystem/J3DGraphBase/J3DShapeMtx.cpp @@ -355,8 +355,10 @@ u8* J3DShapeMtx::sCurrentScaleFlag; /* 804515B0-804515B4 -00001 0004+00 5/5 3/3 0/0 .sbss None */ /* 804515B0 0001+00 data_804515B0 None */ /* 804515B1 0003+00 data_804515B1 None */ -extern u8 struct_804515B0[4]; -u8 struct_804515B0[4]; +u8 struct_804515B0; +u8 struct_804515B1; +u8 struct_804515B2; +u8 struct_804515B3; /* 804515B4-804515B8 000AB4 0004+00 4/4 1/1 0/0 .sbss sTexMtxLoadType__11J3DShapeMtx */ u32 J3DShapeMtx::sTexMtxLoadType; diff --git a/libs/JSystem/J3DGraphBase/J3DSys.cpp b/libs/JSystem/J3DGraphBase/J3DSys.cpp index 8ce7f165652..b3cf71f6191 100644 --- a/libs/JSystem/J3DGraphBase/J3DSys.cpp +++ b/libs/JSystem/J3DGraphBase/J3DSys.cpp @@ -400,5 +400,4 @@ void J3DSys::reinitPixelProc() { /* ############################################################################################## */ /* 80451598-804515A0 000A98 0004+04 0/0 1/1 0/0 .sbss j3dDefaultViewNo */ -extern u8 j3dDefaultViewNo[4 + 4 /* padding */]; -u8 j3dDefaultViewNo[4 + 4 /* padding */]; +u32 j3dDefaultViewNo;