ovl_En_Po_Sisters and object_po_sistersDocumented (#930)

* EnPoSisters: basic docs back in

* EnPoSisters: some docs

* EnPoSisters: some docs

* EnPoSisters: more docs 2

* EnPoSisters: more docs

* PoSisters: documented most of object xml

* PoSisters: swapped DL

* PoSisters: more docs

* EnPoSisters: minor docs

* PoSisters: more docs

* PoSisters: fix wrong prefix

* PoSisters:Minor docks

* more doc

* more fun

* More functions named, all of them?

* doc

* EnPoSisters: docs, formater pass

* z_actor: removed comment, fixes formater

* Apply suggestions from code review

Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>

* PoSisters: formater

* PoSister: requested object xml changes

* Apply suggestions from code review

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>

* PoSisters: remove bgId comment, add meg reverse timer comments, format

* PoSisters: megCountRemaining union and some comments, formater pass

* PoSisters: better first actionfunc name

* PoSisters: Skeleton -> Skel

* PoSisters: Formater pls

Co-authored-by: Isghj8 <isghj8@gmail.com>
Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>
Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>
This commit is contained in:
Isghj
2022-07-23 12:19:49 -07:00
committed by GitHub
parent 63447c5649
commit fbb38416ca
5 changed files with 807 additions and 682 deletions
File diff suppressed because it is too large Load Diff
@@ -2,42 +2,70 @@
#define Z_EN_PO_SISTERS_H
#include "global.h"
#include "objects/object_po_sisters/object_po_sisters.h"
struct EnPoSisters;
typedef void (*EnPoSistersActionFunc)(struct EnPoSisters*, PlayState*);
#define ENPOSISTERS_GET_300(thisx) (((thisx)->params >> 8) & 3)
#define ENPOSISTERS_GET_C00(thisx) (((thisx)->params >> 0xA) & 3)
#define ENPOSISTERS_GET_1000(thisx) ((thisx)->params & 0x1000)
#define ENPOSISTERS_GET_OBSERVER_FLAG(thisx) ((thisx)->params & 0x1000)
#define ENPOSISTERS_GET_MEG_CLONE_ID(thisx) (((thisx)->params >> 0xA) & 3)
#define ENPOSISTERS_GET_TYPE(thisx) (((thisx)->params >> 8) & 3)
#define ENPOSISTERS_PARAMS(observerFlag, megClone, type) (((observerFlag) << 0xC) | ((megClone & 3) << 0xA) | ((type & 3) << 8))
typedef enum {
/* 0 */ POSISTER_TYPE_MEG, // purple
/* 1 */ POSISTER_TYPE_JO, // red
/* 2 */ POSISTER_TYPE_BETH, // blue
/* 3 */ POSISTER_TYPE_AMY, // green
} EnPoSisterType;
typedef enum {
/* 0 */ POSISTER_MEG_REAL,
/* 1 */ POSISTER_MEG_CLONE1,
/* 2 */ POSISTER_MEG_CLONE2,
/* 3 */ POSISTER_MEG_CLONE3,
} EnPoSisterMegCloneID;
typedef struct EnPoSisters {
/* 0x000 */ Actor actor;
/* 0x144 */ SkelAnime skelAnime;
/* 0x188 */ EnPoSistersActionFunc actionFunc;
/* 0x18C */ u8 unk_18C;
/* 0x18D */ u8 unk_18D;
/* 0x18E */ u8 unk_18E;
/* 0x18F */ u8 unk_18F;
/* 0x190 */ u8 unk_190;
/* 0x191 */ u8 unk_191;
/* 0x192 */ s16 unk_192;
/* 0x194 */ s16 unk_194;
/* 0x196 */ Vec3s jointTable[12];
/* 0x1DE */ Vec3s morphTable[12];
/* 0x226 */ u8 unk_226;
/* 0x227 */ u8 unk_227;
/* 0x228 */ u8 unk_228;
/* 0x229 */ u8 unk_229;
/* 0x22C */ Vec3f unk_22C[8];
/* 0x28C */ Vec3f limbPos[8];
/* 0x2EC */ f32 unk_2EC;
/* 0x18C */ u8 type;
/* 0x18D */ u8 megCloneId;
/* 0x18E */ u8 floatingBobbingTimer; // counts down from 32 to zero, reset
/* 0x18F */ u8 zTargetTimer; // how many frames the player is z targeting, if zero -> invis
/* 0x190 */ u8 fireCount;
/* 0x191 */ u8 poSisterFlags;
/* 0x192 */ union {
s16 stateTimer; // generic name for resets
s16 spinTimer; // frames of spinning since spin attack starts, when zero checks collision
s16 fleeTimer; // after being hit, 5 frames of flying away
s16 deathTimer; // (incr) controls timings of the death cutscene, reset between the two stages
s16 laughTimer; // if observer, will laugh once in awhile
s16 spinupTimer; // frames of spinning up (gaining speed) for attack (jo/beth/amy attack)
s16 megSurroundTimer; // frames of meg circling the player menacingly until spin attack
s16 spinInvisibleTimer; // frames of spining away to invisible and back to visible
s16 idleFlyingAnimationCounter; // count: animations completed since entering actionFunc
};
/* 0x194 */ union {
s16 invisibleTimer; // frames until coming back to fight from invisible (all combat variants)
s16 megAttackTimer; // delay until meg spin attacks player (negative frames counting up to 0)
s16 megClonesRemaining; // positive count of meg clones remaining
};
/* 0x196 */ Vec3s jointTable[POSISTERS_LIMB_MAX];
/* 0x1DE */ Vec3s morphTable[POSISTERS_LIMB_MAX];
/* 0x226 */ Color_RGBA8 color;
/* 0x22C */ Vec3f firePos[8];
/* 0x28C */ Vec3f limbPos[8]; // passed to Actor_DrawDamageEffects
/* 0x2EC */ f32 megDistToPlayer;
/* 0x2F0 */ f32 drawDmgEffAlpha;
/* 0x2F4 */ f32 drawDmgEffScale;
/* 0x2F8 */ LightNode* lightNode;
/* 0x2FC */ LightInfo lightInfo;
/* 0x30C */ ColliderCylinder collider;
/* 0x358 */ MtxF unk_358;
/* 0x358 */ MtxF mtxf;
} EnPoSisters; // size = 0x398
extern const ActorInit En_Po_Sisters_InitVars;