mirror of https://github.com/zeldaret/mm.git
parent
7ea2474b71
commit
cabb14e4b7
|
@ -0,0 +1,7 @@
|
|||
<Root>
|
||||
<File Name="ovl_Obj_Smork" BaseAddress="0x80A3D680" RangeStart="0x0C10" RangeEnd="0x0C80">
|
||||
<Array Name="ovl_Obj_Smork_Vtx_000C10" Count="7" Offset="0xC10">
|
||||
<Vtx/>
|
||||
</Array>
|
||||
</File>
|
||||
</Root>
|
3
spec
3
spec
|
@ -2788,8 +2788,7 @@ beginseg
|
|||
name "ovl_Obj_Smork"
|
||||
compress
|
||||
include "build/src/overlays/actors/ovl_Obj_Smork/z_obj_smork.o"
|
||||
include "build/data/ovl_Obj_Smork/ovl_Obj_Smork.data.o"
|
||||
include "build/data/ovl_Obj_Smork/ovl_Obj_Smork.reloc.o"
|
||||
include "build/src/overlays/actors/ovl_Obj_Smork/ovl_Obj_Smork_reloc.o"
|
||||
endseg
|
||||
|
||||
beginseg
|
||||
|
|
|
@ -66,7 +66,7 @@ typedef enum {
|
|||
|
||||
typedef struct EnKanban {
|
||||
/* 0x000 */ Actor actor;
|
||||
/* 0x144 */ UNK_TYPE1 unk144[4]; // actionFunc?
|
||||
/* 0x144 */ UNK_TYPE1 unk_144[4]; // actionFunc?
|
||||
/* 0x148 */ u8 frameCount;
|
||||
/* 0x14A */ s16 airTimer;
|
||||
/* 0x14C */ u8 actionState;
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
*/
|
||||
|
||||
#include "z_obj_smork.h"
|
||||
#include "objects/object_f53_obj/object_f53_obj.h"
|
||||
|
||||
#define FLAGS (ACTOR_FLAG_10 | ACTOR_FLAG_20)
|
||||
|
||||
|
@ -15,7 +16,6 @@ void ObjSmork_Destroy(Actor* thisx, GlobalContext* globalCtx);
|
|||
void ObjSmork_Update(Actor* thisx, GlobalContext* globalCtx);
|
||||
void ObjSmork_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
|
||||
#if 0
|
||||
const ActorInit Obj_Smork_InitVars = {
|
||||
ACTOR_OBJ_SMORK,
|
||||
ACTORCAT_PROP,
|
||||
|
@ -28,20 +28,125 @@ const ActorInit Obj_Smork_InitVars = {
|
|||
(ActorFunc)ObjSmork_Draw,
|
||||
};
|
||||
|
||||
#endif
|
||||
#include "overlays/ovl_Obj_Smork/ovl_Obj_Smork.c"
|
||||
|
||||
extern UNK_TYPE D_06001C00;
|
||||
u8 func_80A3D680(s16 arg0) {
|
||||
u8 ret = 0;
|
||||
s16 temp_f18 = TIME_TO_MINUTES_F(gSaveContext.save.time);
|
||||
s32 hours = temp_f18 / 60;
|
||||
s32 minutes = temp_f18 % 60;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Smork/func_80A3D680.s")
|
||||
if (hours >= 16) {
|
||||
if ((hours == 16) && (minutes < arg0)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Smork/func_80A3D940.s")
|
||||
if (hours >= 20) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Smork/func_80A3D9C4.s")
|
||||
if ((hours == 19) && (arg0 < minutes)) {
|
||||
return 0;
|
||||
}
|
||||
ret = 3;
|
||||
} else if (hours >= 11) {
|
||||
if ((hours == 11) && (minutes < arg0)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Smork/ObjSmork_Init.s")
|
||||
if (hours >= 14) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Smork/ObjSmork_Destroy.s")
|
||||
if ((hours == 13) && (arg0 < minutes)) {
|
||||
return 0;
|
||||
}
|
||||
ret = 2;
|
||||
} else if (hours >= 6) {
|
||||
if ((hours == 6) && (minutes < arg0)) {
|
||||
return 0;
|
||||
}
|
||||
if (hours >= 9) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Smork/ObjSmork_Update.s")
|
||||
if ((hours == 8) && (arg0 < minutes)) {
|
||||
return 0;
|
||||
}
|
||||
ret = 1;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Smork/ObjSmork_Draw.s")
|
||||
return ret;
|
||||
}
|
||||
|
||||
void func_80A3D940(ObjSmork* this) {
|
||||
u8 temp_v0 = func_80A3D680(this->unk_1C6);
|
||||
|
||||
if (temp_v0 != this->unk_1C4) {
|
||||
this->unk_1C4 = temp_v0;
|
||||
this->unk_1C6 = Rand_S16Offset(0, 59);
|
||||
}
|
||||
|
||||
Math_ApproachF(&this->unk_1B8, (this->unk_1C4 == 0) ? 0.0f : 1.0f, 0.02f, 1000.0f);
|
||||
}
|
||||
|
||||
void func_80A3D9C4(ObjSmork* this, GlobalContext* globalCtx) {
|
||||
u8 sp57;
|
||||
u8 sp56;
|
||||
s32 i;
|
||||
|
||||
this->unk_1BC += 1.8f;
|
||||
this->unk_1C0 += 0.6f;
|
||||
|
||||
sp57 = 127 - (u8)this->unk_1BC;
|
||||
sp56 = 127 - (u8)this->unk_1C0;
|
||||
|
||||
this->unk_1B8 = CLAMP(this->unk_1B8, 0.0f, 1.0f);
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(this->unk_148); i++) {
|
||||
this->unk_148[i].v.cn[3] = ovl_Obj_Smork_Vtx_000C10[i].v.cn[3] * this->unk_1B8;
|
||||
}
|
||||
|
||||
if (this->unk_1B8 > 0.0f) {
|
||||
Matrix_InsertTranslation(this->actor.world.pos.x, this->actor.world.pos.y, this->actor.world.pos.z,
|
||||
MTXMODE_NEW);
|
||||
this->actor.shape.rot.y = BINANG_ROT180(Camera_GetCamDirYaw(GET_ACTIVE_CAM(globalCtx)));
|
||||
Matrix_RotateY(this->actor.shape.rot.y, MTXMODE_APPLY);
|
||||
Matrix_Scale(0.1f, 0.1f, 0.0f, MTXMODE_APPLY);
|
||||
|
||||
OPEN_DISPS(globalCtx->state.gfxCtx);
|
||||
|
||||
func_8012C28C(globalCtx->state.gfxCtx);
|
||||
|
||||
gSPSegment(POLY_XLU_DISP++, 0x08,
|
||||
Gfx_TwoTexScroll(globalCtx->state.gfxCtx, 0, 0, sp57, 0x20, 0x20, 1, 0, sp56, 0x20, 0x20));
|
||||
gSPSegment(POLY_XLU_DISP++, 0x09, Lib_SegmentedToVirtual(this->unk_148));
|
||||
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(POLY_XLU_DISP++, object_f53_obj_DL_001C00);
|
||||
|
||||
CLOSE_DISPS(globalCtx->state.gfxCtx);
|
||||
}
|
||||
}
|
||||
|
||||
void ObjSmork_Init(Actor* thisx, GlobalContext* globalCtx) {
|
||||
ObjSmork* this = THIS;
|
||||
|
||||
Lib_MemCpy(this->unk_148, ovl_Obj_Smork_Vtx_000C10, sizeof(Vtx) * ARRAY_COUNT(ovl_Obj_Smork_Vtx_000C10));
|
||||
this->unk_1C6 = Rand_S16Offset(0, 59);
|
||||
this->unk_1C4 = 0;
|
||||
}
|
||||
|
||||
void ObjSmork_Destroy(Actor* thisx, GlobalContext* globalCtx) {
|
||||
}
|
||||
|
||||
void ObjSmork_Update(Actor* thisx, GlobalContext* globalCtx) {
|
||||
ObjSmork* this = THIS;
|
||||
|
||||
func_80A3D940(this);
|
||||
}
|
||||
|
||||
void ObjSmork_Draw(Actor* thisx, GlobalContext* globalCtx) {
|
||||
ObjSmork* this = THIS;
|
||||
|
||||
func_80A3D9C4(this, globalCtx);
|
||||
}
|
||||
|
|
|
@ -7,7 +7,13 @@ struct ObjSmork;
|
|||
|
||||
typedef struct ObjSmork {
|
||||
/* 0x000 */ Actor actor;
|
||||
/* 0x144 */ char unk_144[0x84];
|
||||
/* 0x144 */ UNK_TYPE1 unk_144[4];
|
||||
/* 0x148 */ Vtx unk_148[7];
|
||||
/* 0x1B8 */ f32 unk_1B8;
|
||||
/* 0x1BC */ f32 unk_1BC;
|
||||
/* 0x1C0 */ f32 unk_1C0;
|
||||
/* 0x1C4 */ u8 unk_1C4;
|
||||
/* 0x1C6 */ s16 unk_1C6;
|
||||
} ObjSmork; // size = 0x1C8
|
||||
|
||||
extern const ActorInit Obj_Smork_InitVars;
|
||||
|
|
|
@ -1721,10 +1721,6 @@ D_060048D0 = 0x060048D0;
|
|||
|
||||
D_060011E0 = 0x060011E0;
|
||||
|
||||
// ovl_Obj_Smork
|
||||
|
||||
D_06001C00 = 0x06001C00;
|
||||
|
||||
// ovl_Obj_Takaraya_Wall
|
||||
|
||||
D_06000B70 = 0x06000B70;
|
||||
|
|
Loading…
Reference in New Issue