1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-07-05 15:34:41 +00:00

Document Parts of Camera Data (#1054)

* Add Data enum and fill ARRAY_COUNT

* Clean-Up

* Document camera settings

* Document scenes further

* Minor edit

* Cleanup

* More cleanup

* Oof, that was tedious

* Align function look-up tables

* Remove comments

* format

* Cleanup

* formatter gone wrong, hid comments from me

* format

* Dragorn PR Review 1

* Change approach to camera data using macros

* Clean up function and data map

* Cleanup Comments
This commit is contained in:
engineer124 2022-01-11 12:51:57 +11:00 committed by GitHub
parent 9e5a9d7dc9
commit 67f6b50de3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 2172 additions and 3045 deletions

View file

@ -701,7 +701,7 @@ f32 Camera_ClampLERPScale(Camera* camera, f32 maxLERPScale) {
return ret;
}
void Camera_CopyModeValuesToPREG(Camera* camera, s16 mode) {
void Camera_CopyDataToRegs(Camera* camera, s16 mode) {
CameraModeValue* values;
CameraModeValue* valueP;
s32 i;
@ -714,9 +714,9 @@ void Camera_CopyModeValuesToPREG(Camera* camera, s16 mode) {
for (i = 0; i < sCameraSettings[camera->setting].cameraModes[mode].valueCnt; i++) {
valueP = &values[i];
PREG(valueP->param) = valueP->val;
PREG(valueP->dataType) = valueP->val;
if (PREG(82)) {
osSyncPrintf("camera: res: PREG(%02d) = %d\n", valueP->param, valueP->val);
osSyncPrintf("camera: res: PREG(%02d) = %d\n", valueP->dataType, valueP->val);
}
}
camera->animState = 0;
@ -729,9 +729,9 @@ s32 Camera_CopyPREGToModeValues(Camera* camera) {
for (i = 0; i < sCameraSettings[camera->setting].cameraModes[camera->mode].valueCnt; i++) {
valueP = &values[i];
valueP->val = PREG(valueP->param);
valueP->val = R_CAM_DATA(valueP->dataType);
if (PREG(82)) {
osSyncPrintf("camera: res: %d = PREG(%02d)\n", valueP->val, valueP->param);
osSyncPrintf("camera: res: %d = PREG(%02d)\n", valueP->val, valueP->dataType);
}
}
return true;
@ -999,7 +999,7 @@ s32 func_80045B08(Camera* camera, VecSph* eyeAtDir, f32 yExtra, s16 arg3) {
/**
* Adjusts the camera's at position for Camera_Parallel1
*/
s32 Camera_CalcAtForParallel(Camera* camera, VecSph* arg1, f32 arg2, f32* arg3, s16 arg4) {
s32 Camera_CalcAtForParallel(Camera* camera, VecSph* arg1, f32 yOffset, f32* arg3, s16 arg4) {
Vec3f* at = &camera->at;
Vec3f posOffsetTarget;
Vec3f atTarget;
@ -1013,7 +1013,7 @@ s32 Camera_CalcAtForParallel(Camera* camera, VecSph* arg1, f32 arg2, f32* arg3,
temp_f0_4 = Player_GetHeight(camera->player);
posOffsetTarget.x = 0.0f;
posOffsetTarget.y = temp_f0_4 + arg2;
posOffsetTarget.y = temp_f0_4 + yOffset;
posOffsetTarget.z = 0.0f;
if (PREG(76) && arg4) {
@ -1974,8 +1974,7 @@ s32 Camera_Parallel1(Camera* camera) {
CameraModeValue* values = sCameraSettings[camera->setting].cameraModes[camera->mode].values;
f32 yNormal = (1.0f + PCT(OREG(46))) - (PCT(OREG(46)) * (68.0f / playerHeight));
para1->unk_00 = NEXTPCT * playerHeight * yNormal;
;
para1->yOffset = NEXTPCT * playerHeight * yNormal;
para1->distTarget = NEXTPCT * playerHeight * yNormal;
para1->pitchTarget = DEGF_TO_BINANG(NEXTSETTING);
para1->yawTarget = DEGF_TO_BINANG(NEXTSETTING);
@ -2068,7 +2067,7 @@ s32 Camera_Parallel1(Camera* camera) {
}
if (!(para1->interfaceFlags & 0x80) && !sp6A) {
Camera_CalcAtForParallel(camera, &atToEyeNextDir, para1->unk_00, &anim->yTarget, para1->interfaceFlags & 1);
Camera_CalcAtForParallel(camera, &atToEyeNextDir, para1->yOffset, &anim->yTarget, para1->interfaceFlags & 1);
} else {
func_800458D4(camera, &atToEyeNextDir, para1->unk_18, &anim->yTarget, para1->interfaceFlags & 1);
}
@ -4007,7 +4006,7 @@ s32 Camera_Fixed3(Camera* camera) {
if (camera->animState == 0) {
anim->updDirTimer = 5;
R_CAM_FIXED3_FOV = anim->fov;
R_CAM_DATA(CAM_DATA_FOV) = anim->fov;
camera->animState++;
}
@ -4030,7 +4029,7 @@ s32 Camera_Fixed3(Camera* camera) {
Camera_Vec3fVecSphGeoAdd(at, eye, &atSph);
sCameraInterfaceFlags = fixd3->interfaceFlags;
anim->fov = R_CAM_FIXED3_FOV;
anim->fov = R_CAM_DATA(CAM_DATA_FOV);
camera->roll = 0;
camera->fov = anim->fov * 0.01f;
camera->atLERPStepScale = 0.0f;
@ -6789,8 +6788,8 @@ void Camera_Init(Camera* camera, View* view, CollisionContext* colCtx, GlobalCon
OREG(i) = sOREGInit[i];
}
for (i = 0; i < sPREGInitCnt; i++) {
PREG(i) = sPREGInit[i];
for (i = 0; i < sCamDataRegsInitCount; i++) {
R_CAM_DATA(i) = sCamDataRegsInit[i];
}
DbCamera_Reset(camera, &D_8015BD80);
@ -6945,7 +6944,7 @@ void Camera_InitPlayerSettings(Camera* camera, Player* player) {
camera->paramFlags = 0;
camera->nextCamDataIdx = -1;
camera->atLERPStepScale = 1.0f;
Camera_CopyModeValuesToPREG(camera, camera->mode);
Camera_CopyDataToRegs(camera, camera->mode);
Camera_QRegInit();
osSyncPrintf(VT_FGCOL(BLUE) "camera: personalize ---" VT_RST "\n");
@ -6972,9 +6971,9 @@ s16 Camera_ChangeStatus(Camera* camera, s16 status) {
values = sCameraSettings[camera->setting].cameraModes[camera->mode].values;
for (i = 0; i < sCameraSettings[camera->setting].cameraModes[camera->mode].valueCnt; i++) {
valueP = &values[i];
PREG(valueP->param) = valueP->val;
R_CAM_DATA(valueP->dataType) = valueP->val;
if (PREG(82)) {
osSyncPrintf("camera: change camera status: PREG(%02d) = %d\n", valueP->param, valueP->val);
osSyncPrintf("camera: change camera status: PREG(%02d) = %d\n", valueP->dataType, valueP->val);
}
}
}
@ -7615,7 +7614,7 @@ s32 Camera_ChangeModeFlags(Camera* camera, s16 mode, u8 flags) {
osSyncPrintf(VT_COL(YELLOW, BLACK) "camera: change camera mode: force NORMAL: %s %s refused\n" VT_RST,
sCameraSettingNames[camera->setting], sCameraModeNames[mode]);
camera->mode = CAM_MODE_NORMAL;
Camera_CopyModeValuesToPREG(camera, camera->mode);
Camera_CopyDataToRegs(camera, camera->mode);
func_8005A02C(camera);
return 0xC0000000 | mode;
} else {
@ -7631,7 +7630,7 @@ s32 Camera_ChangeModeFlags(Camera* camera, s16 mode, u8 flags) {
}
camera->unk_14A |= 0x20;
camera->unk_14A |= 2;
Camera_CopyModeValuesToPREG(camera, mode);
Camera_CopyDataToRegs(camera, mode);
modeChangeFlags = 0;
switch (mode) {
case CAM_MODE_FIRSTPERSON:
@ -7790,7 +7789,7 @@ s16 Camera_ChangeSettingFlags(Camera* camera, s16 setting, s16 flags) {
camera->setting = setting;
if (Camera_ChangeModeFlags(camera, camera->mode, 1) >= 0) {
Camera_CopyModeValuesToPREG(camera, camera->mode);
Camera_CopyDataToRegs(camera, camera->mode);
}
osSyncPrintf(VT_SGR("1") "%06u:" VT_RST " camera: change camera[%d] set %s\n", camera->globalCtx->state.frames,
@ -7819,7 +7818,7 @@ s32 Camera_ChangeDataIdx(Camera* camera, s32 camDataIdx) {
if (settingChangeSuccessful || sCameraSettings[camera->setting].unk_00 & 0x80000000) {
camera->camDataIdx = camDataIdx;
camera->unk_14A |= 4;
Camera_CopyModeValuesToPREG(camera, camera->mode);
Camera_CopyDataToRegs(camera, camera->mode);
} else if (settingChangeSuccessful < -1) {
//! @bug: This is likely checking the wrong value. The actual return of Camera_ChangeSettingFlags or
// camDataIdx would make more sense.
@ -7994,7 +7993,7 @@ s32 Camera_ChangeDoorCam(Camera* camera, Actor* doorActor, s16 camDataIdx, f32 a
doorParams->camDataIdx = camDataIdx;
if (camDataIdx == -99) {
Camera_CopyModeValuesToPREG(camera, camera->mode);
Camera_CopyDataToRegs(camera, camera->mode);
return -99;
}
@ -8014,7 +8013,7 @@ s32 Camera_ChangeDoorCam(Camera* camera, Actor* doorActor, s16 camDataIdx, f32 a
osSyncPrintf("....change door camera ID %d (set %d)\n", camera->camDataIdx, camera->setting);
}
Camera_CopyModeValuesToPREG(camera, camera->mode);
Camera_CopyDataToRegs(camera, camera->mode);
return -1;
}