diff --git a/config/GMPE01_00/rels/mentDll/splits.txt b/config/GMPE01_00/rels/mentDll/splits.txt index 57db84a5..a1376ff8 100644 --- a/config/GMPE01_00/rels/mentDll/splits.txt +++ b/config/GMPE01_00/rels/mentDll/splits.txt @@ -9,9 +9,10 @@ Sections: REL/mentDll/common.c: .text start:0x00000000 end:0x0000658C .rodata start:0x00000000 end:0x000000E8 + .data start:0x00000000 end:0x000000D8 REL/mentDll/main.c: .text start:0x0000658C end:0x00023A38 .rodata start:0x000000E8 end:0x00000528 - .data start:0x00000000 end:0x000006D0 + .data start:0x000000D8 end:0x000006D0 .bss start:0x00000000 end:0x000036C4 diff --git a/include/REL/mentDll.h b/include/REL/mentDll.h index 9167ed8e..623bdc08 100644 --- a/include/REL/mentDll.h +++ b/include/REL/mentDll.h @@ -2,27 +2,21 @@ #define MENTDLL_H #include "game/object.h" +extern s32 lbl_1_data_0[][4]; +//the prev and current struct member might be vice versa typedef struct MentDllUnkBss64Struct { - /* 0x00 */ s16 unk00; - /* 0x02 */ s16 unk02; - /* 0x04 */ s32 unk04; - /* 0x08 */ float unk_08; - /* 0x0C */ float unk_0C; - /* 0x10 */ float unk_10; - /* 0x14 */ s32 unk14; - /* 0x18 */ s32 unk18; - /* 0x1C */ s32 unk1C; - /* 0x20 */ float unk_20; - /* 0x24 */ float unk_24; - /* 0x28 */ float unk_28; - /* 0x2C */ s32 unk2C; - /* 0x30 */ s32 unk30; - /* 0x34 */ s32 unk34; - /* 0x38 */ float unk_38; - /* 0x3C */ s32 unk3C; + /* 0x00 */ void (*func)(void); + /* 0x04 */ void (*func2)(f32 arg9); + /* 0x08 */ Vec center; + /* 0x14 */ Vec prevCenter; + /* 0x20 */ Vec rot; + /* 0x2C */ Vec prevRot; + /* 0x38 */ float zoom; + /* 0x3C */ f32 prevZoom; /* 0x40 */ s32 unk_40; } MentDllUnkBss64Struct; /* size = 0x44 */ +extern MentDllUnkBss64Struct lbl_1_bss_64; float fn_1_20C(float arg8, float arg9, float argA, float argB); float fn_1_234(float arg8, float arg9, float argA); @@ -36,22 +30,22 @@ void fn_1_5E8(s32 arg0); void fn_1_6D0(void); s32 fn_1_1434(s32 arg0, s32 arg1, s32 arg2); void fn_1_16AC(s32 arg0); -void fn_1_1968(s32 arg0, u32 arg1, s32 arg2, s32 arg3); -s32 fn_1_1A5C(u32 arg0, s32 arg1, s32 arg2); -s32 fn_1_1DD8(u32 arg0, s32 arg1, s32 arg2); -s32 fn_1_2154(u32 arg0); +void fn_1_1968(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +s32 fn_1_1A5C(s32 arg0, s32 arg1, s32 arg2); +s32 fn_1_1DD8(s32 arg0, s32 arg1, s32 arg2); +s32 fn_1_2154(s32 arg0); void fn_1_2318(s32 arg0); -void fn_1_2808(void *arg0); -void fn_1_2844(Process *arg0, void *arg1); -void fn_1_4138(MentDllUnkBss64Struct *arg0, float *arg1, float arg8, float arg9, float argA); -void fn_1_5150(void *arg0, void *arg1, float arg8, float arg9, float argA); +void fn_1_2808(void (*arg0)(void)); +void fn_1_2844(Process* arg0, void (*arg1)(void)); +void fn_1_29A0(MentDllUnkBss64Struct* arg0); +void fn_1_4138(MentDllUnkBss64Struct* arg0, MentDllUnkBss64Struct* arg1, f32 arg8, f32 arg9, f32 argA); +void fn_1_5150(MentDllUnkBss64Struct* arg0, MentDllUnkBss64Struct* arg1, f32 arg8, f32 arg9, f32 argA); void fn_1_5818(omObjData *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); void fn_1_59A0(omObjData *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); void fn_1_5C08(omObjData *arg0); void fn_1_5CDC(omObjData *arg0, s32 arg1, s32 arg2); void fn_1_5D38(omObjData *arg0, s32 arg1, Vec arg2, float arg8, float arg9, float argA, s32 arg3, s32 arg4); void fn_1_6534(s32, s32, float, float); - void fn_1_658C(Process *arg0); #endif diff --git a/src/REL/mentDll/common.c b/src/REL/mentDll/common.c index 4de4b585..d98adb7c 100644 --- a/src/REL/mentDll/common.c +++ b/src/REL/mentDll/common.c @@ -7,16 +7,36 @@ #include "game/objsub.h" #include "game/wipe.h" #include "game/board/tutorial.h" +#include "game/pad.h" +#include "REL/mentDll.h" +#include "game/printfunc.h" +#include "game/hsfmotion.h" Process* lbl_1_bss_0; - //TODO: unknown type extern s32 lbl_1_bss_A8[]; +s32 lbl_1_data_0[][4] = { + { 0x00000037, 0x00000038, 0x00000036, 0x00000039 }, + { 0x00000043, 0x00000045, 0x00000044, 0x00000043 }, + { 0x00000040, 0x00000042, 0x00000041, 0x00000040 }, + { 0x0000004B, 0x0000004D, 0x0000004C, 0x0000004B }, + { 0x00000046, 0x00000048, 0x00000047, 0x00000046 }, + { 0x0000003E, 0x0000003F, 0x0000003E, 0x0000003E }, + { 0x0000003A, 0x0000003B, 0x0000003C, 0xFFFFFFFF }, +}; + +s32 lbl_1_data_70 = -1; + +// char lbl_1_data_74[] = ">>>>>>>>>> CAMERA DATA <<<<<<<<<<"; +// char lbl_1_data_96[] = "CENTER : %.2f, %.2f, %.2f"; +// char lbl_1_data_B0[] = "ROT : %.2f, %.2f, %.2f"; +// char lbl_1_data_CA[] = "ZOOM : %.2f"; + extern s32 _prolog(); extern void _epilog(); void fn_1_144(void); - +void fn_1_2318(s32); typedef void (*VoidFunc)(void); extern const VoidFunc _ctors[]; extern const VoidFunc _dtors[]; @@ -75,14 +95,16 @@ f32 fn_1_234(f32 arg8, f32 arg9, f32 argA) { return (arg9 + (arg8 * (argA - 1.0f))) / argA; } -f32 fn_1_254(f32 arg8, f32 arg9, f32 argA, f32 argB) { +//fn_1_254 +f32 CosineEaseInOut(f32 arg8, f32 arg9, f32 argA, f32 argB) { if (argA >= argB) { return arg9; } return (arg8 + ((arg9 - arg8) * (1.0 - cos((M_PI * ((90.0f / argB) * argA)) / 180.0)))); } -f32 fn_1_32C(f32 arg8, f32 arg9, f32 argA, f32 argB) { +//fn_1_32C +f32 SinusoidalInterpolation(f32 arg8, f32 arg9, f32 argA, f32 argB) { if (argA >= argB) { return arg9; } @@ -270,7 +292,7 @@ s32 fn_1_113C(s32 arg0, s32 arg1, s32 arg2, s32 arg3, f32 arg8, f32 arg9, s32 ar return temp_r30; } -s32 fn_1_1434(s32 arg0) { +s32 fn_1_1434(s32 arg0, s32 arg1, s32 arg2) { return fn_1_113C(arg0, 0, 0x15, 2, 0.5f, 0.5f, 2, 0, 0); } @@ -393,7 +415,7 @@ void fn_1_1968(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { } } -s32 fn_1_1A5C(s32 arg0, s32 arg1) { +s32 fn_1_1A5C(s32 arg0, s32 arg1, s32 arg2) { s32 var_r28; s32 var_r25 = 0; @@ -402,4 +424,399 @@ s32 fn_1_1A5C(s32 arg0, s32 arg1) { var_r25 = fn_1_18D8(var_r28, 0); fn_1_164C(var_r28, 0.5f, 0.5f); return var_r25; +} + +s32 fn_1_1DD8(s32 arg0, s32 arg1, s32 arg2) { + s32 var_r28; + s32 var_r25 = 0; + + var_r28 = fn_1_113C(0, 0, 0, 0, 0.5f, 0.5f, arg1, 0, arg0); + HuWinMesSet(var_r28, arg0); + var_r25 = fn_1_18D8(var_r28, 1); + fn_1_164C(var_r28, 0.5f, 0.5f); + return var_r25; +} + +s32 fn_1_2154(s32 arg0) { + f32 sp8[2]; + f32 temp_f29; + f32 temp_f28; + s32 ret; + f32 sizeX; + f32 sizeY; + + HuWinMesMaxSizeGet(1, sp8, arg0); + sizeX = sp8[0]; + sizeY = sp8[1]; + temp_f29 = (576.0f - sizeX) / 2; + temp_f28 = 385.0f - sizeY; + if (lbl_1_data_70 == -1) { + lbl_1_data_70 = ret = HuWinExCreateStyled(temp_f29, temp_f28, sizeX, sizeY, -1, 1); + } else { + fn_1_2318(0); + lbl_1_data_70 = ret = HuWinExCreateStyled(temp_f29, temp_f28, sizeX, sizeY, -1, 1); + } + HuWinBGTPLvlSet(lbl_1_data_70, 0.0f); + HuWinMesSet(lbl_1_data_70, arg0); + HuWinMesSpeedSet(lbl_1_data_70, 0); + HuWinDispOn(lbl_1_data_70); + return lbl_1_data_70; +} + +void fn_1_2318(s32 arg0) { + if (lbl_1_data_70 != -1) { + HuWinExCleanup(lbl_1_data_70); + lbl_1_data_70 = -1; + } +} + +void fn_1_236C(f32 arg9) { + MentDllUnkBss64Struct* temp = &lbl_1_bss_64; + + if ((HuPadBtn[0] & 0x200)) { + if ((HuPadBtn[0] & 0x20)) { + temp->center.z = temp->center.z - (HuPadStkY[0] / 10.0f); + } else { + temp->center.x += HuPadStkX[0] / 10.0f; + temp->center.y = temp->center.y + (HuPadStkY[0] / 10.0f); + } + } + if ((HuPadBtn[0] & 0x800)) { + temp->rot.x -= HuPadStkY[0] / 100.0f; + temp->rot.y = temp->rot.y + (HuPadStkX[0] / 100.0f); + if (temp->rot.x < 0.0f) { + temp->rot.x += 360.0f; + } + + if (temp->rot.x >= 360.0f) { + temp->rot.x -= 360.0f; + } + if (temp->rot.y < 0.0f) { + temp->rot.y += 360.0f; + } + if (temp->rot.y >= 360.0f) { + temp->rot.y -= 360.0f; + } + } + if ((HuPadBtn[0] & 0x400)) { + temp->zoom = temp->zoom - (HuPadStkY[0] / 10.0f); + } + print8(0x18, 0x28, 1.0f, ">>>>>>>>>> CAMERA DATA <<<<<<<<<<"); + print8(0x18, 0x32, 1.0f, "CENTER : %.2f, %.2f, %.2f", temp->center.x, temp->center.y, temp->center.z); + print8(0x18, 0x3C, 1.0f, "ROT : %.2f, %.2f, %.2f", temp->rot.x, temp->rot.y, temp->rot.z); + print8(0x18, 0x46, 1.0f, "ZOOM : %.2f", temp->zoom); +} + +void fn_1_2750(omObjData* obj) { + MentDllUnkBss64Struct* temp = &lbl_1_bss_64; + if (temp->func != NULL) { + temp->func(); + } + Center.x = temp->center.x; + Center.y = temp->center.y; + Center.z = temp->center.z; + CRot.x = temp->rot.x; + CRot.y = temp->rot.y; + CRot.z = temp->rot.z; + CZoom = temp->zoom; +} + +void fn_1_2808(void (*arg0)(void)) { + fn_1_29A0(&lbl_1_bss_64); + lbl_1_bss_64.func = arg0; +} + +void fn_1_2844(Process* arg0, void (*arg1)(void)) { + Hu3DCameraCreate(1); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraPerspectiveSet(1, 42.0f, 20.0f, 5000.0f, 1.2f); + lbl_1_bss_64.func = arg1; + lbl_1_bss_64.func2 = &fn_1_236C; + omAddObjEx(arg0, 0x7FDA, 0U, 0U, -1, omOutView); + omAddObjEx(arg0, 0x7FD9, 0U, 0U, -1, fn_1_2750); +} + +void fn_1_2964(MentDllUnkBss64Struct* arg0) { + arg0->center.x = arg0->prevCenter.x; + arg0->center.y = arg0->prevCenter.y; + arg0->center.z = arg0->prevCenter.z; + arg0->rot.x = arg0->prevRot.x; + arg0->rot.y = arg0->prevRot.y; + arg0->rot.z = arg0->prevRot.z; + arg0->zoom = arg0->prevZoom; +} + +void fn_1_29A0(MentDllUnkBss64Struct* arg0) { + arg0->unk_40 = 0.0f; + arg0->prevCenter.x = arg0->center.x; + arg0->prevCenter.y = arg0->center.y; + arg0->prevCenter.z = arg0->center.z; + arg0->prevRot.x = arg0->rot.x; + arg0->prevRot.y = arg0->rot.y; + arg0->prevRot.z = arg0->rot.z; + arg0->prevZoom = arg0->zoom; +} + +static inline f32 SmoothInterpolate(f32 arg0, f32 arg1, f32 arg2) { + return (arg1 + arg0 * (arg2 - 1.0f)) / arg2; +} + +void fn_1_29E4(MentDllUnkBss64Struct* arg0, MentDllUnkBss64Struct* arg1, f32 arg8) { + arg0->center.x = SmoothInterpolate(arg0->center.x, arg1->prevCenter.x, arg8); + arg0->center.y = SmoothInterpolate(arg0->center.y, arg1->prevCenter.y, arg8); + arg0->center.z = SmoothInterpolate(arg0->center.z, arg1->prevCenter.z, arg8); + arg0->rot.x = SmoothInterpolate(arg0->rot.x, arg1->prevRot.x, arg8); + arg0->rot.y = SmoothInterpolate(arg0->rot.y, arg1->prevRot.y, arg8); + arg0->rot.z = SmoothInterpolate(arg0->rot.z, arg1->prevRot.z, arg8); + arg0->zoom = SmoothInterpolate(arg0->zoom, arg1->prevZoom, arg8); +} + +void fn_1_2C50(MentDllUnkBss64Struct* arg0, f32 arg8) { + arg0->center.x = SmoothInterpolate(arg0->center.x, arg0->prevCenter.x, arg8); + arg0->center.y = SmoothInterpolate(arg0->center.y, arg0->prevCenter.y, arg8); + arg0->center.z = SmoothInterpolate(arg0->center.z, arg0->prevCenter.z, arg8); + arg0->rot.x = SmoothInterpolate(arg0->rot.x, arg0->prevRot.x, arg8); + arg0->rot.y = SmoothInterpolate(arg0->rot.y, arg0->prevRot.y, arg8); + arg0->rot.z = SmoothInterpolate(arg0->rot.z, arg0->prevRot.z, arg8); + arg0->zoom = SmoothInterpolate(arg0->zoom, arg0->prevZoom, arg8); +} + +inline f32 LinearInterpolation(f32 arg0, f32 arg1, f32 arg8, f32 arg9) { + if (arg9 <= arg8) { + return arg1; + } else { + return arg0 + ((arg8 / arg9) * (arg1 - arg0)); + } +} + +void fn_1_2EBC(MentDllUnkBss64Struct* arg0, MentDllUnkBss64Struct* arg1, f32 arg8, f32 arg9) { + arg1->prevCenter.x = LinearInterpolation(arg0->prevCenter.x, arg1->center.x, arg8, arg9); + arg1->prevCenter.y = LinearInterpolation(arg0->prevCenter.y, arg1->center.y, arg8, arg9); + arg1->prevCenter.z = LinearInterpolation(arg0->prevCenter.z, arg1->center.z, arg8, arg9); + + arg1->prevRot.x = LinearInterpolation(arg0->prevRot.x, arg1->rot.x, arg8, arg9); + arg1->prevRot.y = LinearInterpolation(arg0->prevRot.y, arg1->rot.y, arg8, arg9); + arg1->prevRot.z = LinearInterpolation(arg0->prevRot.z, arg1->rot.z, arg8, arg9); + + arg1->prevZoom = LinearInterpolation(arg0->prevZoom, arg1->zoom, arg8, arg9); +} + +void fn_1_3138(MentDllUnkBss64Struct* arg0, MentDllUnkBss64Struct* arg1, f32 arg8, f32 arg9) { + arg1->prevCenter.x = LinearInterpolation(arg0->prevCenter.x, arg1->center.x, arg8, arg9); + arg1->prevCenter.y = LinearInterpolation(arg0->prevCenter.y, arg1->center.y, arg8, arg9); + arg1->prevCenter.z = LinearInterpolation(arg0->prevCenter.z, arg1->center.z, arg8, arg9); + + arg1->prevRot.x = LinearInterpolation(arg0->prevRot.x, arg1->rot.x, arg8, arg9); + arg1->prevRot.y = LinearInterpolation(arg0->prevRot.y, arg1->rot.y, arg8, arg9); + arg1->prevRot.z = LinearInterpolation(arg0->prevRot.z, arg1->rot.z, arg8, arg9); + + arg1->prevZoom = LinearInterpolation(arg0->prevZoom, arg1->zoom, arg8, arg9); + + arg0->center.x = arg1->prevCenter.x; + arg0->center.y = arg1->prevCenter.y; + arg0->center.z = arg1->prevCenter.z; + arg0->rot.x = arg1->prevRot.x; + arg0->rot.y = arg1->prevRot.y; + arg0->rot.z = arg1->prevRot.z; + arg0->zoom = arg1->prevZoom; +} + +void fn_1_33EC(MentDllUnkBss64Struct* arg0, MentDllUnkBss64Struct* arg1, f32 arg8, f32 arg9, f32 argA) { + arg1->prevCenter.x = LinearInterpolation(arg0->prevCenter.x, arg1->center.x, arg8, arg9); + arg1->prevCenter.y = LinearInterpolation(arg0->prevCenter.y, arg1->center.y, arg8, arg9); + arg1->prevCenter.z = LinearInterpolation(arg0->prevCenter.z, arg1->center.z, arg8, arg9); + + arg1->prevRot.x = LinearInterpolation(arg0->prevRot.x, arg1->rot.x, arg8, arg9); + arg1->prevRot.y = LinearInterpolation(arg0->prevRot.y, arg1->rot.y, arg8, arg9); + arg1->prevRot.z = LinearInterpolation(arg0->prevRot.z, arg1->rot.z, arg8, arg9); + + arg1->prevZoom = LinearInterpolation(arg0->prevZoom, arg1->zoom, arg8, arg9); + + arg0->center.x = SmoothInterpolate(arg0->center.x, arg1->prevCenter.x, argA); + arg0->center.y = SmoothInterpolate(arg0->center.y, arg1->prevCenter.y, argA); + arg0->center.z = SmoothInterpolate(arg0->center.z, arg1->prevCenter.z, argA); + + arg0->rot.x = SmoothInterpolate(arg0->rot.x, arg1->prevRot.x, argA); + arg0->rot.y = SmoothInterpolate(arg0->rot.y, arg1->prevRot.y, argA); + arg0->rot.z = SmoothInterpolate(arg0->rot.z, arg1->prevRot.z, argA); + + arg0->zoom = SmoothInterpolate(arg0->zoom, arg1->prevZoom, argA); +} + +void fn_1_3858(MentDllUnkBss64Struct* arg0, MentDllUnkBss64Struct* arg1, f32 arg8, f32 arg9) { + arg1->prevCenter.x = SinusoidalInterpolation(arg0->prevCenter.x, arg1->center.x, arg8, arg9); + arg1->prevCenter.y = SinusoidalInterpolation(arg0->prevCenter.y, arg1->center.y, arg8, arg9); + arg1->prevCenter.z = SinusoidalInterpolation(arg0->prevCenter.z, arg1->center.z, arg8, arg9); + + arg1->prevRot.x = SinusoidalInterpolation(arg0->prevRot.x, arg1->rot.x, arg8, arg9); + arg1->prevRot.y = SinusoidalInterpolation(arg0->prevRot.y, arg1->rot.y, arg8, arg9); + arg1->prevRot.z = SinusoidalInterpolation(arg0->prevRot.z, arg1->rot.z, arg8, arg9); + + arg1->prevZoom = SinusoidalInterpolation(arg0->prevZoom, arg1->zoom, arg8, arg9); +} + +void fn_1_3CAC(MentDllUnkBss64Struct* arg0, MentDllUnkBss64Struct* arg1, f32 arg8, f32 arg9) { + arg1->prevCenter.x = SinusoidalInterpolation(arg0->prevCenter.x, arg1->center.x, arg8, arg9); + arg1->prevCenter.y = SinusoidalInterpolation(arg0->prevCenter.y, arg1->center.y, arg8, arg9); + arg1->prevCenter.z = SinusoidalInterpolation(arg0->prevCenter.z, arg1->center.z, arg8, arg9); + + arg1->prevRot.x = SinusoidalInterpolation(arg0->prevRot.x, arg1->rot.x, arg8, arg9); + arg1->prevRot.y = SinusoidalInterpolation(arg0->prevRot.y, arg1->rot.y, arg8, arg9); + arg1->prevRot.z = SinusoidalInterpolation(arg0->prevRot.z, arg1->rot.z, arg8, arg9); + + arg1->prevZoom = SinusoidalInterpolation(arg0->prevZoom, arg1->zoom, arg8, arg9); + + arg0->center.x = arg1->prevCenter.x; + arg0->center.y = arg1->prevCenter.y; + arg0->center.z = arg1->prevCenter.z; + + arg0->rot.x = arg1->prevRot.x; + arg0->rot.y = arg1->prevRot.y; + arg0->rot.z = arg1->prevRot.z; + + arg0->zoom = arg1->prevZoom; +} + +void fn_1_4138(MentDllUnkBss64Struct* arg0, MentDllUnkBss64Struct* arg1, f32 arg8, f32 arg9, f32 argA) { + arg1->prevCenter.x = SinusoidalInterpolation(arg0->prevCenter.x, arg1->center.x, arg8, arg9); + arg1->prevCenter.y = SinusoidalInterpolation(arg0->prevCenter.y, arg1->center.y, arg8, arg9); + arg1->prevCenter.z = SinusoidalInterpolation(arg0->prevCenter.z, arg1->center.z, arg8, arg9); + + arg1->prevRot.x = SinusoidalInterpolation(arg0->prevRot.x, arg1->rot.x, arg8, arg9); + arg1->prevRot.y = SinusoidalInterpolation(arg0->prevRot.y, arg1->rot.y, arg8, arg9); + arg1->prevRot.z = SinusoidalInterpolation(arg0->prevRot.z, arg1->rot.z, arg8, arg9); + + arg1->prevZoom = SinusoidalInterpolation(arg0->prevZoom, arg1->zoom, arg8, arg9); + + arg0->center.x = SmoothInterpolate(arg0->center.x, arg1->prevCenter.x, argA); + arg0->center.y = SmoothInterpolate(arg0->center.y, arg1->prevCenter.y, argA); + arg0->center.z = SmoothInterpolate(arg0->center.z, arg1->prevCenter.z, argA); + + arg0->rot.x = SmoothInterpolate(arg0->rot.x, arg1->prevRot.x, argA); + arg0->rot.y = SmoothInterpolate(arg0->rot.y, arg1->prevRot.y, argA); + arg0->rot.z = SmoothInterpolate(arg0->rot.z, arg1->prevRot.z, argA); + + arg0->zoom = SmoothInterpolate(arg0->zoom, arg1->prevZoom, argA); +} + +void fn_1_4790(MentDllUnkBss64Struct* arg0, MentDllUnkBss64Struct* arg1, f32 arg8, f32 arg9) { + arg1->prevCenter.x = CosineEaseInOut(arg0->prevCenter.x, arg1->center.x, arg8, arg9); + arg1->prevCenter.y = CosineEaseInOut(arg0->prevCenter.y, arg1->center.y, arg8, arg9); + arg1->prevCenter.z = CosineEaseInOut(arg0->prevCenter.z, arg1->center.z, arg8, arg9); + + arg1->prevRot.x = CosineEaseInOut(arg0->prevRot.x, arg1->rot.x, arg8, arg9); + arg1->prevRot.y = CosineEaseInOut(arg0->prevRot.y, arg1->rot.y, arg8, arg9); + arg1->prevRot.z = CosineEaseInOut(arg0->prevRot.z, arg1->rot.z, arg8, arg9); + + arg1->prevZoom = CosineEaseInOut(arg0->prevZoom, arg1->zoom, arg8, arg9); +} + +void fn_1_4C54(MentDllUnkBss64Struct* arg0, MentDllUnkBss64Struct* arg1, f32 arg8, f32 arg9) { + arg1->prevCenter.x = CosineEaseInOut(arg0->prevCenter.x, arg1->center.x, arg8, arg9); + arg1->prevCenter.y = CosineEaseInOut(arg0->prevCenter.y, arg1->center.y, arg8, arg9); + arg1->prevCenter.z = CosineEaseInOut(arg0->prevCenter.z, arg1->center.z, arg8, arg9); + + arg1->prevRot.x = CosineEaseInOut(arg0->prevRot.x, arg1->rot.x, arg8, arg9); + arg1->prevRot.y = CosineEaseInOut(arg0->prevRot.y, arg1->rot.y, arg8, arg9); + arg1->prevRot.z = CosineEaseInOut(arg0->prevRot.z, arg1->rot.z, arg8, arg9); + + arg1->prevZoom = CosineEaseInOut(arg0->prevZoom, arg1->zoom, arg8, arg9); + + arg0->center.x = arg1->prevCenter.x; + arg0->center.y = arg1->prevCenter.y; + arg0->center.z = arg1->prevCenter.z; + + arg0->rot.x = arg1->prevRot.x; + arg0->rot.y = arg1->prevRot.y; + arg0->rot.z = arg1->prevRot.z; + + arg0->zoom = arg1->prevZoom; +} + +void fn_1_5150(MentDllUnkBss64Struct* arg0, MentDllUnkBss64Struct* arg1, f32 arg8, f32 arg9, f32 argA) { + arg1->prevCenter.x = CosineEaseInOut(arg0->prevCenter.x, arg1->center.x, arg8, arg9); + arg1->prevCenter.y = CosineEaseInOut(arg0->prevCenter.y, arg1->center.y, arg8, arg9); + arg1->prevCenter.z = CosineEaseInOut(arg0->prevCenter.z, arg1->center.z, arg8, arg9); + + arg1->prevRot.x = CosineEaseInOut(arg0->prevRot.x, arg1->rot.x, arg8, arg9); + arg1->prevRot.y = CosineEaseInOut(arg0->prevRot.y, arg1->rot.y, arg8, arg9); + arg1->prevRot.z = CosineEaseInOut(arg0->prevRot.z, arg1->rot.z, arg8, arg9); + + arg1->prevZoom = CosineEaseInOut(arg0->prevZoom, arg1->zoom, arg8, arg9); + + arg0->center.x = SmoothInterpolate(arg0->center.x, arg1->prevCenter.x, argA); + arg0->center.y = SmoothInterpolate(arg0->center.y, arg1->prevCenter.y, argA); + arg0->center.z = SmoothInterpolate(arg0->center.z, arg1->prevCenter.z, argA); + + arg0->rot.x = SmoothInterpolate(arg0->rot.x, arg1->prevRot.x, argA); + arg0->rot.y = SmoothInterpolate(arg0->rot.y, arg1->prevRot.y, argA); + arg0->rot.z = SmoothInterpolate(arg0->rot.z, arg1->prevRot.z, argA); + + arg0->zoom = SmoothInterpolate(arg0->zoom, arg1->prevZoom, argA); +} + +void fn_1_5818(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + switch (arg4) { + case 0: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0); + break; + case 1: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0x40000001); + break; + case 2: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0x40000002); + break; + } + arg0->work[0] = arg0->work[1] = arg0->work[2] = 0; +} + +void fn_1_59A0(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + if (arg0->work[3] != arg0->motion[arg2]) { + arg0->work[3] = arg0->motion[arg2]; + switch (arg4) { + case 0: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0); + break; + case 1: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0x40000001); + break; + case 2: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0x40000002); + break; + } + arg0->work[0] = arg0->work[1] = arg0->work[2] = 0; + } +} + +void fn_1_5B50(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3) { + (void)arg1; + Hu3DMotionShiftSet(arg0->model[1], arg0->motion[arg1], 0.0f, arg3, 0); + arg0->work[0] = arg0->work[1] = arg0->work[2] = 0; + arg0->work[0] = 1; + arg0->work[1] = arg2; + arg0->work[2] = arg3 + 1; +} + +void fn_1_5C08(omObjData* arg0) { + s32 temp; + + if (arg0->work[0] != 0) { + if (arg0->work[2] != 0) { + arg0->work[2] -= 1; + return; + } + if ((arg0->work[2] == 0) && (Hu3DMotionEndCheck(arg0->model[1]) != 0)) { + temp = arg0->work[1]; + Hu3DMotionShiftSet(arg0->model[1], arg0->motion[temp], 0.0f, 15.0f, 0x40000001); + arg0->work[0] = arg0->work[1] = arg0->work[2] = 0; + arg0->work[0] = arg0->work[1] = arg0->work[2] = 0; + } + } +} + +void fn_1_5CDC(omObjData* arg0, s32 arg1, s32 arg2) { + HuPrcSleep(arg2 + 1); + do { + HuPrcVSleep(); + } while (Hu3DMotionEndCheck(arg0->model[arg1]) == 0); } \ No newline at end of file diff --git a/src/REL/mentDll/main.c b/src/REL/mentDll/main.c index 81ee860b..b415f268 100644 --- a/src/REL/mentDll/main.c +++ b/src/REL/mentDll/main.c @@ -13,7 +13,6 @@ #include "game/sprite.h" #include "game/window.h" #include "game/wipe.h" - #include "REL/mentDll.h" typedef struct MentDllUnkBssE4Struct { @@ -156,23 +155,6 @@ void fn_1_C174(s32 arg0); void fn_1_E654(s32 arg0); void fn_1_E71C(s32 arg0); -s32 lbl_1_data_0[][4] = { - { 0x00000037, 0x00000038, 0x00000036, 0x00000039 }, - { 0x00000043, 0x00000045, 0x00000044, 0x00000043 }, - { 0x00000040, 0x00000042, 0x00000041, 0x00000040 }, - { 0x0000004B, 0x0000004D, 0x0000004C, 0x0000004B }, - { 0x00000046, 0x00000048, 0x00000047, 0x00000046 }, - { 0x0000003E, 0x0000003F, 0x0000003E, 0x0000003E }, - { 0x0000003A, 0x0000003B, 0x0000003C, 0xFFFFFFFF }, -}; - -s32 lbl_1_data_70 = -1; - -char lbl_1_data_74[] = ">>>>>>>>>> CAMERA DATA <<<<<<<<<<"; -char lbl_1_data_96[] = "CENTER : %.2f, %.2f, %.2f"; -char lbl_1_data_B0[] = "ROT : %.2f, %.2f, %.2f"; -char lbl_1_data_CA[] = "ZOOM : %.2f"; - Vec lbl_1_data_D8[6] = { { 0.0f, 0.0f, 460.0f }, { -240.0f, 0.0f, 460.0f }, @@ -315,7 +297,7 @@ void fn_1_6C4C(void) s32 var_r28 = 0; { GXColor sp10 = { 0x00, 0x00, 0x80, 0x80 }; - while (TRUE) { + while (1) { fn_1_4D8(); if (HuPadBtnDown[0] & PAD_TRIGGER_R) { var_r28++; @@ -452,7 +434,7 @@ void fn_1_7218(void) } lbl_1_bss_D8 = 1; HuPrcEnd(); - while (TRUE) { + while (1) { HuPrcVSleep(); } } @@ -520,7 +502,7 @@ void fn_1_7684(void) CharARAMOpen(GWPlayerCfg[2].character); CharARAMOpen(GWPlayerCfg[3].character); omOvlCallEx(spC[GWSystem.board], 1, 0, 0); - while (TRUE) { + while (1) { fn_1_4D8(); } } @@ -558,18 +540,18 @@ void fn_1_7858(void) void fn_1_7900(void) { - float sp8[18]; + MentDllUnkBss64Struct sp8; MentDllUnkBss64Struct *var_r31; var_r31 = &lbl_1_bss_64; - sp8[2] = lbl_1_bss_DC; - sp8[3] = 60.0f; - sp8[4] = 0.0f; - sp8[8] = 0.0f; - sp8[9] = 0.0f; - sp8[10] = 0.0f; - sp8[14] = 850.0f; - fn_1_4138(var_r31, sp8, var_r31->unk_40++, 10.0f, 5.0f); + sp8.center.x = lbl_1_bss_DC; + sp8.center.y = 60.0f; + sp8.center.z = 0.0f; + sp8.rot.x = 0.0f; + sp8.rot.y = 0.0f; + sp8.rot.z = 0.0f; + sp8.zoom = 850.0f; + fn_1_4138(var_r31, &sp8, var_r31->unk_40++, 10.0f, 5.0f); } s32 lbl_1_data_2F0 = -1; @@ -783,7 +765,7 @@ void fn_1_85C8(void) saveExecF = 0; if (GWGameStat.party_continue == 1) { var_r31 = fn_1_1434(0, 0, 0); - while (TRUE) { + while (1) { fn_1_4D8(); fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 4, 0xF, 1); fn_1_1968(var_r31, 0x1A0001, -1, 5); @@ -887,7 +869,7 @@ s32 fn_1_8B68(void) } var_r27 = fn_1_1434(0, 0, 0); HuAudFXPlay(lbl_1_data_0[var_r28][2]); - while (TRUE) { + while (1) { fn_1_4D8(); fn_1_4D8(); fn_1_5818(lbl_1_bss_33AC[var_r28].unk_00, 1, 4, 0xF, 1); @@ -898,7 +880,7 @@ s32 fn_1_8B68(void) lbl_1_bss_35BC[0].unk_04 = (MentDllUnkFunc)fn_1_1FF4C; var_r25 = 0x63; var_r23 = 0; - while (TRUE) { + while (1) { fn_1_4D8(); var_r30 = 0; for (var_r31 = 0; var_r31 < 4; var_r31++) { @@ -1021,7 +1003,7 @@ s32 fn_1_8FB8(void) lbl_1_bss_3114[var_r31].unk_04 = (MentDllUnkFunc)fn_1_15CB4; } } - while (TRUE) { + while (1) { fn_1_4D8(); for (var_r31 = 0; var_r31 < 4; var_r31++) { if ((lbl_1_bss_3114[var_r31].unk_60 == 0) && (HuPadBtnDown[lbl_1_bss_3114[var_r31].unk_6C] & PAD_BUTTON_A)) { @@ -1813,7 +1795,7 @@ void fn_1_B654(omObjData *arg0, MentDllUnkBss35BCStruct *arg1) case 0: var_r30 = 1; fn_1_14CE0(); - while (TRUE) { + while (1) { fn_1_4D8(); switch (var_r29) { case 1: @@ -1974,7 +1956,7 @@ void fn_1_C174(s32 arg0) omOvlCallEx(spC[GWSystem.board], 1, 0, 0); break; } - while (TRUE) { + while (1) { fn_1_4D8(); } } @@ -2027,7 +2009,7 @@ void fn_1_C4B8(void) return; } var_r31 = fn_1_1434(0, 0, 0); - while (TRUE) { + while (1) { fn_1_4D8(); fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 4, 0xF, 1); fn_1_1968(var_r31, 0x1E0001, -1, 5); @@ -2108,7 +2090,7 @@ void fn_1_C4B8(void) } } } - while (TRUE) { + while (1) { fn_1_4D8(); } } @@ -2176,14 +2158,14 @@ s32 fn_1_CD8C(void) sp8 = 0; fn_1_1CF68(); var_r31 = fn_1_1434(0, 0, 0); - while (TRUE) { + while (1) { fn_1_4D8(); fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 4, 0xF, 1); fn_1_1968(var_r31, 0x1E005E, -1, -1); fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 1, 0xF, 1); fn_1_2154(0x1A0020); lbl_1_bss_3114->unk_04 = (MentDllUnkFunc)fn_1_1E404; - while (TRUE) { + while (1) { if (lbl_1_bss_3114->unk_70[0] == 1) { var_r30 = 1; break; @@ -2230,7 +2212,7 @@ s32 fn_1_CF8C(void) var_r28 = -1; var_r27 = -1; var_r31 = fn_1_1434(0, 0, 0); - while (TRUE) { + while (1) { fn_1_4D8(); fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 4, 0xF, 1); fn_1_1968(var_r31, 0x1E0009, -1, -1); @@ -2239,7 +2221,7 @@ s32 fn_1_CF8C(void) lbl_1_bss_35BC[1].unk_08[1] = 0; fn_1_1DED8(); lbl_1_bss_35BC[0].unk_04 = (MentDllUnkFunc)fn_1_1E8A4; - while (TRUE) { + while (1) { fn_1_4D8(); if ((var_r28 != lbl_1_bss_35BC[0].unk_08[0]) || (var_r27 != lbl_1_bss_35BC[0].unk_1C[lbl_1_bss_35BC[0].unk_08[0] - 1])) { var_r28 = lbl_1_bss_35BC[0].unk_08[0]; @@ -2679,7 +2661,7 @@ void fn_1_E71C(s32 arg0) HuAudSeqAllFadeOut(0x3E8); HuAudSStreamAllFadeOut(0x3E8); omOvlCallEx(spC[GWSystem.board], 1, 0, 0); - while (TRUE) { + while (1) { fn_1_4D8(); } } @@ -2855,7 +2837,7 @@ void fn_1_1053C(void) HuAudFXAllStop(); HuAudSStreamAllStop(); omOvlGotoEx(OVL_OPTION, 1, 0, 0); - while (TRUE) { + while (1) { fn_1_4D8(); } } @@ -2913,7 +2895,7 @@ void fn_1_10C5C(void) HuAudFXAllStop(); HuAudSStreamAllStop(); omOvlGotoEx(OVL_PRESENT, 1, 0, 0); - while (TRUE) { + while (1) { fn_1_4D8(); } } @@ -2988,7 +2970,7 @@ void fn_1_114A0(void) MGSeqKillAll(); HuAudFadeOut(1); omOvlReturnEx(1, 1); - while (TRUE) { + while (1) { fn_1_4D8(); } } @@ -3033,7 +3015,7 @@ void fn_1_116F4(void) lbl_1_bss_366C.unk_04 = (MentDllUnkFunc)fn_1_FEAC; break; } - while (TRUE) { + while (1) { fn_1_4D8(); if (lbl_1_bss_366C.unk_04 == NULL) { continue; @@ -3208,7 +3190,7 @@ void fn_1_121D8(void) fn_1_18788(lbl_1_bss_35BC, 0, 0, 0); } } - while (TRUE) { + while (1) { fn_1_4D8(); if (lbl_1_bss_35BC[var_r30].unk_04 == NULL) { continue; @@ -3343,7 +3325,7 @@ void fn_1_12E40(void) lbl_1_bss_33AC[var_r30].unk_04 = NULL; lbl_1_bss_33AC[var_r30].unk_30 = var_r30; fn_1_12A0C(var_r31, var_r30); - while (TRUE) { + while (1) { fn_1_4D8(); if (lbl_1_bss_33AC[var_r30].unk_04 != NULL) { lbl_1_bss_33AC[var_r30].unk_04(var_r31, &lbl_1_bss_33AC[var_r30]); @@ -3376,7 +3358,7 @@ void fn_1_134A8(void) lbl_1_bss_3354.unk_00 = var_r31; lbl_1_bss_3354.unk_04 = NULL; fn_1_13348(var_r31); - while (TRUE) { + while (1) { fn_1_4D8(); if (lbl_1_bss_3354.unk_04 != NULL) { lbl_1_bss_3354.unk_04(var_r31, &lbl_1_bss_3354); @@ -3461,7 +3443,7 @@ void fn_1_13970(void) else { fn_1_1368C(var_r27, var_r26); } - while (TRUE) { + while (1) { fn_1_4D8(); if (lbl_1_bss_3114[var_r26].unk_04 == NULL) { continue; @@ -3475,29 +3457,29 @@ void fn_1_13D60(void) MentDllUnkBss64Struct *var_r31; var_r31 = &lbl_1_bss_64; - var_r31->unk_08 = 0.0f; - var_r31->unk_0C = 0.0f; - var_r31->unk_10 = 0.0f; - var_r31->unk_20 = -10.0f; - var_r31->unk_24 = 0.0f; - var_r31->unk_28 = 0.0f; - var_r31->unk_38 = 2900.0f; + var_r31->center.x = 0.0f; + var_r31->center.y = 0.0f; + var_r31->center.z = 0.0f; + var_r31->rot.x = -10.0f; + var_r31->rot.y = 0.0f; + var_r31->rot.z = 0.0f; + var_r31->zoom = 2900.0f; } void fn_1_13DEC(void) { - float sp8[18]; + MentDllUnkBss64Struct sp8; MentDllUnkBss64Struct *var_r31; var_r31 = &lbl_1_bss_64; - sp8[2] = 0.0f; - sp8[3] = 0.0f; - sp8[4] = 0.0f; - sp8[8] = -10.0f; - sp8[9] = 0.0f; - sp8[10] = 0.0f; - sp8[14] = 1150.0f; - fn_1_4138(var_r31, sp8, var_r31->unk_40++, 180.0f, 15.0f); + sp8.center.x = 0.0f; + sp8.center.y = 0.0f; + sp8.center.z = 0.0f; + sp8.rot.x = -10.0f; + sp8.rot.y = 0.0f; + sp8.rot.z = 0.0f; + sp8.zoom = 1150.0f; + fn_1_4138(var_r31, &sp8, var_r31->unk_40++, 180.0f, 15.0f); } void fn_1_13EDC(void) @@ -3505,98 +3487,98 @@ void fn_1_13EDC(void) MentDllUnkBss64Struct *var_r31; var_r31 = &lbl_1_bss_64; - var_r31->unk_08 = 0.0f; - var_r31->unk_0C = 215.0f; - var_r31->unk_10 = 0.0f; - var_r31->unk_20 = 0.0f; - var_r31->unk_24 = 0.0f; - var_r31->unk_28 = 0.0f; - var_r31->unk_38 = 1600.0f; + var_r31->center.x = 0.0f; + var_r31->center.y = 215.0f; + var_r31->center.z = 0.0f; + var_r31->rot.x = 0.0f; + var_r31->rot.y = 0.0f; + var_r31->rot.z = 0.0f; + var_r31->zoom = 1600.0f; } void fn_1_13F68(void) { - float sp8[18]; + MentDllUnkBss64Struct sp8; MentDllUnkBss64Struct *var_r31; var_r31 = &lbl_1_bss_64; - sp8[2] = 0.0f; - sp8[3] = 215.0f; - sp8[4] = 0.0f; - sp8[8] = 0.0f; - sp8[9] = 0.0f; - sp8[10] = 0.0f; - sp8[14] = 1600.0f; - fn_1_4138(var_r31, sp8, var_r31->unk_40++, 60.0f, 10.0f); + sp8.center.x = 0.0f; + sp8.center.y = 215.0f; + sp8.center.z = 0.0f; + sp8.rot.x = 0.0f; + sp8.rot.y = 0.0f; + sp8.rot.z = 0.0f; + sp8.zoom = 1600.0f; + fn_1_4138(var_r31, &sp8, var_r31->unk_40++, 60.0f, 10.0f); } void fn_1_14058(void) { - float sp8[18]; + MentDllUnkBss64Struct sp8; MentDllUnkBss64Struct *var_r31; var_r31 = &lbl_1_bss_64; - sp8[2] = 0.0f; - sp8[3] = 215.0f; - sp8[4] = 0.0f; - sp8[8] = 0.0f; - sp8[9] = 0.0f; - sp8[10] = 0.0f; - sp8[14] = 1600.0f; - fn_1_4138(var_r31, sp8, var_r31->unk_40++, 10.0f, 5.0f); + sp8.center.x = 0.0f; + sp8.center.y = 215.0f; + sp8.center.z = 0.0f; + sp8.rot.x = 0.0f; + sp8.rot.y = 0.0f; + sp8.rot.z = 0.0f; + sp8.zoom = 1600.0f; + fn_1_4138(var_r31, &sp8, var_r31->unk_40++, 10.0f, 5.0f); } void fn_1_14148(void) { - float sp8[18]; + MentDllUnkBss64Struct sp8; MentDllUnkBss64Struct *var_r31; var_r31 = &lbl_1_bss_64; - sp8[2] = 1200.0f; - sp8[3] = 215.0f; - sp8[4] = 0.0f; - sp8[8] = 0.0f; - sp8[9] = 0.0f; - sp8[10] = 0.0f; - sp8[14] = 1600.0f; - fn_1_4138(var_r31, sp8, var_r31->unk_40++, 10.0f, 5.0f); + sp8.center.x = 1200.0f; + sp8.center.y = 215.0f; + sp8.center.z = 0.0f; + sp8.rot.x = 0.0f; + sp8.rot.y = 0.0f; + sp8.rot.z = 0.0f; + sp8.zoom = 1600.0f; + fn_1_4138(var_r31, &sp8, var_r31->unk_40++, 10.0f, 5.0f); } void fn_1_14238(void) { - float sp8[18]; + MentDllUnkBss64Struct sp8; MentDllUnkBss64Struct *var_r31; var_r31 = &lbl_1_bss_64; - sp8[2] = 0.0f; - sp8[3] = 125.0f; - sp8[4] = 0.0f; - sp8[8] = -5.0f; - sp8[9] = 0.0f; - sp8[10] = 0.0f; - sp8[14] = 1750.0f; - fn_1_4138(var_r31, sp8, var_r31->unk_40++, 30.0f, 10.0f); + sp8.center.x = 0.0f; + sp8.center.y = 125.0f; + sp8.center.z = 0.0f; + sp8.rot.x = -5.0f; + sp8.rot.y = 0.0f; + sp8.rot.z = 0.0f; + sp8.zoom = 1750.0f; + fn_1_4138(var_r31, &sp8, var_r31->unk_40++, 30.0f, 10.0f); } void fn_1_14328(void) { - float sp8[18]; + MentDllUnkBss64Struct sp8; MentDllUnkBss64Struct *var_r31; var_r31 = &lbl_1_bss_64; - sp8[2] = 1200.0f; - sp8[3] = 125.0f; - sp8[4] = 0.0f; - sp8[8] = -5.0f; - sp8[9] = 0.0f; - sp8[10] = 0.0f; - sp8[14] = 1750.0f; - fn_1_4138(var_r31, sp8, var_r31->unk_40++, 30.0f, 10.0f); + sp8.center.x = 1200.0f; + sp8.center.y = 125.0f; + sp8.center.z = 0.0f; + sp8.rot.x = -5.0f; + sp8.rot.y = 0.0f; + sp8.rot.z = 0.0f; + sp8.zoom = 1750.0f; + fn_1_4138(var_r31, &sp8, var_r31->unk_40++, 30.0f, 10.0f); } void fn_1_14418(void) { - float sp8[18]; + MentDllUnkBss64Struct sp8; MentDllUnkBss64Struct *var_r31; s32 var_r30; @@ -3607,19 +3589,19 @@ void fn_1_14418(void) fn_1_5818(lbl_1_bss_35BC[var_r30].unk_00, 5, 5, 0, 0); HuAudFXPlay(0x7D); } - sp8[2] = 0.0f; + sp8.center.x = 0.0f; if (var_r30 == 1) { - sp8[2] = 1200.0f; + sp8.center.x = 1200.0f; } - sp8[3] = 100.0f; - sp8[4] = 460.0f; - sp8[8] = 0.0f; - sp8[9] = 0.0f; - sp8[10] = 0.0f; - sp8[14] = 125.0f; - fn_1_4138(var_r31, sp8, var_r31->unk_40, 180.0f, 10.0f); - if (var_r31->unk_40++ >= 0x5A) { - if (var_r31->unk_40 == 0x5B) { + sp8.center.y = 100.0f; + sp8.center.z = 460.0f; + sp8.rot.x = 0.0f; + sp8.rot.y = 0.0f; + sp8.rot.z = 0.0f; + sp8.zoom = 125.0f; + fn_1_4138(var_r31, &sp8, var_r31->unk_40, 180.0f, 10.0f); + if (var_r31->unk_40++ >= 90) { + if (var_r31->unk_40 == 91) { if (var_r30 == 0) { lbl_1_bss_24[10] = HuAudFXPlay(0x22); } @@ -3627,57 +3609,57 @@ void fn_1_14418(void) lbl_1_bss_24[10] = HuAudFXPlay(0x23); } } - var_r31->unk_20 = fn_1_20C(var_r31->unk_20, -45.0f, var_r31->unk_40 - 0x5A, 90.0f); + var_r31->rot.x = fn_1_20C(var_r31->rot.x, -45.0f, var_r31->unk_40 - 0x5A, 90.0f); Hu3DData[lbl_1_bss_35BC[var_r30].unk_00->model[4]].rot.x = fn_1_20C(0.0f, 45.0f, var_r31->unk_40 - 0x5A, 90.0f); } } void fn_1_146D0(void) { - float sp8[18]; + MentDllUnkBss64Struct sp8; MentDllUnkBss64Struct *var_r31; var_r31 = &lbl_1_bss_64; - sp8[2] = 0.0f; - sp8[3] = 215.0f; - sp8[4] = 0.0f; - sp8[8] = 0.0f; - sp8[9] = 0.0f; - sp8[10] = 0.0f; - sp8[14] = 1600.0f; - fn_1_5150(var_r31, sp8, var_r31->unk_40++, 30.0f, 10.0f); + sp8.center.x = 0.0f; + sp8.center.y = 215.0f; + sp8.center.z = 0.0f; + sp8.rot.x = 0.0f; + sp8.rot.y = 0.0f; + sp8.rot.z = 0.0f; + sp8.zoom = 1600.0f; + fn_1_5150(var_r31, &sp8, var_r31->unk_40++, 30.0f, 10.0f); } void fn_1_147C0(void) { - float sp8[18]; + MentDllUnkBss64Struct sp8; MentDllUnkBss64Struct *var_r31; var_r31 = &lbl_1_bss_64; - sp8[2] = 1200.0f; - sp8[3] = 215.0f; - sp8[4] = 0.0f; - sp8[8] = 0.0f; - sp8[9] = 0.0f; - sp8[10] = 0.0f; - sp8[14] = 1600.0f; - fn_1_5150(var_r31, sp8, var_r31->unk_40++, 30.0f, 10.0f); + sp8.center.x = 1200.0f; + sp8.center.y = 215.0f; + sp8.center.z = 0.0f; + sp8.rot.x = 0.0f; + sp8.rot.y = 0.0f; + sp8.rot.z = 0.0f; + sp8.zoom = 1600.0f; + fn_1_5150(var_r31, &sp8, var_r31->unk_40++, 30.0f, 10.0f); } void fn_1_148B0(void) { - float sp8[18]; + MentDllUnkBss64Struct sp8; MentDllUnkBss64Struct *var_r31; var_r31 = &lbl_1_bss_64; - sp8[2] = 0.0f; - sp8[3] = 30.0f; - sp8[4] = 0.0f; - sp8[8] = -5.0f; - sp8[9] = 0.0f; - sp8[10] = 0.0f; - sp8[14] = 1100.0f; - fn_1_4138(var_r31, sp8, var_r31->unk_40++, 10.0f, 5.0f); + sp8.center.x = 0.0f; + sp8.center.y = 30.0f; + sp8.center.z = 0.0f; + sp8.rot.x = -5.0f; + sp8.rot.y = 0.0f; + sp8.rot.z = 0.0f; + sp8.zoom = 1100.0f; + fn_1_4138(var_r31, &sp8, var_r31->unk_40++, 10.0f, 5.0f); } void fn_1_149A0(void) @@ -3685,13 +3667,13 @@ void fn_1_149A0(void) MentDllUnkBss64Struct *var_r31; var_r31 = &lbl_1_bss_64; - var_r31->unk_08 = 0.0f; - var_r31->unk_0C = 125.0f; - var_r31->unk_10 = 0.0f; - var_r31->unk_20 = -5.0f; - var_r31->unk_24 = 0.0f; - var_r31->unk_28 = 0.0f; - var_r31->unk_38 = 1750.0f; + var_r31->center.x = 0.0f; + var_r31->center.y = 125.0f; + var_r31->center.z = 0.0f; + var_r31->rot.x = -5.0f; + var_r31->rot.y = 0.0f; + var_r31->rot.z = 0.0f; + var_r31->zoom = 1750.0f; } void fn_1_14A2C(void) @@ -3699,29 +3681,29 @@ void fn_1_14A2C(void) MentDllUnkBss64Struct *var_r31; var_r31 = &lbl_1_bss_64; - var_r31->unk_08 = 1200.0f; - var_r31->unk_0C = 125.0f; - var_r31->unk_10 = 0.0f; - var_r31->unk_20 = -5.0f; - var_r31->unk_24 = 0.0f; - var_r31->unk_28 = 0.0f; - var_r31->unk_38 = 1750.0f; + var_r31->center.x = 1200.0f; + var_r31->center.y = 125.0f; + var_r31->center.z = 0.0f; + var_r31->rot.x = -5.0f; + var_r31->rot.y = 0.0f; + var_r31->rot.z = 0.0f; + var_r31->zoom = 1750.0f; } void fn_1_14AB8(void) { - float sp8[18]; + MentDllUnkBss64Struct sp8; MentDllUnkBss64Struct *var_r31; var_r31 = &lbl_1_bss_64; - sp8[2] = 0.0f; - sp8[3] = 125.0f; - sp8[4] = 460.0f; - sp8[8] = 0.0f; - sp8[9] = 0.0f; - sp8[10] = 0.0f; - sp8[14] = 125.0f; - fn_1_5150(var_r31, sp8, var_r31->unk_40++, 120.0f, 10.0f); + sp8.center.x = 0.0f; + sp8.center.y = 125.0f; + sp8.center.z = 460.0f; + sp8.rot.x = 0.0f; + sp8.rot.y = 0.0f; + sp8.rot.z = 0.0f; + sp8.zoom = 125.0f; + fn_1_5150(var_r31, &sp8, var_r31->unk_40++, 120.0f, 10.0f); } void fn_1_14BA8(void) @@ -6249,7 +6231,7 @@ void fn_1_21134(omObjData *object) var_r29 = &lbl_1_bss_64; for (var_r31 = 1; var_r31 < 0xA; var_r31++) { - if ((var_r29->unk_38 <= 1200.0f) || (lbl_1_bss_16C4[var_r31].unk_1C == -200.0f)) { + if ((var_r29->zoom <= 1200.0f) || (lbl_1_bss_16C4[var_r31].unk_1C == -200.0f)) { if (lbl_1_bss_16C4[var_r31].unk_1C >= -100.0f) { lbl_1_bss_16C4[var_r31].unk_00 = 0; lbl_1_bss_16C4[var_r31].unk_1C = -200.0f; @@ -6270,9 +6252,9 @@ void fn_1_21134(omObjData *object) } } for (var_r31 = 0xA; var_r31 < 0x8C; var_r31++) { - if ((lbl_1_bss_16C4[var_r31].unk_24 == 0.0f) && (lbl_1_bss_16C4[var_r31].unk_14 > (var_r29->unk_38 - 400.0f)) - && (lbl_1_bss_16C4[var_r31].unk_0C < (200.0f + var_r29->unk_08)) && (lbl_1_bss_16C4[var_r31].unk_0C > (var_r29->unk_08 - 200.0f))) { - if (var_r29->unk_08 >= lbl_1_bss_16C4[var_r31].unk_0C) { + if ((lbl_1_bss_16C4[var_r31].unk_24 == 0.0f) && (lbl_1_bss_16C4[var_r31].unk_14 > (var_r29->zoom - 400.0f)) + && (lbl_1_bss_16C4[var_r31].unk_0C < (200.0f + var_r29->center.x)) && (lbl_1_bss_16C4[var_r31].unk_0C > (var_r29->center.x - 200.0f))) { + if (var_r29->center.x >= lbl_1_bss_16C4[var_r31].unk_0C) { lbl_1_bss_16C4[var_r31].unk_24 = -300.0f; } else {