diff --git a/include/regs.h b/include/regs.h index 51625dc893..74b8a43dfe 100644 --- a/include/regs.h +++ b/include/regs.h @@ -64,7 +64,7 @@ #define R_AT_LERP_MIN OREG(41) #define R_AT_LERP_SCALE OREG(42) #define R_CAM_YOFFSET_NORM OREG(46) -#define R_CAM_FIXED3_FOV PREG(7) +#define R_CAM_DATA(type) PREG(type) #define R_DBG_CAM_UPDATE PREG(80) #define R_DBG_REG_UPDATE PREG(82) #define R_RELOAD_CAM_PARAMS QREG(0) diff --git a/include/z64camera.h b/include/z64camera.h index 2b7e96e082..f4f0640454 100644 --- a/include/z64camera.h +++ b/include/z64camera.h @@ -48,7 +48,7 @@ typedef enum { /* 0x17 */ CAM_SET_PIVOT_SHOP_BROWSING, // Shopping and browsing for items "CIRCLE2" /* 0x18 */ CAM_SET_PIVOT_IN_FRONT, // The camera used on Link's balcony in Kokiri forest. Data present in scene data for Deku Tree, GTG, Inside Ganon's Castle (TODO: may or may not be used) "CIRCLE3" /* 0x19 */ CAM_SET_PREREND_FIXED, // Camera is fixed in position and rotation "PREREND0" - /* 0x1A */ CAM_SET_PREREND_PIVET, // Camera is fixed in position with fixed pitch, but is free to rotate in the yaw direction 360 degrees "PREREND1" + /* 0x1A */ CAM_SET_PREREND_PIVOT, // Camera is fixed in position with fixed pitch, but is free to rotate in the yaw direction 360 degrees "PREREND1" /* 0x1B */ CAM_SET_PREREND_SIDE_SCROLL, // Camera side-scrolls position to follow link. Only used in castle courtyard with the guards "PREREND3" /* 0x1C */ CAM_SET_DOOR0, // Custom room door transitions, used in fire and royal family tomb /* 0x1D */ CAM_SET_DOORC, // Generic room door transitions, camera moves and follows player as the door is open and closed @@ -191,6 +191,40 @@ typedef enum { /* 0x47 */ CAM_FUNC_MAX } CameraFuncType; +typedef enum { + /* 0x00 */ CAM_DATA_Y_OFFSET, + /* 0x01 */ CAM_DATA_EYE_DIST, + /* 0x02 */ CAM_DATA_EYE_DIST_NEXT, + /* 0x03 */ CAM_DATA_PITCH_TARGET, + /* 0x04 */ CAM_DATA_YAW_UPDATE_RATE_TARGET, + /* 0x05 */ CAM_DATA_XZ_UPDATE_RATE_TARGET, + /* 0x06 */ CAM_DATA_MAX_YAW_UPDATE, + /* 0x07 */ CAM_DATA_FOV, + /* 0x08 */ CAM_DATA_AT_LERP_STEP_SCALE, + /* 0x09 */ CAM_DATA_FLAGS, + /* 0x0A */ CAM_DATA_YAW_TARGET, + /* 0x0B */ CAM_DATA_GROUND_Y_OFFSET, + /* 0x0C */ CAM_DATA_GROUND_AT_LERP_STEP_SCALE, + /* 0x0D */ CAM_DATA_SWING_YAW_INIT, + /* 0x0E */ CAM_DATA_SWING_YAW_FINAL, + /* 0x0F */ CAM_DATA_SWING_PITCH_INIT, + /* 0x10 */ CAM_DATA_SWING_PITCH_FINAL, + /* 0x11 */ CAM_DATA_SWING_PITCH_ADJ, + /* 0x12 */ CAM_DATA_MIN_MAX_DIST_FACTOR, + /* 0x13 */ CAM_DATA_AT_OFFSET_X, + /* 0x14 */ CAM_DATA_AT_OFFSET_Y, + /* 0x15 */ CAM_DATA_AT_OFFSET_Z, + /* 0x16 */ CAM_DATA_UNK_22, + /* 0x17 */ CAM_DATA_UNK_23, + /* 0x18 */ CAM_DATA_FOV_SCALE, + /* 0x19 */ CAM_DATA_YAW_SCALE, + /* 0x1A */ CAM_DATA_UNK_26, + /* 0x1B */ CAM_DATA_MAX +} CameraDataType; + +#define CAM_FUNCDATA_FLAGS(flags) \ + { flags, CAM_DATA_FLAGS } + typedef struct { /* 0x00 */ Vec3f collisionClosePoint; /* 0x0C */ CollisionPoly* atEyePoly; @@ -225,6 +259,30 @@ typedef struct { /* 0x24 */ Normal1Anim anim; } Normal1; // size = 0x50 +#define CAM_FUNCDATA_NORM1(yOffset, eyeDist, eyeDistNext, pitchTarget, yawUpdateRateTarget, xzUpdateRateTarget, maxYawUpdate, fov, atLerpStepScale, flags) \ + { yOffset, CAM_DATA_Y_OFFSET }, \ + { eyeDist, CAM_DATA_EYE_DIST }, \ + { eyeDistNext, CAM_DATA_EYE_DIST_NEXT }, \ + { pitchTarget, CAM_DATA_PITCH_TARGET }, \ + { yawUpdateRateTarget, CAM_DATA_YAW_UPDATE_RATE_TARGET }, \ + { xzUpdateRateTarget, CAM_DATA_XZ_UPDATE_RATE_TARGET }, \ + { maxYawUpdate, CAM_DATA_MAX_YAW_UPDATE }, \ + { fov, CAM_DATA_FOV }, \ + { atLerpStepScale, CAM_DATA_AT_LERP_STEP_SCALE }, \ + { flags, CAM_DATA_FLAGS } + +#define CAM_FUNCDATA_NORM1_ALT(yOffset, eyeDist, eyeDistNext, pitchTarget, yawUpdateRateTarget, xzUpdateRateTarget, maxYawUpdate, fov, atLerpStepScale, flags) \ + { yOffset, CAM_DATA_Y_OFFSET }, \ + { eyeDist, CAM_DATA_EYE_DIST }, \ + { eyeDistNext, CAM_DATA_EYE_DIST_NEXT }, \ + { pitchTarget, CAM_DATA_PITCH_TARGET }, \ + { yawUpdateRateTarget, CAM_DATA_YAW_UPDATE_RATE_TARGET }, \ + { xzUpdateRateTarget, CAM_DATA_UNK_26 }, \ + { maxYawUpdate, CAM_DATA_MAX_YAW_UPDATE }, \ + { fov, CAM_DATA_FOV }, \ + { atLerpStepScale, CAM_DATA_AT_LERP_STEP_SCALE }, \ + { flags, CAM_DATA_FLAGS } + typedef struct { /* 0x00 */ Vec3f unk_00; /* 0x0C */ Vec3f unk_0C; @@ -249,6 +307,17 @@ typedef struct { /* 0x20 */ Normal2Anim anim; } Normal2; // size = 0x4A +#define CAM_FUNCDATA_NORM2(yOffset, eyeDist, eyeDistNext, unk_23, yawUpdateRateTarget, maxYawUpdate, fov, atLerpStepScale, flags) \ + { yOffset, CAM_DATA_Y_OFFSET }, \ + { eyeDist, CAM_DATA_EYE_DIST }, \ + { eyeDistNext, CAM_DATA_EYE_DIST_NEXT }, \ + { unk_23, CAM_DATA_UNK_23 }, \ + { yawUpdateRateTarget, CAM_DATA_YAW_UPDATE_RATE_TARGET }, \ + { maxYawUpdate, CAM_DATA_MAX_YAW_UPDATE }, \ + { fov, CAM_DATA_FOV }, \ + { atLerpStepScale, CAM_DATA_AT_LERP_STEP_SCALE }, \ + { flags, CAM_DATA_FLAGS } + typedef struct { /* 0x00 */ SwingAnimation swing; /* 0x1C */ f32 unk_1C; @@ -272,6 +341,17 @@ typedef struct { /* 0x20 */ Normal3Anim anim; } Normal3; // size = 0x4C +#define CAM_FUNCDATA_NORM3(yOffset, eyeDist, eyeDistNext, pitchTarget, yawUpdateRateTarget, xzUpdateRateTarget, fov, atLerpStepScale, flags) \ + { yOffset, CAM_DATA_Y_OFFSET }, \ + { eyeDist, CAM_DATA_EYE_DIST }, \ + { eyeDistNext, CAM_DATA_EYE_DIST_NEXT }, \ + { pitchTarget, CAM_DATA_PITCH_TARGET }, \ + { yawUpdateRateTarget, CAM_DATA_YAW_UPDATE_RATE_TARGET }, \ + { xzUpdateRateTarget, CAM_DATA_XZ_UPDATE_RATE_TARGET }, \ + { fov, CAM_DATA_FOV }, \ + { atLerpStepScale, CAM_DATA_AT_LERP_STEP_SCALE }, \ + { flags, CAM_DATA_FLAGS } + typedef struct { /* 0x00 */ Vec3f unk_00; /* 0x0C */ f32 yTarget; @@ -283,7 +363,7 @@ typedef struct { } Parallel1Anim; // size = 0x1A typedef struct { - /* 0x00 */ f32 unk_00; + /* 0x00 */ f32 yOffset; /* 0x04 */ f32 distTarget; /* 0x08 */ f32 unk_08; /* 0x0C */ f32 unk_0C; @@ -297,6 +377,19 @@ typedef struct { /* 0x28 */ Parallel1Anim anim; } Parallel1; // size = 0x42 +#define CAM_FUNCDATA_PARA1(yOffset, eyeDist, pitchTarget, yawTarget, yawUpdateRateTarget, xzUpdateRateTarget, fov, atLerpStepScale, flags, groundYOffset, groundAtLerpStepScale) \ + { yOffset, CAM_DATA_Y_OFFSET }, \ + { eyeDist, CAM_DATA_EYE_DIST }, \ + { pitchTarget, CAM_DATA_PITCH_TARGET }, \ + { yawTarget, CAM_DATA_YAW_TARGET }, \ + { yawUpdateRateTarget, CAM_DATA_YAW_UPDATE_RATE_TARGET }, \ + { xzUpdateRateTarget, CAM_DATA_XZ_UPDATE_RATE_TARGET }, \ + { fov, CAM_DATA_FOV }, \ + { atLerpStepScale, CAM_DATA_AT_LERP_STEP_SCALE }, \ + { flags, CAM_DATA_FLAGS }, \ + { groundYOffset, CAM_DATA_GROUND_Y_OFFSET }, \ + { groundAtLerpStepScale, CAM_DATA_GROUND_AT_LERP_STEP_SCALE } + typedef struct { /* 0x00 */ SwingAnimation swing; @@ -316,6 +409,16 @@ typedef struct { /* 0x20 */ Jump1Anim anim; } Jump1; // size = 0x48 +#define CAM_FUNCDATA_JUMP1(yOffset, eyeDist, eyeDistNext, yawUpdateRateTarget, maxYawUpdate, fov, atLerpStepScale, flags) \ + { yOffset, CAM_DATA_Y_OFFSET }, \ + { eyeDist, CAM_DATA_EYE_DIST }, \ + { eyeDistNext, CAM_DATA_EYE_DIST_NEXT }, \ + { yawUpdateRateTarget, CAM_DATA_YAW_UPDATE_RATE_TARGET }, \ + { maxYawUpdate, CAM_DATA_MAX_YAW_UPDATE }, \ + { fov, CAM_DATA_FOV }, \ + { atLerpStepScale, CAM_DATA_AT_LERP_STEP_SCALE }, \ + { flags, CAM_DATA_FLAGS } + typedef struct { /* 0x0 */ f32 floorY; /* 0x4 */ s16 yawTarget; @@ -338,6 +441,17 @@ typedef struct { /* 0x24 */ Jump2Anim anim; } Jump2; // size = 0x34 +#define CAM_FUNCDATA_JUMP2(yOffset, eyeDist, eyeDistNext, minMaxDistFactor, yawUpdateRateTarget, xzUpdateRateTarget, fov, atLerpStepScale, flags) \ + { yOffset, CAM_DATA_Y_OFFSET }, \ + { eyeDist, CAM_DATA_EYE_DIST }, \ + { eyeDistNext, CAM_DATA_EYE_DIST_NEXT }, \ + { minMaxDistFactor, CAM_DATA_MIN_MAX_DIST_FACTOR }, \ + { yawUpdateRateTarget, CAM_DATA_YAW_UPDATE_RATE_TARGET }, \ + { xzUpdateRateTarget, CAM_DATA_XZ_UPDATE_RATE_TARGET }, \ + { fov, CAM_DATA_FOV }, \ + { atLerpStepScale, CAM_DATA_AT_LERP_STEP_SCALE }, \ + { flags, CAM_DATA_FLAGS } + typedef struct { /* 0x00 */ SwingAnimation swing; /* 0x1C */ f32 unk_1C; @@ -359,6 +473,18 @@ typedef struct { /* 0x24 */ Jump3Anim anim; } Jump3; // size = 0x48 +#define CAM_FUNCDATA_JUMP3(yOffset, eyeDist, eyeDistNext, pitchTarget, yawUpdateRateTarget, xzUpdateRateTarget, maxYawUpdate, fov, atLerpStepScale, flags) \ + { yOffset, CAM_DATA_Y_OFFSET }, \ + { eyeDist, CAM_DATA_EYE_DIST }, \ + { eyeDistNext, CAM_DATA_EYE_DIST_NEXT }, \ + { pitchTarget, CAM_DATA_PITCH_TARGET }, \ + { yawUpdateRateTarget, CAM_DATA_YAW_UPDATE_RATE_TARGET }, \ + { xzUpdateRateTarget, CAM_DATA_XZ_UPDATE_RATE_TARGET }, \ + { maxYawUpdate, CAM_DATA_MAX_YAW_UPDATE }, \ + { fov, CAM_DATA_FOV }, \ + { atLerpStepScale, CAM_DATA_AT_LERP_STEP_SCALE }, \ + { flags, CAM_DATA_FLAGS } + typedef struct { /* 0x00 */ f32 initialEyeToAtDist; /* 0x04 */ f32 roll; @@ -388,8 +514,22 @@ typedef struct { /* 0x30 */ Battle1Anim anim; } Battle1; // size = 0x50 +#define CAM_FUNCDATA_BATT1(yOffset, eyeDist, swingYawInit, swingYawFinal, swingPitchInit, swingPitchFinal, swingPitchAdj, fov, atLerpStepScale, flags, groundYOffset, groundAtLerpStepScale) \ + { yOffset, CAM_DATA_Y_OFFSET }, \ + { eyeDist, CAM_DATA_EYE_DIST }, \ + { swingYawInit, CAM_DATA_SWING_YAW_INIT }, \ + { swingYawFinal, CAM_DATA_SWING_YAW_FINAL }, \ + { swingPitchInit, CAM_DATA_SWING_PITCH_INIT }, \ + { swingPitchFinal, CAM_DATA_SWING_PITCH_FINAL }, \ + { swingPitchAdj, CAM_DATA_SWING_PITCH_ADJ }, \ + { fov, CAM_DATA_FOV }, \ + { atLerpStepScale, CAM_DATA_AT_LERP_STEP_SCALE }, \ + { flags, CAM_DATA_FLAGS }, \ + { groundYOffset, CAM_DATA_GROUND_Y_OFFSET }, \ + { groundAtLerpStepScale, CAM_DATA_GROUND_AT_LERP_STEP_SCALE } + typedef struct { - /* 0x0000 */ s16 animTimer; + /* 0x0 */ s16 animTimer; } Battle4Anim; // size = 0x2 typedef struct { @@ -404,6 +544,15 @@ typedef struct { /* 0x1C */ Battle4Anim anim; } Battle4; // size = 0x20 +#define CAM_FUNCDATA_BATT4(yOffset, eyeDist, pitchTarget, yawUpdateRateTarget, fov, atLerpStepScale, flags) \ + { 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 } + typedef struct { /* 0x00 */ f32 unk_00; /* 0x04 */ f32 unk_04; @@ -432,6 +581,21 @@ typedef struct { /* 0x34 */ Keep1Anim anim; } KeepOn1; // size = 0x4C +#define CAM_FUNCDATA_KEEP1(yOffset, eyeDist, eyeDistNext, swingYawInit, swingYawFinal, swingPitchInit, swingPitchFinal, swingPitchAdj, fov, atLerpStepScale, flags, groundYOffset, groundAtLerpStepScale) \ + { yOffset, CAM_DATA_Y_OFFSET }, \ + { eyeDist, CAM_DATA_EYE_DIST }, \ + { eyeDistNext, CAM_DATA_EYE_DIST_NEXT }, \ + { swingYawInit, CAM_DATA_SWING_YAW_INIT }, \ + { swingYawFinal, CAM_DATA_SWING_YAW_FINAL }, \ + { swingPitchInit, CAM_DATA_SWING_PITCH_INIT }, \ + { swingPitchFinal, CAM_DATA_SWING_PITCH_FINAL }, \ + { swingPitchAdj, CAM_DATA_SWING_PITCH_ADJ }, \ + { fov, CAM_DATA_FOV }, \ + { atLerpStepScale, CAM_DATA_AT_LERP_STEP_SCALE }, \ + { flags, CAM_DATA_FLAGS }, \ + { groundYOffset, CAM_DATA_GROUND_Y_OFFSET }, \ + { groundAtLerpStepScale, CAM_DATA_GROUND_AT_LERP_STEP_SCALE } + typedef struct { /* 0x00 */ Vec3f eyeToAtTarget; // esentially a VecSph, but all floats. /* 0x0C */ Actor* target; @@ -455,6 +619,20 @@ typedef struct { /* 0x2C */ Keep3Anim anim; } KeepOn3; // size = 0x4C +#define CAM_FUNCDATA_KEEP3(yOffset, eyeDist, eyeDistNext, swingYawInit, swingYawFinal, swingPitchInit, swingPitchFinal, swingPitchAdj, fov, atLerpStepScale, yawUpdateRateTarget, flags) \ + { yOffset, CAM_DATA_Y_OFFSET }, \ + { eyeDist, CAM_DATA_EYE_DIST }, \ + { eyeDistNext, CAM_DATA_EYE_DIST_NEXT }, \ + { swingYawInit, CAM_DATA_SWING_YAW_INIT }, \ + { swingYawFinal, CAM_DATA_SWING_YAW_FINAL }, \ + { swingPitchInit, CAM_DATA_SWING_PITCH_INIT }, \ + { swingPitchFinal, CAM_DATA_SWING_PITCH_FINAL }, \ + { swingPitchAdj, CAM_DATA_SWING_PITCH_ADJ }, \ + { fov, CAM_DATA_FOV }, \ + { atLerpStepScale, CAM_DATA_AT_LERP_STEP_SCALE }, \ + { yawUpdateRateTarget, CAM_DATA_YAW_UPDATE_RATE_TARGET }, \ + { flags, CAM_DATA_FLAGS } + typedef struct { /* 0x00 */ f32 unk_00; /* 0x04 */ f32 unk_04; @@ -479,6 +657,17 @@ typedef struct { /* 0x20 */ KeepOn4_Unk20 unk_20; } KeepOn4; // size = 0x34 +#define CAM_FUNCDATA_KEEP4(yOffset, eyeDist, pitchTarget, yawTarget, atOffsetZ, fov, flags, 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 }, \ + { yawUpdateRateTarget, CAM_DATA_YAW_UPDATE_RATE_TARGET }, \ + { unk_22, CAM_DATA_UNK_22 } + typedef struct { /* 0x0 */ f32 fovTarget; /* 0x4 */ s16 animTimer; @@ -492,6 +681,12 @@ typedef struct { /* 0x0C */ KeepOn0Anim anim; } KeepOn0; // size = 0x14 +#define CAM_FUNCDATA_KEEP0(fovScale, yawScale, yawUpdateRateTarget, flags) \ + { fovScale, CAM_DATA_FOV_SCALE }, \ + { yawScale, CAM_DATA_YAW_SCALE }, \ + { yawUpdateRateTarget, CAM_DATA_YAW_UPDATE_RATE_TARGET }, \ + { flags, CAM_DATA_FLAGS } + typedef struct { /* 0x00 */ PosRot eyePosRotTarget; /* 0x14 */ s16 fov; @@ -505,6 +700,12 @@ typedef struct { /* 0x10 */ Fixed1Anim anim; } Fixed1; // size = 0x28 +#define CAM_FUNCDATA_FIXD1(yOffset, yawUpdateRateTarget, fov, flags) \ + { yOffset, CAM_DATA_Y_OFFSET }, \ + { yawUpdateRateTarget, CAM_DATA_YAW_UPDATE_RATE_TARGET }, \ + { fov, CAM_DATA_FOV }, \ + { flags, CAM_DATA_FLAGS } + typedef struct { /* 0x0 */ Vec3f eye; /* 0xC */ s16 fov; @@ -519,6 +720,13 @@ typedef struct { /* 0x14 */ Fixed2InitParams initParams; } Fixed2; // size = 0x24 +#define CAM_FUNCDATA_FIXD2(yOffset, yawUpdateRateTarget, xzUpdateRateTarget, fov, flags) \ + { 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 } + typedef struct { /* 0x0 */ Vec3s rot; /* 0x6 */ s16 fov; @@ -545,6 +753,13 @@ typedef struct { /* 0x14 */ Fixed4Anim anim; } Fixed4; // size = 0x24 +#define CAM_FUNCDATA_FIXD4(yOffset, yawUpdateRateTarget, xzUpdateRateTarget, fov, flags) \ + { 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 } + typedef struct { /* 0x0 */ f32 r; /* 0x4 */ s16 yaw; @@ -563,6 +778,17 @@ typedef struct { /* 0x24 */ Subj3Anim anim; } Subj3; // size = 0x30 +#define CAM_FUNCDATA_SUBJ3(yOffset, eyeDist, eyeDistNext, yawUpdateRateTarget, atOffsetX, atOffsetY, atOffsetZ, fov, flags) \ + { yOffset, CAM_DATA_Y_OFFSET }, \ + { eyeDist, CAM_DATA_EYE_DIST }, \ + { eyeDistNext, CAM_DATA_EYE_DIST_NEXT }, \ + { yawUpdateRateTarget, CAM_DATA_YAW_UPDATE_RATE_TARGET }, \ + { atOffsetX, CAM_DATA_AT_OFFSET_X }, \ + { atOffsetY, CAM_DATA_AT_OFFSET_Y }, \ + { atOffsetZ, CAM_DATA_AT_OFFSET_Z }, \ + { fov, CAM_DATA_FOV }, \ + { flags, CAM_DATA_FLAGS } + typedef struct { /* 0x00 */ Linef unk_00; /* 0x18 */ f32 unk_18; @@ -581,6 +807,14 @@ typedef struct { /* 0x4 */ Subj4Anim anim; } Subj4; // size = 0x38 +#define CAM_FUNCDATA_SUBJ4(yOffset, eyeDist, eyeDistNext, yawUpdateRateTarget, fov, flags) \ + { 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 } + typedef struct { /* 0x00 */ PosRot eyePosRot; /* 0x14 */ char unk_14[0x8]; @@ -595,6 +829,11 @@ typedef struct { /* 0xC */ Data4InitParams initParams; } Data4; // size = 0x2C +#define CAM_FUNCDATA_DATA4(yOffset, fov, flags) \ + { yOffset, CAM_DATA_Y_OFFSET }, \ + { fov, CAM_DATA_FOV }, \ + { flags, CAM_DATA_FLAGS } + typedef struct { /* 0x0 */ f32 unk_00; // unused /* 0x4 */ s16 yawTarget; @@ -614,6 +853,15 @@ typedef struct { /* 0x1C */ Unique1Anim anim; } Unique1; // size = 0x28 +#define CAM_FUNCDATA_UNIQ1(yOffset, eyeDist, eyeDistNext, pitchTarget, fov, atLerpStepScale, flags) \ + { 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 } + typedef struct { /* 0x0 */ f32 unk_00; /* 0x4 */ s16 unk_04; @@ -627,6 +875,12 @@ typedef struct { /* 0x10 */ Unique2Unk10 unk_10; // unused, values set but not read. } Unique2; // size = 0x18 +#define CAM_FUNCDATA_UNIQ2(yOffset, eyeDist, fov, flags) \ + { yOffset, CAM_DATA_Y_OFFSET }, \ + { eyeDist, CAM_DATA_EYE_DIST }, \ + { fov, CAM_DATA_FOV }, \ + { flags, CAM_DATA_FLAGS } + typedef struct { /* 0x0 */ f32 initialFov; /* 0x4 */ f32 initialDist; @@ -652,6 +906,11 @@ typedef struct { /* 0x18 */ Unique3Anim anim; } Unique3; // size = 0x20 +#define CAM_FUNCDATA_UNIQ3(yOffset, fov, flags) \ + { yOffset, CAM_DATA_Y_OFFSET }, \ + { fov, CAM_DATA_FOV }, \ + { flags, CAM_DATA_FLAGS } + typedef struct { /* 0x00 */ Vec3f initalPos; /* 0x0C */ s16 animTimer; @@ -683,6 +942,10 @@ typedef struct { /* 0x8 */ Unique7Unk8 unk_08; // unk_08 goes unused. } Unique7; // size = 0x10 +#define CAM_FUNCDATA_UNIQ7(fov, flags) \ + { fov, CAM_DATA_FOV }, \ + { flags, CAM_DATA_FLAGS } + /** initFlags * & 0x00FF = atInitFlags * & 0xFF00 = eyeInitFlags @@ -757,6 +1020,11 @@ typedef struct { /* 0xC */ Demo3Anim anim; } Demo3; // size = 0x20 +#define CAM_FUNCDATA_DEMO3(fov, atLerpStepScale, flags) \ + { fov, CAM_DATA_FOV }, \ + { atLerpStepScale, CAM_DATA_AT_LERP_STEP_SCALE }, \ + { flags, CAM_DATA_FLAGS } + typedef struct { /* 0x0 */ s16 animTimer; /* 0x4 */ Vec3f atTarget; @@ -798,6 +1066,10 @@ typedef struct { /* 0x4 */ s16 interfaceFlags; } Special0; // size = 0x8 +#define CAM_FUNCDATA_SPEC0(yawUpdateRateTarget, flags) \ + { yawUpdateRateTarget, CAM_DATA_YAW_UPDATE_RATE_TARGET }, \ + { flags, CAM_DATA_FLAGS } + typedef struct { /* 0x0 */ s16 initalTimer; } Special4; // size = 0x4 @@ -819,6 +1091,27 @@ typedef struct { /* 0x1C */ Special5Anim anim; } Special5; // size = 0x20 +#define CAM_FUNCDATA_SPEC5(yOffset, eyeDist, eyeDistNext, unk_22, pitchTarget, fov, atLerpStepScale, flags) \ + { yOffset, CAM_DATA_Y_OFFSET }, \ + { eyeDist, CAM_DATA_EYE_DIST }, \ + { eyeDistNext, CAM_DATA_EYE_DIST_NEXT }, \ + { unk_22, CAM_DATA_UNK_22 }, \ + { pitchTarget, CAM_DATA_PITCH_TARGET }, \ + { fov, CAM_DATA_FOV }, \ + { atLerpStepScale, CAM_DATA_AT_LERP_STEP_SCALE }, \ + { flags, CAM_DATA_FLAGS } + +// Uses incorrect CAM_DATA values +#define CAM_FUNCDATA_SPEC5_ALT(yOffset, eyeDist, eyeDistNext, pitchTarget, fov, atLerpStepScale, unk_22, flags) \ + { 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 }, \ + { unk_22, CAM_DATA_UNK_22 }, \ + { flags, CAM_DATA_FLAGS } + typedef struct { /* 0x0 */ s16 idx; } Special7; // size = 0x4 @@ -850,6 +1143,11 @@ typedef struct { /* 0xC */ Special9Params params; } Special9; // size = 0x1C +#define CAM_FUNCDATA_SPEC9(yOffset, fov, flags) \ + { yOffset, CAM_DATA_Y_OFFSET }, \ + { fov, CAM_DATA_FOV }, \ + { flags, CAM_DATA_FLAGS } + typedef struct { /* 0x00 */ Vec3f pos; /* 0x0C */ Vec3f norm; diff --git a/src/code/z_camera.c b/src/code/z_camera.c index 041d0f9e7f..dfbf8a0493 100644 --- a/src/code/z_camera.c +++ b/src/code/z_camera.c @@ -701,7 +701,7 @@ f32 Camera_ClampLERPScale(Camera* camera, f32 maxLERPScale) { return ret; } -void Camera_CopyModeValuesToPREG(Camera* camera, s16 mode) { +void Camera_CopyDataToRegs(Camera* camera, s16 mode) { CameraModeValue* values; CameraModeValue* valueP; s32 i; @@ -714,9 +714,9 @@ void Camera_CopyModeValuesToPREG(Camera* camera, s16 mode) { for (i = 0; i < sCameraSettings[camera->setting].cameraModes[mode].valueCnt; i++) { valueP = &values[i]; - PREG(valueP->param) = valueP->val; + PREG(valueP->dataType) = valueP->val; if (PREG(82)) { - osSyncPrintf("camera: res: PREG(%02d) = %d\n", valueP->param, valueP->val); + osSyncPrintf("camera: res: PREG(%02d) = %d\n", valueP->dataType, valueP->val); } } camera->animState = 0; @@ -729,9 +729,9 @@ s32 Camera_CopyPREGToModeValues(Camera* camera) { for (i = 0; i < sCameraSettings[camera->setting].cameraModes[camera->mode].valueCnt; i++) { valueP = &values[i]; - valueP->val = PREG(valueP->param); + valueP->val = R_CAM_DATA(valueP->dataType); if (PREG(82)) { - osSyncPrintf("camera: res: %d = PREG(%02d)\n", valueP->val, valueP->param); + osSyncPrintf("camera: res: %d = PREG(%02d)\n", valueP->val, valueP->dataType); } } return true; @@ -999,7 +999,7 @@ s32 func_80045B08(Camera* camera, VecSph* eyeAtDir, f32 yExtra, s16 arg3) { /** * Adjusts the camera's at position for Camera_Parallel1 */ -s32 Camera_CalcAtForParallel(Camera* camera, VecSph* arg1, f32 arg2, f32* arg3, s16 arg4) { +s32 Camera_CalcAtForParallel(Camera* camera, VecSph* arg1, f32 yOffset, f32* arg3, s16 arg4) { Vec3f* at = &camera->at; Vec3f posOffsetTarget; Vec3f atTarget; @@ -1013,7 +1013,7 @@ s32 Camera_CalcAtForParallel(Camera* camera, VecSph* arg1, f32 arg2, f32* arg3, temp_f0_4 = Player_GetHeight(camera->player); posOffsetTarget.x = 0.0f; - posOffsetTarget.y = temp_f0_4 + arg2; + posOffsetTarget.y = temp_f0_4 + yOffset; posOffsetTarget.z = 0.0f; if (PREG(76) && arg4) { @@ -1974,8 +1974,7 @@ s32 Camera_Parallel1(Camera* camera) { CameraModeValue* values = sCameraSettings[camera->setting].cameraModes[camera->mode].values; f32 yNormal = (1.0f + PCT(OREG(46))) - (PCT(OREG(46)) * (68.0f / playerHeight)); - para1->unk_00 = NEXTPCT * playerHeight * yNormal; - ; + para1->yOffset = NEXTPCT * playerHeight * yNormal; para1->distTarget = NEXTPCT * playerHeight * yNormal; para1->pitchTarget = DEGF_TO_BINANG(NEXTSETTING); para1->yawTarget = DEGF_TO_BINANG(NEXTSETTING); @@ -2068,7 +2067,7 @@ s32 Camera_Parallel1(Camera* camera) { } if (!(para1->interfaceFlags & 0x80) && !sp6A) { - Camera_CalcAtForParallel(camera, &atToEyeNextDir, para1->unk_00, &anim->yTarget, para1->interfaceFlags & 1); + Camera_CalcAtForParallel(camera, &atToEyeNextDir, para1->yOffset, &anim->yTarget, para1->interfaceFlags & 1); } else { func_800458D4(camera, &atToEyeNextDir, para1->unk_18, &anim->yTarget, para1->interfaceFlags & 1); } @@ -4007,7 +4006,7 @@ s32 Camera_Fixed3(Camera* camera) { if (camera->animState == 0) { anim->updDirTimer = 5; - R_CAM_FIXED3_FOV = anim->fov; + R_CAM_DATA(CAM_DATA_FOV) = anim->fov; camera->animState++; } @@ -4030,7 +4029,7 @@ s32 Camera_Fixed3(Camera* camera) { Camera_Vec3fVecSphGeoAdd(at, eye, &atSph); sCameraInterfaceFlags = fixd3->interfaceFlags; - anim->fov = R_CAM_FIXED3_FOV; + anim->fov = R_CAM_DATA(CAM_DATA_FOV); camera->roll = 0; camera->fov = anim->fov * 0.01f; camera->atLERPStepScale = 0.0f; @@ -6789,8 +6788,8 @@ void Camera_Init(Camera* camera, View* view, CollisionContext* colCtx, GlobalCon OREG(i) = sOREGInit[i]; } - for (i = 0; i < sPREGInitCnt; i++) { - PREG(i) = sPREGInit[i]; + for (i = 0; i < sCamDataRegsInitCount; i++) { + R_CAM_DATA(i) = sCamDataRegsInit[i]; } DbCamera_Reset(camera, &D_8015BD80); @@ -6945,7 +6944,7 @@ void Camera_InitPlayerSettings(Camera* camera, Player* player) { camera->paramFlags = 0; camera->nextCamDataIdx = -1; camera->atLERPStepScale = 1.0f; - Camera_CopyModeValuesToPREG(camera, camera->mode); + Camera_CopyDataToRegs(camera, camera->mode); Camera_QRegInit(); osSyncPrintf(VT_FGCOL(BLUE) "camera: personalize ---" VT_RST "\n"); @@ -6972,9 +6971,9 @@ s16 Camera_ChangeStatus(Camera* camera, s16 status) { values = sCameraSettings[camera->setting].cameraModes[camera->mode].values; for (i = 0; i < sCameraSettings[camera->setting].cameraModes[camera->mode].valueCnt; i++) { valueP = &values[i]; - PREG(valueP->param) = valueP->val; + R_CAM_DATA(valueP->dataType) = valueP->val; if (PREG(82)) { - osSyncPrintf("camera: change camera status: PREG(%02d) = %d\n", valueP->param, valueP->val); + osSyncPrintf("camera: change camera status: PREG(%02d) = %d\n", valueP->dataType, valueP->val); } } } @@ -7615,7 +7614,7 @@ s32 Camera_ChangeModeFlags(Camera* camera, s16 mode, u8 flags) { osSyncPrintf(VT_COL(YELLOW, BLACK) "camera: change camera mode: force NORMAL: %s %s refused\n" VT_RST, sCameraSettingNames[camera->setting], sCameraModeNames[mode]); camera->mode = CAM_MODE_NORMAL; - Camera_CopyModeValuesToPREG(camera, camera->mode); + Camera_CopyDataToRegs(camera, camera->mode); func_8005A02C(camera); return 0xC0000000 | mode; } else { @@ -7631,7 +7630,7 @@ s32 Camera_ChangeModeFlags(Camera* camera, s16 mode, u8 flags) { } camera->unk_14A |= 0x20; camera->unk_14A |= 2; - Camera_CopyModeValuesToPREG(camera, mode); + Camera_CopyDataToRegs(camera, mode); modeChangeFlags = 0; switch (mode) { case CAM_MODE_FIRSTPERSON: @@ -7790,7 +7789,7 @@ s16 Camera_ChangeSettingFlags(Camera* camera, s16 setting, s16 flags) { camera->setting = setting; if (Camera_ChangeModeFlags(camera, camera->mode, 1) >= 0) { - Camera_CopyModeValuesToPREG(camera, camera->mode); + Camera_CopyDataToRegs(camera, camera->mode); } osSyncPrintf(VT_SGR("1") "%06u:" VT_RST " camera: change camera[%d] set %s\n", camera->globalCtx->state.frames, @@ -7819,7 +7818,7 @@ s32 Camera_ChangeDataIdx(Camera* camera, s32 camDataIdx) { if (settingChangeSuccessful || sCameraSettings[camera->setting].unk_00 & 0x80000000) { camera->camDataIdx = camDataIdx; camera->unk_14A |= 4; - Camera_CopyModeValuesToPREG(camera, camera->mode); + Camera_CopyDataToRegs(camera, camera->mode); } else if (settingChangeSuccessful < -1) { //! @bug: This is likely checking the wrong value. The actual return of Camera_ChangeSettingFlags or // camDataIdx would make more sense. @@ -7994,7 +7993,7 @@ s32 Camera_ChangeDoorCam(Camera* camera, Actor* doorActor, s16 camDataIdx, f32 a doorParams->camDataIdx = camDataIdx; if (camDataIdx == -99) { - Camera_CopyModeValuesToPREG(camera, camera->mode); + Camera_CopyDataToRegs(camera, camera->mode); return -99; } @@ -8014,7 +8013,7 @@ s32 Camera_ChangeDoorCam(Camera* camera, Actor* doorActor, s16 camDataIdx, f32 a osSyncPrintf("....change door camera ID %d (set %d)\n", camera->camDataIdx, camera->setting); } - Camera_CopyModeValuesToPREG(camera, camera->mode); + Camera_CopyDataToRegs(camera, camera->mode); return -1; } diff --git a/src/code/z_camera_data.c b/src/code/z_camera_data.c index 18307b0337..1f457888e5 100644 --- a/src/code/z_camera_data.c +++ b/src/code/z_camera_data.c @@ -3,7 +3,7 @@ typedef struct { s16 val; - s16 param; + s16 dataType; } CameraModeValue; typedef struct { @@ -34,11 +34,37 @@ s16 sOREGInit[] = { s16 sOREGInitCnt = 53; -s16 sPREGInit[] = { - -20, 200, 300, 10, 12, 10, 35, 60, 60, 3, 0, -40, 20, 25, 45, -5, 15, 15, 20, 0, 0, 0, 6, 60, 30, 0, 5, +s16 sCamDataRegsInit[CAM_DATA_MAX] = { + -20, // CAM_DATA_Y_OFFSET + 200, // CAM_DATA_EYE_DIST + 300, // CAM_DATA_EYE_DIST_NEXT + 10, // CAM_DATA_PITCH_TARGET + 12, // CAM_DATA_YAW_UPDATE_RATE_TARGET + 10, // CAM_DATA_XZ_UPDATE_RATE_TARGET + 35, // CAM_DATA_MAX_YAW_UPDATE + 60, // CAM_DATA_FOV + 60, // CAM_DATA_AT_LERP_STEP_SCALE + 3, // CAM_DATA_FLAGS + 0, // CAM_DATA_YAW_TARGET + -40, // CAM_DATA_GROUND_Y_OFFSET + 20, // CAM_DATA_GROUND_AT_LERP_STEP_SCALE + 25, // CAM_DATA_SWING_YAW_INIT + 45, // CAM_DATA_SWING_YAW_FINAL + -5, // CAM_DATA_SWING_PITCH_INIT + 15, // CAM_DATA_SWING_PITCH_FINAL + 15, // CAM_DATA_SWING_PITCH_ADJ + 20, // CAM_DATA_MIN_MAX_DIST_FACTOR + 0, // CAM_DATA_AT_OFFSET_X + 0, // CAM_DATA_AT_OFFSET_Y + 0, // CAM_DATA_AT_OFFSET_Z + 6, // CAM_DATA_UNK_22 + 60, // CAM_DATA_UNK_23 + 30, // CAM_DATA_FOV_SCALE + 0, // CAM_DATA_YAW_SCALE + 5, // CAM_DATA_UNK_26 }; -s16 sPREGInitCnt = 27; +s16 sCamDataRegsInitCount = ARRAY_COUNT(sCamDataRegsInit); char sCameraSettingNames[][12] = { "NONE ", "NORMAL0 ", "NORMAL1 ", "DUNGEON0 ", "DUNGEON1 ", "NORMAL3 ", "HORSE0 ", @@ -59,3188 +85,1992 @@ char sCameraModeNames[][12] = { "HANG ", "HANGZ ", "FREEFALL ", "CHARGE ", "STILL ", "PUSHPULL ", "BOOKEEPON ", }; -CameraModeValue D_8011A3A0[] = { - /* CAM_FUNC_NORM1 */ - { -20, 0 }, // yOffset - { 200, 1 }, // distMin - { 300, 2 }, // distMax - { 10, 3 }, // pitchtarget - { 12, 4 }, // unk_0C - { 10, 5 }, // unk_10 - { 35, 6 }, // unk_14 - { 60, 7 }, // fovTarget - { 60, 8 }, // atLERPScaleMax - { 0x0003, 9 }, // flags -}; - -CameraModeValue D_8011A3C8[] = { - /* CAM_FUNC_PARA1 */ - { -20, 0 }, // unk_00 - { 250, 1 }, // distTarget - { 0, 3 }, // pitchTarget - { 0, 10 }, // yawTarget - { 5, 4 }, // unk_08 - { 5, 5 }, // unk_0C - { 45, 7 }, // fovTarget - { 50, 8 }, // unk_14 - { 0x200A, 9 }, // flags - { -40, 11 }, // unk_18 - { 20, 12 } // unk_1C -}; - -CameraModeValue D_8011A3F4[] = { - /* CAM_FUNC_KEEP1 */ - { -20, 0 }, // unk_00 - { 120, 1 }, // unk_04 - { 140, 2 }, // unk_08 - { 25, 13 }, // unk_0C - { 45, 14 }, // unk_10 - { -5, 15 }, // unk_14 - { 15, 16 }, // unk_18 - { 15, 17 }, // unk_1C - { 45, 7 }, // unk_20 - { 50, 8 }, // unk_24 - { 0x2001, 9 }, // flags - { -50, 11 }, // unk_28 - { 30, 12 }, // unk_2C -}; - -CameraModeValue D_8011A428[] = { - /* CAM_FUNC_KEEP3 */ - { -30, 0 }, // yOffset - { 70, 1 }, // minDist - { 200, 2 }, // maxDist - { 40, 13 }, // swingYawInitial - { 10, 14 }, // swingYawFinal - { 0, 15 }, // swingPitchInitial - { 5, 16 }, // swingPitchFinal - { 70, 17 }, // swingPitchAdj - { 45, 7 }, // fovTarget - { 50, 8 }, // atLERPScaleMax - { 10, 4 }, // initTimer - { 0x3500, 9 }, // flags -}; - -CameraModeValue D_8011A458[] = { - /* CAM_FUNC_BATT1 */ - { -20, 0 }, // yOffset (PCT) - { 180, 1 }, // distance - { 10, 13 }, // swingYawInitial - { 80, 14 }, // swingYawFinal - { 0, 15 }, // swingPitchInitial - { 10, 16 }, // swingPitchFinal - { 25, 17 }, // swingPitchAdj (PCT) - { 50, 7 }, // fov - { 80, 8 }, // atLERPScaleOnGround (PCT) - { 0x2002, 9 }, // flags - { -40, 11 }, // yOffsetOffGround (PCT) - { 25, 12 }, // atLERPScaleOffGround (PCT) -}; - -CameraModeValue D_8011A488[] = { - /* CAM_FUNC_JUMP2 */ - { -20, 0 }, // atYOffset - { 200, 1 }, // minDist - { 300, 2 }, // maxDist - { 20, 18 }, // minMaxDistFactor - { 5, 4 }, // yawUpdRateTarget - { 5, 5 }, // xzUpdRateTarget - { 60, 7 }, // fovTarget - { 40, 8 }, // atLERPStepScale - { 0x0000, 9 }, // flags -}; - -CameraModeValue D_8011A4AC[] = { - /* CAM_FUNC_SUBJ3 */ - { 0, 0 }, // eyeNextYOffset - { 5, 1 }, // eyeDist - { 50, 2 }, // eyeNextDist - { 10, 4 }, // unk_0C - { 0, 19 }, // atOffset.x - { 0, 20 }, // atOffset.y - { 0, 21 }, // atOffset.z - { 45, 7 }, // fovTarget - { 0x0000, 9 }, // flags -}; - -CameraModeValue D_8011A4D0[] = { - /* CAM_FUNC_SUBJ3 */ - { -7, 0 }, // eyeNextYOffset - { 14, 1 }, // eyeDist - { 50, 2 }, // eyeNextDist - { 10, 4 }, // unk_0C - { 0, 19 }, // atOffset.x - { -30, 20 }, // atOffset.y - { -5, 21 }, // atOffset.z - { 45, 7 }, // fovTarget - { 0x2000, 9 }, // flags -}; - -CameraModeValue D_8011A4F4[] = { - /* CAM_FUNC_SUBJ3 */ - { 20, 0 }, // eyeNextYOffset - { 70, 1 }, // eyeDist - { 70, 2 }, // eyeNextDist - { 10, 4 }, // unk_0C - { -120, 19 }, // atOffset.x - { 20, 20 }, // atOffset.y - { 0, 21 }, // atOffset.z - { 45, 7 }, // fovTarget - { 0x2000, 9 }, // flags -}; - -CameraModeValue D_8011A518[] = { - /* CAM_FUNC_SPEC5 */ - { -20, 0 }, // yOffset - { 80, 1 }, // eyeDist - { 250, 2 }, // minDistForRot - { 45, 3 }, // timerInit - { 60, 7 }, // pitch - { 40, 8 }, // fovTarget - { 6, 22 }, // atMaxLERPScale - { 0x2000, 9 }, // flags -}; - -CameraModeValue D_8011A538[] = { - /* CAM_FUNC_SUBJ3 */ - { 5, 0 }, // eyeNextYOffset - { 50, 1 }, // eyeDist - { 50, 2 }, // eyeNextDist - { 10, 4 }, // unk_0C - { 0, 19 }, // atOffset.x - { 0, 20 }, // atOffset.y - { 0, 21 }, // atOffset.z - { 45, 7 }, // fovTarget - { 0x2000, 9 }, // flags -}; - -CameraModeValue D_8011A55C[] = { - /* CAM_FUNC_SUBJ3 */ - { -7, 0 }, // eyeNextYOffset - { 14, 1 }, // eyeDist - { 50, 2 }, // eyeNextDist - { 10, 4 }, // unk_0C - { -9, 19 }, // atOffset.x - { -63, 20 }, // atOffset.y - { -30, 21 }, // atOffset.z - { 45, 7 }, // fovTarget - { 0x2000, 9 }, // flags -}; - -CameraModeValue D_8011A580[] = { - /* CAM_FUNC_JUMP2 */ - { -20, 0 }, // atYOffset - { 200, 1 }, // minDist - { 300, 2 }, // maxDist - { 20, 18 }, // minMaxDistFactor - { 999, 4 }, // yawUpdRateTarget - { 5, 5 }, // xzUpdRateTarget - { 60, 7 }, // fovTarget - { 40, 8 }, // atLERPStepScale - { 0x2006, 9 }, // flags -}; - -CameraModeValue D_8011A5A4[] = { - /* CAM_FUNC_JUMP1 */ - { -20, 0 }, // atYOffset - { 200, 1 }, // distMin - { 300, 2 }, // distMax - { 12, 4 }, // yawUpdateRateTarget - { 35, 6 }, // maxYawUpdate - { 60, 7 }, // unk_14 - { 40, 8 }, // atLERPScaleMax - { 0x0000, 9 }, // flags -}; - -CameraModeValue D_8011A5C4[] = { - /* CAM_FUNC_UNIQ1 */ - { -80, 0 }, // yOffset - { 200, 1 }, // distMin - { 300, 2 }, // distMax - { 40, 3 }, // pitchTarget - { 60, 7 }, // fovTarget - { 10, 8 }, // atLERPScaleMax - { 0x0000, 9 }, // flags -}; - -CameraModeValue D_8011A5E0[] = { - /* CAM_FUNC_UNIQ1 */ - { -120, 0 }, // yOffset - { 300, 1 }, // distMin - { 300, 2 }, // distMax - { 70, 3 }, // pitchTarget - { 45, 7 }, // fovTarget - { 10, 8 }, // atLERPScaleMax - { 0x2000, 9 }, // flags -}; - -CameraModeValue D_8011A5FC[] = { - /* CAM_FUNC_JUMP1 */ - { -20, 0 }, // atYOffset - { 200, 1 }, // distMin - { 300, 2 }, // distMax - { 15, 4 }, // yawUpdateRateTarget - { 80, 6 }, // maxYawUpdate - { 60, 7 }, // unk_14 - { 20, 8 }, // atLERPScaleMax - { 0x0000, 9 }, // flags -}; - -CameraModeValue D_8011A61C[] = { - /* CAM_FUNC_BATT4 */ - { -20, 0 }, // yOffset - { 300, 1 }, // rTarget - { 50, 3 }, // pitchTarget - { 2, 4 }, // lerpUpdateRate - { 80, 7 }, // fovTarget - { 20, 8 }, // atLERPTarget - { 0xF000, 9 }, // flags -}; - -CameraModeValue D_8011A638[] = { - /* CAM_FUNC_NORM1 */ - { -20, 0 }, // yOffset - { 200, 1 }, // distMin - { 300, 2 }, // distMax - { 10, 3 }, // pitchTarget - { 100, 4 }, // unk_0C - { 10, 5 }, // unk_10 - { 100, 6 }, // unk_14 - { 60, 7 }, // fovTarget - { 5, 8 }, // atLERPScaleMax - { 0xF003, 9 }, // flags -}; - -CameraModeValue D_8011A660[] = { - /* CAM_FUNC_PARA1 */ - { 0, 0 }, // unk_00 - { 250, 1 }, // distTarget - { 25, 3 }, // pitchTarget - { 0, 10 }, // yawTarget - { 5, 4 }, // unk_08 - { 5, 5 }, // unk_0C - { 70, 7 }, // fovTarget - { 30, 8 }, // unk_14 - { 0x206A, 9 }, // flags - { -20, 11 }, // unk_18 - { 30, 12 }, // unk_1C -}; - -CameraModeValue D_8011A68C[] = { - /* CAM_FUNC_KEEP1 */ - { -5, 0 }, // unk_00 - { 120, 1 }, // unk_04 - { 140, 2 }, // unk_08 - { 5, 13 }, // unk_0C - { 85, 14 }, // unk_10 - { 10, 15 }, // unk_14 - { 5, 16 }, // unk_18 - { 25, 17 }, // unk_1C - { 45, 7 }, // unk_20 - { 50, 8 }, // unk_24 - { 0x2001, 9 }, // flags - { -15, 11 }, // unk_28 - { 30, 12 }, // unk_2C -}; - -CameraModeValue sSetNorm1ModeNormVals[] = { - /* CAM_FUNC_NORM1 */ - { 0, 0 }, // yOffset - { 200, 1 }, // distMin - { 400, 2 }, // distMax - { 10, 3 }, // pitchTarget - { 12, 4 }, // unk_0C - { 20, 5 }, // unk_10 - { 40, 6 }, // unk_14 - { 60, 7 }, // fovTarget - { 60, 8 }, // atLERPScaleMax - { 0x0003, 9 }, // flags -}; - -CameraModeValue sSetNorm1ModeParaVals[] = { - /* CAM_FUNC_PARA1 */ - { 0, 0 }, // unk_00 - { 250, 1 }, // distTarget - { 0, 3 }, // pitchTarget - { 0, 10 }, // yawTarget - { 5, 4 }, // unk_08 - { 5, 5 }, // unk_0C - { 45, 7 }, // fovTarget - { 50, 8 }, // unk_14 - { 0x2002, 9 }, // flags - { -40, 11 }, // unk_18 - { 20, 12 }, // unk_1C -}; - -CameraModeValue D_8011A714[] = { - /* CAM_FUNC_KEEP1 */ - { -20, 0 }, // unk_00 - { 120, 1 }, // unk_04 - { 140, 2 }, // unk_08 - { 25, 13 }, // unk_0C - { 45, 14 }, // unk_10 - { -5, 15 }, // unk_14 - { 15, 16 }, // unk_18 - { 15, 17 }, // unk_1C - { 45, 7 }, // unk_20 - { 50, 8 }, // unk_24 - { 0x2001, 9 }, // flags - { -50, 11 }, // unk_28 - { 20, 12 }, // unk_2C -}; - -CameraModeValue D_8011A748[] = { - /* CAM_FUNC_BATT1 */ - { -20, 0 }, // yOffset (PCT) - { 250, 1 }, // distance - { 10, 13 }, // swingYawInitial - { 80, 14 }, // swingYawFinal - { 0, 15 }, // swingPitchInitial - { 10, 16 }, // swingPitchFinal - { 25, 17 }, // swingPitchAdj (PCT) - { 50, 7 }, // fov - { 65, 8 }, // atLERPScaleOnGround (PCT) - { 0x2002, 9 }, // flags - { -40, 11 }, // yOffsetOffGround (PCT) - { 25, 12 }, // atLERPScaleOffGround (PCT) -}; - -CameraModeValue D_8011A778[] = { - /* CAM_FUNC_SPEC5 */ - { -20, 0 }, // yOffset - { 80, 1 }, // eyeDist - { 250, 2 }, // minDistForRot - { 6, 22 }, // timerInit - { 45, 3 }, // pitch - { 60, 7 }, // fovTarget - { 40, 8 }, // atMaxLERPScale - { 0x2000, 9 }, // flags -}; - -CameraModeValue D_8011A798[] = { - /* CAM_FUNC_JUMP1 */ - { 0, 0 }, // atYOffset - { 250, 1 }, // distMin - { 400, 2 }, // distMax - { 15, 4 }, // yawUpdateRateTarget - { 50, 6 }, // maxYawUpdate - { 60, 7 }, // unk_14 - { 30, 8 }, // atLERPScaleMax - { 0x0000, 9 }, // flags -}; - -CameraModeValue D_8011A7B8[] = { - /* CAM_FUNC_JUMP1 */ - { 0, 0 }, // atYOffset - { 200, 1 }, // distMin - { 400, 2 }, // distMax - { 30, 4 }, // yawUpdateRateTarget - { 80, 6 }, // maxYawUpdate - { 60, 7 }, // unk_14 - { 20, 8 }, // atLERPScaleMax - { 0x0000, 9 }, // flags -}; - -CameraModeValue D_8011A7D8[] = { - /* CAM_FUNC_JUMP2 */ - { -20, 0 }, // atYOffset - { 200, 1 }, // minDist - { 400, 2 }, // maxDist - { 20, 18 }, // minMaxDistFactor - { 5, 4 }, // yawUpdRateTarget - { 5, 5 }, // xzUpdRateTarget - { 60, 7 }, // fovTarget - { 40, 8 }, // atLERPStepScale - { 0x0000, 9 }, // flags -}; - -CameraModeValue D_8011A7FC[] = { - /* CAM_FUNC_JUMP2 */ - { -20, 0 }, // atYOffset - { 250, 1 }, // minDist - { 400, 2 }, // maxDist - { 20, 18 }, // minMaxDistFactor - { 999, 4 }, // yawUpdRateTarget - { 5, 5 }, // xzUpdRateTarget - { 60, 7 }, // fovTarget - { 40, 8 }, // atLERPStepScale - { 0x2006, 9 }, // flags -}; - -CameraModeValue D_8011A820[] = { - /* CAM_FUNC_BATT4 */ - { 0, 0 }, // yOffset - { 300, 1 }, // rTarget - { 50, 3 }, // pitchTarget - { 2, 4 }, // lerpUpdateRate - { 80, 7 }, // fovTarget - { 20, 8 }, // atLERPTarget - { 0xF000, 9 }, // flags -}; - -CameraModeValue D_8011A83C[] = { - /* CAM_FUNC_UNIQ1 */ - { -80, 0 }, // yOffset - { 200, 1 }, // distMin - { 400, 2 }, // distMax - { 40, 3 }, // pitchTarget - { 60, 7 }, // fovTarget - { 10, 8 }, // atLERPScaleMax - { 0x0000, 9 }, // flags -}; - -CameraModeValue D_8011A858[] = { - /* CAM_FUNC_UNIQ1 */ - { -120, 0 }, // yOffset - { 400, 1 }, // distMin - { 400, 2 }, // distMax - { 70, 3 }, // pitchTarget - { 45, 7 }, // fovTarget - { 10, 8 }, // atLERPScaleMax - { 0x2000, 9 }, // flags -}; - -CameraModeValue D_8011A874[] = { - /* CAM_FUNC_NORM1 */ - { 0, 0 }, // yOffset - { 200, 1 }, // distMin - { 400, 2 }, // distMax - { 10, 3 }, // pitchTarget - { 100, 4 }, // unk_0C - { 20, 5 }, // unk_10 - { 100, 6 }, // unk_14 - { 60, 7 }, // fovTarget - { 5, 8 }, // atLERPScaleMax - { 0xF003, 9 }, // flags -}; - -CameraModeValue D_8011A89C[] = { - /* CAM_FUNC_NORM1 */ - { -10, 0 }, // yOffset - { 150, 1 }, // distMin - { 250, 2 }, // distMax - { 5, 3 }, // pitchTarget - { 10, 4 }, // unk_0C - { 5, 5 }, // unk_10 - { 30, 6 }, // unk_14 - { 60, 7 }, // fovTarget - { 60, 8 }, // atLERPScaleMax - { 0x0003, 9 }, // flags -}; - -CameraModeValue D_8011A8C4[] = { - /* CAM_FUNC_PARA1 */ - { -20, 0 }, // unk_00 - { 150, 1 }, // distTarget - { 0, 3 }, // pitchTarget - { 0, 10 }, // yawTarget - { 5, 4 }, // unk_08 - { 5, 5 }, // unk_0C - { 45, 7 }, // fovTarget - { 50, 8 }, // unk_14 - { 0x200A, 9 }, // flags - { -40, 11 }, // unk_18 - { 20, 12 }, // unk_1C -}; - -CameraModeValue D_8011A8F0[] = { - /* CAM_FUNC_KEEP1 */ - { -20, 0 }, // unk_00 - { 120, 1 }, // unk_04 - { 140, 2 }, // unk_08 - { 25, 13 }, // unk_0C - { 45, 14 }, // unk_10 - { -5, 15 }, // unk_14 - { 15, 16 }, // unk_18 - { 15, 17 }, // unk_1C - { 45, 7 }, // unk_20 - { 50, 8 }, // unk_24 - { 0x2001, 9 }, // flags - { -40, 11 }, // unk_28 - { 20, 12 }, // unk_2C -}; - -CameraModeValue D_8011A924[] = { - /* CAM_FUNC_BATT1 */ - { -20, 0 }, // yOffset (PCT) - { 180, 1 }, // distance - { 10, 13 }, // swingYawInitial - { 80, 14 }, // swingYawFinal - { 0, 15 }, // swingPitchInitial - { 10, 16 }, // swingPitchFinal - { 25, 17 }, // swingPitchAdj (PCT) - { 45, 7 }, // fov - { 80, 8 }, // atLERPScaleOnGround (PCT) - { 0x2002, 9 }, // flags - { -40, 11 }, // yOffsetOffGround (PCT) - { 25, 12 }, // atLERPScaleOnGround (PCT) -}; - -CameraModeValue D_8011A954[] = { - /* CAM_FUNC_JUMP1 */ - { -10, 0 }, // atYOffset - { 150, 1 }, // distMin - { 250, 2 }, // distMax - { 10, 4 }, // yawUpdateRateTarget - { 50, 6 }, // maxYawUpdate - { 60, 7 }, // unk_14 - { 40, 8 }, // atLERPScaleMax - { 0x0000, 9 }, // flags -}; - -CameraModeValue D_8011A974[] = { - /* CAM_FUNC_JUMP1 */ - { -10, 0 }, // atYOffset - { 150, 1 }, // distMin - { 250, 2 }, // distMax - { 10, 4 }, // yawUpdateRateTarget - { 80, 6 }, // maxYawUpdate - { 60, 7 }, // unk_14 - { 20, 8 }, // atLERPScaleMax - { 0x0000, 9 }, // flags -}; - -CameraModeValue D_8011A994[] = { - /* CAM_FUNC_JUMP2 */ - { -40, 0 }, // atYOffset - { 150, 1 }, // minDist - { 250, 2 }, // maxDist - { 20, 18 }, // minMaxDistFactor - { 5, 4 }, // yawUpdRateTarget - { 5, 5 }, // xzUpdRateTarget - { 60, 7 }, // fovTarget - { 40, 8 }, // atLERPStepScale - { 0x0000, 9 }, // flags -}; - -CameraModeValue D_8011A9B8[] = { - /* CAM_FUNC_JUMP2 */ - { -40, 0 }, // atYOffset - { 250, 1 }, // minDist - { 250, 2 }, // maxDist - { 20, 18 }, // minMaxDistFactor - { 999, 4 }, // yawUpdRateTarget - { 5, 5 }, // xzUpdRateTarget - { 60, 7 }, // fovTarget - { 40, 8 }, // atLERPStepScale - { 0x2006, 9 }, // flags -}; - -CameraModeValue D_8011A9DC[] = { - /* CAM_FUNC_BATT4 */ - { -10, 0 }, // yOffset - { 300, 1 }, // rTarget - { 50, 3 }, // pitchTarget - { 2, 4 }, // lerpUpdateRate - { 80, 7 }, // fovTarget - { 20, 8 }, // atLERPTarget - { 0xF000, 9 }, // flags -}; - -CameraModeValue D_8011A9F8[] = { - /* CAM_FUNC_UNIQ1 */ - { -80, 0 }, // yOffset - { 150, 1 }, // distMin - { 250, 2 }, // distMax - { 40, 3 }, // pitchTarget - { 60, 7 }, // fovTarget - { 10, 8 }, // atLERPScaleMax - { 0x0000, 9 }, // flags -}; - -CameraModeValue D_8011AA14[] = { - /* CAM_FUNC_UNIQ1 */ - { -120, 0 }, // yOffset */ - { 250, 1 }, // distMin */ - { 250, 2 }, // distMax */ - { 70, 3 }, // pitchTarget */ - { 45, 7 }, // fovTarget */ - { 10, 8 }, // atLERPScaleMax */ - { 0x2000, 9 }, // flags */ -}; - -CameraModeValue D_8011AA30[] = { - /* CAM_FUNC_NORM1 */ - { -10, 0 }, // yOffset - { 150, 1 }, // distMin - { 250, 2 }, // distMax - { 5, 3 }, // pitchTarget - { 100, 4 }, // unk_0C - { 5, 5 }, // unk_10 - { 100, 6 }, // unk_14 - { 60, 7 }, // fovTarget - { 5, 8 }, // atLERPScaleMax - { 0xF003, 9 }, // flags -}; - -CameraModeValue D_8011AA58[] = { - /* CAM_FUNC_NORM1 */ - { -40, 0 }, // yOffset - { 150, 1 }, // distMin - { 150, 2 }, // distMax - { 0, 3 }, // pitchTarget - { 10, 4 }, // unk_0C - { 5, 5 }, // unk_10 - { 30, 6 }, // unk_14 - { 60, 7 }, // fovTarget - { 60, 8 }, // atLERPScaleMax - { 0x0003, 9 }, // flags -}; - -CameraModeValue D_8011AA80[] = { - /* CAM_FUNC_KEEP3 */ - { -20, 0 }, // yOffset - { 70, 1 }, // minDist - { 200, 2 }, // maxDist - { 40, 13 }, // swingYawInitial - { 10, 14 }, // swingYawFinal - { 0, 15 }, // swingPitchInitial - { 5, 16 }, // swingPitchFinal - { 70, 17 }, // swingPitchAdj - { 45, 7 }, // fovTarget - { 50, 8 }, // atLERPScaleMax - { 10, 4 }, // initTimer - { 0x3500, 9 }, // flags -}; - -CameraModeValue D_8011AAB0[] = { - /* CAM_FUNC_JUMP1 */ - { -40, 0 }, // atYOffset - { 150, 1 }, // distMin - { 150, 2 }, // distMax - { 10, 4 }, // yawUpdateRateTarget - { 50, 6 }, // maxYawUpdate - { 60, 7 }, // unk_14 - { 40, 8 }, // atLERPScaleMax - { 0x0000, 9 }, // flags -}; - -CameraModeValue D_8011AAD0[] = { - /* CAM_FUNC_JUMP1 */ - { -40, 0 }, // atYOffset - { 150, 1 }, // distMin - { 180, 2 }, // distMax - { 12, 4 }, // yawUpdateRateTarget - { 80, 6 }, // maxYawUpdate - { 60, 7 }, // unk_14 - { 20, 8 }, // atLERPScaleMax - { 0x0000, 9 }, // flags -}; - -CameraModeValue D_8011AAF0[] = { - /* CAM_FUNC_JUMP2 */ - { -40, 0 }, // atYOffset - { 150, 1 }, // minDist - { 150, 2 }, // maxDist - { 20, 18 }, // minMaxDistFactor - { 5, 4 }, // yawUpdRateTarget - { 5, 5 }, // xzUpdRateTarget - { 60, 7 }, // fovTarget - { 40, 8 }, // atLERPStepScale - { 0x0000, 9 }, // flags -}; - -CameraModeValue D_8011AB14[] = { - /* CAM_FUNC_JUMP2 */ - { -40, 0 }, // atYOffset - { 150, 1 }, // minDist - { 150, 2 }, // maxDist - { 20, 18 }, // minMaxDistFactor - { 999, 4 }, // yawUpdRateTarget - { 5, 5 }, // xzUpdRateTarget - { 60, 7 }, // fovTarget - { 40, 8 }, // atLERPStepScale - { 0x2006, 9 }, // flags -}; - -CameraModeValue D_8011AB38[] = { - /* CAM_FUNC_BATT4 */ - { -40, 0 }, // yOffset - { 200, 1 }, // rTarget - { 50, 3 }, // pitchTarget - { 2, 4 }, // lerpUpdateRate - { 80, 7 }, // fovTarget - { 20, 8 }, // atLERPTarget - { 0xF000, 9 }, // flags -}; - -CameraModeValue D_8011AB54[] = { - /* CAM_FUNC_UNIQ1 */ - { -80, 0 }, // yOffset */ - { 150, 1 }, // distMin */ - { 150, 2 }, // distMax */ - { 40, 3 }, // pitchTarget */ - { 60, 7 }, // fovTarget */ - { 10, 8 }, // atLERPScaleMax */ - { 0x0000, 9 }, // flags */ -}; - -CameraModeValue D_8011AB70[] = { - /* CAM_FUNC_UNIQ1 */ - { -120, 0 }, // yOffset - { 150, 1 }, // distMin - { 150, 2 }, // distMax - { 70, 3 }, // pitchTarget - { 45, 7 }, // fovTarget - { 10, 8 }, // atLERPScaleMax - { 0x2000, 9 }, // flags -}; - -CameraModeValue D_8011AB8C[] = { - /* CAM_FUNC_NORM1 */ - { -40, 0 }, // yOffset - { 150, 1 }, // distMin - { 150, 2 }, // distMax - { 0, 3 }, // pitchTarget - { 100, 4 }, // unk_0C - { 5, 5 }, // unk_10 - { 100, 6 }, // unk_14 - { 60, 7 }, // fovTarget - { 5, 8 }, // atLERPScaleMax - { 0xF003, 9 }, // flags -}; - -CameraModeValue D_8011ABB4[] = { - /* CAM_FUNC_PARA1 */ - { -40, 0 }, // unk_00 - { 180, 1 }, // distTarget - { 25, 3 }, // pitchTarget - { 0, 10 }, // yawTarget - { 5, 4 }, // unk_08 - { 5, 5 }, // unk_0C - { 60, 7 }, // fovTarget - { 50, 8 }, // unk_14 - { 0x206A, 9 }, // flags - { -20, 11 }, // unk_18 - { 30, 12 }, // unk_1C -}; - -CameraModeValue sSetNorm3ModeNormVals[] = { - /* CAM_FUNC_JUMP3 */ - { -20, 0 }, // yOffset - { 280, 1 }, // distMin - { 300, 2 }, // distMax - { 20, 3 }, // pitchTarget - { 15, 4 }, // swingUpdateRate - { 5, 5 }, // unk_10 - { 40, 6 }, // unk_14 - { 60, 7 }, // fovTarget - { 100, 8 }, // unk_1C - { 0x0004, 9 }, // flags -}; - -CameraModeValue D_8011AC08[] = { - /* CAM_FUNC_PARA1 */ - { -50, 0 }, // unk_00 - { 250, 1 }, // distTarget - { 70, 3 }, // pitchTarget - { 0, 10 }, // yawTarget - { 15, 4 }, // unk_08 - { 5, 5 }, // unk_0C - { 60, 7 }, // fovTarget - { 100, 8 }, // unk_14 - { 0x200A, 9 }, // flags - { -50, 11 }, // unk_18 - { 20, 12 }, // unk_1C -}; - -CameraModeValue D_8011AC34[] = { - /* CAM_FUNC_KEEP3 */ - { -30, 0 }, // yOffset - { 70, 1 }, // minDist - { 200, 2 }, // maxDist - { 40, 13 }, // swingYawInitial - { 10, 14 }, // swingYawFinal - { 10, 15 }, // swingPitchInitial - { 20, 16 }, // swingPitchFinal - { 70, 17 }, // swingPitchAdj - { 45, 7 }, // fovTarget - { 10, 8 }, // atLERPScaleMax - { 10, 4 }, // initTimer - { 0x3500, 9 }, // flags -}; - -CameraModeValue sSetNorm3ModeBoomVals[] = { - /* CAM_FUNC_JUMP3 */ - /* mode is BOOMERANG, but these values are for when the eye - * >= OREG(45) units below the surface of the water. - */ - { -40, 0 }, // yOffset - { 150, 1 }, // distMin - { 250, 2 }, // distMax - { -5, 3 }, // pitchTarget - { 18, 4 }, // swingUpdateRate - { 5, 5 }, // unk_10 - { 60, 6 }, // unk_14 - { 60, 7 }, // fovTarget - { 40, 8 }, // unk_1C - { 0x0005, 9 }, // flags -}; - -CameraModeValue sSetHrse0ModeNormVals[] = { - /* CAM_FUNC_NORM3 */ - { -50, 0 }, // yOffset */ - { 220, 1 }, // distMin */ - { 250, 2 }, // distMax */ - { 10, 3 }, // pitchTarget */ - { 16, 4 }, // yawUpdateSpeed */ - { 20, 5 }, // unk_10 */ - { 60, 7 }, // fovTarget */ - { 100, 8 }, // maxAtLERPScale */ - { 0x0600, 9 }, // flags */ -}; - -CameraModeValue sSetHrse0ModeParaVals[] = { - /* CAM_FUNC_NORM3 */ - { -40, 0 }, // yOffset - { 180, 1 }, // distMin - { 220, 2 }, // distMax - { -2, 3 }, // pitchTarget - { 12, 4 }, // yawUpdateSpeed - { 100, 5 }, // unk_10 - { 45, 7 }, // fovTarget - { 100, 8 }, // maxAtLERPScale - { 0x2600, 9 }, // flags -}; - -CameraModeValue D_8011ACD4[] = { - /* CAM_FUNC_SUBJ3 */ - { -7, 0 }, // eyeNextYOffset - { 14, 1 }, // eyeDist - { 100, 2 }, // eyeNextDist - { 10, 4 }, // unk_0C - { 0, 19 }, // atOffset.x - { -30, 20 }, // atOffset.y - { -5, 21 }, // atOffset.z - { 40, 7 }, // fovTarget - { 0x2600, 9 }, // flags -}; - -CameraModeValue D_8011ACF8[] = { - /* CAM_FUNC_KEEP1 */ - { -60, 0 }, // unk_00 - { 180, 1 }, // unk_04 - { 220, 2 }, // unk_08 - { 25, 13 }, // unk_0C - { 45, 14 }, // unk_10 - { -5, 15 }, // unk_14 - { 15, 16 }, // unk_18 - { 15, 17 }, // unk_1C - { 45, 7 }, // unk_20 - { 50, 8 }, // unk_24 - { 0x2601, 9 }, // flags - { -60, 11 }, // unk_28 - { 20, 12 }, // unk_2C -}; - -CameraModeValue D_8011AD2C[] = { - /* CAM_FUNC_KEEP3 */ - { -60, 0 }, // yOffset - { 140, 1 }, // minDist - { 200, 2 }, // maxDist - { 40, 13 }, // swingYawInitial - { 10, 14 }, // swingYawFinal - { 0, 15 }, // swingPitchInitial - { 5, 16 }, // swingPitchFinal - { 70, 17 }, // swingPitchAdj - { 45, 7 }, // fovTarget - { 50, 8 }, // atLERPScaleMax - { 10, 4 }, // initTimer - { 0x3500, 9 }, // flags -}; - -CameraModeValue D_8011AD5C[] = { - /* CAM_FUNC_NORM1 */ - { -20, 0 }, // yOffset - { 150, 1 }, // distMin - { 250, 2 }, // distMax - { 0, 3 }, // pitchTarget - { 15, 4 }, // unk_0C - { 5, 5 }, // unk_10 - { 40, 6 }, // unk_14 - { 60, 7 }, // fovTarget - { 60, 8 }, // atLERPScaleMax - { 0x0001, 9 }, // flags -}; - -CameraModeValue D_8011AD84[] = { - /* CAM_FUNC_BATT1 */ - { -30, 0 }, // yOffset (PCT) */ - { 150, 1 }, // distance */ - { 10, 13 }, // swingYawInitial */ - { 40, 14 }, // swingYawFinal */ - { -10, 15 }, // swingPitchInitial */ - { 0, 16 }, // swingPitchFinal */ - { 25, 17 }, // swingPitchAdj (PCT) */ - { 60, 7 }, // fov */ - { 40, 8 }, // atLERPScaleOnGround (PCT) */ - { 0x2002, 9 }, // flags */ - { -50, 11 }, // yOffsetOffGround (PCT) */ - { 20, 12 }, // atLERPScaleOffGround (PCT) */ -}; - -CameraModeValue D_8011ADB4[] = { - /* CAM_FUNC_NORM1 */ - { 0, 0 }, // yOffset - { 150, 1 }, // distMin - { 300, 2 }, // distMax - { 0, 3 }, // pitchTarget - { 12, 4 }, // unk_0C - { 5, 5 }, // unk_10 - { 70, 6 }, // unk_14 - { 70, 7 }, // fovTarget - { 40, 8 }, // atLERPScaleMax - { 0x0003, 9 }, // flags -}; - -CameraModeValue D_8011ADDC[] = { - /* CAM_FUNC_BATT1 */ - { -20, 0 }, // yOffset (PCT) - { 160, 1 }, // distance - { 10, 13 }, // swingYawInitial - { 60, 14 }, // swingYawFinal - { -5, 15 }, // swingPitchInitial - { 0, 16 }, // swingPitchFinal - { 25, 17 }, // swingPitchAdj (PCT) - { 70, 7 }, // fov - { 50, 8 }, // atLERPScaleOnGround (PCT) - { 0x2002, 9 }, // flags - { -40, 11 }, // yOffsetOffGround (PCT) - { 20, 12 }, // atLERPScaleOffGround (PCT) -}; - -CameraModeValue D_8011AE0C[] = { - /* CAM_FUNC_NORM1 */ - { -20, 0 }, // yOffset - { 150, 1 }, // distMin - { 300, 2 }, // distMax - { -5, 3 }, // pitchTarget - { 15, 4 }, // unk_0C - { 5, 5 }, // unk_10 - { 40, 6 }, // unk_14 - { 70, 7 }, // fovTarget - { 70, 8 }, // atLERPScaleMax - { 0x0003, 9 }, // flags -}; - -CameraModeValue D_8011AE34[] = { - /* CAM_FUNC_BATT1 */ - { -30, 0 }, // yOffset (PCT) - { 125, 1 }, // distance - { 10, 13 }, // swingYawInitial - { 10, 14 }, // swingYawFinal - { 0, 15 }, // swingPitchInitial - { 0, 16 }, // swingPitchFinal - { 50, 17 }, // swingPitchAdj (PCT) - { 60, 7 }, // fov - { 50, 8 }, // atLERPScaleOnGround (PCT) - { 0x2002, 9 }, // flags - { -50, 11 }, // yOffsetOffGround (PCT) - { 20, 12 }, // atLERPScaleOffGround (PCT) -}; - -CameraModeValue D_8011AE64[] = { - /* CAM_FUNC_NORM1 */ - { 10, 0 }, // yOffset - { 150, 1 }, // distMin - { 250, 2 }, // distMax - { 0, 3 }, // pitchTarget - { 15, 4 }, // unk_0C - { 15, 5 }, // unk_10 - { 40, 6 }, // unk_14 - { 60, 7 }, // fovTarget - { 100, 8 }, // atLERPScaleMax - { 0x0003, 9 }, // flags -}; - -CameraModeValue D_8011AE8C[] = { - /* CAM_FUNC_BATT1 */ - { -20, 0 }, // yOffset (PCT) - { 200, 1 }, // distance - { 45, 13 }, // swingYawInitial - { 40, 14 }, // swingYawFinal - { 5, 15 }, // swingPitchInitial - { -5, 16 }, // swingPitchFinal - { 35, 17 }, // swingPitchAdj (PCT) - { 60, 7 }, // fov - { 100, 8 }, // atLERPScaleOnGround (PCT) - { 0x2002, 9 }, // flags - { -40, 11 }, // yOffsetOffGround (PCT) - { 60, 12 }, // atLERPScaleOffGround (PCT) -}; - -CameraModeValue D_8011AEBC[] = { - /* CAM_FUNC_NORM1 */ - { -20, 0 }, // yOffset - { 500, 1 }, // distMin - { 500, 2 }, // distMax - { 10, 3 }, // pitchTarget - { 16, 4 }, // unk_0C - { 10, 5 }, // unk_10 - { 40, 6 }, // unk_14 - { 60, 7 }, // fovTarget - { 80, 8 }, // atLERPScaleMax - { 0x0003, 9 }, // flags -}; - -CameraModeValue D_8011AEE4[] = { - /* CAM_FUNC_BATT1 */ - { -20, 0 }, // yOffset (PCT) - { 200, 1 }, // distance - { 20, 13 }, // swingYawInitial - { 60, 14 }, // swingYawFinal - { 0, 15 }, // swingPitchInitial - { 10, 16 }, // swingPitchFinal - { 15, 17 }, // swingPitchAdj (PCT) - { 45, 7 }, // fov - { 50, 8 }, // atLERPScaleOnGround (PCT) - { 0x2002, 9 }, // flags - { -40, 11 }, // yOffsetOffGround (PCT) - { 20, 12 }, // atLERPScaleOffGround (PCT) -}; - -CameraModeValue D_8011AF14[] = { - /* CAM_FUNC_NORM1 */ - { -20, 0 }, // yOffset - { 500, 1 }, // distMin - { 500, 2 }, // distMax - { 10, 3 }, // pitchTarget - { 20, 4 }, // unk_0C - { 10, 5 }, // unk_10 - { 40, 6 }, // unk_14 - { 60, 7 }, // fovTarget - { 80, 8 }, // atLERPScaleMax - { 0x0083, 9 }, // flags -}; - -CameraModeValue D_8011AF3C[] = { - /* CAM_FUNC_BATT1 */ - { -20, 0 }, // yOffset (PCT) - { 200, 1 }, // distance - { 20, 13 }, // swingYawInitial - { 60, 14 }, // swingYawFinal - { 0, 15 }, // swingPitchInitial - { 10, 16 }, // swingPitchFinal - { 15, 17 }, // swingPitchAdj (PCT) - { 45, 7 }, // fov - { 50, 8 }, // atLERPScaleOnGround (PCT) - { 0x2082, 9 }, // flags - { -40, 11 }, // yOffsetOffGround (PCT) - { 20, 12 }, // atLERPScaleOffGround (PCT) -}; - -CameraModeValue D_8011AF6C[] = { - /* CAM_FUNC_NORM1 */ - { -20, 0 }, // yOffset - { 500, 1 }, // distMin - { 500, 2 }, // distMax - { 10, 3 }, // pitchTarget - { 20, 4 }, // unk_0C - { 10, 5 }, // unk_10 - { 80, 6 }, // unk_14 - { 60, 7 }, // fovTarget - { 80, 8 }, // atLERPScaleMax - { 0x0083, 9 }, // flags -}; - -CameraModeValue D_8011AF94[] = { - /* CAM_FUNC_NORM1 */ - { -20, 0 }, // yOffset - { 100, 1 }, // distMin - { 150, 2 }, // distMax - { -10, 3 }, // pitchTarget - { 15, 4 }, // unk_0C - { 10, 5 }, // unk_10 - { 40, 6 }, // unk_14 - { 80, 7 }, // fovTarget - { 60, 8 }, // atLERPScaleMax - { 0x0003, 9 }, // flags -}; - -CameraModeValue D_8011AFBC[] = { - /* CAM_FUNC_BATT1 */ - { -20, 0 }, // yOffset (PCT) - { 200, 1 }, // distance - { 10, 13 }, // swingYawInitial - { 80, 14 }, // swingYawFinal - { -10, 15 }, // swingPitchInitial - { 10, 16 }, // swingPitchFinal - { 25, 17 }, // swingPitchAdj (PCT) - { 70, 7 }, // fov - { 40, 8 }, // atLERPScaleOnGround (PCT) - { 0x2002, 9 }, // flags - { -40, 11 }, // yOffsetOffGround (PCT) - { 20, 12 }, // atLERPScaleOffGround (PCT) -}; - -CameraModeValue D_8011AFEC[] = { - /* CAM_FUNC_NORM1 */ - { -20, 0 }, // yOffset - { 150, 1 }, // distMin - { 300, 2 }, // distMax - { 0, 3 }, // pitchTarget - { 20, 4 }, // unk_0C - { 10, 5 }, // unk_10 - { 40, 6 }, // unk_14 - { 60, 7 }, // fovTarget - { 80, 8 }, // atLERPScaleMax - { 0x0003, 9 }, // flags -}; - -CameraModeValue D_8011B014[] = { - /* CAM_FUNC_BATT1 */ - { 0, 0 }, // yOffset (PCT) - { 400, 1 }, // distance - { 0, 13 }, // swingYawInitial - { 60, 14 }, // swingYawFinal - { -10, 15 }, // swingPitchInitial - { 5, 16 }, // swingPitchFinal - { 25, 17 }, // swingPitchAdj (PCT) - { 45, 7 }, // fov - { 40, 8 }, // atLERPScaleOnGround (PCT) - { 0x2002, 9 }, // flags - { -20, 11 }, // yOffsetOffGround (PCT) - { 20, 12 }, // atLERPScaleOffGround (PCT) -}; - -CameraModeValue D_8011B044[] = { - /* CAM_FUNC_NORM1 */ - { -10, 0 }, // yOffset - { 150, 1 }, // distMin - { 200, 2 }, // distMax - { -10, 3 }, // pitchTarget - { 12, 4 }, // unk_0C - { 10, 5 }, // unk_10 - { 40, 6 }, // unk_14 - { 60, 7 }, // fovTarget - { 50, 8 }, // atLERPScaleMax - { 0x0003, 9 }, // flags -}; - -CameraModeValue D_8011B06C[] = { - /* CAM_FUNC_NORM1 */ - { 40, 0 }, // yOffset - { 330, 1 }, // distMin - { 330, 2 }, // distMax - { -5, 3 }, // pitchTarget - { 15, 4 }, // unk_0C - { 15, 5 }, // unk_10 - { 40, 6 }, // unk_14 - { 60, 7 }, // fovTarget - { 100, 8 }, // atLERPScaleMax - { 0x0000, 9 }, // flags -}; - -CameraModeValue D_8011B094[] = { - /* CAM_FUNC_BATT4 */ - { -40, 0 }, // yOffset - { 250, 1 }, // rTarget - { 0, 3 }, // pitchTarget - { 2, 4 }, // lerpUpdateRate - { 80, 7 }, // fovTarget - { 20, 8 }, // atLERPTarget - { 0xF000, 9 }, // flags -}; - -CameraModeValue D_8011B0B0[] = { - /* CAM_FUNC_NORM1 */ - { -20, 0 }, // yOffset - { 500, 1 }, // distMin - { 500, 2 }, // distMax - { 10, 3 }, // pitchTarget - { 20, 4 }, // unk_0C - { 10, 5 }, // unk_10 - { 40, 6 }, // unk_14 - { 60, 7 }, // fovTarget - { 80, 8 }, // atLERPScaleMax - { 0x0003, 9 }, // flags -}; - -CameraModeValue D_8011B0D8[] = { - /* CAM_FUNC_BATT1 */ - { -20, 0 }, // yOffset (PCT) - { 180, 1 }, // distance - { 20, 13 }, // swingYawInitial - { 60, 14 }, // swingYawFinal - { 0, 15 }, // swingPitchInitial - { 10, 16 }, // swingPitchFinal - { 25, 17 }, // swingPitchAdj (PCT) - { 45, 7 }, // fov - { 50, 8 }, // atLERPScaleOnGround (PCT) - { 0x2002, 9 }, // flags - { -40, 11 }, // yOffsetOffGround (PCT) - { 20, 12 }, // atLERPScaleOffGround (PCT) -}; -/*start here */ -CameraModeValue D_8011B108[] = { - /* CAM_FUNC_NORM2 */ - { 0, 0 }, // unk_00 - { 120, 1 }, // unk_04 - { 280, 2 }, // unk_08 - { 60, 23 }, // unk_1C - { 8, 4 }, // unk_0C - { 40, 6 }, // unk_10 - { 60, 7 }, // unk_14 - { 50, 8 }, // unk_18 - { 0x0000, 9 }, // flags -}; - -CameraModeValue D_8011B12C[] = { - /* CAM_FUNC_NORM2 */ - { 0, 0 }, // unk_00 - { 120, 1 }, // unk_04 - { 280, 2 }, // unk_08 - { 60, 23 }, // unk_1C - { 8, 4 }, // unk_0C - { 40, 6 }, // unk_10 - { 60, 7 }, // unk_14 - { 50, 8 }, // unk_18 - { 0x0080, 9 }, // flags -}; - -CameraModeValue D_8011B150[] = { - /* CAM_FUNC_NORM2 */ - { 0, 0 }, // unk_00 - { 270, 1 }, // unk_04 - { 300, 2 }, // unk_08 - { 120, 23 }, // unk_1C - { 8, 4 }, // unk_0C - { 60, 6 }, // unk_10 - { 60, 7 }, // unk_14 - { 100, 8 }, // unk_18 - { 0x0000, 9 }, // flags -}; - -CameraModeValue D_8011B174[] = { - /* CAM_FUNC_NORM2 */ - { 0, 0 }, // unk_00 - { 270, 1 }, // unk_04 - { 300, 2 }, // unk_08 - { 120, 23 }, // unk_1C - { 6, 4 }, // unk_0C - { 60, 6 }, // unk_10 - { 60, 7 }, // unk_14 - { 100, 8 }, // unk_18 - { 0x0000, 9 }, // flags -}; - -CameraModeValue sSetFixd0ModeNormVals[] = { - /* CAM_FUNC_FIXD1 */ - { -40, 0 }, // yOffset - { 100, 4 }, // lerpStep - { 60, 7 }, // fov - { 0x0000, 9 }, // flags -}; - -CameraModeValue D_8011B1A8[] = { - /* CAM_FUNC_FIXD1 */ - { -40, 0 }, // yOffset - { 100, 4 }, // lerpStep - { 60, 7 }, // fov - { 0x2000, 9 }, // flags -}; - -CameraModeValue D_8011B1B8[] = { - /* CAM_FUNC_FIXD1 */ - { -40, 0 }, // yOffset - { 100, 4 }, // lerpStep - { 60, 7 }, // fov - { 0x3500, 9 }, // flags -}; - -CameraModeValue D_8011B1C8[] = { - /* CAM_FUNC_FIXD1 */ - { -40, 0 }, // yOffset - { 25, 4 }, // lerpStep - { 60, 7 }, // fov - { 0x0000, 9 }, // flags -}; - -CameraModeValue sSetCirc0ModeNormVals[] = { - /* CAM_FUNC_FIXD2 */ - { -40, 0 }, // yOffset - { 50, 4 }, // eyeStepScale - { 80, 5 }, // posStepScale - { 60, 7 }, // fov - { 0x0001, 9 }, // flags -}; - -CameraModeValue sSetCirc2ModeNormVals[] = { - /* CAM_FUNC_DATA4 */ - { -40, 0 }, // yOffset - { 60, 7 }, // fov - { 0x3F00, 9 }, // flags -}; - -CameraModeValue D_8011B1F8[] = { - /* CAM_FUNC_FIXD4 */ - { -40, 0 }, // yOffset - { 50, 4 }, // speedToEyePos - { 80, 5 }, // followSpeed - { 60, 7 }, // fov - { 0x0004, 9 }, // flags +/** + *===================================================================== + * General Data: NORMAL0 Setting + *===================================================================== + */ + +CameraModeValue sSetNormal0ModeNormalData[] = { + CAM_FUNCDATA_NORM1(-20, 200, 300, 10, 12, 10, 35, 60, 60, 0x0003), +}; + +CameraModeValue sSetNormal0ModeTargetData[] = { + CAM_FUNCDATA_PARA1(-20, 250, 0, 0, 5, 5, 45, 50, 0x200A, -40, 20), +}; + +CameraModeValue sSetNormal0ModeFollowTargetData[] = { + CAM_FUNCDATA_KEEP1(-20, 120, 140, 25, 45, -5, 15, 15, 45, 50, 0x2001, -50, 30), +}; + +CameraModeValue sSetNormal0ModeTalkData[] = { + CAM_FUNCDATA_KEEP3(-30, 70, 200, 40, 10, 0, 5, 70, 45, 50, 10, 0x3500), +}; + +CameraModeValue sSetNormal0ModeBattleData[] = { + CAM_FUNCDATA_BATT1(-20, 180, 10, 80, 0, 10, 25, 50, 80, 0x2002, -40, 25), +}; + +CameraModeValue sSetNormal0ModeClimbData[] = { + CAM_FUNCDATA_JUMP2(-20, 200, 300, 20, 5, 5, 60, 40, 0x0000), +}; + +CameraModeValue sSetNormal0ModeFirstPersonData[] = { + CAM_FUNCDATA_SUBJ3(0, 5, 50, 10, 0, 0, 0, 45, 0x0000), +}; + +CameraModeValue sSetNormal0ModeBowArrowData[] = { + CAM_FUNCDATA_SUBJ3(-7, 14, 50, 10, 0, -30, -5, 45, 0x2000), +}; + +CameraModeValue sSetNormal0ModeBowArrowZData[] = { + CAM_FUNCDATA_SUBJ3(20, 70, 70, 10, -120, 20, 0, 45, 0x2000), +}; + +CameraModeValue sSetNormal0ModeHookshotData[] = { + CAM_FUNCDATA_SPEC5_ALT(-20, 80, 250, 45, 60, 40, 6, 0x2000), +}; + +CameraModeValue sSetNormal0ModeBoomerangData[] = { + CAM_FUNCDATA_SUBJ3(5, 50, 50, 10, 0, 0, 0, 45, 0x2000), +}; + +CameraModeValue sSetNormal0ModeSlingshotData[] = { + CAM_FUNCDATA_SUBJ3(-7, 14, 50, 10, -9, -63, -30, 45, 0x2000), +}; + +CameraModeValue sSetNormal0ModeClimbZData[] = { + CAM_FUNCDATA_JUMP2(-20, 200, 300, 20, 999, 5, 60, 40, 0x2006), +}; + +CameraModeValue sSetNormal0ModeJumpData[] = { + CAM_FUNCDATA_JUMP1(-20, 200, 300, 12, 35, 60, 40, 0x0000), +}; + +CameraModeValue sSetNormal0ModeHangData[] = { + CAM_FUNCDATA_UNIQ1(-80, 200, 300, 40, 60, 10, 0x0000), +}; + +CameraModeValue sSetNormal0ModeHangZData[] = { + CAM_FUNCDATA_UNIQ1(-120, 300, 300, 70, 45, 10, 0x2000), +}; + +CameraModeValue sSetNormal0ModeFreeFallData[] = { + CAM_FUNCDATA_JUMP1(-20, 200, 300, 15, 80, 60, 20, 0x0000), +}; + +CameraModeValue sSetNormal0ModeChargeData[] = { + CAM_FUNCDATA_BATT4(-20, 300, 50, 2, 80, 20, 0xF000), +}; + +CameraModeValue sSetNormal0ModeStillData[] = { + CAM_FUNCDATA_NORM1(-20, 200, 300, 10, 100, 10, 100, 60, 5, 0xF003), +}; + +CameraModeValue sSetNormal0ModePushPullData[] = { + CAM_FUNCDATA_PARA1(0, 250, 25, 0, 5, 5, 70, 30, 0x206A, -20, 30), +}; + +CameraModeValue sSetNormal0ModeFollowBoomerangData[] = { + CAM_FUNCDATA_KEEP1(-5, 120, 140, 5, 85, 10, 5, 25, 45, 50, 0x2001, -15, 30), +}; + +/** + *===================================================================== + * Custom Data: NORMAL1 Setting + *===================================================================== + */ + +CameraModeValue sSetNormal1ModeNormalData[] = { + CAM_FUNCDATA_NORM1(0, 200, 400, 10, 12, 20, 40, 60, 60, 0x0003), +}; + +CameraModeValue sSetNormal1ModeTargetData[] = { + CAM_FUNCDATA_PARA1(0, 250, 0, 0, 5, 5, 45, 50, 0x2002, -40, 20), +}; + +CameraModeValue sSetNormal1ModeFollowTargetData[] = { + CAM_FUNCDATA_KEEP1(-20, 120, 140, 25, 45, -5, 15, 15, 45, 50, 0x2001, -50, 20), +}; + +CameraModeValue sSetNormal1ModeBattleData[] = { + CAM_FUNCDATA_BATT1(-20, 250, 10, 80, 0, 10, 25, 50, 65, 0x2002, -40, 25), +}; + +CameraModeValue sSetNormal1ModeHookshotData[] = { + CAM_FUNCDATA_SPEC5(-20, 80, 250, 6, 45, 60, 40, 0x2000), +}; + +CameraModeValue sSetNormal1ModeJumpData[] = { + CAM_FUNCDATA_JUMP1(0, 250, 400, 15, 50, 60, 30, 0x0000), +}; + +CameraModeValue sSetNormal1ModeFreeFallData[] = { + CAM_FUNCDATA_JUMP1(0, 200, 400, 30, 80, 60, 20, 0x0000), +}; + +CameraModeValue sSetNormal1ModeClimbData[] = { + CAM_FUNCDATA_JUMP2(-20, 200, 400, 20, 5, 5, 60, 40, 0x0000), +}; + +CameraModeValue sSetNormal1ModeClimbZData[] = { + CAM_FUNCDATA_JUMP2(-20, 250, 400, 20, 999, 5, 60, 40, 0x2006), +}; + +CameraModeValue sSetNormal1ModeChargeData[] = { + CAM_FUNCDATA_BATT4(0, 300, 50, 2, 80, 20, 0xF000), +}; + +CameraModeValue sSetNormal1ModeHangData[] = { + CAM_FUNCDATA_UNIQ1(-80, 200, 400, 40, 60, 10, 0x0000), +}; + +CameraModeValue sSetNormal1ModeHangZData[] = { + CAM_FUNCDATA_UNIQ1(-120, 400, 400, 70, 45, 10, 0x2000), +}; + +CameraModeValue sSetNormal1ModeStillData[] = { + CAM_FUNCDATA_NORM1(0, 200, 400, 10, 100, 20, 100, 60, 5, 0xF003), +}; + +/** + *===================================================================== + * Custom Data: DUNGEON0 Setting + *===================================================================== + */ + +CameraModeValue sSetDungeon0ModeNormalData[] = { + CAM_FUNCDATA_NORM1(-10, 150, 250, 5, 10, 5, 30, 60, 60, 0x0003), +}; + +CameraModeValue sSetDungeon0ModeTargetData[] = { + CAM_FUNCDATA_PARA1(-20, 150, 0, 0, 5, 5, 45, 50, 0x200A, -40, 20), +}; + +CameraModeValue sSetDungeon0ModeFollowTargetData[] = { + CAM_FUNCDATA_KEEP1(-20, 120, 140, 25, 45, -5, 15, 15, 45, 50, 0x2001, -40, 20), +}; + +CameraModeValue sSetDungeon0ModeBattleData[] = { + CAM_FUNCDATA_BATT1(-20, 180, 10, 80, 0, 10, 25, 45, 80, 0x2002, -40, 25), +}; + +CameraModeValue sSetDungeon0ModeJumpData[] = { + CAM_FUNCDATA_JUMP1(-10, 150, 250, 10, 50, 60, 40, 0x0000), +}; + +CameraModeValue sSetDungeon0ModeFreeFallData[] = { + CAM_FUNCDATA_JUMP1(-10, 150, 250, 10, 80, 60, 20, 0x0000), +}; + +CameraModeValue sSetDungeon0ModeClimbData[] = { + CAM_FUNCDATA_JUMP2(-40, 150, 250, 20, 5, 5, 60, 40, 0x0000), +}; + +CameraModeValue sSetDungeon0ModeClimbZData[] = { + CAM_FUNCDATA_JUMP2(-40, 250, 250, 20, 999, 5, 60, 40, 0x2006), +}; + +CameraModeValue sSetDungeon0ModeChargeData[] = { + CAM_FUNCDATA_BATT4(-10, 300, 50, 2, 80, 20, 0xF000), +}; + +CameraModeValue sSetDungeon0ModeHangData[] = { + CAM_FUNCDATA_UNIQ1(-80, 150, 250, 40, 60, 10, 0x0000), +}; + +CameraModeValue sSetDungeon0ModeHangZData[] = { + CAM_FUNCDATA_UNIQ1(-120, 250, 250, 70, 45, 10, 0x2000), +}; + +CameraModeValue sSetDungeon0ModeStillData[] = { + CAM_FUNCDATA_NORM1(-10, 150, 250, 5, 100, 5, 100, 60, 5, 0xF003), +}; + +/** + *===================================================================== + * Custom Data: DUNGEON1 Setting + *===================================================================== + */ + +CameraModeValue sSetDungeon1ModeNormalData[] = { + CAM_FUNCDATA_NORM1(-40, 150, 150, 0, 10, 5, 30, 60, 60, 0x0003), +}; + +CameraModeValue sSetDungeon1ModeTalkData[] = { + CAM_FUNCDATA_KEEP3(-20, 70, 200, 40, 10, 0, 5, 70, 45, 50, 10, 0x3500), +}; + +CameraModeValue sSetDungeon1ModeJumpData[] = { + CAM_FUNCDATA_JUMP1(-40, 150, 150, 10, 50, 60, 40, 0x0000), }; -CameraModeValue D_8011B20C[] = { - /* CAM_FUNC_UNIQ0 - CAM_FUNC_FIXD3 - CAM_FUNC_SPEC6 - CAM_FUNC_SPEC7 */ - { 0x0000, 9 }, // flags +CameraModeValue sSetDungeon1ModeFreeFallData[] = { + CAM_FUNCDATA_JUMP1(-40, 150, 180, 12, 80, 60, 20, 0x0000), }; -CameraModeValue sSetPR0ModeKeepTalkVals[] = { - /* CAM_FUNC_FIXD3 */ - { 0x2000, 9 }, // flags +CameraModeValue sSetDungeon1ModeClimbData[] = { + CAM_FUNCDATA_JUMP2(-40, 150, 150, 20, 5, 5, 60, 40, 0x0000), }; -CameraModeValue sSetPR1ModeNormVals[] = { - /* CAM_FUNC_UNIQ7 */ - { 60, 7 }, // fov - { 0x0000, 9 }, // flags +CameraModeValue sSetDungeon1ModeClimbZData[] = { + CAM_FUNCDATA_JUMP2(-40, 150, 150, 20, 999, 5, 60, 40, 0x2006), }; -CameraModeValue sSetPR1ModeKeepVals[] = { - /* CAM_FUNC_UNIQ7 */ - { 60, 7 }, // fov - { 0x2000, 9 }, // flags +CameraModeValue sSetDungeon1ModeChargeData[] = { + CAM_FUNCDATA_BATT4(-40, 200, 50, 2, 80, 20, 0xF000), }; -CameraModeValue sSetPreRend1ModeTalkVals[] = { - /* CAM_FUNC_KEEP0 */ - { 30, 24 }, // fovScale - { 0, 25 }, // yawScale - { 4, 4 }, // timerInit - { 0x3500, 9 }, // flags +CameraModeValue sSetDungeon1ModeHangData[] = { + CAM_FUNCDATA_UNIQ1(-80, 150, 150, 40, 60, 10, 0x0000), }; -CameraModeValue sSetDoor0ModeNormVals[] = { - /* CAM_FUNC_UNIQ3 */ - { -40, 0 }, // yOffset - { 60, 7 }, // fov - { 0x3200, 9 }, // flags +CameraModeValue sSetDungeon1ModeHangZData[] = { + CAM_FUNCDATA_UNIQ1(-120, 150, 150, 70, 45, 10, 0x2000), }; -CameraModeValue sSetDoorCModeNormVals[] = { - /* CAM_FUNC_SPEC9 */ - { -5, 0 }, // yOffset - { 60, 7 }, // unk_04 (unused) - { 0x3202, 9 }, // flags +CameraModeValue sSetDungeon1ModeStillData[] = { + CAM_FUNCDATA_NORM1(-40, 150, 150, 0, 100, 5, 100, 60, 5, 0xF003), }; -CameraModeValue sSetDoorCModeParaVals[] = { - /* CAM_FUNC_SPEC9 */ - { -5, 0 }, // yOffset - { 60, 7 }, // unk_04 (unused) - { 0x320A, 9 }, // flags +CameraModeValue sSetDungeon1ModePushPullData[] = { + CAM_FUNCDATA_PARA1(-40, 180, 25, 0, 5, 5, 60, 50, 0x206A, -20, 30), }; -CameraModeValue sSetRail3ModeNormVals[] = { - /* CAM_FUNC_SUBJ4 - Camera_Subj4 only reads one setting which is used for flags. */ - { 0, 0 }, // flags - { 2, 1 }, // unused - { 30, 2 }, // unused - { 10, 4 }, // unused - { 45, 7 }, // unused - { 0x3200, 9 }, // unused +/** + *===================================================================== + * Custom Data: NORMAL3 Setting + *===================================================================== + */ + +CameraModeValue sSetNormal3ModeNormalData[] = { + CAM_FUNCDATA_JUMP3(-20, 280, 300, 20, 15, 5, 40, 60, 100, 0x0004), +}; + +CameraModeValue sSetNormal3ModeTargetData[] = { + CAM_FUNCDATA_PARA1(-50, 250, 70, 0, 15, 5, 60, 100, 0x200A, -50, 20), +}; + +CameraModeValue sSetNormal3ModeTalkData[] = { + CAM_FUNCDATA_KEEP3(-30, 70, 200, 40, 10, 10, 20, 70, 45, 10, 10, 0x3500), +}; + +/* These values are for when the eye + * >= OREG(45) units below the surface of the water. + */ +CameraModeValue sSetNormal3ModeBoomerangData[] = { + CAM_FUNCDATA_JUMP3(-40, 150, 250, -5, 18, 5, 60, 60, 40, 0x0005), +}; + +/** + *===================================================================== + * Custom Data: HORSE Setting + *===================================================================== + */ + +CameraModeValue sSetHorseModeNormalData[] = { + CAM_FUNCDATA_NORM3(-50, 220, 250, 10, 16, 20, 60, 100, 0x0600), }; -CameraModeValue D_8011B270[] = { - /* CAM_FUNC_UNIQ0 */ - { 0x0001, 9 }, // flags +CameraModeValue sSetHorseModeTargetData[] = { + CAM_FUNCDATA_NORM3(-40, 180, 220, -2, 12, 100, 45, 100, 0x2600), }; -CameraModeValue sSetFree0ModeNormVals[] = { - /* CAM_FUNC_UNIQ6 */ - { 0xFF00, 9 }, // flags +CameraModeValue sSetHorseModeBowArrowData[] = { + CAM_FUNCDATA_SUBJ3(-7, 14, 100, 10, 0, -30, -5, 40, 0x2600), +}; + +CameraModeValue sSetHorseModeFollowTargetData[] = { + CAM_FUNCDATA_KEEP1(-60, 180, 220, 25, 45, -5, 15, 15, 45, 50, 0x2601, -60, 20), +}; + +CameraModeValue sSetHorseModeTalkData[] = { + CAM_FUNCDATA_KEEP3(-60, 140, 200, 40, 10, 0, 5, 70, 45, 50, 10, 0x3500), +}; + +/** + *===================================================================== + * Custom Data: BOSS_GOHMA Setting + *===================================================================== + */ + +CameraModeValue sSetBossGohmaModeNormalData[] = { + CAM_FUNCDATA_NORM1(-20, 150, 250, 0, 15, 5, 40, 60, 60, 0x0001), +}; + +CameraModeValue sSetBossGohmaModeBattleData[] = { + CAM_FUNCDATA_BATT1(-30, 150, 10, 40, -10, 0, 25, 60, 40, 0x2002, -50, 20), +}; + +/** + *===================================================================== + * Custom Data: BOSS_DODONGO Setting + *===================================================================== + */ + +CameraModeValue sSetBossDodongoModeNormalData[] = { + CAM_FUNCDATA_NORM1(0, 150, 300, 0, 12, 5, 70, 70, 40, 0x0003), }; -CameraModeValue sSetFree1ModeNormVals[] = { - /* CAM_FUNC_UNIQ6 */ - { 0xFF01, 9 }, // flags +CameraModeValue sSetBossDodongoModeBattleData[] = { + CAM_FUNCDATA_BATT1(-20, 160, 10, 60, -5, 0, 25, 70, 50, 0x2002, -40, 20), }; -CameraModeValue sSetCirc4ModeNormVals[] = { - /* CAM_FUNC_FIXD2 */ - { -40, 0 }, // yOffset - { 100, 4 }, // eyeStepScale - { 80, 5 }, // posStepScale - { 60, 7 }, // fov - { 0x0000, 9 }, // flags +/** + *===================================================================== + * Custom Data: BOSS_BARINADE Setting + *===================================================================== + */ + +CameraModeValue sSetBossBarinadeModeNormalData[] = { + CAM_FUNCDATA_NORM1(-20, 150, 300, -5, 15, 5, 40, 70, 70, 0x0003), +}; + +CameraModeValue sSetBossBarinadeModeBattleData[] = { + CAM_FUNCDATA_BATT1(-30, 125, 10, 10, 0, 0, 50, 60, 50, 0x2002, -50, 20), +}; + +/** + *===================================================================== + * Custom Data: BOSS_PHANTOM_GANON Setting + *===================================================================== + */ + +CameraModeValue sSetBossPhantomGanonModeNormalData[] = { + CAM_FUNCDATA_NORM1(10, 150, 250, 0, 15, 15, 40, 60, 100, 0x0003), +}; + +CameraModeValue sSetBossPhantomGanonModeBattleData[] = { + CAM_FUNCDATA_BATT1(-20, 200, 45, 40, 5, -5, 35, 60, 100, 0x2002, -40, 60), +}; + +/** + *===================================================================== + * Custom Data: BOSS_VOLVAGIA Setting + *===================================================================== + */ + +CameraModeValue sSetBossVolvagiaModeNormalData[] = { + CAM_FUNCDATA_NORM1(-20, 500, 500, 10, 16, 10, 40, 60, 80, 0x0003), +}; + +CameraModeValue sSetBossVolvagiaModeBattleData[] = { + CAM_FUNCDATA_BATT1(-20, 200, 20, 60, 0, 10, 15, 45, 50, 0x2002, -40, 20), +}; + +/** + *===================================================================== + * Custom Data: BOSS_BONGO Setting + *===================================================================== + */ + +CameraModeValue sSetBossBongoModeNormalData[] = { + CAM_FUNCDATA_NORM1(-20, 500, 500, 10, 20, 10, 40, 60, 80, 0x0083), +}; + +CameraModeValue sSetBossBongoModeBattleData[] = { + CAM_FUNCDATA_BATT1(-20, 200, 20, 60, 0, 10, 15, 45, 50, 0x2082, -40, 20), +}; + +CameraModeValue sSetBossBongoModeJumpData[] = { + CAM_FUNCDATA_NORM1(-20, 500, 500, 10, 20, 10, 80, 60, 80, 0x0083), +}; + +/** + *===================================================================== + * Custom Data: BOSS_MORPHA Setting + *===================================================================== + */ + +CameraModeValue sSetBossMorphaModeNormalData[] = { + CAM_FUNCDATA_NORM1(-20, 100, 150, -10, 15, 10, 40, 80, 60, 0x0003), +}; + +CameraModeValue sSetBossMorphaModeBattleData[] = { + CAM_FUNCDATA_BATT1(-20, 200, 10, 80, -10, 10, 25, 70, 40, 0x2002, -40, 20), +}; + +/** + *===================================================================== + * Custom Data: TWINROVA Setting + *===================================================================== + */ + +CameraModeValue sSetBossTwinrovaPlatformModeNormalData[] = { + CAM_FUNCDATA_NORM1(-20, 150, 300, 0, 20, 10, 40, 60, 80, 0x0003), +}; + +CameraModeValue sSetBossTwinrovaModeBattleData[] = { + CAM_FUNCDATA_BATT1(0, 400, 0, 60, -10, 5, 25, 45, 40, 0x2002, -20, 20), +}; + +CameraModeValue sSetBossTwinrovaFloorModeNormalData[] = { + CAM_FUNCDATA_NORM1(-10, 150, 200, -10, 12, 10, 40, 60, 50, 0x0003), +}; + +/** + *===================================================================== + * Custom Data: BOSS_GANONDORF Setting + *===================================================================== + */ + +CameraModeValue sSetBossGanondorfModeNormalData[] = { + CAM_FUNCDATA_NORM1(40, 330, 330, -5, 15, 15, 40, 60, 100, 0x0000), +}; + +CameraModeValue sSetBossGanondorfModeChargeData[] = { + CAM_FUNCDATA_BATT4(-40, 250, 0, 2, 80, 20, 0xF000), +}; + +/** + *===================================================================== + * Custom Data: BOSS_GANON Setting + *===================================================================== + */ + +CameraModeValue sSetBossGanonModeNormalData[] = { + CAM_FUNCDATA_NORM1(-20, 500, 500, 10, 20, 10, 40, 60, 80, 0x0003), +}; + +CameraModeValue sSetBossGanonModeBattleData[] = { + CAM_FUNCDATA_BATT1(-20, 180, 20, 60, 0, 10, 25, 45, 50, 0x2002, -40, 20), +}; + +/** + *===================================================================== + * Custom Data: TOWER_CLIMB Setting + *===================================================================== + */ + +CameraModeValue sSetTowerClimbModeNormalData[] = { + CAM_FUNCDATA_NORM2(0, 120, 280, 60, 8, 40, 60, 50, 0x0000), +}; + +CameraModeValue sSetTowerClimbModeJumpData[] = { + CAM_FUNCDATA_NORM2(0, 120, 280, 60, 8, 40, 60, 50, 0x0080), +}; + +/** + *===================================================================== + * Custom Data: TOWER_UNUSED Setting + *===================================================================== + */ + +CameraModeValue sSetTowerUnusedModeNormalData[] = { + CAM_FUNCDATA_NORM2(0, 270, 300, 120, 8, 60, 60, 100, 0x0000), +}; + +CameraModeValue sSetTowerUnusedModeJumpData[] = { + CAM_FUNCDATA_NORM2(0, 270, 300, 120, 6, 60, 60, 100, 0x0000), +}; + +/** + *===================================================================== + * Custom Data: MARKET_BALCONY Setting + *===================================================================== + */ + +CameraModeValue sSetMarketBalconyModeNormalData[] = { + CAM_FUNCDATA_FIXD1(-40, 100, 60, 0x0000), +}; + +CameraModeValue sSetMarketBalconyModeFollowTargetData[] = { + CAM_FUNCDATA_FIXD1(-40, 100, 60, 0x2000), +}; + +CameraModeValue sSetMarketBalconyModeTalkData[] = { + CAM_FUNCDATA_FIXD1(-40, 100, 60, 0x3500), +}; + +/** + *===================================================================== + * Custom Data: CHU_BOWLING Setting + *===================================================================== + */ + +CameraModeValue sSetChuBowlingModeNormalData[] = { + CAM_FUNCDATA_FIXD1(-40, 25, 60, 0x0000), +}; + +/** + *===================================================================== + * Custom Data: PIVOT_CRAWLSPACE Setting + *===================================================================== + */ + +CameraModeValue sSetPivotCrawlspaceModeNormalData[] = { + CAM_FUNCDATA_FIXD2(-40, 50, 80, 60, 0x0001), +}; + +/** + *===================================================================== + * Custom Data: PIVOT_SHOP_BROWSING Setting + *===================================================================== + */ + +CameraModeValue sSetPivotShopBrowsingModeNormalData[] = { + CAM_FUNCDATA_DATA4(-40, 60, 0x3F00), +}; + +/** + *===================================================================== + * Custom Data: PIVOT_IN_FRONT and PIVOT_FROM_SIDE + *===================================================================== + */ + +CameraModeValue sSetPivotInFrontAndFromSideModeNormalData[] = { + CAM_FUNCDATA_FIXD4(-40, 50, 80, 60, 0x0004), +}; + +/** + *===================================================================== + * Custom Data: No data, all flags off + *===================================================================== + */ + +CameraModeValue sDataOnlyNullFlags[] = { + CAM_FUNCDATA_FLAGS(0x0000), +}; + +/** + *===================================================================== + * Custom Data: PREREND_FIXED Setting + *===================================================================== + */ + +CameraModeValue sSetPrerendFixedModeFollowTargetData[] = { + CAM_FUNCDATA_FLAGS(0x2000), +}; + +/** + *===================================================================== + * Custom Data: PREREND_PIVOT Setting + *===================================================================== + */ + +CameraModeValue sSetPrerendPivotModeNormalData[] = { + CAM_FUNCDATA_UNIQ7(60, 0x0000), +}; + +CameraModeValue sSetPrerendPivotModeFollowTargetData[] = { + CAM_FUNCDATA_UNIQ7(60, 0x2000), +}; + +CameraModeValue sSetPrerendPivotModeTalkData[] = { + CAM_FUNCDATA_KEEP0(30, 0, 4, 0x3500), +}; + +/** + *===================================================================== + * Custom Data: DOOR0 Setting + *===================================================================== + */ + +CameraModeValue sSetDoor0ModeNormalData[] = { + CAM_FUNCDATA_UNIQ3(-40, 60, 0x3200), +}; + +/** + *===================================================================== + * Custom Data: DOORC Setting + *===================================================================== + */ + +CameraModeValue sSetDoorCModeNormalData[] = { + CAM_FUNCDATA_SPEC9(-5, 60, 0x3202), +}; + +CameraModeValue sSetDoorCModeTargetData[] = { + CAM_FUNCDATA_SPEC9(-5, 60, 0x320A), +}; + +/** + *===================================================================== + * Custom Data: CRAWLSPACE Setting + *===================================================================== + */ + +// Camera_Subj4 only reads one setting which is used for flags +CameraModeValue sSetCrawlspaceModeNormalData[] = { + CAM_FUNCDATA_SUBJ4(0x0000, 2, 30, 10, 45, 0x3200), +}; + +/** + *===================================================================== + * Custom Data: START1 Setting + *===================================================================== + */ + +CameraModeValue sSetStart1ModeNormalData[] = { + CAM_FUNCDATA_FLAGS(0x0001), +}; + +/** + *===================================================================== + * Custom Data: FREE0 Setting + *===================================================================== + */ + +CameraModeValue sSetFree0ModeNormalData[] = { + CAM_FUNCDATA_FLAGS(0xFF00), +}; + +/** + *===================================================================== + * Custom Data: FREE1 Setting + *===================================================================== + */ + +CameraModeValue sSetFree1ModeNormalData[] = { + CAM_FUNCDATA_FLAGS(0xFF01), +}; + +/** + *===================================================================== + * Custom Data: PIVOT_CORNER Setting + *===================================================================== + */ + +CameraModeValue sSetPivotCornerModeNormalData[] = { + CAM_FUNCDATA_FIXD2(-40, 100, 80, 60, 0x0000), +}; + +/** + *===================================================================== + * Custom Data: PIVOT_WATER_SURFACE Setting + *===================================================================== + */ + +CameraModeValue sSetPivotWaterSurfaceModeNormalData[] = { + CAM_FUNCDATA_UNIQ2(-40, 60, 60, 0x0002), +}; + +CameraModeValue sSetPivotWaterSurfaceModeTargetData[] = { + CAM_FUNCDATA_UNIQ2(-30, 45, 100, 0x2001), +}; + +/** + *===================================================================== + * Custom Data: Various cutscene settings + *===================================================================== + */ + +CameraModeValue sDataOnlyInterfaceFlags[] = { + CAM_FUNCDATA_FLAGS(0x3200), +}; + +/** + *===================================================================== + * Custom Data: FOREST_BIRDS_EYE Setting + *===================================================================== + */ + +CameraModeValue sSetForestBirdsEyeModeNormalData[] = { + CAM_FUNCDATA_PARA1(-50, 450, 40, 180, 5, 5, 70, 30, 0x000C, -50, 20), +}; + +CameraModeValue sSetForestBirdsEyeModeTalkData[] = { + CAM_FUNCDATA_FLAGS(0x3501), +}; + +/** + *===================================================================== + * Custom Data: SLOW_CHEST_CS Setting + *===================================================================== + */ + +// Also set to but unused by function Demo4 +CameraModeValue sSetSlowChestCsModeNormalData[] = { + CAM_FUNCDATA_DEMO3(60, 30, 0x3200), +}; + +/** + *===================================================================== + * Custom Data: CS_3 Setting + *===================================================================== + */ + +CameraModeValue sSetCs3ModeNormalData[] = { + CAM_FUNCDATA_FLAGS(0x3212), +}; + +/** + *===================================================================== + * Custom Data: BEAN_GENERIC Setting + *===================================================================== + */ + +CameraModeValue sSetBeanGenericModeNormalData[] = { + CAM_FUNCDATA_NORM1(-50, 300, 300, 50, 20, 10, 50, 70, 40, 0x0002), +}; + +CameraModeValue sSetBeanGenericModeTargetData[] = { + CAM_FUNCDATA_PARA1(-50, 300, 10, 0, 5, 5, 45, 50, 0x200A, -40, 20), +}; + +CameraModeValue sSetBeanGenericModeJumpData[] = { + CAM_FUNCDATA_JUMP1(-50, 300, 300, 12, 35, 60, 40, 0x0000), +}; + +CameraModeValue sSetBeanGenericModeHangData[] = { + CAM_FUNCDATA_UNIQ1(-80, 300, 300, 60, 70, 30, 0x0000), +}; + +CameraModeValue sSetBeanGenericModeHangZData[] = { + CAM_FUNCDATA_UNIQ1(-120, 300, 300, 70, 50, 30, 0x2000), +}; + +CameraModeValue sSetBeanGenericModeStillData[] = { + CAM_FUNCDATA_NORM1(-20, 300, 350, 50, 100, 10, 100, 70, 30, 0xF002), +}; + +/** + *===================================================================== + * Custom Data: BEAN_LOST_WOODS Setting + *===================================================================== + */ + +CameraModeValue sSetBeanLostWoodsModeNormalData[] = { + CAM_FUNCDATA_NORM1(-50, 200, 200, 20, 16, 10, 50, 60, 50, 0x0002), +}; + +CameraModeValue sSetBeanLostWoodsModeTargetData[] = { + CAM_FUNCDATA_PARA1(-50, 200, 40, 0, 5, 5, 45, 50, 0x200A, -40, 20), +}; + +CameraModeValue sSetBeanLostWoodsModeJumpData[] = { + CAM_FUNCDATA_JUMP1(-50, 150, 250, 12, 35, 60, 40, 0x0000), +}; + +CameraModeValue sSetBeanLostWoodsModeHangData[] = { + CAM_FUNCDATA_UNIQ1(-80, 200, 200, 40, 60, 30, 0x0000), +}; + +CameraModeValue sSetBeanLostWoodsModeHangZData[] = { + CAM_FUNCDATA_UNIQ1(-120, 200, 200, 60, 50, 30, 0x2000), +}; + +CameraModeValue sSetBeanLostWoodsModeStillData[] = { + CAM_FUNCDATA_NORM1(-20, 200, 250, 20, 100, 10, 100, 60, 30, 0xF002), +}; + +/** + *===================================================================== + * Custom Data: SCENE_UNUSED Setting + *===================================================================== + */ + +CameraModeValue sSetSceneUnusedModeNormalData[] = { + CAM_FUNCDATA_SPEC9(-30, 60, 0x010A), +}; + +/** + *===================================================================== + * Custom Data: SCENE_TRANSITION Setting + *===================================================================== + */ + +CameraModeValue sSetSceneTransitionModeNormalData[] = { + CAM_FUNCDATA_UNIQ2(-20, 150, 60, 0x0210), +}; + +/** + *===================================================================== + * Custom Data: BIG_OCTO Setting + *===================================================================== + */ + +CameraModeValue sSetBigOctoModeNormalData[] = { + CAM_FUNCDATA_NORM1(0, 400, 500, 35, 14, 5, 20, 60, 40, 0x0012), +}; + +CameraModeValue sSetBigOctoModeBattleData[] = { + CAM_FUNCDATA_BATT1(-20, 250, 5, 10, 30, 20, 25, 45, 60, 0x2002, -40, 25), +}; + +CameraModeValue sSetBigOctoModeStillData[] = { + CAM_FUNCDATA_NORM1(0, 300, 500, 60, 8, 5, 60, 60, 30, 0x0012), +}; + +/** + *===================================================================== + * Custom Data: MEADOW_BIRDS_EYE Setting + *===================================================================== + */ + +CameraModeValue sSetMeadowBirdsEyeModeNormalData[] = { + CAM_FUNCDATA_NORM1(-20, 500, 500, 80, 20, 10, 70, 70, 80, 0x0012), +}; + +CameraModeValue sSetMeadowBirdsEyeModeTargetData[] = { + CAM_FUNCDATA_PARA1(-20, 500, 80, 0, 5, 5, 70, 80, 0x201A, -40, 40), +}; + +CameraModeValue sSetMeadowBirdsEyeModeBattleData[] = { + CAM_FUNCDATA_PARA1(-20, 500, 80, 0, 5, 5, 60, 80, 0x201A, -40, 40), +}; + +CameraModeValue sSetMeadowBirdsEyeModeClimbData[] = { + CAM_FUNCDATA_NORM1(-20, 500, 500, 80, 20, 10, 80, 60, 20, 0x0012), +}; + +/** + *===================================================================== + * Custom Data: MEADOW_UNUSED Setting + *===================================================================== + */ + +CameraModeValue sSetMeadowUnusedModeNormalData[] = { + CAM_FUNCDATA_NORM1(-20, 750, 750, 80, 20, 10, 70, 70, 80, 0x0012), +}; + +CameraModeValue sSetMeadowUnusedModeTargetData[] = { + CAM_FUNCDATA_PARA1(-20, 750, 80, 0, 5, 5, 70, 80, 0x201A, -40, 40), +}; + +CameraModeValue sSetMeadowUnusedModeBattleData[] = { + CAM_FUNCDATA_PARA1(-20, 750, 80, 0, 5, 5, 70, 80, 0x200A, -40, 40), +}; + +CameraModeValue sSetMeadowUnusedModeClimbData[] = { + CAM_FUNCDATA_NORM1(-20, 750, 750, 80, 20, 10, 80, 70, 20, 0x0012), +}; + +/** + *===================================================================== + * Custom Data: FIRE_BIRDS_EYE Setting + *===================================================================== + */ + +CameraModeValue sSetFireBirdsEyeModeNormalData[] = { + CAM_FUNCDATA_NORM1(-20, 500, 500, 80, 20, 10, 70, 70, 80, 0x0002), +}; + +CameraModeValue sSetFireBirdsEyeModeTargetData[] = { + CAM_FUNCDATA_PARA1(-20, 500, 80, 0, 5, 5, 70, 80, 0x200A, -40, 40), +}; + +CameraModeValue sSetFireBirdsEyeModeBattleData[] = { + CAM_FUNCDATA_PARA1(-20, 500, 80, 0, 5, 5, 60, 80, 0x200A, -40, 40), +}; + +CameraModeValue sSetFireBirdsEyeModeClimbData[] = { + CAM_FUNCDATA_NORM1(-20, 500, 500, 80, 20, 10, 80, 60, 20, 0x0002), +}; + +/** + *===================================================================== + * Custom Data: TURN_AROUND Setting + *===================================================================== + */ + +CameraModeValue sSetTurnAroundModeNormalData[] = { + CAM_FUNCDATA_KEEP4(-30, 120, -10, 170, 0, 60, 0x2502, 25, 6), +}; + +/** + *===================================================================== + * Custom Data: PIVOT_VERTICAL Setting + *===================================================================== + */ + +CameraModeValue sSetPivotVerticalModeNormalData[] = { + CAM_FUNCDATA_SPEC0(20, 0x3200), +}; + +/** + *===================================================================== + * Custom Data: NORMAL2/4 Setting + *===================================================================== + */ + +CameraModeValue sSetNormal2and4ModeNormalData[] = { + CAM_FUNCDATA_NORM1(-20, 200, 300, 10, 12, 10, 35, 60, 60, 0x0002), +}; + +/** + *===================================================================== + * Custom Data: FISHING Setting + *===================================================================== + */ + +CameraModeValue sSetFishingModeNormalData[] = { + CAM_FUNCDATA_NORM1(0, 200, 300, 20, 12, 10, 35, 55, 60, 0x0F02), +}; + +CameraModeValue sSetFishingModeTargetData[] = { + CAM_FUNCDATA_PARA1(-20, 250, 0, 0, 5, 5, 45, 50, 0x2F0A, -40, 20), +}; + +CameraModeValue sSetFishingModeFollowTargetData[] = { + CAM_FUNCDATA_BATT1(-20, 250, 0, 80, 0, 0, 25, 55, 80, 0x2F02, -40, 25), +}; + +CameraModeValue sSetFishingModeTalkData[] = { + CAM_FUNCDATA_KEEP3(-30, 70, 200, 40, 10, 0, 5, 70, 45, 50, 10, 0x3F20), +}; + +CameraModeValue sSetFishingModeFirstPersonData[] = { + CAM_FUNCDATA_SUBJ3(0, 5, 50, 10, 0, 0, 0, 45, 0x0F00), +}; + +CameraModeValue sSetFishingModeJumpData[] = { + CAM_FUNCDATA_JUMP1(-20, 200, 300, 12, 35, 60, 40, 0x0F00), +}; + +CameraModeValue sSetFishingModeFreeFallData[] = { + CAM_FUNCDATA_JUMP1(-20, 200, 300, 15, 80, 60, 20, 0x0F00), +}; + +CameraModeValue sSetFishingModeHangData[] = { + CAM_FUNCDATA_UNIQ1(-80, 200, 300, 40, 60, 10, 0x0F00), +}; + +CameraModeValue sSetFishingModeHangZData[] = { + CAM_FUNCDATA_UNIQ1(-120, 300, 300, 70, 45, 10, 0x2F00), +}; + +/** + *===================================================================== + * Custom Data: CS_C Setting + *===================================================================== + */ + +CameraModeValue sSetCsCModeNormalData[] = { + CAM_FUNCDATA_FLAGS(0x3F00), +}; + +/** + *===================================================================== + * Custom Data: JABU_TENTACLE Setting + *===================================================================== + */ + +CameraModeValue sSetJabuTentacleModeNormalData[] = { + CAM_FUNCDATA_NORM1_ALT(30, 200, 300, -20, 15, 5, 50, 70, 70, 0x0003), +}; + +CameraModeValue sSetJabuTentacleModeBattleData[] = { + CAM_FUNCDATA_BATT1(-30, 160, 10, 10, 0, 0, 70, 60, 40, 0x2002, -50, 20), +}; + +/** + *===================================================================== + * Custom Data: DUNGEON2 Setting + *===================================================================== + */ + +CameraModeValue sSetDungeon2ModeNormalData[] = { + CAM_FUNCDATA_NORM1(-20, 350, 350, 20, 15, 5, 30, 60, 60, 0x0003), +}; + +CameraModeValue sSetDungeon2ModeTargetData[] = { + CAM_FUNCDATA_PARA1(-20, 200, 0, 0, 5, 5, 45, 50, 0x200A, -40, 20), +}; + +CameraModeValue sSetDungeon2ModeBattleData[] = { + CAM_FUNCDATA_BATT1(-20, 180, 10, 80, -10, 10, 25, 45, 80, 0x2002, -40, 25), +}; + +CameraModeValue sSetDungeon2ModeJumpData[] = { + CAM_FUNCDATA_JUMP1(-20, 350, 350, 10, 50, 60, 40, 0x0000), +}; + +CameraModeValue sSetDungeon2ModeFreeFallData[] = { + CAM_FUNCDATA_JUMP1(-20, 350, 350, 15, 80, 60, 20, 0x0000), +}; + +CameraModeValue sSetDungeon2ModeClimbData[] = { + CAM_FUNCDATA_JUMP2(-40, 350, 350, 20, 5, 5, 60, 40, 0x0000), +}; + +CameraModeValue sSetDungeon2ModeClimbZData[] = { + CAM_FUNCDATA_JUMP2(-40, 350, 350, 20, 999, 5, 60, 40, 0x2006), +}; + +CameraModeValue sSetDungeon2ModeHangData[] = { + CAM_FUNCDATA_UNIQ1(-50, 350, 350, 40, 60, 10, 0x0000), +}; + +CameraModeValue sSetDungeon2ModeHangZData[] = { + CAM_FUNCDATA_UNIQ1(-100, 350, 350, 70, 45, 10, 0x2000), +}; + +CameraModeValue sSetDungeon2ModeStillData[] = { + CAM_FUNCDATA_NORM1(-10, 350, 350, 20, 100, 5, 100, 60, 5, 0xF003), +}; + +CameraModeValue sSetDungeon2ModePushPullData[] = { + CAM_FUNCDATA_PARA1(0, 280, 25, 0, 5, 5, 70, 30, 0x206A, -20, 30), +}; + +/** + *===================================================================== + * Custom Data: DIRECTED_YAW Setting + *===================================================================== + */ + +CameraModeValue sSetDirectedYawModeNormalData[] = { + CAM_FUNCDATA_NORM1(-10, 280, 320, -8, 20, 10, 80, 60, 80, 0x0002), +}; + +CameraModeValue sSetDirectedYawModeFollowTargetData[] = { + CAM_FUNCDATA_KEEP1(-20, 180, 200, 35, 45, 0, -5, 20, 50, 50, 0x2001, -50, 30), +}; + +CameraModeValue sSetDirectedYawModeTalkData[] = { + CAM_FUNCDATA_KEEP3(-80, 200, 250, 30, 10, -8, -8, 30, 50, 50, 10, 0x3520), +}; + +/** + *===================================================================== + * Custom Data: NORMAL4 Setting + *===================================================================== + */ + +CameraModeValue sNormal4ModeTalkData[] = { + CAM_FUNCDATA_KEEP3(-30, 70, 200, 40, 10, 0, 5, 70, 45, 50, 10, 0x35A0), +}; + +/** + * ===================================================================== + * CAMERA SETTINGS: USAGE OF FUNCTIONS AND DATA FOR SPECIFIC MODES + * ===================================================================== + */ + +#define CAM_SETTING_MODE_ENTRY(func, data) \ + { func, ARRAY_COUNT(data), data } + +CameraMode sCamSetNormal0Modes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetNormal0ModeNormalData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModeTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP3, sSetNormal0ModeTalkData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT1, sSetNormal0ModeBattleData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeFirstPersonData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SPEC5, sSetNormal0ModeHookshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBoomerangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeSlingshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetNormal0ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal0ModeHangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal0ModeHangZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetNormal0ModeFreeFallData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT4, sSetNormal0ModeChargeData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetNormal0ModeStillData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModePushPullData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowBoomerangData), }; -CameraModeValue D_8011B290[] = { - /* CAM_FUNC_UNIQ2 */ - { -40, 0 }, // yOffset - { 60, 1 }, // distTarget - { 60, 7 }, // fovTarget - { 0x0002, 9 }, // flags -}; - -CameraModeValue D_8011B2A0[] = { - /* CAM_FUNC_UNIQ2 */ - { -30, 0 }, // yOffset - { 45, 1 }, // distTarget - { 100, 7 }, // fovTarget - { 0x2001, 9 }, // flags -}; - -CameraModeValue D_8011B2B0[] = { - /* CAM_FUNC_DEMO1 - CAM_FUNC_DEMO4 (Not actually used in Camera_Demo4) - CAM_FUNC_DEMO6 - CAM_FUNC_SPEC4 */ - { 0x3200, 9 }, // flags -}; - -CameraModeValue sSetMori1ModeNormVals[] = { - /* CAM_FUNC_PARA1 */ - { -50, 0 }, // unk_00 - { 450, 1 }, // distTarget - { 40, 3 }, // pitchTarget3 - { 180, 10 }, // yawTarget - { 5, 4 }, // unk_08 - { 5, 5 }, // unk_0C - { 70, 7 }, // fovTarget - { 30, 8 }, // unk_14 - { 0x000C, 9 }, // flags - { -50, 11 }, // unk_18 - { 20, 12 }, // unk_1C -}; - -CameraModeValue D_8011B2E0[] = { - /* CAM_FUNC_PARA3 */ - { 0x3501, 9 }, // flags -}; - -CameraModeValue D_8011B2E4[] = { - /* CAM_FUNC_DEMO3 - CAM_FUNC_DEMO4 (not actually used in Camera_Demo4) */ - { 60, 7 }, // fov - { 30, 8 }, // unk_04 - { 0x3200, 9 }, // flags -}; - -CameraModeValue sSetDemo3ModeNormVals[] = { - /* CAM_FUNC_DEMO9 */ - { 0x3212, 9 }, // flags -}; - -CameraModeValue D_8011B2F4[] = { - /* CAM_FUNC_NORM1 */ - { -50, 0 }, // yOffset - { 300, 1 }, // distMin - { 300, 2 }, // distMax - { 50, 3 }, // pitchTarget - { 20, 4 }, // unk_0C - { 10, 5 }, // unk_10 - { 50, 6 }, // unk_14 - { 70, 7 }, // fovTarget - { 40, 8 }, // atLERPScaleMax - { 0x0002, 9 }, // flags -}; - -CameraModeValue D_8011B31C[] = { - /* CAM_FUNC_PARA1 */ - { -50, 0 }, // unk_00 - { 300, 1 }, // distTarget - { 10, 3 }, // pitchTarget - { 0, 10 }, // yawTarget - { 5, 4 }, // unk_08 - { 5, 5 }, // unk_0C - { 45, 7 }, // fovTarget - { 50, 8 }, // unk_14 - { 0x200A, 9 }, // flags - { -40, 11 }, // unk_18 - { 20, 12 }, // unk_1C -}; - -CameraModeValue D_8011B348[] = { - /* CAM_FUNC_JUMP1 */ - { -50, 0 }, // atYOffset - { 300, 1 }, // distMin - { 300, 2 }, // distMax - { 12, 4 }, // yawUpdateRateTarget - { 35, 6 }, // maxYawUpdate - { 60, 7 }, // unk_14 - { 40, 8 }, // atLERPScaleMax - { 0x0000, 9 }, // flags -}; - -CameraModeValue D_8011B368[] = { - /* CAM_FUNC_UNIQ1 */ - { -80, 0 }, // yOffset - { 300, 1 }, // distMin - { 300, 2 }, // distMax - { 60, 3 }, // fovTarget - { 70, 7 }, // pitchTarget - { 30, 8 }, // atLERPScaleMax - { 0x0000, 9 }, // flags -}; - -CameraModeValue D_8011B384[] = { - /* CAM_FUNC_UNIQ1 */ - { -120, 0 }, // yOffset - { 300, 1 }, // distMin - { 300, 2 }, // distMax - { 70, 3 }, // pitchTarget - { 50, 7 }, // fovTarget - { 30, 8 }, // atLERPScaleMax - { 0x2000, 9 }, // flags -}; - -CameraModeValue D_8011B3A0[] = { - /* CAM_FUNC_NORM1 */ - { -20, 0 }, // yOffset - { 300, 1 }, // distMin - { 350, 2 }, // distMax - { 50, 3 }, // pitchTarget - { 100, 4 }, // unk_0C - { 10, 5 }, // unk_10 - { 100, 6 }, // unk_14 - { 70, 7 }, // fovTarget - { 30, 8 }, // atLERPScaleMax - { 0xF002, 9 }, // flags -}; - -CameraModeValue D_8011B3C8[] = { - /* CAM_FUNC_NORM1 */ - { -50, 0 }, // yOffset - { 200, 1 }, // distMin - { 200, 2 }, // distMax - { 20, 3 }, // pitchTarget - { 16, 4 }, // unk_0C - { 10, 5 }, // unk_10 - { 50, 6 }, // unk_14 - { 60, 7 }, // fovTarget - { 50, 8 }, // atLERPScaleMax - { 0x0002, 9 }, // flags -}; - -CameraModeValue D_8011B3F0[] = { - /* CAM_FUNC_PARA1 */ - { -50, 0 }, // unk_00 - { 200, 1 }, // distTarget - { 40, 3 }, // pitchTarget - { 0, 10 }, // yawTarget - { 5, 4 }, // unk_08 - { 5, 5 }, // unk_0C - { 45, 7 }, // fovTarget - { 50, 8 }, // unk_14 - { 0x200A, 9 }, // flags - { -40, 11 }, // unk_18 - { 20, 12 }, // unk_1C -}; - -CameraModeValue D_8011B41C[] = { - /* CAM_FUNC_JUMP1 */ - { -50, 0 }, // atYOffset - { 150, 1 }, // distMin - { 250, 2 }, // distMax - { 12, 4 }, // yawUpdateRateTarget - { 35, 6 }, // maxYawUpdate - { 60, 7 }, // unk_14 - { 40, 8 }, // atLERPScaleMax - { 0x0000, 9 }, // flags -}; - -CameraModeValue D_8011B43C[] = { - /* CAM_FUNC_UNIQ1 */ - { -80, 0 }, // yOffset - { 200, 1 }, // distMin - { 200, 2 }, // distMax - { 40, 3 }, // pitchTarget - { 60, 7 }, // fovTarget - { 30, 8 }, // atLERPScaleMax - { 0x0000, 9 }, // flags -}; - -CameraModeValue D_8011B458[] = { - /* CAM_FUNC_UNIQ1 */ - { -120, 0 }, // yOffset - { 200, 1 }, // distMin - { 200, 2 }, // distMax - { 60, 3 }, // pitchtarget - { 50, 7 }, // fovTarget - { 30, 8 }, // atLERPScaleMax - { 0x2000, 9 }, // flags -}; - -CameraModeValue D_8011B474[] = { - /* CAM_FUNC_NORM1 */ - { -20, 0 }, // yOffset - { 200, 1 }, // distMin - { 250, 2 }, // distMax - { 20, 3 }, // unk_0C - { 100, 4 }, // unk_10 - { 10, 5 }, // unk_14 - { 100, 6 }, // pitchTarget - { 60, 7 }, // fovTarget - { 30, 8 }, // atLERPScaleMax - { 0xF002, 9 }, // flags -}; - -CameraModeValue sSetScn0ModeNormVals[] = { - /* CAM_FUNC_SPEC9 */ - { -30, 0 }, // yOffset - { 60, 7 }, // unk_04 (unused) - { 0x10A, 9 }, // flags -}; - -CameraModeValue D_8011B4A8[] = { - /* CAM_FUNC_UNIQ2 */ - { -20, 0 }, // yOffset - { 150, 1 }, // distTarget - { 60, 7 }, // fovTarget - { 0x0210, 9 }, // flags -}; - -CameraModeValue D_8011B4B8[] = { - /* CAM_FUNC_NORM1 */ - { 0, 0 }, // yOffset - { 400, 1 }, // distMin - { 500, 2 }, // distMax - { 35, 3 }, // unk_0C - { 14, 4 }, // unk_10 - { 5, 5 }, // unk_14 - { 20, 6 }, // pitchTarget - { 60, 7 }, // fovTarget - { 40, 8 }, // atLERPScaleMax - { 0x0012, 9 }, // flags -}; - -CameraModeValue D_8011B4E0[] = { - /* CAM_FUNC_BATT1 */ - { -20, 0 }, // yOffset (PCT) - { 250, 1 }, // distance - { 5, 13 }, // swingYawInitial - { 10, 14 }, // swingYawFinal - { 30, 15 }, // swingPitchInitial - { 20, 16 }, // swingPitchFinal - { 25, 17 }, // swingPitchAdj (PCT) - { 45, 7 }, // fov - { 60, 8 }, // atLERPScaleOnGround (PCT) - { 0x2002, 9 }, // flags - { -40, 11 }, // yOffsetOffGround (PCT) - { 25, 12 }, // atLERPScaleOffGround (PCT) -}; - -CameraModeValue D_8011B510[] = { - /* CAM_FUNC_NORM1 */ - { 0, 0 }, // yOffset - { 300, 1 }, // distMin - { 500, 2 }, // distMax - { 60, 3 }, // unk_0C - { 8, 4 }, // unk_10 - { 5, 5 }, // unk_14 - { 60, 6 }, // pitchTarget - { 60, 7 }, // fovTarget - { 30, 8 }, // atLERPScaleMax - { 0x0012, 9 }, // flags -}; - -CameraModeValue D_8011B538[] = { - /* CAM_FUNC_NORM1 */ - { -20, 0 }, // yOffset - { 500, 1 }, // distMin - { 500, 2 }, // distMax - { 80, 3 }, // unk_0C - { 20, 4 }, // unk_10 - { 10, 5 }, // unk_14 - { 70, 6 }, // pitchTarget - { 70, 7 }, // fovTarget - { 80, 8 }, // atLERPScaleMax - { 0x0012, 9 }, // flags -}; - -CameraModeValue D_8011B560[] = { - /* CAM_FUNC_PARA1 */ - { -20, 0 }, // unk_00 - { 500, 1 }, // distTarget - { 80, 3 }, // pitchTarget - { 0, 10 }, // yawTarget - { 5, 4 }, // unk_08 - { 5, 5 }, // unk_0C - { 70, 7 }, // fovTarget - { 80, 8 }, // unk_14 - { 0x201A, 9 }, // flags - { -40, 11 }, // unk_18 - { 40, 12 }, // unk_1C -}; - -CameraModeValue D_8011B58C[] = { - /* CAM_FUNC_PARA1 */ - { -20, 0 }, // unk_00 - { 500, 1 }, // distTarget - { 80, 3 }, // pitchTarget - { 0, 10 }, // yawTarget - { 5, 4 }, // unk_08 - { 5, 5 }, // unk_0C - { 60, 7 }, // fovTarget - { 80, 8 }, // unk_14 - { 0x201A, 9 }, // flags - { -40, 11 }, // unk_18 - { 40, 12 }, // unk_1C -}; - -CameraModeValue D_8011B5B8[] = { - /* CAM_FUNC_NORM1 */ - { -20, 0 }, // yOffset - { 500, 1 }, // distMin - { 500, 2 }, // distMax - { 80, 3 }, // unk_0C - { 20, 4 }, // unk_10 - { 10, 5 }, // unk_14 - { 80, 6 }, // pitchTarget - { 60, 7 }, // fovTarget - { 20, 8 }, // atLERPScaleMax - { 0x0012, 9 }, // flags -}; - -CameraModeValue D_8011B5E0[] = { - /* CAM_FUNC_NORM1 */ - { -20, 0 }, // yOffset - { 750, 1 }, // distMin - { 750, 2 }, // distMax - { 80, 3 }, // unk_0C - { 20, 4 }, // unk_10 - { 10, 5 }, // unk_14 - { 70, 6 }, // pitchTarget - { 70, 7 }, // fovTarget - { 80, 8 }, // atLERPScaleMax - { 0x0012, 9 }, // flags -}; - -CameraModeValue D_8011B608[] = { - /* CAM_FUNC_PARA1 */ - { -20, 0 }, // unk_00 - { 750, 1 }, // distTarget - { 80, 3 }, // pitchTarget - { 0, 10 }, // yawTarget - { 5, 4 }, // unk_08 - { 5, 5 }, // unk_0C - { 70, 7 }, // fovTarget - { 80, 8 }, // unk_14 - { 0x201A, 9 }, // flags - { -40, 11 }, // unk_18 - { 40, 12 }, // unk_1C -}; - -CameraModeValue D_8011B634[] = { - /* CAM_FUNC_PARA1 */ - { -20, 0 }, // unk_00 - { 750, 1 }, // distTarget - { 80, 3 }, // pitchTarget - { 0, 10 }, // yawTarget - { 5, 4 }, // unk_08 - { 5, 5 }, // unk_0C - { 70, 7 }, // fovTarget - { 80, 8 }, // unk_14 - { 0x200A, 9 }, // flags - { -40, 11 }, // unk_18 - { 40, 12 }, // unk_1C -}; - -CameraModeValue D_8011B660[] = { - /* CAM_FUNC_NORM1 */ - { -20, 0 }, // yOffset - { 750, 1 }, // distMin - { 750, 2 }, // distMax - { 80, 3 }, // unk_0C - { 20, 4 }, // unk_10 - { 10, 5 }, // unk_14 - { 80, 6 }, // pitchTarget - { 70, 7 }, // fovTarget - { 20, 8 }, // atLERPScaleMax - { 0x0012, 9 }, // flags -}; - -CameraModeValue D_8011B688[] = { - /* CAM_FUNC_NORM1 */ - { -20, 0 }, // yOffset - { 500, 1 }, // distMin - { 500, 2 }, // distMax - { 80, 3 }, // unk_0C - { 20, 4 }, // unk_10 - { 10, 5 }, // unk_14 - { 70, 6 }, // pitchTarget - { 70, 7 }, // fovTarget - { 80, 8 }, // atLERPScaleMax - { 0x0002, 9 }, // flags -}; - -CameraModeValue D_8011B6B0[] = { - /* CAM_FUNC_PARA1 */ - { -20, 0 }, // unk_00 - { 500, 1 }, // distTarget - { 80, 3 }, // pitchTarget - { 0, 10 }, // yawTarget - { 5, 4 }, // unk_08 - { 5, 5 }, // unk_0C - { 70, 7 }, // fovTarget - { 80, 8 }, // unk_14 - { 0x200A, 9 }, // flags - { -40, 11 }, // unk_18 - { 40, 12 }, // unk_1C -}; - -CameraModeValue D_8011B6DC[] = { - /* CAM_FUNC_PARA1 */ - { -20, 0 }, // unk_00 - { 500, 1 }, // distTarget - { 80, 3 }, // pitchTarget - { 0, 10 }, // yawTarget - { 5, 4 }, // unk_08 - { 5, 5 }, // unk_0C - { 60, 7 }, // fovTarget - { 80, 8 }, // unk_14 - { 0x200A, 9 }, // flags - { -40, 11 }, // unk_18 - { 40, 12 }, // unk_1C -}; - -CameraModeValue D_8011B708[] = { - /* CAM_FUNC_NORM1 */ - { -20, 0 }, // yOffset - { 500, 1 }, // distMin - { 500, 2 }, // distMax - { 80, 3 }, // unk_0C - { 20, 4 }, // unk_10 - { 10, 5 }, // unk_14 - { 80, 6 }, // pitchTarget - { 60, 7 }, // fovTarget - { 20, 8 }, // atLERPScaleMax - { 0x0002, 9 }, // flags -}; - -CameraModeValue D_8011B730[] = { - /* CAM_FUNC_KEEP4 */ - { -30, 0 }, // unk_00 - { 120, 1 }, // unk_04 - { -10, 3 }, // unk_08 - { 170, 10 }, // unk_0C - { 0, 21 }, // unk_10 - { 60, 7 }, // unk_18 - { 0x2502, 9 }, // flags - { 25, 4 }, // unk_14 - { 6, 22 }, // unk_1E -}; - -CameraModeValue sSetCirc6ModeNormVals[] = { - /* CAM_FUNC_SPEC0 */ - { 20, 4 }, // lerpATScale - { 0x3200, 9 }, // flags -}; - -CameraModeValue D_8011B75C[] = { - /* CAM_FUNC_NORM1 */ - { -20, 0 }, // yOffset - { 200, 1 }, // distMin - { 300, 2 }, // distMax - { 10, 3 }, // pitchTarget - { 12, 4 }, // unk_0C - { 10, 5 }, // unk_10 - { 35, 6 }, // unk_14 - { 60, 7 }, // fovTarget - { 60, 8 }, // atLERPScaleMax - { 0x0002, 9 }, // flags -}; - -CameraModeValue D_8011B784[] = { - /* CAM_FUNC_NORM1 */ - { 0, 0 }, // yOffset - { 200, 1 }, // distMin - { 300, 2 }, // distMax - { 20, 3 }, // unk_0C - { 12, 4 }, // unk_10 - { 10, 5 }, // unk_14 - { 35, 6 }, // pitchTarget - { 55, 7 }, // fovTarget - { 60, 8 }, // atLERPScaleMax - { 0x0F02, 9 }, // flags -}; - -CameraModeValue D_8011B7AC[] = { - /* CAM_FUNC_PARA1 */ - { -20, 0 }, // unk_00 - { 250, 1 }, // distTarget - { 0, 3 }, // pitchTarget - { 0, 10 }, // yawTarget - { 5, 4 }, // unk_08 - { 5, 5 }, // unk_0C - { 45, 7 }, // fovTarget - { 50, 8 }, // unk_14 - { 0x2F0A, 9 }, // flags - { -40, 11 }, // unk_18 - { 20, 12 }, // unk_1C -}; - -CameraModeValue D_8011B7D8[] = { - /* CAM_FUNC_BATT1 */ - { -20, 0 }, // yOffset (PCT) - { 250, 1 }, // distance - { 0, 13 }, // swingYawInitial - { 80, 14 }, // swingYawFinal - { 0, 15 }, // swingPitchInitial - { 0, 16 }, // swingPitchFinal - { 25, 17 }, // swingPitchAdj (PCT) - { 55, 7 }, // fov - { 80, 8 }, // atLERPScaleOnGround (PCT) - { 0x2F02, 9 }, // flags - { -40, 11 }, // yOffsetOffGround (PCT) - { 25, 12 }, // atLERPScaleOffGround (PCT) -}; - -CameraModeValue D_8011B808[] = { - /* CAM_FUNC_KEEP3 */ - { -30, 0 }, // yOffset - { 70, 1 }, // minDist - { 200, 2 }, // maxDist - { 40, 13 }, // swingYawInitial - { 10, 14 }, // swingYawFinal - { 0, 15 }, // swingPitchInitial - { 5, 16 }, // swingPitchFinal - { 70, 17 }, // swingPitchAdj - { 45, 7 }, // fovTarget - { 50, 8 }, // atLERPScaleMax - { 10, 4 }, // initTimer - { 0x3F20, 9 }, // flags -}; - -CameraModeValue D_8011B838[] = { - /* CAM_FUNC_SUBJ3 */ - { 0, 0 }, // eyeNextYOffset - { 5, 1 }, // eyeDist - { 50, 2 }, // eyeNextDist - { 10, 4 }, // unk_0C - { 0, 19 }, // atOffset.x - { 0, 20 }, // atOffset.y - { 0, 21 }, // atOffset.z - { 45, 7 }, // fovTarget - { 0x0F00, 9 }, // flags -}; - -CameraModeValue D_8011B85C[] = { - /* CAM_FUNC_JUMP1 */ - { -20, 0 }, // atYOffset - { 200, 1 }, // distMin - { 300, 2 }, // distMax - { 12, 4 }, // yawUpdateRateTarget - { 35, 6 }, // maxYawUpdate - { 60, 7 }, // unk_14 - { 40, 8 }, // atLERPScaleMax - { 0x0F00, 9 }, // flags -}; - -CameraModeValue D_8011B87C[] = { - /* CAM_FUNC_JUMP1 */ - { -20, 0 }, // atYOffset - { 200, 1 }, // distMin - { 300, 2 }, // distMax - { 15, 4 }, // yawUpdateRateTarget - { 80, 6 }, // maxYawUpdate - { 60, 7 }, // unk_14 - { 20, 8 }, // atLERPScaleMax - { 0x0F00, 9 }, // flags -}; - -CameraModeValue D_8011B89C[] = { - /* CAM_FUNC_UNIQ1 */ - { -80, 0 }, // yOffset - { 200, 1 }, // distMin - { 300, 2 }, // distMax - { 40, 3 }, // pitchTarget - { 60, 7 }, // fovTarget - { 10, 8 }, // atLERPScaleMax - { 0x0F00, 9 }, // flags -}; - -CameraModeValue D_8011B8B8[] = { - /* CAM_FUNC_UNIQ1 */ - { -120, 0 }, // yOffset - { 300, 1 }, // distMin - { 300, 2 }, // distMax - { 70, 3 }, // pitchTarget - { 45, 7 }, // fovTarget - { 10, 8 }, // atLERPScaleMax - { 0x2F00, 9 }, // flags -}; - -CameraModeValue sSetDemoCModeNormVals[] = { - /* CAM_FUNC_UNIQ9 */ - { 0x3F00, 9 }, /* flags */ -}; - -CameraModeValue D_8011B8D8[] = { - /* CAM_FUNC_NORM1 */ - { 30, 0 }, // yOffset - { 200, 1 }, // distMin - { 300, 2 }, // distMax - { -20, 3 }, // unk_0C - { 15, 4 }, // unk_10 - { 5, 26 }, // unk_14 - { 50, 6 }, // pitchTarget - { 70, 7 }, // fovTarget - { 70, 8 }, // atLERPScaleMax - { 0x0003, 9 }, // flags -}; - -CameraModeValue D_8011B900[] = { - /* CAM_FUNC_BATT1 */ - { -30, 0 }, // yOffset (PCT) - { 160, 1 }, // distance - { 10, 13 }, // swingYawInitial - { 10, 14 }, // swingYawFinal - { 0, 15 }, // swingPitchInitial - { 0, 16 }, // swingPitchFinal - { 70, 17 }, // swingPitchAdj (PCT) - { 60, 7 }, // fov - { 40, 8 }, // atLERPScaleOnGround (PCT) - { 0x2002, 9 }, // flags - { -50, 11 }, // yOffsetOffGround (PCT) - { 20, 12 }, // atLERPScaleOffGround (PCT) -}; - -CameraModeValue D_8011B930[] = { - /* CAM_FUNC_NORM1 */ - { -20, 0 }, // yOffset - { 350, 1 }, // distMin - { 350, 2 }, // distMax - { 20, 3 }, // unk_0C - { 15, 4 }, // unk_10 - { 5, 5 }, // unk_14 - { 30, 6 }, // pitchTarget - { 60, 7 }, // fovTarget - { 60, 8 }, // atLERPScaleMax - { 0x0003, 9 }, // flags -}; - -CameraModeValue D_8011B958[] = { - /* CAM_FUNC_PARA1 */ - { -20, 0 }, // unk_00 - { 200, 1 }, // distTarget - { 0, 3 }, // pitchTarget - { 0, 10 }, // yawTarget - { 5, 4 }, // unk_08 - { 5, 5 }, // unk_0C - { 45, 7 }, // fovTarget - { 50, 8 }, // unk_14 - { 0x200A, 9 }, // flags - { -40, 11 }, // unk_18 - { 20, 12 }, // unk_1C -}; - -CameraModeValue sSetDung2ModeBattVals[] = { - /* CAM_FUNC_BATT1 */ - { -20, 0 }, // yOffset (PCT) - { 180, 1 }, // distance - { 10, 13 }, // swingYawInitial - { 80, 14 }, // swingYawFinal - { -10, 15 }, // swingPitchInitial - { 10, 16 }, // swingPitchFinal - { 25, 17 }, // swingPitchAdj (PCT) - { 45, 7 }, // fov - { 80, 8 }, // atLERPScaleOnGround (PCT) - { 0x2002, 9 }, // flags - { -40, 11 }, // yOffsetOffGround (PCT) - { 25, 12 }, // atLERPScaleOffGround (PCT) -}; - -CameraModeValue D_8011B9B4[] = { - /* CAM_FUNC_JUMP1 */ - { -20, 0 }, // atYOffset - { 350, 1 }, // distMin - { 350, 2 }, // distMax - { 10, 4 }, // yawUpdateRateTarget - { 50, 6 }, // maxYawUpdate - { 60, 7 }, // unk_14 - { 40, 8 }, // atLERPScaleMax - { 0x0000, 9 }, // flags -}; - -CameraModeValue D_8011B9D4[] = { - /* CAM_FUNC_JUMP1 */ - { -20, 0 }, // atYOffset - { 350, 1 }, // distMin - { 350, 2 }, // distMax - { 15, 4 }, // yawUpdateRateTarget - { 80, 6 }, // maxYawUpdate - { 60, 7 }, // unk_14 - { 20, 8 }, // atLERPScaleMax - { 0x0000, 9 }, // flags -}; - -CameraModeValue D_8011B9F4[] = { - /* CAM_FUNC_JUMP2 */ - { -40, 0 }, // atYOffset - { 350, 1 }, // minDist - { 350, 2 }, // maxDist - { 20, 18 }, // minMaxDistFactor - { 5, 4 }, // yawUpdRateTarget - { 5, 5 }, // xzUpdRateTarget - { 60, 7 }, // fovTarget - { 40, 8 }, // atLERPStepScale - { 0x0000, 9 }, // flags -}; - -CameraModeValue D_8011BA18[] = { - /* CAM_FUNC_JUMP2 */ - { -40, 0 }, // atYOffset - { 350, 1 }, // minDist - { 350, 2 }, // maxDist - { 20, 18 }, // minMaxDistFactor - { 999, 4 }, // yawUpdRateTarget - { 5, 5 }, // xzUpdRateTarget - { 60, 7 }, // fovTarget - { 40, 8 }, // atLERPStepScale - { 0x2006, 9 }, // flags -}; - -CameraModeValue D_8011BA3C[] = { - /* CAM_FUNC_UNIQ1 */ - { -50, 0 }, // yOffset - { 350, 1 }, // distMin - { 350, 2 }, // distMax - { 40, 3 }, // pitchTarget - { 60, 7 }, // fovTarget - { 10, 8 }, // atLERPScaleMax - { 0x0000, 9 }, // flags -}; - -CameraModeValue D_8011BA58[] = { - /* CAM_FUNC_UNIQ1 */ - { -100, 0 }, // yOffset - { 350, 1 }, // distMin - { 350, 2 }, // distMax - { 70, 3 }, // pitchTarget - { 45, 7 }, // fovTarget - { 10, 8 }, // atLERPScaleMax - { 0x2000, 9 }, // flags -}; - -CameraModeValue D_8011BA74[] = { - /* CAM_FUNC_NORM1 */ - { -10, 0 }, // yOffset - { 350, 1 }, // distMin - { 350, 2 }, // distMax - { 20, 3 }, // unk_0C - { 100, 4 }, // unk_10 - { 5, 5 }, // unk_14 - { 100, 6 }, // pitchTarget - { 60, 7 }, // fovTarget - { 5, 8 }, // atLERPScaleMax - { 0xF003, 9 }, // flags -}; - -CameraModeValue D_8011BA9C[] = { - /* CAM_FUNC_PARA1 */ - { 0, 0 }, // unk_00 - { 280, 1 }, // distTarget - { 25, 3 }, // pitchTarget - { 0, 10 }, // yawTarget - { 5, 4 }, // unk_08 - { 5, 5 }, // unk_0C - { 70, 7 }, // fovTarget - { 30, 8 }, // unk_14 - { 0x206A, 9 }, // flags - { -20, 11 }, // unk_18 - { 30, 12 }, // unk_1C -}; - -CameraModeValue D_8011BAC8[] = { - /* CAM_FUNC_NORM1 */ - { -10, 0 }, // yOffset - { 280, 1 }, // distMin - { 320, 2 }, // distMax - { -8, 3 }, // unk_0C - { 20, 4 }, // unk_10 - { 10, 5 }, // unk_14 - { 80, 6 }, // pitchTarget - { 60, 7 }, // fovTarget - { 80, 8 }, // atLERPScaleMax - { 0x0002, 9 }, // flags -}; - -CameraModeValue D_8011BAF0[] = { - /* CAM_FUNC_KEEP1 */ - { -20, 0 }, // unk_00 - { 180, 1 }, // unk_04 - { 200, 2 }, // unk_08 - { 35, 13 }, // unk_0C - { 45, 14 }, // unk_10 - { 0, 15 }, // unk_14 - { -5, 16 }, // unk_18 - { 20, 17 }, // unk_1C - { 50, 7 }, // unk_20 - { 50, 8 }, // unk_24 - { 0x2001, 9 }, // flags - { -50, 11 }, // unk_28 - { 30, 12 }, // unk_2C -}; - -CameraModeValue D_8011BB24[] = { - /* CAM_FUNC_KEEP3 */ - { -80, 0 }, // yOffset - { 200, 1 }, // minDist - { 250, 2 }, // maxDist - { 30, 13 }, // swingYawInitial - { 10, 14 }, // swingYawFinal - { -8, 15 }, // swingPitchInitial - { -8, 16 }, // swingPitchFinal - { 30, 17 }, // swingPitchAdj - { 50, 7 }, // fovTarget - { 50, 8 }, // atLERPScaleMax - { 10, 4 }, // initTimer - { 0x3520, 9 }, // flags -}; - -CameraModeValue D_8011BB54[] = { - /* CAM_FUNC_KEEP3 */ - { -30, 0 }, // yOffset - { 70, 1 }, // minDist - { 200, 2 }, // maxDist - { 40, 13 }, // swingYawInitial - { 10, 14 }, // swingYawFinal - { 0, 15 }, // swingPitchInitial - { 5, 16 }, // swingPitchFinal - { 70, 17 }, // swingPitchAdj - { 45, 7 }, // fovTarget - { 50, 8 }, // atLERPScaleMax - { 10, 4 }, // initTimer - { 0x35A0, 9 }, // flags -}; - -CameraMode sCamSetNorm0Modes[] = { - { CAM_FUNC_NORM1, 10, D_8011A3A0 }, // CAM_MODE_NORMAL - { CAM_FUNC_PARA1, 11, D_8011A3C8 }, // CAM_MODE_TARGET - { CAM_FUNC_KEEP1, 13, D_8011A3F4 }, // CAM_MODE_FOLLOWTARGET - { CAM_FUNC_KEEP3, 12, D_8011A428 }, // CAM_MODE_TALK - { CAM_FUNC_BATT1, 12, D_8011A458 }, // CAM_MODE_BATTLE - { CAM_FUNC_JUMP2, 9, D_8011A488 }, // CAM_MODE_CLIMB - { CAM_FUNC_SUBJ3, 9, D_8011A4AC }, // CAM_MODE_FIRSTPERSON - { CAM_FUNC_SUBJ3, 9, D_8011A4D0 }, // CAM_MODE_BOWARROW - { CAM_FUNC_SUBJ3, 9, D_8011A4F4 }, // CAM_MODE_BOWARROWZ - { CAM_FUNC_SPEC5, 8, D_8011A518 }, // CAM_MODE_HOOKSHOT - { CAM_FUNC_SUBJ3, 9, D_8011A538 }, // CAM_MODE_BOOMERANG - { CAM_FUNC_SUBJ3, 9, D_8011A55C }, // CAM_MODE_SLINGSHOT - { CAM_FUNC_JUMP2, 9, D_8011A580 }, // CAM_MODE_CLIMBZ - { CAM_FUNC_JUMP1, 8, D_8011A5A4 }, // CAM_MODE_JUMP - { CAM_FUNC_UNIQ1, 7, D_8011A5C4 }, // CAM_MODE_HANG - { CAM_FUNC_UNIQ1, 7, D_8011A5E0 }, // CAM_MODE_HANGZ - { CAM_FUNC_JUMP1, 8, D_8011A5FC }, // CAM_MODE_FREEFALL - { CAM_FUNC_BATT4, 7, D_8011A61C }, // CAM_MODE_CHARGE - { CAM_FUNC_NORM1, 10, D_8011A638 }, // CAM_MODE_STILL - { CAM_FUNC_PARA1, 11, D_8011A660 }, // CAM_MODE_PUSHPULL - { CAM_FUNC_KEEP1, 13, D_8011A68C }, // CAM_MODE_FOLLOWBOOMERANG -}; - -CameraMode sCamSetNorm1Modes[] = { - { CAM_FUNC_NORM1, 10, sSetNorm1ModeNormVals }, // CAM_MODE_NORMAL - { CAM_FUNC_PARA1, 11, sSetNorm1ModeParaVals }, // CAM_MODE_TARGET - { CAM_FUNC_KEEP1, 13, D_8011A714 }, // CAM_MODE_FOLLOWTARGET - { CAM_FUNC_KEEP3, 12, D_8011A428 }, // CAM_MODE_TALK - { CAM_FUNC_BATT1, 12, D_8011A748 }, // CAM_MODE_BATTLE - { CAM_FUNC_JUMP2, 9, D_8011A7D8 }, // CAM_MODE_CLIMB - { CAM_FUNC_SUBJ3, 9, D_8011A4AC }, // CAM_MODE_FIRSTPERSON - { CAM_FUNC_SUBJ3, 9, D_8011A4D0 }, // CAM_MODE_BOWARROW - { CAM_FUNC_SUBJ3, 9, D_8011A4F4 }, // CAM_MODE_BOWARROWZ - { CAM_FUNC_SPEC5, 8, D_8011A778 }, // CAM_MODE_HOOKSHOT - { CAM_FUNC_SUBJ3, 9, D_8011A538 }, // CAM_MODE_BOOMERANG - { CAM_FUNC_SUBJ3, 9, D_8011A55C }, // CAM_MODE_SLINGSHOT - { CAM_FUNC_JUMP2, 9, D_8011A7FC }, // CAM_MODE_CLIMBZ - { CAM_FUNC_JUMP1, 8, D_8011A798 }, // CAM_MODE_JUMP - { CAM_FUNC_UNIQ1, 7, D_8011A83C }, // CAM_MODE_HANG - { CAM_FUNC_UNIQ1, 7, D_8011A858 }, // CAM_MODE_HANGZ - { CAM_FUNC_JUMP1, 8, D_8011A7B8 }, // CAM_MODE_FREEFALL - { CAM_FUNC_BATT4, 7, D_8011A820 }, // CAM_MODE_CHARGE - { CAM_FUNC_NORM1, 10, D_8011A874 }, // CAM_MODE_STILL - { CAM_FUNC_PARA1, 11, D_8011A660 }, // CAM_MODE_PUSHPULL - { CAM_FUNC_KEEP1, 13, D_8011A68C }, // CAM_MODE_FOLLOWBOOMERANG +CameraMode sCamSetNormal1Modes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetNormal1ModeNormalData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal1ModeTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal1ModeFollowTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP3, sSetNormal0ModeTalkData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT1, sSetNormal1ModeBattleData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal1ModeClimbData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeFirstPersonData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SPEC5, sSetNormal1ModeHookshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBoomerangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeSlingshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal1ModeClimbZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetNormal1ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal1ModeHangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal1ModeHangZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetNormal1ModeFreeFallData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT4, sSetNormal1ModeChargeData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetNormal1ModeStillData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModePushPullData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowBoomerangData), }; CameraMode sCamSetDungeon0Modes[] = { - { CAM_FUNC_NORM1, 10, D_8011A89C }, // CAM_MODE_NORMAL - { CAM_FUNC_PARA1, 11, D_8011A8C4 }, // CAM_MODE_TARGET - { CAM_FUNC_KEEP1, 13, D_8011A8F0 }, // CAM_MODE_FOLLOWTARGET - { CAM_FUNC_KEEP3, 12, D_8011A428 }, // CAM_MODE_TALK - { CAM_FUNC_BATT1, 12, D_8011A924 }, // CAM_MODE_BATTLE - { CAM_FUNC_JUMP2, 9, D_8011A994 }, // CAM_MODE_CLIMB - { CAM_FUNC_SUBJ3, 9, D_8011A4AC }, // CAM_MODE_FIRSTPERSON - { CAM_FUNC_SUBJ3, 9, D_8011A4D0 }, // CAM_MODE_BOWARROW - { CAM_FUNC_SUBJ3, 9, D_8011A4F4 }, // CAM_MODE_BOWARROWZ - { CAM_FUNC_SPEC5, 8, D_8011A778 }, // CAM_MODE_HOOKSHOT - { CAM_FUNC_SUBJ3, 9, D_8011A538 }, // CAM_MODE_BOOMERANG - { CAM_FUNC_SUBJ3, 9, D_8011A55C }, // CAM_MODE_SLINGSHOT - { CAM_FUNC_JUMP2, 9, D_8011A9B8 }, // CAM_MODE_CLIMBZ - { CAM_FUNC_JUMP1, 8, D_8011A954 }, // CAM_MODE_JUMP - { CAM_FUNC_UNIQ1, 7, D_8011A9F8 }, // CAM_MODE_HANG - { CAM_FUNC_UNIQ1, 7, D_8011AA14 }, // CAM_MODE_HANGZ - { CAM_FUNC_JUMP1, 8, D_8011A974 }, // CAM_MODE_FREEFALL - { CAM_FUNC_BATT4, 7, D_8011A9DC }, // CAM_MODE_CHARGE - { CAM_FUNC_NORM1, 10, D_8011AA30 }, // CAM_MODE_STILL - { CAM_FUNC_PARA1, 11, D_8011A660 }, // CAM_MODE_PUSHPULL - { CAM_FUNC_KEEP1, 13, D_8011A68C }, // CAM_MODE_FOLLOWBOOMERANG + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetDungeon0ModeNormalData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetDungeon0ModeTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetDungeon0ModeFollowTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP3, sSetNormal0ModeTalkData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT1, sSetDungeon0ModeBattleData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetDungeon0ModeClimbData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeFirstPersonData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SPEC5, sSetNormal1ModeHookshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBoomerangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeSlingshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetDungeon0ModeClimbZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetDungeon0ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetDungeon0ModeHangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetDungeon0ModeHangZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetDungeon0ModeFreeFallData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT4, sSetDungeon0ModeChargeData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetDungeon0ModeStillData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModePushPullData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowBoomerangData), }; CameraMode sCamSetDungeon1Modes[] = { - { CAM_FUNC_NORM1, 10, D_8011AA58 }, // CAM_MODE_NORMAL - { CAM_FUNC_PARA1, 11, D_8011A8C4 }, // CAM_MODE_TARGET - { CAM_FUNC_KEEP1, 13, D_8011A714 }, // CAM_MODE_FOLLOWTARGET - { CAM_FUNC_KEEP3, 12, D_8011AA80 }, // CAM_MODE_TALK - { CAM_FUNC_BATT1, 12, D_8011A924 }, // CAM_MODE_BATTLE - { CAM_FUNC_JUMP2, 9, D_8011AAF0 }, // CAM_MODE_CLIMB - { CAM_FUNC_SUBJ3, 9, D_8011A4AC }, // CAM_MODE_FIRSTPERSON - { CAM_FUNC_SUBJ3, 9, D_8011A4D0 }, // CAM_MODE_BOWARROW - { CAM_FUNC_SUBJ3, 9, D_8011A4F4 }, // CAM_MODE_BOWARROWZ - { CAM_FUNC_SPEC5, 8, D_8011A778 }, // CAM_MODE_HOOKSHOT, - { CAM_FUNC_SUBJ3, 9, D_8011A538 }, // CAM_MODE_BOOMERANG - { CAM_FUNC_SUBJ3, 9, D_8011A55C }, // CAM_MODE_SLINGSHOT - { CAM_FUNC_JUMP2, 9, D_8011AB14 }, // CAM_MODE_CLIMBZ - { CAM_FUNC_JUMP1, 8, D_8011AAB0 }, // CAM_MODE_JUMP - { CAM_FUNC_UNIQ1, 7, D_8011AB54 }, // CAM_MODE_HANG - { CAM_FUNC_UNIQ1, 7, D_8011AB70 }, // CAM_MODE_HANGZ - { CAM_FUNC_JUMP1, 8, D_8011AAD0 }, // CAM_MODE_FREEFALL - { CAM_FUNC_BATT4, 7, D_8011AB38 }, // CAM_MODE_CHARGE - { CAM_FUNC_NORM1, 10, D_8011AB8C }, // CAM_MODE_STILL - { CAM_FUNC_PARA1, 11, D_8011ABB4 }, // CAM_MODE_PUSHPULL - { CAM_FUNC_KEEP1, 13, D_8011A68C }, // CAM_MODE_FOLLOWBOOMERANG + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetDungeon1ModeNormalData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetDungeon0ModeTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal1ModeFollowTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP3, sSetDungeon1ModeTalkData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT1, sSetDungeon0ModeBattleData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetDungeon1ModeClimbData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeFirstPersonData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SPEC5, sSetNormal1ModeHookshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBoomerangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeSlingshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetDungeon1ModeClimbZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetDungeon1ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetDungeon1ModeHangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetDungeon1ModeHangZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetDungeon1ModeFreeFallData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT4, sSetDungeon1ModeChargeData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetDungeon1ModeStillData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetDungeon1ModePushPullData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowBoomerangData), }; -CameraMode sCamSetNorm3Modes[] = { - { CAM_FUNC_JUMP3, 10, sSetNorm3ModeNormVals }, // CAM_MODE_NORMAL - { CAM_FUNC_PARA1, 11, D_8011AC08 }, // CAM_MODE_TARGET - { CAM_FUNC_KEEP1, 13, D_8011A3F4 }, // CAM_MODE_FOLLOWTARGET - { CAM_FUNC_KEEP3, 12, D_8011AC34 }, // CAM_MODE_TALK - { CAM_FUNC_BATT1, 12, D_8011A458 }, // CAM_MODE_BATTLE - { CAM_FUNC_JUMP2, 9, D_8011A488 }, // CAM_MODE_CLIMB - { CAM_FUNC_SUBJ3, 9, D_8011A4AC }, // CAM_MODE_FIRSTPERSON - { CAM_FUNC_SUBJ3, 9, D_8011A4D0 }, // CAM_MODE_BOWARROW - { CAM_FUNC_SUBJ3, 9, D_8011A4F4 }, // CAM_MODE_BOWARROWZ - { CAM_FUNC_SPEC5, 8, D_8011A518 }, // CAM_MODE_HOOKSHOT - { CAM_FUNC_JUMP3, 10, sSetNorm3ModeBoomVals }, // CAM_MODE_BOOMERANG - { CAM_FUNC_NONE, 0, NULL }, // CAM_MODE_SLINGSHOT - { CAM_FUNC_JUMP2, 9, D_8011A580 }, // CAM_MODE_CLIMBZ - { CAM_FUNC_JUMP1, 8, D_8011A5A4 }, // CAM_MODE_JUMP - { CAM_FUNC_UNIQ1, 7, D_8011A5C4 }, // CAM_MODE_HANG - { CAM_FUNC_UNIQ1, 7, D_8011A5E0 }, // CAM_MODE_HANGZ - { CAM_FUNC_JUMP1, 8, D_8011A5A4 }, // CAM_MODE_FREEFALL - { CAM_FUNC_BATT4, 7, D_8011A61C }, // CAM_MODE_CHARGE - { CAM_FUNC_NORM1, 10, D_8011A638 }, // CAM_MODE_STILL - { CAM_FUNC_PARA1, 11, D_8011A660 }, // CAM_MODE_PUSHPULL +CameraMode sCamSetNormal3Modes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP3, sSetNormal3ModeNormalData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal3ModeTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP3, sSetNormal3ModeTalkData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT1, sSetNormal0ModeBattleData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeFirstPersonData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SPEC5, sSetNormal0ModeHookshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP3, sSetNormal3ModeBoomerangData), + { CAM_FUNC_NONE, 0, NULL }, + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetNormal0ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal0ModeHangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal0ModeHangZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetNormal0ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT4, sSetNormal0ModeChargeData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetNormal0ModeStillData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModePushPullData), }; -CameraMode sCamSetHorse0Modes[] = { - { CAM_FUNC_NORM3, 9, sSetHrse0ModeNormVals }, // CAM_MODE_NORMAL - { CAM_FUNC_NORM3, 9, sSetHrse0ModeParaVals }, // CAM_MODE_TARGET - { CAM_FUNC_KEEP1, 13, D_8011ACF8 }, // CAM_MODE_FOLLOWTARGET - { CAM_FUNC_KEEP3, 12, D_8011AD2C }, // CAM_MODE_TALK - { CAM_FUNC_NONE, 0, NULL }, // CAM_MODE_BATTLE - { CAM_FUNC_NONE, 0, NULL }, // CAM_MODE_CLIMB - { CAM_FUNC_NONE, 0, NULL }, // CAM_MODE_FIRSTPERSON - { CAM_FUNC_SUBJ3, 9, D_8011ACD4 }, // CAM_MODE_BOWARROW - { CAM_FUNC_SUBJ3, 9, D_8011A4F4 }, // CAM_MODE_BOWARROWZ +CameraMode sCamSetHorseModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM3, sSetHorseModeNormalData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM3, sSetHorseModeTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetHorseModeFollowTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP3, sSetHorseModeTalkData), + { CAM_FUNC_NONE, 0, NULL }, + { CAM_FUNC_NONE, 0, NULL }, + { CAM_FUNC_NONE, 0, NULL }, + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetHorseModeBowArrowData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowZData), }; -CameraMode sCamSetBossGomaModes[] = { - { CAM_FUNC_NORM1, 10, D_8011AD5C }, // CAM_MODE_NORMAL - { CAM_FUNC_PARA1, 11, D_8011A3C8 }, // CAM_MODE_TARGET - { CAM_FUNC_KEEP1, 13, D_8011A3F4 }, // CAM_MODE_FOLLOWTARGET - { CAM_FUNC_KEEP3, 12, D_8011A428 }, // CAM_MODE_TALK - { CAM_FUNC_BATT1, 12, D_8011AD84 }, // CAM_MODE_BATTLE - { CAM_FUNC_JUMP2, 9, D_8011A488 }, // CAM_MODE_CLIMB - { CAM_FUNC_SUBJ3, 9, D_8011A4AC }, // CAM_MODE_FIRSTPERSON - { CAM_FUNC_SUBJ3, 9, D_8011A4D0 }, // CAM_MODE_BOWARROW - { CAM_FUNC_SUBJ3, 9, D_8011A4F4 }, // CAM_MODE_BOWARROWZ - { CAM_FUNC_SPEC5, 8, D_8011A518 }, // CAM_MODE_HOOKSHOT, - { CAM_FUNC_SUBJ3, 9, D_8011A538 }, // CAM_MODE_BOOMERANG - { CAM_FUNC_SUBJ3, 9, D_8011A55C }, // CAM_MODE_SLINGSHOT - { CAM_FUNC_JUMP2, 9, D_8011A580 }, // CAM_MODE_CLIMBZ - { CAM_FUNC_JUMP1, 8, D_8011A5A4 }, // CAM_MODE_JUMP - { CAM_FUNC_UNIQ1, 7, D_8011A5C4 }, // CAM_MODE_HANG - { CAM_FUNC_UNIQ1, 7, D_8011A5E0 }, // CAM_MODE_HANGZ - { CAM_FUNC_JUMP1, 8, D_8011A5A4 }, // CAM_MODE_FREEFALL - { CAM_FUNC_BATT4, 7, D_8011A9DC }, // CAM_MODE_CHARGE - { CAM_FUNC_NORM1, 10, D_8011A638 }, // CAM_MODE_STILL - { CAM_FUNC_PARA1, 11, D_8011A660 }, // CAM_MODE_PUSHPULL - { CAM_FUNC_KEEP1, 13, D_8011A68C }, // CAM_MODE_FOLLOWBOOMERANG +CameraMode sCamSetBossGohmaModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetBossGohmaModeNormalData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModeTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP3, sSetNormal0ModeTalkData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT1, sSetBossGohmaModeBattleData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeFirstPersonData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SPEC5, sSetNormal0ModeHookshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBoomerangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeSlingshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetNormal0ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal0ModeHangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal0ModeHangZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetNormal0ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT4, sSetDungeon0ModeChargeData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetNormal0ModeStillData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModePushPullData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowBoomerangData), }; -CameraMode sCamSetBossDodoModes[] = { - { CAM_FUNC_NORM1, 10, D_8011ADB4 }, // CAM_MODE_NORMAL - { CAM_FUNC_PARA1, 11, D_8011A3C8 }, // CAM_MODE_TARGET - { CAM_FUNC_KEEP1, 13, D_8011A3F4 }, // CAM_MODE_FOLLOWTARGET - { CAM_FUNC_KEEP3, 12, D_8011A428 }, // CAM_MODE_TALK - { CAM_FUNC_BATT1, 12, D_8011ADDC }, // CAM_MODE_BATTLE - { CAM_FUNC_JUMP2, 9, D_8011A488 }, // CAM_MODE_CLIMB - { CAM_FUNC_SUBJ3, 9, D_8011A4AC }, // CAM_MODE_FIRSTPERSON - { CAM_FUNC_SUBJ3, 9, D_8011A4D0 }, // CAM_MODE_BOWARROW - { CAM_FUNC_SUBJ3, 9, D_8011A4F4 }, // CAM_MODE_BOWARROWZ - { CAM_FUNC_SPEC5, 8, D_8011A518 }, // CAM_MODE_HOOKSHOT, - { CAM_FUNC_SUBJ3, 9, D_8011A538 }, // CAM_MODE_BOOMERANG - { CAM_FUNC_SUBJ3, 9, D_8011A55C }, // CAM_MODE_SLINGSHOT - { CAM_FUNC_JUMP2, 9, D_8011A580 }, // CAM_MODE_CLIMBZ - { CAM_FUNC_JUMP1, 8, D_8011A5A4 }, // CAM_MODE_JUMP - { CAM_FUNC_UNIQ1, 7, D_8011A5C4 }, // CAM_MODE_HANG - { CAM_FUNC_UNIQ1, 7, D_8011A5E0 }, // CAM_MODE_HANGZ - { CAM_FUNC_JUMP1, 8, D_8011A5A4 }, // CAM_MODE_FREEFALL - { CAM_FUNC_BATT4, 7, D_8011A61C }, // CAM_MODE_CHARGE - { CAM_FUNC_NORM1, 10, D_8011A638 }, // CAM_MODE_STILL - { CAM_FUNC_PARA1, 11, D_8011A660 }, // CAM_MODE_PUSHPULL - { CAM_FUNC_KEEP1, 13, D_8011A68C }, // CAM_MODE_FOLLOWBOOMERANG +CameraMode sCamSetBossDodongoModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetBossDodongoModeNormalData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModeTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP3, sSetNormal0ModeTalkData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT1, sSetBossDodongoModeBattleData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeFirstPersonData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SPEC5, sSetNormal0ModeHookshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBoomerangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeSlingshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetNormal0ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal0ModeHangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal0ModeHangZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetNormal0ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT4, sSetNormal0ModeChargeData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetNormal0ModeStillData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModePushPullData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowBoomerangData), }; -CameraMode sCamSetBossBariModes[] = { - { CAM_FUNC_NORM1, 10, D_8011AE0C }, // CAM_MODE_NORMAL - { CAM_FUNC_PARA1, 11, D_8011A3C8 }, // CAM_MODE_TARGET - { CAM_FUNC_KEEP1, 13, D_8011A3F4 }, // CAM_MODE_FOLLOWTARGET - { CAM_FUNC_KEEP3, 12, D_8011A428 }, // CAM_MODE_TALK - { CAM_FUNC_BATT1, 12, D_8011AE34 }, // CAM_MODE_BATTLE - { CAM_FUNC_JUMP2, 9, D_8011A488 }, // CAM_MODE_CLIMB - { CAM_FUNC_SUBJ3, 9, D_8011A4AC }, // CAM_MODE_FIRSTPERSON - { CAM_FUNC_SUBJ3, 9, D_8011A4D0 }, // CAM_MODE_BOWARROW - { CAM_FUNC_SUBJ3, 9, D_8011A4F4 }, // CAM_MODE_BOWARROWZ - { CAM_FUNC_SPEC5, 8, D_8011A518 }, // CAM_MODE_HOOKSHOT, - { CAM_FUNC_SUBJ3, 9, D_8011A538 }, // CAM_MODE_BOOMERANG - { CAM_FUNC_SUBJ3, 9, D_8011A55C }, // CAM_MODE_SLINGSHOT - { CAM_FUNC_JUMP2, 9, D_8011A580 }, // CAM_MODE_CLIMBZ - { CAM_FUNC_JUMP1, 8, D_8011A5A4 }, // CAM_MODE_JUMP - { CAM_FUNC_UNIQ1, 7, D_8011A5C4 }, // CAM_MODE_HANG - { CAM_FUNC_UNIQ1, 7, D_8011A5E0 }, // CAM_MODE_HANGZ - { CAM_FUNC_JUMP1, 8, D_8011A5A4 }, // CAM_MODE_FREEFALL - { CAM_FUNC_BATT4, 7, D_8011A61C }, // CAM_MODE_CHARGE - { CAM_FUNC_NORM1, 10, D_8011A638 }, // CAM_MODE_STILL - { CAM_FUNC_PARA1, 11, D_8011A660 }, // CAM_MODE_PUSHPULL - { CAM_FUNC_KEEP1, 13, D_8011A68C }, // CAM_MODE_FOLLOWBOOMERANG +CameraMode sCamSetBossBarinadeModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetBossBarinadeModeNormalData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModeTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP3, sSetNormal0ModeTalkData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT1, sSetBossBarinadeModeBattleData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeFirstPersonData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SPEC5, sSetNormal0ModeHookshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBoomerangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeSlingshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetNormal0ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal0ModeHangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal0ModeHangZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetNormal0ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT4, sSetNormal0ModeChargeData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetNormal0ModeStillData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModePushPullData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowBoomerangData), }; -CameraMode sCamSetBossFGanonModes[] = { - { CAM_FUNC_NORM1, 10, D_8011AE64 }, // CAM_MODE_NORMAL - { CAM_FUNC_PARA1, 11, D_8011A3C8 }, // CAM_MODE_TARGET - { CAM_FUNC_KEEP1, 13, D_8011A3F4 }, // CAM_MODE_FOLLOWTARGET - { CAM_FUNC_KEEP3, 12, D_8011A428 }, // CAM_MODE_TALK - { CAM_FUNC_BATT1, 12, D_8011AE8C }, // CAM_MODE_BATTLE - { CAM_FUNC_JUMP2, 9, D_8011A488 }, // CAM_MODE_CLIMB - { CAM_FUNC_SUBJ3, 9, D_8011A4AC }, // CAM_MODE_FIRSTPERSON - { CAM_FUNC_SUBJ3, 9, D_8011A4D0 }, // CAM_MODE_BOWARROW - { CAM_FUNC_SUBJ3, 9, D_8011A4F4 }, // CAM_MODE_BOWARROWZ - { CAM_FUNC_SPEC5, 8, D_8011A518 }, // CAM_MODE_HOOKSHOT - { CAM_FUNC_SUBJ3, 9, D_8011A538 }, // CAM_MODE_BOOMERANG - { CAM_FUNC_SUBJ3, 9, D_8011A55C }, // CAM_MODE_SLINGSHOT - { CAM_FUNC_JUMP2, 9, D_8011A580 }, // CAM_MODE_CLIMBZ - { CAM_FUNC_JUMP1, 8, D_8011A5A4 }, // CAM_MODE_JUMP - { CAM_FUNC_UNIQ1, 7, D_8011A5C4 }, // CAM_MODE_HANG - { CAM_FUNC_UNIQ1, 7, D_8011A5E0 }, // CAM_MODE_HANGZ - { CAM_FUNC_JUMP1, 8, D_8011A5A4 }, // CAM_MODE_FREEFALL - { CAM_FUNC_BATT4, 7, D_8011A61C }, // CAM_MODE_CHARGE - { CAM_FUNC_NORM1, 10, D_8011A638 }, // CAM_MODE_STILL - { CAM_FUNC_PARA1, 11, D_8011A660 }, // CAM_MODE_PUSHPULL - { CAM_FUNC_KEEP1, 13, D_8011A68C }, // CAM_MODE_FOLLOWBOOMERANG +CameraMode sCamSetBossPhantomGanonModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetBossPhantomGanonModeNormalData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModeTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP3, sSetNormal0ModeTalkData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT1, sSetBossPhantomGanonModeBattleData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeFirstPersonData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SPEC5, sSetNormal0ModeHookshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBoomerangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeSlingshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetNormal0ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal0ModeHangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal0ModeHangZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetNormal0ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT4, sSetNormal0ModeChargeData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetNormal0ModeStillData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModePushPullData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowBoomerangData), }; -CameraMode sCamSetBossBalModes[] = { - { CAM_FUNC_NORM1, 10, D_8011AEBC }, // CAM_MODE_NORMAL - { CAM_FUNC_PARA1, 11, D_8011A3C8 }, // CAM_MODE_TARGET - { CAM_FUNC_KEEP1, 13, D_8011A3F4 }, // CAM_MODE_FOLLOWTARGET - { CAM_FUNC_KEEP3, 12, D_8011A428 }, // CAM_MODE_TALK - { CAM_FUNC_BATT1, 12, D_8011AEE4 }, // CAM_MODE_BATTLE - { CAM_FUNC_JUMP2, 9, D_8011A488 }, // CAM_MODE_CLIMB - { CAM_FUNC_SUBJ3, 9, D_8011A4AC }, // CAM_MODE_FIRSTPERSON - { CAM_FUNC_SUBJ3, 9, D_8011A4D0 }, // CAM_MODE_BOWARROW - { CAM_FUNC_SUBJ3, 9, D_8011A4F4 }, // CAM_MODE_BOWARROWZ - { CAM_FUNC_SPEC5, 8, D_8011A518 }, // CAM_MODE_HOOKSHOT - { CAM_FUNC_SUBJ3, 9, D_8011A538 }, // CAM_MODE_BOOMERANG - { CAM_FUNC_SUBJ3, 9, D_8011A55C }, // CAM_MODE_SLINGSHOT - { CAM_FUNC_JUMP2, 9, D_8011A580 }, // CAM_MODE_CLIMBZ - { CAM_FUNC_JUMP1, 8, D_8011A5A4 }, // CAM_MODE_JUMP - { CAM_FUNC_UNIQ1, 7, D_8011A5C4 }, // CAM_MODE_HANG - { CAM_FUNC_UNIQ1, 7, D_8011A5E0 }, // CAM_MODE_HANGZ - { CAM_FUNC_JUMP1, 8, D_8011A5A4 }, // CAM_MODE_FREEFALL - { CAM_FUNC_BATT4, 7, D_8011A61C }, // CAM_MODE_CHARGE - { CAM_FUNC_NORM1, 10, D_8011A638 }, // CAM_MODE_STILL - { CAM_FUNC_PARA1, 11, D_8011A660 }, // CAM_MODE_PUSHPULL - { CAM_FUNC_KEEP1, 13, D_8011A68C }, // CAM_MODE_FOLLOWBOOMERANG +CameraMode sCamSetBossVolvagiaModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetBossVolvagiaModeNormalData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModeTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP3, sSetNormal0ModeTalkData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT1, sSetBossVolvagiaModeBattleData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeFirstPersonData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SPEC5, sSetNormal0ModeHookshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBoomerangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeSlingshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetNormal0ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal0ModeHangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal0ModeHangZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetNormal0ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT4, sSetNormal0ModeChargeData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetNormal0ModeStillData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModePushPullData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowBoomerangData), }; -CameraMode sCamSetBossShadesModes[] = { - { CAM_FUNC_NORM1, 10, D_8011AF14 }, // CAM_MODE_NORMAL - { CAM_FUNC_PARA1, 11, D_8011A3C8 }, // CAM_MODE_TARGET - { CAM_FUNC_KEEP1, 13, D_8011A3F4 }, // CAM_MODE_FOLLOWTARGET - { CAM_FUNC_KEEP3, 12, D_8011A428 }, // CAM_MODE_TALK - { CAM_FUNC_BATT1, 12, D_8011AF3C }, // CAM_MODE_BATTLE - { CAM_FUNC_JUMP2, 9, D_8011A488 }, // CAM_MODE_CLIMB - { CAM_FUNC_SUBJ3, 9, D_8011A4AC }, // CAM_MODE_FIRSTPERSON - { CAM_FUNC_SUBJ3, 9, D_8011A4D0 }, // CAM_MODE_BOWARROW - { CAM_FUNC_SUBJ3, 9, D_8011A4F4 }, // CAM_MODE_BOWARROWZ - { CAM_FUNC_SPEC5, 8, D_8011A518 }, // CAM_MODE_HOOKSHOT, - { CAM_FUNC_SUBJ3, 9, D_8011A538 }, // CAM_MODE_BOOMERANG - { CAM_FUNC_SUBJ3, 9, D_8011A55C }, // CAM_MODE_SLINGSHOT - { CAM_FUNC_JUMP2, 9, D_8011A580 }, // CAM_MODE_CLIMBZ - { CAM_FUNC_NORM1, 10, D_8011AF6C }, // CAM_MODE_JUMP - { CAM_FUNC_UNIQ1, 7, D_8011A5C4 }, // CAM_MODE_HANG - { CAM_FUNC_UNIQ1, 7, D_8011A5E0 }, // CAM_MODE_HANGZ - { CAM_FUNC_NORM1, 10, D_8011AF6C }, // CAM_MODE_FREEFALL - { CAM_FUNC_BATT4, 7, D_8011A61C }, // CAM_MODE_CHARGE - { CAM_FUNC_NORM1, 10, D_8011A638 }, // CAM_MODE_STILL - { CAM_FUNC_PARA1, 11, D_8011A660 }, // CAM_MODE_PUSHPULL - { CAM_FUNC_KEEP1, 13, D_8011A68C }, // CAM_MODE_FOLLOWBOOMERANG +CameraMode sCamSetBossBongoModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetBossBongoModeNormalData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModeTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP3, sSetNormal0ModeTalkData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT1, sSetBossBongoModeBattleData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeFirstPersonData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SPEC5, sSetNormal0ModeHookshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBoomerangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeSlingshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetBossBongoModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal0ModeHangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal0ModeHangZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetBossBongoModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT4, sSetNormal0ModeChargeData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetNormal0ModeStillData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModePushPullData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowBoomerangData), }; -CameraMode sCamSetBossMofaModes[] = { - { CAM_FUNC_NORM1, 10, D_8011AF94 }, // CAM_MODE_NORMAL - { CAM_FUNC_PARA1, 11, D_8011A3C8 }, // CAM_MODE_TARGET - { CAM_FUNC_KEEP1, 13, D_8011A3F4 }, // CAM_MODE_FOLLOWTARGET - { CAM_FUNC_KEEP3, 12, D_8011A428 }, // CAM_MODE_TALK - { CAM_FUNC_BATT1, 12, D_8011AFBC }, // CAM_MODE_BATTLE - { CAM_FUNC_JUMP2, 9, D_8011A488 }, // CAM_MODE_CLIMB - { CAM_FUNC_SUBJ3, 9, D_8011A4AC }, // CAM_MODE_FIRSTPERSON - { CAM_FUNC_SUBJ3, 9, D_8011A4D0 }, // CAM_MODE_BOWARROW - { CAM_FUNC_SUBJ3, 9, D_8011A4F4 }, // CAM_MODE_BOWARROWZ - { CAM_FUNC_SPEC5, 8, D_8011A518 }, // CAM_MODE_HOOKSHOT - { CAM_FUNC_SUBJ3, 9, D_8011A538 }, // CAM_MODE_BOOMERANG - { CAM_FUNC_SUBJ3, 9, D_8011A55C }, // CAM_MODE_SLINGSHOT - { CAM_FUNC_JUMP2, 9, D_8011A580 }, // CAM_MODE_CLIMBZ - { CAM_FUNC_JUMP1, 8, D_8011A5A4 }, // CAM_MODE_JUMP - { CAM_FUNC_UNIQ1, 7, D_8011A5C4 }, // CAM_MODE_HANG - { CAM_FUNC_UNIQ1, 7, D_8011A5E0 }, // CAM_MODE_HANGZ - { CAM_FUNC_JUMP1, 8, D_8011A5A4 }, // CAM_MODE_FREEFAL - { CAM_FUNC_BATT4, 7, D_8011A61C }, // CAM_MODE_CHARGE - { CAM_FUNC_NORM1, 10, D_8011A638 }, // CAM_MODE_STILL - { CAM_FUNC_PARA1, 11, D_8011A660 }, // CAM_MODE_PUSHPULL - { CAM_FUNC_KEEP1, 13, D_8011A68C }, // CAM_MODE_FOLLOWBOOMERANG +CameraMode sCamSetBossMorphaModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetBossMorphaModeNormalData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModeTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP3, sSetNormal0ModeTalkData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT1, sSetBossMorphaModeBattleData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeFirstPersonData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SPEC5, sSetNormal0ModeHookshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBoomerangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeSlingshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetNormal0ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal0ModeHangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal0ModeHangZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetNormal0ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT4, sSetNormal0ModeChargeData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetNormal0ModeStillData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModePushPullData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowBoomerangData), }; -CameraMode sCamSetBossTwin0Modes[] = { - { CAM_FUNC_NORM1, 10, D_8011AFEC }, // CAM_MODE_NORMAL - { CAM_FUNC_PARA1, 11, D_8011A3C8 }, // CAM_MODE_TARGET - { CAM_FUNC_KEEP1, 13, D_8011A3F4 }, // CAM_MODE_FOLLOWTARGET - { CAM_FUNC_KEEP3, 12, D_8011A428 }, // CAM_MODE_TALK - { CAM_FUNC_BATT1, 12, D_8011B014 }, // CAM_MODE_BATTLE - { CAM_FUNC_JUMP2, 9, D_8011A488 }, // CAM_MODE_CLIMB - { CAM_FUNC_SUBJ3, 9, D_8011A4AC }, // CAM_MODE_FIRSTPERSON - { CAM_FUNC_SUBJ3, 9, D_8011A4D0 }, // CAM_MODE_BOWARROW - { CAM_FUNC_SUBJ3, 9, D_8011A4F4 }, // CAM_MODE_BOWARROWZ - { CAM_FUNC_SPEC5, 8, D_8011A518 }, // CAM_MODE_HOOKSHOT, - { CAM_FUNC_SUBJ3, 9, D_8011A538 }, // CAM_MODE_BOOMERANG - { CAM_FUNC_SUBJ3, 9, D_8011A55C }, // CAM_MODE_SLINGSHOT - { CAM_FUNC_JUMP2, 9, D_8011A580 }, // CAM_MODE_CLIMBZ - { CAM_FUNC_JUMP1, 8, D_8011A5A4 }, // CAM_MODE_JUMP - { CAM_FUNC_UNIQ1, 7, D_8011A5C4 }, // CAM_MODE_HANG - { CAM_FUNC_UNIQ1, 7, D_8011A5E0 }, // CAM_MODE_HANGZ - { CAM_FUNC_JUMP1, 8, D_8011A5A4 }, // CAM_MODE_FREEFAL - { CAM_FUNC_BATT4, 7, D_8011A61C }, // CAM_MODE_CHARGE - { CAM_FUNC_NORM1, 10, D_8011A638 }, // CAM_MODE_STILL - { CAM_FUNC_PARA1, 11, D_8011A660 }, // CAM_MODE_PUSHPULL - { CAM_FUNC_KEEP1, 13, D_8011A68C }, // CAM_MODE_FOLLOWBOOMERANG +CameraMode sCamSetBossTwinrovaPlatformModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetBossTwinrovaPlatformModeNormalData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModeTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP3, sSetNormal0ModeTalkData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT1, sSetBossTwinrovaModeBattleData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeFirstPersonData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SPEC5, sSetNormal0ModeHookshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBoomerangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeSlingshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetNormal0ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal0ModeHangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal0ModeHangZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetNormal0ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT4, sSetNormal0ModeChargeData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetNormal0ModeStillData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModePushPullData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowBoomerangData), }; -CameraMode sCamSetBossTwin1Modes[] = { - { CAM_FUNC_NORM1, 10, D_8011B044 }, // CAM_MODE_NORMAL - { CAM_FUNC_PARA1, 11, D_8011A3C8 }, // CAM_MODE_TARGET - { CAM_FUNC_KEEP1, 13, D_8011A3F4 }, // CAM_MODE_FOLLOWTARGET - { CAM_FUNC_KEEP3, 12, D_8011A428 }, // CAM_MODE_TALK - { CAM_FUNC_BATT1, 12, D_8011B014 }, // CAM_MODE_BATTLE - { CAM_FUNC_JUMP2, 9, D_8011A488 }, // CAM_MODE_CLIMB - { CAM_FUNC_SUBJ3, 9, D_8011A4AC }, // CAM_MODE_FIRSTPERSON - { CAM_FUNC_SUBJ3, 9, D_8011A4D0 }, // CAM_MODE_BOWARROW - { CAM_FUNC_SUBJ3, 9, D_8011A4F4 }, // CAM_MODE_BOWARROWZ - { CAM_FUNC_SPEC5, 8, D_8011A518 }, // CAM_MODE_HOOKSHOT, - { CAM_FUNC_SUBJ3, 9, D_8011A538 }, // CAM_MODE_BOOMERANG - { CAM_FUNC_SUBJ3, 9, D_8011A55C }, // CAM_MODE_SLINGSHOT - { CAM_FUNC_JUMP2, 9, D_8011A580 }, // CAM_MODE_CLIMBZ - { CAM_FUNC_JUMP1, 8, D_8011A5A4 }, // CAM_MODE_JUMP - { CAM_FUNC_UNIQ1, 7, D_8011A5C4 }, // CAM_MODE_HANG - { CAM_FUNC_UNIQ1, 7, D_8011A5E0 }, // CAM_MODE_HANGZ - { CAM_FUNC_JUMP1, 8, D_8011A5A4 }, // CAM_MODE_FREEFAL - { CAM_FUNC_BATT4, 7, D_8011A61C }, // CAM_MODE_CHARGE - { CAM_FUNC_NORM1, 10, D_8011A638 }, // CAM_MODE_STILL - { CAM_FUNC_PARA1, 11, D_8011A660 }, // CAM_MODE_PUSHPULL - { CAM_FUNC_KEEP1, 13, D_8011A68C }, // CAM_MODE_FOLLOWBOOMERANG +CameraMode sCamSetBossTwinrovaFloorModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetBossTwinrovaFloorModeNormalData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModeTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP3, sSetNormal0ModeTalkData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT1, sSetBossTwinrovaModeBattleData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeFirstPersonData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SPEC5, sSetNormal0ModeHookshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBoomerangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeSlingshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetNormal0ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal0ModeHangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal0ModeHangZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetNormal0ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT4, sSetNormal0ModeChargeData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetNormal0ModeStillData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModePushPullData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowBoomerangData), }; -CameraMode sCamSetBossGanon1Modes[] = { - { CAM_FUNC_NORM1, 10, D_8011B06C }, // CAM_MODE_NORMAL - { CAM_FUNC_PARA1, 11, D_8011A3C8 }, // CAM_MODE_TARGET - { CAM_FUNC_KEEP1, 13, D_8011A3F4 }, // CAM_MODE_FOLLOWTARGET - { CAM_FUNC_KEEP3, 12, D_8011A428 }, // CAM_MODE_TALK - { CAM_FUNC_BATT1, 12, D_8011AE8C }, // CAM_MODE_BATTLE - { CAM_FUNC_JUMP2, 9, D_8011A488 }, // CAM_MODE_CLIMB - { CAM_FUNC_SUBJ3, 9, D_8011A4AC }, // CAM_MODE_FIRSTPERSON - { CAM_FUNC_SUBJ3, 9, D_8011A4D0 }, // CAM_MODE_BOWARROW - { CAM_FUNC_SUBJ3, 9, D_8011A4F4 }, // CAM_MODE_BOWARROWZ - { CAM_FUNC_SPEC5, 8, D_8011A518 }, // CAM_MODE_HOOKSHOT, - { CAM_FUNC_SUBJ3, 9, D_8011A538 }, // CAM_MODE_BOOMERANG - { CAM_FUNC_SUBJ3, 9, D_8011A55C }, // CAM_MODE_SLINGSHOT - { CAM_FUNC_JUMP2, 9, D_8011A580 }, // CAM_MODE_CLIMBZ - { CAM_FUNC_JUMP1, 8, D_8011A5A4 }, // CAM_MODE_JUMP - { CAM_FUNC_UNIQ1, 7, D_8011A5C4 }, // CAM_MODE_HANG - { CAM_FUNC_UNIQ1, 7, D_8011A5E0 }, // CAM_MODE_HANGZ - { CAM_FUNC_JUMP1, 8, D_8011A5A4 }, // CAM_MODE_FREEFAL - { CAM_FUNC_BATT4, 7, D_8011B094 }, // CAM_MODE_CHARGE - { CAM_FUNC_NORM1, 10, D_8011A638 }, // CAM_MODE_STILL - { CAM_FUNC_PARA1, 11, D_8011A660 }, // CAM_MODE_PUSHPULL - { CAM_FUNC_KEEP1, 13, D_8011A68C }, // CAM_MODE_FOLLOWBOOMERANG +CameraMode sCamSetBossGanondorfModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetBossGanondorfModeNormalData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModeTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP3, sSetNormal0ModeTalkData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT1, sSetBossPhantomGanonModeBattleData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeFirstPersonData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SPEC5, sSetNormal0ModeHookshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBoomerangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeSlingshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetNormal0ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal0ModeHangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal0ModeHangZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetNormal0ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT4, sSetBossGanondorfModeChargeData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetNormal0ModeStillData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModePushPullData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowBoomerangData), }; -CameraMode sCamSetBossGanon2Modes[] = { - { CAM_FUNC_NORM1, 10, D_8011B0B0 }, // CAM_MODE_NORMAL - { CAM_FUNC_PARA1, 11, D_8011A3C8 }, // CAM_MODE_TARGET - { CAM_FUNC_KEEP1, 13, D_8011A3F4 }, // CAM_MODE_FOLLOWTARGET - { CAM_FUNC_KEEP3, 12, D_8011A428 }, // CAM_MODE_TALK - { CAM_FUNC_BATT1, 12, D_8011B0D8 }, // CAM_MODE_BATTLE - { CAM_FUNC_JUMP2, 9, D_8011A488 }, // CAM_MODE_CLIMB - { CAM_FUNC_SUBJ3, 9, D_8011A4AC }, // CAM_MODE_FIRSTPERSON - { CAM_FUNC_SUBJ3, 9, D_8011A4D0 }, // CAM_MODE_BOWARROW - { CAM_FUNC_SUBJ3, 9, D_8011A4F4 }, // CAM_MODE_BOWARROWZ - { CAM_FUNC_SPEC5, 8, D_8011A518 }, // CAM_MODE_HOOKSHOT, - { CAM_FUNC_SUBJ3, 9, D_8011A538 }, // CAM_MODE_BOOMERANG - { CAM_FUNC_SUBJ3, 9, D_8011A55C }, // CAM_MODE_SLINGSHOT - { CAM_FUNC_JUMP2, 9, D_8011A580 }, // CAM_MODE_CLIMBZ - { CAM_FUNC_JUMP1, 8, D_8011A5A4 }, // CAM_MODE_JUMP - { CAM_FUNC_UNIQ1, 7, D_8011A5C4 }, // CAM_MODE_HANG - { CAM_FUNC_UNIQ1, 7, D_8011A5E0 }, // CAM_MODE_HANGZ - { CAM_FUNC_JUMP1, 8, D_8011A5A4 }, // CAM_MODE_FREEFAL - { CAM_FUNC_BATT4, 7, D_8011A61C }, // CAM_MODE_CHARGE - { CAM_FUNC_NORM1, 10, D_8011A638 }, // CAM_MODE_STILL - { CAM_FUNC_PARA1, 11, D_8011A660 }, // CAM_MODE_PUSHPULL - { CAM_FUNC_KEEP1, 13, D_8011A68C }, // CAM_MODE_FOLLOWBOOMERANG +CameraMode sCamSetBossGanonModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetBossGanonModeNormalData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModeTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP3, sSetNormal0ModeTalkData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT1, sSetBossGanonModeBattleData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeFirstPersonData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SPEC5, sSetNormal0ModeHookshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBoomerangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeSlingshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetNormal0ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal0ModeHangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal0ModeHangZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetNormal0ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT4, sSetNormal0ModeChargeData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetNormal0ModeStillData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModePushPullData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowBoomerangData), }; -CameraMode sCamSetTower0Modes[] = { - { CAM_FUNC_NORM2, 9, D_8011B108 }, // CAM_MODE_NORMAL - { CAM_FUNC_PARA1, 11, D_8011A3C8 }, // CAM_MODE_TARGET - { CAM_FUNC_KEEP1, 13, D_8011A3F4 }, // CAM_MODE_FOLLOWTARGET - { CAM_FUNC_KEEP3, 12, D_8011A428 }, // CAM_MODE_TALK - { CAM_FUNC_BATT1, 12, D_8011A458 }, // CAM_MODE_BATTLE - { CAM_FUNC_JUMP2, 9, D_8011A488 }, // CAM_MODE_CLIMB - { CAM_FUNC_SUBJ3, 9, D_8011A4AC }, // CAM_MODE_FIRSTPERSON - { CAM_FUNC_SUBJ3, 9, D_8011A4D0 }, // CAM_MODE_BOWARROW - { CAM_FUNC_SUBJ3, 9, D_8011A4F4 }, // CAM_MODE_BOWARROWZ - { CAM_FUNC_SPEC5, 8, D_8011A518 }, // CAM_MODE_HOOKSHOT - { CAM_FUNC_SUBJ3, 9, D_8011A538 }, // CAM_MODE_BOOMERANG - { CAM_FUNC_SUBJ3, 9, D_8011A55C }, // CAM_MODE_SLINGSHOT - { CAM_FUNC_JUMP2, 9, D_8011A580 }, // CAM_MODE_CLIMBZ - { CAM_FUNC_NORM2, 9, D_8011B12C }, // CAM_MODE_JUMP - { CAM_FUNC_UNIQ1, 7, D_8011A5C4 }, // CAM_MODE_HANG - { CAM_FUNC_UNIQ1, 7, D_8011A5E0 }, // CAM_MODE_HANGZ - { CAM_FUNC_JUMP1, 8, D_8011A5A4 }, // CAM_MODE_FREEFALL - { CAM_FUNC_BATT4, 7, D_8011A61C }, // CAM_MODE_CHARGE - { CAM_FUNC_NORM1, 10, D_8011A638 }, // CAM_MODE_STILL - { CAM_FUNC_PARA1, 11, D_8011A660 }, // CAM_MODE_PUSHPULL - { CAM_FUNC_KEEP1, 13, D_8011A68C }, // CAM_MODE_FOLLOWBOOMERANG +CameraMode sCamSetTowerClimbModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM2, sSetTowerClimbModeNormalData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModeTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP3, sSetNormal0ModeTalkData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT1, sSetNormal0ModeBattleData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeFirstPersonData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SPEC5, sSetNormal0ModeHookshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBoomerangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeSlingshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM2, sSetTowerClimbModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal0ModeHangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal0ModeHangZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetNormal0ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT4, sSetNormal0ModeChargeData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetNormal0ModeStillData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModePushPullData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowBoomerangData), }; -CameraMode sCamSetTower1Modes[] = { - { CAM_FUNC_NORM2, 9, D_8011B150 }, // CAM_MODE_NORMAL - { CAM_FUNC_PARA1, 11, D_8011A3C8 }, // CAM_MODE_TARGET - { CAM_FUNC_KEEP1, 13, D_8011A3F4 }, // CAM_MODE_FOLLOWTARGET - { CAM_FUNC_KEEP3, 12, D_8011A428 }, // CAM_MODE_TALK - { CAM_FUNC_BATT1, 12, D_8011A458 }, // CAM_MODE_BATTLE - { CAM_FUNC_JUMP2, 9, D_8011A488 }, // CAM_MODE_CLIMB - { CAM_FUNC_SUBJ3, 9, D_8011A4AC }, // CAM_MODE_FIRSTPERSON - { CAM_FUNC_SUBJ3, 9, D_8011A4D0 }, // CAM_MODE_BOWARROW - { CAM_FUNC_SUBJ3, 9, D_8011A4F4 }, // CAM_MODE_BOWARROWZ - { CAM_FUNC_SPEC5, 8, D_8011A518 }, // CAM_MODE_HOOKSHOT - { CAM_FUNC_SUBJ3, 9, D_8011A538 }, // CAM_MODE_BOOMERANG - { CAM_FUNC_SUBJ3, 9, D_8011A55C }, // CAM_MODE_SLINGSHOT - { CAM_FUNC_JUMP2, 9, D_8011A580 }, // CAM_MODE_CLIMBZ - { CAM_FUNC_NORM2, 9, D_8011B174 }, // CAM_MODE_JUMP - { CAM_FUNC_UNIQ1, 7, D_8011A5C4 }, // CAM_MODE_HANG - { CAM_FUNC_UNIQ1, 7, D_8011A5E0 }, // CAM_MODE_HANGZ - { CAM_FUNC_JUMP1, 8, D_8011A5A4 }, // CAM_MODE_FREEFALL - { CAM_FUNC_BATT4, 7, D_8011A61C }, // CAM_MODE_CHARGE - { CAM_FUNC_NORM1, 10, D_8011A638 }, // CAM_MODE_STILL - { CAM_FUNC_PARA1, 11, D_8011A660 }, // CAM_MODE_PUSHPULL - { CAM_FUNC_KEEP1, 13, D_8011A68C }, // CAM_MODE_FOLLOWBOOMERANG +CameraMode sCamSetTowerUnusedModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM2, sSetTowerUnusedModeNormalData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModeTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP3, sSetNormal0ModeTalkData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT1, sSetNormal0ModeBattleData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeFirstPersonData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SPEC5, sSetNormal0ModeHookshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBoomerangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeSlingshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM2, sSetTowerUnusedModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal0ModeHangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal0ModeHangZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetNormal0ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT4, sSetNormal0ModeChargeData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetNormal0ModeStillData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModePushPullData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowBoomerangData), }; -CameraMode sCamSetFixed0Modes[] = { - { CAM_FUNC_FIXD1, 4, sSetFixd0ModeNormVals }, // CAM_MODE_NORMAL - { CAM_FUNC_NONE, 0, NULL }, // CAM_MODE_TARGET - { CAM_FUNC_FIXD1, 4, D_8011B1A8 }, // CAM_MODE_FOLLOWTARGET - { CAM_FUNC_FIXD1, 4, D_8011B1B8 }, // CAM_MODE_TALK +CameraMode sCamSetMarketBalconyModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_FIXD1, sSetMarketBalconyModeNormalData), + { CAM_FUNC_NONE, 0, NULL }, + CAM_SETTING_MODE_ENTRY(CAM_FUNC_FIXD1, sSetMarketBalconyModeFollowTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_FIXD1, sSetMarketBalconyModeTalkData), }; -CameraMode sCamSetFixed1Modes[] = { - { CAM_FUNC_FIXD1, 4, D_8011B1C8 }, // CAM_MODE_NORMAL +CameraMode sCamSetChuBowlingModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_FIXD1, sSetChuBowlingModeNormalData), }; -CameraMode sCamSetCirc0Modes[] = { - { CAM_FUNC_FIXD2, 5, sSetCirc0ModeNormVals }, // CAM_MODE_NORMAL +CameraMode sCamSetPivotCrawlspaceModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_FIXD2, sSetPivotCrawlspaceModeNormalData), }; -CameraMode sCamSetCirc2Modes[] = { - { CAM_FUNC_DATA4, 3, sSetCirc2ModeNormVals }, // CAM_MODE_NORMAL +CameraMode sCamSetPivotShopBrowsingModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_DATA4, sSetPivotShopBrowsingModeNormalData), }; -CameraMode sCamSetCirc3Modes[] = { - { CAM_FUNC_FIXD4, 5, D_8011B1F8 }, // CAM_MODE_NORMAL - { CAM_FUNC_PARA1, 11, D_8011A3C8 }, // CAM_MODE_TARGET - { CAM_FUNC_KEEP1, 13, D_8011A3F4 }, // CAM_MODE_FOLLOWTARGET - { CAM_FUNC_KEEP3, 12, D_8011A428 }, // CAM_MODE_TALK - { CAM_FUNC_BATT1, 12, D_8011A748 }, // CAM_MODE_BATTLE - { CAM_FUNC_JUMP2, 9, D_8011A488 }, // CAM_MODE_CLIMB - { CAM_FUNC_SUBJ3, 9, D_8011A4AC }, // CAM_MODE_FIRSTPERSON - { CAM_FUNC_SUBJ3, 9, D_8011A4D0 }, // CAM_MODE_BOWARROW - { CAM_FUNC_SUBJ3, 9, D_8011A4F4 }, // CAM_MODE_BOWARROWZ - { CAM_FUNC_SPEC5, 8, D_8011A518 }, // CAM_MODE_BOWARROWZ - { CAM_FUNC_SUBJ3, 9, D_8011A538 }, // CAM_MODE_BOOMERANG - { CAM_FUNC_SUBJ3, 9, D_8011A55C }, // CAM_MODE_SLINGSHOT - { CAM_FUNC_JUMP2, 9, D_8011A580 }, // CAM_MODE_CLIMBZ - { CAM_FUNC_NONE, 0, NULL }, // CAM_MODE_JUMP - { CAM_FUNC_NONE, 0, NULL }, // CAM_MODE_HANG - { CAM_FUNC_NONE, 0, NULL }, // CAM_MODE_HANGZ - { CAM_FUNC_NONE, 0, NULL }, // CAM_MODE_FREEFALL - { CAM_FUNC_BATT4, 7, D_8011A61C }, // CAM_MODE_CHARGE - { CAM_FUNC_NORM1, 10, D_8011A638 }, // CAM_MODE_STILL - { CAM_FUNC_PARA1, 11, D_8011A660 }, // CAM_MODE_PUSHPULL - { CAM_FUNC_KEEP1, 13, D_8011A68C }, // CAM_MODE_FOLLOWBOOMERANG +CameraMode sCamSetPivotInFrontModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_FIXD4, sSetPivotInFrontAndFromSideModeNormalData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModeTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP3, sSetNormal0ModeTalkData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT1, sSetNormal1ModeBattleData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeFirstPersonData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SPEC5, sSetNormal0ModeHookshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBoomerangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeSlingshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbZData), + { CAM_FUNC_NONE, 0, NULL }, + { CAM_FUNC_NONE, 0, NULL }, + { CAM_FUNC_NONE, 0, NULL }, + { CAM_FUNC_NONE, 0, NULL }, + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT4, sSetNormal0ModeChargeData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetNormal0ModeStillData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModePushPullData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowBoomerangData), }; -CameraMode sCamSetPreRend0Modes[] = { - { CAM_FUNC_FIXD3, 1, D_8011B20C }, // CAM_MODE_NORMAL - { CAM_FUNC_NONE, 0, NULL }, // CAM_MODE_TARGET - { CAM_FUNC_FIXD3, 1, sSetPR0ModeKeepTalkVals }, // CAM_MODE_FOLLOWTARGET - { CAM_FUNC_FIXD3, 1, sSetPR0ModeKeepTalkVals }, // CAM_MODE_TALK +CameraMode sCamSetPreRendFixedModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_FIXD3, sDataOnlyNullFlags), + { CAM_FUNC_NONE, 0, NULL }, + CAM_SETTING_MODE_ENTRY(CAM_FUNC_FIXD3, sSetPrerendFixedModeFollowTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_FIXD3, sSetPrerendFixedModeFollowTargetData), }; -CameraMode sCamSetPreRend1Modes[] = { - { CAM_FUNC_UNIQ7, 2, sSetPR1ModeNormVals }, // CAM_MODE_NORMAL - { CAM_FUNC_NONE, 0, NULL }, // CAM_MODE_TARGET - { CAM_FUNC_UNIQ7, 2, sSetPR1ModeKeepVals }, // CAM_MODE_FOLLOWTARGET - { CAM_FUNC_KEEP0, 4, sSetPreRend1ModeTalkVals }, // CAM_MODE_TALK +CameraMode sCamSetPreRendPivotModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ7, sSetPrerendPivotModeNormalData), + { CAM_FUNC_NONE, 0, NULL }, + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ7, sSetPrerendPivotModeFollowTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP0, sSetPrerendPivotModeTalkData), }; -CameraMode sCamSetPreRend3Modes[] = { - { CAM_FUNC_SPEC6, 1, D_8011B20C }, // CAM_MODE_NORMAL +CameraMode sCamSetPreRendSideScrollModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SPEC6, sDataOnlyNullFlags), }; CameraMode sCamSetDoor0Modes[] = { - { CAM_FUNC_UNIQ3, 3, sSetDoor0ModeNormVals }, // CAM_MODE_NORMAL + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ3, sSetDoor0ModeNormalData), }; CameraMode sCamSetDoorCModes[] = { - { CAM_FUNC_SPEC9, 3, sSetDoorCModeNormVals }, // CAM_MODE_NORMAL - { CAM_FUNC_SPEC9, 3, sSetDoorCModeParaVals }, // CAM_MODE_TARGET + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SPEC9, sSetDoorCModeNormalData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SPEC9, sSetDoorCModeTargetData), }; -CameraMode sCamSetRail3Modes[] = { - { CAM_FUNC_SUBJ4, 6, sSetRail3ModeNormVals }, // CAM_MODE_NORMAL +CameraMode sCamSetCrawlspaceModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ4, sSetCrawlspaceModeNormalData), }; CameraMode sCamSetStart0Modes[] = { - { CAM_FUNC_UNIQ0, 1, D_8011B20C }, // CAM_MODE_NORMAL + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ0, sDataOnlyNullFlags), }; CameraMode sCamSetStart1Modes[] = { - { CAM_FUNC_UNIQ0, 1, D_8011B270 }, // CAM_MODE_NORMAL + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ0, sSetStart1ModeNormalData), }; CameraMode sCamSetFree0Modes[] = { - { CAM_FUNC_UNIQ6, 1, sSetFree0ModeNormVals }, // CAM_MODE_NORMAL + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ6, sSetFree0ModeNormalData), }; CameraMode sCamSetFree1Modes[] = { - { CAM_FUNC_UNIQ6, 1, sSetFree1ModeNormVals }, // CAM_MODE_NORMAL + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ6, sSetFree1ModeNormalData), }; -CameraMode sCamSetCirc4Modes[] = { - { CAM_FUNC_FIXD2, 5, sSetCirc4ModeNormVals }, // CAM_MODE_NORMAL +CameraMode sCamSetPivotCornerModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_FIXD2, sSetPivotCornerModeNormalData), }; -CameraMode sCamSetCirc5Modes[] = { - { CAM_FUNC_UNIQ2, 4, D_8011B290 }, // CAM_MODE_NORMAL - { CAM_FUNC_UNIQ2, 4, D_8011B2A0 }, // CAM_MODE_TARGET +CameraMode sCamSetPivotDivingModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ2, sSetPivotWaterSurfaceModeNormalData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ2, sSetPivotWaterSurfaceModeTargetData), }; -CameraMode sCamSetDemo0Modes[] = { - { CAM_FUNC_DEMO1, 1, D_8011B2B0 }, // CAM_MODE_NORMAL +CameraMode sCamSetCs0Modes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_DEMO1, sDataOnlyInterfaceFlags), }; -CameraMode sCamSetDemo1Modes[] = { - { CAM_FUNC_DEMO2, 1, D_8011B2B0 }, // CAM_MODE_NORMAL +CameraMode sCamSetCsTwistedHallwayModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_DEMO2, sDataOnlyInterfaceFlags), }; -CameraMode sCamSetMori1Modes[] = { - { CAM_FUNC_PARA1, 11, sSetMori1ModeNormVals }, // CAM_MODE_NORMAL - { CAM_FUNC_NONE, 0, NULL }, // CAM_MODE_TARGET - { CAM_FUNC_NONE, 0, NULL }, // CAM_MODE_FOLLOWTARGET - { CAM_FUNC_PARA3, 1, D_8011B2E0 }, // CAM_MODE_TALK +CameraMode sCamSetForestBirdsEyeModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetForestBirdsEyeModeNormalData), + { CAM_FUNC_NONE, 0, NULL }, + { CAM_FUNC_NONE, 0, NULL }, + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA3, sSetForestBirdsEyeModeTalkData), }; -CameraMode sCamSetItem0Modes[] = { - { CAM_FUNC_DEMO3, 3, D_8011B2E4 }, // CAM_MODE_NORMAL +CameraMode sCamSetSlowChestCsModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_DEMO3, sSetSlowChestCsModeNormalData), }; -CameraMode sCamSetItem1Modes[] = { - { CAM_FUNC_DEMO4, 3, D_8011B2E4 }, // CAM_MODE_NORMAL +CameraMode sCamSetItemUnusedModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_DEMO4, sSetSlowChestCsModeNormalData), }; -CameraMode sCamSetDemo3Modes[] = { - { CAM_FUNC_DEMO9, 1, sSetDemo3ModeNormVals }, // CAM_MODE_NORMAL +CameraMode sCamSetCs3Modes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_DEMO9, sSetCs3ModeNormalData), }; -CameraMode sCamSetDemo4Modes[] = { - { CAM_FUNC_DEMO5, 1, D_8011B2B0 }, // CAM_MODE_NORMAL +CameraMode sCamSetCsAttentionModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_DEMO5, sDataOnlyInterfaceFlags), }; -CameraMode sCamSetUFOBeanModes[] = { - { CAM_FUNC_NORM1, 10, D_8011B2F4 }, // CAM_MODE_NORMAL - { CAM_FUNC_PARA1, 11, D_8011B31C }, // CAM_MODE_TARGET - { CAM_FUNC_KEEP1, 13, D_8011A3F4 }, // CAM_MODE_FOLLOWTARGET - { CAM_FUNC_KEEP3, 12, D_8011A428 }, // CAM_MODE_TALK - { CAM_FUNC_BATT1, 12, D_8011A748 }, // CAM_MODE_BATTLE - { CAM_FUNC_JUMP2, 9, D_8011A488 }, // CAM_MODE_CLIMB - { CAM_FUNC_SUBJ3, 9, D_8011A4AC }, // CAM_MODE_FIRSTPERSON - { CAM_FUNC_SUBJ3, 9, D_8011A4D0 }, // CAM_MODE_BOWARROW - { CAM_FUNC_SUBJ3, 9, D_8011A4F4 }, // CAM_MODE_BOWARROWZ - { CAM_FUNC_SPEC5, 8, D_8011A518 }, // CAM_MODE_HOOKSHOT - { CAM_FUNC_SUBJ3, 9, D_8011A538 }, // CAM_MODE_BOOMERANG - { CAM_FUNC_SUBJ3, 9, D_8011A55C }, // CAM_MODE_SLINGSHOT - { CAM_FUNC_JUMP2, 9, D_8011A580 }, // CAM_MODE_CLIMBZ - { CAM_FUNC_JUMP1, 8, D_8011B348 }, // CAM_MODE_JUMP - { CAM_FUNC_UNIQ1, 7, D_8011B368 }, // CAM_MODE_HANG - { CAM_FUNC_UNIQ1, 7, D_8011B384 }, // CAM_MODE_HANGZ - { CAM_FUNC_JUMP1, 8, D_8011A5A4 }, // CAM_MODE_FREEFALL - { CAM_FUNC_BATT4, 7, D_8011A61C }, // CAM_MODE_CHARGE - { CAM_FUNC_NORM1, 10, D_8011B3A0 }, // CAM_MODE_STILL - { CAM_FUNC_PARA1, 11, D_8011A660 }, // CAM_MODE_PUSHPULL - { CAM_FUNC_KEEP1, 13, D_8011A68C }, // CAM_MODE_FOLLOWBOOMERANG +CameraMode sCamSetBeanGenericModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetBeanGenericModeNormalData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetBeanGenericModeTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP3, sSetNormal0ModeTalkData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT1, sSetNormal1ModeBattleData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeFirstPersonData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SPEC5, sSetNormal0ModeHookshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBoomerangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeSlingshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetBeanGenericModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetBeanGenericModeHangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetBeanGenericModeHangZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetNormal0ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT4, sSetNormal0ModeChargeData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetBeanGenericModeStillData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModePushPullData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowBoomerangData), }; -CameraMode sCamSetLiftBeanModes[] = { - { CAM_FUNC_NORM1, 10, D_8011B3C8 }, // CAM_MODE_NORMAL - { CAM_FUNC_PARA1, 11, D_8011B3F0 }, // CAM_MODE_TARGET - { CAM_FUNC_KEEP1, 13, D_8011A3F4 }, // CAM_MODE_FOLLOWTARGET - { CAM_FUNC_KEEP3, 12, D_8011A428 }, // CAM_MODE_TALK - { CAM_FUNC_BATT1, 12, D_8011A748 }, // CAM_MODE_BATTLE - { CAM_FUNC_JUMP2, 9, D_8011A488 }, // CAM_MODE_CLIMB - { CAM_FUNC_SUBJ3, 9, D_8011A4AC }, // CAM_MODE_FIRSTPERSON - { CAM_FUNC_SUBJ3, 9, D_8011A4D0 }, // CAM_MODE_BOWARROW - { CAM_FUNC_SUBJ3, 9, D_8011A4F4 }, // CAM_MODE_BOWARROWZ - { CAM_FUNC_SPEC5, 8, D_8011A518 }, // CAM_MODE_BOWARROWZ - { CAM_FUNC_SUBJ3, 9, D_8011A538 }, // CAM_MODE_BOOMERANG - { CAM_FUNC_SUBJ3, 9, D_8011A55C }, // CAM_MODE_SLINGSHOT - { CAM_FUNC_JUMP2, 9, D_8011A580 }, // CAM_MODE_CLIMBZ - { CAM_FUNC_JUMP1, 8, D_8011B41C }, // CAM_MODE_JUMP - { CAM_FUNC_UNIQ1, 7, D_8011B43C }, // CAM_MODE_HANG - { CAM_FUNC_UNIQ1, 7, D_8011B458 }, // CAM_MODE_HANGZ - { CAM_FUNC_JUMP1, 8, D_8011A5A4 }, // CAM_MODE_FREEFALL - { CAM_FUNC_BATT4, 7, D_8011A61C }, // CAM_MODE_CHARGE - { CAM_FUNC_NORM1, 10, D_8011B474 }, // CAM_MODE_STILL - { CAM_FUNC_PARA1, 11, D_8011A660 }, // CAM_MODE_PUSHPULL - { CAM_FUNC_KEEP1, 13, D_8011A68C }, // CAM_MODE_FOLLOWBOOMERANG +CameraMode sCamSetBeanLostWoodsModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetBeanLostWoodsModeNormalData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetBeanLostWoodsModeTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP3, sSetNormal0ModeTalkData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT1, sSetNormal1ModeBattleData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeFirstPersonData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SPEC5, sSetNormal0ModeHookshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBoomerangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeSlingshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetBeanLostWoodsModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetBeanLostWoodsModeHangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetBeanLostWoodsModeHangZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetNormal0ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT4, sSetNormal0ModeChargeData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetBeanLostWoodsModeStillData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModePushPullData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowBoomerangData), }; -CameraMode sCamSetScene0Modes[] = { - { CAM_FUNC_SPEC9, 3, sSetScn0ModeNormVals }, // CAM_MODE_NORMAL +CameraMode sCamSetSceneUnusedModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SPEC9, sSetSceneUnusedModeNormalData), }; -CameraMode sCamSetScene1Modes[] = { - { CAM_FUNC_UNIQ2, 4, D_8011B4A8 }, // CAM_MODE_NORMAL +CameraMode sCamSetSceneTransitionModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ2, sSetSceneTransitionModeNormalData), }; -CameraMode sCamSetHidan1Modes[] = { - { CAM_FUNC_SPEC7, 1, D_8011B20C }, // CAM_MODE_NORMAL +CameraMode sCamSetFirePlatformModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SPEC7, sDataOnlyNullFlags), }; -CameraMode sCamSetHidan2Modes[] = { - { CAM_FUNC_SPEC4, 1, D_8011B2B0 }, // CAM_MODE_NORMAL +CameraMode sCamSetFireStaircaseModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SPEC4, sDataOnlyInterfaceFlags), }; -CameraMode sCamSetMori2Modes[] = { - { CAM_FUNC_UNIQ5, 1, D_8011B2B0 }, // CAM_MODE_NORMAL +CameraMode sCamSetForestUnusedModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ5, sDataOnlyInterfaceFlags), }; -CameraMode sCamSetMori3Modes[] = { - { CAM_FUNC_DEMO6, 1, D_8011B2B0 }, // CAM_MODE_NORMAL +CameraMode sCamSetForestDefeatPoeModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_DEMO6, sDataOnlyInterfaceFlags), }; -CameraMode sCamSetTakoModes[] = { - { CAM_FUNC_NORM1, 10, D_8011B4B8 }, // CAM_MODE_NORMAL - { CAM_FUNC_PARA1, 11, D_8011A8C4 }, // CAM_MODE_TARGET - { CAM_FUNC_KEEP1, 13, D_8011A8F0 }, // CAM_MODE_FOLLOWTARGET - { CAM_FUNC_KEEP3, 12, D_8011A428 }, // CAM_MODE_TALK - { CAM_FUNC_BATT1, 12, D_8011B4E0 }, // CAM_MODE_BATTLE - { CAM_FUNC_JUMP2, 9, D_8011A994 }, // CAM_MODE_CLIMB - { CAM_FUNC_SUBJ3, 9, D_8011A4AC }, // CAM_MODE_FIRSTPERSON - { CAM_FUNC_SUBJ3, 9, D_8011A4D0 }, // CAM_MODE_BOWARROW - { CAM_FUNC_SUBJ3, 9, D_8011A4F4 }, // CAM_MODE_BOWARROWZ - { CAM_FUNC_SPEC5, 8, D_8011A778 }, // CAM_MODE_HOOKSHOT - { CAM_FUNC_SUBJ3, 9, D_8011A538 }, // CAM_MODE_BOOMERANG - { CAM_FUNC_SUBJ3, 9, D_8011A55C }, // CAM_MODE_SLINGSHOT - { CAM_FUNC_JUMP2, 9, D_8011A9B8 }, // CAM_MODE_CLIMBZ - { CAM_FUNC_JUMP1, 8, D_8011A954 }, // CAM_MODE_JUMP - { CAM_FUNC_UNIQ1, 7, D_8011A9F8 }, // CAM_MODE_HANG - { CAM_FUNC_UNIQ1, 7, D_8011AA14 }, // CAM_MODE_HANGZ - { CAM_FUNC_JUMP1, 8, D_8011A974 }, // CAM_MODE_FREEFALL - { CAM_FUNC_BATT4, 7, D_8011A9DC }, // CAM_MODE_CHARGE - { CAM_FUNC_NORM1, 10, D_8011B510 }, // CAM_MODE_STILL - { CAM_FUNC_PARA1, 11, D_8011A660 }, // CAM_MODE_PUSHPULL - { CAM_FUNC_KEEP1, 13, D_8011A68C }, // CAM_MODE_FOLLOWBOOMERANG +CameraMode sCamSetBigOctoModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetBigOctoModeNormalData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetDungeon0ModeTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetDungeon0ModeFollowTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP3, sSetNormal0ModeTalkData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT1, sSetBigOctoModeBattleData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetDungeon0ModeClimbData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeFirstPersonData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SPEC5, sSetNormal1ModeHookshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBoomerangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeSlingshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetDungeon0ModeClimbZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetDungeon0ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetDungeon0ModeHangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetDungeon0ModeHangZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetDungeon0ModeFreeFallData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT4, sSetDungeon0ModeChargeData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetBigOctoModeStillData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModePushPullData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowBoomerangData), }; -CameraMode sCamSetSpot05AModes[] = { - { CAM_FUNC_NORM1, 10, D_8011B538 }, // CAM_MODE_NORMAL - { CAM_FUNC_PARA1, 11, D_8011B560 }, // CAM_MODE_TARGET - { 0, 0, NULL }, // CAM_MODE_FOLLOWTARGET - { 0, 0, NULL }, // CAM_MODE_TALK - { CAM_FUNC_PARA1, 11, D_8011B58C }, // CAM_MODE_BATTLE - { CAM_FUNC_NORM1, 10, D_8011B5B8 }, // CAM_MODE_CLIMB +CameraMode sCamSetMeadowBirdsEyeModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetMeadowBirdsEyeModeNormalData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetMeadowBirdsEyeModeTargetData), + { CAM_FUNC_NONE, 0, NULL }, + { CAM_FUNC_NONE, 0, NULL }, + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetMeadowBirdsEyeModeBattleData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetMeadowBirdsEyeModeClimbData), }; -CameraMode sCamSetSpot05BModes[] = { - { CAM_FUNC_NORM1, 10, D_8011B5E0 }, // CAM_MODE_NORMAL - { CAM_FUNC_PARA1, 11, D_8011B608 }, // CAM_MODE_TARGET - { 0, 0, NULL }, // CAM_MODE_FOLLOWTARGET - { 0, 0, NULL }, // CAM_MODE_TALK - { CAM_FUNC_PARA1, 11, D_8011B634 }, // CAM_MODE_BATTLE - { CAM_FUNC_NORM1, 10, D_8011B660 }, // CAM_MODE_CLIMB +CameraMode sCamSetMeadowUnusedModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetMeadowUnusedModeNormalData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetMeadowUnusedModeTargetData), + { CAM_FUNC_NONE, 0, NULL }, + { CAM_FUNC_NONE, 0, NULL }, + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetMeadowUnusedModeBattleData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetMeadowUnusedModeClimbData), }; -CameraMode sCamSetHidan3Modes[] = { - { CAM_FUNC_NORM1, 10, D_8011B688 }, // CAM_MODE_NORMAL - { CAM_FUNC_PARA1, 11, D_8011B6B0 }, // CAM_MODE_TARGET - { 0, 0, NULL }, // CAM_MODE_FOLLOWTARGET - { 0, 0, NULL }, // CAM_MODE_TALK - { CAM_FUNC_PARA1, 11, D_8011B6DC }, // CAM_MODE_BATTLE - { CAM_FUNC_NORM1, 10, D_8011B708 }, // CAM_MODE_CLIMB +CameraMode sCamSetFireBirdsEyeModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetFireBirdsEyeModeNormalData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetFireBirdsEyeModeTargetData), + { CAM_FUNC_NONE, 0, NULL }, + { CAM_FUNC_NONE, 0, NULL }, + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetFireBirdsEyeModeBattleData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetFireBirdsEyeModeClimbData), }; -CameraMode sCamSetItem2Modes[] = { - { CAM_FUNC_KEEP4, 9, D_8011B730 }, // CAM_MODE_NORMAL +CameraMode sCamSetTurnAroundModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP4, sSetTurnAroundModeNormalData), }; -CameraMode sCamSetCirc6Modes[] = { - { CAM_FUNC_SPEC0, 2, sSetCirc6ModeNormVals }, // CAM_MODE_NORMAL +CameraMode sCamSetPivotVerticalModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SPEC0, sSetPivotVerticalModeNormalData), }; CameraMode sCamSetNorm2Modes[] = { - { CAM_FUNC_NORM1, 10, D_8011B75C }, // CAM_MODE_NORMAL - { CAM_FUNC_PARA1, 11, D_8011A3C8 }, // CAM_MODE_TARGET - { CAM_FUNC_KEEP1, 13, D_8011A3F4 }, // CAM_MODE_FOLLOWTARGET - { CAM_FUNC_KEEP3, 12, D_8011A428 }, // CAM_MODE_TALK - { CAM_FUNC_BATT1, 12, D_8011A748 }, // CAM_MODE_BATTLE - { CAM_FUNC_JUMP2, 9, D_8011A488 }, // CAM_MODE_CLIMB - { CAM_FUNC_SUBJ3, 9, D_8011A4AC }, // CAM_MODE_FIRSTPERSON - { CAM_FUNC_SUBJ3, 9, D_8011A4D0 }, // CAM_MODE_BOWARROW - { CAM_FUNC_SUBJ3, 9, D_8011A4F4 }, // CAM_MODE_BOWARROWZ - { CAM_FUNC_SPEC5, 8, D_8011A518 }, // CAM_MODE_HOOKSHOT - { CAM_FUNC_SUBJ3, 9, D_8011A538 }, // CAM_MODE_BOOMERANG - { CAM_FUNC_SUBJ3, 9, D_8011A55C }, // CAM_MODE_SLINGSHOT - { CAM_FUNC_JUMP2, 9, D_8011A580 }, // CAM_MODE_CLIMBZ - { CAM_FUNC_JUMP1, 8, D_8011A5A4 }, // CAM_MODE_JUMP - { CAM_FUNC_UNIQ1, 7, D_8011A5C4 }, // CAM_MODE_HANG - { CAM_FUNC_UNIQ1, 7, D_8011A5E0 }, // CAM_MODE_HANGZ - { CAM_FUNC_JUMP1, 8, D_8011A5A4 }, // CAM_MODE_FREEFALL - { CAM_FUNC_BATT4, 7, D_8011A61C }, // CAM_MODE_CHARGE - { CAM_FUNC_NORM1, 10, D_8011A638 }, // CAM_MODE_STILL - { CAM_FUNC_PARA1, 11, D_8011A660 }, // CAM_MODE_PUSHPULL - { CAM_FUNC_KEEP1, 13, D_8011A68C }, // CAM_MODE_FOLLOWBOOMERANG + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetNormal2and4ModeNormalData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModeTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP3, sSetNormal0ModeTalkData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT1, sSetNormal1ModeBattleData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeFirstPersonData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SPEC5, sSetNormal0ModeHookshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBoomerangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeSlingshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetNormal0ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal0ModeHangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal0ModeHangZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetNormal0ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT4, sSetNormal0ModeChargeData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetNormal0ModeStillData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModePushPullData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowBoomerangData), }; CameraMode sCamSetFishingModes[] = { - { CAM_FUNC_NORM1, 10, D_8011B784 }, // CAM_MODE_NORMAL - { CAM_FUNC_PARA1, 11, D_8011B7AC }, // CAM_MODE_TARGET - { CAM_FUNC_BATT1, 12, D_8011B7D8 }, // CAM_MODE_FOLLOWTARGET - { CAM_FUNC_KEEP3, 12, D_8011B808 }, // CAM_MODE_TALK - { CAM_FUNC_BATT1, 12, D_8011B7D8 }, // CAM_MODE_BATTLE - { CAM_FUNC_NONE, 0, NULL }, // CAM_MODE_CLIMB - { CAM_FUNC_SUBJ3, 9, D_8011B838 }, // CAM_MODE_FIRSTPERSON - { CAM_FUNC_NONE, 0, NULL }, // CAM_MODE_BOWARROW - { CAM_FUNC_NONE, 0, NULL }, // CAM_MODE_BOWARROWZ - { CAM_FUNC_NONE, 0, NULL }, // CAM_MODE_HOOKSHOT - { CAM_FUNC_NONE, 0, NULL }, // CAM_MODE_BOOMERANG - { CAM_FUNC_NONE, 0, NULL }, // CAM_MODE_SLINGSHOT - { CAM_FUNC_NONE, 0, NULL }, // CAM_MODE_CLIMBZ - { CAM_FUNC_JUMP1, 8, D_8011B85C }, // CAM_MODE_JUMP - { CAM_FUNC_UNIQ1, 7, D_8011B89C }, // CAM_MODE_HANG - { CAM_FUNC_UNIQ1, 7, D_8011B8B8 }, // CAM_MODE_HANGZ - { CAM_FUNC_JUMP1, 8, D_8011B87C }, // CAM_MODE_FREEFALL + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetFishingModeNormalData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetFishingModeTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT1, sSetFishingModeFollowTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP3, sSetFishingModeTalkData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT1, sSetFishingModeFollowTargetData), + { CAM_FUNC_NONE, 0, NULL }, + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetFishingModeFirstPersonData), + { CAM_FUNC_NONE, 0, NULL }, + { CAM_FUNC_NONE, 0, NULL }, + { CAM_FUNC_NONE, 0, NULL }, + { CAM_FUNC_NONE, 0, NULL }, + { CAM_FUNC_NONE, 0, NULL }, + { CAM_FUNC_NONE, 0, NULL }, + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetFishingModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetFishingModeHangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetFishingModeHangZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetFishingModeFreeFallData), }; -CameraMode sCamSetDemoCModes[] = { - { CAM_FUNC_UNIQ9, 1, sSetDemoCModeNormVals }, // CAM_MODE_NORMAL +CameraMode sCamSetCsCModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ9, sSetCsCModeNormalData), }; -CameraMode sCamSetUOFiberModes[] = { - { CAM_FUNC_NORM1, 10, D_8011B8D8 }, // CAM_MODE_NORMAL - { CAM_FUNC_PARA1, 11, D_8011A3C8 }, // CAM_MODE_TARGET - { CAM_FUNC_KEEP1, 13, D_8011A3F4 }, // CAM_MODE_FOLLOWTARGET - { CAM_FUNC_KEEP3, 12, D_8011A428 }, // CAM_MODE_TALK - { CAM_FUNC_BATT1, 12, D_8011B900 }, // CAM_MODE_BATTLE - { CAM_FUNC_JUMP2, 9, D_8011A488 }, // CAM_MODE_CLIMB - { CAM_FUNC_SUBJ3, 9, D_8011A4AC }, // CAM_MODE_FIRSTPERSON - { CAM_FUNC_SUBJ3, 9, D_8011A4D0 }, // CAM_MODE_BOWARROW - { CAM_FUNC_SUBJ3, 9, D_8011A4F4 }, // CAM_MODE_BOWARROWZ - { CAM_FUNC_SPEC5, 8, D_8011A518 }, // CAM_MODE_HOOKSHOT - { CAM_FUNC_SUBJ3, 9, D_8011A538 }, // CAM_MODE_BOOMERANG - { CAM_FUNC_SUBJ3, 9, D_8011A55C }, // CAM_MODE_SLINGSHOT - { CAM_FUNC_JUMP2, 9, D_8011A580 }, // CAM_MODE_CLIMBZ - { CAM_FUNC_JUMP1, 8, D_8011A5A4 }, // CAM_MODE_JUMP - { CAM_FUNC_UNIQ1, 7, D_8011A5C4 }, // CAM_MODE_HANG - { CAM_FUNC_UNIQ1, 7, D_8011A5E0 }, // CAM_MODE_HANGZ - { CAM_FUNC_JUMP1, 8, D_8011A5A4 }, // CAM_MODE_FREEFALL - { CAM_FUNC_BATT4, 7, D_8011A61C }, // CAM_MODE_CHARGE - { CAM_FUNC_NORM1, 10, D_8011A638 }, // CAM_MODE_STILL - { CAM_FUNC_PARA1, 11, D_8011A660 }, // CAM_MODE_PUSHPULL - { CAM_FUNC_KEEP1, 13, D_8011A68C }, // CAM_MODE_FOLLOWBOOMERANG +CameraMode sCamSetJabuTentacleModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetJabuTentacleModeNormalData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModeTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP3, sSetNormal0ModeTalkData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT1, sSetJabuTentacleModeBattleData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeFirstPersonData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SPEC5, sSetNormal0ModeHookshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBoomerangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeSlingshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetNormal0ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal0ModeHangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal0ModeHangZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetNormal0ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT4, sSetNormal0ModeChargeData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetNormal0ModeStillData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModePushPullData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowBoomerangData), }; CameraMode sCamSetDungeon2Modes[] = { - { CAM_FUNC_NORM1, 10, D_8011B930 }, // CAM_MODE_NORMAL - { CAM_FUNC_PARA1, 11, D_8011B958 }, // CAM_MODE_TARGET - { CAM_FUNC_KEEP1, 13, D_8011A8F0 }, // CAM_MODE_FOLLOWTARGET - { CAM_FUNC_KEEP3, 12, D_8011A428 }, // CAM_MODE_TALK - { CAM_FUNC_BATT1, 12, sSetDung2ModeBattVals }, // CAM_MODE_BATTLE - { CAM_FUNC_JUMP2, 9, D_8011B9F4 }, // CAM_MODE_CLIMB - { CAM_FUNC_SUBJ3, 9, D_8011A4AC }, // CAM_MODE_FIRSTPERSON - { CAM_FUNC_SUBJ3, 9, D_8011A4D0 }, // CAM_MODE_BOWARROW - { CAM_FUNC_SUBJ3, 9, D_8011A4F4 }, // CAM_MODE_BOWARROWZ - { CAM_FUNC_SPEC5, 8, D_8011A778 }, // CAM_MODE_HOOKSHOT - { CAM_FUNC_SUBJ3, 9, D_8011A538 }, // CAM_MODE_BOOMERANG - { CAM_FUNC_SUBJ3, 9, D_8011A55C }, // CAM_MODE_SLINGSHOT - { CAM_FUNC_JUMP2, 9, D_8011BA18 }, // CAM_MODE_CLIMBZ - { CAM_FUNC_JUMP1, 8, D_8011B9B4 }, // CAM_MODE_JUMP - { CAM_FUNC_UNIQ1, 7, D_8011BA3C }, // CAM_MODE_HANG - { CAM_FUNC_UNIQ1, 7, D_8011BA58 }, // CAM_MODE_HANGZ - { CAM_FUNC_JUMP1, 8, D_8011B9D4 }, // CAM_MODE_FREEFALL - { CAM_FUNC_BATT4, 7, D_8011A61C }, // CAM_MODE_CHARGE - { CAM_FUNC_NORM1, 10, D_8011BA74 }, // CAM_MODE_STILL - { CAM_FUNC_PARA1, 11, D_8011BA9C }, // CAM_MODE_PUSHPULL - { CAM_FUNC_KEEP1, 13, D_8011A68C }, // CAM_MODE_FOLLOWBOOMERANG + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetDungeon2ModeNormalData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetDungeon2ModeTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetDungeon0ModeFollowTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP3, sSetNormal0ModeTalkData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT1, sSetDungeon2ModeBattleData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetDungeon2ModeClimbData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeFirstPersonData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SPEC5, sSetNormal1ModeHookshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBoomerangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeSlingshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetDungeon2ModeClimbZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetDungeon2ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetDungeon2ModeHangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetDungeon2ModeHangZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetDungeon2ModeFreeFallData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT4, sSetNormal0ModeChargeData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetDungeon2ModeStillData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetDungeon2ModePushPullData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowBoomerangData), }; -CameraMode sCamSetTeppenModes[] = { - { CAM_FUNC_NORM1, 10, D_8011BAC8 }, // CAM_MODE_NORMAL - { CAM_FUNC_PARA1, 11, D_8011A3C8 }, // CAM_MODE_TARGET - { CAM_FUNC_KEEP1, 13, D_8011BAF0 }, // CAM_MODE_FOLLOWTARGET - { CAM_FUNC_KEEP3, 12, D_8011BB24 }, // CAM_MODE_TALK - { CAM_FUNC_BATT1, 12, D_8011A458 }, // CAM_MODE_BATTLE - { CAM_FUNC_JUMP2, 9, D_8011A488 }, // CAM_MODE_CLIMB - { CAM_FUNC_SUBJ3, 9, D_8011A4AC }, // CAM_MODE_FIRSTPERSON - { CAM_FUNC_SUBJ3, 9, D_8011A4D0 }, // CAM_MODE_BOWARROW - { CAM_FUNC_SUBJ3, 9, D_8011A4F4 }, // CAM_MODE_BOWARROWZ - { CAM_FUNC_SPEC5, 8, D_8011A518 }, // CAM_MODE_HOOKSHOT - { CAM_FUNC_SUBJ3, 9, D_8011A538 }, // CAM_MODE_BOOMERANG - { CAM_FUNC_SUBJ3, 9, D_8011A55C }, // CAM_MODE_SLINGSHOT - { CAM_FUNC_JUMP2, 9, D_8011A580 }, // CAM_MODE_CLIMBZ - { CAM_FUNC_JUMP1, 8, D_8011A5A4 }, // CAM_MODE_JUMP - { CAM_FUNC_UNIQ1, 7, D_8011A5C4 }, // CAM_MODE_HANG - { CAM_FUNC_UNIQ1, 7, D_8011A5E0 }, // CAM_MODE_HANGZ - { CAM_FUNC_JUMP1, 8, D_8011A5A4 }, // CAM_MODE_FREEFALL - { CAM_FUNC_BATT4, 7, D_8011A61C }, // CAM_MODE_CHARGE - { CAM_FUNC_NORM1, 10, D_8011A638 }, // CAM_MODE_STILL - { CAM_FUNC_PARA1, 11, D_8011A660 }, // CAM_MODE_PUSHPULL - { CAM_FUNC_KEEP1, 13, D_8011A68C }, // CAM_MODE_FOLLOWBOOMERANG +CameraMode sCamSetDirectedYawModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetDirectedYawModeNormalData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModeTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetDirectedYawModeFollowTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP3, sSetDirectedYawModeTalkData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT1, sSetNormal0ModeBattleData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeFirstPersonData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SPEC5, sSetNormal0ModeHookshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBoomerangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeSlingshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetNormal0ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal0ModeHangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal0ModeHangZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetNormal0ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT4, sSetNormal0ModeChargeData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetNormal0ModeStillData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModePushPullData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowBoomerangData), }; -CameraMode sCamSetCirc7Modes[] = { - { CAM_FUNC_FIXD4, 5, D_8011B1F8 }, // CAM_MODE_NORMAL - { CAM_FUNC_NONE, 0, NULL }, // CAM_MODE_TARGET - { CAM_FUNC_FIXD4, 5, D_8011B1F8 }, // CAM_MODE_FOLLOWTARGET - { CAM_FUNC_KEEP3, 12, D_8011A428 }, // CAM_MODE_TALK - { CAM_FUNC_NONE, 0, NULL }, // CAM_MODE_BATTLE - { CAM_FUNC_NONE, 0, NULL }, // CAM_MODE_CLIMB - { CAM_FUNC_SUBJ3, 9, D_8011A4AC }, // CAM_MODE_FIRSTPERSON - { CAM_FUNC_SUBJ3, 9, D_8011A4D0 }, // CAM_MODE_BOWARROW - { CAM_FUNC_NONE, 0, NULL }, // CAM_MODE_BOWARROWZ - { CAM_FUNC_SPEC5, 8, D_8011A518 }, // CAM_MODE_BOOMERANG - { CAM_FUNC_SUBJ3, 9, D_8011A538 }, // CAM_MODE_BOOMERANG - { CAM_FUNC_SUBJ3, 9, D_8011A55C }, // CAM_MODE_SLINGSHOT +CameraMode sCamSetPivotFromSideModes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_FIXD4, sSetPivotInFrontAndFromSideModeNormalData), + { CAM_FUNC_NONE, 0, NULL }, + CAM_SETTING_MODE_ENTRY(CAM_FUNC_FIXD4, sSetPivotInFrontAndFromSideModeNormalData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP3, sSetNormal0ModeTalkData), + { CAM_FUNC_NONE, 0, NULL }, + { CAM_FUNC_NONE, 0, NULL }, + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeFirstPersonData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowData), + { CAM_FUNC_NONE, 0, NULL }, + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SPEC5, sSetNormal0ModeHookshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBoomerangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeSlingshotData), }; -CameraMode sCamSetNorm4Modes[] = { - { CAM_FUNC_NORM1, 10, D_8011B75C }, // CAM_MODE_NORMAL - { CAM_FUNC_PARA1, 11, D_8011A3C8 }, // CAM_MODE_TARGET - { CAM_FUNC_KEEP1, 13, D_8011A3F4 }, // CAM_MODE_FOLLOWTARGET - { CAM_FUNC_KEEP3, 12, D_8011BB54 }, // CAM_MODE_TALK - { CAM_FUNC_BATT1, 12, D_8011A748 }, // CAM_MODE_BATTLE - { CAM_FUNC_JUMP2, 9, D_8011A488 }, // CAM_MODE_CLIMB - { CAM_FUNC_SUBJ3, 9, D_8011A4AC }, // CAM_MODE_FIRSTPERSON - { CAM_FUNC_SUBJ3, 9, D_8011A4D0 }, // CAM_MODE_BOWARROW - { CAM_FUNC_SUBJ3, 9, D_8011A4F4 }, // CAM_MODE_BOWARROWZ - { CAM_FUNC_SPEC5, 8, D_8011A518 }, // CAM_MODE_HOOKSHOT - { CAM_FUNC_SUBJ3, 9, D_8011A538 }, // CAM_MODE_BOOMERANG - { CAM_FUNC_SUBJ3, 9, D_8011A55C }, // CAM_MODE_SLINGSHOT - { CAM_FUNC_JUMP2, 9, D_8011A580 }, // CAM_MODE_CLIMBZ - { CAM_FUNC_JUMP1, 8, D_8011A5A4 }, // CAM_MODE_JUMP - { CAM_FUNC_UNIQ1, 7, D_8011A5C4 }, // CAM_MODE_HANG - { CAM_FUNC_UNIQ1, 7, D_8011A5E0 }, // CAM_MODE_HANGZ - { CAM_FUNC_JUMP1, 8, D_8011A5A4 }, // CAM_MODE_FREEFALL - { CAM_FUNC_BATT4, 7, D_8011A61C }, // CAM_MODE_CHARGE - { CAM_FUNC_NORM1, 10, D_8011A638 }, // CAM_MODE_STILL - { CAM_FUNC_PARA1, 11, D_8011A660 }, // CAM_MODE_PUSHPULL - { CAM_FUNC_KEEP1, 13, D_8011A68C }, // CAM_MODE_FOLLOWBOOMERANG +CameraMode sCamSetNormal4Modes[] = { + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetNormal2and4ModeNormalData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModeTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowTargetData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP3, sNormal4ModeTalkData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT1, sSetNormal1ModeBattleData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeFirstPersonData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBowArrowZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SPEC5, sSetNormal0ModeHookshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeBoomerangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_SUBJ3, sSetNormal0ModeSlingshotData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP2, sSetNormal0ModeClimbZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetNormal0ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal0ModeHangData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_UNIQ1, sSetNormal0ModeHangZData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_JUMP1, sSetNormal0ModeJumpData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_BATT4, sSetNormal0ModeChargeData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_NORM1, sSetNormal0ModeStillData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_PARA1, sSetNormal0ModePushPullData), + CAM_SETTING_MODE_ENTRY(CAM_FUNC_KEEP1, sSetNormal0ModeFollowBoomerangData), }; CameraSetting sCameraSettings[] = { - { { 0x00000000 }, NULL }, // CAM_SET_NONE - { { 0x051FFFFF }, sCamSetNorm0Modes }, // CAM_SET_NORMAL0 - { { 0x051FFFFF }, sCamSetNorm1Modes }, // CAM_SET_NORMAL1 - { { 0x051FFFFF }, sCamSetDungeon0Modes }, // CAM_SET_DUNGEON0 - { { 0x051FFFFF }, sCamSetDungeon1Modes }, // CAM_SET_DUNGEON1 - { { 0x050FF7FF }, sCamSetNorm3Modes }, // CAM_SET_NORMAL3 - { { 0x8500018F }, sCamSetHorse0Modes }, // CAM_SET_HORSE - { { 0x051FFFFF }, sCamSetBossGomaModes }, // CAM_SET_BOSS_GOHMA - { { 0x051FFFFF }, sCamSetBossDodoModes }, // CAM_SET_BOSS_DODONGO - { { 0x051FFFFF }, sCamSetBossBariModes }, // CAM_SET_BOSS_BARINADE - { { 0x051FFFFF }, sCamSetBossFGanonModes }, // CAM_SET_BOSS_PHANTOM_GANON - { { 0x051FFFFF }, sCamSetBossBalModes }, // CAM_SET_BOSS_VOLVAGIA - { { 0x051FFFFF }, sCamSetBossShadesModes }, // CAM_SET_BOSS_BONGO - { { 0x051FFFFF }, sCamSetBossMofaModes }, // CAM_SET_BOSS_MORPHA - { { 0x051FFFFF }, sCamSetBossTwin0Modes }, // CAM_SET_BOSS_TWINROVA_PLATFORM - { { 0x051FFFFF }, sCamSetBossTwin1Modes }, // CAM_SET_BOSS_TWINROVA_FLOOR - { { 0x051FFFFF }, sCamSetBossGanon1Modes }, // CAM_SET_BOSS_GANONDORF - { { 0x051FFFFF }, sCamSetBossGanon2Modes }, // CAM_SET_BOSS_GANON - { { 0x851FFFFF }, sCamSetTower0Modes }, // CAM_SET_TOWER_CLIMB - { { 0x851FFFFF }, sCamSetTower1Modes }, // CAM_SET_TOWER_UNUSED - { { 0x8500000D }, sCamSetFixed0Modes }, // CAM_SET_MARKET_BALCONY - { { 0x85000001 }, sCamSetFixed1Modes }, // CAM_SET_CHU_BOWLING - { { 0x85000001 }, sCamSetCirc0Modes }, // CAM_SET_PIVOT_CRAWLSPACE - { { 0x85000001 }, sCamSetCirc2Modes }, // CAM_SET_PIVOT_SHOP_BROWSING - { { 0x851E1FFF }, sCamSetCirc3Modes }, // CAM_SET_PIVOT_IN_FRONT - { { 0x8C00000D }, sCamSetPreRend0Modes }, // CAM_SET_PREREND_FIXED - { { 0x8C00000D }, sCamSetPreRend1Modes }, // CAM_SET_PREREND_PIVET - { { 0x8C000001 }, sCamSetPreRend3Modes }, // CAM_SET_PREREND_SIDE_SCROLL - { { 0xC5000001 }, sCamSetDoor0Modes }, // CAM_SET_DOOR0 - { { 0xC5000003 }, sCamSetDoorCModes }, // CAM_SET_DOORC - { { 0xC5000001 }, sCamSetRail3Modes }, // CAM_SET_CRAWLSPACE - { { 0xC5000001 }, sCamSetStart0Modes }, // CAM_SET_START0 - { { 0xC5000001 }, sCamSetStart1Modes }, // CAM_SET_START1 - { { 0x05000001 }, sCamSetFree0Modes }, // CAM_SET_FREE0 - { { 0x05000001 }, sCamSetFree1Modes }, // CAM_SET_FREE2 - { { 0x85000001 }, sCamSetCirc4Modes }, // CAM_SET_PIVOT_CORNER - { { 0x05000003 }, sCamSetCirc5Modes }, // CAM_SET_PIVOT_WATER_SURFACE - { { 0xCE000001 }, sCamSetDemo0Modes }, // CAM_SET_CS_0 - { { 0x4E000001 }, sCamSetDemo1Modes }, // CAM_SET_CS_TWISTED_HALLWAY - { { 0x05000009 }, sCamSetMori1Modes }, // CAM_SET_FOREST_BIRDS_EYE - { { 0x45000001 }, sCamSetItem0Modes }, // CAM_SET_SLOW_CHEST_CS - { { 0x45000001 }, sCamSetItem1Modes }, // CAM_SET_ITEM_UNUSED - { { 0x45000001 }, sCamSetDemo3Modes }, // CAM_SET_CS_3 - { { 0x45000001 }, sCamSetDemo4Modes }, // CAM_SET_CS_ATTENTION - { { 0x451FFFFF }, sCamSetUFOBeanModes }, // CAM_SET_BEAN_GENERIC - { { 0x451FFFFF }, sCamSetLiftBeanModes }, // CAM_SET_BEAN_LOST_WOODS - { { 0xC5000001 }, sCamSetScene0Modes }, // CAM_SET_SCENE_UNUSED - { { 0x45000001 }, sCamSetScene1Modes }, // CAM_SET_SCENE_TRANSITION - { { 0x05000001 }, sCamSetHidan1Modes }, // CAM_SET_FIRE_PLATFORM - { { 0x45000001 }, sCamSetHidan2Modes }, // CAM_SET_FIRE_STAIRCASE - { { 0x45000001 }, sCamSetMori2Modes }, // CAM_SET_FOREST_UNUSED - { { 0x45000001 }, sCamSetMori3Modes }, // CAM_SET_FOREST_DEFEAT_POE - { { 0x451FFFFF }, sCamSetTakoModes }, // CAM_SET_BIG_OCTO - { { 0x05000033 }, sCamSetSpot05AModes }, // CAM_SET_MEADOW_BIRDS_EYE - { { 0x05000033 }, sCamSetSpot05BModes }, // CAM_SET_MEADOW_UNUSED - { { 0x05000033 }, sCamSetHidan3Modes }, // CAM_SET_FIRE_BIRDS_EYE - { { 0x4A000001 }, sCamSetItem2Modes }, // CAM_SET_TURN_AROUND - { { 0x05000001 }, sCamSetCirc6Modes }, // CAM_SET_PIVOT_VERTICAL - { { 0x051FFFFF }, sCamSetNorm2Modes }, // CAM_SET_NORMAL2 - { { 0x0501E05F }, sCamSetFishingModes }, // CAM_SET_FISHING - { { 0x45000001 }, sCamSetDemoCModes }, // CAM_SET_CS_C - { { 0x051FFFFF }, sCamSetUOFiberModes }, // CAM_SET_JABU_TENTACLE - { { 0x051FFFFF }, sCamSetDungeon2Modes }, // CAM_SET_DUNGEON2 - { { 0x051FFFFF }, sCamSetTeppenModes }, // CAM_SET_DIRECTED_YAW - { { 0xC5000ECD }, sCamSetCirc7Modes }, // CAM_SET_PIVOT_FROM_SIDE - { { 0x051FFFFF }, sCamSetNorm4Modes }, // CAM_SET_NORMAL4 + { { 0x00000000 }, NULL }, + { { 0x051FFFFF }, sCamSetNormal0Modes }, + { { 0x051FFFFF }, sCamSetNormal1Modes }, + { { 0x051FFFFF }, sCamSetDungeon0Modes }, + { { 0x051FFFFF }, sCamSetDungeon1Modes }, + { { 0x050FF7FF }, sCamSetNormal3Modes }, + { { 0x8500018F }, sCamSetHorseModes }, + { { 0x051FFFFF }, sCamSetBossGohmaModes }, + { { 0x051FFFFF }, sCamSetBossDodongoModes }, + { { 0x051FFFFF }, sCamSetBossBarinadeModes }, + { { 0x051FFFFF }, sCamSetBossPhantomGanonModes }, + { { 0x051FFFFF }, sCamSetBossVolvagiaModes }, + { { 0x051FFFFF }, sCamSetBossBongoModes }, + { { 0x051FFFFF }, sCamSetBossMorphaModes }, + { { 0x051FFFFF }, sCamSetBossTwinrovaPlatformModes }, + { { 0x051FFFFF }, sCamSetBossTwinrovaFloorModes }, + { { 0x051FFFFF }, sCamSetBossGanondorfModes }, + { { 0x051FFFFF }, sCamSetBossGanonModes }, + { { 0x851FFFFF }, sCamSetTowerClimbModes }, + { { 0x851FFFFF }, sCamSetTowerUnusedModes }, + { { 0x8500000D }, sCamSetMarketBalconyModes }, + { { 0x85000001 }, sCamSetChuBowlingModes }, + { { 0x85000001 }, sCamSetPivotCrawlspaceModes }, + { { 0x85000001 }, sCamSetPivotShopBrowsingModes }, + { { 0x851E1FFF }, sCamSetPivotInFrontModes }, + { { 0x8C00000D }, sCamSetPreRendFixedModes }, + { { 0x8C00000D }, sCamSetPreRendPivotModes }, + { { 0x8C000001 }, sCamSetPreRendSideScrollModes }, + { { 0xC5000001 }, sCamSetDoor0Modes }, + { { 0xC5000003 }, sCamSetDoorCModes }, + { { 0xC5000001 }, sCamSetCrawlspaceModes }, + { { 0xC5000001 }, sCamSetStart0Modes }, + { { 0xC5000001 }, sCamSetStart1Modes }, + { { 0x05000001 }, sCamSetFree0Modes }, + { { 0x05000001 }, sCamSetFree1Modes }, + { { 0x85000001 }, sCamSetPivotCornerModes }, + { { 0x05000003 }, sCamSetPivotDivingModes }, + { { 0xCE000001 }, sCamSetCs0Modes }, + { { 0x4E000001 }, sCamSetCsTwistedHallwayModes }, + { { 0x05000009 }, sCamSetForestBirdsEyeModes }, + { { 0x45000001 }, sCamSetSlowChestCsModes }, + { { 0x45000001 }, sCamSetItemUnusedModes }, + { { 0x45000001 }, sCamSetCs3Modes }, + { { 0x45000001 }, sCamSetCsAttentionModes }, + { { 0x451FFFFF }, sCamSetBeanGenericModes }, + { { 0x451FFFFF }, sCamSetBeanLostWoodsModes }, + { { 0xC5000001 }, sCamSetSceneUnusedModes }, + { { 0x45000001 }, sCamSetSceneTransitionModes }, + { { 0x05000001 }, sCamSetFirePlatformModes }, + { { 0x45000001 }, sCamSetFireStaircaseModes }, + { { 0x45000001 }, sCamSetForestUnusedModes }, + { { 0x45000001 }, sCamSetForestDefeatPoeModes }, + { { 0x451FFFFF }, sCamSetBigOctoModes }, + { { 0x05000033 }, sCamSetMeadowBirdsEyeModes }, + { { 0x05000033 }, sCamSetMeadowUnusedModes }, + { { 0x05000033 }, sCamSetFireBirdsEyeModes }, + { { 0x4A000001 }, sCamSetTurnAroundModes }, + { { 0x05000001 }, sCamSetPivotVerticalModes }, + { { 0x051FFFFF }, sCamSetNorm2Modes }, + { { 0x0501E05F }, sCamSetFishingModes }, + { { 0x45000001 }, sCamSetCsCModes }, + { { 0x051FFFFF }, sCamSetJabuTentacleModes }, + { { 0x051FFFFF }, sCamSetDungeon2Modes }, + { { 0x051FFFFF }, sCamSetDirectedYawModes }, + { { 0xC5000ECD }, sCamSetPivotFromSideModes }, + { { 0x051FFFFF }, sCamSetNormal4Modes }, }; s32 Camera_Normal0(Camera* camera);