Mario Kart 64
Loading...
Searching...
No Matches
camera.h
Go to the documentation of this file.
1#ifndef CAMERA_H
2#define CAMERA_H
3
4#include <libultraship.h>
5#include <common_structs.h>
6
14#ifdef AVOID_UB
15#define BAD_RETURN(cmd) void
16#else
17#define BAD_RETURN(cmd) cmd
18#endif
19
20#define NUM_CAMERAS 16
21
27
28typedef struct {
29 f32 unk_0;
30 s16 unk_4;
31 s16 unk_6;
32 s16 unk_8;
34
35typedef struct {
36 /* 0x00 */ Vec3f pos;
37 /* 0x0C */ Vec3f lookAt;
38 // This is expected to be a normalized vector, indicates what direction is "up" for the camera
39 /* 0x18 */ Vec3f up;
40 // I think these are the "nautical angles" between pos and lookAt
41 // rot[0] = roll? Does nothing?, rot[1] = yaw, rot[2] = pitch
42 /* 0x24 */ Vec3s rot;
43 /* 0x2A */ u16 someBitFlags;
44 /* 0x2C */ s16 unk_2C;
45 /* 0x2E */ s16 unk_2E;
46 /* 0x30 */ Vec3f unk_30;
47 /* 0x3C */ Vec3f unk_3C;
48 /* 0x48 */ s32 unk_48;
49 /* 0x4C */ s32 unk_4C;
50 /* 0x50 */ s32 unk_50;
51 /* 0x54 */ Collision collision;
52 // When you hit a wall (or another driver) the camera's pos and lookAt bounce up and down. This is the velocity(?)
53 // of that bouncing
55 // Timer for wall-hit bounce. Counts up instead of down
56 /* 0xA0 */ f32 unk_A0;
57 /* 0xA4 */ s32 unk_A4;
58 /* 0xA8 */ s32 unk_A8;
59 /* 0xAC */ s16 unk_AC;
60 // Id of the player the camera is following.
61 /* 0xAE */ s16 playerId;
62 // Seems related to camera movement during drifting
63 /* 0xB0 */ s16 unk_B0;
64 /* 0xB2 */ s16 unk_B2;
65 /* 0xB4 */ f32 unk_B4;
66 size_t cameraId;
67 int32_t mode;
68 /* 0xB8 */ enum RenderMode renderMode;
69 /* 0xBC */ Mtx* perspectiveMatrix;
70 /* 0xC0 */ Mtx* lookAtMatrix;
71
72} Camera; /* size = 0xBC */
73
74void camera_init(Vec3f pos, s16 rot, u32, s32);
75void freecam_init(Vec3f pos, s16 rot, u32 mode, s32 cameraId);
77void func_8001CA24(Player*, f32);
78void func_8001CA78(Player*, Camera*, Vec3f, f32*, f32*, f32*, s32, s32);
79void func_8001CCEC(Player*, Camera*, Vec3f, f32*, f32*, f32*, s32*, s16, s16);
80void func_8001D53C(Player*, Camera*, Vec3f, f32*, f32*, f32*, s16, s16);
81void func_8001D794(Player*, Camera*, Vec3f, f32*, f32*, f32*, s16);
82void func_8001D944(Player*, Camera*, Vec3f, f32*, f32*, f32*, s32*, s16, s16);
83void func_8001E0C4(Camera*, Player*, s8);
84void func_8001E45C(Camera*, Player*, s8);
85void func_8001E8E8(Camera*, Player*, s8);
86void func_8001EA0C(Camera*, Player*, s8);
87void func_8001EE98(Player*, Camera*, s8);
88void func_8001F394(Player*, f32*);
89void func_8001F87C(s32);
90
91extern f32 D_800DDB30[];
92
93extern Camera cameras[];
94extern Camera* camera1;
95extern Camera* camera2;
96extern Camera* camera3;
97extern Camera* camera4;
99
100// end of camera.c variables
101
102extern s8 D_80164A89;
103
104extern s32 D_80164A08[4];
105
106extern s32 D_80164A28;
107extern s32 D_80164A2C;
108extern f32 D_80164A30;
109extern f32 D_80164A90[];
110extern f32 D_80164AA0[];
111
112#endif
Camera * camera3
Definition camera.c:32
f32 D_800DDB30[]
Definition camera.c:27
f32 D_80164A30
Definition camera.c:46
f32 D_80164A90[NUM_CAMERAS]
Definition camera.c:53
s32 D_80164A28
Definition camera.c:43
Camera * gFreecamCamera
Definition camera.c:34
Camera * camera4
Definition camera.c:33
Camera * camera1
Definition camera.c:30
Camera cameras[NUM_CAMERAS]
Definition camera.c:29
s32 D_80164A08[4]
Definition camera.c:41
s32 D_80164A2C
Definition camera.c:44
Camera * camera2
Definition camera.c:31
s8 D_80164A89
Definition camera.c:51
f32 D_80164AA0[NUM_CAMERAS]
Definition camera.c:54
void func_8001D944(Player *, Camera *, Vec3f, f32 *, f32 *, f32 *, s32 *, s16, s16)
void func_8001EE98(Player *, Camera *, s8)
Definition camera.c:1047
void func_8001D794(Player *, Camera *, Vec3f, f32 *, f32 *, f32 *, s16)
Definition camera.c:602
void func_8001CA78(Player *, Camera *, Vec3f, f32 *, f32 *, f32 *, s32, s32)
void freecam_init(Vec3f pos, s16 rot, u32 mode, s32 cameraId)
Definition camera.c:198
void func_8001EA0C(Camera *, Player *, s8)
Definition camera.c:955
void func_8001F87C(s32)
Definition camera.c:1267
void func_8001F394(Player *, f32 *)
Definition camera.c:1132
void func_8001CA24(Player *, f32)
Definition camera.c:344
void camera_init(Vec3f pos, s16 rot, u32, s32)
Definition camera.c:56
void func_8001E0C4(Camera *, Player *, s8)
Definition camera.c:772
void func_8001CCEC(Player *, Camera *, Vec3f, f32 *, f32 *, f32 *, s32 *, s16, s16)
void func_8001CA10(Camera *)
Definition camera.c:339
void func_8001D53C(Player *, Camera *, Vec3f, f32 *, f32 *, f32 *, s16, s16)
Definition camera.c:552
RenderMode
Definition camera.h:22
@ RENDER_COLLISION_MESH
Definition camera.h:25
@ RENDER_TRACK_SECTIONS
Definition camera.h:23
@ RENDER_FULL_SCENE
Definition camera.h:24
void func_8001E8E8(Camera *, Player *, s8)
Definition camera.c:924
void func_8001E45C(Camera *, Player *, s8)
Definition camera.c:833
f32 Vec3f[3]
Definition common_structs.h:10
s16 Vec3s[3]
Definition common_structs.h:15
Definition camera.h:35
UnkCameraInner unk_94
Definition camera.h:54
s32 unk_4C
Definition camera.h:49
Vec3s rot
Definition camera.h:42
size_t cameraId
Definition camera.h:66
Mtx * lookAtMatrix
Definition camera.h:70
s16 playerId
Definition camera.h:61
Vec3f unk_30
Definition camera.h:46
s16 unk_AC
Definition camera.h:59
s32 unk_50
Definition camera.h:50
enum RenderMode renderMode
Definition camera.h:68
f32 unk_A0
Definition camera.h:56
Mtx * perspectiveMatrix
Definition camera.h:69
int32_t mode
Definition camera.h:67
s16 unk_2E
Definition camera.h:45
f32 unk_B4
Definition camera.h:65
s32 unk_A4
Definition camera.h:57
Vec3f pos
Definition camera.h:36
s16 unk_B2
Definition camera.h:64
Vec3f unk_3C
Definition camera.h:47
Vec3f up
Definition camera.h:39
u16 someBitFlags
Definition camera.h:43
Vec3f lookAt
Definition camera.h:37
s16 unk_B0
Definition camera.h:63
s16 unk_2C
Definition camera.h:44
Collision collision
Definition camera.h:51
s32 unk_48
Definition camera.h:48
s32 unk_A8
Definition camera.h:58
Definition common_structs.h:147
Definition common_structs.h:264
Definition camera.h:28
s16 unk_6
Definition camera.h:31
s16 unk_4
Definition camera.h:30
s16 unk_8
Definition camera.h:32
f32 unk_0
Definition camera.h:29