summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJasper St. Pierre <jstpierre@mecheye.net>2022-04-24 01:25:34 -0700
committerJasper St. Pierre <jstpierre@mecheye.net>2022-04-24 01:57:11 -0700
commit9bee853ab45970c60019df74f4be1f282bb90bb4 (patch)
tree7cd642e8613edce4c82b6c05cc8a9ad9929cb30a
parentf1f9cc713d57df482fc8ea1ec6b73a928f088d21 (diff)
J3DShape / J3DShapeDraw: More OK
-rw-r--r--asm/JSystem/J3DGraphBase/J3DShape/addTexMtxIndexInDL__8J3DShapeF7_GXAttrUl.s73
-rw-r--r--asm/JSystem/J3DGraphBase/J3DShape/initialize__8J3DShapeFv.s29
-rw-r--r--asm/JSystem/J3DGraphBase/J3DShape/loadPreDrawSetting__8J3DShapeCFv.s40
-rw-r--r--asm/JSystem/J3DGraphBase/J3DShape/makeVtxArrayCmd__8J3DShapeFv.s201
-rw-r--r--asm/JSystem/J3DGraphBase/J3DShapeDraw/countVertex__12J3DShapeDrawFUl.s25
-rw-r--r--asm/JSystem/J3DGraphBase/J3DShapeMtx/loadMtxConcatView_NCPU__21J3DShapeMtxConcatViewCFiUs.s45
-rw-r--r--asm/JSystem/J3DGraphBase/J3DShapeMtx/loadMtxConcatView_PCPU__21J3DShapeMtxConcatViewCFiUs.s43
-rw-r--r--asm/JSystem/J3DGraphBase/J3DShapeMtx/loadMtxConcatView_PNCPU__21J3DShapeMtxConcatViewCFiUs.s48
-rw-r--r--asm/JSystem/J3DGraphBase/J3DShapeMtx/loadMtxConcatView_PNGP_LOD__21J3DShapeMtxConcatViewCFiUs.s53
-rw-r--r--asm/JSystem/J3DGraphBase/J3DShapeMtx/loadMtxConcatView_PNGP__21J3DShapeMtxConcatViewCFiUs.s42
-rw-r--r--include/JSystem/J3DGraphBase/J3DShape.h3
-rw-r--r--include/JSystem/J3DGraphBase/J3DShapeDraw.h5
-rw-r--r--include/JSystem/J3DGraphBase/J3DVertex.h14
-rw-r--r--include/dolphin/gx/GX.h14
-rw-r--r--libs/JSystem/J3DGraphBase/J3DShape.cpp210
-rw-r--r--libs/JSystem/J3DGraphBase/J3DShapeDraw.cpp87
16 files changed, 221 insertions, 711 deletions
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 aa96206cbd..0000000000
--- 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 fcf5c7a8c4..0000000000
--- 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 36e13e129b..0000000000
--- 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 57733281ac..0000000000
--- 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 3e4e937855..0000000000
--- 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 54c4a8fe11..0000000000
--- 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 764a7251f6..0000000000
--- 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 39c73b1543..0000000000
--- 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 7ec4b0758c..0000000000
--- 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 38e4331b9d..0000000000
--- 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 5bac7d8ddf..866dbe34e5 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 8caf151850..8ad82a0c3d 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 360e4a0cea..567a41ebe0 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 baceefa1e8..1951f2bd43 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 306362d494..154850d3e3 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);
-}
-#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"
+ for (u16 i = 0; i < getMtxGroupNum(); i++)
+ getShapeDraw(i)->addTexMtxIndexInDL(stride, attrOffs, (s32)valueBase);
}
-#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 befab13ce8..6da5f00bcd 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;