From a53fb026996e322f51eb4a6364ed05f95805e4d5 Mon Sep 17 00:00:00 2001 From: Derek Hensley Date: Tue, 15 Oct 2024 02:20:46 -0700 Subject: [PATCH] EnHy + objects docs (#1499) * document object_bba * Clean up cne * object bob * object_aob * object_cob * object_bji * object_ahg * object_boj * All functions named plus some cleanup * enums * Remove body wiggle comments * Format * Remove case comments * comments with default * Format * format --- assets/xml/objects/object_ahg.xml | 109 +- assets/xml/objects/object_aob.xml | 97 +- assets/xml/objects/object_bba.xml | 87 +- assets/xml/objects/object_bji.xml | 99 +- assets/xml/objects/object_bob.xml | 91 +- assets/xml/objects/object_boj.xml | 122 +- assets/xml/objects/object_cne.xml | 90 +- assets/xml/objects/object_cob.xml | 79 +- include/z64message.h | 42 +- src/code/z_face_reaction.c | 42 +- src/overlays/actors/ovl_Demo_Ec/z_demo_ec.c | 28 +- src/overlays/actors/ovl_En_Guest/z_en_guest.c | 11 +- src/overlays/actors/ovl_En_Hy/z_en_hy.c | 1055 ++++++++++------- src/overlays/actors/ovl_En_Hy/z_en_hy.h | 83 +- src/overlays/actors/ovl_En_Sth/z_en_sth.c | 3 +- 15 files changed, 1169 insertions(+), 869 deletions(-) diff --git a/assets/xml/objects/object_ahg.xml b/assets/xml/objects/object_ahg.xml index 4d37b1b110..8147abb75f 100644 --- a/assets/xml/objects/object_ahg.xml +++ b/assets/xml/objects/object_ahg.xml @@ -1,61 +1,66 @@ + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + diff --git a/assets/xml/objects/object_aob.xml b/assets/xml/objects/object_aob.xml index 61b28914bd..74838f6af3 100644 --- a/assets/xml/objects/object_aob.xml +++ b/assets/xml/objects/object_aob.xml @@ -1,59 +1,58 @@ + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - + + - - - - - - - - + + + + + + + + - - - - + + + + diff --git a/assets/xml/objects/object_bba.xml b/assets/xml/objects/object_bba.xml index ccc5c21365..f988d8fbe4 100644 --- a/assets/xml/objects/object_bba.xml +++ b/assets/xml/objects/object_bba.xml @@ -1,45 +1,50 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/xml/objects/object_bji.xml b/assets/xml/objects/object_bji.xml index c665b6b001..8dd89dd875 100644 --- a/assets/xml/objects/object_bji.xml +++ b/assets/xml/objects/object_bji.xml @@ -1,56 +1,61 @@ + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - + + + + + + + diff --git a/assets/xml/objects/object_bob.xml b/assets/xml/objects/object_bob.xml index 289e994e47..ad59e56ea3 100644 --- a/assets/xml/objects/object_bob.xml +++ b/assets/xml/objects/object_bob.xml @@ -1,47 +1,52 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/xml/objects/object_boj.xml b/assets/xml/objects/object_boj.xml index 4be4764ab5..d43332de00 100644 --- a/assets/xml/objects/object_boj.xml +++ b/assets/xml/objects/object_boj.xml @@ -1,65 +1,73 @@ + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/xml/objects/object_cne.xml b/assets/xml/objects/object_cne.xml index 0c14d0bc54..ecf151d641 100644 --- a/assets/xml/objects/object_cne.xml +++ b/assets/xml/objects/object_cne.xml @@ -1,53 +1,57 @@ + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - + + + - + + diff --git a/assets/xml/objects/object_cob.xml b/assets/xml/objects/object_cob.xml index ba051cfa74..b5047b4993 100644 --- a/assets/xml/objects/object_cob.xml +++ b/assets/xml/objects/object_cob.xml @@ -1,41 +1,46 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/include/z64message.h b/include/z64message.h index 609f737fb7..ad2e19f547 100644 --- a/include/z64message.h +++ b/include/z64message.h @@ -153,27 +153,27 @@ typedef enum MaskReactionSet { /* 0x22 */ MASK_REACTION_SET_GERUDO_WHITE, /* 0x23 */ MASK_REACTION_SET_NABOORU, /* 0x24 */ MASK_REACTION_SET_DANCING_COUPLE, - /* 0x25 */ MASK_REACTION_SET_37, // ENHY_TYPE_AOB - /* 0x26 */ MASK_REACTION_SET_38, // ENHY_TYPE_COB - /* 0x27 */ MASK_REACTION_SET_39, // ENHY_TYPE_AHG_2 - /* 0x28 */ MASK_REACTION_SET_40, // ENHY_TYPE_BOJ_3 - /* 0x29 */ MASK_REACTION_SET_41, // ENHY_TYPE_AHG_4 - /* 0x2A */ MASK_REACTION_SET_42, // ENHY_TYPE_BOJ_5 - /* 0x2B */ MASK_REACTION_SET_43, // ENHY_TYPE_BBA - /* 0x2C */ MASK_REACTION_SET_44, // ENHY_TYPE_BJI_7 - /* 0x2D */ MASK_REACTION_SET_45, // ENHY_TYPE_CNE_8 - /* 0x2E */ MASK_REACTION_SET_46, // ENHY_TYPE_BOJ_9 - /* 0x2F */ MASK_REACTION_SET_47, // ENHY_TYPE_BOJ_10 - /* 0x30 */ MASK_REACTION_SET_48, // ENHY_TYPE_CNE_11 - /* 0x31 */ MASK_REACTION_SET_49, // ENHY_TYPE_BOJ_12 - /* 0x32 */ MASK_REACTION_SET_50, // ENHY_TYPE_AHG_13 - /* 0x33 */ MASK_REACTION_SET_51, // ENHY_TYPE_BOJ_14 - /* 0x34 */ MASK_REACTION_SET_52, // ENHY_TYPE_BJI_15 - /* 0x35 */ MASK_REACTION_SET_53, // ENHY_TYPE_BOJ_16 - /* 0x36 */ MASK_REACTION_SET_54, // ENHY_TYPE_AHG_17 - /* 0x37 */ MASK_REACTION_SET_55, // ENHY_TYPE_BOB_18 - /* 0x38 */ MASK_REACTION_SET_56, // ENHY_TYPE_BJI_19 - /* 0x39 */ MASK_REACTION_SET_57, // ENHY_TYPE_AHG_20 + /* 0x25 */ MASK_REACTION_SET_DOG_LADY, + /* 0x26 */ MASK_REACTION_SET_WOMAN_3, + /* 0x27 */ MASK_REACTION_SET_MAN_1_BEARD, + /* 0x28 */ MASK_REACTION_SET_MAN_2_BALD, + /* 0x29 */ MASK_REACTION_SET_MAN_1_SHAVED_BLACK_SHIRT, + /* 0x2A */ MASK_REACTION_SET_BEGGAR, + /* 0x2B */ MASK_REACTION_SET_OLD_WOMAN, + /* 0x2C */ MASK_REACTION_SET_OLD_MAN, + /* 0x2D */ MASK_REACTION_SET_YOUNG_WOMAN_BROWN_HAIR, + /* 0x2E */ MASK_REACTION_SET_MAN_2_MUSTACHE_RED_SHIRT, + /* 0x2F */ MASK_REACTION_SET_MAN_2_MUSTACHE_BLUE_SHIRT, + /* 0x30 */ MASK_REACTION_SET_YOUNG_WOMAN_ORANGE_HAIR, + /* 0x31 */ MASK_REACTION_SET_MAN_2_ALT_MUSTACHE, + /* 0x32 */ MASK_REACTION_SET_MAN_1_BOWL_CUT_PURPLE_SHIRT, + /* 0x33 */ MASK_REACTION_SET_MAN_2_BEARD, + /* 0x34 */ MASK_REACTION_SET_OLD_MAN_BALD_BROWN_ROBE, + /* 0x35 */ MASK_REACTION_SET_MAN_2_MUSTACHE_WHITE_SHIRT, + /* 0x36 */ MASK_REACTION_SET_MAN_1_SHAVED_GREEN_SHIRT, + /* 0x37 */ MASK_REACTION_SET_WOMAN_2, + /* 0x38 */ MASK_REACTION_SET_OLD_MAN_BALD_PURPLE_ROBE, + /* 0x39 */ MASK_REACTION_SET_MAN_1_BOWL_CUT_GREEN_SHIRT, /* 0x3A */ MASK_REACTION_SET_HAGGLING_TOWNSPEOPLE_1, /* 0x3B */ MASK_REACTION_SET_HAGGLING_TOWNSPEOPLE_2, /* 0x3C */ MASK_REACTION_SET_MAX diff --git a/src/code/z_face_reaction.c b/src/code/z_face_reaction.c index a06bd4dc85..9864944b1c 100644 --- a/src/code/z_face_reaction.c +++ b/src/code/z_face_reaction.c @@ -112,67 +112,67 @@ u16 sMaskReactionSetTextIds[MASK_REACTION_SET_MAX][PLAYER_MASK_MAX] = { // MASK_REACTION_SET_DANCING_COUPLE { 0x0000, 0x711C, 0x711E, 0x711C, 0x711F, 0x711E, 0x711C, 0x711D, 0x711F }, - // MASK_REACTION_SET_37 + // MASK_REACTION_SET_DOG_LADY { 0x0000, 0x7104, 0x7105, 0x7107, 0x7107, 0x7105, 0x7106, 0x7107, 0x7107 }, - // MASK_REACTION_SET_38 + // MASK_REACTION_SET_WOMAN_3 { 0x0000, 0x7107, 0x7105, 0x7107, 0x7107, 0x7106, 0x7107, 0x7107, 0x7105 }, - // MASK_REACTION_SET_39 + // MASK_REACTION_SET_MAN_1_BEARD { 0x0000, 0x7113, 0x7117, 0x7113, 0x7110, 0x7112, 0x7112, 0x7116, 0x7112 }, - // MASK_REACTION_SET_40 + // MASK_REACTION_SET_MAN_2_BALD { 0x0000, 0x7113, 0x7113, 0x7113, 0x7113, 0x7113, 0x7113, 0x7111, 0x7113 }, - // MASK_REACTION_SET_41 + // MASK_REACTION_SET_MAN_1_SHAVED_BLACK_SHIRT { 0x0000, 0x7113, 0x7117, 0x7113, 0x7110, 0x7112, 0x7112, 0x7116, 0x7112 }, - // MASK_REACTION_SET_42 + // MASK_REACTION_SET_BEGGAR { 0x0000, 0x7117, 0x7117, 0x7117, 0x7117, 0x7117, 0x7117, 0x7117, 0x7113 }, - // MASK_REACTION_SET_43 + // MASK_REACTION_SET_OLD_WOMAN { 0x0000, 0x7101, 0x7100, 0x7102, 0x7103, 0x7101, 0x7100, 0x7102, 0x7103 }, - // MASK_REACTION_SET_44 + // MASK_REACTION_SET_OLD_MAN { 0x0000, 0x7100, 0x7102, 0x7100, 0x7100, 0x7100, 0x7100, 0x7100, 0x7102 }, - // MASK_REACTION_SET_45 + // MASK_REACTION_SET_YOUNG_WOMAN_BROWN_HAIR { 0x0000, 0x710A, 0x7109, 0x7109, 0x710A, 0x710B, 0x7108, 0x7109, 0x710B }, - // MASK_REACTION_SET_46 + // MASK_REACTION_SET_MAN_2_MUSTACHE_RED_SHIRT { 0x0000, 0x7117, 0x7112, 0x7113, 0x7110, 0x710C, 0x7117, 0x710E, 0x7112 }, - // MASK_REACTION_SET_47 + // MASK_REACTION_SET_MAN_2_MUSTACHE_BLUE_SHIRT { 0x0000, 0x710D, 0x710F, 0x710C, 0x7112, 0x710D, 0x710C, 0x710C, 0x710F }, - // MASK_REACTION_SET_48 + // MASK_REACTION_SET_YOUNG_WOMAN_ORANGE_HAIR { 0x0000, 0x710A, 0x7109, 0x711A, 0x710A, 0x7109, 0x7108, 0x710B, 0x7109 }, - // MASK_REACTION_SET_49 + // MASK_REACTION_SET_MAN_2_ALT_MUSTACHE { 0x0000, 0x710C, 0x710F, 0x7113, 0x7110, 0x710D, 0x7112, 0x7116, 0x710D }, - // MASK_REACTION_SET_50 + // MASK_REACTION_SET_MAN_1_BOWL_CUT_PURPLE_SHIRT { 0x0000, 0x7115, 0x7114, 0x7114, 0x7115, 0x7114, 0x7114, 0x7116, 0x7117 }, - // MASK_REACTION_SET_51 + // MASK_REACTION_SET_MAN_2_BEARD { 0x0000, 0x7113, 0x710F, 0x7113, 0x7110, 0x710C, 0x711A, 0x710D, 0x7112 }, - // MASK_REACTION_SET_52 + // MASK_REACTION_SET_OLD_MAN_BALD_BROWN_ROBE { 0x0000, 0x7101, 0x7102, 0x7103, 0x7101, 0x7100, 0x7100, 0x7102, 0x7100 }, - // MASK_REACTION_SET_53 + // MASK_REACTION_SET_MAN_2_MUSTACHE_WHITE_SHIRT { 0x0000, 0x7112, 0x710E, 0x7112, 0x710E, 0x710D, 0x7112, 0x710E, 0x710F }, - // MASK_REACTION_SET_54 + // MASK_REACTION_SET_MAN_1_SHAVED_GREEN_SHIRT { 0x0000, 0x7142, 0x7141, 0x7142, 0x7143, 0x7140, 0x7140, 0x7141, 0x7143 }, - // MASK_REACTION_SET_55 + // MASK_REACTION_SET_WOMAN_2 { 0x0000, 0x713C, 0x713D, 0x713D, 0x713E, 0x713E, 0x713F, 0x713D, 0x713F }, - // MASK_REACTION_SET_56 + // MASK_REACTION_SET_OLD_MAN_BALD_PURPLE_ROBE { 0x0000, 0x7101, 0x7102, 0x7103, 0x7101, 0x7100, 0x7100, 0x7102, 0x7100 }, - // MASK_REACTION_SET_57 + // MASK_REACTION_SET_MAN_1_BOWL_CUT_GREEN_SHIRT { 0x0000, 0x7113, 0x7117, 0x7113, 0x7110, 0x7112, 0x7112, 0x7116, 0x7112 }, // MASK_REACTION_SET_HAGGLING_TOWNSPEOPLE_1 diff --git a/src/overlays/actors/ovl_Demo_Ec/z_demo_ec.c b/src/overlays/actors/ovl_Demo_Ec/z_demo_ec.c index a505b061ce..0d6ba9ed5d 100644 --- a/src/overlays/actors/ovl_Demo_Ec/z_demo_ec.c +++ b/src/overlays/actors/ovl_Demo_Ec/z_demo_ec.c @@ -504,7 +504,7 @@ void DemoEc_DrawKokiriGirl(DemoEc* this, PlayState* play) { } void DemoEc_InitOldMan(DemoEc* this, PlayState* play) { DemoEc_UseDrawObject(this, play); - DemoEc_InitSkelAnime(this, play, &object_bji_Skel_0000F0); + DemoEc_InitSkelAnime(this, play, &gHylianOldManSkel); DemoEc_UseAnimationObject(this, play); DemoEc_ChangeAnimation(this, &gDemoEcOldManAnim, 0, 0.0f, false); func_8096D5D4(this, play); @@ -522,9 +522,9 @@ void DemoEc_UpdateOldMan(DemoEc* this, PlayState* play) { void DemoEc_DrawOldMan(DemoEc* this, PlayState* play) { static void* eyeTextures[] = { - object_bji_Tex_0005FC, - object_bji_Tex_0009FC, - object_bji_Tex_000DFC, + gHylianOldManEyeOpenTex, + gHylianOldManEyeHalfTex, + gHylianOldManEyeClosedTex, }; static u8 color1[] = { 0, 50, 100, 255 }; static u8 color2[] = { 0, 50, 160, 255 }; @@ -536,7 +536,7 @@ void DemoEc_DrawOldMan(DemoEc* this, PlayState* play) { void DemoEc_InitBeardedMan(DemoEc* this, PlayState* play) { DemoEc_UseDrawObject(this, play); - DemoEc_InitSkelAnime(this, play, &object_ahg_Skel_0000F0); + DemoEc_InitSkelAnime(this, play, &gHylianMan1Skel); DemoEc_UseAnimationObject(this, play); DemoEc_ChangeAnimation(this, &gDemoEcOldManAnim, 0, 0.0f, false); func_8096D5D4(this, play); @@ -554,9 +554,9 @@ void DemoEc_UpdateBeardedMan(DemoEc* this, PlayState* play) { void DemoEc_DrawBeardedMan(DemoEc* this, PlayState* play) { static void* eyeTextures[] = { - object_ahg_Tex_00057C, - object_ahg_Tex_00067C, - object_ahg_Tex_00077C, + gHylianMan1BeardedEyeOpenTex, + gHylianMan1BeardedEyeHalfTex, + gHylianMan1BeardedEyeClosedTex, }; static u8 color1[] = { 255, 255, 255, 255 }; static u8 color2[] = { 255, 255, 255, 255 }; @@ -568,7 +568,7 @@ void DemoEc_DrawBeardedMan(DemoEc* this, PlayState* play) { void DemoEc_InitWoman(DemoEc* this, PlayState* play) { DemoEc_UseDrawObject(this, play); - DemoEc_InitSkelAnime(this, play, &object_bob_Skel_0000F0); + DemoEc_InitSkelAnime(this, play, &gHylianWoman2Skel); DemoEc_UseAnimationObject(this, play); DemoEc_ChangeAnimation(this, &gDemoEcOldManAnim, 0, 0.0f, false); func_8096D5D4(this, play); @@ -586,9 +586,9 @@ void DemoEc_UpdateWoman(DemoEc* this, PlayState* play) { void DemoEc_DrawWoman(DemoEc* this, PlayState* play) { static void* eyeTextures[] = { - object_bob_Tex_0007C8, - object_bob_Tex_000FC8, - object_bob_Tex_0017C8, + gHylianWoman2EyeOpenTex, + gHylianWoman2EyeHalfTex, + gHylianWoman2EyeClosedTex, }; s32 eyeTexIndex = this->eyeTexIndex; void* eyeTexture = eyeTextures[eyeTexIndex]; @@ -598,7 +598,7 @@ void DemoEc_DrawWoman(DemoEc* this, PlayState* play) { void DemoEc_InitOldWoman(DemoEc* this, PlayState* play) { DemoEc_UseDrawObject(this, play); - DemoEc_InitSkelAnime(this, play, &object_bba_Skel_0000F0); + DemoEc_InitSkelAnime(this, play, &gHylianOldWomanSkel); DemoEc_UseAnimationObject(this, play); DemoEc_ChangeAnimation(this, &gDemoEcOldManAnim, 0, 0.0f, false); func_8096D5D4(this, play); @@ -614,7 +614,7 @@ void DemoEc_UpdateOldWoman(DemoEc* this, PlayState* play) { } void DemoEc_DrawOldWoman(DemoEc* this, PlayState* play) { - DemoEc_DrawSkeleton(this, play, &object_bba_Tex_0004C8, NULL, NULL, NULL); + DemoEc_DrawSkeleton(this, play, &gHylianOldWomanEyeTex, NULL, NULL, NULL); } void DemoEc_InitBossCarpenter(DemoEc* this, PlayState* play) { diff --git a/src/overlays/actors/ovl_En_Guest/z_en_guest.c b/src/overlays/actors/ovl_En_Guest/z_en_guest.c index a5cfc07103..e302681584 100644 --- a/src/overlays/actors/ovl_En_Guest/z_en_guest.c +++ b/src/overlays/actors/ovl_En_Guest/z_en_guest.c @@ -80,8 +80,7 @@ void EnGuest_Update(Actor* thisx, PlayState* play) { this->actor.flags &= ~ACTOR_FLAG_4; Actor_ProcessInitChain(&this->actor, sInitChain); - SkelAnime_InitFlex(play, &this->skelAnime, &object_boj_Skel_0000F0, NULL, this->jointTable, this->morphTable, - 16); + SkelAnime_InitFlex(play, &this->skelAnime, &gHylianMan2Skel, NULL, this->jointTable, this->morphTable, 16); gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.slots[this->osAnimeObjectSlot].segment); Animation_Change(&this->skelAnime, &gObjOsAnim_42AC, 1.0f, 0.0f, Animation_GetLastFrame(&gObjOsAnim_42AC), ANIMMODE_LOOP, 0.0f); @@ -186,7 +185,7 @@ s32 EnGuest_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* OPEN_DISPS(play->state.gfxCtx, "../z_en_guest.c", 352); if (limbIndex == 15) { - *dList = object_boj_DL_0059B0; + *dList = gHylianMan2BeardedHeadDL; Matrix_Translate(1400.0f, 0.0f, 0.0f, MTXMODE_APPLY); limbRot = this->interactInfo.headRot; Matrix_RotateX(BINANG_TO_RAD_ALT(limbRot.y), MTXMODE_APPLY); @@ -212,9 +211,9 @@ s32 EnGuest_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* void EnGuest_Draw(Actor* thisx, PlayState* play) { static void* D_80A50BA4[] = { - object_boj_Tex_0005FC, - object_boj_Tex_0006FC, - object_boj_Tex_0007FC, + gHylianMan2MustachedEyeOpenTex, + gHylianMan2MustachedEyeHalfTex, + gHylianMan2MustachedEyeClosedTex, }; EnGuest* this = (EnGuest*)thisx; s32 pad; diff --git a/src/overlays/actors/ovl_En_Hy/z_en_hy.c b/src/overlays/actors/ovl_En_Hy/z_en_hy.c index 16a448a1d9..9ac751d4e7 100644 --- a/src/overlays/actors/ovl_En_Hy/z_en_hy.c +++ b/src/overlays/actors/ovl_En_Hy/z_en_hy.c @@ -23,15 +23,15 @@ void EnHy_Destroy(Actor* thisx, PlayState* play); void EnHy_Update(Actor* thisx, PlayState* play); void EnHy_Draw(Actor* thisx, PlayState* play); -void EnHy_InitImpl(EnHy* this, PlayState* play); -void func_80A7134C(EnHy* this, PlayState* play); -void func_80A71530(EnHy* this, PlayState* play); -void func_80A711B4(EnHy* this, PlayState* play); -void func_80A712C0(EnHy* this, PlayState* play); -void func_80A710F8(EnHy* this, PlayState* play); -void func_80A7127C(EnHy* this, PlayState* play); +void EnHy_WaitForObjects(EnHy* this, PlayState* play); +void EnHy_Pace(EnHy* this, PlayState* play); +void EnHy_FinishGivingDogFoundReward(EnHy* this, PlayState* play); +void EnHy_Walk(EnHy* this, PlayState* play); +void EnHy_SetupPace(EnHy* this, PlayState* play); +void EnHy_WatchDog(EnHy* this, PlayState* play); +void EnHy_Fidget(EnHy* this, PlayState* play); void EnHy_DoNothing(EnHy* this, PlayState* play); -void func_80A714C4(EnHy* this, PlayState* play); +void EnHy_WaitDogFoundRewardGiven(EnHy* this, PlayState* play); ActorProfile En_Hy_Profile = { /**/ ACTOR_EN_HY, @@ -68,82 +68,110 @@ static ColliderCylinderInit sColCylInit = { static CollisionCheckInfoInit2 sColChkInfoInit = { 0, 0, 0, 0, MASS_IMMOVABLE }; // NULL-terminated arrays of eye textures -static void* sEyeTexturesAOB[] = { gDogLadyEyeOpenTex, gDogLadyEyeHalfTex, gDogLadyEyeClosedTex, NULL }; -static void* sEyeTexturesAHG7[] = { object_ahg_Tex_00057C, object_ahg_Tex_00067C, object_ahg_Tex_00077C, NULL }; -static void* sEyeTexturesBBA[] = { object_bba_Tex_0004C8, NULL }; -static void* sEyeTexturesBJI13[] = { object_bji_Tex_0005FC, object_bji_Tex_0009FC, object_bji_Tex_000DFC, NULL }; -static void* sEyeTexturesBOJ2[] = { object_boj_Tex_0005FC, object_boj_Tex_0006FC, object_boj_Tex_0007FC, NULL }; -static void* sEyeTexturesBOB[] = { object_bob_Tex_0007C8, object_bob_Tex_000FC8, object_bob_Tex_0017C8, NULL }; +static void* sHylianWoman1EyeTextures[] = { + gHylianWoman1EyeOpenTex, + gHylianWoman1EyeHalfTex, + gHylianWoman1EyeClosedTex, + NULL, +}; +static void* sHylianMan1EyeTextures[] = { + gHylianMan1BeardedEyeOpenTex, + gHylianMan1BeardedEyeHalfTex, + gHylianMan1BeardedEyeClosedTex, + NULL, +}; +static void* sHylainOldWomanEyeTextures[] = { + gHylianOldWomanEyeTex, + NULL, +}; +static void* sHylianOldManEyeTextures[] = { + gHylianOldManEyeOpenTex, + gHylianOldManEyeHalfTex, + gHylianOldManEyeClosedTex, + NULL, +}; +static void* sHylianMan2EyeTextures[] = { + gHylianMan2MustachedEyeOpenTex, + gHylianMan2MustachedEyeHalfTex, + gHylianMan2MustachedEyeClosedTex, + NULL, +}; +static void* sHylianWoman2EyeTextures[] = { + gHylianWoman2EyeOpenTex, + gHylianWoman2EyeHalfTex, + gHylianWoman2EyeClosedTex, + NULL, +}; typedef struct EnHyHeadInfo { - /* 0x00 */ s16 objectId; - /* 0x04 */ Gfx* headDList; - /* 0x08 */ void** eyeTextures; + /* 0x0 */ s16 objectId; + /* 0x4 */ Gfx* headDList; + /* 0x8 */ void** eyeTextures; } EnHyHeadInfo; // size = 0xC -typedef enum EnHyHeadIndex { - /* 0 */ ENHY_HEAD_AOB, - /* 1 */ ENHY_HEAD_BOB, - /* 2 */ ENHY_HEAD_BOJ_2, - /* 3 */ ENHY_HEAD_BOJ_3, - /* 4 */ ENHY_HEAD_BOJ_4, - /* 5 */ ENHY_HEAD_BOJ_5, - /* 6 */ ENHY_HEAD_BOJ_6, - /* 7 */ ENHY_HEAD_AHG_7, - /* 8 */ ENHY_HEAD_AHG_8, - /* 9 */ ENHY_HEAD_AHG_9, - /* 10 */ ENHY_HEAD_BBA, - /* 11 */ ENHY_HEAD_CNE_11, - /* 12 */ ENHY_HEAD_CNE_12, - /* 13 */ ENHY_HEAD_BJI_13, - /* 14 */ ENHY_HEAD_BJI_14, - /* 15 */ ENHY_HEAD_COB +typedef enum { + /* 0 */ ENHY_HEAD_WOMAN_1, + /* 1 */ ENHY_HEAD_WOMAN_2, + /* 2 */ ENHY_HEAD_MAN_2_MUSTACHE, + /* 3 */ ENHY_HEAD_MAN_2_BALD, + /* 4 */ ENHY_HEAD_MAN_2_LONG_HAIR, + /* 5 */ ENHY_HEAD_MAN_2_ALT_MUSTACHE, + /* 6 */ ENHY_HEAD_MAN_2_BEARD, + /* 7 */ ENHY_HEAD_MAN_1_BEARD, + /* 8 */ ENHY_HEAD_MAN_1_SHAVED, + /* 9 */ ENHY_HEAD_MAN_1_BOWL_CUT, + /* 10 */ ENHY_HEAD_OLD_WOMAN, + /* 11 */ ENHY_HEAD_YOUNG_WOMAN_BROWN_HAIR, + /* 12 */ ENHY_HEAD_YOUNG_WOMAN_ORANGE_HAIR, + /* 13 */ ENHY_HEAD_OLD_MAN, + /* 14 */ ENHY_HEAD_OLD_MAN_BALD, + /* 15 */ ENHY_HEAD_WOMAN_3 } EnHyHeadIndex; static EnHyHeadInfo sHeadInfo[] = { - /* ENHY_HEAD_AOB */ { OBJECT_AOB, gDogLadyHeadDL, sEyeTexturesAOB }, - /* ENHY_HEAD_BOB */ { OBJECT_BOB, object_bob_DL_003B78, sEyeTexturesBOB }, - /* ENHY_HEAD_BOJ_2 */ { OBJECT_BOJ, object_boj_DL_0026F0, sEyeTexturesBOJ2 }, - /* ENHY_HEAD_BOJ_3 */ { OBJECT_BOJ, object_boj_DL_0052E0, NULL }, - /* ENHY_HEAD_BOJ_4 */ { OBJECT_BOJ, object_boj_DL_005528, NULL }, - /* ENHY_HEAD_BOJ_5 */ { OBJECT_BOJ, object_boj_DL_005738, NULL }, - /* ENHY_HEAD_BOJ_6 */ { OBJECT_BOJ, object_boj_DL_0059B0, NULL }, - /* ENHY_HEAD_AHG_7 */ { OBJECT_AHG, object_ahg_DL_0030F0, sEyeTexturesAHG7 }, - /* ENHY_HEAD_AHG_8 */ { OBJECT_AHG, object_ahg_DL_005508, NULL }, - /* ENHY_HEAD_AHG_9 */ { OBJECT_AHG, object_ahg_DL_005728, NULL }, - /* ENHY_HEAD_BBA */ { OBJECT_BBA, object_bba_DL_002948, sEyeTexturesBBA }, - /* ENHY_HEAD_CNE_11 */ { OBJECT_CNE, gCneHeadBrownHairDL, NULL }, - /* ENHY_HEAD_CNE_12 */ { OBJECT_CNE, gCneHeadOrangeHairDL, NULL }, - /* ENHY_HEAD_BJI_13 */ { OBJECT_BJI, object_bji_DL_002560, sEyeTexturesBJI13 }, - /* ENHY_HEAD_BJI_14 */ { OBJECT_BJI, object_bji_DL_003F68, NULL }, - /* ENHY_HEAD_COB */ { OBJECT_COB, object_cob_DL_001300, NULL }, + /* ENHY_HEAD_WOMAN_1 */ { OBJECT_AOB, gHylianWoman1HeadDL, sHylianWoman1EyeTextures }, + /* ENHY_HEAD_WOMAN_2 */ { OBJECT_BOB, gHylianWoman2HeadDL, sHylianWoman2EyeTextures }, + /* ENHY_HEAD_MAN_2_MUSTACHE */ { OBJECT_BOJ, gHylianMan2MustachedHeadDL, sHylianMan2EyeTextures }, + /* ENHY_HEAD_MAN_2_BALD */ { OBJECT_BOJ, gHylianMan2BaldHeadDL, NULL }, + /* ENHY_HEAD_MAN_2_LONG_HAIR */ { OBJECT_BOJ, gHylianMan2LongHairHeadDL, NULL }, + /* ENHY_HEAD_MAN_2_ALT_MUSTACHE */ { OBJECT_BOJ, gHylianMan2AltMustachedHeadDL, NULL }, + /* ENHY_HEAD_MAN_2_BEARD */ { OBJECT_BOJ, gHylianMan2BeardedHeadDL, NULL }, + /* ENHY_HEAD_MAN_1_BEARD */ { OBJECT_AHG, gHylianMan1BeardedHeadDL, sHylianMan1EyeTextures }, + /* ENHY_HEAD_MAN_1_SHAVED */ { OBJECT_AHG, gHylianMan1ShavedHeadDL, NULL }, + /* ENHY_HEAD_MAN_1_BOWL_CUT */ { OBJECT_AHG, gHylianMan1BowlCutHeadDL, NULL }, + /* ENHY_HEAD_OLD_WOMAN */ { OBJECT_BBA, gHylianOldWomanHeadDL, sHylainOldWomanEyeTextures }, + /* ENHY_HEAD_YOUNG_WOMAN_BROWN_HAIR */ { OBJECT_CNE, gHylianYoungWomanBrownHairHeadDL, NULL }, + /* ENHY_HEAD_YOUNG_WOMAN_ORANGE_HAIR */ { OBJECT_CNE, gHylianYoungWomanOrangeHairHeadDL, NULL }, + /* ENHY_HEAD_OLD_MAN */ { OBJECT_BJI, gHylianOldManHeadDL, sHylianOldManEyeTextures }, + /* ENHY_HEAD_OLD_MAN_BALD */ { OBJECT_BJI, gHylianOldManBaldHeadDL, NULL }, + /* ENHY_HEAD_WOMAN_3 */ { OBJECT_COB, gHylianWoman3HeadDL, NULL }, }; typedef struct EnHySkeletonInfo { - /* 0x00 */ s16 objectId; - /* 0x04 */ FlexSkeletonHeader* skeleton; + /* 0x0 */ s16 objectId; + /* 0x4 */ FlexSkeletonHeader* skeleton; } EnHySkeletonInfo; // size = 0x8 -typedef enum EnHySkeletonIndex { - /* 0 */ ENHY_SKEL_AOB, - /* 1 */ ENHY_SKEL_BOB, - /* 2 */ ENHY_SKEL_BOJ, - /* 3 */ ENHY_SKEL_AHG, - /* 4 */ ENHY_SKEL_BBA, - /* 5 */ ENHY_SKEL_CNE, - /* 6 */ ENHY_SKEL_BJI, - /* 7 */ ENHY_SKEL_COB +typedef enum { + /* 0 */ ENHY_SKEL_WOMAN_1, + /* 1 */ ENHY_SKEL_WOMAN_2, + /* 2 */ ENHY_SKEL_MAN_2, + /* 3 */ ENHY_SKEL_MAN_1, + /* 4 */ ENHY_SKEL_OLD_WOMAN, + /* 5 */ ENHY_SKEL_YOUNG_WOMAN, + /* 6 */ ENHY_SKEL_OLD_MAN, + /* 7 */ ENHY_SKEL_WOMAN_3 } EnHySkeletonIndex; static EnHySkeletonInfo sSkeletonInfo[] = { - /* ENHY_SKEL_AOB */ { OBJECT_AOB, &gDogLadySkel }, - /* ENHY_SKEL_BOB */ { OBJECT_BOB, &object_bob_Skel_0000F0 }, - /* ENHY_SKEL_BOJ */ { OBJECT_BOJ, &object_boj_Skel_0000F0 }, - /* ENHY_SKEL_AHG */ { OBJECT_AHG, &object_ahg_Skel_0000F0 }, - /* ENHY_SKEL_BBA */ { OBJECT_BBA, &object_bba_Skel_0000F0 }, - /* ENHY_SKEL_CNE */ { OBJECT_CNE, &gCneSkel }, - /* ENHY_SKEL_BJI */ { OBJECT_BJI, &object_bji_Skel_0000F0 }, - /* ENHY_SKEL_COB */ { OBJECT_COB, &object_cob_Skel_0021F8 }, + /* ENHY_SKEL_WOMAN_1 */ { OBJECT_AOB, &gHylianWoman1Skel }, + /* ENHY_SKEL_WOMAN_2 */ { OBJECT_BOB, &gHylianWoman2Skel }, + /* ENHY_SKEL_MAN_2 */ { OBJECT_BOJ, &gHylianMan2Skel }, + /* ENHY_SKEL_MAN_1 */ { OBJECT_AHG, &gHylianMan1Skel }, + /* ENHY_SKEL_OLD_WOMAN */ { OBJECT_BBA, &gHylianOldWomanSkel }, + /* ENHY_SKEL_YOUNG_WOMAN */ { OBJECT_CNE, &gHylianYoungWomanSkel }, + /* ENHY_SKEL_OLD_MAN */ { OBJECT_BJI, &gHylianOldManSkel }, + /* ENHY_SKEL_WOMAN_3 */ { OBJECT_COB, &gHylianWoman3Skel }, }; typedef enum EnHyAnimationIndex { @@ -177,117 +205,264 @@ typedef enum EnHyAnimationIndex { } EnHyAnimationIndex; static AnimationInfo sAnimationInfo[] = { - /* ENHY_ANIM_0 */ { &gObjOsAnim_092C, 1.0f, 0.0f, -1.0f, 0x00, 0.0f }, - /* ENHY_ANIM_1 */ { &gObjOsAnim_0228, 1.0f, 0.0f, -1.0f, 0x00, 0.0f }, - /* ENHY_ANIM_2 */ { &gObjOsAnim_4CF4, 1.0f, 0.0f, -1.0f, 0x00, 0.0f }, - /* ENHY_ANIM_3 */ { &gObjOsAnim_16EC, 1.0f, 0.0f, -1.0f, 0x00, 0.0f }, - /* ENHY_ANIM_4 */ { &gObjOsAnim_265C, 1.0f, 0.0f, -1.0f, 0x00, 0.0f }, - /* ENHY_ANIM_5 */ { &gObjOsAnim_42AC, 1.0f, 0.0f, -1.0f, 0x00, 0.0f }, - /* ENHY_ANIM_6 */ { &gObjOsAnim_28DC, 1.0f, 0.0f, -1.0f, 0x00, 0.0f }, - /* ENHY_ANIM_7 */ { &gObjOsAnim_2160, 1.0f, 0.0f, -1.0f, 0x00, -10.0f }, - /* ENHY_ANIM_8 */ { &gObjOsAnim_265C, 1.0f, 0.0f, -1.0f, 0x00, -10.0f }, - /* ENHY_ANIM_9 */ { &gObjOsAnim_4E90, 1.0f, 0.0f, -1.0f, 0x00, 0.0f }, - /* ENHY_ANIM_10 */ { &gObjOsAnim_1E7C, 1.0f, 0.0f, -1.0f, 0x00, 0.0f }, - /* ENHY_ANIM_11 */ { &gObjOsAnim_0170, 1.0f, 0.0f, -1.0f, 0x00, 0.0f }, - /* ENHY_ANIM_12 */ { &gObjOsAnim_00B4, 1.0f, 0.0f, -1.0f, 0x00, 0.0f }, - /* ENHY_ANIM_13 */ { &gObjOsAnim_3D84, 1.0f, 0.0f, -1.0f, 0x00, 0.0f }, - /* ENHY_ANIM_14 */ { &gObjOsAnim_41F8, 1.0f, 0.0f, -1.0f, 0x00, 0.0f }, - /* ENHY_ANIM_15 */ { &gObjOsAnim_300C, 1.0f, 0.0f, -1.0f, 0x00, 0.0f }, - /* ENHY_ANIM_16 */ { &gObjOsAnim_31B0, 1.0f, 0.0f, -1.0f, 0x00, 0.0f }, - /* ENHY_ANIM_17 */ { &gObjOsAnim_31B0, 1.0f, 0.0f, -1.0f, 0x00, -8.0f }, - /* ENHY_ANIM_18 */ { &gObjOsAnim_2D0C, 1.0f, 0.0f, -1.0f, 0x00, 0.0f }, - /* ENHY_ANIM_19 */ { &gObjOsAnim_2DC0, 1.0f, 0.0f, -1.0f, 0x00, 0.0f }, - /* ENHY_ANIM_20 */ { &gObjOsAnim_4408, 1.0f, 0.0f, -1.0f, 0x00, 0.0f }, - /* ENHY_ANIM_21 */ { &gObjOsAnim_1F18, 1.0f, 0.0f, -1.0f, 0x00, 0.0f }, - /* ENHY_ANIM_22 */ { &gObjOsAnim_4F28, 1.0f, 0.0f, -1.0f, 0x00, 0.0f }, - /* ENHY_ANIM_23 */ { &gObjOsAnim_33B4, 1.0f, 0.0f, -1.0f, 0x00, -8.0f }, - /* ENHY_ANIM_24 */ { &gObjOsAnim_12E8, 1.0f, 0.0f, -1.0f, 0x00, -8.0f }, - /* ENHY_ANIM_25 */ { &gObjOsAnim_0FE4, 1.0f, 0.0f, -1.0f, 0x00, -8.0f }, - /* ENHY_ANIM_26 */ { &gObjOsAnim_0BFC, 1.0f, 0.0f, -1.0f, 0x00, -8.0f }, + /* ENHY_ANIM_0 */ { &gObjOsAnim_092C, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f }, + /* ENHY_ANIM_1 */ { &gObjOsAnim_0228, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f }, + /* ENHY_ANIM_2 */ { &gObjOsAnim_4CF4, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f }, + /* ENHY_ANIM_3 */ { &gObjOsAnim_16EC, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f }, + /* ENHY_ANIM_4 */ { &gObjOsAnim_265C, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f }, + /* ENHY_ANIM_5 */ { &gObjOsAnim_42AC, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f }, + /* ENHY_ANIM_6 */ { &gObjOsAnim_28DC, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f }, + /* ENHY_ANIM_7 */ { &gObjOsAnim_2160, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, -10.0f }, + /* ENHY_ANIM_8 */ { &gObjOsAnim_265C, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, -10.0f }, + /* ENHY_ANIM_9 */ { &gObjOsAnim_4E90, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f }, + /* ENHY_ANIM_10 */ { &gObjOsAnim_1E7C, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f }, + /* ENHY_ANIM_11 */ { &gObjOsAnim_0170, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f }, + /* ENHY_ANIM_12 */ { &gObjOsAnim_00B4, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f }, + /* ENHY_ANIM_13 */ { &gObjOsAnim_3D84, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f }, + /* ENHY_ANIM_14 */ { &gObjOsAnim_41F8, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f }, + /* ENHY_ANIM_15 */ { &gObjOsAnim_300C, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f }, + /* ENHY_ANIM_16 */ { &gObjOsAnim_31B0, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f }, + /* ENHY_ANIM_17 */ { &gObjOsAnim_31B0, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, -8.0f }, + /* ENHY_ANIM_18 */ { &gObjOsAnim_2D0C, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f }, + /* ENHY_ANIM_19 */ { &gObjOsAnim_2DC0, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f }, + /* ENHY_ANIM_20 */ { &gObjOsAnim_4408, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f }, + /* ENHY_ANIM_21 */ { &gObjOsAnim_1F18, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f }, + /* ENHY_ANIM_22 */ { &gObjOsAnim_4F28, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f }, + /* ENHY_ANIM_23 */ { &gObjOsAnim_33B4, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, -8.0f }, + /* ENHY_ANIM_24 */ { &gObjOsAnim_12E8, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, -8.0f }, + /* ENHY_ANIM_25 */ { &gObjOsAnim_0FE4, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, -8.0f }, + /* ENHY_ANIM_26 */ { &gObjOsAnim_0BFC, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, -8.0f }, }; typedef struct EnHyModelInfo { - /* 0x00 */ u8 headInfoIndex; // EnHyHeadIndex - /* 0x01 */ u8 skelInfoIndex2; // EnHySkeletonIndex, see EnHy.objectSlotSkel2 - /* 0x02 */ Color_RGBA8 envColorSeg8; - /* 0x06 */ u8 skelInfoIndex1; // EnHySkeletonIndex, see EnHy.objectSlotSkel1 - /* 0x07 */ Color_RGBA8 envColorSeg9; - /* 0x0B */ u8 animInfoIndex; // EnHyAnimationIndex -} EnHyModelInfo; // size = 0xC + /* 0x0 */ u8 headInfoIndex; // EnHyHeadIndex + /* 0x1 */ u8 upperSkelInfoIndex; // EnHySkeletonIndex, see EnHy.objectSlotUpperSkel + /* 0x2 */ Color_RGBA8 envColorSeg8; + /* 0x6 */ u8 lowerSkelInfoIndex; // EnHySkeletonIndex, see EnHy.objectSlotLowerSkel + /* 0x7 */ Color_RGBA8 envColorSeg9; + /* 0xB */ u8 animInfoIndex; // EnHyAnimationIndex +} EnHyModelInfo; // size = 0xC static EnHyModelInfo sModelInfo[] = { - /* ENHY_TYPE_AOB */ - { ENHY_HEAD_AOB, ENHY_SKEL_AOB, { 255, 255, 255, 255 }, ENHY_SKEL_AOB, { 255, 255, 255, 255 }, ENHY_ANIM_0 }, - /* ENHY_TYPE_COB */ - { ENHY_HEAD_COB, ENHY_SKEL_COB, { 255, 255, 255, 255 }, ENHY_SKEL_COB, { 255, 255, 255, 255 }, ENHY_ANIM_22 }, - /* ENHY_TYPE_AHG_2 */ - { ENHY_HEAD_AHG_7, ENHY_SKEL_AHG, { 255, 255, 255, 255 }, ENHY_SKEL_AHG, { 255, 255, 255, 255 }, ENHY_ANIM_1 }, - /* ENHY_TYPE_BOJ_3 */ - { ENHY_HEAD_BOJ_3, ENHY_SKEL_BOJ, { 255, 255, 255, 0 }, ENHY_SKEL_BOJ, { 55, 55, 255, 0 }, ENHY_ANIM_15 }, - /* ENHY_TYPE_AHG_4 */ - { ENHY_HEAD_AHG_8, ENHY_SKEL_AHG, { 0, 0, 0, 0 }, ENHY_SKEL_AHG, { 255, 0, 0, 0 }, ENHY_ANIM_11 }, - /* ENHY_TYPE_BOJ_5 */ - { ENHY_HEAD_BOJ_4, ENHY_SKEL_BOJ, { 50, 80, 0, 0 }, ENHY_SKEL_BOJ, { 50, 80, 0, 0 }, ENHY_ANIM_16 }, - /* ENHY_TYPE_BBA */ - { ENHY_HEAD_BBA, ENHY_SKEL_BBA, { 255, 255, 255, 255 }, ENHY_SKEL_BBA, { 255, 255, 255, 255 }, ENHY_ANIM_10 }, - /* ENHY_TYPE_BJI_7 */ - { ENHY_HEAD_BJI_13, ENHY_SKEL_BJI, { 0, 50, 160, 0 }, ENHY_SKEL_BJI, { 255, 255, 255, 0 }, ENHY_ANIM_4 }, - /* ENHY_TYPE_CNE_8 */ - { ENHY_HEAD_CNE_11, ENHY_SKEL_CNE, { 160, 180, 255, 0 }, ENHY_SKEL_CNE, { 160, 180, 255, 0 }, ENHY_ANIM_9 }, - /* ENHY_TYPE_BOJ_9 */ - { ENHY_HEAD_BOJ_2, ENHY_SKEL_BOJ, { 220, 0, 80, 0 }, ENHY_SKEL_BOJ, { 255, 255, 255, 0 }, ENHY_ANIM_13 }, - /* ENHY_TYPE_BOJ_10 */ - { ENHY_HEAD_BOJ_2, ENHY_SKEL_BOJ, { 0, 130, 220, 0 }, ENHY_SKEL_BOJ, { 255, 255, 255, 0 }, ENHY_ANIM_14 }, - /* ENHY_TYPE_CNE_11 */ - { ENHY_HEAD_CNE_12, ENHY_SKEL_CNE, { 70, 160, 230, 0 }, ENHY_SKEL_CNE, { 255, 255, 100, 0 }, ENHY_ANIM_20 }, - /* ENHY_TYPE_BOJ_12 */ - { ENHY_HEAD_BOJ_5, ENHY_SKEL_BOJ, { 150, 60, 90, 0 }, ENHY_SKEL_BOJ, { 255, 240, 150, 0 }, ENHY_ANIM_18 }, - /* ENHY_TYPE_AHG_13 */ - { ENHY_HEAD_AHG_9, ENHY_SKEL_AHG, { 200, 180, 255, 0 }, ENHY_SKEL_AHG, { 200, 180, 255, 0 }, ENHY_ANIM_12 }, - /* ENHY_TYPE_BOJ_14 */ - { ENHY_HEAD_BOJ_6, ENHY_SKEL_BOJ, { 140, 255, 110, 0 }, ENHY_SKEL_BOJ, { 255, 255, 255, 0 }, ENHY_ANIM_19 }, - /* ENHY_TYPE_BJI_15 */ - { ENHY_HEAD_BJI_14, ENHY_SKEL_BJI, { 130, 70, 20, 0 }, ENHY_SKEL_BJI, { 130, 180, 255, 0 }, ENHY_ANIM_21 }, - /* ENHY_TYPE_BOJ_16 */ - { ENHY_HEAD_BOJ_2, ENHY_SKEL_BOJ, { 255, 255, 255, 255 }, ENHY_SKEL_BOJ, { 255, 255, 255, 255 }, ENHY_ANIM_5 }, - /* ENHY_TYPE_AHG_17 */ - { ENHY_HEAD_AHG_8, ENHY_SKEL_AHG, { 90, 100, 20, 255 }, ENHY_SKEL_AHG, { 100, 140, 50, 255 }, ENHY_ANIM_11 }, - /* ENHY_TYPE_BOB_18 */ - { ENHY_HEAD_BOB, ENHY_SKEL_BOB, { 255, 255, 255, 255 }, ENHY_SKEL_BOB, { 255, 255, 255, 255 }, ENHY_ANIM_6 }, - /* ENHY_TYPE_BJI_19 */ - { ENHY_HEAD_BJI_14, ENHY_SKEL_BJI, { 160, 0, 100, 0 }, ENHY_SKEL_BJI, { 70, 130, 210, 0 }, ENHY_ANIM_21 }, - /* ENHY_TYPE_AHG_20 */ - { ENHY_HEAD_AHG_9, ENHY_SKEL_AHG, { 160, 230, 0, 0 }, ENHY_SKEL_AHG, { 0, 150, 110, 0 }, ENHY_ANIM_12 }, + /* ENHY_TYPE_DOG_LADY */ + { + ENHY_HEAD_WOMAN_1, + ENHY_SKEL_WOMAN_1, + { 255, 255, 255, 255 }, + ENHY_SKEL_WOMAN_1, + { 255, 255, 255, 255 }, + ENHY_ANIM_0, + }, + /* ENHY_TYPE_WOMAN_3 */ + { + ENHY_HEAD_WOMAN_3, + ENHY_SKEL_WOMAN_3, + { 255, 255, 255, 255 }, + ENHY_SKEL_WOMAN_3, + { 255, 255, 255, 255 }, + ENHY_ANIM_22, + }, + /* ENHY_TYPE_MAN_1_BEARD */ + { + ENHY_HEAD_MAN_1_BEARD, + ENHY_SKEL_MAN_1, + { 255, 255, 255, 255 }, + ENHY_SKEL_MAN_1, + { 255, 255, 255, 255 }, + ENHY_ANIM_1, + }, + /* ENHY_TYPE_MAN_2_BALD */ + { + ENHY_HEAD_MAN_2_BALD, + ENHY_SKEL_MAN_2, + { 255, 255, 255, 0 }, + ENHY_SKEL_MAN_2, + { 55, 55, 255, 0 }, + ENHY_ANIM_15, + }, + /* ENHY_TYPE_MAN_1_SHAVED_BLACK_SHIRT */ + { + ENHY_HEAD_MAN_1_SHAVED, + ENHY_SKEL_MAN_1, + { 0, 0, 0, 0 }, + ENHY_SKEL_MAN_1, + { 255, 0, 0, 0 }, + ENHY_ANIM_11, + }, + /* ENHY_TYPE_BEGGAR */ + { + ENHY_HEAD_MAN_2_LONG_HAIR, + ENHY_SKEL_MAN_2, + { 50, 80, 0, 0 }, + ENHY_SKEL_MAN_2, + { 50, 80, 0, 0 }, + ENHY_ANIM_16, + }, + /* ENHY_TYPE_OLD_WOMAN */ + { + ENHY_HEAD_OLD_WOMAN, + ENHY_SKEL_OLD_WOMAN, + { 255, 255, 255, 255 }, + ENHY_SKEL_OLD_WOMAN, + { 255, 255, 255, 255 }, + ENHY_ANIM_10, + }, + /* ENHY_TYPE_OLD_MAN */ + { + ENHY_HEAD_OLD_MAN, + ENHY_SKEL_OLD_MAN, + { 0, 50, 160, 0 }, + ENHY_SKEL_OLD_MAN, + { 255, 255, 255, 0 }, + ENHY_ANIM_4, + }, + /* ENHY_TYPE_YOUNG_WOMAN_BROWN_HAIR */ + { + ENHY_HEAD_YOUNG_WOMAN_BROWN_HAIR, + ENHY_SKEL_YOUNG_WOMAN, + { 160, 180, 255, 0 }, + ENHY_SKEL_YOUNG_WOMAN, + { 160, 180, 255, 0 }, + ENHY_ANIM_9, + }, + /* ENHY_TYPE_MAN_2_MUSTACHE_RED_SHIRT */ + { + ENHY_HEAD_MAN_2_MUSTACHE, + ENHY_SKEL_MAN_2, + { 220, 0, 80, 0 }, + ENHY_SKEL_MAN_2, + { 255, 255, 255, 0 }, + ENHY_ANIM_13, + }, + /* ENHY_TYPE_MAN_2_MUSTACHE_BLUE_SHIRT */ + { + ENHY_HEAD_MAN_2_MUSTACHE, + ENHY_SKEL_MAN_2, + { 0, 130, 220, 0 }, + ENHY_SKEL_MAN_2, + { 255, 255, 255, 0 }, + ENHY_ANIM_14, + }, + /* ENHY_TYPE_YOUNG_WOMAN_ORANGE_HAIR */ + { + ENHY_HEAD_YOUNG_WOMAN_ORANGE_HAIR, + ENHY_SKEL_YOUNG_WOMAN, + { 70, 160, 230, 0 }, + ENHY_SKEL_YOUNG_WOMAN, + { 255, 255, 100, 0 }, + ENHY_ANIM_20, + }, + /* ENHY_TYPE_MAN_2_ALT_MUSTACHE */ + { + ENHY_HEAD_MAN_2_ALT_MUSTACHE, + ENHY_SKEL_MAN_2, + { 150, 60, 90, 0 }, + ENHY_SKEL_MAN_2, + { 255, 240, 150, 0 }, + ENHY_ANIM_18, + }, + /* ENHY_TYPE_MAN_1_BOWL_CUT_PURPLE_SHIRT */ + { + ENHY_HEAD_MAN_1_BOWL_CUT, + ENHY_SKEL_MAN_1, + { 200, 180, 255, 0 }, + ENHY_SKEL_MAN_1, + { 200, 180, 255, 0 }, + ENHY_ANIM_12, + }, + /* ENHY_TYPE_MAN_2_BEARD */ + { + ENHY_HEAD_MAN_2_BEARD, + ENHY_SKEL_MAN_2, + { 140, 255, 110, 0 }, + ENHY_SKEL_MAN_2, + { 255, 255, 255, 0 }, + ENHY_ANIM_19, + }, + /* ENHY_TYPE_OLD_MAN_BALD_BROWN_ROBE */ + { + ENHY_HEAD_OLD_MAN_BALD, + ENHY_SKEL_OLD_MAN, + { 130, 70, 20, 0 }, + ENHY_SKEL_OLD_MAN, + { 130, 180, 255, 0 }, + ENHY_ANIM_21, + }, + /* ENHY_TYPE_MAN_2_MUSTACHE_WHITE_SHIRT */ + { + ENHY_HEAD_MAN_2_MUSTACHE, + ENHY_SKEL_MAN_2, + { 255, 255, 255, 255 }, + ENHY_SKEL_MAN_2, + { 255, 255, 255, 255 }, + ENHY_ANIM_5, + }, + /* ENHY_TYPE_MAN_1_SHAVED_GREEN_SHIRT */ + { + ENHY_HEAD_MAN_1_SHAVED, + ENHY_SKEL_MAN_1, + { 90, 100, 20, 255 }, + ENHY_SKEL_MAN_1, + { 100, 140, 50, 255 }, + ENHY_ANIM_11, + }, + /* ENHY_TYPE_WOMAN_2 */ + { + ENHY_HEAD_WOMAN_2, + ENHY_SKEL_WOMAN_2, + { 255, 255, 255, 255 }, + ENHY_SKEL_WOMAN_2, + { 255, 255, 255, 255 }, + ENHY_ANIM_6, + }, + /* ENHY_TYPE_OLD_MAN_BALD_PURPLE_ROBE */ + { + ENHY_HEAD_OLD_MAN_BALD, + ENHY_SKEL_OLD_MAN, + { 160, 0, 100, 0 }, + ENHY_SKEL_OLD_MAN, + { 70, 130, 210, 0 }, + ENHY_ANIM_21, + }, + /* ENHY_TYPE_MAN_1_BOWL_CUT_GREEN_SHIRT */ + { + ENHY_HEAD_MAN_1_BOWL_CUT, + ENHY_SKEL_MAN_1, + { 160, 230, 0, 0 }, + ENHY_SKEL_MAN_1, + { 0, 150, 110, 0 }, + ENHY_ANIM_12, + }, }; typedef struct EnHyColliderInfo { - /* 0x00 */ Vec3s offset; - /* 0x06 */ s16 radius; - /* 0x08 */ s16 height; + /* 0x0 */ Vec3s offset; + /* 0x6 */ s16 radius; + /* 0x8 */ s16 height; } EnHyColliderInfo; // size 0xA static EnHyColliderInfo sColliderInfo[] = { - /* ENHY_TYPE_AOB */ { { 0, 0, 4 }, 24, 70 }, - /* ENHY_TYPE_COB */ { { 0, 0, 8 }, 28, 62 }, - /* ENHY_TYPE_AHG_2 */ { { 0, 0, 4 }, 20, 60 }, - /* ENHY_TYPE_BOJ_3 */ { { 0, 0, 2 }, 20, 60 }, - /* ENHY_TYPE_AHG_4 */ { { 0, 0, -2 }, 20, 60 }, - /* ENHY_TYPE_BOJ_5 */ { { 0, 0, 8 }, 24, 40 }, - /* ENHY_TYPE_BBA */ { { 0, 0, 10 }, 26, 40 }, - /* ENHY_TYPE_BJI_7 */ { { 0, 0, 12 }, 26, 58 }, - /* ENHY_TYPE_CNE_8 */ { { 0, 0, 2 }, 18, 68 }, - /* ENHY_TYPE_BOJ_9 */ { { 0, 0, 4 }, 20, 60 }, - /* ENHY_TYPE_BOJ_10 */ { { 0, 0, 4 }, 20, 60 }, - /* ENHY_TYPE_CNE_11 */ { { 0, 0, 6 }, 20, 64 }, - /* ENHY_TYPE_BOJ_12 */ { { 0, 0, 0 }, 18, 60 }, - /* ENHY_TYPE_AHG_13 */ { { 0, 0, 0 }, 16, 60 }, - /* ENHY_TYPE_BOJ_14 */ { { 0, 0, 0 }, 16, 64 }, - /* ENHY_TYPE_BJI_15 */ { { 0, 0, 8 }, 20, 58 }, - /* ENHY_TYPE_BOJ_16 */ { { 4, 0, 0 }, 18, 62 }, - /* ENHY_TYPE_AHG_17 */ { { 4, 0, 0 }, 18, 62 }, - /* ENHY_TYPE_BOB_18 */ { { 0, 0, 8 }, 28, 62 }, - /* ENHY_TYPE_BJI_19 */ { { 0, 0, 0 }, 16, 60 }, - /* ENHY_TYPE_AHG_20 */ { { 0, 0, 8 }, 20, 58 }, + /* ENHY_TYPE_DOG_LADY */ { { 0, 0, 4 }, 24, 70 }, + /* ENHY_TYPE_WOMAN_3 */ { { 0, 0, 8 }, 28, 62 }, + /* ENHY_TYPE_MAN_1_BEARD */ { { 0, 0, 4 }, 20, 60 }, + /* ENHY_TYPE_MAN_2_BALD */ { { 0, 0, 2 }, 20, 60 }, + /* ENHY_TYPE_MAN_1_SHAVED_BLACK_SHIRT */ { { 0, 0, -2 }, 20, 60 }, + /* ENHY_TYPE_BEGGAR */ { { 0, 0, 8 }, 24, 40 }, + /* ENHY_TYPE_OLD_WOMAN */ { { 0, 0, 10 }, 26, 40 }, + /* ENHY_TYPE_OLD_MAN */ { { 0, 0, 12 }, 26, 58 }, + /* ENHY_TYPE_YOUNG_WOMAN_BROWN_HAIR */ { { 0, 0, 2 }, 18, 68 }, + /* ENHY_TYPE_MAN_2_MUSTACHE_RED_SHIRT */ { { 0, 0, 4 }, 20, 60 }, + /* ENHY_TYPE_MAN_2_MUSTACHE_BLUE_SHIRT */ { { 0, 0, 4 }, 20, 60 }, + /* ENHY_TYPE_YOUNG_WOMAN_ORANGE_HAIR */ { { 0, 0, 6 }, 20, 64 }, + /* ENHY_TYPE_MAN_2_ALT_MUSTACHE */ { { 0, 0, 0 }, 18, 60 }, + /* ENHY_TYPE_MAN_1_BOWL_CUT_PURPLE_SHIRT */ { { 0, 0, 0 }, 16, 60 }, + /* ENHY_TYPE_MAN_2_BEARD */ { { 0, 0, 0 }, 16, 64 }, + /* ENHY_TYPE_OLD_MAN_BALD_BROWN_ROBE */ { { 0, 0, 8 }, 20, 58 }, + /* ENHY_TYPE_MAN_2_MUSTACHE_WHITE_SHIRT */ { { 4, 0, 0 }, 18, 62 }, + /* ENHY_TYPE_MAN_1_SHAVED_GREEN_SHIRT */ { { 4, 0, 0 }, 18, 62 }, + /* ENHY_TYPE_WOMAN_2 */ { { 0, 0, 8 }, 28, 62 }, + /* ENHY_TYPE_OLD_MAN_BALD_PURPLE_ROBE */ { { 0, 0, 0 }, 16, 60 }, + /* ENHY_TYPE_MAN_1_BOWL_CUT_GREEN_SHIRT */ { { 0, 0, 8 }, 20, 58 }, }; typedef struct EnHyPlayerTrackingInfo { @@ -297,27 +472,27 @@ typedef struct EnHyPlayerTrackingInfo { } EnHyPlayerTrackingInfo; // size = 0xC static EnHyPlayerTrackingInfo sPlayerTrackingInfo[] = { - /* ENHY_TYPE_AOB */ { 0x06, 20.0f, 10.0f }, - /* ENHY_TYPE_COB */ { 0x06, 20.0f, 10.0f }, - /* ENHY_TYPE_AHG_2 */ { 0x07, 40.0f, 20.0f }, - /* ENHY_TYPE_BOJ_3 */ { 0x06, 20.0f, 10.0f }, - /* ENHY_TYPE_AHG_4 */ { 0x07, 40.0f, 20.0f }, - /* ENHY_TYPE_BOJ_5 */ { 0x08, 0.0f, -20.0f }, - /* ENHY_TYPE_BBA */ { 0x09, 20.0f, 0.0f }, - /* ENHY_TYPE_BJI_7 */ { 0x09, 20.0f, 0.0f }, - /* ENHY_TYPE_CNE_8 */ { 0x06, 20.0f, 10.0f }, - /* ENHY_TYPE_BOJ_9 */ { 0x06, 20.0f, 10.0f }, - /* ENHY_TYPE_BOJ_10 */ { 0x06, 20.0f, 10.0f }, - /* ENHY_TYPE_CNE_11 */ { 0x06, 20.0f, 10.0f }, - /* ENHY_TYPE_BOJ_12 */ { 0x00, 0.0f, 0.0f }, - /* ENHY_TYPE_AHG_13 */ { 0x06, 20.0f, 10.0f }, - /* ENHY_TYPE_BOJ_14 */ { 0x06, 20.0f, 10.0f }, - /* ENHY_TYPE_BJI_15 */ { 0x0A, 20.0f, 0.0f }, - /* ENHY_TYPE_BOJ_16 */ { 0x06, 20.0f, 10.0f }, - /* ENHY_TYPE_AHG_17 */ { 0x06, 20.0f, 10.0f }, - /* ENHY_TYPE_BOB_18 */ { 0x06, 20.0f, 10.0f }, - /* ENHY_TYPE_BJI_19 */ { 0x06, 20.0f, 10.0f }, - /* ENHY_TYPE_AHG_20 */ { 0x0A, 20.0f, 0.0f }, + /* ENHY_TYPE_DOG_LADY */ { 6, 20.0f, 10.0f }, + /* ENHY_TYPE_WOMAN_3 */ { 6, 20.0f, 10.0f }, + /* ENHY_TYPE_MAN_1_BEARD */ { 7, 40.0f, 20.0f }, + /* ENHY_TYPE_MAN_2_BALD */ { 6, 20.0f, 10.0f }, + /* ENHY_TYPE_MAN_1_SHAVED_BLACK_SHIRT */ { 7, 40.0f, 20.0f }, + /* ENHY_TYPE_BEGGAR */ { 8, 0.0f, -20.0f }, + /* ENHY_TYPE_OLD_WOMAN */ { 9, 20.0f, 0.0f }, + /* ENHY_TYPE_OLD_MAN */ { 9, 20.0f, 0.0f }, + /* ENHY_TYPE_YOUNG_WOMAN_BROWN_HAIR */ { 6, 20.0f, 10.0f }, + /* ENHY_TYPE_MAN_2_MUSTACHE_RED_SHIRT */ { 6, 20.0f, 10.0f }, + /* ENHY_TYPE_MAN_2_MUSTACHE_BLUE_SHIRT */ { 6, 20.0f, 10.0f }, + /* ENHY_TYPE_YOUNG_WOMAN_ORANGE_HAIR */ { 6, 20.0f, 10.0f }, + /* ENHY_TYPE_MAN_2_ALT_MUSTACHE */ { 0, 0.0f, 0.0f }, + /* ENHY_TYPE_MAN_1_BOWL_CUT_PURPLE_SHIRT */ { 6, 20.0f, 10.0f }, + /* ENHY_TYPE_MAN_2_BEARD */ { 6, 20.0f, 10.0f }, + /* ENHY_TYPE_OLD_MAN_BALD_BROWN_ROBE */ { 10, 20.0f, 0.0f }, + /* ENHY_TYPE_MAN_2_MUSTACHE_WHITE_SHIRT */ { 6, 20.0f, 10.0f }, + /* ENHY_TYPE_MAN_1_SHAVED_GREEN_SHIRT */ { 6, 20.0f, 10.0f }, + /* ENHY_TYPE_WOMAN_2 */ { 6, 20.0f, 10.0f }, + /* ENHY_TYPE_OLD_MAN_BALD_PURPLE_ROBE */ { 6, 20.0f, 10.0f }, + /* ENHY_TYPE_MAN_1_BOWL_CUT_GREEN_SHIRT */ { 10, 20.0f, 0.0f }, }; typedef struct EnHyInit2Info { @@ -329,41 +504,41 @@ typedef struct EnHyInit2Info { } EnHyInit2Info; // size = 0x1C static EnHyInit2Info sInit2Info[] = { - /* ENHY_TYPE_AOB */ { 36.0f, { 0.0f, 0.0f, 600.0f }, 0.01f, 0x06, 30.0f }, - /* ENHY_TYPE_COB */ { 40.0f, { -100.0f, 0.0f, 400.0f }, 0.01f, 0x06, 30.0f }, - /* ENHY_TYPE_AHG_2 */ { 22.0f, { 0.0f, 0.0f, -200.0f }, 0.01f, 0x06, 30.0f }, - /* ENHY_TYPE_BOJ_3 */ { 20.0f, { -100.0f, 0.0f, 0.0f }, 0.01f, 0x06, 30.0f }, - /* ENHY_TYPE_AHG_4 */ { 22.0f, { 0.0f, 0.0f, 0.0f }, 0.01f, 0x06, 30.0f }, - /* ENHY_TYPE_BOJ_5 */ { 21.0f, { 0.0f, 0.0f, 0.0f }, 0.01f, 0x06, 30.0f }, - /* ENHY_TYPE_BBA */ { 25.0f, { -100.0f, 0.0f, 600.0f }, 0.01f, 0x06, 30.0f }, - /* ENHY_TYPE_BJI_7 */ { 28.0f, { -100.0f, 0.0f, 800.0f }, 0.01f, 0x06, 30.0f }, - /* ENHY_TYPE_CNE_8 */ { 17.0f, { 0.0f, 0.0f, 700.0f }, 0.01f, 0x06, 30.0f }, - /* ENHY_TYPE_BOJ_9 */ { 18.0f, { 0.0f, 0.0f, 100.0f }, 0.01f, 0x06, 30.0f }, - /* ENHY_TYPE_BOJ_10 */ { 18.0f, { 0.0f, 0.0f, -200.0f }, 0.01f, 0x06, 30.0f }, - /* ENHY_TYPE_CNE_11 */ { 17.0f, { 0.0f, 0.0f, 700.0f }, 0.01f, 0x06, 30.0f }, - /* ENHY_TYPE_BOJ_12 */ { 21.0f, { 0.0f, 0.0f, -300.0f }, 0.01f, 0x06, 30.0f }, - /* ENHY_TYPE_AHG_13 */ { 20.0f, { 0.0f, 0.0f, -200.0f }, 0.01f, 0x06, 30.0f }, - /* ENHY_TYPE_BOJ_14 */ { 18.0f, { -200.0f, 0.0f, -200.0f }, 0.01f, 0x06, 30.0f }, - /* ENHY_TYPE_BJI_15 */ { 27.0f, { -100.0f, 0.0f, 800.0f }, 0.01f, 0x06, 30.0f }, - /* ENHY_TYPE_BOJ_16 */ { 19.0f, { 400.0f, 0.0f, 0.0f }, 0.01f, 0x04, 30.0f }, - /* ENHY_TYPE_AHG_17 */ { 19.0f, { 400.0f, 0.0f, 0.0f }, 0.01f, 0x06, 30.0f }, - /* ENHY_TYPE_BOB_18 */ { 40.0f, { -100.0f, 0.0f, 400.0f }, 0.01f, 0x06, 30.0f }, - /* ENHY_TYPE_BJI_19 */ { 17.0f, { 0.0f, 0.0f, 700.0f }, 0.01f, 0x06, 30.0f }, - /* ENHY_TYPE_AHG_20 */ { 20.0f, { 0.0f, 0.0f, -200.0f }, 0.01f, 0x06, 30.0f }, + /* ENHY_TYPE_DOG_LADY */ { 36.0f, { 0.0f, 0.0f, 600.0f }, 0.01f, 6, 30.0f }, + /* ENHY_TYPE_WOMAN_3 */ { 40.0f, { -100.0f, 0.0f, 400.0f }, 0.01f, 6, 30.0f }, + /* ENHY_TYPE_MAN_1_BEARD */ { 22.0f, { 0.0f, 0.0f, -200.0f }, 0.01f, 6, 30.0f }, + /* ENHY_TYPE_MAN_2_BALD */ { 20.0f, { -100.0f, 0.0f, 0.0f }, 0.01f, 6, 30.0f }, + /* ENHY_TYPE_MAN_1_SHAVED_BLACK_SHIRT */ { 22.0f, { 0.0f, 0.0f, 0.0f }, 0.01f, 6, 30.0f }, + /* ENHY_TYPE_BEGGAR */ { 21.0f, { 0.0f, 0.0f, 0.0f }, 0.01f, 6, 30.0f }, + /* ENHY_TYPE_OLD_WOMAN */ { 25.0f, { -100.0f, 0.0f, 600.0f }, 0.01f, 6, 30.0f }, + /* ENHY_TYPE_OLD_MAN */ { 28.0f, { -100.0f, 0.0f, 800.0f }, 0.01f, 6, 30.0f }, + /* ENHY_TYPE_YOUNG_WOMAN_BROWN_HAIR */ { 17.0f, { 0.0f, 0.0f, 700.0f }, 0.01f, 6, 30.0f }, + /* ENHY_TYPE_MAN_2_MUSTACHE_RED_SHIRT */ { 18.0f, { 0.0f, 0.0f, 100.0f }, 0.01f, 6, 30.0f }, + /* ENHY_TYPE_MAN_2_MUSTACHE_BLUE_SHIRT */ { 18.0f, { 0.0f, 0.0f, -200.0f }, 0.01f, 6, 30.0f }, + /* ENHY_TYPE_YOUNG_WOMAN_ORANGE_HAIR */ { 17.0f, { 0.0f, 0.0f, 700.0f }, 0.01f, 6, 30.0f }, + /* ENHY_TYPE_MAN_2_ALT_MUSTACHE */ { 21.0f, { 0.0f, 0.0f, -300.0f }, 0.01f, 6, 30.0f }, + /* ENHY_TYPE_MAN_1_BOWL_CUT_PURPLE_SHIRT */ { 20.0f, { 0.0f, 0.0f, -200.0f }, 0.01f, 6, 30.0f }, + /* ENHY_TYPE_MAN_2_BEARD */ { 18.0f, { -200.0f, 0.0f, -200.0f }, 0.01f, 6, 30.0f }, + /* ENHY_TYPE_OLD_MAN_BALD_BROWN_ROBE */ { 27.0f, { -100.0f, 0.0f, 800.0f }, 0.01f, 6, 30.0f }, + /* ENHY_TYPE_MAN_2_MUSTACHE_WHITE_SHIRT */ { 19.0f, { 400.0f, 0.0f, 0.0f }, 0.01f, 4, 30.0f }, + /* ENHY_TYPE_MAN_1_SHAVED_GREEN_SHIRT */ { 19.0f, { 400.0f, 0.0f, 0.0f }, 0.01f, 6, 30.0f }, + /* ENHY_TYPE_WOMAN_2 */ { 40.0f, { -100.0f, 0.0f, 400.0f }, 0.01f, 6, 30.0f }, + /* ENHY_TYPE_OLD_MAN_BALD_PURPLE_ROBE */ { 17.0f, { 0.0f, 0.0f, 700.0f }, 0.01f, 6, 30.0f }, + /* ENHY_TYPE_MAN_1_BOWL_CUT_GREEN_SHIRT */ { 20.0f, { 0.0f, 0.0f, -200.0f }, 0.01f, 6, 30.0f }, }; s32 EnHy_FindSkelAndHeadObjects(EnHy* this, PlayState* play) { - u8 headInfoIndex = sModelInfo[PARAMS_GET_S(this->actor.params, 0, 7)].headInfoIndex; - u8 skelInfoIndex2 = sModelInfo[PARAMS_GET_S(this->actor.params, 0, 7)].skelInfoIndex2; - u8 skelInfoIndex1 = sModelInfo[PARAMS_GET_S(this->actor.params, 0, 7)].skelInfoIndex1; + u8 headInfoIndex = sModelInfo[ENHY_GET_TYPE(&this->actor)].headInfoIndex; + u8 upperSkelInfoIndex = sModelInfo[ENHY_GET_TYPE(&this->actor)].upperSkelInfoIndex; + u8 lowerSkelInfoIndex = sModelInfo[ENHY_GET_TYPE(&this->actor)].lowerSkelInfoIndex; - this->objectSlotSkel1 = Object_GetSlot(&play->objectCtx, sSkeletonInfo[skelInfoIndex1].objectId); - if (this->objectSlotSkel1 < 0) { + this->objectSlotLowerSkel = Object_GetSlot(&play->objectCtx, sSkeletonInfo[lowerSkelInfoIndex].objectId); + if (this->objectSlotLowerSkel < 0) { return false; } - this->objectSlotSkel2 = Object_GetSlot(&play->objectCtx, sSkeletonInfo[skelInfoIndex2].objectId); - if (this->objectSlotSkel2 < 0) { + this->objectSlotUpperSkel = Object_GetSlot(&play->objectCtx, sSkeletonInfo[upperSkelInfoIndex].objectId); + if (this->objectSlotUpperSkel < 0) { return false; } @@ -376,11 +551,11 @@ s32 EnHy_FindSkelAndHeadObjects(EnHy* this, PlayState* play) { } s32 EnHy_AreSkelAndHeadObjectsLoaded(EnHy* this, PlayState* play) { - if (!Object_IsLoaded(&play->objectCtx, this->objectSlotSkel1)) { + if (!Object_IsLoaded(&play->objectCtx, this->objectSlotLowerSkel)) { return false; } - if (!Object_IsLoaded(&play->objectCtx, this->objectSlotSkel2)) { + if (!Object_IsLoaded(&play->objectCtx, this->objectSlotUpperSkel)) { return false; } @@ -409,8 +584,8 @@ s32 EnHy_IsOsAnimeObjectLoaded(EnHy* this, PlayState* play) { return true; } -void func_80A6F7CC(EnHy* this, PlayState* play, s32 getItemId) { - this->unkGetItemId = getItemId; +void EnHy_GiveItem(EnHy* this, PlayState* play, s32 getItemId) { + this->getItemId = getItemId; Actor_OfferGetItem(&this->actor, play, getItemId, this->actor.xzDistToPlayer + 1.0f, fabsf(this->actor.yDistToPlayer) + 1.0f); } @@ -418,19 +593,19 @@ void func_80A6F7CC(EnHy* this, PlayState* play, s32 getItemId) { u16 EnHy_GetTextId(PlayState* play, Actor* thisx) { Player* player = GET_PLAYER(play); EnHy* this = (EnHy*)thisx; - u16 textId = MaskReaction_GetTextId(play, MASK_REACTION_SET_37 + PARAMS_GET_S(this->actor.params, 0, 7)); + u16 textId = MaskReaction_GetTextId(play, ENHY_GET_TYPE(&this->actor) + MASK_REACTION_SET_DOG_LADY); if (textId != 0) { - if (PARAMS_GET_S(this->actor.params, 0, 7) == ENHY_TYPE_BOJ_5) { + if (ENHY_GET_TYPE(&this->actor) == ENHY_TYPE_BEGGAR) { player->exchangeItemId = EXCH_ITEM_BOTTLE_BLUE_FIRE; } return textId; } - switch (PARAMS_GET_S(this->actor.params, 0, 7)) { - case ENHY_TYPE_AOB: + switch (ENHY_GET_TYPE(&this->actor)) { + case ENHY_TYPE_DOG_LADY: if (play->sceneId == SCENE_KAKARIKO_CENTER_GUEST_HOUSE) { - return (this->unk_330 & EVENTCHKINF_TALON_RETURNED_FROM_KAKARIKO_MASK) + return (this->talonEventChkInf & EVENTCHKINF_TALON_RETURNED_FROM_KAKARIKO_MASK) ? 0x508D : (GET_INFTABLE(INFTABLE_CB) ? 0x508C : 0x508B); } else if (play->sceneId == SCENE_MARKET_DAY) { @@ -439,7 +614,7 @@ u16 EnHy_GetTextId(PlayState* play, Actor* thisx) { s16 followingDog = (gSaveContext.dogParams & 0xF00) >> 8; if (followingDog != 0) { - this->unk_215 = false; + this->playedSfx = false; return (followingDog == 1) ? 0x709F : 0x709E; } else { return 0x709D; @@ -447,13 +622,15 @@ u16 EnHy_GetTextId(PlayState* play, Actor* thisx) { } else { return 0x70A0; } - case ENHY_TYPE_COB: + + case ENHY_TYPE_WOMAN_3: if (GET_EVENTCHKINF(EVENTCHKINF_80)) { return GET_INFTABLE(INFTABLE_C1) ? 0x7017 : 0x7045; } else { return GET_INFTABLE(INFTABLE_C0) ? 0x7017 : 0x7016; } - case ENHY_TYPE_AHG_2: + + case ENHY_TYPE_MAN_1_BEARD: if (play->sceneId == SCENE_KAKARIKO_CENTER_GUEST_HOUSE) { return 0x5086; } else if (play->sceneId == SCENE_KAKARIKO_VILLAGE) { @@ -469,16 +646,21 @@ u16 EnHy_GetTextId(PlayState* play, Actor* thisx) { } else { return 0x701A; } - case ENHY_TYPE_BOJ_3: + + case ENHY_TYPE_MAN_2_BALD: return GET_EVENTCHKINF(EVENTCHKINF_80) ? (GET_INFTABLE(INFTABLE_C4) ? 0x7001 : 0x70EB) : 0x7001; - case ENHY_TYPE_AHG_4: + + case ENHY_TYPE_MAN_1_SHAVED_BLACK_SHIRT: return GET_EVENTCHKINF(EVENTCHKINF_80) ? 0x704B : (GET_INFTABLE(INFTABLE_C5) ? 0x7024 : 0x7023); - case ENHY_TYPE_BOJ_5: + + case ENHY_TYPE_BEGGAR: player->exchangeItemId = EXCH_ITEM_BOTTLE_BLUE_FIRE; return 0x700C; - case ENHY_TYPE_BBA: + + case ENHY_TYPE_OLD_WOMAN: return GET_EVENTCHKINF(EVENTCHKINF_80) ? 0x704A : (GET_INFTABLE(INFTABLE_C6) ? 0x7022 : 0x7021); - case ENHY_TYPE_BJI_7: + + case ENHY_TYPE_OLD_MAN: if (play->sceneId == SCENE_KAKARIKO_CENTER_GUEST_HOUSE) { return 0x5088; } else if (play->sceneId == SCENE_KAKARIKO_VILLAGE) { @@ -486,13 +668,15 @@ u16 EnHy_GetTextId(PlayState* play, Actor* thisx) { } else { return GET_EVENTCHKINF(EVENTCHKINF_80) ? 0x704D : (GET_INFTABLE(INFTABLE_C7) ? 0x7028 : 0x7027); } - case ENHY_TYPE_CNE_8: + + case ENHY_TYPE_YOUNG_WOMAN_BROWN_HAIR: if (GET_EVENTCHKINF(EVENTCHKINF_80)) { return GET_INFTABLE(INFTABLE_C9) ? 0x701E : 0x7048; } else { return GET_INFTABLE(INFTABLE_C8) ? 0x701E : 0x701D; } - case ENHY_TYPE_BOJ_9: + + case ENHY_TYPE_MAN_2_MUSTACHE_RED_SHIRT: if (play->sceneId == SCENE_KAKARIKO_CENTER_GUEST_HOUSE) { return GET_EVENTCHKINF(EVENTCHKINF_AA) ? 0x5082 : 0x5081; } else if (play->sceneId == SCENE_KAKARIKO_VILLAGE) { @@ -500,7 +684,8 @@ u16 EnHy_GetTextId(PlayState* play, Actor* thisx) { } else { return GET_EVENTCHKINF(EVENTCHKINF_80) ? 0x7049 : (GET_INFTABLE(INFTABLE_CA) ? 0x7020 : 0x701F); } - case ENHY_TYPE_BOJ_10: + + case ENHY_TYPE_MAN_2_MUSTACHE_BLUE_SHIRT: if (play->sceneId == SCENE_IMPAS_HOUSE) { return GET_EVENTCHKINF(EVENTCHKINF_AA) ? 0x507E : 0x507D; } else if (play->sceneId == SCENE_KAKARIKO_VILLAGE) { @@ -512,24 +697,31 @@ u16 EnHy_GetTextId(PlayState* play, Actor* thisx) { return GET_EVENTCHKINF(EVENTCHKINF_80) ? 0x7046 : (GET_INFTABLE(INFTABLE_CD) ? 0x7019 : 0x7018); #endif } - case ENHY_TYPE_CNE_11: + + case ENHY_TYPE_YOUNG_WOMAN_ORANGE_HAIR: return GET_INFTABLE(INFTABLE_MALON_SPAWNED_AT_HYRULE_CASTLE) ? (GET_INFTABLE(INFTABLE_CC) ? 0x7014 : 0x70A4) : 0x7014; - case ENHY_TYPE_BOJ_12: + + case ENHY_TYPE_MAN_2_ALT_MUSTACHE: if (play->sceneId == SCENE_KAKARIKO_VILLAGE) { return !IS_DAY ? 0x5084 : 0x5083; } else { return GET_EVENTCHKINF(EVENTCHKINF_80) ? 0x7044 : 0x7015; } - case ENHY_TYPE_AHG_13: + + case ENHY_TYPE_MAN_1_BOWL_CUT_PURPLE_SHIRT: return 0x7055; - case ENHY_TYPE_BOJ_14: + + case ENHY_TYPE_MAN_2_BEARD: return 0x7089; - case ENHY_TYPE_BJI_15: + + case ENHY_TYPE_OLD_MAN_BALD_BROWN_ROBE: return 0x708A; - case ENHY_TYPE_BOJ_16: + + case ENHY_TYPE_MAN_2_MUSTACHE_WHITE_SHIRT: return 0x700E; - case ENHY_TYPE_AHG_17: + + case ENHY_TYPE_MAN_1_SHAVED_GREEN_SHIRT: if (!LINK_IS_ADULT) { if (IS_DAY) { return GET_INFTABLE(INFTABLE_160) ? 0x5058 : 0x5057; @@ -541,18 +733,22 @@ u16 EnHy_GetTextId(PlayState* play, Actor* thisx) { } else { return 0x5058; } - case ENHY_TYPE_BOB_18: + + case ENHY_TYPE_WOMAN_2: if (!LINK_IS_ADULT) { return GET_EVENTCHKINF(EVENTCHKINF_80) ? 0x505F : (GET_INFTABLE(INFTABLE_163) ? 0x505E : 0x505D); } else { - return (this->unk_330 & EVENTCHKINF_TALON_RETURNED_FROM_KAKARIKO_MASK) + return (this->talonEventChkInf & EVENTCHKINF_TALON_RETURNED_FROM_KAKARIKO_MASK) ? 0x5062 : (GET_INFTABLE(INFTABLE_164) ? 0x5061 : 0x5060); } - case ENHY_TYPE_BJI_19: + + case ENHY_TYPE_OLD_MAN_BALD_PURPLE_ROBE: return 0x7120; - case ENHY_TYPE_AHG_20: + + case ENHY_TYPE_MAN_1_BOWL_CUT_GREEN_SHIRT: return 0x7121; + default: return 0; } @@ -572,17 +768,19 @@ s16 EnHy_UpdateTalkState(PlayState* play, Actor* thisx) { case TEXT_STATE_8: case TEXT_STATE_9: return NPC_TALK_STATE_TALKING; + case TEXT_STATE_DONE_FADING: switch (this->actor.textId) { case 0x709E: case 0x709F: - if (!this->unk_215) { + if (!this->playedSfx) { Audio_PlaySfxGeneral(this->actor.textId == 0x709F ? NA_SE_SY_CORRECT_CHIME : NA_SE_SY_ERROR, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); - this->unk_215 = true; + this->playedSfx = true; } break; + case 0x70F0: case 0x70F1: case 0x70F2: @@ -594,6 +792,7 @@ s16 EnHy_UpdateTalkState(PlayState* play, Actor* thisx) { break; } return NPC_TALK_STATE_TALKING; + case TEXT_STATE_CLOSING: switch (this->actor.textId) { case 0x70F0: @@ -604,39 +803,51 @@ s16 EnHy_UpdateTalkState(PlayState* play, Actor* thisx) { Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENHY_ANIM_17); Player_UpdateBottleHeld(play, GET_PLAYER(play), ITEM_BOTTLE_EMPTY, PLAYER_IA_BOTTLE); break; + case 0x7016: SET_INFTABLE(INFTABLE_C0); break; + case 0x7045: SET_INFTABLE(INFTABLE_C1); break; + case 0x701B: SET_INFTABLE(INFTABLE_C2); break; + case 0x7047: SET_INFTABLE(INFTABLE_C3); break; + case 0x70EB: SET_INFTABLE(INFTABLE_C4); break; + case 0x7023: SET_INFTABLE(INFTABLE_C5); break; + case 0x7021: SET_INFTABLE(INFTABLE_C6); break; + case 0x7027: SET_INFTABLE(INFTABLE_C7); break; + case 0x701D: SET_INFTABLE(INFTABLE_C8); break; + case 0x7048: SET_INFTABLE(INFTABLE_C9); break; + case 0x701F: SET_INFTABLE(INFTABLE_CA); break; + case 0x7018: #if OOT_VERSION < NTSC_1_1 SET_INFTABLE(INFTABLE_CB); @@ -644,50 +855,61 @@ s16 EnHy_UpdateTalkState(PlayState* play, Actor* thisx) { SET_INFTABLE(INFTABLE_CD); #endif break; + case 0x70A4: SET_INFTABLE(INFTABLE_CC); break; + case 0x5057: SET_INFTABLE(INFTABLE_160); break; + case 0x5059: SET_INFTABLE(INFTABLE_161); break; + case 0x505B: SET_INFTABLE(INFTABLE_162); break; + case 0x505D: SET_INFTABLE(INFTABLE_163); break; + case 0x5060: SET_INFTABLE(INFTABLE_164); break; + case 0x508B: SET_INFTABLE(INFTABLE_CB); break; + case 0x709E: gSaveContext.dogParams = 0; break; + case 0x709F: - func_80A6F7CC(this, play, GET_INFTABLE(INFTABLE_191) ? GI_RUPEE_BLUE : GI_HEART_PIECE); - this->actionFunc = func_80A714C4; + EnHy_GiveItem(this, play, GET_INFTABLE(INFTABLE_191) ? GI_RUPEE_BLUE : GI_HEART_PIECE); + this->actionFunc = EnHy_WaitDogFoundRewardGiven; break; } return NPC_TALK_STATE_IDLE; + case TEXT_STATE_EVENT: if (!Message_ShouldAdvance(play)) { return NPC_TALK_STATE_TALKING; } else { return NPC_TALK_STATE_ACTION; } - } - return NPC_TALK_STATE_TALKING; + default: + return NPC_TALK_STATE_TALKING; + } } void EnHy_UpdateEyes(EnHy* this) { if (DECR(this->nextEyeIndexTimer) == 0) { - u8 headInfoIndex = sModelInfo[PARAMS_GET_S(this->actor.params, 0, 7)].headInfoIndex; + u8 headInfoIndex = sModelInfo[ENHY_GET_TYPE(&this->actor)].headInfoIndex; this->curEyeIndex++; if ((sHeadInfo[headInfoIndex].eyeTextures != NULL) && @@ -699,14 +921,14 @@ void EnHy_UpdateEyes(EnHy* this) { } void EnHy_InitCollider(EnHy* this) { - u8 type = PARAMS_GET_S(this->actor.params, 0, 7); + u8 type = ENHY_GET_TYPE(&this->actor); this->collider.dim.radius = sColliderInfo[type].radius; this->collider.dim.height = sColliderInfo[type].height; } void EnHy_InitSetProperties(EnHy* this) { - u8 type = PARAMS_GET_S(this->actor.params, 0, 7); + u8 type = ENHY_GET_TYPE(&this->actor); this->actor.shape.shadowScale = sInit2Info[type].shadowScale; Actor_SetScale(&this->actor, sInit2Info[type].scale); @@ -722,17 +944,17 @@ void EnHy_UpdateCollider(EnHy* this, PlayState* play) { pos.x = this->actor.world.pos.x; pos.y = this->actor.world.pos.y; pos.z = this->actor.world.pos.z; - pos.x += sColliderInfo[PARAMS_GET_S(this->actor.params, 0, 7)].offset.x; - pos.y += sColliderInfo[PARAMS_GET_S(this->actor.params, 0, 7)].offset.y; - pos.z += sColliderInfo[PARAMS_GET_S(this->actor.params, 0, 7)].offset.z; + pos.x += sColliderInfo[ENHY_GET_TYPE(&this->actor)].offset.x; + pos.y += sColliderInfo[ENHY_GET_TYPE(&this->actor)].offset.y; + pos.z += sColliderInfo[ENHY_GET_TYPE(&this->actor)].offset.z; this->collider.dim.pos = pos; CollisionCheck_SetOC(play, &play->colChkCtx, &this->collider.base); } -void func_80A70834(EnHy* this, PlayState* play) { +void EnHy_OfferBuyBottledItem(EnHy* this, PlayState* play) { Player* player = GET_PLAYER(play); - if (PARAMS_GET_S(this->actor.params, 0, 7) == ENHY_TYPE_BOJ_5) { + if (ENHY_GET_TYPE(&this->actor) == ENHY_TYPE_BEGGAR) { if (!Inventory_HasSpecificBottle(ITEM_BOTTLE_BLUE_FIRE) && !Inventory_HasSpecificBottle(ITEM_BOTTLE_BUG) && !Inventory_HasSpecificBottle(ITEM_BOTTLE_FISH)) { switch (func_8002F368(play)) { @@ -741,6 +963,7 @@ void func_80A70834(EnHy* this, PlayState* play) { case EXCH_ITEM_BOTTLE_RUTOS_LETTER: this->actor.textId = 0x70EF; break; + default: if (Player_GetMask(play) == PLAYER_MASK_NONE) { this->actor.textId = 0x70ED; @@ -752,12 +975,15 @@ void func_80A70834(EnHy* this, PlayState* play) { case EXCH_ITEM_BOTTLE_BLUE_FIRE: this->actor.textId = 0x70F0; break; + case EXCH_ITEM_BOTTLE_FISH: this->actor.textId = 0x70F1; break; + case EXCH_ITEM_BOTTLE_BUG: this->actor.textId = 0x70F2; break; + default: if (Player_GetMask(play) == PLAYER_MASK_NONE) { this->actor.textId = 0x700C; @@ -770,30 +996,34 @@ void func_80A70834(EnHy* this, PlayState* play) { } } -void func_80A70978(EnHy* this, PlayState* play) { +void EnHy_UpdateNPC(EnHy* this, PlayState* play) { Player* player = GET_PLAYER(play); s16 trackingMode; - switch (PARAMS_GET_S(this->actor.params, 0, 7)) { - case ENHY_TYPE_BOJ_3: - case ENHY_TYPE_BJI_7: - case ENHY_TYPE_BOJ_9: - case ENHY_TYPE_BOJ_10: + switch (ENHY_GET_TYPE(&this->actor)) { + case ENHY_TYPE_MAN_2_BALD: + case ENHY_TYPE_OLD_MAN: + case ENHY_TYPE_MAN_2_MUSTACHE_RED_SHIRT: + case ENHY_TYPE_MAN_2_MUSTACHE_BLUE_SHIRT: trackingMode = (this->interactInfo.talkState == NPC_TALK_STATE_IDLE) ? NPC_TRACKING_NONE : NPC_TRACKING_HEAD_AND_TORSO; break; - case ENHY_TYPE_BOJ_12: + + case ENHY_TYPE_MAN_2_ALT_MUSTACHE: trackingMode = NPC_TRACKING_NONE; break; - case ENHY_TYPE_AHG_2: - case ENHY_TYPE_AHG_17: + + case ENHY_TYPE_MAN_1_BEARD: + case ENHY_TYPE_MAN_1_SHAVED_GREEN_SHIRT: trackingMode = NPC_TRACKING_FULL_BODY; break; - case ENHY_TYPE_AOB: - case ENHY_TYPE_BOB_18: + + case ENHY_TYPE_DOG_LADY: + case ENHY_TYPE_WOMAN_2: trackingMode = (this->interactInfo.talkState == NPC_TALK_STATE_IDLE) ? NPC_TRACKING_HEAD_AND_TORSO : NPC_TRACKING_FULL_BODY; break; + default: trackingMode = NPC_TRACKING_HEAD_AND_TORSO; break; @@ -802,48 +1032,50 @@ void func_80A70978(EnHy* this, PlayState* play) { this->interactInfo.trackPos = player->actor.world.pos; if (LINK_IS_ADULT) { - this->interactInfo.yOffset = sPlayerTrackingInfo[PARAMS_GET_S(this->actor.params, 0, 7)].adultYOffset; + this->interactInfo.yOffset = sPlayerTrackingInfo[ENHY_GET_TYPE(&this->actor)].adultYOffset; } else { - this->interactInfo.yOffset = sPlayerTrackingInfo[PARAMS_GET_S(this->actor.params, 0, 7)].childYOffset; + this->interactInfo.yOffset = sPlayerTrackingInfo[ENHY_GET_TYPE(&this->actor)].childYOffset; } - Npc_TrackPoint(&this->actor, &this->interactInfo, - sPlayerTrackingInfo[PARAMS_GET_S(this->actor.params, 0, 7)].presetIndex, trackingMode); + Npc_TrackPoint(&this->actor, &this->interactInfo, sPlayerTrackingInfo[ENHY_GET_TYPE(&this->actor)].presetIndex, + trackingMode); if (Npc_UpdateTalking(play, &this->actor, &this->interactInfo.talkState, this->interactRange, EnHy_GetTextId, EnHy_UpdateTalkState)) { - func_80A70834(this, play); + EnHy_OfferBuyBottledItem(this, play); } } s32 EnHy_ShouldSpawn(EnHy* this, PlayState* play) { switch (play->sceneId) { case SCENE_KAKARIKO_VILLAGE: - if (!(PARAMS_GET_S(this->actor.params, 0, 7) == ENHY_TYPE_BOJ_9 || - PARAMS_GET_S(this->actor.params, 0, 7) == ENHY_TYPE_BOJ_10 || - PARAMS_GET_S(this->actor.params, 0, 7) == ENHY_TYPE_BOJ_12 || - PARAMS_GET_S(this->actor.params, 0, 7) == ENHY_TYPE_AHG_2 || - PARAMS_GET_S(this->actor.params, 0, 7) == ENHY_TYPE_BJI_7)) { + if (!(ENHY_GET_TYPE(&this->actor) == ENHY_TYPE_MAN_2_MUSTACHE_RED_SHIRT || + ENHY_GET_TYPE(&this->actor) == ENHY_TYPE_MAN_2_MUSTACHE_BLUE_SHIRT || + ENHY_GET_TYPE(&this->actor) == ENHY_TYPE_MAN_2_ALT_MUSTACHE || + ENHY_GET_TYPE(&this->actor) == ENHY_TYPE_MAN_1_BEARD || + ENHY_GET_TYPE(&this->actor) == ENHY_TYPE_OLD_MAN)) { return true; } else if (!LINK_IS_ADULT) { return true; - } else if (PARAMS_GET_S(this->actor.params, 0, 7) != ENHY_TYPE_BOJ_12 && IS_NIGHT) { + } else if (ENHY_GET_TYPE(&this->actor) != ENHY_TYPE_MAN_2_ALT_MUSTACHE && IS_NIGHT) { return false; } else { return true; } + case SCENE_IMPAS_HOUSE: - if (PARAMS_GET_S(this->actor.params, 0, 7) != ENHY_TYPE_BOJ_10) { + if (ENHY_GET_TYPE(&this->actor) != ENHY_TYPE_MAN_2_MUSTACHE_BLUE_SHIRT) { return true; } else if (LINK_IS_CHILD) { return false; - } else if (PARAMS_GET_S(this->actor.params, 0, 7) == ENHY_TYPE_BOJ_10 && IS_DAY) { + } else if (ENHY_GET_TYPE(&this->actor) == ENHY_TYPE_MAN_2_MUSTACHE_BLUE_SHIRT && IS_DAY) { return false; } else { return true; } + case SCENE_DOG_LADY_HOUSE: - if (PARAMS_GET_S(this->actor.params, 0, 7) != ENHY_TYPE_AOB) { + if (ENHY_GET_TYPE(&this->actor) != ENHY_TYPE_DOG_LADY) { return true; } else if (IS_DAY) { return false; @@ -851,11 +1083,11 @@ s32 EnHy_ShouldSpawn(EnHy* this, PlayState* play) { return true; } case SCENE_KAKARIKO_CENTER_GUEST_HOUSE: - if (PARAMS_GET_S(this->actor.params, 0, 7) == ENHY_TYPE_AOB) { + if (ENHY_GET_TYPE(&this->actor) == ENHY_TYPE_DOG_LADY) { return !LINK_IS_ADULT ? false : true; - } else if (!(PARAMS_GET_S(this->actor.params, 0, 7) == ENHY_TYPE_BOJ_9 || - PARAMS_GET_S(this->actor.params, 0, 7) == ENHY_TYPE_AHG_2 || - PARAMS_GET_S(this->actor.params, 0, 7) == ENHY_TYPE_BJI_7)) { + } else if (!(ENHY_GET_TYPE(&this->actor) == ENHY_TYPE_MAN_2_MUSTACHE_RED_SHIRT || + ENHY_GET_TYPE(&this->actor) == ENHY_TYPE_MAN_1_BEARD || + ENHY_GET_TYPE(&this->actor) == ENHY_TYPE_OLD_MAN)) { return true; } else if (IS_DAY) { return false; @@ -864,9 +1096,10 @@ s32 EnHy_ShouldSpawn(EnHy* this, PlayState* play) { } else { return true; } + case SCENE_BACK_ALLEY_DAY: case SCENE_BACK_ALLEY_NIGHT: - if (PARAMS_GET_S(this->actor.params, 0, 7) != ENHY_TYPE_BOJ_14) { + if (ENHY_GET_TYPE(&this->actor) != ENHY_TYPE_MAN_2_BEARD) { return true; } else if (IS_NIGHT) { return false; @@ -875,22 +1108,25 @@ s32 EnHy_ShouldSpawn(EnHy* this, PlayState* play) { } else { return true; } + default: - switch (PARAMS_GET_S(this->actor.params, 0, 7)) { - case ENHY_TYPE_BJI_19: - case ENHY_TYPE_AHG_20: + switch (ENHY_GET_TYPE(&this->actor)) { + case ENHY_TYPE_OLD_MAN_BALD_PURPLE_ROBE: + case ENHY_TYPE_MAN_1_BOWL_CUT_GREEN_SHIRT: if (LINK_IS_ADULT) { return false; } + FALLTHROUGH; + default: + return true; } - return true; } } void EnHy_Init(Actor* thisx, PlayState* play) { EnHy* this = (EnHy*)thisx; - if (PARAMS_GET_S(this->actor.params, 0, 7) >= ENHY_TYPE_MAX || !EnHy_FindOsAnimeObject(this, play) || + if ((ENHY_GET_TYPE(&this->actor) >= ENHY_TYPE_MAX) || !EnHy_FindOsAnimeObject(this, play) || !EnHy_FindSkelAndHeadObjects(this, play)) { Actor_Kill(&this->actor); } @@ -899,7 +1135,7 @@ void EnHy_Init(Actor* thisx, PlayState* play) { Actor_Kill(&this->actor); } - this->actionFunc = EnHy_InitImpl; + this->actionFunc = EnHy_WaitForObjects; } void EnHy_Destroy(Actor* thisx, PlayState* play) { @@ -908,21 +1144,20 @@ void EnHy_Destroy(Actor* thisx, PlayState* play) { Collider_DestroyCylinder(play, &this->collider); } -void EnHy_InitImpl(EnHy* this, PlayState* play) { +void EnHy_WaitForObjects(EnHy* this, PlayState* play) { if (EnHy_IsOsAnimeObjectLoaded(this, play) && EnHy_AreSkelAndHeadObjectsLoaded(this, play)) { - this->actor.objectSlot = this->objectSlotSkel1; + this->actor.objectSlot = this->objectSlotLowerSkel; gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.slots[this->actor.objectSlot].segment); SkelAnime_InitFlex(play, &this->skelAnime, - sSkeletonInfo[sModelInfo[PARAMS_GET_S(this->actor.params, 0, 7)].skelInfoIndex1].skeleton, - NULL, this->jointTable, this->morphTable, 16); + sSkeletonInfo[sModelInfo[ENHY_GET_TYPE(&this->actor)].lowerSkelInfoIndex].skeleton, NULL, + this->jointTable, this->morphTable, ENHY_LIMB_MAX); ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 0.0f); gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.slots[this->objectSlotOsAnime].segment); Collider_InitCylinder(play, &this->collider); Collider_SetCylinder(play, &this->collider, &this->actor, &sColCylInit); EnHy_InitCollider(this); CollisionCheck_SetInfo2(&this->actor.colChkInfo, NULL, &sColChkInfoInit); - Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, - sModelInfo[PARAMS_GET_S(this->actor.params, 0, 7)].animInfoIndex); + Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, sModelInfo[ENHY_GET_TYPE(&this->actor)].animInfoIndex); if ((play->sceneId == SCENE_BACK_ALLEY_DAY) || (play->sceneId == SCENE_MARKET_DAY)) { this->actor.flags &= ~ACTOR_FLAG_4; @@ -930,51 +1165,55 @@ void EnHy_InitImpl(EnHy* this, PlayState* play) { } if (play->sceneId == SCENE_KAKARIKO_CENTER_GUEST_HOUSE) { - this->unk_330 = gSaveContext.save.info.eventChkInf[EVENTCHKINF_TALON_RETURNED_FROM_KAKARIKO_INDEX]; + this->talonEventChkInf = gSaveContext.save.info.eventChkInf[EVENTCHKINF_TALON_RETURNED_FROM_KAKARIKO_INDEX]; } EnHy_InitSetProperties(this); - this->path = Path_GetByIndex(play, PARAMS_GET_S(this->actor.params, 7, 4), 15); + this->path = Path_GetByIndex(play, ENHY_GET_PATH_INDEX(&this->actor), 15); - switch (PARAMS_GET_S(this->actor.params, 0, 7)) { - case ENHY_TYPE_BOJ_3: + switch (ENHY_GET_TYPE(&this->actor)) { + case ENHY_TYPE_MAN_2_BALD: if (this->path != NULL) { this->actor.speed = 3.0f; } - this->actionFunc = func_80A711B4; + this->actionFunc = EnHy_Walk; break; - case ENHY_TYPE_BJI_7: + + case ENHY_TYPE_OLD_MAN: this->pathReverse = false; - this->actionFunc = func_80A712C0; + this->actionFunc = EnHy_SetupPace; break; - case ENHY_TYPE_AOB: + + case ENHY_TYPE_DOG_LADY: if (play->sceneId == SCENE_MARKET_DAY) { - this->actionFunc = func_80A710F8; + this->actionFunc = EnHy_WatchDog; break; } FALLTHROUGH; - case ENHY_TYPE_COB: - case ENHY_TYPE_AHG_2: - case ENHY_TYPE_AHG_4: - case ENHY_TYPE_BBA: - case ENHY_TYPE_CNE_8: - case ENHY_TYPE_AHG_13: - case ENHY_TYPE_BOJ_14: - case ENHY_TYPE_BJI_15: - case ENHY_TYPE_BOJ_16: - case ENHY_TYPE_AHG_17: - case ENHY_TYPE_BOB_18: - case ENHY_TYPE_BJI_19: - case ENHY_TYPE_AHG_20: - this->actionFunc = func_80A7127C; + case ENHY_TYPE_WOMAN_3: + case ENHY_TYPE_MAN_1_BEARD: + case ENHY_TYPE_MAN_1_SHAVED_BLACK_SHIRT: + case ENHY_TYPE_OLD_WOMAN: + case ENHY_TYPE_YOUNG_WOMAN_BROWN_HAIR: + case ENHY_TYPE_MAN_1_BOWL_CUT_PURPLE_SHIRT: + case ENHY_TYPE_MAN_2_BEARD: + case ENHY_TYPE_OLD_MAN_BALD_BROWN_ROBE: + case ENHY_TYPE_MAN_2_MUSTACHE_WHITE_SHIRT: + case ENHY_TYPE_MAN_1_SHAVED_GREEN_SHIRT: + case ENHY_TYPE_WOMAN_2: + case ENHY_TYPE_OLD_MAN_BALD_PURPLE_ROBE: + case ENHY_TYPE_MAN_1_BOWL_CUT_GREEN_SHIRT: + this->actionFunc = EnHy_Fidget; break; - case ENHY_TYPE_BOJ_5: - case ENHY_TYPE_BOJ_9: - case ENHY_TYPE_BOJ_10: - case ENHY_TYPE_CNE_11: - case ENHY_TYPE_BOJ_12: + + case ENHY_TYPE_BEGGAR: + case ENHY_TYPE_MAN_2_MUSTACHE_RED_SHIRT: + case ENHY_TYPE_MAN_2_MUSTACHE_BLUE_SHIRT: + case ENHY_TYPE_YOUNG_WOMAN_ORANGE_HAIR: + case ENHY_TYPE_MAN_2_ALT_MUSTACHE: this->actionFunc = EnHy_DoNothing; break; + default: Actor_Kill(&this->actor); break; @@ -982,7 +1221,7 @@ void EnHy_InitImpl(EnHy* this, PlayState* play) { } } -void func_80A710F8(EnHy* this, PlayState* play) { +void EnHy_WatchDog(EnHy* this, PlayState* play) { if (this->interactInfo.talkState != NPC_TALK_STATE_IDLE) { if (this->skelAnime.animation != &gObjOsAnim_0BFC) { Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENHY_ANIM_26); @@ -996,7 +1235,7 @@ void func_80A710F8(EnHy* this, PlayState* play) { } } -void func_80A711B4(EnHy* this, PlayState* play) { +void EnHy_Walk(EnHy* this, PlayState* play) { s16 yaw; f32 distSq; @@ -1012,24 +1251,24 @@ void func_80A711B4(EnHy* this, PlayState* play) { } } -void func_80A7127C(EnHy* this, PlayState* play) { - func_80034F54(play, this->unk_21C, this->unk_23C, 16); +void EnHy_Fidget(EnHy* this, PlayState* play) { + func_80034F54(play, this->fidgetTableY, this->fidgetTableZ, 16); } void EnHy_DoNothing(EnHy* this, PlayState* play) { } -void func_80A712C0(EnHy* this, PlayState* play) { +void EnHy_SetupPace(EnHy* this, PlayState* play) { if ((this->actor.xzDistToPlayer <= 100.0f) && (this->path != NULL)) { Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENHY_ANIM_7); this->actor.speed = 0.4f; - this->actionFunc = func_80A7134C; + this->actionFunc = EnHy_Pace; } - func_80034F54(play, this->unk_21C, this->unk_23C, 16); + func_80034F54(play, this->fidgetTableY, this->fidgetTableZ, 16); } -void func_80A7134C(EnHy* this, PlayState* play) { +void EnHy_Pace(EnHy* this, PlayState* play) { s16 yaw; f32 distSq; @@ -1063,23 +1302,24 @@ void func_80A7134C(EnHy* this, PlayState* play) { } } -void func_80A714C4(EnHy* this, PlayState* play) { +void EnHy_WaitDogFoundRewardGiven(EnHy* this, PlayState* play) { if (Actor_HasParent(&this->actor, play)) { - this->actionFunc = func_80A71530; + this->actionFunc = EnHy_FinishGivingDogFoundReward; } else { - Actor_OfferGetItem(&this->actor, play, this->unkGetItemId, this->actor.xzDistToPlayer + 1.0f, + Actor_OfferGetItem(&this->actor, play, this->getItemId, this->actor.xzDistToPlayer + 1.0f, fabsf(this->actor.yDistToPlayer) + 1.0f); } } -void func_80A71530(EnHy* this, PlayState* play) { +void EnHy_FinishGivingDogFoundReward(EnHy* this, PlayState* play) { if ((Message_GetState(&play->msgCtx) == TEXT_STATE_DONE) && Message_ShouldAdvance(play)) { - switch (this->unkGetItemId) { + switch (this->getItemId) { case GI_HEART_PIECE: gSaveContext.dogParams = 0; gSaveContext.dogIsLost = false; SET_INFTABLE(INFTABLE_191); break; + case GI_RUPEE_BLUE: Rupees_ChangeBy(5); gSaveContext.dogParams = 0; @@ -1087,14 +1327,14 @@ void func_80A71530(EnHy* this, PlayState* play) { break; } - this->actionFunc = func_80A7127C; + this->actionFunc = EnHy_Fidget; } } void EnHy_Update(Actor* thisx, PlayState* play) { EnHy* this = (EnHy*)thisx; - if (this->actionFunc != EnHy_InitImpl) { + if (this->actionFunc != EnHy_WaitForObjects) { gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.slots[this->objectSlotOsAnime].segment); SkelAnime_Update(&this->skelAnime); EnHy_UpdateEyes(this); @@ -1107,7 +1347,7 @@ void EnHy_Update(Actor* thisx, PlayState* play) { } this->actionFunc(this, play); - func_80A70978(this, play); + EnHy_UpdateNPC(this, play); EnHy_UpdateCollider(this, play); } @@ -1115,26 +1355,26 @@ s32 EnHy_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* po EnHy* this = (EnHy*)thisx; s32 pad; Vec3s limbRot; - u8 i; - void* ptr; + u8 headInfoIndex; + void* eyeTex; OPEN_DISPS(play->state.gfxCtx, "../z_en_hy.c", 2170); - if (limbIndex == 15) { + if (limbIndex == ENHY_LIMB_HEAD) { gSPSegment(POLY_OPA_DISP++, 0x06, play->objectCtx.slots[this->objectSlotHead].segment); gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.slots[this->objectSlotHead].segment); - i = sModelInfo[PARAMS_GET_S(this->actor.params, 0, 7)].headInfoIndex; - *dList = sHeadInfo[i].headDList; + headInfoIndex = sModelInfo[ENHY_GET_TYPE(&this->actor)].headInfoIndex; + *dList = sHeadInfo[headInfoIndex].headDList; - if (sHeadInfo[i].eyeTextures != NULL) { - ptr = sHeadInfo[i].eyeTextures[this->curEyeIndex]; - gSPSegment(POLY_OPA_DISP++, 0x0A, SEGMENTED_TO_VIRTUAL(ptr)); + if (sHeadInfo[headInfoIndex].eyeTextures != NULL) { + eyeTex = sHeadInfo[headInfoIndex].eyeTextures[this->curEyeIndex]; + gSPSegment(POLY_OPA_DISP++, 0x0A, SEGMENTED_TO_VIRTUAL(eyeTex)); } - gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.slots[this->objectSlotSkel1].segment); + gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.slots[this->objectSlotLowerSkel].segment); } - if (limbIndex == 15) { + if (limbIndex == ENHY_LIMB_HEAD) { Matrix_Translate(1400.0f, 0.0f, 0.0f, MTXMODE_APPLY); limbRot = this->interactInfo.headRot; Matrix_RotateX(BINANG_TO_RAD_ALT(limbRot.y), MTXMODE_APPLY); @@ -1142,15 +1382,16 @@ s32 EnHy_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* po Matrix_Translate(-1400.0f, 0.0f, 0.0f, MTXMODE_APPLY); } - if (limbIndex == 8) { + if (limbIndex == ENHY_LIMB_TORSO) { limbRot = this->interactInfo.torsoRot; Matrix_RotateX(BINANG_TO_RAD_ALT(-limbRot.y), MTXMODE_APPLY); Matrix_RotateZ(BINANG_TO_RAD_ALT(limbRot.x), MTXMODE_APPLY); } - if ((limbIndex == 8) || (limbIndex == 9) || (limbIndex == 12)) { - rot->y += Math_SinS(this->unk_21C[limbIndex]) * 200.0f; - rot->z += Math_CosS(this->unk_23C[limbIndex]) * 200.0f; + if ((limbIndex == ENHY_LIMB_TORSO) || (limbIndex == ENHY_LIMB_LEFT_UPPER_ARM) || + (limbIndex == ENHY_LIMB_RIGHT_UPPER_ARM)) { + rot->y += Math_SinS(this->fidgetTableY[limbIndex]) * 200.0f; + rot->z += Math_CosS(this->fidgetTableZ[limbIndex]) * 200.0f; } CLOSE_DISPS(play->state.gfxCtx, "../z_en_hy.c", 2228); @@ -1161,34 +1402,33 @@ s32 EnHy_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* po void EnHy_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, void* thisx) { EnHy* this = (EnHy*)thisx; s32 pad; - Vec3f sp3C = { 400.0f, 0.0f, 0.0f }; + Vec3f focusOffset = { 400.0f, 0.0f, 0.0f }; OPEN_DISPS(play->state.gfxCtx, "../z_en_hy.c", 2255); - if (limbIndex == 7) { - gSPSegment(POLY_OPA_DISP++, 0x06, play->objectCtx.slots[this->objectSlotSkel2].segment); - gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.slots[this->objectSlotSkel2].segment); + if (limbIndex == ENHY_LIMB_RIGHT_FOOT) { + gSPSegment(POLY_OPA_DISP++, 0x06, play->objectCtx.slots[this->objectSlotUpperSkel].segment); + gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.slots[this->objectSlotUpperSkel].segment); } - if (PARAMS_GET_S(this->actor.params, 0, 7) == ENHY_TYPE_BOJ_3 && limbIndex == 8) { - gSPDisplayList(POLY_OPA_DISP++, object_boj_DL_005BC8); + if (ENHY_GET_TYPE(&this->actor) == ENHY_TYPE_MAN_2_BALD && limbIndex == ENHY_LIMB_TORSO) { + gSPDisplayList(POLY_OPA_DISP++, gHylianMan2BagDL); } - if (limbIndex == 15) { - Matrix_MultVec3f(&sp3C, &this->actor.focus.pos); + if (limbIndex == ENHY_LIMB_HEAD) { + Matrix_MultVec3f(&focusOffset, &this->actor.focus.pos); } CLOSE_DISPS(play->state.gfxCtx, "../z_en_hy.c", 2281); } -Gfx* EnHy_SetEnvColor(GraphicsContext* play, u8 envR, u8 envG, u8 envB, u8 envA) { - Gfx* dList; +Gfx* EnHy_SetEnvColor(GraphicsContext* gfxCtx, u8 envR, u8 envG, u8 envB, u8 envA) { + Gfx* gfx = GRAPH_ALLOC(gfxCtx, 2 * sizeof(Gfx)); - dList = GRAPH_ALLOC(play, 2 * sizeof(Gfx)); - gDPSetEnvColor(dList, envR, envG, envB, envA); - gSPEndDisplayList(dList + 1); + gDPSetEnvColor(&gfx[0], envR, envG, envB, envA); + gSPEndDisplayList(&gfx[1]); - return dList; + return gfx; } void EnHy_Draw(Actor* thisx, PlayState* play) { @@ -1199,34 +1439,30 @@ void EnHy_Draw(Actor* thisx, PlayState* play) { OPEN_DISPS(play->state.gfxCtx, "../z_en_hy.c", 2318); - if (this->actionFunc != EnHy_InitImpl) { + if (this->actionFunc != EnHy_WaitForObjects) { Gfx_SetupDL_25Opa(play->state.gfxCtx); Matrix_Translate(this->modelOffset.x, this->modelOffset.y, this->modelOffset.z, MTXMODE_APPLY); - envColorSeg8 = sModelInfo[PARAMS_GET_S(this->actor.params, 0, 7)].envColorSeg8; - envColorSeg9 = sModelInfo[PARAMS_GET_S(this->actor.params, 0, 7)].envColorSeg9; + envColorSeg8 = sModelInfo[ENHY_GET_TYPE(&this->actor)].envColorSeg8; + envColorSeg9 = sModelInfo[ENHY_GET_TYPE(&this->actor)].envColorSeg9; - switch (PARAMS_GET_S(this->actor.params, 0, 7)) { - // ENHY_TYPE_AOB - // ENHY_TYPE_COB - case ENHY_TYPE_AHG_2: - case ENHY_TYPE_BOJ_3: - case ENHY_TYPE_AHG_4: - case ENHY_TYPE_BOJ_5: - // ENHY_TYPE_BBA - case ENHY_TYPE_BJI_7: - case ENHY_TYPE_CNE_8: - case ENHY_TYPE_BOJ_9: - case ENHY_TYPE_BOJ_10: - case ENHY_TYPE_CNE_11: - case ENHY_TYPE_BOJ_12: - case ENHY_TYPE_AHG_13: - case ENHY_TYPE_BOJ_14: - case ENHY_TYPE_BJI_15: - case ENHY_TYPE_BOJ_16: - case ENHY_TYPE_AHG_17: - // ENHY_TYPE_BOB_18 - case ENHY_TYPE_BJI_19: - case ENHY_TYPE_AHG_20: + switch (ENHY_GET_TYPE(&this->actor)) { + case ENHY_TYPE_MAN_1_BEARD: + case ENHY_TYPE_MAN_2_BALD: + case ENHY_TYPE_MAN_1_SHAVED_BLACK_SHIRT: + case ENHY_TYPE_BEGGAR: + case ENHY_TYPE_OLD_MAN: + case ENHY_TYPE_YOUNG_WOMAN_BROWN_HAIR: + case ENHY_TYPE_MAN_2_MUSTACHE_RED_SHIRT: + case ENHY_TYPE_MAN_2_MUSTACHE_BLUE_SHIRT: + case ENHY_TYPE_YOUNG_WOMAN_ORANGE_HAIR: + case ENHY_TYPE_MAN_2_ALT_MUSTACHE: + case ENHY_TYPE_MAN_1_BOWL_CUT_PURPLE_SHIRT: + case ENHY_TYPE_MAN_2_BEARD: + case ENHY_TYPE_OLD_MAN_BALD_BROWN_ROBE: + case ENHY_TYPE_MAN_2_MUSTACHE_WHITE_SHIRT: + case ENHY_TYPE_MAN_1_SHAVED_GREEN_SHIRT: + case ENHY_TYPE_OLD_MAN_BALD_PURPLE_ROBE: + case ENHY_TYPE_MAN_1_BOWL_CUT_GREEN_SHIRT: gSPSegment(POLY_OPA_DISP++, 0x08, EnHy_SetEnvColor(play->state.gfxCtx, envColorSeg8.r, envColorSeg8.g, envColorSeg8.b, envColorSeg8.a)); @@ -1234,12 +1470,12 @@ void EnHy_Draw(Actor* thisx, PlayState* play) { EnHy_SetEnvColor(play->state.gfxCtx, envColorSeg9.r, envColorSeg9.g, envColorSeg9.b, envColorSeg9.a)); - if (PARAMS_GET_S(this->actor.params, 0, 7) == ENHY_TYPE_CNE_8 || - PARAMS_GET_S(this->actor.params, 0, 7) == ENHY_TYPE_CNE_11) { - if (PARAMS_GET_S(this->actor.params, 0, 7) == ENHY_TYPE_CNE_8) { + if (ENHY_GET_TYPE(&this->actor) == ENHY_TYPE_YOUNG_WOMAN_BROWN_HAIR || + ENHY_GET_TYPE(&this->actor) == ENHY_TYPE_YOUNG_WOMAN_ORANGE_HAIR) { + if (ENHY_GET_TYPE(&this->actor) == ENHY_TYPE_YOUNG_WOMAN_BROWN_HAIR) { envColorSeg10 = envColorSeg8; } - if (PARAMS_GET_S(this->actor.params, 0, 7) == ENHY_TYPE_CNE_11) { + if (ENHY_GET_TYPE(&this->actor) == ENHY_TYPE_YOUNG_WOMAN_ORANGE_HAIR) { envColorSeg10.r = envColorSeg10.g = envColorSeg10.b = 255; envColorSeg10.a = 0; } @@ -1248,6 +1484,13 @@ void EnHy_Draw(Actor* thisx, PlayState* play) { envColorSeg10.a)); } break; + + // ENHY_TYPE_DOG_LADY + // ENHY_TYPE_WOMAN_3 + // ENHY_TYPE_OLD_WOMAN + // ENHY_TYPE_WOMAN_2 + default: + break; } SkelAnime_DrawFlexOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, diff --git a/src/overlays/actors/ovl_En_Hy/z_en_hy.h b/src/overlays/actors/ovl_En_Hy/z_en_hy.h index c8e28bdd4b..00aa85bbce 100644 --- a/src/overlays/actors/ovl_En_Hy/z_en_hy.h +++ b/src/overlays/actors/ovl_En_Hy/z_en_hy.h @@ -4,31 +4,54 @@ #include "ultra64.h" #include "global.h" +#define ENHY_GET_TYPE(thisx) PARAMS_GET_S((thisx)->params, 0, 7) +#define ENHY_GET_PATH_INDEX(thisx) PARAMS_GET_S((thisx)->params, 7, 4) + typedef enum EnHyType { - /* 0 */ ENHY_TYPE_AOB, - /* 1 */ ENHY_TYPE_COB, - /* 2 */ ENHY_TYPE_AHG_2, - /* 3 */ ENHY_TYPE_BOJ_3, - /* 4 */ ENHY_TYPE_AHG_4, - /* 5 */ ENHY_TYPE_BOJ_5, - /* 6 */ ENHY_TYPE_BBA, - /* 7 */ ENHY_TYPE_BJI_7, - /* 8 */ ENHY_TYPE_CNE_8, - /* 9 */ ENHY_TYPE_BOJ_9, - /* 10 */ ENHY_TYPE_BOJ_10, - /* 11 */ ENHY_TYPE_CNE_11, - /* 12 */ ENHY_TYPE_BOJ_12, - /* 13 */ ENHY_TYPE_AHG_13, - /* 14 */ ENHY_TYPE_BOJ_14, - /* 15 */ ENHY_TYPE_BJI_15, - /* 16 */ ENHY_TYPE_BOJ_16, - /* 17 */ ENHY_TYPE_AHG_17, - /* 18 */ ENHY_TYPE_BOB_18, - /* 19 */ ENHY_TYPE_BJI_19, - /* 20 */ ENHY_TYPE_AHG_20, + /* 0 */ ENHY_TYPE_DOG_LADY, + /* 1 */ ENHY_TYPE_WOMAN_3, + /* 2 */ ENHY_TYPE_MAN_1_BEARD, + /* 3 */ ENHY_TYPE_MAN_2_BALD, + /* 4 */ ENHY_TYPE_MAN_1_SHAVED_BLACK_SHIRT, + /* 5 */ ENHY_TYPE_BEGGAR, + /* 6 */ ENHY_TYPE_OLD_WOMAN, + /* 7 */ ENHY_TYPE_OLD_MAN, + /* 8 */ ENHY_TYPE_YOUNG_WOMAN_BROWN_HAIR, + /* 9 */ ENHY_TYPE_MAN_2_MUSTACHE_RED_SHIRT, + /* 10 */ ENHY_TYPE_MAN_2_MUSTACHE_BLUE_SHIRT, + /* 11 */ ENHY_TYPE_YOUNG_WOMAN_ORANGE_HAIR, + /* 12 */ ENHY_TYPE_MAN_2_ALT_MUSTACHE, + /* 13 */ ENHY_TYPE_MAN_1_BOWL_CUT_PURPLE_SHIRT, + /* 14 */ ENHY_TYPE_MAN_2_BEARD, + /* 15 */ ENHY_TYPE_OLD_MAN_BALD_BROWN_ROBE, + /* 16 */ ENHY_TYPE_MAN_2_MUSTACHE_WHITE_SHIRT, + /* 17 */ ENHY_TYPE_MAN_1_SHAVED_GREEN_SHIRT, + /* 18 */ ENHY_TYPE_WOMAN_2, + /* 19 */ ENHY_TYPE_OLD_MAN_BALD_PURPLE_ROBE, + /* 20 */ ENHY_TYPE_MAN_1_BOWL_CUT_GREEN_SHIRT, /* 21 */ ENHY_TYPE_MAX } EnHyType; +typedef enum EnHyLimb { + /* 0x00 */ ENHY_LIMB_NONE, + /* 0x01 */ ENHY_LIMB_PELVIS, + /* 0x02 */ ENHY_LIMB_LEFT_THIGH, + /* 0x03 */ ENHY_LIMB_LEFT_SHIN, + /* 0x04 */ ENHY_LIMB_LEFT_FOOT, + /* 0x05 */ ENHY_LIMB_RIGHT_THIGH, + /* 0x06 */ ENHY_LIMB_RIGHT_SHIN, + /* 0x07 */ ENHY_LIMB_RIGHT_FOOT, + /* 0x08 */ ENHY_LIMB_TORSO, + /* 0x09 */ ENHY_LIMB_LEFT_UPPER_ARM, + /* 0x0A */ ENHY_LIMB_LEFT_FOREARM, + /* 0x0B */ ENHY_LIMB_LEFT_HAND, + /* 0x0C */ ENHY_LIMB_RIGHT_UPPER_ARM, + /* 0x0D */ ENHY_LIMB_RIGHT_FOREARM, + /* 0x0E */ ENHY_LIMB_RIGHT_HAND, + /* 0x0F */ ENHY_LIMB_HEAD, + /* 0x10 */ ENHY_LIMB_MAX +} EnHyLimb; + struct EnHy; typedef void (*EnHyActionFunc)(struct EnHy*, PlayState*); @@ -40,25 +63,25 @@ typedef struct EnHy { /* 0x0194 */ char unk_194; // unused /* 0x0195 */ u8 pathReverse; /* 0x0196 */ s8 objectSlotHead; - /* 0x0197 */ s8 objectSlotSkel2; // 7 < limb < 15 (upper part?) (always same as objectSlotSkel1) - /* 0x0198 */ s8 objectSlotSkel1; // sets the object used when drawing the skeleton for limb <= 7 (lower part?) + /* 0x0197 */ s8 objectSlotUpperSkel; // upper body limbs object, 7 < limb < 15 (always same as objectSlotLowerSkel), + /* 0x0198 */ s8 objectSlotLowerSkel; // lower body limbs object, limb <= 7 /* 0x0199 */ s8 objectSlotOsAnime; /* 0x019C */ ColliderCylinder collider; /* 0x01E8 */ NpcInteractInfo interactInfo; /* 0x0210 */ Path* path; /* 0x0214 */ s8 waypoint; - /* 0x0215 */ s8 unk_215; + /* 0x0215 */ s8 playedSfx; /* 0x0216 */ char unk_216[2]; // unused /* 0x0218 */ s16 curEyeIndex; /* 0x021A */ s16 nextEyeIndexTimer; - /* 0x021C */ s16 unk_21C[16]; // bodyWiggleY ? - /* 0x023C */ s16 unk_23C[16]; // bodyWiggleZ ? + /* 0x021C */ s16 fidgetTableY[16]; + /* 0x023C */ s16 fidgetTableZ[16]; /* 0x025C */ f32 interactRange; - /* 0x0260 */ s32 unkGetItemId; + /* 0x0260 */ s32 getItemId; /* 0x0264 */ Vec3f modelOffset; - /* 0x0270 */ Vec3s jointTable[16]; - /* 0x02D0 */ Vec3s morphTable[16]; - /* 0x0330 */ u16 unk_330; + /* 0x0270 */ Vec3s jointTable[ENHY_LIMB_MAX]; + /* 0x02D0 */ Vec3s morphTable[ENHY_LIMB_MAX]; + /* 0x0330 */ u16 talonEventChkInf; } EnHy; // size = 0x0334 #endif diff --git a/src/overlays/actors/ovl_En_Sth/z_en_sth.c b/src/overlays/actors/ovl_En_Sth/z_en_sth.c index 755f1ea208..acf8e5885a 100644 --- a/src/overlays/actors/ovl_En_Sth/z_en_sth.c +++ b/src/overlays/actors/ovl_En_Sth/z_en_sth.c @@ -61,8 +61,7 @@ static s16 sObjectIds[6] = { }; static FlexSkeletonHeader* sSkeletons[6] = { - &object_ahg_Skel_0000F0, &object_boj_Skel_0000F0, &object_boj_Skel_0000F0, - &object_boj_Skel_0000F0, &object_boj_Skel_0000F0, &object_boj_Skel_0000F0, + &gHylianMan1Skel, &gHylianMan2Skel, &gHylianMan2Skel, &gHylianMan2Skel, &gHylianMan2Skel, &gHylianMan2Skel, }; static AnimationHeader* sAnimations[6] = {