From 4025072bf1b34281e094e1a0c02b050947378395 Mon Sep 17 00:00:00 2001 From: Rainchus Date: Thu, 4 Apr 2024 12:49:39 -0500 Subject: [PATCH] match and link m407/map.c --- configure.py | 2 +- src/REL/m407dll/map.c | 124 +++++++++++++++++++++++++++++++++++++++ src/REL/m407dll/player.c | 6 +- 3 files changed, 128 insertions(+), 4 deletions(-) create mode 100644 src/REL/m407dll/map.c diff --git a/configure.py b/configure.py index 002e330b..ffe88cdf 100644 --- a/configure.py +++ b/configure.py @@ -835,7 +835,7 @@ config.libs = [ objects = { Object(Matching, "REL/executor.c"), Object(Matching, "REL/m407dll/player.c"), - Object(NonMatching, "REL/m407dll/map.c"), + Object(Matching, "REL/m407dll/map.c"), Object(NonMatching, "REL/m407dll/camera.c"), Object(NonMatching, "REL/m407dll/whomp.c"), Object(NonMatching, "REL/m407dll/whomp_score.c"), diff --git a/src/REL/m407dll/map.c b/src/REL/m407dll/map.c new file mode 100644 index 00000000..0ef5208c --- /dev/null +++ b/src/REL/m407dll/map.c @@ -0,0 +1,124 @@ +#include "game/process.h" +#include "game/object.h" +#include "game/gamework_data.h" +#include "game/hsfman.h" + +void fn_1_162C(omObjData*); +void fn_1_1A8C(omObjData*); + +Process* lbl_1_bss_2C; +omObjData* lbl_1_bss_28; +s16 lbl_1_bss_24; +s32 lbl_1_bss_20; + +s32 lbl_1_data_198[] = { + 0x00260000, + 0x00260002, + 0x00260003, + 0x00260001, + 0x00260005, + 0x00260006, + 0x00260007, + 0x00260008, + 0x00260009, + 0x0026000A, + 0x0026000B, + 0x0026000C, + 0x00260004, +}; + +Vec lbl_1_data_1CC[] = { + {600.0f, 3.0f, -300.0f}, + {200.0f, 3.0f, -300.0f}, + {-200.0f, 3.0f, -300.0f}, + {-600.0f, 3.0f, -300.0f} +}; + +Point3d lbl_1_data_1FC = {2000.0f, 3000.0f, 2000.0f}; +Point3d lbl_1_data_208 = {-0.5f, -0.5f, -0.5f}; +GXColor lbl_1_data_214 = {255, 255, 255, 255}; +Point3d lbl_1_data_218 = {0.0f, 1.0f, 0.0f}; + +f32 pad[1] = {0.0f}; + +void fn_1_14F0(Process* arg0, s32 arg1) { + LightData* sp10; + + lbl_1_bss_2C = arg0; + lbl_1_bss_20 = arg1; + lbl_1_bss_28 = omAddObjEx(lbl_1_bss_2C, 0x100, 0xDU, 0U, 1, fn_1_162C); + omSetStatBit(lbl_1_bss_28, 0x100U); + Hu3DLighInit(); + lbl_1_bss_24 = Hu3DGLightCreateV(&lbl_1_data_1FC, &lbl_1_data_208, &lbl_1_data_214); + Hu3DGLightInfinitytSet(lbl_1_bss_24); + sp10 = &Hu3DGlobalLight[lbl_1_bss_24]; +} + +void fn_1_15D8(void) { + s32 i; + + for (i = 0; i < 13; i++) { + Hu3DModelKill(lbl_1_bss_28->model[i]); + } +} + +void fn_1_162C(omObjData* arg0) { + s32 var_r30; + s32 var_r30_2; + s32 var_r30_3; + s32 var_r30_4; + s32 i; + + arg0->func = fn_1_1A8C; + arg0->model[0] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_198[2], 0x10000000, HEAP_DATA)); + Hu3DModelShadowMapSet(arg0->model[0]); + Hu3DModelAmbSet(arg0->model[0], 1.0f, 1.0f, 1.0f); + arg0->model[1] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_198[3], 0x10000000, HEAP_DATA)); + Hu3DModelAmbSet(arg0->model[1], 1.0f, 1.0f, 1.0f); + Hu3DModelAttrSet(arg0->model[1], 1U); + for (i = 0; i < 4; i++) { + arg0->model[i+2] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_198[GWPlayerCfg[i].character + 4], 0x10000000, HEAP_DATA)); + Hu3DModelAmbSet(arg0->model[i + 2], 1.0f, 1.0f, 1.0f); + Hu3DModelShadowMapSet(arg0->model[i + 2]); + } + + for (i = 0; i < 5; i++) { + if (i == 0) { + arg0->model[i + 6] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_198[0], 0x10000000, HEAP_DATA)); + } else { + arg0->model[i + 6] = Hu3DModelLink(arg0->model[6]); + } + Hu3DModelAmbSet(arg0->model[i + 6], 1.0f, 1.0f, 1.0f); + Hu3DModelShadowMapSet(arg0->model[i + 6]); + } + + arg0->model[11] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_198[12], 0x10000000, HEAP_DATA)); + arg0->model[12] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_198[1], 0x10000000, HEAP_DATA)); + + for (i = 0; i < 4; i++) { + Hu3DModelPosSetV(arg0->model[i + 2], &lbl_1_data_1CC[i]); + } + + for (i = 0; i < 5; i++) { + Hu3DModelPosSet(arg0->model[i + 6], 0.0f, 0.0f, -2000.0f + (8000.0f * (f32) i)); + } + + Hu3DModelPosSet(arg0->model[11], 0.0f, 0.0f, -3900.0f); + Hu3DModelPosSet(arg0->model[12], 0.0f, 0.0f, 0.0f); + Hu3DModelAttrSet(arg0->model[12], 0x40000001); + + if (lbl_1_bss_20 > 0) { + Hu3DModelPosSet(arg0->model[1], 0.0f, 0.0f, 200.0f * (f32) lbl_1_bss_20); + Hu3DModelAttrReset(arg0->model[1], 1); + } +} + +void fn_1_1A8C(omObjData* arg0) { + Point3d sp8; + + sp8.x = lbl_1_data_1FC.x; + sp8.y = lbl_1_data_1FC.y; + sp8.z = lbl_1_data_1FC.z + Center.z; + Hu3DGLightPosSetV(lbl_1_bss_24, &sp8, &lbl_1_data_208); + Hu3DShadowPosSet(&sp8, &lbl_1_data_218, &Center); +} \ No newline at end of file diff --git a/src/REL/m407dll/player.c b/src/REL/m407dll/player.c index 22257fd6..abe40dce 100644 --- a/src/REL/m407dll/player.c +++ b/src/REL/m407dll/player.c @@ -56,12 +56,12 @@ void fn_1_99C(omObjData*); void fn_1_A1C(omObjData* arg0); void fn_1_26CC(u8); void fn_1_4544(s32, s32, f32, f32, f32); -s16 fn_1_28B8(u8); /* extern */ -s16 fn_1_28E4(u8); /* extern */ +s16 fn_1_28B8(u8); +s16 fn_1_28E4(u8); double cos(double x); double sin(double x); -inline SetDominationDataStuff(omObjData* arg0, s32 val0, s32 val1) { +inline void SetDominationDataStuff(omObjData* arg0, s32 val0, s32 val1) { unkDominationData* temp_r29 = arg0->data; temp_r29->unk_1C = val0; temp_r29->unk_20 = val1;