Decompile m434dll/map.c

This commit is contained in:
gamemasterplc 2024-06-08 22:21:50 -05:00
parent 1cd98b28b6
commit 3a82e894e3
3 changed files with 724 additions and 105 deletions

616
src/REL/m434Dll/map.c Normal file
View file

@ -0,0 +1,616 @@
#include "game/object.h"
#include "game/objsub.h"
#include "game/hsfman.h"
#include "game/hsfdraw.h"
#include "game/hsfmotion.h"
#include "game/audio.h"
#include "game/wipe.h"
#include "game/sprite.h"
#include "game/frand.h"
#include "game/minigame_seq.h"
#include "game/gamework_data.h"
#include "REL/m434Dll.h"
#include "math.h"
#include "ext_math.h"
typedef struct bss_2468_data {
Vec unk0;
u16 unkC;
} Bss2468Data;
typedef struct bss_450_data {
void *unk0;
u32 unk4;
} Bss450Data;
typedef struct bss_3F0_data {
void *unk0;
u16 unk4;
u16 unk6;
u16 unk8;
u16 unkA;
u32 unkC;
s32 unk10;
} Bss3F0Data;
typedef struct struct_data100 {
u16 unk0;
u16 unk2;
u16 unk4;
u16 unk6;
u16 unk8;
} StructData100;
StructData100 lbl_1_data_100[5] = {
{ 200, 200, 200, 200, 0 },
{ 320, 240, 160, 120, 1 },
{ 640, 480, 320, 240, 1 },
{ 640, 480, 640, 480, 0 },
{ 0, 0, 0, 0, 0 },
};
omObjData *lbl_1_bss_5868;
Vec lbl_1_bss_2868[1024];
Bss2468Data lbl_1_bss_2468[64];
s32 lbl_1_bss_2464;
HsfVector2f lbl_1_bss_464[1024];
AnimData *lbl_1_bss_460;
AnimData *lbl_1_bss_45C;
AnimData *lbl_1_bss_458;
Bss450Data lbl_1_bss_450;
Bss450Data lbl_1_bss_448;
Bss450Data lbl_1_bss_440;
Bss3F0Data lbl_1_bss_3F0[4];
Vec lbl_1_bss_3D8[2];
void fn_1_1E64(omObjData *object);
void fn_1_1DB0(Process *objman)
{
"\0"; //Force lbl_1_data_132 to 0
lbl_1_bss_5868 = omAddObjEx(objman, 10, 16, 0, -1, fn_1_1E64);
CenterM[1].y = -CenterM[2].y + -15.000001f;
CRotM[1].x = -CRotM[2].x;
}
void fn_1_28F0(void);
void fn_1_1E44(void)
{
fn_1_28F0();
}
void fn_1_26A4(omObjData *object);
void fn_1_2978(ModelData *model, Mtx mtx);
void fn_1_3004(void);
void fn_1_3128(void);
void fn_1_33A4(ModelData *model, Mtx mtx);
void fn_1_349C(ModelData *model, Mtx mtx);
void fn_1_3594(ModelData *model, Mtx mtx);
void fn_1_3CC8(ModelData *model, Mtx mtx);
void fn_1_443C(ModelData *model, ParticleData *particle, Mtx matrix);
void fn_1_1E64(omObjData *object)
{
s32 temp_r30;
Vec *temp_r29;
HsfVector2f *temp_r28;
s32 temp_r27;
AnimData *temp_r26;
object->model[9] = Hu3DHookFuncCreate(fn_1_3CC8);
Hu3DModelLayerSet(object->model[9], 1);
Hu3DModelCameraSet(object->model[9], 1);
object->model[1] = Hu3DModelCreateFile(0x410002);
Hu3DModelLayerSet(object->model[1], 2);
Hu3DModelCameraSet(object->model[1], 2);
object->model[0] = Hu3DModelCreateFile(0x410000);
Hu3DModelLayerSet(object->model[0], 2);
Hu3DModelCameraSet(object->model[0], 8);
object->model[8] = Hu3DModelCreateFile(0x410001);
Hu3DModelLayerSet(object->model[8], 2);
Hu3DModelCameraSet(object->model[8], 4);
object->model[3] = Hu3DModelCreateFile(0x410008);
Hu3DModelClusterAttrSet(object->model[3], 0, 0xC0000001);
Hu3DModelLayerSet(object->model[3], 2);
Hu3DModelCameraSet(object->model[3], 8);
object->model[4] = Hu3DModelCreateFile(0x410009);
Hu3DModelClusterAttrSet(object->model[4], 0, 0xC0000001);
Hu3DModelLayerSet(object->model[4], 2);
Hu3DModelCameraSet(object->model[4], 8);
object->model[2] = Hu3DHookFuncCreate(fn_1_2978);
Hu3DModelLayerSet(object->model[2], 3);
Hu3DModelCameraSet(object->model[2], 8);
temp_r29 = lbl_1_bss_2868;
for(temp_r30=0; temp_r30<32; temp_r30++) {
for(temp_r27=0; temp_r27<32; temp_r29++, temp_r27++) {
temp_r29->x = -700.0f+((1400.0f*temp_r27)/31.0f);
temp_r29->y = -15.000001f;
temp_r29->z = -600.0f+((1200.0f*temp_r30)/31.0f);
if(temp_r30 & 0x1) {
temp_r29->x += 700.0f/31.0f;
}
}
}
DCFlushRangeNoSync(lbl_1_bss_2868, sizeof(lbl_1_bss_2868));
temp_r28 = lbl_1_bss_464;
for(temp_r30=0; temp_r30<1024; temp_r30++, temp_r28++) {
temp_r28->x = 360.0f*((1.0f/256.0f)*frand8());
temp_r28->y = 2.0f*((1.0f/256.0f)*frand8())+0.5f;
}
memset(lbl_1_bss_2468, 0, sizeof(lbl_1_bss_2468));
lbl_1_bss_2464 = 0;
lbl_1_bss_450.unk4 = 16384;
lbl_1_bss_450.unk0 = HuMemDirectMallocNum(HEAP_SYSTEM, lbl_1_bss_450.unk4, MEMORY_DEFAULT_NUM);
DCInvalidateRange(lbl_1_bss_450.unk0, lbl_1_bss_450.unk4);
fn_1_3004();
lbl_1_bss_440.unk4 = 16384;
lbl_1_bss_440.unk0 = HuMemDirectMallocNum(HEAP_SYSTEM, lbl_1_bss_440.unk4, MEMORY_DEFAULT_NUM);
fn_1_3128();
lbl_1_bss_45C = HuSprAnimReadFile(0x3D0019);
lbl_1_bss_458 = HuSprAnimReadFile(0x41000A);
HuDataDirClose(0x3D0000);
for(temp_r30=0; temp_r30<4; temp_r30++) {
lbl_1_bss_3F0[temp_r30].unk4 = lbl_1_data_100[temp_r30].unk0;
lbl_1_bss_3F0[temp_r30].unk6 = lbl_1_data_100[temp_r30].unk2;
lbl_1_bss_3F0[temp_r30].unk8 = lbl_1_data_100[temp_r30].unk4;
lbl_1_bss_3F0[temp_r30].unkA = lbl_1_data_100[temp_r30].unk6;
lbl_1_bss_3F0[temp_r30].unk10 = lbl_1_data_100[temp_r30].unk8;
lbl_1_bss_3F0[temp_r30].unkC = GXGetTexBufferSize(lbl_1_bss_3F0[temp_r30].unk8, lbl_1_bss_3F0[temp_r30].unkA, GX_TF_RGB565, GX_FALSE, 0);
lbl_1_bss_3F0[temp_r30].unk0 = HuMemDirectMallocNum(HEAP_SYSTEM, lbl_1_bss_3F0[temp_r30].unkC, MEMORY_DEFAULT_NUM);
memset(lbl_1_bss_3F0[temp_r30].unk0, 0, lbl_1_bss_3F0[temp_r30].unkC);
}
object->model[5] = Hu3DHookFuncCreate(fn_1_33A4);
Hu3DModelLayerSet(object->model[5], 3);
Hu3DModelCameraSet(object->model[5], 2);
object->model[6] = Hu3DHookFuncCreate(fn_1_349C);
Hu3DModelLayerSet(object->model[6], 3);
Hu3DModelCameraSet(object->model[6], 4);
object->model[7] = Hu3DHookFuncCreate(fn_1_3594);
Hu3DModelLayerSet(object->model[7], 5);
Hu3DModelCameraSet(object->model[7], 4);
temp_r26 = HuSprAnimReadFile(0x41000B);
object->model[10] = Hu3DParticleCreate(temp_r26, 100);
Hu3DParticleHookSet(object->model[10], fn_1_443C);
Hu3DModelAttrSet(object->model[10], 1);
Hu3DModelLayerSet(object->model[10], 4);
Hu3DModelCameraSet(object->model[10], 8);
object->func = fn_1_26A4;
}
HsfAttribute *fn_1_2608(s16 model, char *name)
{
HsfData *temp_r31;
HsfAttribute *temp_r30;
s32 temp_r29;
ModelData *temp_r28;
HsfBitmap *temp_r27;
temp_r28 = &Hu3DData[model];
temp_r31 = temp_r28->hsfData;
temp_r30 = temp_r31->attribute;
for(temp_r29=0; temp_r29<temp_r31->attributeCnt; temp_r29++, temp_r30++) {
temp_r27 = temp_r30->bitmap;
if(strcmp(name, temp_r27->name) == 0) {
break;
}
}
if(temp_r29 >= temp_r31->attributeCnt) {
return NULL;
}
return temp_r30;
}
void fn_1_26A4(omObjData *object)
{
s32 temp_r31;
Bss2468Data *temp_r30;
HsfVector2f *temp_r29;
HsfAttribute *temp_r27;
Vec *temp_r25;
s32 temp_r23;
s32 temp_r22;
Bss2468Data *sp8[64];
temp_r27 = fn_1_2608(object->model[1], "sora");
if(temp_r27 != NULL) {
temp_r27->unk30 += 0.0001f;
temp_r27->unk34 -= 0.00005f;
}
temp_r30 = lbl_1_bss_2468;
temp_r22 = 0;
for(temp_r31=0; temp_r31<64; temp_r31++, temp_r30++) {
if(temp_r30->unkC) {
sp8[temp_r22++] = temp_r30;
}
}
temp_r25 = lbl_1_bss_2868;
temp_r29 = lbl_1_bss_464;
for(temp_r31=0; temp_r31<32; temp_r31++) {
for(temp_r23=0; temp_r23<32; temp_r23++, temp_r25++, temp_r29++) {
temp_r25->y = -15.000001f+(2.0f*sind(temp_r29->x));
temp_r29->x += temp_r29->y;
}
}
DCFlushRangeNoSync(lbl_1_bss_2868, sizeof(lbl_1_bss_2868));
for(temp_r31=0; temp_r31<temp_r22; temp_r31++) {
temp_r30 = sp8[temp_r31];
temp_r30->unkC--;
}
CenterM[1].y = -15.000001f+(-CenterM[2].y);
CRotM[1].x = -CRotM[2].x;
}
void fn_1_28F0(void)
{
s32 temp_r31;
for(temp_r31=0; temp_r31<4; temp_r31++) {
if(lbl_1_bss_3F0[temp_r31].unk0 != NULL) {
HuMemDirectFree(lbl_1_bss_3F0[temp_r31].unk0);
lbl_1_bss_3F0[temp_r31].unk0 = NULL;
}
}
}
GXColor lbl_1_data_139 = { 255, 255, 255, 64 };
float lbl_1_data_140[2][3] = {
0.012f, 0, 0,
0, 0.012f, 0
};
float lbl_1_data_158[2][3] = {
0, 0, 0.5f,
0, 0.5f, 0
};
void fn_1_2978(ModelData *model, Mtx mtx)
{
float temp_f31;
Mtx sp1AC;
Mtx sp17C;
Mtx sp14C;
Mtx sp11C;
Mtx spEC;
Mtx spBC;
Mtx sp8C;
Mtx sp5C;
Mtx sp2C;
GXTexObj spC;
GXLoadPosMtxImm(mtx, GX_PNMTX0);
GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE);
GXSetNumTexGens(4);
GXInitTexObj(&spC, lbl_1_bss_3F0[2].unk0, lbl_1_bss_3F0[2].unk8, lbl_1_bss_3F0[2].unkA, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE);
GXLoadTexObj(&spC, GX_TEXMAP0);
GXInitTexObj(&spC, lbl_1_bss_3F0[1].unk0, lbl_1_bss_3F0[1].unk8, lbl_1_bss_3F0[1].unkA, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE);
GXLoadTexObj(&spC, GX_TEXMAP1);
MTXLightPerspective(sp1AC, 30.0f, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f);
MTXInverse(Hu3DCameraMtx, spBC);
MTXConcat(spBC, mtx, spBC);
MTXConcat(sp1AC, Hu3DCameraMtx, sp8C);
MTXConcat(sp8C, spBC, spBC);
GXLoadTexMtxImm(spBC, GX_TEXMTX0, GX_MTX3x4);
GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX0);
MTXLightPerspective(sp1AC, 30.0f, 1.2f, 0.5f, 0.5f, 0.5f, 0.5f);
MTXInverse(Hu3DCameraMtx, sp5C);
MTXConcat(sp5C, mtx, sp5C);
MTXConcat(sp1AC, Hu3DCameraMtx, sp2C);
MTXConcat(sp2C, sp5C, sp5C);
GXLoadTexMtxImm(sp5C, GX_TEXMTX1, GX_MTX3x4);
GXSetTexCoordGen(GX_TEXCOORD1, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX1);
GXSetNumTevStages(2);
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0);
GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_TEXC);
GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST);
GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD1, GX_TEXMAP1, GX_COLOR0A0);
GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_CPREV, GX_CC_TEXC, GX_CC_A0, GX_CC_ZERO);
GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST);
GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
GXSetTevColor(GX_TEVSTAGE1, lbl_1_data_139);
GXSetNumChans(1);
GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE);
HuSprTexLoad(lbl_1_bss_45C, 0, GX_TEXMAP2, GX_REPEAT, GX_REPEAT, GX_LINEAR);
GXInitTexObj(&spC, lbl_1_bss_3F0[0].unk0, lbl_1_bss_3F0[0].unk8, lbl_1_bss_3F0[0].unkA, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE);
GXLoadTexObj(&spC, GX_TEXMAP3);
GXSetNumIndStages(2);
MTXRotDeg(sp11C, 'X', -90.0f);
temp_f31 = 1.0f/600.0f;
MTXScale(sp14C, temp_f31, temp_f31, temp_f31);
MTXConcat(sp14C, sp11C, sp17C);
sp17C[0][1] = -0.03f;
GXLoadTexMtxImm(sp17C, GX_TEXMTX2, GX_MTX2x4);
GXSetTexCoordGen(GX_TEXCOORD2, GX_TG_MTX2x4, GX_TG_POS, GX_TEXMTX2);
GXSetIndTexOrder(GX_INDTEXSTAGE0, GX_TEXCOORD2, GX_TEXMAP2);
GXSetIndTexCoordScale(GX_INDTEXSTAGE0, GX_ITS_1, GX_ITS_1);
GXSetIndTexMtx(GX_ITM_0, lbl_1_data_140, 0);
GXSetTevIndWarp(GX_TEVSTAGE0, GX_INDTEXSTAGE0, GX_TRUE, GX_FALSE, GX_ITM_0);
MTXRotDeg(sp11C, 'X', -90.0f);
temp_f31 = 1.0f/1200.0f;
MTXScale(sp14C, temp_f31, temp_f31, temp_f31);
MTXConcat(sp14C, sp11C, sp17C);
MTXTrans(spEC, 0.5f, 0.5f, 0.0f);
MTXConcat(spEC, sp17C, sp17C);
GXLoadTexMtxImm(sp17C, GX_TEXMTX3, GX_MTX2x4);
GXSetTexCoordGen(GX_TEXCOORD3, GX_TG_MTX2x4, GX_TG_POS, GX_TEXMTX3);
GXSetIndTexOrder(GX_INDTEXSTAGE1, GX_TEXCOORD3, GX_TEXMAP3);
GXSetIndTexCoordScale(GX_INDTEXSTAGE1, GX_ITS_1, GX_ITS_1);
GXSetIndTexMtx(GX_ITM_1, lbl_1_data_158, 0);
GXSetTevIndWarp(GX_TEVSTAGE1, GX_INDTEXSTAGE1, GX_TRUE, GX_FALSE, GX_ITM_1);
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXSetArray(GX_VA_POS, lbl_1_bss_2868, sizeof(Vec));
GXSetCullMode(GX_CULL_BACK);
GXCallDisplayList(lbl_1_bss_450.unk0, lbl_1_bss_450.unk4);
GXSetNumIndStages(0);
GXSetTevDirect(GX_TEVSTAGE0);
GXSetTevDirect(GX_TEVSTAGE1);
}
void fn_1_3004(void)
{
s32 temp_r31;
s32 temp_r30;
s32 temp_r29;
GXBeginDisplayList(lbl_1_bss_450.unk0, lbl_1_bss_450.unk4);
for(temp_r30=0; temp_r30<31; temp_r30++) {
temp_r29 = temp_r30*32;
GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 64);
if(temp_r30 & 0x1) {
for(temp_r31=0; temp_r31<32; temp_r31++) {
GXPosition1x16(temp_r29+temp_r31+32);
GXPosition1x16(temp_r29+temp_r31);
}
} else {
for(temp_r31=31; temp_r31>=0; temp_r31--) {
GXPosition1x16(temp_r29+temp_r31);
GXPosition1x16(temp_r29+temp_r31+32);
}
}
}
lbl_1_bss_450.unk4 = GXEndDisplayList();
DCFlushRangeNoSync(lbl_1_bss_450.unk0, lbl_1_bss_450.unk4);
}
void fn_1_3128(void)
{
GXBeginDisplayList(lbl_1_bss_440.unk0, lbl_1_bss_440.unk4);
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
GXPosition2f32(-0.5f, -0.5f);
GXTexCoord2f32(0, 0);
GXPosition2f32(0.5f, -0.5f);
GXTexCoord2f32(1, 0);
GXPosition2f32(0.5f, 0.5f);
GXTexCoord2f32(1, 1);
GXPosition2f32(-0.5f, 0.5f);
GXTexCoord2f32(0, 1);
GXEnd();
lbl_1_bss_440.unk4 = GXEndDisplayList();
DCFlushRangeNoSync(lbl_1_bss_440.unk0, lbl_1_bss_440.unk4);
}
void fn_1_32DC(Bss3F0Data *arg0, GXBool arg1)
{
GXSetZMode(GX_FALSE, GX_LEQUAL, GX_TRUE);
GXSetTexCopySrc(0, 0, arg0->unk4, arg0->unk6);
GXSetTexCopyDst(arg0->unk8, arg0->unkA, GX_TF_RGB565, arg0->unk10);
GXSetCopyClear(BGColor, 0xFFFFFF);
GXCopyTex(arg0->unk0, arg1);
GXPixModeSync();
DCFlushRange(arg0->unk0, arg0->unkC);
}
void fn_1_33A4(ModelData *model, Mtx mtx)
{
fn_1_32DC(&lbl_1_bss_3F0[1], GX_TRUE);
}
void fn_1_349C(ModelData *model, Mtx mtx)
{
fn_1_32DC(&lbl_1_bss_3F0[2], GX_TRUE);
}
void fn_1_3594(ModelData *model, Mtx mtx)
{
Mtx sp90;
Mtx sp60;
Mtx sp30;
GXTexObj sp10;
fn_1_32DC(&lbl_1_bss_3F0[3], GX_FALSE);
GXLoadPosMtxImm(mtx, GX_PNMTX0);
MTXLightPerspective(sp90, 30.0f, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f);
MTXInverse(Hu3DCameraMtx, sp60);
MTXConcat(sp60, mtx, sp60);
MTXConcat(sp90, Hu3DCameraMtx, sp30);
MTXConcat(sp30, sp60, sp60);
GXLoadTexMtxImm(sp60, GX_TEXMTX0, GX_MTX3x4);
GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX0);
GXSetNumChans(1);
GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE);
GXSetNumTexGens(1);
GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX0);
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP);
GXSetZMode(GX_TRUE, GX_GREATER, GX_FALSE);
GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0);
GXSetNumTevStages(1);
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0);
GXSetTevOp(GX_TEVSTAGE0, GX_REPLACE);
GXInitTexObj(&sp10, lbl_1_bss_3F0[2].unk0, lbl_1_bss_3F0[2].unk8, lbl_1_bss_3F0[2].unkA, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE);
GXLoadTexObj(&sp10, GX_TEXMAP0);
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
GXPosition3f32(-1000.0f, -5.000001f, -1000.0f);
GXPosition3f32(1000.0f, -5.000001f, -1000.0f);
GXPosition3f32(1000.0f, -5.000001f, 1000.0f);
GXPosition3f32(-1000.0f, -5.000001f, 1000.0f);
GXEnd();
GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE);
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
GXPosition3f32(-1000.0f, -70.0f, -1000.0f);
GXPosition3f32(1000.0f, -70.0f, -1000.0f);
GXPosition3f32(1000.0f, -70.0f, 1000.0f);
GXPosition3f32(-1000.0f, -70.0f, 1000.0f);
GXEnd();
fn_1_32DC(&lbl_1_bss_3F0[2], GX_FALSE);
GXInitTexObj(&sp10, lbl_1_bss_3F0[3].unk0, lbl_1_bss_3F0[3].unk8, lbl_1_bss_3F0[3].unkA, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE);
GXLoadTexObj(&sp10, GX_TEXMAP0);
GXSetZMode(GX_TRUE, GX_GREATER, GX_FALSE);
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
GXPosition3f32(-1000.0f, -5.000001f, -1000.0f);
GXPosition3f32(1000.0f, -5.000001f, -1000.0f);
GXPosition3f32(1000.0f, -5.000001f, 1000.0f);
GXPosition3f32(-1000.0f, -5.000001f, 1000.0f);
GXEnd();
}
GXColor lbl_1_data_170 = { 255, 0, 0, 255 };
GXColor lbl_1_data_174 = { 255, 255, 255, 32 };
GXColor lbl_1_data_178 = { 0, 126, 126, 255 };
void fn_1_3CC8(ModelData *model, Mtx mtx)
{
float temp_f31;
Mtx sp44;
Mtx sp14;
Bss2468Data *temp_r31;
s32 temp_r30;
s32 temp_r29;
MTXOrtho(sp44, 0, 480, 0, 640, 0, 100);
GXSetProjection(sp44, GX_ORTHOGRAPHIC);
MTXIdentity(sp14);
GXLoadPosMtxImm(sp14, GX_PNMTX0);
GXSetNumChans(1);
GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE);
GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_178);
GXSetNumTexGens(0);
HuSprTexLoad(lbl_1_bss_458, 0, GX_TEXMAP0, GX_REPEAT, GX_REPEAT, GX_LINEAR);
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP);
GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE);
GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0);
GXSetNumTevStages(1);
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0);
GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR);
GXSetScissor(0, 0, lbl_1_bss_3F0[0].unk8, lbl_1_bss_3F0[0].unkA);
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XY, GX_U16, 0);
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
GXPosition2u16(0, 0);
GXPosition2u16(lbl_1_bss_3F0[0].unk8, 0);
GXPosition2u16(lbl_1_bss_3F0[0].unk8, lbl_1_bss_3F0[0].unkA);
GXPosition2u16(0, lbl_1_bss_3F0[0].unkA);
GXEnd();
GXSetNumTexGens(1);
GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY);
GXSetNumTevStages(1);
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0);
GXSetTevOp(GX_TEVSTAGE0, GX_REPLACE);
GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_TEXC);
GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, 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, GX_TRUE, GX_TEVPREV);
GXClearVtxDesc();
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XY, GX_F32, 0);
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT);
temp_r29 = lbl_1_bss_2464;
for(temp_r30=0; temp_r30<64; temp_r29 = (temp_r29+1)%64, temp_r30++) {
temp_r31 = &lbl_1_bss_2468[temp_r29];
if(temp_r31->unkC == 0) {
continue;
}
temp_f31 = (0.2f+cosd((90.0f*temp_r31->unkC)/60.0f))*128.0f;
lbl_1_data_174.a = 255.0f*sind((90.0f*temp_r31->unkC)/60.0f);
GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_174);
MTXScale(sp14, 0.5f*temp_f31, 0.5f*temp_f31, 1.0f);
mtxTransCat(sp14, (200.0f*(600.0f+temp_r31->unk0.x))/1200.0f, (200.0f*(600.0f+temp_r31->unk0.z))/1200.0f, 0);
GXLoadPosMtxImm(sp14, GX_PNMTX0);
GXCallDisplayList(lbl_1_bss_440.unk0, lbl_1_bss_440.unk4);
}
fn_1_32DC(&lbl_1_bss_3F0[0], GX_TRUE);
}
void fn_1_43AC(Vec *arg0)
{
Bss2468Data *temp_r31;
temp_r31 = &lbl_1_bss_2468[lbl_1_bss_2464];
if(temp_r31->unkC == 0) {
temp_r31->unk0.x = arg0->x;
temp_r31->unk0.y = arg0->y;
temp_r31->unk0.z = arg0->z;
temp_r31->unkC = 60;
lbl_1_bss_2464 = (lbl_1_bss_2464+1)%64;
return;
}
}
void fn_1_443C(ModelData *model, ParticleData *particle, Mtx matrix)
{
float temp_f31;
float temp_f30;
HsfanimStruct01 *temp_r31;
s32 temp_r29;
s32 temp_r28;
if(particle->unk_00 == 0) {
particle->unk_00 = 1;
temp_r31 = particle->unk_48;
for(temp_r29=0; temp_r29<particle->unk_30; temp_r31++, temp_r29++) {
temp_r31->unk2C = 10;
temp_f31 = ((1.0f/256.0f)*frand8())*360.0f;
temp_r31->unk34.x = (0.2f*sind(temp_f31))*100.0f;
temp_r31->unk34.y = 0;
temp_r31->unk34.z = (0.2f*cosd(temp_f31))*100.0f;
temp_f30 = (100.0f*(0.025f*((1.0f/256.0f)*frand8())))+2.5f;
temp_r31->unk08.x = temp_f30*sind(temp_f31);
temp_r31->unk08.y = (100.0f*(0.025f*(((1.0f/256.0f)*(s32)(frand() & 0x1FF))-1.0f)))+7.5000005f;
temp_r31->unk08.z = temp_f30*cosd(temp_f31);
temp_r31->unk40.r = temp_r31->unk40.g = temp_r31->unk40.b = 255;
temp_r31->unk40.a = (frand() & 0x1F)+16;
}
}
temp_r28 = 0;
temp_r31 = particle->unk_48;
for(temp_r29=0; temp_r29<particle->unk_30; temp_r29++, temp_r31++) {
if(temp_r31->unk40.a == 0) {
temp_r28++;
continue;
}
temp_r31->unk34.x += temp_r31->unk08.x;
temp_r31->unk34.y += temp_r31->unk08.y;
temp_r31->unk34.z += temp_r31->unk08.z;
temp_r31->unk08.y += -0.5f;
temp_r31->unk40.a--;
}
if(temp_r28 == particle->unk_30) {
model->attr |= 0x1;
}
DCStoreRangeNoSync(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01));
}
void fn_1_47EC(Vec *arg0)
{
Hu3DModelPosSet(lbl_1_bss_5868->model[10], arg0->x, arg0->y, arg0->z);
Hu3DModelAttrReset(lbl_1_bss_5868->model[10], 1);
}