From f2de6f74661ac6ccd0e83733f94e332e0bc2d1e7 Mon Sep 17 00:00:00 2001 From: kabiskac Date: Sun, 4 Aug 2024 18:41:54 +0200 Subject: [PATCH] Fix optionDll inconsistencies --- include/REL/option.h | 2 +- src/REL/option/camera.c | 37 +++++++++++-------------------------- src/REL/option/guide.c | 17 +++++++---------- src/REL/option/state.c | 16 ++++++++++------ 4 files changed, 29 insertions(+), 43 deletions(-) diff --git a/include/REL/option.h b/include/REL/option.h index 3052b323..a4004a17 100755 --- a/include/REL/option.h +++ b/include/REL/option.h @@ -9,7 +9,7 @@ typedef struct { /* 0x00 */ Process *process; /* 0x04 */ s16 window; /* 0x08 */ s32 id; - /* 0x0C */ s32 visible; + /* 0x0C */ BOOL visible; /* 0x10 */ BOOL messWaitSignal; /* 0x14 */ BOOL choiceSignal; /* 0x18 */ u32 messToBeSet; diff --git a/src/REL/option/camera.c b/src/REL/option/camera.c index 99e2aa68..bd93317b 100755 --- a/src/REL/option/camera.c +++ b/src/REL/option/camera.c @@ -17,8 +17,8 @@ typedef struct { /* 0x2C */ Vec posPrev; /* 0x38 */ Vec targetPrev; /* 0x44 */ char unk44[0xC]; - /* 0x50 */ float prevZoom; - /* 0x54 */ float prevRot; + /* 0x50 */ float zoomPrev; + /* 0x54 */ float rotPrev; /* 0x58 */ Vec posTarget; /* 0x64 */ Vec posFocus; /* 0x70 */ char unk70[0xC]; @@ -34,8 +34,6 @@ typedef struct { static void ExecCameraObj(omObjData *object); static void ExecCamera(omObjData *object); -static void fn_1_12E4(omObjData *object); -static void PrintDebugInfo(omObjData *object); omObjData *optionCamera; @@ -45,11 +43,8 @@ static s32 pad_04_00000018_data = -1; omObjData *OptionCameraCreate(void) { - omObjData *object; - CameraWork *work; - - object = omAddObjEx(optionObjMan, 1001, 0, 0, 3, ExecCameraObj); - work = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(CameraWork), MEMORY_DEFAULT_NUM); + omObjData *object = omAddObjEx(optionObjMan, 1001, 0, 0, 3, ExecCameraObj); + CameraWork *work = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(CameraWork), MEMORY_DEFAULT_NUM); object->data = work; work->pos.x = 0.0f; work->pos.y = 0.0f; @@ -110,33 +105,26 @@ void OptionCameraViewSet(omObjData *object, float zoom, float rot, float y, s32 work->zoomTarget = zoom; work->rotTarget = rot; work->targetPrev.y = work->target.y; - work->prevZoom = work->zoom; - work->prevRot = work->rot; + work->zoomPrev = work->zoom; + work->rotPrev = work->rot; work->timeRot = 0.0f; work->rotSpeed = 1.0f / duration; } -// GetZoom float OptionCameraZoomGet(omObjData *object) { CameraWork *work = object->data; - float zoom; - - zoom = work->zoom; + float zoom = work->zoom; return zoom; } -// GetRot float OptionCameraRotGet(omObjData *object) { CameraWork *work = object->data; - float rot; - - rot = work->rot; + float rot = work->rot; return rot; } -// Getpos void OptionCameraPosGet(omObjData *object, float *x, float *y, float *z) { CameraWork *temp_r31 = object->data; @@ -146,7 +134,6 @@ void OptionCameraPosGet(omObjData *object, float *x, float *y, float *z) *z = temp_r31->pos.z; } -// Gettarget void OptionCameraTargetGet(omObjData *object, float *x, float *y, float *z) { CameraWork *work = object->data; @@ -156,7 +143,6 @@ void OptionCameraTargetGet(omObjData *object, float *x, float *y, float *z) *z = work->target.z; } -// CameraDone s32 OptionCameraDoneCheck(omObjData *object) { CameraWork *work = object->data; @@ -205,8 +191,8 @@ static void ExecCamera(omObjData *object) if (work->timeRot < 1.0f) { weight = sind(90.0f * work->timeRot); work->target.y = work->targetPrev.y + weight * (work->posFocus.y - work->targetPrev.y); - work->zoom = work->prevZoom + weight * (work->zoomTarget - work->prevZoom); - work->rot = work->prevRot + weight * (work->rotTarget - work->prevRot); + work->zoom = work->zoomPrev + weight * (work->zoomTarget - work->zoomPrev); + work->rot = work->rotPrev + weight * (work->rotTarget - work->rotPrev); if ((work->timeRot += work->rotSpeed) >= 1.0f) { work->target.y = work->posFocus.y; work->zoom = work->zoomTarget; @@ -223,8 +209,7 @@ static void ExecCamera(omObjData *object) work->rot += 360.0f; } - Hu3DCameraPosSet(1, work->pos.x, work->pos.y, work->pos.z, work->up.x, work->up.y, work->up.z, work->target.x, - work->target.y, work->target.z); + Hu3DCameraPosSet(1, work->pos.x, work->pos.y, work->pos.z, work->up.x, work->up.y, work->up.z, work->target.x, work->target.y, work->target.z); } static void CameraExecDebug(omObjData *object) diff --git a/src/REL/option/guide.c b/src/REL/option/guide.c index 2487f72c..89865969 100755 --- a/src/REL/option/guide.c +++ b/src/REL/option/guide.c @@ -22,8 +22,8 @@ typedef struct { /* 0x48 */ char unk48[0xC]; /* 0x54 */ float time; /* 0x58 */ float speed; - /* 0x5C */ s32 unk5C; - /* 0x60 */ s32 unk60; + /* 0x5C */ s32 unk_5C; + /* 0x60 */ s32 unk_60; } GuideWork; // Size 0x64 #define MODE_DISABLED 0 @@ -70,8 +70,8 @@ omObjData *OptionGuideCreate(void) for (i = 0; i < 3; i++) { object->motion[i] = Hu3DJointMotion(object->model[0], HuDataSelHeapReadNum(guideMotTbl[i], MEMORY_DEFAULT_NUM, HEAP_DATA)); } - work->unk5C = CharModelEffectNpcInit(object->model[0], object->motion[2], 1, 0xC); - work->unk60 = CharModelEffectNpcInit(object->model[0], object->motion[1], 0, 0xC); + work->unk_5C = CharModelEffectNpcInit(object->model[0], object->motion[2], 1, 0xC); + work->unk_60 = CharModelEffectNpcInit(object->model[0], object->motion[1], 0, 0xC); CharModelLayerSetAll(1); Hu3DModelShadowSet(object->model[0]); Hu3DMotionShiftSet(object->model[0], object->motion[0], 0.0f, 8.0f, 0x40000001); @@ -186,9 +186,7 @@ static void ExecGuide(omObjData *object) static void UpdateGuide(omObjData *object) { GuideWork *work = object->data; - s16 motion; - - motion = 0; + s16 motion = 0; work->distRemain = sqrtf(work->posDelta.x * work->posDelta.x + work->posDelta.z * work->posDelta.z); if (0.001f <= work->distRemain) { if (14.0f <= work->distRemain) { @@ -219,9 +217,8 @@ static void UpdateGuide(omObjData *object) static float LerpAngle(float start, float end, float time) { float angle; - float delta; - - delta = fmod(end - start, 360.0); + + float delta = fmod(end - start, 360.0); if (0.0f > delta) { delta += 360.0f; } diff --git a/src/REL/option/state.c b/src/REL/option/state.c index 1ed1cb12..294e9c35 100755 --- a/src/REL/option/state.c +++ b/src/REL/option/state.c @@ -18,6 +18,12 @@ typedef struct { /* 0x18 */ GXColor color; } UnkLightDataStruct; /* size = 0x1C */ // TODO same as m446Dll::unkStruct10 and present::UnkPresentStruct3 +typedef struct UnkShadowDataStruct { + /* 0x00 */ Vec pos; + /* 0x0C */ Vec up; + /* 0x18 */ Vec target; +} UnkShadowDataStruct; /* size = 0x24 */ + static void ExecState(omObjData *object); omObjData *optionState; @@ -28,7 +34,7 @@ static UnkLightDataStruct lightTbl = { { 0xFF, 0xFF, 0xFF, 0xFF }, }; -static Vec shadowPosTbl[3] = { +static UnkShadowDataStruct shadowPosTbl = { { 0.0f, 3000.0f, 1.0f }, { 0.0f, 1.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, @@ -36,12 +42,10 @@ static Vec shadowPosTbl[3] = { omObjData *OptionStateCreate(void) { - omObjData *object; - StateWork *work; LightData *lightData; - object = omAddObjEx(optionObjMan, 1000, 0, 0, 4, ExecState); - work = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(StateWork), MEMORY_DEFAULT_NUM); + omObjData *object = omAddObjEx(optionObjMan, 1000, 0, 0, 4, ExecState); + StateWork *work = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(StateWork), MEMORY_DEFAULT_NUM); object->data = work; optionCamera = OptionCameraCreate(); optionRoom = OptionRoomCreate(); @@ -52,7 +56,7 @@ omObjData *OptionStateCreate(void) lightData = &Hu3DGlobalLight[work->light]; Hu3DShadowCreate(30.0f, 20.0f, 5000.0f); Hu3DShadowTPLvlSet(0.45f); - Hu3DShadowPosSet(&shadowPosTbl[0], &shadowPosTbl[1], &shadowPosTbl[2]); + Hu3DShadowPosSet(&shadowPosTbl.pos, &shadowPosTbl.up, &shadowPosTbl.target); return object; }