mirror of
https://github.com/zeldaret/mm.git
synced 2024-11-23 21:09:52 +00:00
EnTuboTrap and EnWeatherTag OK (#220)
This commit is contained in:
parent
8e0359289c
commit
39eeb67200
@ -2163,7 +2163,7 @@ SECTIONS
|
|||||||
build/src/overlays/actors/ovl_En_Tubo_Trap/z_en_tubo_trap.o(.text)
|
build/src/overlays/actors/ovl_En_Tubo_Trap/z_en_tubo_trap.o(.text)
|
||||||
build/src/overlays/actors/ovl_En_Tubo_Trap/z_en_tubo_trap.o(.data)
|
build/src/overlays/actors/ovl_En_Tubo_Trap/z_en_tubo_trap.o(.data)
|
||||||
build/src/overlays/actors/ovl_En_Tubo_Trap/z_en_tubo_trap.o(.rodata)
|
build/src/overlays/actors/ovl_En_Tubo_Trap/z_en_tubo_trap.o(.rodata)
|
||||||
build/asm/overlays/ovl_En_Tubo_Trap_rodata.o(.rodata)
|
build/src/overlays/actors/ovl_En_Tubo_Trap/z_en_tubo_trap_overlay.o(.ovl)
|
||||||
}
|
}
|
||||||
SegmentEnd = .;
|
SegmentEnd = .;
|
||||||
SegmentSize = SegmentEnd - SegmentStart;
|
SegmentSize = SegmentEnd - SegmentStart;
|
||||||
@ -2629,11 +2629,7 @@ SECTIONS
|
|||||||
build/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.o(.text)
|
build/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.o(.text)
|
||||||
build/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.o(.data)
|
build/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.o(.data)
|
||||||
build/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.o(.rodata)
|
build/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.o(.rodata)
|
||||||
#ifdef NON_MATCHING
|
|
||||||
build/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag_overlay.o(.ovl)
|
build/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag_overlay.o(.ovl)
|
||||||
#else
|
|
||||||
build/asm/overlays/ovl_En_Weather_Tag_rodata.o(.rodata)
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
SegmentEnd = .;
|
SegmentEnd = .;
|
||||||
SegmentSize = SegmentEnd - SegmentStart;
|
SegmentSize = SegmentEnd - SegmentStart;
|
||||||
|
@ -8,9 +8,9 @@ void EnTuboTrap_Init(Actor* thisx, GlobalContext* globalCtx);
|
|||||||
void EnTuboTrap_Destroy(Actor* thisx, GlobalContext* globalCtx);
|
void EnTuboTrap_Destroy(Actor* thisx, GlobalContext* globalCtx);
|
||||||
void EnTuboTrap_Update(Actor* thisx, GlobalContext* globalCtx);
|
void EnTuboTrap_Update(Actor* thisx, GlobalContext* globalCtx);
|
||||||
void EnTuboTrap_Draw(Actor* thisx, GlobalContext* globalCtx);
|
void EnTuboTrap_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||||
void func_80931004(EnTuboTrap* this, GlobalContext* globalCtx);
|
void EnTuboTrap_Idle(EnTuboTrap* this, GlobalContext* globalCtx);
|
||||||
void func_80931138(EnTuboTrap* this, GlobalContext* globalCtx);
|
void EnTuboTrap_Levitate(EnTuboTrap* this, GlobalContext* globalCtx);
|
||||||
void func_809311C4(EnTuboTrap* this, GlobalContext* globalCtx);
|
void EnTuboTrap_FlyAtPlayer(EnTuboTrap* this, GlobalContext* globalCtx);
|
||||||
|
|
||||||
static ColliderCylinderInit sCylinderInit = {
|
static ColliderCylinderInit sCylinderInit = {
|
||||||
{
|
{
|
||||||
@ -51,12 +51,6 @@ static InitChainEntry sInitChain[] = {
|
|||||||
ICHAIN_F32(uncullZoneDownward, 100, ICHAIN_STOP),
|
ICHAIN_F32(uncullZoneDownward, 100, ICHAIN_STOP),
|
||||||
};
|
};
|
||||||
|
|
||||||
// used in WaitForProximity
|
|
||||||
s8 D_8093146C[] = {
|
|
||||||
0x28, 0x28, 0x28, 0x19, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
};
|
|
||||||
|
|
||||||
void EnTuboTrap_Init(Actor* thisx, GlobalContext* globalCtx) {
|
void EnTuboTrap_Init(Actor* thisx, GlobalContext* globalCtx) {
|
||||||
EnTuboTrap* this = THIS;
|
EnTuboTrap* this = THIS;
|
||||||
|
|
||||||
@ -66,7 +60,7 @@ void EnTuboTrap_Init(Actor* thisx, GlobalContext* globalCtx) {
|
|||||||
ActorShape_Init(&this->actor.shape, 0.0f, func_800B3FC0, 1.8f);
|
ActorShape_Init(&this->actor.shape, 0.0f, func_800B3FC0, 1.8f);
|
||||||
Collider_InitCylinder(globalCtx, &this->collider);
|
Collider_InitCylinder(globalCtx, &this->collider);
|
||||||
Collider_SetCylinder(globalCtx, &this->collider, &this->actor, &sCylinderInit);
|
Collider_SetCylinder(globalCtx, &this->collider, &this->actor, &sCylinderInit);
|
||||||
this->actionFunc = func_80931004; // idle
|
this->actionFunc = EnTuboTrap_Idle;
|
||||||
}
|
}
|
||||||
|
|
||||||
void EnTuboTrap_Destroy(Actor* thisx, GlobalContext* globalCtx) {
|
void EnTuboTrap_Destroy(Actor* thisx, GlobalContext* globalCtx) {
|
||||||
@ -75,8 +69,7 @@ void EnTuboTrap_Destroy(Actor* thisx, GlobalContext* globalCtx) {
|
|||||||
Collider_DestroyCylinder(globalCtx, &this->collider);
|
Collider_DestroyCylinder(globalCtx, &this->collider);
|
||||||
}
|
}
|
||||||
|
|
||||||
// drop collectable
|
void EnTuboTrap_DropCollectible(EnTuboTrap* this, GlobalContext* globalCtx) {
|
||||||
void func_8093089C(EnTuboTrap* this, GlobalContext* globalCtx) {
|
|
||||||
s32 itemParam = ((this->actor.params >> 8) & 0x3F);
|
s32 itemParam = ((this->actor.params >> 8) & 0x3F);
|
||||||
s32 dropCount = func_800A8150(itemParam);
|
s32 dropCount = func_800A8150(itemParam);
|
||||||
|
|
||||||
@ -85,19 +78,15 @@ void func_8093089C(EnTuboTrap* this, GlobalContext* globalCtx) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// EnTuboTrap_SpawnEffectsOnLand
|
void EnTuboTrap_SpawnEffectsOnLand(EnTuboTrap* this, GlobalContext* globalCtx) {
|
||||||
void func_809308F4(EnTuboTrap* this, GlobalContext* globalCtx) {
|
|
||||||
f32 rand;
|
f32 rand;
|
||||||
f32 sin;
|
f32 sin;
|
||||||
f32 cos;
|
f32 cos;
|
||||||
|
|
||||||
Vec3f pos;
|
Vec3f pos;
|
||||||
Vec3f vel;
|
Vec3f vel;
|
||||||
s32 arg5;
|
s32 arg5;
|
||||||
|
|
||||||
s16 var;
|
s16 var;
|
||||||
s32 i;
|
s32 i;
|
||||||
|
|
||||||
Vec3f* actorPos = &this->actor.world.pos;
|
Vec3f* actorPos = &this->actor.world.pos;
|
||||||
|
|
||||||
for (i = 0, var = 0; i < 15; i++, var += 20000) {
|
for (i = 0, var = 0; i < 15; i++, var += 20000) {
|
||||||
@ -130,15 +119,12 @@ void func_809308F4(EnTuboTrap* this, GlobalContext* globalCtx) {
|
|||||||
func_800BBFB0(globalCtx, actorPos, 30.0f, 4, 0x14, 0x32, 0);
|
func_800BBFB0(globalCtx, actorPos, 30.0f, 4, 0x14, 0x32, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// EnTuboTrap_SpawnEffectsInWater
|
void EnTuboTrap_SpawnEffectsInWater(EnTuboTrap* this, GlobalContext* globalCtx) {
|
||||||
void func_80930B60(EnTuboTrap* this, GlobalContext* globalCtx) {
|
|
||||||
f32 rand;
|
f32 rand;
|
||||||
f32 sin;
|
f32 sin;
|
||||||
f32 cos;
|
f32 cos;
|
||||||
|
|
||||||
Vec3f pos;
|
Vec3f pos;
|
||||||
Vec3f vel;
|
Vec3f vel;
|
||||||
|
|
||||||
s16 var;
|
s16 var;
|
||||||
s32 arg5;
|
s32 arg5;
|
||||||
s32 i;
|
s32 i;
|
||||||
@ -176,37 +162,36 @@ void func_80930B60(EnTuboTrap* this, GlobalContext* globalCtx) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// EnTuboTrap_HandleImpact
|
void EnTuboTrap_HandleImpact(EnTuboTrap* this, GlobalContext* globalCtx) {
|
||||||
void func_80930DDC(EnTuboTrap* this, GlobalContext* globalCtx) {
|
|
||||||
Player* player = PLAYER;
|
Player* player = PLAYER;
|
||||||
Player* player2 = PLAYER;
|
Player* player2 = PLAYER;
|
||||||
|
|
||||||
// in oot func_800F0568 is Audio_PlaySoundAtPosition
|
// in oot func_800F0568 is Audio_PlaySoundAtPosition
|
||||||
|
|
||||||
if ((this->actor.bgCheckFlags & 0x20) && (this->actor.yDistToWater > 15.0f)) {
|
if ((this->actor.bgCheckFlags & 0x20) && (this->actor.yDistToWater > 15.0f)) {
|
||||||
func_80930B60(this, globalCtx);
|
EnTuboTrap_SpawnEffectsInWater(this, globalCtx);
|
||||||
func_800F0568(globalCtx, &this->actor.world.pos, 40, NA_SE_EV_BOMB_DROP_WATER);
|
func_800F0568(globalCtx, &this->actor.world.pos, 40, NA_SE_EV_BOMB_DROP_WATER);
|
||||||
func_8093089C(this, globalCtx);
|
EnTuboTrap_DropCollectible(this, globalCtx);
|
||||||
Actor_MarkForDeath(&this->actor);
|
Actor_MarkForDeath(&this->actor);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this->collider.base.atFlags & AT_BOUNCED) {
|
if (this->collider.base.atFlags & AT_BOUNCED) {
|
||||||
this->collider.base.atFlags &= ~AT_BOUNCED;
|
this->collider.base.atFlags &= ~AT_BOUNCED;
|
||||||
func_809308F4(this, globalCtx);
|
EnTuboTrap_SpawnEffectsOnLand(this, globalCtx);
|
||||||
func_800F0568(globalCtx, &this->actor.world.pos, 40, NA_SE_IT_SHIELD_REFLECT_SW);
|
func_800F0568(globalCtx, &this->actor.world.pos, 40, NA_SE_IT_SHIELD_REFLECT_SW);
|
||||||
func_800F0568(globalCtx, &this->actor.world.pos, 40, NA_SE_EV_POT_BROKEN);
|
func_800F0568(globalCtx, &this->actor.world.pos, 40, NA_SE_EV_POT_BROKEN);
|
||||||
func_8093089C(this, globalCtx);
|
EnTuboTrap_DropCollectible(this, globalCtx);
|
||||||
Actor_MarkForDeath(&this->actor);
|
Actor_MarkForDeath(&this->actor);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this->collider.base.acFlags & AC_HIT) {
|
if (this->collider.base.acFlags & AC_HIT) {
|
||||||
this->collider.base.acFlags &= ~AC_HIT;
|
this->collider.base.acFlags &= ~AC_HIT;
|
||||||
func_809308F4(this, globalCtx);
|
EnTuboTrap_SpawnEffectsOnLand(this, globalCtx);
|
||||||
func_800F0568(globalCtx, &this->actor.world.pos, 40, NA_SE_EV_EXPLOSION);
|
func_800F0568(globalCtx, &this->actor.world.pos, 40, NA_SE_EV_EXPLOSION);
|
||||||
func_800F0568(globalCtx, &this->actor.world.pos, 40, NA_SE_EV_POT_BROKEN);
|
func_800F0568(globalCtx, &this->actor.world.pos, 40, NA_SE_EV_POT_BROKEN);
|
||||||
func_8093089C(this, globalCtx);
|
EnTuboTrap_DropCollectible(this, globalCtx);
|
||||||
Actor_MarkForDeath(&this->actor);
|
Actor_MarkForDeath(&this->actor);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -215,74 +200,65 @@ void func_80930DDC(EnTuboTrap* this, GlobalContext* globalCtx) {
|
|||||||
this->collider.base.atFlags &= ~AT_HIT;
|
this->collider.base.atFlags &= ~AT_HIT;
|
||||||
|
|
||||||
if (&player->actor == this->collider.base.at) {
|
if (&player->actor == this->collider.base.at) {
|
||||||
func_809308F4(this, globalCtx);
|
EnTuboTrap_SpawnEffectsOnLand(this, globalCtx);
|
||||||
func_800F0568(globalCtx, &this->actor.world.pos, 40, NA_SE_EV_POT_BROKEN);
|
func_800F0568(globalCtx, &this->actor.world.pos, 40, NA_SE_EV_POT_BROKEN);
|
||||||
func_800F0568(globalCtx, &player2->actor.world.pos, 40, NA_SE_PL_BODY_HIT);
|
func_800F0568(globalCtx, &player2->actor.world.pos, 40, NA_SE_PL_BODY_HIT);
|
||||||
func_8093089C(this, globalCtx);
|
EnTuboTrap_DropCollectible(this, globalCtx);
|
||||||
Actor_MarkForDeath(&this->actor);
|
Actor_MarkForDeath(&this->actor);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((this->actor.bgCheckFlags & 8) || (this->actor.bgCheckFlags & 1)) {
|
if ((this->actor.bgCheckFlags & 8) || (this->actor.bgCheckFlags & 1)) {
|
||||||
func_809308F4(this, globalCtx);
|
EnTuboTrap_SpawnEffectsOnLand(this, globalCtx);
|
||||||
func_800F0568(globalCtx, &this->actor.world.pos, 40, NA_SE_EV_POT_BROKEN);
|
func_800F0568(globalCtx, &this->actor.world.pos, 40, NA_SE_EV_POT_BROKEN);
|
||||||
func_8093089C(this, globalCtx);
|
EnTuboTrap_DropCollectible(this, globalCtx);
|
||||||
Actor_MarkForDeath(&this->actor);
|
Actor_MarkForDeath(&this->actor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef NON_MATCHING
|
void EnTuboTrap_Idle(EnTuboTrap* this, GlobalContext* globalCtx) {
|
||||||
// Wait For Proximity (idle)
|
static s8 sTransformationHeight[] = {
|
||||||
// NON-MATCHING: wrong register used, v instead of t for the weirdValues[] pointer
|
40, 40, 40, 25, 28,
|
||||||
void func_80931004(EnTuboTrap* this, GlobalContext* globalCtx) {
|
};
|
||||||
Player* player = PLAYER;
|
Player* player = PLAYER;
|
||||||
f32 currentHeight;
|
f32 currentHeight;
|
||||||
s8 weirdvalue;
|
f32 transformationHeight;
|
||||||
s16 startingRotation;
|
s16 startingRotation;
|
||||||
static s8 D_8093146C[] = {
|
|
||||||
0x28, 0x28, 0x28, 0x19, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
};
|
|
||||||
|
|
||||||
if ((this->actor.xzDistToPlayer < 200.0f) && (this->actor.world.pos.y <= player->actor.world.pos.y)) {
|
if ((this->actor.xzDistToPlayer < 200.0f) && (this->actor.world.pos.y <= player->actor.world.pos.y)) {
|
||||||
startingRotation = this->actor.home.rot.z;
|
startingRotation = this->actor.home.rot.z;
|
||||||
if ((startingRotation == 0) || (this->actor.yDistToPlayer <= ((f32)startingRotation * 10.0f))) {
|
if ((startingRotation == 0) || (this->actor.yDistToPlayer <= (startingRotation * 10.0f))) {
|
||||||
func_800BC154(globalCtx, &globalCtx->actorCtx, this, ACTORCAT_ENEMY);
|
func_800BC154(globalCtx, &globalCtx->actorCtx, &this->actor, ACTORCAT_ENEMY);
|
||||||
currentHeight = this->actor.world.pos.y;
|
currentHeight = this->actor.world.pos.y;
|
||||||
this->actor.flags |= 0x11; // always update and can target
|
this->actor.flags |= 0x11; // always update and can target
|
||||||
|
|
||||||
weirdvalue = D_8093146C[player->transformation & 0xFF];
|
transformationHeight = sTransformationHeight[player->transformation];
|
||||||
|
|
||||||
this->targetHeight = player->actor.world.pos.y + (f32)weirdvalue;
|
this->targetHeight = player->actor.world.pos.y + transformationHeight;
|
||||||
if (this->targetHeight < currentHeight) {
|
if (this->targetHeight < currentHeight) {
|
||||||
this->targetHeight = currentHeight;
|
this->targetHeight = currentHeight;
|
||||||
this->targetHeight += weirdvalue;
|
this->targetHeight += transformationHeight;
|
||||||
}
|
}
|
||||||
this->originPos = this->actor.world.pos;
|
this->originPos = this->actor.world.pos;
|
||||||
Audio_PlayActorSound2(&this->actor, NA_SE_EV_POT_MOVE_START);
|
Audio_PlayActorSound2(&this->actor, NA_SE_EV_POT_MOVE_START);
|
||||||
this->actionFunc = func_80931138;
|
this->actionFunc = EnTuboTrap_Levitate;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
#pragma GLOBAL_ASM("./asm/non_matchings/overlays/ovl_En_Tubo_Trap_0x809307E0/func_80931004.asm")
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// levitate
|
void EnTuboTrap_Levitate(EnTuboTrap* this, GlobalContext* globalCtx) {
|
||||||
void func_80931138(EnTuboTrap* this, GlobalContext* globalCtx) {
|
|
||||||
this->actor.shape.rot.y += 5000;
|
this->actor.shape.rot.y += 5000;
|
||||||
Math_ApproachF(&this->actor.world.pos.y, this->targetHeight, 0.8f, 3.0f);
|
Math_ApproachF(&this->actor.world.pos.y, this->targetHeight, 0.8f, 3.0f);
|
||||||
|
|
||||||
if (fabsf(this->actor.world.pos.y - this->targetHeight) < 10.0f) {
|
if (fabsf(this->actor.world.pos.y - this->targetHeight) < 10.0f) {
|
||||||
this->actor.speedXZ = 10.0f;
|
this->actor.speedXZ = 10.0f;
|
||||||
this->actor.world.rot.y = this->actor.yawTowardsPlayer;
|
this->actor.world.rot.y = this->actor.yawTowardsPlayer;
|
||||||
this->actionFunc = func_809311C4; // flying at link
|
this->actionFunc = EnTuboTrap_FlyAtPlayer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// flying at link
|
void EnTuboTrap_FlyAtPlayer(EnTuboTrap* this, GlobalContext* globalCtx) {
|
||||||
void func_809311C4(EnTuboTrap* this, GlobalContext* globalCtx) {
|
|
||||||
f32 dX = this->originPos.x - this->actor.world.pos.x;
|
f32 dX = this->originPos.x - this->actor.world.pos.x;
|
||||||
f32 dY = this->originPos.y - this->actor.world.pos.y;
|
f32 dY = this->originPos.y - this->actor.world.pos.y;
|
||||||
f32 dZ = this->originPos.z - this->actor.world.pos.z;
|
f32 dZ = this->originPos.z - this->actor.world.pos.z;
|
||||||
@ -299,7 +275,7 @@ void func_809311C4(EnTuboTrap* this, GlobalContext* globalCtx) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this->actor.shape.rot.y += 5000;
|
this->actor.shape.rot.y += 5000;
|
||||||
func_80930DDC(this, globalCtx); // "handle impact"
|
EnTuboTrap_HandleImpact(this, globalCtx);
|
||||||
}
|
}
|
||||||
|
|
||||||
void EnTuboTrap_Update(Actor* thisx, GlobalContext* globalCtx) {
|
void EnTuboTrap_Update(Actor* thisx, GlobalContext* globalCtx) {
|
||||||
@ -313,10 +289,10 @@ void EnTuboTrap_Update(Actor* thisx, GlobalContext* globalCtx) {
|
|||||||
|
|
||||||
if (this->actor.projectedPos.z < 811.0f) {
|
if (this->actor.projectedPos.z < 811.0f) {
|
||||||
if (this->actor.projectedPos.z > 300.0f) {
|
if (this->actor.projectedPos.z > 300.0f) {
|
||||||
this->actor.shape.shadowAlpha = (u8)((0x32B - (s32)this->actor.projectedPos.z) >> 1);
|
this->actor.shape.shadowAlpha = (u8)((811 - (s32)this->actor.projectedPos.z) >> 1);
|
||||||
this->actor.shape.shadowDraw = func_800B3FC0;
|
this->actor.shape.shadowDraw = func_800B3FC0;
|
||||||
} else if (this->actor.projectedPos.z > -10.0f) {
|
} else if (this->actor.projectedPos.z > -10.0f) {
|
||||||
this->actor.shape.shadowAlpha = 0xFF;
|
this->actor.shape.shadowAlpha = 255;
|
||||||
this->actor.shape.shadowDraw = func_800B3FC0;
|
this->actor.shape.shadowDraw = func_800B3FC0;
|
||||||
} else {
|
} else {
|
||||||
this->actor.shape.shadowDraw = NULL;
|
this->actor.shape.shadowDraw = NULL;
|
||||||
|
@ -355,8 +355,6 @@ void func_80966FEC(EnWeatherTag* this, GlobalContext* globalCtx) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef NON_MATCHING
|
|
||||||
// non-matching: two instructions are swapped
|
|
||||||
// type 4_2 pirates fortres only?
|
// type 4_2 pirates fortres only?
|
||||||
void func_80967060(EnWeatherTag* this, GlobalContext* globalCtx) {
|
void func_80967060(EnWeatherTag* this, GlobalContext* globalCtx) {
|
||||||
Vec3f vec1;
|
Vec3f vec1;
|
||||||
@ -368,16 +366,12 @@ void func_80967060(EnWeatherTag* this, GlobalContext* globalCtx) {
|
|||||||
|
|
||||||
func_80169474(globalCtx, &vec1, &vec2);
|
func_80169474(globalCtx, &vec1, &vec2);
|
||||||
|
|
||||||
// 0x428C0000 = 70.0f
|
if (globalCtx->view.fovy < 25.0f) {
|
||||||
// ca4: lwc1 $f0,0x18(sp) | ca4: lui at,0x428c
|
if ((vec2.x >= 70.0f) && (vec2.x < 250.0f) && (vec2.y >= 30.0f) && (vec2.y < 210.0f)) {
|
||||||
// ca8: lui at,0x428c | ca8: lwc1 $f0,0x18(sp)
|
EnWeatherTag_SetupAction(this, func_80967148);
|
||||||
if (globalCtx->view.fovy < 25.0f && (vec2.x >= 70.0f && vec2.x < 250.0f) && (vec2.y >= 30.0f && vec2.y < 210.0f)) {
|
}
|
||||||
EnWeatherTag_SetupAction(this, func_80967148);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
#pragma GLOBAL_ASM("./asm/non_matchings/overlays/ovl_En_Weather_Tag_0x80966410/func_80967060.asm")
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// type 4_3, start cutscene then die?
|
// type 4_3, start cutscene then die?
|
||||||
void func_80967148(EnWeatherTag* this, GlobalContext* globalCtx) {
|
void func_80967148(EnWeatherTag* this, GlobalContext* globalCtx) {
|
||||||
@ -415,8 +409,6 @@ void EnWeatherTag_Unused_80967250(EnWeatherTag* this, GlobalContext* globalCtx)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef NON_MATCHING
|
|
||||||
// non_matching: the parameters for func_800BCCDC are correct, but out of order
|
|
||||||
// WEATHERTAG_TYPE_WATERMURK: (pinnacle rock, zora cape, zora coast)
|
// WEATHERTAG_TYPE_WATERMURK: (pinnacle rock, zora cape, zora coast)
|
||||||
void func_809672DC(EnWeatherTag* this, GlobalContext* globalCtx) {
|
void func_809672DC(EnWeatherTag* this, GlobalContext* globalCtx) {
|
||||||
Player* player = PLAYER;
|
Player* player = PLAYER;
|
||||||
@ -425,13 +417,7 @@ void func_809672DC(EnWeatherTag* this, GlobalContext* globalCtx) {
|
|||||||
f32 range;
|
f32 range;
|
||||||
f32 strength = 0.0f;
|
f32 strength = 0.0f;
|
||||||
|
|
||||||
// the parameters here are correct but loaded in the wrong order
|
func_800BCCDC(this->pathPoints, this->pathCount, &PLAYER->actor.world.pos, &this->actor.world.pos, 0);
|
||||||
// eec: addiu a3,s0,0x24 | eec: lw a0,0x150(s0) 4
|
|
||||||
// ef0: sw v0,0x3c(sp) | ef0: lbu a1,0x14c(s0) 3
|
|
||||||
// ef4: lbu a1,0x14c(s0) | ef4: sw zero,0x10(sp) 5
|
|
||||||
// ef8: lw a0,0x150(s0) | ef8: addiu a3,s0,0x24 1
|
|
||||||
// efc: sw zero,0x10(sp) | efc: sw v0,0x3c(sp) 2
|
|
||||||
func_800BCCDC(this->pathPoints, this->pathCount, &player->actor.world.pos, &this->actor.world.pos, 0);
|
|
||||||
|
|
||||||
distance = Actor_XZDistanceBetweenActors(&player->actor, &this->actor);
|
distance = Actor_XZDistanceBetweenActors(&player->actor, &this->actor);
|
||||||
range = WEATHER_TAG_RANGE100(this);
|
range = WEATHER_TAG_RANGE100(this);
|
||||||
@ -452,9 +438,6 @@ void func_809672DC(EnWeatherTag* this, GlobalContext* globalCtx) {
|
|||||||
|
|
||||||
Math_SmoothStepToS(&globalCtx->envCtx.unk_8C.fogNear, (s16)(-40.0f * strength), 1, 1, 1);
|
Math_SmoothStepToS(&globalCtx->envCtx.unk_8C.fogNear, (s16)(-40.0f * strength), 1, 1, 1);
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
#pragma GLOBAL_ASM("./asm/non_matchings/overlays/ovl_En_Weather_Tag_0x80966410/func_809672DC.asm")
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// WEATHERTAG_TYPE_LOCALDAY2RAIN: rain proximity as approaching rainy scene
|
// WEATHERTAG_TYPE_LOCALDAY2RAIN: rain proximity as approaching rainy scene
|
||||||
// (milk road day 2 approaching ranch it rains, walking away towards termfield no rain)
|
// (milk road day 2 approaching ranch it rains, walking away towards termfield no rain)
|
||||||
|
@ -7208,13 +7208,13 @@
|
|||||||
0x80930190:("func_80930190",),
|
0x80930190:("func_80930190",),
|
||||||
0x809307E0:("EnTuboTrap_Init",),
|
0x809307E0:("EnTuboTrap_Init",),
|
||||||
0x80930870:("EnTuboTrap_Destroy",),
|
0x80930870:("EnTuboTrap_Destroy",),
|
||||||
0x8093089C:("func_8093089C",),
|
0x8093089C:("EnTuboTrap_DropCollectible",),
|
||||||
0x809308F4:("func_809308F4",),
|
0x809308F4:("EnTuboTrap_SpawnEffectsOnLand",),
|
||||||
0x80930B60:("func_80930B60",),
|
0x80930B60:("EnTuboTrap_SpawnEffectsInWater",),
|
||||||
0x80930DDC:("func_80930DDC",),
|
0x80930DDC:("EnTuboTrap_HandleImpact",),
|
||||||
0x80931004:("func_80931004",),
|
0x80931004:("EnTuboTrap_Idle",),
|
||||||
0x80931138:("func_80931138",),
|
0x80931138:("EnTuboTrap_Levitate",),
|
||||||
0x809311C4:("func_809311C4",),
|
0x809311C4:("EnTuboTrap_FlyAtPlayer",),
|
||||||
0x80931290:("EnTuboTrap_Update",),
|
0x80931290:("EnTuboTrap_Update",),
|
||||||
0x809313D8:("EnTuboTrap_Draw",),
|
0x809313D8:("EnTuboTrap_Draw",),
|
||||||
0x80931560:("ObjIcePoly_Init",),
|
0x80931560:("ObjIcePoly_Init",),
|
||||||
|
Loading…
Reference in New Issue
Block a user