En_crow OK and Documented (#698)

* this is the guay

* do you know the guay?

* No guay!

* got too excited to pr lol, fixes are here

* Majoras Mask: No Guay Home

* fixing objects

* 4mattt
This commit is contained in:
Parker Burnett
2022-03-29 16:55:29 +01:00
committed by GitHub
parent f187471a33
commit e19705f7eb
8 changed files with 538 additions and 102 deletions
+20 -20
View File
@@ -1,24 +1,24 @@
<Root>
<File Name="object_crow" Segment="6">
<Animation Name="object_crow_Anim_0000F0" Offset="0xF0" />
<DList Name="object_crow_DL_000490" Offset="0x490" />
<DList Name="object_crow_DL_0005E0" Offset="0x5E0" />
<DList Name="object_crow_DL_0006B0" Offset="0x6B0" />
<DList Name="object_crow_DL_000770" Offset="0x770" />
<DList Name="object_crow_DL_000840" Offset="0x840" />
<DList Name="object_crow_DL_000900" Offset="0x900" />
<DList Name="object_crow_DL_0009A0" Offset="0x9A0" />
<Texture Name="object_crow_Tex_000A40" OutName="tex_000A40" Format="rgba16" Width="16" Height="16" Offset="0xA40" />
<Texture Name="object_crow_Tex_000C40" OutName="tex_000C40" Format="rgba16" Width="16" Height="16" Offset="0xC40" />
<Texture Name="object_crow_Tex_000E40" OutName="tex_000E40" Format="rgba16" Width="16" Height="16" Offset="0xE40" />
<Limb Name="object_crow_Standardlimb_001040" Type="Standard" EnumName="OBJECT_CROW_LIMB_01" Offset="0x1040" />
<Limb Name="object_crow_Standardlimb_00104C" Type="Standard" EnumName="OBJECT_CROW_LIMB_02" Offset="0x104C" />
<Limb Name="object_crow_Standardlimb_001058" Type="Standard" EnumName="OBJECT_CROW_LIMB_03" Offset="0x1058" />
<Limb Name="object_crow_Standardlimb_001064" Type="Standard" EnumName="OBJECT_CROW_LIMB_04" Offset="0x1064" />
<Limb Name="object_crow_Standardlimb_001070" Type="Standard" EnumName="OBJECT_CROW_LIMB_05" Offset="0x1070" />
<Limb Name="object_crow_Standardlimb_00107C" Type="Standard" EnumName="OBJECT_CROW_LIMB_06" Offset="0x107C" />
<Limb Name="object_crow_Standardlimb_001088" Type="Standard" EnumName="OBJECT_CROW_LIMB_07" Offset="0x1088" />
<Limb Name="object_crow_Standardlimb_001094" Type="Standard" EnumName="OBJECT_CROW_LIMB_08" Offset="0x1094" />
<Skeleton Name="object_crow_Skel_0010C0" Type="Flex" LimbType="Standard" LimbNone="OBJECT_CROW_LIMB_NONE" LimbMax="OBJECT_CROW_LIMB_MAX" EnumName="object_crow_Limbs" Offset="0x10C0" />
<Animation Name="gGuayFlyAnim" Offset="0xF0" />
<DList Name="gGuayBodyDL" Offset="0x490" />
<DList Name="gGuayRightWingTipDL" Offset="0x5E0" />
<DList Name="gGuayRightWingBodyDL" Offset="0x6B0" />
<DList Name="gGuayLeftWingTipDL" Offset="0x770" />
<DList Name="gGuayLeftWingBodyDL" Offset="0x840" />
<DList Name="gGuayTailDL" Offset="0x900" />
<DList Name="gGuayUpperTailDL" Offset="0x9A0" />
<Texture Name="gGuayBodyTex" OutName="body" Format="rgba16" Width="16" Height="16" Offset="0xA40" />
<Texture Name="gGuayEyeTex" OutName="eye" Format="rgba16" Width="16" Height="16" Offset="0xC40" />
<Texture Name="gGuayTailTex" OutName="tail" Format="rgba16" Width="16" Height="16" Offset="0xE40" />
<Limb Name="gGuayRootLimb" Type="Standard" EnumName="OBJECT_CROW_LIMB_ROOT" Offset="0x1040" />
<Limb Name="gGuayBodyLimb" Type="Standard" EnumName="OBJECT_CROW_LIMB_BODY" Offset="0x104C" />
<Limb Name="gGuayRightWingBodyLimb" Type="Standard" EnumName="OBJECT_CROW_LIMB_RIGHT_WING_BODY" Offset="0x1058" />
<Limb Name="gGuayRightWingTipLimb" Type="Standard" EnumName="OBJECT_CROW_LIMB_RIGHT_WING_TIP" Offset="0x1064" />
<Limb Name="gGuayLeftWingBodyLimb" Type="Standard" EnumName="OBJECT_CROW_LIMB_LEFT_WING_BODY" Offset="0x1070" />
<Limb Name="gGuayLeftWingTipLimb" Type="Standard" EnumName="OBJECT_CROW_LIMB_LEFT_WING_TIP" Offset="0x107C" />
<Limb Name="gGuayUpperTailLimb" Type="Standard" EnumName="OBJECT_CROW_LIMB_UPPER_TAIL" Offset="0x1088" />
<Limb Name="gGuayTailLimb" Type="Standard" EnumName="OBJECT_CROW_LIMB_TAIL" Offset="0x1094" />
<Skeleton Name="gGuaySkel" Type="Flex" LimbType="Standard" LimbNone="OBJECT_CROW_LIMB_NONE" LimbMax="OBJECT_CROW_LIMB_MAX" EnumName="objectCrowLimbs" Offset="0x10C0" />
</File>
</Root>
+1 -2
View File
@@ -2156,8 +2156,7 @@ beginseg
name "ovl_En_Crow"
compress
include "build/src/overlays/actors/ovl_En_Crow/z_en_crow.o"
include "build/data/ovl_En_Crow/ovl_En_Crow.data.o"
include "build/data/ovl_En_Crow/ovl_En_Crow.reloc.o"
include "build/src/overlays/actors/ovl_En_Crow/ovl_En_Crow_reloc.o"
endseg
beginseg
File diff suppressed because it is too large Load Diff
+14 -2
View File
@@ -2,6 +2,7 @@
#define Z_EN_CROW_H
#include "global.h"
#include "objects/object_crow/object_crow.h"
struct EnCrow;
@@ -9,9 +10,20 @@ typedef void (*EnCrowActionFunc)(struct EnCrow*, GlobalContext*);
typedef struct EnCrow {
/* 0x0000 */ Actor actor;
/* 0x0144 */ char unk_144[0x44];
/* 0x0144 */ SkelAnime skelAnime;
/* 0x0188 */ EnCrowActionFunc actionFunc;
/* 0x018C */ char unk_18C[0x110];
/* 0x18C */ u8 deathMode;
/* 0x18E */ s16 timer;
/* 0x190 */ s16 aimRotX;
/* 0x192 */ s16 aimRotY;
/* 0x194 */ Vec3s jointTable[OBJECT_CROW_LIMB_MAX];
/* 0x1CA */ Vec3s morphTable[OBJECT_CROW_LIMB_MAX];
/* 0x200 */ ColliderJntSph collider;
/* 0x220 */ ColliderJntSphElement colliderItems[1];
/* 0x260 */ Vec3f bodyPartsPos[4];
/* 0x290 */ f32 effectAlpha;
/* 0x294 */ f32 steamScale;
/* 0x298 */ f32 effectScale;
} EnCrow; // size = 0x29C
extern const ActorInit En_Crow_InitVars;
@@ -225,7 +225,7 @@ void EnRuppecrow_ShatterIce(EnRuppecrow* this, GlobalContext* globalCtx) {
if (this->currentEffect == ENRUPPECROW_EFFECT_ICE) {
this->currentEffect = ENRUPPECROW_EFFECT_NONE;
this->unk_2C8 = 0.0f;
Actor_SpawnIceEffects(globalCtx, &this->actor, this->limbPos, ENRUPPECROW_LIMB_POS_COUNT, 0x2, 0.2f, 0.2f);
Actor_SpawnIceEffects(globalCtx, &this->actor, this->limbPos, ARRAY_COUNT(this->limbPos), 0x2, 0.2f, 0.2f);
}
}
@@ -440,7 +440,7 @@ void EnRuppecrow_HandleDeath(EnRuppecrow* this) {
this->actor.speedXZ *= Math_CosS(this->actor.world.rot.x);
this->actor.velocity.y = 0.0f;
Animation_Change(&this->skelAnime, &object_crow_Anim_0000F0, 0.4f, 0.0f, 0.0f, 0x1, -3.0f);
Animation_Change(&this->skelAnime, &gGuayFlyAnim, 0.4f, 0.0f, 0.0f, 0x1, -3.0f);
this->actor.shape.yOffset = 0.0f;
this->actor.targetArrowOffset = 0.0f;
@@ -627,8 +627,8 @@ void EnRuppecrow_Init(Actor* thisx, GlobalContext* globalCtx2) {
EnRuppecrow* this = THIS;
Actor_ProcessInitChain(&this->actor, sInitChain);
SkelAnime_InitFlex(globalCtx, &this->skelAnime, &object_crow_Skel_0010C0, &object_crow_Anim_0000F0, this->joinTable,
this->morphTable, ENRUPPECROW_LIMB_COUNT);
SkelAnime_InitFlex(globalCtx, &this->skelAnime, &gGuaySkel, &gGuayFlyAnim, this->joinTable, this->morphTable,
OBJECT_CROW_LIMB_MAX);
ActorShape_Init(&this->actor.shape, 2000.0f, ActorShadow_DrawCircle, 20.0f);
Collider_InitJntSph(globalCtx, &this->collider);
@@ -2,11 +2,11 @@
#define Z_EN_RUPPECROW_H
#include "global.h"
#include "objects/object_crow/object_crow.h"
#define ENRUPPECROW_GET_PATH(thisx) (((thisx)->params & 0xFC00) >> 0xA)
#define ENRUPPECROW_RUPEE_COUNT 20
#define ENRUPPECROW_LIMB_COUNT 9
#define ENRUPPECROW_LIMB_POS_COUNT 4
struct EnRuppecrow;
@@ -19,8 +19,8 @@ typedef struct EnRuppecrow {
/* 0x194 */ SkelAnime skelAnime;
/* 0x1D8 */ EnRuppecrowActionFunc actionFunc;
/* 0x1DC */ UNK_TYPE4 unk_1DC; // unused
/* 0x1E0 */ Vec3s joinTable[ENRUPPECROW_LIMB_COUNT];
/* 0x216 */ Vec3s morphTable[ENRUPPECROW_LIMB_COUNT];
/* 0x1E0 */ Vec3s joinTable[OBJECT_CROW_LIMB_MAX];
/* 0x216 */ Vec3s morphTable[OBJECT_CROW_LIMB_MAX];
/* 0x24C */ Path* path;
/* 0x250 */ s32 currentPoint;
/* 0x254 */ ColliderJntSph collider;
@@ -95,8 +95,8 @@ void EnSyatekiCrow_Init(Actor* thisx, GlobalContext* globalCtx2) {
}
Actor_ProcessInitChain(&this->actor, sInitChain);
SkelAnime_InitFlex(globalCtx, &this->skelAnime, &object_crow_Skel_0010C0, &object_crow_Anim_0000F0,
this->jointTable, this->morphTable, 9);
SkelAnime_InitFlex(globalCtx, &this->skelAnime, &gGuaySkel, &gGuayFlyAnim, this->jointTable, this->morphTable,
OBJECT_CROW_LIMB_MAX);
Collider_InitJntSph(globalCtx, &this->unk_23C);
Collider_SetJntSph(globalCtx, &this->unk_23C, &this->actor, &sJntSphInit, &this->unk_25C);
this->unk_23C.elements->dim.worldSphere.radius = sJntSphInit.elements[0].dim.modelSphere.radius;
@@ -225,7 +225,7 @@ void func_809CAAF8(EnSyatekiCrow* this) {
this->unk_1C2 = 0;
this->actor.speedXZ *= Math_CosS(this->actor.world.rot.x);
this->actor.velocity.y = 0.0f;
Animation_Change(&this->skelAnime, &object_crow_Anim_0000F0, 0.4f, 0.0f, 0.0f, 1, -3.0f);
Animation_Change(&this->skelAnime, &gGuayFlyAnim, 0.4f, 0.0f, 0.0f, 1, -3.0f);
this->actor.bgCheckFlags &= ~1;
Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_KAICHO_DEAD);
Actor_SetColorFilter(&this->actor, 0x4000, 255, 0, 40);
@@ -290,9 +290,9 @@ s32 EnSyatekiCrow_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx*
Actor* thisx) {
EnSyatekiCrow* this = THIS;
if (limbIndex == OBJECT_CROW_LIMB_07) {
if (limbIndex == OBJECT_CROW_LIMB_UPPER_TAIL) {
rot->y += (s16)(3072.0f * sin_rad(this->skelAnime.curFrame * (M_PI / 4)));
} else if (limbIndex == OBJECT_CROW_LIMB_08) {
} else if (limbIndex == OBJECT_CROW_LIMB_TAIL) {
rot->y += (s16)(5120.0f * sin_rad((this->skelAnime.curFrame + 2.5f) * (M_PI / 4)));
}
@@ -303,11 +303,11 @@ void EnSyatekiCrow_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** d
EnSyatekiCrow* this = THIS;
Vec3f* sp1C;
if (limbIndex == OBJECT_CROW_LIMB_02) {
if (limbIndex == OBJECT_CROW_LIMB_BODY) {
Matrix_MultiplyVector3fByState(&D_809CB0D8, &this->unk_144[0]);
this->unk_144[0].y -= 20.0f;
} else if ((limbIndex == OBJECT_CROW_LIMB_04) || (limbIndex == OBJECT_CROW_LIMB_06) ||
(limbIndex == OBJECT_CROW_LIMB_08)) {
} else if ((limbIndex == OBJECT_CROW_LIMB_RIGHT_WING_TIP) || (limbIndex == OBJECT_CROW_LIMB_LEFT_WING_TIP) ||
(limbIndex == OBJECT_CROW_LIMB_TAIL)) {
sp1C = &this->unk_144[(limbIndex >> 1) - 1];
Matrix_MultiplyVector3fByState(&D_809CB050, sp1C);
sp1C->y -= 20.0f;
+16 -16
View File
@@ -8573,23 +8573,23 @@
0x8099AA84:("func_8099AA84",),
0x8099AB30:("EnCrow_Init",),
0x8099AC2C:("EnCrow_Destroy",),
0x8099AC58:("func_8099AC58",),
0x8099AC8C:("func_8099AC8C",),
0x8099B098:("func_8099B098",),
0x8099B0CC:("func_8099B0CC",),
0x8099B318:("func_8099B318",),
0x8099B384:("func_8099B384",),
0x8099B584:("func_8099B584",),
0x8099B6AC:("func_8099B6AC",),
0x8099B6C4:("func_8099B6C4",),
0x8099B778:("func_8099B778",),
0x8099B838:("func_8099B838",),
0x8099B8EC:("func_8099B8EC",),
0x8099B9E8:("func_8099B9E8",),
0x8099BAB4:("func_8099BAB4",),
0x8099AC58:("EnCrow_SetupFlyIdle",),
0x8099AC8C:("EnCrow_FlyIdle",),
0x8099B098:("EnCrow_SetupDiveAttack",),
0x8099B0CC:("EnCrow_DiveAttack",),
0x8099B318:("EnCrow_CheckIfFrozen",),
0x8099B384:("EnCrow_SetupDamaged",),
0x8099B584:("EnCrow_Damaged",),
0x8099B6AC:("EnCrow_SetupDie",),
0x8099B6C4:("EnCrow_Die",),
0x8099B778:("EnCrow_SetupTurnAway",),
0x8099B838:("EnCrow_TurnAway",),
0x8099B8EC:("EnCrow_SetupRespawn",),
0x8099B9E8:("EnCrow_Respawn",),
0x8099BAB4:("EnCrow_UpdateDamage",),
0x8099BB84:("EnCrow_Update",),
0x8099BE48:("func_8099BE48",),
0x8099BF20:("func_8099BF20",),
0x8099BE48:("EnCrow_OverrideLimbDraw",),
0x8099BF20:("EnCrow_PostLimbDraw",),
0x8099BFA4:("EnCrow_Draw",),
0x8099C290:("func_8099C290",),
0x8099C328:("func_8099C328",),