* En_Dnq

* NBS

* PR

* PR

* PR
This commit is contained in:
Maide 2021-09-01 23:03:51 +01:00 committed by GitHub
parent 97e066f23f
commit e1cb76c258
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 473 additions and 37 deletions

View File

@ -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);

View File

@ -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,

3
spec
View File

@ -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

View File

@ -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);
}

View File

@ -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;

View File

@ -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