diff --git a/src/overlays/actors/ovl_En_Ik/z_en_ik.c b/src/overlays/actors/ovl_En_Ik/z_en_ik.c index fe86a74c9b..158bb92607 100644 --- a/src/overlays/actors/ovl_En_Ik/z_en_ik.c +++ b/src/overlays/actors/ovl_En_Ik/z_en_ik.c @@ -19,6 +19,11 @@ void EnIk_Destroy(Actor* thisx, GlobalContext* globalCtx); void EnIk_Update(Actor* thisx, GlobalContext* globalCtx); void EnIk_Draw(Actor* thisx, GlobalContext* globalCtx); +void func_80A74714(EnIk* this); +void func_80A7492C(EnIk* this, GlobalContext* globalCtx); +void func_80A75FA0(Actor* thisx, GlobalContext* globalCtx); +void func_80A76798(Actor* thisx, GlobalContext* globalCtx); +void func_80A77844(EnIk* this, GlobalContext* globalCtx); void func_80A77AEC(EnIk* this, GlobalContext* globalCtx); void func_80A77B0C(EnIk* this, GlobalContext* globalCtx); void func_80A77B3C(EnIk* this, GlobalContext* globalCtx); @@ -27,25 +32,20 @@ void func_80A774BC(EnIk* this, GlobalContext* globalCtx); void func_80A774F8(EnIk* this, GlobalContext* globalCtx); void func_80A77ED0(EnIk* this, GlobalContext* globalCtx); void func_80A77EDC(EnIk* this, GlobalContext* globalCtx); -void func_80A77844(EnIk* this, GlobalContext* globalCtx); -void func_80A74398(Actor* thisx, GlobalContext* globalCtx); -void func_80A74714(EnIk* this); -void func_80A7489C(EnIk* this); -void func_80A7492C(EnIk* this, GlobalContext* globalCtx); -void func_80A75FA0(Actor* thisx, GlobalContext* globalCtx); -void func_80A76798(Actor* thisx, GlobalContext* globalCtx); -void func_80A780D0(EnIk* this, GlobalContext* globalCtx); +void func_80A77148(EnIk* this); +void func_80A77158(EnIk* this, GlobalContext* globalCtx); +void func_80A771E4(EnIk* this); void func_80A78160(EnIk* this, GlobalContext* globalCtx); - -s32 EnIk_OverrideLimbDraw1(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* actor); -void EnIk_PostLimbDraw1(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* actor); - -s32 EnIk_OverrideLimbDraw2(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* actor); -void EnIk_PostLimbDraw2(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* actor); - +void func_80A7735C(EnIk* this, GlobalContext* globalCtx); +void func_80A77434(EnIk* this, GlobalContext* globalCtx); +void func_80A77474(EnIk* this, GlobalContext* globalCtx); s32 EnIk_OverrideLimbDraw3(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* actor); void EnIk_PostLimbDraw3(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* actor); +s32 EnIk_OverrideLimbDraw2(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* actor); +void EnIk_PostLimbDraw2(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* actor); +s32 EnIk_OverrideLimbDraw1(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* actor); +void EnIk_PostLimbDraw1(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* actor); extern UNK_TYPE D_02003F80; extern AnimationHeader D_0600C114; @@ -415,9 +415,49 @@ void func_80A77844(EnIk* this, GlobalContext* globalCtx) { CLOSE_DISPS(gfxCtx, "../z_en_ik_inAwake.c", 345); } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ik/func_80A779DC.s") +void func_80A779DC(EnIk* this, GlobalContext* globalCtx) { + CsCmdActorAction* npcAction = EnIk_GetNpcAction(globalCtx, 4); + u32 action; + u32 currentNpcAction; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ik/func_80A77AEC.s") + if (npcAction != NULL) { + action = npcAction->action; + currentNpcAction = this->npcAction; + if (action != currentNpcAction) { + switch (action - 1) { + case 0: + func_80A77148(this); + break; + case 1: + func_80A77158(this, globalCtx); + break; + case 2: + func_80A771E4(this); + break; + case 3: + func_80A78160(this, globalCtx); + break; + case 4: + func_80A7735C(this, globalCtx); + break; + case 5: + func_80A77434(this, globalCtx); + break; + case 6: + func_80A77474(this, globalCtx); + break; + default: + osSyncPrintf("En_Ik_inConfrontion_Check_DemoMode:そんな動作は無い!!!!!!!!\n"); + } + + this->npcAction = action; + } + } +} + +void func_80A77AEC(EnIk* this, GlobalContext* globalCtx) { + func_80A779DC(this, globalCtx); +} #pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ik/func_80A77B0C.s") diff --git a/src/overlays/actors/ovl_En_Ik/z_en_ik.h b/src/overlays/actors/ovl_En_Ik/z_en_ik.h index e7203bfed5..11178878d5 100644 --- a/src/overlays/actors/ovl_En_Ik/z_en_ik.h +++ b/src/overlays/actors/ovl_En_Ik/z_en_ik.h @@ -27,7 +27,8 @@ typedef struct EnIk { /* 0x04C4 */ s32 blureIdx; /* 0x04C8 */ s32 action; /* 0x04CC */ s32 drawMode; - /* 0x04D0 */ char unk_4D0[0x0C]; + /* 0x04D0 */ u32 npcAction; + /* 0x04D4 */ char unk_4D4[0x08]; } EnIk; // size = 0x04DC extern const ActorInit En_Ik_InitVars;