From 9bee853ab45970c60019df74f4be1f282bb90bb4 Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Sun, 24 Apr 2022 01:25:34 -0700 Subject: [PATCH] J3DShape / J3DShapeDraw: More OK --- ...addTexMtxIndexInDL__8J3DShapeF7_GXAttrUl.s | 73 ------ .../J3DShape/initialize__8J3DShapeFv.s | 29 --- .../loadPreDrawSetting__8J3DShapeCFv.s | 40 ---- .../J3DShape/makeVtxArrayCmd__8J3DShapeFv.s | 201 ----------------- .../countVertex__12J3DShapeDrawFUl.s | 25 --- ...tView_NCPU__21J3DShapeMtxConcatViewCFiUs.s | 45 ---- ...tView_PCPU__21J3DShapeMtxConcatViewCFiUs.s | 43 ---- ...View_PNCPU__21J3DShapeMtxConcatViewCFiUs.s | 48 ---- ...w_PNGP_LOD__21J3DShapeMtxConcatViewCFiUs.s | 53 ----- ...tView_PNGP__21J3DShapeMtxConcatViewCFiUs.s | 42 ---- include/JSystem/J3DGraphBase/J3DShape.h | 3 + include/JSystem/J3DGraphBase/J3DShapeDraw.h | 5 +- include/JSystem/J3DGraphBase/J3DVertex.h | 14 +- include/dolphin/gx/GX.h | 14 +- libs/JSystem/J3DGraphBase/J3DShape.cpp | 210 +++++++++++------- libs/JSystem/J3DGraphBase/J3DShapeDraw.cpp | 87 ++++++-- 16 files changed, 221 insertions(+), 711 deletions(-) delete mode 100644 asm/JSystem/J3DGraphBase/J3DShape/addTexMtxIndexInDL__8J3DShapeF7_GXAttrUl.s delete mode 100644 asm/JSystem/J3DGraphBase/J3DShape/initialize__8J3DShapeFv.s delete mode 100644 asm/JSystem/J3DGraphBase/J3DShape/loadPreDrawSetting__8J3DShapeCFv.s delete mode 100644 asm/JSystem/J3DGraphBase/J3DShape/makeVtxArrayCmd__8J3DShapeFv.s delete mode 100644 asm/JSystem/J3DGraphBase/J3DShapeDraw/countVertex__12J3DShapeDrawFUl.s delete mode 100644 asm/JSystem/J3DGraphBase/J3DShapeMtx/loadMtxConcatView_NCPU__21J3DShapeMtxConcatViewCFiUs.s delete mode 100644 asm/JSystem/J3DGraphBase/J3DShapeMtx/loadMtxConcatView_PCPU__21J3DShapeMtxConcatViewCFiUs.s delete mode 100644 asm/JSystem/J3DGraphBase/J3DShapeMtx/loadMtxConcatView_PNCPU__21J3DShapeMtxConcatViewCFiUs.s delete mode 100644 asm/JSystem/J3DGraphBase/J3DShapeMtx/loadMtxConcatView_PNGP_LOD__21J3DShapeMtxConcatViewCFiUs.s delete mode 100644 asm/JSystem/J3DGraphBase/J3DShapeMtx/loadMtxConcatView_PNGP__21J3DShapeMtxConcatViewCFiUs.s diff --git a/asm/JSystem/J3DGraphBase/J3DShape/addTexMtxIndexInDL__8J3DShapeF7_GXAttrUl.s b/asm/JSystem/J3DGraphBase/J3DShape/addTexMtxIndexInDL__8J3DShapeF7_GXAttrUl.s deleted file mode 100644 index aa96206cbd9..00000000000 --- a/asm/JSystem/J3DGraphBase/J3DShape/addTexMtxIndexInDL__8J3DShapeF7_GXAttrUl.s +++ /dev/null @@ -1,73 +0,0 @@ -lbl_80314BB8: -/* 80314BB8 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 80314BBC 7C 08 02 A6 */ mflr r0 -/* 80314BC0 90 01 00 34 */ stw r0, 0x34(r1) -/* 80314BC4 39 61 00 30 */ addi r11, r1, 0x30 -/* 80314BC8 48 04 D6 0D */ bl _savegpr_27 -/* 80314BCC 7C 7F 1B 78 */ mr r31, r3 -/* 80314BD0 3C 60 80 3A */ lis r3, lit_697@ha /* 0x803A1E98@ha */ -/* 80314BD4 38 C3 1E 98 */ addi r6, r3, lit_697@l /* 0x803A1E98@l */ -/* 80314BD8 80 66 00 00 */ lwz r3, 0(r6) -/* 80314BDC 80 06 00 04 */ lwz r0, 4(r6) -/* 80314BE0 90 61 00 08 */ stw r3, 8(r1) -/* 80314BE4 90 01 00 0C */ stw r0, 0xc(r1) -/* 80314BE8 80 66 00 08 */ lwz r3, 8(r6) -/* 80314BEC 80 06 00 0C */ lwz r0, 0xc(r6) -/* 80314BF0 90 61 00 10 */ stw r3, 0x10(r1) -/* 80314BF4 90 01 00 14 */ stw r0, 0x14(r1) -/* 80314BF8 38 C0 FF FF */ li r6, -1 -/* 80314BFC 38 E0 FF FF */ li r7, -1 -/* 80314C00 39 00 00 00 */ li r8, 0 -/* 80314C04 39 20 00 00 */ li r9, 0 -/* 80314C08 81 5F 00 30 */ lwz r10, 0x30(r31) -/* 80314C0C 38 61 00 08 */ addi r3, r1, 8 -/* 80314C10 48 00 00 3C */ b lbl_80314C4C -lbl_80314C14: -/* 80314C14 2C 00 00 00 */ cmpwi r0, 0 -/* 80314C18 40 82 00 08 */ bne lbl_80314C20 -/* 80314C1C 7D 06 43 78 */ mr r6, r8 -lbl_80314C20: -/* 80314C20 7C 04 00 00 */ cmpw r4, r0 -/* 80314C24 40 80 00 14 */ bge lbl_80314C38 -/* 80314C28 55 20 06 3F */ clrlwi. r0, r9, 0x18 -/* 80314C2C 40 82 00 0C */ bne lbl_80314C38 -/* 80314C30 7D 07 43 78 */ mr r7, r8 -/* 80314C34 39 20 00 01 */ li r9, 1 -lbl_80314C38: -/* 80314C38 80 0A 00 04 */ lwz r0, 4(r10) -/* 80314C3C 54 00 10 3A */ slwi r0, r0, 2 -/* 80314C40 7C 03 00 2E */ lwzx r0, r3, r0 -/* 80314C44 7D 08 02 14 */ add r8, r8, r0 -/* 80314C48 39 4A 00 08 */ addi r10, r10, 8 -lbl_80314C4C: -/* 80314C4C 80 0A 00 00 */ lwz r0, 0(r10) -/* 80314C50 2C 00 00 FF */ cmpwi r0, 0xff -/* 80314C54 40 82 FF C0 */ bne lbl_80314C14 -/* 80314C58 2C 06 FF FF */ cmpwi r6, -1 -/* 80314C5C 41 82 00 48 */ beq lbl_80314CA4 -/* 80314C60 3B 60 00 00 */ li r27, 0 -/* 80314C64 7C BE 2B 78 */ mr r30, r5 -/* 80314C68 7C FD 3B 78 */ mr r29, r7 -/* 80314C6C 7D 1C 43 78 */ mr r28, r8 -/* 80314C70 48 00 00 24 */ b lbl_80314C94 -lbl_80314C74: -/* 80314C74 80 7F 00 3C */ lwz r3, 0x3c(r31) -/* 80314C78 57 60 13 BA */ rlwinm r0, r27, 2, 0xe, 0x1d -/* 80314C7C 7C 63 00 2E */ lwzx r3, r3, r0 -/* 80314C80 7F 84 E3 78 */ mr r4, r28 -/* 80314C84 7F A5 EB 78 */ mr r5, r29 -/* 80314C88 7F C6 F3 78 */ mr r6, r30 -/* 80314C8C 4B FF FC E9 */ bl addTexMtxIndexInDL__12J3DShapeDrawFUlUlUl -/* 80314C90 3B 7B 00 01 */ addi r27, r27, 1 -lbl_80314C94: -/* 80314C94 57 63 04 3E */ clrlwi r3, r27, 0x10 -/* 80314C98 A0 1F 00 0A */ lhz r0, 0xa(r31) -/* 80314C9C 7C 03 00 40 */ cmplw r3, r0 -/* 80314CA0 41 80 FF D4 */ blt lbl_80314C74 -lbl_80314CA4: -/* 80314CA4 39 61 00 30 */ addi r11, r1, 0x30 -/* 80314CA8 48 04 D5 79 */ bl _restgpr_27 -/* 80314CAC 80 01 00 34 */ lwz r0, 0x34(r1) -/* 80314CB0 7C 08 03 A6 */ mtlr r0 -/* 80314CB4 38 21 00 30 */ addi r1, r1, 0x30 -/* 80314CB8 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphBase/J3DShape/initialize__8J3DShapeFv.s b/asm/JSystem/J3DGraphBase/J3DShape/initialize__8J3DShapeFv.s deleted file mode 100644 index fcf5c7a8c46..00000000000 --- a/asm/JSystem/J3DGraphBase/J3DShape/initialize__8J3DShapeFv.s +++ /dev/null @@ -1,29 +0,0 @@ -lbl_80314B48: -/* 80314B48 38 A0 00 00 */ li r5, 0 -/* 80314B4C 90 A3 00 04 */ stw r5, 4(r3) -/* 80314B50 3C 80 00 01 */ lis r4, 0x0001 /* 0x0000FFFF@ha */ -/* 80314B54 38 04 FF FF */ addi r0, r4, 0xFFFF /* 0x0000FFFF@l */ -/* 80314B58 B0 03 00 08 */ sth r0, 8(r3) -/* 80314B5C B0 A3 00 0A */ sth r5, 0xa(r3) -/* 80314B60 90 A3 00 0C */ stw r5, 0xc(r3) -/* 80314B64 C0 02 C9 A0 */ lfs f0, lit_687(r2) -/* 80314B68 D0 03 00 10 */ stfs f0, 0x10(r3) -/* 80314B6C D0 03 00 14 */ stfs f0, 0x14(r3) -/* 80314B70 D0 03 00 18 */ stfs f0, 0x18(r3) -/* 80314B74 D0 03 00 1C */ stfs f0, 0x1c(r3) -/* 80314B78 D0 03 00 20 */ stfs f0, 0x20(r3) -/* 80314B7C D0 03 00 24 */ stfs f0, 0x24(r3) -/* 80314B80 D0 03 00 28 */ stfs f0, 0x28(r3) -/* 80314B84 90 A3 00 30 */ stw r5, 0x30(r3) -/* 80314B88 90 A3 00 38 */ stw r5, 0x38(r3) -/* 80314B8C 90 A3 00 3C */ stw r5, 0x3c(r3) -/* 80314B90 90 A3 00 4C */ stw r5, 0x4c(r3) -/* 80314B94 90 A3 00 50 */ stw r5, 0x50(r3) -/* 80314B98 90 A3 00 54 */ stw r5, 0x54(r3) -/* 80314B9C 90 A3 00 58 */ stw r5, 0x58(r3) -/* 80314BA0 90 A3 00 5C */ stw r5, 0x5c(r3) -/* 80314BA4 38 0D 90 18 */ la r0, j3dDefaultViewNo(r13) /* 80451598-_SDA_BASE_ */ -/* 80314BA8 90 03 00 60 */ stw r0, 0x60(r3) -/* 80314BAC 98 A3 00 34 */ stb r5, 0x34(r3) -/* 80314BB0 98 A3 00 48 */ stb r5, 0x48(r3) -/* 80314BB4 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphBase/J3DShape/loadPreDrawSetting__8J3DShapeCFv.s b/asm/JSystem/J3DGraphBase/J3DShape/loadPreDrawSetting__8J3DShapeCFv.s deleted file mode 100644 index 36e13e129bc..00000000000 --- a/asm/JSystem/J3DGraphBase/J3DShape/loadPreDrawSetting__8J3DShapeCFv.s +++ /dev/null @@ -1,40 +0,0 @@ -lbl_80315300: -/* 80315300 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80315304 7C 08 02 A6 */ mflr r0 -/* 80315308 90 01 00 14 */ stw r0, 0x14(r1) -/* 8031530C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80315310 7C 7F 1B 78 */ mr r31, r3 -/* 80315314 80 0D 90 50 */ lwz r0, sOldVcdVatCmd__8J3DShape(r13) -/* 80315318 80 63 00 2C */ lwz r3, 0x2c(r3) -/* 8031531C 7C 00 18 40 */ cmplw r0, r3 -/* 80315320 41 82 00 14 */ beq lbl_80315334 -/* 80315324 38 80 00 C0 */ li r4, 0xc0 -/* 80315328 48 04 AB C9 */ bl GXCallDisplayList -/* 8031532C 80 1F 00 2C */ lwz r0, 0x2c(r31) -/* 80315330 90 0D 90 50 */ stw r0, sOldVcdVatCmd__8J3DShape(r13) -lbl_80315334: -/* 80315334 80 BF 00 40 */ lwz r5, 0x40(r31) -/* 80315338 38 80 00 08 */ li r4, 8 -/* 8031533C 3C 60 CC 01 */ lis r3, 0xCC01 /* 0xCC008000@ha */ -/* 80315340 98 83 80 00 */ stb r4, 0x8000(r3) /* 0xCC008000@l */ -/* 80315344 38 00 00 30 */ li r0, 0x30 -/* 80315348 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8031534C 90 A3 80 00 */ stw r5, -0x8000(r3) -/* 80315350 80 DF 00 44 */ lwz r6, 0x44(r31) -/* 80315354 98 83 80 00 */ stb r4, -0x8000(r3) -/* 80315358 38 00 00 40 */ li r0, 0x40 -/* 8031535C 98 03 80 00 */ stb r0, -0x8000(r3) -/* 80315360 90 C3 80 00 */ stw r6, -0x8000(r3) -/* 80315364 38 00 00 10 */ li r0, 0x10 -/* 80315368 98 03 80 00 */ stb r0, -0x8000(r3) -/* 8031536C 38 00 00 01 */ li r0, 1 -/* 80315370 B0 03 80 00 */ sth r0, -0x8000(r3) -/* 80315374 38 00 10 18 */ li r0, 0x1018 -/* 80315378 B0 03 80 00 */ sth r0, -0x8000(r3) -/* 8031537C 90 A3 80 00 */ stw r5, -0x8000(r3) -/* 80315380 90 C3 80 00 */ stw r6, -0x8000(r3) -/* 80315384 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80315388 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8031538C 7C 08 03 A6 */ mtlr r0 -/* 80315390 38 21 00 10 */ addi r1, r1, 0x10 -/* 80315394 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphBase/J3DShape/makeVtxArrayCmd__8J3DShapeFv.s b/asm/JSystem/J3DGraphBase/J3DShape/makeVtxArrayCmd__8J3DShapeFv.s deleted file mode 100644 index 57733281acd..00000000000 --- a/asm/JSystem/J3DGraphBase/J3DShape/makeVtxArrayCmd__8J3DShapeFv.s +++ /dev/null @@ -1,201 +0,0 @@ -lbl_80314F98: -/* 80314F98 94 21 FF A0 */ stwu r1, -0x60(r1) -/* 80314F9C 7C 08 02 A6 */ mflr r0 -/* 80314FA0 90 01 00 64 */ stw r0, 0x64(r1) -/* 80314FA4 39 61 00 60 */ addi r11, r1, 0x60 -/* 80314FA8 48 04 D2 2D */ bl _savegpr_27 -/* 80314FAC 80 83 00 4C */ lwz r4, 0x4c(r3) -/* 80314FB0 80 84 00 14 */ lwz r4, 0x14(r4) -/* 80314FB4 38 A0 00 00 */ li r5, 0 -/* 80314FB8 39 00 00 00 */ li r8, 0 -/* 80314FBC 38 E1 00 14 */ addi r7, r1, 0x14 -/* 80314FC0 38 C1 00 08 */ addi r6, r1, 8 -/* 80314FC4 38 00 00 0C */ li r0, 0xc -/* 80314FC8 7C 09 03 A6 */ mtctr r0 -lbl_80314FCC: -/* 80314FCC 99 06 00 00 */ stb r8, 0(r6) -/* 80314FD0 7D 07 29 2E */ stwx r8, r7, r5 -/* 80314FD4 38 A5 00 04 */ addi r5, r5, 4 -/* 80314FD8 38 C6 00 01 */ addi r6, r6, 1 -/* 80314FDC 42 00 FF F0 */ bdnz lbl_80314FCC -/* 80314FE0 48 00 01 90 */ b lbl_80315170 -lbl_80314FE4: -/* 80314FE4 2C 07 00 0A */ cmpwi r7, 0xa -/* 80314FE8 41 82 00 8C */ beq lbl_80315074 -/* 80314FEC 40 80 00 10 */ bge lbl_80314FFC -/* 80314FF0 2C 07 00 09 */ cmpwi r7, 9 -/* 80314FF4 40 80 00 1C */ bge lbl_80315010 -/* 80314FF8 48 00 01 74 */ b lbl_8031516C -lbl_80314FFC: -/* 80314FFC 2C 07 00 15 */ cmpwi r7, 0x15 -/* 80315000 40 80 01 6C */ bge lbl_8031516C -/* 80315004 2C 07 00 0D */ cmpwi r7, 0xd -/* 80315008 40 80 01 0C */ bge lbl_80315114 -/* 8031500C 48 00 00 CC */ b lbl_803150D8 -lbl_80315010: -/* 80315010 80 04 00 08 */ lwz r0, 8(r4) -/* 80315014 2C 00 00 04 */ cmpwi r0, 4 -/* 80315018 40 82 00 18 */ bne lbl_80315030 -/* 8031501C 38 C0 00 0C */ li r6, 0xc -/* 80315020 38 A1 00 08 */ addi r5, r1, 8 -/* 80315024 38 07 FF F7 */ addi r0, r7, -9 -/* 80315028 7C C5 01 AE */ stbx r6, r5, r0 -/* 8031502C 48 00 00 14 */ b lbl_80315040 -lbl_80315030: -/* 80315030 38 C0 00 06 */ li r6, 6 -/* 80315034 38 A1 00 08 */ addi r5, r1, 8 -/* 80315038 38 07 FF F7 */ addi r0, r7, -9 -/* 8031503C 7C C5 01 AE */ stbx r6, r5, r0 -lbl_80315040: -/* 80315040 80 E3 00 4C */ lwz r7, 0x4c(r3) -/* 80315044 81 07 00 18 */ lwz r8, 0x18(r7) -/* 80315048 80 04 00 00 */ lwz r0, 0(r4) -/* 8031504C 54 06 10 3A */ slwi r6, r0, 2 -/* 80315050 38 A1 00 14 */ addi r5, r1, 0x14 -/* 80315054 38 06 FF DC */ addi r0, r6, -36 -/* 80315058 7D 05 01 2E */ stwx r8, r5, r0 -/* 8031505C 88 04 00 0C */ lbz r0, 0xc(r4) -/* 80315060 98 07 00 4C */ stb r0, 0x4c(r7) -/* 80315064 80 04 00 08 */ lwz r0, 8(r4) -/* 80315068 80 A3 00 4C */ lwz r5, 0x4c(r3) -/* 8031506C 90 05 00 50 */ stw r0, 0x50(r5) -/* 80315070 48 00 00 FC */ b lbl_8031516C -lbl_80315074: -/* 80315074 80 04 00 08 */ lwz r0, 8(r4) -/* 80315078 2C 00 00 04 */ cmpwi r0, 4 -/* 8031507C 40 82 00 18 */ bne lbl_80315094 -/* 80315080 38 C0 00 0C */ li r6, 0xc -/* 80315084 38 A1 00 08 */ addi r5, r1, 8 -/* 80315088 38 07 FF F7 */ addi r0, r7, -9 -/* 8031508C 7C C5 01 AE */ stbx r6, r5, r0 -/* 80315090 48 00 00 14 */ b lbl_803150A4 -lbl_80315094: -/* 80315094 38 C0 00 06 */ li r6, 6 -/* 80315098 38 A1 00 08 */ addi r5, r1, 8 -/* 8031509C 38 07 FF F7 */ addi r0, r7, -9 -/* 803150A0 7C C5 01 AE */ stbx r6, r5, r0 -lbl_803150A4: -/* 803150A4 80 E3 00 4C */ lwz r7, 0x4c(r3) -/* 803150A8 81 07 00 1C */ lwz r8, 0x1c(r7) -/* 803150AC 80 04 00 00 */ lwz r0, 0(r4) -/* 803150B0 54 06 10 3A */ slwi r6, r0, 2 -/* 803150B4 38 A1 00 14 */ addi r5, r1, 0x14 -/* 803150B8 38 06 FF DC */ addi r0, r6, -36 -/* 803150BC 7D 05 01 2E */ stwx r8, r5, r0 -/* 803150C0 88 04 00 0C */ lbz r0, 0xc(r4) -/* 803150C4 98 07 00 54 */ stb r0, 0x54(r7) -/* 803150C8 80 04 00 08 */ lwz r0, 8(r4) -/* 803150CC 80 A3 00 4C */ lwz r5, 0x4c(r3) -/* 803150D0 90 05 00 58 */ stw r0, 0x58(r5) -/* 803150D4 48 00 00 98 */ b lbl_8031516C -lbl_803150D8: -/* 803150D8 38 C0 00 04 */ li r6, 4 -/* 803150DC 38 A1 00 08 */ addi r5, r1, 8 -/* 803150E0 38 07 FF F7 */ addi r0, r7, -9 -/* 803150E4 7C C5 01 AE */ stbx r6, r5, r0 -/* 803150E8 80 C3 00 4C */ lwz r6, 0x4c(r3) -/* 803150EC 81 04 00 00 */ lwz r8, 0(r4) -/* 803150F0 38 08 FF F5 */ addi r0, r8, -11 -/* 803150F4 54 05 15 BA */ rlwinm r5, r0, 2, 0x16, 0x1d -/* 803150F8 38 05 00 24 */ addi r0, r5, 0x24 -/* 803150FC 7C E6 00 2E */ lwzx r7, r6, r0 -/* 80315100 55 06 10 3A */ slwi r6, r8, 2 -/* 80315104 38 A1 00 14 */ addi r5, r1, 0x14 -/* 80315108 38 06 FF DC */ addi r0, r6, -36 -/* 8031510C 7C E5 01 2E */ stwx r7, r5, r0 -/* 80315110 48 00 00 5C */ b lbl_8031516C -lbl_80315114: -/* 80315114 80 04 00 08 */ lwz r0, 8(r4) -/* 80315118 2C 00 00 04 */ cmpwi r0, 4 -/* 8031511C 40 82 00 18 */ bne lbl_80315134 -/* 80315120 38 C0 00 08 */ li r6, 8 -/* 80315124 38 A1 00 08 */ addi r5, r1, 8 -/* 80315128 38 07 FF F7 */ addi r0, r7, -9 -/* 8031512C 7C C5 01 AE */ stbx r6, r5, r0 -/* 80315130 48 00 00 14 */ b lbl_80315144 -lbl_80315134: -/* 80315134 38 C0 00 04 */ li r6, 4 -/* 80315138 38 A1 00 08 */ addi r5, r1, 8 -/* 8031513C 38 07 FF F7 */ addi r0, r7, -9 -/* 80315140 7C C5 01 AE */ stbx r6, r5, r0 -lbl_80315144: -/* 80315144 80 C3 00 4C */ lwz r6, 0x4c(r3) -/* 80315148 81 04 00 00 */ lwz r8, 0(r4) -/* 8031514C 38 08 FF F3 */ addi r0, r8, -13 -/* 80315150 54 05 15 BA */ rlwinm r5, r0, 2, 0x16, 0x1d -/* 80315154 38 05 00 2C */ addi r0, r5, 0x2c -/* 80315158 7C E6 00 2E */ lwzx r7, r6, r0 -/* 8031515C 55 06 10 3A */ slwi r6, r8, 2 -/* 80315160 38 A1 00 14 */ addi r5, r1, 0x14 -/* 80315164 38 06 FF DC */ addi r0, r6, -36 -/* 80315168 7C E5 01 2E */ stwx r7, r5, r0 -lbl_8031516C: -/* 8031516C 38 84 00 10 */ addi r4, r4, 0x10 -lbl_80315170: -/* 80315170 80 E4 00 00 */ lwz r7, 0(r4) -/* 80315174 2C 07 00 FF */ cmpwi r7, 0xff -/* 80315178 40 82 FE 6C */ bne lbl_80314FE4 -/* 8031517C 80 A3 00 30 */ lwz r5, 0x30(r3) -/* 80315180 38 00 00 00 */ li r0, 0 -/* 80315184 98 03 00 48 */ stb r0, 0x48(r3) -/* 80315188 48 00 00 5C */ b lbl_803151E4 -lbl_8031518C: -/* 8031518C 2C 04 00 19 */ cmpwi r4, 0x19 -/* 80315190 40 82 00 34 */ bne lbl_803151C4 -/* 80315194 80 05 00 04 */ lwz r0, 4(r5) -/* 80315198 2C 00 00 00 */ cmpwi r0, 0 -/* 8031519C 41 82 00 28 */ beq lbl_803151C4 -/* 803151A0 38 00 00 01 */ li r0, 1 -/* 803151A4 98 03 00 34 */ stb r0, 0x34(r3) -/* 803151A8 88 01 00 09 */ lbz r0, 9(r1) -/* 803151AC 1C 00 00 03 */ mulli r0, r0, 3 -/* 803151B0 98 01 00 09 */ stb r0, 9(r1) -/* 803151B4 80 83 00 4C */ lwz r4, 0x4c(r3) -/* 803151B8 80 04 00 20 */ lwz r0, 0x20(r4) -/* 803151BC 90 01 00 18 */ stw r0, 0x18(r1) -/* 803151C0 48 00 00 20 */ b lbl_803151E0 -lbl_803151C4: -/* 803151C4 2C 04 00 00 */ cmpwi r4, 0 -/* 803151C8 40 82 00 18 */ bne lbl_803151E0 -/* 803151CC 80 05 00 04 */ lwz r0, 4(r5) -/* 803151D0 2C 00 00 00 */ cmpwi r0, 0 -/* 803151D4 41 82 00 0C */ beq lbl_803151E0 -/* 803151D8 38 00 00 01 */ li r0, 1 -/* 803151DC 98 03 00 48 */ stb r0, 0x48(r3) -lbl_803151E0: -/* 803151E0 38 A5 00 08 */ addi r5, r5, 8 -lbl_803151E4: -/* 803151E4 80 85 00 00 */ lwz r4, 0(r5) -/* 803151E8 2C 04 00 FF */ cmpwi r4, 0xff -/* 803151EC 40 82 FF A0 */ bne lbl_8031518C -/* 803151F0 3B 60 00 00 */ li r27, 0 -/* 803151F4 3B A0 00 00 */ li r29, 0 -/* 803151F8 3B 81 00 14 */ addi r28, r1, 0x14 -/* 803151FC 3B C1 00 08 */ addi r30, r1, 8 -/* 80315200 7F DF F3 78 */ mr r31, r30 -lbl_80315204: -/* 80315204 7C 9C E8 2E */ lwzx r4, r28, r29 -/* 80315208 28 04 00 00 */ cmplwi r4, 0 -/* 8031520C 41 82 00 14 */ beq lbl_80315220 -/* 80315210 38 7B 00 09 */ addi r3, r27, 9 -/* 80315214 88 BE 00 00 */ lbz r5, 0(r30) -/* 80315218 48 04 C4 E9 */ bl GDSetArray -/* 8031521C 48 00 00 14 */ b lbl_80315230 -lbl_80315220: -/* 80315220 38 7B 00 09 */ addi r3, r27, 9 -/* 80315224 38 80 00 00 */ li r4, 0 -/* 80315228 88 BF 00 00 */ lbz r5, 0(r31) -/* 8031522C 48 04 C6 E1 */ bl GDSetArrayRaw -lbl_80315230: -/* 80315230 3B 7B 00 01 */ addi r27, r27, 1 -/* 80315234 28 1B 00 0C */ cmplwi r27, 0xc -/* 80315238 3B FF 00 01 */ addi r31, r31, 1 -/* 8031523C 3B DE 00 01 */ addi r30, r30, 1 -/* 80315240 3B BD 00 04 */ addi r29, r29, 4 -/* 80315244 41 80 FF C0 */ blt lbl_80315204 -/* 80315248 39 61 00 60 */ addi r11, r1, 0x60 -/* 8031524C 48 04 CF D5 */ bl _restgpr_27 -/* 80315250 80 01 00 64 */ lwz r0, 0x64(r1) -/* 80315254 7C 08 03 A6 */ mtlr r0 -/* 80315258 38 21 00 60 */ addi r1, r1, 0x60 -/* 8031525C 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphBase/J3DShapeDraw/countVertex__12J3DShapeDrawFUl.s b/asm/JSystem/J3DGraphBase/J3DShapeDraw/countVertex__12J3DShapeDrawFUl.s deleted file mode 100644 index 3e4e9378551..00000000000 --- a/asm/JSystem/J3DGraphBase/J3DShapeDraw/countVertex__12J3DShapeDrawFUl.s +++ /dev/null @@ -1,25 +0,0 @@ -lbl_80314924: -/* 80314924 38 A0 00 00 */ li r5, 0 -/* 80314928 80 C3 00 08 */ lwz r6, 8(r3) -/* 8031492C 7C C7 33 78 */ mr r7, r6 -/* 80314930 80 63 00 04 */ lwz r3, 4(r3) -/* 80314934 48 00 00 2C */ b lbl_80314960 -lbl_80314938: -/* 80314938 88 07 00 00 */ lbz r0, 0(r7) -/* 8031493C 28 00 00 A0 */ cmplwi r0, 0xa0 -/* 80314940 41 82 00 0C */ beq lbl_8031494C -/* 80314944 28 00 00 98 */ cmplwi r0, 0x98 -/* 80314948 40 82 00 24 */ bne lbl_8031496C -lbl_8031494C: -/* 8031494C A0 07 00 01 */ lhz r0, 1(r7) -/* 80314950 7C A5 02 14 */ add r5, r5, r0 -/* 80314954 7C 04 01 D6 */ mullw r0, r4, r0 -/* 80314958 7C E7 02 14 */ add r7, r7, r0 -/* 8031495C 38 E7 00 03 */ addi r7, r7, 3 -lbl_80314960: -/* 80314960 7C 06 38 50 */ subf r0, r6, r7 -/* 80314964 7C 00 18 40 */ cmplw r0, r3 -/* 80314968 41 80 FF D0 */ blt lbl_80314938 -lbl_8031496C: -/* 8031496C 7C A3 2B 78 */ mr r3, r5 -/* 80314970 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphBase/J3DShapeMtx/loadMtxConcatView_NCPU__21J3DShapeMtxConcatViewCFiUs.s b/asm/JSystem/J3DGraphBase/J3DShapeMtx/loadMtxConcatView_NCPU__21J3DShapeMtxConcatViewCFiUs.s deleted file mode 100644 index 54c4a8fe114..00000000000 --- a/asm/JSystem/J3DGraphBase/J3DShapeMtx/loadMtxConcatView_NCPU__21J3DShapeMtxConcatViewCFiUs.s +++ /dev/null @@ -1,45 +0,0 @@ -lbl_8031396C: -/* 8031396C 94 21 FF C0 */ stwu r1, -0x40(r1) -/* 80313970 7C 08 02 A6 */ mflr r0 -/* 80313974 90 01 00 44 */ stw r0, 0x44(r1) -/* 80313978 93 E1 00 3C */ stw r31, 0x3c(r1) -/* 8031397C 93 C1 00 38 */ stw r30, 0x38(r1) -/* 80313980 7C 9E 23 78 */ mr r30, r4 -/* 80313984 3C 60 80 43 */ lis r3, j3dSys@ha /* 0x80434AC8@ha */ -/* 80313988 3B E3 4A C8 */ addi r31, r3, j3dSys@l /* 0x80434AC8@l */ -/* 8031398C 80 7F 00 40 */ lwz r3, 0x40(r31) -/* 80313990 80 63 00 30 */ lwz r3, 0x30(r3) -/* 80313994 80 9F 01 04 */ lwz r4, 0x104(r31) -/* 80313998 54 A0 04 3E */ clrlwi r0, r5, 0x10 -/* 8031399C 1C 00 00 30 */ mulli r0, r0, 0x30 -/* 803139A0 7C 84 02 14 */ add r4, r4, r0 -/* 803139A4 38 A1 00 08 */ addi r5, r1, 8 -/* 803139A8 48 03 2B 3D */ bl PSMTXConcat -/* 803139AC 80 0D 90 40 */ lwz r0, sTexGenBlock__17J3DDifferedTexMtx(r13) -/* 803139B0 28 00 00 00 */ cmplwi r0, 0 -/* 803139B4 41 82 00 0C */ beq lbl_803139C0 -/* 803139B8 38 61 00 08 */ addi r3, r1, 8 -/* 803139BC 4B FF F8 71 */ bl loadExecute__17J3DDifferedTexMtxFPA4_Cf -lbl_803139C0: -/* 803139C0 38 61 00 08 */ addi r3, r1, 8 -/* 803139C4 1F DE 00 03 */ mulli r30, r30, 3 -/* 803139C8 7F C4 F3 78 */ mr r4, r30 -/* 803139CC 4B FF C1 15 */ bl J3DFifoLoadPosMtxImm__FPA4_fUl -/* 803139D0 80 7F 00 40 */ lwz r3, 0x40(r31) -/* 803139D4 80 63 00 30 */ lwz r3, 0x30(r3) -/* 803139D8 7F C4 F3 78 */ mr r4, r30 -/* 803139DC 4B FF C1 85 */ bl J3DFifoLoadNrmMtxImm__FPA4_fUl -/* 803139E0 80 0D 90 34 */ lwz r0, sTexMtxLoadType__11J3DShapeMtx(r13) -/* 803139E4 28 00 20 00 */ cmplwi r0, 0x2000 -/* 803139E8 40 82 00 14 */ bne lbl_803139FC -/* 803139EC 80 7F 00 40 */ lwz r3, 0x40(r31) -/* 803139F0 80 63 00 30 */ lwz r3, 0x30(r3) -/* 803139F4 38 9E 00 1E */ addi r4, r30, 0x1e -/* 803139F8 4B FF C2 41 */ bl J3DFifoLoadNrmMtxToTexMtx__FPA4_fUl -lbl_803139FC: -/* 803139FC 83 E1 00 3C */ lwz r31, 0x3c(r1) -/* 80313A00 83 C1 00 38 */ lwz r30, 0x38(r1) -/* 80313A04 80 01 00 44 */ lwz r0, 0x44(r1) -/* 80313A08 7C 08 03 A6 */ mtlr r0 -/* 80313A0C 38 21 00 40 */ addi r1, r1, 0x40 -/* 80313A10 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphBase/J3DShapeMtx/loadMtxConcatView_PCPU__21J3DShapeMtxConcatViewCFiUs.s b/asm/JSystem/J3DGraphBase/J3DShapeMtx/loadMtxConcatView_PCPU__21J3DShapeMtxConcatViewCFiUs.s deleted file mode 100644 index 764a7251f6e..00000000000 --- a/asm/JSystem/J3DGraphBase/J3DShapeMtx/loadMtxConcatView_PCPU__21J3DShapeMtxConcatViewCFiUs.s +++ /dev/null @@ -1,43 +0,0 @@ -lbl_803138C8: -/* 803138C8 94 21 FF B0 */ stwu r1, -0x50(r1) -/* 803138CC 7C 08 02 A6 */ mflr r0 -/* 803138D0 90 01 00 54 */ stw r0, 0x54(r1) -/* 803138D4 39 61 00 50 */ addi r11, r1, 0x50 -/* 803138D8 48 04 E9 01 */ bl _savegpr_28 -/* 803138DC 7C 7C 1B 78 */ mr r28, r3 -/* 803138E0 7C 9D 23 78 */ mr r29, r4 -/* 803138E4 7C BE 2B 78 */ mr r30, r5 -/* 803138E8 3C 60 80 43 */ lis r3, j3dSys@ha /* 0x80434AC8@ha */ -/* 803138EC 3B E3 4A C8 */ addi r31, r3, j3dSys@l /* 0x80434AC8@l */ -/* 803138F0 80 7F 00 40 */ lwz r3, 0x40(r31) -/* 803138F4 80 63 00 30 */ lwz r3, 0x30(r3) -/* 803138F8 80 9F 01 04 */ lwz r4, 0x104(r31) -/* 803138FC 54 A0 04 3E */ clrlwi r0, r5, 0x10 -/* 80313900 1C 00 00 30 */ mulli r0, r0, 0x30 -/* 80313904 7C 84 02 14 */ add r4, r4, r0 -/* 80313908 38 A1 00 08 */ addi r5, r1, 8 -/* 8031390C 48 03 2B D9 */ bl PSMTXConcat -/* 80313910 80 0D 90 40 */ lwz r0, sTexGenBlock__17J3DDifferedTexMtx(r13) -/* 80313914 28 00 00 00 */ cmplwi r0, 0 -/* 80313918 41 82 00 0C */ beq lbl_80313924 -/* 8031391C 38 61 00 08 */ addi r3, r1, 8 -/* 80313920 4B FF F9 0D */ bl loadExecute__17J3DDifferedTexMtxFPA4_Cf -lbl_80313924: -/* 80313924 80 7F 00 40 */ lwz r3, 0x40(r31) -/* 80313928 80 63 00 30 */ lwz r3, 0x30(r3) -/* 8031392C 1C 9D 00 03 */ mulli r4, r29, 3 -/* 80313930 4B FF C1 B1 */ bl J3DFifoLoadPosMtxImm__FPA4_fUl -/* 80313934 7F 83 E3 78 */ mr r3, r28 -/* 80313938 7F A4 EB 78 */ mr r4, r29 -/* 8031393C 7F C5 F3 78 */ mr r5, r30 -/* 80313940 38 C1 00 08 */ addi r6, r1, 8 -/* 80313944 81 9C 00 00 */ lwz r12, 0(r28) -/* 80313948 81 8C 00 24 */ lwz r12, 0x24(r12) -/* 8031394C 7D 89 03 A6 */ mtctr r12 -/* 80313950 4E 80 04 21 */ bctrl -/* 80313954 39 61 00 50 */ addi r11, r1, 0x50 -/* 80313958 48 04 E8 CD */ bl _restgpr_28 -/* 8031395C 80 01 00 54 */ lwz r0, 0x54(r1) -/* 80313960 7C 08 03 A6 */ mtlr r0 -/* 80313964 38 21 00 50 */ addi r1, r1, 0x50 -/* 80313968 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphBase/J3DShapeMtx/loadMtxConcatView_PNCPU__21J3DShapeMtxConcatViewCFiUs.s b/asm/JSystem/J3DGraphBase/J3DShapeMtx/loadMtxConcatView_PNCPU__21J3DShapeMtxConcatViewCFiUs.s deleted file mode 100644 index 39c73b1543f..00000000000 --- a/asm/JSystem/J3DGraphBase/J3DShapeMtx/loadMtxConcatView_PNCPU__21J3DShapeMtxConcatViewCFiUs.s +++ /dev/null @@ -1,48 +0,0 @@ -lbl_80313A14: -/* 80313A14 94 21 FF C0 */ stwu r1, -0x40(r1) -/* 80313A18 7C 08 02 A6 */ mflr r0 -/* 80313A1C 90 01 00 44 */ stw r0, 0x44(r1) -/* 80313A20 93 E1 00 3C */ stw r31, 0x3c(r1) -/* 80313A24 93 C1 00 38 */ stw r30, 0x38(r1) -/* 80313A28 7C 9E 23 78 */ mr r30, r4 -/* 80313A2C 80 0D 90 40 */ lwz r0, sTexGenBlock__17J3DDifferedTexMtx(r13) -/* 80313A30 28 00 00 00 */ cmplwi r0, 0 -/* 80313A34 41 82 00 34 */ beq lbl_80313A68 -/* 80313A38 3C 60 80 43 */ lis r3, j3dSys@ha /* 0x80434AC8@ha */ -/* 80313A3C 38 83 4A C8 */ addi r4, r3, j3dSys@l /* 0x80434AC8@l */ -/* 80313A40 80 64 00 40 */ lwz r3, 0x40(r4) -/* 80313A44 80 63 00 30 */ lwz r3, 0x30(r3) -/* 80313A48 80 84 01 04 */ lwz r4, 0x104(r4) -/* 80313A4C 54 A0 04 3E */ clrlwi r0, r5, 0x10 -/* 80313A50 1C 00 00 30 */ mulli r0, r0, 0x30 -/* 80313A54 7C 84 02 14 */ add r4, r4, r0 -/* 80313A58 38 A1 00 08 */ addi r5, r1, 8 -/* 80313A5C 48 03 2A 89 */ bl PSMTXConcat -/* 80313A60 38 61 00 08 */ addi r3, r1, 8 -/* 80313A64 4B FF F7 C9 */ bl loadExecute__17J3DDifferedTexMtxFPA4_Cf -lbl_80313A68: -/* 80313A68 3C 60 80 43 */ lis r3, j3dSys@ha /* 0x80434AC8@ha */ -/* 80313A6C 3B E3 4A C8 */ addi r31, r3, j3dSys@l /* 0x80434AC8@l */ -/* 80313A70 80 7F 00 40 */ lwz r3, 0x40(r31) -/* 80313A74 80 63 00 30 */ lwz r3, 0x30(r3) -/* 80313A78 1F DE 00 03 */ mulli r30, r30, 3 -/* 80313A7C 7F C4 F3 78 */ mr r4, r30 -/* 80313A80 4B FF C0 61 */ bl J3DFifoLoadPosMtxImm__FPA4_fUl -/* 80313A84 80 7F 00 40 */ lwz r3, 0x40(r31) -/* 80313A88 80 63 00 30 */ lwz r3, 0x30(r3) -/* 80313A8C 7F C4 F3 78 */ mr r4, r30 -/* 80313A90 4B FF C0 D1 */ bl J3DFifoLoadNrmMtxImm__FPA4_fUl -/* 80313A94 80 0D 90 34 */ lwz r0, sTexMtxLoadType__11J3DShapeMtx(r13) -/* 80313A98 28 00 20 00 */ cmplwi r0, 0x2000 -/* 80313A9C 40 82 00 14 */ bne lbl_80313AB0 -/* 80313AA0 80 7F 00 40 */ lwz r3, 0x40(r31) -/* 80313AA4 80 63 00 30 */ lwz r3, 0x30(r3) -/* 80313AA8 38 9E 00 1E */ addi r4, r30, 0x1e -/* 80313AAC 4B FF C1 8D */ bl J3DFifoLoadNrmMtxToTexMtx__FPA4_fUl -lbl_80313AB0: -/* 80313AB0 83 E1 00 3C */ lwz r31, 0x3c(r1) -/* 80313AB4 83 C1 00 38 */ lwz r30, 0x38(r1) -/* 80313AB8 80 01 00 44 */ lwz r0, 0x44(r1) -/* 80313ABC 7C 08 03 A6 */ mtlr r0 -/* 80313AC0 38 21 00 40 */ addi r1, r1, 0x40 -/* 80313AC4 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphBase/J3DShapeMtx/loadMtxConcatView_PNGP_LOD__21J3DShapeMtxConcatViewCFiUs.s b/asm/JSystem/J3DGraphBase/J3DShapeMtx/loadMtxConcatView_PNGP_LOD__21J3DShapeMtxConcatViewCFiUs.s deleted file mode 100644 index 7ec4b0758c7..00000000000 --- a/asm/JSystem/J3DGraphBase/J3DShapeMtx/loadMtxConcatView_PNGP_LOD__21J3DShapeMtxConcatViewCFiUs.s +++ /dev/null @@ -1,53 +0,0 @@ -lbl_80313AC8: -/* 80313AC8 94 21 FF B0 */ stwu r1, -0x50(r1) -/* 80313ACC 7C 08 02 A6 */ mflr r0 -/* 80313AD0 90 01 00 54 */ stw r0, 0x54(r1) -/* 80313AD4 39 61 00 50 */ addi r11, r1, 0x50 -/* 80313AD8 48 04 E7 05 */ bl _savegpr_29 -/* 80313ADC 7C 7D 1B 78 */ mr r29, r3 -/* 80313AE0 7C 9E 23 78 */ mr r30, r4 -/* 80313AE4 7C BF 2B 78 */ mr r31, r5 -/* 80313AE8 3C 60 80 43 */ lis r3, j3dSys@ha /* 0x80434AC8@ha */ -/* 80313AEC 38 83 4A C8 */ addi r4, r3, j3dSys@l /* 0x80434AC8@l */ -/* 80313AF0 80 64 00 40 */ lwz r3, 0x40(r4) -/* 80313AF4 80 63 00 30 */ lwz r3, 0x30(r3) -/* 80313AF8 80 84 01 04 */ lwz r4, 0x104(r4) -/* 80313AFC 54 A0 04 3E */ clrlwi r0, r5, 0x10 -/* 80313B00 1C 00 00 30 */ mulli r0, r0, 0x30 -/* 80313B04 7C 84 02 14 */ add r4, r4, r0 -/* 80313B08 38 A1 00 08 */ addi r5, r1, 8 -/* 80313B0C 48 03 29 D9 */ bl PSMTXConcat -/* 80313B10 3C 60 80 43 */ lis r3, j3dSys@ha /* 0x80434AC8@ha */ -/* 80313B14 38 63 4A C8 */ addi r3, r3, j3dSys@l /* 0x80434AC8@l */ -/* 80313B18 80 63 00 38 */ lwz r3, 0x38(r3) -/* 80313B1C 80 63 00 04 */ lwz r3, 4(r3) -/* 80313B20 80 63 00 3C */ lwz r3, 0x3c(r3) -/* 80313B24 57 E0 04 3E */ clrlwi r0, r31, 0x10 -/* 80313B28 1C 00 00 30 */ mulli r0, r0, 0x30 -/* 80313B2C 7C 83 02 14 */ add r4, r3, r0 -/* 80313B30 38 61 00 08 */ addi r3, r1, 8 -/* 80313B34 7C 65 1B 78 */ mr r5, r3 -/* 80313B38 48 03 29 AD */ bl PSMTXConcat -/* 80313B3C 80 0D 90 40 */ lwz r0, sTexGenBlock__17J3DDifferedTexMtx(r13) -/* 80313B40 28 00 00 00 */ cmplwi r0, 0 -/* 80313B44 41 82 00 0C */ beq lbl_80313B50 -/* 80313B48 38 61 00 08 */ addi r3, r1, 8 -/* 80313B4C 4B FF F6 E1 */ bl loadExecute__17J3DDifferedTexMtxFPA4_Cf -lbl_80313B50: -/* 80313B50 38 61 00 08 */ addi r3, r1, 8 -/* 80313B54 1C 9E 00 03 */ mulli r4, r30, 3 -/* 80313B58 4B FF BF 89 */ bl J3DFifoLoadPosMtxImm__FPA4_fUl -/* 80313B5C 7F A3 EB 78 */ mr r3, r29 -/* 80313B60 7F C4 F3 78 */ mr r4, r30 -/* 80313B64 7F E5 FB 78 */ mr r5, r31 -/* 80313B68 38 C1 00 08 */ addi r6, r1, 8 -/* 80313B6C 81 9D 00 00 */ lwz r12, 0(r29) -/* 80313B70 81 8C 00 24 */ lwz r12, 0x24(r12) -/* 80313B74 7D 89 03 A6 */ mtctr r12 -/* 80313B78 4E 80 04 21 */ bctrl -/* 80313B7C 39 61 00 50 */ addi r11, r1, 0x50 -/* 80313B80 48 04 E6 A9 */ bl _restgpr_29 -/* 80313B84 80 01 00 54 */ lwz r0, 0x54(r1) -/* 80313B88 7C 08 03 A6 */ mtlr r0 -/* 80313B8C 38 21 00 50 */ addi r1, r1, 0x50 -/* 80313B90 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphBase/J3DShapeMtx/loadMtxConcatView_PNGP__21J3DShapeMtxConcatViewCFiUs.s b/asm/JSystem/J3DGraphBase/J3DShapeMtx/loadMtxConcatView_PNGP__21J3DShapeMtxConcatViewCFiUs.s deleted file mode 100644 index 38e4331b9d1..00000000000 --- a/asm/JSystem/J3DGraphBase/J3DShapeMtx/loadMtxConcatView_PNGP__21J3DShapeMtxConcatViewCFiUs.s +++ /dev/null @@ -1,42 +0,0 @@ -lbl_80313828: -/* 80313828 94 21 FF B0 */ stwu r1, -0x50(r1) -/* 8031382C 7C 08 02 A6 */ mflr r0 -/* 80313830 90 01 00 54 */ stw r0, 0x54(r1) -/* 80313834 39 61 00 50 */ addi r11, r1, 0x50 -/* 80313838 48 04 E9 A5 */ bl _savegpr_29 -/* 8031383C 7C 7D 1B 78 */ mr r29, r3 -/* 80313840 7C 9E 23 78 */ mr r30, r4 -/* 80313844 7C BF 2B 78 */ mr r31, r5 -/* 80313848 3C 60 80 43 */ lis r3, j3dSys@ha /* 0x80434AC8@ha */ -/* 8031384C 38 83 4A C8 */ addi r4, r3, j3dSys@l /* 0x80434AC8@l */ -/* 80313850 80 64 00 40 */ lwz r3, 0x40(r4) -/* 80313854 80 63 00 30 */ lwz r3, 0x30(r3) -/* 80313858 80 84 01 04 */ lwz r4, 0x104(r4) -/* 8031385C 54 A0 04 3E */ clrlwi r0, r5, 0x10 -/* 80313860 1C 00 00 30 */ mulli r0, r0, 0x30 -/* 80313864 7C 84 02 14 */ add r4, r4, r0 -/* 80313868 38 A1 00 08 */ addi r5, r1, 8 -/* 8031386C 48 03 2C 79 */ bl PSMTXConcat -/* 80313870 80 0D 90 40 */ lwz r0, sTexGenBlock__17J3DDifferedTexMtx(r13) -/* 80313874 28 00 00 00 */ cmplwi r0, 0 -/* 80313878 41 82 00 0C */ beq lbl_80313884 -/* 8031387C 38 61 00 08 */ addi r3, r1, 8 -/* 80313880 4B FF F9 AD */ bl loadExecute__17J3DDifferedTexMtxFPA4_Cf -lbl_80313884: -/* 80313884 38 61 00 08 */ addi r3, r1, 8 -/* 80313888 1C 9E 00 03 */ mulli r4, r30, 3 -/* 8031388C 4B FF C2 55 */ bl J3DFifoLoadPosMtxImm__FPA4_fUl -/* 80313890 7F A3 EB 78 */ mr r3, r29 -/* 80313894 7F C4 F3 78 */ mr r4, r30 -/* 80313898 7F E5 FB 78 */ mr r5, r31 -/* 8031389C 38 C1 00 08 */ addi r6, r1, 8 -/* 803138A0 81 9D 00 00 */ lwz r12, 0(r29) -/* 803138A4 81 8C 00 24 */ lwz r12, 0x24(r12) -/* 803138A8 7D 89 03 A6 */ mtctr r12 -/* 803138AC 4E 80 04 21 */ bctrl -/* 803138B0 39 61 00 50 */ addi r11, r1, 0x50 -/* 803138B4 48 04 E9 75 */ bl _restgpr_29 -/* 803138B8 80 01 00 54 */ lwz r0, 0x54(r1) -/* 803138BC 7C 08 03 A6 */ mtlr r0 -/* 803138C0 38 21 00 50 */ addi r1, r1, 0x50 -/* 803138C4 4E 80 00 20 */ blr diff --git a/include/JSystem/J3DGraphBase/J3DShape.h b/include/JSystem/J3DGraphBase/J3DShape.h index 5bac7d8ddf7..866dbe34e5a 100644 --- a/include/JSystem/J3DGraphBase/J3DShape.h +++ b/include/JSystem/J3DGraphBase/J3DShape.h @@ -90,6 +90,9 @@ public: inline J3DMaterial* getMaterial() const { return mMaterial; } inline u32 getPipeline() const { return (mFlags >> 2) & 0x07; } inline u32 getTexMtxLoadType() const { return mFlags & 0xF000; } + inline u32 getMtxGroupNum() const { return mMtxGroupNum; } + inline J3DShapeDraw* getShapeDraw(u32 idx) const { return mShapeDraw[idx]; } + inline J3DShapeMtx* getShapeMtx(u32 idx) const { return mShapeMtx[idx]; } static void resetVcdVatCache() { sOldVcdVatCmd = NULL; } static void* sOldVcdVatCmd; diff --git a/include/JSystem/J3DGraphBase/J3DShapeDraw.h b/include/JSystem/J3DGraphBase/J3DShapeDraw.h index 8caf1518509..8ad82a0c3dd 100644 --- a/include/JSystem/J3DGraphBase/J3DShapeDraw.h +++ b/include/JSystem/J3DGraphBase/J3DShapeDraw.h @@ -5,13 +5,16 @@ class J3DShapeDraw { public: - /* 80314924 */ void countVertex(u32); + /* 80314924 */ u32 countVertex(u32); /* 80314974 */ void addTexMtxIndexInDL(u32, u32, u32); /* 80314ABC */ J3DShapeDraw(u8 const*, u32); /* 80314AD4 */ void draw() const; /* 80314B00 */ virtual ~J3DShapeDraw(); + u8* getDisplayList() const { return (u8*)mDisplayList; } + u32 getDisplayListSize() const { return mDisplayListSize; } + private: /* 0x04 */ u32 mDisplayListSize; /* 0x08 */ void* mDisplayList; diff --git a/include/JSystem/J3DGraphBase/J3DVertex.h b/include/JSystem/J3DGraphBase/J3DVertex.h index 360e4a0cea4..567a41ebe06 100644 --- a/include/JSystem/J3DGraphBase/J3DVertex.h +++ b/include/JSystem/J3DGraphBase/J3DVertex.h @@ -21,17 +21,19 @@ public: J3DVertexData(); void* getVtxPosArray() const { return mVtxPosArray; } - void* getVtxNrmArray() const { return mVtxNrmArray; } - - _GXColor* getVtxColorArray(u8 idx) const { return mVtxColorArray[idx]; } - + GXColor* getVtxColorArray(u8 idx) const { return mVtxColorArray[idx]; } + void* getVtxTexCoordArray(u8 idx) const { return mVtxTexCoordArray[idx]; } + void* getVtxNBTArray() const { return mVtxNBTArray; } u32 getNrmNum() const { return mNrmNum; } - u32 getVtxNum() const { return mVtxNum; } - GXVtxAttrFmtList* getVtxAttrFmtList() { return mVtxAttrFmtList; } + void setVtxPosFrac(u8 frac) { mVtxPosFrac = frac; } + void setVtxPosType(GXCompType type) { mVtxPosType = type; } + void setVtxNrmFrac(u8 frac) { mVtxNrmFrac = frac; } + void setVtxNrmType(GXCompType type) { mVtxNrmType = type; } + private: /* 0x00 */ u32 mVtxNum; /* 0x04 */ u32 mNrmNum; diff --git a/include/dolphin/gx/GX.h b/include/dolphin/gx/GX.h index baceefa1e8a..1951f2bd430 100644 --- a/include/dolphin/gx/GX.h +++ b/include/dolphin/gx/GX.h @@ -85,13 +85,6 @@ typedef struct _GXTexRegion { /* 0x00 */ u8 dummy[0x10]; } GXTexRegion; // Size: 0x10 -typedef struct _GXVtxAttrFmtList { - /* 0x00 */ u32 mAttrib; // GXAttr - /* 0x04 */ u32 mCompCnt; // GXCompCnt - /* 0x08 */ u32 mCompType; // GXCompType - /* 0x0C */ u8 mCompShift; -} GXVtxAttrFmtList; // Size: 0x10 - typedef enum _GXPrimitive { /* 0x80 */ GX_QUADS = 0x80, /* 0x90 */ GX_TRIANGLES = 0x90, @@ -830,6 +823,13 @@ typedef struct _GXVtxDescList { /* 0x4 */ GXAttrType type; } GXVtxDescList; // Size: 0x08 +typedef struct _GXVtxAttrFmtList { + /* 0x00 */ GXAttr mAttrib; + /* 0x04 */ GXCompCnt mCompCnt; + /* 0x08 */ GXCompType mCompType; + /* 0x0C */ u8 mCompShift; +} GXVtxAttrFmtList; // Size: 0x10 + typedef enum _GXFBClamp { /* 0x0 */ GX_CLAMP_NONE, /* 0x1 */ GX_CLAMP_TOP, diff --git a/libs/JSystem/J3DGraphBase/J3DShape.cpp b/libs/JSystem/J3DGraphBase/J3DShape.cpp index 306362d4947..154850d3e3a 100644 --- a/libs/JSystem/J3DGraphBase/J3DShape.cpp +++ b/libs/JSystem/J3DGraphBase/J3DShape.cpp @@ -58,7 +58,7 @@ extern "C" void _savegpr_29(); extern "C" void _restgpr_27(); extern "C" void _restgpr_28(); extern "C" void _restgpr_29(); -extern "C" extern u8 j3dDefaultViewNo[4 + 4 /* padding */]; +extern "C" extern u32 j3dDefaultViewNo; extern "C" u32 sCurrentPipeline__11J3DShapeMtx; extern "C" u32 sCurrentScaleFlag__11J3DShapeMtx; extern "C" extern u8 struct_804515B0[4]; @@ -72,32 +72,38 @@ enum { kVcdVatDLSize = 0xC0, }; -/* ############################################################################################## */ -/* 804563A0-804563A8 0049A0 0004+04 1/1 0/0 0/0 .sdata2 @687 */ -SECTION_SDATA2 static f32 lit_687[1 + 1 /* padding */] = { - 0.0f, - /* padding */ - 0.0f, -}; - -/* 80314B48-80314BB8 30F488 0070+00 0/0 1/1 0/0 .text initialize__8J3DShapeFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DShape::initialize() { - nofralloc -#include "asm/JSystem/J3DGraphBase/J3DShape/initialize__8J3DShapeFv.s" +void J3DShape::initialize() { + mMaterial = NULL; + mIndex = -1; + mMtxGroupNum = 0; + mFlags = 0; + mRadius = 0.0f; + mMin.x = 0.0f; + mMin.y = 0.0f; + mMin.z = 0.0f; + mMax.x = 0.0f; + mMax.y = 0.0f; + mMax.z = 0.0f; + mVtxDesc = NULL; + mShapeMtx = NULL; + mShapeDraw = NULL; + mVertexData = NULL; + mDrawMtxData = NULL; + mScaleFlagArray = NULL; + mDrawMtx = NULL; + mNrmMtx = NULL; + mCurrentViewNo = &j3dDefaultViewNo; + mHasNBT = false; + mHasPNMTXIdx = false; } -#pragma pop /* 80314BB8-80314CBC 30F4F8 0104+00 0/0 1/1 0/0 .text addTexMtxIndexInDL__8J3DShapeF7_GXAttrUl */ -#ifdef NONMATCHING -void J3DShape::addTexMtxIndexInDL(GXAttr attr, u32 param_1) { +void J3DShape::addTexMtxIndexInDL(GXAttr attr, u32 valueBase) { u32 kSize[] = { 0, 1, 1, 2 }; s32 pnmtxidxOffs = -1; s32 attrOffs = -1; - u32 stride = 0; + s32 stride = 0; bool found = false; for (GXVtxDescList* vtxDesc = mVtxDesc; vtxDesc->attr != GX_VA_NULL; vtxDesc++) { @@ -115,28 +121,9 @@ void J3DShape::addTexMtxIndexInDL(GXAttr attr, u32 param_1) { if (pnmtxidxOffs == -1) return; - for (u16 i = 0; i < mMtxGroupNum; i++) - mShapeDraw[i]->addTexMtxIndexInDL(stride, attrOffs, param_1); + for (u16 i = 0; i < getMtxGroupNum(); i++) + getShapeDraw(i)->addTexMtxIndexInDL(stride, attrOffs, (s32)valueBase); } -#else - -/* ############################################################################################## */ -/* 803A1E98-803A1EA8 02E4F8 0010+00 1/1 0/0 0/0 .rodata @697 */ -SECTION_RODATA static u8 const lit_697[16] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, -}; -COMPILER_STRIP_GATE(0x803A1E98, &lit_697); - -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DShape::addTexMtxIndexInDL(_GXAttr param_0, u32 param_1) { - nofralloc -#include "asm/JSystem/J3DGraphBase/J3DShape/addTexMtxIndexInDL__8J3DShapeF7_GXAttrUl.s" -} -#pragma pop - -#endif /* 80314CBC-80314DA8 30F5FC 00EC+00 0/0 1/1 0/0 .text addTexMtxIndexInVcd__8J3DShapeF7_GXAttr */ void J3DShape::addTexMtxIndexInVcd(GXAttr attr) { @@ -177,15 +164,15 @@ void J3DShape::addTexMtxIndexInVcd(GXAttr attr) { /* 80314DA8-80314E28 30F6E8 0080+00 0/0 1/1 0/0 .text * calcNBTScale__8J3DShapeFRC3VecPA3_A3_fPA3_A3_f */ void J3DShape::calcNBTScale(Vec const& param_0, f32 (*param_1)[3][3], f32 (*param_2)[3][3]) { - for (u16 i = 0; i < mMtxGroupNum; i++) - mShapeMtx[i]->calcNBTScale(param_0, param_1, param_2); + for (u16 i = 0; i < getMtxGroupNum(); i++) + getShapeMtx(i)->calcNBTScale(param_0, param_1, param_2); } /* 80314E28-80314E98 30F768 0070+00 0/0 1/1 0/0 .text countBumpMtxNum__8J3DShapeCFv */ u32 J3DShape::countBumpMtxNum() const { u32 num = 0; - for (u16 i = 0; i < mMtxGroupNum; i++) - num += mShapeMtx[i]->getUseMtxNum(); + for (u16 i = 0; i < getMtxGroupNum(); i++) + num += getShapeMtx(i)->getUseMtxNum(); return num; } @@ -222,14 +209,87 @@ bool J3DShape::isSameVcdVatCmd(J3DShape* other) { } /* 80314F98-80315260 30F8D8 02C8+00 1/1 0/0 0/0 .text makeVtxArrayCmd__8J3DShapeFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DShape::makeVtxArrayCmd() { - nofralloc -#include "asm/JSystem/J3DGraphBase/J3DShape/makeVtxArrayCmd__8J3DShapeFv.s" +void J3DShape::makeVtxArrayCmd() { + GXVtxAttrFmtList *vtxAttr = mVertexData->getVtxAttrFmtList(); + + u8 stride[0x0C]; + void* array[0x0C]; + for (u32 i = 0; i < 0x0C; i++) { + stride[i] = 0; + array[i] = 0; + } + + for (; vtxAttr->mAttrib != GX_VA_NULL; vtxAttr++) { + switch (vtxAttr->mAttrib) { + case GX_VA_POS: + { + if (vtxAttr->mCompType == GX_F32) + stride[vtxAttr->mAttrib - GX_VA_POS] = 0x0C; + else + stride[vtxAttr->mAttrib - GX_VA_POS] = 0x06; + array[vtxAttr->mAttrib - GX_VA_POS] = mVertexData->getVtxPosArray(); + mVertexData->setVtxPosFrac(vtxAttr->mCompShift); + mVertexData->setVtxPosType((GXCompType) vtxAttr->mCompType); + } + break; + case GX_VA_NRM: + { + if (vtxAttr->mCompType == GX_F32) + stride[vtxAttr->mAttrib - GX_VA_POS] = 0x0C; + else + stride[vtxAttr->mAttrib - GX_VA_POS] = 0x06; + array[vtxAttr->mAttrib - GX_VA_POS] = mVertexData->getVtxNrmArray(); + mVertexData->setVtxNrmFrac(vtxAttr->mCompShift); + mVertexData->setVtxNrmType((GXCompType) vtxAttr->mCompType); + } + break; + case GX_VA_CLR0: + case GX_VA_CLR1: + { + stride[vtxAttr->mAttrib - GX_VA_POS] = 0x04; + array[vtxAttr->mAttrib - GX_VA_POS] = mVertexData->getVtxColorArray(vtxAttr->mAttrib - GX_VA_CLR0); + } + break; + case GX_VA_TEX0: + case GX_VA_TEX1: + case GX_VA_TEX2: + case GX_VA_TEX3: + case GX_VA_TEX4: + case GX_VA_TEX5: + case GX_VA_TEX6: + case GX_VA_TEX7: + { + if (vtxAttr->mCompType == GX_F32) + stride[vtxAttr->mAttrib - GX_VA_POS] = 0x08; + else + stride[vtxAttr->mAttrib - GX_VA_POS] = 0x04; + array[vtxAttr->mAttrib - GX_VA_POS] = mVertexData->getVtxTexCoordArray(vtxAttr->mAttrib - GX_VA_TEX0); + } + break; + default: + break; + } + } + + GXVtxDescList* vtxDesc = mVtxDesc; + mHasPNMTXIdx = false; + for (; vtxDesc->attr != GX_VA_NULL; vtxDesc++) { + if (vtxDesc->attr == GX_VA_NBT && vtxDesc->type != GX_NONE) { + mHasNBT = true; + stride[GX_VA_NRM - GX_VA_POS] *= 3; + array[GX_VA_NRM - GX_VA_POS] = mVertexData->getVtxNBTArray(); + } else if (vtxDesc->attr == GX_VA_PNMTXIDX && vtxDesc->type != GX_NONE) { + mHasPNMTXIdx = true; + } + } + + for (u32 i = 0; i < 0x0C; i++) { + if (array[i] != 0) + GDSetArray((GXAttr)(i + GX_VA_POS), array[i], stride[i]); + else + GDSetArrayRaw((GXAttr)(i + GX_VA_POS), NULL, stride[i]); + } } -#pragma pop /* ############################################################################################## */ /* 804515C8-804515CC 000AC8 0004+00 1/1 0/0 0/0 .sbss sInterruptFlag$903 */ @@ -264,14 +324,14 @@ void J3DShape::makeVcdVatCmd() { void* J3DShape::sOldVcdVatCmd; /* 80315300-80315398 30FC40 0098+00 2/2 6/6 3/3 .text loadPreDrawSetting__8J3DShapeCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DShape::loadPreDrawSetting() const { - nofralloc -#include "asm/JSystem/J3DGraphBase/J3DShape/loadPreDrawSetting__8J3DShapeCFv.s" +void J3DShape::loadPreDrawSetting() const { + if (sOldVcdVatCmd != mVcdVatCmd) { + GXCallDisplayList(mVcdVatCmd, kVcdVatDLSize); + sOldVcdVatCmd = mVcdVatCmd; + } + + mCurrentMtx.load(); } -#pragma pop /* ############################################################################################## */ /* 804515D4-804515D8 000AD4 0004+00 3/3 0/0 0/0 .sbss None */ @@ -308,18 +368,18 @@ void J3DShape::drawFast() const { if (J3DShapeMtx::getLODFlag() != 0) J3DShapeMtx::resetMtxLoadCache(); - for (u16 n = mMtxGroupNum, i = 0; i < n; i++) { - if (mShapeMtx[i] != NULL) - mShapeMtx[i]->load(); - if (mShapeDraw[i] != NULL) - mShapeDraw[i]->draw(); + for (u16 n = getMtxGroupNum(), i = 0; i < n; i++) { + if (getShapeMtx(i) != NULL) + getShapeMtx(i)->load(); + if (getShapeDraw(i) != NULL) + getShapeDraw(i)->draw(); } } else { - J3DFifoLoadPosMtxImm(*j3dSys.mShapePacket->getBaseMtxPtr(), GX_PNMTX0); - J3DFifoLoadNrmMtxImm(*j3dSys.mShapePacket->getBaseMtxPtr(), GX_PNMTX0); - for (u16 n = mMtxGroupNum, i = 0; i < n; i++) - if (mShapeDraw[i] != NULL) - mShapeDraw[i]->draw(); + J3DFifoLoadPosMtxImm(*j3dSys.getShapePacket()->getBaseMtxPtr(), GX_PNMTX0); + J3DFifoLoadNrmMtxImm(*j3dSys.getShapePacket()->getBaseMtxPtr(), GX_PNMTX0); + for (u16 n = getMtxGroupNum(), i = 0; i < n; i++) + if (getShapeDraw(i) != NULL) + getShapeDraw(i)->draw(); } } #else @@ -348,9 +408,9 @@ void J3DShape::simpleDraw() const { loadPreDrawSetting(); J3DShapeMtx::setCurrentPipeline(getPipeline()); loadVtxArray(); - for (u16 n = mMtxGroupNum, i = 0; i < n; i++) { - if (mShapeDraw[i] != NULL) { - mShapeDraw[i]->draw(); + for (u16 n = getMtxGroupNum(), i = 0; i < n; i++) { + if (getShapeDraw(i) != NULL) { + getShapeDraw(i)->draw(); } } } @@ -366,7 +426,7 @@ void J3DShape::simpleDrawCache() const { mCurrentMtx.load(); loadVtxArray(); - for (u16 n = mMtxGroupNum, i = 0; i < n; i++) - if (mShapeDraw[i] != NULL) - mShapeDraw[i]->draw(); + for (u16 n = getMtxGroupNum(), i = 0; i < n; i++) + if (getShapeDraw(i) != NULL) + getShapeDraw(i)->draw(); } diff --git a/libs/JSystem/J3DGraphBase/J3DShapeDraw.cpp b/libs/JSystem/J3DGraphBase/J3DShapeDraw.cpp index befab13ce84..6da5f00bcd0 100644 --- a/libs/JSystem/J3DGraphBase/J3DShapeDraw.cpp +++ b/libs/JSystem/J3DGraphBase/J3DShapeDraw.cpp @@ -4,46 +4,85 @@ // #include "JSystem/J3DGraphBase/J3DShapeDraw.h" +#include "JSystem/JKernel/JKRHeap.h" #include "dol2asm.h" +#include "dolphin/os/OSCache.h" #include "dolphin/gx/GX.h" #include "dolphin/types.h" - -// -// Forward References: -// - -extern "C" void countVertex__12J3DShapeDrawFUl(); -extern "C" void addTexMtxIndexInDL__12J3DShapeDrawFUlUlUl(); -extern "C" void __ct__12J3DShapeDrawFPCUcUl(); -extern "C" void draw__12J3DShapeDrawCFv(); -extern "C" void __dt__12J3DShapeDrawFv(); +#include "MSL_C/MSL_Common/Src/string.h" // // External References: // -SECTION_INIT void memcpy(); +extern "C" void countVertex__12J3DShapeDrawFUl(); extern "C" void* __nwa__FUli(); extern "C" void __dl__FPv(); -extern "C" void DCStoreRange(); extern "C" void _savegpr_18(); extern "C" void _restgpr_18(); -// -// Declarations: -// - /* 80314924-80314974 30F264 0050+00 1/1 0/0 0/0 .text countVertex__12J3DShapeDrawFUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DShapeDraw::countVertex(u32 param_0) { - nofralloc -#include "asm/JSystem/J3DGraphBase/J3DShapeDraw/countVertex__12J3DShapeDrawFUl.s" +u32 J3DShapeDraw::countVertex(u32 stride) { + u32 count = 0; + u32 dlStart = (u32)getDisplayList(); + for (u8* dl = (u8*)dlStart; ((u32)dl - dlStart) < getDisplayListSize();) { + if (*dl != 0xA0 && *dl != 0x98) + break; + u16 vtxNum = *((u16*)(dl + 1)); + count += vtxNum; + dl += stride * vtxNum; + dl += 3; + } + return count; } -#pragma pop +#ifdef NONMATCHING /* 80314974-80314ABC 30F2B4 0148+00 0/0 1/1 0/0 .text addTexMtxIndexInDL__12J3DShapeDrawFUlUlUl */ +void J3DShapeDraw::addTexMtxIndexInDL(u32 stride, u32 attrOffs, u32 valueBase) { + u32 byteNum = countVertex(stride); + u32 newSize = ALIGN_NEXT(mDisplayListSize + byteNum, 0x20); + u8* newDLStart = new (0x20) u8[newSize]; + u8* oldDLStart = getDisplayList(); + u8* oldDL = oldDLStart; + u8* newDL = newDLStart; + for (; (oldDL - oldDLStart) < mDisplayListSize;) { + // Copy command + u8 h = *oldDL; + *newDL++ = h; + + if (h != 0xA0 && h != 0x98) + break; + + // Copy count + // regalloc (I suspect there's a way to shove this in a u16 temp without an mr) + u32 vtxNum = *((u16*)(oldDL + 1)); + *((u16*)newDL) = vtxNum; + newDL += 2; + + for (s32 i = 0; i < (u16)vtxNum; i++) { + // mul arg swap + u8* oldDLVtx = (&oldDL[stride * i + 3]); + u8 pnmtxidx = *oldDLVtx; + memcpy(newDL, oldDLVtx, attrOffs); + u8* newDL1 = &newDL[attrOffs]; + *newDL1++ = valueBase + pnmtxidx; + memcpy(newDL1, oldDLVtx + attrOffs, stride - attrOffs); + newDL = newDL1 + (stride - attrOffs); + } + + oldDL += stride * vtxNum; + oldDL += 3; + } + + u32 realSize = ALIGN_NEXT((u32)newDL - (u32)newDLStart, 0x20); + for (; (newDL - newDLStart) < newSize; newDL++) + *newDL = 0; + mDisplayListSize = realSize; + mDisplayList = newDLStart; + DCStoreRange(newDLStart, mDisplayListSize); +} +#else + #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -53,6 +92,8 @@ asm void J3DShapeDraw::addTexMtxIndexInDL(u32 param_0, u32 param_1, u32 param_2) } #pragma pop +#endif + /* 80314ABC-80314AD4 30F3FC 0018+00 0/0 1/1 0/0 .text __ct__12J3DShapeDrawFPCUcUl */ J3DShapeDraw::J3DShapeDraw(u8 const* displayList, u32 displayListSize) { mDisplayList = (void*)displayList;