Skip to content

Commit

Permalink
Fix optionDll inconsistencies
Browse files Browse the repository at this point in the history
  • Loading branch information
dbalatoni13 committed Aug 4, 2024
1 parent 29489b4 commit 0ce545e
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 43 deletions.
2 changes: 1 addition & 1 deletion include/REL/option.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
37 changes: 11 additions & 26 deletions src/REL/option/camera.c
Original file line number Diff line number Diff line change
Expand Up @@ -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];
Expand All @@ -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;

Expand All @@ -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;
Expand Down Expand Up @@ -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;
Expand All @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -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;
Expand All @@ -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)
Expand Down
17 changes: 7 additions & 10 deletions src/REL/option/guide.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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) {
Expand Down Expand Up @@ -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;
}
Expand Down
16 changes: 10 additions & 6 deletions src/REL/option/state.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -28,20 +34,18 @@ 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 },
};

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();
Expand All @@ -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;
}

Expand Down

0 comments on commit 0ce545e

Please sign in to comment.