mirror of
https://github.com/zeldaret/oot.git
synced 2025-08-16 20:10:28 +00:00
Progress
This commit is contained in:
parent
1365f3e68b
commit
02e27c9502
6 changed files with 94 additions and 31 deletions
|
@ -67,6 +67,8 @@ extern AnimationHeader D_0600C114;
|
|||
extern AnimationHeader D_0600CD70;
|
||||
extern AnimationHeader D_0600DD50;
|
||||
extern AnimationHeader D_0600ED24;
|
||||
extern Gfx D_06018E78[];
|
||||
extern Gfx D_06019100[];
|
||||
extern SkeletonHeader D_0601E178;
|
||||
extern AnimationHeader D_060203D8;
|
||||
extern SkeletonHeader D_060205C0;
|
||||
|
@ -681,8 +683,28 @@ Gfx* func_80A761B0(GraphicsContext* gfxCtx, u8 primR, u8 primG, u8 primB, u8 env
|
|||
return displayList;
|
||||
}
|
||||
|
||||
s32 EnIk_OverrideLimbDraw3(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* actor);
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ik/EnIk_OverrideLimbDraw3.s")
|
||||
s32 EnIk_OverrideLimbDraw3(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* actor) {
|
||||
EnIk* this = (EnIk*)actor;
|
||||
|
||||
if (limbIndex == 0xC) {
|
||||
if (this->actor.params != 0) {
|
||||
*dList = D_06018E78;
|
||||
}
|
||||
} else if (limbIndex == 0xD) {
|
||||
if (this->actor.params != 0) {
|
||||
*dList = D_06019100;
|
||||
}
|
||||
} else if ((limbIndex == 0x1A) || (limbIndex == 0x1B)) {
|
||||
if ((this->unk_2FA & 1)) {
|
||||
*dList = NULL;
|
||||
}
|
||||
} else if ((limbIndex == 0x1C) || (limbIndex == 0x1D)) {
|
||||
if (!(this->unk_2FA & 1)) {
|
||||
*dList = NULL;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void EnIk_PostLimbDraw3(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* actor);
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ik/EnIk_PostLimbDraw3.s")
|
||||
|
@ -748,11 +770,13 @@ void func_80A76C14(EnIk* this) {
|
|||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ik/func_80A76E2C.s")
|
||||
|
||||
void func_80A77034(EnIk* this, GlobalContext* globalCtx);
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ik/func_80A77034.s")
|
||||
void func_80A77034(EnIk* this, GlobalContext* globalCtx) {
|
||||
func_8002E4B4(globalCtx, &this->actor, 75.0f, 30.0f, 30.0f, 5);
|
||||
}
|
||||
|
||||
s32 func_80A7707C(EnIk* this, GlobalContext* globalCtx);
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ik/func_80A7707C.s")
|
||||
s32 func_80A7707C(EnIk* this) {
|
||||
return SkelAnime_FrameUpdateMatrix(&this->skelAnime);
|
||||
}
|
||||
|
||||
CsCmdActorAction* EnIk_GetNpcAction(GlobalContext* globalCtx, s32 actionIdx) {
|
||||
if (globalCtx->csCtx.state != 0) {
|
||||
|
@ -773,21 +797,44 @@ void func_80A770C0(EnIk* this, GlobalContext* globalCtx, s32 actionIdx) {
|
|||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ik/func_80A77140.s")
|
||||
f32 EnIk_AnimCurrentFrame(EnIk* this) {
|
||||
return this->skelAnime.animCurrentFrame;
|
||||
}
|
||||
|
||||
void func_80A77148(EnIk* this);
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ik/func_80A77148.s")
|
||||
void func_80A77148(EnIk* this) {
|
||||
this->action = 0;
|
||||
this->drawMode = 0;
|
||||
this->actor.shape.unk_14 = 0;
|
||||
}
|
||||
|
||||
void func_80A77158(EnIk* this, GlobalContext* globalCtx);
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ik/func_80A77158.s")
|
||||
void func_80A77158(EnIk* this, GlobalContext* globalCtx) {
|
||||
SkelAnime_ChangeAnim(&this->skelAnime, &D_0600C114, 1.0f, 0.0f, SkelAnime_GetFrameCount(&D_0600C114.genericHeader),
|
||||
2, 0.0f);
|
||||
func_80A770C0(this, globalCtx, 4);
|
||||
this->action = 1;
|
||||
this->drawMode = 1;
|
||||
this->actor.shape.unk_14 = 0xFF;
|
||||
}
|
||||
|
||||
void func_80A771E4(EnIk* this);
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ik/func_80A771E4.s")
|
||||
void func_80A771E4(EnIk* this) {
|
||||
SkelAnime_ChangeAnim(&this->skelAnime, &D_0600C114, 1.0f, 0.0f, SkelAnime_GetFrameCount(&D_0600C114.genericHeader),
|
||||
2, 0.0f);
|
||||
this->action = 2;
|
||||
this->drawMode = 1;
|
||||
this->unk_4D4 = 0;
|
||||
this->actor.shape.unk_14 = 0xFF;
|
||||
}
|
||||
|
||||
void func_80A77264(EnIk* this, GlobalContext* globalCtx, s32 arg2);
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ik/func_80A77264.s")
|
||||
void func_80A77264(EnIk* this, GlobalContext* globalCtx, s32 arg2) {
|
||||
if ((arg2 != 0) && (EnIk_GetNpcAction(globalCtx, 4) != NULL)) {
|
||||
func_80A78160(this, globalCtx);
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ik/func_80A772A4.s")
|
||||
void func_80A772A4(EnIk* this) {
|
||||
Audio_PlaySoundGeneral(NA_SE_EN_IRONNACK_STAGGER_DEMO, &this->actor.projectedPos, 4, &D_801333E0, &D_801333E0,
|
||||
&D_801333E8);
|
||||
}
|
||||
|
||||
void func_80A772EC(EnIk* this, GlobalContext* globalCtx) {
|
||||
static Vec3f D_80A78FA0;
|
||||
|
@ -812,8 +859,12 @@ void func_80A7735C(EnIk* this, GlobalContext* globalCtx) {
|
|||
this->actor.shape.unk_14 = 0xFF;
|
||||
}
|
||||
|
||||
void func_80A77434(EnIk* this, GlobalContext* globalCtx);
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ik/func_80A77434.s")
|
||||
void func_80A77434(EnIk* this, GlobalContext* globalCtx) {
|
||||
this->action = 4;
|
||||
this->drawMode = 2;
|
||||
func_80A772A4(this);
|
||||
this->actor.shape.unk_14 = 0xFF;
|
||||
}
|
||||
|
||||
void func_80A77474(EnIk* this, GlobalContext* globalCtx);
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ik/func_80A77474.s")
|
||||
|
@ -824,8 +875,17 @@ void func_80A77474(EnIk* this, GlobalContext* globalCtx);
|
|||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ik/func_80A774F8.s")
|
||||
|
||||
s32 EnIk_OverrideLimbDraw2(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* actor);
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ik/EnIk_OverrideLimbDraw2.s")
|
||||
s32 EnIk_OverrideLimbDraw2(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* actor) {
|
||||
EnIk* this = (EnIk*)actor;
|
||||
|
||||
if ((limbIndex == 0xD) || (limbIndex == 0x1A) || (limbIndex == 0x1B)) {
|
||||
if (EnIk_AnimCurrentFrame(this) >= 30.0f) {
|
||||
*dList = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void EnIk_PostLimbDraw2(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* actor);
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ik/EnIk_PostLimbDraw2.s")
|
||||
|
@ -901,7 +961,7 @@ void func_80A77B0C(EnIk* this, GlobalContext* globalCtx) {
|
|||
void func_80A77B3C(EnIk* this, GlobalContext* globalCtx) {
|
||||
s32 sp24;
|
||||
|
||||
sp24 = func_80A7707C(this, globalCtx);
|
||||
sp24 = func_80A7707C(this);
|
||||
func_80A76C14(this);
|
||||
func_80A77034(this, globalCtx);
|
||||
func_80A779DC(this, globalCtx);
|
||||
|
@ -915,7 +975,7 @@ void EnIk_Update(Actor* thisx, GlobalContext* globalCtx) {
|
|||
osSyncPrintf(VT_FGCOL(RED) "メインモードがおかしい!!!!!!!!!!!!!!!!!!!!!!!!!\n" VT_RST);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
sActionFuncs[this->action](this, globalCtx);
|
||||
}
|
||||
|
||||
|
@ -954,7 +1014,7 @@ void EnIk_Draw(Actor* thisx, GlobalContext* globalCtx) {
|
|||
osSyncPrintf(VT_FGCOL(RED) "描画モードがおかしい!!!!!!!!!!!!!!!!!!!!!!!!!\n" VT_RST);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
sDrawFuncs[this->drawMode](this, globalCtx);
|
||||
}
|
||||
|
||||
|
|
|
@ -15,12 +15,12 @@ typedef struct EnIk {
|
|||
/* 0x0244 */ Vec3s transitionDrawTable[30];
|
||||
/* 0x02F8 */ u8 unk_2F8;
|
||||
/* 0x02F9 */ u8 unk_2F9;
|
||||
/* 0x02F9 */ char unk_2FA[0x01];
|
||||
/* 0x02FA */ u8 unk_2FA;
|
||||
/* 0x02FB */ u8 unk_2FB;
|
||||
/* 0x02FC */ u8 unk_2FC;
|
||||
/* 0x02FD */ char unk_2FD[0x01];
|
||||
/* 0x02FE */ s8 unk_2FE;
|
||||
/* 0x02FD */ s8 unk_2FF;
|
||||
/* 0x02FF */ s8 unk_2FF;
|
||||
/* 0x0300 */ s16 unk_300;
|
||||
/* 0x0302 */ s16 switchFlags;
|
||||
/* 0x0304 */ EnIkActionFunc actionFunc;
|
||||
|
@ -33,7 +33,8 @@ typedef struct EnIk {
|
|||
/* 0x04C8 */ s32 action;
|
||||
/* 0x04CC */ s32 drawMode;
|
||||
/* 0x04D0 */ u32 npcAction;
|
||||
/* 0x04D4 */ char unk_4D4[0x08];
|
||||
/* 0x04D4 */ s32 unk_4D4;
|
||||
/* 0x04D8 */ char unk_4D8[0x04];
|
||||
} EnIk; // size = 0x04DC
|
||||
|
||||
extern const ActorInit En_Ik_InitVars;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue