From 69d8d66c009f7e3041c9364b2cb1d82e1b1a69b8 Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Sat, 23 Apr 2022 16:18:41 -0700 Subject: [PATCH] J3DSys::drawInit --- .../J3DGraphBase/J3DSys/drawInit__6J3DSysFv.s | 435 ------------------ libs/JSystem/J3DGraphBase/J3DMatBlock.cpp | 2 +- libs/JSystem/J3DGraphBase/J3DSys.cpp | 160 ++++--- libs/JSystem/J3DGraphBase/J3DTevs.cpp | 8 +- 4 files changed, 111 insertions(+), 494 deletions(-) delete mode 100644 asm/JSystem/J3DGraphBase/J3DSys/drawInit__6J3DSysFv.s diff --git a/asm/JSystem/J3DGraphBase/J3DSys/drawInit__6J3DSysFv.s b/asm/JSystem/J3DGraphBase/J3DSys/drawInit__6J3DSysFv.s deleted file mode 100644 index c9f20aad5e6..00000000000 --- a/asm/JSystem/J3DGraphBase/J3DSys/drawInit__6J3DSysFv.s +++ /dev/null @@ -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 diff --git a/libs/JSystem/J3DGraphBase/J3DMatBlock.cpp b/libs/JSystem/J3DGraphBase/J3DMatBlock.cpp index 3d3bf1f4c50..d4814e1ae34 100644 --- a/libs/JSystem/J3DGraphBase/J3DMatBlock.cpp +++ b/libs/JSystem/J3DGraphBase/J3DMatBlock.cpp @@ -605,7 +605,7 @@ extern "C" extern u8 j3dZModeTable[96]; extern "C" extern u8 __GDCurrentDL[4]; extern "C" extern GXColor j3dDefaultColInfo; extern "C" extern u32 j3dDefaultAmbInfo; -extern "C" extern u32 j3dDefaultTevColor; +extern "C" extern GXColorS10 j3dDefaultTevColor; extern "C" extern GXColor j3dDefaultTevKColor; // diff --git a/libs/JSystem/J3DGraphBase/J3DSys.cpp b/libs/JSystem/J3DGraphBase/J3DSys.cpp index 96487ddaefb..1a19fd9cd6d 100644 --- a/libs/JSystem/J3DGraphBase/J3DSys.cpp +++ b/libs/JSystem/J3DGraphBase/J3DSys.cpp @@ -6,8 +6,11 @@ #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" @@ -15,47 +18,17 @@ // 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 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 _savegpr_25(); -extern "C" void _savegpr_28(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_28(); + extern "C" extern J3DDefaultTexCoordInfo const j3dDefaultTexCoordInfo[8]; extern "C" extern const GXColor j3dDefaultColInfo; extern "C" extern u8 data_804563C8; -extern "C" extern u32 j3dDefaultTevColor; -extern "C" extern u32 data_804563D8; +extern "C" extern const GXColorS10 j3dDefaultTevColor; extern "C" extern const GXColor j3dDefaultTevKColor; // @@ -153,35 +126,118 @@ void J3DSys::setTexCacheRegion(GXTexCacheSize size) { } } -/* ############################################################################################## */ -/* 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); - /* 803CD8A0-803CD8B0 02A9C0 0010+00 1/1 0/0 0/0 .data NullTexData */ SECTION_DATA static u8 NullTexData[16] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; /* 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() { diff --git a/libs/JSystem/J3DGraphBase/J3DTevs.cpp b/libs/JSystem/J3DGraphBase/J3DTevs.cpp index 57a42fcc4bf..6937f2988ea 100644 --- a/libs/JSystem/J3DGraphBase/J3DTevs.cpp +++ b/libs/JSystem/J3DGraphBase/J3DTevs.cpp @@ -47,8 +47,7 @@ extern "C" extern u32 j3dDefaultAmbInfo; 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 GXColor j3dDefaultTevKColor; extern "C" extern u8 j3dDefaultTevSwapMode[4]; @@ -472,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] = {