Super Mario 64 Source
A Super Mario 64 decompilation, brought to you by a bunch of clever folks.
camera.h
Go to the documentation of this file.
1 #ifndef _CAMERA_H
2 #define _CAMERA_H
3 
4 #include "types.h"
5 #include "area.h"
6 #include "engine/geo_layout.h"
7 
8 #define ABS(x) ((x) > 0.f ? (x) : -(x))
9 #define ABS2(x) ((x) >= 0.f ? (x) : -(x))
10 
11 #define AREA_BBH 0x0041
12 #define AREA_CCM_OUTSIDE 0x0051
13 #define AREA_CCM_SLIDE 0x0052
14 #define AREA_CASTLE_LOBBY 0x0061
15 #define AREA_CASTLE_TIPPY 0x0062
16 #define AREA_CASTLE_BASTEMENT 0x0063
17 #define AREA_HMC 0x0071
18 #define AREA_SSL_OUTSIDE 0x0081
19 #define AREA_SSL_PYRAMID 0x0082
20 #define AREA_SSL_EYEROK 0x0083
21 #define AREA_BOB 0x0091
22 #define AREA_SL_OUTSIDE 0x00A1
23 #define AREA_SL_IGLOO 0x00A2
24 #define AREA_WDW_MAIN 0x00B1
25 #define AREA_WDW_TOWN 0x00B2
26 #define AREA_JRB_MAIN 0x00C1
27 #define AREA_JRB_SHIP 0x00C2
28 #define AREA_THI_HUGE 0x00D1
29 #define AREA_THI_TINY 0x00D2
30 #define AREA_THI_WIGGLER 0x00D3
31 #define AREA_TTC 0x00E1
32 #define AREA_RR 0x00F1
33 #define AREA_OUTSIDE_CASTLE 0x0101
34 #define AREA_BITDW 0x0111
35 #define AREA_VCUTM 0x0121
36 #define AREA_BITFS 0x0131
37 #define AREA_SA 0x0141
38 #define AREA_BITS 0x0151
39 #define AREA_LLL_OUTSIDE 0x0161
40 #define AREA_LLL_VOLCANO 0x0162
41 #define AREA_DDD_WHIRLPOOL 0x0171
42 #define AREA_DDD_SUB 0x0172
43 #define AREA_WF 0x0181
44 #define AREA_ENDING 0x0191
45 #define AREA_COURTYARD 0x01A1
46 #define AREA_PSS 0x01B1
47 #define AREA_COTMC 0x01C1
48 #define AREA_TOTWC 0x01D1
49 #define AREA_BOWSER_1 0x01E1
50 #define AREA_WMOTR 0x01F1
51 #define AREA_BOWSER_2 0x0211
52 #define AREA_BOWSER_3 0x0221
53 #define AREA_TTM_OUTSIDE 0x0241
54 
55 #define CAM_MODE_MARIO_ACTIVE 0x01
56 #define CAM_MODE_LAKITU_WAS_ZOOMED_OUT 0x02
57 #define CAM_MODE_MARIO_SELECTED 0x04
58 
59 #define CAM_MOVE_RETURN_TO_MIDDLE 0x0001
60 #define CAM_MOVE_ZOOMED_OUT 0x0002
61 #define CAM_MOVE_ROTATE_RIGHT 0x0004
62 #define CAM_MOVE_ROTATE_LEFT 0x0008
63 #define CAM_MOVE_UNKNOWN_5 0x0010
64 #define CAM_MOVE_UNKNOWN_6 0x0020
65 #define CAM_MOVE_UNKNOWN_7 0x0040
66 #define CAM_MOVE_UNKNOWN_8 0x0080
67 #define CAM_MOVE_INTO_C_UP 0x0100
68 #define CAM_MOVE_UNKNOWN_10 0x0200
69 #define CAM_MOVE_UNKNOWN_11 0x0400
70 #define CAM_MOVE_INIT_CAMERA 0x0800
71 #define CAM_MOVE_UNK1000 0x1000
72 #define CAM_MOVE_C_UP_MODE 0x2000
73 #define CAM_MOVE_SUBMERGED 0x4000
74 #define CAM_MOVE_PAUSE_SCREEN 0x8000
75 
76 #define CAM_FLAG_1_UNKNOWN_0 0x01
77 #define CAM_FLAG_1_UNKNOWN_1 0x02
78 #define CAM_FLAG_1_UNKNOWN_2 0x04
79 #define CAM_FLAG_1_UNUSED_3 0x08
80 #define CAM_FLAG_1_UNUSED_4 0x10
81 #define CAM_FLAG_1_UNKNOWN_5 0x20
82 
83 #define CAM_FLAG_2_SMOOTH_MOVEMENT 0x0001
84 #define CAM_FLAG_2_UNKNOWN_1 0x0002
85 #define CAM_FLAG_2_FRAME_AFTER_CAM_INIT 0x0004
86 #define CAM_FLAG_2_UNKNOWN_3 0x0008
87 #define CAM_FLAG_2_CCM_SLIDE_SHORTCUT 0x0010
88 #define CAM_FLAG_2_COLLIDING_WITH_WALL 0x0020
89 #define CAM_FLAG_2_SLEEPING 0x0040
90 #define CAM_FLAG_2_UNUSED_7 0x0080
91 #define CAM_FLAG_2_UNUSED_8 0x0100
92 #define CAM_FLAG_2_UNKNOWN_9 0x0200
93 #define CAM_FLAG_2_UNKNOWN_10 0x0400
94 #define CAM_FLAG_2_UNKNOWN_11 0x0800
95 #define CAM_FLAG_2_BLOCK_LEVEL_SPECIFIC_UPDATES 0x1000
96 #define CAM_FLAG_2_UNUSED_13 0x2000
97 #define CAM_FLAG_2_UNUSED_CUTSCENE_ACTIVE 0x4000
98 #define CAM_FLAG_2_BEHIND_MARIO_POST_DOOR 0x8000
99 
100 #define SHAKE_ATTACK 1
101 #define SHAKE_GROUND_POUND 2
102 #define SHAKE_SMALL_DAMAGE 3
103 #define SHAKE_MED_DAMAGE 4
104 #define SHAKE_LARGE_DAMAGE 5
105 #define SHAKE_HIT_FROM_BELOW 8
106 #define SHAKE_FALL_DAMAGE 9
107 #define SHAKE_SHOCK 10
108 
109 #define SHAKE_2_UNKNOWN_1 1
110 #define SHAKE_2_UNKNOWN_2 2
111 #define SHAKE_2_UNKNOWN_3 3
112 #define SHAKE_2_UNKNOWN_5 5
113 #define SHAKE_2_UNKNOWN_6 6
114 #define SHAKE_2_UNKNOWN_7 7
115 #define SHAKE_2_UNKNOWN_8 8
116 #define SHAKE_2_JRB_SHIP_DRAIN 9
117 #define SHAKE_2_FALLING_BITS_PLAT 10
118 
119 #define CUTSCENE_DOOR_0 130
120 #define CUTSCENE_DOOR_1 131
121 #define CUTSCENE_ENTER_CANNON 133
122 #define CUTSCENE_ENTER_PAINTING 134
123 #define CUTSCENE_DEATH_EXIT 135
124 #define CUTSCENE_DOOR_WARP 139
125 #define CUTSCENE_DOOR_A 140
126 #define CUTSCENE_DOOR_B 141
127 #define CUTSCENE_INTRO_PEACH 142
128 #define CUTSCENE_STAR_DANCE_1_1 143
129 #define CUTSCENE_ENTER_BOWSER_ARENA 144
130 #define CUTSCENE_0F_TODO 145
131 #define CUTSCENE_11_TODO 147
132 #define CUTSCENE_SLIDING_DOORS_OPEN 149
133 #define CUTSCENE_PREPARE_CANNON 150
134 #define CUTSCENE_UNLOCK_KEY_DOOR 151
135 #define CUTSCENE_STANDING_DEATH 152
136 #define CUTSCENE_DEATH_2 153
137 #define CUTSCENE_DEATH_ON_BACK 154
138 #define CUTSCENE_QUICKSAND_DEATH 155
139 #define CUTSCENE_SUFFOCATION_DEATH 156
140 #define CUTSCENE_EXIT_BOWSER_SUCC 157
141 #define CUTSCENE_1C_TODO 158
142 #define CUTSCENE_WATER_DEATH 159 //Not in cutscene switch
143 #define CUTSCENE_EXIT_PAINTING_SUCC 160
144 #define CUTSCENE_CAP_SWITCH_PRESS 161
145 #define CUTSCENE_DIALOG_1 162
146 #define CUTSCENE_DIALOG_2 163
147 #define CUTSCENE_ENTER_PYRAMID_TOP 164
148 #define CUTSCENE_STAR_DANCE_2 165
149 #define CUTSCENE_STAR_DANCE_3 166
150 #define CUTSCENE_KEY_DANCE 167
151 #define CUTSCENE_26_TODO 168
152 #define CUTSCENE_EXIT_BBH_SUCC 169
153 #define CUTSCENE_NONPAINTING_DEATH 170
154 #define CUTSCENE_READ_MESSAGE 171
155 #define CUTSCENE_PEACH_END 172
156 #define CUTSCENE_STAR_SPAWN 173
157 #define CUTSCENE_GRAND_STAR 174
158 #define CUTSCENE_STAR_DANCE_1_2 175
159 #define CUTSCENE_SPECIAL_STAR_SPAWN 176
160 #define CUTSCENE_END_WAVING 177
161 #define CUTSCENE_CREDITS 178
162 #define CUTSCENE_EXIT_WATERFALL 179
163 #define CUTSCENE_EXIT_FALL_WMOTR 180
164 #define CUTSCENE_ENTER_POOL 181
165 
166 // sorted
167 
169 {
170  /*0x00*/ u32 action;
171  /*0x04*/ Vec3f pos;
172  /*0x10*/ Vec3s faceAngle;
173  /*0x16*/ Vec3s unk16;
174  /*0x1C*/ s16 unk1C[2]; //only unk1C[1] seems used, represents an effective cutscene
175  /*0x20*/ struct Object *usedObj;
176 };
177 
179 {
180  /*0x00*/ s16 pitch1;
181  /*0x02*/ s16 yaw1;
182  /*0x04*/ f32 dist1;
183  /*0x08*/ s16 pitch2;
184  /*0x0A*/ s16 yaw2;
185  /*0x0C*/ f32 dist2;
186  /*0x10*/ s32 timer;
187  /*0x14*/ Vec3f marioPos;
188  /*0x20*/ u8 pad; // for the structs to align, there has to be an extra unused variable here. type is unknown.
189 };
190 
192 {
193  /*0x00*/ s8 unk0;
194  union {
195  /*0x08*/ Vec3s unk8;
196  /*0x08*/ long long int force_structure_alignment;
197  } myUnion;
198 }; // size = 0x10
199 
200 // unsorted
201 
203 {
204  u8 filler0[0x18];
208  u8 filler34[0x3A-0x34];
210 };
211 
212 // Camera command procedures are marked as returning s32, but none of them
213 // actually return a value. This causes undefined behavior, which we'd rather
214 // avoid on modern GCC. Hence, typedef. Interestingly, the void vs s32
215 // difference doesn't affect -g, only -O2.
216 #ifdef __GNUC__
217 typedef void CmdRet;
218 #else
219 typedef s32 CmdRet;
220 #endif
221 
222 typedef CmdRet (*CameraCommandProc)(struct LevelCamera *a);
223 
225 {
235 };
236 
238 {
241 };
242 
244 {
245  /*0x00*/ u8 unk0;
246  /*0x04*/ f32 fieldOfView;
247  /*0x08*/ f32 unk8;
248  /*0x0C*/ u32 unkC;
249  /*0x10*/ f32 unk10;
250  /*0x14*/ s16 unk14;
251  /*0x16*/ s16 unk16;
252  /*0x18*/ s16 unk18;
253 };
254 
256 {
257  /*0x00*/ s8 unk0;
258  /*0x01*/ u8 unk1;
259  /*0x02*/ Vec3s unk2;
260 }; // size = 0x08
261 
263 {
264  /*0x00*/ struct Surface *currFloor;
266  /*0x08*/ s16 currFloorType;
267  /*0x0C*/ struct Surface *currCeil;
268  /*0x10*/ s16 currCeilType;
269  /*0x14*/ f32 currCeilHeight;
270  /*0x18*/ struct Surface *prevFloor;
272  /*0x20*/ s16 prevFloorType;
273  /*0x24*/ struct Surface *prevCeil;
274  /*0x28*/ f32 prevCeilHeight;
275  /*0x2C*/ s16 prevCeilType;
276  /*0x30*/ f32 waterHeight;
277 };
278 
280 {
286 };
287 
289 {
294  struct Struct8033B418_sub unk8;
295  struct Struct8033B418_sub unk28;
296 };
297 
299 {
304 };
305 
307 {
308  /*0x00*/ Vec3f pos;
309  /*0x0C*/ Vec3f focus;
310  /*0x18*/ f32 unk18;
311  /*0x1C*/ f32 unk1C;
312 };
313 
315 {
321 };
322 
324 {
325  /*0x00*/ Vec3f camFocAndPosCurrAndGoal[4];
326  /*0x30*/ u8 filler30[12]; // extra unused Vec3f?
327  /*0x3C*/ u8 modeActive;
328  /*0x3D*/ u8 modeDefault;
329  /*0x3E*/ u8 filler3E[10];
330  /*0x48*/ float focusDistance; //unused
331  /*0x4C*/ s16 pitch; //unused
332  /*0x4E*/ s16 yaw; //unused
333  /*0x50*/ u8 filler50[2];
338  /*0x5E*/ u8 filler5E[2];
339  /*0x60*/ Vec3f unk60; //unused
340  /*0x6C*/ Vec3s unk6C; //unused
341  /*0x72*/ u8 filler72[8];
342  /*0x7A*/ s16 roll;
343  /*0x7C*/ s16 trueYaw;
344  /*0x7E*/ s16 storedYaw;
345  /*0x80*/ Vec3f focus;
346  /*0x8C*/ Vec3f pos;
350  /*0x9E*/ s16 shakeYawOffset;
353  /*0xA4*/ float unkA4;
354  /*0xA8*/ float unkA8;
355  /*0xAC*/ float unkAC;
356  /*0xB0*/ float unkB0;
359  /*0xBC*/ s16 unkBC;
360 };
361 
362 // bss order hack to not affect BSS order. if possible, remove me, but it will be hard to match otherwise
363 #ifndef INCLUDED_FROM_CAMERA_C
364 // BSS
366 extern s16 gCameraModeFlags;
367 extern s16 sCameraSideCFlags;
368 extern s16 gCameraFlags1;
369 extern u16 gCButtonsPressed;
370 extern struct CameraState gCameraStatus;
372 extern s32 gCutsceneActive;
373 extern struct LevelCamera *gCurrLevelCamera;
374 #endif
375 
376 extern struct Object *gCutsceneFocus;
377 extern struct Object *gSecondCameraFocus;
378 
379 // TODO: sort all of this extremely messy shit out after the split
380 // TODO: bring in some externs from camera.c
381 
383 extern u8 D_8032D0B8[];
384 
385 extern void set_camera_shake(s16);
386 extern void set_camera_shake_2(s16);
387 extern void func_8027F440(s16, f32, f32, f32);
388 extern void operate_c_up_looking(struct LevelCamera *); // static (ASM)
389 extern void init_transitional_movement(UNUSED struct LevelCamera *, s16);
390 extern void func_80285BD8(struct LevelCamera *, s16, s16);
391 extern void update_camera(struct LevelCamera *);
392 extern void reset_camera(struct LevelCamera *);
393 extern void init_camera(struct LevelCamera *);
394 extern void select_mario_cam_mode(void);
395 extern void dummy_802877D8(struct LevelCamera *);
396 extern void dummy_802877EC(struct LevelCamera *);
397 extern void vec3f_sub(Vec3f, Vec3f);
398 extern void object_pos_to_vec3f(Vec3f, struct Object *);
399 extern void vec3f_to_object_pos(struct Object *, Vec3f); // static (ASM)
400 extern s32 func_80287CFC(Vec3f, struct CinematicCameraTable[], s16 *, f32 *);
403 extern void set_spline_values(u8);
406 extern s32 update_camera_status(struct LevelCamera *);
408 extern s32 clamp_pitch(Vec3f a, Vec3f b, s16 c, s16 d);
412 extern f32 approach_f32_exponential(f32, f32, f32); // static (ASM)
414 extern s32 approach_s16_exponential(s16, s16, s16); // static (ASM)
415 extern void approach_vec3f_exponential(Vec3f, Vec3f, f32, f32, f32); // static (ASM)
416 
417 
418 
419 
420 extern void set_or_approach_vec3f_exponential(Vec3f, Vec3f, f32, f32, f32); // postdefined
421 // extern ? approach_vec3s_exponential(?);
423 // extern ? camera_approach_s16_symmetric(?);
424 extern s32 set_or_approach_s16_symmetric(s16 *a, s16 b, s16 c); // postdefined
427 void random_vec3s(Vec3s a, s16 b, s16 c, s16 d); // postdefined
428 // extern ? func_80289738(?);
430 // extern ? func_80289A98(?);
431 // extern ? is_pos_less_than_bounds(?);
432 // extern ? is_behind_surface(?);
433 extern s32 func_8028A0D4(Vec3f a, Vec3f b, struct Surface *c, s16 d, s16 e);
434 // extern ? is_mario_behind_surface(?);
435 extern void scale_along_line(Vec3f, Vec3f, Vec3f, f32);
436 // extern ? check_if_vector_fits_in_bounds(?);
438 extern s16 calculate_yaw(Vec3f, Vec3f);
439 extern void calculate_angles(Vec3f, Vec3f, s16 *, s16 *);
440 extern f32 calc_abs_dist(Vec3f, Vec3f);
441 extern f32 calc_hor_dist(Vec3f, Vec3f);
442 extern void rotate_in_xz(Vec3f, Vec3f, s16);
443 extern void rotate_in_yz(Vec3f, Vec3f, s16);
444 extern void set_camera_pitch_shake(s16, s16, s16);
445 extern void set_camera_yaw_shake(s16, s16, s16);
446 extern void set_camera_roll_shake(s16, s16, s16);
447 extern void func_8028AA80(s16, s16, s16, f32, f32, f32, f32);
448 // extern ? Unknown8028AB34(?);
449 // extern ? increment_shake_offset(?);
450 extern void shake_camera_pitch(); // postdefined
451 extern void shake_camera_yaw(); // postdefined
452 extern void shake_camera_roll(s16 *); // postdefined
453 extern s32 func_8028AF24(struct LevelCamera *a, s16 b);
454 // extern ? func_8028B13C(?);
455 // extern ? func_8028B16C(?);
456 extern void play_camera_buzz_if_cdown(void);
457 extern void play_camera_buzz_if_cbutton(void);
458 extern void play_camera_buzz_if_c_sideways(void);
459 extern void play_sound_cbutton_up(void);
460 extern void play_sound_cbutton_down(void);
461 extern void play_sound_cbutton_side(void);
462 extern void play_sound_button_change_blocked(void); // postdefined
463 extern void play_sound_rbutton_changed(void); // postdefined
464 extern void func_8028B36C(void); // postdefined
465 extern s32 func_8028B3DC(struct LevelCamera *a, f32 b);
466 extern s32 stop_mario(s32);
467 extern void handle_c_button_movement(struct LevelCamera *);
468 // extern ? func_8028BA38(?);
469 extern void set_camera_cutscene_table(struct LevelCamera *a, u8 b); // postdefined
470 // extern ? determine_star_fadeout_cutscene_table(?);
471 // extern ? return_table_door_push_or_pull(?);
472 extern u8 return_cutscene_table(); // postdefined
473 extern void instant_warp_camera_update(f32, f32, f32);
474 extern void approach_camera_height(struct LevelCamera *, f32, f32);
475 // extern ? Unknown8028C3AC(?);
476 // extern ? set_focus_position(?);
477 // extern ? Unknown8028C508(?);
479 // extern ? set_pos_from_face_angle_and_rel_coords(?);
480 // extern ? determine_pushing_or_pulling_door(?);
481 s16 func_8028C824(Vec3f a, Vec3f b, Vec3f c, Vec3f d, Vec3f e, Vec3f f, s16 g); // postdefined
482 // extern ? Unknown8028CE1C(?);
483 // extern ? set_camera_preset_fixed_ref_point(?);
484 // extern ? set_camera_preset_platform_level(?);
485 // extern ? set_camera_preset_boss_fight(?);
486 // extern ? set_camera_preset_close_cam(?);
487 // extern ? set_camera_preset_open_camera(?);
488 // extern ? parallel_tracking_init(?);
489 extern void set_fixed_cam_axis_sa_lobby(s16 preset); // postdefined
490 // extern ? func_8028D32C(?);
491 // extern ? CameraRR00(?);
492 // extern ? CameraRR04(?);
493 // extern ? CameraRR02(?);
494 // extern ? CameraRR0305(?);
495 // extern ? CameraRR01(?);
496 // extern ? CameraCotMC00(?);
497 // extern ? CameraSL00(?);
498 // extern ? camera_change_set_free_roam_mode(?);
499 // extern ? camera_change_hmc_maze_entrance(?);
500 // extern ? CameraHMC02(?);
501 // extern ? CameraHMC03(?);
502 // extern ? CameraHMC04(?);
503 // extern ? CameraHMC05(?);
504 // extern ? CameraSSL00(?);
505 // extern ? CameraSSL0102(?);
506 // extern ? CameraSSL03(?);
507 // extern ? CameraTHI00(?);
508 // extern ? CameraTHI01(?);
509 // extern ? CameraRR07(?);
510 // extern ? CameraRR08(?);
511 // extern ? camera_change_hmc_cotmc_pool_entry(?);
512 // extern ? CameraInside20(?);
513 // extern ? CameraInside1E(?);
514 // extern ? CameraInside1F(?);
515 // extern ? CameraInside01(?);
516 // extern ? CameraInside1213(?);
517 // extern ? CameraUnused(?);
518 // extern ? CameraInside00(?);
519 // extern ? CameraInside0E(?);
520 // extern ? CameraInside0F(?);
521 // extern ? bbh_room_6_camera(?);
522 // extern ? CameraBBH24(?);
523 // extern ? CameraBBH2E2F(?);
524 // extern ? bbh_room_1_camera(?);
525 // extern ? CameraBBH01(?);
526 // extern ? bbh_room_2_lower_camera(?);
527 // extern ? bbh_room_4_camera(?);
528 // extern ? bbh_room_8_camera(?);
529 // extern ? bbh_room_5_library_camera(?);
530 // extern ? bbh_room_5_library_to_hidden_transition(?);
531 // extern ? bbh_room_5_hidden_to_library_transition(?);
532 // extern ? bbh_room_5_hidden_camera(?);
533 // extern ? bbh_room_3_camera(?);
534 // extern ? bbh_room_7_mr_i_camera(?);
535 // extern ? bbh_room_7_mr_i_to_coffins_transition(?);
536 // extern ? bbh_room_7_coffins_to_mr_i_transition(?);
537 // extern ? CameraBBH3033(?);
538 // extern ? CameraBBH34(?);
539 // extern ? CameraBBH38(?);
540 // extern ? bbh_room_12_upper_camera(?);
541 // extern ? CameraBBH00(?);
542 // extern ? bbh_room_2_library_camera(?);
543 // extern ? bbh_room_2_library_to_trapdoor_transition(?);
544 // extern ? bbh_room_2_trapdoor_camera(?);
545 // extern ? bbh_room_2_trapdoor_transition(?);
546 // extern ? bbh_room_9_attic_camera(?);
547 // extern ? bbh_room_9_attic_transition(?);
548 // extern ? bbh_room_9_mr_i_transition(?);
549 // extern ? bbh_room_13_balcony_camera(?);
550 // extern ? bbh_room_0_camera(?);
551 // extern ? camera_change_activate_ccm_slide_flag(?);
552 // extern ? camera_change_deactivate_ccm_slide_flag(?);
553 // extern ? surface_type_presets(?);
554 // extern ? set_preset_via_surface_or_input(?);
555 // extern ? surface_type_presets_thi(?);
556 extern s16 level_specific_camera_update(struct LevelCamera *); // postdefined
558 extern s32 func_8028F2F0(struct LevelCamera *, Vec3f, s16 *, s16);
559 extern void find_mario_relative_geometry(struct PlayerGeometry *); // postdefined
560 // extern ? func_8028F800(?);
561 extern u8 func_8028F834(u8);
562 extern s16 func_8028F8E0(u8, struct Object *, s16);
563 extern s16 func_8028F9A4(u8, struct Object *);
564 extern s16 func_8028F9E8(u8, struct Object *);
565 // extern ? set_cam_yaw_from_focus_and_pos(?);
566 // extern ? func_8028FABC(?);
567 // extern ? func_8028FAE0(?);
568 // extern ? cap_switch_save(?);
569 // extern ? func_8028FB80(?);
570 // extern ? func_8028FBD8(?);
571 // extern ? func_8028FD94(?);
572 // extern ? Unknown8028FDE8(?);
573 // extern ? Cutscene26Todo_0(?);
574 // extern ? Unknown8028FE50(?);
575 // extern ? CutsceneIntroPeach0_2(?);
576 // extern ? CutsceneIntroPeach2_1(?);
577 // extern ? func_8028FEDC(?);
578 // extern ? move_credits_camera(?);
579 // extern ? func_80290144(?);
580 // extern ? func_802901B4(?);
581 // extern ? func_80290224(?);
582 // extern ? func_802902A8(?);
583 // extern ? unused_vec3s_to_vec3f(?);
584 // extern ? unused_vec3f_to_vec3s(?);
585 // extern ? rotate_camera(?);
586 // extern ? CutsceneEnterSomething8029041C(?);
587 // extern ? Unknown80290450(?);
588 // extern ? rotate_and_move_vec3f(?);
589 // extern ? func_80290514(?);
590 // extern ? func_80290564(?);
591 // extern ? func_80290598(?);
592 // extern ? Unknown802905C8(?);
593 // extern ? Cutscene0FTodo_0(?);
594 // extern ? Cutscene0FTodo_1(?);
595 // extern ? CutscenePeachEnd80290604(?);
596 // extern ? CutscenePeachEnd8029065C(?);
597 // extern ? CutscenePeachEnd0(?);
598 // extern ? CutscenePeachEnd2(?);
599 // extern ? CutscenePeachEnd367_1(?);
600 // extern ? CutscenePeachEnd80290870(?);
601 // extern ? CutscenePeachEnd3(?);
602 // extern ? CutscenePeachEnd1(?);
603 // extern ? CutscenePeachEnd80290A34(?);
604 // extern ? CutscenePeachEnd4(?);
605 // extern ? CutscenePeachEnd80290B88(?);
606 // extern ? CutscenePeachEnd80290BC8(?);
607 // extern ? CutscenePeachEnd80290C3C(?);
608 // extern ? CutscenePeachEnd80290C78(?);
609 // extern ? CutscenePeachEnd5(?);
610 // extern ? CutscenePeachEnd6(?);
611 // extern ? CutscenePeachEnd80290E8C(?);
612 // extern ? CutscenePeachEnd7(?);
613 // extern ? CutscenePeachEnd8(?);
614 // extern ? CutscenePeachEnd80291014(?);
615 // extern ? CutscenePeachEnd80291078(?);
616 // extern ? CutscenePeachEnd9(?);
617 // extern ? CutscenePeachEnd802911A4(?);
618 // extern ? CutscenePeachEnd8029120C(?);
619 // extern ? CutscenePeachEndA(?);
620 // extern ? CutscenePeachEndB(?);
621 // extern ? CutsceneGrandStar80291324(?);
622 // extern ? CutsceneGrandStar8029139C(?);
623 // extern ? CutsceneGrandStar80291474(?);
624 // extern ? CutsceneGrandStar802914D8(?);
625 // extern ? CutsceneGrandStar80291528(?);
626 // extern ? CutsceneGrandStar802915B4(?);
627 // extern ? CutsceneGrandStar802915FC(?);
628 // extern ? CutsceneGrandStar0(?);
629 // extern ? CutsceneGrandStar80291770(?);
630 // extern ? CutsceneGrandStar80291844(?);
631 // extern ? CutsceneGrandStar802918D8(?);
632 // extern ? CutsceneGrandStar802919F8(?);
633 // extern ? CutsceneGrandStar1(?);
634 // extern ? func_80291BBC(?);
635 // extern ? CutsceneDance80291C4C(?);
636 // extern ? CutsceneStarDance80291CE4(?);
637 // extern ? CutsceneStarDance80291D30(?);
638 // extern ? CutsceneStarDance80291D78(?);
639 // extern ? Unknown80291DC0(?);
640 // extern ? CutsceneStarDance80291DD4(?);
641 // extern ? CutsceneStarDance80291E0C(?);
642 // extern ? CutsceneStarDance80291E44(?);
643 // extern ? CutsceneStarDance1(?);
644 // extern ? func_80291FE8(?);
645 // extern ? CutsceneStarDance8029209C(?);
646 // extern ? CutsceneStarDance80292190(?);
647 // extern ? CutsceneStarDance80292228(?);
648 // extern ? CutsceneStarDance80292334(?);
649 // extern ? CutsceneStarDance802923E0(?);
650 // extern ? CutsceneStarDance8029240C(?);
651 // extern ? CutsceneStarDance3(?);
652 // extern ? CutsceneStarDance802925C0(?);
653 // extern ? CutsceneStarDance80292740(?);
654 // extern ? CutsceneStarDance802927EC(?);
655 // extern ? func_80292884(?);
656 // extern ? CutsceneStarDance80292900(?);
657 // extern ? CutsceneStarDance80292958(?);
658 // extern ? CutsceneStarDance802929A4(?);
659 // extern ? CutsceneStarDance2(?);
660 // extern ? CutsceneKeyDance80292AB0(?);
661 // extern ? CutsceneKeyDance80292B24(?);
662 // extern ? CutsceneKeyDance80292B80(?);
663 // extern ? CutsceneKeyDance80292BE0(?);
664 // extern ? CutsceneKeyDance80292C4C(?);
665 // extern ? CutsceneKeyDance80292CB4(?);
666 // extern ? CutsceneKeyDance80292CE8(?);
667 // extern ? CutsceneKeyDance80292D14(?);
668 // extern ? CutsceneKeyDance(?);
669 // extern ? CutsceneEnterBowserPlatform80292E48(?);
670 // extern ? CutsceneEnterBowserPlatform80292E74(?);
671 // extern ? CutsceneEnterBowserPlatform80292E98(?);
672 // extern ? CutsceneEnterBowserPlatform80292F08(?);
673 // extern ? CutsceneEnterBowserPlatform80292FA0(?);
674 // extern ? CutsceneEnterBowserPlatform80292FE4(?);
675 // extern ? CutsceneEnterBowserPlatform8029305C(?);
676 // extern ? CutsceneEnterBowserPlatform8029309C(?);
677 // extern ? func_802930C8(?);
678 // extern ? CutsceneEnterBowserPlatform802930F4(?);
679 // extern ? CutsceneEnterBowserPlatform802931A8(?);
680 // extern ? CutsceneEnterBowserPlatform1(?);
681 // extern ? CutsceneEnterBowserPlatform2(?);
682 // extern ? CutsceneEnterBowserPlatform0(?);
683 // extern ? CutsceneStarSpawn8029347C(?);
684 // extern ? CutsceneStarSpawn802934A8(?);
685 // extern ? CutsceneStarSpawn80293530(?);
686 // extern ? CutsceneStarSpawn802935B4(?);
687 // extern ? CutsceneStarSpawn0(?);
688 // extern ? CutsceneStarSpawn1(?);
689 // extern ? CutsceneStarSpawn2(?);
690 // extern ? CutsceneExitWaterfall80293750(?);
691 // extern ? Cutscene80293794(?);
692 // extern ? CutsceneExitWaterfall0(?);
693 // extern ? CutsceneFallCommon1(?);
694 // extern ? CutsceneFallToCastleGrounds802938EC(?);
695 // extern ? CutsceneFallToCastleGrounds0(?);
696 // extern ? CutsceneSpecialStarSpawn8029398C(?);
697 // extern ? CutsceneSpecialStarSpawn802939E4(?);
698 // extern ? CutsceneSpecialStarSpawn80293A48(?);
699 // extern ? CutsceneSpecialStarSpawn80293A8C(?);
700 // extern ? CutsceneSpecialStarSpawn80293ACC(?);
701 // extern ? CutsceneSpecialStarSpawn80293C8C(?);
702 // extern ? CutsceneSpecialStarSpawn0(?);
703 // extern ? CutsceneSpecialStarSpawn1(?);
704 // extern ? func_80293DE8(?);
705 // extern ? CutscenePrepareCannon802940D8(?);
706 // extern ? CutscenePrepareCannon80294164(?);
707 // extern ? func_802941CC(?);
708 // extern ? CutscenePrepareCannon80294260(?);
709 // extern ? CutscenePrepareCannon0(?);
710 // extern ? CutscenePrepareCannon1(?);
711 // extern ? func_802944A8(?);
712 // extern ? func_80294538(?);
713 // extern ? CutsceneDeath80294574(?);
714 // extern ? CutsceneDeath802945E8(?);
715 // extern ? CutsceneDeath1(?);
716 // extern ? CutsceneDeath80294684(?);
717 // extern ? CutsceneDeath80294708(?);
718 // extern ? Unknown80294748(?);
719 // extern ? CutsceneDeath2(?);
720 // extern ? CutsceneBBHDeath802947E4(?);
721 // extern ? CutsceneBBHDeath80294868(?);
722 // extern ? CutsceneBBHDeath(?);
723 // extern ? CutsceneQuicksandDeath80294918(?);
724 // extern ? CutsceneQuicksandDeath80294954(?);
725 // extern ? CutsceneQuicksandDeath0(?);
726 // extern ? Cutscene1ATodo80294A70(?);
727 // extern ? Cutscene1ATodo80294B00(?);
728 // extern ? Cutscene1ATodo80294BB0(?);
729 // extern ? Cutscene1ATodo(?);
730 // extern ? CutsceneEnterPool80294CD0(?);
731 // extern ? CutsceneEnterPool80294D9C(?);
732 // extern ? CutsceneEnterPool0(?);
733 // extern ? Cutscene26Todo80294E40(?);
734 // extern ? Cutscene26Todo80294EAC(?);
735 // extern ? Cutscene26Todo80294ED8(?);
736 // extern ? Cutscene26Todo80294F40(?);
737 // extern ? Cutscene26Todo80295030(?);
738 // extern ? Cutscene26Todo80295100(?);
739 // extern ? Cutscene26Todo8029512C(?);
740 // extern ? Cutscene26Todo_1(?);
741 // extern ? Cutscene26Todo_2(?);
742 // extern ? CutsceneEnterPyramidTop80295294(?);
743 // extern ? CutsceneEnterPyramidTop0(?);
744 // extern ? Unknown8029538C(?);
745 // extern ? CutsceneDialog80295418(?);
746 // extern ? CutsceneDialog80295568(?);
747 // extern ? CutsceneDialog8029579C(?);
748 // extern ? CutsceneDialog0(?);
749 // extern ? CutsceneDialog1(?);
750 // extern ? CutsceneDialog2(?);
751 // extern ? CutsceneReadMessage80295998(?);
752 // extern ? Unknown80295A28(?);
753 // extern ? CutsceneReadMessage0(?);
754 // extern ? CutsceneReadMessage1(?);
755 // extern ? CutsceneReadMessage2(?);
756 // extern ? CutsceneExitSuccess1(?);
757 // extern ? CutsceneExitSuccess2(?);
758 // extern ? CutsceneExitSuccess4(?);
759 // extern ? CutsceneExitSuccess3(?);
760 // extern ? CutsceneExitBowserSuccess80296014(?);
761 // extern ? CutsceneExitSuccess5(?);
762 // extern ? CutsceneExitBowserSuccess0(?);
763 // extern ? CutsceneExitNonPainting1(?);
764 // extern ? CutsceneBBHExitSuccess02961D4(?);
765 // extern ? CutsceneBBHExitSuccess0(?);
766 // extern ? CutsceneNonPaintingDeath0_1(?);
767 // extern ? Cutscene1CTodo_0(?);
768 // extern ? CutsceneNonPaintingDeath0_2(?);
769 // extern ? CutsceneNonPaintingDeath0(?);
770 // extern ? CutsceneCapSwitchPress0_1(?);
771 // extern ? CutsceneCapSwitchPress0_4(?);
772 // extern ? CutsceneCapSwitchPress0_5(?);
773 // extern ? CutsceneCapSwitchPress0_2(?);
774 // extern ? CutsceneCapSwitchPress0_3(?);
775 // extern ? CutsceneCapSwitchPress0_6(?);
776 // extern ? Unknown802968E8(?);
777 // extern ? CutsceneCapSwitchPress(?);
778 // extern ? CutsceneUnlockKeyDoor80296AC0(?);
779 // extern ? CutsceneUnlockKeyDoor80296B84(?);
780 // extern ? CutsceneUnlockKeyDoor80296C08(?);
781 // extern ? CutsceneUnlockKeyDoor80296C64(?);
782 // extern ? CutsceneUnlockKeyDoor80296C78(?);
783 // extern ? CutsceneUnlockKeyDoor80296CFC(?);
784 // extern ? CutsceneUnlockKeyDoor0(?);
785 // extern ? func_80296DDC(?);
786 // extern ? peach_letter_text(?);
787 // extern ? CutsceneIntroPeachCommon(?);
788 // extern ? CutsceneIntroPeach4(?);
789 // extern ? CutsceneIntroPeach3_2(?);
790 // extern ? CutsceneIntroPeach2_2(?);
791 // extern ? CutsceneIntroPeach0_1(?);
792 // extern ? CutsceneIntroPeach3_1(?);
793 // extern ? CutsceneIntroPeach3_3(?);
794 // extern ? intro_pipe_exit_text(?);
795 // extern ? CutsceneIntroPeach2(?);
796 // extern ? CutsceneIntroPeach3(?);
797 // extern ? CutsceneIntroPeach1(?);
798 // extern ? CutsceneIntroPeach0(?);
799 // extern ? CutsceneEndWaving0_1(?);
800 // extern ? CutsceneEndWaving0(?);
801 // extern ? CutsceneCredits0_1(?);
802 // extern ? CutsceneCredits0(?);
803 // extern ? CutsceneSlidingDoorsOpen0_1(?);
804 // extern ? CutsceneSlidingDoorsOpen0_2(?);
805 // extern ? CutsceneSlidingDoorsOpen0_3(?);
806 // extern ? CutsceneSlidingDoorsOpen0_4(?);
807 // extern ? CutsceneSlidingDoorsOpen0_5(?);
808 // extern ? CutsceneSlidingDoorsOpen0(?);
809 // extern ? CutsceneDoubleDoorsOpen1(?);
810 // extern ? CutsceneEnterPainting0_1(?);
811 // extern ? CutsceneEnterPainting0(?);
812 // extern ? CutsceneExitPainting80298094(?);
813 // extern ? CutsceneExitPainting80298230(?);
814 // extern ? CutsceneExitPainting802982CC(?);
815 // extern ? CutsceneExitPainting0(?);
816 // extern ? Cutscene11Todo_0(?);
817 // extern ? Cutscene11Todo_1(?);
818 // extern ? CutsceneExitPainting1(?);
819 // extern ? CutsceneEnterCannon2(?);
820 // extern ? CutsceneEnterCannon1(?);
821 // extern ? CutsceneEnterCannon0(?);
822 // extern ? CutsceneDoor0(?);
823 // extern ? CutsceneDoor1(?);
824 // extern ? CutsceneDoorWarp1(?);
825 // extern ? CutsceneDoor2(?);
826 // extern ? CutsceneDoor3(?);
827 // extern ? CutsceneDoor4(?);
828 // extern ? CutsceneDoorAB_2(?);
829 extern void handle_cutscenes(struct LevelCamera *);
831 extern s32 func_80299C60(s32, s16);
832 extern void func_80299C98(s16, s16, s16);
833 // extern ? func_80299D00(?);
834 
835 extern void set_fov_function(u8);
836 extern void func_8029A494(u8);
837 extern void func_8029A514(u8, f32, f32, f32);
838 // extern ? Unknown8029A664(?);
839 // extern ? Unknown8029A724(?);
840 extern void func_8029A7DC(struct Object *, Vec3f, s16, s16, s16, s16);
841 // extern ? func_8029A87C(?);
842 // extern ? BehBeginningPeachLoop(?);
843 // extern ? func_8029AB70(?);
844 // extern ? func_8029AC3C(?);
845 // extern ? func_8029ACAC(?);
846 // extern ? BehBeginningLakituLoop(?);
847 // extern ? BehEndBirds1Loop(?);
848 // extern ? BehEndBirds2Loop(?);
849 // extern ? func_8029B964(?);
850 // extern ? BehIntroSceneLoop(?);
851 
852 #endif /* _CAMERA_H */
s16 func_8028F9A4(u8, struct Object *)
Definition: camera.c:5308
f32 currFloorHeight
Definition: camera.h:265
s32 select_or_activate_mario_cam(s32)
Definition: camera.c:2708
f32 Vec3f[3]
Definition: types.h:23
Vec3f unk4
Definition: camera.h:317
Vec3f unk0
Definition: camera.h:281
s16 shakeRollMagIncrement
Definition: camera.h:349
Vec3f sFixedPresetBasePosition
Definition: camera.c:124
s16 unk1C
Definition: camera.h:284
void play_camera_buzz_if_cbutton(void)
Definition: camera.c:3632
Vec3f marioPos
Definition: camera.h:187
s16 shakeYawIncrement
Definition: camera.h:351
s8 unk0
Definition: camera.h:193
s32 find_c_buttons_pressed(u16, u16, u16)
Definition: camera.c:2834
void object_pos_to_vec3f(Vec3f, struct Object *)
Definition: camera.c:2599
void func_8028AA80(s16, s16, s16, f32, f32, f32, f32)
Definition: camera.c:3497
s16 gCameraFlags1
Definition: camera.c:63
s32 unk18
Definition: camera.h:205
f32 fieldOfView
Definition: camera.h:246
signed char s8
Definition: ultratypes.h:11
s32 find_and_return_count_wall_collisions(Vec3f, f32, f32)
Definition: camera.c:2887
void set_camera_cutscene_table(struct LevelCamera *a, u8 b)
If camera's cutscene table is not already set to a value, set it to that value.
Definition: camera.c:3834
s16 unk1C[2]
Definition: camera.h:174
s16 calculate_verticle_angle(Vec3f, Vec3f)
Definition: camera.c:3399
struct CameraState gCameraStatus
Definition: camera.c:66
Vec3f pos
Definition: camera.h:308
void dummy_802877EC(struct LevelCamera *)
void set_camera_shake_2(s16)
Definition: camera.c:258
CmdRet(* CameraCommandProc)(struct LevelCamera *a)
Definition: camera.h:222
u8 modeActive
Definition: camera.h:327
unsigned short int u16
Definition: ultratypes.h:14
u8 pad
Definition: camera.h:188
s32 clamp_positions_and_find_yaw_angle(Vec3f, Vec3f, f32, f32, f32, f32)
Definition: camera.c:3238
Vec3f unkC
Definition: camera.h:282
s16 cameraKeyCutsceneRollOffset
Definition: camera.h:357
s32 camera_approach_f32_symmetric_bool(f32 *, f32, f32)
Approaches a value by a given increment, returns FALSE if the target is reached.
Definition: camera.c:3129
s32 func_8028AF24(struct LevelCamera *a, s16 b)
Definition: camera.c:3581
void update_camera(struct LevelCamera *)
Definition: camera.c:2121
CameraCommandProc unk4
Definition: camera.h:227
s32 timer
Definition: camera.h:186
u8 return_cutscene_table()
signed short int s16
Definition: ultratypes.h:13
Vec3f focus
Definition: camera.h:309
void operate_c_up_looking(struct LevelCamera *)
u32 lastFrameAction
Definition: camera.h:358
void vec3f_to_object_pos(struct Object *, Vec3f)
Definition: camera.c:2605
s16 shakeYawMagIncrement
Definition: camera.h:352
void set_pos_from_face_angle_and_vec3f(Vec3f, Vec3f, Vec3f, Vec3s)
Definition: camera.c:4048
float unkA4
Definition: camera.h:353
Vec3f pos
Definition: camera.h:346
void reset_camera(struct LevelCamera *)
Definition: camera.c:2293
s32 camera_approach_s16_symmetric_bool(s16 *a, s16 b, s16 c)
Definition: camera.c:3068
long long int force_structure_alignment
Definition: camera.h:196
s16 gCameraModeFlags
Definition: camera.c:59
Definition: camera.h:262
s16 pitch2
Definition: camera.h:183
void set_spline_values(u8)
Definition: camera.c:2752
u8 modeDefault
Definition: camera.h:328
s16 pitch1
Definition: camera.h:180
void shake_camera_roll(s16 *)
Definition: camera.c:3568
void set_face_angle_from_spline(Vec3f, Vec3f)
Definition: camera.c:2786
f32 unk10
Definition: camera.h:249
u8 func_8028F834(u8)
Definition: camera.c:5274
void calculate_angles(Vec3f, Vec3f, s16 *, s16 *)
Definition: camera.c:3417
Definition: camera.h:255
Vec3f unk28
Definition: camera.h:207
f32 unk1C
Definition: camera.h:311
s16 currCeilType
Definition: camera.h:268
void rotate_in_xz(Vec3f, Vec3f, s16)
Rotates a vector in the horizontal plane and copies it to a new vector.
Definition: camera.c:3452
u8 D_8032D0B8[]
Definition: camera.c:1135
s16 shakePitchOffset
Definition: camera.h:335
s16 yaw1
Definition: camera.h:181
s16 unkC
Definition: camera.h:230
void play_camera_buzz_if_cdown(void)
Definition: camera.c:3627
f32 prevCeilHeight
Definition: camera.h:274
s32 unk0
Definition: camera.h:316
Definition: camera.h:288
s16 Vec3s[3]
Definition: types.h:24
void vec3f_sub(Vec3f, Vec3f)
Definition: camera.c:2593
void find_mario_relative_geometry(struct PlayerGeometry *)
Definition: camera.c:5239
void shake_camera_pitch()
u16 gCButtonsPressed
Definition: camera.c:64
s16 unk16
Definition: camera.h:251
f32 unk14
Definition: camera.h:303
void scale_along_line(Vec3f, Vec3f, Vec3f, f32)
Calculates the distance between two points and sets a vector to a point scaled along a line between t...
Definition: camera.c:3371
s32 update_camera_status(struct LevelCamera *)
Definition: camera.c:2869
void func_80285BD8(struct LevelCamera *, s16, s16)
Definition: camera.c:1999
s16 currFloorType
Definition: camera.h:266
Vec3f unk10
Definition: camera.h:318
struct LevelCamera * gCurrLevelCamera
Definition: camera.c:102
s8 unk0
Definition: camera.h:257
struct Surface * currCeil
Definition: camera.h:267
Vec3f unk4
Definition: camera.h:301
s16 shakeRollOffset
Definition: camera.h:347
Definition: camera.h:224
s32 func_80299C60(s32, s16)
Definition: camera.c:8309
s16 unk3A
Definition: camera.h:209
f32 unk10
Definition: camera.h:302
s16 unk18
Definition: camera.h:252
s16 func_8028F9E8(u8, struct Object *)
Definition: camera.c:5313
void approach_camera_height(struct LevelCamera *, f32, f32)
Definition: camera.c:4010
void func_8027F440(s16, f32, f32, f32)
Definition: camera.c:299
float f32
Definition: ultratypes.h:29
Vec3f unk60
Definition: camera.h:339
f32 prevFloorHeight
Definition: camera.h:271
s16 unk4
Definition: camera.h:292
struct CameraPlayerStatus gPlayerStatusForCamera[2]
Definition: camera.c:35
s16 shakePitchIncrement
Definition: camera.h:336
void set_camera_roll_shake(s16, s16, s16)
Definition: camera.c:3489
s16 unk0
Definition: camera.h:290
s16 unk1E
Definition: camera.h:285
Definition: camera.h:237
s16 gCameraMovementFlags
Definition: camera.c:90
at end of structure union member declaration In standard C each member declaration must be terminated by a
Definition: err.english.cc:690
s32 clamp_pitch(Vec3f a, Vec3f b, s16 c, s16 d)
Definition: camera.c:2937
s32 gCutsceneActive
Definition: camera.c:100
s16 yaw2
Definition: camera.h:184
void func_8028B36C(void)
Definition: camera.c:3663
Definition: types.h:122
s16 unk10
Definition: camera.h:232
s32 func_8028F2F0(struct LevelCamera *, Vec3f, s16 *, s16)
Definition: camera.c:5169
Vec3s unk2
Definition: camera.h:259
u8 unk0
Definition: camera.h:245
void instant_warp_camera_update(f32, f32, f32)
Definition: camera.c:3989
void set_camera_shake(s16)
Definition: camera.c:185
s32 func_80287CFC(Vec3f, struct CinematicCameraTable[], s16 *, f32 *)
Definition: camera.c:2659
Definition: camera.h:279
void select_mario_cam_mode(void)
Definition: camera.c:2541
f32 unk18
Definition: camera.h:310
Vec3f pos
Definition: camera.h:171
s16 yaw
Definition: camera.h:332
s16 prevCeilType
Definition: camera.h:275
f32 dist2
Definition: camera.h:185
s16 unk14
Definition: camera.h:234
s32 is_within_100_units_of_mario(f32, f32, f32)
Definition: camera.c:2956
struct Surface * prevFloor
Definition: camera.h:270
Vec3s unk1C
Definition: camera.h:319
f32 currCeilHeight
Definition: camera.h:269
Vec3f focus
Definition: camera.h:345
f32 unk8
Definition: camera.h:247
Definition: camera.h:323
void set_or_approach_vec3f_exponential(Vec3f, Vec3f, f32, f32, f32)
Definition: camera.c:3051
s16 unk2
Definition: camera.h:291
struct Object * gCutsceneFocus
Definition: camera.c:106
void approach_vec3f_exponential(Vec3f, Vec3f, f32, f32, f32)
Applies the approach_f32_exponential_bool function to each of the X, Y, & Z components of the given v...
Definition: camera.c:3044
Vec3s shakeMagnitude
Definition: camera.h:334
s32 approach_s16_exponential(s16, s16, s16)
Approaches an s16 value in the same fashion as approach_f32_exponential, returns the new value...
Definition: camera.c:3026
s16 storedYaw
Definition: camera.h:344
struct Surface * prevCeil
Definition: camera.h:273
Vec3f unk1C
Definition: camera.h:206
void play_sound_rbutton_changed(void)
Definition: camera.c:3659
s16 pitch
Definition: camera.h:331
s16 shakeYawOffset
Definition: camera.h:350
f32 camera_approach_f32_symmetric(f32, f32, f32)
Nearly the same as the above function, this one returns the new value in place of a bool...
Definition: camera.c:3156
f32 calc_hor_dist(Vec3f, Vec3f)
Finds the horizontal distance between two vectors.
Definition: camera.c:3441
Definition: camera.h:168
s16 unkBC
Definition: camera.h:359
s16 unkE
Definition: camera.h:231
void set_camera_yaw_shake(s16, s16, s16)
Definition: camera.c:3481
struct Object * gSecondCameraFocus
Definition: camera.c:109
f32 dist1
Definition: camera.h:182
Vec3s unk8
Definition: camera.h:195
s16 shakeRollIncrement
Definition: camera.h:348
Definition: types.h:188
void handle_cutscenes(struct LevelCamera *)
Definition: camera.c:8214
s16 unk12
Definition: camera.h:233
Vec3s faceAngle
Definition: camera.h:172
s32 set_or_approach_f32_exponential(f32 *, f32, f32)
Definition: camera.c:2966
f32 calc_abs_dist(Vec3f, Vec3f)
Finds the distance between two vectors.
Definition: camera.c:3429
void handle_c_button_movement(struct LevelCamera *)
Definition: camera.c:3764
f32 unk18
Definition: camera.h:283
Definition: area.h:151
void set_camera_pitch_shake(s16, s16, s16)
Definition: camera.c:3473
Definition: camera.h:202
void play_sound_cbutton_up(void)
Definition: camera.c:3643
s32 CmdRet
Definition: camera.h:219
u32 unkC
Definition: camera.h:248
void dummy_802877D8(struct LevelCamera *)
s16 trueYaw
Definition: camera.h:343
s8 area
Definition: camera.h:226
float focusDistance
Definition: camera.h:330
u32 action
Definition: camera.h:170
float unkAC
Definition: camera.h:355
s16 unk6
Definition: camera.h:293
s16 unk8
Definition: camera.h:228
f32 waterHeight
Definition: camera.h:276
void init_camera(struct LevelCamera *)
Definition: camera.c:2366
s16 sCameraSideCFlags
Definition: camera.c:61
s32 call_cutscene_func_in_time_range(CameraCommandProc, struct LevelCamera *, s16, s16)
Definition: camera.c:8300
unsigned char u8
Definition: ultratypes.h:12
s32 test_or_set_mario_cam_active(s32)
Definition: camera.c:2726
Definition: camera.h:306
s16 level_specific_camera_update(struct LevelCamera *)
Definition: camera.c:4973
s32 set_or_approach_s16_symmetric(s16 *a, s16 b, s16 c)
Definition: camera.c:3113
Definition: camera.h:191
s16 unk0
Definition: camera.h:300
Definition: camera.h:178
void init_transitional_movement(UNUSED struct LevelCamera *, s16)
Definition: camera.c:1969
s16 func_8028C824(Vec3f a, Vec3f b, Vec3f c, Vec3f d, Vec3f e, Vec3f f, s16 g)
Definition: camera.c:4078
s32 func_8028B3DC(struct LevelCamera *a, f32 b)
void shake_camera_yaw()
void func_8029A494(u8)
Definition: camera.c:8481
#define UNUSED
Definition: macros.h:13
struct Object * usedObj
Definition: camera.h:175
s16 unk14
Definition: camera.h:250
s16 func_8028F8E0(u8, struct Object *, s16)
Definition: camera.c:5290
void play_camera_buzz_if_c_sideways(void)
Definition: camera.c:3637
void play_sound_button_change_blocked(void)
Definition: camera.c:3655
s32 stop_mario(s32)
Definition: camera.c:3753
s16 prevFloorType
Definition: camera.h:272
s32 func_8028A0D4(Vec3f a, Vec3f b, struct Surface *c, s16 d, s16 e)
Definition: camera.c:3334
s32 approach_s16_exponential_bool(s16 *, s16, s16)
Approaches an s16 value in the same fashion as approach_f32_exponential_bool, returns TRUE if target ...
Definition: camera.c:3005
s16 unk4
Definition: camera.h:240
CameraCommandProc unk0
Definition: camera.h:239
signed int s32
Definition: ultratypes.h:15
void set_fixed_cam_axis_sa_lobby(s16 preset)
void func_80299C98(s16, s16, s16)
Definition: camera.c:8315
u8 unk1
Definition: camera.h:258
s16 unk22
Definition: camera.h:320
void func_8029A514(u8, f32, f32, f32)
Definition: camera.c:8492
Definition: camera.h:298
void func_8029A7DC(struct Object *, Vec3f, s16, s16, s16, s16)
Definition: camera.c:8524
Vec3s unk6C
Definition: camera.h:340
void resolve_geometry_collisions(Vec3f, Vec3f)
void set_fov_function(u8)
Definition: camera.c:8477
s16 unkA
Definition: camera.h:229
Definition: camera.h:314
s16 roll
Definition: camera.h:342
s16 shakePitchMagIncrement
Definition: camera.h:337
struct Surface * currFloor
Definition: camera.h:264
unsigned int u32
Definition: ultratypes.h:16
void random_vec3s(Vec3s a, s16 b, s16 c, s16 d)
Generate a vector with all three values about zero.
Definition: camera.c:3181
void rotate_in_yz(Vec3f, Vec3f, s16)
Rotates a vector in the YZ plane and copies it to a new vector.
Definition: camera.c:3464
Vec3s unk16
Definition: camera.h:173
s32 approach_f32_exponential_bool(f32 *, f32, f32)
Approaches an f32 value by taking the difference between the target and current value and adding a fr...
Definition: camera.c:2982
float unkA8
Definition: camera.h:354
f32 approach_f32_exponential(f32, f32, f32)
Nearly the same as the above function, returns new value instead.
Definition: camera.c:2995
Definition: camera.h:243
float unkB0
Definition: camera.h:356
void play_sound_cbutton_down(void)
Definition: camera.c:3647
s16 calculate_yaw(Vec3f, Vec3f)
Definition: camera.c:3408
void play_sound_cbutton_side(void)
Definition: camera.c:3651