diff --git a/assets/xml/objects/object_an1.xml b/assets/xml/objects/object_an1.xml index b99f2769b..e06383797 100644 --- a/assets/xml/objects/object_an1.xml +++ b/assets/xml/objects/object_an1.xml @@ -54,8 +54,7 @@ - - + diff --git a/assets/xml/objects/object_an2.xml b/assets/xml/objects/object_an2.xml index c288af6f6..cd234d665 100644 --- a/assets/xml/objects/object_an2.xml +++ b/assets/xml/objects/object_an2.xml @@ -1,7 +1,7 @@  - + diff --git a/assets/xml/objects/object_an3.xml b/assets/xml/objects/object_an3.xml index e3814aae4..4ab217196 100644 --- a/assets/xml/objects/object_an3.xml +++ b/assets/xml/objects/object_an3.xml @@ -1,7 +1,7 @@  - + diff --git a/src/overlays/actors/ovl_En_An/z_en_an.c b/src/overlays/actors/ovl_En_An/z_en_an.c index 15333c616..0bb3f2fd4 100644 --- a/src/overlays/actors/ovl_En_An/z_en_an.c +++ b/src/overlays/actors/ovl_En_An/z_en_an.c @@ -899,12 +899,16 @@ void EnAn_UpdateFace(EnAn* this) { this->mouthTexIndex = sMouthIndices[this->faceIndex]; } -Vec3f D_80B58E54 = { 190.0f, -130.0f, 0.0f }; -Vec3s D_80B58E60 = { 0, 0, 0x4168 }; -Vec3f D_80B58E68 = { 450.0f, 700.0f, -760.0f }; -Vec3s D_80B58E74 = { 0x238C, 0, -0x3FFC }; +typedef enum EnAnAccessory { + /* 0 */ ENAN_ACCESSORY_FOOD_TRAY, + /* 1 */ ENAN_ACCESSORY_KAFEI_MASK, + /* 2 */ ENAN_ACCESSORY_UMBRELLA, + /* 3 */ ENAN_ACCESSORY_BROOM, + /* 4 */ ENAN_ACCESSORY_CHOPSTICKS, + /* 5 */ ENAN_ACCESSORY_MOON_MASK +} EnAnAccessory; -void func_80B54124(EnAn* this, PlayState* play, u32 arg2) { +void EnAn_DrawAccessory(EnAn* this, PlayState* play, EnAnAccessory accessoryId) { s32 pad; s8 originalObjectSlot = this->actor.objectSlot; s8 otherObjectSlot; @@ -913,9 +917,9 @@ void func_80B54124(EnAn* this, PlayState* play, u32 arg2) { Matrix_Push(); - switch (arg2) { - case 0x0: - if ((this->stateFlags & ENAN_STATE_800) && !this->unk_3B0) { + switch (accessoryId) { + case ENAN_ACCESSORY_FOOD_TRAY: + if ((this->stateFlags & ENAN_STATE_DRAW_FOOD_TRAY) && !this->forceDraw) { this->unk_3A8++; this->unk_3AC -= 2; Gfx_SetupDL25_Xlu(play->state.gfxCtx); @@ -923,17 +927,20 @@ void func_80B54124(EnAn* this, PlayState* play, u32 arg2) { gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPSegment(POLY_XLU_DISP++, 0x08, - Gfx_TwoTexScroll(play->state.gfxCtx, 0, this->unk_3A8, 0U, 0x10, 0x10, 1, 0U, this->unk_3AC, - 0x10, 0x10)); - gSPDisplayList(POLY_XLU_DISP++, object_an1_DL_0111E8); + Gfx_TwoTexScroll(play->state.gfxCtx, 0, this->unk_3A8, 0, 16, 16, 1, 0, this->unk_3AC, + 16, 16)); + gSPDisplayList(POLY_XLU_DISP++, gAnju1FoodTrayDL); Gfx_SetupDL25_Opa(play->state.gfxCtx); } break; - case 0x1: + case ENAN_ACCESSORY_KAFEI_MASK: otherObjectSlot = this->maskKerfayObjectSlot; - if ((this->stateFlags & ENAN_STATE_4000) && !this->unk_3B0 && (otherObjectSlot > OBJECT_SLOT_NONE)) { + if ((this->stateFlags & ENAN_STATE_DRAW_KAFEI_MASK) && !this->forceDraw && (otherObjectSlot > OBJECT_SLOT_NONE)) { + static Vec3f D_80B58E54 = { 190.0f, -130.0f, 0.0f }; + static Vec3s D_80B58E60 = { 0, 0, 0x4168 }; + gSPSegment(POLY_OPA_DISP++, 0x0A, play->objectCtx.slots[otherObjectSlot].segment); Matrix_TranslateRotateZYX(&D_80B58E54, &D_80B58E60); @@ -945,37 +952,41 @@ void func_80B54124(EnAn* this, PlayState* play, u32 arg2) { } break; - case 0x2: + case ENAN_ACCESSORY_UMBRELLA: otherObjectSlot = this->an2ObjectSlot; - if ((this->stateFlags & ENAN_STATE_1000) && !this->unk_3B0 && (otherObjectSlot > OBJECT_SLOT_NONE)) { + if ((this->stateFlags & ENAN_STATE_DRAW_UMBRELLA) && !this->forceDraw && (otherObjectSlot > OBJECT_SLOT_NONE)) { gSPSegment(POLY_OPA_DISP++, 0x06, play->objectCtx.slots[otherObjectSlot].segment); - gSPDisplayList(POLY_OPA_DISP++, object_an2_DL_000378); + gSPDisplayList(POLY_OPA_DISP++, gAnju2UmbrellaDL); gSPSegment(POLY_OPA_DISP++, 0x06, play->objectCtx.slots[originalObjectSlot].segment); } break; - case 0x3: + case ENAN_ACCESSORY_BROOM: otherObjectSlot = this->an3ObjectSlot; - if ((this->stateFlags & ENAN_STATE_2000) && !this->unk_3B0 && (otherObjectSlot > OBJECT_SLOT_NONE)) { + if ((this->stateFlags & ENAN_STATE_DRAW_BROOM) && !this->forceDraw && (otherObjectSlot > OBJECT_SLOT_NONE)) { gSPSegment(POLY_OPA_DISP++, 0x06, play->objectCtx.slots[otherObjectSlot].segment); - gSPDisplayList(POLY_OPA_DISP++, object_an3_DL_000308); + gSPDisplayList(POLY_OPA_DISP++, gAnju3BroomDL); gSPSegment(POLY_OPA_DISP++, 0x06, play->objectCtx.slots[originalObjectSlot].segment); } break; - case 0x4: - if ((this->stateFlags & ENAN_STATE_8000) && !this->unk_3B0) { + case ENAN_ACCESSORY_CHOPSTICKS: + if ((this->stateFlags & ENAN_STATE_DRAW_CHOPSTICKS) && !this->forceDraw) { gSPDisplayList(POLY_OPA_DISP++, gAnju1ChopsticksDL); } break; - case 0x5: + case ENAN_ACCESSORY_MOON_MASK: otherObjectSlot = this->msmoObjectSlot; - if (this->unk_3B4 && (otherObjectSlot > OBJECT_SLOT_NONE)) { + if (this->drawMoonMask && (otherObjectSlot > OBJECT_SLOT_NONE)) { + static Vec3f D_80B58E68 = { 450.0f, 700.0f, -760.0f }; + static Vec3s D_80B58E74 = { 0x238C, 0, -0x3FFC }; + Matrix_TranslateRotateZYX(&D_80B58E68, &D_80B58E74); gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPSegment(POLY_OPA_DISP++, 0x06, play->objectCtx.slots[otherObjectSlot].segment); gSPDisplayList(POLY_OPA_DISP++, gMoonMaskDL); gSPSegment(POLY_OPA_DISP++, 0x06, play->objectCtx.slots[originalObjectSlot].segment); @@ -1216,14 +1227,14 @@ s32 func_80B54D18(Actor* thisx, PlayState* play) { goto label; } else { ret = true; - this->stateFlags |= ENAN_STATE_4000; + this->stateFlags |= ENAN_STATE_DRAW_KAFEI_MASK; this->unk_394++; } break; case 0x1: label: - this->stateFlags &= ~(ENAN_STATE_20 | ENAN_STATE_4000); + this->stateFlags &= ~(ENAN_STATE_20 | ENAN_STATE_DRAW_KAFEI_MASK); this->stateFlags |= ENAN_STATE_200; EnAn_ChangeAnim(this, play, ENAN_ANIM_20); ret = true; @@ -1394,7 +1405,7 @@ s32 func_80B55180(EnAn* this, PlayState* play) { this->unk_3C4 = 0; this->unk_394 = 0; this->msgEventFunc = NULL; - this->actor.child = this->unk_218; + this->actor.child = this->lookAtActor; this->msgEventScript = func_80B54DF4(this, play); if ((this->scheduleResult == ANJU_SCH_1) || (this->scheduleResult == ANJU_SCH_3) || @@ -1425,20 +1436,20 @@ s32 func_80B552E4(EnAn* this, PlayState* play) { if ((play->csCtx.state != 0) && (play->sceneId == SCENE_YADOYA) && (gSaveContext.sceneLayer == 0) && ((scriptIndex == 0) || (scriptIndex == 1))) { - if (!this->unk_3B0) { + if (!this->forceDraw) { this->unk_38A = ENAN_FACE_0; this->faceIndex = ENAN_FACE_0; this->stateFlags |= ENAN_STATE_100 | ENAN_STATE_200; this->eyeTimer = 8; this->cueId = -1; - this->unk_3B0 = true; - this->unk_3B4 = false; + this->forceDraw = true; + this->drawMoonMask = false; } ret = true; - } else if (this->unk_3B0) { - this->unk_3B0 = false; - this->unk_3B4 = false; + } else if (this->forceDraw) { + this->forceDraw = false; + this->drawMoonMask = false; this->unk_3C0 = true; this->actor.room = play->roomCtx.curRoom.num; this->actionFunc = func_80B578F8; @@ -1447,37 +1458,39 @@ s32 func_80B552E4(EnAn* this, PlayState* play) { return ret; } -void func_80B553AC(EnAn* this) { +void EnAn_UpdateHeadRot(EnAn* this) { Actor* temp_v0_2; Vec3f sp40; Vec3f sp34; - s32 pad; + Player* player; - Math_Vec3f_Copy(&sp40, &this->unk_218->world.pos); + Math_Vec3f_Copy(&sp40, &this->lookAtActor->world.pos); Math_Vec3f_Copy(&sp34, &this->actor.world.pos); - Math_ApproachS(&this->unk_37E, Math_Vec3f_Yaw(&sp34, &sp40) - this->actor.shape.rot.y, 4, 0x2AA8); + Math_ApproachS(&this->headRotY, Math_Vec3f_Yaw(&sp34, &sp40) - this->actor.shape.rot.y, 4, 0x2AA8); - this->unk_37E = CLAMP(this->unk_37E, -0x1FFE, 0x1FFE); + this->headRotY = CLAMP(this->headRotY, -0x1FFE, 0x1FFE); Math_Vec3f_Copy(&sp34, &this->actor.focus.pos); - temp_v0_2 = this->unk_218; + temp_v0_2 = this->lookAtActor; if (temp_v0_2->id == ACTOR_PLAYER) { - sp40.y = ((Player*)temp_v0_2)->bodyPartsPos[PLAYER_BODYPART_HEAD].y + 3.0f; + player = (Player*)temp_v0_2; + + sp40.y = player->bodyPartsPos[PLAYER_BODYPART_HEAD].y + 3.0f; } else { Math_Vec3f_Copy(&sp40, &temp_v0_2->focus.pos); } - Math_ApproachS(&this->unk_37C, Math_Vec3f_Pitch(&sp34, &sp40), 4, 0x2AA8); + Math_ApproachS(&this->headRotZ, Math_Vec3f_Pitch(&sp34, &sp40), 4, 0x2AA8); - this->unk_37C = CLAMP(this->unk_37C, -0x1554, 0x1554); + this->headRotZ = CLAMP(this->headRotZ, -0x1554, 0x1554); } void func_80B554E8(EnAn* this) { if (this->stateFlags & ENAN_STATE_20) { - if ((this->unk_218 != NULL) && (this->unk_218->update != NULL)) { + if ((this->lookAtActor != NULL) && (this->lookAtActor->update != NULL)) { if (DECR(this->unk_388) == 0) { - func_80B553AC(this); + EnAn_UpdateHeadRot(this); this->stateFlags &= ~ENAN_STATE_200; this->stateFlags |= ENAN_STATE_80; return; @@ -1487,8 +1500,8 @@ void func_80B554E8(EnAn* this) { if (this->stateFlags & ENAN_STATE_80) { this->stateFlags &= ~ENAN_STATE_80; - this->unk_37C = 0; - this->unk_37E = 0; + this->headRotZ = 0; + this->headRotY = 0; this->unk_388 = 20; return; } @@ -1510,7 +1523,7 @@ s32 func_80B555C8(EnAn* this, PlayState* play) { case ANJU_SCH_16: EnAn_ChangeAnim(this, play, ENAN_ANIM_SWEEP); - this->stateFlags |= ENAN_STATE_2000; + this->stateFlags |= ENAN_STATE_DRAW_BROOM; break; case ANJU_SCH_E: @@ -1529,7 +1542,7 @@ s32 func_80B555C8(EnAn* this, PlayState* play) { case ANJU_SCH_34: case ANJU_SCH_35: EnAn_ChangeAnim(this, play, ENAN_ANIM_22); - this->stateFlags |= ENAN_STATE_2000; + this->stateFlags |= ENAN_STATE_DRAW_BROOM; break; default: @@ -1601,7 +1614,7 @@ s32 func_80B55914(EnAn* this, PlayState* play) { switch (textId) { case 0x28E5: EnAn_ChangeAnim(this, play, ENAN_ANIM_5); - this->stateFlags &= ~ENAN_STATE_2000; + this->stateFlags &= ~ENAN_STATE_DRAW_BROOM; break; case 0x28BA: @@ -1633,7 +1646,7 @@ s32 func_80B55914(EnAn* this, PlayState* play) { case 0x28EB: if (this->animIndex != ENAN_ANIM_20) { - this->stateFlags &= ~(ENAN_STATE_20 | ENAN_STATE_4000); + this->stateFlags &= ~(ENAN_STATE_20 | ENAN_STATE_DRAW_KAFEI_MASK); this->stateFlags |= ENAN_STATE_200; EnAn_ChangeAnim(this, play, ENAN_ANIM_20); } @@ -1649,7 +1662,7 @@ s32 func_80B55914(EnAn* this, PlayState* play) { break; case 0x28E6: - this->stateFlags &= ~ENAN_STATE_2000; + this->stateFlags &= ~ENAN_STATE_DRAW_BROOM; this->unk_18C = func_80B55860; this->unk_396 = 0; break; @@ -1980,7 +1993,7 @@ s32 func_80B5611C(EnAn* this, PlayState* play, ScheduleOutput* scheduleOutput) { ret = true; this->stateFlags |= ENAN_STATE_20 | ENAN_STATE_100; - this->stateFlags |= ENAN_STATE_200 | ENAN_STATE_800; + this->stateFlags |= ENAN_STATE_200 | ENAN_STATE_DRAW_FOOD_TRAY; } return ret; @@ -2042,13 +2055,13 @@ s32 func_80B561A4(EnAn* this, PlayState* play, ScheduleOutput* scheduleOutput) { case ANJU_SCH_1A: case ANJU_SCH_1B: case ANJU_SCH_1C: - this->stateFlags |= ENAN_STATE_800 | ENAN_STATE_100; + this->stateFlags |= ENAN_STATE_DRAW_FOOD_TRAY | ENAN_STATE_100; EnAn_ChangeAnim(this, play, ENAN_ANIM_16); break; case ANJU_SCH_24: case ANJU_SCH_27: - this->stateFlags |= ENAN_STATE_100 | ENAN_STATE_2000; + this->stateFlags |= ENAN_STATE_100 | ENAN_STATE_DRAW_BROOM; EnAn_ChangeAnim(this, play, ENAN_ANIM_22); break; @@ -2139,7 +2152,7 @@ s32 func_80B56418(EnAn* this, PlayState* play, ScheduleOutput* scheduleOutput) { case ANJU_SCH_2D: EnAn_ChangeAnim(this, play, ENAN_ANIM_16); this->stateFlags |= ENAN_STATE_100 | ENAN_STATE_200; - this->stateFlags |= ENAN_STATE_800; + this->stateFlags |= ENAN_STATE_DRAW_FOOD_TRAY; break; case ANJU_SCH_34: @@ -2148,7 +2161,7 @@ s32 func_80B56418(EnAn* this, PlayState* play, ScheduleOutput* scheduleOutput) { SubS_SetOfferMode(&this->stateFlags, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->stateFlags |= ENAN_STATE_100 | ENAN_STATE_200; - this->stateFlags |= ENAN_STATE_2000; + this->stateFlags |= ENAN_STATE_DRAW_BROOM; break; case ANJU_SCH_32: @@ -2169,7 +2182,7 @@ s32 func_80B56418(EnAn* this, PlayState* play, ScheduleOutput* scheduleOutput) { case ANJU_SCH_3F: EnAn_ChangeAnim(this, play, ENAN_ANIM_18); this->stateFlags |= ENAN_STATE_100 | ENAN_STATE_200; - this->stateFlags |= ENAN_STATE_1000; + this->stateFlags |= ENAN_STATE_DRAW_UMBRELLA; break; case ANJU_SCH_28: @@ -2220,7 +2233,7 @@ s32 func_80B56744(EnAn* this, PlayState* play, ScheduleOutput* scheduleOutput) { SubS_SetOfferMode(&this->stateFlags, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->stateFlags |= ENAN_STATE_100 | ENAN_STATE_200; - this->stateFlags |= ENAN_STATE_2000; + this->stateFlags |= ENAN_STATE_DRAW_BROOM; } ret = true; } @@ -2271,7 +2284,7 @@ s32 func_80B56880(EnAn* this, PlayState* play, ScheduleOutput* scheduleOutput) { case ANJU_SCH_3: this->stateFlags |= ENAN_STATE_100 | ENAN_STATE_200; - this->stateFlags |= ENAN_STATE_1000; + this->stateFlags |= ENAN_STATE_DRAW_UMBRELLA; if (CHECK_WEEKEVENTREG(WEEKEVENTREG_55_20)) { EnAn_ChangeAnim(this, play, ENAN_ANIM_20); @@ -2294,7 +2307,7 @@ s32 func_80B56880(EnAn* this, PlayState* play, ScheduleOutput* scheduleOutput) { SubS_SetOfferMode(&this->stateFlags, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK); this->stateFlags |= ENAN_STATE_100 | ENAN_STATE_200; - this->stateFlags |= ENAN_STATE_8000; + this->stateFlags |= ENAN_STATE_DRAW_CHOPSTICKS; break; } ret = true; @@ -2477,8 +2490,8 @@ s32 func_80B56E44(EnAn* this, PlayState* play) { Vec3f sp2C; Vec3f sp20; - if ((this->unk_218 != NULL) && (this->unk_218->update != NULL)) { - Math_Vec3f_Copy(&sp2C, &this->unk_218->world.pos); + if ((this->lookAtActor != NULL) && (this->lookAtActor->update != NULL)) { + Math_Vec3f_Copy(&sp2C, &this->lookAtActor->world.pos); Math_Vec3f_Copy(&sp20, &this->actor.world.pos); this->actor.world.rot.y = Math_Vec3f_Yaw(&sp20, &sp2C); } @@ -2577,7 +2590,7 @@ s32 func_80B5702C(EnAn* this, PlayState* play) { s32 func_80B572D4(EnAn* this, PlayState* play) { switch (this->scheduleResult) { case ANJU_SCH_17: - if ((func_80B55F8C(play) != 0) && (func_80B55ECC(this) != 0)) { + if ((func_80B55F8C(play) != 0) && func_80B55ECC(this)) { this->stateFlags |= ENAN_STATE_20; } else { this->stateFlags &= ~ENAN_STATE_20; @@ -2817,7 +2830,7 @@ void func_80B578F8(EnAn* this, PlayState* play) { } this->scheduleResult = scheduleOutput.result; - this->unk_218 = func_80B55D20(this, play); + this->lookAtActor = func_80B55D20(this, play); func_80B57718(this, play); } @@ -2833,12 +2846,12 @@ void func_80B57A44(EnAn* this, PlayState* play) { } else if ((this->scheduleResult != ANJU_SCH_1) && (this->scheduleResult != ANJU_SCH_3) && (this->scheduleResult != ANJU_SCH_C) && (this->scheduleResult != ANJU_SCH_E) && (this->scheduleResult != ANJU_SCH_19)) { - if ((this->unk_218 != NULL) && (this->unk_218->update != NULL)) { + if ((this->lookAtActor != NULL) && (this->lookAtActor->update != NULL)) { s32 temp; Vec3f sp38; Vec3f sp2C; - Math_Vec3f_Copy(&sp38, &this->unk_218->world.pos); + Math_Vec3f_Copy(&sp38, &this->lookAtActor->world.pos); Math_Vec3f_Copy(&sp2C, &this->actor.world.pos); temp = Math_Vec3f_Yaw(&sp2C, &sp38); @@ -2864,10 +2877,10 @@ void func_80B57B48(EnAn* this, PlayState* play) { this->cueId = cueId; if (this->cueId == 3) { SET_WEEKEVENTREG(WEEKEVENTREG_87_02); - this->unk_3B4 = true; + this->drawMoonMask = true; } if (this->cueId == 9) { - this->unk_3B4 = false; + this->drawMoonMask = false; } EnAn_ChangeAnim(this, play, sp30[cueId]); } @@ -2961,14 +2974,14 @@ void EnAn_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, if (limbIndex == ANJU1_LIMB_HEAD) { Matrix_MultVec3f(&D_80B58ED4, &this->actor.focus.pos); Math_Vec3s_Copy(&this->actor.focus.rot, &this->actor.world.rot); - func_80B54124(this, play, 1U); + EnAn_DrawAccessory(this, play, ENAN_ACCESSORY_KAFEI_MASK); } else if (limbIndex == ANJU1_LIMB_RIGHT_HAND) { - func_80B54124(this, play, 0U); - func_80B54124(this, play, 4U); - func_80B54124(this, play, 2U); - func_80B54124(this, play, 3U); + EnAn_DrawAccessory(this, play, ENAN_ACCESSORY_FOOD_TRAY); + EnAn_DrawAccessory(this, play, ENAN_ACCESSORY_CHOPSTICKS); + EnAn_DrawAccessory(this, play, ENAN_ACCESSORY_UMBRELLA); + EnAn_DrawAccessory(this, play, ENAN_ACCESSORY_BROOM); } else if (limbIndex == ANJU1_LIMB_LEFT_HAND) { - func_80B54124(this, play, 5U); + EnAn_DrawAccessory(this, play, ENAN_ACCESSORY_MOON_MASK); } } @@ -2990,14 +3003,14 @@ void EnAn_TransformLimbDraw(PlayState* play, s32 limbIndex, Actor* thisx) { } if (limbIndex == ANJU1_LIMB_HEAD) { - SubS_UpdateLimb(this->unk_37C + 0x4000, this->unk_37E + this->actor.shape.rot.y + 0x4000, &this->unk_240, - &this->unk_258, stepRot, overrideRot); + SubS_UpdateLimb(this->headRotZ + 0x4000, this->headRotY + this->actor.shape.rot.y + 0x4000, &this->headComputedPos, + &this->headComputedRot, stepRot, overrideRot); Matrix_Pop(); - Matrix_Translate(this->unk_240.x, this->unk_240.y, this->unk_240.z, MTXMODE_NEW); + Matrix_Translate(this->headComputedPos.x, this->headComputedPos.y, this->headComputedPos.z, MTXMODE_NEW); Matrix_Scale(this->actor.scale.x, this->actor.scale.y, this->actor.scale.z, MTXMODE_APPLY); - Matrix_RotateYS(this->unk_258.y, MTXMODE_APPLY); - Matrix_RotateXS(this->unk_258.x, MTXMODE_APPLY); - Matrix_RotateZS(this->unk_258.z, MTXMODE_APPLY); + Matrix_RotateYS(this->headComputedRot.y, MTXMODE_APPLY); + Matrix_RotateXS(this->headComputedRot.x, MTXMODE_APPLY); + Matrix_RotateZS(this->headComputedRot.z, MTXMODE_APPLY); Matrix_Push(); } } @@ -3021,7 +3034,7 @@ static TexturePtr sEyeTextures[ENAN_EYES_MAX] = { void EnAn_Draw(Actor* thisx, PlayState* play) { EnAn* this = THIS; - if ((this->scheduleResult != ANJU_SCH_NONE) || this->unk_3B0) { + if ((this->scheduleResult != ANJU_SCH_NONE) || this->forceDraw) { OPEN_DISPS(play->state.gfxCtx); Gfx_SetupDL25_Opa(play->state.gfxCtx); diff --git a/src/overlays/actors/ovl_En_An/z_en_an.h b/src/overlays/actors/ovl_En_An/z_en_an.h index cea2363c1..efd4dc607 100644 --- a/src/overlays/actors/ovl_En_An/z_en_an.h +++ b/src/overlays/actors/ovl_En_An/z_en_an.h @@ -14,19 +14,19 @@ typedef s32 (*MsgEventFunc)(Actor*, PlayState*); #define ENAN_8000 0x8000 //#define ENAN_GET_8000(thisx) (((thisx)->params & 0x8000) >> 0xF) -#define ENAN_STATE_8 (1 << 3) -#define ENAN_STATE_10 (1 << 4) -#define ENAN_STATE_20 (1 << 5) -#define ENAN_STATE_40 (1 << 6) -#define ENAN_STATE_80 (1 << 7) -#define ENAN_STATE_100 (1 << 8) -#define ENAN_STATE_200 (1 << 9) -#define ENAN_STATE_400 (1 << 10) -#define ENAN_STATE_800 (1 << 11) -#define ENAN_STATE_1000 (1 << 12) -#define ENAN_STATE_2000 (1 << 13) -#define ENAN_STATE_4000 (1 << 14) -#define ENAN_STATE_8000 (1 << 15) +#define ENAN_STATE_8 (1 << 3) +#define ENAN_STATE_10 (1 << 4) +#define ENAN_STATE_20 (1 << 5) +#define ENAN_STATE_40 (1 << 6) +#define ENAN_STATE_80 (1 << 7) +#define ENAN_STATE_100 (1 << 8) +#define ENAN_STATE_200 (1 << 9) +#define ENAN_STATE_400 (1 << 10) +#define ENAN_STATE_DRAW_FOOD_TRAY (1 << 11) +#define ENAN_STATE_DRAW_UMBRELLA (1 << 12) +#define ENAN_STATE_DRAW_BROOM (1 << 13) +#define ENAN_STATE_DRAW_KAFEI_MASK (1 << 14) +#define ENAN_STATE_DRAW_CHOPSTICKS (1 << 15) typedef struct EnAn { /* 0x000 */ Actor actor; @@ -51,13 +51,13 @@ typedef struct EnAn { /* 0x210 */ s32 msgScriptResumePos; /* 0x214 */ s8 unk_214; // curRoom.num /* 0x215 */ s8 unk_215; - /* 0x218 */ Actor* unk_218; + /* 0x218 */ Actor* lookAtActor; /* 0x21C */ UNK_TYPE1 unk_21C[0xC]; /* 0x228 */ Vec3f unk_228; /* 0x234 */ Vec3f unk_234; - /* 0x240 */ Vec3f unk_240; + /* 0x240 */ Vec3f headComputedPos; /* 0x24C */ UNK_TYPE1 unk_24C[0xC]; - /* 0x258 */ Vec3s unk_258; // some limb rot + /* 0x258 */ Vec3s headComputedRot; /* 0x25E */ UNK_TYPE1 unk_25E[0x6]; /* 0x264 */ Vec3s jointTable[ANJU1_LIMB_MAX]; /* 0x2E2 */ Vec3s morphTable[ANJU1_LIMB_MAX]; @@ -69,8 +69,8 @@ typedef struct EnAn { /* 0x374 */ f32 unk_374; /* 0x378 */ s16 unk_378; // schedule time diff /* 0x37A */ s16 unk_37A; // schedule time diff - /* 0x37C */ s16 unk_37C; // some limb z rot - /* 0x37E */ s16 unk_37E; // some limb y rot + /* 0x37C */ s16 headRotZ; + /* 0x37E */ s16 headRotY; /* 0x380 */ UNK_TYPE1 unk_380[0x4]; /* 0x384 */ s16 timePathTimeSpeed; /* 0x386 */ s16 unk_386; // timer @@ -87,8 +87,8 @@ typedef struct EnAn { /* 0x3A0 */ UNK_TYPE1 unk_3A0[0x8]; /* 0x3A8 */ u32 unk_3A8; /* 0x3AC */ u32 unk_3AC; - /* 0x3B0 */ s32 unk_3B0; - /* 0x3B4 */ s32 unk_3B4; + /* 0x3B0 */ s32 forceDraw; + /* 0x3B4 */ s32 drawMoonMask; /* 0x3B8 */ s32 unk_3B8; /* 0x3BC */ s32 unk_3BC; /* 0x3C0 */ s32 unk_3C0; diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 83356ad85..d174fd4d9 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -14015,7 +14015,7 @@ 0x80B53CE8:("EnAn_ChangeAnim",), 0x80B53ED4:("func_80B53ED4",), 0x80B53F84:("EnAn_UpdateFace",), - 0x80B54124:("func_80B54124",), + 0x80B54124:("EnAn_DrawAccessory",), 0x80B54678:("func_80B54678",), 0x80B546F4:("func_80B546F4",), 0x80B54750:("func_80B54750",), @@ -14028,7 +14028,7 @@ 0x80B54DF4:("func_80B54DF4",), 0x80B55180:("func_80B55180",), 0x80B552E4:("func_80B552E4",), - 0x80B553AC:("func_80B553AC",), + 0x80B553AC:("EnAn_UpdateHeadRot",), 0x80B554E8:("func_80B554E8",), 0x80B555C8:("func_80B555C8",), 0x80B556F8:("func_80B556F8",),