progress (fn_1_8470)

This commit is contained in:
CreateSource 2024-06-22 14:26:44 -04:00
parent 5deb307cb0
commit 8f341ce7b9
2 changed files with 381 additions and 18 deletions

View file

@ -66,6 +66,7 @@ typedef struct _unkStruct5 { // could be unkStruct3
typedef void (*m440Func5)(omObjData*, unkStruct5*, Mtx*);
typedef void (*m440Func6)(struct _unkStruct6*);
typedef void (*m440Func14)(struct _unkStruct14*);
typedef struct _unkStruct6 {
s16 unk0;
@ -77,7 +78,7 @@ typedef struct _unkStruct6 {
Vec* unk10;
Vec* unk14;
Vec* unk18;
struct _unkStruct9* unk1C;
HsfVector2f* unk1C;
s32 unk20;
struct _unkStruct8* unk24;
HsfMaterial* unk28;
@ -117,11 +118,6 @@ typedef struct _unkStruct8 {
Vec unkC4;
} unkStruct8; // sizeof 0xD0
typedef struct _unkStruct9 {
f32 unk0;
f32 unk4;
} unkStruct9; // sizeof 0x8
typedef struct _unkStruct10 {
s16 unk0;
s16 unk2;
@ -131,6 +127,62 @@ typedef struct _unkStruct10 {
char unk24[0xC];
} unkStruct10; // sizeof 0x30
typedef struct _unkStruct12 {
char unk0[0xA];
u8 unkA;
u8 unkB[3];
u8 unkE[3];
char unk12[0x2];
f32 unk14;
char unk18[0x4];
f32 unk1C;
char unk20[0x10];
u32 unk30;
u32 unk34;
s32* unk38;
} unkStruct12;
typedef struct _unkStruct13 {
char unk0[0xA];
u8 unkA;
char unkB[0x15];
f32 unk20;
char unk24[0x40];
u32 unk64;
u32 unk68;
char unk6C[0x14];
struct _unkStruct15* unk80;
} unkStruct13; // sizeof 0x84
typedef struct _unkStruct14 {
char unk0[0xC];
void* unkC;
char unk10[0x4];
void* unk14;
char unk18[0x4];
void* unk1C;
char unk20[0x8];
unkStruct12* unk28;
unkStruct13* unk2C;
void* unk30;
u32 unk34;
m440Func14 unk38;
s16 unk3C;
} unkStruct14;
typedef struct _unkStruct15 {
char unk0[0x8];
u8 unk8;
u8 unk9;
s16 unkA;
s16 unkC;
s16 unkE;
char unk10[0x4];
void* unk14;
char unk18[0x4];
void* unk1C;
} unkStruct15;
////// BSS //////
// object.c
@ -140,6 +192,8 @@ extern omObjData* lbl_1_bss_6C;
extern omObjData* lbl_1_bss_68;
extern unkStruct6* lbl_1_bss_64;
extern s16 lbl_1_bss_60;
extern Mtx lbl_1_bss_30;
extern s16 lbl_1_bss_2C;
extern s16 lbl_1_bss_10[10];
extern s16 lbl_1_bss_E;
extern u8 lbl_1_bss_C;
@ -224,5 +278,9 @@ extern void fn_1_5C2C(s16, HsfObject*, unkStruct6*, u16);
extern void fn_1_6554(unkStruct6*, HsfObject*);
extern void fn_1_6B58(unkStruct6*, HsfObject*);
extern void fn_1_71FC(unkStruct6*, Vec*, s16, Vec);
extern void fn_1_7934(unkStruct6*, unkStruct8*, Vec*);
extern void fn_1_7D60(unkStruct15*, unkStruct13*, s16);
extern void fn_1_806C(ModelData* arg0, Mtx arg1);
// ...
extern void fn_1_91A4(Vec*, Vec*, Vec*, f32[5]);
extern f32 fn_1_93C0(f32, f32, f32);

View file

@ -14,8 +14,8 @@
#include "game/sprite.h"
// prototypes
void fn_1_7934(unkStruct6*, unkStruct8*, Vec*);
void fn_1_806C(ModelData*, f32[3][4]);
void fn_1_8470(unkStruct12*, unkStruct13*);
void fn_1_8AC4(Mtx);
void fn_1_91A4(Vec*, Vec*, Vec*, f32[5]);
f32 fn_1_93C0(f32, f32, f32);
unkStruct4* fn_1_942C(s16, Vec*, Vec*, f32, GXColor*);
@ -36,6 +36,8 @@ omObjData* lbl_1_bss_6C;
omObjData* lbl_1_bss_68;
unkStruct6* lbl_1_bss_64;
s16 lbl_1_bss_60;
Mtx lbl_1_bss_30;
s16 lbl_1_bss_2C;
s16 lbl_1_bss_10[10];
s16 lbl_1_bss_E;
u8 lbl_1_bss_C;
@ -667,6 +669,7 @@ s16 lbl_1_data_F0[2] = {0, 0};
s32 lbl_1_data_F4[4] = { 20, 60, 100, 140 };
s16 lbl_1_data_104[2] = {0, 0};
s16 lbl_1_data_108[2] = {0, 0};
s16 lbl_1_data_10C[9] = { 0, 3, 1, 0, 2, 3, 1, 3, 2 };
void fn_1_2B04(omObjData* object) {
f32 temp_f31;
@ -1276,7 +1279,7 @@ void fn_1_5C2C(s16 arg0, HsfObject* arg1, unkStruct6* arg2, u16 arg3) {
Vec* var_r21;
Vec* var_r19;
s16 var_r20;
unkStruct9* var_r22;
HsfVector2f* var_r22;
s16 var_r24;
s16 var_r23;
HsfTransform* var_r25;
@ -1339,8 +1342,8 @@ void fn_1_5C2C(s16 arg0, HsfObject* arg1, unkStruct6* arg2, u16 arg3) {
if (arg2->unk28->numAttrs != 0) {
var_r23 = arg2->unk24[var_r30].unk0[var_r28].unk6;
var_r27 = var_r23;
arg2->unk1C[var_r27].unk0 = var_r22[var_r23].unk0;
arg2->unk1C[var_r27].unk4 = var_r22[var_r23].unk4;
arg2->unk1C[var_r27].x = var_r22[var_r23].y;
arg2->unk1C[var_r27].x = var_r22[var_r23].y;
}
}
fn_1_91A4(&sp44[0], &sp44[1], &sp44[2], arg2->unk24[var_r30].unk68);
@ -1637,17 +1640,17 @@ void fn_1_71FC(unkStruct6* arg0, Vec* arg1, s16 arg2, Vec arg3) {
for (var_r31 = 0; var_r31 < 3; var_r31++) {
var_f31 += (sp28[sp10[var_r31][0]].x - sp28[sp10[var_r31][1]].x < 0.0f)
? -(sp28[sp10[var_r31][0]].x - sp28[sp10[var_r31][1]].x)
: (sp28[sp10[var_r31][0]].x - sp28[sp10[var_r31][1]].x);
? -(sp28[sp10[var_r31][0]].x - sp28[sp10[var_r31][1]].x)
: (sp28[sp10[var_r31][0]].x - sp28[sp10[var_r31][1]].x);
var_f30 += (sp28[sp10[var_r31][0]].y - sp28[sp10[var_r31][1]].y < 0.0f)
? -(sp28[sp10[var_r31][0]].y - sp28[sp10[var_r31][1]].y)
: (sp28[sp10[var_r31][0]].y - sp28[sp10[var_r31][1]].y);
? -(sp28[sp10[var_r31][0]].y - sp28[sp10[var_r31][1]].y)
: (sp28[sp10[var_r31][0]].y - sp28[sp10[var_r31][1]].y);
var_f29 += (sp28[sp10[var_r31][0]].z - sp28[sp10[var_r31][1]].z < 0.0f)
? -(sp28[sp10[var_r31][0]].z - sp28[sp10[var_r31][1]].z)
: (sp28[sp10[var_r31][0]].z - sp28[sp10[var_r31][1]].z);
? -(sp28[sp10[var_r31][0]].z - sp28[sp10[var_r31][1]].z)
: (sp28[sp10[var_r31][0]].z - sp28[sp10[var_r31][1]].z);
}
var_f31 *= 0.3333f;
var_f30 *= 0.3333f;
@ -1659,4 +1662,306 @@ void fn_1_71FC(unkStruct6* arg0, Vec* arg1, s16 arg2, Vec arg3) {
arg1->x = (sp28[0].x - (sp1C.x * var_f27));
arg1->y = (sp28[0].y - (sp1C.y * var_f27));
arg1->z = (sp28[0].z - (sp1C.z * var_f27));
}
}
void fn_1_7934(unkStruct6* arg0, unkStruct8* arg1, Vec* arg2) {
Vec sp2C[3];
f32 sp18[5];
s16 sp10[4];
s16 sp8[4];
s16 var_r28;
Vec* temp_r30;
Vec* temp_r4;
Vec* temp_r4_2;
Vec* temp_r4_3;
arg1->unk88.x = arg1->unk88.y = arg1->unk88.z = 1.0f;
arg1->unk94.x = arg1->unk94.y = arg1->unk94.z = 0.0f;
arg1->unkA0.x = arg1->unkA0.y = arg1->unkA0.z = 0.0f;
arg1->unkAC.x = arg1->unkAC.y = arg1->unkAC.z = 0.0f;
arg1->unkB8.x = arg1->unkB8.y = arg1->unkB8.z = 0.0f;
arg1->unkC4.x = arg1->unkC4.y = arg1->unkC4.z = 0.0f;
if ((arg0->unk2 & 2) != 0) {
arg2->x *= 0.25f;
arg2->y *= 0.25f;
arg2->z *= 0.25f;
} else {
arg2->x /= 3.0f;
arg2->y /= 3.0f;
arg2->z /= 3.0f;
}
arg1->unk7C.x = arg2->x;
arg1->unk7C.y = arg2->y;
arg1->unk7C.z = arg2->z;
if ((arg0->unk2 & 2) != 0) {
if ((arg0->unk2 & 1) != 0) {
sp10[0] = arg1->unk0[0].unk0;
sp10[1] = arg1->unk0[1].unk0;
sp10[2] = arg1->unk0[2].unk0;
} else {
sp10[0] = arg1->unk18[0];
sp10[1] = arg1->unk18[1];
sp10[2] = arg1->unk18[2];
}
sp10[3] = arg1->unk1E;
sp8[0] = arg1->unk0[0].unk6;
sp8[1] = arg1->unk0[1].unk6;
sp8[2] = arg1->unk0[2].unk6;
sp8[3] = arg1->unk0[0].unk6;
for (var_r28 = 0; var_r28 < 9; var_r28++) {
arg1->unk20[var_r28].unk0 = sp10[lbl_1_data_10C[var_r28]];
arg1->unk20[var_r28].unk6 = sp8[lbl_1_data_10C[var_r28]];
}
temp_r30 = &arg0->unk14[arg1->unk1E];
temp_r30->x = temp_r30->y = temp_r30->z = 0.0f;
for (var_r28 = 0; var_r28 < 3; var_r28++) {
sp2C[0] = arg0->unkC[sp10[lbl_1_data_10C[var_r28]]];
sp2C[1] = arg0->unkC[sp10[lbl_1_data_10C[var_r28 + 1]]];
sp2C[2] = arg0->unkC[sp10[lbl_1_data_10C[var_r28 + 2]]];
fn_1_91A4(&sp2C[0], &sp2C[1], &sp2C[2], sp18);
temp_r30->x += sp18[0];
temp_r30->y += sp18[1];
temp_r30->z += sp18[2];
}
temp_r30->x *= 0.3333f;
temp_r30->y *= 0.3333f;
temp_r30->z *= 0.3333f;
}
}
void fn_1_7D60(unkStruct15* arg0, unkStruct13* arg1, s16 arg2) {
GXTexObj sp1C;
GXTlutObj sp10;
s32 sp8;
s16 temp_r29;
s16 temp_r28;
s16 var_r27;
s16 var_r26;
if (!arg0) {
OSReport("Error: No Texture\n");
return;
}
temp_r29 = arg0->unkA;
temp_r28 = arg0->unkC;
var_r27 = (arg1->unk64 == 1) ? 1 : 0;
var_r26 = (arg1->unk68 == 1) ? 1 : 0;
switch (arg0->unk8) {
case 6:
GXInitTexObj(&sp1C, arg0->unk1C, temp_r29, temp_r28, 6, var_r27, var_r26, 0);
break;
case 4:
GXInitTexObj(&sp1C, arg0->unk1C, temp_r29, temp_r28, 4, var_r27, var_r26, 0);
break;
case 5:
GXInitTexObj(&sp1C, arg0->unk1C, temp_r29, temp_r28, 5, var_r27, var_r26, 0);
break;
case 9:
if (arg0->unk9 < 8) {
GXInitTlutObj(&sp10, arg0->unk14, GX_TL_RGB565, arg0->unkE);
GXLoadTlut(&sp10, arg2);
GXInitTexObjCI(&sp1C, arg0->unk1C, temp_r29, temp_r28, GX_TF_C4, var_r27, var_r26, 0, arg2);
} else {
GXInitTlutObj(&sp10, arg0->unk14, GX_TL_RGB565, arg0->unkE);
GXLoadTlut(&sp10, arg2);
GXInitTexObjCI(&sp1C, arg0->unk1C, temp_r29, temp_r28, GX_TF_C8, var_r27, var_r26, 0, arg2);
}
break;
case 10:
if (arg0->unk9 < 8) {
GXInitTlutObj(&sp10, arg0->unk14, GX_TL_RGB5A3, arg0->unkE);
GXLoadTlut(&sp10, arg2);
GXInitTexObjCI(&sp1C, arg0->unk1C, temp_r29, temp_r28, GX_TF_C4, var_r27, var_r26, 0, arg2);
} else {
GXInitTlutObj(&sp10, arg0->unk14, GX_TL_RGB5A3, arg0->unkE);
GXLoadTlut(&sp10, arg2);
GXInitTexObjCI(&sp1C, arg0->unk1C, temp_r29, temp_r28, GX_TF_C8, var_r27, var_r26, 0, arg2);
}
break;
default:
OSReport("Error: Texture format\n");
return;
}
GXInitTexObjLOD(&sp1C, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, 0, 0, GX_ANISO_1);
GXLoadTexObj(&sp1C, arg2);
return;
}
void fn_1_806C(ModelData* arg0, Mtx arg1) {
Mtx sp14;
GXColor sp10;
unkStruct13* temp_r29;
unkStruct14* temp_r31;
m440Func14 temp_r27;
temp_r31 = (unkStruct14*)arg0->unk_120;
if (((u8)omPauseChk() == 0) && (temp_r31->unk38)) {
temp_r27 = temp_r31->unk38;
temp_r27(temp_r31);
}
GXLoadPosMtxImm(arg1, 0);
PSMTXInvXpose(arg1, sp14);
GXLoadNrmMtxImm(sp14, 0);
fn_1_8AC4(arg1);
sp10.r = (temp_r31->unk28->unkB[0] * arg0->unk_58.x);
sp10.g = (temp_r31->unk28->unkB[1] * arg0->unk_58.z);
sp10.b = (temp_r31->unk28->unkB[2] * arg0->unk_58.y);
sp10.a = 0xFF;
GXSetChanAmbColor(GX_COLOR0A0, sp10);
sp10.r = temp_r31->unk28->unkE[0];
sp10.g = temp_r31->unk28->unkE[1];
sp10.b = temp_r31->unk28->unkE[2];
sp10.a = 0xFF;
GXSetChanMatColor(GX_COLOR0A0, sp10);
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0);
GXSetArray(GX_VA_POS, temp_r31->unkC, 0xCU);
GXSetVtxDesc(GX_VA_NRM, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_TEX_S, GX_RGBA6, 0);
GXSetArray(GX_VA_NRM, temp_r31->unk14, 0xCU);
lbl_1_bss_C = temp_r31->unk3C;
if (temp_r31->unk28->unk34 == 0) {
GXSetNumTevStages(1);
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ONE, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO);
GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV);
GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_KONST, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO);
GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV);
GXSetNumTexGens(0);
GXSetNumChans(0);
} else {
GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0);
GXSetArray(GX_VA_TEX0, temp_r31->unk1C, 8);
temp_r29 = &temp_r31->unk2C[temp_r31->unk28->unk38[0]];
fn_1_7D60(temp_r29->unk80, temp_r29, 0);
lbl_1_bss_2C = 1;
HuSprTexLoad(*hiliteAnim, 0, lbl_1_bss_2C, GX_CLAMP, GX_CLAMP, GX_LINEAR);
fn_1_8470(temp_r31->unk28, temp_r29);
}
GXSetZMode(1, GX_LEQUAL, 1);
GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1);
GXSetZCompLoc(0);
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP);
GXCallDisplayList(temp_r31->unk30, temp_r31->unk34);
}
void fn_1_8470(unkStruct12* arg0, unkStruct13* arg1) {
ModelData sp40;
Mtx sp10;
GXColor spC;
GXColor sp8;
f32 var_f30;
f32 var_f31;
s16 temp_r29;
u16 var_r31;
u32 temp_r24;
u16 var_r28;
u16 var_r27;
s32 var_r25;
sp40.attr = 0x20000;
temp_r24 = arg0->unk30;
if ((arg0->unkA == 2) || (arg0->unkA == 3)) {
var_r27 = 1;
} else {
var_r27 = 0;
if ((arg0->unkA == 0) || (arg0->unkA == 5)) {
var_r25 = 0;
} else {
var_r25 = 1;
}
}
var_r28 = var_r31 = 1;
GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x3C, 0, 0x7D);
if (1.0f == arg1->unk20) {
if (arg1->unkA == 0) {
GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR);
GXSetTevOrder(var_r31, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0);
GXSetTevColorIn(var_r31, GX_CC_CPREV, GX_CC_TEXC, GX_CC_TEXA, GX_CC_ZERO);
GXSetTevColorOp(var_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV);
GXSetTevAlphaIn(var_r31, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST);
GXSetTevAlphaOp(var_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV);
var_r31++;
} else {
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0);
GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO);
GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV);
GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_TEXA, GX_CA_RASA, GX_CA_ZERO);
GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV);
}
} else {
GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR);
}
if (var_r27 != 0) {
if (((sp40.attr & 0x20000) != 0) || ((temp_r24 & 0x100) != 0)) {
spC.a = lbl_1_bss_C;
GXSetTevColor(GX_TEVREG0, spC);
GXSetTexCoordGen2(var_r28, GX_TG_MTX2x4, GX_TG_NRM, 0x24, 0, 0x7D);
GXSetTevOrder(var_r31, var_r28, lbl_1_bss_2C, GX_COLOR0A0);
GXSetTevColorIn(var_r31, GX_CC_ZERO, GX_CC_TEXC, GX_CC_ONE, GX_CC_CPREV);
GXSetTevColorOp(var_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV);
GXSetTevAlphaIn(var_r31, GX_CA_ZERO, GX_CA_APREV, GX_CA_A0, GX_CA_ZERO);
GXSetTevAlphaOp(var_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 0, GX_TEVPREV);
var_f31 = 6.0f * (arg0->unk14 / 300.0f);
if (var_f31 < 0.1) {
var_f31 = 0.1f;
}
PSMTXCopy(lbl_1_bss_30, sp10);
mtxScaleCat(sp10, var_f31, var_f31, var_f31);
GXLoadTexMtxImm(sp10, 0x24, GX_MTX2x4);
var_r31++;
var_r28++;
var_r27 = 0;
var_r25 = 1;
} else {
if (1.0f == arg1->unk20) {
GXSetTevOrder(var_r31, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR1A1);
GXSetTevColorIn(var_r31, GX_CC_CPREV, GX_CC_ONE, GX_CC_RASC, GX_CC_ZERO);
} else {
GXSetTevOrder(var_r31, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR1A1);
GXSetTevColorIn(var_r31, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_CPREV);
}
GXSetTevColorOp(var_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1U, GX_TEVPREV);
GXSetTevAlphaIn(var_r31, GX_CA_ZERO, GX_CA_APREV, GX_CA_A0, GX_CA_ZERO);
GXSetTevAlphaOp(var_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1U, GX_TEVPREV);
var_r31++;
}
} else if (0.0f != arg0->unk1C) {
GXSetTevOrder(var_r31, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0);
GXSetTevColorIn(var_r31, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_CPREV);
GXSetTevColorOp(var_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1U, GX_TEVPREV);
GXSetTevAlphaIn(var_r31, GX_CA_ZERO, GX_CA_APREV, GX_CA_A0, GX_CA_ZERO);
GXSetTevAlphaOp(var_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1U, GX_TEVPREV);
var_r31++;
}
GXSetNumTexGens(var_r28);
GXSetNumTevStages(var_r31);
if (var_r27 != 0) {
var_f30 = arg0->unk14;
} else {
var_f30 = 0.0f;
}
temp_r29 = Hu3DLightSet(&sp40, (f32 (*)[3][4]) Hu3DCameraMtx, (f32 (*)[3][4]) Hu3DCameraMtxXPose, var_f30);
if (var_r27 != 0) {
GXSetNumChans(2U);
if (arg0->unkA == 5) {
GXSetChanCtrl(GX_COLOR0A0, 1U, GX_SRC_REG, GX_SRC_VTX, temp_r29, GX_DF_CLAMP, GX_AF_NONE);
GXSetChanCtrl(GX_COLOR1A1, 1U, GX_SRC_REG, GX_SRC_VTX, temp_r29, GX_DF_NONE, GX_AF_SPEC);
return;
}
GXSetChanCtrl(GX_COLOR0A0, 1U, GX_SRC_REG, GX_SRC_REG, temp_r29, GX_DF_CLAMP, GX_AF_NONE);
GXSetChanCtrl(GX_COLOR1A1, 1U, GX_SRC_REG, GX_SRC_REG, temp_r29, GX_DF_NONE, GX_AF_SPEC);
return;
}
GXSetNumChans(1U);
if (arg0->unkA == 5) {
GXSetChanCtrl(GX_COLOR0A0, var_r25, GX_SRC_REG, GX_SRC_REG, temp_r29, GX_DF_CLAMP, GX_AF_SPOT);
return;
}
GXSetChanCtrl(GX_COLOR0A0, var_r25, GX_SRC_REG, GX_SRC_REG, temp_r29, GX_DF_CLAMP, GX_AF_SPOT);
}