diff --git a/include/functions.h b/include/functions.h index 3e37fafdbe..cae98a46c2 100644 --- a/include/functions.h +++ b/include/functions.h @@ -2087,7 +2087,7 @@ void func_8010A33C(GlobalContext* globalCtx, s16 param_2); // void func_8010BEBC(void); // void func_8010BEF0(void); // void func_8010BF24(void); -s32 func_8010BF58(Actor* actor, GlobalContext* globalCtx, s32* param_2, s32 param_3, s32* param_4); +s32 func_8010BF58(Actor* actor, GlobalContext* globalCtx, s32* param_3, s32 param_4, s32* param_5); // void Nmi_Init(void); // void Nmi_SetPrenmiStart(void); // s32 Nmi_GetPrenmiHasStarted(void); @@ -2694,7 +2694,7 @@ s32 func_8013B6B0(Path* path, UNK_PTR arg1, s32* arg2, s32 arg3, s32 arg4, s32* void func_8013B878(GlobalContext* globalCtx, Path* path, s32 arg2, Vec3f* arg3); Path* func_8013BB34(GlobalContext* globalCtx, u8 arg1, s32 arg2); Actor* func_8013BB7C(Actor* actor, GlobalContext* globalCtx, s32 actorCategory, s32 actorId); -UNK_TYPE func_8013BC6C(SkelAnime* skelAnime, ActorAnimationEntryS* arg1, s32 arg2); +s32 func_8013BC6C(SkelAnime* skelAnime, ActorAnimationEntryS* arg1, s32 arg2); // void func_8013BD40(void); // void func_8013BEDC(void); // void func_8013C068(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); diff --git a/include/z64item.h b/include/z64item.h index 3e7095efb7..80002880a7 100644 --- a/include/z64item.h +++ b/include/z64item.h @@ -31,6 +31,7 @@ typedef enum { /* 0x14 */ ITEM_POTION_GREEN, /* 0x15 */ ITEM_POTION_BLUE, /* 0x16 */ ITEM_FAIRY, + /* 0x17 */ ITEM_DEKU_PRINCESS, /* 0x1E */ ITEM_MUSHROOM = 0x1E, /* 0x38 */ ITEM_MASK_ALL_NIGHT = 0x38, /* 0x3A */ ITEM_MASK_KEATON = 0x3A, diff --git a/spec b/spec index 89684f63bd..5d50fef94f 100644 --- a/spec +++ b/spec @@ -3045,8 +3045,7 @@ beginseg name "ovl_En_Dnq" compress include "build/src/overlays/actors/ovl_En_Dnq/z_en_dnq.o" - include "build/data/ovl_En_Dnq/ovl_En_Dnq.data.o" - include "build/data/ovl_En_Dnq/ovl_En_Dnq.reloc.o" + include "build/src/overlays/actors/ovl_En_Dnq/ovl_En_Dnq_reloc.o" endseg beginseg diff --git a/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c b/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c index 56dd93a6de..e553ea0f3b 100644 --- a/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c +++ b/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c @@ -1,3 +1,9 @@ +/* + * File: z_en_dnq.c + * Overlay: ovl_En_Dnq + * Description: Deku King + */ + #include "z_en_dnq.h" #define FLAGS 0x00000009 @@ -9,7 +15,31 @@ void EnDnq_Destroy(Actor* thisx, GlobalContext* globalCtx); void EnDnq_Update(Actor* thisx, GlobalContext* globalCtx); void EnDnq_Draw(Actor* thisx, GlobalContext* globalCtx); -#if 0 +void func_80A52FB8(EnDnq* this, GlobalContext* globalCtx); + +extern AnimationHeader D_060006F0; +extern AnimationHeader D_06000BF8; +extern AnimationHeader D_06001100; +extern AnimationHeader D_06001AEC; +extern AnimationHeader D_06002690; +extern AnimationHeader D_06003408; +extern AnimationHeader D_06003DBC; +extern AnimationHeader D_060047B8; +extern AnimationHeader D_06004EA0; +extern AnimationHeader D_06005284; +extern AnimationHeader D_06005A14; +extern AnimationHeader D_06005E18; +extern AnimationHeader D_06006984; +extern AnimationHeader D_06007528; +extern AnimationHeader D_06008328; +extern FlexSkeletonHeader D_0600EB48; +extern AnimationHeader D_0600F504; + +static s32 D_80A53400[] = { + 0x00120100, 0x150E0899, 0x0C120F08, 0x9A0C0F08, 0x9B0C0F08, 0x9C0C1112, 0x01100E08, 0x980C1000, 0x00120200, + 0x0C0E089D, 0x0C0F089E, 0x0C111202, 0x100E089F, 0x0C100000, 0x0E08A10C, 0x0F08A20C, 0x10000000, +}; + const ActorInit En_Dnq_InitVars = { ACTOR_EN_DNQ, ACTORCAT_NPC, @@ -22,55 +52,424 @@ const ActorInit En_Dnq_InitVars = { (ActorFunc)EnDnq_Draw, }; -// static ColliderCylinderInit sCylinderInit = { -static ColliderCylinderInit D_80A53464 = { - { COLTYPE_HIT1, AT_NONE, AC_ON | AC_TYPE_PLAYER, OC1_ON | OC1_TYPE_ALL, OC2_TYPE_1, COLSHAPE_CYLINDER, }, - { ELEMTYPE_UNK1, { 0x00000000, 0x00, 0x00 }, { 0xF7CFFFFF, 0x00, 0x00 }, TOUCH_NONE | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, }, +static ColliderCylinderInit sCylinderInit = { + { + COLTYPE_HIT1, + AT_NONE, + AC_ON | AC_TYPE_PLAYER, + OC1_ON | OC1_TYPE_ALL, + OC2_TYPE_1, + COLSHAPE_CYLINDER, + }, + { + ELEMTYPE_UNK1, + { 0x00000000, 0x00, 0x00 }, + { 0xF7CFFFFF, 0x00, 0x00 }, + TOUCH_NONE | TOUCH_SFX_NORMAL, + BUMP_ON, + OCELEM_ON, + }, { 34, 80, 0, { 0, 0, 0 } }, }; -// sColChkInfoInit -static CollisionCheckInfoInit2 D_80A53490 = { 1, 0, 0, 0, MASS_IMMOVABLE }; +static CollisionCheckInfoInit2 sColChkInfoInit = { 1, 0, 0, 0, MASS_IMMOVABLE }; -#endif +static ActorAnimationEntryS D_80A5349C[] = { + { &D_06008328, 1.0f, 0, -1, 0, 0 }, { &D_06008328, 1.0f, 0, -1, 0, -4 }, { &D_06007528, 1.0f, 0, -1, 2, -4 }, + { &D_060006F0, 1.0f, 0, -1, 2, 0 }, { &D_06000BF8, 1.0f, 0, -1, 0, -4 }, { &D_06002690, 0.0f, 0, -1, 2, 0 }, + { &D_06002690, 1.0f, 0, -1, 2, -4 }, { &D_06003408, 1.0f, 0, -1, 0, -4 }, { &D_06006984, 1.0f, 0, -1, 2, -4 }, + { &D_06005E18, 1.0f, 0, -1, 2, -4 }, { &D_06005A14, 1.0f, 0, -1, 2, -4 }, { &D_06005284, 1.0f, 0, -1, 2, -4 }, + { &D_06001AEC, 1.0f, 0, -1, 2, 0 }, { &D_06001100, 1.0f, 0, -1, 2, 0 }, { &D_06004EA0, 1.0f, 0, -1, 0, -4 }, + { &D_0600F504, 1.0f, 0, -1, 0, -4 }, { &D_060047B8, 1.0f, 0, -1, 0, -4 }, { &D_06003DBC, 1.0f, 0, -1, 2, -4 }, + { &D_06005A14, 1.0f, 0, -1, 0, -4 }, { &D_06003DBC, 1.0f, 0, -1, 0, -4 }, +}; -extern ColliderCylinderInit D_80A53464; -extern CollisionCheckInfoInit2 D_80A53490; +void func_80A52530(GlobalContext* globalCtx, EnDnq* this) { + func_8013A530(globalCtx, &this->actor, 10, &this->actor.focus.pos, &this->actor.world.rot, 120.0f, 480.0f, 0x38E3); +} -extern UNK_TYPE D_0600EB48; +s32 func_80A5257C(EnDnq* this, s32 arg1) { + s32 phi_v1 = false; + s32 ret = false; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Dnq/func_80A52530.s") + if ((arg1 == 0) || (arg1 == 1)) { + switch (this->unk_398) { + case 0: + case 1: + break; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Dnq/func_80A5257C.s") + default: + phi_v1 = true; + break; + } + } else if (arg1 != this->unk_398) { + phi_v1 = true; + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Dnq/func_80A52604.s") + if (phi_v1) { + this->unk_398 = arg1; + ret = func_8013BC6C(&this->skelAnime, D_80A5349C, arg1); + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Dnq/func_80A52648.s") + return ret; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Dnq/func_80A526F8.s") +void func_80A52604(EnDnq* this, GlobalContext* globalCtx) { + Collider_UpdateCylinder(&this->actor, &this->collider); + CollisionCheck_SetOC(globalCtx, &globalCtx->colChkCtx, &this->collider.base); +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Dnq/func_80A52944.s") +s32 func_80A52648(EnDnq* this, GlobalContext* globalCtx) { + s32 ret = false; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Dnq/func_80A52A78.s") + if (globalCtx->csCtx.state != 0) { + if (!(this->unk_37C & 0x20)) { + this->actor.flags &= ~1; + this->unk_1DC = 0xFF; + this->unk_37C |= 0x20; + } + func_8013AED4(&this->unk_37C, 0, 7); + ret = true; + } else { + if (this->unk_37C & 0x20) { + this->actor.flags |= 1; + this->unk_1DC = 0xFF; + this->unk_37C &= ~0x20; + func_8013AED4(&this->unk_37C, 3, 7); + } + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Dnq/func_80A52B68.s") + return ret; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Dnq/func_80A52C6C.s") +s32 func_80A526F8(EnDnq* this) { + if (this->unk_386 == 0) { + func_80A5257C(this, 8); + this->unk_38C = ((s32)(Rand_ZeroOne() * 100.0f) % 4) + 3; + this->unk_388 = 0; + this->unk_386 = 1; + } else if (func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + switch (this->unk_398) { + case 8: + if (DECR(this->unk_38C) == 0) { + func_80A5257C(this, 9); + } + break; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Dnq/func_80A52CF8.s") + case 9: + func_80A5257C(this, 10); + this->unk_38C = ((s32)(Rand_ZeroOne() * 100.0f) % 3) + 2; + break; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Dnq/func_80A52D44.s") + case 10: + if (DECR(this->unk_38C) == 0) { + this->unk_388++; + if ((this->unk_38C != 0) || (this->unk_388 < 2)) { + func_80A5257C(this, 11); + } else { + func_80A5257C(this, 17); + this->unk_38C = 4; + } + } + break; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Dnq/func_80A52DC8.s") + case 11: + func_80A5257C(this, 8); + this->unk_38C = ((s32)(Rand_ZeroOne() * 100.0f) % 4) + 3; + break; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Dnq/func_80A52FB8.s") + case 17: + if (DECR(this->unk_38C) == 0) { + this->unk_386 = 0; + } + break; + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Dnq/func_80A53038.s") + if (this->unk_386 != 0) { + this->skelAnime.animCurrentFrame = 0.0f; + } + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Dnq/EnDnq_Init.s") + this->unk_38A = 0; + return 0; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Dnq/EnDnq_Destroy.s") +s32 func_80A52944(EnDnq* this) { + s16 phi_v1 = 0; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Dnq/EnDnq_Update.s") + if (this->unk_386 == 0) { + func_80A5257C(this, 12); + this->unk_38C = 1; + this->actor.shape.rot.y = this->actor.world.rot.y; + this->unk_386 = 1; + phi_v1 = this->unk_38C * 0x2000; + this->actor.shape.rot.y += phi_v1; + } else if (func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + this->unk_386++; + if (this->unk_386 >= 6) { + func_80A5257C(this, 12); + this->unk_386 = 1; + phi_v1 = this->unk_38C * 0x2000; + } else if (this->unk_386 <= 3) { + this->unk_38C = -this->unk_38C; + this->skelAnime.animCurrentFrame = 0.0f; + phi_v1 = this->unk_38C * 0x2000; + } else { + func_80A5257C(this, 13); + this->skelAnime.animCurrentFrame = 0.0f; + } + this->actor.shape.rot.y = this->actor.world.rot.y; + this->actor.shape.rot.y += phi_v1; + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Dnq/EnDnq_Draw.s") + this->unk_38A = 0; + return 0; +} + +s32 func_80A52A78(EnDnq* this, GlobalContext* globalCtx) { + static s32 D_80A535DC[] = { + 17, 12, 14, 13, 16, + }; + + if (this->unk_38A == 0) { + this->unk_38C = 0; + this->unk_38A = 1; + this->unk_388 = globalCtx->state.frames % 5; + } + + this->actor.shape.rot.y = this->actor.world.rot.y; + if (this->unk_38C != 0) { + this->unk_38C--; + } + + if (func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + if (this->unk_38C == 0) { + this->unk_38C = Rand_S16Offset(20, 20); + this->unk_388 += 3; + this->unk_388 %= 5; + } + func_80A5257C(this, D_80A535DC[this->unk_388]); + this->skelAnime.animCurrentFrame = 0.0f; + } + + this->unk_386 = 0; + return 0; +} + +s32 func_80A52B68(EnDnq* this, GlobalContext* globalCtx) { + Player* player = PLAYER; + u16 temp = globalCtx->msgCtx.unk11F04; + + if ((player->stateFlags1 & 0x40) && (player->targetActor == &this->actor)) { + switch (temp) { + case 0x89B: + func_80A5257C(this, 18); + break; + + case 0x89E: + func_80A5257C(this, 19); + break; + + case 0x898: + case 0x89F: + func_80A5257C(this, 16); + break; + + case 0x899: + case 0x89D: + func_80A5257C(this, 14); + break; + + case 0x89A: + case 0x89C: + func_80A5257C(this, 15); + break; + } + this->unk_39C = 1; + } else if (this->unk_39C != 0) { + func_80A5257C(this, 0); + this->unk_39C = 0; + this->unk_37E = 0; + this->unk_386 = 0; + } + + return 0; +} + +void func_80A52C6C(EnDnq* this, GlobalContext* globalCtx) { + Player* player = PLAYER; + s32 pad; + Vec3f sp34 = { 0.0f, 0.0f, 110.0f }; + Vec3f sp28; + Vec3f sp1C; + + Math_Vec3f_Copy(&sp1C, &player->actor.world.pos); + Lib_Vec3f_TranslateAndRotateY(&this->actor.world.pos, this->actor.world.rot.y, &sp34, &sp28); + Math_Vec3f_Copy(&this->unk_370, &sp28); + this->actor.xzDistToPlayer = Math_Vec3f_DistXZ(&sp28, &sp1C); +} + +s32* func_80A52CF8(EnDnq* this, GlobalContext* globalCtx) { + if (gSaveContext.weekEventReg[23] & 0x20) { + return &D_80A53400[14]; + } + + if (this->unk_3A4 != 0) { + return &D_80A53400[8]; + } + + return &D_80A53400[0]; +} + +s32 func_80A52D44(EnDnq* this, GlobalContext* globalCtx) { + s32 ret = false; + + if ((this->unk_37C & 7) && func_800B84D0(&this->actor, globalCtx)) { + func_8013AED4(&this->unk_37C, 0, 7); + this->unk_380 = func_80A52CF8(this, globalCtx); + this->actionFunc = func_80A52FB8; + ret = true; + } + + return ret; +} + +void func_80A52DC8(EnDnq* this, GlobalContext* globalCtx) { + Player* player = PLAYER; + s16 yaw = this->actor.yawTowardsPlayer - this->actor.world.rot.y; + + if (yaw <= 0x3800) { + func_8013AED4(&this->unk_37C, 3, 7); + } else { + func_8013AED4(&this->unk_37C, 0, 7); + } + + if (!(gSaveContext.weekEventReg[23] & 0x20)) { + this->unk_390 = 70.0f; + if (func_80114F2C(ITEM_DEKU_PRINCESS) && !func_801690CC(globalCtx) && (func_80152498(&globalCtx->msgCtx) == 0) && + (ActorCutscene_GetCurrentIndex() == -1)) { + if ((DECR(this->unk_384) == 0) && (gSaveContext.weekEventReg[29] & 0x40)) { + func_801518B0(globalCtx, 0x969, NULL); + this->unk_384 = 200; + } + } + + this->unk_394 = this->actor.xzDistToPlayer; + func_80A52C6C(this, globalCtx); + if (this->actor.xzDistToPlayer < this->unk_390) { + player->unk_B2B = 0x1A; + } + + this->actor.xzDistToPlayer = this->unk_394; + + if (gSaveContext.weekEventReg[83] & 8) { + func_80A52A78(this, globalCtx); + } else if (this->unk_3A4 == 0) { + Math_ApproachS(&this->actor.shape.rot.y, this->actor.world.rot.y, 3, 0x2AA8); + func_80A526F8(this); + } else { + func_80A52944(this); + } + } else { + Math_ApproachS(&this->actor.shape.rot.y, this->actor.world.rot.y, 3, 0x2AA8); + this->unk_390 = 70.0f; + } +} + +void func_80A52FB8(EnDnq* this, GlobalContext* globalCtx) { + s16 sp2E = this->actor.yawTowardsPlayer; + + if (func_8010BF58(&this->actor, globalCtx, this->unk_380, 0, &this->unk_1E0)) { + func_8013AED4(&this->unk_37C, 3, 7); + this->unk_386 = 0; + this->actionFunc = func_80A52DC8; + } else { + Math_ApproachS(&this->actor.shape.rot.y, sp2E, 3, 0x2AA8); + } +} + +void func_80A53038(EnDnq* this, GlobalContext* globalCtx) { + static s32 D_80A535FC[] = { + 0, 1, 2, 3, 5, 6, + }; + u32 temp_v0; + u32 temp_v1; + + if (func_800EE29C(globalCtx, 0x69)) { + temp_v0 = func_800EE200(globalCtx, 0x69); + temp_v1 = globalCtx->csCtx.npcActions[temp_v0]->unk0; + if (this->unk_1DC != (u8)temp_v1) { + func_80A5257C(this, D_80A535FC[temp_v1]); + this->unk_1DC = temp_v1; + } + + if ((this->unk_398 == 4) && func_801378B8(&this->skelAnime, 2.0f)) { + Audio_PlayActorSound2(&this->actor, NA_SE_EN_KINGNUTS_DAMAGE); + } + + if (((this->unk_398 == 3) || (this->unk_398 == 6)) && + func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + func_80A5257C(this, this->unk_398 + 1); + } + + func_800EDF24(&this->actor, globalCtx, temp_v0); + } +} + +void EnDnq_Init(Actor* thisx, GlobalContext* globalCtx) { + EnDnq* this = THIS; + + ActorShape_Init(&this->actor.shape, 0.0f, NULL, 14.0f); + SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_0600EB48, NULL, this->jointTable, this->morphTable, 33); + this->unk_398 = -1; + func_80A5257C(this, 0); + Collider_InitAndSetCylinder(globalCtx, &this->collider, &this->actor, &sCylinderInit); + CollisionCheck_SetInfo2(&this->actor.colChkInfo, DamageTable_Get(0x16), &sColChkInfoInit); + Actor_SetScale(&this->actor, 0.02f); + this->actor.targetMode = 1; + this->unk_386 = 0; + this->unk_37C = 0; + func_8013AED4(&this->unk_37C, 3, 7); + if (gSaveContext.weekEventReg[9] & 0x80) { + this->unk_3A4 = 1; + } else { + this->unk_3A4 = 0; + } + this->unk_144 = func_80A52530; + this->actionFunc = func_80A52DC8; +} + +void EnDnq_Destroy(Actor* thisx, GlobalContext* globalCtx) { + EnDnq* this = THIS; + + Collider_DestroyCylinder(globalCtx, &this->collider); +} + +void EnDnq_Update(Actor* thisx, GlobalContext* globalCtx) { + EnDnq* this = THIS; + + if (!func_80A52D44(this, globalCtx) && func_80A52648(this, globalCtx)) { + func_80A53038(this, globalCtx); + SkelAnime_FrameUpdateMatrix(&this->skelAnime); + } else { + this->actionFunc(this, globalCtx); + func_80A52B68(this, globalCtx); + SkelAnime_FrameUpdateMatrix(&this->skelAnime); + Actor_UpdateBgCheckInfo(globalCtx, &this->actor, 30.0f, 12.0f, 0.0f, 4); + this->unk_394 = this->actor.xzDistToPlayer; + func_80A52C6C(this, globalCtx); + func_8013C964(&this->actor, globalCtx, this->unk_390, fabsf(this->actor.yDistToPlayer) + 1.0f, 0, + this->unk_37C & 7); + this->actor.xzDistToPlayer = this->unk_394; + Actor_SetHeight(&this->actor, 46.0f); + func_80A52604(this, globalCtx); + } +} + +void EnDnq_Draw(Actor* thisx, GlobalContext* globalCtx) { + EnDnq* this = THIS; + + func_8012C28C(globalCtx->state.gfxCtx); + SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, NULL, + NULL, &this->actor); +} diff --git a/src/overlays/actors/ovl_En_Dnq/z_en_dnq.h b/src/overlays/actors/ovl_En_Dnq/z_en_dnq.h index a6ea68a15e..4cc82d131d 100644 --- a/src/overlays/actors/ovl_En_Dnq/z_en_dnq.h +++ b/src/overlays/actors/ovl_En_Dnq/z_en_dnq.h @@ -6,12 +6,33 @@ struct EnDnq; typedef void (*EnDnqActionFunc)(struct EnDnq*, GlobalContext*); +typedef void (*EnDnqFunc)(GlobalContext*, struct EnDnq*); typedef struct EnDnq { - /* 0x0000 */ Actor actor; - /* 0x0144 */ char unk_144[0x48]; - /* 0x018C */ EnDnqActionFunc actionFunc; - /* 0x0190 */ char unk_190[0x218]; + /* 0x000 */ Actor actor; + /* 0x144 */ EnDnqFunc unk_144; + /* 0x148 */ SkelAnime skelAnime; + /* 0x18C */ EnDnqActionFunc actionFunc; + /* 0x190 */ ColliderCylinder collider; + /* 0x1DC */ u8 unk_1DC; + /* 0x1E0 */ s32 unk_1E0; + /* 0x1E4 */ Vec3s jointTable[33]; + /* 0x2AA */ Vec3s morphTable[33]; + /* 0x370 */ Vec3f unk_370; + /* 0x37C */ u16 unk_37C; + /* 0x37E */ s16 unk_37E; + /* 0x380 */ s32* unk_380; + /* 0x384 */ s16 unk_384; + /* 0x386 */ s16 unk_386; + /* 0x388 */ s16 unk_388; + /* 0x38A */ s16 unk_38A; + /* 0x38C */ s16 unk_38C; + /* 0x390 */ f32 unk_390; + /* 0x394 */ f32 unk_394; + /* 0x398 */ s32 unk_398; + /* 0x39C */ s32 unk_39C; + /* 0x3A0 */ UNK_TYPE1 unk_3A0[0x4]; + /* 0x3A4 */ s32 unk_3A4; } EnDnq; // size = 0x3A8 extern const ActorInit En_Dnq_InitVars; diff --git a/undefined_syms.txt b/undefined_syms.txt index 1706d2b471..4ca15c4b33 100644 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -1941,6 +1941,22 @@ D_060109D0 = 0x060109D0; // ovl_En_Dnq D_0600EB48 = 0x0600EB48; +D_06008328 = 0x06008328; +D_06007528 = 0x06007528; +D_060006F0 = 0x060006F0; +D_06000BF8 = 0x06000BF8; +D_06002690 = 0x06002690; +D_06003408 = 0x06003408; +D_06006984 = 0x06006984; +D_06005E18 = 0x06005E18; +D_06005284 = 0x06005284; +D_06001AEC = 0x06001AEC; +D_06001100 = 0x06001100; +D_06004EA0 = 0x06004EA0; +D_0600F504 = 0x0600F504; +D_060047B8 = 0x060047B8; +D_06005A14 = 0x06005A14; +D_06003DBC = 0x06003DBC; // ovl_En_Dns