mirror of
https://github.com/zeldaret/mm.git
synced 2024-11-23 12:59:44 +00:00
6bdb7c31ea
* OK, start documentation * More documentation Co-authored-by: Tharo <17233964+Thar0@users.noreply.github.com> * Decompile func_80167F0C * FbdemoWipe4 OK and documented * Mark bug in Wipe4 * More docs Co-authored-by: Tharo <17233964+Thar0@users.noreply.github.com> * Mark bug * Few more notes * Fix function in Play * Format * Review * Name Play_PostWorldDraw * functions.h... * Revert func_80167F0C * Review * functions.h * Review * Update Wipe4 * Rename system * Format * Put skeleton back in the cupboard * bss * Fix build * rename to z_visfbuf * review * format * bss * some bss cleanup * review * bss * review --------- Co-authored-by: Tharo <17233964+Thar0@users.noreply.github.com> Co-authored-by: angie <angheloalf95@gmail.com>
66 lines
2.4 KiB
C
66 lines
2.4 KiB
C
#ifndef Z64QUAKE_H
|
|
#define Z64QUAKE_H
|
|
|
|
#include "z64camera.h"
|
|
#include "z64math.h"
|
|
|
|
struct PlayState;
|
|
|
|
typedef struct {
|
|
/* 0x00 */ Vec3f atOffset;
|
|
/* 0x0C */ Vec3f eyeOffset;
|
|
/* 0x18 */ s16 upRollOffset;
|
|
/* 0x1A */ s16 fovOffset;
|
|
/* 0x1C */ f32 maxOffset; // Set to scaled max data of struct (mag for Vec3f), never used
|
|
} ShakeInfo; // size = 0x20
|
|
|
|
typedef enum {
|
|
/* 0 */ QUAKE_TYPE_NONE,
|
|
/* 1 */ QUAKE_TYPE_1, // Periodic, sustaining, random X perturbations
|
|
/* 2 */ QUAKE_TYPE_2, // Aperiodic, sustaining, random X perturbations
|
|
/* 3 */ QUAKE_TYPE_3, // Periodic, decaying
|
|
/* 4 */ QUAKE_TYPE_4, // Aperiodic, decaying, random X perturbations
|
|
/* 5 */ QUAKE_TYPE_5, // Periodic, sustaining
|
|
/* 6 */ QUAKE_TYPE_6 // See below
|
|
} QuakeType;
|
|
|
|
s16 Quake_Request(Camera* camera, u32 type);
|
|
|
|
u32 Quake_SetSpeed(s16 index, s16 speed);
|
|
u32 Quake_SetPerturbations(s16 index, s16 y, s16 x, s16 fov, s16 roll);
|
|
u32 Quake_SetDuration(s16 index, s16 duration);
|
|
u32 Quake_SetOrientation(s16 index, s16 isRelativeToScreen, Vec3s orientation);
|
|
|
|
s16 Quake_GetTimeLeft(s16 index);
|
|
s32 Quake_GetNumActiveQuakes(void);
|
|
u32 Quake_RemoveRequest(s16 index);
|
|
|
|
void Quake_Init(void);
|
|
s16 Quake_Update(Camera* camera, ShakeInfo* camShake);
|
|
|
|
#define DISTORTION_TYPE_HOT_ROOM (1 << 0) // Hot Room
|
|
#define DISTORTION_TYPE_NON_ZORA_SWIMMING (1 << 2) // Non-Zora swimming
|
|
#define DISTORTION_TYPE_ZORA_SWIMMING (1 << 3) // Zora swimming, also used for boss warp pad part 1
|
|
|
|
#define DISTORTION_TYPE_UNDERWATER_ENTRY (1 << 4) // Entering water, also used for boss warp pad part 2
|
|
#define DISTORTION_TYPE_SONG_OF_TIME (1 << 5) // Song of Time effects
|
|
#define DISTORTION_TYPE_ZORA_KICK (1 << 6) // PLAYER_MWA_ZORA_PUNCH_KICK
|
|
#define DISTORTION_TYPE_UNK_ATTACK (1 << 7) // Impossible to achieve, inferred to be another `PLAYER_MWA_`,
|
|
|
|
#define DISTORTION_TYPE_GORON_BUTT (1 << 8) // PLAYER_MWA_GORON_PUNCH_BUTT
|
|
#define DISTORTION_TYPE_MASK_TRANSFORM_1 (1 << 9) // Mask transformation part 1
|
|
#define DISTORTION_TYPE_BOSS_WARP (1 << 10) // Boss warp pad part 3
|
|
#define DISTORTION_TYPE_MASK_TRANSFORM_2 (1 << 11) // Mask transformation part 2
|
|
|
|
void Distortion_Request(s32 type);
|
|
void Distortion_SetDuration(s16 duration);
|
|
|
|
s16 Distortion_GetTimeLeft(void);
|
|
s16 Distortion_GetType(void);
|
|
void Distortion_RemoveRequest(s32 type);
|
|
|
|
void Distortion_Init(struct PlayState* play);
|
|
void Distortion_Update(void);
|
|
|
|
#endif
|