diff --git a/assets/xml/objects/object_stk2.xml b/assets/xml/objects/object_stk2.xml
index 2aab5947e5..d9bde796db 100644
--- a/assets/xml/objects/object_stk2.xml
+++ b/assets/xml/objects/object_stk2.xml
@@ -27,10 +27,10 @@
-
-
-
-
+
+
+
+
@@ -96,7 +96,7 @@
-
+
diff --git a/src/overlays/actors/ovl_Dm_Char02/z_dm_char02.c b/src/overlays/actors/ovl_Dm_Char02/z_dm_char02.c
index 08e6dfbcf7..1844783ff5 100644
--- a/src/overlays/actors/ovl_Dm_Char02/z_dm_char02.c
+++ b/src/overlays/actors/ovl_Dm_Char02/z_dm_char02.c
@@ -1,7 +1,7 @@
/*
* File: z_dm_char02.c
* Overlay: ovl_Dm_Char02
- * Description: Ocarina of Time (dropped from Skull Kid's hand)
+ * Description: The Ocarina of Time that for the scenes on the Clock Tower's rooftop.
*/
#include "z_dm_char02.h"
@@ -16,7 +16,7 @@ void DmChar02_Destroy(Actor* thisx, PlayState* play);
void DmChar02_Update(Actor* thisx, PlayState* play);
void DmChar02_Draw(Actor* thisx, PlayState* play);
-void func_80AAB04C(DmChar02* this, PlayState* play);
+void DmChar02_PerformCutsceneActions(DmChar02* this, PlayState* play);
const ActorInit Dm_Char02_InitVars = {
ACTOR_DM_CHAR02,
@@ -31,43 +31,52 @@ const ActorInit Dm_Char02_InitVars = {
};
+typedef enum {
+ /* 0 */ DMCHAR02_ANIMATION_HIT_GROUND,
+ /* 1 */ DMCHAR02_ANIMATION_TURN_AROUND,
+ /* 2 */ DMCHAR02_ANIMATION_JUGGLE,
+ /* 3 */ DMCHAR02_ANIMATION_FALL,
+} DmChar02AnimationIndex;
+
static AnimationInfo sAnimations[] = {
- { &object_stk2_Anim_00A2BC, 1.0f, 0.0f, -1.0f, ANIMMODE_ONCE, 0.0f },
- { &object_stk2_Anim_00A4C4, 1.0f, 0.0f, -1.0f, ANIMMODE_ONCE, 0.0f },
- { &object_stk2_Anim_00A6D4, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f },
- { &object_stk2_Anim_00A104, 1.0f, 0.0f, -1.0f, ANIMMODE_ONCE, 0.0f },
+ { &gClockTowerOcarinaOfTimeHitGroundAnim, 1.0f, 0.0f, -1.0f, ANIMMODE_ONCE, 0.0f },
+ { &gClockTowerOcarinaOfTimeTurnAroundAnim, 1.0f, 0.0f, -1.0f, ANIMMODE_ONCE, 0.0f },
+ { &gClockTowerOcarinaOfTimeJuggleAnim, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f },
+ { &gClockTowerOcarinaOfTimeFallAnim, 1.0f, 0.0f, -1.0f, ANIMMODE_ONCE, 0.0f },
};
-void DmChar02_ChangeAnimationByInfo(SkelAnime* skelAnime, AnimationInfo* animInfo, u16 index) {
+void DmChar02_ChangeAnimation(SkelAnime* skelAnime, AnimationInfo* animation, u16 index) {
f32 frameCount;
- animInfo += index;
+ animation += index;
- if (animInfo->frameCount < 0.0f) {
- frameCount = Animation_GetLastFrame(animInfo->animation);
+ if (animation->frameCount < 0.0f) {
+ frameCount = Animation_GetLastFrame(animation->animation);
} else {
- frameCount = animInfo->frameCount;
+ frameCount = animation->frameCount;
}
- Animation_Change(skelAnime, animInfo->animation, animInfo->playSpeed, animInfo->startFrame, frameCount,
- animInfo->mode, animInfo->morphFrames);
+
+ Animation_Change(skelAnime, animation->animation, animation->playSpeed, animation->startFrame, frameCount,
+ animation->mode, animation->morphFrames);
}
-void func_80AAAECC(Actor* actor, PlayState* play) {
+void DmChar02_PlaySfxForDroppingOcarinaCutscene(DmChar02* this, PlayState* play) {
switch (play->csCtx.frames) {
case 95:
- Actor_PlaySfxAtPos(actor, NA_SE_EV_OCARINA_BOUND_0);
- return;
+ Actor_PlaySfxAtPos(&this->actor, NA_SE_EV_OCARINA_BOUND_0);
+ break;
+
case 101:
case 105:
case 112:
- Actor_PlaySfxAtPos(actor, NA_SE_EV_OCARINA_BOUND_1);
- return;
+ Actor_PlaySfxAtPos(&this->actor, NA_SE_EV_OCARINA_BOUND_1);
+ break;
}
}
-void func_80AAAF2C(DmChar02* this, PlayState* play) {
+void DmChar02_PlaySfxForCutscenes(DmChar02* this, PlayState* play) {
if ((play->csCtx.state != 0) && (play->sceneNum == SCENE_OKUJOU) && (play->csCtx.currentCsIndex == 1)) {
- func_80AAAECC(&this->actor, play);
+ DmChar02_PlaySfxForDroppingOcarinaCutscene(this, play);
}
}
@@ -75,13 +84,13 @@ void DmChar02_Init(Actor* thisx, PlayState* play) {
DmChar02* this = THIS;
if (gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) {
- this->animIndex = 0;
+ this->animIndex = DMCHAR02_ANIMATION_HIT_GROUND;
this->actor.targetArrowOffset = 3000.0f;
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 24.0f);
SkelAnime_InitFlex(play, &this->skelAnime, &gClockTowerOcarinaOfTimeSkel, NULL, NULL, NULL, 0);
- DmChar02_ChangeAnimationByInfo(&this->skelAnime, sAnimations, 0);
+ DmChar02_ChangeAnimation(&this->skelAnime, sAnimations, 0);
Actor_SetScale(&this->actor, 0.01f);
- this->actionFunc = func_80AAB04C;
+ this->actionFunc = DmChar02_PerformCutsceneActions;
} else {
Actor_MarkForDeath(&this->actor);
}
@@ -90,8 +99,8 @@ void DmChar02_Init(Actor* thisx, PlayState* play) {
void DmChar02_Destroy(Actor* thisx, PlayState* play) {
}
-void func_80AAB04C(DmChar02* this, PlayState* play) {
- u8 sp2F = true;
+void DmChar02_PerformCutsceneActions(DmChar02* this, PlayState* play) {
+ u8 shouldChangeAnimation = true;
s32 actionIndex;
if (Cutscene_CheckActorAction(play, 0x83)) {
@@ -99,29 +108,35 @@ void func_80AAB04C(DmChar02* this, PlayState* play) {
if (play->csCtx.frames == play->csCtx.actorActions[actionIndex]->startFrame) {
switch (play->csCtx.actorActions[actionIndex]->action) {
default:
- this->animIndex = 0;
- sp2F = false;
+ this->animIndex = DMCHAR02_ANIMATION_HIT_GROUND;
+ shouldChangeAnimation = false;
break;
+
case 1:
- this->animIndex = 0;
+ this->animIndex = DMCHAR02_ANIMATION_HIT_GROUND;
break;
+
case 2:
- this->animIndex = 1;
+ this->animIndex = DMCHAR02_ANIMATION_TURN_AROUND;
break;
+
case 4:
- this->animIndex = 3;
+ this->animIndex = DMCHAR02_ANIMATION_FALL;
break;
}
- if (sp2F) {
- DmChar02_ChangeAnimationByInfo(&this->skelAnime, &sAnimations[this->animIndex], 0);
+
+ if (shouldChangeAnimation) {
+ DmChar02_ChangeAnimation(&this->skelAnime, &sAnimations[this->animIndex], 0);
}
}
+
Cutscene_ActorTranslateAndYaw(&this->actor, play, actionIndex);
}
+
if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
- if (this->animIndex == 1) {
+ if (this->animIndex == DMCHAR02_ANIMATION_TURN_AROUND) {
this->animIndex++;
- DmChar02_ChangeAnimationByInfo(&this->skelAnime, &sAnimations[this->animIndex], 0);
+ DmChar02_ChangeAnimation(&this->skelAnime, &sAnimations[this->animIndex], 0);
}
}
}
@@ -130,7 +145,7 @@ void DmChar02_Update(Actor* thisx, PlayState* play) {
DmChar02* this = THIS;
SkelAnime_Update(&this->skelAnime);
- this->unk2F0 = this->unk2F0;
+ this->unk_2F0 = this->unk_2F0;
this->actionFunc(this, play);
if (!Actor_HasParent(&this->actor, play)) {
Actor_PickUp(&this->actor, play, GI_OCARINA, 30.0f, 80.0f);
@@ -138,7 +153,8 @@ void DmChar02_Update(Actor* thisx, PlayState* play) {
gSaveContext.save.playerForm = PLAYER_FORM_HUMAN;
Actor_MarkForDeath(&this->actor);
}
- func_80AAAF2C(this, play);
+
+ DmChar02_PlaySfxForCutscenes(this, play);
}
s32 DmChar02_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
@@ -154,19 +170,21 @@ void DmChar02_TransformLimbDraw(PlayState* play, s32 limbIndex, Actor* thisx) {
void DmChar02_Draw(Actor* thisx, PlayState* play) {
s32 pad[2];
DmChar02* this = THIS;
- s32 sp30 = false;
+ s32 shouldDraw = false;
if ((play->csCtx.state == 0) && (this->actor.world.pos.y < 100.0f)) {
- sp30 = true;
+ shouldDraw = true;
} else if (Cutscene_CheckActorAction(play, 0x6B)) {
switch (play->csCtx.actorActions[Cutscene_GetActorActionIndex(play, 0x6B)]->action) {
case 0x17:
case 0x1C:
case 0x26:
- sp30 = true;
+ shouldDraw = true;
+ break;
}
}
- if (sp30) {
+
+ if (shouldDraw) {
func_8012C28C(play->state.gfxCtx);
SkelAnime_DrawTransformFlexOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable,
this->skelAnime.dListCount, DmChar02_OverrideLimbDraw, DmChar02_PostLimbDraw,
diff --git a/src/overlays/actors/ovl_Dm_Char02/z_dm_char02.h b/src/overlays/actors/ovl_Dm_Char02/z_dm_char02.h
index 246fd5531b..6979894965 100644
--- a/src/overlays/actors/ovl_Dm_Char02/z_dm_char02.h
+++ b/src/overlays/actors/ovl_Dm_Char02/z_dm_char02.h
@@ -10,12 +10,12 @@ typedef void (*DmChar02ActionFunc)(struct DmChar02*, PlayState*);
typedef struct DmChar02 {
/* 0x000 */ Actor actor;
/* 0x144 */ SkelAnime skelAnime;
- /* 0x188 */ UNK_TYPE1 pad188[0x108];
+ /* 0x188 */ UNK_TYPE1 pad_188[0x108];
/* 0x290 */ DmChar02ActionFunc actionFunc;
- /* 0x294 */ UNK_TYPE1 pad294[0x4C];
+ /* 0x294 */ UNK_TYPE1 pad_294[0x4C];
/* 0x2E0 */ s16 animIndex;
- /* 0x2E2 */ UNK_TYPE1 pad2E2[0xE];
- /* 0x2F0 */ u32 unk2F0;
+ /* 0x2E2 */ UNK_TYPE1 pad_2E2[0xE];
+ /* 0x2F0 */ u32 unk_2F0;
} DmChar02; // size = 0x2F4
extern const ActorInit Dm_Char02_InitVars;
diff --git a/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c b/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c
index caa2d02b16..0e5f572099 100644
--- a/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c
+++ b/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c
@@ -300,13 +300,13 @@ static AnimationInfo sAnimations[] = {
void DmStk_LoadObjectForAnimation(DmStk* this, PlayState* play) {
s32 objectIndex;
- if (((this->animationId >= SK_ANIMATION_SHAKE_HEAD) && (this->animationId <= SK_ANIMATION_BENT_OVER_HEAD_TWITCH)) ||
- (this->animationId == SK_ANIMATION_CALL_DOWN_MOON_START) ||
- (this->animationId == SK_ANIMATION_CALL_DOWN_MOON_LOOP) ||
- (this->animationId == SK_ANIMATION_TELESCOPE_LOOK_UP_START) ||
- (this->animationId == SK_ANIMATION_TELESCOPE_LOOK_UP_LOOP)) {
+ if (((this->animIndex >= SK_ANIMATION_SHAKE_HEAD) && (this->animIndex <= SK_ANIMATION_BENT_OVER_HEAD_TWITCH)) ||
+ (this->animIndex == SK_ANIMATION_CALL_DOWN_MOON_START) ||
+ (this->animIndex == SK_ANIMATION_CALL_DOWN_MOON_LOOP) ||
+ (this->animIndex == SK_ANIMATION_TELESCOPE_LOOK_UP_START) ||
+ (this->animIndex == SK_ANIMATION_TELESCOPE_LOOK_UP_LOOP)) {
objectIndex = this->objectStkObjectIndex;
- } else if (this->animationId >= SK_ANIMATION_LOOK_UP_AT_GIANTS) {
+ } else if (this->animIndex >= SK_ANIMATION_LOOK_UP_AT_GIANTS) {
objectIndex = this->objectStk3ObjectIndex;
} else {
objectIndex = this->objectStk2ObjectIndex;
@@ -596,7 +596,7 @@ void DmStk_PlaySfxForClockTowerIntroCutsceneVersion1(DmStk* this, PlayState* pla
break;
}
- if ((this->animationId == SK_ANIMATION_OCARINA_JUGGLE) && (play->csCtx.frames < 700)) {
+ if ((this->animIndex == SK_ANIMATION_OCARINA_JUGGLE) && (play->csCtx.frames < 700)) {
if (Animation_OnFrame(&this->skelAnime, 5.0f) || Animation_OnFrame(&this->skelAnime, 25.0f)) {
Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_STALKIDS_OTEDAMA1);
} else if (Animation_OnFrame(&this->skelAnime, 17.0f) || Animation_OnFrame(&this->skelAnime, 40.0f)) {
@@ -734,7 +734,7 @@ void DmStk_PlaySfxForEndingCutsceneSecondPart(DmStk* this, PlayState* play) {
break;
}
- if (this->animationId == SK_ANIMATION_SHAKE_HEAD) {
+ if (this->animIndex == SK_ANIMATION_SHAKE_HEAD) {
if (Animation_OnFrame(&this->skelAnime, 8.0f) || Animation_OnFrame(&this->skelAnime, 17.0f)) {
Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_STALKIDS_MASK_OFF);
}
@@ -742,12 +742,12 @@ void DmStk_PlaySfxForEndingCutsceneSecondPart(DmStk* this, PlayState* play) {
if (Animation_OnFrame(&this->skelAnime, 28.0f)) {
Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_STALKIDS_RIDE);
}
- } else if (this->animationId == SK_ANIMATION_LAUGH_AFTER_SNIFF) {
+ } else if (this->animIndex == SK_ANIMATION_LAUGH_AFTER_SNIFF) {
if (Animation_OnFrame(&this->skelAnime, 2.0f) || Animation_OnFrame(&this->skelAnime, 6.0f) ||
Animation_OnFrame(&this->skelAnime, 12.0f) || Animation_OnFrame(&this->skelAnime, 18.0f)) {
Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_STALKIDS_MASK_OFF);
}
- } else if ((this->animationId == SK_ANIMATION_SNIFF) &&
+ } else if ((this->animIndex == SK_ANIMATION_SNIFF) &&
(Animation_OnFrame(&this->skelAnime, 16.0f) || Animation_OnFrame(&this->skelAnime, 23.0f))) {
Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_STALKIDS_NOSE);
}
@@ -983,20 +983,20 @@ void DmStk_PlaySfxForCutscenes(DmStk* this, PlayState* play) {
}
}
- if (this->animationId == SK_ANIMATION_WALK) {
+ if (this->animIndex == SK_ANIMATION_WALK) {
if (Animation_OnFrame(&this->skelAnime, 2.0f) || Animation_OnFrame(&this->skelAnime, 6.0f)) {
Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_STALKIDS_WALK);
}
- } else if (this->animationId == SK_ANIMATION_SEARCH_LINK) {
+ } else if (this->animIndex == SK_ANIMATION_SEARCH_LINK) {
if (Animation_OnFrame(&this->skelAnime, 0.0f) || Animation_OnFrame(&this->skelAnime, 13.0f) ||
Animation_OnFrame(&this->skelAnime, 20.0f) || Animation_OnFrame(&this->skelAnime, 27.0f)) {
Actor_PlaySfxAtPos(&this->actor, NA_SE_PL_CALM_HIT);
}
- } else if (this->animationId == SK_ANIMATION_PICK_UP_OCARINA_AND_START_PLAYING) {
+ } else if (this->animIndex == SK_ANIMATION_PICK_UP_OCARINA_AND_START_PLAYING) {
if (Animation_OnFrame(&this->skelAnime, 3.0f)) {
Actor_PlaySfxAtPos(&this->actor, NA_SE_PL_PUT_OUT_ITEM);
}
- } else if (this->animationId == SK_ANIMATION_PLAY_OCARINA_AND_LAUGH) {
+ } else if (this->animIndex == SK_ANIMATION_PLAY_OCARINA_AND_LAUGH) {
if (Animation_OnFrame(&this->skelAnime, 14.0f)) {
Actor_PlaySfxAtPos(&this->actor, NA_SE_EV_UNSKILLFUL_OCARINA);
}
@@ -1024,7 +1024,7 @@ void DmStk_Init(Actor* thisx, PlayState* play) {
this->tatlMessageTimer = 0;
this->deflectCount = 0;
this->maskType = SK_MASK_TYPE_NORMAL;
- this->animationId = SK_ANIMATION_IDLE;
+ this->animIndex = SK_ANIMATION_IDLE;
this->fogR = play->lightCtx.unk7;
this->fogG = play->lightCtx.unk8;
this->fogB = play->lightCtx.unk9;
@@ -1062,7 +1062,7 @@ void DmStk_Init(Actor* thisx, PlayState* play) {
}
} else if (gSaveContext.sceneSetupIndex == 3) {
- this->animationId = SK_ANIMATION_FLOATING_ARMS_CROSSED;
+ this->animIndex = SK_ANIMATION_FLOATING_ARMS_CROSSED;
if (gSaveContext.unk_3DD0[3] == 0) {
// This code is called when the Giants fail to stop the moon.
// Starts a 1 minute (60 second) timer until the moon falls.
@@ -1075,12 +1075,12 @@ void DmStk_Init(Actor* thisx, PlayState* play) {
sCylinderInit.base.colType = COLTYPE_WOOD;
this->actionFunc = DmStk_ClockTower_Idle;
} else {
- this->animationId = SK_ANIMATION_FLOATING_ARMS_CROSSED;
+ this->animIndex = SK_ANIMATION_FLOATING_ARMS_CROSSED;
this->actionFunc = DmStk_ClockTower_DoNothing;
}
} else {
this->dekuPipesCutsceneState = SK_DEKU_PIPES_CS_STATE_READY;
- this->animationId = SK_ANIMATION_FLOATING_ARMS_CROSSED;
+ this->animIndex = SK_ANIMATION_FLOATING_ARMS_CROSSED;
this->actor.world.pos.y = 120.0f;
sCylinderInit.base.colType = COLTYPE_WOOD;
this->actionFunc = DmStk_ClockTower_Idle;
@@ -1099,7 +1099,7 @@ void DmStk_Init(Actor* thisx, PlayState* play) {
this->fogN = 996;
this->fogF = 1000;
this->fogScale = 0.7f;
- this->animationId = SK_ANIMATION_BENT_OVER_HEAD_TWITCH;
+ this->animIndex = SK_ANIMATION_BENT_OVER_HEAD_TWITCH;
this->actionFunc = DmStk_WaitForTelescope;
} else {
if ((play->sceneNum == SCENE_LOST_WOODS) && !Cutscene_IsPlaying(play)) {
@@ -1123,7 +1123,7 @@ void DmStk_Init(Actor* thisx, PlayState* play) {
this->csAction = 99;
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 24.0f);
SkelAnime_InitFlex(play, &this->skelAnime, &gSkullKidSkel, NULL, NULL, NULL, 0);
- DmStk_ChangeAnimation(this, play, &this->skelAnime, &sAnimations[this->animationId], 0);
+ DmStk_ChangeAnimation(this, play, &this->skelAnime, &sAnimations[this->animIndex], 0);
}
Actor_SetScale(&this->actor, 0.01f);
@@ -1200,9 +1200,9 @@ void DmStk_ClockTower_StartIntroCutsceneVersion1(DmStk* this, PlayState* play) {
void DmStk_ClockTower_WaitForIntroCutsceneVersion1ToEnd(DmStk* this, PlayState* play) {
if (play->csCtx.state == 0) {
- this->animationId = SK_ANIMATION_CALL_DOWN_MOON_LOOP;
+ this->animIndex = SK_ANIMATION_CALL_DOWN_MOON_LOOP;
this->handType = SK_HAND_TYPE_HOLDING_OCARINA;
- DmStk_ChangeAnimation(this, play, &this->skelAnime, &sAnimations[this->animationId], 0);
+ DmStk_ChangeAnimation(this, play, &this->skelAnime, &sAnimations[this->animIndex], 0);
this->actionFunc = DmStk_ClockTower_IdleWithOcarina;
}
}
@@ -1218,8 +1218,8 @@ void DmStk_ClockTower_StartIntroCutsceneVersion2(DmStk* this, PlayState* play) {
void DmStk_ClockTower_WaitForIntroCutsceneVersion2ToEnd(DmStk* this, PlayState* play) {
if (play->csCtx.state == 0) {
- this->animationId = SK_ANIMATION_FLOATING_ARMS_CROSSED;
- DmStk_ChangeAnimation(this, play, &this->skelAnime, &sAnimations[this->animationId], 0);
+ this->animIndex = SK_ANIMATION_FLOATING_ARMS_CROSSED;
+ DmStk_ChangeAnimation(this, play, &this->skelAnime, &sAnimations[this->animIndex], 0);
this->actionFunc = DmStk_ClockTower_Idle;
}
}
@@ -1279,8 +1279,8 @@ void DmStk_ClockTower_DeflectHit(DmStk* this, PlayState* play) {
}
}
- this->animationId = SK_ANIMATION_DEFLECT_ATTACK;
- DmStk_ChangeAnimation(this, play, &this->skelAnime, &sAnimations[this->animationId], 0);
+ this->animIndex = SK_ANIMATION_DEFLECT_ATTACK;
+ DmStk_ChangeAnimation(this, play, &this->skelAnime, &sAnimations[this->animIndex], 0);
Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_STALKIDS_DOWN_K);
this->actionFunc = DmStk_ClockTower_WaitForDeflectionToEnd;
}
@@ -1292,8 +1292,8 @@ void DmStk_ClockTower_DeflectHit(DmStk* this, PlayState* play) {
void DmStk_ClockTower_WaitForDeflectionToEnd(DmStk* this, PlayState* play) {
DmStk_ClockTower_AdjustHeightAndRotation(this, play);
if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
- this->animationId = SK_ANIMATION_FLOATING_ARMS_CROSSED;
- DmStk_ChangeAnimation(this, play, &this->skelAnime, &sAnimations[this->animationId], 0);
+ this->animIndex = SK_ANIMATION_FLOATING_ARMS_CROSSED;
+ DmStk_ChangeAnimation(this, play, &this->skelAnime, &sAnimations[this->animIndex], 0);
this->actionFunc = DmStk_ClockTower_Idle;
}
@@ -1325,96 +1325,96 @@ void DmStk_UpdateCutscenes(DmStk* this, PlayState* play) {
switch (play->csCtx.actorActions[actorActionIndex]->action) {
case 0:
case 1:
- this->animationId = SK_ANIMATION_IDLE;
+ this->animIndex = SK_ANIMATION_IDLE;
break;
case 2:
- this->animationId = SK_ANIMATION_WALK;
+ this->animIndex = SK_ANIMATION_WALK;
break;
case 3:
- this->animationId = SK_ANIMATION_UNUSED_KICK_OVER_LINK;
+ this->animIndex = SK_ANIMATION_UNUSED_KICK_OVER_LINK;
break;
case 4:
- this->animationId = SK_ANIMATION_KICK_OVER_LINK;
+ this->animIndex = SK_ANIMATION_KICK_OVER_LINK;
break;
case 6:
- this->animationId = SK_ANIMATION_PICK_UP_OCARINA;
+ this->animIndex = SK_ANIMATION_PICK_UP_OCARINA;
this->handType = SK_HAND_TYPE_HOLDING_OCARINA;
break;
case 7:
- this->animationId = SK_ANIMATION_PICK_UP_OCARINA_AND_START_PLAYING;
+ this->animIndex = SK_ANIMATION_PICK_UP_OCARINA_AND_START_PLAYING;
this->handType = SK_HAND_TYPE_HOLDING_OCARINA;
break;
case 8:
- this->animationId = SK_ANIMATION_SHAKE_HEAD;
+ this->animIndex = SK_ANIMATION_SHAKE_HEAD;
break;
case 9:
- this->animationId = SK_ANIMATION_IDLE;
+ this->animIndex = SK_ANIMATION_IDLE;
this->fadeInState = SK_FADE_IN_STATE_START;
break;
case 12:
- this->animationId = SK_ANIMATION_HIDE_OCARINA_START;
+ this->animIndex = SK_ANIMATION_HIDE_OCARINA_START;
this->handType = SK_HAND_TYPE_HOLDING_OCARINA;
break;
case 13:
- this->animationId = SK_ANIMATION_JUMP_WHILE_HIDING_OCARINA;
+ this->animIndex = SK_ANIMATION_JUMP_WHILE_HIDING_OCARINA;
this->handType = SK_HAND_TYPE_HOLDING_OCARINA;
break;
case 14:
- this->animationId = SK_ANIMATION_HORSE_RIDE_START;
+ this->animIndex = SK_ANIMATION_HORSE_RIDE_START;
break;
case 15:
- this->animationId = SK_ANIMATION_HORSE_RIDE_LOOP;
+ this->animIndex = SK_ANIMATION_HORSE_RIDE_LOOP;
break;
case 16:
- this->animationId = SK_ANIMATION_HORSE_RIDE_AND_ROTATE;
+ this->animIndex = SK_ANIMATION_HORSE_RIDE_AND_ROTATE;
break;
case 17:
- this->animationId = SK_ANIMATION_RECLINING_FLOAT;
+ this->animIndex = SK_ANIMATION_RECLINING_FLOAT;
break;
case 18:
- this->animationId = SK_ANIMATION_CURSE_START;
+ this->animIndex = SK_ANIMATION_CURSE_START;
break;
case 19:
- this->animationId = SK_ANIMATION_LAUGH_START;
+ this->animIndex = SK_ANIMATION_LAUGH_START;
break;
case 20:
- this->animationId = SK_ANIMATION_RAISE_MASK_START;
+ this->animIndex = SK_ANIMATION_RAISE_MASK_START;
break;
case 21:
- this->animationId = SK_ANIMATION_LOWER_MASK;
+ this->animIndex = SK_ANIMATION_LOWER_MASK;
break;
case 22:
- this->animationId = SK_ANIMATION_PLAY_OCARINA_WHILE_FLOATING;
+ this->animIndex = SK_ANIMATION_PLAY_OCARINA_WHILE_FLOATING;
if (gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) {
this->handType = SK_HAND_TYPE_HOLDING_OCARINA;
}
break;
case 23:
- this->animationId = SK_ANIMATION_FLOATING_TURN_AROUND;
+ this->animIndex = SK_ANIMATION_FLOATING_TURN_AROUND;
this->handType = SK_HAND_TYPE_JUGGLING_OR_DROPPING_OCARINA;
break;
case 24:
- this->animationId = SK_ANIMATION_CALL_DOWN_MOON_START;
+ this->animIndex = SK_ANIMATION_CALL_DOWN_MOON_START;
if (gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) {
this->handType = SK_HAND_TYPE_HOLDING_OCARINA;
}
@@ -1425,148 +1425,148 @@ void DmStk_UpdateCutscenes(DmStk* this, PlayState* play) {
break;
case 26:
- this->animationId = SK_ANIMATION_SMACK_FAIRY_START;
+ this->animIndex = SK_ANIMATION_SMACK_FAIRY_START;
if (gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) {
this->handType = SK_HAND_TYPE_HOLDING_OCARINA;
}
break;
case 27:
- this->animationId = SK_ANIMATION_HIT_BY_BUBBLE;
+ this->animIndex = SK_ANIMATION_HIT_BY_BUBBLE;
if (gSaveContext.save.inventory.items[SLOT_OCARINA] == ITEM_NONE) {
this->handType = SK_HAND_TYPE_HOLDING_OCARINA;
}
break;
case 28:
- this->animationId = SK_ANIMATION_DROP_OCARINA;
+ this->animIndex = SK_ANIMATION_DROP_OCARINA;
this->handType = SK_HAND_TYPE_JUGGLING_OR_DROPPING_OCARINA;
break;
case 30:
- this->animationId = SK_ANIMATION_FLOATING_ARMS_CROSSED;
+ this->animIndex = SK_ANIMATION_FLOATING_ARMS_CROSSED;
break;
case 31:
- this->animationId = SK_ANIMATION_DEFLECT_ATTACK;
+ this->animIndex = SK_ANIMATION_DEFLECT_ATTACK;
break;
case 32:
- this->animationId = SK_ANIMATION_SURPRISE_START;
+ this->animIndex = SK_ANIMATION_SURPRISE_START;
break;
case 33:
- this->animationId = SK_ANIMATION_LOOK_AROUND_FOR_GIANTS_START;
+ this->animIndex = SK_ANIMATION_LOOK_AROUND_FOR_GIANTS_START;
break;
case 34:
- this->animationId = SK_ANIMATION_HOLD_HEAD_AND_SHAKE_START;
+ this->animIndex = SK_ANIMATION_HOLD_HEAD_AND_SHAKE_START;
break;
case 35:
- this->animationId = SK_ANIMATION_HOLD_HEAD_AND_SCREAM_START;
+ this->animIndex = SK_ANIMATION_HOLD_HEAD_AND_SCREAM_START;
break;
case 36:
- this->animationId = SK_ANIMATION_HUDDLE_WITH_FAIRIES;
+ this->animIndex = SK_ANIMATION_HUDDLE_WITH_FAIRIES;
break;
case 37:
- this->animationId = SK_ANIMATION_SEARCH_MASK_SALESMAN;
+ this->animIndex = SK_ANIMATION_SEARCH_MASK_SALESMAN;
break;
case 38:
- this->animationId = SK_ANIMATION_HOLD_UP_MASK_START;
+ this->animIndex = SK_ANIMATION_HOLD_UP_MASK_START;
break;
case 39:
- this->animationId = SK_ANIMATION_SHIVER;
+ this->animIndex = SK_ANIMATION_SHIVER;
break;
case 40:
- this->animationId = SK_ANIMATION_DRAW;
+ this->animIndex = SK_ANIMATION_DRAW;
break;
case 41:
- this->animationId = SK_ANIMATION_TELESCOPE_LOOK_UP_START;
+ this->animIndex = SK_ANIMATION_TELESCOPE_LOOK_UP_START;
break;
case 42:
- this->animationId = SK_ANIMATION_BENT_OVER_HEAD_TWITCH;
+ this->animIndex = SK_ANIMATION_BENT_OVER_HEAD_TWITCH;
break;
case 43:
- this->animationId = SK_ANIMATION_BENT_OVER_LOOK_UP;
+ this->animIndex = SK_ANIMATION_BENT_OVER_LOOK_UP;
break;
case 44:
- this->animationId = SK_ANIMATION_SPANK;
+ this->animIndex = SK_ANIMATION_SPANK;
break;
case 45:
- this->animationId = SK_ANIMATION_HIP_SHAKE_AND_JUMP;
+ this->animIndex = SK_ANIMATION_HIP_SHAKE_AND_JUMP;
this->fadeOutState = SK_FADE_OUT_STATE_FADING_OUT;
break;
case 46:
this->handType = SK_HAND_TYPE_HOLDING_FLUTE;
- this->animationId = SK_ANIMATION_PLAY_FLUTE;
+ this->animIndex = SK_ANIMATION_PLAY_FLUTE;
break;
case 47:
- this->animationId = SK_ANIMATION_CARTWHEEL;
+ this->animIndex = SK_ANIMATION_CARTWHEEL;
break;
case 48:
- this->animationId = SK_ANIMATION_CARTWHEEL;
+ this->animIndex = SK_ANIMATION_CARTWHEEL;
break;
case 49:
- this->animationId = SK_ANIMATION_LOOK_UP_AT_GIANTS;
+ this->animIndex = SK_ANIMATION_LOOK_UP_AT_GIANTS;
break;
case 50:
- this->animationId = SK_ANIMATION_ASHAMED_START;
+ this->animIndex = SK_ANIMATION_ASHAMED_START;
break;
case 51:
- this->animationId = SK_ANIMATION_LOOK_LEFT_START;
+ this->animIndex = SK_ANIMATION_LOOK_LEFT_START;
break;
case 52:
- this->animationId = SK_ANIMATION_SNIFF;
+ this->animIndex = SK_ANIMATION_SNIFF;
break;
case 53:
- this->animationId = SK_ANIMATION_CARTWHEEL;
+ this->animIndex = SK_ANIMATION_CARTWHEEL;
break;
case 54:
- this->animationId = SK_ANIMATION_LIE_FLAT;
+ this->animIndex = SK_ANIMATION_LIE_FLAT;
break;
case 55:
- this->animationId = SK_ANIMATION_DANGLE_FROM_MASK_START;
+ this->animIndex = SK_ANIMATION_DANGLE_FROM_MASK_START;
break;
case 56:
- this->animationId = SK_ANIMATION_DROPPED_FROM_MASK;
+ this->animIndex = SK_ANIMATION_DROPPED_FROM_MASK;
break;
case 57:
- this->animationId = SK_ANIMATION_LOOK_UP_AT_GIANTS;
+ this->animIndex = SK_ANIMATION_LOOK_UP_AT_GIANTS;
break;
case 58:
- this->animationId = SK_ANIMATION_ASHAMED_START;
+ this->animIndex = SK_ANIMATION_ASHAMED_START;
break;
case 59:
- this->animationId = SK_ANIMATION_LOOK_LEFT_START;
+ this->animIndex = SK_ANIMATION_LOOK_LEFT_START;
break;
case 60:
- this->animationId = SK_ANIMATION_SNIFF;
+ this->animIndex = SK_ANIMATION_SNIFF;
break;
case 5:
@@ -1574,11 +1574,11 @@ void DmStk_UpdateCutscenes(DmStk* this, PlayState* play) {
break;
default:
- this->animationId = SK_ANIMATION_SHAKE_HEAD;
+ this->animIndex = SK_ANIMATION_SHAKE_HEAD;
break;
}
- DmStk_ChangeAnimation(this, play, &this->skelAnime, &sAnimations[this->animationId], 0);
+ DmStk_ChangeAnimation(this, play, &this->skelAnime, &sAnimations[this->animIndex], 0);
}
}
@@ -1642,7 +1642,7 @@ void DmStk_UpdateCutscenes(DmStk* this, PlayState* play) {
}
if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
- switch (this->animationId) {
+ switch (this->animIndex) {
case SK_ANIMATION_LOOK_AROUND:
case SK_ANIMATION_CURSE_START:
case SK_ANIMATION_LAUGH_START:
@@ -1666,34 +1666,34 @@ void DmStk_UpdateCutscenes(DmStk* this, PlayState* play) {
case SK_ANIMATION_ASHAMED_START:
case SK_ANIMATION_LOOK_LEFT_START:
case SK_ANIMATION_SNIFF:
- this->animationId++;
- DmStk_ChangeAnimation(this, play, &this->skelAnime, &sAnimations[this->animationId], 0);
+ this->animIndex++;
+ DmStk_ChangeAnimation(this, play, &this->skelAnime, &sAnimations[this->animIndex], 0);
break;
case SK_ANIMATION_LOWER_MASK:
- this->animationId = SK_ANIMATION_IDLE;
+ this->animIndex = SK_ANIMATION_IDLE;
this->maskType = SK_MASK_TYPE_NORMAL;
this->handType = SK_HAND_TYPE_DEFAULT;
- DmStk_ChangeAnimation(this, play, &this->skelAnime, &sAnimations[this->animationId], 0);
+ DmStk_ChangeAnimation(this, play, &this->skelAnime, &sAnimations[this->animIndex], 0);
break;
}
}
- if (((this->animationId == SK_ANIMATION_RAISE_MASK_START) && (this->skelAnime.curFrame >= 16.0f)) ||
- (this->animationId == SK_ANIMATION_RAISE_MASK_LOOP) || (this->animationId == SK_ANIMATION_LOWER_MASK)) {
+ if (((this->animIndex == SK_ANIMATION_RAISE_MASK_START) && (this->skelAnime.curFrame >= 16.0f)) ||
+ (this->animIndex == SK_ANIMATION_RAISE_MASK_LOOP) || (this->animIndex == SK_ANIMATION_LOWER_MASK)) {
this->maskType = SK_MASK_TYPE_RAISED;
this->handType = SK_HAND_TYPE_HOLDING_MAJORAS_MASK;
- } else if (((this->animationId >= SK_ANIMATION_HUDDLE_WITH_FAIRIES) && (this->animationId <= SK_ANIMATION_DRAW)) ||
- ((this->animationId >= SK_ANIMATION_PLAY_FLUTE) && (this->animationId <= SK_ANIMATION_CARTWHEEL)) ||
+ } else if (((this->animIndex >= SK_ANIMATION_HUDDLE_WITH_FAIRIES) && (this->animIndex <= SK_ANIMATION_DRAW)) ||
+ ((this->animIndex >= SK_ANIMATION_PLAY_FLUTE) && (this->animIndex <= SK_ANIMATION_CARTWHEEL)) ||
((play->sceneNum == SCENE_00KEIKOKU) && (gSaveContext.sceneSetupIndex == 7))) {
this->maskType = SK_MASK_TYPE_NO_MASK;
- if ((this->animationId == SK_ANIMATION_HOLD_UP_MASK_START) ||
- (this->animationId == SK_ANIMATION_HOLD_UP_MASK_LOOP)) {
+ if ((this->animIndex == SK_ANIMATION_HOLD_UP_MASK_START) ||
+ (this->animIndex == SK_ANIMATION_HOLD_UP_MASK_LOOP)) {
this->handType = SK_HAND_TYPE_HOLDING_MAJORAS_MASK_AND_FLUTE;
}
}
- if (this->animationId == SK_ANIMATION_DROPPED_FROM_MASK) {
+ if (this->animIndex == SK_ANIMATION_DROPPED_FROM_MASK) {
this->maskType = SK_MASK_TYPE_NO_MASK;
}
}
@@ -1745,7 +1745,7 @@ void DmStk_ClockTower_Idle(DmStk* this, PlayState* play) {
DmStk_ClockTower_AdjustHeightAndRotation(this, play);
this->actor.flags |= ACTOR_FLAG_1;
- if (this->animationId == SK_ANIMATION_CALL_DOWN_MOON_LOOP) {
+ if (this->animIndex == SK_ANIMATION_CALL_DOWN_MOON_LOOP) {
this->actor.targetArrowOffset = 3100.0f;
} else {
this->actor.targetArrowOffset = 200.0f;
@@ -1762,7 +1762,7 @@ void DmStk_Update(Actor* thisx, PlayState* play) {
DmStk* this = THIS;
if (DM_STK_GET_TYPE(&this->actor) != DM_STK_TYPE_MAJORAS_MASK) {
- if (this->animationId == SK_ANIMATION_CALL_DOWN_MOON_LOOP) {
+ if (this->animIndex == SK_ANIMATION_CALL_DOWN_MOON_LOOP) {
Actor_SetFocus(&this->actor, 40.0f);
} else {
Actor_SetFocus(&this->actor, 6.0f);
@@ -1770,7 +1770,7 @@ void DmStk_Update(Actor* thisx, PlayState* play) {
DmStk_LoadObjectForAnimation(this, play);
- if (this->animationId != SK_ANIMATION_LIE_FLAT) {
+ if (this->animIndex != SK_ANIMATION_LIE_FLAT) {
SkelAnime_Update(&this->skelAnime);
}
@@ -1874,8 +1874,8 @@ void DmStk_PostLimbDraw2(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
- if ((this->animationId == SK_ANIMATION_LOOK_LEFT_LOOP) || (this->animationId == SK_ANIMATION_LAUGH_LOOP) ||
- (this->animationId == SK_ANIMATION_LAUGH_AFTER_SNIFF)) {
+ if ((this->animIndex == SK_ANIMATION_LOOK_LEFT_LOOP) || (this->animIndex == SK_ANIMATION_LAUGH_LOOP) ||
+ (this->animIndex == SK_ANIMATION_LAUGH_AFTER_SNIFF)) {
gSPDisplayList(POLY_OPA_DISP++, gSkullKidLaughingHeadDL);
gSPDisplayList(POLY_OPA_DISP++, gSkullKidLaughingEyesDL);
} else {
diff --git a/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.h b/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.h
index 1933c7727f..ffea612652 100644
--- a/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.h
+++ b/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.h
@@ -22,7 +22,7 @@ typedef struct DmStk {
/* 0x20C */ Vec3s morphTable[SKULL_KID_LIMB_MAX]; // Not used, since it's allocated dynamically instead.
/* 0x290 */ DmStkActionFunc actionFunc;
/* 0x294 */ ColliderCylinder collider;
- /* 0x2E0 */ s16 animationId;
+ /* 0x2E0 */ s16 animIndex;
/* 0x2E4 */ s32 alpha;
/* 0x2E8 */ u32 fogR;
/* 0x2EC */ u32 fogG;
diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt
index 7acb491bb9..648a053728 100644
--- a/tools/disasm/functions.txt
+++ b/tools/disasm/functions.txt
@@ -11547,16 +11547,16 @@
0x80AA90F4:("func_80AA90F4",),
0x80AA9140:("DmChar01_Update",),
0x80AA922C:("DmChar01_Draw",),
- 0x80AAAE30:("DmChar02_ChangeAnimationByInfo",),
- 0x80AAAECC:("func_80AAAECC",),
- 0x80AAAF2C:("func_80AAAF2C",),
+ 0x80AAAE30:("DmChar02_ChangeAnimation",),
+ 0x80AAAECC:("DmChar02_PlaySfxForDroppingOcarinaCutscene",),
+ 0x80AAAF2C:("DmChar02_PlaySfxForCutscenes",),
0x80AAAF78:("DmChar02_Init",),
0x80AAB03C:("DmChar02_Destroy",),
- 0x80AAB04C:("func_80AAB04C",),
+ 0x80AAB04C:("DmChar02_PerformCutsceneActions",),
0x80AAB19C:("DmChar02_Update",),
- 0x80AAB23C:("func_80AAB23C",),
- 0x80AAB258:("func_80AAB258",),
- 0x80AAB270:("func_80AAB270",),
+ 0x80AAB23C:("DmChar02_OverrideLimbDraw",),
+ 0x80AAB258:("DmChar02_PostLimbDraw",),
+ 0x80AAB270:("DmChar02_TransformLimbDraw",),
0x80AAB284:("DmChar02_Draw",),
0x80AAB4A0:("func_80AAB4A0",),
0x80AAB53C:("DmChar03_Init",),