From 8ff58118b35d9b3a294d74ad4f6c1bb302a2768c Mon Sep 17 00:00:00 2001 From: engineer124 <47598039+engineer124@users.noreply.github.com> Date: Sun, 4 Dec 2022 23:02:24 -0500 Subject: [PATCH] Camera Flags (#1225) * Generic Camera Flags * New flag names * Add flags to functions * Finish flag docs * More docs * More cleanup * More clarity * Better shrinkwindow flag docs * Improve name * CAM_INTERFACE_FLAGS * Better approach to edge cases * Change ordering for consistency * Oops * Add masks to macro * PR/Discord discussions * cleanup comment * Oops * PR Suggestions * More PR Feedback * More PR Suggestions * PR Suggestions * More flag style change * Small cleanup * sync names with other PRs * more fixes * fix comments * update with hud visibility mode docs * missed one * fix comments * Roman PR Suggestions * interfaceField * small fix * letterbox cleanup * fix macro arg * fix func declaration --- include/functions.h | 8 +- include/z64camera.h | 370 ++++++--- src/code/z_camera.c | 741 +++++++++--------- src/code/z_camera_data.inc.c | 587 +++++++++----- src/code/z_demo.c | 2 +- src/code/z_kankyo.c | 3 +- src/code/z_onepointdemo.c | 4 +- src/code/z_play.c | 15 +- src/code/z_player_lib.c | 2 +- .../ovl_Bg_Bdan_Objects/z_bg_bdan_objects.c | 4 +- .../actors/ovl_En_Bigokuta/z_en_bigokuta.c | 4 +- src/overlays/actors/ovl_En_Go2/z_en_go2.c | 4 +- src/overlays/actors/ovl_En_Horse/z_en_horse.c | 4 +- .../ovl_Object_Kankyo/z_object_kankyo.c | 4 +- .../actors/ovl_player_actor/z_player.c | 12 +- 15 files changed, 1091 insertions(+), 673 deletions(-) diff --git a/include/functions.h b/include/functions.h index 2cc26a9d3e..fac2b3a38b 100644 --- a/include/functions.h +++ b/include/functions.h @@ -653,10 +653,10 @@ Vec3s* Camera_GetCamDir(Vec3s* dst, Camera* camera); s16 Camera_GetCamDirPitch(Camera* camera); s16 Camera_GetCamDirYaw(Camera* camera); s32 Camera_RequestQuake(Camera* camera, s32 unused, s16 y, s32 duration); -s32 Camera_SetParam(Camera* camera, s32 param, void* value); -s32 func_8005AC48(Camera* camera, s16 arg1); -s16 func_8005ACFC(Camera* camera, s16 arg1); -s16 func_8005AD1C(Camera* camera, s16 arg1); +s32 Camera_SetViewParam(Camera* camera, s32 viewFlag, void* param); +s32 Camera_OverwriteStateFlags(Camera* camera, s16 stateFlags); +s16 Camera_SetStateFlag(Camera* camera, s16 stateFlag); +s16 Camera_UnsetStateFlag(Camera* camera, s16 stateFlag); s32 Camera_ResetAnim(Camera* camera); s32 Camera_SetCSParams(Camera* camera, CutsceneCameraPoint* atPoints, CutsceneCameraPoint* eyePoints, Player* player, s16 relativeToPlayer); diff --git a/include/z64camera.h b/include/z64camera.h index b5c0dbf72d..8129f56b70 100644 --- a/include/z64camera.h +++ b/include/z64camera.h @@ -3,6 +3,7 @@ #include "ultra64.h" #include "z64cutscene.h" +#include "z64save.h" // these two angle conversion macros are slightly inaccurate #define CAM_DEG_TO_BINANG(degrees) (s16)((degrees) * 182.04167f + .5f) @@ -27,7 +28,97 @@ #define PARENT_CAM(cam) ((cam)->play->cameraPtrs[(cam)->parentCamId]) #define CHILD_CAM(cam) ((cam)->play->cameraPtrs[(cam)->childCamId]) -// All scenes using `SCENE_CAM_TYPE_FIXED_SHOP_VIEWPOINT` or `SCENE_CAM_TYPE_FIXED_TOGGLE_VIEWPOINT` are expected +// Shrinking the window from the top and bottom with black borders (letterboxing) +#define CAM_LETTERBOX_SHIFT 12 +#define CAM_LETTERBOX_MASK (0xF << CAM_LETTERBOX_SHIFT) +#define CAM_LETTERBOX_SIZE_MASK (0x7 << CAM_LETTERBOX_SHIFT) + +#define CAM_LETTERBOX(letterBoxFlag) (((letterBoxFlag) & 0xF) << CAM_LETTERBOX_SHIFT) + +// small/medium/large black borders +#define CAM_LETTERBOX_NONE CAM_LETTERBOX(0) +#define CAM_LETTERBOX_SMALL CAM_LETTERBOX(1) +#define CAM_LETTERBOX_MEDIUM CAM_LETTERBOX(2) +#define CAM_LETTERBOX_LARGE CAM_LETTERBOX(3) + +#define CAM_LETTERBOX_INSTANT CAM_LETTERBOX(8) // Bit to determine whether to set the current value directly (on), or to set the size target (off) +#define CAM_LETTERBOX_IGNORE CAM_LETTERBOX(0xF) // No change in letterbox size, keep the previous size + +// Camera-unique hud visibility mode macros +#define CAM_HUD_VISIBILITY_SHIFT 8 +#define CAM_HUD_VISIBILITY_MASK (0xF << CAM_HUD_VISIBILITY_SHIFT) +#define CAM_HUD_VISIBILITY(hudVisibility) (((hudVisibility) & 0xF) << CAM_HUD_VISIBILITY_SHIFT) + +//! @note: since `interfaceField` can only have `0 - 0xF` values, +//! there is no cam value mapped to `HUD_VISIBILITY_NOTHING_INSTANT`. +//! @note: since 0 means `HUD_VISIBILITY_ALL`, +//! there is no cam value mapped to `HUD_VISIBILITY_NO_CHANGE`. +#define CAM_HUD_VISIBILITY_ALL CAM_HUD_VISIBILITY(0) // HUD_VISIBILITY_ALL +#define CAM_HUD_VISIBILITY_NOTHING CAM_HUD_VISIBILITY(HUD_VISIBILITY_NOTHING) +#define CAM_HUD_VISIBILITY_NOTHING_ALT CAM_HUD_VISIBILITY(HUD_VISIBILITY_NOTHING_ALT) +#define CAM_HUD_VISIBILITY_HEARTS_FORCE CAM_HUD_VISIBILITY(HUD_VISIBILITY_HEARTS_FORCE) +#define CAM_HUD_VISIBILITY_A CAM_HUD_VISIBILITY(HUD_VISIBILITY_A) +#define CAM_HUD_VISIBILITY_A_HEARTS_MAGIC_FORCE CAM_HUD_VISIBILITY(HUD_VISIBILITY_A_HEARTS_MAGIC_FORCE) +#define CAM_HUD_VISIBILITY_A_HEARTS_MAGIC_MINIMAP_FORCE CAM_HUD_VISIBILITY(HUD_VISIBILITY_A_HEARTS_MAGIC_MINIMAP_FORCE) +#define CAM_HUD_VISIBILITY_ALL_NO_MINIMAP_BY_BTN_STATUS CAM_HUD_VISIBILITY(HUD_VISIBILITY_ALL_NO_MINIMAP_BY_BTN_STATUS) +#define CAM_HUD_VISIBILITY_B CAM_HUD_VISIBILITY(HUD_VISIBILITY_B) +#define CAM_HUD_VISIBILITY_HEARTS_MAGIC CAM_HUD_VISIBILITY(HUD_VISIBILITY_HEARTS_MAGIC) +#define CAM_HUD_VISIBILITY_B_ALT CAM_HUD_VISIBILITY(HUD_VISIBILITY_B_ALT) +#define CAM_HUD_VISIBILITY_HEARTS CAM_HUD_VISIBILITY(HUD_VISIBILITY_HEARTS) +#define CAM_HUD_VISIBILITY_A_B_MINIMAP CAM_HUD_VISIBILITY(HUD_VISIBILITY_A_B_MINIMAP) +#define CAM_HUD_VISIBILITY_HEARTS_MAGIC_FORCE CAM_HUD_VISIBILITY(HUD_VISIBILITY_HEARTS_MAGIC_FORCE) +// Unique to camera, does not change hud visibility mode (similar effect as HUD_VISIBILITY_NO_CHANGE) +#define CAM_HUD_VISIBILITY_IGNORE CAM_HUD_VISIBILITY(0xF) + +/** + * letterboxFlag: Determines the size of the letter-box window. See CAM_LETTERBOX_* defines. + * Can also add on the flag ( | CAM_LETTERBOX_INSTANT) to make the size change immediately + * hudVisibilityMode: Determines the hud visibility mode. See CAM_HUD_VISIBILITY_* defines. + * - A value of 0 (CAM_HUD_VISIBILITY_ALL) in camera maps to a hud visibility mode of HUD_VISIBILITY_ALL + * - A value of 0xF in camera results in no change in the hudVisibility (CAM_HUD_VISIBILITY_IGNORE) + * funcFlags: Custom flags for functions + */ +#define CAM_INTERFACE_FIELD(letterboxFlag, hudVisibilityMode, funcFlags) \ + (((letterboxFlag) & CAM_LETTERBOX_MASK) | (hudVisibilityMode) | ((funcFlags) & 0xFF)) + +// Camera behaviorFlags. Flags specifically for settings, modes, and bgCam +// Used to store current state, only CAM_BEHAVIOR_SETTING_1 and CAM_BEHAVIOR_BG_2 are read from and used in logic +// Setting (0x1, 0x10) +#define CAM_BEHAVIOR_SETTING_1 (1 << 0) +#define CAM_BEHAVIOR_SETTING_2 (1 << 4) +// Mode (0x2, 0x20) +#define CAM_BEHAVIOR_MODE_1 (1 << 1) +#define CAM_BEHAVIOR_MODE_2 (1 << 5) +// bgCam (0x4, 0x40) +#define CAM_BEHAVIOR_BG_1 (1 << 2) +#define CAM_BEHAVIOR_BG_2 (1 << 6) + +// Camera stateFlags. Variety of generic flags +#define CAM_STATE_0 (1 << 0) // Must be set for the camera to change settings based on the bg surface +#define CAM_STATE_1 (1 << 1) // Must be set for Camera_UpdateWater to run +#define CAM_STATE_2 (1 << 2) +#define CAM_STATE_3 (1 << 3) // Customizable flag for different functions +#define CAM_STATE_4 (1 << 4) +#define CAM_STATE_5 (1 << 5) +#define CAM_STATE_6 (1 << 6) +#define CAM_STATE_7 (1 << 7) // Set in play, unused +#define CAM_STATE_8 (1 << 8) // Camera (eye) is underwater +#define CAM_STATE_9 (1 << 9) +#define CAM_STATE_10 (1 << 10) // Prevents the camera from changing settings based on the bg surface +#define CAM_STATE_12 (1 << 12) // Set in Camera_Demo7, but Camera_Demo7 is never called +#define CAM_STATE_14 (1 << 14) // isInitialized. Turned on in Camera Init, never used or changed +#define CAM_STATE_15 ((s16)(1 << 15)) + +// Camera viewFlags. Set params related to view +#define CAM_VIEW_AT (1 << 0) // camera->at +#define CAM_VIEW_EYE (1 << 1) // camera->eye and camera->eyeNext +#define CAM_VIEW_UP (1 << 2) // camera->up +#define CAM_VIEW_TARGET (1 << 3) // camera->target +#define CAM_VIEW_TARGET_POS (1 << 4) // camera->targetPosRot.pos +#define CAM_VIEW_FOV (1 << 5) // camera->fov +#define CAM_VIEW_ROLL (1 << 6) // camera->roll + +// All scenes using `SCENE_CAM_TYPE_FIXED_SHOP_VIEWPOINT` or `SCENE_CAM_TYPE_FIXED_TOGGLE_VIEWPOINT` are expected // to have their first two bgCamInfo entries be the following: #define BGCAM_INDEX_TOGGLE_LOCKED 0 #define BGCAM_INDEX_TOGGLE_PIVOT 1 @@ -117,7 +208,7 @@ typedef enum { /* 0x03 */ CAM_MODE_TALK, /* 0x04 */ CAM_MODE_BATTLE, /* 0x05 */ CAM_MODE_CLIMB, - /* 0x06 */ CAM_MODE_FIRSTPERSON, // "SUBJECT" + /* 0x06 */ CAM_MODE_FIRSTPERSON, // "SUBJECT" /* 0x07 */ CAM_MODE_BOWARROW, /* 0x08 */ CAM_MODE_BOWARROWZ, /* 0x09 */ CAM_MODE_HOOKSHOT, // "FOOKSHOT" @@ -220,7 +311,7 @@ typedef enum { /* 0x06 */ CAM_DATA_MAX_YAW_UPDATE, /* 0x07 */ CAM_DATA_FOV, /* 0x08 */ CAM_DATA_AT_LERP_STEP_SCALE, - /* 0x09 */ CAM_DATA_FLAGS, + /* 0x09 */ CAM_DATA_INTERFACE_FIELD, /* 0x0A */ CAM_DATA_YAW_TARGET, /* 0x0B */ CAM_DATA_GROUND_Y_OFFSET, /* 0x0C */ CAM_DATA_GROUND_AT_LERP_STEP_SCALE, @@ -241,8 +332,8 @@ typedef enum { /* 0x1B */ CAM_DATA_MAX } CameraDataType; -#define CAM_FUNCDATA_FLAGS(flags) \ - { flags, CAM_DATA_FLAGS } +#define CAM_FUNCDATA_INTERFACE_FIELD(interfaceField) \ + { interfaceField, CAM_DATA_INTERFACE_FIELD } typedef struct { /* 0x00 */ Vec3f collisionClosePoint; @@ -264,7 +355,7 @@ typedef struct { /* 0x18 */ f32 fovTarget; /* 0x1C */ f32 atLERPScaleMax; /* 0x20 */ s16 pitchTarget; - /* 0x22 */ s16 interfaceFlags; + /* 0x22 */ s16 interfaceField; } Normal1ReadOnlyData; // size = 0x24 typedef struct { @@ -282,7 +373,14 @@ typedef struct { /* 0x24 */ Normal1ReadWriteData rwData; } Normal1; // size = 0x50 -#define CAM_FUNCDATA_NORM1(yOffset, eyeDist, eyeDistNext, pitchTarget, yawUpdateRateTarget, xzUpdateRateTarget, maxYawUpdate, fov, atLerpStepScale, flags) \ +#define NORMAL1_FLAG_0 (1 << 0) +#define NORMAL1_FLAG_1 (1 << 1) +#define NORMAL1_FLAG_2 (1 << 2) +#define NORMAL1_FLAG_4 (1 << 4) +#define NORMAL1_FLAG_5 (1 << 5) +#define NORMAL1_FLAG_7 (1 << 7) + +#define CAM_FUNCDATA_NORM1(yOffset, eyeDist, eyeDistNext, pitchTarget, yawUpdateRateTarget, xzUpdateRateTarget, maxYawUpdate, fov, atLerpStepScale, interfaceField) \ { yOffset, CAM_DATA_Y_OFFSET }, \ { eyeDist, CAM_DATA_EYE_DIST }, \ { eyeDistNext, CAM_DATA_EYE_DIST_NEXT }, \ @@ -292,9 +390,9 @@ typedef struct { { maxYawUpdate, CAM_DATA_MAX_YAW_UPDATE }, \ { fov, CAM_DATA_FOV }, \ { atLerpStepScale, CAM_DATA_AT_LERP_STEP_SCALE }, \ - { flags, CAM_DATA_FLAGS } + { interfaceField, CAM_DATA_INTERFACE_FIELD } -#define CAM_FUNCDATA_NORM1_ALT(yOffset, eyeDist, eyeDistNext, pitchTarget, yawUpdateRateTarget, xzUpdateRateTarget, maxYawUpdate, fov, atLerpStepScale, flags) \ +#define CAM_FUNCDATA_NORM1_ALT(yOffset, eyeDist, eyeDistNext, pitchTarget, yawUpdateRateTarget, xzUpdateRateTarget, maxYawUpdate, fov, atLerpStepScale, interfaceField) \ { yOffset, CAM_DATA_Y_OFFSET }, \ { eyeDist, CAM_DATA_EYE_DIST }, \ { eyeDistNext, CAM_DATA_EYE_DIST_NEXT }, \ @@ -304,7 +402,7 @@ typedef struct { { maxYawUpdate, CAM_DATA_MAX_YAW_UPDATE }, \ { fov, CAM_DATA_FOV }, \ { atLerpStepScale, CAM_DATA_AT_LERP_STEP_SCALE }, \ - { flags, CAM_DATA_FLAGS } + { interfaceField, CAM_DATA_INTERFACE_FIELD } typedef struct { /* 0x00 */ f32 unk_00; @@ -315,7 +413,7 @@ typedef struct { /* 0x14 */ f32 unk_14; /* 0x18 */ f32 unk_18; /* 0x1C */ s16 unk_1C; - /* 0x1E */ s16 interfaceFlags; + /* 0x1E */ s16 interfaceField; } Normal2ReadOnlyData; // size = 0x20 typedef struct { @@ -334,7 +432,12 @@ typedef struct { /* 0x20 */ Normal2ReadWriteData rwData; } Normal2; // size = 0x4C -#define CAM_FUNCDATA_NORM2(yOffset, eyeDist, eyeDistNext, unk_23, yawUpdateRateTarget, maxYawUpdate, fov, atLerpStepScale, flags) \ +#define NORMAL2_FLAG_0 (1 << 0) +#define NORMAL2_FLAG_2 (1 << 2) +#define NORMAL2_FLAG_4 (1 << 4) +#define NORMAL2_FLAG_7 (1 << 7) + +#define CAM_FUNCDATA_NORM2(yOffset, eyeDist, eyeDistNext, unk_23, yawUpdateRateTarget, maxYawUpdate, fov, atLerpStepScale, interfaceField) \ { yOffset, CAM_DATA_Y_OFFSET }, \ { eyeDist, CAM_DATA_EYE_DIST }, \ { eyeDistNext, CAM_DATA_EYE_DIST_NEXT }, \ @@ -343,7 +446,7 @@ typedef struct { { maxYawUpdate, CAM_DATA_MAX_YAW_UPDATE }, \ { fov, CAM_DATA_FOV }, \ { atLerpStepScale, CAM_DATA_AT_LERP_STEP_SCALE }, \ - { flags, CAM_DATA_FLAGS } + { interfaceField, CAM_DATA_INTERFACE_FIELD } typedef struct { /* 0x00 */ f32 yOffset; @@ -354,7 +457,7 @@ typedef struct { /* 0x14 */ f32 fovTarget; /* 0x18 */ f32 maxAtLERPScale; /* 0x1C */ s16 pitchTarget; - /* 0x1E */ s16 interfaceFlags; + /* 0x1E */ s16 interfaceField; } Normal3ReadOnlyData; // size = 0x20 typedef struct { @@ -372,7 +475,7 @@ typedef struct { /* 0x20 */ Normal3ReadWriteData rwData; } Normal3; // size = 0x4C -#define CAM_FUNCDATA_NORM3(yOffset, eyeDist, eyeDistNext, pitchTarget, yawUpdateRateTarget, xzUpdateRateTarget, fov, atLerpStepScale, flags) \ +#define CAM_FUNCDATA_NORM3(yOffset, eyeDist, eyeDistNext, pitchTarget, yawUpdateRateTarget, xzUpdateRateTarget, fov, atLerpStepScale, interfaceField) \ { yOffset, CAM_DATA_Y_OFFSET }, \ { eyeDist, CAM_DATA_EYE_DIST }, \ { eyeDistNext, CAM_DATA_EYE_DIST_NEXT }, \ @@ -381,7 +484,7 @@ typedef struct { { xzUpdateRateTarget, CAM_DATA_XZ_UPDATE_RATE_TARGET }, \ { fov, CAM_DATA_FOV }, \ { atLerpStepScale, CAM_DATA_AT_LERP_STEP_SCALE }, \ - { flags, CAM_DATA_FLAGS } + { interfaceField, CAM_DATA_INTERFACE_FIELD } typedef struct { /* 0x00 */ f32 yOffset; @@ -394,7 +497,7 @@ typedef struct { /* 0x1C */ f32 unk_1C; /* 0x20 */ s16 pitchTarget; /* 0x22 */ s16 yawTarget; - /* 0x24 */ s16 interfaceFlags; + /* 0x24 */ s16 interfaceField; } Parallel1ReadOnlyData; // size = 0x28 typedef struct { @@ -412,7 +515,16 @@ typedef struct { /* 0x28 */ Parallel1ReadWriteData rwData; } Parallel1; // size = 0x44 -#define CAM_FUNCDATA_PARA1(yOffset, eyeDist, pitchTarget, yawTarget, yawUpdateRateTarget, xzUpdateRateTarget, fov, atLerpStepScale, flags, groundYOffset, groundAtLerpStepScale) \ +#define PARALLEL1_FLAG_0 (1 << 0) +#define PARALLEL1_FLAG_1 (1 << 1) +#define PARALLEL1_FLAG_2 (1 << 2) +#define PARALLEL1_FLAG_3 (1 << 3) +#define PARALLEL1_FLAG_4 (1 << 4) +#define PARALLEL1_FLAG_5 (1 << 5) +#define PARALLEL1_FLAG_6 (1 << 6) +#define PARALLEL1_FLAG_7 (1 << 7) + +#define CAM_FUNCDATA_PARA1(yOffset, eyeDist, pitchTarget, yawTarget, yawUpdateRateTarget, xzUpdateRateTarget, fov, atLerpStepScale, interfaceField, groundYOffset, groundAtLerpStepScale) \ { yOffset, CAM_DATA_Y_OFFSET }, \ { eyeDist, CAM_DATA_EYE_DIST }, \ { pitchTarget, CAM_DATA_PITCH_TARGET }, \ @@ -421,10 +533,13 @@ typedef struct { { xzUpdateRateTarget, CAM_DATA_XZ_UPDATE_RATE_TARGET }, \ { fov, CAM_DATA_FOV }, \ { atLerpStepScale, CAM_DATA_AT_LERP_STEP_SCALE }, \ - { flags, CAM_DATA_FLAGS }, \ + { interfaceField, CAM_DATA_INTERFACE_FIELD }, \ { groundYOffset, CAM_DATA_GROUND_Y_OFFSET }, \ { groundAtLerpStepScale, CAM_DATA_GROUND_AT_LERP_STEP_SCALE } +#define PARALLEL3_FLAG_0 (1 << 0) +#define PARALLEL3_FLAG_1 (1 << 1) + typedef struct { /* 0x00 */ f32 atYOffset; /* 0x04 */ f32 distMin; @@ -433,7 +548,7 @@ typedef struct { /* 0x10 */ f32 maxYawUpdate; /* 0x14 */ f32 unk_14; // never used. /* 0x18 */ f32 atLERPScaleMax; - /* 0x1C */ s16 interfaceFlags; + /* 0x1C */ s16 interfaceField; } Jump1ReadOnlyData; // size = 0x20 typedef struct { @@ -449,7 +564,10 @@ typedef struct { /* 0x20 */ Jump1ReadWriteData rwData; } Jump1; // size = 0x48 -#define CAM_FUNCDATA_JUMP1(yOffset, eyeDist, eyeDistNext, yawUpdateRateTarget, maxYawUpdate, fov, atLerpStepScale, flags) \ +#define JUMP1_FLAG_2 (1 << 2) +#define JUMP1_FLAG_4 (1 << 4) + +#define CAM_FUNCDATA_JUMP1(yOffset, eyeDist, eyeDistNext, yawUpdateRateTarget, maxYawUpdate, fov, atLerpStepScale, interfaceField) \ { yOffset, CAM_DATA_Y_OFFSET }, \ { eyeDist, CAM_DATA_EYE_DIST }, \ { eyeDistNext, CAM_DATA_EYE_DIST_NEXT }, \ @@ -457,7 +575,7 @@ typedef struct { { maxYawUpdate, CAM_DATA_MAX_YAW_UPDATE }, \ { fov, CAM_DATA_FOV }, \ { atLerpStepScale, CAM_DATA_AT_LERP_STEP_SCALE }, \ - { flags, CAM_DATA_FLAGS } + { interfaceField, CAM_DATA_INTERFACE_FIELD } typedef struct { /* 0x00 */ f32 atYOffset; @@ -468,7 +586,7 @@ typedef struct { /* 0x14 */ f32 xzUpdRateTarget; /* 0x18 */ f32 fovTarget; /* 0x1C */ f32 atLERPStepScale; - /* 0x20 */ s16 interfaceFlags; + /* 0x20 */ s16 interfaceField; } Jump2ReadOnlyData; // size = 0x24 typedef struct { @@ -485,7 +603,10 @@ typedef struct { /* 0x24 */ Jump2ReadWriteData rwData; } Jump2; // size = 0x34 -#define CAM_FUNCDATA_JUMP2(yOffset, eyeDist, eyeDistNext, minMaxDistFactor, yawUpdateRateTarget, xzUpdateRateTarget, fov, atLerpStepScale, flags) \ +#define JUMP2_FLAG_1 (1 << 1) +#define JUMP2_FLAG_2 (1 << 2) + +#define CAM_FUNCDATA_JUMP2(yOffset, eyeDist, eyeDistNext, minMaxDistFactor, yawUpdateRateTarget, xzUpdateRateTarget, fov, atLerpStepScale, interfaceField) \ { yOffset, CAM_DATA_Y_OFFSET }, \ { eyeDist, CAM_DATA_EYE_DIST }, \ { eyeDistNext, CAM_DATA_EYE_DIST_NEXT }, \ @@ -494,7 +615,7 @@ typedef struct { { xzUpdateRateTarget, CAM_DATA_XZ_UPDATE_RATE_TARGET }, \ { fov, CAM_DATA_FOV }, \ { atLerpStepScale, CAM_DATA_AT_LERP_STEP_SCALE }, \ - { flags, CAM_DATA_FLAGS } + { interfaceField, CAM_DATA_INTERFACE_FIELD } typedef struct { /* 0x00 */ f32 yOffset; @@ -506,7 +627,7 @@ typedef struct { /* 0x18 */ f32 fovTarget; /* 0x1C */ f32 unk_1C; /* 0x20 */ s16 pitchTarget; - /* 0x22 */ s16 interfaceFlags; + /* 0x22 */ s16 interfaceField; } Jump3ReadOnlyData; // size = 0x24 typedef struct { @@ -521,7 +642,11 @@ typedef struct { /* 0x24 */ Jump3ReadWriteData rwData; } Jump3; // size = 0x48 -#define CAM_FUNCDATA_JUMP3(yOffset, eyeDist, eyeDistNext, pitchTarget, yawUpdateRateTarget, xzUpdateRateTarget, maxYawUpdate, fov, atLerpStepScale, flags) \ +#define JUMP3_FLAG_0 (1 << 0) +#define JUMP3_FLAG_2 (1 << 2) +#define JUMP3_FLAG_4 (1 << 4) + +#define CAM_FUNCDATA_JUMP3(yOffset, eyeDist, eyeDistNext, pitchTarget, yawUpdateRateTarget, xzUpdateRateTarget, maxYawUpdate, fov, atLerpStepScale, interfaceField) \ { yOffset, CAM_DATA_Y_OFFSET }, \ { eyeDist, CAM_DATA_EYE_DIST }, \ { eyeDistNext, CAM_DATA_EYE_DIST_NEXT }, \ @@ -531,7 +656,7 @@ typedef struct { { maxYawUpdate, CAM_DATA_MAX_YAW_UPDATE }, \ { fov, CAM_DATA_FOV }, \ { atLerpStepScale, CAM_DATA_AT_LERP_STEP_SCALE }, \ - { flags, CAM_DATA_FLAGS } + { interfaceField, CAM_DATA_INTERFACE_FIELD } typedef struct { /* 0x00 */ f32 yOffset; @@ -545,7 +670,7 @@ typedef struct { /* 0x20 */ f32 atLERPScaleOnGround; /* 0x24 */ f32 yOffsetOffGround; /* 0x28 */ f32 atLERPScaleOffGround; - /* 0x2C */ s16 flags; + /* 0x2C */ s16 interfaceField; } Battle1ReadOnlyData; // size = 0x30 typedef struct { @@ -566,7 +691,11 @@ typedef struct { /* 0x30 */ Battle1ReadWriteData rwData; } Battle1; // size = 0x50 -#define CAM_FUNCDATA_BATT1(yOffset, eyeDist, swingYawInit, swingYawFinal, swingPitchInit, swingPitchFinal, swingPitchAdj, fov, atLerpStepScale, flags, groundYOffset, groundAtLerpStepScale) \ +#define BATTLE1_FLAG_0 (1 << 0) +#define BATTLE1_FLAG_1 (1 << 1) +#define BATTLE1_FLAG_7 (1 << 7) + +#define CAM_FUNCDATA_BATT1(yOffset, eyeDist, swingYawInit, swingYawFinal, swingPitchInit, swingPitchFinal, swingPitchAdj, fov, atLerpStepScale, interfaceField, groundYOffset, groundAtLerpStepScale) \ { yOffset, CAM_DATA_Y_OFFSET }, \ { eyeDist, CAM_DATA_EYE_DIST }, \ { swingYawInit, CAM_DATA_SWING_YAW_INIT }, \ @@ -576,7 +705,7 @@ typedef struct { { swingPitchAdj, CAM_DATA_SWING_PITCH_ADJ }, \ { fov, CAM_DATA_FOV }, \ { atLerpStepScale, CAM_DATA_AT_LERP_STEP_SCALE }, \ - { flags, CAM_DATA_FLAGS }, \ + { interfaceField, CAM_DATA_INTERFACE_FIELD }, \ { groundYOffset, CAM_DATA_GROUND_Y_OFFSET }, \ { groundAtLerpStepScale, CAM_DATA_GROUND_AT_LERP_STEP_SCALE } @@ -587,7 +716,7 @@ typedef struct { /* 0x0C */ f32 lerpUpdateRate; /* 0x10 */ f32 fovTarget; /* 0x14 */ f32 atLERPTarget; - /* 0x18 */ s16 interfaceFlags; + /* 0x18 */ s16 interfaceField; /* 0x1A */ s16 unk_1A; } Battle4ReadOnlyData; // size = 0x1C @@ -600,14 +729,14 @@ typedef struct { /* 0x1C */ Battle4ReadWriteData rwData; } Battle4; // size = 0x20 -#define CAM_FUNCDATA_BATT4(yOffset, eyeDist, pitchTarget, yawUpdateRateTarget, fov, atLerpStepScale, flags) \ +#define CAM_FUNCDATA_BATT4(yOffset, eyeDist, pitchTarget, yawUpdateRateTarget, fov, atLerpStepScale, interfaceField) \ { yOffset, CAM_DATA_Y_OFFSET }, \ { eyeDist, CAM_DATA_EYE_DIST }, \ { pitchTarget, CAM_DATA_PITCH_TARGET }, \ { yawUpdateRateTarget, CAM_DATA_YAW_UPDATE_RATE_TARGET }, \ { fov, CAM_DATA_FOV }, \ { atLerpStepScale, CAM_DATA_AT_LERP_STEP_SCALE }, \ - { flags, CAM_DATA_FLAGS } + { interfaceField, CAM_DATA_INTERFACE_FIELD } typedef struct { /* 0x00 */ f32 unk_00; @@ -622,7 +751,7 @@ typedef struct { /* 0x24 */ f32 unk_24; /* 0x28 */ f32 unk_28; /* 0x2C */ f32 unk_2C; - /* 0x30 */ s16 interfaceFlags; + /* 0x30 */ s16 interfaceField; } KeepOn1ReadOnlyData; // size = 0x34 typedef struct { @@ -641,7 +770,10 @@ typedef struct { /* 0x34 */ KeepOn1ReadWriteData rwData; } KeepOn1; // size = 0x4C -#define CAM_FUNCDATA_KEEP1(yOffset, eyeDist, eyeDistNext, swingYawInit, swingYawFinal, swingPitchInit, swingPitchFinal, swingPitchAdj, fov, atLerpStepScale, flags, groundYOffset, groundAtLerpStepScale) \ +#define KEEPON1_FLAG_0 (1 << 0) +#define KEEPON1_FLAG_1 (1 << 1) + +#define CAM_FUNCDATA_KEEP1(yOffset, eyeDist, eyeDistNext, swingYawInit, swingYawFinal, swingPitchInit, swingPitchFinal, swingPitchAdj, fov, atLerpStepScale, interfaceField, groundYOffset, groundAtLerpStepScale) \ { yOffset, CAM_DATA_Y_OFFSET }, \ { eyeDist, CAM_DATA_EYE_DIST }, \ { eyeDistNext, CAM_DATA_EYE_DIST_NEXT }, \ @@ -652,7 +784,7 @@ typedef struct { { swingPitchAdj, CAM_DATA_SWING_PITCH_ADJ }, \ { fov, CAM_DATA_FOV }, \ { atLerpStepScale, CAM_DATA_AT_LERP_STEP_SCALE }, \ - { flags, CAM_DATA_FLAGS }, \ + { interfaceField, CAM_DATA_INTERFACE_FIELD }, \ { groundYOffset, CAM_DATA_GROUND_Y_OFFSET }, \ { groundAtLerpStepScale, CAM_DATA_GROUND_AT_LERP_STEP_SCALE } @@ -668,7 +800,7 @@ typedef struct { /* 0x20 */ f32 fovTarget; /* 0x24 */ f32 atLERPScaleMax; /* 0x28 */ s16 initTimer; - /* 0x2A */ s16 flags; + /* 0x2A */ s16 interfaceField; } KeepOn3ReadOnlyData; // size = 0x2C typedef struct { @@ -685,7 +817,11 @@ typedef struct { /* 0x2C */ KeepOn3ReadWriteData rwData; } KeepOn3; // size = 0x4C -#define CAM_FUNCDATA_KEEP3(yOffset, eyeDist, eyeDistNext, swingYawInit, swingYawFinal, swingPitchInit, swingPitchFinal, swingPitchAdj, fov, atLerpStepScale, yawUpdateRateTarget, flags) \ +#define KEEPON3_FLAG_4 (1 << 4) +#define KEEPON3_FLAG_5 (1 << 5) +#define KEEPON3_FLAG_7 (1 << 7) + +#define CAM_FUNCDATA_KEEP3(yOffset, eyeDist, eyeDistNext, swingYawInit, swingYawFinal, swingPitchInit, swingPitchFinal, swingPitchAdj, fov, atLerpStepScale, yawUpdateRateTarget, interfaceField) \ { yOffset, CAM_DATA_Y_OFFSET }, \ { eyeDist, CAM_DATA_EYE_DIST }, \ { eyeDistNext, CAM_DATA_EYE_DIST_NEXT }, \ @@ -697,7 +833,7 @@ typedef struct { { fov, CAM_DATA_FOV }, \ { atLerpStepScale, CAM_DATA_AT_LERP_STEP_SCALE }, \ { yawUpdateRateTarget, CAM_DATA_YAW_UPDATE_RATE_TARGET }, \ - { flags, CAM_DATA_FLAGS } + { interfaceField, CAM_DATA_INTERFACE_FIELD } typedef struct { /* 0x00 */ f32 unk_00; @@ -707,7 +843,7 @@ typedef struct { /* 0x10 */ f32 unk_10; /* 0x14 */ f32 unk_14; /* 0x18 */ f32 unk_18; - /* 0x1C */ s16 unk_1C; + /* 0x1C */ s16 interfaceField; /* 0x1E */ s16 unk_1E; } KeepOn4ReadOnlyData; // size = 0x20 @@ -727,14 +863,23 @@ typedef struct { /* 0x20 */ KeepOn4ReadWriteData rwData; } KeepOn4; // size = 0x38 -#define CAM_FUNCDATA_KEEP4(yOffset, eyeDist, pitchTarget, yawTarget, atOffsetZ, fov, flags, yawUpdateRateTarget, unk_22) \ +#define KEEPON4_FLAG_0 (1 << 0) +#define KEEPON4_FLAG_1 (1 << 1) +#define KEEPON4_FLAG_2 (1 << 2) +#define KEEPON4_FLAG_3 (1 << 3) +#define KEEPON4_FLAG_4 (1 << 4) +#define KEEPON4_FLAG_5 (1 << 5) +#define KEEPON4_FLAG_6 (1 << 6) +#define KEEPON4_FLAG_7 (1 << 7) + +#define CAM_FUNCDATA_KEEP4(yOffset, eyeDist, pitchTarget, yawTarget, atOffsetZ, fov, interfaceField, yawUpdateRateTarget, unk_22) \ { yOffset, CAM_DATA_Y_OFFSET }, \ { eyeDist, CAM_DATA_EYE_DIST }, \ { pitchTarget, CAM_DATA_PITCH_TARGET }, \ { yawTarget, CAM_DATA_YAW_TARGET }, \ { atOffsetZ, CAM_DATA_AT_OFFSET_Z }, \ { fov, CAM_DATA_FOV }, \ - { flags, CAM_DATA_FLAGS }, \ + { interfaceField, CAM_DATA_INTERFACE_FIELD }, \ { yawUpdateRateTarget, CAM_DATA_YAW_UPDATE_RATE_TARGET }, \ { unk_22, CAM_DATA_UNK_22 } @@ -742,7 +887,7 @@ typedef struct { /* 0x00 */ f32 fovScale; /* 0x04 */ f32 yawScale; /* 0x08 */ s16 timerInit; - /* 0x0A */ s16 interfaceFlags; + /* 0x0A */ s16 interfaceField; } KeepOn0ReadOnlyData; // size = 0x0C typedef struct { @@ -755,17 +900,17 @@ typedef struct { /* 0x0C */ KeepOn0ReadWriteData rwData; } KeepOn0; // size = 0x14 -#define CAM_FUNCDATA_KEEP0(fovScale, yawScale, yawUpdateRateTarget, flags) \ +#define CAM_FUNCDATA_KEEP0(fovScale, yawScale, yawUpdateRateTarget, interfaceField) \ { fovScale, CAM_DATA_FOV_SCALE }, \ { yawScale, CAM_DATA_YAW_SCALE }, \ { yawUpdateRateTarget, CAM_DATA_YAW_UPDATE_RATE_TARGET }, \ - { flags, CAM_DATA_FLAGS } + { interfaceField, CAM_DATA_INTERFACE_FIELD } typedef struct { /* 0x00 */ f32 unk_00; // seems to be unused? /* 0x04 */ f32 lerpStep; /* 0x08 */ f32 fov; - /* 0x0C */ s16 interfaceFlags; + /* 0x0C */ s16 interfaceField; } Fixed1ReadOnlyData; // size = 0x10 typedef struct { @@ -778,18 +923,18 @@ typedef struct { /* 0x10 */ Fixed1ReadWriteData rwData; } Fixed1; // size = 0x28 -#define CAM_FUNCDATA_FIXD1(yOffset, yawUpdateRateTarget, fov, flags) \ +#define CAM_FUNCDATA_FIXD1(yOffset, yawUpdateRateTarget, fov, interfaceField) \ { yOffset, CAM_DATA_Y_OFFSET }, \ { yawUpdateRateTarget, CAM_DATA_YAW_UPDATE_RATE_TARGET }, \ { fov, CAM_DATA_FOV }, \ - { flags, CAM_DATA_FLAGS } + { interfaceField, CAM_DATA_INTERFACE_FIELD } typedef struct { /* 0x00 */ f32 yOffset; /* 0x04 */ f32 eyeStepScale; /* 0x08 */ f32 posStepScale; /* 0x0C */ f32 fov; - /* 0x10 */ s16 interfaceFlags; + /* 0x10 */ s16 interfaceField; } Fixed2ReadOnlyData; // size = 0x14 typedef struct { @@ -802,15 +947,18 @@ typedef struct { /* 0x14 */ Fixed2ReadWriteData rwData; } Fixed2; // size = 0x24 -#define CAM_FUNCDATA_FIXD2(yOffset, yawUpdateRateTarget, xzUpdateRateTarget, fov, flags) \ + +#define FIXED2_FLAG_0 (1 << 0) + +#define CAM_FUNCDATA_FIXD2(yOffset, yawUpdateRateTarget, xzUpdateRateTarget, fov, interfaceField) \ { yOffset, CAM_DATA_Y_OFFSET }, \ { yawUpdateRateTarget, CAM_DATA_YAW_UPDATE_RATE_TARGET }, \ { xzUpdateRateTarget, CAM_DATA_XZ_UPDATE_RATE_TARGET }, \ { fov, CAM_DATA_FOV }, \ - { flags, CAM_DATA_FLAGS } + { interfaceField, CAM_DATA_INTERFACE_FIELD } typedef struct { - /* 0x0 */ s16 interfaceFlags; + /* 0x0 */ s16 interfaceField; } Fixed3ReadOnlyData; // size = 0x4 typedef struct { @@ -830,7 +978,7 @@ typedef struct { /* 0x04 */ f32 speedToEyePos; /* 0x08 */ f32 followSpeed; /* 0x0C */ f32 fov; - /* 0x10 */ s16 interfaceFlags; + /* 0x10 */ s16 interfaceField; } Fixed4ReadOnlyData; // size = 0x14 typedef struct { @@ -843,12 +991,14 @@ typedef struct { /* 0x14 */ Fixed4ReadWriteData rwData; } Fixed4; // size = 0x24 -#define CAM_FUNCDATA_FIXD4(yOffset, yawUpdateRateTarget, xzUpdateRateTarget, fov, flags) \ +#define FIXED4_FLAG_2 (1 << 2) + +#define CAM_FUNCDATA_FIXD4(yOffset, yawUpdateRateTarget, xzUpdateRateTarget, fov, interfaceField) \ { yOffset, CAM_DATA_Y_OFFSET }, \ { yawUpdateRateTarget, CAM_DATA_YAW_UPDATE_RATE_TARGET }, \ { xzUpdateRateTarget, CAM_DATA_XZ_UPDATE_RATE_TARGET }, \ { fov, CAM_DATA_FOV }, \ - { flags, CAM_DATA_FLAGS } + { interfaceField, CAM_DATA_INTERFACE_FIELD } typedef struct { /* 0x00 */ f32 eyeNextYOffset; @@ -857,7 +1007,7 @@ typedef struct { /* 0x0C */ f32 unk_0C; // unused /* 0x10 */ Vec3f atOffset; /* 0x1C */ f32 fovTarget; - /* 0x20 */ s16 interfaceFlags; + /* 0x20 */ s16 interfaceField; } Subj3ReadOnlyData; // size = 0x24 typedef struct { @@ -872,7 +1022,7 @@ typedef struct { /* 0x24 */ Subj3ReadWriteData rwData; } Subj3; // size = 0x30 -#define CAM_FUNCDATA_SUBJ3(yOffset, eyeDist, eyeDistNext, yawUpdateRateTarget, atOffsetX, atOffsetY, atOffsetZ, fov, flags) \ +#define CAM_FUNCDATA_SUBJ3(yOffset, eyeDist, eyeDistNext, yawUpdateRateTarget, atOffsetX, atOffsetY, atOffsetZ, fov, interfaceField) \ { yOffset, CAM_DATA_Y_OFFSET }, \ { eyeDist, CAM_DATA_EYE_DIST }, \ { eyeDistNext, CAM_DATA_EYE_DIST_NEXT }, \ @@ -881,10 +1031,10 @@ typedef struct { { atOffsetY, CAM_DATA_AT_OFFSET_Y }, \ { atOffsetZ, CAM_DATA_AT_OFFSET_Z }, \ { fov, CAM_DATA_FOV }, \ - { flags, CAM_DATA_FLAGS } + { interfaceField, CAM_DATA_INTERFACE_FIELD } typedef struct { - /* 0x0 */ s16 interfaceFlags; + /* 0x0 */ s16 interfaceField; } Subj4ReadOnlyData; // size = 0x4 typedef struct { @@ -903,18 +1053,18 @@ typedef struct { /* 0x04 */ Subj4ReadWriteData rwData; } Subj4; // size = 0x38 -#define CAM_FUNCDATA_SUBJ4(yOffset, eyeDist, eyeDistNext, yawUpdateRateTarget, fov, flags) \ +#define CAM_FUNCDATA_SUBJ4(yOffset, eyeDist, eyeDistNext, yawUpdateRateTarget, fov, interfaceField) \ { yOffset, CAM_DATA_Y_OFFSET }, \ { eyeDist, CAM_DATA_EYE_DIST }, \ { eyeDistNext, CAM_DATA_EYE_DIST_NEXT }, \ { yawUpdateRateTarget, CAM_DATA_YAW_UPDATE_RATE_TARGET }, \ { fov, CAM_DATA_FOV }, \ - { flags, CAM_DATA_FLAGS } + { interfaceField, CAM_DATA_INTERFACE_FIELD } typedef struct { /* 0x0 */ f32 yOffset; /* 0x4 */ f32 fov; - /* 0x8 */ s16 interfaceFlags; + /* 0x8 */ s16 interfaceField; } Data4ReadOnlyData; // size = 0xC typedef struct { @@ -929,10 +1079,10 @@ typedef struct { /* 0x0C */ Data4ReadWriteData rwData; } Data4; // size = 0x2C -#define CAM_FUNCDATA_DATA4(yOffset, fov, flags) \ +#define CAM_FUNCDATA_DATA4(yOffset, fov, interfaceField) \ { yOffset, CAM_DATA_Y_OFFSET }, \ { fov, CAM_DATA_FOV }, \ - { flags, CAM_DATA_FLAGS } + { interfaceField, CAM_DATA_INTERFACE_FIELD } typedef struct { /* 0x00 */ f32 yOffset; @@ -942,7 +1092,7 @@ typedef struct { /* 0x10 */ f32 fovTarget; /* 0x14 */ f32 atLERPScaleMax; /* 0x18 */ s16 pitchTarget; - /* 0x1A */ s16 interfaceFlags; + /* 0x1A */ s16 interfaceField; } Unique1ReadOnlyData; // size = 0x1C typedef struct { @@ -957,20 +1107,20 @@ typedef struct { /* 0x1C */ Unique1ReadWriteData rwData; } Unique1; // size = 0x28 -#define CAM_FUNCDATA_UNIQ1(yOffset, eyeDist, eyeDistNext, pitchTarget, fov, atLerpStepScale, flags) \ +#define CAM_FUNCDATA_UNIQ1(yOffset, eyeDist, eyeDistNext, pitchTarget, fov, atLerpStepScale, interfaceField) \ { yOffset, CAM_DATA_Y_OFFSET }, \ { eyeDist, CAM_DATA_EYE_DIST }, \ { eyeDistNext, CAM_DATA_EYE_DIST_NEXT }, \ { pitchTarget, CAM_DATA_PITCH_TARGET }, \ { fov, CAM_DATA_FOV }, \ { atLerpStepScale, CAM_DATA_AT_LERP_STEP_SCALE }, \ - { flags, CAM_DATA_FLAGS } + { interfaceField, CAM_DATA_INTERFACE_FIELD } typedef struct { /* 0x00 */ f32 yOffset; /* 0x04 */ f32 distTarget; /* 0x08 */ f32 fovTarget; - /* 0x0C */ s16 interfaceFlags; + /* 0x0C */ s16 interfaceField; } Unique2ReadOnlyData; // size = 0x10 typedef struct { @@ -983,11 +1133,15 @@ typedef struct { /* 0x10 */ Unique2ReadWriteData rwData; } Unique2; // size = 0x18 -#define CAM_FUNCDATA_UNIQ2(yOffset, eyeDist, fov, flags) \ +#define UNIQUE2_FLAG_0 (1 << 0) +#define UNIQUE2_FLAG_1 (1 << 1) +#define UNIQUE2_FLAG_4 (1 << 4) + +#define CAM_FUNCDATA_UNIQ2(yOffset, eyeDist, fov, interfaceField) \ { yOffset, CAM_DATA_Y_OFFSET }, \ { eyeDist, CAM_DATA_EYE_DIST }, \ { fov, CAM_DATA_FOV }, \ - { flags, CAM_DATA_FLAGS } + { interfaceField, CAM_DATA_INTERFACE_FIELD } typedef struct { /* 0x0 */ struct Actor* doorActor; @@ -1000,7 +1154,7 @@ typedef struct { typedef struct { /* 0x0 */ f32 yOffset; /* 0x4 */ f32 fov; - /* 0x8 */ s16 interfaceFlags; + /* 0x8 */ s16 interfaceField; } Unique3ReadOnlyData; // size = 0xC typedef struct { @@ -1013,13 +1167,16 @@ typedef struct { /* 0x0C */ Unique3ReadWriteData rwData; } Unique3; // size = 0x14 -#define CAM_FUNCDATA_UNIQ3(yOffset, fov, flags) \ +#define UNIQUE3_FLAG_1 (1 << 1) +#define UNIQUE3_FLAG_2 (1 << 2) + +#define CAM_FUNCDATA_UNIQ3(yOffset, fov, interfaceField) \ { yOffset, CAM_DATA_Y_OFFSET }, \ { fov, CAM_DATA_FOV }, \ - { flags, CAM_DATA_FLAGS } + { interfaceField, CAM_DATA_INTERFACE_FIELD } typedef struct { - /* 0x0 */ s16 interfaceFlags; + /* 0x0 */ s16 interfaceField; } Unique0ReadOnlyData; // size = 0x4 typedef struct { @@ -1033,17 +1190,21 @@ typedef struct { /* 0x04 */ Unique0ReadWriteData rwData; } Unique0; // size = 0x2C +#define UNIQUE0_FLAG_0 (1 << 0) + typedef struct { - /* 0x0 */ s16 interfaceFlags; + /* 0x0 */ s16 interfaceField; } Unique6ReadOnlyData; // size = 0x4 typedef struct { /* 0x0 */ Unique6ReadOnlyData roData; } Unique6; // size = 0x4 +#define UNIQUE6_FLAG_0 (1 << 0) + typedef struct { /* 0x0 */ f32 fov; - /* 0x4 */ s16 interfaceFlags; + /* 0x4 */ s16 interfaceField; /* 0x6 */ s16 align; } Unique7ReadOnlyData; // size = 0x8 @@ -1056,9 +1217,9 @@ typedef struct { /* 0x08 */ Unique7ReadWriteData rwData; } Unique7; // size = 0x10 -#define CAM_FUNCDATA_UNIQ7(fov, flags) \ +#define CAM_FUNCDATA_UNIQ7(fov, interfaceField) \ { fov, CAM_DATA_FOV }, \ - { flags, CAM_DATA_FLAGS } + { interfaceField, CAM_DATA_INTERFACE_FIELD } /** initFlags * & 0x00FF = atInitFlags @@ -1091,7 +1252,7 @@ typedef struct { } OnePointCsInfo; // size = 0x8 typedef struct { - /* 0x0 */ s16 interfaceFlags; + /* 0x0 */ s16 interfaceField; } Unique9ReadOnlyData; // size = 0x40 typedef struct { @@ -1115,7 +1276,7 @@ typedef struct { } Unique9; // size = 0x4C typedef struct { - /* 0x0 */ s16 interfaceFlags; + /* 0x0 */ s16 interfaceField; } Demo1ReadOnlyData; // size = 0x4 typedef struct { @@ -1131,7 +1292,7 @@ typedef struct { typedef struct { /* 0x0 */ f32 fov; /* 0x4 */ f32 unk_04; // unused - /* 0x8 */ s16 interfaceFlags; + /* 0x8 */ s16 interfaceField; } Demo3ReadOnlyData; // size = 0xC typedef struct { @@ -1146,13 +1307,13 @@ typedef struct { /* 0x0C */ Demo3ReadWriteData rwData; } Demo3; // size = 0x20 -#define CAM_FUNCDATA_DEMO3(fov, atLerpStepScale, flags) \ +#define CAM_FUNCDATA_DEMO3(fov, atLerpStepScale, interfaceField) \ { fov, CAM_DATA_FOV }, \ { atLerpStepScale, CAM_DATA_AT_LERP_STEP_SCALE }, \ - { flags, CAM_DATA_FLAGS } + { interfaceField, CAM_DATA_INTERFACE_FIELD } typedef struct { - /* 0x0 */ s16 interfaceFlags; + /* 0x0 */ s16 interfaceField; /* 0x2 */ s16 unk_02; } Demo6ReadOnlyData; // size = 0x4 @@ -1174,7 +1335,7 @@ typedef struct { } OnePointCamData; // size = 0xC typedef struct { - /* 0x0 */ s16 interfaceFlags; + /* 0x0 */ s16 interfaceField; } Demo9ReadOnlyData; // size = 0x4 typedef struct { @@ -1191,18 +1352,21 @@ typedef struct { /* 0x10 */ Demo9ReadWriteData rwData; } Demo9; // size = 0x1C +#define DEMO9_FLAG_1 (1 << 1) +#define DEMO9_FLAG_4 (1 << 4) + typedef struct { /* 0x0 */ f32 lerpAtScale; - /* 0x4 */ s16 interfaceFlags; + /* 0x4 */ s16 interfaceField; } Special0ReadOnlyData; // size = 0x8 typedef struct { /* 0x0 */ Special0ReadOnlyData roData; } Special0; // size = 0x8 -#define CAM_FUNCDATA_SPEC0(yawUpdateRateTarget, flags) \ +#define CAM_FUNCDATA_SPEC0(yawUpdateRateTarget, interfaceField) \ { yawUpdateRateTarget, CAM_DATA_YAW_UPDATE_RATE_TARGET }, \ - { flags, CAM_DATA_FLAGS } + { interfaceField, CAM_DATA_INTERFACE_FIELD } typedef struct { /* 0x0 */ s16 initalTimer; @@ -1220,7 +1384,7 @@ typedef struct { /* 0x10 */ f32 atMaxLERPScale; /* 0x14 */ s16 timerInit; /* 0x16 */ s16 pitch; - /* 0x18 */ s16 interfaceFlags; + /* 0x18 */ s16 interfaceField; /* 0x1A */ s16 unk_1A; } Special5ReadOnlyData; // size = 0x1C @@ -1233,7 +1397,7 @@ typedef struct { /* 0x1C */ Special5ReadWriteData rwData; } Special5; // size = 0x20 -#define CAM_FUNCDATA_SPEC5(yOffset, eyeDist, eyeDistNext, unk_22, pitchTarget, fov, atLerpStepScale, flags) \ +#define CAM_FUNCDATA_SPEC5(yOffset, eyeDist, eyeDistNext, unk_22, pitchTarget, fov, atLerpStepScale, interfaceField) \ { yOffset, CAM_DATA_Y_OFFSET }, \ { eyeDist, CAM_DATA_EYE_DIST }, \ { eyeDistNext, CAM_DATA_EYE_DIST_NEXT }, \ @@ -1241,10 +1405,10 @@ typedef struct { { pitchTarget, CAM_DATA_PITCH_TARGET }, \ { fov, CAM_DATA_FOV }, \ { atLerpStepScale, CAM_DATA_AT_LERP_STEP_SCALE }, \ - { flags, CAM_DATA_FLAGS } + { interfaceField, CAM_DATA_INTERFACE_FIELD } // Uses incorrect CAM_DATA values -#define CAM_FUNCDATA_SPEC5_ALT(yOffset, eyeDist, eyeDistNext, pitchTarget, fov, atLerpStepScale, unk_22, flags) \ +#define CAM_FUNCDATA_SPEC5_ALT(yOffset, eyeDist, eyeDistNext, pitchTarget, fov, atLerpStepScale, unk_22, interfaceField) \ { yOffset, CAM_DATA_Y_OFFSET }, \ { eyeDist, CAM_DATA_EYE_DIST }, \ { eyeDistNext, CAM_DATA_EYE_DIST_NEXT }, \ @@ -1252,7 +1416,7 @@ typedef struct { { fov, CAM_DATA_FOV }, \ { atLerpStepScale, CAM_DATA_AT_LERP_STEP_SCALE }, \ { unk_22, CAM_DATA_UNK_22 }, \ - { flags, CAM_DATA_FLAGS } + { interfaceField, CAM_DATA_INTERFACE_FIELD } typedef struct { /* 0x0 */ s16 index; // See `CamElevatorPlatform` @@ -1263,7 +1427,7 @@ typedef struct { } Special7; // size = 0x4 typedef struct { - /* 0x0 */ s16 interfaceFlags; + /* 0x0 */ s16 interfaceField; } Special6ReadOnlyData; // size = 0x4 typedef struct { @@ -1279,7 +1443,7 @@ typedef struct { typedef struct { /* 0x0 */ f32 yOffset; /* 0x4 */ f32 unk_04; - /* 0x8 */ s16 interfaceFlags; + /* 0x8 */ s16 interfaceField; /* 0xA */ s16 unk_0A; } Special9ReadOnlyData; // size = 0xC @@ -1292,10 +1456,14 @@ typedef struct { /* 0x0C */ Special9ReadWriteData rwData; } Special9; // size = 0x10 -#define CAM_FUNCDATA_SPEC9(yOffset, fov, flags) \ +#define SPECIAL9_FLAG_0 (1 << 0) +#define SPECIAL9_FLAG_1 (1 << 1) +#define SPECIAL9_FLAG_3 (1 << 3) + +#define CAM_FUNCDATA_SPEC9(yOffset, fov, interfaceField) \ { yOffset, CAM_DATA_Y_OFFSET }, \ { fov, CAM_DATA_FOV }, \ - { flags, CAM_DATA_FLAGS } + { interfaceField, CAM_DATA_INTERFACE_FIELD } typedef union { Normal1 norm1; @@ -1394,8 +1562,8 @@ typedef struct Camera { /* 0x144 */ s16 mode; /* 0x146 */ s16 bgId; // bgId the camera is currently interacting with /* 0x148 */ s16 bgCamIndex; - /* 0x14A */ s16 unk_14A; - /* 0x14C */ s16 unk_14C; + /* 0x14A */ s16 behaviorFlags; // includes flags on settings, modes, bgCam. All related to camera update behaviour + /* 0x14C */ s16 stateFlags; /* 0x14E */ s16 childCamId; /* 0x150 */ s16 waterDistortionTimer; /* 0x152 */ s16 distortionFlags; @@ -1403,7 +1571,7 @@ typedef struct Camera { /* 0x156 */ s16 nextBgCamIndex; /* 0x158 */ s16 nextBgId; /* 0x15A */ s16 roll; - /* 0x15C */ s16 paramFlags; + /* 0x15C */ s16 viewFlags; // For setting params: at, eye, up, target, targetPos, fov, roll /* 0x15E */ s16 animState; /* 0x160 */ s16 timer; /* 0x162 */ s16 parentCamId; diff --git a/src/code/z_camera.c b/src/code/z_camera.c index e61bac3bee..37a08200d6 100644 --- a/src/code/z_camera.c +++ b/src/code/z_camera.c @@ -757,45 +757,43 @@ s32 Camera_CopyPREGToModeValues(Camera* camera) { return true; } -#define LETTERBOX_MASK (0xF000) -#define LETTERBOX_SIZE_MASK (0x7000) -#define LETTERBOX_INSTANT (0x8000) -#define IFACE_ALPHA_MASK (0x0F00) +void Camera_UpdateInterface(s16 interfaceField) { + s16 hudVisibilityMode; -void Camera_UpdateInterface(s16 flags) { - s16 interfaceAlpha; - - if ((flags & LETTERBOX_MASK) != LETTERBOX_MASK) { - switch (flags & LETTERBOX_SIZE_MASK) { - case 0x1000: + if ((interfaceField & CAM_LETTERBOX_MASK) != CAM_LETTERBOX_IGNORE) { + switch (interfaceField & CAM_LETTERBOX_SIZE_MASK) { + case CAM_LETTERBOX_SMALL: sCameraLetterboxSize = 26; break; - case 0x2000: + + case CAM_LETTERBOX_MEDIUM: sCameraLetterboxSize = 27; break; - case 0x3000: + + case CAM_LETTERBOX_LARGE: sCameraLetterboxSize = 32; break; + default: sCameraLetterboxSize = 0; break; } - if (flags & LETTERBOX_INSTANT) { + if (interfaceField & CAM_LETTERBOX_INSTANT) { Letterbox_SetSize(sCameraLetterboxSize); } else { Letterbox_SetSizeTarget(sCameraLetterboxSize); } } - if ((flags & IFACE_ALPHA_MASK) != IFACE_ALPHA_MASK) { - interfaceAlpha = (flags & IFACE_ALPHA_MASK) >> 8; - if (interfaceAlpha == 0) { - interfaceAlpha = HUD_VISIBILITY_ALL; + if ((interfaceField & CAM_HUD_VISIBILITY_MASK) != CAM_HUD_VISIBILITY_IGNORE) { + hudVisibilityMode = (interfaceField & CAM_HUD_VISIBILITY_MASK) >> CAM_HUD_VISIBILITY_SHIFT; + if (hudVisibilityMode == (CAM_HUD_VISIBILITY_ALL >> CAM_HUD_VISIBILITY_SHIFT)) { + hudVisibilityMode = HUD_VISIBILITY_ALL; } - if (interfaceAlpha != sCameraInterfaceAlpha) { - sCameraInterfaceAlpha = interfaceAlpha; - Interface_ChangeHudVisibilityMode(sCameraInterfaceAlpha); + if (sCameraHudVisibilityMode != hudVisibilityMode) { + sCameraHudVisibilityMode = hudVisibilityMode; + Interface_ChangeHudVisibilityMode(sCameraHudVisibilityMode); } } } @@ -1469,14 +1467,14 @@ s32 Camera_Normal1(Camera* camera) { roData->unk_14 = GET_NEXT_SCALED_RO_DATA(values); roData->fovTarget = GET_NEXT_RO_DATA(values); roData->atLERPScaleMax = GET_NEXT_SCALED_RO_DATA(values); - roData->interfaceFlags = GET_NEXT_RO_DATA(values); + roData->interfaceField = GET_NEXT_RO_DATA(values); } if (R_RELOAD_CAM_PARAMS) { Camera_CopyPREGToModeValues(camera); } - sCameraInterfaceFlags = roData->interfaceFlags; + sCameraInterfaceField = roData->interfaceField; OLib_Vec3fDiffToVecGeo(&atEyeGeo, at, eye); OLib_Vec3fDiffToVecGeo(&atEyeNextGeo, at, eyeNext); @@ -1560,7 +1558,7 @@ s32 Camera_Normal1(Camera* camera) { camera->fovUpdateRate = Camera_LERPCeilF(CAM_DATA_SCALED(R_CAM_FOV_UPDATE_RATE), camera->yOffsetUpdateRate, camera->speedRatio * 0.05f, rate); - if (roData->interfaceFlags & 1) { + if (roData->interfaceField & NORMAL1_FLAG_0) { t = Camera_GetPitchAdjFromFloorHeightDiffs(camera, atEyeGeo.yaw - 0x7FFF, false); sp9C = ((1.0f / roData->unk_10) * 0.5f) * (1.0f - camera->speedRatio); rwData->slopePitchAdj = @@ -1576,12 +1574,12 @@ s32 Camera_Normal1(Camera* camera) { ? (sp9C = Math_SinS(rwData->swing.unk_14), ((-40.0f * sp9C) + (roData->yOffset * (1.0f - sp9C)))) : roData->yOffset; - if (roData->interfaceFlags & 0x80) { - func_800458D4(camera, &atEyeNextGeo, spA0, &rwData->yOffset, roData->interfaceFlags & 1); - } else if (roData->interfaceFlags & 0x20) { + if (roData->interfaceField & NORMAL1_FLAG_7) { + func_800458D4(camera, &atEyeNextGeo, spA0, &rwData->yOffset, roData->interfaceField & NORMAL1_FLAG_0); + } else if (roData->interfaceField & NORMAL1_FLAG_5) { func_80045B08(camera, &atEyeNextGeo, spA0, rwData->slopePitchAdj); } else { - Camera_CalcAtDefault(camera, &atEyeNextGeo, spA0, roData->interfaceFlags & 1); + Camera_CalcAtDefault(camera, &atEyeNextGeo, spA0, roData->interfaceField & NORMAL1_FLAG_0); } OLib_Vec3fDiffToVecGeo(&eyeAdjustment, at, eyeNext); @@ -1615,7 +1613,7 @@ s32 Camera_Normal1(Camera* camera) { } Camera_AddVecGeoToVec3f(eyeNext, at, &eyeAdjustment); - if ((camera->status == CAM_STAT_ACTIVE) && !(roData->interfaceFlags & 0x10)) { + if ((camera->status == CAM_STAT_ACTIVE) && !(roData->interfaceField & NORMAL1_FLAG_4)) { rwData->swingYawTarget = camera->playerPosRot.rot.y - 0x7FFF; if (rwData->startSwingTimer > 0) { func_80046E20(camera, &eyeAdjustment, roData->distMin, roData->unk_0C, &sp98, &rwData->swing); @@ -1637,7 +1635,7 @@ s32 Camera_Normal1(Camera* camera) { camera->inputDir.y, 1.0f - (0.99f * sp98), 0xA); } - if (roData->interfaceFlags & 4) { + if (roData->interfaceField & NORMAL1_FLAG_2) { camera->inputDir.x = -atEyeGeo.pitch; camera->inputDir.y = atEyeGeo.yaw - 0x7FFF; camera->inputDir.z = 0; @@ -1708,14 +1706,14 @@ s32 Camera_Normal2(Camera* camera) { roData->unk_10 = GET_NEXT_SCALED_RO_DATA(values); roData->unk_14 = GET_NEXT_RO_DATA(values); roData->unk_18 = GET_NEXT_SCALED_RO_DATA(values); - roData->interfaceFlags = GET_NEXT_RO_DATA(values); + roData->interfaceField = GET_NEXT_RO_DATA(values); } if (R_RELOAD_CAM_PARAMS) { Camera_CopyPREGToModeValues(camera); } - sCameraInterfaceFlags = roData->interfaceFlags; + sCameraInterfaceField = roData->interfaceField; switch (camera->animState) { case 0: @@ -1735,7 +1733,7 @@ s32 Camera_Normal2(Camera* camera) { rwData->unk_18 = 0.0f; - if (roData->interfaceFlags & 4) { + if (roData->interfaceField & NORMAL2_FLAG_2) { sp88.pitch = rwData->unk_20; sp88.yaw = rwData->unk_22 + 0x3FFF; sp88.r = 100.0f; @@ -1769,13 +1767,14 @@ s32 Camera_Normal2(Camera* camera) { camera->fovUpdateRate = Camera_LERPCeilF(CAM_DATA_SCALED(R_CAM_FOV_UPDATE_RATE), camera->yOffsetUpdateRate, camera->speedRatio * 0.05f, 0.1f); - if (!(roData->interfaceFlags & 0x80)) { - Camera_CalcAtDefault(camera, &atToEyeNextDir, roData->unk_00, roData->interfaceFlags & 1); + if (!(roData->interfaceField & NORMAL2_FLAG_7)) { + Camera_CalcAtDefault(camera, &atToEyeNextDir, roData->unk_00, roData->interfaceField & NORMAL2_FLAG_0); } else { - func_800458D4(camera, &atToEyeNextDir, roData->unk_00, &rwData->unk_24, roData->interfaceFlags & 1); + func_800458D4(camera, &atToEyeNextDir, roData->unk_00, &rwData->unk_24, + roData->interfaceField & NORMAL2_FLAG_0); } - if (roData->interfaceFlags & 4) { + if (roData->interfaceField & NORMAL2_FLAG_2) { rwData->unk_00.x = playerPosRot->pos.x + rwData->unk_0C.x; rwData->unk_00.z = playerPosRot->pos.z + rwData->unk_0C.z; } @@ -1818,7 +1817,7 @@ s32 Camera_Normal2(Camera* camera) { if (camera->status == CAM_STAT_ACTIVE) { bgChk.pos = *eyeNext; - if (!camera->play->envCtx.skyboxDisabled || roData->interfaceFlags & 0x10) { + if (!camera->play->envCtx.skyboxDisabled || roData->interfaceField & NORMAL2_FLAG_4) { Camera_BGCheckInfo(camera, at, &bgChk); *eye = bgChk.pos; } else { @@ -1870,7 +1869,7 @@ s32 Camera_Normal3(Camera* camera) { roData->unk_10 = GET_NEXT_RO_DATA(values); roData->fovTarget = GET_NEXT_RO_DATA(values); roData->maxAtLERPScale = GET_NEXT_SCALED_RO_DATA(values); - roData->interfaceFlags = GET_NEXT_RO_DATA(values); + roData->interfaceField = GET_NEXT_RO_DATA(values); } if (R_RELOAD_CAM_PARAMS) { @@ -1881,7 +1880,7 @@ s32 Camera_Normal3(Camera* camera) { OLib_Vec3fDiffToVecGeo(&sp74, at, eyeNext); sUpdateCameraDirection = true; - sCameraInterfaceFlags = roData->interfaceFlags; + sCameraInterfaceField = roData->interfaceField; switch (camera->animState) { case 0: case 10: @@ -2029,7 +2028,7 @@ s32 Camera_Parallel1(Camera* camera) { roData->unk_0C = GET_NEXT_RO_DATA(values); roData->fovTarget = GET_NEXT_RO_DATA(values); roData->unk_14 = GET_NEXT_SCALED_RO_DATA(values); - roData->interfaceFlags = GET_NEXT_RO_DATA(values); + roData->interfaceField = GET_NEXT_RO_DATA(values); roData->unk_18 = GET_NEXT_SCALED_RO_DATA(values) * playerHeight * yNormal; roData->unk_1C = GET_NEXT_SCALED_RO_DATA(values); } @@ -2048,7 +2047,7 @@ s32 Camera_Parallel1(Camera* camera) { case 25: rwData->unk_16 = 0; rwData->unk_10 = 0; - if (roData->interfaceFlags & 4) { + if (roData->interfaceField & PARALLEL1_FLAG_2) { rwData->animTimer = 20; } else { rwData->animTimer = R_CAM_DEFAULT_ANIM_TIME; @@ -2060,10 +2059,10 @@ s32 Camera_Parallel1(Camera* camera) { } if (rwData->animTimer != 0) { - if (roData->interfaceFlags & 2) { + if (roData->interfaceField & PARALLEL1_FLAG_1) { // Rotate roData->yawTarget degrees from behind the player. rwData->yawTarget = (s16)(playerPosRot->rot.y - 0x7FFF) + roData->yawTarget; - } else if (roData->interfaceFlags & 4) { + } else if (roData->interfaceField & PARALLEL1_FLAG_2) { // rotate to roData->yawTarget rwData->yawTarget = roData->yawTarget; } else { @@ -2071,10 +2070,10 @@ s32 Camera_Parallel1(Camera* camera) { rwData->yawTarget = atToEyeNextDir.yaw; } } else { - if (roData->interfaceFlags & 0x20) { + if (roData->interfaceField & PARALLEL1_FLAG_5) { rwData->yawTarget = (s16)(playerPosRot->rot.y - 0x7FFF) + roData->yawTarget; } - sCameraInterfaceFlags = roData->interfaceFlags; + sCameraInterfaceField = roData->interfaceField; } rwData->pitchTarget = roData->pitchTarget; @@ -2099,7 +2098,7 @@ s32 Camera_Parallel1(Camera* camera) { camera->fovUpdateRate = Camera_LERPCeilF(CAM_DATA_SCALED(R_CAM_FOV_UPDATE_RATE), camera->fovUpdateRate, camera->speedRatio * 0.05f, 0.1f); - if (roData->interfaceFlags & 1) { + if (roData->interfaceField & PARALLEL1_FLAG_0) { tangle = Camera_GetPitchAdjFromFloorHeightDiffs(camera, atToEyeDir.yaw - 0x7FFF, true); spB8 = ((1.0f / roData->unk_0C) * 0.3f); @@ -2117,15 +2116,16 @@ s32 Camera_Parallel1(Camera* camera) { sp6A = 1; } - if (!(roData->interfaceFlags & 0x80) && !sp6A) { + if (!(roData->interfaceField & PARALLEL1_FLAG_7) && !sp6A) { Camera_CalcAtForParallel(camera, &atToEyeNextDir, roData->yOffset, &rwData->yTarget, - roData->interfaceFlags & 1); + roData->interfaceField & PARALLEL1_FLAG_0); } else { - func_800458D4(camera, &atToEyeNextDir, roData->unk_18, &rwData->yTarget, roData->interfaceFlags & 1); + func_800458D4(camera, &atToEyeNextDir, roData->unk_18, &rwData->yTarget, + roData->interfaceField & PARALLEL1_FLAG_0); } if (rwData->animTimer != 0) { - camera->unk_14C |= 0x20; + camera->stateFlags |= CAM_STATE_5; tangle = (((rwData->animTimer + 1) * rwData->animTimer) >> 1); spA8.yaw = atToEyeDir.yaw + (((s16)(rwData->yawTarget - atToEyeDir.yaw) / tangle) * rwData->animTimer); spA8.pitch = atToEyeDir.pitch; @@ -2137,13 +2137,13 @@ s32 Camera_Parallel1(Camera* camera) { OLib_Vec3fDiffToVecGeo(&spA8, at, eyeNext); spA8.r = camera->dist; - if (roData->interfaceFlags & 0x40) { + if (roData->interfaceField & PARALLEL1_FLAG_6) { spA8.yaw = Camera_LERPCeilS(rwData->yawTarget, atToEyeNextDir.yaw, 0.6f, 0xA); } else { spA8.yaw = Camera_LERPCeilS(rwData->yawTarget, atToEyeNextDir.yaw, 0.8f, 0xA); } - if (roData->interfaceFlags & 1) { + if (roData->interfaceField & PARALLEL1_FLAG_0) { phi_a0 = rwData->pitchTarget - rwData->unk_10; } else { phi_a0 = rwData->pitchTarget; @@ -2162,7 +2162,7 @@ s32 Camera_Parallel1(Camera* camera) { Camera_AddVecGeoToVec3f(eyeNext, at, &spA8); if (camera->status == CAM_STAT_ACTIVE) { sp6C.pos = *eyeNext; - if (!camera->play->envCtx.skyboxDisabled || roData->interfaceFlags & 0x10) { + if (!camera->play->envCtx.skyboxDisabled || roData->interfaceField & PARALLEL1_FLAG_4) { Camera_BGCheckInfo(camera, at, &sp6C); *eye = sp6C.pos; } else { @@ -2186,15 +2186,15 @@ s32 Camera_Parallel2(Camera* camera) { s32 Camera_Parallel3(Camera* camera) { CameraModeValue* values = sCameraSettings[camera->setting].cameraModes[camera->mode].values; - s16 val = GET_NEXT_RO_DATA(values); + s16 interfaceField = GET_NEXT_RO_DATA(values); - sCameraInterfaceFlags = val; + sCameraInterfaceField = interfaceField; - if (val & 1) { - camera->unk_14C |= 0x400; + if (interfaceField & PARALLEL3_FLAG_0) { + camera->stateFlags |= CAM_STATE_10; } - if (val & 2) { - camera->unk_14C |= 0x10; + if (interfaceField & PARALLEL3_FLAG_1) { + camera->stateFlags |= CAM_STATE_4; } //! @bug doesn't return } @@ -2242,7 +2242,7 @@ s32 Camera_Jump1(Camera* camera) { roData->maxYawUpdate = CAM_DATA_SCALED(GET_NEXT_RO_DATA(values)); roData->unk_14 = GET_NEXT_RO_DATA(values); roData->atLERPScaleMax = CAM_DATA_SCALED(GET_NEXT_RO_DATA(values)); - roData->interfaceFlags = GET_NEXT_RO_DATA(values); + roData->interfaceField = GET_NEXT_RO_DATA(values); } if (R_RELOAD_CAM_PARAMS) { @@ -2255,7 +2255,7 @@ s32 Camera_Jump1(Camera* camera) { OLib_Vec3fDiffToVecGeo(&eyeAtOffset, at, eye); OLib_Vec3fDiffToVecGeo(&eyeNextAtOffset, at, eyeNext); - sCameraInterfaceFlags = roData->interfaceFlags; + sCameraInterfaceField = roData->interfaceField; if (RELOAD_PARAMS(camera)) { rwData->swing.unk_16 = rwData->swing.unk_18 = 0; @@ -2331,9 +2331,9 @@ s32 Camera_Jump1(Camera* camera) { eyeNext->x = newEye.x; eyeNext->z = newEye.z; eyeNext->y += (newEye.y - eyeNext->y) * CAM_DATA_SCALED(R_CAM_JUMP1_EYE_Y_STEP_SCALE); - if ((camera->status == CAM_STAT_ACTIVE) && !(roData->interfaceFlags & 0x10)) { + if ((camera->status == CAM_STAT_ACTIVE) && !(roData->interfaceField & JUMP1_FLAG_4)) { func_80046E20(camera, &eyeDiffGeo, roData->distMin, roData->yawUpateRateTarget, &spA4, &rwData->swing); - if (roData->interfaceFlags & 4) { + if (roData->interfaceField & JUMP1_FLAG_2) { camera->inputDir.x = -eyeAtOffset.pitch; camera->inputDir.y = eyeAtOffset.yaw - 0x7FFF; camera->inputDir.z = 0; @@ -2403,7 +2403,7 @@ s32 Camera_Jump2(Camera* camera) { roData->xzUpdRateTarget = GET_NEXT_SCALED_RO_DATA(values); roData->fovTarget = GET_NEXT_RO_DATA(values); roData->atLERPStepScale = GET_NEXT_SCALED_RO_DATA(values); - roData->interfaceFlags = GET_NEXT_RO_DATA(values); + roData->interfaceField = GET_NEXT_RO_DATA(values); } if (R_RELOAD_CAM_PARAMS) { @@ -2413,7 +2413,7 @@ s32 Camera_Jump2(Camera* camera) { OLib_Vec3fDiffToVecGeo(&atToEyeDir, at, eye); OLib_Vec3fDiffToVecGeo(&atToEyeNextDir, at, eyeNext); - sCameraInterfaceFlags = roData->interfaceFlags; + sCameraInterfaceField = roData->interfaceField; if (RELOAD_PARAMS(camera)) { bgChkPos = playerPosRot->pos; @@ -2433,7 +2433,7 @@ s32 Camera_Jump2(Camera* camera) { yawDiff = (s16)(playerPosRot->rot.y - 0x7FFF) - atToEyeNextDir.yaw; rwData->initYawDiff = ((yawDiff / R_CAM_DEFAULT_ANIM_TIME) / 4) * 3; - if (roData->interfaceFlags & 2) { + if (roData->interfaceField & JUMP2_FLAG_1) { rwData->yawAdj = 0xA; } else { rwData->yawAdj = 0x2710; @@ -2611,7 +2611,7 @@ s32 Camera_Jump3(Camera* camera) { roData->unk_14 = GET_NEXT_SCALED_RO_DATA(values); roData->fovTarget = GET_NEXT_RO_DATA(values); roData->unk_1C = GET_NEXT_SCALED_RO_DATA(values); - roData->interfaceFlags = GET_NEXT_RO_DATA(values); + roData->interfaceField = GET_NEXT_RO_DATA(values); } if (R_RELOAD_CAM_PARAMS) { @@ -2621,7 +2621,7 @@ s32 Camera_Jump3(Camera* camera) { camera->mode = prevMode; } - sCameraInterfaceFlags = roData->interfaceFlags; + sCameraInterfaceField = roData->interfaceField; switch (camera->animState) { case 0: @@ -2669,7 +2669,7 @@ s32 Camera_Jump3(Camera* camera) { camera->fovUpdateRate = Camera_LERPCeilF(CAM_DATA_SCALED(R_CAM_FOV_UPDATE_RATE), camera->yOffsetUpdateRate, camera->speedRatio * 0.05f, 0.1f); - Camera_CalcAtDefault(camera, &eyeNextAtOffset, roData->yOffset, roData->interfaceFlags); + Camera_CalcAtDefault(camera, &eyeNextAtOffset, roData->yOffset, roData->interfaceField); OLib_Vec3fDiffToVecGeo(&eyeDiffGeo, at, eyeNext); camera->dist = eyeDiffGeo.r = @@ -2710,9 +2710,9 @@ s32 Camera_Jump3(Camera* camera) { } Camera_AddVecGeoToVec3f(eyeNext, at, &eyeDiffGeo); - if ((camera->status == CAM_STAT_ACTIVE) && !(roData->interfaceFlags & 0x10)) { + if ((camera->status == CAM_STAT_ACTIVE) && !(roData->interfaceField & JUMP3_FLAG_4)) { func_80046E20(camera, &eyeDiffGeo, roData->distMin, roData->swingUpdateRate, &spBC, &rwData->swing); - if (roData->interfaceFlags & 4) { + if (roData->interfaceField & JUMP3_FLAG_2) { camera->inputDir.x = -eyeAtOffset.pitch; camera->inputDir.y = eyeAtOffset.yaw - 0x7FFF; camera->inputDir.z = 0; @@ -2804,7 +2804,7 @@ s32 Camera_Battle1(Camera* camera) { roData->swingPitchAdj = GET_NEXT_SCALED_RO_DATA(values); roData->fov = GET_NEXT_RO_DATA(values); roData->atLERPScaleOnGround = GET_NEXT_SCALED_RO_DATA(values); - roData->flags = GET_NEXT_RO_DATA(values); + roData->interfaceField = GET_NEXT_RO_DATA(values); roData->yOffsetOffGround = GET_NEXT_SCALED_RO_DATA(values) * playerHeight * yNormal; roData->atLERPScaleOffGround = GET_NEXT_SCALED_RO_DATA(values); rwData->chargeTimer = 40; @@ -2868,7 +2868,7 @@ s32 Camera_Battle1(Camera* camera) { return true; } - sCameraInterfaceFlags = roData->flags; + sCameraInterfaceField = roData->interfaceField; if (RELOAD_PARAMS(camera)) { rwData->unk_14 = 0; @@ -2919,7 +2919,7 @@ s32 Camera_Battle1(Camera* camera) { Camera_CalcAtForLockOn(camera, &atToEyeNextDir, &camera->targetPosRot.pos, isOffGround ? roData->yOffsetOffGround : roData->yOffset, distance, &rwData->yPosOffset, - &playerToTargetDir, (isOffGround ? 0x81 : 1) | roData->flags); + &playerToTargetDir, (isOffGround ? 0x81 : 1) | roData->interfaceField); tmpAng2 = playerToTargetDir.yaw; playerHead = playerPosRot->pos; playerHead.y += playerHeight; @@ -2986,9 +2986,9 @@ s32 Camera_Battle1(Camera* camera) { Camera_AddVecGeoToVec3f(eyeNext, at, &spB4); spBC.pos = *eyeNext; if (camera->status == CAM_STAT_ACTIVE) { - if (!camera->play->envCtx.skyboxDisabled || roData->flags & 1) { + if (!camera->play->envCtx.skyboxDisabled || roData->interfaceField & BATTLE1_FLAG_0) { Camera_BGCheckInfo(camera, at, &spBC); - } else if (roData->flags & 2) { + } else if (roData->interfaceField & BATTLE1_FLAG_1) { func_80043F94(camera, at, &spBC); } else { OLib_Vec3fDistNormalize(&sp128, at, &spBC.pos); @@ -3048,7 +3048,7 @@ s32 Camera_Battle4(Camera* camera) { roData->lerpUpdateRate = GET_NEXT_SCALED_RO_DATA(values); roData->fovTarget = GET_NEXT_RO_DATA(values); roData->atLERPTarget = GET_NEXT_SCALED_RO_DATA(values); - roData->interfaceFlags = GET_NEXT_RO_DATA(values); + roData->interfaceField = GET_NEXT_RO_DATA(values); } if (R_RELOAD_CAM_PARAMS) { @@ -3058,7 +3058,7 @@ s32 Camera_Battle4(Camera* camera) { OLib_Vec3fDiffToVecGeo(&eyeAtOffset, at, eye); OLib_Vec3fDiffToVecGeo(&eyeNextAtOffset, at, eyeNext); - sCameraInterfaceFlags = roData->interfaceFlags; + sCameraInterfaceField = roData->interfaceField; switch (camera->animState) { case 0: @@ -3166,7 +3166,7 @@ s32 Camera_KeepOn1(Camera* camera) { roData->unk_1C = GET_NEXT_SCALED_RO_DATA(values); roData->unk_20 = GET_NEXT_RO_DATA(values); roData->unk_24 = GET_NEXT_SCALED_RO_DATA(values); - roData->interfaceFlags = GET_NEXT_RO_DATA(values); + roData->interfaceField = GET_NEXT_RO_DATA(values); roData->unk_28 = GET_NEXT_SCALED_RO_DATA(values) * playerHeight * yNormal; roData->unk_2C = GET_NEXT_SCALED_RO_DATA(values); } @@ -3177,7 +3177,7 @@ s32 Camera_KeepOn1(Camera* camera) { playerHeight += roData->unk_00; OLib_Vec3fDiffToVecGeo(&spC0, at, eye); OLib_Vec3fDiffToVecGeo(&spB8, at, eyeNext); - sCameraInterfaceFlags = roData->interfaceFlags; + sCameraInterfaceField = roData->interfaceField; if (RELOAD_PARAMS(camera)) { camera->animState++; rwData->unk_10 = 0; @@ -3199,10 +3199,11 @@ s32 Camera_KeepOn1(Camera* camera) { sp104 = roData->unk_04; sp84 = 1; - switch (camera->paramFlags & 0x18) { - case 8: + switch (camera->viewFlags & (CAM_VIEW_TARGET | CAM_VIEW_TARGET_POS)) { + case CAM_VIEW_TARGET: if ((camera->player->actor.category == 2) && (camera->player->interactRangeActor == camera->target)) { PosRot sp54; + Actor_GetFocus(&sp54, &camera->player->actor); spC8.r = 60.0f; spC8.yaw = camera->playerPosRot.rot.y; @@ -3225,7 +3226,7 @@ s32 Camera_KeepOn1(Camera* camera) { camera->fovUpdateRate = Camera_LERPCeilF(CAM_DATA_SCALED(R_CAM_FOV_UPDATE_RATE), camera->fovUpdateRate, camera->speedRatio * 0.05f, 0.1f); goto cont; - case 0x10: + case CAM_VIEW_TARGET_POS: rwData->unk_0C = NULL; cont: if (camera->playerGroundY == camera->playerPosRot.pos.y || camera->player->actor.gravity > -0.1f || @@ -3237,7 +3238,7 @@ s32 Camera_KeepOn1(Camera* camera) { } Camera_CalcAtForLockOn(camera, &spB8, &camera->targetPosRot.pos, sp80 ? roData->unk_28 : roData->unk_00, - sp104, &rwData->unk_08, &spC8, (sp80 ? 0x80 : 0) | roData->interfaceFlags); + sp104, &rwData->unk_08, &spC8, (sp80 ? 0x80 : 0) | roData->interfaceField); sp114 = playerPosRot->pos; sp114.y += playerHeight; OLib_Vec3fDiffToVecGeo(&spC8, &sp114, &camera->targetPosRot.pos); @@ -3322,9 +3323,9 @@ s32 Camera_KeepOn1(Camera* camera) { Camera_AddVecGeoToVec3f(eyeNext, at, &spD8); sp8C.pos = *eyeNext; if (camera->status == CAM_STAT_ACTIVE) { - if (!camera->play->envCtx.skyboxDisabled || roData->interfaceFlags & 1) { + if (!camera->play->envCtx.skyboxDisabled || roData->interfaceField & KEEPON1_FLAG_0) { Camera_BGCheckInfo(camera, at, &sp8C); - } else if (roData->interfaceFlags & 2) { + } else if (roData->interfaceField & KEEPON1_FLAG_1) { func_80043F94(camera, at, &sp8C); } else { OLib_Vec3fDistNormalize(&sp120, at, &sp8C.pos); @@ -3389,13 +3390,13 @@ s32 Camera_KeepOn3(Camera* camera) { } if (RELOAD_PARAMS(camera)) { if (camera->play->view.unk_124 == 0) { - camera->unk_14C |= 0x20; + camera->stateFlags |= CAM_STATE_5; camera->play->view.unk_124 = camera->camId | 0x50; return 1; } - camera->unk_14C &= ~0x20; + camera->stateFlags &= ~CAM_STATE_5; } - camera->unk_14C &= ~0x10; + camera->stateFlags &= ~CAM_STATE_4; if (RELOAD_PARAMS(camera) || R_RELOAD_CAM_PARAMS) { CameraModeValue* values = sCameraSettings[camera->setting].cameraModes[camera->mode].values; f32 yNormal = @@ -3412,7 +3413,7 @@ s32 Camera_KeepOn3(Camera* camera) { roData->fovTarget = GET_NEXT_RO_DATA(values); roData->atLERPScaleMax = GET_NEXT_SCALED_RO_DATA(values); roData->initTimer = GET_NEXT_RO_DATA(values); - roData->flags = GET_NEXT_RO_DATA(values); + roData->interfaceField = GET_NEXT_RO_DATA(values); } if (R_RELOAD_CAM_PARAMS) { @@ -3427,7 +3428,7 @@ s32 Camera_KeepOn3(Camera* camera) { playerHeadPos = camPlayerPosRot->pos; playerHeadPos.y += playerHeight; OLib_Vec3fDiffToVecGeo(&targetToPlayerDir, &playerHeadPos, &camera->targetPosRot.pos); - sCameraInterfaceFlags = roData->flags; + sCameraInterfaceField = roData->interfaceField; if (RELOAD_PARAMS(camera)) { colChkActors[0] = camera->target; colChkActors[1] = &camera->player->actor; @@ -3439,13 +3440,13 @@ s32 Camera_KeepOn3(Camera* camera) { swingAngle = F32_LERPIMP(roData->swingPitchInitial, roData->swingPitchFinal, temp_f0); atToEyeAdj.pitch = CAM_DEG_TO_BINANG(swingAngle) + ((s16)(-(targetToPlayerDir.pitch * roData->swingPitchAdj))); swingAngle = F32_LERPIMP(roData->swingYawInital, roData->swingYawFinal, temp_f0); - if (roData->flags & 0x10) { + if (roData->interfaceField & KEEPON3_FLAG_4) { if ((s16)(targetToPlayerDir.yaw - atToEyeNextDir.yaw) < 0) { atToEyeAdj.yaw = targetToPlayerDir.yaw + CAM_DEG_TO_BINANG(swingAngle); } else { atToEyeAdj.yaw = targetToPlayerDir.yaw - CAM_DEG_TO_BINANG(swingAngle); } - } else if (roData->flags & 0x20) { + } else if (roData->interfaceField & KEEPON3_FLAG_5) { if ((s16)(targetToPlayerDir.yaw - atToEyeNextDir.yaw) < 0) { atToEyeAdj.yaw = (s16)(targetToPlayerDir.yaw - 0x7FFF) - CAM_DEG_TO_BINANG(swingAngle); } else { @@ -3477,7 +3478,7 @@ s32 Camera_KeepOn3(Camera* camera) { targetToPlayerDir.r = prevTargetPlayerDist; atToEyeAdj.r = roData->minDist + (targetToPlayerDir.r * (1 - 0.5f)) - atToEyeNextDir.r + atToEyeNextDir.r; Camera_AddVecGeoToVec3f(&lineChkPointB, &rwData->atTarget, &atToEyeAdj); - if (!(roData->flags & 0x80)) { + if (!(roData->interfaceField & KEEPON3_FLAG_7)) { while (i < angleCnt) { if (!CollisionCheck_LineOCCheck(camera->play, &camera->play->colChkCtx, &rwData->atTarget, &lineChkPointB, colChkActors, 2) && @@ -3491,7 +3492,7 @@ s32 Camera_KeepOn3(Camera* camera) { } } osSyncPrintf("camera: talk: BG&collision check %d time(s)\n", i); - camera->unk_14C &= ~0xC; + camera->stateFlags &= ~(CAM_STATE_2 | CAM_STATE_3); pad = ((rwData->animTimer + 1) * rwData->animTimer) >> 1; rwData->eyeToAtTargetYaw = (f32)(s16)(atToEyeAdj.yaw - atToEyeNextDir.yaw) / pad; rwData->eyeToAtTargetPitch = (f32)(s16)(atToEyeAdj.pitch - atToEyeNextDir.pitch) / pad; @@ -3516,11 +3517,11 @@ s32 Camera_KeepOn3(Camera* camera) { Camera_BGCheck(camera, at, eye); rwData->animTimer--; } else { - camera->unk_14C |= 0x410; + camera->stateFlags |= (CAM_STATE_4 | CAM_STATE_10); } - if (camera->unk_14C & 8) { - sCameraInterfaceFlags = 0; + if (camera->stateFlags & CAM_STATE_3) { + sCameraInterfaceField = CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0); func_80043B60(camera); camera->atLERPStepScale = 0.0f; @@ -3532,8 +3533,8 @@ s32 Camera_KeepOn3(Camera* camera) { CHECK_BTN_ALL(D_8015BD7C->state.input[0].press.button, BTN_CRIGHT) || CHECK_BTN_ALL(D_8015BD7C->state.input[0].press.button, BTN_R) || CHECK_BTN_ALL(D_8015BD7C->state.input[0].press.button, BTN_Z)) { - camera->unk_14C |= 4; - camera->unk_14C &= ~8; + camera->stateFlags |= CAM_STATE_2; + camera->stateFlags &= ~CAM_STATE_3; } } return 1; @@ -3569,27 +3570,27 @@ s32 Camera_KeepOn4(Camera* camera) { if (RELOAD_PARAMS(camera)) { if (camera->play->view.unk_124 == 0) { - camera->unk_14C |= 0x20; - camera->unk_14C &= ~(0x4 | 0x2); + camera->stateFlags |= CAM_STATE_5; + camera->stateFlags &= ~(CAM_STATE_1 | CAM_STATE_2); camera->play->view.unk_124 = camera->camId | 0x50; return 1; } rwData->unk_14 = *temp_s0; - camera->unk_14C &= ~0x20; + camera->stateFlags &= ~CAM_STATE_5; } if (rwData->unk_14 != *temp_s0) { osSyncPrintf(VT_COL(YELLOW, BLACK) "camera: item: item type changed %d -> %d\n" VT_RST, rwData->unk_14, *temp_s0); camera->animState = 20; - camera->unk_14C |= 0x20; - camera->unk_14C &= ~(0x4 | 0x2); + camera->stateFlags |= CAM_STATE_5; + camera->stateFlags &= ~(CAM_STATE_1 | CAM_STATE_2); camera->play->view.unk_124 = camera->camId | 0x50; return 1; } playerHeight = Player_GetHeight(camera->player); - camera->unk_14C &= ~0x10; + camera->stateFlags &= ~CAM_STATE_4; if (RELOAD_PARAMS(camera) || R_RELOAD_CAM_PARAMS) { CameraModeValue* values = sCameraSettings[camera->setting].cameraModes[camera->mode].values; f32 yNormal = 1.0f + t - (68.0f / playerHeight * t); @@ -3600,7 +3601,7 @@ s32 Camera_KeepOn4(Camera* camera) { roData->unk_0C = GET_NEXT_RO_DATA(values); roData->unk_10 = GET_NEXT_RO_DATA(values); roData->unk_18 = GET_NEXT_RO_DATA(values); - roData->unk_1C = GET_NEXT_RO_DATA(values); + roData->interfaceField = GET_NEXT_RO_DATA(values); roData->unk_14 = GET_NEXT_SCALED_RO_DATA(values); roData->unk_1E = GET_NEXT_RO_DATA(values); osSyncPrintf("camera: item: type %d\n", *temp_s0); @@ -3610,83 +3611,103 @@ s32 Camera_KeepOn4(Camera* camera) { roData->unk_04 = playerHeight * 2.0f * yNormal; roData->unk_08 = 10.0f; break; + case 2: case 3: roData->unk_08 = -20.0f; roData->unk_18 = 80.0f; break; + case 4: roData->unk_00 = playerHeight * -0.2f * yNormal; roData->unk_08 = 25.0f; break; + case 8: roData->unk_00 = playerHeight * -0.2f * yNormal; roData->unk_04 = playerHeight * 0.8f * yNormal; roData->unk_08 = 50.0f; roData->unk_18 = 70.0f; break; + case 9: roData->unk_00 = playerHeight * 0.1f * yNormal; roData->unk_04 = playerHeight * 0.5f * yNormal; roData->unk_08 = -20.0f; roData->unk_0C = 0.0f; - roData->unk_1C = 0x2540; + roData->interfaceField = + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_A_HEARTS_MAGIC_FORCE, KEEPON4_FLAG_6); break; + case 5: roData->unk_00 = playerHeight * -0.4f * yNormal; roData->unk_08 = -10.0f; roData->unk_0C = 45.0f; - roData->unk_1C = 0x2002; + roData->interfaceField = + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, KEEPON4_FLAG_1); break; + case 10: roData->unk_00 = playerHeight * -0.5f * yNormal; roData->unk_04 = playerHeight * 1.5f * yNormal; roData->unk_08 = -15.0f; roData->unk_0C = 175.0f; roData->unk_18 = 70.0f; - roData->unk_1C = 0x2202; + roData->interfaceField = + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_NOTHING_ALT, KEEPON4_FLAG_1); roData->unk_1E = 0x3C; break; + case 12: roData->unk_00 = playerHeight * -0.6f * yNormal; roData->unk_04 = playerHeight * 1.6f * yNormal; roData->unk_08 = -2.0f; roData->unk_0C = 120.0f; roData->unk_10 = player->stateFlags1 & PLAYER_STATE1_27 ? 0.0f : 20.0f; - roData->unk_1C = 0x3212; + roData->interfaceField = CAM_INTERFACE_FIELD(CAM_LETTERBOX_LARGE, CAM_HUD_VISIBILITY_NOTHING_ALT, + KEEPON4_FLAG_4 | KEEPON4_FLAG_1); roData->unk_1E = 0x1E; roData->unk_18 = 50.0f; break; + case 0x5A: roData->unk_00 = playerHeight * -0.3f * yNormal; roData->unk_18 = 45.0f; - roData->unk_1C = 0x2F02; + roData->interfaceField = + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_IGNORE, KEEPON4_FLAG_1); break; + case 0x5B: roData->unk_00 = playerHeight * -0.1f * yNormal; roData->unk_04 = playerHeight * 1.5f * yNormal; roData->unk_08 = -3.0f; roData->unk_0C = 10.0f; roData->unk_18 = 55.0f; - roData->unk_1C = 0x2F08; + roData->interfaceField = + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_IGNORE, KEEPON4_FLAG_3); break; + case 0x51: roData->unk_00 = playerHeight * -0.3f * yNormal; roData->unk_04 = playerHeight * 1.5f * yNormal; roData->unk_08 = 2.0f; roData->unk_0C = 20.0f; roData->unk_10 = 20.0f; - roData->unk_1C = 0x2280; + roData->interfaceField = + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_NOTHING_ALT, KEEPON4_FLAG_7); roData->unk_1E = 0x1E; roData->unk_18 = 45.0f; break; + case 11: roData->unk_00 = playerHeight * -0.19f * yNormal; roData->unk_04 = playerHeight * 0.7f * yNormal; roData->unk_0C = 130.0f; roData->unk_10 = 10.0f; - roData->unk_1C = 0x2522; + roData->interfaceField = CAM_INTERFACE_FIELD( + CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_A_HEARTS_MAGIC_FORCE, KEEPON4_FLAG_5 | KEEPON4_FLAG_1); break; + default: break; } @@ -3697,7 +3718,7 @@ s32 Camera_KeepOn4(Camera* camera) { } sUpdateCameraDirection = 1; - sCameraInterfaceFlags = roData->unk_1C; + sCameraInterfaceField = roData->interfaceField; OLib_Vec3fDiffToVecGeo(&spB0, at, eye); OLib_Vec3fDiffToVecGeo(&spA8, at, eyeNext); D_8015BD50 = playerPosRot->pos; @@ -3716,18 +3737,18 @@ s32 Camera_KeepOn4(Camera* camera) { spCC[sp9C] = &camera->player->actor; sp9C++; func_80043ABC(camera); - camera->unk_14C &= ~(0x4 | 0x2); + camera->stateFlags &= ~(CAM_STATE_1 | CAM_STATE_2); rwData->unk_10 = roData->unk_1E; rwData->unk_08 = playerPosRot->pos.y - camera->playerPosDelta.y; - if (roData->unk_1C & 2) { + if (roData->interfaceField & KEEPON4_FLAG_1) { spA2 = CAM_DEG_TO_BINANG(roData->unk_08); spA0 = (s16)((s16)(playerPosRot->rot.y - 0x7FFF) - spA8.yaw) > 0 ? (s16)(playerPosRot->rot.y - 0x7FFF) + CAM_DEG_TO_BINANG(roData->unk_0C) : (s16)(playerPosRot->rot.y - 0x7FFF) - CAM_DEG_TO_BINANG(roData->unk_0C); - } else if (roData->unk_1C & 4) { + } else if (roData->interfaceField & KEEPON4_FLAG_2) { spA2 = CAM_DEG_TO_BINANG(roData->unk_08); spA0 = CAM_DEG_TO_BINANG(roData->unk_0C); - } else if ((roData->unk_1C & 8) && camera->target != NULL) { + } else if ((roData->interfaceField & KEEPON4_FLAG_3) && camera->target != NULL) { PosRot sp60; Actor_GetWorldPosShapeRot(&sp60, camera->target); @@ -3737,7 +3758,7 @@ s32 Camera_KeepOn4(Camera* camera) { : (s16)(sp60.rot.y - 0x7FFF) - CAM_DEG_TO_BINANG(roData->unk_0C); spCC[1] = camera->target; sp9C++; - } else if ((roData->unk_1C & 0x80) && camera->target != NULL) { + } else if ((roData->interfaceField & KEEPON4_FLAG_7) && camera->target != NULL) { PosRot sp4C; Actor_GetWorld(&sp4C, camera->target); @@ -3747,7 +3768,7 @@ s32 Camera_KeepOn4(Camera* camera) { : sp9E - CAM_DEG_TO_BINANG(roData->unk_0C); spCC[1] = camera->target; sp9C++; - } else if (roData->unk_1C & 0x40) { + } else if (roData->interfaceField & KEEPON4_FLAG_6) { spA2 = CAM_DEG_TO_BINANG(roData->unk_08); spA0 = spA8.yaw; } else { @@ -3759,7 +3780,7 @@ s32 Camera_KeepOn4(Camera* camera) { spB8.yaw = spA0; spB8.r = roData->unk_04; Camera_AddVecGeoToVec3f(&D_8015BD70, &D_8015BD50, &spB8); - if (!(roData->unk_1C & 1)) { + if (!(roData->interfaceField & KEEPON4_FLAG_0)) { angleCnt = ARRAY_COUNT(D_8011D3B0); for (i = 0; i < angleCnt; i++) { if (!CollisionCheck_LineOCCheck(camera->play, &camera->play->colChkCtx, &D_8015BD50, &D_8015BD70, @@ -3799,23 +3820,23 @@ s32 Camera_KeepOn4(Camera* camera) { camera->dist = Camera_LERPCeilF(roData->unk_04, camera->dist, 0.25f, 2.0f); spB8.r = camera->dist; if (rwData->unk_10 != 0) { - camera->unk_14C |= 0x20; + camera->stateFlags |= CAM_STATE_5; rwData->unk_0C += (s16)rwData->unk_00; rwData->unk_0E += (s16)rwData->unk_04; rwData->unk_10--; - } else if (roData->unk_1C & 0x10) { - camera->unk_14C |= (0x400 | 0x10); - camera->unk_14C |= (0x4 | 0x2); - camera->unk_14C &= ~8; + } else if (roData->interfaceField & KEEPON4_FLAG_4) { + camera->stateFlags |= (CAM_STATE_4 | CAM_STATE_10); + camera->stateFlags |= (CAM_STATE_1 | CAM_STATE_2); + camera->stateFlags &= ~CAM_STATE_3; if (camera->timer > 0) { camera->timer--; } } else { - camera->unk_14C |= (0x400 | 0x10); - if (camera->unk_14C & 8 || roData->unk_1C & 0x80) { - sCameraInterfaceFlags = 0; - camera->unk_14C |= (0x4 | 0x2); - camera->unk_14C &= ~8; + camera->stateFlags |= (CAM_STATE_4 | CAM_STATE_10); + if ((camera->stateFlags & CAM_STATE_3) || (roData->interfaceField & KEEPON4_FLAG_7)) { + sCameraInterfaceField = CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0); + camera->stateFlags |= (CAM_STATE_1 | CAM_STATE_2); + camera->stateFlags &= ~CAM_STATE_3; if (camera->prevBgCamIndex < 0) { Camera_ChangeSettingFlags(camera, camera->prevSetting, 2); } else { @@ -3849,14 +3870,15 @@ s32 Camera_KeepOn0(Camera* camera) { UNUSED Vec3s bgCamRot; s16 fov; - camera->unk_14C &= ~0x10; + camera->stateFlags &= ~CAM_STATE_4; + if (RELOAD_PARAMS(camera) || R_RELOAD_CAM_PARAMS) { CameraModeValue* values = sCameraSettings[camera->setting].cameraModes[camera->mode].values; roData->fovScale = GET_NEXT_SCALED_RO_DATA(values); roData->yawScale = GET_NEXT_SCALED_RO_DATA(values); roData->timerInit = GET_NEXT_RO_DATA(values); - roData->interfaceFlags = GET_NEXT_RO_DATA(values); + roData->interfaceField = GET_NEXT_RO_DATA(values); } if (R_RELOAD_CAM_PARAMS) { @@ -3889,7 +3911,7 @@ s32 Camera_KeepOn0(Camera* camera) { OLib_Vec3fDiffToVecGeo(&eyeAtOffset, eye, at); OLib_Vec3fDiffToVecGeo(&eyeTargetPosOffset, eye, &camera->targetPosRot.pos); - sCameraInterfaceFlags = roData->interfaceFlags; + sCameraInterfaceField = roData->interfaceField; if (camera->animState == 0) { camera->animState++; @@ -3905,7 +3927,7 @@ s32 Camera_KeepOn0(Camera* camera) { Camera_AddVecGeoToVec3f(at, eye, &eyeAtOffset); rwData->animTimer--; } else { - camera->unk_14C |= (0x400 | 0x10); + camera->stateFlags |= (CAM_STATE_4 | CAM_STATE_10); } camera->fov = Camera_LERPCeilF(rwData->fovTarget, camera->fov, 0.5f, 10.0f); return true; @@ -3937,7 +3959,7 @@ s32 Camera_Fixed1(Camera* camera) { roData->unk_00 = GET_NEXT_SCALED_RO_DATA(values) * playerHeight; roData->lerpStep = GET_NEXT_SCALED_RO_DATA(values); roData->fov = GET_NEXT_RO_DATA(values); - roData->interfaceFlags = GET_NEXT_RO_DATA(values); + roData->interfaceField = GET_NEXT_RO_DATA(values); } if (R_RELOAD_CAM_PARAMS) { @@ -3949,7 +3971,7 @@ s32 Camera_Fixed1(Camera* camera) { rwData->fov *= 100; } - sCameraInterfaceFlags = roData->interfaceFlags; + sCameraInterfaceField = roData->interfaceField; if (camera->animState == 0) { camera->animState++; @@ -4009,7 +4031,7 @@ s32 Camera_Fixed2(Camera* camera) { roData->eyeStepScale = GET_NEXT_SCALED_RO_DATA(values); roData->posStepScale = GET_NEXT_SCALED_RO_DATA(values); roData->fov = GET_NEXT_RO_DATA(values); - roData->interfaceFlags = GET_NEXT_RO_DATA(values); + roData->interfaceField = GET_NEXT_RO_DATA(values); rwData->fov = roData->fov * 100.0f; bgCamFuncData = (BgCamFuncData*)Camera_GetBgCamFuncData(camera); @@ -4030,7 +4052,7 @@ s32 Camera_Fixed2(Camera* camera) { Camera_CopyPREGToModeValues(camera); } - sCameraInterfaceFlags = roData->interfaceFlags; + sCameraInterfaceField = roData->interfaceField; posOffsetTarget.x = 0.0f; posOffsetTarget.y = roData->yOffset + playerHeight; @@ -4043,7 +4065,7 @@ s32 Camera_Fixed2(Camera* camera) { if (camera->animState == 0) { camera->animState++; func_80043B60(camera); - if (!(roData->interfaceFlags & 1)) { + if (!(roData->interfaceField & FIXED2_FLAG_0)) { *eye = *eyeNext = rwData->eye; camera->at = atTarget; } @@ -4085,7 +4107,7 @@ s32 Camera_Fixed3(Camera* camera) { if (RELOAD_PARAMS(camera) || R_RELOAD_CAM_PARAMS) { CameraModeValue* values = sCameraSettings[camera->setting].cameraModes[camera->mode].values; - roData->interfaceFlags = GET_NEXT_RO_DATA(values); + roData->interfaceField = GET_NEXT_RO_DATA(values); Camera_Vec3sToVec3f(eyeNext, &bgCamFuncData->pos); *eye = *eyeNext; rwData->rot = bgCamFuncData->rot; @@ -4127,7 +4149,7 @@ s32 Camera_Fixed3(Camera* camera) { atGeo.pitch = -rwData->rot.x; Camera_AddVecGeoToVec3f(at, eye, &atGeo); - sCameraInterfaceFlags = roData->interfaceFlags; + sCameraInterfaceField = roData->interfaceField; rwData->fov = R_CAM_DATA(CAM_DATA_FOV); camera->roll = 0; camera->fov = rwData->fov * 0.01f; @@ -4166,7 +4188,7 @@ s32 Camera_Fixed4(Camera* camera) { roData->speedToEyePos = GET_NEXT_SCALED_RO_DATA(values); roData->followSpeed = GET_NEXT_SCALED_RO_DATA(values); roData->fov = GET_NEXT_RO_DATA(values); - roData->interfaceFlags = GET_NEXT_RO_DATA(values); + roData->interfaceField = GET_NEXT_RO_DATA(values); bgCamFuncData = (BgCamFuncData*)Camera_GetBgCamFuncData(camera); if (bgCamFuncData != NULL) { @@ -4178,10 +4200,10 @@ s32 Camera_Fixed4(Camera* camera) { if (R_RELOAD_CAM_PARAMS) { Camera_CopyPREGToModeValues(camera); } - sCameraInterfaceFlags = roData->interfaceFlags; + sCameraInterfaceField = roData->interfaceField; if (camera->animState == 0) { camera->animState++; - if (!(roData->interfaceFlags & 4)) { + if (!(roData->interfaceField & FIXED4_FLAG_2)) { func_80043B60(camera); } rwData->followSpeed = roData->followSpeed; @@ -4271,7 +4293,7 @@ s32 Camera_Subj3(Camera* camera) { roData->atOffset.y = GET_NEXT_RO_DATA(values) * 0.1f; roData->atOffset.z = GET_NEXT_RO_DATA(values) * 0.1f; roData->fovTarget = GET_NEXT_RO_DATA(values); - roData->interfaceFlags = GET_NEXT_RO_DATA(values); + roData->interfaceField = GET_NEXT_RO_DATA(values); sp84.r = roData->eyeNextDist; sp84.yaw = sp60.rot.y - 0x7FFF; sp84.pitch = sp60.rot.x; @@ -4281,7 +4303,7 @@ s32 Camera_Subj3(Camera* camera) { Camera_AddVecGeoToVec3f(&sp8C, &sp98, &sp84); OLib_Vec3fDiffToVecGeo(&sp7C, at, eye); - sCameraInterfaceFlags = roData->interfaceFlags; + sCameraInterfaceField = roData->interfaceField; if (RELOAD_PARAMS(camera)) { rwData->r = sp7C.r; rwData->yaw = sp7C.yaw; @@ -4394,7 +4416,7 @@ s32 Camera_Subj4(Camera* camera) { if (RELOAD_PARAMS(camera) || R_RELOAD_CAM_PARAMS) { CameraModeValue* values = sCameraSettings[camera->setting].cameraModes[camera->mode].values; - roData->interfaceFlags = GET_NEXT_RO_DATA(values); + roData->interfaceField = GET_NEXT_RO_DATA(values); } if (R_RELOAD_CAM_PARAMS) { @@ -4410,7 +4432,7 @@ s32 Camera_Subj4(Camera* camera) { Actor_GetWorldPosShapeRot(&playerPosRot, &camera->player->actor); OLib_Vec3fDiffToVecGeo(&atEyeOffset, at, eye); - sCameraInterfaceFlags = roData->interfaceFlags; + sCameraInterfaceField = roData->interfaceField; // Crawlspace setup (runs for only 1 frame) if (camera->animState == 0) { @@ -4571,7 +4593,7 @@ s32 Camera_Data4(Camera* camera) { 1.0f + CAM_DATA_SCALED(R_CAM_YOFFSET_NORM) - (CAM_DATA_SCALED(R_CAM_YOFFSET_NORM) * (68.0f / playerHeight)); roData->yOffset = GET_NEXT_SCALED_RO_DATA(values) * playerHeight * yNormal; roData->fov = GET_NEXT_RO_DATA(values); - roData->interfaceFlags = GET_NEXT_RO_DATA(values); + roData->interfaceField = GET_NEXT_RO_DATA(values); bgCamFuncData = (BgCamFuncData*)Camera_GetBgCamFuncData(camera); Camera_Vec3sToVec3f(&rwData->eyePosRot.pos, &bgCamFuncData->pos); @@ -4590,7 +4612,7 @@ s32 Camera_Data4(Camera* camera) { Camera_CopyPREGToModeValues(camera); } - sCameraInterfaceFlags = roData->interfaceFlags; + sCameraInterfaceField = roData->interfaceField; if (camera->animState == 0) { camera->animState++; @@ -4652,7 +4674,7 @@ s32 Camera_Unique1(Camera* camera) { roData->pitchTarget = CAM_DEG_TO_BINANG(GET_NEXT_RO_DATA(values)); roData->fovTarget = GET_NEXT_RO_DATA(values); roData->atLERPScaleMax = GET_NEXT_SCALED_RO_DATA(values); - roData->interfaceFlags = GET_NEXT_RO_DATA(values); + roData->interfaceField = GET_NEXT_RO_DATA(values); } if (R_RELOAD_CAM_PARAMS != 0) { @@ -4664,7 +4686,7 @@ s32 Camera_Unique1(Camera* camera) { OLib_Vec3fDiffToVecGeo(&eyeAtOffset, at, eye); OLib_Vec3fDiffToVecGeo(&eyeNextAtOffset, at, eyeNext); - sCameraInterfaceFlags = roData->interfaceFlags; + sCameraInterfaceField = roData->interfaceField; if (camera->animState == 0) { camera->posOffset.y = camera->posOffset.y - camera->playerPosDelta.y; @@ -4747,41 +4769,41 @@ s32 Camera_Unique2(Camera* camera) { roData->yOffset = GET_NEXT_SCALED_RO_DATA(values) * playerHeight * yNormal; roData->distTarget = GET_NEXT_RO_DATA(values); roData->fovTarget = GET_NEXT_RO_DATA(values); - roData->interfaceFlags = GET_NEXT_RO_DATA(values); + roData->interfaceField = GET_NEXT_RO_DATA(values); } if (R_RELOAD_CAM_PARAMS) { Camera_CopyPREGToModeValues(camera); } - sCameraInterfaceFlags = roData->interfaceFlags; + sCameraInterfaceField = roData->interfaceField; - if ((camera->animState == 0) || (rwData->unk_04 != roData->interfaceFlags)) { - rwData->unk_04 = roData->interfaceFlags; + if ((camera->animState == 0) || (rwData->unk_04 != roData->interfaceField)) { + rwData->unk_04 = roData->interfaceField; } if (camera->animState == 0) { camera->animState = 1; func_80043B60(camera); rwData->unk_00 = 200.0f; - if (roData->interfaceFlags & 0x10) { - camera->unk_14C &= ~4; + if (roData->interfaceField & UNIQUE2_FLAG_4) { + camera->stateFlags &= ~CAM_STATE_2; } } playerPos = camera->playerPosRot.pos; - lerpRateFactor = (roData->interfaceFlags & 1 ? 1.0f : camera->speedRatio); + lerpRateFactor = (roData->interfaceField & UNIQUE2_FLAG_0 ? 1.0f : camera->speedRatio); at->x = F32_LERPIMP(at->x, playerPos.x, lerpRateFactor * 0.6f); at->y = F32_LERPIMP(at->y, playerPos.y + playerHeight + roData->yOffset, 0.4f); at->z = F32_LERPIMP(at->z, playerPos.z, lerpRateFactor * 0.6f); rwData->unk_00 = F32_LERPIMP(rwData->unk_00, 2.0f, 0.05f); // unused. - if (roData->interfaceFlags & 1) { + if (roData->interfaceField & UNIQUE2_FLAG_0) { OLib_Vec3fDiffToVecGeo(&eyeOffset, at, eyeNext); eyeOffset.r = roData->distTarget; Camera_AddVecGeoToVec3f(&playerPos, at, &eyeOffset); Camera_LERPCeilVec3f(&playerPos, eye, 0.25f, 0.25f, 0.2f); - } else if (roData->interfaceFlags & 2) { + } else if (roData->interfaceField & UNIQUE2_FLAG_1) { if (OLib_Vec3fDistXZ(at, eyeNext) < roData->distTarget) { OLib_Vec3fDiffToVecGeo(&eyeOffset, at, eyeNext); eyeOffset.yaw = Camera_LERPCeilS(eyeOffset.yaw, eyeAtOffset.yaw, 0.1f, 0xA); @@ -4814,7 +4836,8 @@ s32 Camera_Unique3(Camera* camera) { PosRot* cameraPlayerPosRot = &camera->playerPosRot; playerHeight = Player_GetHeight(camera->player); - camera->unk_14C &= ~0x10; + camera->stateFlags &= ~CAM_STATE_4; + if (RELOAD_PARAMS(camera) || R_RELOAD_CAM_PARAMS) { CameraModeValue* values = sCameraSettings[camera->setting].cameraModes[camera->mode].values; f32 yNormal = @@ -4822,16 +4845,19 @@ s32 Camera_Unique3(Camera* camera) { roData->yOffset = GET_NEXT_SCALED_RO_DATA(values) * playerHeight * yNormal; roData->fov = GET_NEXT_RO_DATA(values); - roData->interfaceFlags = GET_NEXT_RO_DATA(values); + roData->interfaceField = GET_NEXT_RO_DATA(values); } + if (R_RELOAD_CAM_PARAMS != 0) { Camera_CopyPREGToModeValues(camera); } - sCameraInterfaceFlags = roData->interfaceFlags; + + sCameraInterfaceField = roData->interfaceField; + switch (camera->animState) { case 0: func_80043B60(camera); - camera->unk_14C &= ~(0x8 | 0x4); + camera->stateFlags &= ~(CAM_STATE_2 | CAM_STATE_3); rwData->initialFov = camera->fov; rwData->initialDist = OLib_Vec3fDist(at, &camera->eye); camera->animState++; @@ -4854,7 +4880,7 @@ s32 Camera_Unique3(Camera* camera) { camera->animState++; FALLTHROUGH; case 2: - if (roData->interfaceFlags & 4) { + if (roData->interfaceField & UNIQUE3_FLAG_2) { camera->at = cameraPlayerPosRot->pos; camera->at.y += playerHeight + roData->yOffset; } @@ -4864,17 +4890,17 @@ s32 Camera_Unique3(Camera* camera) { camera->animState++; FALLTHROUGH; case 3: - camera->unk_14C |= (0x400 | 0x10); - if ((camera->unk_14C & 8) != 0) { + camera->stateFlags |= (CAM_STATE_4 | CAM_STATE_10); + if (camera->stateFlags & CAM_STATE_3) { camera->animState++; } else { break; } FALLTHROUGH; case 4: - if (roData->interfaceFlags & 2) { - camera->unk_14C |= 4; - camera->unk_14C &= ~8; + if (roData->interfaceField & UNIQUE3_FLAG_1) { + camera->stateFlags |= CAM_STATE_2; + camera->stateFlags &= ~CAM_STATE_3; Camera_ChangeSettingFlags(camera, CAM_SET_PIVOT_IN_FRONT, 2); break; } @@ -4904,8 +4930,8 @@ s32 Camera_Unique3(Camera* camera) { camera->animState++; FALLTHROUGH; default: - camera->unk_14C |= 4; - camera->unk_14C &= ~8; + camera->stateFlags |= CAM_STATE_2; + camera->stateFlags &= ~CAM_STATE_3; camera->fov = roData->fov; Camera_ChangeSettingFlags(camera, camera->prevSetting, 2); camera->atLERPStepScale = 0.0f; @@ -4942,7 +4968,7 @@ s32 Camera_Unique0(Camera* camera) { if (RELOAD_PARAMS(camera) || R_RELOAD_CAM_PARAMS) { values = sCameraSettings[camera->setting].cameraModes[camera->mode].values; - roData->interfaceFlags = GET_NEXT_RO_DATA(values); + roData->interfaceField = GET_NEXT_RO_DATA(values); } if (R_RELOAD_CAM_PARAMS) { @@ -4952,11 +4978,11 @@ s32 Camera_Unique0(Camera* camera) { playerPosWithOffset = playerPosRot->pos; playerPosWithOffset.y += yOffset; - sCameraInterfaceFlags = roData->interfaceFlags; + sCameraInterfaceField = roData->interfaceField; if (camera->animState == 0) { func_80043B60(camera); - camera->unk_14C &= ~4; + camera->stateFlags &= ~CAM_STATE_2; bgCamFuncData = (BgCamFuncData*)Camera_GetBgCamFuncData(camera); Camera_Vec3sToVec3f(&rwData->eyeAndDirection.point, &bgCamFuncData->pos); @@ -4984,7 +5010,7 @@ s32 Camera_Unique0(Camera* camera) { rwData->initalPos = playerPosRot->pos; } - if (roData->interfaceFlags & 1) { + if (roData->interfaceField & UNIQUE0_FLAG_0) { if (rwData->animTimer > 0) { rwData->animTimer--; rwData->initalPos = playerPosRot->pos; @@ -5003,14 +5029,14 @@ s32 Camera_Unique0(Camera* camera) { camera->posOffset.y = camera->at.y - playerPosRot->pos.y; camera->posOffset.z = camera->at.z - playerPosRot->pos.z; camera->atLERPStepScale = 0.0f; - camera->unk_14C |= 4; + camera->stateFlags |= CAM_STATE_2; Camera_ChangeSettingFlags(camera, camera->prevSetting, 2); } } else { if (rwData->animTimer > 0) { rwData->animTimer--; if (rwData->animTimer == 0) { - sCameraInterfaceFlags = 0; + sCameraInterfaceField = CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0); } } else { rwData->initalPos = playerPosRot->pos; @@ -5031,7 +5057,7 @@ s32 Camera_Unique0(Camera* camera) { camera->posOffset.z = camera->at.z - playerPosRot->pos.z; camera->atLERPStepScale = 0.0f; Camera_ChangeSettingFlags(camera, camera->prevSetting, 2); - camera->unk_14C |= 4; + camera->stateFlags |= CAM_STATE_2; } } return true; @@ -5050,7 +5076,7 @@ s32 Camera_Unique5(Camera* camera) { /** * This function doesn't really update much. - * Eye/at positions are updated via Camera_SetParam + * Eye/at positions are updated via Camera_SetViewParam */ s32 Camera_Unique6(Camera* camera) { Unique6ReadOnlyData* roData = &camera->paramData.uniq6.roData; @@ -5061,14 +5087,14 @@ s32 Camera_Unique6(Camera* camera) { if (RELOAD_PARAMS(camera) || R_RELOAD_CAM_PARAMS) { values = sCameraSettings[camera->setting].cameraModes[camera->mode].values; - roData->interfaceFlags = GET_NEXT_RO_DATA(values); + roData->interfaceField = GET_NEXT_RO_DATA(values); } if (R_RELOAD_CAM_PARAMS) { Camera_CopyPREGToModeValues(camera); } - sCameraInterfaceFlags = roData->interfaceFlags; + sCameraInterfaceField = roData->interfaceField; if (camera->animState == 0) { camera->animState++; @@ -5087,7 +5113,7 @@ s32 Camera_Unique6(Camera* camera) { camera->dist = OLib_Vec3fDist(&camera->at, &camera->eye); } - if (roData->interfaceFlags & 1 && camera->timer > 0) { + if ((roData->interfaceField & UNIQUE6_FLAG_0) && (camera->timer > 0)) { camera->timer--; } @@ -5115,7 +5141,7 @@ s32 Camera_Unique7(Camera* camera) { if (RELOAD_PARAMS(camera) || R_RELOAD_CAM_PARAMS) { values = sCameraSettings[camera->setting].cameraModes[camera->mode].values; roData->fov = GET_NEXT_RO_DATA(values); - roData->interfaceFlags = (s16)GET_NEXT_RO_DATA(values); + roData->interfaceField = (s16)GET_NEXT_RO_DATA(values); } if (R_RELOAD_CAM_PARAMS) { Camera_CopyPREGToModeValues(camera); @@ -5139,7 +5165,7 @@ s32 Camera_Unique7(Camera* camera) { fov *= 100; } - sCameraInterfaceFlags = roData->interfaceFlags; + sCameraInterfaceField = roData->interfaceField; if (camera->animState == 0) { camera->animState++; @@ -5155,7 +5181,7 @@ s32 Camera_Unique7(Camera* camera) { rwData->unk_00.x = Camera_LERPFloorS(playerPosEyeOffset.yaw, rwData->unk_00.x, 0.4f, 0x7D0); playerPosEyeOffset.pitch = -bgCamFuncData->rot.x * Math_CosS(playerPosEyeOffset.yaw - bgCamFuncData->rot.y); Camera_AddVecGeoToVec3f(at, eye, &playerPosEyeOffset); - camera->unk_14C |= 0x400; + camera->stateFlags |= CAM_STATE_10; return true; } @@ -5192,14 +5218,14 @@ s32 Camera_Unique9(Camera* camera) { if (RELOAD_PARAMS(camera) || R_RELOAD_CAM_PARAMS) { values = sCameraSettings[camera->setting].cameraModes[camera->mode].values; - roData->interfaceFlags = GET_NEXT_RO_DATA(values); + roData->interfaceField = GET_NEXT_RO_DATA(values); } if (R_RELOAD_CAM_PARAMS) { Camera_CopyPREGToModeValues(camera); } - sCameraInterfaceFlags = roData->interfaceFlags; + sCameraInterfaceField = roData->interfaceField; Actor_GetWorld(&playerPosRot, &camera->player->actor); @@ -5230,7 +5256,8 @@ s32 Camera_Unique9(Camera* camera) { if ((rwData->curKeyFrame->unk_01 & 0xF0) == 0x80) { D_8011D3AC = rwData->curKeyFrame->unk_01 & 0xF; } else if ((rwData->curKeyFrame->unk_01 & 0xF0) == 0xC0) { - Camera_UpdateInterface(0xF000 | ((rwData->curKeyFrame->unk_01 & 0xF) << 8)); + Camera_UpdateInterface( + CAM_INTERFACE_FIELD(CAM_LETTERBOX_IGNORE, CAM_HUD_VISIBILITY(rwData->curKeyFrame->unk_01), 0)); } else if (camera->player->stateFlags1 & PLAYER_STATE1_27 && player->currentBoots != PLAYER_BOOTS_IRON) { func_8002DF38(camera->play, camera->target, 8); @@ -5445,15 +5472,15 @@ s32 Camera_Unique9(Camera* camera) { *eyeNext = rwData->eyeTarget; camera->fov = rwData->fovTarget; camera->roll = rwData->rollTarget; - camera->unk_14C |= 0x400; + camera->stateFlags |= CAM_STATE_10; break; case 21: // same as 15, but with unk_38 ? if (rwData->unk_38 == 0) { rwData->unk_38 = 1; - } else if (camera->unk_14C & 8) { + } else if (camera->stateFlags & CAM_STATE_3) { rwData->unk_38 = 0; - camera->unk_14C &= ~8; + camera->stateFlags &= ~CAM_STATE_3; } *at = rwData->atTarget; *eyeNext = rwData->eyeTarget; @@ -5461,10 +5488,10 @@ s32 Camera_Unique9(Camera* camera) { camera->roll = rwData->rollTarget; break; case 16: - // same as 21, but don't unset bit 0x8 on unk_14C + // same as 21, but don't unset CAM_STATE_3 on stateFlags if (rwData->unk_38 == 0) { rwData->unk_38 = 1; - } else if (camera->unk_14C & 8) { + } else if (camera->stateFlags & CAM_STATE_3) { rwData->unk_38 = 0; } @@ -5701,10 +5728,10 @@ s32 Camera_Demo1(Camera* camera) { if (RELOAD_PARAMS(camera) || R_RELOAD_CAM_PARAMS) { values = sCameraSettings[camera->setting].cameraModes[camera->mode].values; - roData->interfaceFlags = GET_NEXT_RO_DATA(values); + roData->interfaceField = GET_NEXT_RO_DATA(values); } - sCameraInterfaceFlags = roData->interfaceFlags; + sCameraInterfaceField = roData->interfaceField; switch (camera->animState) { case 0: @@ -5779,14 +5806,14 @@ s32 Camera_Demo3(Camera* camera) { Demo3ReadWriteData* rwData = &camera->paramData.demo3.rwData; s32 pad2; - camera->unk_14C &= ~0x10; + camera->stateFlags &= ~CAM_STATE_4; if (RELOAD_PARAMS(camera) || R_RELOAD_CAM_PARAMS) { CameraModeValue* values = sCameraSettings[camera->setting].cameraModes[camera->mode].values; roData->fov = GET_NEXT_RO_DATA(values); roData->unk_04 = GET_NEXT_RO_DATA(values); // unused. - roData->interfaceFlags = GET_NEXT_RO_DATA(values); + roData->interfaceField = GET_NEXT_RO_DATA(values); } if (R_RELOAD_CAM_PARAMS) { @@ -5795,11 +5822,11 @@ s32 Camera_Demo3(Camera* camera) { OLib_Vec3fDiffToVecGeo(&eyeAtOffset, at, eye); - sCameraInterfaceFlags = roData->interfaceFlags; + sCameraInterfaceField = roData->interfaceField; switch (camera->animState) { case 0: - camera->unk_14C &= ~(0x8 | 0x4); + camera->stateFlags &= ~(CAM_STATE_2 | CAM_STATE_3); func_80043B60(camera); camera->fov = roData->fov; camera->roll = rwData->animFrame = 0; @@ -5896,8 +5923,8 @@ s32 Camera_Demo3(Camera* camera) { rwData->unk_0C += (4.0f / 45.0f); break; case 30: - camera->unk_14C |= 0x400; - if (camera->unk_14C & 8) { + camera->stateFlags |= CAM_STATE_10; + if (camera->stateFlags & CAM_STATE_3) { camera->animState = 4; } FALLTHROUGH; @@ -5910,7 +5937,7 @@ s32 Camera_Demo3(Camera* camera) { eyeOffset.pitch = 0; eyeOffset.yaw = eyeAtOffset.yaw; rwData->unk_0C = 0.1f; - sCameraInterfaceFlags = 0x3400; + sCameraInterfaceField = CAM_INTERFACE_FIELD(CAM_LETTERBOX_LARGE, CAM_HUD_VISIBILITY_A, 0); if (!((rwData->animFrame < 0 || camera->xzSpeed > 0.001f || CHECK_BTN_ALL(D_8015BD7C->state.input[0].press.button, BTN_A) || @@ -5921,20 +5948,20 @@ s32 Camera_Demo3(Camera* camera) { CHECK_BTN_ALL(D_8015BD7C->state.input[0].press.button, BTN_CRIGHT) || CHECK_BTN_ALL(D_8015BD7C->state.input[0].press.button, BTN_R) || CHECK_BTN_ALL(D_8015BD7C->state.input[0].press.button, BTN_Z)) && - camera->unk_14C & 8)) { + (camera->stateFlags & CAM_STATE_3))) { goto skipeyeUpdate; } FALLTHROUGH; default: - camera->unk_14C |= 0x14; - camera->unk_14C &= ~8; + camera->stateFlags |= (CAM_STATE_2 | CAM_STATE_4); + camera->stateFlags &= ~CAM_STATE_3; if (camera->prevBgCamIndex < 0) { Camera_ChangeSettingFlags(camera, camera->prevSetting, 2); } else { Camera_ChangeBgCamIndex(camera, camera->prevBgCamIndex); camera->prevBgCamIndex = -1; } - sCameraInterfaceFlags = 0; + sCameraInterfaceField = CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0); skipeyeUpdate: skipUpdateEye = true; break; @@ -6000,7 +6027,7 @@ s32 Camera_Demo5(Camera* camera) { Actor_GetFocus(&playerhead, &camera->player->actor); player = camera->player; - sCameraInterfaceFlags = 0x3200; + sCameraInterfaceField = CAM_INTERFACE_FIELD(CAM_LETTERBOX_LARGE, CAM_HUD_VISIBILITY_NOTHING_ALT, 0); if ((camera->target == NULL) || (camera->target->update == NULL)) { if (camera->target == NULL) { osSyncPrintf(VT_COL(YELLOW, BLACK) "camera: warning: attention: target is not valid, stop!\n" VT_RST); @@ -6225,13 +6252,13 @@ s32 Camera_Demo6(Camera* camera) { mainCam = Play_GetCamera(camera->play, CAM_ID_MAIN); camFocus = camera->target; - stateTimers[1] = 0x37; - stateTimers[2] = 0x46; - stateTimers[3] = 0x5A; + stateTimers[1] = 55; + stateTimers[2] = 70; + stateTimers[3] = 90; if (RELOAD_PARAMS(camera) || R_RELOAD_CAM_PARAMS) { values = sCameraSettings[camera->setting].cameraModes[camera->mode].values; - roData->interfaceFlags = GET_NEXT_RO_DATA(values); + roData->interfaceField = GET_NEXT_RO_DATA(values); } if (R_RELOAD_CAM_PARAMS) { @@ -6293,8 +6320,8 @@ s32 Camera_Demo6(Camera* camera) { s32 Camera_Demo7(Camera* camera) { if (camera->animState == 0) { - camera->unk_14C &= ~4; - camera->unk_14C |= 0x1000; + camera->stateFlags &= ~CAM_STATE_2; + camera->stateFlags |= CAM_STATE_12; camera->animState++; } //! @bug doesn't return @@ -6335,14 +6362,14 @@ s32 Camera_Demo9(Camera* camera) { mainCamPlayerPosRot = &mainCam->playerPosRot; if (RELOAD_PARAMS(camera) || R_RELOAD_CAM_PARAMS) { values = sCameraSettings[camera->setting].cameraModes[camera->mode].values; - roData->interfaceFlags = GET_NEXT_RO_DATA(values); + roData->interfaceField = GET_NEXT_RO_DATA(values); } if (R_RELOAD_CAM_PARAMS) { Camera_CopyPREGToModeValues(camera); } - sCameraInterfaceFlags = roData->interfaceFlags; + sCameraInterfaceField = roData->interfaceField; switch (camera->animState) { case 0: @@ -6460,14 +6487,14 @@ s32 Camera_Special0(Camera* camera) { CameraModeValue* values = sCameraSettings[camera->setting].cameraModes[camera->mode].values; roData->lerpAtScale = GET_NEXT_SCALED_RO_DATA(values); - roData->interfaceFlags = GET_NEXT_RO_DATA(values); + roData->interfaceField = GET_NEXT_RO_DATA(values); } if (R_RELOAD_CAM_PARAMS) { Camera_CopyPREGToModeValues(camera); } - sCameraInterfaceFlags = roData->interfaceFlags; + sCameraInterfaceField = roData->interfaceField; if (camera->animState == 0) { camera->animState++; @@ -6515,7 +6542,7 @@ s32 Camera_Special4(Camera* camera) { Special4ReadWriteData* rwData = &camera->paramData.spec4.rwData; if (camera->animState == 0) { - sCameraInterfaceFlags = 0x3200; + sCameraInterfaceField = CAM_INTERFACE_FIELD(CAM_LETTERBOX_LARGE, CAM_HUD_VISIBILITY_NOTHING_ALT, 0); camera->fov = 40.0f; camera->animState++; rwData->initalTimer = camera->timer; @@ -6578,7 +6605,7 @@ s32 Camera_Special5(Camera* camera) { roData->pitch = CAM_DEG_TO_BINANG(GET_NEXT_RO_DATA(values)); roData->fovTarget = GET_NEXT_RO_DATA(values); roData->atMaxLERPScale = GET_NEXT_SCALED_RO_DATA(values); - roData->interfaceFlags = GET_NEXT_RO_DATA(values); + roData->interfaceField = GET_NEXT_RO_DATA(values); } if (R_RELOAD_CAM_PARAMS) { @@ -6589,7 +6616,7 @@ s32 Camera_Special5(Camera* camera) { OLib_Vec3fDiffToVecGeo(&sp5C, at, eyeNext); Actor_GetWorld(&spA8, camera->target); - sCameraInterfaceFlags = roData->interfaceFlags; + sCameraInterfaceField = roData->interfaceField; if (camera->animState == 0) { camera->animState++; @@ -6731,7 +6758,7 @@ s32 Camera_Special6(Camera* camera) { if (RELOAD_PARAMS(camera) || R_RELOAD_CAM_PARAMS) { CameraModeValue* values = sCameraSettings[camera->setting].cameraModes[camera->mode].values; - roData->interfaceFlags = GET_NEXT_RO_DATA(values); + roData->interfaceField = GET_NEXT_RO_DATA(values); } if (R_RELOAD_CAM_PARAMS) { @@ -6752,13 +6779,15 @@ s32 Camera_Special6(Camera* camera) { fov *= 100; } - sCameraInterfaceFlags = roData->interfaceFlags; + sCameraInterfaceField = roData->interfaceField; if (eyeNext->x != bgCamPos.x || eyeNext->y != bgCamPos.y || eyeNext->z != bgCamPos.z || camera->animState == 0) { // A change in the current scene's camera positon has been detected, // Change "screens" camera->player->actor.freezeTimer = 12; - sCameraInterfaceFlags = (sCameraInterfaceFlags & 0xF0FF) | 0x300; + // Overwrite hud visibility to CAM_HUD_VISIBILITY_HEARTS_FORCE + sCameraInterfaceField = + (sCameraInterfaceField & (u16)~CAM_HUD_VISIBILITY_MASK) | CAM_HUD_VISIBILITY_HEARTS_FORCE; rwData->initalPlayerY = playerPosRot->pos.y; rwData->animTimer = 12; *eyeNext = bgCamPos; @@ -6793,7 +6822,8 @@ s32 Camera_Special6(Camera* camera) { rwData->animTimer--; } else { // Camera following player on the x axis. - sCameraInterfaceFlags &= 0xF0FF; + // Overwrite hud visibility to CAM_HUD_VISIBILITY_ALL + sCameraInterfaceField = (sCameraInterfaceField & (u16)~CAM_HUD_VISIBILITY_MASK) | CAM_HUD_VISIBILITY_ALL; eyePosCalc = *eyeNext; eyePosCalc.x += (playerPosRot->pos.x - eyePosCalc.x) * 0.5f; eyePosCalc.y += (playerPosRot->pos.y - rwData->initalPlayerY) * 0.2f; @@ -6834,7 +6864,7 @@ s32 Camera_Special9(Camera* camera) { BgCamFuncData* bgCamFuncData; playerYOffset = Player_GetHeight(camera->player); - camera->unk_14C &= ~0x10; + camera->stateFlags &= ~CAM_STATE_4; yNormal = 1.0f + CAM_DATA_SCALED(R_CAM_YOFFSET_NORM) - (CAM_DATA_SCALED(R_CAM_YOFFSET_NORM) * (68.0f / playerYOffset)); @@ -6843,7 +6873,7 @@ s32 Camera_Special9(Camera* camera) { roData->yOffset = GET_NEXT_SCALED_RO_DATA(values) * playerYOffset * yNormal; roData->unk_04 = GET_NEXT_RO_DATA(values); - roData->interfaceFlags = GET_NEXT_RO_DATA(values); + roData->interfaceField = GET_NEXT_RO_DATA(values); } if (R_RELOAD_CAM_PARAMS) { @@ -6860,13 +6890,13 @@ s32 Camera_Special9(Camera* camera) { OLib_Vec3fDiffToVecGeo(&atEyeOffsetGeo, at, eye); - sCameraInterfaceFlags = roData->interfaceFlags; + sCameraInterfaceField = roData->interfaceField; switch (camera->animState) { if (1) {} case 0: - camera->unk_14C &= ~(0x4 | 0x2); + camera->stateFlags &= ~(CAM_STATE_1 | CAM_STATE_2); camera->animState++; rwData->targetYaw = ABS(playerPosRot->rot.y - adjustedPlayerPosRot.rot.y) >= 0x4000 ? adjustedPlayerPosRot.rot.y - 0x7FFF @@ -6876,7 +6906,7 @@ s32 Camera_Special9(Camera* camera) { doorParams->timer1--; if (doorParams->timer1 <= 0) { camera->animState++; - if (roData->interfaceFlags & 1) { + if (roData->interfaceField & SPECIAL9_FLAG_0) { bgCamFuncData = (BgCamFuncData*)Camera_GetBgCamFuncData(camera); Camera_Vec3sToVec3f(eyeNext, &bgCamFuncData->pos); spAC = *eye = *eyeNext; @@ -6935,8 +6965,8 @@ s32 Camera_Special9(Camera* camera) { camera->animState++; FALLTHROUGH; default: - camera->unk_14C |= (0x400 | 0x10); - sCameraInterfaceFlags = 0; + camera->stateFlags |= (CAM_STATE_4 | CAM_STATE_10); + sCameraInterfaceField = CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0); if (camera->xzSpeed > 0.001f || CHECK_BTN_ALL(D_8015BD7C->state.input[0].press.button, BTN_A) || CHECK_BTN_ALL(D_8015BD7C->state.input[0].press.button, BTN_B) || @@ -6945,10 +6975,11 @@ s32 Camera_Special9(Camera* camera) { CHECK_BTN_ALL(D_8015BD7C->state.input[0].press.button, BTN_CUP) || CHECK_BTN_ALL(D_8015BD7C->state.input[0].press.button, BTN_CRIGHT) || CHECK_BTN_ALL(D_8015BD7C->state.input[0].press.button, BTN_R) || - CHECK_BTN_ALL(D_8015BD7C->state.input[0].press.button, BTN_Z) || roData->interfaceFlags & 0x8) { + CHECK_BTN_ALL(D_8015BD7C->state.input[0].press.button, BTN_Z) || + (roData->interfaceField & SPECIAL9_FLAG_3)) { Camera_ChangeSettingFlags(camera, camera->prevSetting, 2); - camera->unk_14C |= (0x4 | 0x2); + camera->stateFlags |= (CAM_STATE_1 | CAM_STATE_2); } break; } @@ -7041,21 +7072,21 @@ void Camera_Init(Camera* camera, View* view, CollisionContext* colCtx, PlayState camera->yOffsetUpdateRate = CAM_DATA_SCALED(R_CAM_Y_OFFSET_UPDATE_RATE); camera->fovUpdateRate = CAM_DATA_SCALED(R_CAM_FOV_UPDATE_RATE); sCameraLetterboxSize = 32; - sCameraInterfaceAlpha = 0; - camera->unk_14C = 0; + sCameraHudVisibilityMode = HUD_VISIBILITY_NO_CHANGE; + camera->stateFlags = 0; camera->setting = camera->prevSetting = CAM_SET_FREE0; camera->bgCamIndex = camera->prevBgCamIndex = -1; camera->mode = 0; camera->bgId = BGCHECK_SCENE; camera->csId = 0x7FFF; camera->timer = -1; - camera->unk_14C |= 0x4000; + camera->stateFlags |= CAM_STATE_14; camera->up.y = 1.0f; camera->up.z = camera->up.x = 0.0f; camera->quakeOffset.x = camera->quakeOffset.y = camera->quakeOffset.z = 0; camera->atLERPStepScale = 1; - sCameraInterfaceFlags = 0xFF00; + sCameraInterfaceField = CAM_INTERFACE_FIELD(CAM_LETTERBOX_IGNORE, CAM_HUD_VISIBILITY_IGNORE, 0); sDbgModeIdx = -1; D_8011D3F0 = 3; osSyncPrintf(VT_FGCOL(BLUE) "camera: initialize --- " VT_RST " UID %d\n", camera->uid); @@ -7064,7 +7095,7 @@ void Camera_Init(Camera* camera, View* view, CollisionContext* colCtx, PlayState void func_80057FC4(Camera* camera) { if (camera != &camera->play->mainCamera) { camera->prevSetting = camera->setting = CAM_SET_FREE0; - camera->unk_14C &= ~0x4; + camera->stateFlags &= ~CAM_STATE_2; } else if (camera->play->roomCtx.curRoom.roomShape->base.type != ROOM_SHAPE_TYPE_IMAGE) { switch (camera->play->roomCtx.curRoom.behaviorType1) { case ROOM_BEHAVIOR_TYPE1_1: @@ -7080,13 +7111,13 @@ void func_80057FC4(Camera* camera) { osSyncPrintf("camera: room type: default set etc (%d)\n", camera->play->roomCtx.curRoom.behaviorType1); Camera_ChangeDoorCam(camera, NULL, -99, 0, 0, 18, 10); camera->prevSetting = camera->setting = CAM_SET_NORMAL0; - camera->unk_14C |= 4; + camera->stateFlags |= CAM_STATE_2; break; } } else { osSyncPrintf("camera: room type: prerender\n"); camera->prevSetting = camera->setting = CAM_SET_FREE0; - camera->unk_14C &= ~0x4; + camera->stateFlags &= ~CAM_STATE_2; } } @@ -7138,17 +7169,18 @@ void Camera_InitPlayerSettings(Camera* camera, Player* player) { camera->bgCamIndexBeforeUnderwater = -1; camera->waterCamSetting = -1; - camera->unk_14C |= 4; + camera->stateFlags |= CAM_STATE_2; if (camera == &camera->play->mainCamera) { - sCameraInterfaceFlags = 0xB200; + sCameraInterfaceField = + CAM_INTERFACE_FIELD(CAM_LETTERBOX_LARGE | CAM_LETTERBOX_INSTANT, CAM_HUD_VISIBILITY_NOTHING_ALT, 0); } else { - sCameraInterfaceFlags = 0; + sCameraInterfaceField = CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0); } func_80057FC4(camera); - camera->unk_14A = 0; - camera->paramFlags = 0; + camera->behaviorFlags = 0; + camera->viewFlags = 0; camera->nextBgCamIndex = -1; camera->atLERPStepScale = 1.0f; Camera_CopyDataToRegs(camera, camera->mode); @@ -7274,24 +7306,24 @@ s32 Camera_UpdateWater(Camera* camera) { Player* player = camera->player; s16 prevBgId; - if (!(camera->unk_14C & 2) || sCameraSettings[camera->setting].unk_00 & 0x40000000) { + if (!(camera->stateFlags & CAM_STATE_1) || sCameraSettings[camera->setting].unk_00 & 0x40000000) { return 0; } - if (camera->unk_14C & 0x200) { + if (camera->stateFlags & CAM_STATE_9) { if (player->stateFlags2 & PLAYER_STATE2_11) { Camera_ChangeSettingFlags(camera, CAM_SET_PIVOT_WATER_SURFACE, 6); - camera->unk_14C |= (s16)0x8000; - } else if (camera->unk_14C & (s16)0x8000) { + camera->stateFlags |= CAM_STATE_15; + } else if (camera->stateFlags & CAM_STATE_15) { Camera_ChangeSettingFlags(camera, *waterCamSetting, 6); - camera->unk_14C &= ~((s16)0x8000); + camera->stateFlags &= ~CAM_STATE_15; } } - if (!(camera->unk_14C & (s16)0x8000)) { + if (!(camera->stateFlags & CAM_STATE_15)) { if (waterBgCamIndex = Camera_GetWaterBoxBgCamIndex(camera, &waterY), waterBgCamIndex == -2) { // No camera data index - if (!(camera->unk_14C & 0x200)) { - camera->unk_14C |= 0x200; + if (!(camera->stateFlags & CAM_STATE_9)) { + camera->stateFlags |= CAM_STATE_9; camera->waterYPos = waterY; camera->bgCamIndexBeforeUnderwater = camera->bgCamIndex; *waterQuakeIndex = -1; @@ -7306,8 +7338,8 @@ s32 Camera_UpdateWater(Camera* camera) { } } else if (waterBgCamIndex != -1) { // player is in a water box - if (!(camera->unk_14C & 0x200)) { - camera->unk_14C |= 0x200; + if (!(camera->stateFlags & CAM_STATE_9)) { + camera->stateFlags |= CAM_STATE_9; camera->waterYPos = waterY; camera->bgCamIndexBeforeUnderwater = camera->bgCamIndex; *waterQuakeIndex = -1; @@ -7319,10 +7351,10 @@ s32 Camera_UpdateWater(Camera* camera) { *waterCamSetting = camera->setting; camera->bgId = prevBgId; } - } else if (camera->unk_14C & 0x200) { + } else if (camera->stateFlags & CAM_STATE_9) { // player is out of a water box. osSyncPrintf("camera: water: off\n"); - camera->unk_14C &= ~0x200; + camera->stateFlags &= ~CAM_STATE_9; prevBgId = camera->bgId; camera->bgId = BGCHECK_SCENE; if (camera->bgCamIndexBeforeUnderwater < 0) { @@ -7337,8 +7369,8 @@ s32 Camera_UpdateWater(Camera* camera) { if (waterY = Camera_GetWaterSurface(camera, &camera->eye, &waterLightsIndex), waterY != BGCHECK_Y_MIN) { camera->waterYPos = waterY; - if (!(camera->unk_14C & 0x100)) { - camera->unk_14C |= 0x100; + if (!(camera->stateFlags & CAM_STATE_8)) { + camera->stateFlags |= CAM_STATE_8; osSyncPrintf("kankyo changed water, sound on\n"); Environment_EnableUnderwaterLights(camera->play, waterLightsIndex); camera->waterDistortionTimer = 80; @@ -7372,8 +7404,8 @@ s32 Camera_UpdateWater(Camera* camera) { camera->distortionFlags |= DISTORTION_UNDERWATER_WEAK; } } else { - if (camera->unk_14C & 0x100) { - camera->unk_14C &= ~0x100; + if (camera->stateFlags & CAM_STATE_8) { + camera->stateFlags &= ~CAM_STATE_8; osSyncPrintf("kankyo changed water off, sound off\n"); Environment_DisableUnderwaterLights(camera->play); if (*waterQuakeIndex != 0) { @@ -7502,11 +7534,11 @@ void Camera_UpdateDistortion(Camera* camera) { Math_CosS(depthPhase) * (zScale * scaleFactor) + 1.0f); View_SetDistortionSpeed(&camera->play->view, speed * speedFactor); - camera->unk_14C |= 0x40; + camera->stateFlags |= CAM_STATE_6; - } else if (camera->unk_14C & 0x40) { + } else if (camera->stateFlags & CAM_STATE_6) { View_ClearDistortion(&camera->play->view); - camera->unk_14C &= ~0x40; + camera->stateFlags &= ~CAM_STATE_6; } } @@ -7580,13 +7612,14 @@ Vec3s Camera_Update(Camera* camera) { Camera_UpdateHotRoom(camera); } - if (!(camera->unk_14C & 4)) { + if (!(camera->stateFlags & CAM_STATE_2)) { camera->nextBgCamIndex = -1; } - if ((camera->unk_14C & 1) && (camera->unk_14C & 4) && !(camera->unk_14C & 0x400) && - (!(camera->unk_14C & 0x200) || (player->currentBoots == PLAYER_BOOTS_IRON)) && - (!(camera->unk_14C & (s16)0x8000)) && (playerGroundY != BGCHECK_Y_MIN)) { + if ((camera->stateFlags & CAM_STATE_0) && (camera->stateFlags & CAM_STATE_2) && + !(camera->stateFlags & CAM_STATE_10) && + (!(camera->stateFlags & CAM_STATE_9) || (player->currentBoots == PLAYER_BOOTS_IRON)) && + !(camera->stateFlags & CAM_STATE_15) && (playerGroundY != BGCHECK_Y_MIN)) { bgCamIndex = Camera_GetBgCamIndex(camera, &bgId, playerFloorPoly); if (bgCamIndex != -1) { camera->nextBgId = bgId; @@ -7597,7 +7630,7 @@ Vec3s Camera_Update(Camera* camera) { } if (camera->nextBgCamIndex != -1 && (fabsf(curPlayerPosRot.pos.y - playerGroundY) < 2.0f) && - (!(camera->unk_14C & 0x200) || (player->currentBoots == PLAYER_BOOTS_IRON))) { + (!(camera->stateFlags & CAM_STATE_9) || (player->currentBoots == PLAYER_BOOTS_IRON))) { camera->bgId = camera->nextBgId; Camera_ChangeBgCamIndex(camera, camera->nextBgCamIndex); camera->nextBgCamIndex = -1; @@ -7614,13 +7647,13 @@ Vec3s Camera_Update(Camera* camera) { return camera->inputDir; } - camera->unk_14A = 0; - camera->unk_14C &= ~(0x400 | 0x20); - camera->unk_14C |= 0x10; + camera->behaviorFlags = 0; + camera->stateFlags &= ~(CAM_STATE_10 | CAM_STATE_5); + camera->stateFlags |= CAM_STATE_4; if (R_DBG_CAM_UPDATE) { osSyncPrintf("camera: engine (%d %d %d) %04x \n", camera->setting, camera->mode, - sCameraSettings[camera->setting].cameraModes[camera->mode].funcIdx, camera->unk_14C); + sCameraSettings[camera->setting].cameraModes[camera->mode].funcIdx, camera->stateFlags); } if (sOOBTimer < 200) { @@ -7632,25 +7665,25 @@ Vec3s Camera_Update(Camera* camera) { if (camera->status == CAM_STAT_ACTIVE) { if ((gSaveContext.gameMode != GAMEMODE_NORMAL) && (gSaveContext.gameMode != GAMEMODE_END_CREDITS)) { - sCameraInterfaceFlags = 0; - Camera_UpdateInterface(sCameraInterfaceFlags); + sCameraInterfaceField = CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0); + Camera_UpdateInterface(sCameraInterfaceField); } else if ((D_8011D3F0 != 0) && (camera->camId == CAM_ID_MAIN)) { D_8011D3F0--; - sCameraInterfaceFlags = 0x3200; - Camera_UpdateInterface(sCameraInterfaceFlags); + sCameraInterfaceField = CAM_INTERFACE_FIELD(CAM_LETTERBOX_LARGE, CAM_HUD_VISIBILITY_NOTHING_ALT, 0); + Camera_UpdateInterface(sCameraInterfaceField); } else if (camera->play->transitionMode != TRANS_MODE_OFF) { - sCameraInterfaceFlags = 0xF200; - Camera_UpdateInterface(sCameraInterfaceFlags); + sCameraInterfaceField = CAM_INTERFACE_FIELD(CAM_LETTERBOX_IGNORE, CAM_HUD_VISIBILITY_NOTHING_ALT, 0); + Camera_UpdateInterface(sCameraInterfaceField); } else if (camera->play->csCtx.state != CS_STATE_IDLE) { - sCameraInterfaceFlags = 0x3200; - Camera_UpdateInterface(sCameraInterfaceFlags); + sCameraInterfaceField = CAM_INTERFACE_FIELD(CAM_LETTERBOX_LARGE, CAM_HUD_VISIBILITY_NOTHING_ALT, 0); + Camera_UpdateInterface(sCameraInterfaceField); } else { - Camera_UpdateInterface(sCameraInterfaceFlags); + Camera_UpdateInterface(sCameraInterfaceField); } } if (R_DBG_CAM_UPDATE) { - osSyncPrintf("camera: shrink_and_bitem %x(%d)\n", sCameraInterfaceFlags, camera->play->transitionMode); + osSyncPrintf("camera: shrink_and_bitem %x(%d)\n", sCameraInterfaceField, camera->play->transitionMode); } if (R_DBG_CAM_UPDATE) { @@ -7712,8 +7745,8 @@ Vec3s Camera_Update(Camera* camera) { viewFov = camera->fov; } - if (camera->paramFlags & 4) { - camera->paramFlags &= ~4; + if (camera->viewFlags & CAM_VIEW_UP) { + camera->viewFlags &= ~CAM_VIEW_UP; viewUp = camera->up; } else { camera->up = viewUp; @@ -7785,7 +7818,7 @@ void Camera_Finish(Camera* camera) { osSyncPrintf("camera: player demo end!!\n"); } - mainCam->unk_14C |= 8; + mainCam->stateFlags |= CAM_STATE_3; } if (CHILD_CAM(camera)->parentCamId == camera->camId) { @@ -7809,8 +7842,8 @@ void Camera_Finish(Camera* camera) { } s32 func_8005A02C(Camera* camera) { - camera->unk_14C |= 0xC; - camera->unk_14C &= ~(0x1000 | 0x8); + camera->stateFlags |= (CAM_STATE_2 | CAM_STATE_3); + camera->stateFlags &= ~(CAM_STATE_3 | CAM_STATE_12); return true; } @@ -7821,8 +7854,8 @@ s32 Camera_ChangeModeFlags(Camera* camera, s16 mode, u8 flags) { osSyncPrintf("+=+(%d)+=+ recive request -> %s\n", camera->play->state.frames, sCameraModeNames[mode]); } - if (camera->unk_14C & 0x20 && flags == 0) { - camera->unk_14A |= 0x20; + if ((camera->stateFlags & CAM_STATE_5) && (flags == 0)) { + camera->behaviorFlags |= CAM_BEHAVIOR_MODE_2; return -1; } @@ -7840,18 +7873,18 @@ s32 Camera_ChangeModeFlags(Camera* camera, s16 mode, u8 flags) { func_8005A02C(camera); return 0xC0000000 | mode; } else { - camera->unk_14A |= 0x20; - camera->unk_14A |= 2; + camera->behaviorFlags |= CAM_BEHAVIOR_MODE_2; + camera->behaviorFlags |= CAM_BEHAVIOR_MODE_1; return 0; } } else { if (mode == camera->mode && flags == 0) { - camera->unk_14A |= 0x20; - camera->unk_14A |= 2; + camera->behaviorFlags |= CAM_BEHAVIOR_MODE_2; + camera->behaviorFlags |= CAM_BEHAVIOR_MODE_1; return -1; } - camera->unk_14A |= 0x20; - camera->unk_14A |= 2; + camera->behaviorFlags |= CAM_BEHAVIOR_MODE_2; + camera->behaviorFlags |= CAM_BEHAVIOR_MODE_1; Camera_CopyDataToRegs(camera, mode); modeChangeFlags = 0; switch (mode) { @@ -7959,16 +7992,16 @@ s32 Camera_CheckValidMode(Camera* camera, s16 mode) { } s16 Camera_ChangeSettingFlags(Camera* camera, s16 setting, s16 flags) { - if (camera->unk_14A & 1) { + if (camera->behaviorFlags & CAM_BEHAVIOR_SETTING_1) { if ((u32)((u32)(sCameraSettings[camera->setting].unk_00 & 0xF000000) >> 0x18) >= (u32)((u32)(sCameraSettings[setting].unk_00 & 0xF000000) >> 0x18)) { - camera->unk_14A |= 0x10; + camera->behaviorFlags |= CAM_BEHAVIOR_SETTING_2; return -2; } } if (((setting == CAM_SET_MEADOW_BIRDS_EYE) || (setting == CAM_SET_MEADOW_UNUSED)) && LINK_IS_ADULT && (camera->play->sceneId == SCENE_SACRED_FOREST_MEADOW)) { - camera->unk_14A |= 0x10; + camera->behaviorFlags |= CAM_BEHAVIOR_SETTING_2; return -5; } @@ -7978,20 +8011,20 @@ s16 Camera_ChangeSettingFlags(Camera* camera, s16 setting, s16 flags) { } if ((setting == camera->setting) && !(flags & 1)) { - camera->unk_14A |= 0x10; + camera->behaviorFlags |= CAM_BEHAVIOR_SETTING_2; if (!(flags & 2)) { - camera->unk_14A |= 1; + camera->behaviorFlags |= CAM_BEHAVIOR_SETTING_1; } return -1; } - camera->unk_14A |= 0x10; + camera->behaviorFlags |= CAM_BEHAVIOR_SETTING_2; if (!(flags & 2)) { - camera->unk_14A |= 1; + camera->behaviorFlags |= CAM_BEHAVIOR_SETTING_1; } - camera->unk_14C |= 0xC; - camera->unk_14C &= ~0x1008; + camera->stateFlags |= (CAM_STATE_2 | CAM_STATE_3); + camera->stateFlags &= ~(CAM_STATE_3 | CAM_STATE_12); if (!(sCameraSettings[camera->setting].unk_00 & 0x40000000)) { camera->prevSetting = camera->setting; @@ -8029,17 +8062,17 @@ s32 Camera_ChangeBgCamIndex(Camera* camera, s32 bgCamIndex) { s16 settingChangeSuccessful; if (bgCamIndex == -1 || bgCamIndex == camera->bgCamIndex) { - camera->unk_14A |= 0x40; + camera->behaviorFlags |= CAM_BEHAVIOR_BG_2; return -1; } - if (!(camera->unk_14A & 0x40)) { + if (!(camera->behaviorFlags & CAM_BEHAVIOR_BG_2)) { newCameraSetting = Camera_GetBgCamSetting(camera, bgCamIndex); - camera->unk_14A |= 0x40; + camera->behaviorFlags |= CAM_BEHAVIOR_BG_2; settingChangeSuccessful = Camera_ChangeSettingFlags(camera, newCameraSetting, 5) >= 0; if (settingChangeSuccessful || sCameraSettings[camera->setting].unk_00 & 0x80000000) { camera->bgCamIndex = bgCamIndex; - camera->unk_14A |= 4; + camera->behaviorFlags |= CAM_BEHAVIOR_BG_1; Camera_CopyDataToRegs(camera, camera->mode); } else if (settingChangeSuccessful < -1) { //! @bug: This is likely checking the wrong value. The actual return of Camera_ChangeSettingFlags or @@ -8112,55 +8145,61 @@ s32 Camera_RequestQuake(Camera* camera, s32 unused, s16 y, s32 duration) { return true; } -s32 Camera_SetParam(Camera* camera, s32 param, void* value) { +s32 Camera_SetViewParam(Camera* camera, s32 viewFlag, void* param) { s32 pad[3]; - if (value != NULL) { - switch (param) { - case 1: - camera->paramFlags &= ~(0x10 | 0x8 | 0x1); - camera->at = *(Vec3f*)value; + if (param != NULL) { + switch (viewFlag) { + case CAM_VIEW_AT: + camera->viewFlags &= ~(CAM_VIEW_AT | CAM_VIEW_TARGET | CAM_VIEW_TARGET_POS); + camera->at = *(Vec3f*)param; break; - case 16: - camera->paramFlags &= ~(0x10 | 0x8 | 0x1); - camera->targetPosRot.pos = *(Vec3f*)value; + + case CAM_VIEW_TARGET_POS: + camera->viewFlags &= ~(CAM_VIEW_AT | CAM_VIEW_TARGET | CAM_VIEW_TARGET_POS); + camera->targetPosRot.pos = *(Vec3f*)param; break; - case 8: - if (camera->setting == CAM_SET_CS_C || camera->setting == CAM_SET_CS_ATTENTION) { - break; + + case CAM_VIEW_TARGET: + if (camera->setting != CAM_SET_CS_C && camera->setting != CAM_SET_CS_ATTENTION) { + camera->target = (Actor*)param; + camera->viewFlags &= ~(CAM_VIEW_AT | CAM_VIEW_TARGET | CAM_VIEW_TARGET_POS); } - camera->target = (Actor*)value; - camera->paramFlags &= ~(0x10 | 0x8 | 0x1); break; - case 2: - camera->eye = camera->eyeNext = *(Vec3f*)value; + + case CAM_VIEW_EYE: + camera->eye = camera->eyeNext = *(Vec3f*)param; break; - case 4: - camera->up = *(Vec3f*)value; + + case CAM_VIEW_UP: + camera->up = *(Vec3f*)param; break; - case 0x40: - camera->roll = CAM_DEG_TO_BINANG(*(f32*)value); + + case CAM_VIEW_ROLL: + camera->roll = CAM_DEG_TO_BINANG(*(f32*)param); break; - case 0x20: - camera->fov = *(f32*)value; + + case CAM_VIEW_FOV: + camera->fov = *(f32*)param; break; + default: return false; } - camera->paramFlags |= param; + camera->viewFlags |= viewFlag; } else { return false; } return true; } -s32 Camera_UnsetParam(Camera* camera, s16 param) { - camera->paramFlags &= ~param; +s32 Camera_UnsetViewFlag(Camera* camera, s16 viewFlag) { + camera->viewFlags &= ~viewFlag; return true; } -s32 func_8005AC48(Camera* camera, s16 arg1) { - camera->unk_14C = arg1; +s32 Camera_OverwriteStateFlags(Camera* camera, s16 stateFlags) { + camera->stateFlags = stateFlags; return true; } @@ -8190,14 +8229,14 @@ s32 Camera_SetCSParams(Camera* camera, CutsceneCameraPoint* atPoints, CutsceneCa return 1; } -s16 func_8005ACFC(Camera* camera, s16 arg1) { - camera->unk_14C |= arg1; - return camera->unk_14C; +s16 Camera_SetStateFlag(Camera* camera, s16 stateFlag) { + camera->stateFlags |= stateFlag; + return camera->stateFlags; } -s16 func_8005AD1C(Camera* camera, s16 arg1) { - camera->unk_14C &= ~arg1; - return camera->unk_14C; +s16 Camera_UnsetStateFlag(Camera* camera, s16 stateFlag) { + camera->stateFlags &= ~stateFlag; + return camera->stateFlags; } /** @@ -8230,11 +8269,11 @@ s32 Camera_ChangeDoorCam(Camera* camera, Actor* doorActor, s16 bgCamIndex, f32 a } else { s32 setting = Camera_GetBgCamSetting(camera, bgCamIndex); - camera->unk_14A |= 0x40; + camera->behaviorFlags |= CAM_BEHAVIOR_BG_2; if (Camera_ChangeSetting(camera, setting) >= 0) { camera->bgCamIndex = bgCamIndex; - camera->unk_14A |= 4; + camera->behaviorFlags |= CAM_BEHAVIOR_BG_1; } osSyncPrintf("....change door camera ID %d (set %d)\n", camera->bgCamIndex, camera->setting); @@ -8344,10 +8383,10 @@ s32 func_8005B198(void) { } s16 func_8005B1A4(Camera* camera) { - camera->unk_14C |= 0x8; + camera->stateFlags |= CAM_STATE_3; if ((camera->camId == CAM_ID_MAIN) && (camera->play->activeCamId != CAM_ID_MAIN)) { - GET_ACTIVE_CAM(camera->play)->unk_14C |= 0x8; + GET_ACTIVE_CAM(camera->play)->stateFlags |= CAM_STATE_3; return camera->play->activeCamId; } diff --git a/src/code/z_camera_data.inc.c b/src/code/z_camera_data.inc.c index e140fe8856..77e56f45be 100644 --- a/src/code/z_camera_data.inc.c +++ b/src/code/z_camera_data.inc.c @@ -94,7 +94,7 @@ s16 sCamDataRegsInit[CAM_DATA_MAX] = { 35, // CAM_DATA_MAX_YAW_UPDATE 60, // CAM_DATA_FOV 60, // CAM_DATA_AT_LERP_STEP_SCALE - 3, // CAM_DATA_FLAGS + 3, // CAM_DATA_INTERFACE_FIELD 0, // CAM_DATA_YAW_TARGET -40, // CAM_DATA_GROUND_Y_OFFSET 20, // CAM_DATA_GROUND_AT_LERP_STEP_SCALE @@ -216,87 +216,111 @@ char sCameraModeNames[][12] = { */ CameraModeValue sSetNormal0ModeNormalData[] = { - CAM_FUNCDATA_NORM1(-20, 200, 300, 10, 12, 10, 35, 60, 60, 0x0003), + CAM_FUNCDATA_NORM1( + -20, 200, 300, 10, 12, 10, 35, 60, 60, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, NORMAL1_FLAG_1 | NORMAL1_FLAG_0)), }; CameraModeValue sSetNormal0ModeTargetData[] = { - CAM_FUNCDATA_PARA1(-20, 250, 0, 0, 5, 5, 45, 50, 0x200A, -40, 20), + CAM_FUNCDATA_PARA1( + -20, 250, 0, 0, 5, 5, 45, 50, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, PARALLEL1_FLAG_3 | PARALLEL1_FLAG_1), -40, + 20), }; CameraModeValue sSetNormal0ModeFollowTargetData[] = { - CAM_FUNCDATA_KEEP1(-20, 120, 140, 25, 45, -5, 15, 15, 45, 50, 0x2001, -50, 30), + CAM_FUNCDATA_KEEP1(-20, 120, 140, 25, 45, -5, 15, 15, 45, 50, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, KEEPON1_FLAG_0), -50, 30), }; CameraModeValue sSetNormal0ModeTalkData[] = { - CAM_FUNCDATA_KEEP3(-30, 70, 200, 40, 10, 0, 5, 70, 45, 50, 10, 0x3500), + CAM_FUNCDATA_KEEP3(-30, 70, 200, 40, 10, 0, 5, 70, 45, 50, 10, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_LARGE, CAM_HUD_VISIBILITY_A_HEARTS_MAGIC_FORCE, 0)), }; CameraModeValue sSetNormal0ModeBattleData[] = { - CAM_FUNCDATA_BATT1(-20, 180, 10, 80, 0, 10, 25, 50, 80, 0x2002, -40, 25), + CAM_FUNCDATA_BATT1(-20, 180, 10, 80, 0, 10, 25, 50, 80, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, BATTLE1_FLAG_1), -40, 25), }; CameraModeValue sSetNormal0ModeClimbData[] = { - CAM_FUNCDATA_JUMP2(-20, 200, 300, 20, 5, 5, 60, 40, 0x0000), + CAM_FUNCDATA_JUMP2(-20, 200, 300, 20, 5, 5, 60, 40, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetNormal0ModeFirstPersonData[] = { - CAM_FUNCDATA_SUBJ3(0, 5, 50, 10, 0, 0, 0, 45, 0x0000), + CAM_FUNCDATA_SUBJ3(0, 5, 50, 10, 0, 0, 0, 45, CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetNormal0ModeBowArrowData[] = { - CAM_FUNCDATA_SUBJ3(-7, 14, 50, 10, 0, -30, -5, 45, 0x2000), + CAM_FUNCDATA_SUBJ3(-7, 14, 50, 10, 0, -30, -5, 45, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetNormal0ModeBowArrowZData[] = { - CAM_FUNCDATA_SUBJ3(20, 70, 70, 10, -120, 20, 0, 45, 0x2000), + CAM_FUNCDATA_SUBJ3(20, 70, 70, 10, -120, 20, 0, 45, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetNormal0ModeHookshotData[] = { - CAM_FUNCDATA_SPEC5_ALT(-20, 80, 250, 45, 60, 40, 6, 0x2000), + CAM_FUNCDATA_SPEC5_ALT(-20, 80, 250, 45, 60, 40, 6, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetNormal0ModeBoomerangData[] = { - CAM_FUNCDATA_SUBJ3(5, 50, 50, 10, 0, 0, 0, 45, 0x2000), + CAM_FUNCDATA_SUBJ3(5, 50, 50, 10, 0, 0, 0, 45, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetNormal0ModeSlingshotData[] = { - CAM_FUNCDATA_SUBJ3(-7, 14, 50, 10, -9, -63, -30, 45, 0x2000), + CAM_FUNCDATA_SUBJ3(-7, 14, 50, 10, -9, -63, -30, 45, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetNormal0ModeClimbZData[] = { - CAM_FUNCDATA_JUMP2(-20, 200, 300, 20, 999, 5, 60, 40, 0x2006), + CAM_FUNCDATA_JUMP2(-20, 200, 300, 20, 999, 5, 60, 40, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, JUMP2_FLAG_2 | JUMP2_FLAG_1)), }; CameraModeValue sSetNormal0ModeJumpData[] = { - CAM_FUNCDATA_JUMP1(-20, 200, 300, 12, 35, 60, 40, 0x0000), + CAM_FUNCDATA_JUMP1(-20, 200, 300, 12, 35, 60, 40, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetNormal0ModeHangData[] = { - CAM_FUNCDATA_UNIQ1(-80, 200, 300, 40, 60, 10, 0x0000), + CAM_FUNCDATA_UNIQ1(-80, 200, 300, 40, 60, 10, CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetNormal0ModeHangZData[] = { - CAM_FUNCDATA_UNIQ1(-120, 300, 300, 70, 45, 10, 0x2000), + CAM_FUNCDATA_UNIQ1(-120, 300, 300, 70, 45, 10, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetNormal0ModeFreeFallData[] = { - CAM_FUNCDATA_JUMP1(-20, 200, 300, 15, 80, 60, 20, 0x0000), + CAM_FUNCDATA_JUMP1(-20, 200, 300, 15, 80, 60, 20, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetNormal0ModeChargeData[] = { - CAM_FUNCDATA_BATT4(-20, 300, 50, 2, 80, 20, 0xF000), + CAM_FUNCDATA_BATT4(-20, 300, 50, 2, 80, 20, CAM_INTERFACE_FIELD(CAM_LETTERBOX_IGNORE, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetNormal0ModeStillData[] = { - CAM_FUNCDATA_NORM1(-20, 200, 300, 10, 100, 10, 100, 60, 5, 0xF003), + CAM_FUNCDATA_NORM1( + -20, 200, 300, 10, 100, 10, 100, 60, 5, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_IGNORE, CAM_HUD_VISIBILITY_ALL, NORMAL1_FLAG_1 | NORMAL1_FLAG_0)), }; CameraModeValue sSetNormal0ModePushPullData[] = { - CAM_FUNCDATA_PARA1(0, 250, 25, 0, 5, 5, 70, 30, 0x206A, -20, 30), + CAM_FUNCDATA_PARA1(0, 250, 25, 0, 5, 5, 70, 30, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, + PARALLEL1_FLAG_6 | PARALLEL1_FLAG_5 | PARALLEL1_FLAG_3 | PARALLEL1_FLAG_1), + -20, 30), }; CameraModeValue sSetNormal0ModeFollowBoomerangData[] = { - CAM_FUNCDATA_KEEP1(-5, 120, 140, 5, 85, 10, 5, 25, 45, 50, 0x2001, -15, 30), + CAM_FUNCDATA_KEEP1(-5, 120, 140, 5, 85, 10, 5, 25, 45, 50, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, KEEPON1_FLAG_0), -15, 30), }; /** @@ -306,55 +330,66 @@ CameraModeValue sSetNormal0ModeFollowBoomerangData[] = { */ CameraModeValue sSetNormal1ModeNormalData[] = { - CAM_FUNCDATA_NORM1(0, 200, 400, 10, 12, 20, 40, 60, 60, 0x0003), + CAM_FUNCDATA_NORM1( + 0, 200, 400, 10, 12, 20, 40, 60, 60, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, NORMAL1_FLAG_1 | NORMAL1_FLAG_0)), }; CameraModeValue sSetNormal1ModeTargetData[] = { - CAM_FUNCDATA_PARA1(0, 250, 0, 0, 5, 5, 45, 50, 0x2002, -40, 20), + CAM_FUNCDATA_PARA1(0, 250, 0, 0, 5, 5, 45, 50, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, PARALLEL1_FLAG_1), -40, 20), }; CameraModeValue sSetNormal1ModeFollowTargetData[] = { - CAM_FUNCDATA_KEEP1(-20, 120, 140, 25, 45, -5, 15, 15, 45, 50, 0x2001, -50, 20), + CAM_FUNCDATA_KEEP1(-20, 120, 140, 25, 45, -5, 15, 15, 45, 50, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, KEEPON1_FLAG_0), -50, 20), }; CameraModeValue sSetNormal1ModeBattleData[] = { - CAM_FUNCDATA_BATT1(-20, 250, 10, 80, 0, 10, 25, 50, 65, 0x2002, -40, 25), + CAM_FUNCDATA_BATT1(-20, 250, 10, 80, 0, 10, 25, 50, 65, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, BATTLE1_FLAG_1), -40, 25), }; CameraModeValue sSetNormal1ModeHookshotData[] = { - CAM_FUNCDATA_SPEC5(-20, 80, 250, 6, 45, 60, 40, 0x2000), + CAM_FUNCDATA_SPEC5(-20, 80, 250, 6, 45, 60, 40, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetNormal1ModeJumpData[] = { - CAM_FUNCDATA_JUMP1(0, 250, 400, 15, 50, 60, 30, 0x0000), + CAM_FUNCDATA_JUMP1(0, 250, 400, 15, 50, 60, 30, CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetNormal1ModeFreeFallData[] = { - CAM_FUNCDATA_JUMP1(0, 200, 400, 30, 80, 60, 20, 0x0000), + CAM_FUNCDATA_JUMP1(0, 200, 400, 30, 80, 60, 20, CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetNormal1ModeClimbData[] = { - CAM_FUNCDATA_JUMP2(-20, 200, 400, 20, 5, 5, 60, 40, 0x0000), + CAM_FUNCDATA_JUMP2(-20, 200, 400, 20, 5, 5, 60, 40, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetNormal1ModeClimbZData[] = { - CAM_FUNCDATA_JUMP2(-20, 250, 400, 20, 999, 5, 60, 40, 0x2006), + CAM_FUNCDATA_JUMP2(-20, 250, 400, 20, 999, 5, 60, 40, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, JUMP2_FLAG_2 | JUMP2_FLAG_1)), }; CameraModeValue sSetNormal1ModeChargeData[] = { - CAM_FUNCDATA_BATT4(0, 300, 50, 2, 80, 20, 0xF000), + CAM_FUNCDATA_BATT4(0, 300, 50, 2, 80, 20, CAM_INTERFACE_FIELD(CAM_LETTERBOX_IGNORE, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetNormal1ModeHangData[] = { - CAM_FUNCDATA_UNIQ1(-80, 200, 400, 40, 60, 10, 0x0000), + CAM_FUNCDATA_UNIQ1(-80, 200, 400, 40, 60, 10, CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetNormal1ModeHangZData[] = { - CAM_FUNCDATA_UNIQ1(-120, 400, 400, 70, 45, 10, 0x2000), + CAM_FUNCDATA_UNIQ1(-120, 400, 400, 70, 45, 10, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetNormal1ModeStillData[] = { - CAM_FUNCDATA_NORM1(0, 200, 400, 10, 100, 20, 100, 60, 5, 0xF003), + CAM_FUNCDATA_NORM1( + 0, 200, 400, 10, 100, 20, 100, 60, 5, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_IGNORE, CAM_HUD_VISIBILITY_ALL, NORMAL1_FLAG_1 | NORMAL1_FLAG_0)), }; /** @@ -364,51 +399,65 @@ CameraModeValue sSetNormal1ModeStillData[] = { */ CameraModeValue sSetDungeon0ModeNormalData[] = { - CAM_FUNCDATA_NORM1(-10, 150, 250, 5, 10, 5, 30, 60, 60, 0x0003), + CAM_FUNCDATA_NORM1( + -10, 150, 250, 5, 10, 5, 30, 60, 60, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, NORMAL1_FLAG_1 | NORMAL1_FLAG_0)), }; CameraModeValue sSetDungeon0ModeTargetData[] = { - CAM_FUNCDATA_PARA1(-20, 150, 0, 0, 5, 5, 45, 50, 0x200A, -40, 20), + CAM_FUNCDATA_PARA1( + -20, 150, 0, 0, 5, 5, 45, 50, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, PARALLEL1_FLAG_3 | PARALLEL1_FLAG_1), -40, + 20), }; CameraModeValue sSetDungeon0ModeFollowTargetData[] = { - CAM_FUNCDATA_KEEP1(-20, 120, 140, 25, 45, -5, 15, 15, 45, 50, 0x2001, -40, 20), + CAM_FUNCDATA_KEEP1(-20, 120, 140, 25, 45, -5, 15, 15, 45, 50, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, KEEPON1_FLAG_0), -40, 20), }; CameraModeValue sSetDungeon0ModeBattleData[] = { - CAM_FUNCDATA_BATT1(-20, 180, 10, 80, 0, 10, 25, 45, 80, 0x2002, -40, 25), + CAM_FUNCDATA_BATT1(-20, 180, 10, 80, 0, 10, 25, 45, 80, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, BATTLE1_FLAG_1), -40, 25), }; CameraModeValue sSetDungeon0ModeJumpData[] = { - CAM_FUNCDATA_JUMP1(-10, 150, 250, 10, 50, 60, 40, 0x0000), + CAM_FUNCDATA_JUMP1(-10, 150, 250, 10, 50, 60, 40, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetDungeon0ModeFreeFallData[] = { - CAM_FUNCDATA_JUMP1(-10, 150, 250, 10, 80, 60, 20, 0x0000), + CAM_FUNCDATA_JUMP1(-10, 150, 250, 10, 80, 60, 20, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetDungeon0ModeClimbData[] = { - CAM_FUNCDATA_JUMP2(-40, 150, 250, 20, 5, 5, 60, 40, 0x0000), + CAM_FUNCDATA_JUMP2(-40, 150, 250, 20, 5, 5, 60, 40, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetDungeon0ModeClimbZData[] = { - CAM_FUNCDATA_JUMP2(-40, 250, 250, 20, 999, 5, 60, 40, 0x2006), + CAM_FUNCDATA_JUMP2(-40, 250, 250, 20, 999, 5, 60, 40, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, JUMP2_FLAG_2 | JUMP2_FLAG_1)), }; CameraModeValue sSetDungeon0ModeChargeData[] = { - CAM_FUNCDATA_BATT4(-10, 300, 50, 2, 80, 20, 0xF000), + CAM_FUNCDATA_BATT4(-10, 300, 50, 2, 80, 20, CAM_INTERFACE_FIELD(CAM_LETTERBOX_IGNORE, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetDungeon0ModeHangData[] = { - CAM_FUNCDATA_UNIQ1(-80, 150, 250, 40, 60, 10, 0x0000), + CAM_FUNCDATA_UNIQ1(-80, 150, 250, 40, 60, 10, CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetDungeon0ModeHangZData[] = { - CAM_FUNCDATA_UNIQ1(-120, 250, 250, 70, 45, 10, 0x2000), + CAM_FUNCDATA_UNIQ1(-120, 250, 250, 70, 45, 10, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetDungeon0ModeStillData[] = { - CAM_FUNCDATA_NORM1(-10, 150, 250, 5, 100, 5, 100, 60, 5, 0xF003), + CAM_FUNCDATA_NORM1( + -10, 150, 250, 5, 100, 5, 100, 60, 5, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_IGNORE, CAM_HUD_VISIBILITY_ALL, NORMAL1_FLAG_1 | NORMAL1_FLAG_0)), }; /** @@ -418,47 +467,60 @@ CameraModeValue sSetDungeon0ModeStillData[] = { */ CameraModeValue sSetDungeon1ModeNormalData[] = { - CAM_FUNCDATA_NORM1(-40, 150, 150, 0, 10, 5, 30, 60, 60, 0x0003), + CAM_FUNCDATA_NORM1( + -40, 150, 150, 0, 10, 5, 30, 60, 60, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, NORMAL1_FLAG_1 | NORMAL1_FLAG_0)), }; CameraModeValue sSetDungeon1ModeTalkData[] = { - CAM_FUNCDATA_KEEP3(-20, 70, 200, 40, 10, 0, 5, 70, 45, 50, 10, 0x3500), + CAM_FUNCDATA_KEEP3(-20, 70, 200, 40, 10, 0, 5, 70, 45, 50, 10, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_LARGE, CAM_HUD_VISIBILITY_A_HEARTS_MAGIC_FORCE, 0)), }; CameraModeValue sSetDungeon1ModeJumpData[] = { - CAM_FUNCDATA_JUMP1(-40, 150, 150, 10, 50, 60, 40, 0x0000), + CAM_FUNCDATA_JUMP1(-40, 150, 150, 10, 50, 60, 40, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetDungeon1ModeFreeFallData[] = { - CAM_FUNCDATA_JUMP1(-40, 150, 180, 12, 80, 60, 20, 0x0000), + CAM_FUNCDATA_JUMP1(-40, 150, 180, 12, 80, 60, 20, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetDungeon1ModeClimbData[] = { - CAM_FUNCDATA_JUMP2(-40, 150, 150, 20, 5, 5, 60, 40, 0x0000), + CAM_FUNCDATA_JUMP2(-40, 150, 150, 20, 5, 5, 60, 40, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetDungeon1ModeClimbZData[] = { - CAM_FUNCDATA_JUMP2(-40, 150, 150, 20, 999, 5, 60, 40, 0x2006), + CAM_FUNCDATA_JUMP2(-40, 150, 150, 20, 999, 5, 60, 40, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, JUMP2_FLAG_2 | JUMP2_FLAG_1)), }; CameraModeValue sSetDungeon1ModeChargeData[] = { - CAM_FUNCDATA_BATT4(-40, 200, 50, 2, 80, 20, 0xF000), + CAM_FUNCDATA_BATT4(-40, 200, 50, 2, 80, 20, CAM_INTERFACE_FIELD(CAM_LETTERBOX_IGNORE, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetDungeon1ModeHangData[] = { - CAM_FUNCDATA_UNIQ1(-80, 150, 150, 40, 60, 10, 0x0000), + CAM_FUNCDATA_UNIQ1(-80, 150, 150, 40, 60, 10, CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetDungeon1ModeHangZData[] = { - CAM_FUNCDATA_UNIQ1(-120, 150, 150, 70, 45, 10, 0x2000), + CAM_FUNCDATA_UNIQ1(-120, 150, 150, 70, 45, 10, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetDungeon1ModeStillData[] = { - CAM_FUNCDATA_NORM1(-40, 150, 150, 0, 100, 5, 100, 60, 5, 0xF003), + CAM_FUNCDATA_NORM1( + -40, 150, 150, 0, 100, 5, 100, 60, 5, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_IGNORE, CAM_HUD_VISIBILITY_ALL, NORMAL1_FLAG_1 | NORMAL1_FLAG_0)), }; CameraModeValue sSetDungeon1ModePushPullData[] = { - CAM_FUNCDATA_PARA1(-40, 180, 25, 0, 5, 5, 60, 50, 0x206A, -20, 30), + CAM_FUNCDATA_PARA1(-40, 180, 25, 0, 5, 5, 60, 50, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, + PARALLEL1_FLAG_6 | PARALLEL1_FLAG_5 | PARALLEL1_FLAG_3 | PARALLEL1_FLAG_1), + -20, 30), }; /** @@ -468,22 +530,28 @@ CameraModeValue sSetDungeon1ModePushPullData[] = { */ CameraModeValue sSetNormal3ModeNormalData[] = { - CAM_FUNCDATA_JUMP3(-20, 280, 300, 20, 15, 5, 40, 60, 100, 0x0004), + CAM_FUNCDATA_JUMP3(-20, 280, 300, 20, 15, 5, 40, 60, 100, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, JUMP3_FLAG_2)), }; CameraModeValue sSetNormal3ModeTargetData[] = { - CAM_FUNCDATA_PARA1(-50, 250, 70, 0, 15, 5, 60, 100, 0x200A, -50, 20), + CAM_FUNCDATA_PARA1( + -50, 250, 70, 0, 15, 5, 60, 100, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, PARALLEL1_FLAG_3 | PARALLEL1_FLAG_1), -50, + 20), }; CameraModeValue sSetNormal3ModeTalkData[] = { - CAM_FUNCDATA_KEEP3(-30, 70, 200, 40, 10, 10, 20, 70, 45, 10, 10, 0x3500), + CAM_FUNCDATA_KEEP3(-30, 70, 200, 40, 10, 10, 20, 70, 45, 10, 10, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_LARGE, CAM_HUD_VISIBILITY_A_HEARTS_MAGIC_FORCE, 0)), }; /* * These values are for when the eye is >= OREG(45) units below the surface of the water. */ CameraModeValue sSetNormal3ModeBoomerangData[] = { - CAM_FUNCDATA_JUMP3(-40, 150, 250, -5, 18, 5, 60, 60, 40, 0x0005), + CAM_FUNCDATA_JUMP3(-40, 150, 250, -5, 18, 5, 60, 60, 40, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, JUMP3_FLAG_2 | JUMP3_FLAG_0)), }; /** @@ -493,23 +561,30 @@ CameraModeValue sSetNormal3ModeBoomerangData[] = { */ CameraModeValue sSetHorseModeNormalData[] = { - CAM_FUNCDATA_NORM3(-50, 220, 250, 10, 16, 20, 60, 100, 0x0600), + CAM_FUNCDATA_NORM3(-50, 220, 250, 10, 16, 20, 60, 100, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_A_HEARTS_MAGIC_MINIMAP_FORCE, 0)), }; CameraModeValue sSetHorseModeTargetData[] = { - CAM_FUNCDATA_NORM3(-40, 180, 220, -2, 12, 100, 45, 100, 0x2600), + CAM_FUNCDATA_NORM3(-40, 180, 220, -2, 12, 100, 45, 100, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_A_HEARTS_MAGIC_MINIMAP_FORCE, 0)), }; CameraModeValue sSetHorseModeBowArrowData[] = { - CAM_FUNCDATA_SUBJ3(-7, 14, 100, 10, 0, -30, -5, 40, 0x2600), + CAM_FUNCDATA_SUBJ3(-7, 14, 100, 10, 0, -30, -5, 40, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_A_HEARTS_MAGIC_MINIMAP_FORCE, 0)), }; CameraModeValue sSetHorseModeFollowTargetData[] = { - CAM_FUNCDATA_KEEP1(-60, 180, 220, 25, 45, -5, 15, 15, 45, 50, 0x2601, -60, 20), + CAM_FUNCDATA_KEEP1( + -60, 180, 220, 25, 45, -5, 15, 15, 45, 50, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_A_HEARTS_MAGIC_MINIMAP_FORCE, KEEPON1_FLAG_0), -60, + 20), }; CameraModeValue sSetHorseModeTalkData[] = { - CAM_FUNCDATA_KEEP3(-60, 140, 200, 40, 10, 0, 5, 70, 45, 50, 10, 0x3500), + CAM_FUNCDATA_KEEP3(-60, 140, 200, 40, 10, 0, 5, 70, 45, 50, 10, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_LARGE, CAM_HUD_VISIBILITY_A_HEARTS_MAGIC_FORCE, 0)), }; /** @@ -519,11 +594,13 @@ CameraModeValue sSetHorseModeTalkData[] = { */ CameraModeValue sSetBossGohmaModeNormalData[] = { - CAM_FUNCDATA_NORM1(-20, 150, 250, 0, 15, 5, 40, 60, 60, 0x0001), + CAM_FUNCDATA_NORM1(-20, 150, 250, 0, 15, 5, 40, 60, 60, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, NORMAL1_FLAG_0)), }; CameraModeValue sSetBossGohmaModeBattleData[] = { - CAM_FUNCDATA_BATT1(-30, 150, 10, 40, -10, 0, 25, 60, 40, 0x2002, -50, 20), + CAM_FUNCDATA_BATT1(-30, 150, 10, 40, -10, 0, 25, 60, 40, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, BATTLE1_FLAG_1), -50, 20), }; /** @@ -533,11 +610,14 @@ CameraModeValue sSetBossGohmaModeBattleData[] = { */ CameraModeValue sSetBossDodongoModeNormalData[] = { - CAM_FUNCDATA_NORM1(0, 150, 300, 0, 12, 5, 70, 70, 40, 0x0003), + CAM_FUNCDATA_NORM1( + 0, 150, 300, 0, 12, 5, 70, 70, 40, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, NORMAL1_FLAG_1 | NORMAL1_FLAG_0)), }; CameraModeValue sSetBossDodongoModeBattleData[] = { - CAM_FUNCDATA_BATT1(-20, 160, 10, 60, -5, 0, 25, 70, 50, 0x2002, -40, 20), + CAM_FUNCDATA_BATT1(-20, 160, 10, 60, -5, 0, 25, 70, 50, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, BATTLE1_FLAG_1), -40, 20), }; /** @@ -547,11 +627,14 @@ CameraModeValue sSetBossDodongoModeBattleData[] = { */ CameraModeValue sSetBossBarinadeModeNormalData[] = { - CAM_FUNCDATA_NORM1(-20, 150, 300, -5, 15, 5, 40, 70, 70, 0x0003), + CAM_FUNCDATA_NORM1( + -20, 150, 300, -5, 15, 5, 40, 70, 70, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, NORMAL1_FLAG_1 | NORMAL1_FLAG_0)), }; CameraModeValue sSetBossBarinadeModeBattleData[] = { - CAM_FUNCDATA_BATT1(-30, 125, 10, 10, 0, 0, 50, 60, 50, 0x2002, -50, 20), + CAM_FUNCDATA_BATT1(-30, 125, 10, 10, 0, 0, 50, 60, 50, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, BATTLE1_FLAG_1), -50, 20), }; /** @@ -561,11 +644,14 @@ CameraModeValue sSetBossBarinadeModeBattleData[] = { */ CameraModeValue sSetBossPhantomGanonModeNormalData[] = { - CAM_FUNCDATA_NORM1(10, 150, 250, 0, 15, 15, 40, 60, 100, 0x0003), + CAM_FUNCDATA_NORM1( + 10, 150, 250, 0, 15, 15, 40, 60, 100, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, NORMAL1_FLAG_1 | NORMAL1_FLAG_0)), }; CameraModeValue sSetBossPhantomGanonModeBattleData[] = { - CAM_FUNCDATA_BATT1(-20, 200, 45, 40, 5, -5, 35, 60, 100, 0x2002, -40, 60), + CAM_FUNCDATA_BATT1(-20, 200, 45, 40, 5, -5, 35, 60, 100, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, BATTLE1_FLAG_1), -40, 60), }; /** @@ -575,11 +661,14 @@ CameraModeValue sSetBossPhantomGanonModeBattleData[] = { */ CameraModeValue sSetBossVolvagiaModeNormalData[] = { - CAM_FUNCDATA_NORM1(-20, 500, 500, 10, 16, 10, 40, 60, 80, 0x0003), + CAM_FUNCDATA_NORM1( + -20, 500, 500, 10, 16, 10, 40, 60, 80, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, NORMAL1_FLAG_1 | NORMAL1_FLAG_0)), }; CameraModeValue sSetBossVolvagiaModeBattleData[] = { - CAM_FUNCDATA_BATT1(-20, 200, 20, 60, 0, 10, 15, 45, 50, 0x2002, -40, 20), + CAM_FUNCDATA_BATT1(-20, 200, 20, 60, 0, 10, 15, 45, 50, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, BATTLE1_FLAG_1), -40, 20), }; /** @@ -589,15 +678,21 @@ CameraModeValue sSetBossVolvagiaModeBattleData[] = { */ CameraModeValue sSetBossBongoModeNormalData[] = { - CAM_FUNCDATA_NORM1(-20, 500, 500, 10, 20, 10, 40, 60, 80, 0x0083), + CAM_FUNCDATA_NORM1(-20, 500, 500, 10, 20, 10, 40, 60, 80, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, + NORMAL1_FLAG_7 | NORMAL1_FLAG_1 | NORMAL1_FLAG_0)), }; CameraModeValue sSetBossBongoModeBattleData[] = { - CAM_FUNCDATA_BATT1(-20, 200, 20, 60, 0, 10, 15, 45, 50, 0x2082, -40, 20), + CAM_FUNCDATA_BATT1( + -20, 200, 20, 60, 0, 10, 15, 45, 50, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, BATTLE1_FLAG_7 | BATTLE1_FLAG_1), -40, 20), }; CameraModeValue sSetBossBongoModeJumpData[] = { - CAM_FUNCDATA_NORM1(-20, 500, 500, 10, 20, 10, 80, 60, 80, 0x0083), + CAM_FUNCDATA_NORM1(-20, 500, 500, 10, 20, 10, 80, 60, 80, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, + NORMAL1_FLAG_7 | NORMAL1_FLAG_1 | NORMAL1_FLAG_0)), }; /** @@ -607,11 +702,14 @@ CameraModeValue sSetBossBongoModeJumpData[] = { */ CameraModeValue sSetBossMorphaModeNormalData[] = { - CAM_FUNCDATA_NORM1(-20, 100, 150, -10, 15, 10, 40, 80, 60, 0x0003), + CAM_FUNCDATA_NORM1( + -20, 100, 150, -10, 15, 10, 40, 80, 60, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, NORMAL1_FLAG_1 | NORMAL1_FLAG_0)), }; CameraModeValue sSetBossMorphaModeBattleData[] = { - CAM_FUNCDATA_BATT1(-20, 200, 10, 80, -10, 10, 25, 70, 40, 0x2002, -40, 20), + CAM_FUNCDATA_BATT1(-20, 200, 10, 80, -10, 10, 25, 70, 40, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, BATTLE1_FLAG_1), -40, 20), }; /** @@ -621,15 +719,20 @@ CameraModeValue sSetBossMorphaModeBattleData[] = { */ CameraModeValue sSetBossTwinrovaPlatformModeNormalData[] = { - CAM_FUNCDATA_NORM1(-20, 150, 300, 0, 20, 10, 40, 60, 80, 0x0003), + CAM_FUNCDATA_NORM1( + -20, 150, 300, 0, 20, 10, 40, 60, 80, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, NORMAL1_FLAG_1 | NORMAL1_FLAG_0)), }; CameraModeValue sSetBossTwinrovaModeBattleData[] = { - CAM_FUNCDATA_BATT1(0, 400, 0, 60, -10, 5, 25, 45, 40, 0x2002, -20, 20), + CAM_FUNCDATA_BATT1(0, 400, 0, 60, -10, 5, 25, 45, 40, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, BATTLE1_FLAG_1), -20, 20), }; CameraModeValue sSetBossTwinrovaFloorModeNormalData[] = { - CAM_FUNCDATA_NORM1(-10, 150, 200, -10, 12, 10, 40, 60, 50, 0x0003), + CAM_FUNCDATA_NORM1( + -10, 150, 200, -10, 12, 10, 40, 60, 50, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, NORMAL1_FLAG_1 | NORMAL1_FLAG_0)), }; /** @@ -639,11 +742,12 @@ CameraModeValue sSetBossTwinrovaFloorModeNormalData[] = { */ CameraModeValue sSetBossGanondorfModeNormalData[] = { - CAM_FUNCDATA_NORM1(40, 330, 330, -5, 15, 15, 40, 60, 100, 0x0000), + CAM_FUNCDATA_NORM1(40, 330, 330, -5, 15, 15, 40, 60, 100, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetBossGanondorfModeChargeData[] = { - CAM_FUNCDATA_BATT4(-40, 250, 0, 2, 80, 20, 0xF000), + CAM_FUNCDATA_BATT4(-40, 250, 0, 2, 80, 20, CAM_INTERFACE_FIELD(CAM_LETTERBOX_IGNORE, CAM_HUD_VISIBILITY_ALL, 0)), }; /** @@ -653,11 +757,14 @@ CameraModeValue sSetBossGanondorfModeChargeData[] = { */ CameraModeValue sSetBossGanonModeNormalData[] = { - CAM_FUNCDATA_NORM1(-20, 500, 500, 10, 20, 10, 40, 60, 80, 0x0003), + CAM_FUNCDATA_NORM1( + -20, 500, 500, 10, 20, 10, 40, 60, 80, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, NORMAL1_FLAG_1 | NORMAL1_FLAG_0)), }; CameraModeValue sSetBossGanonModeBattleData[] = { - CAM_FUNCDATA_BATT1(-20, 180, 20, 60, 0, 10, 25, 45, 50, 0x2002, -40, 20), + CAM_FUNCDATA_BATT1(-20, 180, 20, 60, 0, 10, 25, 45, 50, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, BATTLE1_FLAG_1), -40, 20), }; /** @@ -667,11 +774,13 @@ CameraModeValue sSetBossGanonModeBattleData[] = { */ CameraModeValue sSetTowerClimbModeNormalData[] = { - CAM_FUNCDATA_NORM2(0, 120, 280, 60, 8, 40, 60, 50, 0x0000), + CAM_FUNCDATA_NORM2(0, 120, 280, 60, 8, 40, 60, 50, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetTowerClimbModeJumpData[] = { - CAM_FUNCDATA_NORM2(0, 120, 280, 60, 8, 40, 60, 50, 0x0080), + CAM_FUNCDATA_NORM2(0, 120, 280, 60, 8, 40, 60, 50, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, NORMAL2_FLAG_7)), }; /** @@ -681,11 +790,13 @@ CameraModeValue sSetTowerClimbModeJumpData[] = { */ CameraModeValue sSetTowerUnusedModeNormalData[] = { - CAM_FUNCDATA_NORM2(0, 270, 300, 120, 8, 60, 60, 100, 0x0000), + CAM_FUNCDATA_NORM2(0, 270, 300, 120, 8, 60, 60, 100, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetTowerUnusedModeJumpData[] = { - CAM_FUNCDATA_NORM2(0, 270, 300, 120, 6, 60, 60, 100, 0x0000), + CAM_FUNCDATA_NORM2(0, 270, 300, 120, 6, 60, 60, 100, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0)), }; /** @@ -695,15 +806,16 @@ CameraModeValue sSetTowerUnusedModeJumpData[] = { */ CameraModeValue sSetMarketBalconyModeNormalData[] = { - CAM_FUNCDATA_FIXD1(-40, 100, 60, 0x0000), + CAM_FUNCDATA_FIXD1(-40, 100, 60, CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetMarketBalconyModeFollowTargetData[] = { - CAM_FUNCDATA_FIXD1(-40, 100, 60, 0x2000), + CAM_FUNCDATA_FIXD1(-40, 100, 60, CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetMarketBalconyModeTalkData[] = { - CAM_FUNCDATA_FIXD1(-40, 100, 60, 0x3500), + CAM_FUNCDATA_FIXD1(-40, 100, 60, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_LARGE, CAM_HUD_VISIBILITY_A_HEARTS_MAGIC_FORCE, 0)), }; /** @@ -713,7 +825,7 @@ CameraModeValue sSetMarketBalconyModeTalkData[] = { */ CameraModeValue sSetChuBowlingModeNormalData[] = { - CAM_FUNCDATA_FIXD1(-40, 25, 60, 0x0000), + CAM_FUNCDATA_FIXD1(-40, 25, 60, CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0)), }; /** @@ -723,7 +835,7 @@ CameraModeValue sSetChuBowlingModeNormalData[] = { */ CameraModeValue sSetPivotCrawlspaceModeNormalData[] = { - CAM_FUNCDATA_FIXD2(-40, 50, 80, 60, 0x0001), + CAM_FUNCDATA_FIXD2(-40, 50, 80, 60, CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, FIXED2_FLAG_0)), }; /** @@ -733,7 +845,7 @@ CameraModeValue sSetPivotCrawlspaceModeNormalData[] = { */ CameraModeValue sSetPivotShopBrowsingModeNormalData[] = { - CAM_FUNCDATA_DATA4(-40, 60, 0x3F00), + CAM_FUNCDATA_DATA4(-40, 60, CAM_INTERFACE_FIELD(CAM_LETTERBOX_LARGE, CAM_HUD_VISIBILITY_IGNORE, 0)), }; /** @@ -743,7 +855,7 @@ CameraModeValue sSetPivotShopBrowsingModeNormalData[] = { */ CameraModeValue sSetPivotInFrontAndFromSideModeNormalData[] = { - CAM_FUNCDATA_FIXD4(-40, 50, 80, 60, 0x0004), + CAM_FUNCDATA_FIXD4(-40, 50, 80, 60, CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, FIXED4_FLAG_2)), }; /** @@ -753,7 +865,7 @@ CameraModeValue sSetPivotInFrontAndFromSideModeNormalData[] = { */ CameraModeValue sDataOnlyNullFlags[] = { - CAM_FUNCDATA_FLAGS(0x0000), + CAM_FUNCDATA_INTERFACE_FIELD(CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0)), }; /** @@ -763,7 +875,7 @@ CameraModeValue sDataOnlyNullFlags[] = { */ CameraModeValue sSetPrerendFixedModeFollowTargetData[] = { - CAM_FUNCDATA_FLAGS(0x2000), + CAM_FUNCDATA_INTERFACE_FIELD(CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, 0)), }; /** @@ -773,15 +885,15 @@ CameraModeValue sSetPrerendFixedModeFollowTargetData[] = { */ CameraModeValue sSetPrerendPivotModeNormalData[] = { - CAM_FUNCDATA_UNIQ7(60, 0x0000), + CAM_FUNCDATA_UNIQ7(60, CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetPrerendPivotModeFollowTargetData[] = { - CAM_FUNCDATA_UNIQ7(60, 0x2000), + CAM_FUNCDATA_UNIQ7(60, CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetPrerendPivotModeTalkData[] = { - CAM_FUNCDATA_KEEP0(30, 0, 4, 0x3500), + CAM_FUNCDATA_KEEP0(30, 0, 4, CAM_INTERFACE_FIELD(CAM_LETTERBOX_LARGE, CAM_HUD_VISIBILITY_A_HEARTS_MAGIC_FORCE, 0)), }; /** @@ -791,7 +903,7 @@ CameraModeValue sSetPrerendPivotModeTalkData[] = { */ CameraModeValue sSetDoor0ModeNormalData[] = { - CAM_FUNCDATA_UNIQ3(-40, 60, 0x3200), + CAM_FUNCDATA_UNIQ3(-40, 60, CAM_INTERFACE_FIELD(CAM_LETTERBOX_LARGE, CAM_HUD_VISIBILITY_NOTHING_ALT, 0)), }; /** @@ -801,11 +913,14 @@ CameraModeValue sSetDoor0ModeNormalData[] = { */ CameraModeValue sSetDoorCModeNormalData[] = { - CAM_FUNCDATA_SPEC9(-5, 60, 0x3202), + CAM_FUNCDATA_SPEC9(-5, 60, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_LARGE, CAM_HUD_VISIBILITY_NOTHING_ALT, SPECIAL9_FLAG_1)), }; CameraModeValue sSetDoorCModeTargetData[] = { - CAM_FUNCDATA_SPEC9(-5, 60, 0x320A), + CAM_FUNCDATA_SPEC9( + -5, 60, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_LARGE, CAM_HUD_VISIBILITY_NOTHING_ALT, SPECIAL9_FLAG_3 | SPECIAL9_FLAG_1)), }; /** @@ -816,7 +931,8 @@ CameraModeValue sSetDoorCModeTargetData[] = { // Camera_Subj4 only reads one setting which is used for flags CameraModeValue sSetCrawlspaceModeNormalData[] = { - CAM_FUNCDATA_SUBJ4(0x0000, 2, 30, 10, 45, 0x3200), + CAM_FUNCDATA_SUBJ4(CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0), 2, 30, 10, 45, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_LARGE, CAM_HUD_VISIBILITY_NOTHING_ALT, 0)), }; /** @@ -826,7 +942,7 @@ CameraModeValue sSetCrawlspaceModeNormalData[] = { */ CameraModeValue sSetStart1ModeNormalData[] = { - CAM_FUNCDATA_FLAGS(0x0001), + CAM_FUNCDATA_INTERFACE_FIELD(CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, UNIQUE0_FLAG_0)), }; /** @@ -836,7 +952,7 @@ CameraModeValue sSetStart1ModeNormalData[] = { */ CameraModeValue sSetFree0ModeNormalData[] = { - CAM_FUNCDATA_FLAGS(0xFF00), + CAM_FUNCDATA_INTERFACE_FIELD(CAM_INTERFACE_FIELD(CAM_LETTERBOX_IGNORE, CAM_HUD_VISIBILITY_IGNORE, 0)), }; /** @@ -846,7 +962,7 @@ CameraModeValue sSetFree0ModeNormalData[] = { */ CameraModeValue sSetFree1ModeNormalData[] = { - CAM_FUNCDATA_FLAGS(0xFF01), + CAM_FUNCDATA_INTERFACE_FIELD(CAM_INTERFACE_FIELD(CAM_LETTERBOX_IGNORE, CAM_HUD_VISIBILITY_IGNORE, UNIQUE6_FLAG_0)), }; /** @@ -856,7 +972,7 @@ CameraModeValue sSetFree1ModeNormalData[] = { */ CameraModeValue sSetPivotCornerModeNormalData[] = { - CAM_FUNCDATA_FIXD2(-40, 100, 80, 60, 0x0000), + CAM_FUNCDATA_FIXD2(-40, 100, 80, 60, CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0)), }; /** @@ -866,11 +982,11 @@ CameraModeValue sSetPivotCornerModeNormalData[] = { */ CameraModeValue sSetPivotWaterSurfaceModeNormalData[] = { - CAM_FUNCDATA_UNIQ2(-40, 60, 60, 0x0002), + CAM_FUNCDATA_UNIQ2(-40, 60, 60, CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, UNIQUE2_FLAG_1)), }; CameraModeValue sSetPivotWaterSurfaceModeTargetData[] = { - CAM_FUNCDATA_UNIQ2(-30, 45, 100, 0x2001), + CAM_FUNCDATA_UNIQ2(-30, 45, 100, CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, UNIQUE2_FLAG_0)), }; /** @@ -879,8 +995,8 @@ CameraModeValue sSetPivotWaterSurfaceModeTargetData[] = { *===================================================================== */ -CameraModeValue sDataOnlyInterfaceFlags[] = { - CAM_FUNCDATA_FLAGS(0x3200), +CameraModeValue sDataOnlyInterfaceField[] = { + CAM_FUNCDATA_INTERFACE_FIELD(CAM_INTERFACE_FIELD(CAM_LETTERBOX_LARGE, CAM_HUD_VISIBILITY_NOTHING_ALT, 0)), }; /** @@ -890,11 +1006,14 @@ CameraModeValue sDataOnlyInterfaceFlags[] = { */ CameraModeValue sSetForestBirdsEyeModeNormalData[] = { - CAM_FUNCDATA_PARA1(-50, 450, 40, 180, 5, 5, 70, 30, 0x000C, -50, 20), + CAM_FUNCDATA_PARA1( + -50, 450, 40, 180, 5, 5, 70, 30, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, PARALLEL1_FLAG_3 | PARALLEL1_FLAG_2), -50, 20), }; CameraModeValue sSetForestBirdsEyeModeTalkData[] = { - CAM_FUNCDATA_FLAGS(0x3501), + CAM_FUNCDATA_INTERFACE_FIELD( + CAM_INTERFACE_FIELD(CAM_LETTERBOX_LARGE, CAM_HUD_VISIBILITY_A_HEARTS_MAGIC_FORCE, PARALLEL3_FLAG_0)), }; /** @@ -905,7 +1024,7 @@ CameraModeValue sSetForestBirdsEyeModeTalkData[] = { // Also set to but unused by function Demo4 CameraModeValue sSetSlowChestCsModeNormalData[] = { - CAM_FUNCDATA_DEMO3(60, 30, 0x3200), + CAM_FUNCDATA_DEMO3(60, 30, CAM_INTERFACE_FIELD(CAM_LETTERBOX_LARGE, CAM_HUD_VISIBILITY_NOTHING_ALT, 0)), }; /** @@ -915,7 +1034,8 @@ CameraModeValue sSetSlowChestCsModeNormalData[] = { */ CameraModeValue sSetCs3ModeNormalData[] = { - CAM_FUNCDATA_FLAGS(0x3212), + CAM_FUNCDATA_INTERFACE_FIELD( + CAM_INTERFACE_FIELD(CAM_LETTERBOX_LARGE, CAM_HUD_VISIBILITY_NOTHING_ALT, DEMO9_FLAG_4 | DEMO9_FLAG_1)), }; /** @@ -925,27 +1045,34 @@ CameraModeValue sSetCs3ModeNormalData[] = { */ CameraModeValue sSetBeanGenericModeNormalData[] = { - CAM_FUNCDATA_NORM1(-50, 300, 300, 50, 20, 10, 50, 70, 40, 0x0002), + CAM_FUNCDATA_NORM1(-50, 300, 300, 50, 20, 10, 50, 70, 40, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, NORMAL1_FLAG_1)), }; CameraModeValue sSetBeanGenericModeTargetData[] = { - CAM_FUNCDATA_PARA1(-50, 300, 10, 0, 5, 5, 45, 50, 0x200A, -40, 20), + CAM_FUNCDATA_PARA1( + -50, 300, 10, 0, 5, 5, 45, 50, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, PARALLEL1_FLAG_3 | PARALLEL1_FLAG_1), -40, + 20), }; CameraModeValue sSetBeanGenericModeJumpData[] = { - CAM_FUNCDATA_JUMP1(-50, 300, 300, 12, 35, 60, 40, 0x0000), + CAM_FUNCDATA_JUMP1(-50, 300, 300, 12, 35, 60, 40, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetBeanGenericModeHangData[] = { - CAM_FUNCDATA_UNIQ1(-80, 300, 300, 60, 70, 30, 0x0000), + CAM_FUNCDATA_UNIQ1(-80, 300, 300, 60, 70, 30, CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetBeanGenericModeHangZData[] = { - CAM_FUNCDATA_UNIQ1(-120, 300, 300, 70, 50, 30, 0x2000), + CAM_FUNCDATA_UNIQ1(-120, 300, 300, 70, 50, 30, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetBeanGenericModeStillData[] = { - CAM_FUNCDATA_NORM1(-20, 300, 350, 50, 100, 10, 100, 70, 30, 0xF002), + CAM_FUNCDATA_NORM1(-20, 300, 350, 50, 100, 10, 100, 70, 30, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_IGNORE, CAM_HUD_VISIBILITY_ALL, NORMAL1_FLAG_1)), }; /** @@ -955,27 +1082,34 @@ CameraModeValue sSetBeanGenericModeStillData[] = { */ CameraModeValue sSetBeanLostWoodsModeNormalData[] = { - CAM_FUNCDATA_NORM1(-50, 200, 200, 20, 16, 10, 50, 60, 50, 0x0002), + CAM_FUNCDATA_NORM1(-50, 200, 200, 20, 16, 10, 50, 60, 50, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, NORMAL1_FLAG_1)), }; CameraModeValue sSetBeanLostWoodsModeTargetData[] = { - CAM_FUNCDATA_PARA1(-50, 200, 40, 0, 5, 5, 45, 50, 0x200A, -40, 20), + CAM_FUNCDATA_PARA1( + -50, 200, 40, 0, 5, 5, 45, 50, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, PARALLEL1_FLAG_3 | PARALLEL1_FLAG_1), -40, + 20), }; CameraModeValue sSetBeanLostWoodsModeJumpData[] = { - CAM_FUNCDATA_JUMP1(-50, 150, 250, 12, 35, 60, 40, 0x0000), + CAM_FUNCDATA_JUMP1(-50, 150, 250, 12, 35, 60, 40, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetBeanLostWoodsModeHangData[] = { - CAM_FUNCDATA_UNIQ1(-80, 200, 200, 40, 60, 30, 0x0000), + CAM_FUNCDATA_UNIQ1(-80, 200, 200, 40, 60, 30, CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetBeanLostWoodsModeHangZData[] = { - CAM_FUNCDATA_UNIQ1(-120, 200, 200, 60, 50, 30, 0x2000), + CAM_FUNCDATA_UNIQ1(-120, 200, 200, 60, 50, 30, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetBeanLostWoodsModeStillData[] = { - CAM_FUNCDATA_NORM1(-20, 200, 250, 20, 100, 10, 100, 60, 30, 0xF002), + CAM_FUNCDATA_NORM1(-20, 200, 250, 20, 100, 10, 100, 60, 30, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_IGNORE, CAM_HUD_VISIBILITY_ALL, NORMAL1_FLAG_1)), }; /** @@ -985,7 +1119,9 @@ CameraModeValue sSetBeanLostWoodsModeStillData[] = { */ CameraModeValue sSetSceneUnusedModeNormalData[] = { - CAM_FUNCDATA_SPEC9(-30, 60, 0x010A), + CAM_FUNCDATA_SPEC9( + -30, 60, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_NOTHING, SPECIAL9_FLAG_3 | SPECIAL9_FLAG_1)), }; /** @@ -995,7 +1131,8 @@ CameraModeValue sSetSceneUnusedModeNormalData[] = { */ CameraModeValue sSetSceneTransitionModeNormalData[] = { - CAM_FUNCDATA_UNIQ2(-20, 150, 60, 0x0210), + CAM_FUNCDATA_UNIQ2(-20, 150, 60, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_NOTHING_ALT, UNIQUE2_FLAG_4)), }; /** @@ -1005,15 +1142,20 @@ CameraModeValue sSetSceneTransitionModeNormalData[] = { */ CameraModeValue sSetBigOctoModeNormalData[] = { - CAM_FUNCDATA_NORM1(0, 400, 500, 35, 14, 5, 20, 60, 40, 0x0012), + CAM_FUNCDATA_NORM1( + 0, 400, 500, 35, 14, 5, 20, 60, 40, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, NORMAL1_FLAG_4 | NORMAL1_FLAG_1)), }; CameraModeValue sSetBigOctoModeBattleData[] = { - CAM_FUNCDATA_BATT1(-20, 250, 5, 10, 30, 20, 25, 45, 60, 0x2002, -40, 25), + CAM_FUNCDATA_BATT1(-20, 250, 5, 10, 30, 20, 25, 45, 60, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, BATTLE1_FLAG_1), -40, 25), }; CameraModeValue sSetBigOctoModeStillData[] = { - CAM_FUNCDATA_NORM1(0, 300, 500, 60, 8, 5, 60, 60, 30, 0x0012), + CAM_FUNCDATA_NORM1( + 0, 300, 500, 60, 8, 5, 60, 60, 30, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, NORMAL1_FLAG_4 | NORMAL1_FLAG_1)), }; /** @@ -1023,19 +1165,29 @@ CameraModeValue sSetBigOctoModeStillData[] = { */ CameraModeValue sSetMeadowBirdsEyeModeNormalData[] = { - CAM_FUNCDATA_NORM1(-20, 500, 500, 80, 20, 10, 70, 70, 80, 0x0012), + CAM_FUNCDATA_NORM1( + -20, 500, 500, 80, 20, 10, 70, 70, 80, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, NORMAL1_FLAG_4 | NORMAL1_FLAG_1)), }; CameraModeValue sSetMeadowBirdsEyeModeTargetData[] = { - CAM_FUNCDATA_PARA1(-20, 500, 80, 0, 5, 5, 70, 80, 0x201A, -40, 40), + CAM_FUNCDATA_PARA1(-20, 500, 80, 0, 5, 5, 70, 80, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, + PARALLEL1_FLAG_4 | PARALLEL1_FLAG_3 | PARALLEL1_FLAG_1), + -40, 40), }; CameraModeValue sSetMeadowBirdsEyeModeBattleData[] = { - CAM_FUNCDATA_PARA1(-20, 500, 80, 0, 5, 5, 60, 80, 0x201A, -40, 40), + CAM_FUNCDATA_PARA1(-20, 500, 80, 0, 5, 5, 60, 80, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, + PARALLEL1_FLAG_4 | PARALLEL1_FLAG_3 | PARALLEL1_FLAG_1), + -40, 40), }; CameraModeValue sSetMeadowBirdsEyeModeClimbData[] = { - CAM_FUNCDATA_NORM1(-20, 500, 500, 80, 20, 10, 80, 60, 20, 0x0012), + CAM_FUNCDATA_NORM1( + -20, 500, 500, 80, 20, 10, 80, 60, 20, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, NORMAL1_FLAG_4 | NORMAL1_FLAG_1)), }; /** @@ -1045,19 +1197,29 @@ CameraModeValue sSetMeadowBirdsEyeModeClimbData[] = { */ CameraModeValue sSetMeadowUnusedModeNormalData[] = { - CAM_FUNCDATA_NORM1(-20, 750, 750, 80, 20, 10, 70, 70, 80, 0x0012), + CAM_FUNCDATA_NORM1( + -20, 750, 750, 80, 20, 10, 70, 70, 80, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, NORMAL1_FLAG_4 | NORMAL1_FLAG_1)), }; CameraModeValue sSetMeadowUnusedModeTargetData[] = { - CAM_FUNCDATA_PARA1(-20, 750, 80, 0, 5, 5, 70, 80, 0x201A, -40, 40), + CAM_FUNCDATA_PARA1(-20, 750, 80, 0, 5, 5, 70, 80, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, + PARALLEL1_FLAG_4 | PARALLEL1_FLAG_3 | PARALLEL1_FLAG_1), + -40, 40), }; CameraModeValue sSetMeadowUnusedModeBattleData[] = { - CAM_FUNCDATA_PARA1(-20, 750, 80, 0, 5, 5, 70, 80, 0x200A, -40, 40), + CAM_FUNCDATA_PARA1( + -20, 750, 80, 0, 5, 5, 70, 80, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, PARALLEL1_FLAG_3 | PARALLEL1_FLAG_1), -40, + 40), }; CameraModeValue sSetMeadowUnusedModeClimbData[] = { - CAM_FUNCDATA_NORM1(-20, 750, 750, 80, 20, 10, 80, 70, 20, 0x0012), + CAM_FUNCDATA_NORM1( + -20, 750, 750, 80, 20, 10, 80, 70, 20, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, NORMAL1_FLAG_4 | NORMAL1_FLAG_1)), }; /** @@ -1067,19 +1229,27 @@ CameraModeValue sSetMeadowUnusedModeClimbData[] = { */ CameraModeValue sSetFireBirdsEyeModeNormalData[] = { - CAM_FUNCDATA_NORM1(-20, 500, 500, 80, 20, 10, 70, 70, 80, 0x0002), + CAM_FUNCDATA_NORM1(-20, 500, 500, 80, 20, 10, 70, 70, 80, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, NORMAL1_FLAG_1)), }; CameraModeValue sSetFireBirdsEyeModeTargetData[] = { - CAM_FUNCDATA_PARA1(-20, 500, 80, 0, 5, 5, 70, 80, 0x200A, -40, 40), + CAM_FUNCDATA_PARA1( + -20, 500, 80, 0, 5, 5, 70, 80, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, PARALLEL1_FLAG_3 | PARALLEL1_FLAG_1), -40, + 40), }; CameraModeValue sSetFireBirdsEyeModeBattleData[] = { - CAM_FUNCDATA_PARA1(-20, 500, 80, 0, 5, 5, 60, 80, 0x200A, -40, 40), + CAM_FUNCDATA_PARA1( + -20, 500, 80, 0, 5, 5, 60, 80, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, PARALLEL1_FLAG_3 | PARALLEL1_FLAG_1), -40, + 40), }; CameraModeValue sSetFireBirdsEyeModeClimbData[] = { - CAM_FUNCDATA_NORM1(-20, 500, 500, 80, 20, 10, 80, 60, 20, 0x0002), + CAM_FUNCDATA_NORM1(-20, 500, 500, 80, 20, 10, 80, 60, 20, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, NORMAL1_FLAG_1)), }; /** @@ -1089,7 +1259,9 @@ CameraModeValue sSetFireBirdsEyeModeClimbData[] = { */ CameraModeValue sSetTurnAroundModeNormalData[] = { - CAM_FUNCDATA_KEEP4(-30, 120, -10, 170, 0, 60, 0x2502, 25, 6), + CAM_FUNCDATA_KEEP4( + -30, 120, -10, 170, 0, 60, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_A_HEARTS_MAGIC_FORCE, KEEPON4_FLAG_1), 25, 6), }; /** @@ -1099,7 +1271,7 @@ CameraModeValue sSetTurnAroundModeNormalData[] = { */ CameraModeValue sSetPivotVerticalModeNormalData[] = { - CAM_FUNCDATA_SPEC0(20, 0x3200), + CAM_FUNCDATA_SPEC0(20, CAM_INTERFACE_FIELD(CAM_LETTERBOX_LARGE, CAM_HUD_VISIBILITY_NOTHING_ALT, 0)), }; /** @@ -1109,7 +1281,8 @@ CameraModeValue sSetPivotVerticalModeNormalData[] = { */ CameraModeValue sSetNormal2and4ModeNormalData[] = { - CAM_FUNCDATA_NORM1(-20, 200, 300, 10, 12, 10, 35, 60, 60, 0x0002), + CAM_FUNCDATA_NORM1(-20, 200, 300, 10, 12, 10, 35, 60, 60, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, NORMAL1_FLAG_1)), }; /** @@ -1119,39 +1292,50 @@ CameraModeValue sSetNormal2and4ModeNormalData[] = { */ CameraModeValue sSetFishingModeNormalData[] = { - CAM_FUNCDATA_NORM1(0, 200, 300, 20, 12, 10, 35, 55, 60, 0x0F02), + CAM_FUNCDATA_NORM1(0, 200, 300, 20, 12, 10, 35, 55, 60, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_IGNORE, NORMAL1_FLAG_1)), }; CameraModeValue sSetFishingModeTargetData[] = { - CAM_FUNCDATA_PARA1(-20, 250, 0, 0, 5, 5, 45, 50, 0x2F0A, -40, 20), + CAM_FUNCDATA_PARA1( + -20, 250, 0, 0, 5, 5, 45, 50, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_IGNORE, PARALLEL1_FLAG_3 | PARALLEL1_FLAG_1), -40, + 20), }; CameraModeValue sSetFishingModeFollowTargetData[] = { - CAM_FUNCDATA_BATT1(-20, 250, 0, 80, 0, 0, 25, 55, 80, 0x2F02, -40, 25), + CAM_FUNCDATA_BATT1(-20, 250, 0, 80, 0, 0, 25, 55, 80, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_IGNORE, BATTLE1_FLAG_1), -40, 25), }; CameraModeValue sSetFishingModeTalkData[] = { - CAM_FUNCDATA_KEEP3(-30, 70, 200, 40, 10, 0, 5, 70, 45, 50, 10, 0x3F20), + CAM_FUNCDATA_KEEP3(-30, 70, 200, 40, 10, 0, 5, 70, 45, 50, 10, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_LARGE, CAM_HUD_VISIBILITY_IGNORE, KEEPON3_FLAG_5)), }; CameraModeValue sSetFishingModeFirstPersonData[] = { - CAM_FUNCDATA_SUBJ3(0, 5, 50, 10, 0, 0, 0, 45, 0x0F00), + CAM_FUNCDATA_SUBJ3(0, 5, 50, 10, 0, 0, 0, 45, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_IGNORE, 0)), }; CameraModeValue sSetFishingModeJumpData[] = { - CAM_FUNCDATA_JUMP1(-20, 200, 300, 12, 35, 60, 40, 0x0F00), + CAM_FUNCDATA_JUMP1(-20, 200, 300, 12, 35, 60, 40, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_IGNORE, 0)), }; CameraModeValue sSetFishingModeFreeFallData[] = { - CAM_FUNCDATA_JUMP1(-20, 200, 300, 15, 80, 60, 20, 0x0F00), + CAM_FUNCDATA_JUMP1(-20, 200, 300, 15, 80, 60, 20, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_IGNORE, 0)), }; CameraModeValue sSetFishingModeHangData[] = { - CAM_FUNCDATA_UNIQ1(-80, 200, 300, 40, 60, 10, 0x0F00), + CAM_FUNCDATA_UNIQ1(-80, 200, 300, 40, 60, 10, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_IGNORE, 0)), }; CameraModeValue sSetFishingModeHangZData[] = { - CAM_FUNCDATA_UNIQ1(-120, 300, 300, 70, 45, 10, 0x2F00), + CAM_FUNCDATA_UNIQ1(-120, 300, 300, 70, 45, 10, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_IGNORE, 0)), }; /** @@ -1161,7 +1345,7 @@ CameraModeValue sSetFishingModeHangZData[] = { */ CameraModeValue sSetCsCModeNormalData[] = { - CAM_FUNCDATA_FLAGS(0x3F00), + CAM_FUNCDATA_INTERFACE_FIELD(CAM_INTERFACE_FIELD(CAM_LETTERBOX_LARGE, CAM_HUD_VISIBILITY_IGNORE, 0)), }; /** @@ -1171,11 +1355,14 @@ CameraModeValue sSetCsCModeNormalData[] = { */ CameraModeValue sSetJabuTentacleModeNormalData[] = { - CAM_FUNCDATA_NORM1_ALT(30, 200, 300, -20, 15, 5, 50, 70, 70, 0x0003), + CAM_FUNCDATA_NORM1_ALT( + 30, 200, 300, -20, 15, 5, 50, 70, 70, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, NORMAL1_FLAG_1 | NORMAL1_FLAG_0)), }; CameraModeValue sSetJabuTentacleModeBattleData[] = { - CAM_FUNCDATA_BATT1(-30, 160, 10, 10, 0, 0, 70, 60, 40, 0x2002, -50, 20), + CAM_FUNCDATA_BATT1(-30, 160, 10, 10, 0, 0, 70, 60, 40, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, BATTLE1_FLAG_1), -50, 20), }; /** @@ -1185,47 +1372,63 @@ CameraModeValue sSetJabuTentacleModeBattleData[] = { */ CameraModeValue sSetDungeon2ModeNormalData[] = { - CAM_FUNCDATA_NORM1(-20, 350, 350, 20, 15, 5, 30, 60, 60, 0x0003), + CAM_FUNCDATA_NORM1( + -20, 350, 350, 20, 15, 5, 30, 60, 60, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, NORMAL1_FLAG_1 | NORMAL1_FLAG_0)), }; CameraModeValue sSetDungeon2ModeTargetData[] = { - CAM_FUNCDATA_PARA1(-20, 200, 0, 0, 5, 5, 45, 50, 0x200A, -40, 20), + CAM_FUNCDATA_PARA1( + -20, 200, 0, 0, 5, 5, 45, 50, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, PARALLEL1_FLAG_3 | PARALLEL1_FLAG_1), -40, + 20), }; CameraModeValue sSetDungeon2ModeBattleData[] = { - CAM_FUNCDATA_BATT1(-20, 180, 10, 80, -10, 10, 25, 45, 80, 0x2002, -40, 25), + CAM_FUNCDATA_BATT1(-20, 180, 10, 80, -10, 10, 25, 45, 80, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, BATTLE1_FLAG_1), -40, 25), }; CameraModeValue sSetDungeon2ModeJumpData[] = { - CAM_FUNCDATA_JUMP1(-20, 350, 350, 10, 50, 60, 40, 0x0000), + CAM_FUNCDATA_JUMP1(-20, 350, 350, 10, 50, 60, 40, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetDungeon2ModeFreeFallData[] = { - CAM_FUNCDATA_JUMP1(-20, 350, 350, 15, 80, 60, 20, 0x0000), + CAM_FUNCDATA_JUMP1(-20, 350, 350, 15, 80, 60, 20, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetDungeon2ModeClimbData[] = { - CAM_FUNCDATA_JUMP2(-40, 350, 350, 20, 5, 5, 60, 40, 0x0000), + CAM_FUNCDATA_JUMP2(-40, 350, 350, 20, 5, 5, 60, 40, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetDungeon2ModeClimbZData[] = { - CAM_FUNCDATA_JUMP2(-40, 350, 350, 20, 999, 5, 60, 40, 0x2006), + CAM_FUNCDATA_JUMP2(-40, 350, 350, 20, 999, 5, 60, 40, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, JUMP2_FLAG_2 | JUMP2_FLAG_1)), }; CameraModeValue sSetDungeon2ModeHangData[] = { - CAM_FUNCDATA_UNIQ1(-50, 350, 350, 40, 60, 10, 0x0000), + CAM_FUNCDATA_UNIQ1(-50, 350, 350, 40, 60, 10, CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetDungeon2ModeHangZData[] = { - CAM_FUNCDATA_UNIQ1(-100, 350, 350, 70, 45, 10, 0x2000), + CAM_FUNCDATA_UNIQ1(-100, 350, 350, 70, 45, 10, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, 0)), }; CameraModeValue sSetDungeon2ModeStillData[] = { - CAM_FUNCDATA_NORM1(-10, 350, 350, 20, 100, 5, 100, 60, 5, 0xF003), + CAM_FUNCDATA_NORM1( + -10, 350, 350, 20, 100, 5, 100, 60, 5, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_IGNORE, CAM_HUD_VISIBILITY_ALL, NORMAL1_FLAG_1 | NORMAL1_FLAG_0)), }; CameraModeValue sSetDungeon2ModePushPullData[] = { - CAM_FUNCDATA_PARA1(0, 280, 25, 0, 5, 5, 70, 30, 0x206A, -20, 30), + CAM_FUNCDATA_PARA1(0, 280, 25, 0, 5, 5, 70, 30, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, + PARALLEL1_FLAG_6 | PARALLEL1_FLAG_5 | PARALLEL1_FLAG_3 | PARALLEL1_FLAG_1), + -20, 30), }; /** @@ -1235,15 +1438,19 @@ CameraModeValue sSetDungeon2ModePushPullData[] = { */ CameraModeValue sSetDirectedYawModeNormalData[] = { - CAM_FUNCDATA_NORM1(-10, 280, 320, -8, 20, 10, 80, 60, 80, 0x0002), + CAM_FUNCDATA_NORM1(-10, 280, 320, -8, 20, 10, 80, 60, 80, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, NORMAL1_FLAG_1)), }; CameraModeValue sSetDirectedYawModeFollowTargetData[] = { - CAM_FUNCDATA_KEEP1(-20, 180, 200, 35, 45, 0, -5, 20, 50, 50, 0x2001, -50, 30), + CAM_FUNCDATA_KEEP1(-20, 180, 200, 35, 45, 0, -5, 20, 50, 50, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_MEDIUM, CAM_HUD_VISIBILITY_ALL, KEEPON1_FLAG_0), -50, 30), }; CameraModeValue sSetDirectedYawModeTalkData[] = { - CAM_FUNCDATA_KEEP3(-80, 200, 250, 30, 10, -8, -8, 30, 50, 50, 10, 0x3520), + CAM_FUNCDATA_KEEP3( + -80, 200, 250, 30, 10, -8, -8, 30, 50, 50, 10, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_LARGE, CAM_HUD_VISIBILITY_A_HEARTS_MAGIC_FORCE, KEEPON3_FLAG_5)), }; /** @@ -1253,7 +1460,9 @@ CameraModeValue sSetDirectedYawModeTalkData[] = { */ CameraModeValue sNormal4ModeTalkData[] = { - CAM_FUNCDATA_KEEP3(-30, 70, 200, 40, 10, 0, 5, 70, 45, 50, 10, 0x35A0), + CAM_FUNCDATA_KEEP3(-30, 70, 200, 40, 10, 0, 5, 70, 45, 50, 10, + CAM_INTERFACE_FIELD(CAM_LETTERBOX_LARGE, CAM_HUD_VISIBILITY_A_HEARTS_MAGIC_FORCE, + KEEPON3_FLAG_7 | KEEPON3_FLAG_5)), }; /** @@ -1808,11 +2017,11 @@ CameraMode sCamSetPivotDivingModes[] = { }; CameraMode sCamSetCs0Modes[] = { - CAM_SETTING_MODE_ENTRY(CAM_FUNC_DEMO1, sDataOnlyInterfaceFlags), // CAM_MODE_NORMAL + CAM_SETTING_MODE_ENTRY(CAM_FUNC_DEMO1, sDataOnlyInterfaceField), // CAM_MODE_NORMAL }; CameraMode sCamSetCsTwistedHallwayModes[] = { - CAM_SETTING_MODE_ENTRY(CAM_FUNC_DEMO2, sDataOnlyInterfaceFlags), // CAM_MODE_NORMAL + CAM_SETTING_MODE_ENTRY(CAM_FUNC_DEMO2, sDataOnlyInterfaceField), // CAM_MODE_NORMAL }; CameraMode sCamSetForestBirdsEyeModes[] = { @@ -1835,7 +2044,7 @@ CameraMode sCamSetCs3Modes[] = { }; CameraMode sCamSetCsAttentionModes[] = { - CAM_SETTING_MODE_ENTRY(CAM_FUNC_DEMO5, sDataOnlyInterfaceFlags), // CAM_MODE_NORMAL + CAM_SETTING_MODE_ENTRY(CAM_FUNC_DEMO5, sDataOnlyInterfaceField), // CAM_MODE_NORMAL }; CameraMode sCamSetBeanGenericModes[] = { @@ -1899,15 +2108,15 @@ CameraMode sCamSetElevatorPlatformModes[] = { }; CameraMode sCamSetFireStaircaseModes[] = { - CAM_SETTING_MODE_ENTRY(CAM_FUNC_SPEC4, sDataOnlyInterfaceFlags), // CAM_MODE_NORMAL + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SPEC4, sDataOnlyInterfaceField), // CAM_MODE_NORMAL }; CameraMode sCamSetForestUnusedModes[] = { - CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ5, sDataOnlyInterfaceFlags), // CAM_MODE_NORMAL + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ5, sDataOnlyInterfaceField), // CAM_MODE_NORMAL }; CameraMode sCamSetForestDefeatPoeModes[] = { - CAM_SETTING_MODE_ENTRY(CAM_FUNC_DEMO6, sDataOnlyInterfaceFlags), // CAM_MODE_NORMAL + CAM_SETTING_MODE_ENTRY(CAM_FUNC_DEMO6, sDataOnlyInterfaceField), // CAM_MODE_NORMAL }; CameraMode sCamSetBigOctoModes[] = { @@ -2348,10 +2557,10 @@ s32 gDbgCamEnabled = 0; s32 sDbgModeIdx = -1; s16 sNextUID = 0; -s32 sCameraInterfaceFlags = 1; - -s32 sCameraInterfaceAlpha = 0x02; +s32 sCameraInterfaceField = CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 1); +s32 sCameraHudVisibilityMode = HUD_VISIBILITY_NOTHING_ALT; s32 sCameraLetterboxSize = 32; + s32 D_8011D3AC = -1; s16 D_8011D3B0[] = { diff --git a/src/code/z_demo.c b/src/code/z_demo.c index a145355083..7193a034c2 100644 --- a/src/code/z_demo.c +++ b/src/code/z_demo.c @@ -1430,7 +1430,7 @@ s32 Cutscene_Command_07(PlayState* play, CutsceneContext* csCtx, u8* cmd, u8 unu Play_ChangeCameraStatus(play, csCtx->subCamId, CAM_STAT_ACTIVE); Play_CameraChangeSetting(play, csCtx->subCamId, CAM_SET_FREE0); sp28 = csCtx->subCamLookAtPoints->cameraRoll * 1.40625f; - Camera_SetParam(subCam, 64, &sp28); + Camera_SetViewParam(subCam, CAM_VIEW_ROLL, &sp28); sp3C.x = csCtx->subCamLookAtPoints->pos.x; sp3C.y = csCtx->subCamLookAtPoints->pos.y; sp3C.z = csCtx->subCamLookAtPoints->pos.z; diff --git a/src/code/z_kankyo.c b/src/code/z_kankyo.c index 863f27d170..1384948cb4 100644 --- a/src/code/z_kankyo.c +++ b/src/code/z_kankyo.c @@ -1700,7 +1700,8 @@ void Environment_DrawRain(PlayState* play, View* view, GraphicsContext* gfxCtx) Vec3f windDirection = { 0.0f, 0.0f, 0.0f }; Player* player = GET_PLAYER(play); - if (!(play->cameraPtrs[0]->unk_14C & 0x100) && (play->envCtx.precipitation[PRECIP_SNOW_CUR] == 0)) { + if (!(play->cameraPtrs[CAM_ID_MAIN]->stateFlags & CAM_STATE_8) && + (play->envCtx.precipitation[PRECIP_SNOW_CUR] == 0)) { OPEN_DISPS(gfxCtx, "../z_kankyo.c", 2799); vec.x = view->at.x - view->eye.x; diff --git a/src/code/z_onepointdemo.c b/src/code/z_onepointdemo.c index 01bf406571..406e8f5476 100644 --- a/src/code/z_onepointdemo.c +++ b/src/code/z_onepointdemo.c @@ -482,7 +482,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act case 3120: csInfo->keyFrames = D_80121954[-(timer + 101)]; subCam->timer = 100; - subCam->unk_14C |= 2; + subCam->stateFlags |= CAM_STATE_1; csInfo->keyFrameCnt = 2; func_8002DF54(play, NULL, 8); @@ -494,7 +494,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act func_8002DF54(play, NULL, 8); func_800C0808(play, subCamId, player, CAM_SET_CS_C); - subCam->unk_14C |= 2; + subCam->stateFlags |= CAM_STATE_1; break; case 3140: D_80121C24[0].atTargetInit = play->view.at; diff --git a/src/code/z_play.c b/src/code/z_play.c index ef2dbeed61..08f2ee3a7d 100644 --- a/src/code/z_play.c +++ b/src/code/z_play.c @@ -255,7 +255,8 @@ void Play_Init(GameState* thisx) { this->cameraPtrs[CAM_ID_MAIN] = &this->mainCamera; this->cameraPtrs[CAM_ID_MAIN]->uid = 0; this->activeCamId = CAM_ID_MAIN; - func_8005AC48(&this->mainCamera, 0xFF); + Camera_OverwriteStateFlags(&this->mainCamera, CAM_STATE_0 | CAM_STATE_1 | CAM_STATE_2 | CAM_STATE_3 | CAM_STATE_4 | + CAM_STATE_5 | CAM_STATE_6 | CAM_STATE_7); Sram_Init(this, &this->sramCtx); Regs_InitData(this); Message_Init(this); @@ -1539,9 +1540,9 @@ s32 Play_CameraSetAtEye(PlayState* this, s16 camId, Vec3f* at, Vec3f* eye) { Camera* camera = this->cameraPtrs[camIdx]; Player* player; - ret |= Camera_SetParam(camera, 1, at); + ret |= Camera_SetViewParam(camera, CAM_VIEW_AT, at); ret <<= 1; - ret |= Camera_SetParam(camera, 2, eye); + ret |= Camera_SetViewParam(camera, CAM_VIEW_EYE, eye); camera->dist = Math3D_Vec3f_DistXYZ(at, eye); @@ -1565,11 +1566,11 @@ s32 Play_CameraSetAtEyeUp(PlayState* this, s16 camId, Vec3f* at, Vec3f* eye, Vec Camera* camera = this->cameraPtrs[camIdx]; Player* player; - ret |= Camera_SetParam(camera, 1, at); + ret |= Camera_SetViewParam(camera, CAM_VIEW_AT, at); ret <<= 1; - ret |= Camera_SetParam(camera, 2, eye); + ret |= Camera_SetViewParam(camera, CAM_VIEW_EYE, eye); ret <<= 1; - ret |= Camera_SetParam(camera, 4, up); + ret |= Camera_SetViewParam(camera, CAM_VIEW_UP, up); camera->dist = Math3D_Vec3f_DistXYZ(at, eye); @@ -1588,7 +1589,7 @@ s32 Play_CameraSetAtEyeUp(PlayState* this, s16 camId, Vec3f* at, Vec3f* eye, Vec } s32 Play_CameraSetFov(PlayState* this, s16 camId, f32 fov) { - s32 ret = Camera_SetParam(this->cameraPtrs[camId], 0x20, &fov) & 1; + s32 ret = Camera_SetViewParam(this->cameraPtrs[camId], CAM_VIEW_FOV, &fov) & 1; if (1) {} return ret; diff --git a/src/code/z_player_lib.c b/src/code/z_player_lib.c index 00fbf40e0b..29cb897b7d 100644 --- a/src/code/z_player_lib.c +++ b/src/code/z_player_lib.c @@ -624,7 +624,7 @@ void func_8008EEAC(PlayState* play, Actor* actor) { this->unk_664 = actor; this->unk_684 = actor; this->stateFlags1 |= PLAYER_STATE1_16; - Camera_SetParam(Play_GetCamera(play, CAM_ID_MAIN), 8, actor); + Camera_SetViewParam(Play_GetCamera(play, CAM_ID_MAIN), CAM_VIEW_TARGET, actor); Camera_ChangeMode(Play_GetCamera(play, CAM_ID_MAIN), CAM_MODE_FOLLOWTARGET); } diff --git a/src/overlays/actors/ovl_Bg_Bdan_Objects/z_bg_bdan_objects.c b/src/overlays/actors/ovl_Bg_Bdan_Objects/z_bg_bdan_objects.c index ba7ca892b9..98b6519357 100644 --- a/src/overlays/actors/ovl_Bg_Bdan_Objects/z_bg_bdan_objects.c +++ b/src/overlays/actors/ovl_Bg_Bdan_Objects/z_bg_bdan_objects.c @@ -355,7 +355,7 @@ void func_8086C874(BgBdanObjects* this, PlayState* play) { if (DynaPolyActor_IsPlayerOnTop(&this->dyna)) { this->cameraSetting = play->cameraPtrs[CAM_ID_MAIN]->setting; Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_NORMAL2); - func_8005AD1C(play->cameraPtrs[CAM_ID_MAIN], 4); + Camera_UnsetStateFlag(play->cameraPtrs[CAM_ID_MAIN], CAM_STATE_2); this->switchFlag = 10; } } else { @@ -368,7 +368,7 @@ void func_8086C874(BgBdanObjects* this, PlayState* play) { if (this->switchFlag == 0) { if (1) {} Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], this->cameraSetting); - func_8005ACFC(play->cameraPtrs[CAM_ID_MAIN], 4); + Camera_SetStateFlag(play->cameraPtrs[CAM_ID_MAIN], CAM_STATE_2); } } this->dyna.actor.world.pos.y = diff --git a/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.c b/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.c index 97aade8645..27353c5ed9 100644 --- a/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.c +++ b/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.c @@ -641,7 +641,7 @@ void func_809BE26C(EnBigokuta* this, PlayState* play) { if (this->unk_198 == 0 && Math_StepToF(&this->actor.scale.y, 0.0f, 0.001f)) { Flags_SetClear(play, this->actor.room); Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_DUNGEON0); - func_8005ACFC(play->cameraPtrs[CAM_ID_MAIN], 4); + Camera_SetStateFlag(play->cameraPtrs[CAM_ID_MAIN], CAM_STATE_2); SfxSource_PlaySfxAtFixedWorldPos(play, &this->actor.world.pos, 50, NA_SE_EN_OCTAROCK_BUBLE); Item_DropCollectibleRandom(play, &this->actor, &this->actor.world.pos, 0xB0); Actor_Kill(&this->actor); @@ -778,7 +778,7 @@ void EnBigokuta_Update(Actor* thisx, PlayState* play2) { func_809BD2E4(this); func_809BE568(this); Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_BIG_OCTO); - func_8005AD1C(play->cameraPtrs[CAM_ID_MAIN], 4); + Camera_UnsetStateFlag(play->cameraPtrs[CAM_ID_MAIN], CAM_STATE_2); if (this->cylinder[0].base.atFlags & AT_ON) { if (this->actionFunc != func_809BE058) { diff --git a/src/overlays/actors/ovl_En_Go2/z_en_go2.c b/src/overlays/actors/ovl_En_Go2/z_en_go2.c index be1b30c923..ee86e3a0ef 100644 --- a/src/overlays/actors/ovl_En_Go2/z_en_go2.c +++ b/src/overlays/actors/ovl_En_Go2/z_en_go2.c @@ -1163,10 +1163,10 @@ s32 EnGo2_IsCameraModified(EnGo2* this, PlayState* play) { if ((this->actor.params & 0x1F) == GORON_DMT_BIGGORON) { if (EnGo2_IsWakingUp(this)) { Camera_ChangeSetting(mainCam, CAM_SET_DIRECTED_YAW); - func_8005AD1C(mainCam, 4); + Camera_UnsetStateFlag(mainCam, CAM_STATE_2); } else if (!EnGo2_IsWakingUp(this) && (mainCam->setting == CAM_SET_DIRECTED_YAW)) { Camera_ChangeSetting(mainCam, CAM_SET_DUNGEON1); - func_8005ACFC(mainCam, 4); + Camera_SetStateFlag(mainCam, CAM_STATE_2); } } diff --git a/src/overlays/actors/ovl_En_Horse/z_en_horse.c b/src/overlays/actors/ovl_En_Horse/z_en_horse.c index 95baeac04b..90a4d4285a 100644 --- a/src/overlays/actors/ovl_En_Horse/z_en_horse.c +++ b/src/overlays/actors/ovl_En_Horse/z_en_horse.c @@ -1752,7 +1752,7 @@ void EnHorse_Inactive(EnHorse* this, PlayState* play2) { gSaveContext.horseData.sceneId = play->sceneId; // Focus the camera on Epona - Camera_SetParam(play->cameraPtrs[CAM_ID_MAIN], 8, this); + Camera_SetViewParam(play->cameraPtrs[CAM_ID_MAIN], CAM_VIEW_TARGET, &this->actor); Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_TURN_AROUND); Camera_SetCameraData(play->cameraPtrs[CAM_ID_MAIN], 4, NULL, NULL, 0x51, 0, 0); } @@ -1826,7 +1826,7 @@ void EnHorse_Idle(EnHorse* this, PlayState* play) { &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); this->followTimer = 0; EnHorse_SetFollowAnimation(this, play); - Camera_SetParam(play->cameraPtrs[CAM_ID_MAIN], 8, this); + Camera_SetViewParam(play->cameraPtrs[CAM_ID_MAIN], CAM_VIEW_TARGET, &this->actor); Camera_ChangeSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_TURN_AROUND); Camera_SetCameraData(play->cameraPtrs[CAM_ID_MAIN], 4, NULL, NULL, 0x51, 0, 0); } diff --git a/src/overlays/actors/ovl_Object_Kankyo/z_object_kankyo.c b/src/overlays/actors/ovl_Object_Kankyo/z_object_kankyo.c index 3aabbdd563..d38333b993 100644 --- a/src/overlays/actors/ovl_Object_Kankyo/z_object_kankyo.c +++ b/src/overlays/actors/ovl_Object_Kankyo/z_object_kankyo.c @@ -501,7 +501,7 @@ void ObjectKankyo_DrawFairies(Actor* thisx, PlayState* play2) { Vec3f vec2 = { 0.0f, 0.0f, 0.0f }; s16 i; - if (!(play->cameraPtrs[CAM_ID_MAIN]->unk_14C & 0x100)) { + if (!(play->cameraPtrs[CAM_ID_MAIN]->stateFlags & CAM_STATE_8)) { OPEN_DISPS(play->state.gfxCtx, "../z_object_kankyo.c", 807); POLY_XLU_DISP = Gfx_SetupDL(POLY_XLU_DISP, SETUPDL_20); gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(gSun1Tex)); @@ -596,7 +596,7 @@ void ObjectKankyo_DrawSnow(Actor* thisx, PlayState* play2) { s32 pad; s32 pad2; - if (!(play->cameraPtrs[CAM_ID_MAIN]->unk_14C & 0x100)) { + if (!(play->cameraPtrs[CAM_ID_MAIN]->stateFlags & CAM_STATE_8)) { OPEN_DISPS(play->state.gfxCtx, "../z_object_kankyo.c", 958); if (play->envCtx.precipitation[PRECIP_SNOW_CUR] < play->envCtx.precipitation[PRECIP_SNOW_MAX]) { if (play->state.frames % 16 == 0) { diff --git a/src/overlays/actors/ovl_player_actor/z_player.c b/src/overlays/actors/ovl_player_actor/z_player.c index dcb6d3128c..6339ae214a 100644 --- a/src/overlays/actors/ovl_player_actor/z_player.c +++ b/src/overlays/actors/ovl_player_actor/z_player.c @@ -5321,7 +5321,7 @@ s32 func_8083B040(Player* this, PlayState* play) { func_80835EA4(play, (this->unk_6A8 != NULL) ? 0x5B : 0x5A); if (this->unk_6A8 != NULL) { this->stateFlags2 |= PLAYER_STATE2_25; - Camera_SetParam(Play_GetCamera(play, CAM_ID_MAIN), 8, this->unk_6A8); + Camera_SetViewParam(Play_GetCamera(play, CAM_ID_MAIN), CAM_VIEW_TARGET, this->unk_6A8); } } } else if (func_8083AD4C(play, this)) { @@ -9206,7 +9206,7 @@ void func_80845CA4(Player* this, PlayState* play) { temp = func_80845BA0(play, this, &sp34, sp30); if ((this->unk_850 == 0) || ((temp == 0) && (this->linearVelocity == 0.0f) && - (Play_GetCamera(play, CAM_ID_MAIN)->unk_14C & 0x10))) { + (Play_GetCamera(play, CAM_ID_MAIN)->stateFlags & CAM_STATE_4))) { func_8005B1A4(Play_GetCamera(play, CAM_ID_MAIN)); func_80845C68(play, gSaveContext.respawn[RESPAWN_MODE_DOWN].data); @@ -10230,7 +10230,7 @@ void Player_UpdateCamAndSeqModes(PlayState* play, Player* this) { } else if (!(this->stateFlags1 & PLAYER_STATE1_20)) { if ((this->actor.parent != NULL) && (this->stateFlags3 & PLAYER_STATE3_7)) { camMode = CAM_MODE_HOOKSHOT; - Camera_SetParam(Play_GetCamera(play, CAM_ID_MAIN), 8, this->actor.parent); + Camera_SetViewParam(Play_GetCamera(play, CAM_ID_MAIN), CAM_VIEW_TARGET, this->actor.parent); } else if (func_8084377C == this->func_674) { camMode = CAM_MODE_STILL; } else if (this->stateFlags2 & PLAYER_STATE2_8) { @@ -10247,12 +10247,12 @@ void Player_UpdateCamAndSeqModes(PlayState* play, Player* this) { } else { camMode = CAM_MODE_BATTLE; } - Camera_SetParam(Play_GetCamera(play, CAM_ID_MAIN), 8, unk_664); + Camera_SetViewParam(Play_GetCamera(play, CAM_ID_MAIN), CAM_VIEW_TARGET, unk_664); } else if (this->stateFlags1 & PLAYER_STATE1_12) { camMode = CAM_MODE_CHARGE; } else if (this->stateFlags1 & PLAYER_STATE1_25) { camMode = CAM_MODE_FOLLOWBOOMERANG; - Camera_SetParam(Play_GetCamera(play, CAM_ID_MAIN), 8, this->boomerangActor); + Camera_SetViewParam(Play_GetCamera(play, CAM_ID_MAIN), CAM_VIEW_TARGET, this->boomerangActor); } else if (this->stateFlags1 & (PLAYER_STATE1_13 | PLAYER_STATE1_14)) { if (func_80833B2C(this)) { camMode = CAM_MODE_HANGZ; @@ -12549,7 +12549,7 @@ void func_8084E3C4(Player* this, PlayState* play) { this->stateFlags1 &= ~PLAYER_STATE1_29; func_80852FFC(play, NULL, 8); - play->mainCamera.unk_14C &= ~8; + play->mainCamera.stateFlags &= ~CAM_STATE_3; this->stateFlags1 |= PLAYER_STATE1_28 | PLAYER_STATE1_29; this->stateFlags2 |= PLAYER_STATE2_27;