1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2024-11-11 03:39:59 +00:00

begain work on EnAni

This commit is contained in:
Gamestabled 2020-03-19 04:57:37 -04:00 committed by chandler
parent e5a5f0a46d
commit dda2641082
3 changed files with 178 additions and 15 deletions

View file

@ -6,12 +6,12 @@
struct BgHidanFirewall;
typedef void (*FirewallFunc)(struct BgHidanFirewall* this, GlobalContext* globalCtx);
typedef void FirewallFunc(struct BgHidanFirewall* this, GlobalContext* globalCtx);
typedef struct BgHidanFirewall
{
/* 0x0000 */ Actor actor;
/* 0x014C */ FirewallFunc actionFunc; // idle, countdown, etc
/* 0x014C */ FirewallFunc* actionFunc; // idle, countdown, etc
/* 0x0150 */ s16 unk_150;
/* 0x0154 */ ColliderCylinderMain* collider;
/* 0x0158 */ char unk_158[0xC];

View file

@ -3,10 +3,6 @@
#define ROOM 0x00
#define FLAGS 0x00000009
void EnAni_Init(EnAni* this, GlobalContext* globalCtx);
void EnAni_Destroy(EnAni* this, GlobalContext* globalCtx);
void EnAni_Update(EnAni* this, GlobalContext* globalCtx);
void EnAni_Draw(EnAni* this, GlobalContext* globalCtx);
/*
const ActorInit En_Ani_InitVars =
@ -23,38 +19,181 @@ const ActorInit En_Ani_InitVars =
(ActorFunc)EnAni_Draw,
};
*/
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ani/func_809B0370.s")
//EnAni_SetupAction
void func_809B0370(EnAni* this, ActorFunc actionFunc)
{
this->actionFunc = actionFunc;
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ani/EnAni_Init.s")
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ani/EnAni_Destroy.s")
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ani/func_809B04B4.s")
s32 func_809B04B4(EnAni* this, GlobalContext* globalCtx, u16 arg2)
{
this->actor.textId = arg2;
this->unk_2A8 = (this->unk_2A8 | 1);
func_8002F2CC(&this->actor, globalCtx, 100.0f);
return 0;
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ani/func_809B04F0.s")
void func_809B04F0(EnAni* this, GlobalContext* globalCtx)
{
if (func_8002F334(&this->actor, globalCtx) != 0)
{
func_809B0370(this, func_809B064C);
}
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ani/func_809B0524.s")
void func_809B0524(EnAni* this, GlobalContext* globalCtx)
{
if (func_8002F334(&this->actor, globalCtx) != 0)
{
func_809B0370(this, func_809B07F8);
}
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ani/func_809B0558.s")
void func_809B0558(EnAni* this, GlobalContext* globalCtx)
{
if (func_8002F410(&this->actor, globalCtx) != 0)
{
this->actor.attachedA = 0;
if (LINK_IS_CHILD)
{
func_809B0370(this, func_809B04F0);
}
else
{
func_809B0370(this, func_809B0524);
}
gSaveContext.item_get_inf[1] = gSaveContext.item_get_inf[1] | 0x20;
return;
}
func_8002F434(&this->actor, globalCtx, GI_HEART_PIECE, 10000.0f, 200.0f);
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ani/func_809B05F0.s")
void func_809B05F0(EnAni* this, GlobalContext* globalCtx)
{
if (func_8002F334(this, globalCtx) != 0)
{
func_809B0370(this, func_809B0558);
}
func_8002F434(this, globalCtx, GI_HEART_PIECE, 10000.0f, 200.0f);
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ani/func_809B064C.s")
// void func_809B064C(EnAni* this, GlobalContext* globalCtx)
// {
// u16 phi_a2;
// s16 temp_v1;
// s32 temp_ret;
// temp_ret = func_8006C360(globalCtx, 0xA);
// phi_a2 = temp_ret & 0xffff;
// if (temp_ret == 0)
// {
// phi_a2 = 0x5050U;
// if (gSaveContext.night_flag != 0)
// {
// phi_a2 = 0x5051U;
// }
// }
// temp_v1 = (this->actor.rotTowardsLinkY - this->actor.shape.rot.y);
// if (func_8002F194(&this->actor, globalCtx) != 0)
// {
// if (this->actor.textId == 0x5056) // "To get a good view..."
// {
// func_809B0370(this, func_809B04F0);
// return;
// }
// if (this->actor.textId == 0x5055) // "...I'll give you this as a memento."
// {
// func_809B0370(this, func_809B05F0);
// return;
// }
// func_809B0370(this, func_809B04F0);
// return;
// }
// if (temp_v1 >= -0x36AF)
// {
// if (temp_v1 < 0)
// {
// if (this->actor.xzDistanceFromLink < 150.0f)
// {
// if (-80.0f < this->actor.yDistanceFromLink)
// {
// if ((gSaveContext.item_get_inf[1] & 0x20) == 0)
// {
// func_809B04B4(this, globalCtx, 0x5056); // "To get a good view..."
// return;
// }
// func_809B04B4(this, globalCtx, 0x5055); // "...I'll give you this as a memento."
// return;
// }
// }
// }
// }
// if (temp_v1 >= -0x3e7)
// {
// if (temp_v1 < 0x36b0)
// {
// if (this->actor.xzDistanceFromLink < 350.0f)
// {
// func_809B04B4(this, globalCtx, phi_a2);
// }
// }
// }
// } THIS IS SUPER CLOSE
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ani/func_809B07F8.s")
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ani/func_809B0988.s")
void func_809B0988(EnAni* this, GlobalContext* globalCtx) { }
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ani/func_809B0994.s")
// void func_809B0994(EnAni* this, GlobalContext* globalCtx)
// {
// if (globalCtx->csCtx.actorActions[0]->action == 4)
// {
// SkelAnime_ChangeAnimation(&this->skelAnime, 0x60070F0, 1.0f, 0.0f, (f32) SkelAnime_GetFrameCount(0x60070F0), 2, -4.0f);
// this->actor.shape.shadowDrawFunc = 0x8003B5EC;
// this->unk_2AA += 1;
// }
// }
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ani/func_809B0A28.s")
void func_809B0A28(EnAni* this, GlobalContext* globalCtx)
{
if (SkelAnime_FrameUpdateMatrix(&this->skelAnime) != 0)
{
this->unk_2AA += 1;
}
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ani/func_809B0A6C.s")
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ani/EnAni_Update.s")
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ani/func_809B0D90.s")
// ? func_809B0D90(s32 arg0, s32 arg1, ? arg2, ? arg3, void *arg4, void *arg5)
// {
// if (arg1 == 0xf)
// {
// arg4->unk0 = (s16) (arg4->unk0 + arg5->unk29E);
// arg4->unk4 = (s16) (arg4->unk4 + arg5->unk29C);
// }
// return 0;
// }
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ani/func_809B0DD4.s")
// void func_809B0DD4(s32 arg0, Actor* arg1, ? arg2, ? arg3)
// {
// if (arg1 == 0xf)
// {
// Matrix_MultVec3f(&D_809B0F74, &arg1->posRot2.pos);
// }
// }
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ani/EnAni_Draw.s")

View file

@ -7,9 +7,33 @@
typedef struct
{
/* 0x0000 */ Actor actor;
/* 0x014C */ char unk_14C[0x168];
/* 0x014C */ char unk_14C[0x4C];
/* 0x0198 */ SkelAnime skelAnime;
/* 0x01D8 */ char unk_19C[0xD0];
/* 0x02A8 */ u16 unk_2A8;
/* 0x02AA */ u16 unk_2AA;
/* 0x02AC */ char unk_2AC[0x4];
/* 0x02B0 */ ActorFunc actionFunc;
} EnAni; // size = 0x02B4
extern const ActorInit En_Ani_InitVars;
void func_809B0370(EnAni* this, ActorFunc actionFunc);
void EnAni_Init(EnAni* this, GlobalContext* globalCtx);
void EnAni_Destroy(EnAni* this, GlobalContext* globalCtx);
s32 func_809B04B4(EnAni* this, GlobalContext* globalCtx, u16 arg2);
void func_809B04F0(EnAni* this, GlobalContext* globalCtx);
void func_809B0524(EnAni* this, GlobalContext* globalCtx);
void func_809B0558(EnAni* this, GlobalContext* globalCtx);
void func_809B05F0(EnAni* this, GlobalContext* globalCtx);
void func_809B064C(EnAni* this, GlobalContext* globalCtx);
void func_809B07F8(EnAni* this, GlobalContext* globalCtx);
void func_809B0988(EnAni* this, GlobalContext* globalCtx);
void EnAni_Update(EnAni* this, GlobalContext* globalCtx);
void EnAni_Draw(EnAni* this, GlobalContext* globalCtx);
#endif