mirror of
https://github.com/zeldaret/oot
synced 2026-09-06 02:48:11 -04:00
[cc0 oot] object_zf and z_en_zf (#2791)
* [cc0 oot] object_zf and z_en_zf * fixups * ENZF_TYPE_LIZALFOS_PAIRED_ -> ENZF_TYPE_LIZALFOS_PAIRED_MINIBOSS_ * EnZf cleanup
This commit is contained in:
+1226
-1337
File diff suppressed because it is too large
Load Diff
@@ -4,121 +4,53 @@
|
||||
#include "ultra64.h"
|
||||
#include "actor.h"
|
||||
|
||||
#include "assets/objects/object_zf/object_zf.h"
|
||||
|
||||
typedef enum EnZfType {
|
||||
/* -2 */ ENZF_TYPE_DINOLFOS = -2,
|
||||
/* -1 */ ENZF_TYPE_LIZALFOS_SINGLE,
|
||||
/* 0 */ ENZF_TYPE_LIZALFOS_PAIRED_MINIBOSS_A,
|
||||
/* 1 */ ENZF_TYPE_LIZALFOS_PAIRED_MINIBOSS_B
|
||||
} EnZfType;
|
||||
|
||||
#define ENZF_IS_TYPE_PAIRED(type) ((type) >= ENZF_TYPE_LIZALFOS_PAIRED_MINIBOSS_A)
|
||||
|
||||
struct EnZf;
|
||||
|
||||
typedef void (*EnZfActionFunc)(struct EnZf*, struct PlayState*);
|
||||
|
||||
typedef enum EnZfType {
|
||||
/* -2 */ ENZF_TYPE_DINOLFOS = -2,
|
||||
/* -1 */ ENZF_TYPE_LIZALFOS_LONE, // Not a miniboss, e.g. Spirit Temple
|
||||
/* 0 */ ENZF_TYPE_LIZALFOS_MINIBOSS_A, // Pair with B
|
||||
/* 1 */ ENZF_TYPE_LIZALFOS_MINIBOSS_B // Pair with A
|
||||
} EnZfType;
|
||||
|
||||
typedef enum EnZfAction {
|
||||
/* 0 */ ENZF_ACTION_DROP_IN,
|
||||
/* 3 */ ENZF_ACTION_3 = 3, // stop and choose action?
|
||||
/* 5 */ ENZF_ACTION_APPROACH_PLAYER = 5,
|
||||
/* 6 */ ENZF_ACTION_6,
|
||||
/* 7 */ ENZF_ACTION_7, // more sidestepping?
|
||||
/* 8 */ ENZF_ACTION_RECOIL_FROM_BLOCKED_SLASH,
|
||||
/* 9 */ ENZF_ACTION_SLASH,
|
||||
/* 11 */ ENZF_ACTION_JUMP_BACK = 11,
|
||||
/* 12 */ ENZF_ACTION_CIRCLE_AROUND_PLAYER,
|
||||
/* 13 */ ENZF_ACTION_JUMP_FORWARD,
|
||||
/* 14 */ ENZF_ACTION_STUNNED,
|
||||
/* 15 */ ENZF_ACTION_DIE,
|
||||
/* 16 */ ENZF_ACTION_DAMAGED,
|
||||
/* 18 */ ENZF_ACTION_SHEATHE_SWORD = 18,
|
||||
/* 19 */ ENZF_ACTION_HOP_AWAY,
|
||||
/* 20 */ ENZF_ACTION_HOP_AND_TAUNT,
|
||||
/* 21 */ ENZF_ACTION_DRAW_SWORD,
|
||||
/* 22 */ ENZF_ACTION_JUMP_UP
|
||||
} EnZfAction;
|
||||
|
||||
typedef enum EnZfLimb {
|
||||
/* 0x00 */ ENZF_LIMB_NONE,
|
||||
/* 0x01 */ ENZF_LIMB_ROOT,
|
||||
/* 0x02 */ ENZF_LIMB_BODY_ROOT,
|
||||
/* 0x03 */ ENZF_LIMB_UPPER_BODY_ROOT,
|
||||
/* 0x04 */ ENZF_LIMB_NECK_ROOT,
|
||||
/* 0x05 */ ENZF_LIMB_HEAD_ROOT,
|
||||
/* 0x06 */ ENZF_LIMB_JAW_ROOT_ROOT,
|
||||
/* 0x07 */ ENZF_LIMB_JAW_ROOT,
|
||||
/* 0x08 */ ENZF_LIMB_JAW,
|
||||
/* 0x09 */ ENZF_LIMB_HEAD,
|
||||
/* 0x0A */ ENZF_LIMB_NECK,
|
||||
/* 0x0B */ ENZF_LIMB_RIGHT_ARM_ROOT,
|
||||
/* 0x0C */ ENZF_LIMB_RIGHT_UPPER_ARM_ROOT,
|
||||
/* 0x0D */ ENZF_LIMB_RIGHT_FOREARM_ROOT,
|
||||
/* 0x0E */ ENZF_LIMB_SWORD_ROOT,
|
||||
/* 0x0F */ ENZF_LIMB_SWORD,
|
||||
/* 0x10 */ ENZF_LIMB_RIGHT_FOREARM,
|
||||
/* 0x11 */ ENZF_LIMB_RIGHT_UPPER_ARM,
|
||||
/* 0x12 */ ENZF_LIMB_LEFT_ARM_ROOT,
|
||||
/* 0x13 */ ENZF_LIMB_LEFT_UPPER_ARM_ROOT,
|
||||
/* 0x14 */ ENZF_LIMB_LEFT_FOREARM_ROOT,
|
||||
/* 0x15 */ ENZF_LIMB_LEFT_HAND_ROOT,
|
||||
/* 0x16 */ ENZF_LIMB_LEFT_HAND,
|
||||
/* 0x17 */ ENZF_LIMB_LEFT_FOREARM,
|
||||
/* 0x18 */ ENZF_LIMB_LEFT_UPPER_ARM,
|
||||
/* 0x19 */ ENZF_LIMB_CHEST_ARMOR,
|
||||
/* 0x1A */ ENZF_LIMB_TAIL_ROOT,
|
||||
/* 0x1B */ ENZF_LIMB_TAIL_BASE_ROOT,
|
||||
/* 0x1C */ ENZF_LIMB_TAIL_TIP_ROOT,
|
||||
/* 0x1D */ ENZF_LIMB_TAIL_TIP,
|
||||
/* 0x1E */ ENZF_LIMB_TAIL_BASE,
|
||||
/* 0x1F */ ENZF_LIMB_SCABBARD_ROOT_ROOT,
|
||||
/* 0x20 */ ENZF_LIMB_SCABBARD_ROOT,
|
||||
/* 0x21 */ ENZF_LIMB_SCABBARD,
|
||||
/* 0x22 */ ENZF_LIMB_RIGHT_LEG_ROOT,
|
||||
/* 0x23 */ ENZF_LIMB_RIGHT_THIGH_ROOT,
|
||||
/* 0x24 */ ENZF_LIMB_RIGHT_SHIN_ROOT,
|
||||
/* 0x25 */ ENZF_LIMB_RIGHT_FOOT_ROOT,
|
||||
/* 0x26 */ ENZF_LIMB_RIGHT_FOOT,
|
||||
/* 0x27 */ ENZF_LIMB_RIGHT_SHIN,
|
||||
/* 0x28 */ ENZF_LIMB_RIGHT_THIGH,
|
||||
/* 0x29 */ ENZF_LIMB_LEFT_LEG_ROOT,
|
||||
/* 0x2A */ ENZF_LIMB_LEFT_THIGH_ROOT,
|
||||
/* 0x2B */ ENZF_LIMB_LEFT_SHIN_ROOT,
|
||||
/* 0x2C */ ENZF_LIMB_LEFT_FOOT_ROOT,
|
||||
/* 0x2D */ ENZF_LIMB_LEFT_FOOT,
|
||||
/* 0x2E */ ENZF_LIMB_LEFT_SHIN,
|
||||
/* 0x2F */ ENZF_LIMB_LEFT_THIGH,
|
||||
/* 0x30 */ ENZF_LIMB_TRUNK,
|
||||
/* 0x31 */ ENZF_LIMB_MAX
|
||||
} EnZfLimb; // used for both Lizalfos and Dinalfos
|
||||
|
||||
typedef struct EnZf {
|
||||
/* 0x0000 */ Actor actor;
|
||||
/* 0x014C */ SkelAnime skelAnime;
|
||||
/* 0x0190 */ Vec3s jointTable[ENZF_LIMB_MAX];
|
||||
/* 0x02B6 */ Vec3s morphTable[ENZF_LIMB_MAX];
|
||||
/* 0x03DC */ s32 action;
|
||||
/* 0x03E0 */ s32 unk_3E0; // Set but unused
|
||||
/* 0x03E4 */ s32 hopAnimIndex;
|
||||
/* 0x03E8 */ EnZfActionFunc actionFunc;
|
||||
/* 0x03EC */ s16 headRot;
|
||||
/* 0x03EE */ s16 headRotTemp;
|
||||
/* 0x03F0 */ s32 unk_3F0; // attack timer?
|
||||
/* 0x03F4 */ s16 unk_3F4; // tag timer?
|
||||
/* 0x03F6 */ s16 iceTimer;
|
||||
/* 0x03F8 */ s16 unk_3F8; // boolean, to do with movement
|
||||
/* 0x03FA */ s16 swordSheathed; // boolean
|
||||
/* 0x03FC */ s16 clearFlag;
|
||||
/* 0x03FE */ s16 curPlatform;
|
||||
/* 0x0400 */ s16 homePlatform; // Platform to return to, changed by some functions?
|
||||
/* 0x0402 */ s16 nextPlatform;
|
||||
/* 0x0404 */ u8 alpha;
|
||||
/* 0x0408 */ f32 unk_408; // related to XZ speeds
|
||||
/* 0x040C */ f32 unk_40C; // related to y velocity
|
||||
/* 0x0410 */ u8 damageReaction;
|
||||
/* 0x0414 */ s32 blureIndex;
|
||||
/* 0x0418 */ ColliderCylinder bodyCollider;
|
||||
/* 0x0464 */ ColliderQuad swordCollider;
|
||||
/* 0x04E4 */ Vec3f rightFootPos;
|
||||
/* 0x04F0 */ Vec3f leftFootPos;
|
||||
/* 0x04FC */ Vec3f bodyPartsPos[9];
|
||||
} EnZf; // size = 0x0568
|
||||
/* 0x000 */ Actor actor;
|
||||
/* 0x14C */ SkelAnime skelAnime;
|
||||
/* 0x190 */ Vec3s jointTable[ZF_LIMB_MAX];
|
||||
/* 0x2B6 */ Vec3s morphTable[ZF_LIMB_MAX];
|
||||
/* 0x3DC */ s32 action;
|
||||
/* 0x3E0 */ s32 unk_3E0; // unused
|
||||
/* 0x3E4 */ s32 actionState;
|
||||
/* 0x3E8 */ EnZfActionFunc actionFunc;
|
||||
/* 0x3EC */ s16 headRot;
|
||||
/* 0x3EE */ s16 headRotStep;
|
||||
/* 0x3F0 */ s32 timer;
|
||||
/* 0x3F4 */ s16 timer2;
|
||||
/* 0x3F6 */ s16 frozenTimer;
|
||||
/* 0x3F8 */ s16 noFloorAhead;
|
||||
/* 0x3FA */ s16 isSwordSheathed;
|
||||
/* 0x3FC */ s16 switchFlag;
|
||||
/* 0x3FE */ s16 curPlatform;
|
||||
/* 0x400 */ s16 homePlatform;
|
||||
/* 0x402 */ s16 targetPlatform;
|
||||
/* 0x404 */ u8 alpha;
|
||||
/* 0x405 */ char pad_405[3];
|
||||
/* 0x408 */ f32 dodgeSpeed;
|
||||
/* 0x40C */ f32 dodgeVelocityY;
|
||||
/* 0x410 */ u8 lastDamageReaction;
|
||||
/* 0x411 */ char pad_411[3];
|
||||
/* 0x414 */ s32 swordBlureEffectIndex;
|
||||
/* 0x418 */ ColliderCylinder bodyCollider;
|
||||
/* 0x464 */ ColliderQuad swordCollider;
|
||||
/* 0x4E4 */ Vec3f rightFootPos;
|
||||
/* 0x4F0 */ Vec3f leftFootPos;
|
||||
/* 0x4FC */ Vec3f bodyPartsPos[9];
|
||||
} EnZf; // size = 0x568
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user