diff --git a/assets/xml/objects/object_gol.xml b/assets/xml/objects/object_gol.xml index 48978799ae..7e04508cb6 100644 --- a/assets/xml/objects/object_gol.xml +++ b/assets/xml/objects/object_gol.xml @@ -1,54 +1,59 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/overlays/actors/ovl_En_Goma/z_en_goma.c b/src/overlays/actors/ovl_En_Goma/z_en_goma.c index 1473c35858..2fdae983d7 100644 --- a/src/overlays/actors/ovl_En_Goma/z_en_goma.c +++ b/src/overlays/actors/ovl_En_Goma/z_en_goma.c @@ -1,5 +1,6 @@ #include "z_en_goma.h" #include "objects/gameplay_dangeon_keep/gameplay_dangeon_keep.h" +#include "objects/object_gol/object_gol.h" #include "overlays/actors/ovl_Boss_Goma/z_boss_goma.h" #include "overlays/effects/ovl_Effect_Ss_Hahen/z_eff_ss_hahen.h" @@ -43,17 +44,6 @@ void EnGoma_SetupLand(EnGoma* this); void EnGoma_SetupJump(EnGoma* this); void EnGoma_SetupStunned(EnGoma* this, GlobalContext* globalCtx); -extern AnimationHeader D_0600017C; -extern AnimationHeader D_06000334; -extern AnimationHeader D_06000544; -extern AnimationHeader D_06000838; -extern AnimationHeader D_06000B78; -extern AnimationHeader D_06000E4C; -extern AnimationHeader D_06001548; -extern Gfx D_06002A70[]; // Egg DL -extern SkeletonHeader D_06003B40; -extern AnimationHeader D_06003D78; - const ActorInit En_Goma_InitVars = { ACTOR_BOSS_GOMA, ACTORCAT_ENEMY, @@ -148,8 +138,9 @@ void EnGoma_Init(Actor* thisx, GlobalContext* globalCtx) { ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 0.0f); } else { // Egg ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 40.0f); - SkelAnime_Init(globalCtx, &this->skelanime, &D_06003B40, &D_06001548, this->jointTable, this->morphTable, 24); - Animation_PlayLoop(&this->skelanime, &D_06001548); + SkelAnime_Init(globalCtx, &this->skelanime, &gObjectGolSkel, &gObjectGolStandAnim, this->jointTable, + this->morphTable, GOMA_LIMB_MAX); + Animation_PlayLoop(&this->skelanime, &gObjectGolStandAnim); this->actor.colChkInfo.health = 2; if (this->actor.params < 3) { // Spawned by boss @@ -190,8 +181,8 @@ void EnGoma_Destroy(Actor* thisx, GlobalContext* globalCtx) { } void EnGoma_SetupFlee(EnGoma* this) { - Animation_Change(&this->skelanime, &D_06003D78, 2.0f, 0.0f, Animation_GetLastFrame(&D_06003D78), ANIMMODE_LOOP, - -2.0f); + Animation_Change(&this->skelanime, &gObjectGolRunningAnim, 2.0f, 0.0f, + Animation_GetLastFrame(&gObjectGolRunningAnim), ANIMMODE_LOOP, -2.0f); this->actionFunc = EnGoma_Flee; this->actionTimer = 20; @@ -306,8 +297,8 @@ void EnGoma_Egg(EnGoma* this, GlobalContext* globalCtx) { } void EnGoma_SetupHatch(EnGoma* this, GlobalContext* globalCtx) { - Animation_Change(&this->skelanime, &D_06000544, 1.0f, 0.0f, Animation_GetLastFrame(&D_06000544), ANIMMODE_ONCE, - 0.0f); + Animation_Change(&this->skelanime, &gObjectGolJumpHeadbuttAnim, 1.0f, 0.0f, + Animation_GetLastFrame(&gObjectGolJumpHeadbuttAnim), ANIMMODE_ONCE, 0.0f); this->actionFunc = EnGoma_Hatch; Actor_SetScale(&this->actor, 0.005f); this->gomaType = ENGOMA_NORMAL; @@ -327,8 +318,8 @@ void EnGoma_Hatch(EnGoma* this, GlobalContext* globalCtx) { } void EnGoma_SetupHurt(EnGoma* this, GlobalContext* globalCtx) { - Animation_Change(&this->skelanime, &D_06000838, 1.0f, 0.0f, Animation_GetLastFrame(&D_06000838), ANIMMODE_ONCE, - -2.0f); + Animation_Change(&this->skelanime, &gObjectGolDamagedAnim, 1.0f, 0.0f, + Animation_GetLastFrame(&gObjectGolDamagedAnim), ANIMMODE_ONCE, -2.0f); this->actionFunc = EnGoma_Hurt; if ((s8)this->actor.colChkInfo.health <= 0) { @@ -364,8 +355,8 @@ void EnGoma_Hurt(EnGoma* this, GlobalContext* globalCtx) { } void EnGoma_SetupDie(EnGoma* this) { - Animation_Change(&this->skelanime, &D_06000B78, 1.0f, 0.0f, Animation_GetLastFrame(&D_06000B78), ANIMMODE_ONCE, - -2.0f); + Animation_Change(&this->skelanime, &gObjectGolDeathAnim, 1.0f, 0.0f, Animation_GetLastFrame(&gObjectGolDeathAnim), + ANIMMODE_ONCE, -2.0f); this->actionFunc = EnGoma_Die; this->actionTimer = 30; @@ -400,8 +391,8 @@ void EnGoma_Die(EnGoma* this, GlobalContext* globalCtx) { } void EnGoma_SetupDead(EnGoma* this) { - Animation_Change(&this->skelanime, &D_06000334, 1.0f, 0.0f, Animation_GetLastFrame(&D_06000334), ANIMMODE_LOOP, - -2.0f); + Animation_Change(&this->skelanime, &gObjectGolDeadTwitchingAnim, 1.0f, 0.0f, + Animation_GetLastFrame(&gObjectGolDeadTwitchingAnim), ANIMMODE_LOOP, -2.0f); this->actionFunc = EnGoma_Dead; this->actionTimer = 3; } @@ -437,23 +428,23 @@ void EnGoma_Dead(EnGoma* this, GlobalContext* globalCtx) { void EnGoma_SetupStand(EnGoma* this) { f32 lastFrame; - lastFrame = Animation_GetLastFrame(&D_06001548); + lastFrame = Animation_GetLastFrame(&gObjectGolStandAnim); this->actionTimer = Rand_S16Offset(10, 30); - Animation_Change(&this->skelanime, &D_06001548, 1.0f, 0.0f, lastFrame, ANIMMODE_LOOP, -5.0f); + Animation_Change(&this->skelanime, &gObjectGolStandAnim, 1.0f, 0.0f, lastFrame, ANIMMODE_LOOP, -5.0f); this->actionFunc = EnGoma_Stand; this->gomaType = ENGOMA_NORMAL; } void EnGoma_SetupChasePlayer(EnGoma* this) { - Animation_Change(&this->skelanime, &D_06003D78, 1.0f, 0.0f, Animation_GetLastFrame(&D_06003D78), ANIMMODE_LOOP, - -5.0f); + Animation_Change(&this->skelanime, &gObjectGolRunningAnim, 1.0f, 0.0f, + Animation_GetLastFrame(&gObjectGolRunningAnim), ANIMMODE_LOOP, -5.0f); this->actionFunc = EnGoma_ChasePlayer; this->actionTimer = Rand_S16Offset(70, 110); } void EnGoma_SetupPrepareJump(EnGoma* this) { - Animation_Change(&this->skelanime, &D_06000E4C, 1.0f, 0.0f, Animation_GetLastFrame(&D_06000E4C), ANIMMODE_ONCE, - -5.0f); + Animation_Change(&this->skelanime, &gObjectGolPrepareJumpAnim, 1.0f, 0.0f, + Animation_GetLastFrame(&gObjectGolPrepareJumpAnim), ANIMMODE_ONCE, -5.0f); this->actionFunc = EnGoma_PrepareJump; this->actionTimer = 30; } @@ -475,8 +466,8 @@ void EnGoma_PrepareJump(EnGoma* this, GlobalContext* globalCtx) { } void EnGoma_SetupLand(EnGoma* this) { - Animation_Change(&this->skelanime, &D_0600017C, 1.0f, 0.0f, Animation_GetLastFrame(&D_0600017C), ANIMMODE_ONCE, - 0.0f); + Animation_Change(&this->skelanime, &gObjectGolLandFromJumpAnim, 1.0f, 0.0f, + Animation_GetLastFrame(&gObjectGolLandFromJumpAnim), ANIMMODE_ONCE, 0.0f); this->actionFunc = EnGoma_Land; this->actionTimer = 10; } @@ -493,8 +484,8 @@ void EnGoma_Land(EnGoma* this, GlobalContext* globalCtx) { } void EnGoma_SetupJump(EnGoma* this) { - Animation_Change(&this->skelanime, &D_06000544, 1.0f, 0.0f, Animation_GetLastFrame(&D_06000544), ANIMMODE_ONCE, - 0.0f); + Animation_Change(&this->skelanime, &gObjectGolJumpHeadbuttAnim, 1.0f, 0.0f, + Animation_GetLastFrame(&gObjectGolJumpHeadbuttAnim), ANIMMODE_ONCE, 0.0f); this->actionFunc = EnGoma_Jump; this->actor.velocity.y = 8.0f; @@ -557,7 +548,7 @@ void EnGoma_ChasePlayer(EnGoma* this, GlobalContext* globalCtx) { void EnGoma_SetupStunned(EnGoma* this, GlobalContext* globalCtx) { this->actionFunc = EnGoma_Stunned; this->stunTimer = 100; - Animation_MorphToLoop(&this->skelanime, &D_06001548, -5.0f); + Animation_MorphToLoop(&this->skelanime, &gObjectGolStandAnim, -5.0f); this->actionTimer = (s16)Rand_ZeroFloat(15.0f) + 3; if (this->actor.params < 6) { @@ -759,10 +750,10 @@ s32 EnGoma_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList gDPSetEnvColor(POLY_OPA_DISP++, (s16)this->eyeEnvColor[0], (s16)this->eyeEnvColor[1], (s16)this->eyeEnvColor[2], 255); - if (limbIndex == 7) { + if (limbIndex == GOMA_LIMB_EYE_IRIS_ROOT1) { rot->x += this->eyePitch; rot->y += this->eyeYaw; - } else if (limbIndex == 3 && this->hurtTimer != 0) { + } else if (limbIndex == GOMA_LIMB_BODY && this->hurtTimer != 0) { gDPSetEnvColor(POLY_OPA_DISP++, (s16)(Rand_ZeroOne() * 255.0f), (s16)(Rand_ZeroOne() * 255.0f), (s16)(Rand_ZeroOne() * 255.0f), 255); } @@ -825,7 +816,7 @@ void EnGoma_Draw(Actor* thisx, GlobalContext* globalCtx) { Matrix_RotateX(this->eggPitch, MTXMODE_APPLY); gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_en_goma.c", 2101), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_OPA_DISP++, D_06002A70); + gSPDisplayList(POLY_OPA_DISP++, gObjectGolEggDL); Matrix_Pop(); break; diff --git a/src/overlays/actors/ovl_En_Goma/z_en_goma.h b/src/overlays/actors/ovl_En_Goma/z_en_goma.h index 3f8d6c1336..842a15fe11 100644 --- a/src/overlays/actors/ovl_En_Goma/z_en_goma.h +++ b/src/overlays/actors/ovl_En_Goma/z_en_goma.h @@ -15,6 +15,34 @@ struct EnGoma; typedef void (*EnGomaActionFunc)(struct EnGoma*, GlobalContext*); +typedef enum { + /* 0 */ GOMA_LIMB_NONE, + /* 1 */ GOMA_LIMB_ROOT1, + /* 2 */ GOMA_LIMB_ROOT2, + /* 3 */ GOMA_LIMB_BODY, + /* 4 */ GOMA_LIMB_ANTENNA_ROOT1, + /* 5 */ GOMA_LIMB_ANTENNA_ROOT2, + /* 6 */ GOMA_LIMB_ANTENNA, + /* 7 */ GOMA_LIMB_EYE_IRIS_ROOT1, + /* 8 */ GOMA_LIMB_EYE_IRIS_ROOT2, + /* 9 */ GOMA_LIMB_EYE_IRIS, + /* 10 */ GOMA_LIMB_L_LEG_ROOT1, + /* 11 */ GOMA_LIMB_L_LEG_ROOT2, + /* 12 */ GOMA_LIMB_L_SHIN_ROOT, + /* 13 */ GOMA_LIMB_L_FOOT_ROOT, + /* 14 */ GOMA_LIMB_L_FOOT, + /* 15 */ GOMA_LIMB_L_SHIN, + /* 16 */ GOMA_LIMB_L_THIGH, + /* 17 */ GOMA_LIMB_R_LEG_ROOT1, + /* 18 */ GOMA_LIMB_R_LEG_ROOT2, + /* 19 */ GOMA_LIMB_R_SHIN_ROOT, + /* 20 */ GOMA_LIMB_R_FOOT_ROOT, + /* 21 */ GOMA_LIMB_R_FOOT, + /* 22 */ GOMA_LIMB_R_SHIN, + /* 23 */ GOMA_LIMB_R_THIGH, + /* 24 */ GOMA_LIMB_MAX +} EnGomaLimb; + typedef struct EnGoma { /* 0x000 */ Actor actor; /* 0x14C */ SkelAnime skelanime; diff --git a/undefined_syms.txt b/undefined_syms.txt index de184bc887..17af8475e0 100644 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -1415,19 +1415,6 @@ D_0600FD50 = 0x0600FD50; D_0600FEF0 = 0x0600FEF0; D_06010590 = 0x06010590; - -// z_en_goma -D_0600017C = 0x0600017C; -D_06000334 = 0x06000334; -D_06000544 = 0x06000544; -D_06000838 = 0x06000838; -D_06000B78 = 0x06000B78; -D_06000E4C = 0x06000E4C; -D_06001548 = 0x06001548; -D_06002A70 = 0x06002A70; -D_06003B40 = 0x06003B40; -D_06003D78 = 0x06003D78; - // z_en_g_switch D_060017C0 = 0x060017C0; D_06001960 = 0x06001960;