1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-07-03 06:24:30 +00:00

EnWf OK and documented (#967)

* a ton of progress, 14 functions remain

* cleanup

* a few more functions done, 11 remain

* finally all updated

* another function matched

* another action finished

* damage table

* death action done

* started very large action func

* more progress on long action funcs

* large action func matched

* 5 functions remain

* another large action finished

* start another action, doesn't match yet

* a few new functions, neither match

* done working on this for now

* Correct one nonmatching, fix compiler warnings

* Two functions left

* one left

* remove remaining gotos

* OK

* Delete outdated comment

* namefixer

* Flag macros

* audio, dmgeff, some colour

* Import symbols from object, reloc, name a few things

* Rest of object done

* Named a few more things, add action enum

* Name body parts and another couple of actions

* Last few names

* Delete asm

* Format

* undefined_syms, mods where possible

* Correct parent to EnEncount1

* Review

* Last newline

* louis and Dragorn's reviews

* Format

* More review

* Put back to isInvisible and or, as in EnGeldB

* Remove if (0)s in func_8009728C and change pointer arithmetic cast

* More review

* Unname headRot, make "fallthrough" case clearer, other review

* Format

* Even more review

* Rephrase

Co-authored-by: Zelllll <56516451+Zelllll@users.noreply.github.com>
This commit is contained in:
EllipticEllipsis 2021-09-24 23:35:42 +01:00 committed by GitHub
parent 8e318d257e
commit 16471bb68d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
51 changed files with 1583 additions and 4805 deletions

View file

@ -578,7 +578,7 @@ void EnTorch2_Update(Actor* thisx, GlobalContext* globalCtx2) {
input->cur.button = ((sCounterState == 0) && (this->swordState == 0)) ? BTN_R : input->cur.button ^ BTN_R;
}
input->rel.button = input->prev.button & pad54;
input->prev.button = input->cur.button & (u16)~(BTN_A | BTN_B);
input->prev.button = input->cur.button & (u16) ~(BTN_A | BTN_B);
PadUtils_UpdateRelXY(input);
input->press.stick_x += (s8)(input->cur.stick_x - input->prev.stick_x);

File diff suppressed because it is too large Load diff

View file

@ -6,9 +6,86 @@
struct EnWf;
typedef void (*EnWfActionFunc)(struct EnWf*, GlobalContext*);
typedef enum {
/* 0 */ WOLFOS_LIMB_NONE,
/* 1 */ WOLFOS_LIMB_ROOT,
/* 2 */ WOLFOS_LIMB_BACK_LEFT_THIGH,
/* 3 */ WOLFOS_LIMB_BACK_LEFT_SHIN,
/* 4 */ WOLFOS_LIMB_BACK_LEFT_PASTERN,
/* 5 */ WOLFOS_LIMB_BACK_LEFT_PAW,
/* 6 */ WOLFOS_LIMB_TAIL,
/* 7 */ WOLFOS_LIMB_ABDOMEN,
/* 8 */ WOLFOS_LIMB_BACK_RIGHT_THIGH,
/* 9 */ WOLFOS_LIMB_BACK_RIGHT_SHIN,
/* 10 */ WOLFOS_LIMB_BACK_RIGHT_PASTERN,
/* 11 */ WOLFOS_LIMB_BACK_RIGHT_PAW,
/* 12 */ WOLFOS_LIMB_THORAX,
/* 13 */ WOLFOS_LIMB_FRONT_RIGHT_UPPER_LEG,
/* 14 */ WOLFOS_LIMB_FRONT_RIGHT_LOWER_LEG,
/* 15 */ WOLFOS_LIMB_FRONT_RIGHT_CLAW,
/* 16 */ WOLFOS_LIMB_HEAD_ROOT,
/* 17 */ WOLFOS_LIMB_HEAD,
/* 18 */ WOLFOS_LIMB_EYES,
/* 19 */ WOLFOS_LIMB_FRONT_LEFT_UPPER_LEG,
/* 20 */ WOLFOS_LIMB_FRONT_LEFT_LOWER_LEG,
/* 21 */ WOLFOS_LIMB_FRONT_LEFT_CLAW,
/* 22 */ WOLFOS_LIMB_MAX
} EnWfLimb;
typedef enum {
/* 0 */ WOLFOS_ACTION_WAIT_TO_APPEAR,
/* 2 */ WOLFOS_ACTION_DIE = 2,
/* 3 */ WOLFOS_ACTION_DAMAGED,
/* 4 */ WOLFOS_ACTION_TURN_TOWARDS_PLAYER,
/* 5 */ WOLFOS_ACTION_BACKFLIP_AWAY,
/* 6 */ WOLFOS_ACTION_WAIT,
/* 7 */ WOLFOS_ACTION_BLOCKING,
/* 8 */ WOLFOS_ACTION_SLASH,
/* 9 */ WOLFOS_ACTION_RUN_AT_PLAYER,
/* 10 */ WOLFOS_ACTION_SEARCH_FOR_PLAYER,
/* 11 */ WOLFOS_ACTION_RUN_AROUND_PLAYER,
/* 12 */ WOLFOS_ACTION_RECOIL_FROM_BLOCKED_SLASH,
/* 14 */ WOLFOS_ACTION_SIDESTEP = 14,
/* 15 */ WOLFOS_ACTION_STUNNED
} EnWfAction;
typedef struct EnWf {
/* 0x0000 */ Actor actor;
/* 0x014C */ char unk_14C[0x390];
/* 0x014C */ Vec3s bodyPartsPos[10];
/* 0x0188 */ SkelAnime skelAnime;
/* 0x01CC */ Vec3s jointTable[WOLFOS_LIMB_MAX];
/* 0x0250 */ Vec3s morphTable[WOLFOS_LIMB_MAX];
/* 0x02D4 */ s32 action; // Used instead of checking the actionFunc directly (but also in range comparisons)
/* 0x02D8 */ char unk_2D8[4]; // Unused
/* 0x02DC */ EnWfActionFunc actionFunc;
/* 0x02E0 */ s16 unk_2E0; // Used, but has no effect
/* 0x02E2 */ s16 unk_2E2;
/* 0x02E4 */ s16 fireTimer;
/* 0x02E6 */ u8 damageEffect;
/* 0x02E8 */ s32 actionTimer; // Used to make an action last for a certain amount of time
/* 0x02EC */ f32 runSpeed;
/* 0x02F0 */ char unk_2F0[4];
/* 0x02F4 */ f32 unk_2F4; // Set and not used
/* 0x02F8 */ s16 slashStatus; // Whether to slash again or not, and whether to cry
/* 0x02FA */ s16 unk_2FA; // Set and not used
/* 0x02FC */ s16 switchFlag;
/* 0x02FE */ s16 runAngle;
/* 0x0300 */ s16 unk_300; // Set, but ineffectual (see comment in Draw)
/* 0x0302 */ u8 eyeIndex;
/* 0x0304 */ ColliderJntSph colliderSpheres;
/* 0x0324 */ ColliderJntSphElement colliderSpheresElements[4];
/* 0x0424 */ ColliderCylinder colliderCylinderBody;
/* 0x0470 */ ColliderCylinder colliderCylinderTail;
/* 0x04BC */ Vec3f unk_4BC;
/* 0x04C8 */ Vec3f unk_4C8;
/* 0x04D4 */ Vec3s unk_4D4;
} EnWf; // size = 0x04DC
typedef enum {
/* 0 */ WOLFOS_NORMAL,
/* 1 */ WOLFOS_WHITE
} EnWfType;
#endif