diff --git a/assets/xml/objects/object_dnq.xml b/assets/xml/objects/object_dnq.xml index 63f27a6f81..4a21dbfef3 100644 --- a/assets/xml/objects/object_dnq.xml +++ b/assets/xml/objects/object_dnq.xml @@ -1,88 +1,100 @@  + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c b/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c index 32f149ddd7..594ddd3d7a 100644 --- a/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c +++ b/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c @@ -8,7 +8,6 @@ */ #include "z_en_dnp.h" -#include "objects/object_dnq/object_dnq.h" #define FLAGS (ACTOR_FLAG_1 | ACTOR_FLAG_8 | ACTOR_FLAG_10) @@ -25,6 +24,14 @@ void func_80B3D338(EnDnp* this, PlayState* play); void func_80B3D3F8(EnDnp* this, PlayState* play); void func_80B3D558(EnDnp* this, PlayState* play); +typedef enum { + /* 0 */ EN_DNP_EYE_OPEN, + /* 1 */ EN_DNP_EYE_HALF, + /* 2 */ EN_DNP_EYE_CLOSED, + /* 3 */ EN_DNP_EYE_ANGRY, + /* 4 */ EN_DNP_EYE_MAX, +} EnDnpEyeIndex; + ActorInit En_Dnp_InitVars = { ACTOR_EN_DNP, ACTORCAT_NPC, @@ -59,33 +66,63 @@ static ColliderCylinderInit sCylinderInit = { static CollisionCheckInfoInit2 sColChkInfoInit = { 0, 0, 0, 0, MASS_IMMOVABLE }; +typedef enum { + /* -1 */ EN_DNP_ANIM_NONE = -1, + /* 0 */ EN_DNP_ANIM_JUMP_KICK, // Can be triggered by a cutscene, but no cutscene in the final game does so + /* 1 */ EN_DNP_ANIM_HURRY, + /* 2 */ EN_DNP_ANIM_CUTSCENE_HURRY, + /* 3 */ EN_DNP_ANIM_HURRY_END, + /* 4 */ EN_DNP_ANIM_SCOLD, // Unused + /* 5 */ EN_DNP_ANIM_LAUGH_START, + /* 6 */ EN_DNP_ANIM_LAUGH_LOOP, + /* 7 */ EN_DNP_ANIM_TURN_AROUND, + /* 8 */ EN_DNP_ANIM_BOW, + /* 9 */ EN_DNP_ANIM_RUN, // Unused + /* 10 */ EN_DNP_ANIM_THINK_START, + /* 11 */ EN_DNP_ANIM_THINK_LOOP, + /* 12 */ EN_DNP_ANIM_ARMS_TOGETHER_START, + /* 13 */ EN_DNP_ANIM_ARMS_TOGETHER_LOOP, + /* 14 */ EN_DNP_ANIM_GREETING, + /* 15 */ EN_DNP_ANIM_IDLE, + /* 16 */ EN_DNP_ANIM_CUTSCENE_IDLE, + /* 17 */ EN_DNP_ANIM_UNUSED_WALK, // Unused + /* 18 */ EN_DNP_ANIM_WALK, // Can be triggered by a cutscene, but no cutscene in the final game does so + /* 19 */ EN_DNP_ANIM_ANGRY_START, + /* 20 */ EN_DNP_ANIM_ANGRY_LOOP, + /* 21 */ EN_DNP_ANIM_JUMP, + /* 22 */ EN_DNP_ANIM_BOUNCE_START, + /* 23 */ EN_DNP_ANIM_BOUNCE_LOOP, + /* 24 */ EN_DNP_ANIM_GLARE_START, + /* 25 */ EN_DNP_ANIM_GLARE_LOOP +} EnDnpAnimation; + static AnimationInfoS sAnimationInfo[] = { - { &object_dnq_Anim_0007D8, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, - { &object_dnq_Anim_0021DC, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, - { &object_dnq_Anim_0021DC, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, - { &object_dnq_Anim_0026B8, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, - { &object_dnq_Anim_004D08, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, - { &object_dnq_Anim_0071F4, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, - { &object_dnq_Anim_007960, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, - { &object_dnq_Anim_008588, 1.0f, 0, -1, ANIMMODE_ONCE, 0 }, - { &object_dnq_Anim_00A900, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, - { &object_dnq_Anim_00AEB8, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, - { &object_dnq_Anim_00B754, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, - { &object_dnq_Anim_00674C, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, - { &object_dnq_Anim_00BAD8, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, - { &object_dnq_Anim_006B74, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, - { &object_dnq_Anim_012428, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, - { &object_dnq_Anim_00B324, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, - { &object_dnq_Anim_00B324, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, - { &object_dnq_Anim_0115B8, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, - { &object_dnq_Anim_0115B8, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, - { &object_dnq_Anim_00923C, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, - { &object_dnq_Anim_009AA0, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, - { &object_dnq_Anim_00125C, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, - { &object_dnq_Anim_0017F8, 1.0f, 0, -1, ANIMMODE_ONCE, 0 }, - { &object_dnq_Anim_001C1C, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, - { &object_dnq_Anim_0057AC, 1.0f, 0, -1, ANIMMODE_ONCE, 0 }, - { &object_dnq_Anim_00625C, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, + { &gDekuPrincessJumpKickAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, + { &gDekuPrincessHurryAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, + { &gDekuPrincessHurryAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, + { &gDekuPrincessHurryEndAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, + { &gDekuPrincessScoldAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, + { &gDekuPrincessLaughStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, + { &gDekuPrincessLaughLoopAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, + { &gDekuPrincessTurnAroundAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 }, + { &gDekuPrincessBowAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, + { &gDekuPrincessRunAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, + { &gDekuPrincessThinkStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, + { &gDekuPrincessThinkLoopAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, + { &gDekuPrincessArmsTogetherStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, + { &gDekuPrincessArmsTogetherLoopAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, + { &gDekuPrincessGreetingAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, + { &gDekuPrincessIdleAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, + { &gDekuPrincessIdleAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, + { &gDekuPrincessWalkAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, + { &gDekuPrincessWalkAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, + { &gDekuPrincessAngryStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, + { &gDekuPrincessAngryLoopAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, + { &gDekuPrincessJumpAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, + { &gDekuPrincessBounceStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 }, + { &gDekuPrincessBounceLoopAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, + { &gDekuPrincessGlareStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 }, + { &gDekuPrincessGlareLoopAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, }; static s32 D_80B3DE58[] = { @@ -93,38 +130,38 @@ static s32 D_80B3DE58[] = { }; s32 func_80B3CA20(EnDnp* this) { - if ((this->unk_340 == 2) || (this->unk_340 == 9)) { + if ((this->animIndex == EN_DNP_ANIM_CUTSCENE_HURRY) || (this->animIndex == EN_DNP_ANIM_RUN)) { if (Animation_OnFrame(&this->skelAnime, 1.0f) || Animation_OnFrame(&this->skelAnime, 5.0f) || Animation_OnFrame(&this->skelAnime, 9.0f) || Animation_OnFrame(&this->skelAnime, 13.0f)) { Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_DEKUHIME_TURN); } - } else if ((this->unk_340 == 24) || (this->unk_340 == 7)) { + } else if ((this->animIndex == EN_DNP_ANIM_GLARE_START) || (this->animIndex == EN_DNP_ANIM_TURN_AROUND)) { if (Animation_OnFrame(&this->skelAnime, 1.0f)) { Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_DEKUHIME_TURN); } - } else if (this->unk_340 == 14) { + } else if (this->animIndex == EN_DNP_ANIM_GREETING) { if (Animation_OnFrame(&this->skelAnime, 7.0f)) { Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_DEKUHIME_GREET); } if (Animation_OnFrame(&this->skelAnime, 22.0f)) { Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_DEKUHIME_GREET2); } - } else if (this->unk_340 == 8) { + } else if (this->animIndex == EN_DNP_ANIM_BOW) { if (Animation_OnFrame(&this->skelAnime, 9.0f)) { Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_DEKUHIME_GREET); } if (Animation_OnFrame(&this->skelAnime, 18.0f)) { Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_DEKUHIME_GREET2); } - } else if ((this->unk_340 == 17) && (this->unk_340 == 18)) { + } else if ((this->animIndex == EN_DNP_ANIM_UNUSED_WALK) && (this->animIndex == EN_DNP_ANIM_WALK)) { if (Animation_OnFrame(&this->skelAnime, 7.0f) || Animation_OnFrame(&this->skelAnime, 15.0f)) { Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_DEKUHIME_WALK); } - } else if (this->unk_340 == 21) { + } else if (this->animIndex == EN_DNP_ANIM_JUMP) { if (Animation_OnFrame(&this->skelAnime, 17.0f)) { Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_DEKUHIME_WALK); } - } else if (this->unk_340 == 23) { + } else if (this->animIndex == EN_DNP_ANIM_BOUNCE_LOOP) { if (Animation_OnFrame(&this->skelAnime, 3.0f)) { Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_DEKUHIME_WALK); } @@ -133,12 +170,12 @@ s32 func_80B3CA20(EnDnp* this) { return 0; } -s32 func_80B3CC38(EnDnp* this, s32 arg1) { +s32 EnDnp_ChangeAnim(EnDnp* this, s32 animIndex) { s32 ret = false; - if (arg1 != this->unk_340) { - this->unk_340 = arg1; - ret = SubS_ChangeAnimationByInfoS(&this->skelAnime, sAnimationInfo, arg1); + if (animIndex != this->animIndex) { + this->animIndex = animIndex; + ret = SubS_ChangeAnimationByInfoS(&this->skelAnime, sAnimationInfo, animIndex); } return ret; @@ -154,11 +191,11 @@ void func_80B3CC80(EnDnp* this, PlayState* play) { } void func_80B3CD1C(EnDnp* this) { - if ((this->unk_322 & 0x80) && (DECR(this->unk_334) == 0)) { - this->unk_336++; - if (this->unk_336 >= 4) { - this->unk_334 = Rand_S16Offset(30, 30); - this->unk_336 = 0; + if ((this->unk_322 & 0x80) && (DECR(this->blinkTimer) == 0)) { + this->eyeIndex++; + if (this->eyeIndex >= EN_DNP_EYE_MAX) { + this->blinkTimer = Rand_S16Offset(30, 30); + this->eyeIndex = EN_DNP_EYE_OPEN; } } } @@ -244,8 +281,12 @@ s32 func_80B3D044(EnDnp* this, PlayState* play) { } void func_80B3D11C(EnDnp* this, PlayState* play) { - static s32 D_80B3DE74[] = { - 0, 16, 14, 10, 18, 12, 5, 7, 2, 19, 21, 22, 24, 8, + static s32 sCsAnimations[] = { + EN_DNP_ANIM_JUMP_KICK, EN_DNP_ANIM_CUTSCENE_IDLE, EN_DNP_ANIM_GREETING, + EN_DNP_ANIM_THINK_START, EN_DNP_ANIM_WALK, EN_DNP_ANIM_ARMS_TOGETHER_START, + EN_DNP_ANIM_LAUGH_START, EN_DNP_ANIM_TURN_AROUND, EN_DNP_ANIM_CUTSCENE_HURRY, + EN_DNP_ANIM_ANGRY_START, EN_DNP_ANIM_JUMP, EN_DNP_ANIM_BOUNCE_START, + EN_DNP_ANIM_GLARE_START, EN_DNP_ANIM_BOW, }; s32 temp_v0; s32 val; @@ -260,29 +301,30 @@ void func_80B3D11C(EnDnp* this, PlayState* play) { temp_v0 = Cutscene_GetActorActionIndex(play, 101); val = play->csCtx.actorActions[temp_v0]->action; if (this->unk_324 != (u8)val) { - func_80B3CC38(this, D_80B3DE74[val]); - if (this->unk_340 == 16) { + EnDnp_ChangeAnim(this, sCsAnimations[val]); + if (this->animIndex == EN_DNP_ANIM_CUTSCENE_IDLE) { this->unk_322 |= 8; } else { this->unk_322 &= ~8; } - if (this->unk_340 == 19) { + if (this->animIndex == EN_DNP_ANIM_ANGRY_START) { Actor_PlaySfxAtPos(&this->actor, NA_SE_VO_DHVO04); } - if (this->unk_340 == 24) { + if (this->animIndex == EN_DNP_ANIM_GLARE_START) { this->unk_322 &= ~0x80; - this->unk_336 = 3; - this->unk_334 = 0; + this->eyeIndex = EN_DNP_EYE_ANGRY; + this->blinkTimer = 0; } } this->unk_324 = val; - if (((this->unk_340 == 10) || (this->unk_340 == 12) || (this->unk_340 == 5) || (this->unk_340 == 19) || - (this->unk_340 == 22) || (this->unk_340 == 24)) && + if (((this->animIndex == EN_DNP_ANIM_THINK_START) || (this->animIndex == EN_DNP_ANIM_ARMS_TOGETHER_START) || + (this->animIndex == EN_DNP_ANIM_LAUGH_START) || (this->animIndex == EN_DNP_ANIM_ANGRY_START) || + (this->animIndex == EN_DNP_ANIM_BOUNCE_START) || (this->animIndex == EN_DNP_ANIM_GLARE_START)) && Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { - func_80B3CC38(this, this->unk_340 + 1); + EnDnp_ChangeAnim(this, this->animIndex + 1); } Cutscene_ActorTranslateAndYaw(&this->actor, play, temp_v0); } @@ -353,16 +395,17 @@ void EnDnp_Init(Actor* thisx, PlayState* play) { EnDnp* this = THIS; ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 16.0f); - SkelAnime_InitFlex(play, &this->skelAnime, &object_dnq_Skel_010D60, NULL, this->jointTable, this->morphTable, 26); - this->unk_340 = -1; - func_80B3CC38(this, 15); + SkelAnime_InitFlex(play, &this->skelAnime, &gDekuPrincessSkel, NULL, this->jointTable, this->morphTable, + DEKU_PRINCESS_LIMB_MAX); + this->animIndex = EN_DNP_ANIM_NONE; + EnDnp_ChangeAnim(this, EN_DNP_ANIM_IDLE); Collider_InitAndSetCylinder(play, &this->collider, &this->actor, &sCylinderInit); CollisionCheck_SetInfo2(&this->actor.colChkInfo, DamageTable_Get(0x16), &sColChkInfoInit); this->unk_322 = 0; this->actor.targetMode = 0; this->unk_322 |= (0x100 | 0x80 | 0x10); this->actor.gravity = -1.0f; - if (ENDNP_GET_7(&this->actor) == ENDNP_GET_7_1) { + if (EN_DNP_GET_TYPE(&this->actor) == EN_DNP_TYPE_RELEASED_FROM_BOTTLE) { this->actor.flags &= ~ACTOR_FLAG_1; Actor_SetScale(&this->actor, 0.00085000007f); SubS_UpdateFlags(&this->unk_322, 0, 7); @@ -370,15 +413,16 @@ void EnDnp_Init(Actor* thisx, PlayState* play) { this->actor.world.rot.x = this->actor.shape.rot.x; this->actor.cutscene = 0x10; this->actionFunc = func_80B3D47C; - } else if (((ENDNP_GET_7(&this->actor) == ENDNP_GET_7_0) && !Inventory_HasItemInBottle(ITEM_DEKU_PRINCESS) && - !(gSaveContext.save.weekEventReg[23] & 0x20)) || - ((ENDNP_GET_7(&this->actor) == ENDNP_GET_7_2) && (gSaveContext.save.weekEventReg[23] & 0x20))) { + } else if (((EN_DNP_GET_TYPE(&this->actor) == EN_DNP_TYPE_WOODFALL_TEMPLE) && + !Inventory_HasItemInBottle(ITEM_DEKU_PRINCESS) && !(gSaveContext.save.weekEventReg[23] & 0x20)) || + ((EN_DNP_GET_TYPE(&this->actor) == EN_DNP_TYPE_DEKU_KINGS_CHAMBER) && + (gSaveContext.save.weekEventReg[23] & 0x20))) { Actor_SetScale(&this->actor, 0.0085f); SubS_UpdateFlags(&this->unk_322, 3, 7); this->unk_322 |= 0x400; if ((play->sceneId == SCENE_MITURIN) && (gSaveContext.save.weekEventReg[29] & 0x40)) { this->unk_322 |= 0x20; - func_80B3CC38(this, 1); + EnDnp_ChangeAnim(this, EN_DNP_ANIM_HURRY); } this->actionFunc = func_80B3D2D4; } else { @@ -470,7 +514,7 @@ void EnDnp_TransformLimbDraw(PlayState* play, s32 limbIndex, Actor* thisx) { } } - if (limbIndex == 12) { + if (limbIndex == DEKU_PRINCESS_LIMB_HEAD) { func_80B3D974(this->unk_330 + 0x4000, this->unk_332 + this->actor.shape.rot.y + 0x4000, &this->unk_1D8, &this->unk_1E4, phi_v1, phi_v0); Matrix_Pop(); @@ -484,11 +528,11 @@ void EnDnp_TransformLimbDraw(PlayState* play, s32 limbIndex, Actor* thisx) { } void EnDnp_Draw(Actor* thisx, PlayState* play) { - static TexturePtr D_80B3DEAC[] = { - object_dnq_Tex_0103D0, - object_dnq_Tex_0105D0, - object_dnq_Tex_0107D0, - object_dnq_Tex_0109D0, + static TexturePtr sEyeTextures[] = { + gDekuPrincessEyeOpenTex, + gDekuPrincessEyeHalfTex, + gDekuPrincessEyeClosedTex, + gDekuPrincessEyeAngryTex, }; EnDnp* this = THIS; @@ -497,7 +541,7 @@ void EnDnp_Draw(Actor* thisx, PlayState* play) { func_8012C28C(play->state.gfxCtx); - gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(D_80B3DEAC[this->unk_336])); + gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(sEyeTextures[this->eyeIndex])); SkelAnime_DrawTransformFlexOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, NULL, EnDnp_PostLimbDraw, EnDnp_TransformLimbDraw, diff --git a/src/overlays/actors/ovl_En_Dnp/z_en_dnp.h b/src/overlays/actors/ovl_En_Dnp/z_en_dnp.h index f44110a85c..a41a636151 100644 --- a/src/overlays/actors/ovl_En_Dnp/z_en_dnp.h +++ b/src/overlays/actors/ovl_En_Dnp/z_en_dnp.h @@ -2,18 +2,19 @@ #define Z_EN_DNP_H #include "global.h" +#include "objects/object_dnq/object_dnq.h" struct EnDnp; typedef void (*EnDnpActionFunc)(struct EnDnp*, PlayState*); -#define ENDNP_GET_7(thisx) ((thisx)->params & 7) +#define EN_DNP_GET_TYPE(thisx) ((thisx)->params & 7) -enum { - /* 0x0 */ ENDNP_GET_7_0, - /* 0x1 */ ENDNP_GET_7_1, - /* 0x2 */ ENDNP_GET_7_2, -}; +typedef enum { + /* 0x0 */ EN_DNP_TYPE_WOODFALL_TEMPLE, + /* 0x1 */ EN_DNP_TYPE_RELEASED_FROM_BOTTLE, + /* 0x2 */ EN_DNP_TYPE_DEKU_KINGS_CHAMBER, +} EnDnpType; typedef struct EnDnp { /* 0x000 */ Actor actor; @@ -22,8 +23,8 @@ typedef struct EnDnp { /* 0x18C */ ColliderCylinder collider; /* 0x1D8 */ Vec3f unk_1D8; /* 0x1E4 */ Vec3s unk_1E4; - /* 0x1EA */ Vec3s jointTable[26]; - /* 0x286 */ Vec3s morphTable[26]; + /* 0x1EA */ Vec3s jointTable[DEKU_PRINCESS_LIMB_MAX]; + /* 0x286 */ Vec3s morphTable[DEKU_PRINCESS_LIMB_MAX]; /* 0x322 */ u16 unk_322; /* 0x324 */ u8 unk_324; /* 0x328 */ s32 unk_328; @@ -31,11 +32,11 @@ typedef struct EnDnp { /* 0x32E */ s16 unk_32E; /* 0x330 */ s16 unk_330; /* 0x332 */ s16 unk_332; - /* 0x334 */ s16 unk_334; - /* 0x336 */ s16 unk_336; + /* 0x334 */ s16 blinkTimer; + /* 0x336 */ s16 eyeIndex; /* 0x338 */ s16 unk_338; /* 0x33A */ UNK_TYPE1 unk_33A[0x6]; - /* 0x340 */ s32 unk_340; + /* 0x340 */ s32 animIndex; } EnDnp; // size = 0x344 #endif // Z_EN_DNP_H diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 695c275ab2..05c62d7e5b 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -13616,7 +13616,7 @@ 0x80B3C80C:("ObjGhaka_Update",), 0x80B3C858:("ObjGhaka_Draw",), 0x80B3CA20:("func_80B3CA20",), - 0x80B3CC38:("func_80B3CC38",), + 0x80B3CC38:("EnDnp_ChangeAnim",), 0x80B3CC80:("func_80B3CC80",), 0x80B3CD1C:("func_80B3CD1C",), 0x80B3CDA4:("func_80B3CDA4",), diff --git a/tools/disasm/variables.txt b/tools/disasm/variables.txt index d5b33c745f..3530c456bd 100644 --- a/tools/disasm/variables.txt +++ b/tools/disasm/variables.txt @@ -14278,8 +14278,8 @@ 0x80B3DCAC:("D_80B3DCAC","UNK_TYPE1","",0x1), 0x80B3DCB8:("sAnimations","UNK_TYPE1","",0x1), 0x80B3DE58:("D_80B3DE58","UNK_TYPE1","",0x1), - 0x80B3DE74:("D_80B3DE74","UNK_TYPE1","",0x1), - 0x80B3DEAC:("D_80B3DEAC","UNK_TYPE1","",0x1), + 0x80B3DE74:("sCsAnimations","UNK_TYPE1","",0x1), + 0x80B3DEAC:("sEyeTextures","UNK_TYPE1","",0x1), 0x80B3DEC0:("D_80B3DEC0","f32","",0x4), 0x80B3DEC4:("D_80B3DEC4","f32","",0x4), 0x80B3DEC8:("D_80B3DEC8","f32","",0x4),