From 73afde969d99e571c1baa1d54e3bbc73e5dfb00b Mon Sep 17 00:00:00 2001 From: CreateSource Date: Fri, 24 May 2024 10:49:39 -0400 Subject: [PATCH] Match m446dll/camera.c also changed the header to have a lowercase d --- config/GMPE01_00/rels/m446dll/symbols.txt | 40 +++---- configure.py | 2 +- include/REL/m446Dll.h | 25 +++- src/REL/m446Dll/camera.c | 140 ++++++++++++++++++++++ src/REL/m446Dll/card.c | 2 +- src/REL/m446Dll/deck.c | 2 +- src/REL/m446Dll/main.c | 10 +- 7 files changed, 188 insertions(+), 33 deletions(-) create mode 100644 src/REL/m446Dll/camera.c diff --git a/config/GMPE01_00/rels/m446dll/symbols.txt b/config/GMPE01_00/rels/m446dll/symbols.txt index 6997b02c..7197b922 100644 --- a/config/GMPE01_00/rels/m446dll/symbols.txt +++ b/config/GMPE01_00/rels/m446dll/symbols.txt @@ -203,23 +203,23 @@ lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data: lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float -lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float -lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float -lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float -lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 data:double -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:double -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 data:double -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float -lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 data:double +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 scope:local data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 scope:local data:double +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 scope:local data:double lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 data:double lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x8 data:double @@ -271,9 +271,9 @@ lbl_1_data_30F = .data:0x0000030F; // type:object size:0x1F scope:local data:str lbl_1_data_32E = .data:0x0000032E; // type:object size:0x22 scope:local data:string jumptable_1_data_350 = .data:0x00000350; // type:object size:0x1C scope:local lbl_1_data_370 = .data:0x00000370; // type:object size:0xC data:float -lbl_1_data_37C = .data:0x0000037C; // type:object size:0x1E data:string -lbl_1_data_39A = .data:0x0000039A; // type:object size:0x1E data:string -lbl_1_data_3B8 = .data:0x000003B8; // type:object size:0x10 +lbl_1_data_37C = .data:0x0000037C; // type:object size:0x1E scope:local data:string +lbl_1_data_39A = .data:0x0000039A; // type:object size:0x1E scope:local data:string +lbl_1_data_3B8 = .data:0x000003B8; // type:object size:0x10 scope:local data:string lbl_1_data_3C8 = .data:0x000003C8; // type:object size:0x24 lbl_1_data_3EC = .data:0x000003EC; // type:object size:0x24 lbl_1_data_410 = .data:0x00000410; // type:object size:0x14 diff --git a/configure.py b/configure.py index e8d77548..c6651eea 100644 --- a/configure.py +++ b/configure.py @@ -1193,7 +1193,7 @@ config.libs = [ Object(Matching, "REL/m446Dll/deck.c"), Object(Matching, "REL/m446Dll/table.c"), Object(Matching, "REL/m446Dll/player.c"), - Object(NonMatching, "REL/m446Dll/camera.c"), + Object(Matching, "REL/m446Dll/camera.c"), Object(NonMatching, "REL/m446Dll/cursor.c"), Object(NonMatching, "REL/m446Dll/stage.c"), }, diff --git a/include/REL/m446Dll.h b/include/REL/m446Dll.h index e6695886..2c45db04 100644 --- a/include/REL/m446Dll.h +++ b/include/REL/m446Dll.h @@ -146,6 +146,19 @@ typedef void (*m446Func4)(unkStruct4*); typedef void (*m446Func8)(unkStruct8*); ////// BSS ////// +// cursor.c +extern Vec lbl_1_bss_8C; +extern Vec lbl_1_bss_80; +extern f32 lbl_1_bss_7C; +extern Vec lbl_1_bss_70; +extern Vec lbl_1_bss_64; +extern f32 lbl_1_bss_60; +extern Vec lbl_1_bss_54; +extern Vec lbl_1_bss_48; +extern f32 lbl_1_bss_44; +extern f32 lbl_1_bss_40; +extern f32 lbl_1_bss_3C; +extern s32 lbl_1_bss_38; // player.c extern unkStruct3* lbl_1_bss_30; // table.c @@ -281,4 +294,14 @@ extern void fn_1_62F0(unkStruct8*, Vec*, s32); extern void fn_1_637C(unkStruct8*, s32); extern void fn_1_64BC(unkStruct8*, s32, s32); extern void fn_1_6578(unkStruct8*); -extern void fn_1_6620(unkStruct8*); \ No newline at end of file +extern void fn_1_6620(unkStruct8*); +// camera.c +extern s32 fn_1_6778(void); +extern void fn_1_68D8(void); +extern void fn_1_68DC(void); +extern void fn_1_6EA0(Vec*); +extern void fn_1_6EC4(Vec*); +extern void fn_1_6EE8(f32); +extern void fn_1_6EF8(Vec*, Vec*, f32*, s32); +extern s32 fn_1_708C(void); +extern void fn_1_709C(void); \ No newline at end of file diff --git a/src/REL/m446Dll/camera.c b/src/REL/m446Dll/camera.c new file mode 100644 index 00000000..f7c402a5 --- /dev/null +++ b/src/REL/m446Dll/camera.c @@ -0,0 +1,140 @@ +#include "REL/m446dll.h" + +#include "math.h" +#include "game/hsfman.h" +#include "game/printfunc.h" +#include "game/pad.h" + +// bss +Vec lbl_1_bss_8C; +Vec lbl_1_bss_80; +f32 lbl_1_bss_7C; +Vec lbl_1_bss_70; +Vec lbl_1_bss_64; +f32 lbl_1_bss_60; +Vec lbl_1_bss_54; +Vec lbl_1_bss_48; +f32 lbl_1_bss_44; +f32 lbl_1_bss_40; +f32 lbl_1_bss_3C; +s32 lbl_1_bss_38; + +// data +Vec lbl_1_data_370 = {0, 1, 0}; + +s32 fn_1_6778(void) { + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraPerspectiveSet(1, 30.0f, 10.0f, 8000.0f, 1.2f); + lbl_1_bss_8C.x = 0.0f; + lbl_1_bss_8C.y = 0.0f; + lbl_1_bss_8C.z = 0.0f; + lbl_1_bss_80.x = 0.0f; + lbl_1_bss_80.y = 0.0f; + lbl_1_bss_80.z = 0.0f; + lbl_1_bss_7C = 2000.0f; + lbl_1_bss_38 = 0; + return 1; +} + +void fn_1_68D8(void) { + return; +} + +void fn_1_68DC(void) { + Vec sp2C; + Vec sp20; + Vec sp14; + f32 sp10; + f32 temp_f29; + f32 temp_f30; + f32 temp_f31; + + if (lbl_1_bss_38 != 0) { + temp_f31 = sin((M_PI * (90.0f * lbl_1_bss_40)) / 180.0); + temp_f31 *= temp_f31; + lbl_1_bss_8C.x = lbl_1_bss_54.x + (temp_f31 * (lbl_1_bss_70.x - lbl_1_bss_54.x)); + lbl_1_bss_8C.y = lbl_1_bss_54.y + (temp_f31 * (lbl_1_bss_70.y - lbl_1_bss_54.y)); + lbl_1_bss_8C.z = lbl_1_bss_54.z + (temp_f31 * (lbl_1_bss_70.z - lbl_1_bss_54.z)); + lbl_1_bss_80.x = lbl_1_bss_48.x + (temp_f31 * (lbl_1_bss_64.x - lbl_1_bss_48.x)); + lbl_1_bss_80.y = lbl_1_bss_48.y + (temp_f31 * (lbl_1_bss_64.y - lbl_1_bss_48.y)); + lbl_1_bss_80.z = lbl_1_bss_48.z + (temp_f31 * (lbl_1_bss_64.z - lbl_1_bss_48.z)); + lbl_1_bss_7C = lbl_1_bss_44 + (temp_f31 * (lbl_1_bss_60 - lbl_1_bss_44)); + lbl_1_bss_40 += lbl_1_bss_3C; + if (lbl_1_bss_40 >= 1.0f) { + lbl_1_bss_8C = lbl_1_bss_70; + lbl_1_bss_80 = lbl_1_bss_64; + lbl_1_bss_7C = lbl_1_bss_60; + lbl_1_bss_38 = 0; + } + } + temp_f30 = lbl_1_bss_80.x; + temp_f29 = lbl_1_bss_80.y; + sp10 = lbl_1_bss_80.z; + sp2C.x = (lbl_1_bss_8C.x + (lbl_1_bss_7C * (sin((M_PI * temp_f29) / 180.0) * cos((M_PI * temp_f30) / 180.0)))); + sp2C.y = (lbl_1_bss_8C.y + (lbl_1_bss_7C * -sin((M_PI * temp_f30) / 180.0))); + sp2C.z = (lbl_1_bss_8C.z + (lbl_1_bss_7C * (cos((M_PI * temp_f29) / 180.0) * cos((M_PI * temp_f30) / 180.0)))); + sp20.x = lbl_1_bss_8C.x; + sp20.y = lbl_1_bss_8C.y; + sp20.z = lbl_1_bss_8C.z; + sp14.x = (sin((M_PI * temp_f29) / 180.0) * sin((M_PI * temp_f30) / 180.0)); + sp14.y = cos((M_PI * temp_f30) / 180.0); + sp14.z = (cos((M_PI * temp_f29) / 180.0) * sin((M_PI * temp_f30) / 180.0)); + Hu3DCameraPosSet(1, sp2C.x, sp2C.y, sp2C.z, sp14.x, sp14.y, sp14.z, sp20.x, sp20.y, sp20.z); +} + +void fn_1_6EA0(Vec* arg0) { + lbl_1_bss_8C = *arg0; +} + +void fn_1_6EC4(Vec* arg0) { + lbl_1_bss_80 = *arg0; +} + +void fn_1_6EE8(f32 arg0) { + lbl_1_bss_7C = arg0; +} + +void fn_1_6EF8(Vec* arg0, Vec* arg1, f32* arg2, s32 arg3) { + Vec* var_r31; + Vec* var_r30; + f32 var_f31; + + if (arg0) { + var_r31 = arg0; + } else { + var_r31 = &lbl_1_bss_8C; + } + lbl_1_bss_70 = *var_r31; + if (arg1) { + var_r30 = arg1; + } else { + var_r30 = &lbl_1_bss_80; + } + lbl_1_bss_64 = *var_r30; + if (arg2) { + var_f31 = *arg2; + } else { + var_f31 = lbl_1_bss_7C; + } + lbl_1_bss_60 = var_f31; + lbl_1_bss_54 = lbl_1_bss_8C; + lbl_1_bss_48 = lbl_1_bss_80; + lbl_1_bss_44 = lbl_1_bss_7C; + lbl_1_bss_40 = 0.0f; + lbl_1_bss_3C = 1.0f / arg3; + lbl_1_bss_38 = 1; +} + +s32 fn_1_708C(void) { + return lbl_1_bss_38; +} + +void fn_1_709C(void) { + lbl_1_bss_80.x += 0.01f * *HuPadSubStkX; + lbl_1_bss_80.z += 0.01f * *HuPadSubStkY; + lbl_1_bss_7C += 0.05f * *HuPadTrigL; + lbl_1_bss_7C -= 0.05f * *HuPadTrigR; + print8(0x20, 0x84, 1.5f, "LOOKAT : x=%.2f y=%.2f z=%.2f", lbl_1_bss_8C.x, lbl_1_bss_8C.y, lbl_1_bss_8C.z); + print8(0x20, 0x94, 1.5f, "ANGLE : x=%.2f y=%.2f z=%.2f", lbl_1_bss_80.x, lbl_1_bss_80.y, lbl_1_bss_80.z); + print8(0x20, 0xA4, 1.5f, "ZOOM : %.2f", lbl_1_bss_7C); +} \ No newline at end of file diff --git a/src/REL/m446Dll/card.c b/src/REL/m446Dll/card.c index eac82b2b..5f8ffb33 100644 --- a/src/REL/m446Dll/card.c +++ b/src/REL/m446Dll/card.c @@ -1,4 +1,4 @@ -#include "REL/m446Dll.h" +#include "REL/m446dll.h" #include "game/hsfman.h" #include "math.h" diff --git a/src/REL/m446Dll/deck.c b/src/REL/m446Dll/deck.c index 0e14dc2d..5d35c30c 100644 --- a/src/REL/m446Dll/deck.c +++ b/src/REL/m446Dll/deck.c @@ -1,4 +1,4 @@ -#include "REL/m446Dll.h" +#include "REL/m446dll.h" #include "math.h" diff --git a/src/REL/m446Dll/main.c b/src/REL/m446Dll/main.c index 2c734ae4..2b39dcb4 100644 --- a/src/REL/m446Dll/main.c +++ b/src/REL/m446Dll/main.c @@ -1,4 +1,4 @@ -#include "REL/m446Dll.h" +#include "REL/m446dll.h" #include "rel_sqrt_consts.h" #include "game/gamework_data.h" @@ -10,14 +10,6 @@ #include "game/frand.h" #include "game/minigame_seq.h" -// camera.c -extern void fn_1_6778(void); -extern void fn_1_68D8(void); -extern void fn_1_68DC(void); -extern void fn_1_6EA0(Vec*); -extern void fn_1_6EC4(Vec*); -extern void fn_1_6EE8(f32); -extern void fn_1_6EF8(Vec*, Vec*, f32*, s32); // cursor.c extern s32 fn_1_72E0(void); extern void fn_1_72F8(void);