rename gUnk_020000B0 to gEnemyTarget and move it to a header

This commit is contained in:
Henny022p 2025-01-12 01:46:48 +00:00
parent cd2b8d4b53
commit ca873e6b7f
30 changed files with 107 additions and 150 deletions

View File

@ -862,12 +862,12 @@ _080026A0: .4byte gUnk_08002342
gUnk_080026A4::
@ normal entities
.4byte gUnk_020000B0 @ enemy target? (player)
.4byte gEnemyTarget @ enemy target? (player)
.4byte gEntityLists - 8 @ first linked list
.4byte gEntityLists + 64 @ last linked list
.4byte ram_sub_080B2248 @ entity table
@ managers
.4byte gUnk_020000B0
.4byte gEnemyTarget
.4byte gEntityLists + 56
.4byte gCollidableCount
.4byte ram_sub_080B2248

View File

@ -288,4 +288,10 @@ void Enemy66();
extern void (*const gUnk_080012C8[])(Entity*);
/**
* The Entity targeted by enemies.
* This is usually the player.
*/
extern Entity* gEnemyTarget;
#endif // ENEMY_H

View File

@ -21,7 +21,7 @@ SECTIONS {
. = 0x00000080; gIntroState = .;
. = 0x00000080; gChooseFileState = .;
. = 0x00000090; gUnk_02000090 = .;
. = 0x000000B0; gUnk_020000B0 = .;
. = 0x000000B0; gEnemyTarget = .;
. = 0x000000C0; gUnk_020000C0 = .;
. = 0x00000CC0; gBgAnimations = .;
. = 0x00000D00; gTextGfxBuffer = .;

View File

@ -7,12 +7,11 @@
#include "room.h"
#include "enemy.h"
extern Entity* gUnk_020000B0;
extern Entity* (*const gUnk_080D3BE8[])(void);
Entity* sub_08049DF4(u32 arg0) {
if (gUnk_020000B0 != NULL) {
return gUnk_020000B0;
if (gEnemyTarget != NULL) {
return gEnemyTarget;
}
return gUnk_080D3BE8[arg0]();
}
@ -22,7 +21,7 @@ Entity* sub_08049E18(void) {
!(gPlayerState.flags &
(PL_BUSY | PL_DROWNING | PL_CAPTURED | PL_USE_PORTAL | PL_HIDDEN | PL_DISABLE_ITEMS | PL_FALLING | PL_FROZEN |
PL_IN_MINECART | PL_PIT_IS_EXIT | PL_MOLDWORM_CAPTURED | PL_IN_HOLE | PL_CONVEYOR_PUSHED | PL_CLIMBING))) {
gUnk_020000B0 = &gPlayerEntity.base;
gEnemyTarget = &gPlayerEntity.base;
return &gPlayerEntity.base;
}
return NULL;
@ -33,7 +32,7 @@ Entity* sub_08049E4C(void) {
!(gPlayerState.flags & (PL_BUSY | PL_DROWNING | PL_CAPTURED | PL_USE_PORTAL | PL_HIDDEN | PL_MINISH |
PL_DISABLE_ITEMS | PL_FALLING | PL_FROZEN | PL_IN_MINECART | PL_PIT_IS_EXIT |
PL_MOLDWORM_CAPTURED | PL_IN_HOLE | PL_CONVEYOR_PUSHED | PL_CLIMBING))) {
gUnk_020000B0 = &gPlayerEntity.base;
gEnemyTarget = &gPlayerEntity.base;
return &gPlayerEntity.base;
}
return NULL;
@ -43,14 +42,14 @@ Entity* sub_08049E80(void) {
if ((gPlayerState.killed != 0) || !(gPlayerState.flags & PL_MINISH)) {
return NULL;
}
gUnk_020000B0 = &gPlayerEntity.base;
gEnemyTarget = &gPlayerEntity.base;
return &gPlayerEntity.base;
}
Entity* sub_08049EB0(void) {
if ((gPlayerState.killed == 0) &&
!(gPlayerState.flags & (PL_MOLDWORM_CAPTURED | PL_DISABLE_ITEMS | PL_MINISH | PL_CAPTURED))) {
gUnk_020000B0 = &gPlayerEntity.base;
gEnemyTarget = &gPlayerEntity.base;
return &gPlayerEntity.base;
}
return NULL;

View File

@ -25,8 +25,6 @@ typedef struct {
/*0x7c*/ Entity* unk_7c;
} AcroBanditEntity;
extern Entity* gUnk_020000B0;
static void sub_08031E48(AcroBanditEntity* this, AcroBanditEntity* child);
static void sub_08032290(AcroBanditEntity* this);
static bool32 sub_080322A4(AcroBanditEntity* this);
@ -224,7 +222,7 @@ void AcroBandit_Type0Action2(AcroBanditEntity* this) {
void AcroBandit_Type0Action3(AcroBanditEntity* this) {
if (sub_08031E04(this)) {
super->action = 5;
if (super->x.HALF.HI > gUnk_020000B0->x.HALF.HI) {
if (super->x.HALF.HI > gEnemyTarget->x.HALF.HI) {
super->spriteSettings.flipX = 0;
} else {
super->spriteSettings.flipX = 1;
@ -447,7 +445,7 @@ void AcroBandit_Type1Action4(AcroBanditEntity* this) {
if (parent == NULL) {
if (sub_08049FDC(super, 1)) {
if ((++this->unk_79 & 7) == 0) {
sub_08004596(super, GetFacingDirection(super, gUnk_020000B0));
sub_08004596(super, GetFacingDirection(super, gEnemyTarget));
}
this->unk_76.HALF.LO = 0;
} else {

View File

@ -26,8 +26,6 @@ typedef struct {
/*0x84*/ u32 unk_84;
} ArmosEntity;
extern Entity* gUnk_020000B0;
extern void (*const gUnk_080CE124[])(ArmosEntity*);
extern void (*const gUnk_080CE13C[])(ArmosEntity*);
extern const u8 gUnk_080CE160[];
@ -343,7 +341,7 @@ bool32 sub_08030650(ArmosEntity* this) {
return 1;
}
} else if (this->unk_80 != 2) {
if (!sub_08049FDC(super, 1) || (0x20 < (gUnk_020000B0->x.HALF.HI - super->x.HALF.HI) + 0x10U)) {
if (!sub_08049FDC(super, 1) || (0x20 < (gEnemyTarget->x.HALF.HI - super->x.HALF.HI) + 0x10U)) {
return FALSE;
}
return TRUE;
@ -351,7 +349,7 @@ bool32 sub_08030650(ArmosEntity* this) {
if (!sub_08049FDC(super, 1)) {
return FALSE;
}
if (gUnk_020000B0->x.HALF.HI >= (s32)(gRoomControls.origin_x + 0xa8)) {
if (gEnemyTarget->x.HALF.HI >= (s32)(gRoomControls.origin_x + 0xa8)) {
return FALSE;
}
return TRUE;
@ -367,7 +365,7 @@ void sub_080306C4(ArmosEntity* this) {
if (sub_08049FDC(super, 1) && this->unk_7a != 0) {
super->timer = 24;
uVar3 = sub_0800132C(super, gUnk_020000B0);
uVar3 = sub_0800132C(super, gEnemyTarget);
if (uVar3 != 0xff) {
var = 0;
if ((((Random() & 7) != 0) || (super->animationState == 0xff)) && ((this->unk_82 & 3) != 3)) {

View File

@ -20,8 +20,6 @@ typedef struct {
u8 unk_7f;
} BallChainSoldierEntity;
extern Entity* gUnk_020000B0;
void (*const BallChainSoldier_Functions[])(BallChainSoldierEntity*);
void (*const gUnk_080D06F8[])(BallChainSoldierEntity*);
const u8 gUnk_080D0724[];
@ -210,7 +208,7 @@ void sub_0803E818(BallChainSoldierEntity* this) {
void sub_0803E86C(BallChainSoldierEntity* this) {
if (sub_08049FDC(super, 1) && sub_0803EAD0(this, 0x50)) {
super->direction = DirectionRoundUp(GetFacingDirection(super, gUnk_020000B0));
super->direction = DirectionRoundUp(GetFacingDirection(super, gEnemyTarget));
}
super->action = 1;
@ -276,12 +274,12 @@ bool32 sub_0803E9D4(BallChainSoldierEntity* this) {
if (sub_08049FDC(super, 1)) {
if (sub_0803EAD0(this, 0x38)) {
super->action = 3;
super->direction = DirectionRoundUp(GetFacingDirection(super, gUnk_020000B0));
super->direction = DirectionRoundUp(GetFacingDirection(super, gEnemyTarget));
this->unk_7b = 1;
sub_0803E94C(this, 0);
return 1;
} else if (sub_0803EAD0(this, 0x4e)) {
dir = sub_0804A044(super, gUnk_020000B0, 0x12);
dir = sub_0804A044(super, gEnemyTarget, 0x12);
if (dir != 0xff) {
if (--this->unk_7a != 0)
return 0;
@ -302,7 +300,7 @@ bool32 sub_0803EA64(BallChainSoldierEntity* this) {
u32 dir;
if (sub_08049FDC(super, 1)) {
if (sub_0803EAD0(this, 0x4e)) {
dir = sub_0804A044(super, gUnk_020000B0, 0x12);
dir = sub_0804A044(super, gEnemyTarget, 0x12);
if (dir != 0xff) {
if (--this->unk_7a != 0)
return 1;
@ -322,7 +320,7 @@ bool32 sub_0803EA64(BallChainSoldierEntity* this) {
}
bool32 sub_0803EAD0(BallChainSoldierEntity* this, u32 distance) {
return EntityWithinDistance(super, gUnk_020000B0->x.HALF.HI, gUnk_020000B0->y.HALF.HI - 4, distance);
return EntityWithinDistance(super, gEnemyTarget->x.HALF.HI, gEnemyTarget->y.HALF.HI - 4, distance);
}
void (*const BallChainSoldier_Functions[])(BallChainSoldierEntity*) = {

View File

@ -21,8 +21,6 @@ typedef struct {
/*0x83*/ u8 unk_83;
} ChuchuEntity;
extern Entity* gUnk_020000B0;
void sub_0801F328(ChuchuEntity* this);
void sub_0801F340(ChuchuEntity* this);
void sub_0801F360(ChuchuEntity* this);
@ -579,12 +577,12 @@ void sub_0801F8C0(ChuchuEntity* this) {
sub_0801F730(this);
} else {
u8 tmp = ++super->timer & 7;
if (tmp == 0 && sub_08049F1C(super, gUnk_020000B0, 0x38)) {
if (tmp == 0 && sub_08049F1C(super, gEnemyTarget, 0x38)) {
super->action = 5;
Chuchu_JumpAtPlayer(this);
} else {
if (tmp == 4) {
super->direction = GetFacingDirection(super, gUnk_020000B0);
super->direction = GetFacingDirection(super, gEnemyTarget);
}
ProcessMovement0(super);
GetNextFrame(super);

View File

@ -23,7 +23,6 @@ typedef struct {
void (*const Crow_Functions[])(Entity*);
void (*const gUnk_080CE990[])(CrowEntity*);
void (*const gUnk_080CE9A4[])(CrowEntity*);
extern Entity* gUnk_020000B0;
void sub_08032AF4(CrowEntity* this);
void sub_08032AB0(CrowEntity* this);
@ -123,9 +122,9 @@ void sub_0803298C(CrowEntity* this) {
if (sub_08049DF4(1) == NULL)
return;
if (EntityInRectRadius(super, gUnk_020000B0, 0x88, 0x50) == 0)
if (EntityInRectRadius(super, gEnemyTarget, 0x88, 0x50) == 0)
return;
if (gUnk_020000B0->y.HALF.HI <= super->y.HALF.HI + 8)
if (gEnemyTarget->y.HALF.HI <= super->y.HALF.HI + 8)
return;
super->action = 2;

View File

@ -46,8 +46,6 @@ void sub_08021644(DarkNutEntity*);
u32 sub_08021664(DarkNutEntity*, Entity*);
u32 sub_0802169C(DarkNutEntity*, Entity*);
extern Entity* gUnk_020000B0;
extern void (*const DarkNut_Functions[])(DarkNutEntity*);
extern void (*const gUnk_080CAAB0[])(DarkNutEntity*);
@ -197,11 +195,11 @@ void sub_08020E78(DarkNutEntity* this) {
void sub_08020E98(DarkNutEntity* this) {
if (PlayerInRange(super, 1, 56)) {
if (sub_0802169C(this, gUnk_020000B0)) {
if (sub_0802169C(this, gEnemyTarget)) {
super->action = 8;
sub_08021218(this, 7, super->animationState);
} else {
super->direction = GetFacingDirection(gUnk_020000B0, super);
super->direction = GetFacingDirection(gEnemyTarget, super);
if (ProcessMovement0(super) == 0) {
super->action = 8;
sub_08021218(this, 7, super->animationState);
@ -212,10 +210,10 @@ void sub_08020E98(DarkNutEntity* this) {
}
}
} else {
if (gUnk_020000B0 == NULL) {
if (gEnemyTarget == NULL) {
sub_08021414(this);
} else {
super->direction = GetFacingDirection(super, gUnk_020000B0);
super->direction = GetFacingDirection(super, gEnemyTarget);
ProcessMovement0(super);
sub_0802124C(this);
sub_08021644(this);
@ -231,8 +229,8 @@ void sub_08020F28(DarkNutEntity* this) {
void sub_08020F48(DarkNutEntity* this) {
if (PlayerInRange(super, 1, 0x48)) {
if (sub_08021664(this, gUnk_020000B0)) {
u32 uVar2 = sub_0804A044(super, gUnk_020000B0, 9);
if (sub_08021664(this, gEnemyTarget)) {
u32 uVar2 = sub_0804A044(super, gEnemyTarget, 9);
if (uVar2 == 0xff) {
sub_08021424(this);
} else {
@ -510,7 +508,7 @@ void sub_08021424(DarkNutEntity* this) {
s32 x, y;
u32 tmp;
u32 dir = GetFacingDirection(super, gUnk_020000B0);
u32 dir = GetFacingDirection(super, gEnemyTarget);
tmp = sub_08021274(super->animationState, dir);
if (tmp != 0xff) {
sub_08021218(this, this->unk_74, tmp);
@ -520,20 +518,20 @@ void sub_08021424(DarkNutEntity* this) {
switch (tmp) {
case 0:
x = gUnk_020000B0->x.HALF.HI;
y = gUnk_020000B0->y.HALF.HI + 0x2c;
x = gEnemyTarget->x.HALF.HI;
y = gEnemyTarget->y.HALF.HI + 0x2c;
break;
case 1:
x = gUnk_020000B0->x.HALF.HI - 0x24;
y = gUnk_020000B0->y.HALF.HI;
x = gEnemyTarget->x.HALF.HI - 0x24;
y = gEnemyTarget->y.HALF.HI;
break;
case 2:
x = gUnk_020000B0->x.HALF.HI;
y = gUnk_020000B0->y.HALF.HI - 0x1d;
x = gEnemyTarget->x.HALF.HI;
y = gEnemyTarget->y.HALF.HI - 0x1d;
break;
default:
x = gUnk_020000B0->x.HALF.HI + 0x24;
y = gUnk_020000B0->y.HALF.HI;
x = gEnemyTarget->x.HALF.HI + 0x24;
y = gEnemyTarget->y.HALF.HI;
break;
}
@ -555,7 +553,7 @@ u32 sub_080214FC(DarkNutEntity* this) {
if (!sub_08049FDC(super, 1))
return 0;
direction = GetFacingDirection(super, gUnk_020000B0);
direction = GetFacingDirection(super, gEnemyTarget);
if (4 < (direction - (super->frame & 0x1f)) - 2)
return 0;

View File

@ -33,8 +33,6 @@ typedef struct {
extern void sub_0803E9A4(Entity*); // ballChainSoldier
extern void sub_0803E94C(Entity*, u32); // ballChainSoldier
extern Entity* gUnk_020000B0;
void sub_0803EE8C(Enemy4DEntity*);
bool32 sub_0803EF20(Enemy4DEntity*);
bool32 sub_0803EEA4(Enemy4DEntity*);
@ -120,7 +118,7 @@ void Enemy4D_Init(Enemy4DEntity* this) {
void Enemy4D_Action1(Enemy4DEntity* this) {
this->unk_7c -= 0xa;
if (sub_08049DF4(1)) {
super->direction = DirectionRoundUp(GetFacingDirection(super, gUnk_020000B0));
super->direction = DirectionRoundUp(GetFacingDirection(super, gEnemyTarget));
sub_0803E94C(super, 0);
}
sub_0803E9A4(super);
@ -268,7 +266,7 @@ bool32 sub_0803EEA4(Enemy4DEntity* this) {
s32 tmp;
if (sub_08049FDC(super, 1)) {
if (sub_0803EF04(this, 0x4e) != 0) {
tmp = sub_0804A044(super, gUnk_020000B0, 0x12);
tmp = sub_0804A044(super, gEnemyTarget, 0x12);
if (tmp != 0xff) {
if (--this->unk_7a == 0) {
super->action = 5;
@ -285,7 +283,7 @@ bool32 sub_0803EEA4(Enemy4DEntity* this) {
}
bool32 sub_0803EF04(Enemy4DEntity* this, u32 distance) {
return EntityWithinDistance(super, gUnk_020000B0->x.HALF.HI, gUnk_020000B0->y.HALF.HI - 4, distance);
return EntityWithinDistance(super, gEnemyTarget->x.HALF.HI, gEnemyTarget->y.HALF.HI - 4, distance);
}
bool32 sub_0803EF20(Enemy4DEntity* this) {

View File

@ -26,8 +26,6 @@ typedef struct {
/*0x80*/ u8 unk_80;
} Enemy50Entity;
extern Entity* gUnk_020000B0;
extern void sub_0803F58C(Enemy50Entity*);
extern void sub_0803F6EC(Enemy50Entity*);
extern void sub_0803F66C(Enemy50Entity*);
@ -265,7 +263,7 @@ void Enemy50_Action6(Enemy50Entity* this) {
tmp = super->timer + 1;
super->timer = tmp;
if ((tmp & gUnk_080D0E14[tmp * 0x1000000 >> 0x1e]) == 0) {
sub_08004596(super, GetFacingDirection(super, gUnk_020000B0));
sub_08004596(super, GetFacingDirection(super, gEnemyTarget));
}
sub_0803F66C(this);
ProcessMovement1(super);
@ -350,7 +348,7 @@ bool32 sub_08041170(Enemy50Entity* this) {
} else {
if ((sub_08049FDC(super, 1)) &&
((sub_0806FD54(super) ||
((0xf < (s16)gArea.lightLevel && (EntityInRectRadius(super, gUnk_020000B0, 0x70, 0x48))))))) {
((0xf < (s16)gArea.lightLevel && (EntityInRectRadius(super, gEnemyTarget, 0x70, 0x48))))))) {
sub_08041134(this);
return TRUE;
}

View File

@ -33,7 +33,6 @@ typedef struct {
extern Entity* sub_08017A90(Entity*, Entity*);
extern Entity* gUnk_020000B0;
extern const u8 gMapTileTypeToCollisionData[];
void sub_08031344(EyegoreEntity*);
@ -175,7 +174,7 @@ void Eyegore_Action2(EyegoreEntity* this) {
super->timer = 60;
super->direction = (CalculateDirectionTo(super->x.HALF.HI + super->hitbox->offset_x,
super->y.HALF.HI + super->hitbox->offset_y,
gUnk_020000B0->x.HALF.HI, gUnk_020000B0->y.HALF.HI) +
gEnemyTarget->x.HALF.HI, gEnemyTarget->y.HALF.HI) +
4) &
0x18;
InitializeAnimation(super, 10);
@ -364,8 +363,8 @@ void sub_08031024(EyegoreEntity* this) {
if (this->unk_79 == 0) {
if (boolresult != 0) {
super->direction = CalculateDirectionTo(super->x.HALF.HI + super->hitbox->offset_x,
super->y.HALF.HI + super->hitbox->offset_y,
gUnk_020000B0->x.HALF.HI, gUnk_020000B0->y.HALF.HI);
super->y.HALF.HI + super->hitbox->offset_y, gEnemyTarget->x.HALF.HI,
gEnemyTarget->y.HALF.HI);
} else {
this->unk_79 = 1;
this->unk_78 = boolresult != 0;

View File

@ -18,8 +18,6 @@ typedef struct {
/*0x7c*/ u16 unk_7c;
} GhiniEntity;
extern Entity* gUnk_020000B0;
extern void (*const Ghini_Functions[])(GhiniEntity*);
extern void (*const Ghini_Actions[])(GhiniEntity*);
extern void (*const Ghini_SubActions[])(GhiniEntity*);
@ -173,7 +171,7 @@ void Ghini_Action2(GhiniEntity* this) {
super->action = 3;
super->timer = 30;
if (sub_08049DF4(1) != NULL) {
super->direction = GetFacingDirection(super, gUnk_020000B0);
super->direction = GetFacingDirection(super, gEnemyTarget);
} else {
super->direction = Random() & 0x1f;
}
@ -222,7 +220,7 @@ void Ghini_Action6(GhiniEntity* this) {
tmp = super->timer + 1;
super->timer = tmp;
if ((tmp & gUnk_080D0970[tmp * 0x1000000 >> 0x1e]) == 0) {
sub_08004596(super, GetFacingDirection(super, gUnk_020000B0));
sub_08004596(super, GetFacingDirection(super, gEnemyTarget));
}
sub_0803F66C(this);
ProcessMovement1(super);
@ -326,7 +324,7 @@ bool32 sub_0803F5D4(GhiniEntity* this) {
this->unk_7c--;
} else if ((sub_08049FDC(super, 1)) &&
((sub_0806FD54(super) ||
((0xf < (s16)gArea.lightLevel && (EntityInRectRadius(super, gUnk_020000B0, 0x70, 0x48))))))) {
((0xf < (s16)gArea.lightLevel && (EntityInRectRadius(super, gEnemyTarget, 0x70, 0x48))))))) {
sub_0803F630(this);
return TRUE;
}

View File

@ -40,7 +40,6 @@ void sub_08037A14(GibdoEntity*);
void (*const Gibdo_Functions[6])(Entity*);
void (*const gUnk_080CF2AC[9])(GibdoEntity*);
extern Entity* gUnk_020000B0;
void Gibdo(Entity* this) {
EnemyFunctionHandler(this, Gibdo_Functions);
@ -230,18 +229,18 @@ bool32 sub_08037810(GibdoEntity* this) {
if (this->field_0x76 == 0) {
if (sub_08049FDC(super, 1) &&
EntityWithinDistance(super, gUnk_020000B0->x.HALF.HI, gUnk_020000B0->y.HALF.HI, 0x40)) {
dir = GetFacingDirection(super, gUnk_020000B0);
EntityWithinDistance(super, gEnemyTarget->x.HALF.HI, gEnemyTarget->y.HALF.HI, 0x40)) {
dir = GetFacingDirection(super, gEnemyTarget);
if (((dir - super->direction + 6) & 0x1f) <= 0xc) {
super->action = 3;
super->timer = 24;
super->subtimer = 8;
super->speed = 0xc0;
super->direction = DirectionRoundUp(GetFacingDirection(super, gUnk_020000B0));
super->direction = DirectionRoundUp(GetFacingDirection(super, gEnemyTarget));
super->animationState = super->direction >> 3;
this->field_0x74 = 300;
this->field_0x78 = gUnk_020000B0->x.HALF.HI;
this->field_0x7a = gUnk_020000B0->y.HALF.HI;
this->field_0x78 = gEnemyTarget->x.HALF.HI;
this->field_0x7a = gEnemyTarget->y.HALF.HI;
InitAnimationForceUpdate(super, super->animationState);
return TRUE;
}
@ -255,8 +254,8 @@ bool32 sub_08037810(GibdoEntity* this) {
bool32 sub_080378B0(GibdoEntity* this) {
if (this->field_0x77 == 0) {
if (sub_08049DF4(1) != NULL) {
if (sub_0804A044(super, gUnk_020000B0, 0xa) == super->direction)
if (EntityWithinDistance(super, gUnk_020000B0->x.HALF.HI, gUnk_020000B0->y.HALF.HI, 0x18)) {
if (sub_0804A044(super, gEnemyTarget, 0xa) == super->direction)
if (EntityWithinDistance(super, gEnemyTarget->x.HALF.HI, gEnemyTarget->y.HALF.HI, 0x18)) {
super->action = 5;
super->speed = 0x100;
InitAnimationForceUpdate(super, super->animationState + 8);
@ -271,9 +270,9 @@ bool32 sub_080378B0(GibdoEntity* this) {
bool32 sub_08037914(GibdoEntity* this) {
if (sub_08049FDC(super, 1)) {
if (!EntityWithinDistance(gUnk_020000B0, this->field_0x78, this->field_0x7a, 0x28)) {
this->field_0x78 = gUnk_020000B0->x.HALF_U.HI;
this->field_0x7a = gUnk_020000B0->y.HALF_U.HI;
if (!EntityWithinDistance(gEnemyTarget, this->field_0x78, this->field_0x7a, 0x28)) {
this->field_0x78 = gEnemyTarget->x.HALF_U.HI;
this->field_0x7a = gEnemyTarget->y.HALF_U.HI;
sub_0803797C(this);
return FALSE;
}

View File

@ -17,7 +17,6 @@ typedef struct {
/*0x7b*/ u8 unk_7b;
} KeatonEntity;
extern Entity* gUnk_020000B0;
void Keaton_OnTick(KeatonEntity*);
void Keaton_OnCollision(KeatonEntity*);
void Keaton_OnGrabbed(KeatonEntity*);
@ -167,9 +166,8 @@ void Keaton_Action5(KeatonEntity* this) {
}
u32 sub_080325E8(KeatonEntity* this) {
if ((sub_08049FA0(super) && sub_08049FDC(super, 1)) &&
(EntityInRectRadius(super, gUnk_020000B0, 0x68, 0x40) != 0)) {
if (((GetFacingDirection(super, gUnk_020000B0) - (DirectionRound(super->frame)) + 2) & 0x1F) < 5) {
if ((sub_08049FA0(super) && sub_08049FDC(super, 1)) && (EntityInRectRadius(super, gEnemyTarget, 0x68, 0x40) != 0)) {
if (((GetFacingDirection(super, gEnemyTarget) - (DirectionRound(super->frame)) + 2) & 0x1F) < 5) {
super->action = 3;
super->timer = 12;
super->direction = DirectionRound(super->frame);

View File

@ -15,8 +15,6 @@ typedef struct {
/*0x74*/ u16 unk_74;
} LeeverEntity;
extern Entity* gUnk_020000B0;
bool32 Leever_PlayerInRange(Entity*, s32);
void Leever_Move(LeeverEntity*);
@ -78,7 +76,7 @@ void Leever_Idle(LeeverEntity* this) {
super->action = 2;
super->spriteSettings.draw = TRUE;
super->direction =
(GetFacingDirection(super, gUnk_020000B0) + gLeeverDrift[Random() & 1]) & (0x3 | DirectionNorthWest);
(GetFacingDirection(super, gEnemyTarget) + gLeeverDrift[Random() & 1]) & (0x3 | DirectionNorthWest);
InitializeAnimation(super, LeeverAnimation_DigUp);
UpdateSpriteForCollisionLayer(super);
} else {
@ -129,15 +127,15 @@ bool32 sub_0801FDE4(Entity* entity, s32 x, s32 y) {
u32 actTile;
const u16* puVar4;
if (GetCollisionDataAtWorldCoords(x, y, gUnk_020000B0->collisionLayer) != 0) {
if (GetCollisionDataAtWorldCoords(x, y, gEnemyTarget->collisionLayer) != 0) {
return FALSE;
} else {
actTile = GetActTileAtWorldCoords(x, y, gUnk_020000B0->collisionLayer);
actTile = GetActTileAtWorldCoords(x, y, gEnemyTarget->collisionLayer);
for (puVar4 = gUnk_080CA4CA; *puVar4 != (u16)-1;) {
if (*puVar4++ == actTile) {
entity->x.HALF.HI = (x & 0xfff0) + 8;
entity->y.HALF.HI = (y & 0xfff0) + 8;
entity->collisionLayer = gUnk_020000B0->collisionLayer;
entity->collisionLayer = gEnemyTarget->collisionLayer;
return TRUE;
}
}
@ -153,8 +151,8 @@ bool32 Leever_PlayerInRange(Entity* entity, s32 arg2) {
if (sub_08049FDC(entity, 1) == 0) {
return 0;
} else {
x = gUnk_020000B0->x.WORD;
y = gUnk_020000B0->y.WORD;
x = gEnemyTarget->x.WORD;
y = gEnemyTarget->y.WORD;
sin = gSineTable[arg2 * 8] << 11;
cos = gSineTable[arg2 * 8 + 0x40] << 11;
for (i = 0; i < 8; i++) {
@ -176,12 +174,12 @@ void Leever_Move(LeeverEntity* this) {
super->speed = (super->frame & 0xf) * 0x20;
if (super->type == LeeverForm_Red) {
if ((super->subtimer++ & 0xf) == 0) {
sub_08004596(super, sub_0800132C(super, gUnk_020000B0));
sub_08004596(super, sub_0800132C(super, gEnemyTarget));
}
} else {
super->speed += 0x40;
if ((super->subtimer++ & 0x7) == 0) {
sub_08004596(super, sub_0800132C(super, gUnk_020000B0));
sub_08004596(super, sub_0800132C(super, gEnemyTarget));
}
}

View File

@ -16,8 +16,6 @@ typedef struct {
/*0x83*/ u8 unk_83;
} MulldozerEntity;
extern Entity* gUnk_020000B0;
extern void (*const Mulldozer_Functions[])(MulldozerEntity*);
extern void (*const Mulldozer_Actions[])(MulldozerEntity*);
extern const u8 gUnk_080CEA50[];
@ -449,7 +447,7 @@ bool32 sub_08033364(MulldozerEntity* this) {
if (super->type != 0) {
return TRUE;
}
tmp = GetFacingDirection(super, gUnk_020000B0);
tmp = GetFacingDirection(super, gEnemyTarget);
tmp = Direction8RoundUp(tmp);
tmp = Direction8ToAnimationState(tmp);
if (super->animationState == tmp) {

View File

@ -15,7 +15,6 @@ extern void (*const Octorok_Functions[6])(Entity*);
extern void (*const gOctorokActions[4])(Entity*);
extern void (*const gUnk_080CA158[6])(Entity*);
extern Entity* gUnk_020000B0;
extern const u8 gOctorokWalkDuration[4];
extern const u8 gOctorokSpitChanceModifier[2];
extern const u8 gOctorokNutOffset[8];
@ -153,7 +152,7 @@ void Octorok_Turn(Entity* this) {
if (this->type != 2) {
if (sub_08049FA0(this)) {
if (this->type == 1 && (Random() & 3) == 0 && sub_08049FDC(this, 1)) {
this->direction = DirectionRoundUp(GetFacingDirection(this, gUnk_020000B0));
this->direction = DirectionRoundUp(GetFacingDirection(this, gEnemyTarget));
} else {
this->direction = DirectionRound(Random());
}
@ -169,10 +168,10 @@ void Octorok_Turn(Entity* this) {
} else if (Random() & 3) {
this->direction = DirectionRound(sub_08049EE4(this) + gUnk_080CA17E[Random() & 1]);
} else {
this->direction = DirectionRoundUp(GetFacingDirection(this, gUnk_020000B0));
this->direction = DirectionRoundUp(GetFacingDirection(this, gEnemyTarget));
}
} else {
this->direction = DirectionRoundUp(GetFacingDirection(this, gUnk_020000B0));
this->direction = DirectionRoundUp(GetFacingDirection(this, gEnemyTarget));
}
}

View File

@ -28,8 +28,6 @@ extern const s8 gUnk_080CA5D4[];
void sub_080205F8(PeahatEntity* this);
void sub_08020604(PeahatEntity* this);
extern Entity* gUnk_020000B0;
enum {
PeahatForm_Torso,
PeahatForm_Propeller,
@ -161,7 +159,7 @@ void Peahat_Fly(PeahatEntity* this) {
this->unk_83--;
if (sub_08049FDC(super, 1)) {
if (this->unk_83 == 0 && (super->subtimer & 0xf) == 0 && sub_08049F1C(super, gUnk_020000B0, 0x30)) {
if (this->unk_83 == 0 && (super->subtimer & 0xf) == 0 && sub_08049F1C(super, gEnemyTarget, 0x30)) {
super->action = 2;
super->subAction = Random() & 3;
super->timer = 60;
@ -191,7 +189,7 @@ void Peahat_ChargeStart(PeahatEntity* this) {
super->timer = 120;
super->speed = 192;
super->direction =
(GetFacingDirection(super, gUnk_020000B0) + gUnk_080CA5D4[Random() & 1]) & (0x3 | DirectionNorthWest);
(GetFacingDirection(super, gEnemyTarget) + gUnk_080CA5D4[Random() & 1]) & (0x3 | DirectionNorthWest);
}
} else {
sub_080205F8(this);
@ -210,7 +208,7 @@ void Peahat_ChargeTarget(PeahatEntity* this) {
super->speed += 4;
if ((gRoomTransition.frameCount & 3) == 0)
sub_08004596(super, GetFacingDirection(super, gUnk_020000B0));
sub_08004596(super, GetFacingDirection(super, gEnemyTarget));
}
ProcessMovement2(super);
} else {

View File

@ -45,8 +45,6 @@ u32 sub_08024E34(void);
void sub_08024E4C(PestoEntity*);
void sub_08024F50(PestoEntity*);
extern Entity* gUnk_020000B0;
extern void (*const Pesto_Functions[])(PestoEntity*);
extern void (*const gUnk_080CBEDC[])(PestoEntity*);
extern void (*const gUnk_080CBEF8[])(PestoEntity*);
@ -238,7 +236,7 @@ void sub_080242A0(PestoEntity* this) {
sub_08024940(this);
if (sub_08024CC0(this)) {
if (--super->timer == 0) {
super->direction = GetFacingDirection(super, gUnk_020000B0);
super->direction = GetFacingDirection(super, gEnemyTarget);
sub_08024E00(this, 1);
if (super->speed != 0) {
super->speed = 0;
@ -249,7 +247,7 @@ void sub_080242A0(PestoEntity* this) {
sub_08024A14(this, 3, 10);
}
if (sub_08049F1C(super, gUnk_020000B0, 0x20) && sub_08049FDC(super, 3)) {
if (sub_08049F1C(super, gEnemyTarget, 0x20) && sub_08049FDC(super, 3)) {
super->action = 4;
this->unk_80 = 0;
super->timer = 16;
@ -294,7 +292,7 @@ void sub_080243B8(PestoEntity* this) {
super->timer = 32;
super->speed = 0x80;
this->unk_83 = 0x80;
} else if (sub_08049F1C(super, gUnk_020000B0, 0xe)) {
} else if (sub_08049F1C(super, gEnemyTarget, 0xe)) {
this->unk_80++;
super->timer = 30;
super->speed = 0x100;
@ -600,13 +598,13 @@ void sub_08024A14(PestoEntity* this, u32 param_2, u32 param_3) {
break;
case 2:
if (sub_08024C48(this, TRUE)) {
sub_08004596(super, GetFacingDirection(super, gUnk_020000B0));
sub_08004596(super, GetFacingDirection(super, gEnemyTarget));
unk = TRUE;
}
break;
case 3:
if (sub_08024C48(this, TRUE)) {
super->direction = GetFacingDirection(super, gUnk_020000B0);
super->direction = GetFacingDirection(super, gEnemyTarget);
unk = TRUE;
}
break;
@ -662,9 +660,9 @@ bool32 sub_08024B38(PestoEntity* this) {
}
}
if (gPlayerState.hurtBlinkSpeed != 0) {
if (sub_08024C48(this, 1) && sub_08049F1C(super, gUnk_020000B0, 0xa0)) {
if (sub_08024C48(this, 1) && sub_08049F1C(super, gEnemyTarget, 0xa0)) {
iVar4 = 1;
super->child = gUnk_020000B0;
super->child = gEnemyTarget;
this->unk_83 |= 3;
this->unk_83 &= ~0x40;
}
@ -761,7 +759,7 @@ bool32 sub_08024CC0(PestoEntity* this) {
uVar2 = TRUE;
if (!sub_08024C48(this, 1)) {
uVar2 = FALSE;
} else if (!sub_08049F1C(super, gUnk_020000B0, 0x50) || !sub_08049FDC(super, 3)) {
} else if (!sub_08049F1C(super, gEnemyTarget, 0x50) || !sub_08049FDC(super, 3)) {
uVar2 = FALSE;
sub_08024C7C(this);
}

View File

@ -36,8 +36,6 @@ static void (*const Rope_Functions[6])(RopeEntity*) = {
Rope_OnGrabbed,
};
extern Entity* gUnk_020000B0;
void sub_08031600(RopeEntity* this);
u32 sub_0803163C(RopeEntity* this);
@ -147,7 +145,7 @@ void sub_080314FC(RopeEntity* this) {
if (sub_08049FA0(super)) {
if (!(this->unk_78)) {
if (sub_08049FDC(super, 1)) {
u = sub_0804A044(super, gUnk_020000B0, 0xc);
u = sub_0804A044(super, gEnemyTarget, 0xc);
if (u != 0xff) {
super->action = 3;
super->timer = 30;

View File

@ -167,14 +167,12 @@ void sub_08023E54(Entity* this) {
}
}
extern Entity* gUnk_020000B0;
void sub_08023E9C(Entity* this) {
u32 uVar3 = Random();
if (!sub_08049FA0(this) && (uVar3 & 1)) {
this->direction = DirectionRoundUp(sub_08049EE4(this));
} else if (sub_08049FDC(this, 1) && (uVar3 & 6)) {
u32 uVar3 = GetFacingDirection(this, gUnk_020000B0) - this->direction;
u32 uVar3 = GetFacingDirection(this, gEnemyTarget) - this->direction;
if (uVar3 != 0 && ((uVar3 + 4) & 0x1f) > 8) {
if ((uVar3 & 0x1f) < 0x10) {
this->direction = DirectionRound(this->direction + 8);

View File

@ -9,8 +9,6 @@
extern u32 sub_0804A024(Entity*, u32, u32);
extern Entity* gUnk_020000B0;
void sub_0802B9B4(Entity*);
void sub_0802B7A4(Entity*);
void sub_0802B960(Entity*);
@ -134,7 +132,7 @@ void sub_0802B820(Entity* this) {
sub_0802B9B4(this);
} else if (sub_08049FDC(this, 1)) {
if ((this->timer & 0xf) == 0) {
sub_08004596(this, GetFacingDirection(this, gUnk_020000B0));
sub_08004596(this, GetFacingDirection(this, gEnemyTarget));
}
} else {
sub_0802B9B4(this);

View File

@ -23,8 +23,6 @@ extern void (*const gUnk_080CBA40[])(SpinyChuchuEntity*);
extern const u8 gUnk_080CBA60[];
extern Entity* gUnk_020000B0;
void SpinyChuchu(SpinyChuchuEntity* this) {
EnemyFunctionHandler(super, (EntityActionArray)SpinyChuchu_Functions);
EnemySetFXOffset(super, 0, 1, -0x10);
@ -164,7 +162,7 @@ void sub_080226EC(SpinyChuchuEntity* this) {
super->action = 6;
super->zVelocity = Q_16_16(1.125);
super->speed = 0x140;
super->direction = GetFacingDirection(super, gUnk_020000B0);
super->direction = GetFacingDirection(super, gEnemyTarget);
super->hitType = 0x5a;
InitializeAnimation(super, 4);
return;

View File

@ -19,8 +19,6 @@ typedef struct {
/*0x7d*/ u8 unk_7d;
} StalfosEntity;
extern Entity* gUnk_020000B0;
extern void (*const Stalfos_Functions[])(StalfosEntity*);
extern void (*const Stalfos_Actions[])(StalfosEntity*);
extern void (*const Stalfos_SubActions[])(StalfosEntity*);
@ -291,10 +289,10 @@ bool32 sub_08039758(StalfosEntity* this) {
}
if (sub_08049FDC(super, 1) && (this->unk_7a == 0)) {
if (super->type == 0) {
if (EntityWithinDistance(super, gUnk_020000B0->x.HALF.HI, gUnk_020000B0->y.HALF.HI, 0x24)) {
if (EntityWithinDistance(super, gEnemyTarget->x.HALF.HI, gEnemyTarget->y.HALF.HI, 0x24)) {
super->action = 5;
super->speed = 0x180;
super->direction = GetFacingDirection(super, gUnk_020000B0);
super->direction = GetFacingDirection(super, gEnemyTarget);
super->animationState = (((super->direction + 4) & 0x18) >> 3);
sub_0803981C(this);
super->hitType = 0x46;
@ -303,10 +301,10 @@ bool32 sub_08039758(StalfosEntity* this) {
return TRUE;
}
} else {
if (EntityWithinDistance(super, gUnk_020000B0->x.HALF.HI, gUnk_020000B0->y.HALF.HI, 0x48)) {
if (EntityWithinDistance(super, gEnemyTarget->x.HALF.HI, gEnemyTarget->y.HALF.HI, 0x48)) {
super->action = 8;
super->timer = 60;
super->direction = GetFacingDirection(super, gUnk_020000B0);
super->direction = GetFacingDirection(super, gEnemyTarget);
InitAnimationForceUpdate(super, super->animationState + 0xc);
return TRUE;
}
@ -347,7 +345,7 @@ void sub_08039858(StalfosEntity* this) {
u32 sub_080398C0(StalfosEntity* this) {
u32 rand = Random();
if ((super->type == 0) && sub_08049FDC(super, 1) &&
(EntityWithinDistance(super, gUnk_020000B0->x.HALF.HI, gUnk_020000B0->y.HALF.HI, 0x58) != 0)) {
(EntityWithinDistance(super, gEnemyTarget->x.HALF.HI, gEnemyTarget->y.HALF.HI, 0x58) != 0)) {
return GetFacingDirection(super, &gPlayerEntity.base);
} else {
if ((sub_08049FA0(super) == 0) && ((rand & 7) != 0)) {

View File

@ -25,8 +25,6 @@ typedef struct {
static_assert(sizeof(TakkuriEntity) == 0x88);
extern Entity* gUnk_020000B0;
void (*const Takkuri_Functions[])(Entity*);
void (*const gUnk_080CFF54[])(TakkuriEntity*);
void (*const gUnk_080CFF6C[])(TakkuriEntity*);
@ -138,8 +136,8 @@ void sub_0803BD08(TakkuriEntity* this) {
GetNextFrame(super);
entity = sub_08049DF4(1);
if (entity != NULL) {
if (EntityInRectRadius(super, gUnk_020000B0, 0x88, 0x50)) {
if (gUnk_020000B0->y.HALF.HI > super->y.HALF.HI + 8) {
if (EntityInRectRadius(super, gEnemyTarget, 0x88, 0x50)) {
if (gEnemyTarget->y.HALF.HI > super->y.HALF.HI + 8) {
super->action = 2;
this->unk_0x84 = 0;
super->timer = 16;

View File

@ -29,8 +29,6 @@ void (*const gTorchTrapActions[])(TorchTrapEntity*);
const u16 gTorchTrapTimerLengths[];
const u16 gTorchTrapProjectileSpeeds[];
extern Entity* gUnk_020000B0;
bool32 sub_0803CFF0(TorchTrapEntity*);
bool32 sub_0803CFD8(TorchTrapEntity*);
void sub_0803D0B0(TorchTrapEntity*);
@ -66,7 +64,7 @@ void sub_0803CF38(TorchTrapEntity* this) {
if (sub_0803CFF0(this)) {
sub_0803D0B0(this);
} else if (sub_08049FDC(super, 0)) {
if (EntityWithinDistance(super, gUnk_020000B0->x.HALF.HI, gUnk_020000B0->y.HALF.HI, 0x20) == 0) {
if (EntityWithinDistance(super, gEnemyTarget->x.HALF.HI, gEnemyTarget->y.HALF.HI, 0x20) == 0) {
if (--this->projectileTimer == 0) {
TorchTrap_CreateProjectile(this);
TorchTrap_Reset(this);
@ -132,7 +130,7 @@ void TorchTrap_CreateProjectile(TorchTrapEntity* this) {
}
if (super->direction & 0x20) {
proj->direction = GetFacingDirection(super, gUnk_020000B0);
proj->direction = GetFacingDirection(super, gEnemyTarget);
} else {
proj->direction = super->direction;
}

View File

@ -15,8 +15,6 @@ typedef struct {
/*0x78*/ u16 unk_78;
} VaatiProjectileEntity;
extern Entity* gUnk_020000B0;
bool32 sub_0803E4A0(VaatiProjectileEntity*);
void VaatiProjectile_OnTick(VaatiProjectileEntity*);
void VaatiProjectile_OnCollision(VaatiProjectileEntity*);
@ -142,8 +140,8 @@ void VaatiProjectileFunction0Action1(VaatiProjectileEntity* this) {
super->timer = 10;
InitializeAnimation(super->child, 2);
} else {
if (gUnk_020000B0 != NULL) {
sub_08004596(super, GetFacingDirection(super, gUnk_020000B0));
if (gEnemyTarget != NULL) {
sub_08004596(super, GetFacingDirection(super, gEnemyTarget));
LinearMoveUpdate(super);
}
}

View File

@ -20,8 +20,6 @@ typedef struct {
/*0x7c*/ u16 unk_7c;
} WallMaster2Entity;
extern Entity* gUnk_020000B0;
void sub_0802CF64(WallMaster2Entity*);
void sub_0802CF8C(WallMaster2Entity*);
void sub_0802CFD8(WallMaster2Entity*);
@ -113,7 +111,7 @@ void sub_0802CD54(WallMaster2Entity* this) {
void sub_0802CDE8(WallMaster2Entity* this) {
if (--this->unk_78 && sub_08049FDC(super, 1)) {
if ((super->timer++ & 3) == 0) {
sub_08004596(super, GetFacingDirection(super, gUnk_020000B0));
sub_08004596(super, GetFacingDirection(super, gEnemyTarget));
sub_0802CF8C(this);
}
LinearMoveUpdate(super);