Merge pull request #193 from magcius/j3dsys

more J3D work
This commit is contained in:
TakaRikka 2022-04-26 23:28:35 -07:00 committed by GitHub
commit 07c5152e5a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
69 changed files with 916 additions and 2623 deletions

5
.gitignore vendored
View File

@ -27,4 +27,7 @@ docs/doxygen/
.vscode/
# Python
__pycache__/
__pycache__/
m2ctx.py
ctx.c

View File

@ -1,26 +0,0 @@
lbl_803127B0:
/* 803127B0 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 803127B4 7C 08 02 A6 */ mflr r0
/* 803127B8 90 01 00 14 */ stw r0, 0x14(r1)
/* 803127BC 93 E1 00 0C */ stw r31, 0xc(r1)
/* 803127C0 7C 7F 1B 79 */ or. r31, r3, r3
/* 803127C4 41 82 00 30 */ beq lbl_803127F4
/* 803127C8 3C 60 80 3D */ lis r3, __vt__13J3DDrawPacket@ha /* 0x803CD968@ha */
/* 803127CC 38 03 D9 68 */ addi r0, r3, __vt__13J3DDrawPacket@l /* 0x803CD968@l */
/* 803127D0 90 1F 00 00 */ stw r0, 0(r31)
/* 803127D4 41 82 00 10 */ beq lbl_803127E4
/* 803127D8 3C 60 80 3D */ lis r3, __vt__9J3DPacket@ha /* 0x803CD97C@ha */
/* 803127DC 38 03 D9 7C */ addi r0, r3, __vt__9J3DPacket@l /* 0x803CD97C@l */
/* 803127E0 90 1F 00 00 */ stw r0, 0(r31)
lbl_803127E4:
/* 803127E4 7C 80 07 35 */ extsh. r0, r4
/* 803127E8 40 81 00 0C */ ble lbl_803127F4
/* 803127EC 7F E3 FB 78 */ mr r3, r31
/* 803127F0 4B FB C5 4D */ bl __dl__FPv
lbl_803127F4:
/* 803127F4 7F E3 FB 78 */ mr r3, r31
/* 803127F8 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 803127FC 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80312800 7C 08 03 A6 */ mtlr r0
/* 80312804 38 21 00 10 */ addi r1, r1, 0x10
/* 80312808 4E 80 00 20 */ blr

View File

@ -1,40 +0,0 @@
lbl_8031280C:
/* 8031280C 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80312810 7C 08 02 A6 */ mflr r0
/* 80312814 90 01 00 14 */ stw r0, 0x14(r1)
/* 80312818 93 E1 00 0C */ stw r31, 0xc(r1)
/* 8031281C 93 C1 00 08 */ stw r30, 8(r1)
/* 80312820 7C 7E 1B 78 */ mr r30, r3
/* 80312824 7C 9F 23 78 */ mr r31, r4
/* 80312828 38 60 00 10 */ li r3, 0x10
/* 8031282C 4B FB C4 21 */ bl __nw__FUl
/* 80312830 28 03 00 00 */ cmplwi r3, 0
/* 80312834 41 82 00 18 */ beq lbl_8031284C
/* 80312838 38 00 00 00 */ li r0, 0
/* 8031283C 90 03 00 00 */ stw r0, 0(r3)
/* 80312840 90 03 00 04 */ stw r0, 4(r3)
/* 80312844 90 03 00 08 */ stw r0, 8(r3)
/* 80312848 90 03 00 0C */ stw r0, 0xc(r3)
lbl_8031284C:
/* 8031284C 90 7E 00 20 */ stw r3, 0x20(r30)
/* 80312850 80 7E 00 20 */ lwz r3, 0x20(r30)
/* 80312854 28 03 00 00 */ cmplwi r3, 0
/* 80312858 40 82 00 0C */ bne lbl_80312864
/* 8031285C 38 60 00 04 */ li r3, 4
/* 80312860 48 00 00 20 */ b lbl_80312880
lbl_80312864:
/* 80312864 7F E4 FB 78 */ mr r4, r31
/* 80312868 4B FF FC 21 */ bl newDisplayList__17J3DDisplayListObjFUl
/* 8031286C 2C 03 00 00 */ cmpwi r3, 0
/* 80312870 38 00 00 00 */ li r0, 0
/* 80312874 41 82 00 08 */ beq lbl_8031287C
/* 80312878 7C 60 1B 78 */ mr r0, r3
lbl_8031287C:
/* 8031287C 7C 03 03 78 */ mr r3, r0
lbl_80312880:
/* 80312880 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 80312884 83 C1 00 08 */ lwz r30, 8(r1)
/* 80312888 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8031288C 7C 08 03 A6 */ mtlr r0
/* 80312890 38 21 00 10 */ addi r1, r1, 0x10
/* 80312894 4E 80 00 20 */ blr

View File

@ -1,40 +0,0 @@
lbl_80312898:
/* 80312898 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8031289C 7C 08 02 A6 */ mflr r0
/* 803128A0 90 01 00 14 */ stw r0, 0x14(r1)
/* 803128A4 93 E1 00 0C */ stw r31, 0xc(r1)
/* 803128A8 93 C1 00 08 */ stw r30, 8(r1)
/* 803128AC 7C 7E 1B 78 */ mr r30, r3
/* 803128B0 7C 9F 23 78 */ mr r31, r4
/* 803128B4 38 60 00 10 */ li r3, 0x10
/* 803128B8 4B FB C3 95 */ bl __nw__FUl
/* 803128BC 28 03 00 00 */ cmplwi r3, 0
/* 803128C0 41 82 00 18 */ beq lbl_803128D8
/* 803128C4 38 00 00 00 */ li r0, 0
/* 803128C8 90 03 00 00 */ stw r0, 0(r3)
/* 803128CC 90 03 00 04 */ stw r0, 4(r3)
/* 803128D0 90 03 00 08 */ stw r0, 8(r3)
/* 803128D4 90 03 00 0C */ stw r0, 0xc(r3)
lbl_803128D8:
/* 803128D8 90 7E 00 20 */ stw r3, 0x20(r30)
/* 803128DC 80 7E 00 20 */ lwz r3, 0x20(r30)
/* 803128E0 28 03 00 00 */ cmplwi r3, 0
/* 803128E4 40 82 00 0C */ bne lbl_803128F0
/* 803128E8 38 60 00 04 */ li r3, 4
/* 803128EC 48 00 00 20 */ b lbl_8031290C
lbl_803128F0:
/* 803128F0 7F E4 FB 78 */ mr r4, r31
/* 803128F4 4B FF FC 15 */ bl newSingleDisplayList__17J3DDisplayListObjFUl
/* 803128F8 2C 03 00 00 */ cmpwi r3, 0
/* 803128FC 38 00 00 00 */ li r0, 0
/* 80312900 41 82 00 08 */ beq lbl_80312908
/* 80312904 7C 60 1B 78 */ mr r0, r3
lbl_80312908:
/* 80312908 7C 03 03 78 */ mr r3, r0
lbl_8031290C:
/* 8031290C 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 80312910 83 C1 00 08 */ lwz r30, 8(r1)
/* 80312914 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80312918 7C 08 03 A6 */ mtlr r0
/* 8031291C 38 21 00 10 */ addi r1, r1, 0x10
/* 80312920 4E 80 00 20 */ blr

View File

@ -1,17 +0,0 @@
lbl_80314EB0:
/* 80314EB0 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80314EB4 7C 08 02 A6 */ mflr r0
/* 80314EB8 90 01 00 14 */ stw r0, 0x14(r1)
/* 80314EBC 2C 03 00 19 */ cmpwi r3, 0x19
/* 80314EC0 38 A0 00 01 */ li r5, 1
/* 80314EC4 41 82 00 08 */ beq lbl_80314ECC
/* 80314EC8 38 A3 FF F7 */ addi r5, r3, -9
lbl_80314ECC:
/* 80314ECC 38 05 00 A0 */ addi r0, r5, 0xa0
/* 80314ED0 54 03 06 3E */ clrlwi r3, r0, 0x18
/* 80314ED4 54 84 00 7E */ clrlwi r4, r4, 1
/* 80314ED8 4B FF FF C1 */ bl J3DLoadCPCmd__FUcUl
/* 80314EDC 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80314EE0 7C 08 03 A6 */ mtlr r0
/* 80314EE4 38 21 00 10 */ addi r1, r1, 0x10
/* 80314EE8 4E 80 00 20 */ blr

View File

@ -1,7 +0,0 @@
lbl_80314E98:
/* 80314E98 38 00 00 08 */ li r0, 8
/* 80314E9C 3C A0 CC 01 */ lis r5, 0xCC01 /* 0xCC008000@ha */
/* 80314EA0 98 05 80 00 */ stb r0, 0x8000(r5) /* 0xCC008000@l */
/* 80314EA4 98 65 80 00 */ stb r3, -0x8000(r5)
/* 80314EA8 90 85 80 00 */ stw r4, -0x8000(r5)
/* 80314EAC 4E 80 00 20 */ blr

View File

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

View File

@ -1,67 +0,0 @@
lbl_80314CBC:
/* 80314CBC 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80314CC0 7C 08 02 A6 */ mflr r0
/* 80314CC4 90 01 00 14 */ stw r0, 0x14(r1)
/* 80314CC8 93 E1 00 0C */ stw r31, 0xc(r1)
/* 80314CCC 93 C1 00 08 */ stw r30, 8(r1)
/* 80314CD0 7C 7F 1B 78 */ mr r31, r3
/* 80314CD4 7C 9E 23 78 */ mr r30, r4
/* 80314CD8 38 60 FF FF */ li r3, -1
/* 80314CDC 80 9F 00 30 */ lwz r4, 0x30(r31)
/* 80314CE0 38 A0 00 00 */ li r5, 0
/* 80314CE4 48 00 00 18 */ b lbl_80314CFC
lbl_80314CE8:
/* 80314CE8 2C 00 00 00 */ cmpwi r0, 0
/* 80314CEC 40 82 00 08 */ bne lbl_80314CF4
/* 80314CF0 38 60 00 00 */ li r3, 0
lbl_80314CF4:
/* 80314CF4 38 A5 00 01 */ addi r5, r5, 1
/* 80314CF8 38 84 00 08 */ addi r4, r4, 8
lbl_80314CFC:
/* 80314CFC 80 04 00 00 */ lwz r0, 0(r4)
/* 80314D00 2C 00 00 FF */ cmpwi r0, 0xff
/* 80314D04 40 82 FF E4 */ bne lbl_80314CE8
/* 80314D08 2C 03 FF FF */ cmpwi r3, -1
/* 80314D0C 41 82 00 84 */ beq lbl_80314D90
/* 80314D10 38 05 00 02 */ addi r0, r5, 2
/* 80314D14 54 03 18 38 */ slwi r3, r0, 3
/* 80314D18 4B FB 9F AD */ bl __nwa__FUl
/* 80314D1C 38 C0 00 00 */ li r6, 0
/* 80314D20 80 BF 00 30 */ lwz r5, 0x30(r31)
/* 80314D24 7C 67 1B 78 */ mr r7, r3
/* 80314D28 38 80 00 01 */ li r4, 1
/* 80314D2C 48 00 00 3C */ b lbl_80314D68
lbl_80314D30:
/* 80314D30 7C 1E 00 00 */ cmpw r30, r0
/* 80314D34 40 80 00 1C */ bge lbl_80314D50
/* 80314D38 54 C0 06 3F */ clrlwi. r0, r6, 0x18
/* 80314D3C 40 82 00 14 */ bne lbl_80314D50
/* 80314D40 93 C7 00 00 */ stw r30, 0(r7)
/* 80314D44 90 87 00 04 */ stw r4, 4(r7)
/* 80314D48 38 C0 00 01 */ li r6, 1
/* 80314D4C 38 E7 00 08 */ addi r7, r7, 8
lbl_80314D50:
/* 80314D50 80 05 00 00 */ lwz r0, 0(r5)
/* 80314D54 90 07 00 00 */ stw r0, 0(r7)
/* 80314D58 80 05 00 04 */ lwz r0, 4(r5)
/* 80314D5C 90 07 00 04 */ stw r0, 4(r7)
/* 80314D60 38 E7 00 08 */ addi r7, r7, 8
/* 80314D64 38 A5 00 08 */ addi r5, r5, 8
lbl_80314D68:
/* 80314D68 80 05 00 00 */ lwz r0, 0(r5)
/* 80314D6C 2C 00 00 FF */ cmpwi r0, 0xff
/* 80314D70 40 82 FF C0 */ bne lbl_80314D30
/* 80314D74 38 00 00 FF */ li r0, 0xff
/* 80314D78 90 07 00 00 */ stw r0, 0(r7)
/* 80314D7C 38 00 00 00 */ li r0, 0
/* 80314D80 90 07 00 04 */ stw r0, 4(r7)
/* 80314D84 90 7F 00 30 */ stw r3, 0x30(r31)
/* 80314D88 7F E3 FB 78 */ mr r3, r31
/* 80314D8C 48 00 04 D5 */ bl makeVcdVatCmd__8J3DShapeFv
lbl_80314D90:
/* 80314D90 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 80314D94 83 C1 00 08 */ lwz r30, 8(r1)
/* 80314D98 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80314D9C 7C 08 03 A6 */ mtlr r0
/* 80314DA0 38 21 00 10 */ addi r1, r1, 0x10
/* 80314DA4 4E 80 00 20 */ blr

View File

@ -1,35 +0,0 @@
lbl_80314DA8:
/* 80314DA8 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80314DAC 7C 08 02 A6 */ mflr r0
/* 80314DB0 90 01 00 24 */ stw r0, 0x24(r1)
/* 80314DB4 39 61 00 20 */ addi r11, r1, 0x20
/* 80314DB8 48 04 D4 1D */ bl _savegpr_27
/* 80314DBC 7C 7B 1B 78 */ mr r27, r3
/* 80314DC0 7C 9C 23 78 */ mr r28, r4
/* 80314DC4 7C BD 2B 78 */ mr r29, r5
/* 80314DC8 7C DE 33 78 */ mr r30, r6
/* 80314DCC 3B E0 00 00 */ li r31, 0
/* 80314DD0 48 00 00 30 */ b lbl_80314E00
lbl_80314DD4:
/* 80314DD4 80 7B 00 38 */ lwz r3, 0x38(r27)
/* 80314DD8 57 E0 13 BA */ rlwinm r0, r31, 2, 0xe, 0x1d
/* 80314DDC 7C 63 00 2E */ lwzx r3, r3, r0
/* 80314DE0 7F 84 E3 78 */ mr r4, r28
/* 80314DE4 7F A5 EB 78 */ mr r5, r29
/* 80314DE8 7F C6 F3 78 */ mr r6, r30
/* 80314DEC 81 83 00 00 */ lwz r12, 0(r3)
/* 80314DF0 81 8C 00 1C */ lwz r12, 0x1c(r12)
/* 80314DF4 7D 89 03 A6 */ mtctr r12
/* 80314DF8 4E 80 04 21 */ bctrl
/* 80314DFC 3B FF 00 01 */ addi r31, r31, 1
lbl_80314E00:
/* 80314E00 57 E3 04 3E */ clrlwi r3, r31, 0x10
/* 80314E04 A0 1B 00 0A */ lhz r0, 0xa(r27)
/* 80314E08 7C 03 00 40 */ cmplw r3, r0
/* 80314E0C 41 80 FF C8 */ blt lbl_80314DD4
/* 80314E10 39 61 00 20 */ addi r11, r1, 0x20
/* 80314E14 48 04 D4 0D */ bl _restgpr_27
/* 80314E18 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80314E1C 7C 08 03 A6 */ mtlr r0
/* 80314E20 38 21 00 20 */ addi r1, r1, 0x20
/* 80314E24 4E 80 00 20 */ blr

View File

@ -1,31 +0,0 @@
lbl_80314E28:
/* 80314E28 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80314E2C 7C 08 02 A6 */ mflr r0
/* 80314E30 90 01 00 24 */ stw r0, 0x24(r1)
/* 80314E34 39 61 00 20 */ addi r11, r1, 0x20
/* 80314E38 48 04 D3 A1 */ bl _savegpr_28
/* 80314E3C 3B A0 00 00 */ li r29, 0
/* 80314E40 3B 80 00 00 */ li r28, 0
/* 80314E44 83 C3 00 38 */ lwz r30, 0x38(r3)
/* 80314E48 A3 E3 00 0A */ lhz r31, 0xa(r3)
/* 80314E4C 48 00 00 24 */ b lbl_80314E70
lbl_80314E50:
/* 80314E50 57 80 13 BA */ rlwinm r0, r28, 2, 0xe, 0x1d
/* 80314E54 7C 7E 00 2E */ lwzx r3, r30, r0
/* 80314E58 81 83 00 00 */ lwz r12, 0(r3)
/* 80314E5C 81 8C 00 10 */ lwz r12, 0x10(r12)
/* 80314E60 7D 89 03 A6 */ mtctr r12
/* 80314E64 4E 80 04 21 */ bctrl
/* 80314E68 7F BD 1A 14 */ add r29, r29, r3
/* 80314E6C 3B 9C 00 01 */ addi r28, r28, 1
lbl_80314E70:
/* 80314E70 57 80 04 3E */ clrlwi r0, r28, 0x10
/* 80314E74 7C 00 F8 40 */ cmplw r0, r31
/* 80314E78 41 80 FF D8 */ blt lbl_80314E50
/* 80314E7C 7F A3 EB 78 */ mr r3, r29
/* 80314E80 39 61 00 20 */ addi r11, r1, 0x20
/* 80314E84 48 04 D3 A1 */ bl _restgpr_28
/* 80314E88 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80314E8C 7C 08 03 A6 */ mtlr r0
/* 80314E90 38 21 00 20 */ addi r1, r1, 0x20
/* 80314E94 4E 80 00 20 */ blr

View File

@ -1,19 +0,0 @@
lbl_803155E0:
/* 803155E0 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 803155E4 7C 08 02 A6 */ mflr r0
/* 803155E8 90 01 00 14 */ stw r0, 0x14(r1)
/* 803155EC 93 E1 00 0C */ stw r31, 0xc(r1)
/* 803155F0 7C 7F 1B 78 */ mr r31, r3
/* 803155F4 38 00 00 00 */ li r0, 0
/* 803155F8 90 0D 90 50 */ stw r0, sOldVcdVatCmd__8J3DShape(r13)
/* 803155FC 4B FF FD 05 */ bl loadPreDrawSetting__8J3DShapeCFv
/* 80315600 7F E3 FB 78 */ mr r3, r31
/* 80315604 81 9F 00 00 */ lwz r12, 0(r31)
/* 80315608 81 8C 00 0C */ lwz r12, 0xc(r12)
/* 8031560C 7D 89 03 A6 */ mtctr r12
/* 80315610 4E 80 04 21 */ bctrl
/* 80315614 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 80315618 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8031561C 7C 08 03 A6 */ mtlr r0
/* 80315620 38 21 00 10 */ addi r1, r1, 0x10
/* 80315624 4E 80 00 20 */ blr

View File

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

View File

@ -1,18 +0,0 @@
lbl_80314F5C:
/* 80314F5C 80 84 00 2C */ lwz r4, 0x2c(r4)
/* 80314F60 80 63 00 2C */ lwz r3, 0x2c(r3)
/* 80314F64 38 00 00 C0 */ li r0, 0xc0
/* 80314F68 7C 09 03 A6 */ mtctr r0
lbl_80314F6C:
/* 80314F6C 88 A4 00 00 */ lbz r5, 0(r4)
/* 80314F70 88 03 00 00 */ lbz r0, 0(r3)
/* 80314F74 7C 05 00 40 */ cmplw r5, r0
/* 80314F78 41 82 00 0C */ beq lbl_80314F84
/* 80314F7C 38 60 00 00 */ li r3, 0
/* 80314F80 4E 80 00 20 */ blr
lbl_80314F84:
/* 80314F84 38 63 00 01 */ addi r3, r3, 1
/* 80314F88 38 84 00 01 */ addi r4, r4, 1
/* 80314F8C 42 00 FF E0 */ bdnz lbl_80314F6C
/* 80314F90 38 60 00 01 */ li r3, 1
/* 80314F94 4E 80 00 20 */ blr

View File

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

View File

@ -1,42 +0,0 @@
lbl_80315260:
/* 80315260 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80315264 7C 08 02 A6 */ mflr r0
/* 80315268 90 01 00 24 */ stw r0, 0x24(r1)
/* 8031526C 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 80315270 7C 7F 1B 78 */ mr r31, r3
/* 80315274 88 0D 90 4C */ lbz r0, data_804515CC(r13)
/* 80315278 7C 00 07 75 */ extsb. r0, r0
/* 8031527C 40 82 00 14 */ bne lbl_80315290
/* 80315280 48 02 84 75 */ bl OSDisableInterrupts
/* 80315284 90 6D 90 48 */ stw r3, sInterruptFlag(r13)
/* 80315288 38 00 00 01 */ li r0, 1
/* 8031528C 98 0D 90 4C */ stb r0, data_804515CC(r13)
lbl_80315290:
/* 80315290 48 02 BA 35 */ bl OSDisableScheduler
/* 80315294 38 61 00 08 */ addi r3, r1, 8
/* 80315298 80 9F 00 2C */ lwz r4, 0x2c(r31)
/* 8031529C 38 A0 00 C0 */ li r5, 0xc0
/* 803152A0 48 04 BC F9 */ bl GDInitGDLObj
/* 803152A4 38 01 00 08 */ addi r0, r1, 8
/* 803152A8 90 0D 94 00 */ stw r0, __GDCurrentDL(r13)
/* 803152AC 80 7F 00 30 */ lwz r3, 0x30(r31)
/* 803152B0 48 04 BE 55 */ bl GDSetVtxDescv
/* 803152B4 7F E3 FB 78 */ mr r3, r31
/* 803152B8 4B FF FC E1 */ bl makeVtxArrayCmd__8J3DShapeFv
/* 803152BC 80 7F 00 4C */ lwz r3, 0x4c(r31)
/* 803152C0 80 83 00 14 */ lwz r4, 0x14(r3)
/* 803152C4 38 60 00 00 */ li r3, 0
/* 803152C8 88 BF 00 34 */ lbz r5, 0x34(r31)
/* 803152CC 4B FF 88 39 */ bl J3DGDSetVtxAttrFmtv__F9_GXVtxFmtPC17_GXVtxAttrFmtListb
/* 803152D0 48 04 BD 0D */ bl GDPadCurr32
/* 803152D4 48 04 BC DD */ bl GDFlushCurrToMem
/* 803152D8 38 00 00 00 */ li r0, 0
/* 803152DC 90 0D 94 00 */ stw r0, __GDCurrentDL(r13)
/* 803152E0 48 02 BA 25 */ bl OSEnableScheduler
/* 803152E4 80 6D 90 48 */ lwz r3, sInterruptFlag(r13)
/* 803152E8 48 02 84 35 */ bl OSRestoreInterrupts
/* 803152EC 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 803152F0 80 01 00 24 */ lwz r0, 0x24(r1)
/* 803152F4 7C 08 03 A6 */ mtlr r0
/* 803152F8 38 21 00 20 */ addi r1, r1, 0x20
/* 803152FC 4E 80 00 20 */ blr

View File

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

View File

@ -1,67 +0,0 @@
lbl_803156AC:
/* 803156AC 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 803156B0 7C 08 02 A6 */ mflr r0
/* 803156B4 90 01 00 24 */ stw r0, 0x24(r1)
/* 803156B8 39 61 00 20 */ addi r11, r1, 0x20
/* 803156BC 48 04 CB 21 */ bl _savegpr_29
/* 803156C0 7C 7E 1B 78 */ mr r30, r3
/* 803156C4 80 0D 90 50 */ lwz r0, sOldVcdVatCmd__8J3DShape(r13)
/* 803156C8 80 63 00 2C */ lwz r3, 0x2c(r3)
/* 803156CC 7C 00 18 40 */ cmplw r0, r3
/* 803156D0 41 82 00 14 */ beq lbl_803156E4
/* 803156D4 38 80 00 C0 */ li r4, 0xc0
/* 803156D8 48 04 A8 19 */ bl GXCallDisplayList
/* 803156DC 80 1E 00 2C */ lwz r0, 0x2c(r30)
/* 803156E0 90 0D 90 50 */ stw r0, sOldVcdVatCmd__8J3DShape(r13)
lbl_803156E4:
/* 803156E4 88 0D 90 54 */ lbz r0, data_804515D4(r13)
/* 803156E8 28 00 00 00 */ cmplwi r0, 0
/* 803156EC 41 82 00 60 */ beq lbl_8031574C
/* 803156F0 88 1E 00 48 */ lbz r0, 0x48(r30)
/* 803156F4 28 00 00 00 */ cmplwi r0, 0
/* 803156F8 40 82 00 54 */ bne lbl_8031574C
/* 803156FC 80 BE 00 40 */ lwz r5, 0x40(r30)
/* 80315700 38 80 00 08 */ li r4, 8
/* 80315704 3C 60 CC 01 */ lis r3, 0xCC01 /* 0xCC008000@ha */
/* 80315708 98 83 80 00 */ stb r4, 0x8000(r3) /* 0xCC008000@l */
/* 8031570C 38 00 00 30 */ li r0, 0x30
/* 80315710 98 03 80 00 */ stb r0, -0x8000(r3)
/* 80315714 90 A3 80 00 */ stw r5, -0x8000(r3)
/* 80315718 80 DE 00 44 */ lwz r6, 0x44(r30)
/* 8031571C 98 83 80 00 */ stb r4, -0x8000(r3)
/* 80315720 38 00 00 40 */ li r0, 0x40
/* 80315724 98 03 80 00 */ stb r0, -0x8000(r3)
/* 80315728 90 C3 80 00 */ stw r6, -0x8000(r3)
/* 8031572C 38 00 00 10 */ li r0, 0x10
/* 80315730 98 03 80 00 */ stb r0, -0x8000(r3)
/* 80315734 38 00 00 01 */ li r0, 1
/* 80315738 B0 03 80 00 */ sth r0, -0x8000(r3)
/* 8031573C 38 00 10 18 */ li r0, 0x1018
/* 80315740 B0 03 80 00 */ sth r0, -0x8000(r3)
/* 80315744 90 A3 80 00 */ stw r5, -0x8000(r3)
/* 80315748 90 C3 80 00 */ stw r6, -0x8000(r3)
lbl_8031574C:
/* 8031574C 7F C3 F3 78 */ mr r3, r30
/* 80315750 4B FF F7 9D */ bl loadVtxArray__8J3DShapeCFv
/* 80315754 A3 FE 00 0A */ lhz r31, 0xa(r30)
/* 80315758 3B A0 00 00 */ li r29, 0
/* 8031575C 83 DE 00 3C */ lwz r30, 0x3c(r30)
/* 80315760 48 00 00 1C */ b lbl_8031577C
lbl_80315764:
/* 80315764 57 A0 13 BA */ rlwinm r0, r29, 2, 0xe, 0x1d
/* 80315768 7C 7E 00 2E */ lwzx r3, r30, r0
/* 8031576C 28 03 00 00 */ cmplwi r3, 0
/* 80315770 41 82 00 08 */ beq lbl_80315778
/* 80315774 4B FF F3 61 */ bl draw__12J3DShapeDrawCFv
lbl_80315778:
/* 80315778 3B BD 00 01 */ addi r29, r29, 1
lbl_8031577C:
/* 8031577C 57 A0 04 3E */ clrlwi r0, r29, 0x10
/* 80315780 7C 00 F8 40 */ cmplw r0, r31
/* 80315784 41 80 FF E0 */ blt lbl_80315764
/* 80315788 39 61 00 20 */ addi r11, r1, 0x20
/* 8031578C 48 04 CA 9D */ bl _restgpr_29
/* 80315790 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80315794 7C 08 03 A6 */ mtlr r0
/* 80315798 38 21 00 20 */ addi r1, r1, 0x20
/* 8031579C 4E 80 00 20 */ blr

View File

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

View File

@ -1,4 +0,0 @@
lbl_803147E0:
/* 803147E0 3C 60 53 4D */ lis r3, 0x534D /* 0x534D5458@ha */
/* 803147E4 38 63 54 58 */ addi r3, r3, 0x5458 /* 0x534D5458@l */
/* 803147E8 4E 80 00 20 */ blr

View File

@ -1,4 +0,0 @@
lbl_8031470C:
/* 8031470C 3C 60 53 4D */ lis r3, 0x534D /* 0x534D4D4C@ha */
/* 80314710 38 63 4D 4C */ addi r3, r3, 0x4D4C /* 0x534D4D4C@l */
/* 80314714 4E 80 00 20 */ blr

View File

@ -1,4 +0,0 @@
lbl_8031478C:
/* 8031478C 3C 60 53 4D */ lis r3, 0x534D /* 0x534D4356@ha */
/* 80314790 38 63 43 56 */ addi r3, r3, 0x4356 /* 0x534D4356@l */
/* 80314794 4E 80 00 20 */ blr

View File

@ -1,4 +0,0 @@
lbl_80314688:
/* 80314688 3C 60 53 4D */ lis r3, 0x534D /* 0x534D4D43@ha */
/* 8031468C 38 63 4D 43 */ addi r3, r3, 0x4D43 /* 0x534D4D43@l */
/* 80314690 4E 80 00 20 */ blr

View File

@ -1,4 +0,0 @@
lbl_80314610:
/* 80314610 3C 60 53 4D */ lis r3, 0x534D /* 0x534D4242@ha */
/* 80314614 38 63 42 42 */ addi r3, r3, 0x4242 /* 0x534D4242@l */
/* 80314618 4E 80 00 20 */ blr

View File

@ -1,4 +0,0 @@
lbl_8031458C:
/* 8031458C 3C 60 53 4D */ lis r3, 0x534D /* 0x534D5942@ha */
/* 80314590 38 63 59 42 */ addi r3, r3, 0x5942 /* 0x534D5942@l */
/* 80314594 4E 80 00 20 */ blr

View File

@ -1,3 +0,0 @@
lbl_8031459C:
/* 8031459C A0 63 00 04 */ lhz r3, 4(r3)
/* 803145A0 4E 80 00 20 */ blr

View File

@ -1,5 +0,0 @@
lbl_80314720:
/* 80314720 80 63 00 0C */ lwz r3, 0xc(r3)
/* 80314724 54 80 0B FC */ rlwinm r0, r4, 1, 0xf, 0x1e
/* 80314728 7C 63 02 2E */ lhzx r3, r3, r0
/* 8031472C 4E 80 00 20 */ blr

View File

@ -1,5 +0,0 @@
lbl_8031469C:
/* 8031469C 80 63 00 0C */ lwz r3, 0xc(r3)
/* 803146A0 54 80 0B FC */ rlwinm r0, r4, 1, 0xf, 0x1e
/* 803146A4 7C 63 02 2E */ lhzx r3, r3, r0
/* 803146A8 4E 80 00 20 */ blr

View File

@ -1,3 +0,0 @@
lbl_80314718:
/* 80314718 A0 63 00 08 */ lhz r3, 8(r3)
/* 8031471C 4E 80 00 20 */ blr

View File

@ -1,3 +0,0 @@
lbl_80314694:
/* 80314694 A0 63 00 08 */ lhz r3, 8(r3)
/* 80314698 4E 80 00 20 */ blr

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,20 +0,0 @@
lbl_80313188:
/* 80313188 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8031318C 7C 08 02 A6 */ mflr r0
/* 80313190 90 01 00 14 */ stw r0, 0x14(r1)
/* 80313194 93 E1 00 0C */ stw r31, 0xc(r1)
/* 80313198 7C 9F 23 78 */ mr r31, r4
/* 8031319C 3C 60 80 43 */ lis r3, j3dSys@ha /* 0x80434AC8@ha */
/* 803131A0 38 63 4A C8 */ addi r3, r3, j3dSys@l /* 0x80434AC8@l */
/* 803131A4 4B FF CD 1D */ bl loadPosMtxIndx__6J3DSysCFiUs
/* 803131A8 3C 60 80 43 */ lis r3, j3dSys@ha /* 0x80434AC8@ha */
/* 803131AC 38 63 4A C8 */ addi r3, r3, j3dSys@l /* 0x80434AC8@l */
/* 803131B0 80 63 00 40 */ lwz r3, 0x40(r3)
/* 803131B4 80 63 00 30 */ lwz r3, 0x30(r3)
/* 803131B8 1C 9F 00 03 */ mulli r4, r31, 3
/* 803131BC 4B FF C9 A5 */ bl J3DFifoLoadNrmMtxImm__FPA4_fUl
/* 803131C0 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 803131C4 80 01 00 14 */ lwz r0, 0x14(r1)
/* 803131C8 7C 08 03 A6 */ mtlr r0
/* 803131CC 38 21 00 10 */ addi r1, r1, 0x10
/* 803131D0 4E 80 00 20 */ blr

View File

@ -1,25 +0,0 @@
lbl_80313128:
/* 80313128 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8031312C 7C 08 02 A6 */ mflr r0
/* 80313130 90 01 00 14 */ stw r0, 0x14(r1)
/* 80313134 93 E1 00 0C */ stw r31, 0xc(r1)
/* 80313138 93 C1 00 08 */ stw r30, 8(r1)
/* 8031313C 7C 9E 23 78 */ mr r30, r4
/* 80313140 7C BF 2B 78 */ mr r31, r5
/* 80313144 3C 60 80 43 */ lis r3, j3dSys@ha /* 0x80434AC8@ha */
/* 80313148 38 63 4A C8 */ addi r3, r3, j3dSys@l /* 0x80434AC8@l */
/* 8031314C 80 63 00 40 */ lwz r3, 0x40(r3)
/* 80313150 80 63 00 30 */ lwz r3, 0x30(r3)
/* 80313154 1C 9E 00 03 */ mulli r4, r30, 3
/* 80313158 4B FF C9 89 */ bl J3DFifoLoadPosMtxImm__FPA4_fUl
/* 8031315C 3C 60 80 43 */ lis r3, j3dSys@ha /* 0x80434AC8@ha */
/* 80313160 38 63 4A C8 */ addi r3, r3, j3dSys@l /* 0x80434AC8@l */
/* 80313164 7F C4 F3 78 */ mr r4, r30
/* 80313168 7F E5 FB 78 */ mr r5, r31
/* 8031316C 4B FF CD 79 */ bl loadNrmMtxIndx__6J3DSysCFiUs
/* 80313170 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 80313174 83 C1 00 08 */ lwz r30, 8(r1)
/* 80313178 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8031317C 7C 08 03 A6 */ mtlr r0
/* 80313180 38 21 00 10 */ addi r1, r1, 0x10
/* 80313184 4E 80 00 20 */ blr

View File

@ -1,23 +0,0 @@
lbl_803131D4:
/* 803131D4 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 803131D8 7C 08 02 A6 */ mflr r0
/* 803131DC 90 01 00 14 */ stw r0, 0x14(r1)
/* 803131E0 93 E1 00 0C */ stw r31, 0xc(r1)
/* 803131E4 93 C1 00 08 */ stw r30, 8(r1)
/* 803131E8 3C 60 80 43 */ lis r3, j3dSys@ha /* 0x80434AC8@ha */
/* 803131EC 3B E3 4A C8 */ addi r31, r3, j3dSys@l /* 0x80434AC8@l */
/* 803131F0 80 7F 00 40 */ lwz r3, 0x40(r31)
/* 803131F4 80 63 00 30 */ lwz r3, 0x30(r3)
/* 803131F8 1F C4 00 03 */ mulli r30, r4, 3
/* 803131FC 7F C4 F3 78 */ mr r4, r30
/* 80313200 4B FF C8 E1 */ bl J3DFifoLoadPosMtxImm__FPA4_fUl
/* 80313204 80 7F 00 40 */ lwz r3, 0x40(r31)
/* 80313208 80 63 00 30 */ lwz r3, 0x30(r3)
/* 8031320C 7F C4 F3 78 */ mr r4, r30
/* 80313210 4B FF C9 51 */ bl J3DFifoLoadNrmMtxImm__FPA4_fUl
/* 80313214 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 80313218 83 C1 00 08 */ lwz r30, 8(r1)
/* 8031321C 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80313220 7C 08 03 A6 */ mtlr r0
/* 80313224 38 21 00 10 */ addi r1, r1, 0x10
/* 80313228 4E 80 00 20 */ blr

View File

@ -1,18 +0,0 @@
lbl_803130E4:
/* 803130E4 38 00 00 20 */ li r0, 0x20
/* 803130E8 3C C0 CC 01 */ lis r6, 0xCC01 /* 0xCC008000@ha */
/* 803130EC 98 06 80 00 */ stb r0, 0x8000(r6) /* 0xCC008000@l */
/* 803130F0 B0 A6 80 00 */ sth r5, -0x8000(r6)
/* 803130F4 1C 04 00 0C */ mulli r0, r4, 0xc
/* 803130F8 54 00 04 3E */ clrlwi r0, r0, 0x10
/* 803130FC 60 00 B0 00 */ ori r0, r0, 0xb000
/* 80313100 B0 06 80 00 */ sth r0, -0x8000(r6)
/* 80313104 38 00 00 28 */ li r0, 0x28
/* 80313108 98 06 80 00 */ stb r0, -0x8000(r6)
/* 8031310C B0 A6 80 00 */ sth r5, -0x8000(r6)
/* 80313110 1C 64 00 09 */ mulli r3, r4, 9
/* 80313114 38 03 04 00 */ addi r0, r3, 0x400
/* 80313118 54 00 04 3E */ clrlwi r0, r0, 0x10
/* 8031311C 60 00 80 00 */ ori r0, r0, 0x8000
/* 80313120 B0 06 80 00 */ sth r0, -0x8000(r6)
/* 80313124 4E 80 00 20 */ blr

View File

@ -1,57 +0,0 @@
lbl_8030FDE8:
/* 8030FDE8 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8030FDEC 7C 08 02 A6 */ mflr r0
/* 8030FDF0 90 01 00 14 */ stw r0, 0x14(r1)
/* 8030FDF4 93 E1 00 0C */ stw r31, 0xc(r1)
/* 8030FDF8 7C 7F 1B 78 */ mr r31, r3
/* 8030FDFC 48 01 43 99 */ bl makeTexCoordTable__Fv
/* 8030FE00 48 01 45 15 */ bl makeTevSwapTable__Fv
/* 8030FE04 48 01 44 39 */ bl makeAlphaCmpTable__Fv
/* 8030FE08 48 01 44 A1 */ bl makeZModeTable__Fv
/* 8030FE0C 38 00 00 00 */ li r0, 0
/* 8030FE10 90 1F 00 34 */ stw r0, 0x34(r31)
/* 8030FE14 7F E3 FB 78 */ mr r3, r31
/* 8030FE18 48 03 66 6D */ bl PSMTXIdentity
/* 8030FE1C 38 00 00 01 */ li r0, 1
/* 8030FE20 90 1F 00 50 */ stw r0, 0x50(r31)
/* 8030FE24 38 80 00 00 */ li r4, 0
/* 8030FE28 90 9F 00 54 */ stw r4, 0x54(r31)
/* 8030FE2C 90 9F 00 38 */ stw r4, 0x38(r31)
/* 8030FE30 90 9F 00 44 */ stw r4, 0x44(r31)
/* 8030FE34 7C 83 23 78 */ mr r3, r4
/* 8030FE38 38 00 00 02 */ li r0, 2
/* 8030FE3C 7C 09 03 A6 */ mtctr r0
lbl_8030FE40:
/* 8030FE40 38 03 00 48 */ addi r0, r3, 0x48
/* 8030FE44 7C 9F 01 2E */ stwx r4, r31, r0
/* 8030FE48 38 63 00 04 */ addi r3, r3, 4
/* 8030FE4C 42 00 FF F4 */ bdnz lbl_8030FE40
/* 8030FE50 38 C0 00 00 */ li r6, 0
/* 8030FE54 90 DF 00 58 */ stw r6, 0x58(r31)
/* 8030FE58 90 DF 00 3C */ stw r6, 0x3c(r31)
/* 8030FE5C 90 DF 00 40 */ stw r6, 0x40(r31)
/* 8030FE60 90 DF 01 04 */ stw r6, 0x104(r31)
/* 8030FE64 90 DF 01 08 */ stw r6, 0x108(r31)
/* 8030FE68 90 DF 01 0C */ stw r6, 0x10c(r31)
/* 8030FE6C 90 DF 01 10 */ stw r6, 0x110(r31)
/* 8030FE70 90 DF 01 14 */ stw r6, 0x114(r31)
/* 8030FE74 38 60 00 00 */ li r3, 0
/* 8030FE78 38 A0 00 01 */ li r5, 1
/* 8030FE7C 3C 80 80 43 */ lis r4, sTexCoordScaleTable__6J3DSys@ha /* 0x80434C2C@ha */
/* 8030FE80 38 84 4C 2C */ addi r4, r4, sTexCoordScaleTable__6J3DSys@l /* 0x80434C2C@l */
/* 8030FE84 38 00 00 08 */ li r0, 8
/* 8030FE88 7C 09 03 A6 */ mtctr r0
lbl_8030FE8C:
/* 8030FE8C 7C E4 1A 14 */ add r7, r4, r3
/* 8030FE90 B0 A7 00 00 */ sth r5, 0(r7)
/* 8030FE94 B0 A7 00 02 */ sth r5, 2(r7)
/* 8030FE98 B0 C7 00 04 */ sth r6, 4(r7)
/* 8030FE9C B0 C7 00 06 */ sth r6, 6(r7)
/* 8030FEA0 38 63 00 08 */ addi r3, r3, 8
/* 8030FEA4 42 00 FF E8 */ bdnz lbl_8030FE8C
/* 8030FEA8 7F E3 FB 78 */ mr r3, r31
/* 8030FEAC 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 8030FEB0 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8030FEB4 7C 08 03 A6 */ mtlr r0
/* 8030FEB8 38 21 00 10 */ addi r1, r1, 0x10
/* 8030FEBC 4E 80 00 20 */ blr

View File

@ -1,435 +0,0 @@
lbl_803100BC:
/* 803100BC 94 21 FF B0 */ stwu r1, -0x50(r1)
/* 803100C0 7C 08 02 A6 */ mflr r0
/* 803100C4 90 01 00 54 */ stw r0, 0x54(r1)
/* 803100C8 39 61 00 50 */ addi r11, r1, 0x50
/* 803100CC 48 05 21 0D */ bl _savegpr_28
/* 803100D0 7C 7F 1B 78 */ mr r31, r3
/* 803100D4 48 04 BA 99 */ bl GXInvalidateVtxCache
/* 803100D8 38 60 00 00 */ li r3, 0
/* 803100DC 48 05 02 11 */ bl GXSetCurrentMtx
/* 803100E0 38 60 00 02 */ li r3, 2
/* 803100E4 48 04 C8 A1 */ bl GXSetCullMode
/* 803100E8 38 60 00 00 */ li r3, 0
/* 803100EC 48 04 C8 C1 */ bl GXSetCoPlanar
/* 803100F0 38 60 00 00 */ li r3, 0
/* 803100F4 48 05 04 DD */ bl GXSetClipMode
/* 803100F8 38 60 00 01 */ li r3, 1
/* 803100FC 48 04 FB 49 */ bl GXSetColorUpdate
/* 80310100 38 60 00 01 */ li r3, 1
/* 80310104 48 04 FC D5 */ bl GXSetDither
/* 80310108 38 60 00 01 */ li r3, 1
/* 8031010C 38 80 00 04 */ li r4, 4
/* 80310110 38 A0 00 05 */ li r5, 5
/* 80310114 38 C0 00 05 */ li r6, 5
/* 80310118 48 04 FA D9 */ bl GXSetBlendMode
/* 8031011C 38 60 00 07 */ li r3, 7
/* 80310120 38 80 00 00 */ li r4, 0
/* 80310124 38 A0 00 00 */ li r5, 0
/* 80310128 38 C0 00 07 */ li r6, 7
/* 8031012C 38 E0 00 00 */ li r7, 0
/* 80310130 48 04 F4 F5 */ bl GXSetAlphaCompare
/* 80310134 38 60 00 01 */ li r3, 1
/* 80310138 38 80 00 03 */ li r4, 3
/* 8031013C 38 A0 00 01 */ li r5, 1
/* 80310140 48 04 FB 5D */ bl GXSetZMode
/* 80310144 38 60 00 01 */ li r3, 1
/* 80310148 48 04 FB 89 */ bl GXSetZCompLoc
/* 8031014C 38 60 00 00 */ li r3, 0
/* 80310150 38 80 00 09 */ li r4, 9
/* 80310154 38 A0 00 01 */ li r5, 1
/* 80310158 38 C0 00 04 */ li r6, 4
/* 8031015C 38 E0 00 00 */ li r7, 0
/* 80310160 48 04 B4 65 */ bl GXSetVtxAttrFmt
/* 80310164 38 60 00 00 */ li r3, 0
/* 80310168 38 80 00 0A */ li r4, 0xa
/* 8031016C 38 A0 00 00 */ li r5, 0
/* 80310170 38 C0 00 04 */ li r6, 4
/* 80310174 38 E0 00 00 */ li r7, 0
/* 80310178 48 04 B4 4D */ bl GXSetVtxAttrFmt
/* 8031017C 38 60 00 00 */ li r3, 0
/* 80310180 38 80 00 0B */ li r4, 0xb
/* 80310184 38 A0 00 01 */ li r5, 1
/* 80310188 38 C0 00 05 */ li r6, 5
/* 8031018C 38 E0 00 00 */ li r7, 0
/* 80310190 48 04 B4 35 */ bl GXSetVtxAttrFmt
/* 80310194 38 60 00 00 */ li r3, 0
/* 80310198 38 80 00 0C */ li r4, 0xc
/* 8031019C 38 A0 00 01 */ li r5, 1
/* 803101A0 38 C0 00 05 */ li r6, 5
/* 803101A4 38 E0 00 00 */ li r7, 0
/* 803101A8 48 04 B4 1D */ bl GXSetVtxAttrFmt
/* 803101AC 38 60 00 00 */ li r3, 0
/* 803101B0 38 80 00 0D */ li r4, 0xd
/* 803101B4 38 A0 00 01 */ li r5, 1
/* 803101B8 38 C0 00 03 */ li r6, 3
/* 803101BC 38 E0 00 07 */ li r7, 7
/* 803101C0 48 04 B4 05 */ bl GXSetVtxAttrFmt
/* 803101C4 38 60 00 00 */ li r3, 0
/* 803101C8 38 80 00 0E */ li r4, 0xe
/* 803101CC 38 A0 00 01 */ li r5, 1
/* 803101D0 38 C0 00 03 */ li r6, 3
/* 803101D4 38 E0 00 07 */ li r7, 7
/* 803101D8 48 04 B3 ED */ bl GXSetVtxAttrFmt
/* 803101DC 38 60 00 00 */ li r3, 0
/* 803101E0 38 80 00 0F */ li r4, 0xf
/* 803101E4 38 A0 00 01 */ li r5, 1
/* 803101E8 38 C0 00 03 */ li r6, 3
/* 803101EC 38 E0 00 07 */ li r7, 7
/* 803101F0 48 04 B3 D5 */ bl GXSetVtxAttrFmt
/* 803101F4 38 60 00 00 */ li r3, 0
/* 803101F8 38 80 00 10 */ li r4, 0x10
/* 803101FC 38 A0 00 01 */ li r5, 1
/* 80310200 38 C0 00 03 */ li r6, 3
/* 80310204 38 E0 00 07 */ li r7, 7
/* 80310208 48 04 B3 BD */ bl GXSetVtxAttrFmt
/* 8031020C 38 60 00 00 */ li r3, 0
/* 80310210 38 80 00 11 */ li r4, 0x11
/* 80310214 38 A0 00 01 */ li r5, 1
/* 80310218 38 C0 00 03 */ li r6, 3
/* 8031021C 38 E0 00 07 */ li r7, 7
/* 80310220 48 04 B3 A5 */ bl GXSetVtxAttrFmt
/* 80310224 38 60 00 00 */ li r3, 0
/* 80310228 38 80 00 12 */ li r4, 0x12
/* 8031022C 38 A0 00 01 */ li r5, 1
/* 80310230 38 C0 00 03 */ li r6, 3
/* 80310234 38 E0 00 07 */ li r7, 7
/* 80310238 48 04 B3 8D */ bl GXSetVtxAttrFmt
/* 8031023C 38 60 00 00 */ li r3, 0
/* 80310240 38 80 00 13 */ li r4, 0x13
/* 80310244 38 A0 00 01 */ li r5, 1
/* 80310248 38 C0 00 03 */ li r6, 3
/* 8031024C 38 E0 00 07 */ li r7, 7
/* 80310250 48 04 B3 75 */ bl GXSetVtxAttrFmt
/* 80310254 38 60 00 00 */ li r3, 0
/* 80310258 38 80 00 14 */ li r4, 0x14
/* 8031025C 38 A0 00 01 */ li r5, 1
/* 80310260 38 C0 00 03 */ li r6, 3
/* 80310264 38 E0 00 07 */ li r7, 7
/* 80310268 48 04 B3 5D */ bl GXSetVtxAttrFmt
/* 8031026C 38 60 00 00 */ li r3, 0
/* 80310270 48 04 EE 65 */ bl GXSetNumIndStages
/* 80310274 7F E3 FB 78 */ mr r3, r31
/* 80310278 48 00 07 21 */ bl reinitTexture__6J3DSysFv
/* 8031027C 38 60 00 00 */ li r3, 0
/* 80310280 38 80 00 FF */ li r4, 0xff
/* 80310284 38 A0 00 FF */ li r5, 0xff
/* 80310288 38 C0 00 FF */ li r6, 0xff
/* 8031028C 48 04 F4 69 */ bl GXSetTevOrder
/* 80310290 38 60 00 01 */ li r3, 1
/* 80310294 38 80 00 FF */ li r4, 0xff
/* 80310298 38 A0 00 FF */ li r5, 0xff
/* 8031029C 38 C0 00 FF */ li r6, 0xff
/* 803102A0 48 04 F4 55 */ bl GXSetTevOrder
/* 803102A4 38 60 00 02 */ li r3, 2
/* 803102A8 38 80 00 FF */ li r4, 0xff
/* 803102AC 38 A0 00 FF */ li r5, 0xff
/* 803102B0 38 C0 00 FF */ li r6, 0xff
/* 803102B4 48 04 F4 41 */ bl GXSetTevOrder
/* 803102B8 38 60 00 03 */ li r3, 3
/* 803102BC 38 80 00 FF */ li r4, 0xff
/* 803102C0 38 A0 00 FF */ li r5, 0xff
/* 803102C4 38 C0 00 FF */ li r6, 0xff
/* 803102C8 48 04 F4 2D */ bl GXSetTevOrder
/* 803102CC 38 60 00 04 */ li r3, 4
/* 803102D0 38 80 00 FF */ li r4, 0xff
/* 803102D4 38 A0 00 FF */ li r5, 0xff
/* 803102D8 38 C0 00 FF */ li r6, 0xff
/* 803102DC 48 04 F4 19 */ bl GXSetTevOrder
/* 803102E0 38 60 00 05 */ li r3, 5
/* 803102E4 38 80 00 FF */ li r4, 0xff
/* 803102E8 38 A0 00 FF */ li r5, 0xff
/* 803102EC 38 C0 00 FF */ li r6, 0xff
/* 803102F0 48 04 F4 05 */ bl GXSetTevOrder
/* 803102F4 38 60 00 06 */ li r3, 6
/* 803102F8 38 80 00 FF */ li r4, 0xff
/* 803102FC 38 A0 00 FF */ li r5, 0xff
/* 80310300 38 C0 00 FF */ li r6, 0xff
/* 80310304 48 04 F3 F1 */ bl GXSetTevOrder
/* 80310308 38 60 00 07 */ li r3, 7
/* 8031030C 38 80 00 FF */ li r4, 0xff
/* 80310310 38 A0 00 FF */ li r5, 0xff
/* 80310314 38 C0 00 FF */ li r6, 0xff
/* 80310318 48 04 F3 DD */ bl GXSetTevOrder
/* 8031031C 38 60 00 08 */ li r3, 8
/* 80310320 38 80 00 FF */ li r4, 0xff
/* 80310324 38 A0 00 FF */ li r5, 0xff
/* 80310328 38 C0 00 FF */ li r6, 0xff
/* 8031032C 48 04 F3 C9 */ bl GXSetTevOrder
/* 80310330 38 60 00 09 */ li r3, 9
/* 80310334 38 80 00 FF */ li r4, 0xff
/* 80310338 38 A0 00 FF */ li r5, 0xff
/* 8031033C 38 C0 00 FF */ li r6, 0xff
/* 80310340 48 04 F3 B5 */ bl GXSetTevOrder
/* 80310344 38 60 00 0A */ li r3, 0xa
/* 80310348 38 80 00 FF */ li r4, 0xff
/* 8031034C 38 A0 00 FF */ li r5, 0xff
/* 80310350 38 C0 00 FF */ li r6, 0xff
/* 80310354 48 04 F3 A1 */ bl GXSetTevOrder
/* 80310358 38 60 00 0B */ li r3, 0xb
/* 8031035C 38 80 00 FF */ li r4, 0xff
/* 80310360 38 A0 00 FF */ li r5, 0xff
/* 80310364 38 C0 00 FF */ li r6, 0xff
/* 80310368 48 04 F3 8D */ bl GXSetTevOrder
/* 8031036C 38 60 00 0C */ li r3, 0xc
/* 80310370 38 80 00 FF */ li r4, 0xff
/* 80310374 38 A0 00 FF */ li r5, 0xff
/* 80310378 38 C0 00 FF */ li r6, 0xff
/* 8031037C 48 04 F3 79 */ bl GXSetTevOrder
/* 80310380 38 60 00 0D */ li r3, 0xd
/* 80310384 38 80 00 FF */ li r4, 0xff
/* 80310388 38 A0 00 FF */ li r5, 0xff
/* 8031038C 38 C0 00 FF */ li r6, 0xff
/* 80310390 48 04 F3 65 */ bl GXSetTevOrder
/* 80310394 38 60 00 0E */ li r3, 0xe
/* 80310398 38 80 00 FF */ li r4, 0xff
/* 8031039C 38 A0 00 FF */ li r5, 0xff
/* 803103A0 38 C0 00 FF */ li r6, 0xff
/* 803103A4 48 04 F3 51 */ bl GXSetTevOrder
/* 803103A8 38 60 00 0F */ li r3, 0xf
/* 803103AC 38 80 00 FF */ li r4, 0xff
/* 803103B0 38 A0 00 FF */ li r5, 0xff
/* 803103B4 38 C0 00 FF */ li r6, 0xff
/* 803103B8 48 04 F3 3D */ bl GXSetTevOrder
/* 803103BC 3B 80 00 00 */ li r28, 0
/* 803103C0 3B C0 00 00 */ li r30, 0
/* 803103C4 3C 80 80 3D */ lis r4, j3dIdentityMtx@ha /* 0x803CD8B0@ha */
/* 803103C8 3B A4 D8 B0 */ addi r29, r4, j3dIdentityMtx@l /* 0x803CD8B0@l */
lbl_803103CC:
/* 803103CC 7F A3 EB 78 */ mr r3, r29
/* 803103D0 38 9E 00 1E */ addi r4, r30, 0x1e
/* 803103D4 38 A0 00 00 */ li r5, 0
/* 803103D8 48 04 FF 49 */ bl GXLoadTexMtxImm
/* 803103DC 3B 9C 00 01 */ addi r28, r28, 1
/* 803103E0 28 1C 00 0A */ cmplwi r28, 0xa
/* 803103E4 3B DE 00 03 */ addi r30, r30, 3
/* 803103E8 41 80 FF E4 */ blt lbl_803103CC
/* 803103EC 38 C1 00 20 */ addi r6, r1, 0x20
/* 803103F0 3C 80 80 3A */ lis r4, lit_737@ha /* 0x803A1E18@ha */
/* 803103F4 38 84 1E 18 */ addi r4, r4, lit_737@l /* 0x803A1E18@l */
/* 803103F8 38 A4 FF FC */ addi r5, r4, -4
/* 803103FC 38 00 00 03 */ li r0, 3
/* 80310400 7C 09 03 A6 */ mtctr r0
lbl_80310404:
/* 80310404 80 85 00 04 */ lwz r4, 4(r5)
/* 80310408 84 05 00 08 */ lwzu r0, 8(r5)
/* 8031040C 90 86 00 04 */ stw r4, 4(r6)
/* 80310410 94 06 00 08 */ stwu r0, 8(r6)
/* 80310414 42 00 FF F0 */ bdnz lbl_80310404
/* 80310418 3B 80 00 00 */ li r28, 0
/* 8031041C 48 00 00 1C */ b lbl_80310438
lbl_80310420:
/* 80310420 57 84 06 3E */ clrlwi r4, r28, 0x18
/* 80310424 38 64 00 01 */ addi r3, r4, 1
/* 80310428 38 81 00 24 */ addi r4, r1, 0x24
/* 8031042C 38 A0 00 01 */ li r5, 1
/* 80310430 48 04 E8 FD */ bl GXSetIndTexMtx
/* 80310434 3B 9C 00 01 */ addi r28, r28, 1
lbl_80310438:
/* 80310438 57 80 06 3E */ clrlwi r0, r28, 0x18
/* 8031043C 28 00 00 03 */ cmplwi r0, 3
/* 80310440 41 80 FF E0 */ blt lbl_80310420
/* 80310444 80 02 C9 C0 */ lwz r0, j3dDefaultColInfo(r2)
/* 80310448 90 01 00 18 */ stw r0, 0x18(r1)
/* 8031044C 38 60 00 04 */ li r3, 4
/* 80310450 38 81 00 18 */ addi r4, r1, 0x18
/* 80310454 48 04 D5 F5 */ bl GXSetChanMatColor
/* 80310458 80 02 C9 C0 */ lwz r0, j3dDefaultColInfo(r2)
/* 8031045C 90 01 00 14 */ stw r0, 0x14(r1)
/* 80310460 38 60 00 05 */ li r3, 5
/* 80310464 38 81 00 14 */ addi r4, r1, 0x14
/* 80310468 48 04 D5 E1 */ bl GXSetChanMatColor
/* 8031046C 88 62 C9 C8 */ lbz r3, data_804563C8(r2)
/* 80310470 48 04 D6 C1 */ bl GXSetNumChans
/* 80310474 38 60 00 01 */ li r3, 1
/* 80310478 48 04 B9 85 */ bl GXSetNumTexGens
/* 8031047C 38 60 00 01 */ li r3, 1
/* 80310480 48 04 F4 11 */ bl GXSetNumTevStages
/* 80310484 38 60 00 04 */ li r3, 4
/* 80310488 38 80 00 00 */ li r4, 0
/* 8031048C 38 A0 00 00 */ li r5, 0
/* 80310490 38 C0 00 00 */ li r6, 0
/* 80310494 38 E0 00 00 */ li r7, 0
/* 80310498 39 00 00 02 */ li r8, 2
/* 8031049C 39 20 00 02 */ li r9, 2
/* 803104A0 48 04 D6 CD */ bl GXSetChanCtrl
/* 803104A4 38 60 00 05 */ li r3, 5
/* 803104A8 38 80 00 00 */ li r4, 0
/* 803104AC 38 A0 00 00 */ li r5, 0
/* 803104B0 38 C0 00 00 */ li r6, 0
/* 803104B4 38 E0 00 00 */ li r7, 0
/* 803104B8 39 00 00 02 */ li r8, 2
/* 803104BC 39 20 00 02 */ li r9, 2
/* 803104C0 48 04 D6 AD */ bl GXSetChanCtrl
/* 803104C4 3B 80 00 00 */ li r28, 0
/* 803104C8 3C 80 80 3A */ lis r4, j3dDefaultTexCoordInfo@ha /* 0x803A1EFC@ha */
/* 803104CC 3B A4 1E FC */ addi r29, r4, j3dDefaultTexCoordInfo@l /* 0x803A1EFC@l */
/* 803104D0 48 00 00 2C */ b lbl_803104FC
lbl_803104D4:
/* 803104D4 57 83 06 3E */ clrlwi r3, r28, 0x18
/* 803104D8 57 80 15 BA */ rlwinm r0, r28, 2, 0x16, 0x1d
/* 803104DC 7C DD 02 14 */ add r6, r29, r0
/* 803104E0 88 86 00 00 */ lbz r4, 0(r6)
/* 803104E4 88 A6 00 01 */ lbz r5, 1(r6)
/* 803104E8 88 C6 00 02 */ lbz r6, 2(r6)
/* 803104EC 38 E0 00 00 */ li r7, 0
/* 803104F0 39 00 00 7D */ li r8, 0x7d
/* 803104F4 48 04 B6 89 */ bl GXSetTexCoordGen2
/* 803104F8 3B 9C 00 01 */ addi r28, r28, 1
lbl_803104FC:
/* 803104FC 57 80 06 3E */ clrlwi r0, r28, 0x18
/* 80310500 28 00 00 08 */ cmplwi r0, 8
/* 80310504 41 80 FF D0 */ blt lbl_803104D4
/* 80310508 3B 80 00 00 */ li r28, 0
/* 8031050C 48 00 00 18 */ b lbl_80310524
lbl_80310510:
/* 80310510 57 83 06 3E */ clrlwi r3, r28, 0x18
/* 80310514 38 80 00 00 */ li r4, 0
/* 80310518 38 A0 00 00 */ li r5, 0
/* 8031051C 48 04 E9 89 */ bl GXSetIndTexCoordScale
/* 80310520 3B 9C 00 01 */ addi r28, r28, 1
lbl_80310524:
/* 80310524 57 80 06 3E */ clrlwi r0, r28, 0x18
/* 80310528 28 00 00 04 */ cmplwi r0, 4
/* 8031052C 41 80 FF E4 */ blt lbl_80310510
/* 80310530 3B 80 00 00 */ li r28, 0
/* 80310534 83 A2 C9 E0 */ lwz r29, j3dDefaultTevKColor(r2)
/* 80310538 48 00 00 18 */ b lbl_80310550
lbl_8031053C:
/* 8031053C 93 A1 00 10 */ stw r29, 0x10(r1)
/* 80310540 57 83 06 3E */ clrlwi r3, r28, 0x18
/* 80310544 38 81 00 10 */ addi r4, r1, 0x10
/* 80310548 48 04 EE F9 */ bl GXSetTevKColor
/* 8031054C 3B 9C 00 01 */ addi r28, r28, 1
lbl_80310550:
/* 80310550 57 80 06 3E */ clrlwi r0, r28, 0x18
/* 80310554 28 00 00 04 */ cmplwi r0, 4
/* 80310558 41 80 FF E4 */ blt lbl_8031053C
/* 8031055C 3B 80 00 00 */ li r28, 0
/* 80310560 83 C2 C9 D4 */ lwz r30, j3dDefaultTevColor(r2)
/* 80310564 83 A2 C9 D8 */ lwz r29, data_804563D8(r2)
/* 80310568 48 00 00 1C */ b lbl_80310584
lbl_8031056C:
/* 8031056C 93 C1 00 1C */ stw r30, 0x1c(r1)
/* 80310570 93 A1 00 20 */ stw r29, 0x20(r1)
/* 80310574 57 83 06 3E */ clrlwi r3, r28, 0x18
/* 80310578 38 81 00 1C */ addi r4, r1, 0x1c
/* 8031057C 48 04 EE 61 */ bl GXSetTevColorS10
/* 80310580 3B 9C 00 01 */ addi r28, r28, 1
lbl_80310584:
/* 80310584 57 80 06 3E */ clrlwi r0, r28, 0x18
/* 80310588 28 00 00 04 */ cmplwi r0, 4
/* 8031058C 41 80 FF E0 */ blt lbl_8031056C
/* 80310590 3B 80 00 00 */ li r28, 0
/* 80310594 48 00 00 74 */ b lbl_80310608
lbl_80310598:
/* 80310598 57 9D 06 3E */ clrlwi r29, r28, 0x18
/* 8031059C 7F A3 EB 78 */ mr r3, r29
/* 803105A0 38 80 00 0A */ li r4, 0xa
/* 803105A4 38 A0 00 0F */ li r5, 0xf
/* 803105A8 38 C0 00 0F */ li r6, 0xf
/* 803105AC 38 E0 00 0F */ li r7, 0xf
/* 803105B0 48 04 EC 75 */ bl GXSetTevColorIn
/* 803105B4 7F A3 EB 78 */ mr r3, r29
/* 803105B8 38 80 00 00 */ li r4, 0
/* 803105BC 38 A0 00 00 */ li r5, 0
/* 803105C0 38 C0 00 00 */ li r6, 0
/* 803105C4 38 E0 00 01 */ li r7, 1
/* 803105C8 39 00 00 00 */ li r8, 0
/* 803105CC 48 04 EC E1 */ bl GXSetTevColorOp
/* 803105D0 7F A3 EB 78 */ mr r3, r29
/* 803105D4 38 80 00 05 */ li r4, 5
/* 803105D8 38 A0 00 07 */ li r5, 7
/* 803105DC 38 C0 00 07 */ li r6, 7
/* 803105E0 38 E0 00 07 */ li r7, 7
/* 803105E4 48 04 EC 85 */ bl GXSetTevAlphaIn
/* 803105E8 7F A3 EB 78 */ mr r3, r29
/* 803105EC 38 80 00 00 */ li r4, 0
/* 803105F0 38 A0 00 00 */ li r5, 0
/* 803105F4 38 C0 00 00 */ li r6, 0
/* 803105F8 38 E0 00 01 */ li r7, 1
/* 803105FC 39 00 00 00 */ li r8, 0
/* 80310600 48 04 ED 15 */ bl GXSetTevAlphaOp
/* 80310604 3B 9C 00 01 */ addi r28, r28, 1
lbl_80310608:
/* 80310608 57 80 06 3E */ clrlwi r0, r28, 0x18
/* 8031060C 28 00 00 10 */ cmplwi r0, 0x10
/* 80310610 41 80 FF 88 */ blt lbl_80310598
/* 80310614 3B 80 00 00 */ li r28, 0
/* 80310618 48 00 00 18 */ b lbl_80310630
lbl_8031061C:
/* 8031061C 57 83 06 3E */ clrlwi r3, r28, 0x18
/* 80310620 38 80 00 00 */ li r4, 0
/* 80310624 38 A0 00 00 */ li r5, 0
/* 80310628 48 04 EF 35 */ bl GXSetTevSwapMode
/* 8031062C 3B 9C 00 01 */ addi r28, r28, 1
lbl_80310630:
/* 80310630 57 80 06 3E */ clrlwi r0, r28, 0x18
/* 80310634 28 00 00 10 */ cmplwi r0, 0x10
/* 80310638 41 80 FF E4 */ blt lbl_8031061C
/* 8031063C 38 60 00 00 */ li r3, 0
/* 80310640 38 80 00 00 */ li r4, 0
/* 80310644 38 A0 00 01 */ li r5, 1
/* 80310648 38 C0 00 02 */ li r6, 2
/* 8031064C 38 E0 00 03 */ li r7, 3
/* 80310650 48 04 EF 55 */ bl GXSetTevSwapModeTable
/* 80310654 38 60 00 01 */ li r3, 1
/* 80310658 38 80 00 00 */ li r4, 0
/* 8031065C 38 A0 00 00 */ li r5, 0
/* 80310660 38 C0 00 00 */ li r6, 0
/* 80310664 38 E0 00 03 */ li r7, 3
/* 80310668 48 04 EF 3D */ bl GXSetTevSwapModeTable
/* 8031066C 38 60 00 02 */ li r3, 2
/* 80310670 38 80 00 01 */ li r4, 1
/* 80310674 38 A0 00 01 */ li r5, 1
/* 80310678 38 C0 00 01 */ li r6, 1
/* 8031067C 38 E0 00 03 */ li r7, 3
/* 80310680 48 04 EF 25 */ bl GXSetTevSwapModeTable
/* 80310684 38 60 00 03 */ li r3, 3
/* 80310688 38 80 00 02 */ li r4, 2
/* 8031068C 38 A0 00 02 */ li r5, 2
/* 80310690 38 C0 00 02 */ li r6, 2
/* 80310694 38 E0 00 03 */ li r7, 3
/* 80310698 48 04 EF 0D */ bl GXSetTevSwapModeTable
/* 8031069C 3B 80 00 00 */ li r28, 0
/* 803106A0 7F 9D E3 78 */ mr r29, r28
/* 803106A4 7F 9E E3 78 */ mr r30, r28
/* 803106A8 48 00 00 34 */ b lbl_803106DC
lbl_803106AC:
/* 803106AC 93 A1 00 08 */ stw r29, 8(r1)
/* 803106B0 93 C1 00 0C */ stw r30, 0xc(r1)
/* 803106B4 57 83 06 3E */ clrlwi r3, r28, 0x18
/* 803106B8 38 80 00 00 */ li r4, 0
/* 803106BC 38 A0 00 00 */ li r5, 0
/* 803106C0 38 C0 00 00 */ li r6, 0
/* 803106C4 38 E0 00 00 */ li r7, 0
/* 803106C8 39 00 00 00 */ li r8, 0
/* 803106CC 39 20 00 00 */ li r9, 0
/* 803106D0 39 40 00 00 */ li r10, 0
/* 803106D4 48 04 E5 ED */ bl GXSetTevIndirect
/* 803106D8 3B 9C 00 01 */ addi r28, r28, 1
lbl_803106DC:
/* 803106DC 57 80 06 3E */ clrlwi r0, r28, 0x18
/* 803106E0 28 00 00 10 */ cmplwi r0, 0x10
/* 803106E4 41 80 FF C8 */ blt lbl_803106AC
/* 803106E8 38 60 00 04 */ li r3, 4
/* 803106EC 64 63 00 04 */ oris r3, r3, 4
/* 803106F0 7C 72 E3 A6 */ mtspr 0x392, r3
/* 803106F4 38 60 00 05 */ li r3, 5
/* 803106F8 64 63 00 05 */ oris r3, r3, 5
/* 803106FC 7C 73 E3 A6 */ mtspr 0x393, r3
/* 80310700 38 60 00 06 */ li r3, 6
/* 80310704 64 63 00 06 */ oris r3, r3, 6
/* 80310708 7C 74 E3 A6 */ mtspr 0x394, r3
/* 8031070C 38 60 00 07 */ li r3, 7
/* 80310710 64 63 00 07 */ oris r3, r3, 7
/* 80310714 7C 75 E3 A6 */ mtspr 0x395, r3
/* 80310718 7F E3 FB 78 */ mr r3, r31
/* 8031071C 38 80 00 00 */ li r4, 0
/* 80310720 4B FF F7 ED */ bl setTexCacheRegion__6J3DSysF15_GXTexCacheSize
/* 80310724 39 61 00 50 */ addi r11, r1, 0x50
/* 80310728 48 05 1A FD */ bl _restgpr_28
/* 8031072C 80 01 00 54 */ lwz r0, 0x54(r1)
/* 80310730 7C 08 03 A6 */ mtlr r0
/* 80310734 38 21 00 50 */ addi r1, r1, 0x50
/* 80310738 4E 80 00 20 */ blr

View File

@ -1,11 +0,0 @@
lbl_8030FEE4:
/* 8030FEE4 38 00 00 28 */ li r0, 0x28
/* 8030FEE8 3C C0 CC 01 */ lis r6, 0xCC01 /* 0xCC008000@ha */
/* 8030FEEC 98 06 80 00 */ stb r0, 0x8000(r6) /* 0xCC008000@l */
/* 8030FEF0 B0 A6 80 00 */ sth r5, -0x8000(r6)
/* 8030FEF4 1C 64 00 09 */ mulli r3, r4, 9
/* 8030FEF8 38 03 04 00 */ addi r0, r3, 0x400
/* 8030FEFC 54 00 04 3E */ clrlwi r0, r0, 0x10
/* 8030FF00 60 00 80 00 */ ori r0, r0, 0x8000
/* 8030FF04 B0 06 80 00 */ sth r0, -0x8000(r6)
/* 8030FF08 4E 80 00 20 */ blr

View File

@ -1,10 +0,0 @@
lbl_8030FEC0:
/* 8030FEC0 38 00 00 20 */ li r0, 0x20
/* 8030FEC4 3C 60 CC 01 */ lis r3, 0xCC01 /* 0xCC008000@ha */
/* 8030FEC8 98 03 80 00 */ stb r0, 0x8000(r3) /* 0xCC008000@l */
/* 8030FECC B0 A3 80 00 */ sth r5, -0x8000(r3)
/* 8030FED0 1C 04 00 0C */ mulli r0, r4, 0xc
/* 8030FED4 54 00 04 3E */ clrlwi r0, r0, 0x10
/* 8030FED8 60 00 B0 00 */ ori r0, r0, 0xb000
/* 8030FEDC B0 03 80 00 */ sth r0, -0x8000(r3)
/* 8030FEE0 4E 80 00 20 */ blr

View File

@ -1,117 +0,0 @@
lbl_8030FF0C:
/* 8030FF0C 94 21 FF B0 */ stwu r1, -0x50(r1)
/* 8030FF10 7C 08 02 A6 */ mflr r0
/* 8030FF14 90 01 00 54 */ stw r0, 0x54(r1)
/* 8030FF18 39 61 00 50 */ addi r11, r1, 0x50
/* 8030FF1C 48 05 22 B1 */ bl _savegpr_25
/* 8030FF20 7C 7C 1B 78 */ mr r28, r3
/* 8030FF24 7C 9D 23 78 */ mr r29, r4
/* 8030FF28 3C 60 80 3A */ lis r3, lit_695@ha /* 0x803A1DF8@ha */
/* 8030FF2C 38 83 1D F8 */ addi r4, r3, lit_695@l /* 0x803A1DF8@l */
/* 8030FF30 80 64 00 00 */ lwz r3, 0(r4)
/* 8030FF34 80 04 00 04 */ lwz r0, 4(r4)
/* 8030FF38 90 61 00 18 */ stw r3, 0x18(r1)
/* 8030FF3C 90 01 00 1C */ stw r0, 0x1c(r1)
/* 8030FF40 80 64 00 08 */ lwz r3, 8(r4)
/* 8030FF44 80 04 00 0C */ lwz r0, 0xc(r4)
/* 8030FF48 90 61 00 20 */ stw r3, 0x20(r1)
/* 8030FF4C 90 01 00 24 */ stw r0, 0x24(r1)
/* 8030FF50 3C 60 80 3A */ lis r3, lit_696@ha /* 0x803A1E08@ha */
/* 8030FF54 38 83 1E 08 */ addi r4, r3, lit_696@l /* 0x803A1E08@l */
/* 8030FF58 80 64 00 00 */ lwz r3, 0(r4)
/* 8030FF5C 80 04 00 04 */ lwz r0, 4(r4)
/* 8030FF60 90 61 00 08 */ stw r3, 8(r1)
/* 8030FF64 90 01 00 0C */ stw r0, 0xc(r1)
/* 8030FF68 80 64 00 08 */ lwz r3, 8(r4)
/* 8030FF6C 80 04 00 0C */ lwz r0, 0xc(r4)
/* 8030FF70 90 61 00 10 */ stw r3, 0x10(r1)
/* 8030FF74 90 01 00 14 */ stw r0, 0x14(r1)
/* 8030FF78 57 BF 10 3A */ slwi r31, r29, 2
/* 8030FF7C 38 61 00 08 */ addi r3, r1, 8
/* 8030FF80 7F C3 F8 2E */ lwzx r30, r3, r31
/* 8030FF84 93 DC 00 60 */ stw r30, 0x60(r28)
/* 8030FF88 80 1C 00 34 */ lwz r0, 0x34(r28)
/* 8030FF8C 54 00 00 01 */ rlwinm. r0, r0, 0, 0, 0
/* 8030FF90 41 82 00 B4 */ beq lbl_80310044
/* 8030FF94 3B 20 00 00 */ li r25, 0
/* 8030FF98 3B 60 00 00 */ li r27, 0
/* 8030FF9C 3B 41 00 18 */ addi r26, r1, 0x18
/* 8030FFA0 48 00 00 98 */ b lbl_80310038
lbl_8030FFA4:
/* 8030FFA4 57 20 07 FF */ clrlwi. r0, r25, 0x1f
/* 8030FFA8 41 82 00 48 */ beq lbl_8030FFF0
/* 8030FFAC 7C 1A F8 2E */ lwzx r0, r26, r31
/* 8030FFB0 7C F9 01 D6 */ mullw r7, r25, r0
/* 8030FFB4 38 7B 00 64 */ addi r3, r27, 0x64
/* 8030FFB8 7C 7C 1A 14 */ add r3, r28, r3
/* 8030FFBC 38 80 00 00 */ li r4, 0
/* 8030FFC0 3C A7 00 08 */ addis r5, r7, 8
/* 8030FFC4 7F A6 EB 78 */ mr r6, r29
/* 8030FFC8 7F A8 EB 78 */ mr r8, r29
/* 8030FFCC 48 04 E5 6D */ bl GXInitTexCacheRegion
/* 8030FFD0 7C 1A F8 2E */ lwzx r0, r26, r31
/* 8030FFD4 7C D9 01 D6 */ mullw r6, r25, r0
/* 8030FFD8 7F 23 CB 78 */ mr r3, r25
/* 8030FFDC 3C 86 00 08 */ addis r4, r6, 8
/* 8030FFE0 7F A5 EB 78 */ mr r5, r29
/* 8030FFE4 7F A7 EB 78 */ mr r7, r29
/* 8030FFE8 4B FF FD 81 */ bl J3DFifoLoadTexCached__F11_GXTexMapIDUl15_GXTexCacheSizeUl15_GXTexCacheSize
/* 8030FFEC 48 00 00 44 */ b lbl_80310030
lbl_8030FFF0:
/* 8030FFF0 7C 1A F8 2E */ lwzx r0, r26, r31
/* 8030FFF4 7C B9 01 D6 */ mullw r5, r25, r0
/* 8030FFF8 38 7B 00 64 */ addi r3, r27, 0x64
/* 8030FFFC 7C 7C 1A 14 */ add r3, r28, r3
/* 80310000 38 80 00 00 */ li r4, 0
/* 80310004 7F A6 EB 78 */ mr r6, r29
/* 80310008 3C E5 00 08 */ addis r7, r5, 8
/* 8031000C 7F A8 EB 78 */ mr r8, r29
/* 80310010 48 04 E5 29 */ bl GXInitTexCacheRegion
/* 80310014 7C 1A F8 2E */ lwzx r0, r26, r31
/* 80310018 7C 99 01 D6 */ mullw r4, r25, r0
/* 8031001C 7F 23 CB 78 */ mr r3, r25
/* 80310020 7F A5 EB 78 */ mr r5, r29
/* 80310024 3C C4 00 08 */ addis r6, r4, 8
/* 80310028 7F A7 EB 78 */ mr r7, r29
/* 8031002C 4B FF FD 3D */ bl J3DFifoLoadTexCached__F11_GXTexMapIDUl15_GXTexCacheSizeUl15_GXTexCacheSize
lbl_80310030:
/* 80310030 3B 39 00 01 */ addi r25, r25, 1
/* 80310034 3B 7B 00 10 */ addi r27, r27, 0x10
lbl_80310038:
/* 80310038 7C 19 F0 40 */ cmplw r25, r30
/* 8031003C 41 80 FF 68 */ blt lbl_8030FFA4
/* 80310040 48 00 00 64 */ b lbl_803100A4
lbl_80310044:
/* 80310044 3B 20 00 00 */ li r25, 0
/* 80310048 3B 60 00 00 */ li r27, 0
/* 8031004C 3B 41 00 18 */ addi r26, r1, 0x18
/* 80310050 48 00 00 4C */ b lbl_8031009C
lbl_80310054:
/* 80310054 7C 1A F8 2E */ lwzx r0, r26, r31
/* 80310058 7C B9 01 D6 */ mullw r5, r25, r0
/* 8031005C 38 7B 00 64 */ addi r3, r27, 0x64
/* 80310060 7C 7C 1A 14 */ add r3, r28, r3
/* 80310064 38 80 00 00 */ li r4, 0
/* 80310068 7F A6 EB 78 */ mr r6, r29
/* 8031006C 3C E5 00 08 */ addis r7, r5, 8
/* 80310070 7F A8 EB 78 */ mr r8, r29
/* 80310074 48 04 E4 C5 */ bl GXInitTexCacheRegion
/* 80310078 7C 1A F8 2E */ lwzx r0, r26, r31
/* 8031007C 7C 99 01 D6 */ mullw r4, r25, r0
/* 80310080 7F 23 CB 78 */ mr r3, r25
/* 80310084 7F A5 EB 78 */ mr r5, r29
/* 80310088 3C C4 00 08 */ addis r6, r4, 8
/* 8031008C 7F A7 EB 78 */ mr r7, r29
/* 80310090 4B FF FC D9 */ bl J3DFifoLoadTexCached__F11_GXTexMapIDUl15_GXTexCacheSizeUl15_GXTexCacheSize
/* 80310094 3B 39 00 01 */ addi r25, r25, 1
/* 80310098 3B 7B 00 10 */ addi r27, r27, 0x10
lbl_8031009C:
/* 8031009C 7C 19 F0 40 */ cmplw r25, r30
/* 803100A0 41 80 FF B4 */ blt lbl_80310054
lbl_803100A4:
/* 803100A4 39 61 00 50 */ addi r11, r1, 0x50
/* 803100A8 48 05 21 71 */ bl _restgpr_25
/* 803100AC 80 01 00 54 */ lwz r0, 0x54(r1)
/* 803100B0 7C 08 03 A6 */ mtlr r0
/* 803100B4 38 21 00 50 */ addi r1, r1, 0x50
/* 803100B8 4E 80 00 20 */ blr

View File

@ -1,10 +0,0 @@
lbl_8032413C:
/* 8032413C 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80324140 7C 08 02 A6 */ mflr r0
/* 80324144 90 01 00 14 */ stw r0, 0x14(r1)
/* 80324148 A0 84 00 00 */ lhz r4, 0(r4)
/* 8032414C 4B FE A5 C1 */ bl J3DGDSetTexImgPtrRaw__F11_GXTexMapIDUl
/* 80324150 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80324154 7C 08 03 A6 */ mtlr r0
/* 80324158 38 21 00 10 */ addi r1, r1, 0x10
/* 8032415C 4E 80 00 20 */ blr

View File

@ -1,122 +0,0 @@
lbl_803112D0:
/* 803112D0 94 21 FF C0 */ stwu r1, -0x40(r1)
/* 803112D4 7C 08 02 A6 */ mflr r0
/* 803112D8 90 01 00 44 */ stw r0, 0x44(r1)
/* 803112DC 39 61 00 40 */ addi r11, r1, 0x40
/* 803112E0 48 05 0E E9 */ bl _savegpr_24
/* 803112E4 7C 7E 1B 78 */ mr r30, r3
/* 803112E8 7C 9F 23 78 */ mr r31, r4
/* 803112EC 38 60 00 00 */ li r3, 0
/* 803112F0 38 81 00 10 */ addi r4, r1, 0x10
/* 803112F4 38 00 00 02 */ li r0, 2
/* 803112F8 7C 09 03 A6 */ mtctr r0
lbl_803112FC:
/* 803112FC 38 03 00 04 */ addi r0, r3, 4
/* 80311300 7C 1E 00 2E */ lwzx r0, r30, r0
/* 80311304 7C 04 19 2E */ stwx r0, r4, r3
/* 80311308 38 63 00 04 */ addi r3, r3, 4
/* 8031130C 42 00 FF F0 */ bdnz lbl_803112FC
/* 80311310 7F FB F8 F8 */ nor r27, r31, r31
/* 80311314 57 60 07 BD */ rlwinm. r0, r27, 0, 0x1e, 0x1e
/* 80311318 41 82 00 68 */ beq lbl_80311380
/* 8031131C 7F C3 F3 78 */ mr r3, r30
/* 80311320 7F E4 FB 78 */ mr r4, r31
/* 80311324 4B FF FD 6D */ bl copyLocalVtxPosArray__15J3DVertexBufferFUl
/* 80311328 7C 7A 1B 79 */ or. r26, r3, r3
/* 8031132C 41 82 00 64 */ beq lbl_80311390
/* 80311330 3B 20 00 00 */ li r25, 0
/* 80311334 3B E0 00 00 */ li r31, 0
/* 80311338 3B 81 00 10 */ addi r28, r1, 0x10
lbl_8031133C:
/* 8031133C 7F BC F8 2E */ lwzx r29, r28, r31
/* 80311340 3B 7F 00 04 */ addi r27, r31, 4
/* 80311344 7C 7E D8 2E */ lwzx r3, r30, r27
/* 80311348 7C 1D 18 40 */ cmplw r29, r3
/* 8031134C 41 82 00 1C */ beq lbl_80311368
/* 80311350 80 9E 00 00 */ lwz r4, 0(r30)
/* 80311354 80 04 00 18 */ lwz r0, 0x18(r4)
/* 80311358 7C 03 00 40 */ cmplw r3, r0
/* 8031135C 41 82 00 08 */ beq lbl_80311364
/* 80311360 4B FB D9 DD */ bl __dl__FPv
lbl_80311364:
/* 80311364 7F BE D9 2E */ stwx r29, r30, r27
lbl_80311368:
/* 80311368 3B 39 00 01 */ addi r25, r25, 1
/* 8031136C 2C 19 00 02 */ cmpwi r25, 2
/* 80311370 3B FF 00 04 */ addi r31, r31, 4
/* 80311374 41 80 FF C8 */ blt lbl_8031133C
/* 80311378 7F 43 D3 78 */ mr r3, r26
/* 8031137C 48 00 00 E4 */ b lbl_80311460
lbl_80311380:
/* 80311380 80 7E 00 00 */ lwz r3, 0(r30)
/* 80311384 80 03 00 18 */ lwz r0, 0x18(r3)
/* 80311388 90 1E 00 08 */ stw r0, 8(r30)
/* 8031138C 90 1E 00 04 */ stw r0, 4(r30)
lbl_80311390:
/* 80311390 38 60 00 00 */ li r3, 0
/* 80311394 38 81 00 08 */ addi r4, r1, 8
/* 80311398 38 00 00 02 */ li r0, 2
/* 8031139C 7C 09 03 A6 */ mtctr r0
lbl_803113A0:
/* 803113A0 38 03 00 0C */ addi r0, r3, 0xc
/* 803113A4 7C 1E 00 2E */ lwzx r0, r30, r0
/* 803113A8 7C 04 19 2E */ stwx r0, r4, r3
/* 803113AC 38 63 00 04 */ addi r3, r3, 4
/* 803113B0 42 00 FF F0 */ bdnz lbl_803113A0
/* 803113B4 57 60 07 7B */ rlwinm. r0, r27, 0, 0x1d, 0x1d
/* 803113B8 41 82 00 94 */ beq lbl_8031144C
/* 803113BC 7F C3 F3 78 */ mr r3, r30
/* 803113C0 7F E4 FB 78 */ mr r4, r31
/* 803113C4 4B FF FD ED */ bl copyLocalVtxNrmArray__15J3DVertexBufferFUl
/* 803113C8 7C 79 1B 79 */ or. r25, r3, r3
/* 803113CC 41 82 00 90 */ beq lbl_8031145C
/* 803113D0 3B 00 00 00 */ li r24, 0
/* 803113D4 3B E0 00 00 */ li r31, 0
/* 803113D8 3B 81 00 10 */ addi r28, r1, 0x10
/* 803113DC 3B A1 00 08 */ addi r29, r1, 8
lbl_803113E0:
/* 803113E0 7F 7C F8 2E */ lwzx r27, r28, r31
/* 803113E4 7F 5E FA 14 */ add r26, r30, r31
/* 803113E8 80 7A 00 04 */ lwz r3, 4(r26)
/* 803113EC 7C 1B 18 40 */ cmplw r27, r3
/* 803113F0 41 82 00 1C */ beq lbl_8031140C
/* 803113F4 80 9E 00 00 */ lwz r4, 0(r30)
/* 803113F8 80 04 00 18 */ lwz r0, 0x18(r4)
/* 803113FC 7C 03 00 40 */ cmplw r3, r0
/* 80311400 41 82 00 08 */ beq lbl_80311408
/* 80311404 4B FB D9 39 */ bl __dl__FPv
lbl_80311408:
/* 80311408 93 7A 00 04 */ stw r27, 4(r26)
lbl_8031140C:
/* 8031140C 7F 7D F8 2E */ lwzx r27, r29, r31
/* 80311410 80 7A 00 0C */ lwz r3, 0xc(r26)
/* 80311414 7C 1B 18 40 */ cmplw r27, r3
/* 80311418 41 82 00 1C */ beq lbl_80311434
/* 8031141C 80 9E 00 00 */ lwz r4, 0(r30)
/* 80311420 80 04 00 1C */ lwz r0, 0x1c(r4)
/* 80311424 7C 03 00 40 */ cmplw r3, r0
/* 80311428 41 82 00 08 */ beq lbl_80311430
/* 8031142C 4B FB D9 11 */ bl __dl__FPv
lbl_80311430:
/* 80311430 93 7A 00 0C */ stw r27, 0xc(r26)
lbl_80311434:
/* 80311434 3B 18 00 01 */ addi r24, r24, 1
/* 80311438 2C 18 00 02 */ cmpwi r24, 2
/* 8031143C 3B FF 00 04 */ addi r31, r31, 4
/* 80311440 41 80 FF A0 */ blt lbl_803113E0
/* 80311444 7F 23 CB 78 */ mr r3, r25
/* 80311448 48 00 00 18 */ b lbl_80311460
lbl_8031144C:
/* 8031144C 80 7E 00 00 */ lwz r3, 0(r30)
/* 80311450 80 03 00 1C */ lwz r0, 0x1c(r3)
/* 80311454 90 1E 00 10 */ stw r0, 0x10(r30)
/* 80311458 90 1E 00 0C */ stw r0, 0xc(r30)
lbl_8031145C:
/* 8031145C 38 60 00 00 */ li r3, 0
lbl_80311460:
/* 80311460 39 61 00 40 */ addi r11, r1, 0x40
/* 80311464 48 05 0D B1 */ bl _restgpr_24
/* 80311468 80 01 00 44 */ lwz r0, 0x44(r1)
/* 8031146C 7C 08 03 A6 */ mtlr r0
/* 80311470 38 21 00 40 */ addi r1, r1, 0x40
/* 80311474 4E 80 00 20 */ blr

View File

@ -37,6 +37,7 @@ public:
J3DJoint* getRootNode() { return mRootNode; }
J3DJoint* getJointNodePointer(u16 idx) const { return mJointNodePointer[idx]; }
J3DMtxCalc* getBasicMtxCalc() const { return mBasicMtxCalc; }
Mtx& getInvJointMtx(s32 idx) const { return mInvJointMtx[idx]; }
private:
/* 0x04 */ J3DModelHierarchy* mHierarchy;

View File

@ -33,12 +33,13 @@ public:
J3DShape* getShapeNodePointer(u16 idx) const { return mShapeTable.getShapeNodePointer(idx); }
J3DJoint* getJointNodePointer(u16 idx) const { return mJointTree.getJointNodePointer(idx); }
J3DJointTree& getJointTree() { return mJointTree; }
Mtx& getInvJointMtx(s32 idx) const { return mJointTree.getInvJointMtx(idx); }
J3DTexture* getTexture() const { return mMaterialTable.getTexture(); }
JUTNameTab* getTextureName() const { return mMaterialTable.getTextureName(); }
u16 getWEvlpMtxNum() const { return mJointTree.getWEvlpMtxNum(); }
void* getVtxPosArray() const { return mVertexData.getVtxPosArray(); }
void* getVtxNrmArray() const { return mVertexData.getVtxNrmArray(); }
_GXColor* getVtxColorArray(u8 idx) const { return mVertexData.getVtxColorArray(idx); }
GXColor* getVtxColorArray(u8 idx) const { return mVertexData.getVtxColorArray(idx); }
bool checkFlag(u32 flag) const { return !!(mFlags & flag); }
bool checkBumpFlag() const { return mbHasBumpArray; }
bool checkBBoardFlag() const { return mbHasBillboard == 1; }

View File

@ -123,6 +123,7 @@ public:
J3DShape* getShape() const { return mpShape; }
J3DModel* getModel() const { return mpModel; }
Mtx* getBaseMtxPtr() const { return mpBaseMtxPtr; }
public:
/* 0x28 */ J3DShape* mpShape;

View File

@ -13,10 +13,30 @@ public:
u32 mMtxIdxRegB;
};
static inline void J3DFifoWriteCPCmd(u8 cmd, u32 param) {
GFX_FIFO(u8) = GX_CMD_LOAD_CP_REG;
GFX_FIFO(u8) = cmd;
GFX_FIFO(u32) = param;
}
static inline void J3DFifoWriteXFCmd(u16 cmd, u16 len) {
GFX_FIFO(u8) = GX_CMD_LOAD_XF_REG;
GFX_FIFO(u16) = (len - 1);
GFX_FIFO(u16) = cmd;
}
class J3DCurrentMtx : public J3DCurrentMtxInfo {
public:
u32 getMtxIdxRegA() const { return mMtxIdxRegA; }
u32 getMtxIdxRegB() const { return mMtxIdxRegB; }
inline void load() const {
J3DFifoWriteCPCmd(0x30, getMtxIdxRegA()); // CP_MATINDEX_A
J3DFifoWriteCPCmd(0x40, getMtxIdxRegB()); // CP_MATINDEX_B
J3DFifoWriteXFCmd(0x1018, 2);
GFX_FIFO(u32) = getMtxIdxRegA();
GFX_FIFO(u32) = getMtxIdxRegB();
}
};
class J3DMaterial;
@ -24,11 +44,12 @@ class J3DVertexData;
class J3DDrawMtxData;
enum J3DShpFlag {
J3DShpFlag_Visible = 0x0001,
J3DShpFlag_SkinPosCpu = 0x0004,
J3DShpFlag_SkinNrmCpu = 0x0008,
J3DShpFlag_Hidden = 0x0010,
J3DShpFlag_EnableLod = 0x0100,
J3DShpFlag_Visible = 0x0001,
J3DShpFlag_SkinPosCpu = 0x0004,
J3DShpFlag_SkinNrmCpu = 0x0008,
J3DShpFlag_Hidden = 0x0010,
J3DShpFlag_EnableLod = 0x0100,
J3DShpFlag_NoMtx = 0x0200,
};
class J3DShape {
@ -37,7 +58,7 @@ public:
/* 80314BB8 */ void addTexMtxIndexInDL(_GXAttr, u32);
/* 80314CBC */ void addTexMtxIndexInVcd(_GXAttr);
/* 80314DA8 */ void calcNBTScale(Vec const&, f32 (*)[3][3], f32 (*)[3][3]);
/* 80314E28 */ void countBumpMtxNum() const;
/* 80314E28 */ u32 countBumpMtxNum() const;
/* 80314EEC */ void loadVtxArray() const;
/* 80314F5C */ bool isSameVcdVatCmd(J3DShape*);
/* 80314F98 */ void makeVtxArrayCmd();
@ -52,11 +73,11 @@ public:
void onFlag(u32 flag) { mFlags |= flag; }
void offFlag(u32 flag) { mFlags &= ~flag; }
bool checkFlag(u32 flag) { return !!(mFlags & flag); }
bool checkFlag(u32 flag) const { return !!(mFlags & flag); }
void setDrawMtxDataPointer(J3DDrawMtxData* pMtxData) { mDrawMtxData = pMtxData; }
void setVertexDataPointer(J3DVertexData* pVtxData) { mVertexData = pVtxData; }
void* getVcdVatCmd() const { return mVcdVatCmd; }
void setVcdVatCmd(void* pVatCmd) { mVcdVatCmd = pVatCmd; }
void setVcdVatCmd(void* pVatCmd) { mVcdVatCmd = (u8*)pVatCmd; }
void show() { offFlag(J3DShpFlag_Visible); }
void hide() { onFlag(J3DShpFlag_Visible); }
void setCurrentViewNoPtr(u32* pViewNoPtr) { mCurrentViewNo = pViewNoPtr; }
@ -69,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;
@ -81,7 +105,7 @@ private:
/* 0x10 */ f32 mRadius;
/* 0x14 */ Vec mMin;
/* 0x20 */ Vec mMax;
/* 0x2C */ void* mVcdVatCmd;
/* 0x2C */ u8* mVcdVatCmd;
/* 0x30 */ GXVtxDescList* mVtxDesc;
/* 0x34 */ bool mHasNBT;
/* 0x38 */ J3DShapeMtx** mShapeMtx;

View File

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

View File

@ -9,7 +9,12 @@ class J3DTexGenBlock;
class J3DDifferedTexMtx {
public:
/* 8031322C */ void loadExecute(f32 const (*)[4]);
/* 8031322C */ static void loadExecute(f32 const (*)[4]);
static inline void load(Mtx m) {
if (sTexGenBlock != NULL)
loadExecute(m);
}
static J3DTexGenBlock* sTexGenBlock;
static J3DTexMtx* sTexMtxObj;
@ -26,9 +31,9 @@ public:
/* 803131D4 */ void loadMtxIndx_PNCPU(int, u16) const;
/* 80314798 */ virtual ~J3DShapeMtx();
/* 803147E0 */ virtual void getType() const;
/* 80273E08 */ virtual bool getUseMtxNum() const;
/* 8031459C */ virtual void getUseMtxIndex(u16) const;
/* 803147E0 */ virtual u32 getType() const;
/* 80273E08 */ virtual u32 getUseMtxNum() const;
/* 8031459C */ virtual u32 getUseMtxIndex(u16) const;
/* 80313B94 */ virtual void load() const;
/* 80313BF0 */ virtual void calcNBTScale(Vec const&, f32 (*)[3][3], f32 (*)[3][3]);
@ -41,6 +46,7 @@ public:
static void setCurrentPipeline(u32 pipeline) { sCurrentPipeline = pipeline; }
static void setLODFlag(u8 flag) { struct_804515B0[1] = flag; }
static void resetMtxLoadCache();
private:
/* 0x04 */ u16 mUseMtxIndex;
@ -49,7 +55,7 @@ private:
class J3DShapeMtxConcatView : public J3DShapeMtx {
public:
/* 80314730 */ virtual ~J3DShapeMtxConcatView();
/* 8031478C */ virtual void getType() const;
/* 803147E0 */ virtual u32 getType() const;
/* 80313C54 */ virtual void load() const;
/* 80314598 */ virtual void loadNrmMtx(int, u16) const;
/* 80313D28 */ virtual void loadNrmMtx(int, u16, f32 (*)[4]) const;
@ -68,23 +74,23 @@ public:
class J3DShapeMtxYBBoardConcatView : public J3DShapeMtxConcatView {
public:
/* 80314520 */ virtual ~J3DShapeMtxYBBoardConcatView();
/* 8031458C */ virtual void getType() const;
/* 803147E0 */ virtual u32 getType() const;
/* 803143E4 */ virtual void load() const;
};
class J3DShapeMtxBBoardConcatView : public J3DShapeMtxConcatView {
public:
/* 803145A4 */ virtual ~J3DShapeMtxBBoardConcatView();
/* 80314610 */ virtual void getType() const;
/* 803147E0 */ virtual u32 getType() const;
/* 803142D4 */ virtual void load() const;
};
class J3DShapeMtxMulti : public J3DShapeMtx {
public:
/* 803146B0 */ virtual ~J3DShapeMtxMulti();
/* 8031470C */ virtual void getType() const;
/* 80314718 */ virtual void getUseMtxNum() const;
/* 80314720 */ virtual void getUseMtxIndex(u16) const;
/* 803147E0 */ virtual u32 getType() const;
/* 80273E08 */ virtual u32 getUseMtxNum() const;
/* 8031459C */ virtual u32 getUseMtxIndex(u16) const;
/* 80313E4C */ virtual void load() const;
/* 80313EEC */ virtual void calcNBTScale(Vec const&, f32 (*)[3][3], f32 (*)[3][3]);
@ -96,9 +102,9 @@ private:
class J3DShapeMtxMultiConcatView : public J3DShapeMtx {
public:
/* 8031461C */ virtual ~J3DShapeMtxMultiConcatView();
/* 80314688 */ virtual void getType() const;
/* 80314694 */ virtual void getUseMtxNum() const;
/* 8031469C */ virtual void getUseMtxIndex(u16) const;
/* 803147E0 */ virtual u32 getType() const;
/* 80273E08 */ virtual u32 getUseMtxNum() const;
/* 8031459C */ virtual u32 getUseMtxIndex(u16) const;
/* 80313FA4 */ virtual void load() const;
/* 803146AC */ virtual void loadNrmMtx(int, u16) const;
/* 8031419C */ virtual void loadNrmMtx(int, u16, f32 (*)[4]) const;

View File

@ -42,9 +42,12 @@ struct J3DSys {
/* 0x050 */ u32 mDrawMode;
/* 0x054 */ u32 mMaterialMode;
/* 0x058 */ J3DTexture* mTexture;
/* 0x05C */ u8 field_0x5c[0x104 - 0x5C];
/* 0x05C */ u8 field_0x5c[0x04];
/* 0x060 */ u32 mTexCacheRegionNum;
/* 0x064 */ GXTexRegion mTexCacheRegion[8];
/* 0x0E4 */ u8 field_0xe4[0x20];
/* 0x104 */ Mtx* mModelDrawMtx;
/* 0x104 */ Mtx33* mModelNrmMtx;
/* 0x108 */ Mtx33* mModelNrmMtx;
/* 0x10C */ void* mVtxPos;
/* 0x110 */ void* mVtxNrm;
/* 0x114 */ _GXColor* mVtxCol;
@ -115,12 +118,15 @@ struct J3DSys {
// Type 1: Xlu Buffer
J3DDrawBuffer* getDrawBuffer(int type) { return mDrawBuffer[type]; }
Mtx& getModelDrawMtx(u16 no) const { return mModelDrawMtx[no]; }
J3DShapePacket* getShapePacket() const { return mShapePacket; }
void setViewMtx(Mtx m) { PSMTXCopy(m, mViewMtx); }
static Mtx mCurrentMtx;
static Vec mCurrentS;
static Vec mParentS;
static u16 sTexCoordScaleTable[34];
static u16 sTexCoordScaleTable[32];
};
extern J3DSys j3dSys;

View File

@ -67,4 +67,11 @@ struct J3DTexCoord : public J3DTexCoordInfo {
/* 0x4 */ u16 mTexMtxReg;
}; // Size: 0x6
struct J3DDefaultTexCoordInfo {
/* 0x0 */ u8 mTexGenType;
/* 0x1 */ u8 mTexGenSrc;
/* 0x2 */ u8 mTexGenMtx;
/* 0x3 */ u8 pad;
};
#endif /* J3DTEXTURE_H */

View File

@ -21,31 +21,35 @@ 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;
/* 0x08 */ u32 mColNum;
/* 0x0C */ u32 field_0xc;
/* 0x10 */ u32 field_0x10;
/* 0x14 */ void* mVtxAttrFmtList;
/* 0x0C */ u32 mTexCoordNum;
/* 0x10 */ u32 mPacketNum;
/* 0x14 */ GXVtxAttrFmtList* mVtxAttrFmtList;
/* 0x18 */ void* mVtxPosArray;
/* 0x1C */ void* mVtxNrmArray;
/* 0x20 */ void* mVtxNBTArray;
/* 0x24 */ _GXColor* mVtxColorArray[2];
/* 0x24 */ GXColor* mVtxColorArray[2];
/* 0x2C */ void* mVtxTexCoordArray[8];
/* 0x4C */ u8 mVtxPosFrac;
/* 0x50 */ _GXCompType mVtxPosType;
/* 0x50 */ GXCompType mVtxPosType;
/* 0x54 */ u8 mVtxNrmFrac;
/* 0x58 */ _GXCompType mVtxNrmType;
/* 0x58 */ GXCompType mVtxNrmType;
};
class J3DVertexBuffer {
@ -64,7 +68,7 @@ public:
void setCurrentVtxNrm(void* pVtxNrm) { mCurrentVtxNrm = pVtxNrm; }
void setCurrentVtxCol(_GXColor* pVtxCol) { mCurrentVtxCol = pVtxCol; }
void setCurrentVtxCol(GXColor* pVtxCol) { mCurrentVtxCol = pVtxCol; }
void frameInit() {
setCurrentVtxPos(mVtxPosArray[0]);
@ -76,12 +80,12 @@ private:
/* 0x00 */ J3DVertexData* mVtxData;
/* 0x04 */ void* mVtxPosArray[2];
/* 0x0C */ void* mVtxNrmArray[2];
/* 0x14 */ _GXColor* mVtxColArray[2];
/* 0x14 */ GXColor* mVtxColArray[2];
/* 0x1C */ void* mTransformedVtxPosArray[2];
/* 0x24 */ void* mTransformedVtxNrmArray[2];
/* 0x2C */ void* mCurrentVtxPos;
/* 0x30 */ void* mCurrentVtxNrm;
/* 0x34 */ _GXColor* mCurrentVtxCol;
/* 0x34 */ GXColor* mCurrentVtxCol;
}; // Size: 0x38
struct VertexNormal {

View File

@ -10,8 +10,6 @@ struct GDLObj {
/* 0xC */ u8* end;
}; // Size: 0x10
extern "C" void GDInitGDLObj(GDLObj*, u8*, u32);
extern GDLObj* __GDCurrentDL;
inline void GDSetCurrent(GDLObj* obj) {
@ -22,4 +20,12 @@ inline u32 GDGetGDLObjOffset(GDLObj* obj) {
return (u32)(obj->ptr - obj->start);
}
extern "C" {
void GDInitGDLObj(GDLObj*, u8*, u32);
void GDFlushCurrToMem();
void GDPadCurr32();
}
#endif /* GDBASE_H */

View File

@ -2,5 +2,14 @@
#define GDGEOMETRY_H
#include "dolphin/types.h"
#include "dolphin/gx/GX.h"
extern "C" {
void GDSetVtxDescv(GXVtxDescList*);
void GDSetArray(GXAttr attr, const void* data, u8 stride);
void GDSetArrayRaw(GXAttr attr, u32 data, u8 stride);
}
#endif /* GDGEOMETRY_H */

View File

@ -12,14 +12,6 @@ typedef struct _GXColor {
/* 0x1 */ u8 g;
/* 0x2 */ u8 b;
/* 0x3 */ u8 a;
_GXColor& operator=(const _GXColor& o) {
r = o.r;
g = o.g;
b = o.b;
a = o.a;
return *this;
}
} GXColor;
typedef struct _GXColorS10 {
@ -89,6 +81,10 @@ typedef struct _GXFifoObj {
/* 0x23 */ u8 field_0x23[93];
} GXFifoObj; // Size: 0x80
typedef struct _GXTexRegion {
/* 0x00 */ u8 dummy[0x10];
} GXTexRegion; // Size: 0x10
typedef enum _GXPrimitive {
/* 0x80 */ GX_QUADS = 0x80,
/* 0x90 */ GX_TRIANGLES = 0x90,
@ -179,16 +175,16 @@ typedef enum _GXColorSrc {
} GXColorSrc;
typedef enum _GXLightID {
/* 0x000 */ GX_LIGHT_NULL,
/* 0x001 */ GX_LIGHT0,
/* 0x002 */ GX_LIGHT1,
/* 0x004 */ GX_LIGHT2 = 0x4,
/* 0x008 */ GX_LIGHT3 = 0x8,
/* 0x010 */ GX_LIGHT4 = 0x10,
/* 0x020 */ GX_LIGHT5 = 0x20,
/* 0x040 */ GX_LIGHT6 = 0x40,
/* 0x080 */ GX_LIGHT7 = 0x80,
/* 0x100 */ GX_MAX_LIGHT = 0x100,
/* 0x000 */ GX_LIGHT_NULL = 0,
/* 0x001 */ GX_LIGHT0 = 1 << 0,
/* 0x002 */ GX_LIGHT1 = 1 << 1,
/* 0x004 */ GX_LIGHT2 = 1 << 2,
/* 0x008 */ GX_LIGHT3 = 1 << 3,
/* 0x010 */ GX_LIGHT4 = 1 << 4,
/* 0x020 */ GX_LIGHT5 = 1 << 5,
/* 0x040 */ GX_LIGHT6 = 1 << 6,
/* 0x080 */ GX_LIGHT7 = 1 << 7,
/* 0x100 */ GX_MAX_LIGHT = 1 << 8,
} GXLightID;
typedef enum _GXDiffuseFn {
@ -823,9 +819,16 @@ typedef enum _GXPTTexMtx {
};
typedef struct _GXVtxDescList {
GXAttr attr;
GXAttrType type;
} GXVtxDescList;
/* 0x0 */ GXAttr attr;
/* 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,
@ -851,6 +854,17 @@ typedef enum _GXZFmt16 {
/* 0x3 */ GX_ZC_FAR,
} GXZFmt16;
typedef enum _GXCommand
{
GX_CMD_LOAD_INDX_A = 0x20,
GX_CMD_LOAD_INDX_B = 0x28,
GX_CMD_LOAD_INDX_C = 0x30,
GX_CMD_LOAD_INDX_D = 0x38,
GX_CMD_LOAD_CP_REG = 0x08,
GX_CMD_LOAD_XF_REG = 0x10,
} GXCommand;
extern "C" {
f32 GXGetYScaleFactor(u16 efb_height, u16 xfb_height);
u16 GXGetNumXfbLines(u32 efb_height, f32 y_scale);
@ -868,7 +882,7 @@ void GXSetNumChans(u8);
void GXSetNumTevStages(u8);
void GXSetNumTexGens(u8);
void GXSetTevOrder(GXTevStageID, GXTexCoordID, GXTexMapID, GXChannelID);
void GXSetChanCtrl(GXChannelID, GXBool, GXColorSrc, GXColorSrc, GXLightID, GXDiffuseFn, GXAttnFn);
void GXSetChanCtrl(GXChannelID, GXBool, GXColorSrc, GXColorSrc, u32, GXDiffuseFn, GXAttnFn);
void GXSetTevOp(GXTevStageID, GXTevMode);
void GXSetTevColor(GXTevRegID, GXColor);
void GXSetTevColorIn(GXTevStageID, GXTevColorArg, GXTevColorArg, GXTevColorArg, GXTevColorArg);
@ -963,6 +977,8 @@ void GXReadXfRasMetric(u32*, u32*, u32*, u32*);
void GXInitFifoBase(GXFifoObj*, void*, u32);
void GXInitFifoPtrs(GXFifoObj*, void*, void*);
void GXSaveCPUFifo(GXFifoObj*);
void GXSetMisc(u32 opt, u32 val);
void GXInitTexCacheRegion(GXTexRegion *region, GXBool, u32, GXTexCacheSize, u32, GXTexCacheSize);
#define GFX_FIFO(T) (*(volatile T*)0xCC008000)

View File

@ -603,10 +603,10 @@ extern "C" extern u8 j3dTevSwapTableTable[1024];
extern "C" extern u8 j3dAlphaCmpTable[768];
extern "C" extern u8 j3dZModeTable[96];
extern "C" extern u8 __GDCurrentDL[4];
extern "C" extern u32 j3dDefaultColInfo;
extern "C" extern GXColor j3dDefaultColInfo;
extern "C" extern u32 j3dDefaultAmbInfo;
extern "C" extern u32 j3dDefaultTevColor;
extern "C" extern u32 j3dDefaultTevKColor;
extern "C" extern GXColorS10 j3dDefaultTevColor;
extern "C" extern GXColor j3dDefaultTevKColor;
//
// Declarations:

View File

@ -247,61 +247,37 @@ J3DDrawPacket::J3DDrawPacket() {
}
/* 803127B0-8031280C 30D0F0 005C+00 3/2 0/0 0/0 .text __dt__13J3DDrawPacketFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DDrawPacket::~J3DDrawPacket() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DPacket/__dt__13J3DDrawPacketFv.s"
J3DDrawPacket::~J3DDrawPacket() {
}
#pragma pop
/* 8031280C-80312898 30D14C 008C+00 1/1 1/1 0/0 .text newDisplayList__13J3DDrawPacketFUl
*/
#ifdef NONMATCHING
J3DError J3DDrawPacket::newDisplayList(u32 param_0) {
J3DError J3DDrawPacket::newDisplayList(u32 size) {
mpDisplayListObj = new J3DDisplayListObj();
if (mpDisplayListObj == NULL) {
if (mpDisplayListObj == NULL)
return kJ3DError_Alloc;
} else if (mpDisplayListObj->newDisplayList(param_0)) {
return kJ3DError_Success;
}
return 0;
J3DError ret = mpDisplayListObj->newDisplayList(size);
if (ret != kJ3DError_Success)
return ret;
return kJ3DError_Success;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DError J3DDrawPacket::newDisplayList(u32 param_0) {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DPacket/newDisplayList__13J3DDrawPacketFUl.s"
}
#pragma pop
#endif
/* 80312898-80312924 30D1D8 008C+00 0/0 1/1 0/0 .text newSingleDisplayList__13J3DDrawPacketFUl */
#ifdef NONMATCHING
J3DError J3DDrawPacket::newSingleDisplayList(u32 param_0) {
J3DError J3DDrawPacket::newSingleDisplayList(u32 size) {
mpDisplayListObj = new J3DDisplayListObj();
if (mpDisplayListObj == NULL) {
if (mpDisplayListObj == NULL)
return kJ3DError_Alloc;
} else if (mpDisplayListObj->newSingleDisplayList(param_0)) {
return kJ3DError_Success;
}
return 0;
J3DError ret = mpDisplayListObj->newSingleDisplayList(size);
if (ret != kJ3DError_Success)
return ret;
return kJ3DError_Success;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DError J3DDrawPacket::newSingleDisplayList(u32 param_0) {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DPacket/newSingleDisplayList__13J3DDrawPacketFUl.s"
}
#pragma pop
#endif
void J3DDrawPacket::draw() {
mpDisplayListObj->callDL();

View File

@ -4,16 +4,15 @@
//
#include "JSystem/J3DGraphBase/J3DShape.h"
#include "JSystem/J3DGraphBase/J3DPacket.h"
#include "JSystem/J3DGraphBase/J3DSys.h"
#include "JSystem/J3DGraphBase/J3DVertex.h"
#include "dol2asm.h"
#include "dolphin/gd/GDBase.h"
#include "dolphin/gd/GDGeometry.h"
#include "dolphin/os/OS.h"
#include "dolphin/types.h"
//
// Types:
//
struct _GXVtxAttrFmtList {};
//
// Forward References:
//
@ -42,6 +41,10 @@ extern "C" u8 sOldVcdVatCmd__8J3DShape[4];
// External References:
//
void J3DGDSetVtxAttrFmtv(_GXVtxFmt, GXVtxAttrFmtList const*, bool);
void J3DFifoLoadPosMtxImm(Mtx, u32);
void J3DFifoLoadNrmMtxImm(Mtx, u32);
extern "C" void* __nwa__FUl();
extern "C" void J3DGDSetVtxAttrFmtv__F9_GXVtxFmtPC17_GXVtxAttrFmtListb();
extern "C" void J3DFifoLoadPosMtxImm__FPA4_fUl();
@ -49,118 +52,142 @@ extern "C" void J3DFifoLoadNrmMtxImm__FPA4_fUl();
extern "C" void resetMtxLoadCache__11J3DShapeMtxFv();
extern "C" void addTexMtxIndexInDL__12J3DShapeDrawFUlUlUl();
extern "C" void draw__12J3DShapeDrawCFv();
extern "C" void OSDisableInterrupts();
extern "C" void OSRestoreInterrupts();
extern "C" void OSDisableScheduler();
extern "C" void OSEnableScheduler();
extern "C" void GDInitGDLObj();
extern "C" void GDFlushCurrToMem();
extern "C" void GDPadCurr32();
extern "C" void GDSetVtxDescv();
extern "C" void GDSetArray();
extern "C" void GDSetArrayRaw();
extern "C" void _savegpr_27();
extern "C" void _savegpr_28();
extern "C" void _savegpr_29();
extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" extern 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];
extern "C" u32 sTexMtxLoadType__11J3DShapeMtx;
extern "C" extern u8 __GDCurrentDL[4];
//
// Declarations:
//
/* ############################################################################################## */
/* 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,
enum {
kVcdVatDLSize = 0xC0,
};
/* 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
/* ############################################################################################## */
/* 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);
/* 80314BB8-80314CBC 30F4F8 0104+00 0/0 1/1 0/0 .text addTexMtxIndexInDL__8J3DShapeF7_GXAttrUl */
#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"
void J3DShape::addTexMtxIndexInDL(GXAttr attr, u32 valueBase) {
u32 kSize[] = { 0, 1, 1, 2 };
s32 pnmtxidxOffs = -1;
s32 attrOffs = -1;
s32 stride = 0;
bool found = false;
for (GXVtxDescList* vtxDesc = mVtxDesc; vtxDesc->attr != GX_VA_NULL; vtxDesc++) {
if (vtxDesc->attr == GX_VA_PNMTXIDX)
pnmtxidxOffs = stride;
if (attr < vtxDesc->attr && !found) {
attrOffs = stride;
found = true;
}
stride = stride + kSize[vtxDesc->type];
}
if (pnmtxidxOffs == -1)
return;
for (u16 i = 0; i < getMtxGroupNum(); i++)
getShapeDraw(i)->addTexMtxIndexInDL(stride, attrOffs, (s32)valueBase);
}
#pragma pop
/* 80314CBC-80314DA8 30F5FC 00EC+00 0/0 1/1 0/0 .text addTexMtxIndexInVcd__8J3DShapeF7_GXAttr */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShape::addTexMtxIndexInVcd(_GXAttr param_0) {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShape/addTexMtxIndexInVcd__8J3DShapeF7_GXAttr.s"
void J3DShape::addTexMtxIndexInVcd(GXAttr attr) {
s32 attrIdx = -1;
GXVtxDescList* vtxDesc = mVtxDesc;
s32 attrCount = 0;
for (; vtxDesc->attr != GX_VA_NULL; attrCount++, vtxDesc++) {
if (vtxDesc->attr == GX_VA_PNMTXIDX)
attrIdx = 0;
}
if (attrIdx == -1)
return;
GXVtxDescList* newVtxDesc = new GXVtxDescList[attrCount + 2];
bool inserted = false;
vtxDesc = mVtxDesc;
GXVtxDescList* dst = newVtxDesc;
for (; vtxDesc->attr != GX_VA_NULL; dst++, vtxDesc++) {
if ((attr < vtxDesc->attr) && !inserted) {
dst->attr = attr;
dst->type = GX_DIRECT;
inserted = true;
dst++;
}
*dst = *vtxDesc;
}
dst->attr = GX_VA_NULL;
dst->type = GX_NONE;
mVtxDesc = newVtxDesc;
makeVcdVatCmd();
}
#pragma pop
/* 80314DA8-80314E28 30F6E8 0080+00 0/0 1/1 0/0 .text
* calcNBTScale__8J3DShapeFRC3VecPA3_A3_fPA3_A3_f */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShape::calcNBTScale(Vec const& param_0, f32 (*param_1)[3][3], f32 (*param_2)[3][3]) {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShape/calcNBTScale__8J3DShapeFRC3VecPA3_A3_fPA3_A3_f.s"
void J3DShape::calcNBTScale(Vec const& param_0, f32 (*param_1)[3][3], f32 (*param_2)[3][3]) {
for (u16 i = 0; i < getMtxGroupNum(); i++)
getShapeMtx(i)->calcNBTScale(param_0, param_1, param_2);
}
#pragma pop
/* 80314E28-80314E98 30F768 0070+00 0/0 1/1 0/0 .text countBumpMtxNum__8J3DShapeCFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShape::countBumpMtxNum() const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShape/countBumpMtxNum__8J3DShapeCFv.s"
u32 J3DShape::countBumpMtxNum() const {
u32 num = 0;
for (u16 i = 0; i < getMtxGroupNum(); i++)
num += getShapeMtx(i)->getUseMtxNum();
return num;
}
#pragma pop
/* 80314E98-80314EB0 30F7D8 0018+00 1/1 0/0 0/0 .text J3DLoadCPCmd__FUcUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void J3DLoadCPCmd(u8 param_0, u32 param_1) {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShape/J3DLoadCPCmd__FUcUl.s"
void J3DLoadCPCmd(u8 cmd, u32 param) {
GFX_FIFO(u8) = GX_CMD_LOAD_CP_REG;
GFX_FIFO(u8) = cmd;
GFX_FIFO(u32) = param;
}
#pragma pop
/* 80314EB0-80314EEC 30F7F0 003C+00 1/1 0/0 0/0 .text J3DLoadArrayBasePtr__F7_GXAttrPv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void J3DLoadArrayBasePtr(_GXAttr param_0, void* param_1) {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShape/J3DLoadArrayBasePtr__F7_GXAttrPv.s"
static void J3DLoadArrayBasePtr(_GXAttr attr, void* data) {
u32 idx = (attr == GX_VA_NBT) ? 1 : (attr - GX_VA_POS);
J3DLoadCPCmd(0xA0 + idx, ((u32)data & 0x7FFFFFFF));
}
#pragma pop
/* 80314EEC-80314F5C 30F82C 0070+00 3/3 0/0 0/0 .text loadVtxArray__8J3DShapeCFv */
void J3DShape::loadVtxArray() const {
@ -172,55 +199,139 @@ void J3DShape::loadVtxArray() const {
}
/* 80314F5C-80314F98 30F89C 003C+00 0/0 1/1 0/0 .text isSameVcdVatCmd__8J3DShapeFP8J3DShape */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm bool J3DShape::isSameVcdVatCmd(J3DShape* param_0) {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShape/isSameVcdVatCmd__8J3DShapeFP8J3DShape.s"
bool J3DShape::isSameVcdVatCmd(J3DShape* other) {
u8 *a = other->mVcdVatCmd;
u8 *b = mVcdVatCmd;
for (u32 i = 0; i < kVcdVatDLSize; i++)
if (a[i] != b[i])
return false;
return true;
}
#pragma pop
/* 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 */
static u8 sInterruptFlag[4];
static s32 sInterruptFlag;
/* 804515CC-804515D0 000ACC 0004+00 1/1 0/0 0/0 .sbss None */
static u8 data_804515CC[4];
static s8 sInitInterruptFlag;
/* 80315260-80315300 30FBA0 00A0+00 1/1 2/2 0/0 .text makeVcdVatCmd__8J3DShapeFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShape::makeVcdVatCmd() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShape/makeVcdVatCmd__8J3DShapeFv.s"
void J3DShape::makeVcdVatCmd() {
if (!sInitInterruptFlag) {
sInterruptFlag = OSDisableInterrupts();
sInitInterruptFlag = true;
}
OSDisableScheduler();
GDLObj gdl_obj;
GDInitGDLObj(&gdl_obj, mVcdVatCmd, kVcdVatDLSize);
GDSetCurrent(&gdl_obj);
GDSetVtxDescv(mVtxDesc);
makeVtxArrayCmd();
J3DGDSetVtxAttrFmtv(GX_VTXFMT0, mVertexData->getVtxAttrFmtList(), mHasNBT);
GDPadCurr32();
GDFlushCurrToMem();
GDSetCurrent(NULL);
OSEnableScheduler();
OSRestoreInterrupts(sInterruptFlag);
}
#pragma pop
/* ############################################################################################## */
/* 804515D0-804515D4 000AD0 0004+00 5/5 25/25 9/9 .sbss sOldVcdVatCmd__8J3DShape */
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 */
@ -241,6 +352,38 @@ void J3DShape::setArrayAndBindPipeline() const {
}
/* 8031544C-803155E0 30FD8C 0194+00 1/0 0/0 0/0 .text drawFast__8J3DShapeCFv */
#ifdef NONMATCHING
void J3DShape::drawFast() const {
if (sOldVcdVatCmd != mVcdVatCmd) {
GXCallDisplayList(mVcdVatCmd, kVcdVatDLSize);
sOldVcdVatCmd = mVcdVatCmd;
}
if (data_804515D4[0] != 0 && !mHasPNMTXIdx)
mCurrentMtx.load();
setArrayAndBindPipeline();
if (!checkFlag(J3DShpFlag_NoMtx)) {
// LOD flag shenanigans
if (J3DShapeMtx::getLODFlag() != 0)
J3DShapeMtx::resetMtxLoadCache();
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.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
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@ -250,15 +393,14 @@ asm void J3DShape::drawFast() const {
}
#pragma pop
#endif
/* 803155E0-80315628 30FF20 0048+00 1/0 0/0 0/0 .text draw__8J3DShapeCFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShape::draw() const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShape/draw__8J3DShapeCFv.s"
void J3DShape::draw() const {
sOldVcdVatCmd = NULL;
loadPreDrawSetting();
drawFast();
}
#pragma pop
/* 80315628-803156AC 30FF68 0084+00 1/0 0/0 0/0 .text simpleDraw__8J3DShapeCFv */
void J3DShape::simpleDraw() const {
@ -266,19 +408,25 @@ 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();
}
}
}
/* 803156AC-803157A0 30FFEC 00F4+00 1/0 0/0 0/0 .text simpleDrawCache__8J3DShapeCFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShape::simpleDrawCache() const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShape/simpleDrawCache__8J3DShapeCFv.s"
void J3DShape::simpleDrawCache() const {
if (sOldVcdVatCmd != mVcdVatCmd) {
GXCallDisplayList(mVcdVatCmd, kVcdVatDLSize);
sOldVcdVatCmd = mVcdVatCmd;
}
if (data_804515D4[0] != 0 && !mHasPNMTXIdx)
mCurrentMtx.load();
loadVtxArray();
for (u16 n = getMtxGroupNum(), i = 0; i < n; i++)
if (getShapeDraw(i) != NULL)
getShapeDraw(i)->draw();
}
#pragma pop

View File

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

View File

@ -4,20 +4,13 @@
//
#include "JSystem/J3DGraphBase/J3DShapeMtx.h"
#include "JSystem/J3DGraphAnimator/J3DModel.h"
#include "JSystem/J3DGraphAnimator/J3DModelData.h"
#include "JSystem/J3DGraphBase/J3DPacket.h"
#include "JSystem/J3DGraphBase/J3DSys.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Types:
//
struct J3DTextureSRTInfo {};
struct J3DSys {
/* 8030FEC0 */ void loadPosMtxIndx(int, u16) const;
/* 8030FEE4 */ void loadNrmMtxIndx(int, u16) const;
};
//
// Forward References:
//
@ -78,6 +71,12 @@ extern "C" u8 sTexMtxObj__17J3DDifferedTexMtx[4];
// External References:
//
void J3DFifoLoadPosMtxImm(Mtx, u32);
void J3DFifoLoadNrmMtxImm(Mtx, u32);
void J3DFifoLoadNrmMtxImm3x3(Mtx33, u32);
void J3DFifoLoadNrmMtxToTexMtx(Mtx, u32);
void J3DFifoLoadNrmMtxToTexMtx33(Mtx33, u32);
extern "C" bool getUseMtxNum__11J3DShapeMtxCFv();
extern "C" void __dl__FPv();
extern "C" void J3DFifoLoadPosMtxImm__FPA4_fUl();
@ -97,8 +96,6 @@ extern "C" void J3DGetTextureMtxMayaOld__FRC17J3DTextureSRTInfoPA4_f();
extern "C" void J3DScaleNrmMtx__FPA4_fRC3Vec();
extern "C" void J3DScaleNrmMtx33__FPA3_fRC3Vec();
extern "C" void J3DMtxProjConcat__FPA4_fPA4_fPA4_f();
extern "C" void GXSetArray();
extern "C" void GXLoadTexMtxImm();
extern "C" void __ptmf_scall();
extern "C" void _savegpr_22();
extern "C" void _savegpr_25();
@ -110,7 +107,6 @@ extern "C" void _restgpr_25();
extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" extern u8 j3dSys[284];
//
// Declarations:
@ -135,45 +131,37 @@ void J3DShapeMtx::resetMtxLoadCache() {
sMtxLoadCache[0] = 0xFFFF;
}
/* 803130E4-80313128 30DA24 0044+00 1/0 0/0 0/0 .text loadMtxIndx_PNGP__11J3DShapeMtxCFiUs */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShapeMtx::loadMtxIndx_PNGP(int param_0, u16 param_1) const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShapeMtx/loadMtxIndx_PNGP__11J3DShapeMtxCFiUs.s"
static inline void J3DFifoLoadIndx(u8 cmd, u16 indx, u16 addr) {
GFX_FIFO(u8) = cmd;
GFX_FIFO(u16) = indx;
GFX_FIFO(u16) = addr;
}
/* 803130E4-80313128 30DA24 0044+00 1/0 0/0 0/0 .text loadMtxIndx_PNGP__11J3DShapeMtxCFiUs */
void J3DShapeMtx::loadMtxIndx_PNGP(int slot, u16 indx) const {
// inlined J3DFifoLoadPosMtxIndx
J3DFifoLoadIndx(GX_CMD_LOAD_INDX_A, indx, 0xB000 | ((u16)(slot * 0x0C)));
// inlined J3DFifoLoadNrmMtxIndx3x3
J3DFifoLoadIndx(GX_CMD_LOAD_INDX_B, indx, 0x8000 | ((u16)((slot * 0x09) + 0x400)));
}
#pragma pop
/* 80313128-80313188 30DA68 0060+00 1/0 0/0 0/0 .text loadMtxIndx_PCPU__11J3DShapeMtxCFiUs */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShapeMtx::loadMtxIndx_PCPU(int param_0, u16 param_1) const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShapeMtx/loadMtxIndx_PCPU__11J3DShapeMtxCFiUs.s"
void J3DShapeMtx::loadMtxIndx_PCPU(int slot, u16 indx) const {
J3DFifoLoadPosMtxImm(*j3dSys.getShapePacket()->getBaseMtxPtr(), slot * 3);
j3dSys.loadNrmMtxIndx(slot, indx);
}
#pragma pop
/* 80313188-803131D4 30DAC8 004C+00 1/0 0/0 0/0 .text loadMtxIndx_NCPU__11J3DShapeMtxCFiUs */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShapeMtx::loadMtxIndx_NCPU(int param_0, u16 param_1) const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShapeMtx/loadMtxIndx_NCPU__11J3DShapeMtxCFiUs.s"
void J3DShapeMtx::loadMtxIndx_NCPU(int slot, u16 indx) const {
j3dSys.loadPosMtxIndx(slot, indx);
J3DFifoLoadNrmMtxImm(*j3dSys.getShapePacket()->getBaseMtxPtr(), slot * 3);
}
#pragma pop
/* 803131D4-8031322C 30DB14 0058+00 1/0 0/0 0/0 .text loadMtxIndx_PNCPU__11J3DShapeMtxCFiUs */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShapeMtx::loadMtxIndx_PNCPU(int param_0, u16 param_1) const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShapeMtx/loadMtxIndx_PNCPU__11J3DShapeMtxCFiUs.s"
void J3DShapeMtx::loadMtxIndx_PNCPU(int slot, u16 indx) const {
J3DFifoLoadPosMtxImm(*j3dSys.getShapePacket()->getBaseMtxPtr(), slot * 3);
J3DFifoLoadNrmMtxImm(*j3dSys.getShapePacket()->getBaseMtxPtr(), slot * 3);
}
#pragma pop
/* ############################################################################################## */
/* 803CD990-803CD99C -00001 000C+00 1/1 0/0 0/0 .data @832 */
@ -409,58 +397,60 @@ asm void J3DDifferedTexMtx::loadExecute(f32 const (*param_0)[4]) {
/* 80313828-803138C8 30E168 00A0+00 1/0 0/0 0/0 .text
* loadMtxConcatView_PNGP__21J3DShapeMtxConcatViewCFiUs */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShapeMtxConcatView::loadMtxConcatView_PNGP(int param_0, u16 param_1) const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShapeMtx/loadMtxConcatView_PNGP__21J3DShapeMtxConcatViewCFiUs.s"
void J3DShapeMtxConcatView::loadMtxConcatView_PNGP(int slot, u16 drw) const {
Mtx m;
PSMTXConcat(*j3dSys.getShapePacket()->getBaseMtxPtr(), j3dSys.getModelDrawMtx(drw), m);
J3DDifferedTexMtx::load(m);
J3DFifoLoadPosMtxImm(m, slot * 3);
loadNrmMtx(slot, drw, m);
}
#pragma pop
/* 803138C8-8031396C 30E208 00A4+00 2/0 0/0 0/0 .text
* loadMtxConcatView_PCPU__21J3DShapeMtxConcatViewCFiUs */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShapeMtxConcatView::loadMtxConcatView_PCPU(int param_0, u16 param_1) const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShapeMtx/loadMtxConcatView_PCPU__21J3DShapeMtxConcatViewCFiUs.s"
void J3DShapeMtxConcatView::loadMtxConcatView_PCPU(int slot, u16 drw) const {
Mtx m;
PSMTXConcat(*j3dSys.getShapePacket()->getBaseMtxPtr(), j3dSys.getModelDrawMtx(drw), m);
J3DDifferedTexMtx::load(m);
J3DFifoLoadPosMtxImm(*j3dSys.getShapePacket()->getBaseMtxPtr(), slot * 3);
loadNrmMtx(slot, drw, m);
}
#pragma pop
/* 8031396C-80313A14 30E2AC 00A8+00 2/0 0/0 0/0 .text
* loadMtxConcatView_NCPU__21J3DShapeMtxConcatViewCFiUs */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShapeMtxConcatView::loadMtxConcatView_NCPU(int param_0, u16 param_1) const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShapeMtx/loadMtxConcatView_NCPU__21J3DShapeMtxConcatViewCFiUs.s"
void J3DShapeMtxConcatView::loadMtxConcatView_NCPU(int slot, u16 drw) const {
Mtx m;
PSMTXConcat(*j3dSys.getShapePacket()->getBaseMtxPtr(), j3dSys.getModelDrawMtx(drw), m);
J3DDifferedTexMtx::load(m);
J3DFifoLoadPosMtxImm(m, slot * 3);
J3DFifoLoadNrmMtxImm(*j3dSys.getShapePacket()->getBaseMtxPtr(), slot * 3);
if (J3DShapeMtx::sTexMtxLoadType == 0x2000)
J3DFifoLoadNrmMtxToTexMtx(*j3dSys.getShapePacket()->getBaseMtxPtr(), slot * 3 + GX_TEXMTX0);
}
#pragma pop
/* 80313A14-80313AC8 30E354 00B4+00 2/0 0/0 0/0 .text
* loadMtxConcatView_PNCPU__21J3DShapeMtxConcatViewCFiUs */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShapeMtxConcatView::loadMtxConcatView_PNCPU(int param_0, u16 param_1) const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShapeMtx/loadMtxConcatView_PNCPU__21J3DShapeMtxConcatViewCFiUs.s"
void J3DShapeMtxConcatView::loadMtxConcatView_PNCPU(int slot, u16 drw) const {
Mtx m;
if (J3DDifferedTexMtx::sTexGenBlock != NULL) {
PSMTXConcat(*j3dSys.getShapePacket()->getBaseMtxPtr(), j3dSys.getModelDrawMtx(drw), m);
J3DDifferedTexMtx::loadExecute(m);
}
J3DFifoLoadPosMtxImm(*j3dSys.getShapePacket()->getBaseMtxPtr(), slot * 3);
J3DFifoLoadNrmMtxImm(*j3dSys.getShapePacket()->getBaseMtxPtr(), slot * 3);
if (J3DShapeMtx::sTexMtxLoadType == 0x2000)
J3DFifoLoadNrmMtxToTexMtx(*j3dSys.getShapePacket()->getBaseMtxPtr(), slot * 3 + GX_TEXMTX0);
}
#pragma pop
/* 80313AC8-80313B94 30E408 00CC+00 1/0 0/0 0/0 .text
* loadMtxConcatView_PNGP_LOD__21J3DShapeMtxConcatViewCFiUs */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShapeMtxConcatView::loadMtxConcatView_PNGP_LOD(int param_0, u16 param_1) const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShapeMtx/loadMtxConcatView_PNGP_LOD__21J3DShapeMtxConcatViewCFiUs.s"
void J3DShapeMtxConcatView::loadMtxConcatView_PNGP_LOD(int slot, u16 drw) const {
Mtx m;
PSMTXConcat(*j3dSys.getShapePacket()->getBaseMtxPtr(), j3dSys.getModelDrawMtx(drw), m);
PSMTXConcat(m, j3dSys.mModel->getModelData()->getInvJointMtx(drw), m);
J3DDifferedTexMtx::load(m);
J3DFifoLoadPosMtxImm(m, slot * 3);
loadNrmMtx(slot, drw, m);
}
#pragma pop
/* 80313B94-80313BF0 30E4D4 005C+00 1/0 0/0 0/0 .text load__11J3DShapeMtxCFv */
#pragma push
@ -678,14 +668,9 @@ extern "C" asm void __dt__28J3DShapeMtxYBBoardConcatViewFv() {
/* 8031458C-80314598 30EECC 000C+00 1/0 0/0 0/0 .text getType__28J3DShapeMtxYBBoardConcatViewCFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShapeMtxYBBoardConcatView::getType() const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShapeMtx/getType__28J3DShapeMtxYBBoardConcatViewCFv.s"
u32 J3DShapeMtxYBBoardConcatView::getType() const {
return 'SMYB';
}
#pragma pop
/* 80314598-8031459C 30EED8 0004+00 3/0 0/0 0/0 .text loadNrmMtx__21J3DShapeMtxConcatViewCFiUs */
void J3DShapeMtxConcatView::loadNrmMtx(int param_0, u16 param_1) const {
@ -694,14 +679,9 @@ void J3DShapeMtxConcatView::loadNrmMtx(int param_0, u16 param_1) const {
/* 8031459C-803145A4 30EEDC 0008+00 4/0 0/0 0/0 .text getUseMtxIndex__11J3DShapeMtxCFUs
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShapeMtx::getUseMtxIndex(u16 param_0) const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShapeMtx/getUseMtxIndex__11J3DShapeMtxCFUs.s"
u32 J3DShapeMtx::getUseMtxIndex(u16 param_0) const {
return mUseMtxIndex;
}
#pragma pop
/* 803145A4-80314610 30EEE4 006C+00 1/0 0/0 0/0 .text __dt__27J3DShapeMtxBBoardConcatViewFv */
#pragma push
@ -715,14 +695,9 @@ extern "C" asm void __dt__27J3DShapeMtxBBoardConcatViewFv() {
#pragma pop
/* 80314610-8031461C 30EF50 000C+00 1/0 0/0 0/0 .text getType__27J3DShapeMtxBBoardConcatViewCFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShapeMtxBBoardConcatView::getType() const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShapeMtx/getType__27J3DShapeMtxBBoardConcatViewCFv.s"
u32 J3DShapeMtxBBoardConcatView::getType() const {
return 'SMBB';
}
#pragma pop
/* 8031461C-80314688 30EF5C 006C+00 1/0 0/0 0/0 .text __dt__26J3DShapeMtxMultiConcatViewFv */
#pragma push
@ -736,36 +711,21 @@ extern "C" asm void __dt__26J3DShapeMtxMultiConcatViewFv() {
#pragma pop
/* 80314688-80314694 30EFC8 000C+00 1/0 0/0 0/0 .text getType__26J3DShapeMtxMultiConcatViewCFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShapeMtxMultiConcatView::getType() const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShapeMtx/getType__26J3DShapeMtxMultiConcatViewCFv.s"
u32 J3DShapeMtxMultiConcatView::getType() const {
return 'SMMC';
}
#pragma pop
/* 80314694-8031469C 30EFD4 0008+00 1/0 0/0 0/0 .text
* getUseMtxNum__26J3DShapeMtxMultiConcatViewCFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShapeMtxMultiConcatView::getUseMtxNum() const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShapeMtx/getUseMtxNum__26J3DShapeMtxMultiConcatViewCFv.s"
u32 J3DShapeMtxMultiConcatView::getUseMtxNum() const {
return mUseMtxNum;
}
#pragma pop
/* 8031469C-803146AC 30EFDC 0010+00 1/0 0/0 0/0 .text
* getUseMtxIndex__26J3DShapeMtxMultiConcatViewCFUs */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShapeMtxMultiConcatView::getUseMtxIndex(u16 param_0) const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShapeMtx/getUseMtxIndex__26J3DShapeMtxMultiConcatViewCFUs.s"
u32 J3DShapeMtxMultiConcatView::getUseMtxIndex(u16 no) const {
return mUseMtxIndex[no];
}
#pragma pop
/* 803146AC-803146B0 30EFEC 0004+00 1/0 0/0 0/0 .text
* loadNrmMtx__26J3DShapeMtxMultiConcatViewCFiUs */
@ -785,35 +745,20 @@ extern "C" asm void __dt__16J3DShapeMtxMultiFv() {
#pragma pop
/* 8031470C-80314718 30F04C 000C+00 1/0 0/0 0/0 .text getType__16J3DShapeMtxMultiCFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShapeMtxMulti::getType() const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShapeMtx/getType__16J3DShapeMtxMultiCFv.s"
u32 J3DShapeMtxMulti::getType() const {
return 'SMML';
}
#pragma pop
/* 80314718-80314720 30F058 0008+00 1/0 0/0 0/0 .text getUseMtxNum__16J3DShapeMtxMultiCFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShapeMtxMulti::getUseMtxNum() const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShapeMtx/getUseMtxNum__16J3DShapeMtxMultiCFv.s"
u32 J3DShapeMtxMulti::getUseMtxNum() const {
return mUseMtxNum;
}
#pragma pop
/* 80314720-80314730 30F060 0010+00 1/0 0/0 0/0 .text getUseMtxIndex__16J3DShapeMtxMultiCFUs */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShapeMtxMulti::getUseMtxIndex(u16 param_0) const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShapeMtx/getUseMtxIndex__16J3DShapeMtxMultiCFUs.s"
u32 J3DShapeMtxMulti::getUseMtxIndex(u16 no) const {
return mUseMtxIndex[no];
}
#pragma pop
/* 80314730-8031478C 30F070 005C+00 1/0 0/0 0/0 .text __dt__21J3DShapeMtxConcatViewFv */
#pragma push
@ -828,34 +773,18 @@ extern "C" asm void __dt__21J3DShapeMtxConcatViewFv() {
/* 8031478C-80314798 30F0CC 000C+00 1/0 0/0 0/0 .text getType__21J3DShapeMtxConcatViewCFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShapeMtxConcatView::getType() const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShapeMtx/getType__21J3DShapeMtxConcatViewCFv.s"
u32 J3DShapeMtxConcatView::getType() const {
return 'SMCV';
}
#pragma pop
/* 80314798-803147E0 30F0D8 0048+00 1/0 0/0 0/0 .text __dt__11J3DShapeMtxFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DShapeMtx::~J3DShapeMtx() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShapeMtx/__dt__11J3DShapeMtxFv.s"
J3DShapeMtx::~J3DShapeMtx() {
}
#pragma pop
/* 803147E0-803147EC 30F120 000C+00 1/0 0/0 0/0 .text getType__11J3DShapeMtxCFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShapeMtx::getType() const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShapeMtx/getType__11J3DShapeMtxCFv.s"
u32 J3DShapeMtx::getType() const {
return 'SMTX';
}
#pragma pop
/* 803147EC-80314924 30F12C 0138+00 0/0 1/0 0/0 .text __sinit_J3DShapeMtx_cpp */
#pragma push

View File

@ -4,56 +4,32 @@
//
#include "JSystem/J3DGraphBase/J3DSys.h"
#include "dol2asm.h"
#include "dolphin/gx/GXPixel.h"
#include "dolphin/types.h"
#include "dolphin/gx/GXPixel.h"
#include "dolphin/os/OS.h"
#include "JSystem/J3DGraphBase/J3DTevs.h"
#include "JSystem/J3DGraphBase/J3DTexture.h"
//
// Forward References:
//
extern "C" void __ct__6J3DSysFv();
extern "C" void loadPosMtxIndx__6J3DSysCFiUs();
extern "C" void loadNrmMtxIndx__6J3DSysCFiUs();
extern "C" void setTexCacheRegion__6J3DSysF15_GXTexCacheSize();
extern "C" void drawInit__6J3DSysFv();
extern "C" void reinitGX__6J3DSysFv();
extern "C" void reinitGenMode__6J3DSysFv();
extern "C" void reinitLighting__6J3DSysFv();
extern "C" void reinitTransform__6J3DSysFv();
extern "C" void reinitTexture__6J3DSysFv();
extern "C" void reinitTevStages__6J3DSysFv();
extern "C" void reinitIndStages__6J3DSysFv();
extern "C" void reinitPixelProc__6J3DSysFv();
extern "C" void __sinit_J3DSys_cpp();
extern "C" u8 mCurrentMtx__6J3DSys[48];
extern "C" f32 mCurrentS__6J3DSys[3];
extern "C" f32 mParentS__6J3DSys[3];
extern "C" u8 sTexCoordScaleTable__6J3DSys[64 + 4 /* padding */];
extern "C" extern u8 j3dDefaultViewNo[4 + 4 /* padding */];
//
// External References:
//
extern "C" void J3DFifoLoadTexCached__F11_GXTexMapIDUl15_GXTexCacheSizeUl15_GXTexCacheSize();
extern "C" void makeTexCoordTable__Fv();
extern "C" void makeAlphaCmpTable__Fv();
extern "C" void makeZModeTable__Fv();
extern "C" void makeTevSwapTable__Fv();
extern void J3DFifoLoadTexCached(GXTexMapID, u32, GXTexCacheSize, u32, GXTexCacheSize);
extern void makeTexCoordTable();
extern void makeAlphaCmpTable();
extern void makeZModeTable();
extern void makeTevSwapTable();
extern "C" void GXInvalidateVtxCache();
extern "C" void GXFlush();
extern "C" void GXInitTexCacheRegion();
extern "C" void _savegpr_25();
extern "C" void _savegpr_28();
extern "C" void _restgpr_25();
extern "C" void _restgpr_28();
extern "C" extern u8 const j3dDefaultTexCoordInfo[32];
extern "C" extern u32 j3dDefaultColInfo;
extern "C" extern u32 data_804563C8;
extern "C" extern u32 j3dDefaultTevColor;
extern "C" extern u32 data_804563D8;
extern "C" extern u32 j3dDefaultTevKColor;
extern "C" extern J3DDefaultTexCoordInfo const j3dDefaultTexCoordInfo[8];
extern "C" extern const GXColor j3dDefaultColInfo;
extern "C" extern u8 data_804563C8;
extern "C" extern const GXColorS10 j3dDefaultTevColor;
extern "C" extern const GXColor j3dDefaultTevKColor;
//
// Declarations:
@ -73,69 +49,82 @@ Vec J3DSys::mCurrentS;
Vec J3DSys::mParentS;
/* 80434C2C-80434C70 06194C 0040+04 1/1 17/17 0/0 .bss sTexCoordScaleTable__6J3DSys */
u16 J3DSys::sTexCoordScaleTable[34];
u16 J3DSys::sTexCoordScaleTable[32];
/* 8030FDE8-8030FEC0 30A728 00D8+00 1/1 0/0 0/0 .text __ct__6J3DSysFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DSys::J3DSys() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DSys/__ct__6J3DSysFv.s"
J3DSys::J3DSys() {
makeTexCoordTable();
makeTevSwapTable();
makeAlphaCmpTable();
makeZModeTable();
mFlags = 0;
PSMTXIdentity(mViewMtx);
mDrawMode = 1;
mMaterialMode = 0;
mModel = NULL;
mShape = NULL;
for (u32 i = 0; i < ARRAY_SIZE(mDrawBuffer); i++)
mDrawBuffer[i] = NULL;
mTexture = NULL;
mMatPacket = NULL;
mShapePacket = NULL;
mModelDrawMtx = NULL;
mModelNrmMtx = NULL;
mVtxPos = NULL;
mVtxNrm = NULL;
mVtxCol = NULL;
for (u32 i = 0; i < 32; i += 4) {
sTexCoordScaleTable[i + 0] = 1;
sTexCoordScaleTable[i + 1] = 1;
sTexCoordScaleTable[i + 2] = 0;
sTexCoordScaleTable[i + 3] = 0;
}
}
static inline void J3DFifoLoadIndx(u8 cmd, u16 indx, u16 addr) {
GFX_FIFO(u8) = cmd;
GFX_FIFO(u16) = indx;
GFX_FIFO(u16) = addr;
}
#pragma pop
/* 8030FEC0-8030FEE4 30A800 0024+00 0/0 1/1 0/0 .text loadPosMtxIndx__6J3DSysCFiUs */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DSys::loadPosMtxIndx(int param_0, u16 param_1) const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DSys/loadPosMtxIndx__6J3DSysCFiUs.s"
void J3DSys::loadPosMtxIndx(int addr, u16 indx) const {
J3DFifoLoadIndx(GX_CMD_LOAD_INDX_A, indx, 0xB000 | ((u16)(addr * 0x0C)));
}
#pragma pop
/* 8030FEE4-8030FF0C 30A824 0028+00 0/0 1/1 0/0 .text loadNrmMtxIndx__6J3DSysCFiUs */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DSys::loadNrmMtxIndx(int param_0, u16 param_1) const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DSys/loadNrmMtxIndx__6J3DSysCFiUs.s"
void J3DSys::loadNrmMtxIndx(int addr, u16 indx) const {
J3DFifoLoadIndx(GX_CMD_LOAD_INDX_B, indx, 0x8000 | ((u16)((addr * 0x09) + 0x400)));
}
#pragma pop
/* ############################################################################################## */
/* 803A1DF8-803A1E08 02E458 0010+00 1/1 0/0 0/0 .rodata @695 */
SECTION_RODATA static u8 const lit_695[16] = {
0x00, 0x00, 0x80, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x803A1DF8, &lit_695);
/* 803A1E08-803A1E18 02E468 0010+00 1/1 0/0 0/0 .rodata @696 */
SECTION_RODATA static u8 const lit_696[16] = {
0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x803A1E08, &lit_696);
/* 8030FF0C-803100BC 30A84C 01B0+00 1/1 0/0 0/0 .text setTexCacheRegion__6J3DSysF15_GXTexCacheSize
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DSys::setTexCacheRegion(_GXTexCacheSize param_0) {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DSys/setTexCacheRegion__6J3DSysF15_GXTexCacheSize.s"
}
#pragma pop
void J3DSys::setTexCacheRegion(GXTexCacheSize size) {
const u32 kSize[] = { 0x00008000, 0x00020000, 0x00080000, 0x00000000, };
const u32 kRegionNum[] = { 8, 4, 1, 0 };
/* ############################################################################################## */
/* 803A1E18-803A1E30 02E478 0018+00 1/1 0/0 0/0 .rodata @737 */
SECTION_RODATA static u8 const lit_737[24] = {
0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x803A1E18, &lit_737);
u32 regionNum = kRegionNum[size];
mTexCacheRegionNum = regionNum;
if (!!(mFlags & 0x80000000)) {
for (u32 i = 0; i < regionNum; i++) {
if (!!(i & 1)) {
GXInitTexCacheRegion(&mTexCacheRegion[i], GX_FALSE, i * kSize[size] + 0x80000, size, i * kSize[size], size);
J3DFifoLoadTexCached((GXTexMapID) i, i * kSize[size] + 0x80000, size, i * kSize[size], size);
} else {
GXInitTexCacheRegion(&mTexCacheRegion[i], GX_FALSE, i * kSize[size], size, i * kSize[size] + 0x80000, size);
J3DFifoLoadTexCached((GXTexMapID) i, i * kSize[size], size, i * kSize[size] + 0x80000, size);
}
}
} else {
for (u32 i = 0; i < regionNum; i++) {
GXInitTexCacheRegion(&mTexCacheRegion[i], GX_FALSE, i * kSize[size], size, i * kSize[size] + 0x80000, size);
J3DFifoLoadTexCached((GXTexMapID) i, i * kSize[size], size, i * kSize[size] + 0x80000, size);
}
}
}
/* 803CD8A0-803CD8B0 02A9C0 0010+00 1/1 0/0 0/0 .data NullTexData */
SECTION_DATA static u8 NullTexData[16] = {
@ -143,21 +132,112 @@ SECTION_DATA static u8 NullTexData[16] = {
};
/* 803CD8B0-803CD8E0 02A9D0 0030+00 1/1 0/0 0/0 .data j3dIdentityMtx */
SECTION_DATA static u8 j3dIdentityMtx[48] = {
0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
SECTION_DATA static Mtx j3dIdentityMtx = {
1.0f, 0.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f, 0.0f,
0.0f, 0.0f, 1.0f, 0.0f,
};
/* 803100BC-8031073C 30A9FC 0680+00 0/0 3/3 0/0 .text drawInit__6J3DSysFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DSys::drawInit() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DSys/drawInit__6J3DSysFv.s"
void J3DSys::drawInit() {
GXInvalidateVtxCache();
GXSetCurrentMtx(GX_PNMTX0);
GXSetCullMode(GX_CULL_BACK);
GXSetCoPlanar(GX_FALSE);
GXSetClipMode(GX_FALSE);
GXSetColorUpdate(GX_TRUE);
GXSetDither(GX_TRUE);
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_LO_NOOP);
GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0);
GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE);
GXSetZCompLoc(GX_TRUE);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR1, GX_CLR_RGBA, GX_RGBA8, 0);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_RGBA4, 7);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX1, GX_CLR_RGBA, GX_RGBA4, 7);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX2, GX_CLR_RGBA, GX_RGBA4, 7);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX3, GX_CLR_RGBA, GX_RGBA4, 7);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX4, GX_CLR_RGBA, GX_RGBA4, 7);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX5, GX_CLR_RGBA, GX_RGBA4, 7);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX6, GX_CLR_RGBA, GX_RGBA4, 7);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX7, GX_CLR_RGBA, GX_RGBA4, 7);
GXSetNumIndStages(0);
reinitTexture();
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE2, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE3, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE4, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE5, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE6, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE7, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE8, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE9, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE10, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE11, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE12, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE13, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE14, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE15, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
for (u32 i = 0; i < 10; i++)
GXLoadTexMtxImm(j3dIdentityMtx, GX_TEXMTX0 + i * 3, GX_MTX3x4);
Mtx23 indTexMtx = {
{ 0.5f, 0.0f, 0.0f },
{ 0.0f, 0.5f, 0.0f },
};
u8 i;
for (i = 0; i < 3; i++)
GXSetIndTexMtx((GXIndTexMtxID)(GX_ITM_0 + i), indTexMtx, 1);
GXSetChanMatColor(GX_COLOR0A0, j3dDefaultColInfo);
GXSetChanMatColor(GX_COLOR1A1, j3dDefaultColInfo);
GXSetNumChans(data_804563C8);
GXSetNumTexGens(1);
GXSetNumTevStages(1);
GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE);
GXSetChanCtrl(GX_COLOR1A1, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE);
for (i = 0; i < GX_MAX_TEXMAP; i++)
GXSetTexCoordGen2((GXTexCoordID)i, (GXTexGenType) j3dDefaultTexCoordInfo[i].mTexGenType, (GXTexGenSrc) j3dDefaultTexCoordInfo[i].mTexGenSrc, j3dDefaultTexCoordInfo[i].mTexGenMtx, GX_FALSE, GX_PTIDENTITY);
for (i = 0; i < GX_MAX_INDTEXSTAGE; i++)
GXSetIndTexCoordScale((GXIndTexStageID)i, GX_ITS_1, GX_ITS_1);
for (i = 0; i < GX_MAX_TEVREG; i++)
GXSetTevKColor((GXTevKColorID)i, j3dDefaultTevKColor);
for (i = 0; i < GX_MAX_TEVREG; i++)
GXSetTevColorS10((GXTevRegID)i, j3dDefaultTevColor);
for (i = 0; i < GX_MAX_TEVSTAGE; i++) {
GXSetTevColorIn((GXTevStageID)i, GX_CC_RASC, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO);
GXSetTevColorOp((GXTevStageID)i, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
GXSetTevAlphaIn((GXTevStageID)i, GX_CA_RASA, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO);
GXSetTevAlphaOp((GXTevStageID)i, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
}
for (i = 0; i < GX_MAX_TEVSTAGE; i++)
GXSetTevSwapMode((GXTevStageID)i, GX_TEV_SWAP0, GX_TEV_SWAP0);
GXSetTevSwapModeTable(GX_TEV_SWAP0, GX_CH_RED, GX_CH_GREEN, GX_CH_BLUE, GX_CH_ALPHA);
GXSetTevSwapModeTable(GX_TEV_SWAP1, GX_CH_RED, GX_CH_RED, GX_CH_RED, GX_CH_ALPHA);
GXSetTevSwapModeTable(GX_TEV_SWAP2, GX_CH_GREEN, GX_CH_GREEN, GX_CH_GREEN, GX_CH_ALPHA);
GXSetTevSwapModeTable(GX_TEV_SWAP3, GX_CH_BLUE, GX_CH_BLUE, GX_CH_BLUE, GX_CH_ALPHA);
for (i = 0; i < GX_MAX_TEVSTAGE; i++)
GXSetTevIndirect((GXTevStageID)i, GX_INDTEXSTAGE0, GX_ITF_8, GX_ITB_NONE, GX_ITM_OFF, GX_ITW_OFF, GX_ITW_OFF, GX_FALSE, GX_FALSE, GX_ITBA_OFF);
OSInitFastCast();
setTexCacheRegion(GX_TEXCACHE_32K);
}
#pragma pop
/* 8031073C-8031079C 30B07C 0060+00 0/0 16/16 6/6 .text reinitGX__6J3DSysFv */
void J3DSys::reinitGX() {

View File

@ -5,6 +5,7 @@
#include "JSystem/J3DGraphBase/J3DTevs.h"
#include "JSystem/J3DGraphBase/J3DSys.h"
#include "JSystem/J3DGraphBase/J3DTexture.h"
#include "dol2asm.h"
#include "dolphin/types.h"
@ -12,17 +13,6 @@
// Types:
//
struct J3DTexMtx {
/* 803238C4 */ void load(u32) const;
/* 80323900 */ void calc(f32 const (*)[4]);
/* 80323920 */ void calcTexMtx(f32 const (*)[4]);
/* 80323C0C */ void calcPostTexMtx(f32 const (*)[4]);
/* 80324358 */ void loadTexMtx(u32) const;
/* 803243BC */ void loadPostTexMtx(u32) const;
};
struct J3DTexCoord {};
struct J3DNBTScale {};
struct J3DLightObj {
@ -52,15 +42,14 @@ extern "C" void loadTexMtx__9J3DTexMtxCFUl();
extern "C" void loadPostTexMtx__9J3DTexMtxCFUl();
extern "C" static void J3DGDLoadTexMtxImm__FPA4_fUl13_GXTexMtxType();
extern "C" static void J3DGDLoadPostTexMtxImm__FPA4_fUl();
extern "C" extern u32 j3dDefaultColInfo;
extern "C" extern GXColor j3dDefaultColInfo;
extern "C" extern u32 j3dDefaultAmbInfo;
extern "C" extern u32 data_804563C8;
extern "C" extern u8 data_804563C8;
extern "C" extern u32 j3dDefaultTevOrderInfoNull;
extern "C" extern u32 j3dDefaultIndTexOrderNull;
extern "C" extern u32 j3dDefaultTevColor;
extern "C" extern u32 data_804563D8;
extern "C" extern GXColorS10 j3dDefaultTevColor;
extern "C" extern u8 j3dDefaultIndTexCoordScaleInfo[4];
extern "C" extern u32 j3dDefaultTevKColor;
extern "C" extern GXColor j3dDefaultTevKColor;
extern "C" extern u8 j3dDefaultTevSwapMode[4];
extern "C" extern u32 j3dDefaultTevSwapModeTable;
extern "C" extern u32 j3dDefaultBlendInfo;
@ -73,6 +62,8 @@ extern "C" extern u16 j3dDefaultZModeID[1 + 1 /* padding */];
// External References:
//
extern void J3DGDSetTexImgPtrRaw(_GXTexMapID param_0, u32 param_1);
extern "C" void J3DGDSetLightAttn__F10_GXLightIDffffff();
extern "C" void J3DGDSetLightColor__F10_GXLightID8_GXColor();
extern "C" void J3DGDSetLightPos__F10_GXLightIDfff();
@ -82,7 +73,6 @@ extern "C" void
J3DGDSetTexLookupMode__F11_GXTexMapID14_GXTexWrapMode14_GXTexWrapMode12_GXTexFilter12_GXTexFilterfffUcUc13_GXAnisotropy();
extern "C" void J3DGDSetTexImgAttr__F11_GXTexMapIDUsUs9_GXTexFmt();
extern "C" void J3DGDSetTexImgPtr__F11_GXTexMapIDPv();
extern "C" void J3DGDSetTexImgPtrRaw__F11_GXTexMapIDUl();
extern "C" void J3DGDSetTexTlut__F11_GXTexMapIDUl10_GXTlutFmt();
extern "C" void J3DGDLoadTlut__FPvUl11_GXTlutSize();
extern "C" void J3DGetTextureMtx__FRC17J3DTextureSRTInfoRC3VecPA4_f();
@ -261,14 +251,9 @@ asm void loadTexNo(u32 param_0, u16 const& param_1) {
#pragma pop
/* 8032413C-80324160 31EA7C 0024+00 0/0 2/2 0/0 .text patchTexNo_PtrToIdx__FUlRCUs */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void patchTexNo_PtrToIdx(u32 param_0, u16 const& param_1) {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DTevs/patchTexNo_PtrToIdx__FUlRCUs.s"
void patchTexNo_PtrToIdx(u32 texID, u16 const& idx) {
J3DGDSetTexImgPtrRaw((GXTexMapID) texID, idx);
}
#pragma pop
/* 80324160-80324194 31EAA0 0034+00 0/0 2/2 0/0 .text loadNBTScale__FR11J3DNBTScale */
#pragma push
@ -291,9 +276,15 @@ SECTION_RODATA extern u8 const j3dDefaultLightInfo[52] = {
COMPILER_STRIP_GATE(0x803A1EC8, &j3dDefaultLightInfo);
/* 803A1EFC-803A1F1C 02E55C 0020+00 0/0 5/5 0/0 .rodata j3dDefaultTexCoordInfo */
SECTION_RODATA extern u8 const j3dDefaultTexCoordInfo[32] = {
0x01, 0x04, 0x3C, 0x00, 0x01, 0x05, 0x3C, 0x00, 0x01, 0x06, 0x3C, 0x00, 0x01, 0x07, 0x3C, 0x00,
0x01, 0x08, 0x3C, 0x00, 0x01, 0x09, 0x3C, 0x00, 0x01, 0x0A, 0x3C, 0x00, 0x01, 0x0B, 0x3C, 0x00,
SECTION_RODATA extern J3DDefaultTexCoordInfo const j3dDefaultTexCoordInfo[8] = {
{ GX_MTX2x4, GX_TG_TEX0, GX_IDENTITY, 0 },
{ GX_MTX2x4, GX_TG_TEX1, GX_IDENTITY, 0 },
{ GX_MTX2x4, GX_TG_TEX2, GX_IDENTITY, 0 },
{ GX_MTX2x4, GX_TG_TEX3, GX_IDENTITY, 0 },
{ GX_MTX2x4, GX_TG_TEX4, GX_IDENTITY, 0 },
{ GX_MTX2x4, GX_TG_TEX5, GX_IDENTITY, 0 },
{ GX_MTX2x4, GX_TG_TEX6, GX_IDENTITY, 0 },
{ GX_MTX2x4, GX_TG_TEX7, GX_IDENTITY, 0 },
};
COMPILER_STRIP_GATE(0x803A1EFC, &j3dDefaultTexCoordInfo);
@ -465,13 +456,13 @@ static asm void J3DGDLoadPostTexMtxImm(f32 (*param_0)[4], u32 param_1) {
/* ############################################################################################## */
/* 804563C0-804563C4 0049C0 0004+00 0/0 4/4 0/0 .sdata2 j3dDefaultColInfo */
SECTION_SDATA2 extern u32 j3dDefaultColInfo = 0xFFFFFFFF;
SECTION_SDATA2 extern GXColor j3dDefaultColInfo = { 0xFF, 0xFF, 0xFF, 0xFF };
/* 804563C4-804563C8 0049C4 0004+00 0/0 2/2 0/0 .sdata2 j3dDefaultAmbInfo */
SECTION_SDATA2 extern u32 j3dDefaultAmbInfo = 0x32323232;
/* 804563C8-804563CC 0049C8 0004+00 0/0 1/1 0/0 .sdata2 None */
SECTION_SDATA2 extern u32 data_804563C8 = 0x01000000;
SECTION_SDATA2 extern u8 data_804563C8 = 0x01;
/* 804563CC-804563D0 0049CC 0004+00 0/0 3/3 0/0 .sdata2 j3dDefaultTevOrderInfoNull */
SECTION_SDATA2 extern u32 j3dDefaultTevOrderInfoNull = 0xFFFFFF00;
@ -480,10 +471,7 @@ SECTION_SDATA2 extern u32 j3dDefaultTevOrderInfoNull = 0xFFFFFF00;
SECTION_SDATA2 extern u32 j3dDefaultIndTexOrderNull = 0xFFFF0000;
/* 804563D4-804563D8 0049D4 0004+00 0/0 5/5 0/0 .sdata2 j3dDefaultTevColor */
SECTION_SDATA2 extern u32 j3dDefaultTevColor = 0x00FF00FF;
/* 804563D8-804563DC 0049D8 0004+00 0/0 1/5 0/0 .sdata2 None */
SECTION_SDATA2 extern u32 data_804563D8 = 0x00FF00FF;
SECTION_SDATA2 extern GXColorS10 j3dDefaultTevColor = { 0xFF, 0xFF, 0xFF, 0xFF };
/* 804563DC-804563E0 0049DC 0004+00 0/0 2/2 0/0 .sdata2 j3dDefaultIndTexCoordScaleInfo */
SECTION_SDATA2 extern u8 j3dDefaultIndTexCoordScaleInfo[4] = {
@ -494,7 +482,7 @@ SECTION_SDATA2 extern u8 j3dDefaultIndTexCoordScaleInfo[4] = {
};
/* 804563E0-804563E4 0049E0 0004+00 0/0 5/5 0/0 .sdata2 j3dDefaultTevKColor */
SECTION_SDATA2 extern u32 j3dDefaultTevKColor = 0xFFFFFFFF;
SECTION_SDATA2 extern GXColor j3dDefaultTevKColor = { 0xFF, 0xFF, 0xFF, 0xFF };
/* 804563E4-804563E8 0049E4 0004+00 0/0 2/2 0/0 .sdata2 j3dDefaultTevSwapMode */
SECTION_SDATA2 extern u8 j3dDefaultTevSwapMode[4] = {

View File

@ -7,62 +7,63 @@
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Forward References:
//
extern "C" void loadGX__10J3DTextureCFUs11_GXTexMapID();
extern "C" void entryNum__10J3DTextureFUs();
extern "C" void addResTIMG__10J3DTextureFUsPC7ResTIMG();
//
// External References:
//
extern "C" void* __nwa__FUl();
extern "C" void _savegpr_28();
extern "C" void _restgpr_28();
//
// Declarations:
//
/* ############################################################################################## */
/* 80456388-8045638C 004988 0004+00 1/1 0/0 0/0 .sdata2 @284 */
SECTION_SDATA2 static f32 lit_284 = 0.125f;
/* 8045638C-80456390 00498C 0004+00 1/1 0/0 0/0 .sdata2 @285 */
SECTION_SDATA2 static f32 lit_285 = 1.0f / 100.0f;
/* 80456390-80456398 004990 0008+00 1/1 0/0 0/0 .sdata2 @288 */
SECTION_SDATA2 static f64 lit_288 = 4503601774854144.0 /* cast s32 to float */;
/* 8031204C-803121A4 30C98C 0158+00 0/0 1/1 0/0 .text loadGX__10J3DTextureCFUs11_GXTexMapID */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DTexture::loadGX(u16 param_0, _GXTexMapID param_1) const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DTexture/loadGX__10J3DTextureCFUs11_GXTexMapID.s"
void J3DTexture::loadGX(u16 idx, GXTexMapID texMapID) const {
ResTIMG* timg = getResTIMG(idx);
GXTexObj texObj;
if (!timg->palettesEnabled) {
GXInitTexObj(&texObj, ((u8*)timg) + timg->texDataOffset, timg->width, timg->height,
(GXTexFmt)timg->format, (GXTexWrapMode)timg->wrapS, (GXTexWrapMode)timg->wrapT,
(GXBool)timg->mipmapEnabled);
} else {
GXTlutObj tlutObj;
GXInitTexObjCI(&texObj, ((u8*)timg) + timg->texDataOffset, timg->width, timg->height,
(GXCITexFmt)timg->format, (GXTexWrapMode)timg->wrapS, (GXTexWrapMode)timg->wrapT,
(GXBool)timg->mipmapEnabled, (u32)texMapID);
GXInitTlutObj(&tlutObj, ((u8*)timg) + timg->paletteOffset, (GXTlutFmt)timg->paletteFormat, timg->paletteCount);
GXLoadTlut(&tlutObj, texMapID);
}
const f32 kLODClampScale = 1.0f / 8.0f;
const f32 kLODBiasScale = 1.0f / 100.0f;
GXInitTexObjLOD(&texObj, (GXTexFilter) timg->minFilter, (GXTexFilter) timg->magFilter,
timg->minLOD * kLODClampScale, timg->maxLOD * kLODClampScale, timg->LODBias * kLODBiasScale,
(GXBool) timg->biasClamp, (GXBool) timg->doEdgeLOD, (GXAnisotropy) timg->maxAnisotropy);
GXLoadTexObj(&texObj, texMapID);
}
#pragma pop
/* 803121A4-8031221C 30CAE4 0078+00 1/1 0/0 0/0 .text entryNum__10J3DTextureFUs */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DTexture::entryNum(u16 param_0) {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DTexture/entryNum__10J3DTextureFUs.s"
void J3DTexture::entryNum(u16 num) {
mNum = num;
mpRes = new ResTIMG[num]();
for (s32 i = 0; i < mNum; i++) {
mpRes[i].paletteOffset = 0;
mpRes[i].texDataOffset = 0;
}
}
#pragma pop
/* 8031221C-80312488 30CB5C 026C+00 0/0 1/1 0/0 .text addResTIMG__10J3DTextureFUsPC7ResTIMG */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DTexture::addResTIMG(u16 param_0, ResTIMG const* param_1) {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DTexture/addResTIMG__10J3DTextureFUsPC7ResTIMG.s"
void J3DTexture::addResTIMG(u16 newNum, ResTIMG const* newRes) {
if (newNum == 0)
return;
u16 oldNum = mNum;
ResTIMG* oldRes = mpRes;
entryNum(mNum + newNum);
for (u16 i = 0; i < oldNum; i++) {
mpRes[i] = oldRes[i];
mpRes[i].texDataOffset = (u32)(&oldRes[i]) + mpRes[i].texDataOffset - (u32)(&mpRes[i]);
mpRes[i].paletteOffset = (u32)(&oldRes[i]) + mpRes[i].paletteOffset - (u32)(&mpRes[i]);
}
for (u16 i = oldNum; i < mNum; i++) {
mpRes[i] = newRes[i];
mpRes[i].texDataOffset = (u32)(&newRes[i]) + mpRes[i].texDataOffset - (u32)(&mpRes[i]);
mpRes[i].paletteOffset = (u32)(&newRes[i]) + mpRes[i].paletteOffset - (u32)(&mpRes[i]);
}
}
#pragma pop

View File

@ -12,60 +12,24 @@
#include "dolphin/types.h"
#include "init.h"
//
// Forward References:
//
extern "C" void __ct__13J3DVertexDataFv();
extern "C" void setVertexData__15J3DVertexBufferFP13J3DVertexData();
extern "C" void init__15J3DVertexBufferFv();
extern "C" void __dt__15J3DVertexBufferFv();
extern "C" void setArray__15J3DVertexBufferCFv();
extern "C" void copyLocalVtxPosArray__15J3DVertexBufferFUl();
extern "C" void copyLocalVtxNrmArray__15J3DVertexBufferFUl();
extern "C" void copyLocalVtxArray__15J3DVertexBufferFUl();
extern "C" void allocTransformedVtxPosArray__15J3DVertexBufferFv();
extern "C" void allocTransformedVtxNrmArray__15J3DVertexBufferFv();
extern "C" void __ct__14J3DDrawMtxDataFv();
extern "C" void __dt__14J3DDrawMtxDataFv();
//
// External References:
//
extern "C" void* __nwa__FUli();
extern "C" void __dl__FPv();
extern "C" void _savegpr_24();
extern "C" void _savegpr_28();
extern "C" void _savegpr_29();
extern "C" void _restgpr_24();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
//
// Declarations:
//
/* 80310EF8-80310F78 30B838 0080+00 0/0 1/1 0/0 .text __ct__13J3DVertexDataFv */
J3DVertexData::J3DVertexData() {
mVtxNum = 0;
mNrmNum = 0;
mColNum = 0;
field_0xc = 0;
field_0x10 = 0;
mTexCoordNum = 0;
mPacketNum = 0;
mVtxAttrFmtList = NULL;
mVtxPosArray = NULL;
mVtxNrmArray = NULL;
mVtxNBTArray = NULL;
for (int i = 0; i < 2; i++) {
for (int i = 0; i < ARRAY_SIZE(mVtxColorArray); i++)
mVtxColorArray[i] = NULL;
}
for (int i = 0; i < 8; i++) {
for (int i = 0; i < ARRAY_SIZE(mVtxTexCoordArray); i++)
mVtxTexCoordArray[i] = NULL;
}
mVtxPosFrac = 0;
mVtxPosType = GX_F32;
@ -130,13 +94,13 @@ void J3DVertexBuffer::setArray() const {
/* 80311090-803111B0 30B9D0 0120+00 1/1 0/0 0/0 .text copyLocalVtxPosArray__15J3DVertexBufferFUl
*/
s32 J3DVertexBuffer::copyLocalVtxPosArray(u32 flags) {
if (flags & 1) {
s32 J3DVertexBuffer::copyLocalVtxPosArray(u32 flag) {
if (flag & 1) {
for (int i = 0; i < 2; i++) {
mVtxPosArray[i] = new (0x20) VertexPosition[mVtxData->getVtxNum()];
if (mVtxPosArray[i] == NULL) {
return 4;
return kJ3DError_Alloc;
}
memcpy(mVtxPosArray[i], mVtxData->getVtxPosArray(), mVtxData->getVtxNum() * 12);
DCStoreRange(mVtxPosArray[i], mVtxData->getVtxNum() * 12);
@ -147,24 +111,25 @@ s32 J3DVertexBuffer::copyLocalVtxPosArray(u32 flags) {
if (mVtxPosArray[1] == NULL) {
mVtxPosArray[1] = new (0x20) VertexPosition[mVtxData->getVtxNum()];
if (mVtxPosArray[1] == NULL) {
return 4;
return kJ3DError_Alloc;
}
}
memcpy(mVtxPosArray[1], mVtxData->getVtxPosArray(), mVtxData->getVtxNum() * 12);
DCStoreRange(mVtxPosArray[1], mVtxData->getVtxNum() * 12);
}
return 0;
return kJ3DError_Success;
}
/* 803111B0-803112D0 30BAF0 0120+00 1/1 0/0 0/0 .text copyLocalVtxNrmArray__15J3DVertexBufferFUl
*/
s32 J3DVertexBuffer::copyLocalVtxNrmArray(u32 param_0) {
if (param_0 & 1) {
s32 J3DVertexBuffer::copyLocalVtxNrmArray(u32 flag) {
if (flag & 1) {
for (int i = 0; i < 2; i++) {
mVtxNrmArray[i] = new (0x20) VertexNormal[mVtxData->getNrmNum()];
if (mVtxNrmArray[i] == NULL) {
return 4;
return kJ3DError_Alloc;
}
memcpy(mVtxNrmArray[i], mVtxData->getVtxNrmArray(), mVtxData->getNrmNum() * 12);
DCStoreRange(mVtxNrmArray[i], mVtxData->getNrmNum() * 12);
@ -175,119 +140,99 @@ s32 J3DVertexBuffer::copyLocalVtxNrmArray(u32 param_0) {
if (mVtxNrmArray[1] == NULL) {
mVtxNrmArray[1] = new (0x20) VertexNormal[mVtxData->getNrmNum()];
if (mVtxNrmArray[1] == NULL) {
return 4;
return kJ3DError_Alloc;
}
}
memcpy(mVtxNrmArray[1], mVtxData->getVtxNrmArray(), mVtxData->getNrmNum() * 12);
DCStoreRange(mVtxNrmArray[1], mVtxData->getNrmNum() * 12);
}
return 0;
return kJ3DError_Success;
}
/* 803112D0-80311478 30BC10 01A8+00 0/0 1/1 0/0 .text copyLocalVtxArray__15J3DVertexBufferFUl */
#ifdef NONMATCHING
s32 J3DVertexBuffer::copyLocalVtxArray(u32 param_0) {
void* local_30[5];
s32 J3DVertexBuffer::copyLocalVtxArray(u32 flag) {
void* oldPosArray[2];
void* oldNrmArray[2];
for (int i = 0; i < 2; i++) {
local_30[i] = mVtxPosArray[i];
}
for (int i = 0; i < 2; i++)
oldPosArray[i] = mVtxPosArray[i];
if (~param_0 & 2) {
s32 tmp = copyLocalVtxPosArray(param_0);
if (tmp != 0) {
if (~flag & 2) {
s32 ret = copyLocalVtxPosArray(flag);
if (ret != 0) {
for (int i = 0; i < 2; i++) {
if (local_30[i + 2] != mVtxPosArray[i]) {
if (mVtxPosArray[i] != mVtxData->getVtxPosArray()) {
if (oldPosArray[i] != mVtxPosArray[i]) {
if (mVtxPosArray[i] != mVtxData->getVtxPosArray())
delete mVtxPosArray[i];
}
mVtxPosArray[i] = local_30[i + 2];
mVtxPosArray[i] = oldPosArray[i];
}
}
return tmp;
return ret;
}
} else {
void* vtxPosArray = mVtxData->getVtxPosArray();
mVtxPosArray[1] = vtxPosArray;
mVtxPosArray[0] = vtxPosArray;
mVtxPosArray[0] = mVtxPosArray[1] = mVtxData->getVtxPosArray();
}
for (int i = 0; i < 2; i++) {
local_30[i] = mVtxNrmArray[i];
}
for (int i = 0; i < 2; i++)
oldNrmArray[i] = mVtxNrmArray[i];
if (~param_0 & 4) {
s32 tmp = copyLocalVtxNrmArray(param_0);
if (tmp != 0) {
if (~flag & 4) {
s32 ret = copyLocalVtxNrmArray(flag);
if (ret != 0) {
for (int i = 0; i < 2; i++) {
if (local_30[i + 2] != mVtxPosArray[i]) {
if (mVtxPosArray[i] != mVtxData->getVtxPosArray()) {
if (oldPosArray[i] != mVtxPosArray[i]) {
if (mVtxPosArray[i] != mVtxData->getVtxPosArray())
delete mVtxPosArray[i];
}
mVtxPosArray[i] = local_30[i + 2];
mVtxPosArray[i] = oldPosArray[i];
}
if (local_30[i] != mVtxNrmArray[i]) {
if (mVtxNrmArray[i] != mVtxData->getVtxNrmArray()) {
if (oldNrmArray[i] != mVtxNrmArray[i]) {
if (mVtxNrmArray[i] != mVtxData->getVtxNrmArray())
delete mVtxNrmArray[i];
}
mVtxNrmArray[i] = local_30[i];
mVtxNrmArray[i] = oldNrmArray[i];
}
}
return tmp;
return ret;
}
} else {
void* vtxNrmArray = mVtxData->getVtxNrmArray();
mVtxNrmArray[1] = vtxNrmArray;
mVtxNrmArray[0] = vtxNrmArray;
mVtxNrmArray[0] = mVtxNrmArray[1] = mVtxData->getVtxNrmArray();
}
return 0;
return kJ3DError_Success;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm s32 J3DVertexBuffer::copyLocalVtxArray(u32 param_0) {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DVertex/copyLocalVtxArray__15J3DVertexBufferFUl.s"
}
#pragma pop
#endif
/* 80311478-8031152C 30BDB8 00B4+00 0/0 1/1 0/0 .text
* allocTransformedVtxPosArray__15J3DVertexBufferFv */
s32 J3DVertexBuffer::allocTransformedVtxPosArray() {
if (mTransformedVtxPosArray[0] != NULL && mTransformedVtxPosArray[1] != NULL) {
return 0;
}
if (mTransformedVtxPosArray[0] != NULL && mTransformedVtxPosArray[1] != NULL)
return kJ3DError_Success;
for (int i = 0; i < 2; i++) {
if (i == 0 || mTransformedVtxPosArray[i] == NULL) {
mTransformedVtxPosArray[i] = new (0x20) VertexPosition[mVtxData->getVtxNum()];
if (mTransformedVtxPosArray[i] == NULL) {
return 4;
}
if (mTransformedVtxPosArray[i] == NULL)
return kJ3DError_Alloc;
}
}
return 0;
return kJ3DError_Success;
}
/* 8031152C-803115E0 30BE6C 00B4+00 0/0 1/1 0/0 .text
* allocTransformedVtxNrmArray__15J3DVertexBufferFv */
s32 J3DVertexBuffer::allocTransformedVtxNrmArray() {
if (mTransformedVtxNrmArray[0] != NULL && mTransformedVtxNrmArray[1] != NULL) {
return 0;
}
if (mTransformedVtxNrmArray[0] != NULL && mTransformedVtxNrmArray[1] != NULL)
return kJ3DError_Success;
for (int i = 0; i < 2; i++) {
if (i == 0 || mTransformedVtxNrmArray[i] == NULL) {
mTransformedVtxNrmArray[i] = new (0x20) VertexNormal[mVtxData->getNrmNum()];
if (mTransformedVtxNrmArray[i] == NULL) {
return 4;
}
if (mTransformedVtxNrmArray[i] == NULL)
return kJ3DError_Alloc;
}
}
return 0;
return kJ3DError_Success;
}
/* 803115E0-803115F4 30BF20 0014+00 0/0 1/1 0/0 .text __ct__14J3DDrawMtxDataFv */

View File

@ -134,7 +134,6 @@ extern "C" void func_80280588();
extern "C" void JPAGetXYZRotateMtx__FsssPA4_f();
extern "C" void alloc__7JKRHeapFUliP7JKRHeap();
extern "C" void load__10JUTTextureF11_GXTexMapID();
extern "C" void GXSetMisc();
extern "C" void __save_gpr();
extern "C" void _savegpr_25();
extern "C" void _savegpr_27();

View File

@ -3,7 +3,6 @@
// Translation Unit: GDGeometry
//
#include "dolphin/gd/GDGeometry.h"
#include "dol2asm.h"
#include "dolphin/types.h"

View File

@ -160,7 +160,6 @@ extern "C" void getNextData__7dTres_cFPQ27dTres_c15typeGroupData_c();
extern "C" void getNextData__7dTres_cFPCQ27dTres_c15typeGroupData_c();
extern "C" void* __nw__FUl();
extern "C" void GXClearVtxDesc();
extern "C" void GXSetMisc();
extern "C" void GXInvalidateTexAll();
extern "C" void _savegpr_20();
extern "C" void _savegpr_24();