Camera Preparation (#644)

* Copy progress from z_camera

* cleanup functions.h

* Oops

* Revert `SUB16` and `ADD16` back to original names

* PR Suggestions

* PR Suggestions

* Fix merge with master
This commit is contained in:
engineer124
2022-02-20 11:33:47 +11:00
committed by GitHub
parent 71c0120fbd
commit fa069535d0
64 changed files with 424 additions and 384 deletions
+19 -20
View File
@@ -1140,13 +1140,13 @@ s32 Camera_ChangeMode(Camera* camera, s16 mode);
// void func_800DF86C(void);
// void func_800DF8EC(void);
s32 func_800DFAC8(Camera* camera, s16 param_2);
u32 func_800DFB14(Camera* camera, u32 param_2);
u32 Camera_ChangeDataIdx(Camera* camera, u32 camDataIdx);
// void func_800DFC1C(void);
// void func_800DFC40(void);
s32 func_800DFC68(Camera* camera);
s32 Camera_GetInputDirYaw(Camera* camera);
// void func_800DFC90(void);
s16 func_800DFCB4(Camera* camera);
s16 func_800DFCDC(Camera* camera);
s16 Camera_GetCamDirPitch(Camera* camera);
s16 Camera_GetCamDirYaw(Camera* camera);
void func_800DFD04(Camera* camera, s32 arg1, s32 arg2, s32 arg3);
// void func_800DFD78(void);
// UNK_TYPE4 func_800DFEF0(s32 param_1, u16 param_2);
@@ -1162,9 +1162,9 @@ s32 func_800DFFAC(Camera* camera, Actor* doorActor, s16 bgCamDataId, f32 arg3, s
// void func_800E01DC(s32 param_1, u32 param_2, UNK_TYPE4 param_3, UNK_TYPE4 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6);
// UNK_TYPE4 func_800E0228(void);
// void func_800E0238(void);
void func_800E02AC(Camera* camera, Actor* actor);
void func_800E0308(Camera* camera, Actor* actor);
f32 func_800E031C(Camera* camera);
void Camera_SetToTrackActor(Camera* camera, Actor* actor);
void Camera_SetTargetActor(Camera* camera, Actor* actor);
f32 Camera_GetWaterYPos(Camera* camera);
void func_800E0348(Camera* camera);
DamageTable* DamageTable_Get(s32 index);
void DamageTable_Clear(DamageTable* damageTable);
@@ -2838,22 +2838,21 @@ void func_8016927C(GlobalContext* globalCtx, s16 sParm2);
// void func_801692C4(GlobalContext* globalCtx, UNK_TYPE1 uParm2);
// void Play_SceneInit(GlobalContext* globalCtx, s32 sceneIndex, UNK_TYPE1 param_3);
UNK_RET func_80169474(GlobalContext* globalCtx, Vec3f* v1, Vec3f* v2);
s32 func_801694DC(GlobalContext* globalCtx);
s32 Play_GetActiveCameraIndex(GlobalContext* globalCtx);
void func_80169590(GlobalContext* globalCtx, s16 param_2, s16 param_3);
void func_80169600(GlobalContext* globalCtx, s16 param_2);
// void func_80169668(void);
s32 Play_CreateSubCamera(GlobalContext* globalCtx);
s32 Play_GetActiveCamId(GlobalContext* globalCtx);
void Play_CameraChangeStatus(GlobalContext* globalCtx, s16 camId, s16 status);
void Play_ClearCamera(GlobalContext* globalCtx, s16 camId);
Camera* Play_GetCamera(GlobalContext* globalCtx, s16 index);
s32 Play_CameraSetAtEye(GlobalContext* globalCtx, s16 camId, Vec3f* at, Vec3f* eye);
void func_8016981C(GlobalContext* globalCtx, s16 arg1, Vec3f* arg2, Vec3f* arg3, Vec3f* arg4);
void func_80169940(GlobalContext* globalCtx, s16 camId, f32 arg2);
// void func_80169988(void);
void func_801699D4(GlobalContext* globalCtx, s16 arg1, s16 arg2);
void Play_CameraSetAtEyeUp(GlobalContext* globalCtx, s16 camId, Vec3f* at, Vec3f* eye, Vec3f* up);
void Play_CameraSetFov(GlobalContext* globalCtx, s16 camId, f32 fov);
void Play_CameraSetRoll(GlobalContext* globalCtx, s16 camId, s16 roll);
void Play_CopyCamera(GlobalContext* globalCtx, s16 dstCamId, s16 srcCamId);
// void func_80169A50(void);
// void func_80169AC0(void);
void Play_CameraChangeSetting(GlobalContext* globalCtx, s16 camId, s16 setting);
void func_80169AFC(GlobalContext* globalCtx, s16 camId, s16 arg2);
// void func_80169C64(void);
// void func_80169C84(void);
s16 Play_GetCsCamDataSetting(GlobalContext* globalCtx, s32 camId);
Vec3s* Play_GetCsCamDataVec3s(GlobalContext* globalCtx, s32 camId);
s16 convert_scene_number_among_shared_scenes(s16 arg0);
void func_80169D40(GlobalContext* globalCtx);
void func_80169DCC(GlobalContext* globalCtx, s32 arg1, u16 arg2, s32 arg3, s32 arg4, Vec3f* arg5, s16 arg6);
@@ -3149,7 +3148,7 @@ s32 Math3D_TriChkPointParaZIntersect(Vec3f* a, Vec3f* b, Vec3f* c, f32 nx, f32 n
s32 Math3D_TriChkLineSegParaZIntersect(Vec3f* v0, Vec3f* v1, Vec3f* v2, f32 nx, f32 ny, f32 nz, f32 originDist, f32 x, f32 y, f32* zIntersect, f32 z0, f32 z1);
// void func_8017D1AC(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7);
// void func_8017D220(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5);
// void func_8017D2FC(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8);
s32 Math3D_LineSegVsPlane(f32 nx, f32 ny, f32 nz, f32 originDist, Vec3f* linePointA, Vec3f* linePointB, Vec3f* intersect, s32 fromFront);
// void func_8017D404(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE4 param_9, UNK_TYPE4 param_10, UNK_TYPE4 param_11);
void Math3D_TriSetCoords(TriNorm* tri, Vec3f* pointA, Vec3f* pointB, Vec3f* pointC);
u32 Math3D_IsPointInSphere(Sphere16* sphere, Vec3f* point);
+1 -2
View File
@@ -21,8 +21,7 @@
#define SEGMENTED_TO_VIRTUAL(addr) (void*)(PHYSICAL_TO_VIRTUAL(gSegments[SEGMENT_NUMBER(addr)]) + SEGMENT_OFFSET(addr))
#define GET_ACTIVE_CAM(globalCtx) ((globalCtx)->cameraPtrs[(globalCtx)->activeCamera])
#define MAIN_CAM 0
#define SUBCAM_FREE 0
#define CAM_ID_MAIN 0
#define SET_NEXT_GAMESTATE(curState, newInit, newStruct) \
(curState)->nextGameStateInit = (GameStateFunc)newInit; \
+8 -8
View File
@@ -67,7 +67,7 @@
typedef struct {
/* 0x0 */ s16 priority; // Lower means higher priority. -1 means it ignores priority
/* 0x2 */ s16 length;
/* 0x4 */ s16 unk4;
/* 0x4 */ s16 csCamSceneDataId; // Index of CsCameraEntry to use. Negative indices use sGlobalCamDataSettings. Indices 0 and above use CsCameraEntry from scene
/* 0x6 */ s16 unk6;
/* 0x8 */ s16 additionalCutscene;
/* 0xA */ u8 sound;
@@ -119,8 +119,8 @@ typedef struct {
/* 0x18 */ u16 unk_18;
/* 0x1A */ u8 unk_1A;
/* 0x1B */ u8 unk_1B;
/* 0x1C */ CutsceneCameraPoint* cameraFocus;
/* 0x20 */ CutsceneCameraPoint* cameraPosition;
/* 0x1C */ CutsceneCameraPoint* atPoints;
/* 0x20 */ CutsceneCameraPoint* eyePoints;
/* 0x24 */ CsCmdActorAction* linkAction;
/* 0x28 */ CsCmdActorAction* npcActions[10]; // "npcdemopnt"
/* 0x50 */ CutsceneEntry* sceneCsList;
@@ -718,8 +718,8 @@ typedef struct {
/* 0x12 */ u8 unk_12;
/* 0x13 */ u8 unk_13;
/* 0x14 */ u8 unk_14;
/* 0x15 */ u8 unk_15;
/* 0x16 */ u8 unk_16;
/* 0x15 */ u8 skyboxDisabled;
/* 0x16 */ u8 sunMoonDisabled;
/* 0x17 */ u8 unk_17;
/* 0x18 */ u8 unk_18;
/* 0x19 */ u8 unk_19;
@@ -1071,7 +1071,7 @@ typedef struct Camera {
/* 0x15E */ s16 animState;
/* 0x160 */ s16 unk160;
/* 0x162 */ s16 timer;
/* 0x164 */ s16 thisIdx;
/* 0x164 */ s16 camId;
/* 0x166 */ s16 prevCamDataIdx;
/* 0x168 */ s16 unk168;
/* 0x16A */ s16 unk16A;
@@ -1100,7 +1100,7 @@ typedef struct {
/* 0x1A */ s16 speed;
/* 0x1C */ s16 isShakePerpendicular;
/* 0x1E */ s16 countdown;
/* 0x20 */ s16 cameraPtrsIdx;
/* 0x20 */ s16 camId;
} QuakeRequest; // size = 0x24
typedef struct {
@@ -1324,7 +1324,7 @@ struct GlobalContext {
/* 0x1884C */ RomFile* roomList;
/* 0x18850 */ ActorEntry* linkActorEntry;
/* 0x18854 */ ActorEntry* setupActorList;
/* 0x18858 */ void* unk_18858;
/* 0x18858 */ CsCamData* csCamData;
/* 0x1885C */ EntranceEntry* setupEntranceList;
/* 0x18860 */ u16* setupExitList;
/* 0x18864 */ Path* setupPathList;
+4 -4
View File
@@ -89,10 +89,10 @@ typedef struct CollisionPoly {
} CollisionPoly; // size = 0x10
typedef struct {
/* 0x00 */ u16 cameraSType;
/* 0x02 */ s16 unk_02;
/* 0x04 */ Vec3s* camPosData;
} CamData;
/* 0x0 */ u16 setting;
/* 0x2 */ s16 numData;
/* 0x4 */ Vec3s* data;
} CamData; // size = 0x8 (BgCamData)
typedef struct {
/* 0x0 */ Vec3s minPos;
+7 -5
View File
@@ -290,7 +290,7 @@ typedef struct {
typedef struct {
struct {
s8 room; // Room to switch to
s8 effects; // How the camera reacts during the transition
s8 bgCamDataId; // How the camera reacts during the transition. -2 for spiral staircase. -1 for generic door. 0+ will index scene CamData
} /* 0x00 */ sides[2]; // 0 = front, 1 = back
/* 0x04 */ s16 id;
/* 0x06 */ Vec3s pos;
@@ -496,10 +496,12 @@ typedef struct {
} MinimapChest; // size = 0xA
typedef struct {
/* 0x00 */ s16 type;
/* 0x00 */ s16 numPoints;
/* 0x00 */ Vec3s* points;
} CsCameraEntry;
/* 0x0 */ s16 setting;
/* 0x2 */ s16 numData;
/* 0x4 */ Vec3s* data;
} CsCamData; // size = 0x8
typedef CsCamData CsCameraEntry; // TODO: Remove once ZAPD updates its structs
typedef union {
/* Command: N/A */ SCmdBase base;