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);
}