From 40203d01438df9b71813cac7da6df70f7314b4d4 Mon Sep 17 00:00:00 2001 From: feacur Date: Sun, 10 Nov 2024 03:55:31 +0100 Subject: [PATCH] Document animations --- assets/xml/objects/object_oF1d_map.xml | 22 +++--- src/overlays/actors/ovl_Demo_Go/z_demo_go.c | 4 +- src/overlays/actors/ovl_En_Go/z_en_go.c | 40 +++++----- src/overlays/actors/ovl_En_Go2/z_en_go2.c | 86 +++++++++++---------- 4 files changed, 79 insertions(+), 73 deletions(-) diff --git a/assets/xml/objects/object_oF1d_map.xml b/assets/xml/objects/object_oF1d_map.xml index 4f3386613f..26a7fbaa5a 100644 --- a/assets/xml/objects/object_oF1d_map.xml +++ b/assets/xml/objects/object_oF1d_map.xml @@ -2,17 +2,17 @@ - - - - - - - - - - - + + + + + + + + + + + diff --git a/src/overlays/actors/ovl_Demo_Go/z_demo_go.c b/src/overlays/actors/ovl_Demo_Go/z_demo_go.c index 2a6ac15c52..a6801962d5 100644 --- a/src/overlays/actors/ovl_Demo_Go/z_demo_go.c +++ b/src/overlays/actors/ovl_Demo_Go/z_demo_go.c @@ -254,7 +254,7 @@ void func_8097CEEC(DemoGo* this, PlayState* play) { } void func_8097CF20(DemoGo* this, PlayState* play, s32 arg2) { - AnimationHeader* animation = &gGoronAnim_0029A8; + AnimationHeader* animation = &gGoronWalkingLoopAnim; if (arg2 != 0) { Animation_Change(&this->skelAnime, animation, 1.0f, 0.0f, Animation_GetLastFrame(animation), ANIMMODE_LOOP, -8.0f); @@ -328,7 +328,7 @@ void DemoGo_Update(Actor* thisx, PlayState* play) { void DemoGo_Init(Actor* thisx, PlayState* play) { DemoGo* this = (DemoGo*)thisx; - AnimationHeader* animation = &gGoronAnim_004930; + AnimationHeader* animation = &gGoronUncurlSitStandAnim; ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 30.0f); SkelAnime_InitFlex(play, &this->skelAnime, &gGoronSkel, NULL, NULL, NULL, 0); diff --git a/src/overlays/actors/ovl_En_Go/z_en_go.c b/src/overlays/actors/ovl_En_Go/z_en_go.c index 37438dd1c5..ef3c9c80d1 100644 --- a/src/overlays/actors/ovl_En_Go/z_en_go.c +++ b/src/overlays/actors/ovl_En_Go/z_en_go.c @@ -69,17 +69,17 @@ static ColliderCylinderInit sCylinderInit = { static CollisionCheckInfoInit2 sColChkInfoInit = { 0, 0, 0, 0, MASS_IMMOVABLE }; typedef enum EnGoAnimation { - /* 0 */ ENGO_ANIM_0, - /* 1 */ ENGO_ANIM_1, - /* 2 */ ENGO_ANIM_2, - /* 3 */ ENGO_ANIM_3 + /* 0 */ ENGO_ANIM_UNCURL_SIT_STAND_IDLE, // default idle + /* 1 */ ENGO_ANIM_UNCURL_SIT_STAND, + /* 2 */ ENGO_ANIM_WALKING_LOOP, + /* 3 */ ENGO_ANIM_SIDESTEP_LOOP } EnGoAnimation; static AnimationSpeedInfo sAnimationInfo[] = { - { &gGoronAnim_004930, 0.0f, ANIMMODE_LOOP_INTERP, 0.0f }, - { &gGoronAnim_004930, 0.0f, ANIMMODE_LOOP_INTERP, -10.0f }, - { &gGoronAnim_0029A8, 1.0f, ANIMMODE_LOOP_INTERP, -10.0f }, - { &gGoronAnim_010590, 1.0f, ANIMMODE_LOOP_INTERP, -10.0f }, + { &gGoronUncurlSitStandAnim, 0.0f, ANIMMODE_LOOP_INTERP, 0.0f }, + { &gGoronUncurlSitStandAnim, 0.0f, ANIMMODE_LOOP_INTERP, -10.0f }, + { &gGoronWalkingLoopAnim, 1.0f, ANIMMODE_LOOP_INTERP, -10.0f }, + { &gGoronSidestepLoopAnim, 1.0f, ANIMMODE_LOOP_INTERP, -10.0f }, }; void EnGo_SetupAction(EnGo* this, EnGoActionFunc actionFunc) { @@ -455,8 +455,8 @@ void EnGo_ReverseAnimation(EnGo* this) { void EnGo_UpdateShadow(EnGo* this) { s16 shadowAlpha; f32 currentFrame = this->skelAnime.curFrame; - s16 shadowAlphaTarget = (this->skelAnime.animation == &gGoronAnim_004930 && currentFrame > 32.0f) || - this->skelAnime.animation != &gGoronAnim_004930 + s16 shadowAlphaTarget = (this->skelAnime.animation == &gGoronUncurlSitStandAnim && currentFrame > 32.0f) || + this->skelAnime.animation != &gGoronUncurlSitStandAnim ? 255 : 0; @@ -643,7 +643,7 @@ void EnGo_Init(Actor* thisx, PlayState* play) { this->actor.flags &= ~ACTOR_FLAG_5; } - EnGo_ChangeAnim(this, ENGO_ANIM_0); + EnGo_ChangeAnim(this, ENGO_ANIM_UNCURL_SIT_STAND_IDLE); this->actor.attentionRangeType = ATTENTION_RANGE_6; this->interactInfo.talkState = NPC_TALK_STATE_IDLE; this->actor.gravity = -1.0f; @@ -661,7 +661,7 @@ void EnGo_Init(Actor* thisx, PlayState* play) { } break; case 0x10: - this->skelAnime.curFrame = Animation_GetLastFrame(&gGoronAnim_004930); + this->skelAnime.curFrame = Animation_GetLastFrame(&gGoronUncurlSitStandAnim); Actor_SetScale(&this->actor, 0.01f); EnGo_SetupAction(this, EnGo_FireGenericActionFunc); break; @@ -840,7 +840,7 @@ void func_80A405CC(EnGo* this, PlayState* play) { f32 lastFrame; f32 frame; - lastFrame = Animation_GetLastFrame(&gGoronAnim_004930); + lastFrame = Animation_GetLastFrame(&gGoronUncurlSitStandAnim); Math_SmoothStepToF(&this->skelAnime.playSpeed, PARAMS_GET_NOSHIFT(this->actor.params, 4, 4) == 0x90 ? 0.5f : 1.0f, 0.1f, 1000.0f, 0.1f); @@ -866,7 +866,7 @@ void EnGo_BiggoronActionFunc(EnGo* this, PlayState* play) { this->interactInfo.talkState = NPC_TALK_STATE_IDLE; } else { if (INV_CONTENT(ITEM_TRADE_ADULT) == ITEM_EYE_DROPS) { - EnGo_ChangeAnim(this, ENGO_ANIM_2); + EnGo_ChangeAnim(this, ENGO_ANIM_WALKING_LOOP); this->unk_21E = 100; this->interactInfo.talkState = NPC_TALK_STATE_IDLE; EnGo_SetupAction(this, EnGo_Eyedrops); @@ -928,13 +928,13 @@ void func_80A408D8(EnGo* this, PlayState* play) { } void func_80A40A54(EnGo* this, PlayState* play) { - f32 float1 = ((f32)0x8000 / Animation_GetLastFrame(&gGoronAnim_010590)); + f32 float1 = ((f32)0x8000 / Animation_GetLastFrame(&gGoronSidestepLoopAnim)); f32 float2 = this->skelAnime.curFrame * float1; this->actor.speed = Math_SinS((s16)float2); if (EnGo_FollowPath(this, play) && this->unk_218 == 0) { - EnGo_ChangeAnim(this, ENGO_ANIM_1); - this->skelAnime.curFrame = Animation_GetLastFrame(&gGoronAnim_004930); + EnGo_ChangeAnim(this, ENGO_ANIM_UNCURL_SIT_STAND); + this->skelAnime.curFrame = Animation_GetLastFrame(&gGoronUncurlSitStandAnim); this->actor.speed = 0.0f; EnGo_SetupAction(this, EnGo_BiggoronActionFunc); } @@ -942,7 +942,7 @@ void func_80A40A54(EnGo* this, PlayState* play) { void func_80A40B1C(EnGo* this, PlayState* play) { if (GET_INFTABLE(INFTABLE_EB)) { - EnGo_ChangeAnim(this, ENGO_ANIM_3); + EnGo_ChangeAnim(this, ENGO_ANIM_SIDESTEP_LOOP); EnGo_SetupAction(this, func_80A40A54); } else { EnGo_BiggoronActionFunc(this, play); @@ -1015,8 +1015,8 @@ void EnGo_Eyedrops(EnGo* this, PlayState* play) { void func_80A40DCC(EnGo* this, PlayState* play) { if (this->interactInfo.talkState == NPC_TALK_STATE_ACTION) { - EnGo_ChangeAnim(this, ENGO_ANIM_1); - this->skelAnime.curFrame = Animation_GetLastFrame(&gGoronAnim_004930); + EnGo_ChangeAnim(this, ENGO_ANIM_UNCURL_SIT_STAND); + this->skelAnime.curFrame = Animation_GetLastFrame(&gGoronUncurlSitStandAnim); Message_CloseTextbox(play); EnGo_SetupAction(this, EnGo_GetItem); EnGo_GetItem(this, play); diff --git a/src/overlays/actors/ovl_En_Go2/z_en_go2.c b/src/overlays/actors/ovl_En_Go2/z_en_go2.c index 70b6a0dc99..6c4756e720 100644 --- a/src/overlays/actors/ovl_En_Go2/z_en_go2.c +++ b/src/overlays/actors/ovl_En_Go2/z_en_go2.c @@ -118,29 +118,35 @@ static f32 sPlayerTrackingYOffsets[14][2] = { }; typedef enum EnGo2Animation { - /* 0 */ ENGO2_ANIM_0, - /* 1 */ ENGO2_ANIM_1, - /* 2 */ ENGO2_ANIM_2, - /* 3 */ ENGO2_ANIM_3, - /* 4 */ ENGO2_ANIM_4, - /* 5 */ ENGO2_ANIM_5, - /* 6 */ ENGO2_ANIM_6, - /* 7 */ ENGO2_ANIM_7, - /* 8 */ ENGO2_ANIM_8, - /* 9 */ ENGO2_ANIM_9, - /* 10 */ ENGO2_ANIM_10, - /* 11 */ ENGO2_ANIM_11, - /* 12 */ ENGO2_ANIM_12 + /* 0 */ ENGO2_ANIM_UNCURL_SIT_STAND_IDLE, // default idle + /* 1 */ ENGO2_ANIM_UNCURL_SIT_STAND, + /* 2 */ ENGO2_ANIM_WALKING_LOOP, + /* 3 */ ENGO2_ANIM_SIDESTEP_LOOP, + /* 4 */ ENGO2_ANIM_CRYING_LOOP, + /* 5 */ ENGO2_ANIM_EYEDROPS_LOOP, + /* 6 */ ENGO2_ANIM_EYEDROPS_TAKEN, + /* 7 */ ENGO2_ANIM_UNCURL_PRONE_UNUSED, + /* 8 */ ENGO2_ANIM_PRONE_LOOP_UNUSED, + /* 9 */ ENGO2_ANIM_SCRATCHING_LOOP, + /* 10 */ ENGO2_ANIM_UNCURL_SIT_STAND_BIG, + /* 11 */ ENGO2_ANIM_SOBBING_LOOP, + /* 12 */ ENGO2_ANIM_SHAKING_LOOP } EnGo2Animation; static AnimationInfo sAnimationInfo[] = { - { &gGoronAnim_004930, 0.0f, 0.0f, -1.0f, 0x00, 0.0f }, { &gGoronAnim_004930, 0.0f, 0.0f, -1.0f, 0x00, -8.0f }, - { &gGoronAnim_0029A8, 1.0f, 0.0f, -1.0f, 0x00, -8.0f }, { &gGoronAnim_010590, 1.0f, 0.0f, -1.0f, 0x00, -8.0f }, - { &gGoronAnim_003768, 1.0f, 0.0f, -1.0f, 0x00, -8.0f }, { &gGoronAnim_0038E4, 1.0f, 0.0f, -1.0f, 0x02, -8.0f }, - { &gGoronAnim_002D80, 1.0f, 0.0f, -1.0f, 0x02, -8.0f }, { &gGoronAnim_00161C, 1.0f, 0.0f, -1.0f, 0x00, -8.0f }, - { &gGoronAnim_001A00, 1.0f, 0.0f, -1.0f, 0x00, -8.0f }, { &gGoronAnim_0021D0, 1.0f, 0.0f, -1.0f, 0x00, -8.0f }, - { &gGoronAnim_004930, 0.0f, 0.0f, -1.0f, 0x01, -8.0f }, { &gGoronAnim_000750, 1.0f, 0.0f, -1.0f, 0x00, -8.0f }, - { &gGoronAnim_000D5C, 1.0f, 0.0f, -1.0f, 0x00, -8.0f }, + { &gGoronUncurlSitStandAnim, 0.0f, 0.0f, -1.0f, 0x00, 0.0f }, + { &gGoronUncurlSitStandAnim, 0.0f, 0.0f, -1.0f, 0x00, -8.0f }, + { &gGoronWalkingLoopAnim, 1.0f, 0.0f, -1.0f, 0x00, -8.0f }, + { &gGoronSidestepLoopAnim, 1.0f, 0.0f, -1.0f, 0x00, -8.0f }, + { &gGoronCryingLoopAnim, 1.0f, 0.0f, -1.0f, 0x00, -8.0f }, + { &gGoronEyeropsLoopAnim, 1.0f, 0.0f, -1.0f, 0x02, -8.0f }, + { &gGoronEyedropsTakenAnim, 1.0f, 0.0f, -1.0f, 0x02, -8.0f }, + { &gGoronUncurlToProneAnim, 1.0f, 0.0f, -1.0f, 0x00, -8.0f }, + { &gGoronProneLoopAnim, 1.0f, 0.0f, -1.0f, 0x00, -8.0f }, + { &gGoronScratchingLoopAnim, 1.0f, 0.0f, -1.0f, 0x00, -8.0f }, + { &gGoronUncurlSitStandAnim, 0.0f, 0.0f, -1.0f, 0x01, -8.0f }, + { &gGoronSobbingLoopAnim, 1.0f, 0.0f, -1.0f, 0x00, -8.0f }, + { &gGoronShakingLoopAnim, 1.0f, 0.0f, -1.0f, 0x00, -8.0f }, }; static EnGo2DustEffectData sDustEffectData[2][4] = { @@ -1099,7 +1105,7 @@ void func_80A45288(EnGo2* this, PlayState* play) { void func_80A45360(EnGo2* this, f32* alpha) { f32 alphaTarget = - (this->skelAnime.animation == &gGoronAnim_004930) && (this->skelAnime.curFrame <= 32.0f) ? 0.0f : 255.0f; + (this->skelAnime.animation == &gGoronUncurlSitStandAnim) && (this->skelAnime.curFrame <= 32.0f) ? 0.0f : 255.0f; Math_ApproachF(alpha, alphaTarget, 0.4f, 100.0f); this->actor.shape.shadowAlpha = (u8)(u32)*alpha; @@ -1126,12 +1132,12 @@ void func_80A454CC(EnGo2* this) { case GORON_CITY_ENTRANCE: case GORON_CITY_STAIRWELL: case GORON_DMT_FAIRY_HINT: - Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENGO2_ANIM_9); + Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENGO2_ANIM_SCRATCHING_LOOP); break; case GORON_DMT_BIGGORON: if (INV_CONTENT(ITEM_TRADE_ADULT) >= ITEM_BROKEN_GORONS_SWORD && INV_CONTENT(ITEM_TRADE_ADULT) <= ITEM_EYE_DROPS) { - Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENGO2_ANIM_4); + Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENGO2_ANIM_CRYING_LOOP); break; } FALLTHROUGH; @@ -1270,7 +1276,7 @@ void EnGo2_EyeMouthTexState(EnGo2* this) { } void EnGo2_SitDownAnimation(EnGo2* this) { - if ((this->skelAnime.playSpeed != 0.0f) && (this->skelAnime.animation == &gGoronAnim_004930)) { + if ((this->skelAnime.playSpeed != 0.0f) && (this->skelAnime.animation == &gGoronUncurlSitStandAnim)) { if (this->skelAnime.playSpeed > 0.0f && this->skelAnime.curFrame == 14.0f) { if (PARAMS_GET_S(this->actor.params, 0, 5) != GORON_DMT_BIGGORON) { Actor_PlaySfx(&this->actor, NA_SE_EN_GOLON_SIT_DOWN); @@ -1300,10 +1306,10 @@ void EnGo2_GetDustData(EnGo2* this, s32 index2) { void EnGo2_RollingAnimation(EnGo2* this, PlayState* play) { if (PARAMS_GET_S(this->actor.params, 0, 5) == GORON_DMT_BIGGORON) { this->actor.flags &= ~ACTOR_FLAG_ATTENTION_ENABLED; - Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENGO2_ANIM_10); + Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENGO2_ANIM_UNCURL_SIT_STAND_BIG); this->skelAnime.playSpeed = -0.5f; } else { - Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENGO2_ANIM_1); + Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENGO2_ANIM_UNCURL_SIT_STAND); this->skelAnime.playSpeed = -1.0f; } EnGo2_SwapInitialFrameAnimFrameCount(this); @@ -1323,17 +1329,17 @@ void EnGo2_WakeUp(EnGo2* this, PlayState* play) { } if (PARAMS_GET_S(this->actor.params, 0, 5) == GORON_DMT_BIGGORON) { OnePointCutscene_Init(play, 4200, -99, &this->actor, CAM_ID_MAIN); - Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENGO2_ANIM_10); + Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENGO2_ANIM_UNCURL_SIT_STAND_BIG); this->skelAnime.playSpeed = 0.5f; } else { - Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENGO2_ANIM_1); + Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENGO2_ANIM_UNCURL_SIT_STAND); this->skelAnime.playSpeed = 1.0f; } this->actionFunc = func_80A46B40; } void EnGo2_GetItemAnimation(EnGo2* this, PlayState* play) { - Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENGO2_ANIM_1); + Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENGO2_ANIM_UNCURL_SIT_STAND); this->unk_211 = true; this->actionFunc = func_80A46B40; this->skelAnime.playSpeed = 0.0f; @@ -1399,7 +1405,7 @@ s32 EnGo2_IsGoronDmtBombFlower(EnGo2* this) { return false; } - Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENGO2_ANIM_3); + Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENGO2_ANIM_SIDESTEP_LOOP); this->interactInfo.talkState = NPC_TALK_STATE_IDLE; this->isAwake = false; this->trackingMode = NPC_TRACKING_NONE; @@ -1454,21 +1460,21 @@ void EnGo2_GoronLinkAnimation(EnGo2* this, PlayState* play) { if (PARAMS_GET_S(this->actor.params, 0, 5) == GORON_CITY_LINK) { if ((this->actor.textId == 0x3035 && this->unk_20C == 0) || (this->actor.textId == 0x3036 && this->unk_20C == 0)) { - if (this->skelAnime.animation != &gGoronAnim_000D5C) { - animation = ENGO2_ANIM_12; + if (this->skelAnime.animation != &gGoronShakingLoopAnim) { + animation = ENGO2_ANIM_SHAKING_LOOP; this->eyeMouthTexState = 0; } } if ((this->actor.textId == 0x3032 && this->unk_20C == 12) || (this->actor.textId == 0x3033) || (this->actor.textId == 0x3035 && this->unk_20C == 6)) { - if (this->skelAnime.animation != &gGoronAnim_000750) { - animation = ENGO2_ANIM_11; + if (this->skelAnime.animation != &gGoronSobbingLoopAnim) { + animation = ENGO2_ANIM_SOBBING_LOOP; this->eyeMouthTexState = 1; } } - if (this->skelAnime.animation == &gGoronAnim_000750) { + if (this->skelAnime.animation == &gGoronSobbingLoopAnim) { if (this->skelAnime.curFrame == 20.0f) { Actor_PlaySfx(&this->actor, NA_SE_EN_GOLON_CRY); } @@ -1542,7 +1548,7 @@ void EnGo2_Init(Actor* thisx, PlayState* play) { EnGo2_SetColliderDim(this); EnGo2_SetShape(this); - Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENGO2_ANIM_0); + Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENGO2_ANIM_UNCURL_SIT_STAND_IDLE); this->actor.gravity = -1.0f; this->alpha = this->actor.shape.shadowAlpha = 0; this->reverse = 0; @@ -1832,7 +1838,7 @@ void EnGo2_SetGetItem(EnGo2* this, PlayState* play) { void EnGo2_BiggoronEyedrops(EnGo2* this, PlayState* play) { switch (this->goronState) { case 0: - Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENGO2_ANIM_5); + Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENGO2_ANIM_EYEDROPS_LOOP); this->actor.flags &= ~ACTOR_FLAG_ATTENTION_ENABLED; this->actor.shape.rot.y += 0x5B0; this->trackingMode = NPC_TRACKING_NONE; @@ -1851,7 +1857,7 @@ void EnGo2_BiggoronEyedrops(EnGo2* this, PlayState* play) { } } else { func_800F4524(&gSfxDefaultPos, NA_SE_EN_GOLON_GOOD_BIG, 60); - Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENGO2_ANIM_6); + Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENGO2_ANIM_EYEDROPS_TAKEN); Message_ContinueTextbox(play, 0x305A); this->eyeMouthTexState = 3; this->goronState++; @@ -1863,7 +1869,7 @@ void EnGo2_BiggoronEyedrops(EnGo2* this, PlayState* play) { this->eyeMouthTexState = 0; } if (Message_GetState(&play->msgCtx) == TEXT_STATE_CLOSING) { - Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENGO2_ANIM_1); + Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENGO2_ANIM_UNCURL_SIT_STAND); this->actor.flags |= ACTOR_FLAG_ATTENTION_ENABLED; this->trackingMode = NPC_TRACKING_HEAD_AND_TORSO; this->skelAnime.playSpeed = 0.0f; @@ -1914,7 +1920,7 @@ void EnGo2_GoronFireGenericAction(EnGo2* this, PlayState* play) { if (Message_GetState(&play->msgCtx) == TEXT_STATE_CLOSING) { EnGo2_GoronFireCamera(this, play); play->msgCtx.msgMode = MSGMODE_PAUSED; - Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENGO2_ANIM_2); + Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENGO2_ANIM_WALKING_LOOP); this->waypoint = 1; this->skelAnime.playSpeed = 2.0f; func_80A44D84(this);