Shipwright/soh/src/overlays/actors/ovl_Boss_Tw/z_boss_tw.h

181 lines
4.9 KiB
C

#ifndef Z_BOSS_TW_H
#define Z_BOSS_TW_H
#include "ultra64.h"
#include "global.h"
typedef enum {
/* 0 */ TWEFF_NONE,
/* 1 */ TWEFF_DOT,
/* 2 */ TWEFF_2,
/* 3 */ TWEFF_3,
/* 4 */ TWEFF_RING,
/* 5 */ TWEFF_PLYR_FRZ,
/* 6 */ TWEFF_FLAME,
/* 7 */ TWEFF_MERGEFLAME,
/* 8 */ TWEFF_SHLD_BLST,
/* 9 */ TWEFF_SHLD_DEFL,
/* 10 */ TWEFF_SHLD_HIT
} TwEffType;
typedef enum {
/* 0 */ EFF_ARGS,
/* 1 */ EFF_UNKS1,
/* 2 */ EFF_WORK_MAX
} EffectWork;
typedef enum {
/* 0 */ EFF_SCALE,
/* 1 */ EFF_DIST,
/* 2 */ EFF_ROLL,
/* 3 */ EFF_YAW,
/* 4 */ EFF_FWORK_MAX
} EffectFWork;
typedef struct {
/* 0x0000 */ u8 type;
/* 0x0001 */ u8 frame;
/* 0x0004 */ Vec3f pos;
/* 0x0010 */ Vec3f curSpeed;
/* 0x001C */ Vec3f accel;
/* 0x0028 */ Color_RGB8 color;
/* 0x002C */ s16 alpha;
/* 0x002E */ s16 work[EFF_WORK_MAX];
/* 0x0034 */ f32 workf[EFF_FWORK_MAX];
/* 0x0044 */ Actor* target;
u32 epoch;
} BossTwEffect;
typedef enum {
/* 0 */ CS_TIMER_1,
/* 1 */ CS_TIMER_2,
/* 2 */ TW_PLLR_IDX,
/* 3 */ TAIL_IDX,
/* 4 */ BLINK_IDX,
/* 5 */ INVINC_TIMER,
/* 6 */ FOG_TIMER,
/* 7 */ CAN_SHOOT,
/* 8 */ UNK_S8,
/* 9 */ TW_BLINK_IDX,
/* 10 */ YAW_TGT,
/* 11 */ PLAYED_CHRG_SFX,
/* 12 */ BURN_TMR,
/* 13 */ WORK_MAX
} TwWork;
typedef enum {
/* 0 */ OUTR_CRWN_TX_X1,
/* 1 */ OUTR_CRWN_TX_X2,
/* 2 */ INNR_CRWN_TX_X1,
/* 3 */ INNR_CRWN_TX_X2,
/* 4 */ OUTR_CRWN_TX_Y1,
/* 5 */ OUTR_CRWN_TX_Y2,
/* 6 */ INNR_CRWN_TX_Y1,
/* 7 */ INNR_CRWN_TX_Y2,
/* 8 */ ANIM_SW_TGT,
/* 9 */ UNK_F9,
/* 9 */ KM_GD_FLM_A = 9,
/* 10 */ UNK_F10 = 10,
/* 10 */ TAIL_ALPHA = 10,
/* 10 */ KM_GD_SMOKE_A = 10,
/* 14 */ UNK_F11 = 11,
/* 15 */ KM_GRND_CRTR_A = 11,
/* 16 */ UNK_F12 = 12,
/* 17 */ KM_GD_FLM_SCL = 12,
/* 18 */ UNK_F13 = 13,
/* 19 */ KM_GD_CRTR_SCL = 13,
/* 20 */ UNK_F14,
/* 21 */ UNK_F15,
/* 22 */ UNK_F16,
/* 23 */ UNK_F17,
/* 24 */ UNK_F18,
/* 25 */ UNK_F19,
/* 26 */ FWORK_MAX
} TwFwork;
struct BossTw;
typedef void (*BossTwActionFunc)(struct BossTw*, GlobalContext* globalCtx);
typedef struct BossTw {
/* 0x0000 */ Actor actor;
/* 0x014C */ BossTwActionFunc actionFunc;
/* 0x0150 */ s16 work[WORK_MAX];
/* 0x0168 */ char unused_170[0xE]; // Likely unused Work variables
/* 0x0178 */ s16 timers[5];
/* 0x0184 */ f32 workf[FWORK_MAX];
/* 0x01D4 */ f32 fogR;
/* 0x01D8 */ f32 fogG;
/* 0x01DC */ f32 fogB;
/* 0x01E0 */ f32 fogNear;
/* 0x01E4 */ f32 fogFar;
/* 0x01E8 */ Vec3f blastTailPos[50];
/* 0x0440 */ s16 csState1;
/* 0x0444 */ Vec3f crownPos;
/* 0x0450 */ Vec3f scepterFlamePos[5];
/* 0x048C */ Vec3f beamOrigin;
/* 0x0498 */ Vec3f leftScepterPos;
/* 0x04A4 */ Vec3f rightScepterPos;
/* 0x04B0 */ Vec3f targetPos;
/* 0x04BC */ Vec3f groundBlastPos2;
/* 0x04C8 */ f32 rotateSpeed;
/* 0x04CC */ s16 eyeTexIdx;
/* 0x04CE */ s16 leftEyeTexIdx;
/* 0x04D0 */ f32 scepterAlpha;
/* 0x04D4 */ f32 flameAlpha;
/* 0x04D8 */ f32 spawnPortalAlpha;
/* 0x04DC */ f32 unk_4DC;
/* 0x04E0 */ f32 spawnPortalScale;
/* 0x04E4 */ f32 updateRate1;
/* 0x04E8 */ f32 flameRotation;
/* 0x04EC */ f32 portalRotation;
/* 0x04F0 */ f32 updateRate2;
/* 0x04F4 */ u8 twinrovaStun;
/* 0x04F8 */ f32 beamScale;
/* 0x04FC */ s16 beamShootState;
/* 0x0500 */ Vec3f groundBlastPos;
/* 0x050C */ Vec3f beamReflectionOrigin;
/* 0x0518 */ f32 beamPitch;
/* 0x051C */ f32 beamYaw;
/* 0x0520 */ f32 beamRoll;
/* 0x0524 */ Vec3s magicDir;
/* 0x052C */ f32 beamDist;
/* 0x0530 */ Vec3f unk_530;
/* 0x053C */ f32 beamReflectionPitch;
/* 0x0540 */ f32 beamReflectionYaw;
/* 0x0544 */ f32 unused_544;
/* 0x0548 */ f32 beamReflectionDist;
/* 0x054C */ Vec3f unk_54C;
/* 0x0558 */ Vec3f unk_558;
/* 0x0564 */ u8 visible;
/* 0x0565 */ u8 blastActive;
/* 0x0566 */ s16 blastType;
/* 0x0568 */ SkelAnime skelAnime;
/* 0x05AC */ ColliderCylinder collider;
/* 0x05F8 */ u8 unk_5F8;
/* 0x05F9 */ u8 unk_5F9;
/* 0x05FA */ s16 csState2;
/* 0x05FC */ s16 subCamId;
/* 0x05FE */ s16 csSfxTimer;
/* 0x0600 */ Vec3f subCamEye;
/* 0x060C */ Vec3f subCamAt;
/* 0x0618 */ char unused_618[0xC];
/* 0x0624 */ Vec3f subCamEye2;
/* 0x0630 */ Vec3f subCamAt2;
/* 0x063C */ char unused_63C[0x18];
/* 0x0654 */ Vec3f subCamEyeStep;
/* 0x0660 */ Vec3f subCamAtStep;
/* 0x066C */ Vec3f subCamEyeTarget;
/* 0x0678 */ char unused_678[0xC];
/* 0x0684 */ Vec3f subCamAtTarget;
/* 0x0690 */ char unused_690[0xC];
/* 0x069C */ f32 subCamUpdateRate;
/* 0x06A0 */ f32 subCamDistStep;
/* 0x06A4 */ f32 subCamDist;
/* 0x06A8 */ char unused_6A8[4];
/* 0x06AC */ f32 subCamYaw;
/* 0x06B0 */ f32 subCamYawStep;
} BossTw; // size = 0x06B4
#endif