mirror of https://github.com/zeldaret/mm.git
ovl_Eff_Kamejima_Wave Decompiled (#908)
* almost there * ovl_Eff_Kamejima_Wave Decompiled * Us removal * minor clean up * pr review * review * sikihi rollback and function name fix * params rename * SetVtxAlpha * params prefix * Jenkins re-run
This commit is contained in:
parent
a22e72acfe
commit
abf70f6dd2
|
@ -1,5 +1,8 @@
|
||||||
<Root>
|
<Root>
|
||||||
<File Name="object_kamejima" Segment="6">
|
<File Name="object_kamejima" Segment="6">
|
||||||
|
<Array Name="object_kamejima_Vtx_000000" Count="20" Offset="0x0">
|
||||||
|
<Vtx/>
|
||||||
|
</Array>
|
||||||
<DList Name="object_kamejima_DL_000140" Offset="0x140" />
|
<DList Name="object_kamejima_DL_000140" Offset="0x140" />
|
||||||
<Texture Name="object_kamejima_Tex_0002D8" OutName="tex_0002D8" Format="i8" Width="32" Height="64" Offset="0x2D8" />
|
<Texture Name="object_kamejima_Tex_0002D8" OutName="tex_0002D8" Format="i8" Width="32" Height="64" Offset="0x2D8" />
|
||||||
<Texture Name="object_kamejima_Tex_000AD8" OutName="tex_000AD8" Format="i8" Width="64" Height="64" Offset="0xAD8" />
|
<Texture Name="object_kamejima_Tex_000AD8" OutName="tex_000AD8" Format="i8" Width="64" Height="64" Offset="0xAD8" />
|
||||||
|
|
4
spec
4
spec
|
@ -4501,9 +4501,7 @@ beginseg
|
||||||
name "ovl_Eff_Kamejima_Wave"
|
name "ovl_Eff_Kamejima_Wave"
|
||||||
compress
|
compress
|
||||||
include "build/src/overlays/actors/ovl_Eff_Kamejima_Wave/z_eff_kamejima_wave.o"
|
include "build/src/overlays/actors/ovl_Eff_Kamejima_Wave/z_eff_kamejima_wave.o"
|
||||||
include "build/data/ovl_Eff_Kamejima_Wave/ovl_Eff_Kamejima_Wave.data.o"
|
include "build/src/overlays/actors/ovl_Eff_Kamejima_Wave/ovl_Eff_Kamejima_Wave_reloc.o"
|
||||||
include "build/data/ovl_Eff_Kamejima_Wave/ovl_Eff_Kamejima_Wave.bss.o"
|
|
||||||
include "build/data/ovl_Eff_Kamejima_Wave/ovl_Eff_Kamejima_Wave.reloc.o"
|
|
||||||
endseg
|
endseg
|
||||||
|
|
||||||
beginseg
|
beginseg
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "z_eff_kamejima_wave.h"
|
#include "z_eff_kamejima_wave.h"
|
||||||
|
#include "objects/object_kamejima/object_kamejima.h"
|
||||||
|
|
||||||
#define FLAGS (ACTOR_FLAG_10)
|
#define FLAGS (ACTOR_FLAG_10)
|
||||||
|
|
||||||
|
@ -13,8 +14,14 @@
|
||||||
void EffKamejimaWave_Init(Actor* thisx, PlayState* play);
|
void EffKamejimaWave_Init(Actor* thisx, PlayState* play);
|
||||||
void EffKamejimaWave_Destroy(Actor* thisx, PlayState* play);
|
void EffKamejimaWave_Destroy(Actor* thisx, PlayState* play);
|
||||||
void EffKamejimaWave_Update(Actor* thisx, PlayState* play);
|
void EffKamejimaWave_Update(Actor* thisx, PlayState* play);
|
||||||
|
void EffKamejimaWave_Draw(Actor* thisx, PlayState* play);
|
||||||
|
|
||||||
|
void func_80BCEC6C(EffKamejimaWave* this, PlayState* play);
|
||||||
|
void func_80BCEDE0(EffKamejimaWave* this, PlayState* play);
|
||||||
|
void func_80BCEBC0(EffKamejimaWave* this, PlayState* play);
|
||||||
|
void func_80BCED34(EffKamejimaWave* this, PlayState* play);
|
||||||
|
void EffKamejimaWave_SetVtxAlpha(u8 alpha);
|
||||||
|
|
||||||
#if 0
|
|
||||||
const ActorInit Eff_Kamejima_Wave_InitVars = {
|
const ActorInit Eff_Kamejima_Wave_InitVars = {
|
||||||
ACTOR_EFF_KAMEJIMA_WAVE,
|
ACTOR_EFF_KAMEJIMA_WAVE,
|
||||||
ACTORCAT_ITEMACTION,
|
ACTORCAT_ITEMACTION,
|
||||||
|
@ -27,26 +34,138 @@ const ActorInit Eff_Kamejima_Wave_InitVars = {
|
||||||
(ActorFunc)NULL,
|
(ActorFunc)NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
static Color_RGBA8 sPrimColors[] = {
|
||||||
|
{ 255, 240, 255, 255 }, { 255, 255, 255, 255 }, { 255, 240, 230, 255 }, { 140, 170, 220, 255 }
|
||||||
|
};
|
||||||
|
static Color_RGBA8 sEnvColors[] = {
|
||||||
|
{ 130, 80, 90, 255 }, { 90, 120, 130, 255 }, { 130, 80, 70, 255 }, { 40, 60, 110, 255 }
|
||||||
|
};
|
||||||
|
|
||||||
extern UNK_TYPE D_06000000;
|
s16 sVtxAlpha;
|
||||||
extern UNK_TYPE D_06000140;
|
AnimatedMaterial* D_80BCF1C4;
|
||||||
extern UNK_TYPE D_06001AF0;
|
|
||||||
|
|
||||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Eff_Kamejima_Wave/EffKamejimaWave_Init.s")
|
void EffKamejimaWave_Init(Actor* thisx, PlayState* play) {
|
||||||
|
EffKamejimaWave* this = THIS;
|
||||||
|
|
||||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Eff_Kamejima_Wave/EffKamejimaWave_Destroy.s")
|
Actor_SetScale(&this->actor, 0.2f);
|
||||||
|
this->actor.scale.y = 0.0f;
|
||||||
|
if (EFFKAMEJIMAWAVE_GET_F(thisx) == EFFKAMEJIMAWAVE_PARAMS_1) {
|
||||||
|
this->actionFunc = func_80BCEDE0;
|
||||||
|
sVtxAlpha = 255;
|
||||||
|
} else {
|
||||||
|
this->actionFunc = func_80BCEC6C;
|
||||||
|
sVtxAlpha = 255;
|
||||||
|
}
|
||||||
|
D_80BCF1C4 = Lib_SegmentedToVirtual(object_kamejima_Matanimheader_001AF0);
|
||||||
|
}
|
||||||
|
|
||||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Eff_Kamejima_Wave/func_80BCEBC0.s")
|
void EffKamejimaWave_Destroy(Actor* thisx, PlayState* play) {
|
||||||
|
}
|
||||||
|
|
||||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Eff_Kamejima_Wave/func_80BCEC6C.s")
|
void func_80BCEBC0(EffKamejimaWave* this, PlayState* play) {
|
||||||
|
this->actor.scale.y += this->scaleOffset;
|
||||||
|
this->scaleOffset -= 0.003f;
|
||||||
|
this->actor.shape.rot.x += 0x64;
|
||||||
|
if (this->scaleOffset < 0.0f) {
|
||||||
|
this->actor.scale.x += 0.003f;
|
||||||
|
}
|
||||||
|
if (this->scaleOffset < -0.01f) {
|
||||||
|
this->scaleOffset = -0.01f;
|
||||||
|
}
|
||||||
|
if (this->actor.scale.y < 0.0f) {
|
||||||
|
this->actor.scale.y = 0.0f;
|
||||||
|
this->actor.scale.x = 0.2f;
|
||||||
|
this->actionFunc = func_80BCEC6C;
|
||||||
|
this->actor.draw = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Eff_Kamejima_Wave/func_80BCED34.s")
|
void func_80BCEC6C(EffKamejimaWave* this, PlayState* play) {
|
||||||
|
if (Cutscene_CheckActorAction(play, 0x1E0)) {
|
||||||
|
Cutscene_ActorTranslateAndYaw(&this->actor, play, Cutscene_GetActorActionIndex(play, 0x1E0));
|
||||||
|
if (play->csCtx.actorActions[Cutscene_GetActorActionIndex(play, 0x1E0)]->action == 2) {
|
||||||
|
this->scaleOffset = 0.05f;
|
||||||
|
this->actionFunc = func_80BCEBC0;
|
||||||
|
this->actor.draw = EffKamejimaWave_Draw;
|
||||||
|
sVtxAlpha = 255;
|
||||||
|
this->actor.shape.rot.x = 0;
|
||||||
|
Actor_PlaySfxAtPos(&this->actor, NA_SE_EV_TORTOISE_WAKE_UP);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this->actor.draw = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Eff_Kamejima_Wave/func_80BCEDE0.s")
|
void func_80BCED34(EffKamejimaWave* this, PlayState* play) {
|
||||||
|
this->actor.scale.y += this->scaleOffset;
|
||||||
|
this->scaleOffset -= 0.002f;
|
||||||
|
this->actor.shape.rot.x += 0x8C;
|
||||||
|
if (this->scaleOffset < 0.0f) {
|
||||||
|
this->actor.scale.x += 0.002f;
|
||||||
|
}
|
||||||
|
if (this->scaleOffset < 0.0f) {
|
||||||
|
this->scaleOffset = 0;
|
||||||
|
}
|
||||||
|
if (sVtxAlpha >= 4) {
|
||||||
|
sVtxAlpha -= 4;
|
||||||
|
} else {
|
||||||
|
this->actor.scale.y = 0.0f;
|
||||||
|
this->actionFunc = func_80BCEDE0;
|
||||||
|
this->actor.draw = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Eff_Kamejima_Wave/EffKamejimaWave_Update.s")
|
void func_80BCEDE0(EffKamejimaWave* this, PlayState* play) {
|
||||||
|
if (Cutscene_CheckActorAction(play, 0x1F6)) {
|
||||||
|
Cutscene_ActorTranslateAndYaw(&this->actor, play, Cutscene_GetActorActionIndex(play, 0x1F6));
|
||||||
|
if (play->csCtx.actorActions[Cutscene_GetActorActionIndex(play, 0x1F6)]->action == 2) {
|
||||||
|
this->scaleOffset = 0.03f;
|
||||||
|
this->actor.scale.x = 0.35f;
|
||||||
|
this->actionFunc = func_80BCED34;
|
||||||
|
this->actor.draw = EffKamejimaWave_Draw;
|
||||||
|
this->actor.shape.rot.x = 0;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this->actor.draw = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Eff_Kamejima_Wave/func_80BCEEBC.s")
|
void EffKamejimaWave_Update(Actor* thisx, PlayState* play) {
|
||||||
|
EffKamejimaWave* this = THIS;
|
||||||
|
|
||||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Eff_Kamejima_Wave/func_80BCEF0C.s")
|
this->actionFunc(this, play);
|
||||||
|
}
|
||||||
|
|
||||||
|
void EffKamejimaWave_SetVtxAlpha(u8 alpha) {
|
||||||
|
Vtx* vtx = Lib_SegmentedToVirtual(&object_kamejima_Vtx_000000);
|
||||||
|
|
||||||
|
vtx[2].v.cn[3] = alpha;
|
||||||
|
vtx[6].v.cn[3] = alpha;
|
||||||
|
vtx[8].v.cn[3] = alpha;
|
||||||
|
vtx[9].v.cn[3] = alpha;
|
||||||
|
vtx[12].v.cn[3] = alpha;
|
||||||
|
vtx[16].v.cn[3] = alpha;
|
||||||
|
vtx[18].v.cn[3] = alpha;
|
||||||
|
vtx[19].v.cn[3] = alpha;
|
||||||
|
}
|
||||||
|
|
||||||
|
void EffKamejimaWave_Draw(Actor* thisx, PlayState* play) {
|
||||||
|
Color_RGBA8 primColor;
|
||||||
|
Color_RGBA8 envColor;
|
||||||
|
|
||||||
|
func_800FE7A8(sPrimColors, &primColor);
|
||||||
|
func_800FE7A8(sEnvColors, &envColor);
|
||||||
|
EffKamejimaWave_SetVtxAlpha(sVtxAlpha);
|
||||||
|
|
||||||
|
OPEN_DISPS(play->state.gfxCtx);
|
||||||
|
|
||||||
|
func_8012C2DC(play->state.gfxCtx);
|
||||||
|
Matrix_Scale(6.0f, 5.0f, 5.0f, MTXMODE_APPLY);
|
||||||
|
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||||
|
AnimatedMat_Draw(play, D_80BCF1C4);
|
||||||
|
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0x80, primColor.r, primColor.g, primColor.b, 255);
|
||||||
|
gDPSetEnvColor(POLY_XLU_DISP++, envColor.r, envColor.g, envColor.b, 255);
|
||||||
|
gSPDisplayList(POLY_XLU_DISP++, object_kamejima_DL_000140);
|
||||||
|
|
||||||
|
CLOSE_DISPS(play->state.gfxCtx);
|
||||||
|
}
|
||||||
|
|
|
@ -3,16 +3,24 @@
|
||||||
|
|
||||||
#include "global.h"
|
#include "global.h"
|
||||||
|
|
||||||
|
#define EFFKAMEJIMAWAVE_GET_F(thisx) ((thisx)->params & 0xF)
|
||||||
|
|
||||||
struct EffKamejimaWave;
|
struct EffKamejimaWave;
|
||||||
|
|
||||||
typedef void (*EffKamejimaWaveActionFunc)(struct EffKamejimaWave*, PlayState*);
|
typedef void (*EffKamejimaWaveActionFunc)(struct EffKamejimaWave*, PlayState*);
|
||||||
|
|
||||||
typedef struct EffKamejimaWave {
|
typedef struct EffKamejimaWave {
|
||||||
/* 0x000 */ Actor actor;
|
/* 0x000 */ Actor actor;
|
||||||
/* 0x144 */ char unk_144[0x8];
|
/* 0x144 */ f32 scaleOffset;
|
||||||
|
/* 0x148 */ UNK_TYPE1 pad148[4];
|
||||||
/* 0x14C */ EffKamejimaWaveActionFunc actionFunc;
|
/* 0x14C */ EffKamejimaWaveActionFunc actionFunc;
|
||||||
} EffKamejimaWave; // size = 0x150
|
} EffKamejimaWave; // size = 0x150
|
||||||
|
|
||||||
|
typedef enum params {
|
||||||
|
/* 0x0 */ EFFKAMEJIMAWAVE_PARAMS_0,
|
||||||
|
/* 0x1 */ EFFKAMEJIMAWAVE_PARAMS_1
|
||||||
|
} EffKamejimaWaveParams;
|
||||||
|
|
||||||
extern const ActorInit Eff_Kamejima_Wave_InitVars;
|
extern const ActorInit Eff_Kamejima_Wave_InitVars;
|
||||||
|
|
||||||
#endif // Z_EFF_KAMEJIMA_WAVE_H
|
#endif // Z_EFF_KAMEJIMA_WAVE_H
|
||||||
|
|
|
@ -15668,8 +15668,8 @@
|
||||||
0x80BCED34:("func_80BCED34",),
|
0x80BCED34:("func_80BCED34",),
|
||||||
0x80BCEDE0:("func_80BCEDE0",),
|
0x80BCEDE0:("func_80BCEDE0",),
|
||||||
0x80BCEE98:("EffKamejimaWave_Update",),
|
0x80BCEE98:("EffKamejimaWave_Update",),
|
||||||
0x80BCEEBC:("func_80BCEEBC",),
|
0x80BCEEBC:("EffKamejimaWave_SetVtxAlpha",),
|
||||||
0x80BCEF0C:("func_80BCEF0C",),
|
0x80BCEF0C:("EffKamejimaWave_Draw",),
|
||||||
0x80BCF1D0:("EnHg_Init",),
|
0x80BCF1D0:("EnHg_Init",),
|
||||||
0x80BCF328:("EnHg_Destroy",),
|
0x80BCF328:("EnHg_Destroy",),
|
||||||
0x80BCF354:("func_80BCF354",),
|
0x80BCF354:("func_80BCF354",),
|
||||||
|
|
|
@ -15824,7 +15824,7 @@
|
||||||
0x80BCF0C0:("D_80BCF0C0","f32","",0x4),
|
0x80BCF0C0:("D_80BCF0C0","f32","",0x4),
|
||||||
0x80BCF0C4:("D_80BCF0C4","f32","",0x4),
|
0x80BCF0C4:("D_80BCF0C4","f32","",0x4),
|
||||||
0x80BCF0C8:("D_80BCF0C8","f32","",0x4),
|
0x80BCF0C8:("D_80BCF0C8","f32","",0x4),
|
||||||
0x80BCF1C0:("D_80BCF1C0","UNK_TYPE1","",0x1),
|
0x80BCF1C0:("sVtxAlpha","UNK_TYPE1","",0x1),
|
||||||
0x80BCF1C1:("D_80BCF1C1","UNK_TYPE1","",0x1),
|
0x80BCF1C1:("D_80BCF1C1","UNK_TYPE1","",0x1),
|
||||||
0x80BCF1C4:("D_80BCF1C4","UNK_TYPE1","",0x1),
|
0x80BCF1C4:("D_80BCF1C4","UNK_TYPE1","",0x1),
|
||||||
0x80BCFF90:("En_Hg_InitVars","UNK_TYPE1","",0x1),
|
0x80BCFF90:("En_Hg_InitVars","UNK_TYPE1","",0x1),
|
||||||
|
|
Loading…
Reference in New Issue