mirror of
https://github.com/izzy2lost/2ship2harkinian-Android.git
synced 2026-06-19 01:20:08 -07:00
ovl_En_Zl4 functions
This commit is contained in:
@@ -5,6 +5,7 @@
|
||||
*/
|
||||
|
||||
#include "z_en_zl4.h"
|
||||
#include "objects/object_stk/object_stk.h"
|
||||
|
||||
#define FLAGS (ACTOR_FLAG_10 | ACTOR_FLAG_20)
|
||||
|
||||
@@ -15,7 +16,10 @@ void EnZl4_Destroy(Actor* thisx, PlayState* play);
|
||||
void EnZl4_Update(Actor* thisx, PlayState* play);
|
||||
void EnZl4_Draw(Actor* thisx, PlayState* play);
|
||||
|
||||
void func_809A1BB0(SkelAnime* skelAnime, AnimationInfo* animInfo, u16 animIndex);
|
||||
void func_809A1D0C(EnZl4* this, PlayState* play);
|
||||
void func_809A1DA4(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx);
|
||||
void func_809A1DBC(PlayState* play, s32 limbIndex, Actor* thisx);
|
||||
|
||||
#if 0
|
||||
ActorInit En_Zl4_InitVars = {
|
||||
@@ -32,26 +36,85 @@ ActorInit En_Zl4_InitVars = {
|
||||
|
||||
#endif
|
||||
|
||||
extern UNK_TYPE D_06013328;
|
||||
extern AnimationInfo D_809A1F80;
|
||||
extern Vec3f D_809A1F98;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Zl4/func_809A1BB0.s")
|
||||
void func_809A1BB0(SkelAnime* skelAnime, AnimationInfo* animInfo, u16 animIndex) {
|
||||
f32 endFrame;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Zl4/EnZl4_Init.s")
|
||||
animInfo += animIndex;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Zl4/EnZl4_Destroy.s")
|
||||
if (animInfo->frameCount < 0.0f) {
|
||||
endFrame = Animation_GetLastFrame(animInfo->animation);
|
||||
} else {
|
||||
endFrame = animInfo->frameCount;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Zl4/func_809A1D0C.s")
|
||||
Animation_Change(skelAnime, animInfo->animation, animInfo->playSpeed, animInfo->startFrame, endFrame,
|
||||
animInfo->mode, animInfo->morphFrames);
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Zl4/EnZl4_Update.s")
|
||||
void EnZl4_Init(Actor* thisx, PlayState* play) {
|
||||
EnZl4* this = THIS;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Zl4/func_809A1D60.s")
|
||||
this->unk_2E0 = 0;
|
||||
this->unk_2F0 = 0xFF;
|
||||
this->actor.targetArrowOffset = 3000.0f;
|
||||
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 24.0f);
|
||||
SkelAnime_InitFlex(play, &this->skelanime, &gSkullKidSkel, NULL, NULL, NULL, 0);
|
||||
func_809A1BB0(&this->skelanime, &D_809A1F80, 0);
|
||||
Actor_SetScale(&this->actor, 0.01f);
|
||||
this->actionFunc = func_809A1D0C;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Zl4/func_809A1DA4.s")
|
||||
void EnZl4_Destroy(Actor* thisx, PlayState* play) {
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Zl4/func_809A1DBC.s")
|
||||
void func_809A1D0C(EnZl4* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void EnZl4_Update(Actor* thisx, PlayState* play) {
|
||||
EnZl4* this = THIS;
|
||||
SkelAnime_Update(&this->skelanime);
|
||||
this->unk_2F0 = this->unk_2F0;
|
||||
this->actionFunc(this, play);
|
||||
}
|
||||
|
||||
s32 func_809A1D60(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
|
||||
Vec3f vec = D_809A1F98;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void func_809A1DA4(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
|
||||
}
|
||||
|
||||
void func_809A1DBC(PlayState* play, s32 limbIndex, Actor* thisx) {
|
||||
}
|
||||
|
||||
s32 func_809A1DD0(GraphicsContext*, u32);
|
||||
|
||||
s32 func_809A1E28(GraphicsContext*, u32);
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Zl4/func_809A1DD0.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Zl4/func_809A1E28.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Zl4/EnZl4_Draw.s")
|
||||
void EnZl4_Draw(Actor* thisx, PlayState* play) {
|
||||
EnZl4* this = THIS;
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
Gfx_SetupDL25_Opa(play->state.gfxCtx);
|
||||
|
||||
if (this->unk_2F0 < 255) {
|
||||
gSPSegment(POLY_OPA_DISP++, 0x0C, func_809A1DD0(play->state.gfxCtx, this->unk_2F0));
|
||||
} else {
|
||||
gSPSegment(POLY_OPA_DISP++, 0x0C, func_809A1E28(play->state.gfxCtx, this->unk_2F0));
|
||||
}
|
||||
|
||||
CLOSE_DISPS(play->state.gfxCtx);
|
||||
|
||||
SkelAnime_DrawTransformFlexOpa(play, this->skelanime.skeleton, this->skelanime.jointTable,
|
||||
this->skelanime.dListCount, func_809A1D60, func_809A1DA4, func_809A1DBC,
|
||||
&this->actor);
|
||||
}
|
||||
|
||||
@@ -9,9 +9,13 @@ typedef void (*EnZl4ActionFunc)(struct EnZl4*, PlayState*);
|
||||
|
||||
typedef struct EnZl4 {
|
||||
/* 0x000 */ Actor actor;
|
||||
/* 0x144 */ char unk_144[0x14C];
|
||||
/* 0x144 */ SkelAnime skelanime;
|
||||
/* 0x188 */ char pad_188[0x108];
|
||||
/* 0x290 */ EnZl4ActionFunc actionFunc;
|
||||
/* 0x294 */ char unk_294[0x60];
|
||||
/* 0x294 */ char pad_294[0x4C];
|
||||
/* 0x2E0 */ s16 unk_2E0;
|
||||
/* 0x2E2 */ char pad_2E2[0xE];
|
||||
/* 0x2F0 */ u32 unk_2F0;
|
||||
} EnZl4; // size = 0x2F4
|
||||
|
||||
#endif // Z_EN_ZL4_H
|
||||
|
||||
Reference in New Issue
Block a user