Matched m444dll/shadow.c

This commit is contained in:
kabiskac 2024-08-09 03:44:03 +02:00
parent a0ebc7588d
commit a05b5db43e
5 changed files with 199 additions and 131 deletions

View file

@ -40,8 +40,10 @@ CameraViewParams lbl_1_data_0[] = {
{ { -23, 0, 0 }, { 0, 65, -97 }, 1318 },
};
DataListSprite lbl_1_data_118[]
= { { DATA_MAKE_NUM(DATADIR_M443, 0x22), 0, 10, 288, -200, { 255, 255, 255, 255 } }, { 0, 0, 0, 0, 0, { 0, 0, 0, 0 } } };
DataListSprite lbl_1_data_118[] = {
{ DATA_MAKE_NUM(DATADIR_M444, 0x22), 0, 10, 288, -200, { 255, 255, 255, 255 } },
{ 0, 0, 0, 0, 0, { 0, 0, 0, 0 } },
};
float lbl_1_data_140[] = { 90, 250, 420 };
@ -55,9 +57,16 @@ Vec lbl_1_data_14C[] = {
s16 lbl_1_data_188[] = { 1, 1, 2, 2, 2 };
s32 lbl_1_data_194[] = { DATA_MAKE_NUM(DATADIR_M443, 0x24), DATA_MAKE_NUM(DATADIR_M443, 0x25), DATA_MAKE_NUM(DATADIR_M443, 0x26),
DATA_MAKE_NUM(DATADIR_M443, 0x27), DATA_MAKE_NUM(DATADIR_M443, 0x28), DATA_MAKE_NUM(DATADIR_M443, 0x29), DATA_MAKE_NUM(DATADIR_M443, 0x2A),
DATA_MAKE_NUM(DATADIR_M443, 0x2B) };
s32 lbl_1_data_194[] = {
DATA_MAKE_NUM(DATADIR_M444, 0x24),
DATA_MAKE_NUM(DATADIR_M444, 0x25),
DATA_MAKE_NUM(DATADIR_M444, 0x26),
DATA_MAKE_NUM(DATADIR_M444, 0x27),
DATA_MAKE_NUM(DATADIR_M444, 0x28),
DATA_MAKE_NUM(DATADIR_M444, 0x29),
DATA_MAKE_NUM(DATADIR_M444, 0x2A),
DATA_MAKE_NUM(DATADIR_M444, 0x2B),
};
omObjData *lbl_1_bss_30C;
Process *lbl_1_bss_308;
@ -1241,7 +1250,7 @@ void fn_1_655C(void)
up.y = 1;
up.z = 0;
Hu3DShadowPosSet(&pos, &up, &target);
Hu3DReflectMapSet(HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M443, 0x23), MEMORY_DEFAULT_NUM, HEAP_DATA));
Hu3DReflectMapSet(HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M444, 0x23), MEMORY_DEFAULT_NUM, HEAP_DATA));
for (i = 0; i < 4; i++) {
lbl_1_data_470[i + 47].datanum = lbl_1_data_470[i + 51].datanum = lbl_1_data_194[GWPlayerCfg[i].character];
}
@ -1266,8 +1275,8 @@ void fn_1_655C(void)
lbl_1_bss_2D0 = model;
lbl_1_bss_2C0[0] = CharModelMotionCreate(lbl_1_bss_2DA, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00));
lbl_1_bss_2C0[1] = CharModelMotionCreate(lbl_1_bss_2DA, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02));
lbl_1_bss_2C0[2] = CharModelMotionCreate(lbl_1_bss_2DA, lbl_1_bss_2DA + DATA_MAKE_NUM(DATADIR_M443, 0x45));
lbl_1_bss_2C0[3] = CharModelMotionCreate(lbl_1_bss_2DA, lbl_1_bss_2DA + DATA_MAKE_NUM(DATADIR_M443, 0x4D));
lbl_1_bss_2C0[2] = CharModelMotionCreate(lbl_1_bss_2DA, lbl_1_bss_2DA + DATA_MAKE_NUM(DATADIR_M444, 0x45));
lbl_1_bss_2C0[3] = CharModelMotionCreate(lbl_1_bss_2DA, lbl_1_bss_2DA + DATA_MAKE_NUM(DATADIR_M444, 0x4D));
CharModelMotionSet(lbl_1_bss_2DA, lbl_1_bss_2C0[0]);
Hu3DModelPosSet(model, 0, 0, 200);
Hu3DModelAttrSet(model, 0x40000001);
@ -1298,7 +1307,7 @@ void fn_1_655C(void)
fn_1_8424();
for (i = 0; i < 20; i++) {
if (i == 0) {
model = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M443, 0x13));
model = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M444, 0x13));
}
else {
model = Hu3DModelLink(lbl_1_bss_148[0][0]);
@ -1311,7 +1320,7 @@ void fn_1_655C(void)
}
for (i = 0; i < 20; i++) {
if (i == 0) {
model = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M443, 0x12));
model = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M444, 0x12));
}
else {
model = Hu3DModelLink(lbl_1_bss_8[0][0]);

59
src/REL/m444dll/shadow.c Normal file
View file

@ -0,0 +1,59 @@
#include "game/hsfman.h"
#include "game/object.h"
#include "game/window.h"
#include "ext_math.h"
void fn_1_D9F4(s16);
void fn_1_D9C8(void)
{
Hu3DLayerHookSet(7, fn_1_D9F4);
}
void fn_1_D9F4(s16 arg0)
{
Mtx44 sp64;
Mtx sp34;
Vec sp28;
Vec sp1C;
Vec sp10;
GXColor spC;
CameraData *var_r31;
var_r31 = &Hu3DCamera[0];
C_MTXPerspective(sp64, var_r31->fov, var_r31->aspect, var_r31->near, var_r31->far);
GXSetProjection(sp64, GX_PERSPECTIVE);
GXSetViewport(0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f);
GXSetScissor(0, 0, 0x280, 0x1E0);
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
spC.a = 0xFF;
GXSetTevColor(GX_TEVREG0, spC);
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0);
GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_C0);
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_ZERO);
GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
GXSetNumTexGens(0);
GXSetNumTevStages(1);
GXSetCullMode(GX_CULL_NONE);
GXSetAlphaCompare(GX_GEQUAL, 0, GX_AOP_AND, GX_GEQUAL, 0);
GXSetZMode(GX_TRUE, GX_ALWAYS, GX_TRUE);
sp28.x = sp28.y = sp28.z = 0.0f;
sp1C.x = sp1C.y = 0.0f;
sp1C.z = -100.0f;
sp10.x = sp10.z = 0.0f;
sp10.y = 1.0f;
C_MTXLookAt(sp34, &sp28, &sp10, &sp1C);
GXLoadPosMtxImm(sp34, 0);
sp28.x = 1.2000000476837158 * (10000.0 * -sin(var_r31->fov / 2));
sp28.y = 0.8333333134651184 * (10000.0 * -sin(var_r31->fov / 2));
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
GXPosition3f32(-sp28.x, -sp28.y, -10000.0f);
GXPosition3f32(sp28.x, -sp28.y, -10000.0f);
GXPosition3f32(sp28.x, sp28.y, -10000.0f);
GXPosition3f32(-sp28.x, sp28.y, -10000.0f);
}

View file

@ -1479,26 +1479,26 @@ void fn_1_7414(ModelData *model, Mtx matrix)
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXInitTexObj(&spC, Hu3DShadowData.unk_04, Hu3DShadowData.unk_02, Hu3DShadowData.unk_02, 1, GX_CLAMP, GX_CLAMP, 0);
GXInitTexObjLOD(&spC, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, 0, 0, GX_ANISO_1);
GXInitTexObj(&spC, Hu3DShadowData.unk_04, Hu3DShadowData.unk_02, Hu3DShadowData.unk_02, 1, GX_CLAMP, GX_CLAMP, GX_FALSE);
GXInitTexObjLOD(&spC, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1);
GXLoadTexObj(&spC, GX_TEXMAP0);
PSMTXInverse(Hu3DCameraMtx, sp5C);
PSMTXConcat(sp5C, matrix, sp8C);
PSMTXConcat(Hu3DShadowData.unk_68, Hu3DShadowData.unk_38, sp2C);
PSMTXConcat(sp2C, sp8C, sp8C);
GXLoadTexMtxImm(sp8C, 0x39, GX_MTX3x4);
GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, 0x39, 0, 0x7D);
GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, 0x39, GX_FALSE, 0x7D);
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0);
GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_TEXC, 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);
GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, 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, 0, GX_TEVPREV);
GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV);
GXSetNumTexGens(1);
GXSetNumTevStages(1);
GXSetNumChans(1);
GXSetChanCtrl(GX_COLOR0, 1, GX_SRC_REG, GX_SRC_VTX, 1, GX_DF_CLAMP, GX_AF_NONE);
GXSetChanCtrl(GX_COLOR0, GX_TRUE, GX_SRC_REG, GX_SRC_VTX, 1, GX_DF_CLAMP, GX_AF_NONE);
GXSetBlendMode(GX_BM_BLEND, GX_BL_ZERO, GX_BL_INVDSTCLR, GX_LO_NOOP);
GXSetZMode(1, GX_LEQUAL, 0);
GXSetZMode(1, GX_LEQUAL, GX_FALSE);
GXLoadPosMtxImm(matrix, 0);
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
GXPosition3f32(-500.0f, 0.0f, -500.0f);

View file

@ -169,7 +169,7 @@ void fn_80040374(s16 arg0, s16 arg1, s16 arg2, s16 arg3) {
unkCode_8003FF68* temp_r3;
process = HuPrcChildCreate(fn_8004040C, 1, 0x1000, 0, HuPrcCurrentGet());
temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(unkCode_8003FF68), 0x10000000);
temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(unkCode_8003FF68), MEMORY_DEFAULT_NUM);
process->user_data = temp_r3;
temp_r3->unk0 = arg0;
temp_r3->unk2 = arg1;
@ -203,4 +203,4 @@ void fn_8004040C(void) {
}
HuPrcVSleep();
}
}
}