diff --git a/assets/xml/objects/gameplay_keep.xml b/assets/xml/objects/gameplay_keep.xml index 1e42a845f1..7e30cfdb19 100644 --- a/assets/xml/objects/gameplay_keep.xml +++ b/assets/xml/objects/gameplay_keep.xml @@ -1004,15 +1004,15 @@ - - - - - - - - - + + + + + + + + + diff --git a/spec b/spec index 53b6cbf8f3..f4fd4589f2 100644 --- a/spec +++ b/spec @@ -1823,8 +1823,7 @@ beginseg name "ovl_Effect_Ss_G_Fire" compress include "build/src/overlays/effects/ovl_Effect_Ss_G_Fire/z_eff_ss_g_fire.o" - include "build/data/ovl_Effect_Ss_G_Fire/ovl_Effect_Ss_G_Fire.data.o" - include "build/data/ovl_Effect_Ss_G_Fire/ovl_Effect_Ss_G_Fire.reloc.o" + include "build/src/overlays/effects/ovl_Effect_Ss_G_Fire/ovl_Effect_Ss_G_Fire_reloc.o" endseg beginseg diff --git a/src/overlays/effects/ovl_Effect_Ss_G_Fire/z_eff_ss_g_fire.c b/src/overlays/effects/ovl_Effect_Ss_G_Fire/z_eff_ss_g_fire.c index 65b8a76ac2..7bc2d6966e 100644 --- a/src/overlays/effects/ovl_Effect_Ss_G_Fire/z_eff_ss_g_fire.c +++ b/src/overlays/effects/ovl_Effect_Ss_G_Fire/z_eff_ss_g_fire.c @@ -1,27 +1,59 @@ /* * File: z_eff_ss_g_fire.c * Overlay: ovl_Effect_Ss_G_Fire - * Description: + * Description: Flame Footprints */ #include "z_eff_ss_g_fire.h" +#include "objects/gameplay_keep/gameplay_keep.h" #define PARAMS ((EffectSsGFireInitParams*)initParamsx) -s32 EffectSsGFire_Init(PlayState* play, u32 index, EffectSs* this, void* initParamsx); +u32 EffectSsGFire_Init(PlayState* play, u32 index, EffectSs* this, void* initParamsx); void EffectSsGFire_Update(PlayState* play, u32 index, EffectSs* this); void EffectSsGFire_Draw(PlayState* play, u32 index, EffectSs* this); -#if 0 const EffectSsInit Effect_Ss_G_Fire_InitVars = { EFFECT_SS_G_FIRE, EffectSsGFire_Init, }; -#endif +u32 EffectSsGFire_Init(PlayState* play, u32 index, EffectSs* this, void* initParamsx) { + EffectSsGFireInitParams* initParams = PARAMS; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Effect_Ss_G_Fire/EffectSsGFire_Init.s") + Math_Vec3f_Copy(&this->velocity, &gZeroVec3f); + Math_Vec3f_Copy(&this->accel, &gZeroVec3f); + Math_Vec3f_Copy(&this->pos, &initParams->pos); + this->draw = EffectSsGFire_Draw; + this->update = EffectSsGFire_Update; + this->gfx = gEffFireFootprintDL; + this->life = 8; + this->flags = 0; + this->rgScale = 200; + this->rgTexIndex = 0; + this->rgTexIndexStep = 50; + this->rgPrimColorR = 255; + this->rgPrimColorG = 220; + this->rgPrimColorB = 80; + this->rgPrimColorA = 255; + this->rgEnvColorR = 130; + this->rgEnvColorG = 30; + this->rgEnvColorB = 0; + this->rgEnvColorA = 0; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Effect_Ss_G_Fire/EffectSsGFire_Draw.s") + return 1; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Effect_Ss_G_Fire/EffectSsGFire_Update.s") +void EffectSsGFire_Draw(PlayState* play, u32 index, EffectSs* this) { + TexturePtr fireFootprintTextures[] = { + gEffFireFootprint1Tex, gEffFireFootprint2Tex, gEffFireFootprint3Tex, gEffFireFootprint4Tex, + gEffFireFootprint5Tex, gEffFireFootprint6Tex, gEffFireFootprint7Tex, gEffFireFootprint8Tex, + }; + s16 texIndex = (this->rgTexIndex / 100) % 7; + + EffectSs_DrawGEffect(play, this, fireFootprintTextures[texIndex]); +} + +void EffectSsGFire_Update(PlayState* play, u32 index, EffectSs* this) { + this->rgTexIndex += this->rgTexIndexStep; +} diff --git a/undefined_syms.txt b/undefined_syms.txt index a033b9f367..bde45d6f32 100644 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -423,7 +423,6 @@ D_0402F028 = 0x0402F028; D_0402F0EC = 0x0402F0EC; D_04030100 = 0x04030100; D_040301B0 = 0x040301B0; -D_04032270 = 0x04032270; D_040367B0 = 0x040367B0; D_040377B0 = 0x040377B0; D_04037850 = 0x04037850;