1271 lines
39 KiB
C
1271 lines
39 KiB
C
#define HUSPR_USE_OLD_DEFS
|
|
#include "REL/m409Dll.h"
|
|
|
|
#include "game/hsfdraw.h"
|
|
#include "game/sprite.h"
|
|
|
|
void fn_1_BF88(s16 arg0, s16 arg1)
|
|
{
|
|
s32 i;
|
|
unkStruct8 *var_r29;
|
|
unkStruct9Sub *var_r30;
|
|
|
|
lbl_1_bss_F0.unk4 = Hu3DHookFuncCreate(fn_1_CB98);
|
|
Hu3DModelLayerSet(lbl_1_bss_F0.unk4, 6);
|
|
lbl_1_bss_F0.unk0 = arg0;
|
|
var_r29 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(unkStruct8), MEMORY_DEFAULT_NUM);
|
|
lbl_1_bss_F0.unk10 = var_r29;
|
|
lbl_1_bss_F0.unk2 = arg1;
|
|
var_r30 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(unkStruct9Sub), MEMORY_DEFAULT_NUM);
|
|
lbl_1_bss_F0.unkC = var_r30;
|
|
|
|
for (i = 0; i < arg0; i++, var_r29++) {
|
|
var_r29->unk8 = 0;
|
|
}
|
|
|
|
for (i = 0; i < arg1; i++, var_r30++) {
|
|
var_r30->unk6 = 0;
|
|
var_r30->unk8 = 0;
|
|
}
|
|
|
|
lbl_1_bss_F0.unk6 = lbl_1_bss_F0.unk8 = lbl_1_bss_F0.unkA = 0;
|
|
}
|
|
|
|
void fn_1_C0C0(void)
|
|
{
|
|
s32 var_r31;
|
|
|
|
for (var_r31 = 1; var_r31 < lbl_1_bss_F0.unk0; var_r31++) {
|
|
fn_1_DDB8(var_r31);
|
|
}
|
|
|
|
for (var_r31 = 1; var_r31 < lbl_1_bss_F0.unk2; var_r31++) {
|
|
fn_1_E228(var_r31);
|
|
}
|
|
HuMemDirectFree(lbl_1_bss_F0.unk10);
|
|
HuMemDirectFree(lbl_1_bss_F0.unkC);
|
|
Hu3DModelKill(lbl_1_bss_F0.unk4);
|
|
}
|
|
|
|
SHARED_SYM extern u8 texMtxTbl[];
|
|
|
|
void fn_1_C164(unkStruct8 *arg0)
|
|
{
|
|
ModelData spEC;
|
|
Mtx spBC;
|
|
Mtx sp8C;
|
|
Mtx sp5C;
|
|
Mtx sp2C;
|
|
GXColor sp28;
|
|
s16 sp8;
|
|
GXColorSrc var_r25;
|
|
s32 var_r26;
|
|
s16 temp_r23;
|
|
unkStruct9Sub *temp_r28;
|
|
s16 var_r27;
|
|
s16 var_r30;
|
|
s32 var_r24;
|
|
s32 var_r22;
|
|
s32 var_r21;
|
|
s32 var_r20;
|
|
unkStruct8Sub *var_r31;
|
|
|
|
mtxRot(sp2C, arg0->unk18.x, arg0->unk18.y, arg0->unk18.z);
|
|
MTXScale(sp5C, arg0->unk24.x, arg0->unk24.y, arg0->unk24.z);
|
|
MTXConcat(sp2C, sp5C, sp5C);
|
|
mtxTransCat(sp5C, arg0->unkC.x, arg0->unkC.y, arg0->unkC.z);
|
|
MTXConcat(Hu3DCameraMtx, sp5C, sp8C);
|
|
var_r30 = 0;
|
|
var_r27 = 0;
|
|
sp8 = 0;
|
|
|
|
for (var_r26 = GX_TEXMAP0; var_r26 < arg0->unk4; var_r26++) {
|
|
temp_r28 = &lbl_1_bss_F0.unkC[arg0->unk34[var_r26]];
|
|
MTXRotRad(temp_r28->unk18, 0x5A, 0.0f);
|
|
mtxTransCat(temp_r28->unk18, temp_r28->unkC.x, temp_r28->unkC.y, temp_r28->unkC.z);
|
|
switch (temp_r28->unk4) {
|
|
case 0:
|
|
GXLoadTexMtxImm(temp_r28->unk18, texMtxTbl[var_r27], GX_MTX2x4);
|
|
var_r22 = texMtxTbl[var_r27];
|
|
GXSetTexCoordGen2(var_r27, GX_TG_MTX2x4, var_r26 + GX_TG_TEX0, var_r22, GX_FALSE, 0x7D);
|
|
GXSetTevOrder(var_r30, var_r27, var_r26, GX_COLOR0A0);
|
|
if (var_r26 == GX_TEXMAP0) {
|
|
if ((temp_r28->unk0->bmp->dataFmt == 7) || (temp_r28->unk0->bmp->dataFmt == 8)) {
|
|
GXSetTevColor(GX_TEVREG2, temp_r28->unk48);
|
|
GXSetTevColorIn(var_r30, GX_CC_ZERO, GX_CC_C2, GX_CC_RASC, GX_CC_ZERO);
|
|
}
|
|
else {
|
|
GXSetTevColorIn(var_r30, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO);
|
|
}
|
|
GXSetTevAlphaIn(var_r30, GX_CA_ZERO, GX_CA_TEXA, GX_CA_RASA, GX_CA_ZERO);
|
|
}
|
|
else {
|
|
sp28.a = temp_r28->unk48.a;
|
|
GXSetTevColor(GX_TEVREG2, sp28);
|
|
GXSetTevColorIn(var_r30, GX_CC_CPREV, GX_CC_TEXC, GX_CC_A2, GX_CC_ZERO);
|
|
GXSetTevAlphaIn(var_r30, GX_CA_ZERO, GX_CA_TEXA, GX_CA_APREV, GX_CA_ZERO);
|
|
}
|
|
GXSetTevColorOp(var_r30, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
|
|
GXSetTevAlphaOp(var_r30, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
|
|
break;
|
|
case 1:
|
|
GXLoadTexMtxImm(temp_r28->unk18, texMtxTbl[var_r27], GX_MTX2x4);
|
|
var_r21 = texMtxTbl[var_r27];
|
|
GXSetTexCoordGen2(var_r27, GX_TG_MTX2x4, var_r26 + GX_TG_TEX0, var_r21, GX_FALSE, 0x7D);
|
|
GXSetTevOrder(var_r30, var_r27, var_r26, GX_COLOR0A0);
|
|
GXSetTevColorIn(var_r30, GX_CC_ZERO, GX_CC_CPREV, GX_CC_TEXA, GX_CC_ZERO);
|
|
GXSetTevAlphaIn(var_r30, GX_CA_ZERO, GX_CA_TEXA, GX_CA_APREV, GX_CA_ZERO);
|
|
GXSetTevColorOp(var_r30, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
|
|
GXSetTevAlphaOp(var_r30, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
|
|
break;
|
|
case 2:
|
|
sp28.a = 0xE0;
|
|
GXSetTevColor(GX_TEVREG1, sp28);
|
|
GXSetTexCoordGen2(var_r27 + GX_TEXCOORD1, GX_TG_BUMP0, var_r27, 0x3C, GX_FALSE, 0x7D);
|
|
GXSetTevOrder(var_r30, var_r27, var_r26, GX_COLOR0A0);
|
|
GXSetTevColorIn(var_r30, GX_CC_ZERO, GX_CC_TEXC, GX_CC_A1, GX_CC_RASC);
|
|
GXSetTevColorOp(var_r30, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
|
|
GXSetTevAlphaIn(var_r30, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO);
|
|
GXSetTevAlphaOp(var_r30, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV);
|
|
var_r30++;
|
|
GXSetTevOrder(var_r30, var_r27 + GX_TEXCOORD1, GX_TEXMAP0, GX_COLOR0A0);
|
|
GXSetTevColorIn(var_r30, GX_CC_ZERO, GX_CC_TEXC, GX_CC_A1, GX_CC_CPREV);
|
|
GXSetTevColorOp(var_r30, GX_TEV_SUB, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
|
|
GXSetTevAlphaIn(var_r30, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO);
|
|
GXSetTevAlphaOp(var_r30, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV);
|
|
break;
|
|
case 3:
|
|
var_r27--;
|
|
GXLoadTexMtxImm(temp_r28->unk18, texMtxTbl[var_r27], GX_MTX2x4);
|
|
var_r20 = texMtxTbl[var_r27];
|
|
GXSetTexCoordGen2(var_r27, GX_TG_MTX2x4, var_r26 + GX_TG_TEX0, var_r20, GX_FALSE, 0x7D);
|
|
GXSetTevOrder(var_r30, var_r27, var_r26, GX_COLOR0A0);
|
|
GXSetTevColorIn(var_r30, GX_CC_ZERO, GX_CC_CPREV, GX_CC_TEXC, GX_CC_ZERO);
|
|
GXSetTevColorOp(var_r30, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
|
|
GXSetTevAlphaIn(var_r30, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_TEXA);
|
|
GXSetTevAlphaOp(var_r30, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
|
|
var_r27++;
|
|
break;
|
|
}
|
|
var_r30++;
|
|
var_r27++;
|
|
HuSprTexLoad(temp_r28->unk0, 0, var_r26, GX_REPEAT, GX_REPEAT, GX_LINEAR);
|
|
}
|
|
GXSetNumTevStages((s32)var_r30);
|
|
GXSetNumTexGens((s32)var_r27);
|
|
var_r31 = arg0->unk3C;
|
|
|
|
for (var_r24 = 0; var_r24 < arg0->unk2; var_r24++, var_r31++) {
|
|
if ((var_r31->unk34 != 0) && ((var_r31->unk34 & 4) == 0)) {
|
|
switch (var_r31->unk30) {
|
|
case 0:
|
|
mtxRot(sp2C, var_r31->unkC.x, var_r31->unkC.y, var_r31->unkC.z);
|
|
MTXIdentity(sp5C);
|
|
HmfInverseMtxF3X3(Hu3DCameraMtx, sp5C);
|
|
MTXConcat(sp5C, sp2C, sp2C);
|
|
MTXScale(sp5C, var_r31->unk18.x, var_r31->unk18.y, var_r31->unk18.z);
|
|
MTXConcat(sp2C, sp5C, sp5C);
|
|
mtxTransCat(sp5C, var_r31->unk0.x, var_r31->unk0.y, var_r31->unk0.z);
|
|
MTXConcat(Hu3DCameraMtx, sp5C, spBC);
|
|
break;
|
|
case 1:
|
|
MTXCopy(sp8C, sp2C);
|
|
mtxRotCat(sp2C, var_r31->unkC.x, var_r31->unkC.y, var_r31->unkC.z);
|
|
MTXScale(sp5C, var_r31->unk18.x, var_r31->unk18.y, var_r31->unk18.z);
|
|
MTXConcat(sp2C, sp5C, sp5C);
|
|
mtxTransCat(sp5C, var_r31->unk0.x, var_r31->unk0.y, var_r31->unk0.z);
|
|
MTXCopy(sp5C, spBC);
|
|
break;
|
|
}
|
|
GXLoadPosMtxImm(spBC, 0);
|
|
MTXInverse(spBC, sp5C);
|
|
MTXTranspose(sp5C, sp2C);
|
|
GXLoadNrmMtxImm(sp2C, 0);
|
|
GXSetChanAmbColor(GX_COLOR0A0, var_r31->unk4C);
|
|
GXSetChanMatColor(GX_COLOR0A0, var_r31->unk50);
|
|
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP);
|
|
if ((var_r31->unk34 & 0x10) != 0) {
|
|
GXSetZMode(GX_FALSE, GX_LEQUAL, GX_TRUE);
|
|
}
|
|
else {
|
|
GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE);
|
|
}
|
|
spEC.attr = 0;
|
|
temp_r23 = Hu3DLightSet(&spEC, &Hu3DCameraMtx, &Hu3DCameraMtxXPose, 0.0f);
|
|
GXSetNumChans(1);
|
|
if ((var_r31->unk34 & 8) != 0) {
|
|
var_r25 = GX_SRC_VTX;
|
|
}
|
|
else {
|
|
var_r25 = GX_SRC_REG;
|
|
}
|
|
switch (var_r31->unk31) {
|
|
case 0:
|
|
GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, var_r25, 0, GX_DF_CLAMP, GX_AF_NONE);
|
|
break;
|
|
case 1:
|
|
GXSetChanCtrl(GX_COLOR0A0, GX_TRUE, GX_SRC_REG, var_r25, temp_r23, GX_DF_CLAMP, GX_AF_SPOT);
|
|
break;
|
|
case 2:
|
|
GXSetChanCtrl(GX_COLOR0A0, GX_TRUE, GX_SRC_REG, var_r25, temp_r23, GX_DF_CLAMP, GX_AF_SPEC);
|
|
break;
|
|
}
|
|
GXClearVtxDesc();
|
|
GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
|
|
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
|
|
GXSETARRAY(GX_VA_POS, var_r31->unk40, sizeof(Vec[4]), sizeof(Vec));
|
|
GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16);
|
|
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
|
|
GXSETARRAY(GX_VA_CLR0, var_r31->unk44, sizeof(GXColor[4]), sizeof(GXColor));
|
|
for (var_r26 = 0; var_r26 < var_r31->unk32; var_r26++) {
|
|
GXSetVtxDesc(var_r26 + GX_VA_TEX0, GX_INDEX16);
|
|
GXSetVtxAttrFmt(GX_VTXFMT0, var_r26 + GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
|
|
GXSETARRAY(var_r26 + GX_VA_TEX0, var_r31->unk54[var_r26].unk4, sizeof(HsfVector2f[4]), sizeof(HsfVector2f));
|
|
}
|
|
GXSetVtxDesc(GX_VA_NRM, GX_INDEX16);
|
|
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0);
|
|
GXSETARRAY(GX_VA_NRM, var_r31->unk48, sizeof(Vec), sizeof(Vec));
|
|
GXCallDisplayList(var_r31->unk3C, var_r31->unk38);
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_CB98(ModelData *model, Mtx matrix)
|
|
{
|
|
Mtx sp38;
|
|
Mtx sp8;
|
|
s32 var_r30;
|
|
unkStruct8 *var_r31;
|
|
|
|
var_r31 = lbl_1_bss_F0.unk10;
|
|
GXLoadPosMtxImm(matrix, 0);
|
|
MTXInverse(matrix, sp38);
|
|
MTXTranspose(sp38, sp8);
|
|
GXLoadNrmMtxImm(sp8, 0);
|
|
|
|
for (var_r30 = 0; var_r30 < lbl_1_bss_F0.unk0; var_r30++, var_r31++) {
|
|
if ((var_r31->unk8 == 0) || ((var_r31->unk8 & 2) == 0) || ((var_r31->unk8 & 4) != 0)) {
|
|
continue;
|
|
}
|
|
if (omPauseChk() == 0) {
|
|
if (var_r31->unk30) {
|
|
var_r31->unk30(var_r31);
|
|
}
|
|
if (var_r31->unk8 == 0)
|
|
continue;
|
|
fn_1_D430(var_r31);
|
|
if (var_r31->unk8 == 0)
|
|
continue;
|
|
}
|
|
fn_1_C164(var_r31);
|
|
}
|
|
}
|
|
|
|
unkStruct8 *fn_1_CCB0(s16 idx)
|
|
{
|
|
return &lbl_1_bss_F0.unk10[idx];
|
|
}
|
|
|
|
unkStruct8Sub *fn_1_CCCC(s16 arg0, s16 arg1)
|
|
{
|
|
return &lbl_1_bss_F0.unk10[arg0].unk3C[arg1];
|
|
}
|
|
|
|
void fn_1_CCF8(unkStruct11 **arg0, s16 arg1, f32 arg8, f32 arg9)
|
|
{
|
|
s32 var_r30;
|
|
unkStruct11 *var_r31;
|
|
|
|
var_r31 = *arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(unkStruct11), MEMORY_DEFAULT_NUM);
|
|
|
|
for (var_r30 = 0; var_r30 < arg1; var_r31++, var_r30++) {
|
|
var_r31->unk0.x = (-0.5f * arg8);
|
|
var_r31->unk0.y = (0.5f * arg9);
|
|
var_r31->unk0.z = 0.0f;
|
|
var_r31->unkC.x = (0.5f * arg8);
|
|
var_r31->unkC.y = (0.5f * arg9);
|
|
var_r31->unkC.z = 0.0f;
|
|
var_r31->unk18.x = (0.5f * arg8);
|
|
var_r31->unk18.y = (-0.5f * arg9);
|
|
var_r31->unk18.z = 0.0f;
|
|
var_r31->unk24.x = (-0.5f * arg8);
|
|
var_r31->unk24.y = (-0.5f * arg9);
|
|
var_r31->unk24.z = 0.0f;
|
|
}
|
|
}
|
|
|
|
void fn_1_CE7C(Vec **arg0, s16 arg1, Vec *arg2)
|
|
{
|
|
s32 var_r29;
|
|
s32 var_r28;
|
|
Vec *var_r31;
|
|
|
|
var_r31 = *arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(Vec[4]), MEMORY_DEFAULT_NUM);
|
|
|
|
for (var_r29 = 0; var_r29 < arg1; var_r29++) {
|
|
for (var_r28 = 0; var_r28 < 4; var_r31++, arg2++, var_r28++) {
|
|
var_r31->x = arg2->x;
|
|
var_r31->y = arg2->y;
|
|
var_r31->z = arg2->z;
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_CF1C(GXColor **arg0, s16 arg1, GXColor *arg2)
|
|
{
|
|
s32 var_r29;
|
|
s32 var_r28;
|
|
GXColor *var_r31;
|
|
|
|
var_r31 = *arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(GXColor[4]), MEMORY_DEFAULT_NUM);
|
|
|
|
for (var_r29 = 0; var_r29 < arg1; var_r29++) {
|
|
for (var_r28 = 0; var_r28 < 4; var_r31++, arg2++, var_r28++) {
|
|
var_r31->r = arg2->r;
|
|
var_r31->g = arg2->g;
|
|
var_r31->b = arg2->b;
|
|
var_r31->a = arg2->a;
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_CFC4(Vec **arg0, s16 arg1, Vec *arg2)
|
|
{
|
|
s32 var_r29;
|
|
Vec *var_r31;
|
|
|
|
var_r31 = *arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(Vec), MEMORY_DEFAULT_NUM);
|
|
|
|
for (var_r29 = 0; var_r29 < arg1; var_r31++, arg2++, var_r29++) {
|
|
var_r31->x = arg2->x;
|
|
var_r31->y = arg2->y;
|
|
var_r31->z = arg2->z;
|
|
}
|
|
}
|
|
|
|
void fn_1_D050(HsfVector2f **arg0, s16 arg1, HsfVector2f *arg2)
|
|
{
|
|
s32 var_r28;
|
|
s32 var_r29;
|
|
HsfVector2f *var_r31;
|
|
|
|
var_r31 = *arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(HsfVector2f[4]), MEMORY_DEFAULT_NUM);
|
|
|
|
for (var_r28 = 0; var_r28 < arg1; var_r28++) {
|
|
for (var_r29 = 0; var_r29 < 4; var_r31++, arg2++, var_r29++) {
|
|
var_r31->x = arg2->x;
|
|
var_r31->y = arg2->y;
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_D0E8(unkStruct8Sub *arg0)
|
|
{
|
|
Vec sp18[4] = { { -50.0f, 50.0f, 0.0f }, { 50.0f, 50.0f, 0.0f }, { 50.0f, -50.0f, 0.0f }, { -50.0f, -50.0f, 0.0f } };
|
|
GXColor sp8[4] = { { 0xFF, 0xFF, 0xFF, 0xFF }, { 0xFF, 0xFF, 0xFF, 0xFF }, { 0xFF, 0xFF, 0xFF, 0xFF }, { 0xFF, 0xFF, 0xFF, 0xFF } };
|
|
s32 var_r26;
|
|
s32 var_r25;
|
|
void *temp_r3_3;
|
|
|
|
if (arg0->unk40 != NULL) {
|
|
HuMemDirectFree(arg0->unk40);
|
|
}
|
|
fn_1_CE7C((Vec **)&arg0->unk40, 1, &sp18[0]);
|
|
if (arg0->unk44 != NULL) {
|
|
HuMemDirectFree(arg0->unk44);
|
|
}
|
|
fn_1_CF1C((GXColor **)&arg0->unk44, 1, &sp8[0]);
|
|
if (arg0->unk48 != NULL) {
|
|
HuMemDirectFree(arg0->unk48);
|
|
}
|
|
arg0->unk48 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Vec), MEMORY_DEFAULT_NUM);
|
|
arg0->unk48->x = 0.0f;
|
|
arg0->unk48->y = 0.0f;
|
|
arg0->unk48->z = 1.0f;
|
|
if (arg0->unk3C != NULL) {
|
|
HuMemDirectFree(arg0->unk3C);
|
|
}
|
|
temp_r3_3 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x1000, MEMORY_DEFAULT_NUM);
|
|
arg0->unk3C = temp_r3_3;
|
|
DCFlushRange(arg0->unk3C, 0x1000);
|
|
GXBeginDisplayList(temp_r3_3, 0x1000);
|
|
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
|
|
|
|
for (var_r26 = 0; var_r26 < 4; var_r26++) {
|
|
GXPosition1x16(var_r26);
|
|
GXColor1x16(0);
|
|
GXNormal1x16(var_r26);
|
|
|
|
for (var_r25 = 0; var_r25 < arg0->unk32; var_r25++) {
|
|
GXTexCoord1x16(var_r26);
|
|
}
|
|
}
|
|
arg0->unk38 = GXEndDisplayList();
|
|
}
|
|
|
|
void fn_1_D430(unkStruct8 *arg0)
|
|
{
|
|
s32 var_r25;
|
|
s32 var_r26;
|
|
s32 var_r27;
|
|
unkStruct8Sub *var_r28;
|
|
unkStruct12 *var_r31;
|
|
unkStruct9Sub *temp_r30;
|
|
|
|
var_r27 = 0;
|
|
var_r28 = arg0->unk3C;
|
|
|
|
for (var_r25 = 0; var_r25 < arg0->unk2; var_r25++, var_r28++) {
|
|
if ((var_r28->unk34 & 4) != 0) {
|
|
var_r27++;
|
|
}
|
|
else {
|
|
var_r31 = var_r28->unk54;
|
|
|
|
for (var_r26 = 0; var_r26 < var_r28->unk32; var_r26++, var_r31++) {
|
|
temp_r30 = &lbl_1_bss_F0.unkC[arg0->unk34[var_r26]];
|
|
var_r31->unk8 &= ~4;
|
|
switch (var_r31->unk8 & 0xF) {
|
|
case 1:
|
|
var_r31->unk10 += var_r31->unkC;
|
|
if (var_r31->unk10 >= 1.0f) {
|
|
var_r31->unk0++;
|
|
var_r31->unk10--;
|
|
}
|
|
break;
|
|
case 2:
|
|
var_r31->unk10 += var_r31->unkC;
|
|
if (var_r31->unk10 >= 1.0f) {
|
|
var_r31->unk0--;
|
|
var_r31->unk10--;
|
|
}
|
|
break;
|
|
}
|
|
if (var_r31->unk0 >= temp_r30->unk4C) {
|
|
if ((var_r31->unk8 & 0x10) != 0) {
|
|
var_r31->unk8 |= 8;
|
|
var_r31->unk0--;
|
|
}
|
|
else if ((var_r31->unk8 & 0x40) != 0) {
|
|
var_r31->unk8 = (var_r31->unk8 & 0xF0) | 2;
|
|
var_r31->unk0 -= 2;
|
|
}
|
|
else if ((var_r31->unk8 & 0x20) != 0) {
|
|
var_r31->unk0 = 0;
|
|
}
|
|
var_r31->unk8 |= 4;
|
|
}
|
|
else if (var_r31->unk0 < 0) {
|
|
if ((var_r31->unk8 & 0x10) != 0) {
|
|
var_r31->unk8 |= 8;
|
|
var_r31->unk0 = 0;
|
|
}
|
|
else if ((var_r31->unk8 & 0x20) != 0) {
|
|
if ((var_r31->unk8 & 0x40) != 0) {
|
|
var_r31->unk8 = ((var_r31->unk8 & 0xF0) | 1);
|
|
var_r31->unk0 = 1U;
|
|
}
|
|
else {
|
|
var_r31->unk0 = (temp_r30->unk4C - 1);
|
|
}
|
|
}
|
|
else if ((var_r31->unk8 & 0x40) != 0) {
|
|
var_r31->unk8 |= 8;
|
|
var_r31->unk0 = 0;
|
|
}
|
|
var_r31->unk8 |= 4;
|
|
}
|
|
else {
|
|
var_r31->unk8 &= ~8;
|
|
}
|
|
if (var_r31->unk0 != var_r31->unk1) {
|
|
var_r31->unk4[0].x = (var_r31->unk0 * temp_r30->unk54);
|
|
var_r31->unk4[0].y = (var_r31->unk0 * temp_r30->unk58);
|
|
var_r31->unk4[1].x = ((var_r31->unk0 + 1) * temp_r30->unk54);
|
|
var_r31->unk4[1].y = (var_r31->unk0 * temp_r30->unk58);
|
|
var_r31->unk4[2].x = ((var_r31->unk0 + 1) * temp_r30->unk54);
|
|
var_r31->unk4[2].y = ((var_r31->unk0 + 1) * temp_r30->unk58);
|
|
var_r31->unk4[3].x = (var_r31->unk0 * temp_r30->unk54);
|
|
var_r31->unk4[3].y = ((var_r31->unk0 + 1) * temp_r30->unk58);
|
|
if ((var_r31->unk0 + 1) < temp_r30->unk4C) {
|
|
var_r31->unk4[2].y -= temp_r30->unk60;
|
|
var_r31->unk4[3].y -= temp_r30->unk60;
|
|
}
|
|
var_r31->unk1 = var_r31->unk0;
|
|
}
|
|
if ((var_r31->unk8 & 8) != 0) {
|
|
if ((var_r28->unk34 & 0x40000000) != 0) {
|
|
var_r28->unk34 |= 4;
|
|
if ((var_r31->unk8 & 0x40) == 0) {
|
|
if (var_r31->unk0 <= 0) {
|
|
var_r31->unk0 = temp_r30->unk4C;
|
|
}
|
|
else {
|
|
var_r31->unk0 = 0U;
|
|
}
|
|
}
|
|
}
|
|
else if ((var_r28->unk34 & 0x80000000) != 0) {
|
|
fn_1_DDB8(arg0->unk0);
|
|
}
|
|
var_r27++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (var_r27 >= arg0->unk2) {
|
|
if ((arg0->unk8 & 0x40000000) != 0) {
|
|
arg0->unk8 |= 4;
|
|
return;
|
|
}
|
|
if ((arg0->unk8 & 0x80000000) != 0) {
|
|
fn_1_DDB8(arg0->unk0);
|
|
}
|
|
}
|
|
}
|
|
|
|
s16 fn_1_DA48(u8 arg0, u8 arg1)
|
|
{
|
|
s32 var_r29;
|
|
s32 var_r28;
|
|
unkStruct8 *var_r30;
|
|
unkStruct8Sub *var_r31;
|
|
|
|
var_r30 = &lbl_1_bss_F0.unk10[1];
|
|
|
|
for (var_r29 = 1; var_r29 < lbl_1_bss_F0.unk0; var_r29++, var_r30++) {
|
|
if (var_r30->unk8 == 0)
|
|
break;
|
|
}
|
|
|
|
if (var_r29 == lbl_1_bss_F0.unk0)
|
|
return 0;
|
|
|
|
var_r30->unk0 = var_r29;
|
|
var_r30->unk8 = 1;
|
|
var_r30->unk30 = NULL;
|
|
var_r30->unk2 = arg0;
|
|
var_r30->unk4 = arg1;
|
|
var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(unkStruct8Sub), MEMORY_DEFAULT_NUM);
|
|
var_r30->unk3C = var_r31;
|
|
var_r30->unk34 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(s16), MEMORY_DEFAULT_NUM);
|
|
var_r30->unkC.x = var_r30->unkC.y = var_r30->unkC.z = 0.0f;
|
|
var_r30->unk18.x = var_r30->unk18.y = var_r30->unk18.z = 0.0f;
|
|
var_r30->unk24.x = var_r30->unk24.y = var_r30->unk24.z = 1.0f;
|
|
var_r30->unk54.x = var_r30->unk54.y = var_r30->unk54.z = 0.0f;
|
|
var_r30->unk48.x = var_r30->unk48.y = var_r30->unk48.z = 0.0f;
|
|
|
|
for (var_r29 = 0; var_r29 < 0x20; var_r29++) {
|
|
var_r30->unk60[var_r29] = 0;
|
|
}
|
|
for (var_r29 = 0; var_r29 < arg1; var_r29++) {
|
|
var_r30->unk34[var_r29] = 0;
|
|
}
|
|
|
|
for (var_r29 = 0; var_r29 < arg0; var_r29++, var_r31++) {
|
|
var_r31->unk34 = 1;
|
|
var_r31->unk32 = arg1;
|
|
var_r31->unk30 = 0;
|
|
var_r31->unk31 = 0;
|
|
var_r31->unk4C.r = var_r31->unk4C.g = var_r31->unk4C.b = 0;
|
|
var_r31->unk4C.a = 0xFF;
|
|
var_r31->unk50.r = var_r31->unk50.g = var_r31->unk50.b = 0xFF;
|
|
var_r31->unk50.a = 0xFF;
|
|
var_r31->unk54 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(unkStruct12), MEMORY_DEFAULT_NUM);
|
|
|
|
for (var_r28 = 0; var_r28 < arg1; var_r28++) {
|
|
var_r31->unk54[var_r28].unk0 = var_r31->unk54[var_r28].unk1 = 0;
|
|
var_r31->unk54[var_r28].unk4 = NULL;
|
|
var_r31->unk54[var_r28].unkC = 1.0f;
|
|
var_r31->unk54[var_r28].unk10 = 0.0f;
|
|
}
|
|
var_r31->unk0.x = var_r31->unk0.y = var_r31->unk0.z = 0.0f;
|
|
var_r31->unkC.x = var_r31->unkC.y = var_r31->unkC.z = 0.0f;
|
|
var_r31->unk18.x = var_r31->unk18.y = var_r31->unk18.z = 1.0f;
|
|
var_r31->unk64.x = var_r31->unk64.y = var_r31->unk64.z = 0.0f;
|
|
var_r31->unk58.x = var_r31->unk58.y = var_r31->unk58.z = 0.0f;
|
|
|
|
for (var_r28 = 0; var_r28 < 0x10; var_r28++) {
|
|
var_r31->unk70[var_r28] = 0;
|
|
}
|
|
var_r31->unk40 = var_r31->unk44 = var_r31->unk48 = NULL;
|
|
var_r31->unk3C = NULL;
|
|
fn_1_D0E8(var_r31);
|
|
}
|
|
return var_r30->unk0;
|
|
}
|
|
|
|
void fn_1_DDB8(s16 arg0)
|
|
{
|
|
unkStruct12 *var_r28;
|
|
s32 var_r29;
|
|
unkStruct8 *temp_r30;
|
|
unkStruct8Sub *var_r31;
|
|
|
|
if (arg0 != 0) {
|
|
temp_r30 = &lbl_1_bss_F0.unk10[arg0];
|
|
if (temp_r30->unk8 != 0) {
|
|
var_r31 = temp_r30->unk3C;
|
|
|
|
for (var_r29 = 0; var_r29 < temp_r30->unk2; var_r29++, var_r31++) {
|
|
if (var_r31->unk40 != NULL) {
|
|
HuMemDirectFree(var_r31->unk40);
|
|
}
|
|
if (var_r31->unk44 != NULL) {
|
|
HuMemDirectFree(var_r31->unk44);
|
|
}
|
|
if (var_r31->unk48 != NULL) {
|
|
HuMemDirectFree(var_r31->unk48);
|
|
}
|
|
if (var_r31->unk3C != NULL) {
|
|
HuMemDirectFree(var_r31->unk3C);
|
|
}
|
|
var_r28 = var_r31->unk54;
|
|
HuMemDirectFree(var_r28->unk4);
|
|
HuMemDirectFree(var_r31->unk54);
|
|
}
|
|
|
|
for (var_r29 = 0; var_r29 < temp_r30->unk4; var_r29++) {
|
|
fn_1_E228(temp_r30->unk34[var_r29]);
|
|
}
|
|
HuMemDirectFree(temp_r30->unk3C);
|
|
HuMemDirectFree(temp_r30->unk34);
|
|
temp_r30->unk8 = 0;
|
|
temp_r30->unk0 = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_DEF4(s16 arg0, s16 arg1, u8 arg2)
|
|
{
|
|
lbl_1_bss_F0.unk6 = arg0;
|
|
lbl_1_bss_F0.unk8 = arg1;
|
|
lbl_1_bss_F0.unkA = arg2;
|
|
}
|
|
|
|
s16 fn_1_DF20(u32 arg0, s16 arg1, s16 arg2)
|
|
{
|
|
AnimData *temp_r30;
|
|
f32 var_f31;
|
|
f32 var_f30;
|
|
s32 var_r29;
|
|
unkStruct9Sub *var_r31;
|
|
|
|
var_r31 = &lbl_1_bss_F0.unkC[1];
|
|
|
|
for (var_r29 = 1; var_r29 < lbl_1_bss_F0.unk2; var_r29++, var_r31++) {
|
|
if ((var_r31->unk6 != 0) && (var_r31->unk8 == arg0))
|
|
break;
|
|
}
|
|
if (var_r29 < lbl_1_bss_F0.unk2) {
|
|
var_r31->unk6++;
|
|
return var_r29;
|
|
}
|
|
var_r31 = &lbl_1_bss_F0.unkC[1];
|
|
|
|
for (var_r29 = 1; var_r29 < lbl_1_bss_F0.unk2; var_r29++, var_r31++) {
|
|
if (var_r31->unk6 == 0)
|
|
break;
|
|
}
|
|
var_r31->unk8 = arg0;
|
|
var_r31->unk6 = 1;
|
|
temp_r30 = HuSprAnimRead(HuDataReadNum(arg0, MEMORY_DEFAULT_NUM));
|
|
if ((arg1 == 0) || (arg2 == 0)) {
|
|
arg1 = temp_r30->bmp->sizeX;
|
|
arg2 = temp_r30->bmp->sizeY;
|
|
var_f31 = var_f30 = 1.0f;
|
|
}
|
|
else {
|
|
var_f31 = arg1 / (f32)temp_r30->bmp->sizeX;
|
|
var_f30 = arg2 / (f32)temp_r30->bmp->sizeY;
|
|
}
|
|
var_r31->unk0 = temp_r30;
|
|
var_r31->unk4E = arg1;
|
|
var_r31->unk50 = arg2;
|
|
var_r31->unk54 = var_f31;
|
|
var_r31->unk58 = var_f30;
|
|
var_r31->unk5C = (1.0f / temp_r30->bmp->sizeX);
|
|
var_r31->unk60 = 1.0f / temp_r30->bmp->sizeY;
|
|
var_r31->unk4 = 0;
|
|
var_r31->unk4C = (temp_r30->bmp->sizeY / arg2);
|
|
var_r31->unk48.r = var_r31->unk48.g = var_r31->unk48.b = 0xFF;
|
|
var_r31->unk48.a = 0xFF;
|
|
MTXIdentity(var_r31->unk18);
|
|
var_r31->unkC.x = var_r31->unkC.y = var_r31->unkC.z = 0.0f;
|
|
return var_r29;
|
|
}
|
|
|
|
void fn_1_E228(s16 arg0)
|
|
{
|
|
unkStruct9Sub *temp_r31;
|
|
|
|
temp_r31 = &lbl_1_bss_F0.unkC[arg0];
|
|
if (temp_r31->unk8 != 0) {
|
|
if (temp_r31->unk6 != 0) {
|
|
temp_r31->unk6 -= 1;
|
|
}
|
|
if (temp_r31->unk6 == 0) {
|
|
HuSprAnimKill(temp_r31->unk0);
|
|
temp_r31->unk8 = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
s32 fn_1_E2A8(s16 arg0, u8 arg1, u32 arg2, s16 arg3, s16 arg4)
|
|
{
|
|
f32 temp_f31;
|
|
f32 temp_f30;
|
|
s32 var_r26;
|
|
s32 var_r25;
|
|
s32 var_r24;
|
|
unkStruct12 *temp_r31;
|
|
unkStruct8 *temp_r27;
|
|
unkStruct8Sub *var_r28;
|
|
unkStruct9Sub *temp_r30;
|
|
unkStruct11 *var_r29;
|
|
|
|
if (arg0 == 0) {
|
|
return 0;
|
|
}
|
|
temp_r27 = &lbl_1_bss_F0.unk10[arg0];
|
|
var_r24 = fn_1_DF20(arg2, arg3, arg4);
|
|
if (var_r24 == 0) {
|
|
return 0;
|
|
}
|
|
temp_r27->unk8 |= 2;
|
|
temp_r27->unk34[arg1] = var_r24;
|
|
temp_r30 = &lbl_1_bss_F0.unkC[var_r24];
|
|
var_r28 = temp_r27->unk3C;
|
|
|
|
for (var_r26 = 0; var_r26 < temp_r27->unk2; var_r26++, var_r28++) {
|
|
if (arg1 == 0) {
|
|
if (var_r28->unk40) {
|
|
HuMemDirectFree(var_r28->unk40);
|
|
}
|
|
temp_f30 = temp_r30->unk50;
|
|
temp_f31 = temp_r30->unk4E;
|
|
var_r29 = var_r28->unk40 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(unkStruct11), MEMORY_DEFAULT_NUM);
|
|
|
|
for (var_r25 = 0; var_r25 < 1; var_r29++, var_r25++) {
|
|
var_r29->unk0.x = (-0.5f * temp_f31);
|
|
var_r29->unk0.y = (0.5f * temp_f30);
|
|
var_r29->unk0.z = 0.0f;
|
|
var_r29->unkC.x = (0.5f * temp_f31);
|
|
var_r29->unkC.y = (0.5f * temp_f30);
|
|
var_r29->unkC.z = 0.0f;
|
|
var_r29->unk18.x = (0.5f * temp_f31);
|
|
var_r29->unk18.y = (-0.5f * temp_f30);
|
|
var_r29->unk18.z = 0.0f;
|
|
var_r29->unk24.x = (-0.5f * temp_f31);
|
|
var_r29->unk24.y = (-0.5f * temp_f30);
|
|
var_r29->unk24.z = 0.0f;
|
|
}
|
|
}
|
|
temp_r31 = &var_r28->unk54[arg1];
|
|
temp_r31->unk8 = 0;
|
|
temp_r31->unk0 = temp_r31->unk1 = 0;
|
|
temp_r31->unkC = 1.0f;
|
|
temp_r31->unk10 = 0.0f;
|
|
if (temp_r31->unk4 == NULL) {
|
|
temp_r31->unk4 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x20, MEMORY_DEFAULT_NUM);
|
|
}
|
|
temp_r31->unk4[0].x = temp_r31->unk0 * temp_r30->unk54;
|
|
temp_r31->unk4[0].y = temp_r31->unk0 * temp_r30->unk58;
|
|
temp_r31->unk4[1].x = ((temp_r31->unk0 + 1) * temp_r30->unk54);
|
|
temp_r31->unk4[1].y = (temp_r31->unk0 * temp_r30->unk58);
|
|
temp_r31->unk4[2].x = ((temp_r31->unk0 + 1) * temp_r30->unk54);
|
|
temp_r31->unk4[2].y = ((temp_r31->unk0 + 1) * temp_r30->unk58);
|
|
temp_r31->unk4[3].x = (temp_r31->unk0 * temp_r30->unk54);
|
|
temp_r31->unk4[3].y = ((temp_r31->unk0 + 1) * temp_r30->unk58);
|
|
if ((temp_r31->unk0 + 1) < temp_r30->unk4C) {
|
|
temp_r31->unk4[2].y -= temp_r30->unk60;
|
|
temp_r31->unk4[3].y -= temp_r30->unk60;
|
|
}
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
s32 fn_1_E7C8(s16 arg0, u8 arg1, u32 arg2)
|
|
{
|
|
s32 var_r31;
|
|
|
|
var_r31 = fn_1_E2A8(arg0, arg1, arg2, 0, 0);
|
|
return var_r31;
|
|
}
|
|
|
|
void fn_1_E818(s16 arg0, f32 arg8, f32 arg9, f32 argA)
|
|
{
|
|
unkStruct8 *temp_r31;
|
|
|
|
if (arg0 != 0) {
|
|
temp_r31 = &lbl_1_bss_F0.unk10[arg0];
|
|
temp_r31->unkC.x = arg8;
|
|
temp_r31->unkC.y = arg9;
|
|
temp_r31->unkC.z = argA;
|
|
}
|
|
}
|
|
|
|
void fn_1_E85C(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA)
|
|
{
|
|
unkStruct8 *temp_r30;
|
|
unkStruct8Sub *temp_r31;
|
|
|
|
if (arg0 != 0) {
|
|
temp_r30 = &lbl_1_bss_F0.unk10[arg0];
|
|
if (temp_r30->unk2 > arg1) {
|
|
temp_r31 = &temp_r30->unk3C[arg1];
|
|
temp_r31->unk0.x = arg8;
|
|
temp_r31->unk0.y = arg9;
|
|
temp_r31->unk0.z = argA;
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_E8CC(s16 arg0, f32 arg8, f32 arg9, f32 argA)
|
|
{
|
|
s32 var_r29;
|
|
unkStruct8 *temp_r30;
|
|
unkStruct8Sub *var_r31;
|
|
|
|
if (arg0 != 0) {
|
|
temp_r30 = &lbl_1_bss_F0.unk10[arg0];
|
|
var_r31 = temp_r30->unk3C;
|
|
|
|
for (var_r29 = 0; var_r29 < temp_r30->unk2; var_r29++, var_r31++) {
|
|
var_r31->unk0.x = arg8;
|
|
var_r31->unk0.y = arg9;
|
|
var_r31->unk0.z = argA;
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_E940(s16 arg0, f32 arg8, f32 arg9, f32 argA)
|
|
{
|
|
unkStruct8 *temp_r31;
|
|
|
|
if (arg0 != 0) {
|
|
temp_r31 = &lbl_1_bss_F0.unk10[arg0];
|
|
temp_r31->unkC.x += arg8;
|
|
temp_r31->unkC.y += arg9;
|
|
temp_r31->unkC.z += argA;
|
|
}
|
|
}
|
|
|
|
void fn_1_E99C(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA)
|
|
{
|
|
unkStruct8 *temp_r30;
|
|
unkStruct8Sub *temp_r31;
|
|
|
|
if (arg0 != 0) {
|
|
temp_r30 = &lbl_1_bss_F0.unk10[arg0];
|
|
if (temp_r30->unk2 > arg1) {
|
|
temp_r31 = &temp_r30->unk3C[arg1];
|
|
temp_r31->unk0.x += arg8;
|
|
temp_r31->unk0.y += arg9;
|
|
temp_r31->unk0.z += argA;
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_EA24(s16 arg0, f32 arg8, f32 arg9, f32 argA)
|
|
{
|
|
s32 var_r29;
|
|
unkStruct8 *temp_r30;
|
|
unkStruct8Sub *var_r31;
|
|
|
|
if (arg0 != 0) {
|
|
temp_r30 = &lbl_1_bss_F0.unk10[arg0];
|
|
var_r31 = temp_r30->unk3C;
|
|
|
|
for (var_r29 = 0; var_r29 < temp_r30->unk2; var_r29++, var_r31++) {
|
|
var_r31->unk0.x += arg8;
|
|
var_r31->unk0.y += arg9;
|
|
var_r31->unk0.z += argA;
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_EAB0(s16 arg0, f32 arg8, f32 arg9, f32 argA)
|
|
{
|
|
unkStruct8 *temp_r31;
|
|
|
|
if (arg0 != 0) {
|
|
temp_r31 = &lbl_1_bss_F0.unk10[arg0];
|
|
temp_r31->unk18.x = arg8;
|
|
temp_r31->unk18.y = arg9;
|
|
temp_r31->unk18.z = argA;
|
|
}
|
|
}
|
|
|
|
void fn_1_EAF4(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA)
|
|
{
|
|
unkStruct8 *temp_r30;
|
|
unkStruct8Sub *temp_r31;
|
|
|
|
if (arg0 != 0) {
|
|
temp_r30 = &lbl_1_bss_F0.unk10[arg0];
|
|
if (temp_r30->unk2 > arg1) {
|
|
temp_r31 = &temp_r30->unk3C[arg1];
|
|
temp_r31->unkC.x = arg8;
|
|
temp_r31->unkC.y = arg9;
|
|
temp_r31->unkC.z = argA;
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_EB64(s16 arg0, f32 arg8, f32 arg9, f32 argA)
|
|
{
|
|
s32 var_r29;
|
|
unkStruct8 *temp_r30;
|
|
unkStruct8Sub *var_r31;
|
|
|
|
if (arg0 != 0) {
|
|
temp_r30 = &lbl_1_bss_F0.unk10[arg0];
|
|
var_r31 = temp_r30->unk3C;
|
|
|
|
for (var_r29 = 0; var_r29 < temp_r30->unk2; var_r29++, var_r31++) {
|
|
var_r31->unkC.x = arg8;
|
|
var_r31->unkC.y = arg9;
|
|
var_r31->unkC.z = argA;
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_EBD8(s16 arg0, f32 arg8, f32 arg9, f32 argA)
|
|
{
|
|
unkStruct8 *temp_r31;
|
|
|
|
if (arg0 != 0) {
|
|
temp_r31 = &lbl_1_bss_F0.unk10[arg0];
|
|
temp_r31->unk24.x = arg8;
|
|
temp_r31->unk24.y = arg9;
|
|
temp_r31->unk24.z = argA;
|
|
}
|
|
}
|
|
|
|
void fn_1_EC1C(s16 arg0, s16 arg1, f32 arg8, f32 arg9, f32 argA)
|
|
{
|
|
unkStruct8 *temp_r30;
|
|
unkStruct8Sub *temp_r31;
|
|
|
|
if (arg0 != 0) {
|
|
temp_r30 = &lbl_1_bss_F0.unk10[arg0];
|
|
if (temp_r30->unk2 > arg1) {
|
|
temp_r31 = &temp_r30->unk3C[arg1];
|
|
temp_r31->unk18.x = arg8;
|
|
temp_r31->unk18.y = arg9;
|
|
temp_r31->unk18.z = argA;
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_EC8C(s16 arg0, f32 arg8, f32 arg9, f32 argA)
|
|
{
|
|
s32 var_r29;
|
|
unkStruct8 *temp_r30;
|
|
unkStruct8Sub *var_r31;
|
|
|
|
if (arg0 != 0) {
|
|
temp_r30 = &lbl_1_bss_F0.unk10[arg0];
|
|
var_r31 = temp_r30->unk3C;
|
|
|
|
for (var_r29 = 0; var_r29 < temp_r30->unk2; var_r29++, var_r31++) {
|
|
var_r31->unk18.x = arg8;
|
|
var_r31->unk18.y = arg9;
|
|
var_r31->unk18.z = argA;
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_ED00(s16 arg0, s32 arg1)
|
|
{
|
|
unkStruct8 *temp_r31;
|
|
|
|
if (arg0 != 0) {
|
|
temp_r31 = &lbl_1_bss_F0.unk10[arg0];
|
|
temp_r31->unk8 |= arg1;
|
|
}
|
|
}
|
|
|
|
void fn_1_ED44(s16 arg0, s16 arg1, s32 arg2)
|
|
{
|
|
unkStruct8 *temp_r31;
|
|
unkStruct8Sub *temp_r30;
|
|
|
|
if (arg0 != 0) {
|
|
temp_r31 = &lbl_1_bss_F0.unk10[arg0];
|
|
if (temp_r31->unk2 > arg1) {
|
|
temp_r30 = &temp_r31->unk3C[arg1];
|
|
temp_r30->unk34 |= arg2;
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_EDB4(s16 arg0, s32 arg1)
|
|
{
|
|
s32 var_r30;
|
|
unkStruct8 *temp_r31;
|
|
unkStruct8Sub *temp_r29;
|
|
|
|
if (arg0 != 0) {
|
|
temp_r31 = &lbl_1_bss_F0.unk10[arg0];
|
|
temp_r29 = temp_r31->unk3C;
|
|
|
|
for (var_r30 = 0; var_r30 < temp_r31->unk2; var_r30++) {
|
|
temp_r29->unk34 |= arg1;
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_EE24(s16 arg0, u32 arg1)
|
|
{
|
|
unkStruct8 *temp_r31;
|
|
|
|
if (arg0 != 0) {
|
|
temp_r31 = &lbl_1_bss_F0.unk10[arg0];
|
|
temp_r31->unk8 &= ~arg1;
|
|
}
|
|
}
|
|
|
|
void fn_1_EE68(s16 arg0, s16 arg1, u32 arg2)
|
|
{
|
|
unkStruct8 *temp_r31;
|
|
unkStruct8Sub *temp_r30;
|
|
|
|
if (arg0 != 0) {
|
|
temp_r31 = &lbl_1_bss_F0.unk10[arg0];
|
|
if (temp_r31->unk2 > arg1) {
|
|
temp_r30 = &temp_r31->unk3C[arg1];
|
|
temp_r30->unk34 &= ~arg2;
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_EED8(s16 arg0, u32 arg1)
|
|
{
|
|
s32 var_r30;
|
|
unkStruct8 *temp_r31;
|
|
unkStruct8Sub *temp_r29;
|
|
|
|
if (arg0 != 0) {
|
|
temp_r31 = &lbl_1_bss_F0.unk10[arg0];
|
|
temp_r29 = temp_r31->unk3C;
|
|
|
|
for (var_r30 = 0; var_r30 < temp_r31->unk2; var_r30++) {
|
|
temp_r29->unk34 &= ~arg1;
|
|
}
|
|
}
|
|
}
|
|
|
|
s32 fn_1_EF48(s16 arg0, s32 arg1)
|
|
{
|
|
unkStruct8 *var_r31;
|
|
|
|
if (arg0 == 0) {
|
|
return 0;
|
|
}
|
|
|
|
var_r31 = &lbl_1_bss_F0.unk10[arg0];
|
|
if ((var_r31->unk8 & arg1) != 0) {
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
s32 fn_1_EFA4(s16 arg0, s16 arg1, s32 arg2)
|
|
{
|
|
unkStruct8Sub *var_r30;
|
|
unkStruct8 *temp_r31;
|
|
|
|
if (arg0 == 0)
|
|
return;
|
|
|
|
temp_r31 = &lbl_1_bss_F0.unk10[arg0];
|
|
if (temp_r31->unk2 <= arg1)
|
|
return;
|
|
|
|
var_r30 = &temp_r31->unk3C[arg1];
|
|
if ((var_r30->unk34 & arg2) != 0) {
|
|
return 1;
|
|
}
|
|
else {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
void fn_1_F024(s16 arg0, s16 arg1, u8 arg2, u8 arg3, u8 arg4, u8 arg5)
|
|
{
|
|
unkStruct8 *temp_r30;
|
|
unkStruct8Sub *temp_r31;
|
|
|
|
if (arg0 != 0) {
|
|
temp_r30 = &lbl_1_bss_F0.unk10[arg0];
|
|
if (temp_r30->unk2 > arg1) {
|
|
temp_r31 = &temp_r30->unk3C[arg1];
|
|
temp_r31->unk50.r = arg2;
|
|
temp_r31->unk50.g = arg3;
|
|
temp_r31->unk50.b = arg4;
|
|
temp_r31->unk50.a = arg5;
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_F098(s16 arg0, u8 arg1, u8 arg2, u8 arg3, u8 arg4)
|
|
{
|
|
s32 var_r29;
|
|
unkStruct8 *temp_r30;
|
|
unkStruct8Sub *var_r31;
|
|
|
|
if (arg0 != 0) {
|
|
temp_r30 = &lbl_1_bss_F0.unk10[arg0];
|
|
var_r31 = temp_r30->unk3C;
|
|
|
|
for (var_r29 = 0; var_r29 < temp_r30->unk2; var_r29++, var_r31++) {
|
|
var_r31->unk50.r = arg1;
|
|
var_r31->unk50.g = arg2;
|
|
var_r31->unk50.b = arg3;
|
|
var_r31->unk50.a = arg4;
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_F110(s16 arg0, s16 arg1, u8 arg2)
|
|
{
|
|
unkStruct8 *temp_r31;
|
|
unkStruct8Sub *var_r30;
|
|
|
|
if (arg0 != 0) {
|
|
temp_r31 = &lbl_1_bss_F0.unk10[arg0];
|
|
if (temp_r31->unk2 > arg1) {
|
|
var_r30 = &temp_r31->unk3C[arg1];
|
|
var_r30->unk54->unk8 = arg2;
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_F17C(s16 arg0, s16 arg1, u8 arg2, u8 arg3)
|
|
{
|
|
unkStruct8 *temp_r31;
|
|
unkStruct8Sub *var_r30;
|
|
|
|
if (arg0 != 0) {
|
|
temp_r31 = &lbl_1_bss_F0.unk10[arg0];
|
|
if (temp_r31->unk2 > arg1) {
|
|
var_r30 = &temp_r31->unk3C[arg1];
|
|
var_r30->unk54[arg2].unk8 = arg3;
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_F1F4(s16 arg0, u8 arg1)
|
|
{
|
|
s32 var_r28;
|
|
s32 var_r30;
|
|
unkStruct8 *temp_r29;
|
|
unkStruct8Sub *var_r31;
|
|
|
|
if (arg0 != 0) {
|
|
temp_r29 = &lbl_1_bss_F0.unk10[arg0];
|
|
var_r31 = (unkStruct8Sub *)(&temp_r29->unk3C); //! BAD WHY
|
|
(void)temp_r29;
|
|
|
|
for (var_r28 = 0; var_r28 < temp_r29->unk2; var_r28++, var_r31++) {
|
|
for (var_r30 = 0; var_r30 < var_r31->unk32; var_r30++) {
|
|
var_r31->unk54[var_r30].unk8 = arg1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_F28C(s16 arg0, s16 arg1, f32 arg8)
|
|
{
|
|
unkStruct8 *temp_r31;
|
|
unkStruct8Sub *var_r30;
|
|
|
|
if (arg0 != 0) {
|
|
temp_r31 = &lbl_1_bss_F0.unk10[arg0];
|
|
if (temp_r31->unk2 > arg1) {
|
|
var_r30 = &temp_r31->unk3C[arg1];
|
|
var_r30->unk54->unkC = arg8;
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_F2F8(s16 arg0, s16 arg1, u8 arg2, f32 arg8)
|
|
{
|
|
unkStruct8 *temp_r31;
|
|
unkStruct8Sub *var_r30;
|
|
|
|
if (arg0 != 0) {
|
|
temp_r31 = &lbl_1_bss_F0.unk10[arg0];
|
|
if (temp_r31->unk2 > arg1) {
|
|
var_r30 = &temp_r31->unk3C[arg1];
|
|
var_r30->unk54[arg2].unkC = arg8;
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_F370(s16 arg0, f32 arg8)
|
|
{
|
|
unkStruct8 *temp_r31;
|
|
s32 var_r29;
|
|
s32 var_r30;
|
|
unkStruct8Sub *volatile sp8;
|
|
|
|
if (arg0 != 0) {
|
|
temp_r31 = &lbl_1_bss_F0.unk10[arg0];
|
|
sp8 = &temp_r31->unk3C[0];
|
|
|
|
for (var_r29 = 0; var_r29 < temp_r31->unk2; var_r29++) {
|
|
for (var_r30 = 0; var_r30 < sp8->unk32; var_r30++) {
|
|
sp8->unk54[var_r30].unkC = arg8;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_F408(s16 arg0, s16 arg1, u8 arg2)
|
|
{
|
|
unkStruct8 *temp_r31;
|
|
unkStruct8Sub *var_r30;
|
|
|
|
if (arg0 != 0) {
|
|
temp_r31 = &lbl_1_bss_F0.unk10[arg0];
|
|
if (temp_r31->unk2 > arg1) {
|
|
var_r30 = &temp_r31->unk3C[arg1];
|
|
var_r30->unk54->unk0 = arg2;
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_F478(s16 arg0, s16 arg1, u8 arg2, u8 arg3)
|
|
{
|
|
unkStruct8 *temp_r31;
|
|
unkStruct8Sub *var_r30;
|
|
|
|
if (arg0 != 0) {
|
|
temp_r31 = &lbl_1_bss_F0.unk10[arg0];
|
|
if (temp_r31->unk2 > arg1) {
|
|
var_r30 = &temp_r31->unk3C[arg1];
|
|
var_r30->unk54[arg2].unk0 = arg3;
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_F4F0(s16 arg0, u8 arg1)
|
|
{
|
|
unkStruct8Sub *volatile sp8;
|
|
s32 var_r29;
|
|
unkStruct8 *temp_r31;
|
|
s32 var_r30;
|
|
|
|
if (arg0 != 0) {
|
|
temp_r31 = &lbl_1_bss_F0.unk10[arg0];
|
|
sp8 = temp_r31->unk3C;
|
|
for (var_r29 = 0; var_r29 < temp_r31->unk2; var_r29++) {
|
|
for (var_r30 = 0; var_r30 < sp8->unk32; var_r30++) {
|
|
sp8->unk54[var_r30].unk0 = arg1;
|
|
}
|
|
}
|
|
}
|
|
}
|