From 08acf4220422adeb96933a157f3d1cec14466559 Mon Sep 17 00:00:00 2001 From: Maide <34639600+Kelebek1@users.noreply.github.com> Date: Sat, 19 Feb 2022 20:09:27 +0000 Subject: [PATCH] En_Kendo_Js (#606) * En_Kendo_Js * PR * PR * PR --- include/functions.h | 6 +- include/z64.h | 3 +- spec | 3 +- .../actors/ovl_Bg_Goron_Oyu/z_bg_goron_oyu.c | 2 +- .../actors/ovl_En_Aob_01/z_en_aob_01.c | 4 +- src/overlays/actors/ovl_En_Elf/z_en_elf.c | 2 +- src/overlays/actors/ovl_En_Fish/z_en_fish.c | 2 +- src/overlays/actors/ovl_En_In/z_en_in.c | 12 +- src/overlays/actors/ovl_En_Ishi/z_en_ishi.c | 4 +- .../actors/ovl_En_Kendo_Js/z_en_kendo_js.c | 745 ++++++++++++++++-- .../actors/ovl_En_Kendo_Js/z_en_kendo_js.h | 22 +- .../actors/ovl_En_Maruta/z_en_maruta.h | 3 +- src/overlays/actors/ovl_En_Zog/z_en_zog.c | 2 +- .../ovl_Obj_Flowerpot/z_obj_flowerpot.c | 2 +- tools/disasm/functions.txt | 4 +- undefined_syms.txt | 7 - 16 files changed, 744 insertions(+), 79 deletions(-) diff --git a/include/functions.h b/include/functions.h index 5b7da53e44..2b42ce87ef 100644 --- a/include/functions.h +++ b/include/functions.h @@ -2021,8 +2021,8 @@ void func_801229A0(GlobalContext* globalCtx, Player* player); // void func_80122ED8(void); // void func_80122EEC(void); void func_80122F28(Player* player, GlobalContext* globalCtx, Actor* actor); -// void func_80122F9C(void); -// void func_80122FCC(void); +s32 func_80122F9C(GlobalContext* globalCtx); +s32 func_80122FCC(GlobalContext* globalCtx); // void func_8012300C(void); void func_8012301C(s32 iParm1, GlobalContext* globalCtx); void func_80123140(GlobalContext* globalCtx, Player* param_2); @@ -2058,7 +2058,7 @@ s32 func_801240C8(Player* player); // void func_80124110(void); // void func_80124148(void); // void func_80124168(void); -// void func_80124190(void); +s32 func_80124190(Player* player); // void func_801241B4(void); // void func_801241E0(void); // void func_8012420C(void); diff --git a/include/z64.h b/include/z64.h index 83d3a47da8..1daaeb30fd 100644 --- a/include/z64.h +++ b/include/z64.h @@ -879,7 +879,8 @@ typedef struct { /* 0x1205A */ UNK_TYPE1 pad1205A[0x10]; /* 0x1206A */ s16 unk1206A; /* 0x1206C */ s32 unk1206C; - /* 0x12070 */ UNK_TYPE1 pad12070[0x8]; + /* 0x12070 */ s32 unk12070; + /* 0x12074 */ UNK_TYPE1 pad12074[0x4]; /* 0x12078 */ s32 bankRupeesSelected; /* 0x1207C */ s32 bankRupees; /* 0x12080 */ UNK_TYPE1 pad12080[0x31]; diff --git a/spec b/spec index 21237ae08d..ad40881087 100644 --- a/spec +++ b/spec @@ -3975,8 +3975,7 @@ beginseg name "ovl_En_Kendo_Js" compress include "build/src/overlays/actors/ovl_En_Kendo_Js/z_en_kendo_js.o" - include "build/data/ovl_En_Kendo_Js/ovl_En_Kendo_Js.data.o" - include "build/data/ovl_En_Kendo_Js/ovl_En_Kendo_Js.reloc.o" + include "build/src/overlays/actors/ovl_En_Kendo_Js/ovl_En_Kendo_Js_reloc.o" endseg beginseg diff --git a/src/overlays/actors/ovl_Bg_Goron_Oyu/z_bg_goron_oyu.c b/src/overlays/actors/ovl_Bg_Goron_Oyu/z_bg_goron_oyu.c index dee3117426..648b4ff7d8 100644 --- a/src/overlays/actors/ovl_Bg_Goron_Oyu/z_bg_goron_oyu.c +++ b/src/overlays/actors/ovl_Bg_Goron_Oyu/z_bg_goron_oyu.c @@ -91,7 +91,7 @@ void func_80B401F8(BgGoronOyu* this, GlobalContext* globalCtx) { if (dist.x >= 0.0f && dist.x <= this->waterBoxXLength && dist.z >= 0.0f && dist.z <= this->waterBoxZLength && fabsf(dist.y) < 100.0f && player->actor.depthInWater > 12.0f) { - Actor_PickUp(&this->dyna.actor, globalCtx, 0xBA, this->dyna.actor.xzDistToPlayer, + Actor_PickUp(&this->dyna.actor, globalCtx, GI_MAX, this->dyna.actor.xzDistToPlayer, fabsf(this->dyna.actor.playerHeightRel)); } } diff --git a/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c b/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c index 38b9c3eced..f988cfa76c 100644 --- a/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c +++ b/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c @@ -768,9 +768,9 @@ void func_809C2A64(EnAob01* this, GlobalContext* globalCtx) { this->actionFunc = func_809C2BE4; } } else if (gSaveContext.weekEventReg[8] & 0x20) { - Actor_PickUp(&this->actor, globalCtx, 4, 300.0f, 300.0f); + Actor_PickUp(&this->actor, globalCtx, GI_RUPEE_RED, 300.0f, 300.0f); } else { - Actor_PickUp(&this->actor, globalCtx, 12, 300.0f, 300.0f); + Actor_PickUp(&this->actor, globalCtx, GI_HEART_PIECE, 300.0f, 300.0f); } } } diff --git a/src/overlays/actors/ovl_En_Elf/z_en_elf.c b/src/overlays/actors/ovl_En_Elf/z_en_elf.c index 136cecf4bc..5047b54cef 100644 --- a/src/overlays/actors/ovl_En_Elf/z_en_elf.c +++ b/src/overlays/actors/ovl_En_Elf/z_en_elf.c @@ -700,7 +700,7 @@ void func_8088DD34(EnElf* this, GlobalContext* globalCtx) { } if (this->fairyFlags & 0x2000) { - Actor_PickUp(&this->actor, globalCtx, 0xBA, 80.0f, 60.0f); + Actor_PickUp(&this->actor, globalCtx, GI_MAX, 80.0f, 60.0f); } } diff --git a/src/overlays/actors/ovl_En_Fish/z_en_fish.c b/src/overlays/actors/ovl_En_Fish/z_en_fish.c index 24d8efb58a..419e9edd4c 100644 --- a/src/overlays/actors/ovl_En_Fish/z_en_fish.c +++ b/src/overlays/actors/ovl_En_Fish/z_en_fish.c @@ -882,7 +882,7 @@ void func_8091F5A4(Actor* thisx, GlobalContext* globalCtx) { func_8091D904(this); } } else if (func_8091DDF4(this, globalCtx)) { - Actor_PickUp(&this->actor, globalCtx, 0xBA, 80.0f, 25.0f); + Actor_PickUp(&this->actor, globalCtx, GI_MAX, 80.0f, 25.0f); } } } diff --git a/src/overlays/actors/ovl_En_In/z_en_in.c b/src/overlays/actors/ovl_En_In/z_en_in.c index bc4d3a89b8..52b4e46f79 100644 --- a/src/overlays/actors/ovl_En_In/z_en_in.c +++ b/src/overlays/actors/ovl_En_In/z_en_in.c @@ -411,7 +411,7 @@ void func_808F3B40(EnIn* this, GlobalContext* globalCtx) { textId = gSaveContext.day != 3 ? 0x3481 : 0x34A4; this->actor.textId = textId; } else { - Actor_PickUp(&this->actor, globalCtx, 0x92, 500.0f, 100.0f); + Actor_PickUp(&this->actor, globalCtx, GI_MILK, 500.0f, 100.0f); } } @@ -435,7 +435,7 @@ void func_808F3C40(EnIn* this, GlobalContext* globalCtx) { textId = gSaveContext.day != 3 ? 0x346A : 0x3492; this->actor.textId = textId; } else { - Actor_PickUp(&this->actor, globalCtx, 0x92, 500.0f, 100.0f); + Actor_PickUp(&this->actor, globalCtx, GI_MILK, 500.0f, 100.0f); } } @@ -759,7 +759,7 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { if (gSaveContext.rupees >= globalCtx->msgCtx.unk1206C) { if (Interface_HasEmptyBottle()) { this->actionFunc = func_808F3C40; - Actor_PickUp(&this->actor, globalCtx, 0x92, 500.0f, 100.0f); + Actor_PickUp(&this->actor, globalCtx, GI_MILK, 500.0f, 100.0f); func_801159EC(-globalCtx->msgCtx.unk1206C); ret = true; } else { @@ -905,7 +905,7 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { func_808F35D8(this, globalCtx); if (Interface_HasEmptyBottle()) { this->actionFunc = func_808F3B40; - Actor_PickUp(&this->actor, globalCtx, 0x92, 500.0f, 100.0f); + Actor_PickUp(&this->actor, globalCtx, GI_MILK, 500.0f, 100.0f); ret = true; } else { func_800E8EA0(globalCtx, &this->actor, 0x347F); @@ -1011,7 +1011,7 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { if (gSaveContext.rupees >= globalCtx->msgCtx.unk1206C) { if (Interface_HasEmptyBottle()) { this->actionFunc = func_808F3C40; - Actor_PickUp(&this->actor, globalCtx, 0x92, 500.0f, 100.0f); + Actor_PickUp(&this->actor, globalCtx, GI_MILK, 500.0f, 100.0f); func_801159EC(-globalCtx->msgCtx.unk1206C); ret = true; } else { @@ -1109,7 +1109,7 @@ s32 func_808F4414(GlobalContext* globalCtx, EnIn* this, s32 arg2) { func_808F35D8(this, globalCtx); if (Interface_HasEmptyBottle()) { this->actionFunc = func_808F3B40; - Actor_PickUp(&this->actor, globalCtx, 0x92, 500.0f, 100.0f); + Actor_PickUp(&this->actor, globalCtx, GI_MILK, 500.0f, 100.0f); ret = true; } else { func_800E8EA0(globalCtx, &this->actor, 0x34A2); diff --git a/src/overlays/actors/ovl_En_Ishi/z_en_ishi.c b/src/overlays/actors/ovl_En_Ishi/z_en_ishi.c index 971f8eb705..5e7292df5b 100644 --- a/src/overlays/actors/ovl_En_Ishi/z_en_ishi.c +++ b/src/overlays/actors/ovl_En_Ishi/z_en_ishi.c @@ -511,9 +511,9 @@ void func_8095E660(EnIshi* this, GlobalContext* globalCtx) { if ((this->actor.xzDistToPlayer < 90.0f) && (sp30 == 0)) { if (sp38 == 1) { - Actor_PickUp(&this->actor, globalCtx, 0, 80.0f, 20.0f); + Actor_PickUp(&this->actor, globalCtx, GI_NONE, 80.0f, 20.0f); } else { - Actor_PickUp(&this->actor, globalCtx, 0, 50.0f, 10.0f); + Actor_PickUp(&this->actor, globalCtx, GI_NONE, 50.0f, 10.0f); } } } diff --git a/src/overlays/actors/ovl_En_Kendo_Js/z_en_kendo_js.c b/src/overlays/actors/ovl_En_Kendo_Js/z_en_kendo_js.c index 2cd8dd5e90..4eb4ffdc9c 100644 --- a/src/overlays/actors/ovl_En_Kendo_Js/z_en_kendo_js.c +++ b/src/overlays/actors/ovl_En_Kendo_Js/z_en_kendo_js.c @@ -5,8 +5,10 @@ */ #include "z_en_kendo_js.h" +#include "overlays/actors/ovl_En_Maruta/z_en_maruta.h" +#include "objects/object_js/object_js.h" -#define FLAGS 0x0A000019 +#define FLAGS (ACTOR_FLAG_1 | ACTOR_FLAG_8 | ACTOR_FLAG_10 | ACTOR_FLAG_2000000 | ACTOR_FLAG_8000000) #define THIS ((EnKendoJs*)thisx) @@ -15,7 +17,26 @@ void EnKendoJs_Destroy(Actor* thisx, GlobalContext* globalCtx); void EnKendoJs_Update(Actor* thisx, GlobalContext* globalCtx); void EnKendoJs_Draw(Actor* thisx, GlobalContext* globalCtx); -#if 0 +void func_80B26538(EnKendoJs* this); +void func_80B2654C(EnKendoJs* this, GlobalContext* globalCtx); +void func_80B26AE8(EnKendoJs* this); +void func_80B26AFC(EnKendoJs* this, GlobalContext* globalCtx); +void func_80B2701C(EnKendoJs* this); +void func_80B27030(EnKendoJs* this, GlobalContext* globalCtx); +void func_80B2714C(EnKendoJs* this); +void func_80B27188(EnKendoJs* this, GlobalContext* globalCtx); +void func_80B273D0(EnKendoJs* this); +void func_80B2740C(EnKendoJs* this, GlobalContext* globalCtx); +void func_80B274BC(EnKendoJs* this, GlobalContext* globalCtx); +void func_80B276C4(EnKendoJs* this); +void func_80B276D8(EnKendoJs* this, GlobalContext* globalCtx); +void func_80B27760(EnKendoJs* this); +void func_80B27774(EnKendoJs* this, GlobalContext* globalCtx); +void func_80B2783C(EnKendoJs* this, GlobalContext* globalCtx); +s32 func_80B278C4(GlobalContext* globalCtx, Vec3f arg1); +void func_80B279F0(EnKendoJs* this, GlobalContext* globalCtx, s32 arg2); +void func_80B27A90(EnKendoJs* this, GlobalContext* globalCtx); + const ActorInit En_Kendo_Js_InitVars = { ACTOR_EN_KENDO_JS, ACTORCAT_NPC, @@ -28,86 +49,718 @@ const ActorInit En_Kendo_Js_InitVars = { (ActorFunc)EnKendoJs_Draw, }; -// static ColliderCylinderInit sCylinderInit = { -static ColliderCylinderInit D_80B27C30 = { - { COLTYPE_NONE, AT_NONE, AC_NONE, OC1_ON | OC1_TYPE_ALL, OC2_TYPE_2, COLSHAPE_CYLINDER, }, - { ELEMTYPE_UNK0, { 0x00000000, 0x00, 0x00 }, { 0xF7CFFFFF, 0x00, 0x00 }, TOUCH_NONE | TOUCH_SFX_NORMAL, BUMP_NONE, OCELEM_ON, }, +static ColliderCylinderInit sCylinderInit = { + { + COLTYPE_NONE, + AT_NONE, + AC_NONE, + OC1_ON | OC1_TYPE_ALL, + OC2_TYPE_2, + COLSHAPE_CYLINDER, + }, + { + ELEMTYPE_UNK0, + { 0x00000000, 0x00, 0x00 }, + { 0xF7CFFFFF, 0x00, 0x00 }, + TOUCH_NONE | TOUCH_SFX_NORMAL, + BUMP_NONE, + OCELEM_ON, + }, { 18, 30, 0, { 0, 0, 0 } }, }; -// sColChkInfoInit -static CollisionCheckInfoInit2 D_80B27C5C = { 0, 0, 0, 0, MASS_IMMOVABLE }; +static CollisionCheckInfoInit2 sColChkInfoInit = { 0, 0, 0, 0, MASS_IMMOVABLE }; -#endif +static AnimationInfo sAnimations[] = { + { &object_js_Anim_000C7C, 1.0f, 0.0f, 0.0f, 0, -8.0f }, { &object_js_Anim_000F4C, 1.0f, 0.0f, 0.0f, 0, -8.0f }, + { &object_js_Anim_00016C, 1.0f, 0.0f, 0.0f, 0, -8.0f }, { &object_js_Anim_0003DC, 1.0f, 0.0f, 0.0f, 2, -8.0f }, + { &object_js_Anim_000AD4, 1.0f, 0.0f, 0.0f, 0, -8.0f }, +}; -extern ColliderCylinderInit D_80B27C30; -extern CollisionCheckInfoInit2 D_80B27C5C; +s16 D_80B27CE0[][3] = { + { 0x2731, 0x2732, 0x2733 }, + { 0x2734, 0x2735, 0x2736 }, + { 0x2737, 0x2738, 0x2739 }, +}; -extern UNK_TYPE D_0600016C; -extern UNK_TYPE D_06000F4C; +s16 D_80B27CF4[][3] = { + { 0x2710, 0x2712, 0x2714 }, + { 0x2711, 0x2713, 0x2715 }, +}; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kendo_Js/EnKendoJs_Init.s") +s16 D_80B27D00[] = { + 0x271C, 0x271E, 0x2720, 0x2722, 0x2724, 0x2726, 0x2728, +}; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kendo_Js/EnKendoJs_Destroy.s") +s16 D_80B27D10[] = { + 0x271B, 0x271D, 0x271F, 0x2721, 0x2723, 0x2725, 0x2727, +}; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kendo_Js/func_80B26538.s") +void EnKendoJs_Init(Actor* thisx, GlobalContext* globalCtx) { + s32 pad; + EnKendoJs* this = THIS; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kendo_Js/func_80B2654C.s") + ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 36.0f); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kendo_Js/func_80B26758.s") + Collider_InitCylinder(globalCtx, &this->collider); + Collider_SetCylinder(globalCtx, &this->collider, &this->actor, &sCylinderInit); + CollisionCheck_SetInfo2(&this->actor.colChkInfo, DamageTable_Get(0x16), &sColChkInfoInit); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kendo_Js/func_80B269A4.s") + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &object_js_Skel_006990, &object_js_Anim_000F4C, this->jointTable, + this->morphTable, 13); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kendo_Js/func_80B26AE8.s") + if ((CURRENT_DAY == 3) && !((gSaveContext.time <= CLOCK_TIME(23, 0)) && (gSaveContext.time >= CLOCK_TIME(6, 0)))) { + if (ENKENDOJS_GET_FF(&this->actor) != ENKENDOJS_FF_1) { + Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_KANBAN, this->actor.home.pos.x, + this->actor.home.pos.y, this->actor.home.pos.z - 10.0f, this->actor.home.rot.x, + this->actor.home.rot.y, this->actor.home.rot.z, 0x10); + Actor_MarkForDeath(&this->actor); + } else { + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, 4); + } + } else if (ENKENDOJS_GET_FF(&this->actor) == ENKENDOJS_FF_1) { + Actor_MarkForDeath(&this->actor); + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kendo_Js/func_80B26AFC.s") + Actor_UpdateBgCheckInfo(globalCtx, &this->actor, 0.0f, 0.0f, 0.0f, 4); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kendo_Js/func_80B26BF8.s") + if (ENKENDOJS_GET_FF(&this->actor) != ENKENDOJS_FF_1) { + Path* path = &globalCtx->setupPathList[ENKENDOJS_GET_FF00(&this->actor)]; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kendo_Js/func_80B26EB4.s") + this->unk_274 = Lib_SegmentedToVirtual(path->points); + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kendo_Js/func_80B26F14.s") + this->actor.flags &= ~ACTOR_FLAG_1; + this->actor.focus.pos = this->actor.world.pos; + this->actor.focus.pos.y += 30.0f; + this->actor.child = NULL; + this->unk_28A = 0; + this->unk_28C = 0; + this->unk_28E = 0; + this->unk_286 = 0; + func_80B26538(this); +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kendo_Js/func_80B26F6C.s") +void EnKendoJs_Destroy(Actor* thisx, GlobalContext* globalCtx) { + EnKendoJs* this = THIS; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kendo_Js/func_80B2701C.s") + Collider_DestroyCylinder(globalCtx, &this->collider); + gSaveContext.weekEventReg[82] &= (u8)~8; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kendo_Js/func_80B27030.s") +void func_80B26538(EnKendoJs* this) { + this->actionFunc = func_80B2654C; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kendo_Js/func_80B2714C.s") +void func_80B2654C(EnKendoJs* this, GlobalContext* globalCtx) { + s32 phi_v0; + s32 sp30; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kendo_Js/func_80B27188.s") + if (Actor_ProcessTalkRequest(&this->actor, &globalCtx->state) != 0) { + if (CURRENT_DAY != 0) { + sp30 = CURRENT_DAY - 1; + } else { + sp30 = 0; + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kendo_Js/func_80B273D0.s") + if (ENKENDOJS_GET_FF(&this->actor) == ENKENDOJS_FF_1) { + func_801518B0(globalCtx, 0x273C, &this->actor); + this->unk_288 = 0x273C; + } else if (gSaveContext.playerForm != PLAYER_FORM_HUMAN) { + switch (gSaveContext.playerForm) { + case PLAYER_FORM_DEKU: + phi_v0 = 0; + break; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kendo_Js/func_80B2740C.s") + case PLAYER_FORM_GORON: + phi_v0 = 1; + break; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kendo_Js/func_80B274BC.s") + case PLAYER_FORM_ZORA: + phi_v0 = 2; + break; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kendo_Js/func_80B276C4.s") + default: + phi_v0 = 0; + break; + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kendo_Js/func_80B276D8.s") + func_801518B0(globalCtx, D_80B27CE0[phi_v0][sp30], &this->actor); + this->unk_288 = D_80B27CE0[phi_v0][sp30]; + } else if ((Player_GetMask(globalCtx) != PLAYER_MASK_NONE) && (Player_GetMask(globalCtx) < PLAYER_MASK_GIANT)) { + u16 sp2E = Player_GetMask(globalCtx) + 0x273C; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kendo_Js/func_80B27760.s") + if (0) {} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kendo_Js/func_80B27774.s") + func_801518B0(globalCtx, sp2E, &this->actor); + this->unk_288 = sp2E; + } else { + if (this->unk_28A == 0) { + this->unk_28A = 1; + phi_v0 = 0; + } else { + phi_v0 = 1; + } + func_801518B0(globalCtx, D_80B27CF4[phi_v0][sp30], &this->actor); + this->unk_288 = D_80B27CF4[phi_v0][sp30]; + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kendo_Js/func_80B2783C.s") + func_80B26AE8(this); + } else { + func_800B8614(&this->actor, globalCtx, 100.0f); + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kendo_Js/func_80B27880.s") +void func_80B26758(EnKendoJs* this, GlobalContext* globalCtx) { + if (func_80147624(globalCtx) && (this->unk_288 == 0x2716)) { + switch (globalCtx->msgCtx.choiceIndex) { + case 0: + if (CUR_EQUIP_VALUE_VOID(EQUIP_SWORD) == EQUIP_SWORD) { + play_sound(NA_SE_SY_ERROR); + func_801518B0(globalCtx, 0x272C, &this->actor); + this->unk_288 = 0x272C; + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, 2); + } else if (gSaveContext.rupees < globalCtx->msgCtx.unk1206C) { + play_sound(NA_SE_SY_ERROR); + func_801518B0(globalCtx, 0x2718, &this->actor); + this->unk_288 = 0x2718; + } else { + func_8019F208(); + func_801159EC(-globalCtx->msgCtx.unk1206C); + func_801518B0(globalCtx, 0x2719, &this->actor); + this->unk_288 = 0x2719; + } + break; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kendo_Js/func_80B278C4.s") + case 1: + if (CUR_EQUIP_VALUE_VOID(EQUIP_SWORD) == EQUIP_SWORD) { + play_sound(NA_SE_SY_ERROR); + func_801518B0(globalCtx, 0x272C, &this->actor); + this->unk_288 = 0x272C; + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, 2); + } else if (gSaveContext.rupees < globalCtx->msgCtx.unk12070) { + play_sound(NA_SE_SY_ERROR); + func_801518B0(globalCtx, 0x2718, &this->actor); + this->unk_288 = 0x2718; + } else { + func_8019F208(); + func_801159EC(-globalCtx->msgCtx.unk12070); + func_801518B0(globalCtx, 0x273A, &this->actor); + this->unk_288 = 0x273A; + } + break; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kendo_Js/func_80B279AC.s") + case 2: + func_8019F230(); + func_801518B0(globalCtx, 0x2717, &this->actor); + this->unk_288 = 0x2717; + } + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kendo_Js/func_80B279F0.s") +void func_80B269A4(EnKendoJs* this, GlobalContext* globalCtx) { + Player* player = GET_PLAYER(globalCtx); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kendo_Js/func_80B27A90.s") + if (!func_80147624(globalCtx)) { + return; + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kendo_Js/EnKendoJs_Update.s") + switch (this->unk_288) { + case 0x2710: + case 0x2711: + case 0x2712: + case 0x2713: + case 0x2714: + case 0x2715: + func_801518B0(globalCtx, 0x2716, &this->actor); + this->unk_288 = 0x2716; + break; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kendo_Js/func_80B27B54.s") + case 0x2719: + func_801477B4(globalCtx); + player->stateFlags1 |= 0x20; + func_80B2701C(this); + break; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kendo_Js/func_80B27B8C.s") + case 0x271A: + func_801477B4(globalCtx); + func_80B2714C(this); + break; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Kendo_Js/EnKendoJs_Draw.s") + case 0x273A: + func_801518B0(globalCtx, 0x273B, &this->actor); + this->unk_288 = 0x273B; + break; + + case 0x273B: + func_801477B4(globalCtx); + func_80112AFC(globalCtx); + player->stateFlags1 |= 0x20; + func_80B273D0(this); + break; + + case 0x272D: + func_801477B4(globalCtx); + gSaveContext.minigameState = 3; + func_80B276C4(this); + func_80B276D8(this, globalCtx); + break; + } +} + +void func_80B26AE8(EnKendoJs* this) { + this->actionFunc = func_80B26AFC; +} + +void func_80B26AFC(EnKendoJs* this, GlobalContext* globalCtx) { + Player* player = GET_PLAYER(globalCtx); + + switch (Message_GetState(&globalCtx->msgCtx)) { + case 4: + func_80B26758(this, globalCtx); + break; + + case 5: + func_80B269A4(this, globalCtx); + break; + + case 6: + if (func_80147624(globalCtx)) { + if (this->unk_288 == 0x272C) { + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, 3); + } + + if ((this->unk_288 == 0x272E) || (this->unk_288 == 0x272F) || (this->unk_288 == 0x2730)) { + gSaveContext.minigameState = 3; + } + + player->stateFlags1 &= ~0x20; + func_80B26538(this); + } + + case 0: + case 1: + case 2: + case 3: + break; + } +} + +s32 func_80B26BF8(EnKendoJs* this, GlobalContext* globalCtx) { + Player* player = GET_PLAYER(globalCtx); + + switch (this->unk_284) { + case 0: + if (func_80122FCC(globalCtx)) { + return 0; + } + + if ((player->swordState != 0) || (player->stateFlags3 & 0x8000000) || (player->stateFlags2 & 0x80000)) { + return 1; + } + break; + + case 1: + if ((player->stateFlags3 & 0x8000000)) { + return 0; + } + + if ((player->swordState != 0) || (player->stateFlags2 & 0x80000)) { + return 1; + } + break; + + case 2: + if (func_80122F9C(globalCtx)) { + return 0; + } + + if ((player->swordState != 0) || (player->stateFlags3 & 0x8000000) || (player->stateFlags2 & 0x80000)) { + return 1; + } + this->unk_28E = 0; + break; + + case 3: + if ((this->unk_28E == 1) && ((player->swordAnimation == 4) || (player->swordAnimation == 6))) { + this->unk_28E = 0; + return 0; + } + + if ((this->unk_28E == 1) || (player->stateFlags3 & 0x8000000) || (player->stateFlags2 & 0x80000)) { + this->unk_28E = 0; + return 1; + } + break; + + case 4: + if ((this->unk_28E == 1) && ((player->swordAnimation == 0) || (player->swordAnimation == 2))) { + this->unk_28E = 0; + return 0; + } + + if ((this->unk_28E == 1) || (player->stateFlags3 & 0x8000000) || (player->stateFlags2 & 0x80000)) { + this->unk_28E = 0; + return 1; + } + break; + + case 5: + if ((this->unk_28E == 1) && (player->swordAnimation == 12)) { + this->unk_28E = 0; + return 0; + } + + if ((this->unk_28E == 1) || (player->stateFlags3 & 0x8000000) || (player->stateFlags2 & 0x80000)) { + this->unk_28E = 0; + return 1; + } + break; + + case 6: + if ((this->unk_28E == 1) && ((player->swordAnimation == 17) || (player->swordAnimation == 20))) { + this->unk_28E = 0; + return 0; + } + + if ((this->unk_28E == 1) || (player->stateFlags3 & 0x8000000) || (player->stateFlags2 & 0x80000)) { + this->unk_28E = 0; + return 1; + } + break; + } + return 2; +} + +void func_80B26EB4(EnKendoJs* this, GlobalContext* globalCtx) { + func_801518B0(globalCtx, D_80B27D00[this->unk_284], &this->actor); + this->unk_288 = D_80B27D00[this->unk_284]; + this->unk_284++; +} + +void func_80B26F14(EnKendoJs* this, GlobalContext* globalCtx) { + func_801518B0(globalCtx, D_80B27D10[this->unk_284], &this->actor); + this->unk_288 = D_80B27D10[this->unk_284]; +} + +s32 func_80B26F6C(EnKendoJs* this, GlobalContext* globalCtx) { + Player* player = GET_PLAYER(globalCtx); + + switch (this->unk_288) { + case 0x271D: + if (func_80124190(player)) { + func_801518B0(globalCtx, 0x272A, &this->actor); + this->unk_288 = 0x272A; + return true; + } + break; + + case 0x2721: + if (this->unk_292 != 0) { + func_801518B0(globalCtx, 0x272B, &this->actor); + this->unk_288 = 0x272B; + return true; + } + break; + } + return false; +} + +void func_80B2701C(EnKendoJs* this) { + this->actionFunc = func_80B27030; +} + +void func_80B27030(EnKendoJs* this, GlobalContext* globalCtx) { + Player* player = GET_PLAYER(globalCtx); + Vec3f sp20 = this->actor.world.pos; + + sp20.z += 200.0f; + + if (func_80B278C4(globalCtx, sp20)) { + this->actor.flags |= ACTOR_FLAG_10000; + if (Actor_ProcessTalkRequest(&this->actor, &globalCtx->state)) { + this->actor.flags &= ~ACTOR_FLAG_10000; + player->stateFlags1 &= ~0x20; + func_80B279F0(this, globalCtx, 0); + func_801518B0(globalCtx, 0x271A, &this->actor); + this->unk_288 = 0x271A; + func_80B26AE8(this); + } else { + func_800B8614(&this->actor, globalCtx, 800.0f); + } + } +} + +void func_80B2714C(EnKendoJs* this) { + gSaveContext.weekEventReg[82] |= 8; + this->unk_28C = 1; + this->unk_290 = 0; + this->unk_284 = 0; + this->unk_286 = 1; + this->actionFunc = func_80B27188; +} + +void func_80B27188(EnKendoJs* this, GlobalContext* globalCtx) { + Player* player = GET_PLAYER(globalCtx); + + if ((Message_GetState(&globalCtx->msgCtx) == 5) && func_80147624(globalCtx)) { + if (this->unk_288 == 0x2729) { + func_80B26F14(this, globalCtx); + } else if (!func_80B26F6C(this, globalCtx)) { + if (this->skelAnime.animation == &object_js_Anim_00016C) { + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, 3); + } + this->unk_286 = 2; + func_801477B4(globalCtx); + player->stateFlags1 &= ~0x20; + } + } else if (this->unk_286 == 2) { + this->unk_286 = 1; + } + + if (this->unk_286 == 1) { + switch (func_80B26BF8(this, globalCtx)) { + case 0: + this->unk_286 = 0; + Actor_PlaySfxAtPos(&this->actor, NA_SE_SY_TRE_BOX_APPEAR); + player->stateFlags1 |= 0x20; + func_80B26EB4(this, globalCtx); + break; + + case 1: + Actor_PlaySfxAtPos(&this->actor, NA_SE_SY_ERROR); + this->unk_286 = 0; + player->stateFlags1 |= 0x20; + func_801518B0(globalCtx, 0x2729, &this->actor); + this->unk_288 = 0x2729; + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, 2); + break; + + default: + if (this->unk_28C == 0) { + this->unk_290++; + if (this->unk_290 == 30) { + this->unk_290 = 0; + func_80B279F0(this, globalCtx, 0); + } + } + break; + } + + if ((this->skelAnime.animation == &object_js_Anim_0003DC) && + Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, 1); + } + + if (this->unk_284 == 7) { + gSaveContext.weekEventReg[82] &= (u8)~8; + func_80B26AE8(this); + } + } +} + +void func_80B273D0(EnKendoJs* this) { + gSaveContext.weekEventReg[82] |= 8; + this->unk_290 = 120; + this->unk_284 = 0; + this->unk_286 = 1; + this->actionFunc = func_80B2740C; +} + +void func_80B2740C(EnKendoJs* this, GlobalContext* globalCtx) { + Player* player = GET_PLAYER(globalCtx); + Vec3f sp18 = this->actor.world.pos; + + sp18.z += 300.0f; + + if (func_80B278C4(globalCtx, sp18)) { + this->unk_28C = 0; + player->stateFlags1 &= ~0x20; + this->actionFunc = func_80B274BC; + } +} + +void func_80B274BC(EnKendoJs* this, GlobalContext* globalCtx) { + Player* player = GET_PLAYER(globalCtx); + + if (this->unk_290 >= 140) { + if (this->unk_284 == 5) { + if (gSaveContext.minigameScore == 30) { + func_801518B0(globalCtx, 0x272D, &this->actor); + this->unk_288 = 0x272D; + } else { + func_801518B0(globalCtx, 0x272E, &this->actor); + this->unk_288 = 0x272E; + } + player->stateFlags1 |= 0x20; + gSaveContext.weekEventReg[82] &= (u8)~8; + func_80B26AE8(this); + return; + } + + play_sound(NA_SE_SY_FOUND); + func_80B279F0(this, globalCtx, ((Rand_Next() & 0xFF) % 3) + 1); + func_80B279F0(this, globalCtx, ((Rand_Next() & 0xFF) % 3) + 4); + this->unk_290 = 0; + this->unk_284++; + } else if (this->unk_290 == 120) { + func_80B27A90(this, globalCtx); + this->unk_290++; + } else { + this->unk_290++; + } + + if (this->unk_28E == 1) { + if ((player->swordAnimation == 17) || (player->swordAnimation == 20)) { + globalCtx->interfaceCtx.unk_25C = 3; + if (gSaveContext.minigameScore >= 27) { + player->stateFlags1 |= 0x20; + } + } else if (player->swordAnimation == 12) { + globalCtx->interfaceCtx.unk_25C = 2; + } else { + globalCtx->interfaceCtx.unk_25C = 1; + } + Actor_PlaySfxAtPos(&this->actor, NA_SE_SY_TRE_BOX_APPEAR); + this->unk_28E = 0; + } + func_80B2783C(this, globalCtx); +} + +void func_80B276C4(EnKendoJs* this) { + this->actionFunc = func_80B276D8; +} + +void func_80B276D8(EnKendoJs* this, GlobalContext* globalCtx) { + if (Actor_HasParent(&this->actor, globalCtx)) { + this->actor.parent = NULL; + func_80B27760(this); + } else if (!(gSaveContext.weekEventReg[63] & 0x20)) { + Actor_PickUp(&this->actor, globalCtx, GI_HEART_PIECE, 800.0f, 100.0f); + } else { + Actor_PickUp(&this->actor, globalCtx, GI_RUPEE_RED, 800.0f, 100.0f); + } +} + +void func_80B27760(EnKendoJs* this) { + this->actionFunc = func_80B27774; +} + +void func_80B27774(EnKendoJs* this, GlobalContext* globalCtx) { + Player* player = GET_PLAYER(globalCtx); + + if (Actor_ProcessTalkRequest(&this->actor, &globalCtx->state)) { + if (!(gSaveContext.weekEventReg[63] & 0x20)) { + gSaveContext.weekEventReg[63] |= 0x20; + func_801518B0(globalCtx, 0x272F, &this->actor); + this->unk_288 = 0x272F; + } else { + func_801518B0(globalCtx, 0x2730, &this->actor); + this->unk_288 = 0x2730; + } + func_80B26AE8(this); + player->stateFlags1 &= ~0x20; + } else { + func_800B85E0(&this->actor, globalCtx, 1000.0f, -1); + } +} + +void func_80B2783C(EnKendoJs* this, GlobalContext* globalCtx) { + if (this->actor.cutscene != -1) { + func_800DFB14(globalCtx->cameraPtrs[MAIN_CAM], ActorCutscene_GetCutscene(this->actor.cutscene)->unk4); + } +} + +void func_80B27880(EnKendoJs* this, GlobalContext* globalCtx) { + Player* player = GET_PLAYER(globalCtx); + f32 temp_f0 = this->actor.world.pos.z + 70.0f; + + if ((ENKENDOJS_GET_FF(&this->actor) != ENKENDOJS_FF_1) && (player->actor.world.pos.z < temp_f0)) { + player->actor.world.pos.z = temp_f0; + } +} + +s32 func_80B278C4(GlobalContext* globalCtx, Vec3f arg1) { + Player* player = GET_PLAYER(globalCtx); + f32 temp_f0; + f32 sp28; + s16 sp22 = Math_Vec3f_Yaw(&player->actor.world.pos, &arg1); + + temp_f0 = Math_Vec3f_DistXZ(&player->actor.world.pos, &arg1); + + if (temp_f0 < 20.0f) { + sp28 = 10.0f; + } else if (temp_f0 < 40.0f) { + sp28 = 40.0f; + } else { + sp28 = 80.0f; + } + + globalCtx->actorCtx.unk268 = 1; + func_800B6F20(globalCtx, &globalCtx->actorCtx.unk_26C, sp28, sp22); + + if (temp_f0 < 20.0f) { + return true; + } else { + return false; + } +} + +void func_80B279AC(EnKendoJs* this, GlobalContext* globalCtx) { + Collider_UpdateCylinder(&this->actor, &this->collider); + CollisionCheck_SetOC(globalCtx, &globalCtx->colChkCtx, &this->collider.base); +} + +void func_80B279F0(EnKendoJs* this, GlobalContext* globalCtx, s32 arg2) { + f32 x = this->unk_274[arg2].x; + f32 y = this->unk_274[arg2].y; + f32 z = this->unk_274[arg2].z; + + Actor_SpawnAsChild(&globalCtx->actorCtx, &this->actor, globalCtx, ACTOR_EN_MARUTA, x, y, z, 0, 0, 0, 0); + this->unk_28C++; +} + +void func_80B27A90(EnKendoJs* this, GlobalContext* globalCtx) { + Actor* actor = globalCtx->actorCtx.actorLists[ACTORCAT_PROP].first; + + while (actor != NULL) { + if (actor->id == ACTOR_EN_MARUTA) { + ((EnMaruta*)actor)->unk_220 = 1; + } + actor = actor->next; + } + + this->unk_28C = 0; +} + +void EnKendoJs_Update(Actor* thisx, GlobalContext* globalCtx) { + EnKendoJs* this = THIS; + + this->actionFunc(this, globalCtx); + + SkelAnime_Update(&this->skelAnime); + func_800E9250(globalCtx, &this->actor, &this->unk_278, &this->unk_27E, this->actor.focus.pos); + func_80B279AC(this, globalCtx); + func_80B27880(this, globalCtx); +} + +s32 EnKendoJs_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, + Actor* thisx) { + EnKendoJs* this = THIS; + + if (limbIndex == 12) { + rot->y -= this->unk_278.y; + } + return false; +} + +void EnKendoJs_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) { +} + +void EnKendoJs_Draw(Actor* thisx, GlobalContext* globalCtx) { + EnKendoJs* this = THIS; + + func_8012C28C(globalCtx->state.gfxCtx); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + EnKendoJs_OverrideLimbDraw, EnKendoJs_PostLimbDraw, &this->actor); +} diff --git a/src/overlays/actors/ovl_En_Kendo_Js/z_en_kendo_js.h b/src/overlays/actors/ovl_En_Kendo_Js/z_en_kendo_js.h index 33da3ea09e..2820aac217 100644 --- a/src/overlays/actors/ovl_En_Kendo_Js/z_en_kendo_js.h +++ b/src/overlays/actors/ovl_En_Kendo_Js/z_en_kendo_js.h @@ -7,11 +7,29 @@ struct EnKendoJs; typedef void (*EnKendoJsActionFunc)(struct EnKendoJs*, GlobalContext*); +#define ENKENDOJS_GET_FF(thisx) ((thisx)->params & 0xFF) +#define ENKENDOJS_GET_FF00(thisx) (((thisx)->params & 0xFF00) >> 8) + +#define ENKENDOJS_FF_1 1 + typedef struct EnKendoJs { /* 0x0000 */ Actor actor; - /* 0x0144 */ char unk_144[0x90]; + /* 0x0144 */ ColliderCylinder collider; + /* 0x0190 */ SkelAnime skelAnime; /* 0x01D4 */ EnKendoJsActionFunc actionFunc; - /* 0x01D8 */ char unk_1D8[0xBC]; + /* 0x01D8 */ Vec3s jointTable[13]; + /* 0x0226 */ Vec3s morphTable[13]; + /* 0x0274 */ Vec3s* unk_274; + /* 0x0278 */ Vec3s unk_278; + /* 0x027E */ Vec3s unk_27E; + /* 0x0284 */ s16 unk_284; + /* 0x0286 */ s16 unk_286; + /* 0x0288 */ s16 unk_288; + /* 0x028A */ s16 unk_28A; + /* 0x028C */ s16 unk_28C; + /* 0x028E */ s16 unk_28E; + /* 0x0290 */ s16 unk_290; + /* 0x0292 */ u8 unk_292; } EnKendoJs; // size = 0x294 extern const ActorInit En_Kendo_Js_InitVars; diff --git a/src/overlays/actors/ovl_En_Maruta/z_en_maruta.h b/src/overlays/actors/ovl_En_Maruta/z_en_maruta.h index df53fbe499..0fc546e4d0 100644 --- a/src/overlays/actors/ovl_En_Maruta/z_en_maruta.h +++ b/src/overlays/actors/ovl_En_Maruta/z_en_maruta.h @@ -10,7 +10,8 @@ typedef void (*EnMarutaActionFunc)(struct EnMaruta*, GlobalContext*); typedef struct EnMaruta { /* 0x0000 */ Actor actor; /* 0x0144 */ EnMarutaActionFunc actionFunc; - /* 0x0148 */ char unk_148[0xDC]; + /* 0x0148 */ char unk_148[0xD8]; + /* 0x0220 */ s16 unk_220; } EnMaruta; // size = 0x224 extern const ActorInit En_Maruta_InitVars; diff --git a/src/overlays/actors/ovl_En_Zog/z_en_zog.c b/src/overlays/actors/ovl_En_Zog/z_en_zog.c index edc5ad595c..3fd7f24b88 100644 --- a/src/overlays/actors/ovl_En_Zog/z_en_zog.c +++ b/src/overlays/actors/ovl_En_Zog/z_en_zog.c @@ -882,7 +882,7 @@ void func_80B94E34(EnZog* this, GlobalContext* globalCtx) { } if (ABS_ALT(this->actor.yawTowardsPlayer - this->actor.world.rot.y) > 0x5000) { - Actor_PickUp(&this->actor, globalCtx, 0, 60.0f, 40.0f); + Actor_PickUp(&this->actor, globalCtx, GI_NONE, 60.0f, 40.0f); } if (this->unk_324 > 0) { diff --git a/src/overlays/actors/ovl_Obj_Flowerpot/z_obj_flowerpot.c b/src/overlays/actors/ovl_Obj_Flowerpot/z_obj_flowerpot.c index acebaef134..0365f3420b 100644 --- a/src/overlays/actors/ovl_Obj_Flowerpot/z_obj_flowerpot.c +++ b/src/overlays/actors/ovl_Obj_Flowerpot/z_obj_flowerpot.c @@ -518,7 +518,7 @@ void func_80A1C838(ObjFlowerpot* this, GlobalContext* globalCtx) { s16 temp_v0_3 = this->actor.yawTowardsPlayer - GET_PLAYER(globalCtx)->actor.world.rot.y; if (ABS_ALT(temp_v0_3) >= 0x5556) { - Actor_PickUp(&this->actor, globalCtx, 0, 36.0f, 30.0f); + Actor_PickUp(&this->actor, globalCtx, GI_NONE, 36.0f, 30.0f); } } } diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 15e27b685b..6ba5842ed8 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -13330,8 +13330,8 @@ 0x80B279F0:("func_80B279F0",), 0x80B27A90:("func_80B27A90",), 0x80B27ACC:("EnKendoJs_Update",), - 0x80B27B54:("func_80B27B54",), - 0x80B27B8C:("func_80B27B8C",), + 0x80B27B54:("EnKendoJs_OverrideLimbDraw",), + 0x80B27B8C:("EnKendoJs_PostLimbDraw",), 0x80B27BA4:("EnKendoJs_Draw",), 0x80B28080:("BgBotihasira_Init",), 0x80B28124:("BgBotihasira_Destroy",), diff --git a/undefined_syms.txt b/undefined_syms.txt index 9431163244..413b7d0513 100644 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -1548,13 +1548,6 @@ D_06001630 = 0x06001630; D_06004274 = 0x06004274; D_0600DEE8 = 0x0600DEE8; -// ovl_En_Kendo_Js - -D_0600016C = 0x0600016C; -D_060003DC = 0x060003DC; -D_06000F4C = 0x06000F4C; -D_06006990 = 0x06006990; - // ovl_En_Kitan D_06000CE8 = 0x06000CE8;