Named most things in REL/option

This commit is contained in:
kabiskac 2024-06-18 05:17:54 +02:00
parent 8b0059eb77
commit dba3534504
11 changed files with 2725 additions and 2511 deletions

View file

@ -6,232 +6,248 @@
#include "game/process.h"
#include "dolphin.h"
#include "math.h"
#include "ext_math.h"
typedef struct {
/* 0x00 */ Vec unk00;
/* 0x0C */ Vec unk0C;
/* 0x18 */ float unk18;
/* 0x1C */ float unk1C;
/* 0x20 */ float unk20;
/* 0x24 */ float unk24;
/* 0x28 */ float unk28;
/* 0x2C */ Vec unk2C;
/* 0x38 */ Vec unk38;
/* 0x00 */ Vec eyePos;
/* 0x0C */ Vec lookingAt;
/* 0x18 */ Vec tilt;
/* 0x24 */ float zoom;
/* 0x28 */ float rot;
/* 0x2C */ Vec prevEyePos;
/* 0x38 */ Vec prevLookingAt;
/* 0x44 */ char unk44[0xC];
/* 0x50 */ float unk50;
/* 0x54 */ float unk54;
/* 0x58 */ Vec unk58;
/* 0x64 */ Vec unk64;
/* 0x50 */ float prevZoom;
/* 0x54 */ float prevRot;
/* 0x58 */ Vec eyePosTarget;
/* 0x64 */ Vec lookingAtTarget;
/* 0x70 */ char unk70[0xC];
/* 0x7C */ float unk7C;
/* 0x80 */ float unk80;
/* 0x84 */ float unk84;
/* 0x88 */ float unk88;
/* 0x8C */ float unk8C;
/* 0x90 */ float unk90;
/* 0x94 */ float unk94;
/* 0x98 */ float unk98;
} UnkCameraDataStruct; // Size 0x9C
/* 0x7C */ float zoomTarget;
/* 0x80 */ float rotTarget;
/* 0x84 */ float eyeVelocity;
/* 0x88 */ float eyeSpeed;
/* 0x8C */ float lookingAtVelocity;
/* 0x90 */ float lookingAtSpeed;
/* 0x94 */ float rotVelocity;
/* 0x98 */ float rotSpeed;
} CameraWork; // Size 0x9C
static void fn_1_C58(omObjData *arg0, float *arg1, float *arg2, float *arg3);
static void fn_1_D44(omObjData *arg0);
static void fn_1_D6C(omObjData *arg0);
static void fn_1_12E4(omObjData *arg0);
static void fn_1_14E4(omObjData *arg0);
static void fn_1_C58(omObjData *object, float *arg1, float *arg2, float *arg3);
static void HandlerWrapper(omObjData *object);
static void HandleCamera(omObjData *object);
static void fn_1_12E4(omObjData *object);
static void PrintDebugInfo(omObjData *object);
omObjData *lbl_1_bss_10;
static float pad_04_00000000_data[] = {
0.0f, 500.0f, 0.0f,
0.0f, -1.0f, 0.0f
};
static float pad_04_00000000_data[] = { 0.0f, 500.0f, 0.0f, 0.0f, -1.0f, 0.0f };
static s32 pad_04_00000018_data = -1;
omObjData *fn_1_7F8(void) {
omObjData *var_r30;
UnkCameraDataStruct *temp_r31;
omObjData *fn_1_7F8(void)
{
omObjData *object;
CameraWork *work;
var_r30 = omAddObjEx(lbl_1_bss_8, 1001, 0, 0, 3, fn_1_D44);
temp_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkCameraDataStruct), MEMORY_DEFAULT_NUM);
var_r30->data = temp_r31;
temp_r31->unk00.x = 0.0f;
temp_r31->unk00.y = 0.0f;
temp_r31->unk00.z = 0.0f;
temp_r31->unk0C.x = 0.0f;
temp_r31->unk0C.y = 0.0f;
temp_r31->unk0C.z = 0.0f;
temp_r31->unk18 = 0.0f;
temp_r31->unk1C = 1.0f;
temp_r31->unk20 = 0.0f;
temp_r31->unk24 = 0.0f;
temp_r31->unk28 = 0.0f;
temp_r31->unk8C = 1.0f;
temp_r31->unk84 = 1.0f;
temp_r31->unk94 = 1.0f;
object = omAddObjEx(lbl_1_bss_8, 1001, 0, 0, 3, HandlerWrapper);
work = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(CameraWork), MEMORY_DEFAULT_NUM);
object->data = work;
work->eyePos.x = 0.0f;
work->eyePos.y = 0.0f;
work->eyePos.z = 0.0f;
work->lookingAt.x = 0.0f;
work->lookingAt.y = 0.0f;
work->lookingAt.z = 0.0f;
work->tilt.x = 0.0f;
work->tilt.y = 1.0f;
work->tilt.z = 0.0f;
work->zoom = 0.0f;
work->rot = 0.0f;
work->lookingAtVelocity = 1.0f;
work->eyeVelocity = 1.0f;
work->rotVelocity = 1.0f;
Hu3DCameraCreate(1);
Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f);
Hu3DCameraPerspectiveSet(1, 42.0f, 10.0f, 8000.0f, 1.2f);
fn_1_B74(var_r30, 600.0f, 60.0f, 120.0f, 1);
fn_1_A6C(var_r30, 180.0f, 120.0f, 0.0f, 1);
return var_r30;
fn_1_B74(object, 600.0f, 60.0f, 120.0f, 1);
fn_1_A6C(object, 180.0f, 120.0f, 0.0f, 1);
return object;
}
void fn_1_A3C(omObjData *arg0) {
HuMemDirectFree(arg0->data);
void fn_1_A3C(omObjData *object)
{
HuMemDirectFree(object->data);
}
void fn_1_A6C(omObjData *arg0, float arg1, float arg2, float arg3, s32 arg4) {
UnkCameraDataStruct *temp_r31 = arg0->data;
void fn_1_A6C(omObjData *object, float x, float y, float z, s32 duration)
{
CameraWork *work = object->data;
temp_r31->unk58.x = arg1;
temp_r31->unk58.y = arg2;
temp_r31->unk58.z = arg3;
temp_r31->unk2C = temp_r31->unk00;
temp_r31->unk84 = 0.0f;
temp_r31->unk88 = 1.0f / arg4;
work->eyePosTarget.x = x;
work->eyePosTarget.y = y;
work->eyePosTarget.z = z;
work->prevEyePos = work->eyePos;
work->eyeVelocity = 0.0f;
work->eyeSpeed = 1.0f / duration;
}
void fn_1_AF0(omObjData *arg0, float arg1, float arg2, float arg3, s32 arg4) {
UnkCameraDataStruct *temp_r31 = arg0->data;
void fn_1_AF0(omObjData *object, float x, float y, float z, s32 duration)
{
CameraWork *work = object->data;
temp_r31->unk64.x = arg1;
temp_r31->unk64.y = arg2;
temp_r31->unk64.z = arg3;
temp_r31->unk38 = temp_r31->unk0C;
temp_r31->unk8C = 0.0f;
temp_r31->unk90 = 1.0f / arg4;
work->lookingAtTarget.x = x;
work->lookingAtTarget.y = y;
work->lookingAtTarget.z = z;
work->prevLookingAt = work->lookingAt;
work->lookingAtVelocity = 0.0f;
work->lookingAtSpeed = 1.0f / duration;
}
void fn_1_B74(omObjData *arg0, float arg1, float arg2, float arg3, s32 arg4) {
UnkCameraDataStruct *temp_r31 = arg0->data;
void fn_1_B74(omObjData *object, float zoom, float rot, float y, s32 duration)
{
CameraWork *work = object->data;
temp_r31->unk64.y = arg3;
temp_r31->unk7C = arg1;
temp_r31->unk80 = arg2;
temp_r31->unk38.y = temp_r31->unk0C.y;
temp_r31->unk50 = temp_r31->unk24;
temp_r31->unk54 = temp_r31->unk28;
temp_r31->unk94 = 0.0f;
temp_r31->unk98 = 1.0f / arg4;
work->lookingAtTarget.y = y;
work->zoomTarget = zoom;
work->rotTarget = rot;
work->prevLookingAt.y = work->lookingAt.y;
work->prevZoom = work->zoom;
work->prevRot = work->rot;
work->rotVelocity = 0.0f;
work->rotSpeed = 1.0f / duration;
}
float fn_1_BF8(omObjData *arg0) {
UnkCameraDataStruct *temp_r31 = arg0->data;
float temp_f31;
// GetZoom
float fn_1_BF8(omObjData *object)
{
CameraWork *work = object->data;
float zoom;
temp_f31 = temp_r31->unk24;
return temp_f31;
zoom = work->zoom;
return zoom;
}
float fn_1_C28(omObjData *arg0) {
UnkCameraDataStruct *temp_r31 = arg0->data;
float temp_f31;
// GetRot
float fn_1_C28(omObjData *object)
{
CameraWork *work = object->data;
float rot;
temp_f31 = temp_r31->unk28;
return temp_f31;
rot = work->rot;
return rot;
}
static void fn_1_C58(omObjData *arg0, float *arg1, float *arg2, float *arg3) {
UnkCameraDataStruct *temp_r31 = arg0->data;
// GetEyePos
static void fn_1_C58(omObjData *object, float *eyePosX, float *eyePosY, float *eyePosZ)
{
CameraWork *temp_r31 = object->data;
*arg1 = temp_r31->unk00.x;
*arg2 = temp_r31->unk00.y;
*arg3 = temp_r31->unk00.z;
*eyePosX = temp_r31->eyePos.x;
*eyePosY = temp_r31->eyePos.y;
*eyePosZ = temp_r31->eyePos.z;
}
void fn_1_C88(omObjData *arg0, float *arg1, float *arg2, float *arg3) {
UnkCameraDataStruct *temp_r31 = arg0->data;
// GetLookingAt
void fn_1_C88(omObjData *object, float *lookingAtX, float *lookingAtY, float *lookingAtZ)
{
CameraWork *work = object->data;
*arg1 = temp_r31->unk0C.x;
*arg2 = temp_r31->unk0C.y;
*arg3 = temp_r31->unk0C.z;
*lookingAtX = work->lookingAt.x;
*lookingAtY = work->lookingAt.y;
*lookingAtZ = work->lookingAt.z;
}
s32 fn_1_CB8(omObjData *arg0) {
UnkCameraDataStruct *temp_r31 = arg0->data;
// CameraDone
s32 fn_1_CB8(omObjData *object)
{
CameraWork *work = object->data;
s32 var_r30 = 1;
s32 var_r29 = 1;
if (!(temp_r31->unk8C < 1.0f) && !(temp_r31->unk94 < 1.0f)) {
if (!(work->lookingAtVelocity < 1.0f) && !(work->rotVelocity < 1.0f)) {
var_r29 = 0;
}
if (var_r29 == 0 && !(temp_r31->unk84 < 1.0f)) {
if (var_r29 == 0 && !(work->eyeVelocity < 1.0f)) {
var_r30 = 0;
}
return var_r30;
}
static void fn_1_D44(omObjData *arg0) {
fn_1_D6C(arg0);
static void HandlerWrapper(omObjData *object)
{
HandleCamera(object);
}
static void fn_1_D6C(omObjData *arg0) {
UnkCameraDataStruct *temp_r31 = arg0->data;
static void HandleCamera(omObjData *object)
{
CameraWork *work = object->data;
float temp_f28;
float temp_f31;
float temp_f30;
float xDiff;
float zDiff;
if (temp_r31->unk84 < 1.0f) {
temp_f28 = sin(90.0f * temp_r31->unk84 * M_PI / 180.0);
temp_r31->unk00.x = temp_r31->unk2C.x + temp_f28 * (temp_r31->unk58.x - temp_r31->unk2C.x);
temp_r31->unk00.y = temp_r31->unk2C.y + temp_f28 * (temp_r31->unk58.y - temp_r31->unk2C.y);
temp_r31->unk00.z = temp_r31->unk2C.z + temp_f28 * (temp_r31->unk58.z - temp_r31->unk2C.z);
if ((temp_r31->unk84 += temp_r31->unk88) >= 1.0f) {
temp_r31->unk00 = temp_r31->unk58;
if (work->eyeVelocity < 1.0f) {
temp_f28 = sind(90.0f * work->eyeVelocity);
work->eyePos.x = work->prevEyePos.x + temp_f28 * (work->eyePosTarget.x - work->prevEyePos.x);
work->eyePos.y = work->prevEyePos.y + temp_f28 * (work->eyePosTarget.y - work->prevEyePos.y);
work->eyePos.z = work->prevEyePos.z + temp_f28 * (work->eyePosTarget.z - work->prevEyePos.z);
if ((work->eyeVelocity += work->eyeSpeed) >= 1.0f) {
work->eyePos = work->eyePosTarget;
}
}
if (temp_r31->unk8C < 1.0f) {
temp_f28 = sin(90.0f * temp_r31->unk8C * M_PI / 180.0);
temp_r31->unk0C.x = temp_r31->unk38.x + temp_f28 * (temp_r31->unk64.x - temp_r31->unk38.x);
temp_r31->unk0C.y = temp_r31->unk38.y + temp_f28 * (temp_r31->unk64.y - temp_r31->unk38.y);
temp_r31->unk0C.z = temp_r31->unk38.z + temp_f28 * (temp_r31->unk64.z - temp_r31->unk38.z);
if ((temp_r31->unk8C += temp_r31->unk90) >= 1.0f) {
temp_r31->unk0C = temp_r31->unk64;
if (work->lookingAtVelocity < 1.0f) {
temp_f28 = sind(90.0f * work->lookingAtVelocity);
work->lookingAt.x = work->prevLookingAt.x + temp_f28 * (work->lookingAtTarget.x - work->prevLookingAt.x);
work->lookingAt.y = work->prevLookingAt.y + temp_f28 * (work->lookingAtTarget.y - work->prevLookingAt.y);
work->lookingAt.z = work->prevLookingAt.z + temp_f28 * (work->lookingAtTarget.z - work->prevLookingAt.z);
if ((work->lookingAtVelocity += work->lookingAtSpeed) >= 1.0f) {
work->lookingAt = work->lookingAtTarget;
}
}
if (temp_r31->unk94 < 1.0f) {
temp_f28 = sin(90.0f * temp_r31->unk94 * M_PI / 180.0);
temp_r31->unk0C.y = temp_r31->unk38.y + temp_f28 * (temp_r31->unk64.y - temp_r31->unk38.y);
temp_r31->unk24 = temp_r31->unk50 + temp_f28 * (temp_r31->unk7C - temp_r31->unk50);
temp_r31->unk28 = temp_r31->unk54 + temp_f28 * (temp_r31->unk80 - temp_r31->unk54);
if ((temp_r31->unk94 += temp_r31->unk98) >= 1.0f) {
temp_r31->unk0C.y = temp_r31->unk64.y;
temp_r31->unk24 = temp_r31->unk7C;
temp_r31->unk28 = temp_r31->unk80;
if (work->rotVelocity < 1.0f) {
temp_f28 = sind(90.0f * work->rotVelocity);
work->lookingAt.y = work->prevLookingAt.y + temp_f28 * (work->lookingAtTarget.y - work->prevLookingAt.y);
work->zoom = work->prevZoom + temp_f28 * (work->zoomTarget - work->prevZoom);
work->rot = work->prevRot + temp_f28 * (work->rotTarget - work->prevRot);
if ((work->rotVelocity += work->rotSpeed) >= 1.0f) {
work->lookingAt.y = work->lookingAtTarget.y;
work->zoom = work->zoomTarget;
work->rot = work->rotTarget;
}
temp_r31->unk0C.x = temp_r31->unk24 * -sin(temp_r31->unk28 * M_PI / 180.0);
temp_r31->unk0C.z = temp_r31->unk24 * cos(temp_r31->unk28 * M_PI / 180.0);
work->lookingAt.x = work->zoom * -sind(work->rot);
work->lookingAt.z = work->zoom * cosd(work->rot);
}
temp_f31 = temp_r31->unk0C.x - temp_r31->unk00.x;
temp_f30 = temp_r31->unk0C.z - temp_r31->unk00.z;
temp_r31->unk24 = sqrtf(temp_f31 * temp_f31 + temp_f30 * temp_f30);
temp_r31->unk28 = fmod(-(180.0 * (atan2(temp_f31, temp_f30) / M_PI)), 360.0);
if (temp_r31->unk28 < 0.0f) {
temp_r31->unk28 += 360.0f;
xDiff = work->lookingAt.x - work->eyePos.x;
zDiff = work->lookingAt.z - work->eyePos.z;
work->zoom = sqrtf(xDiff * xDiff + zDiff * zDiff);
work->rot = fmod(-atan2d(xDiff, zDiff), 360.0);
if (work->rot < 0.0f) {
work->rot += 360.0f;
}
Hu3DCameraPosSet(1, temp_r31->unk00.x, temp_r31->unk00.y, temp_r31->unk00.z, temp_r31->unk18, temp_r31->unk1C, temp_r31->unk20, temp_r31->unk0C.x, temp_r31->unk0C.y, temp_r31->unk0C.z);
Hu3DCameraPosSet(1, work->eyePos.x, work->eyePos.y, work->eyePos.z, work->tilt.x, work->tilt.y, work->tilt.z, work->lookingAt.x,
work->lookingAt.y, work->lookingAt.z);
}
static void fn_1_12E4(omObjData *arg0) {
UnkCameraDataStruct *temp_r31;
static void fn_1_12E4(omObjData *object)
{
CameraWork *work;
if (HuPadBtn[0] & 0xF) {
temp_r31 = arg0->data;
temp_r31->unk0C.x += 0.5f * HuPadStkX[0];
temp_r31->unk0C.y += 0.5f * HuPadStkY[0];
temp_r31->unk00.z += 0.5f * HuPadTrigL[0];
temp_r31->unk00.z -= 0.5f * HuPadTrigR[0];
temp_r31->unk00.x += 0.5f * HuPadSubStkY[0];
temp_r31->unk00.y += 0.5f * HuPadSubStkX[0];
work = object->data;
work->lookingAt.x += 0.5f * HuPadStkX[0];
work->lookingAt.y += 0.5f * HuPadStkY[0];
work->eyePos.z += 0.5f * HuPadTrigL[0];
work->eyePos.z -= 0.5f * HuPadTrigR[0];
work->eyePos.x += 0.5f * HuPadSubStkY[0];
work->eyePos.y += 0.5f * HuPadSubStkX[0];
}
}
static void fn_1_14E4(omObjData *arg0) {
UnkCameraDataStruct *temp_r31 = arg0->data;
static void PrintDebugInfo(omObjData *object)
{
CameraWork *work = object->data;
print8(32, 64, 1.5f, "AT : x=%.2f y=%.2f z=%.2f", temp_r31->unk0C.x, temp_r31->unk0C.y, temp_r31->unk0C.z);
print8(32, 80, 1.5f, "EYE : x=%.2f y=%.2f z=%.2f", temp_r31->unk00.x, temp_r31->unk00.y, temp_r31->unk00.z);
print8(32, 96, 1.5f, "R : %.2f DEG: %.2f", temp_r31->unk24, temp_r31->unk28);
print8(32, 64, 1.5f, "AT : x=%.2f y=%.2f z=%.2f", work->lookingAt.x, work->lookingAt.y, work->lookingAt.z);
print8(32, 80, 1.5f, "EYE : x=%.2f y=%.2f z=%.2f", work->eyePos.x, work->eyePos.y, work->eyePos.z);
print8(32, 96, 1.5f, "R : %.2f DEG: %.2f", work->zoom, work->rot);
}