En_Snowman (Eeno and snowballs) OK and documented. object_snowman documented (#818)

* EnSnowman_Init OK

* EnSnowman_Destroy OK

* func_80B173D0 OK and better match for EnSnowman_Init

* EnSnowman_Draw OK

* func_80B19948 OK

* func_80B19998 OK

* func_80B19718 OK

* func_80B1746C and func_80B177EC OK

* Match a ton of functions

* func_80B18B30 OK

* func_80B180A4 OK

* func_80B18C7C OK

* func_80B18124 OK

* EnSnowman_Update OK

* func_80B17144 OK

* func_80B19474 OK

* func_80B18F50 OK

* All functions OK

* Import data to C

* Use object symbols

* Misc cleanup

* Fully document object_snowman

* Low hanging fruit

* Document snowman types

* Some more minor stuff

* Some more minor cleanup and naming

* Name some more functions

* More names

* Even more names

* Turns out, they're called Eeno!

* limbPos -> bodyPartsPos as per Fig's suggestion

* Update some more names

* Committing so I can push up stuff for the snowballPos naming

* More names + use generated reloc

* First pass name on every function

* First pass names on all struct vars

* Document the mega eeno glitch

* Get rid of garbage "split dead" naming

* First pass documentation on combine state

* Better names and some documentation

* Last doc pass before PR

* Respond to Elliptic's review

* / 100.0f -> * 0.01f
This commit is contained in:
Tom Overton
2022-05-25 16:59:36 -07:00
committed by GitHub
parent e67fb5cf16
commit 8ba8780bb5
7 changed files with 1268 additions and 215 deletions
File diff suppressed because it is too large Load Diff
@@ -2,16 +2,56 @@
#define Z_EN_SNOWMAN_H
#include "global.h"
#include "objects/object_snowman/object_snowman.h"
#define EN_SNOWMAN_GET_TYPE(thisx) ((thisx)->params)
#define EN_SNOWMAN_GET_ATTACK_RANGE(thisx) (((thisx)->params >> 8) & 0xFF)
typedef enum {
/* 0 */ EN_SNOWMAN_TYPE_SMALL,
/* 1 */ EN_SNOWMAN_TYPE_LARGE,
/* 2 */ EN_SNOWMAN_TYPE_SPLIT,
/* 3 */ EN_SNOWMAN_TYPE_SMALL_SNOWBALL,
/* 4 */ EN_SNOWMAN_TYPE_LARGE_SNOWBALL,
} EnSnowmanType;
struct EnSnowman;
typedef void (*EnSnowmanActionFunc)(struct EnSnowman*, GlobalContext*);
typedef struct EnSnowman {
/* 0x0000 */ Actor actor;
/* 0x0144 */ char unk_144[0x13C];
/* 0x0280 */ EnSnowmanActionFunc actionFunc;
/* 0x0284 */ char unk_284[0xF4];
/* 0x000 */ Actor actor;
/* 0x144 */ SkelAnime skelAnime;
/* 0x188 */ SkelAnime snowPileSkelAnime;
/* 0x1CC */ Vec3s jointTable[EENO_LIMB_MAX];
/* 0x214 */ Vec3s morphTable[EENO_LIMB_MAX];
/* 0x25C */ Vec3s snowPileJointTable[EENO_SNOW_PILE_LIMB_MAX];
/* 0x26E */ Vec3s snowPileMorphTable[EENO_SNOW_PILE_LIMB_MAX];
/* 0x280 */ EnSnowmanActionFunc actionFunc;
/* 0x284 */ EnSnowmanActionFunc prevActionFunc;
/* 0x288 */ u8 isHoldingSnowball;
/* 0x289 */ u8 combineState;
/* 0x28A */ u8 turningOnSteepSlope;
/* 0x28B */ u8 drawDmgEffType;
/* 0x28C */ union {
s16 timer;
s16 snowballsToThrowBeforeIdling;
} work;
/* 0x28E */ s16 snowPileTargetRotY;
/* 0x290 */ s16 combineTimer;
/* 0x294 */ f32 eenoScale;
/* 0x298 */ union {
f32 frameToStartHoldingSnowball;
f32 frameToThrowSnowball;
f32 targetScaleDuringCombine;
} fwork;
/* 0x29C */ f32 attackRange;
/* 0x2A0 */ f32 drawDmgEffAlpha;
/* 0x2A4 */ f32 drawDmgEffScale;
/* 0x2A8 */ Vec3f combinePos;
/* 0x2B4 */ Vec3f snowballPos;
/* 0x2C0 */ Vec3f bodyPartsPos[9];
/* 0x32C */ ColliderCylinder collider;
} EnSnowman; // size = 0x378
extern const ActorInit En_Snowman_InitVars;