mirror of
https://github.com/zeldaret/tmc
synced 2026-07-05 21:49:13 -04:00
label a bunch of stuff
This commit is contained in:
@@ -4,7 +4,6 @@
|
||||
|
||||
extern u32 sub_080002D4(s32, s32, u32);
|
||||
extern s32 sub_080012DC(Entity*);
|
||||
extern void sub_08001324(Entity*);
|
||||
extern u32 sub_080044EC(Entity*, u32);
|
||||
extern u32 sub_08031E04(Entity*);
|
||||
extern void sub_08031E48(Entity*, Entity*);
|
||||
@@ -344,7 +343,7 @@ void sub_08031EE8(Entity* this) {
|
||||
if (this->height.HALF.HI < 1) {
|
||||
draw = this->spriteSettings.b.draw;
|
||||
if (!draw)
|
||||
sub_08004488(299);
|
||||
EnqueSFX(299);
|
||||
|
||||
this->spriteSettings.b.draw = 1;
|
||||
}
|
||||
@@ -415,7 +414,7 @@ void sub_08032008(Entity* this) {
|
||||
this->spriteSettings.b.flipX = (this->direction >> 4 ^ 1);
|
||||
|
||||
|
||||
sub_080AEF88(this);
|
||||
ProcessMovement(this);
|
||||
} else {
|
||||
if (this->field_0x76.HALF.HI == 0) {
|
||||
if (sub_0806FCB8(this, parent->x.HALF.HI, parent->y.HALF.HI, 1) == 0) {
|
||||
|
||||
+11
-12
@@ -2,7 +2,7 @@
|
||||
#include "functions.h"
|
||||
#include "player.h"
|
||||
|
||||
extern u32 sub_08049F64(Entity*, u32, u32);
|
||||
extern u32 PlayerInRange(Entity*, u32, u32);
|
||||
|
||||
u32 sub_08021D00();
|
||||
void sub_08021D44(Entity* this, u32 param_2);
|
||||
@@ -86,7 +86,7 @@ void sub_08021888(Entity* this) {
|
||||
sub_08021818(this);
|
||||
}
|
||||
|
||||
void sub_0802189C(Entity* this) {
|
||||
void Beetle_Initialize(Entity* this) {
|
||||
sub_0804A720(this);
|
||||
this->action = 1;
|
||||
this->field_0x1c = 1;
|
||||
@@ -131,7 +131,7 @@ void sub_08021984(Entity* this) {
|
||||
this->height.HALF.HI = -0x80;
|
||||
this->spriteRendering.b3 = 1;
|
||||
this->spriteOrientation.flipY = 1;
|
||||
sub_08004488(0x12d);
|
||||
EnqueSFX(0x12d);
|
||||
}
|
||||
|
||||
if (sub_08003FC4(this, 0x1800) == 0) {
|
||||
@@ -178,7 +178,7 @@ void sub_08021A64(Entity* this) {
|
||||
}
|
||||
sub_08021D44(this, tmp);
|
||||
}
|
||||
sub_080AEF88(this);
|
||||
ProcessMovement(this);
|
||||
GetNextFrame(this);
|
||||
}
|
||||
}
|
||||
@@ -198,7 +198,7 @@ void sub_08021AD8(Entity* this) {
|
||||
return;
|
||||
}
|
||||
this->direction = (u8)tmp;
|
||||
sub_08004488(0x7c);
|
||||
EnqueSFX(0x7c);
|
||||
}
|
||||
sub_080AEFE0(this);
|
||||
if (!sub_08003FC4(this, 0x1800))
|
||||
@@ -292,7 +292,7 @@ u32 sub_08021D00(Entity* this) {
|
||||
if (((u8*)&this->field_0x86)[0]) {
|
||||
((u8*)&this->field_0x86)[0]--;
|
||||
ret = 0;
|
||||
} else if (sub_08049F64(this, 1, 0x10) == 0) {
|
||||
} else if (PlayerInRange(this, 1, 0x10) == 0) {
|
||||
ret = 0;
|
||||
} else {
|
||||
this->action = 4;
|
||||
@@ -305,11 +305,10 @@ u32 sub_08021D00(Entity* this) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
void sub_08021D44(Entity* this, u32 param_2) {
|
||||
param_2 += 4;
|
||||
param_2 &= 0x18;
|
||||
this->direction = param_2;
|
||||
if (param_2 & 8) {
|
||||
void sub_08021D44(Entity* this, u32 direction) {
|
||||
direction = DirectionRoundUp(direction);
|
||||
this->direction = direction;
|
||||
if (DirectionIsHorizontal(direction)) {
|
||||
this->nonPlanarMovement = 0x180;
|
||||
} else {
|
||||
this->nonPlanarMovement = 0xc0;
|
||||
@@ -328,7 +327,7 @@ void (*const gUnk_080CB590[])(Entity*) = {
|
||||
};
|
||||
|
||||
void (*const gUnk_080CB5A8[])(Entity*) = {
|
||||
sub_0802189C,
|
||||
Beetle_Initialize,
|
||||
sub_080218B4,
|
||||
sub_08021A10,
|
||||
sub_08021A64,
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
#include "room.h"
|
||||
extern void sub_080A2CC0();
|
||||
extern void sub_0806F69C();
|
||||
extern void sub_08004488();
|
||||
extern void EnqueSFX();
|
||||
extern Entity* GetCurrentRoomProperty();
|
||||
|
||||
void BladeTrap(Entity* ent) {
|
||||
@@ -27,7 +27,7 @@ void BladeTrap(Entity* ent) {
|
||||
*puVar3 = uVar1 - 1;
|
||||
if ((*puVar3) == 0) {
|
||||
if ((u16)(ent->direction & 0x80) == 0) {
|
||||
sub_08004488(0x74);
|
||||
EnqueSFX(0x74);
|
||||
}
|
||||
sub_080A2CC0((EntityData*)ent, &ent->attachedEntity, puVar3);
|
||||
}
|
||||
|
||||
+21
-21
@@ -6,7 +6,7 @@ extern s32 sub_080012DC(Entity*);
|
||||
extern void sub_08001318(Entity*);
|
||||
extern void sub_080043A8(Entity*);
|
||||
extern u32 sub_08049F1C(Entity*, Entity*, u32);
|
||||
extern u32 sub_08049F64(Entity*, u32, u32);
|
||||
extern u32 PlayerInRange(Entity*, u32, u32);
|
||||
extern void sub_0804AA1C(Entity*);
|
||||
extern void sub_080AF160(Entity*);
|
||||
|
||||
@@ -25,7 +25,7 @@ void sub_0801FB14(Entity*);
|
||||
void sub_0801FB34(Entity*);
|
||||
void sub_0801FB68(Entity*);
|
||||
u32 sub_0801FBD0(Entity*);
|
||||
void sub_0801FBE4(Entity*);
|
||||
void Chuchu_JumpAtPlayer(Entity*);
|
||||
|
||||
extern void (*const gUnk_080012C8[])(Entity*);
|
||||
extern void (*const gUnk_080CA21C[])(Entity*);
|
||||
@@ -78,7 +78,7 @@ void Chuchu(Entity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0801EEE4(Entity* this) {
|
||||
void Chuchu_OnTick(Entity* this) {
|
||||
switch (this->entityType.form) {
|
||||
case 0:
|
||||
sub_0801F3AC(this);
|
||||
@@ -193,13 +193,13 @@ void sub_0801F12C(Entity* this) {
|
||||
if ((this->field_0xf++ & 7) == 0) {
|
||||
this->direction = sub_08049F84(this, 1);
|
||||
}
|
||||
sub_080AEF88(this);
|
||||
ProcessMovement(this);
|
||||
GetNextFrame(this);
|
||||
if (--this->actionDelay == 0) {
|
||||
if (sub_08049F64(this, 1, 0x38)) {
|
||||
if (PlayerInRange(this, 1, 0x38)) {
|
||||
this->action = 4;
|
||||
sub_0801FBE4(this);
|
||||
} else if (sub_08049F64(this, 1, 0x48)) {
|
||||
Chuchu_JumpAtPlayer(this);
|
||||
} else if (PlayerInRange(this, 1, 0x48)) {
|
||||
this->actionDelay = (Random() & 3) + 0xc;
|
||||
} else {
|
||||
sub_0801F328(this);
|
||||
@@ -213,7 +213,7 @@ void sub_0801F1B0(Entity* this) {
|
||||
if (this->frames.all & 1) {
|
||||
this->frames.all ^= 1;
|
||||
this->damageType = 90;
|
||||
sub_08004488(299);
|
||||
EnqueSFX(299);
|
||||
}
|
||||
sub_080AEFE0(this);
|
||||
if (sub_08003FC4(this, 0x4000) == 0)
|
||||
@@ -313,7 +313,7 @@ void sub_0801F3AC(Entity* this) {
|
||||
return;
|
||||
|
||||
if (sub_08049FDC(this, 1)) {
|
||||
if (this->field_0x82.HALF.LO || sub_08049F64(this, 1, 0x48)) {
|
||||
if (this->field_0x82.HALF.LO || PlayerInRange(this, 1, 0x48)) {
|
||||
if (this->action == 1) {
|
||||
this->action = 2;
|
||||
this->spriteSettings.b.draw = 1;
|
||||
@@ -377,10 +377,10 @@ void sub_0801F508(Entity* this) {
|
||||
sub_0801F730(this);
|
||||
} else {
|
||||
u8 tmp = ++this->actionDelay & 7;
|
||||
if (tmp == 0 && sub_08049F64(this, 1, 0x38)) {
|
||||
if (tmp == 0 && PlayerInRange(this, 1, 0x38)) {
|
||||
if (Random() & 1) {
|
||||
this->action = 5;
|
||||
sub_0801FBE4(this);
|
||||
Chuchu_JumpAtPlayer(this);
|
||||
} else {
|
||||
this->field_0x82.HALF.HI = 120;
|
||||
sub_0801F730(this);
|
||||
@@ -389,7 +389,7 @@ void sub_0801F508(Entity* this) {
|
||||
if (tmp == 4) {
|
||||
this->direction = sub_08049F84(this, 1);
|
||||
}
|
||||
sub_080AEF88(this);
|
||||
ProcessMovement(this);
|
||||
GetNextFrame(this);
|
||||
}
|
||||
}
|
||||
@@ -400,7 +400,7 @@ void sub_0801F584(Entity* this) {
|
||||
if (this->frames.all & 0x1) {
|
||||
this->frames.all ^= 1;
|
||||
this->damageType = 91;
|
||||
sub_08004488(299);
|
||||
EnqueSFX(299);
|
||||
}
|
||||
sub_080AEFE0(this);
|
||||
if (sub_08003FC4(this, 0x4000) == 0)
|
||||
@@ -493,7 +493,7 @@ void sub_0801F764(Entity* this) {
|
||||
|
||||
if (sub_08049FDC(this, 1)) {
|
||||
if (this->action == 1) {
|
||||
if (this->field_0x82.HALF.LO || sub_08049F64(this, 1, 0x48)) {
|
||||
if (this->field_0x82.HALF.LO || PlayerInRange(this, 1, 0x48)) {
|
||||
this->action = 2;
|
||||
this->spriteSettings.b.draw = 1;
|
||||
this->field_0x82.HALF.LO = 1;
|
||||
@@ -520,7 +520,7 @@ void sub_0801F7FC(Entity* this) {
|
||||
if (sub_08049FDC(this, 1) == 0)
|
||||
return;
|
||||
|
||||
if (this->field_0x82.HALF.LO || sub_08049F64(this, 1, 0x48)) {
|
||||
if (this->field_0x82.HALF.LO || PlayerInRange(this, 1, 0x48)) {
|
||||
this->action = 2;
|
||||
this->spriteSettings.b.draw = 1;
|
||||
this->field_0x82.HALF.LO = 1;
|
||||
@@ -548,7 +548,7 @@ void sub_0801F884(Entity* this) {
|
||||
ent->entityType.parameter = 64;
|
||||
this->action = 4;
|
||||
this->damageType = 165;
|
||||
sub_08004488(0x193);
|
||||
EnqueSFX(0x193);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -562,12 +562,12 @@ void sub_0801F8C0(Entity* this) {
|
||||
u8 tmp = ++this->actionDelay & 7;
|
||||
if (tmp == 0 && sub_08049F1C(this, gUnk_020000B0, 0x38)) {
|
||||
this->action = 5;
|
||||
sub_0801FBE4(this);
|
||||
Chuchu_JumpAtPlayer(this);
|
||||
} else {
|
||||
if (tmp == 4) {
|
||||
this->direction = GetFacingDirection(this, gUnk_020000B0);
|
||||
}
|
||||
sub_080AEF88(this);
|
||||
ProcessMovement(this);
|
||||
GetNextFrame(this);
|
||||
}
|
||||
}
|
||||
@@ -577,7 +577,7 @@ void sub_0801F940(Entity* this) {
|
||||
if (this->frames.all & 0x10) {
|
||||
if (this->frames.all & 1) {
|
||||
this->frames.all ^= 1;
|
||||
sub_08004488(299);
|
||||
EnqueSFX(299);
|
||||
}
|
||||
sub_080AEFE0(this);
|
||||
if (sub_08003FC4(this, 0x4000) == 0)
|
||||
@@ -704,7 +704,7 @@ u32 sub_0801FBD0(Entity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0801FBE4(Entity* this) {
|
||||
void Chuchu_JumpAtPlayer(Entity* this) {
|
||||
this->nonPlanarMovement = 0x180;
|
||||
this->field_0x20 = 0x20000;
|
||||
this->direction = sub_08049F84(this, 1);
|
||||
@@ -713,7 +713,7 @@ void sub_0801FBE4(Entity* this) {
|
||||
|
||||
// clang-format off
|
||||
void (*const gUnk_080CA21C[])(Entity*) = {
|
||||
sub_0801EEE4,
|
||||
Chuchu_OnTick,
|
||||
sub_0801EF40,
|
||||
sub_0801F02C,
|
||||
sub_0801F048,
|
||||
|
||||
@@ -49,10 +49,10 @@ void sub_08022988(Entity* this) {
|
||||
|
||||
this->frameIndex = 1;
|
||||
this->field_0x20 = 0x10000;
|
||||
sub_08004488(0xd6);
|
||||
EnqueSFX(0xd6);
|
||||
}
|
||||
|
||||
sub_080AEF88(this);
|
||||
ProcessMovement(this);
|
||||
if (sub_08003FC4(this, 0x2000) == 0) {
|
||||
if (--this->actionDelay == 0) {
|
||||
sub_08022A88(this);
|
||||
@@ -75,7 +75,7 @@ void sub_080229F8(Entity* this) {
|
||||
sub_08022B44(this);
|
||||
} else {
|
||||
this->field_0x20 = 0x10000;
|
||||
sub_08004488(0xd6);
|
||||
EnqueSFX(0xd6);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -88,7 +88,7 @@ void sub_08022A40(Entity* this) {
|
||||
this->frameIndex = 1;
|
||||
}
|
||||
|
||||
sub_080AEF88(this);
|
||||
ProcessMovement(this);
|
||||
if (sub_08003FC4(this, 0x2000) == 0) {
|
||||
if (--this->actionDelay == 0) {
|
||||
sub_08022A88(this);
|
||||
@@ -143,7 +143,7 @@ void sub_08022B44(Entity *this){
|
||||
if (this->direction & 0xf)
|
||||
this->spriteSettings.b.flipX = (this->direction >> 4)^1;
|
||||
|
||||
sub_08004488(0xd6);
|
||||
EnqueSFX(0xd6);
|
||||
}
|
||||
|
||||
|
||||
|
||||
+16
-16
@@ -17,7 +17,7 @@ u32 sub_080214FC();
|
||||
void sub_08021540();
|
||||
void sub_08021600();
|
||||
void sub_080213B0();
|
||||
u32 sub_08049F64();
|
||||
u32 PlayerInRange();
|
||||
u32 sub_0802169C();
|
||||
void sub_0802124C();
|
||||
void sub_08021644();
|
||||
@@ -90,7 +90,7 @@ void sub_08020BB8(Entity* this) {
|
||||
}
|
||||
this->action = 10;
|
||||
sub_08021218(this, 0xb, this->animationState);
|
||||
sub_08004488(0x15d);
|
||||
EnqueSFX(0x15d);
|
||||
sub_08021588(this);
|
||||
break;
|
||||
case 0x4c:
|
||||
@@ -150,7 +150,7 @@ void sub_08020DD4(Entity* this) {
|
||||
} else {
|
||||
if (--this->actionDelay == 0)
|
||||
sub_08021540(this);
|
||||
sub_080AEF88(this);
|
||||
ProcessMovement(this);
|
||||
UpdateAnimationSingleFrame(this);
|
||||
}
|
||||
}
|
||||
@@ -178,13 +178,13 @@ void sub_08020E78(Entity* this) {
|
||||
}
|
||||
|
||||
void sub_08020E98(Entity* this) {
|
||||
if (sub_08049F64(this, 1, 0x38)) {
|
||||
if (PlayerInRange(this, 1, 0x38)) {
|
||||
if (sub_0802169C(this, gUnk_020000B0)) {
|
||||
this->action = 8;
|
||||
sub_08021218(this, 7, this->animationState);
|
||||
} else {
|
||||
this->direction = GetFacingDirection(gUnk_020000B0, this);
|
||||
if (sub_080AEF88(this) == 0) {
|
||||
if (ProcessMovement(this) == 0) {
|
||||
this->action = 8;
|
||||
sub_08021218(this, 7, this->animationState);
|
||||
} else {
|
||||
@@ -198,7 +198,7 @@ void sub_08020E98(Entity* this) {
|
||||
sub_08021414(this);
|
||||
} else {
|
||||
this->direction = GetFacingDirection(this, gUnk_020000B0);
|
||||
sub_080AEF88(this);
|
||||
ProcessMovement(this);
|
||||
sub_0802124C(this);
|
||||
sub_08021644(this);
|
||||
}
|
||||
@@ -212,7 +212,7 @@ void sub_08020F28(Entity* this) {
|
||||
}
|
||||
|
||||
void sub_08020F48(Entity* this) {
|
||||
if (sub_08049F64(this, 1, 0x48)) {
|
||||
if (PlayerInRange(this, 1, 0x48)) {
|
||||
if (sub_08021664(this, gUnk_020000B0)) {
|
||||
u32 uVar2 = sub_0804A044(this, gUnk_020000B0, 9);
|
||||
if (uVar2 == 0xff) {
|
||||
@@ -273,7 +273,7 @@ void sub_08021038(Entity* this) {
|
||||
pEVar2->parent = this;
|
||||
this->attachedEntity = pEVar2;
|
||||
}
|
||||
sub_08004488(270);
|
||||
EnqueSFX(270);
|
||||
}
|
||||
|
||||
if (this->frames.all & 0x80) {
|
||||
@@ -295,7 +295,7 @@ void sub_080210A8(Entity* this) {
|
||||
if (this->frames.all & 1) {
|
||||
this->frames.all = 0;
|
||||
sub_08021588(this);
|
||||
sub_08004488(349);
|
||||
EnqueSFX(349);
|
||||
} else if (this->frames.all & 0x80) {
|
||||
sub_08021390(this);
|
||||
}
|
||||
@@ -313,12 +313,12 @@ void sub_080210E4(Entity* this) {
|
||||
this->attachedEntity = ent;
|
||||
}
|
||||
|
||||
sub_08004488(270);
|
||||
EnqueSFX(270);
|
||||
}
|
||||
|
||||
sub_08021644(this);
|
||||
if ((this->frames.all & 0x10) &&
|
||||
(!sub_080AEF88(this) || (this->attachedEntity && (this->attachedEntity->bitfield & 0x80)))) {
|
||||
(!ProcessMovement(this) || (this->attachedEntity && (this->attachedEntity->bitfield & 0x80)))) {
|
||||
sub_080213D0(this, 0);
|
||||
} else {
|
||||
if (--this->field_0x76.HWORD == 0)
|
||||
@@ -516,7 +516,7 @@ void sub_08021424(Entity* this) {
|
||||
sub_080212B0(this);
|
||||
} else {
|
||||
this->direction = sub_080045D4(this->x.HALF.HI, this->y.HALF.HI, x, y);
|
||||
if (!sub_080AEF88(this)) {
|
||||
if (!ProcessMovement(this)) {
|
||||
sub_080212B0(this);
|
||||
} else {
|
||||
UpdateAnimationSingleFrame(this);
|
||||
@@ -575,13 +575,13 @@ void sub_0802159C(Entity* this) {
|
||||
ent->parent = this;
|
||||
this->attachedEntity = ent;
|
||||
}
|
||||
sub_08004488(0x116);
|
||||
EnqueSFX(0x116);
|
||||
} else if (this->frames.all == 2) {
|
||||
this->frames.all = 0;
|
||||
sub_08021588(this);
|
||||
} else if (this->frames.all & 0x20) {
|
||||
this->frames.all &= ~0x20;
|
||||
sub_08004488(0x115);
|
||||
EnqueSFX(0x115);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -596,7 +596,7 @@ void sub_08021600(Entity* this) {
|
||||
ent->parent = this;
|
||||
this->attachedEntity = ent;
|
||||
}
|
||||
sub_08004488(0x10e);
|
||||
EnqueSFX(0x10e);
|
||||
} else if (this->frames.all == 2) {
|
||||
this->frames.all = 0;
|
||||
sub_08021588(this);
|
||||
@@ -606,7 +606,7 @@ void sub_08021600(Entity* this) {
|
||||
void sub_08021644(Entity* this) {
|
||||
if (this->frames.all & 0x20) {
|
||||
this->frames.all &= ~0x20;
|
||||
sub_08004488(0x7d);
|
||||
EnqueSFX(0x7d);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -102,7 +102,7 @@ void sub_080220F0(Entity* this) {
|
||||
fx->y.HALF.HI += off->v;
|
||||
}
|
||||
}
|
||||
sub_08004488(260);
|
||||
EnqueSFX(260);
|
||||
} else if (this->frames.all & 1) {
|
||||
this->field_0x44 = 4;
|
||||
}
|
||||
|
||||
+11
-9
@@ -1,14 +1,14 @@
|
||||
#include "entity.h"
|
||||
#include "functions.h"
|
||||
|
||||
extern void (*const gUnk_080CB570[])(Entity*);
|
||||
extern void (*const gHangingSeedFunctions[])(Entity*);
|
||||
extern void (*const gUnk_080CB588[])(Entity*);
|
||||
|
||||
void HangingSeed(Entity* this) {
|
||||
EnemyFunctionHandler(this, gUnk_080CB570);
|
||||
EnemyFunctionHandler(this, gHangingSeedFunctions);
|
||||
}
|
||||
|
||||
void sub_080216E4(Entity* this) {
|
||||
void HangingSeed_OnTick(Entity* this) {
|
||||
gUnk_080CB588[this->action](this);
|
||||
}
|
||||
|
||||
@@ -20,9 +20,10 @@ void sub_080216FC(Entity* this) {
|
||||
}
|
||||
|
||||
void nullsub_7(Entity* this) {
|
||||
/* ... */
|
||||
}
|
||||
|
||||
void sub_08021720(Entity* this) {
|
||||
void HangingSeed_Initialize(Entity* this) {
|
||||
this->action = 1;
|
||||
this->spriteSettings.b.draw = 1;
|
||||
this->frameIndex = this->entityType.form;
|
||||
@@ -30,12 +31,13 @@ void sub_08021720(Entity* this) {
|
||||
this->spritePriority.b0 = 3;
|
||||
}
|
||||
|
||||
void nullsub_08(Entity* this) {
|
||||
void HangingSeed_Hang(Entity* this) {
|
||||
/* ... */
|
||||
}
|
||||
|
||||
// clang-format off
|
||||
void (*const gUnk_080CB570[])(Entity*) = {
|
||||
sub_080216E4,
|
||||
void (*const gHangingSeedFunctions[])(Entity*) = {
|
||||
HangingSeed_OnTick,
|
||||
sub_080216FC,
|
||||
sub_08001324,
|
||||
sub_0804A7D4,
|
||||
@@ -44,8 +46,8 @@ void (*const gUnk_080CB570[])(Entity*) = {
|
||||
};
|
||||
|
||||
void (*const gUnk_080CB588[])(Entity*) = {
|
||||
sub_08021720,
|
||||
nullsub_08,
|
||||
HangingSeed_Initialize,
|
||||
HangingSeed_Hang,
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
|
||||
+2
-2
@@ -34,7 +34,7 @@ void sub_080323DC(Entity* this) {
|
||||
void sub_080323F4(Entity* this) {
|
||||
u32 var;
|
||||
|
||||
if ((u8)(this->action - 3) >= 2) {
|
||||
if (this->action != 3 && this->action != 4) {
|
||||
this->action = 3;
|
||||
this->actionDelay = 0xC;
|
||||
var = ((this->field_0x3e + 4) & 0x18) ^ 0x10;
|
||||
@@ -69,7 +69,7 @@ void sub_0803248C(Entity* this) {
|
||||
if (this->actionDelay == 0) {
|
||||
sub_08032650(this);
|
||||
}
|
||||
if (sub_080AEF88(this) == 0) {
|
||||
if (ProcessMovement(this) == 0) {
|
||||
this->actionDelay = 1;
|
||||
}
|
||||
UpdateAnimationSingleFrame(this);
|
||||
|
||||
+45
-49
@@ -10,31 +10,36 @@ extern void sub_0806F4E8(Entity*);
|
||||
extern u32 sub_0806F3E4(Entity*);
|
||||
extern void sub_0804A7D4(Entity*);
|
||||
extern void sub_0804A720(Entity*);
|
||||
extern void sub_08021EF0(Entity*);
|
||||
extern void Keese_StartFly(Entity*);
|
||||
extern void sub_080AEFB4(Entity*);
|
||||
extern void sub_08021F24(Entity*);
|
||||
extern u32 sub_0806FCB8(Entity*, s32, s32, u32);
|
||||
extern u32 sub_08049FA0(Entity*);
|
||||
extern u32 sub_08049EE4(Entity*);
|
||||
|
||||
extern void (*const gUnk_080CB69C[])(Entity*);
|
||||
extern void (*const gUnk_080CB6B4[])(Entity*);
|
||||
extern void (*const gKeeseFunctions[])(Entity*);
|
||||
extern void (*const gKeeseActions[])(Entity*);
|
||||
extern void (*const gUnk_080CB6C4[])(Entity*);
|
||||
|
||||
extern const s8 gUnk_080CB6D0[];
|
||||
extern const u16 gUnk_080CB6D6[];
|
||||
extern const u8 gUnk_080CB6F6[];
|
||||
extern const s8 gKeeseSpriteOffsets[];
|
||||
extern const u16 gKeeseFlyDurations[];
|
||||
extern const u8 gKeeseRestDurations[];
|
||||
|
||||
enum {
|
||||
KeeseAnimation_Fly,
|
||||
KeeseAnimation_Rest,
|
||||
};
|
||||
|
||||
void Keese(Entity* this) {
|
||||
gUnk_080CB69C[GetNextFunction(this)](this);
|
||||
gKeeseFunctions[GetNextFunction(this)](this);
|
||||
}
|
||||
|
||||
void sub_08021D80(Entity* this) {
|
||||
gUnk_080CB6B4[this->action](this);
|
||||
void Keese_OnTick(Entity* this) {
|
||||
gKeeseActions[this->action](this);
|
||||
}
|
||||
|
||||
void sub_08021d98(Entity* this) {
|
||||
sub_0804AA30(this, gUnk_080CB69C);
|
||||
sub_0804AA30(this, gKeeseFunctions);
|
||||
}
|
||||
|
||||
void sub_08021DA8(Entity* this) {
|
||||
@@ -57,10 +62,9 @@ void sub_08021DDC(Entity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08021DF0(Entity* this) {
|
||||
|
||||
void Keese_Initialize(Entity* this) {
|
||||
sub_0804A720(this);
|
||||
if ((this->entityType).form != 0) {
|
||||
if (this->entityType.form != 0) {
|
||||
this->spritePriority.b1 = 1;
|
||||
this->height.HALF.HI = -0x10;
|
||||
}
|
||||
@@ -69,15 +73,15 @@ void sub_08021DF0(Entity* this) {
|
||||
this->spritePriority.b0 = 3;
|
||||
this->collisionLayer = 3;
|
||||
UpdateSpriteForCollisionLayer(this);
|
||||
sub_08021EF0(this);
|
||||
Keese_StartFly(this);
|
||||
}
|
||||
|
||||
void sub_08021E4C(Entity* this) {
|
||||
void Keese_Fly(Entity* this) {
|
||||
if (this->field_0x78.HWORD != 0) {
|
||||
this->field_0x78.HWORD--;
|
||||
}
|
||||
if (this->field_0x7a.HWORD != 0) {
|
||||
(this->field_0x7a.HWORD)--;
|
||||
this->field_0x7a.HWORD--;
|
||||
}
|
||||
GetNextFrame(this);
|
||||
if ((this->frames.b.f3) != 0) {
|
||||
@@ -85,62 +89,54 @@ void sub_08021E4C(Entity* this) {
|
||||
} else {
|
||||
sub_080AEFB4(this);
|
||||
}
|
||||
this->spriteOffsetY = gUnk_080CB6D0[this->frames.all];
|
||||
this->spriteOffsetY = gKeeseSpriteOffsets[this->frames.all];
|
||||
}
|
||||
|
||||
void sub_08021EA4(Entity* this) {
|
||||
void Keese_Rest(Entity* this) {
|
||||
if (--this->actionDelay == 0) {
|
||||
sub_08021EF0(this);
|
||||
Keese_StartFly(this);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08021EBC(Entity* this) {
|
||||
s32 iVar1;
|
||||
|
||||
void Keese_Sleep(Entity* this) {
|
||||
if (this->actionDelay != 0) {
|
||||
this->actionDelay--;
|
||||
} else {
|
||||
iVar1 = sub_0806FCB8(this, gPlayerEntity.x.HALF.HI, gPlayerEntity.y.HALF.HI, 0x70);
|
||||
if (iVar1 != 0) {
|
||||
sub_08021EF0(this);
|
||||
}
|
||||
if (sub_0806FCB8(this, gPlayerEntity.x.HALF.HI, gPlayerEntity.y.HALF.HI, 0x70))
|
||||
Keese_StartFly(this);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08021EF0(Entity* this) {
|
||||
u32 uVar1;
|
||||
|
||||
void Keese_StartFly(Entity* this) {
|
||||
this->action = 1;
|
||||
this->field_0x78.HWORD = gUnk_080CB6D6[Random() & 0xf];
|
||||
this->field_0x7a.HWORD = 0x3c;
|
||||
InitializeAnimation(this, 0);
|
||||
this->field_0x78.HWORD = gKeeseFlyDurations[Random() & 0xf];
|
||||
this->field_0x7a.HWORD = 60;
|
||||
InitializeAnimation(this, KeeseAnimation_Fly);
|
||||
}
|
||||
|
||||
void sub_08021F24(Entity* this) {
|
||||
u32 bVar1;
|
||||
|
||||
if (this->field_0x78.HWORD == 0) {
|
||||
this->action = 2;
|
||||
this->actionDelay = gUnk_080CB6F6[Random() & 0xf];
|
||||
InitializeAnimation(this, 1);
|
||||
this->actionDelay = gKeeseRestDurations[Random() & 0xf];
|
||||
InitializeAnimation(this, KeeseAnimation_Rest);
|
||||
} else if (!this->field_0x7a.HWORD &&
|
||||
!(sub_0806FCB8(this, gPlayerEntity.x.HALF.HI, gPlayerEntity.y.HALF.HI, 0x70))) {
|
||||
this->action = 3;
|
||||
this->actionDelay = 0x1e;
|
||||
InitializeAnimation(this, 1);
|
||||
this->actionDelay = 30;
|
||||
InitializeAnimation(this, KeeseAnimation_Rest);
|
||||
} else {
|
||||
if (sub_08049FA0(this) != 0) {
|
||||
this->direction = Random() & 0x1f;
|
||||
} else {
|
||||
this->direction = sub_08049EE4(this);
|
||||
}
|
||||
InitializeAnimation(this, 0);
|
||||
InitializeAnimation(this, KeeseAnimation_Fly);
|
||||
}
|
||||
}
|
||||
|
||||
// clang-format off
|
||||
void (*const gUnk_080CB69C[])(Entity*) = {
|
||||
sub_08021D80,
|
||||
void (*const gKeeseFunctions[])(Entity*) = {
|
||||
Keese_OnTick,
|
||||
sub_08021d98,
|
||||
sub_08001328,
|
||||
sub_0804A7D4,
|
||||
@@ -148,11 +144,11 @@ void (*const gUnk_080CB69C[])(Entity*) = {
|
||||
sub_08021DA8,
|
||||
};
|
||||
|
||||
void (*const gUnk_080CB6B4[])(Entity*) = {
|
||||
sub_08021DF0,
|
||||
sub_08021E4C,
|
||||
sub_08021EA4,
|
||||
sub_08021EBC,
|
||||
void (*const gKeeseActions[])(Entity*) = {
|
||||
Keese_Initialize,
|
||||
Keese_Fly,
|
||||
Keese_Rest,
|
||||
Keese_Sleep,
|
||||
};
|
||||
|
||||
void (*const gUnk_080CB6C4[])(Entity*) = {
|
||||
@@ -161,16 +157,16 @@ void (*const gUnk_080CB6C4[])(Entity*) = {
|
||||
sub_08021DDC,
|
||||
};
|
||||
|
||||
const s8 gUnk_080CB6D0[] = {
|
||||
const s8 gKeeseSpriteOffsets[] = {
|
||||
1, -2, -5, -2, 1, 0,
|
||||
};
|
||||
|
||||
const u16 gUnk_080CB6D6[] = {
|
||||
const u16 gKeeseFlyDurations[] = {
|
||||
180, 180, 300, 300, 300, 300, 300, 300,
|
||||
480, 480, 480, 480, 480, 480, 720, 720,
|
||||
};
|
||||
|
||||
const u8 gUnk_080CB6F6[] = {
|
||||
const u8 gKeeseRestDurations[] = {
|
||||
30, 30, 45, 45, 45, 45, 45, 45,
|
||||
60, 60, 60, 60, 60, 60, 75, 75,
|
||||
};
|
||||
|
||||
+2
-2
@@ -50,7 +50,7 @@ extern u32 sub_080041A0(Entity *, Entity *, u32, u32);
|
||||
extern u32 GetFacingDirection(Entity *, Entity *);
|
||||
|
||||
// sub_0803CB64
|
||||
extern void sub_08004488(u32);
|
||||
extern void EnqueSFX(u32);
|
||||
|
||||
typedef struct {
|
||||
s8 x;
|
||||
@@ -344,7 +344,7 @@ void sub_0803CB64(Entity *this) {
|
||||
|
||||
PositionRelative(this, cloud, offset->x << 16, offset->y << 16);
|
||||
|
||||
sub_08004488(0x193);
|
||||
EnqueSFX(0x193);
|
||||
}
|
||||
|
||||
void sub_0803CBAC(Entity *this) {
|
||||
|
||||
+58
-50
@@ -8,27 +8,39 @@ extern void sub_0804AA30(Entity*, void (*const func[])(Entity*));
|
||||
extern void sub_0804A7D4(Entity*);
|
||||
extern Entity* CreateDeathFx(Entity*, u32, u32);
|
||||
extern void sub_0804A720(Entity*);
|
||||
bool32 sub_0801FE68(Entity*, s32);
|
||||
extern void sub_0801FED4(Entity*);
|
||||
extern u32 sub_080002D4(s32, s32, u32);
|
||||
extern u32 sub_080002BC(s32, s32, u32);
|
||||
extern u32 sub_08049FDC(Entity*, u32);
|
||||
bool32 sub_0801FDE4(Entity*, s32, s32);
|
||||
|
||||
extern void (*const gUnk_080CA49C[])(Entity*);
|
||||
extern void (*const gUnk_080CA4B4[])(Entity*);
|
||||
extern Entity* gUnk_020000B0;
|
||||
extern const u8 gUnk_080CA4C8[];
|
||||
extern const u16 gUnk_080CA4CA[];
|
||||
extern s16 gSineTable[];
|
||||
|
||||
bool32 Leever_PlayerInRange(Entity*, s32);
|
||||
void Leever_Move(Entity*);
|
||||
|
||||
extern void (*const gLeeverFunctions[])(Entity*);
|
||||
extern void (*const gLeeverActions[])(Entity*);
|
||||
extern const s8 gLeeverDrift[];
|
||||
extern const u16 gUnk_080CA4CA[];
|
||||
|
||||
enum {
|
||||
LeeverAnimation_DigUp,
|
||||
LeeverAnimation_DigDown,
|
||||
LeeverAnimation_Attack,
|
||||
};
|
||||
|
||||
enum {
|
||||
LeeverForm_Red,
|
||||
LeeverForm_Blue,
|
||||
};
|
||||
|
||||
void Leever(Entity* this) {
|
||||
EnemyFunctionHandler(this, gUnk_080CA49C);
|
||||
EnemyFunctionHandler(this, gLeeverFunctions);
|
||||
SetChildOffset(this, 0, 1, -0x10);
|
||||
}
|
||||
|
||||
void sub_0801FC28(Entity* this) {
|
||||
gUnk_080CA4B4[this->action](this);
|
||||
void Leever_OnTick(Entity* this) {
|
||||
gLeeverActions[this->action](this);
|
||||
}
|
||||
|
||||
void sub_0801FC40(Entity* this) {
|
||||
@@ -41,30 +53,30 @@ void sub_0801FC40(Entity* this) {
|
||||
sub_0804A9FC(this, 0x1c);
|
||||
}
|
||||
}
|
||||
sub_0804AA30(this, gUnk_080CA49C);
|
||||
sub_0804AA30(this, gLeeverFunctions);
|
||||
}
|
||||
|
||||
void sub_0801FC7C(Entity* this) {
|
||||
if ((this->entityType).form == 0) {
|
||||
if (this->entityType.form == LeeverForm_Red) {
|
||||
sub_0804A7D4(this);
|
||||
} else {
|
||||
CreateDeathFx(this, 0xf1, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0801FC9C(Entity* this) {
|
||||
void Leever_Initialize(Entity* this) {
|
||||
sub_0804A720(this);
|
||||
this->action = 1;
|
||||
this->actionDelay = Random();
|
||||
}
|
||||
|
||||
void sub_0801FCB0(Entity* this) {
|
||||
void Leever_Idle(Entity* this) {
|
||||
if (--this->actionDelay == 0) {
|
||||
if (sub_0801FE68(this, Random() & 0x1f) != 0) {
|
||||
if (Leever_PlayerInRange(this, Random() & 0x1f)) {
|
||||
this->action = 2;
|
||||
this->spriteSettings.b.draw = TRUE;
|
||||
this->direction = (GetFacingDirection(this, gUnk_020000B0) + gUnk_080CA4C8[Random() & 1]) & 0x1f;
|
||||
InitializeAnimation(this, 0);
|
||||
this->direction = (GetFacingDirection(this, gUnk_020000B0) + gLeeverDrift[Random() & 1]) & 0x1f;
|
||||
InitializeAnimation(this, LeeverAnimation_DigUp);
|
||||
UpdateSpriteForCollisionLayer(this);
|
||||
} else {
|
||||
this->actionDelay = (Random() & 0x18) + 8;
|
||||
@@ -72,38 +84,36 @@ void sub_0801FCB0(Entity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0801FD2C(Entity* this) {
|
||||
|
||||
void Leever_DigUp(Entity* this) {
|
||||
GetNextFrame(this);
|
||||
|
||||
if (this->frames.b.f3 != 0) {
|
||||
this->action = 3;
|
||||
if (this->entityType.form == 0) {
|
||||
this->field_0x74.HWORD = 0xb4;
|
||||
if (this->entityType.form == LeeverForm_Red) {
|
||||
this->field_0x74.HWORD = 180;
|
||||
} else {
|
||||
this->field_0x74.HWORD = 0x6e;
|
||||
this->field_0x74.HWORD = 110;
|
||||
}
|
||||
InitializeAnimation(this, 2);
|
||||
InitializeAnimation(this, LeeverAnimation_Attack);
|
||||
} else if (this->frames.b.f0 != 0) {
|
||||
this->frames.all &= 0xfe;
|
||||
this->flags |= 0x80;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0801FD80(Entity* this) {
|
||||
|
||||
sub_0801FED4(this);
|
||||
void Leever_Attack(Entity* this) {
|
||||
Leever_Move(this);
|
||||
GetNextFrame(this);
|
||||
|
||||
if (--this->field_0x74.HWORD == 0) {
|
||||
this->action = 4;
|
||||
this->flags &= 0x7f;
|
||||
InitializeAnimation(this, 1);
|
||||
InitializeAnimation(this, LeeverAnimation_DigDown);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0801FDB4(Entity* this) {
|
||||
sub_0801FED4(this);
|
||||
void Leever_DigDown(Entity* this) {
|
||||
Leever_Move(this);
|
||||
GetNextFrame(this);
|
||||
if ((this->frames.b.f3) != 0) {
|
||||
this->action = 1;
|
||||
@@ -132,7 +142,7 @@ u32 sub_0801FDE4(Entity* ent, s32 x, s32 y) {
|
||||
}
|
||||
}
|
||||
|
||||
bool32 sub_0801FE68(Entity* ent, s32 arg2) {
|
||||
bool32 Leever_PlayerInRange(Entity* ent, s32 arg2) {
|
||||
s32 sin, cos;
|
||||
s32 x, y;
|
||||
u32 i;
|
||||
@@ -157,48 +167,46 @@ bool32 sub_0801FE68(Entity* ent, s32 arg2) {
|
||||
|
||||
extern u32 sub_0800132C(Entity*, Entity*);
|
||||
|
||||
void sub_0801FED4(Entity* this) {
|
||||
s16 sVar2;
|
||||
|
||||
void Leever_Move(Entity* this) {
|
||||
if (sub_08049FDC(this, 1) == 0) {
|
||||
this->field_0x74.HWORD = 1;
|
||||
}
|
||||
sVar2 = (this->frames.all & 0xf) * 0x20;
|
||||
this->nonPlanarMovement = sVar2;
|
||||
if (this->entityType.form == 0) {
|
||||
|
||||
this->nonPlanarMovement = (this->frames.all & 0xf) * 0x20;
|
||||
if (this->entityType.form == LeeverForm_Red) {
|
||||
if ((this->field_0xf++ & 0xf) == 0) {
|
||||
sub_08004596(this, sub_0800132C(this, gUnk_020000B0));
|
||||
}
|
||||
} else {
|
||||
this->nonPlanarMovement = sVar2 + 0x40;
|
||||
this->nonPlanarMovement += 0x40;
|
||||
if ((this->field_0xf++ & 0x7) == 0) {
|
||||
sub_08004596(this, sub_0800132C(this, gUnk_020000B0));
|
||||
}
|
||||
}
|
||||
sub_080AEF88(this);
|
||||
|
||||
ProcessMovement(this);
|
||||
}
|
||||
|
||||
// clang-format off
|
||||
void (*const gUnk_080CA49C[])(Entity*) = {
|
||||
sub_0801FC28,
|
||||
void (*const gLeeverFunctions[])(Entity*) = {
|
||||
Leever_OnTick,
|
||||
sub_0801FC40,
|
||||
sub_08001324,
|
||||
sub_0801FC7C,
|
||||
sub_08001242,
|
||||
sub_0801FC28,
|
||||
Leever_OnTick,
|
||||
};
|
||||
|
||||
void (*const gUnk_080CA4B4[])(Entity*) = {
|
||||
sub_0801FC9C,
|
||||
sub_0801FCB0,
|
||||
sub_0801FD2C,
|
||||
sub_0801FD80,
|
||||
sub_0801FDB4,
|
||||
void (*const gLeeverActions[])(Entity*) = {
|
||||
Leever_Initialize,
|
||||
Leever_Idle,
|
||||
Leever_DigUp,
|
||||
Leever_Attack,
|
||||
Leever_DigDown,
|
||||
};
|
||||
|
||||
const u8 gUnk_080CA4C8[] = {
|
||||
0x06,
|
||||
0xFA,
|
||||
const s8 gLeeverDrift[] = {
|
||||
6, -6,
|
||||
};
|
||||
|
||||
const u16 gUnk_080CA4CA[] = {
|
||||
|
||||
@@ -87,7 +87,7 @@ void sub_080452FC(Entity *this) {
|
||||
}
|
||||
|
||||
void sub_08045374(Entity* this) {
|
||||
sub_080AEF88(this);
|
||||
ProcessMovement(this);
|
||||
GetNextFrame(this);
|
||||
if (--this->actionDelay == 0)
|
||||
this->action = 1;
|
||||
|
||||
+1
-1
@@ -96,7 +96,7 @@ void sub_08022D40(Entity* this) {
|
||||
}
|
||||
} else {
|
||||
sub_08022F14(this);
|
||||
sub_080AEF88(this);
|
||||
ProcessMovement(this);
|
||||
|
||||
if (this->collisions) {
|
||||
sub_0800417E(this, this->collisions);
|
||||
|
||||
+57
-71
@@ -6,24 +6,25 @@ extern void EnemyFunctionHandler();
|
||||
extern void SetChildOffset();
|
||||
extern void sub_0804AA30();
|
||||
extern void sub_0804A7D4();
|
||||
extern void sub_0801ECFC();
|
||||
extern u32 sub_0806F520();
|
||||
extern void sub_0806F4E8();
|
||||
extern void UpdateAnimationVariableFrames();
|
||||
extern void sub_0804A720();
|
||||
extern u32 Random();
|
||||
extern void sub_0801ED14();
|
||||
extern u32 sub_0801EDEC();
|
||||
extern Entity* sub_08049DF4(u32);
|
||||
|
||||
void Octorok_Pause();
|
||||
bool32 Octorok_FacesPlayer();
|
||||
void Octorok_Turn();
|
||||
|
||||
extern void (*const gOctorok[6])(Entity*);
|
||||
extern void (*const gOctorokIdle[4])(Entity*);
|
||||
extern void (*const gOctorokActions[4])(Entity*);
|
||||
extern void (*const gUnk_080CA158[6])(Entity*);
|
||||
|
||||
extern Entity* gUnk_020000B0;
|
||||
extern const u8 gUnk_080CA170[4];
|
||||
extern const u8 gUnk_080CA174[2];
|
||||
extern const u8 gUnk_080CA176[8];
|
||||
extern const u8 gOctorokWalkDuration[4];
|
||||
extern const u8 gOctorokSpitChanceModifier[2];
|
||||
extern const u8 gOctorokNutOffset[8];
|
||||
extern const s8 gUnk_080CA17E[2];
|
||||
|
||||
// Main
|
||||
@@ -33,8 +34,8 @@ void Octorok(Entity* this) {
|
||||
}
|
||||
|
||||
// Idle
|
||||
void sub_0801EAD0(Entity* this) {
|
||||
gOctorokIdle[this->action](this);
|
||||
void Octorok_OnTick(Entity* this) {
|
||||
gOctorokActions[this->action](this);
|
||||
}
|
||||
|
||||
// Touch player
|
||||
@@ -47,7 +48,7 @@ void sub_0801EAE8(Entity* this) {
|
||||
|
||||
// Death
|
||||
void sub_0801EB0C(Entity* this) {
|
||||
if ((this->entityType).form == 0) {
|
||||
if (this->entityType.form == 0) {
|
||||
sub_0804A7D4(this);
|
||||
} else {
|
||||
CreateDeathFx(this, 241, 0);
|
||||
@@ -55,10 +56,8 @@ void sub_0801EB0C(Entity* this) {
|
||||
}
|
||||
|
||||
void sub_0801EB2C(Entity* this) {
|
||||
s32 iVar1;
|
||||
|
||||
if ((this->previousActionFlag < 3) && (iVar1 = sub_0806F520(this), iVar1 == 0)) {
|
||||
sub_0801ECFC(this);
|
||||
if (this->previousActionFlag < 3 && !sub_0806F520(this)) {
|
||||
Octorok_Pause(this);
|
||||
InitializeAnimation(this, this->animationState);
|
||||
} else {
|
||||
gUnk_080CA158[this->previousActionFlag](this);
|
||||
@@ -84,6 +83,7 @@ void sub_0801EB84(Entity* this) {
|
||||
}
|
||||
|
||||
void nullsub_3(Entity* this) {
|
||||
/* ... */
|
||||
}
|
||||
|
||||
void sub_0801EB9C(Entity* this) {
|
||||
@@ -96,7 +96,7 @@ void sub_0801EB9C(Entity* this) {
|
||||
}
|
||||
|
||||
// Init
|
||||
void sub_0801EBC8(Entity* this) {
|
||||
void Octorok_Initialize(Entity* this) {
|
||||
sub_0804A720(this);
|
||||
if (this->entityType.form == 2) {
|
||||
this->animationState = this->entityType.form;
|
||||
@@ -104,105 +104,103 @@ void sub_0801EBC8(Entity* this) {
|
||||
this->animationState = Random() & 3;
|
||||
}
|
||||
this->field_0x1c = 18;
|
||||
sub_0801ECFC(this);
|
||||
Octorok_Pause(this);
|
||||
InitializeAnimation(this, this->animationState);
|
||||
}
|
||||
|
||||
void sub_0801EBF4(Entity* this) {
|
||||
u32 uVar2;
|
||||
|
||||
void Octorok_Idle(Entity* this) {
|
||||
if (--this->actionDelay == 0) {
|
||||
this->action = 2;
|
||||
uVar2 = Random();
|
||||
this->actionDelay = gUnk_080CA170[uVar2 & 3];
|
||||
sub_0801ED14(this);
|
||||
this->actionDelay = gOctorokWalkDuration[Random() & 3];
|
||||
Octorok_Turn(this);
|
||||
}
|
||||
GetNextFrame(this);
|
||||
}
|
||||
|
||||
void sub_0801EC2C(Entity* this) {
|
||||
sub_080AEF88(this);
|
||||
void Octorok_Move(Entity* this) {
|
||||
ProcessMovement(this);
|
||||
GetNextFrame(this);
|
||||
if (--this->actionDelay == 0) {
|
||||
if (sub_0801EDEC(this) && gUnk_080CA174[this->entityType.form] <= (Random() & 3)) {
|
||||
if (Octorok_FacesPlayer(this) && gOctorokSpitChanceModifier[this->entityType.form] <= (Random() & 3)) {
|
||||
this->action = 3;
|
||||
InitializeAnimation(this, this->animationState + 4);
|
||||
} else {
|
||||
sub_0801ECFC(this);
|
||||
Octorok_Pause(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0801EC80(Entity* this) {
|
||||
void Octorok_ShootNut(Entity* this) {
|
||||
GetNextFrame(this);
|
||||
if (this->frames.all & 1) {
|
||||
Entity* ent = sub_0804A98C(this, 1, 0);
|
||||
if (ent) {
|
||||
const s8* off;
|
||||
ent->direction = this->direction;
|
||||
off = &gUnk_080CA176[this->direction / 4];
|
||||
off = &gOctorokNutOffset[this->direction / 4];
|
||||
ent->x.HALF.HI += off[0];
|
||||
ent->y.HALF.HI += off[1];
|
||||
ent->height.HALF.HI = -3;
|
||||
this->frames.all &= 0xfe;
|
||||
sub_08004488(0x18d);
|
||||
EnqueSFX(0x18d);
|
||||
}
|
||||
}
|
||||
|
||||
if (this->frames.all & 0x80)
|
||||
sub_0801ECFC(this);
|
||||
Octorok_Pause(this);
|
||||
}
|
||||
|
||||
void sub_0801ECFC(Entity* this) {
|
||||
void Octorok_Pause(Entity* this) {
|
||||
this->action = 1;
|
||||
this->actionDelay = (Random() & 0x38) + 0x18;
|
||||
}
|
||||
|
||||
void sub_0801ED14(Entity* this) {
|
||||
void Octorok_Turn(Entity* this) {
|
||||
if (this->entityType.form != 2) {
|
||||
if (sub_08049FA0(this)) {
|
||||
if (this->entityType.form == 1 && (Random() & 3) == 0 && sub_08049FDC(this, 1)) {
|
||||
this->direction = (GetFacingDirection(this, gUnk_020000B0) + 4) & 0x18;
|
||||
this->direction = DirectionRoundUp(GetFacingDirection(this, gUnk_020000B0));
|
||||
} else {
|
||||
this->direction = Random() & 0x18;
|
||||
this->direction = DirectionRound(Random());
|
||||
}
|
||||
} else if ((Random() & 3)) {
|
||||
this->direction = (sub_08049EE4(this) + gUnk_080CA17E[Random() & 1]) & 0x18;
|
||||
} else if (Random() & 3) {
|
||||
this->direction = DirectionRound(sub_08049EE4(this) + gUnk_080CA17E[Random() & 1]);
|
||||
} else {
|
||||
this->direction = Random() & 0x18;
|
||||
this->direction = DirectionRound(Random());
|
||||
}
|
||||
} else {
|
||||
if (sub_08049FDC(this, 1) == 0) {
|
||||
if (sub_08049FA0(this)) {
|
||||
this->direction = Random() & 0x18;
|
||||
this->direction = DirectionRound(Random());
|
||||
} else if (Random() & 3) {
|
||||
this->direction = (sub_08049EE4(this) + gUnk_080CA17E[Random() & 1]) & 0x18;
|
||||
this->direction = DirectionRound(sub_08049EE4(this) + gUnk_080CA17E[Random() & 1]);
|
||||
} else {
|
||||
this->direction = (GetFacingDirection(this, gUnk_020000B0) + 4) & 0x18;
|
||||
this->direction = DirectionRoundUp(GetFacingDirection(this, gUnk_020000B0));
|
||||
}
|
||||
} else {
|
||||
this->direction = (GetFacingDirection(this, gUnk_020000B0) + 4) & 0x18;
|
||||
this->direction = DirectionRoundUp(GetFacingDirection(this, gUnk_020000B0));
|
||||
}
|
||||
}
|
||||
|
||||
this->animationState = this->direction >> 3;
|
||||
InitializeAnimation(this, this->animationState);
|
||||
}
|
||||
|
||||
u32 sub_0801EDEC(Entity* this) {
|
||||
bool32 Octorok_FacesPlayer(Entity* this) {
|
||||
Entity* ent = sub_08049DF4(1);
|
||||
|
||||
if (ent == NULL)
|
||||
return 0;
|
||||
return FALSE;
|
||||
|
||||
if (((GetFacingDirection(this, ent) + 4) & 0x18) != this->direction)
|
||||
return 0;
|
||||
if (DirectionRoundUp(GetFacingDirection(this, ent)) != this->direction)
|
||||
return FALSE;
|
||||
|
||||
return 1;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// clang-format off
|
||||
void (*const gOctorok[])(Entity*) = {
|
||||
sub_0801EAD0,
|
||||
Octorok_OnTick,
|
||||
sub_0801EAE8,
|
||||
sub_08001324,
|
||||
sub_0801EB0C,
|
||||
@@ -210,11 +208,11 @@ void (*const gOctorok[])(Entity*) = {
|
||||
sub_0801EB2C,
|
||||
};
|
||||
|
||||
void (*const gOctorokIdle[])(Entity*) = {
|
||||
sub_0801EBC8,
|
||||
sub_0801EBF4,
|
||||
sub_0801EC2C,
|
||||
sub_0801EC80,
|
||||
void (*const gOctorokActions[])(Entity*) = {
|
||||
Octorok_Initialize,
|
||||
Octorok_Idle,
|
||||
Octorok_Move,
|
||||
Octorok_ShootNut,
|
||||
};
|
||||
|
||||
void (*const gUnk_080CA158[])(Entity*) = {
|
||||
@@ -226,31 +224,19 @@ void (*const gUnk_080CA158[])(Entity*) = {
|
||||
sub_0801EB9C,
|
||||
};
|
||||
|
||||
const u8 gUnk_080CA170[] = {
|
||||
30,
|
||||
60,
|
||||
60,
|
||||
90,
|
||||
const u8 gOctorokWalkDuration[] = {
|
||||
30, 60, 60, 90,
|
||||
};
|
||||
|
||||
const u8 gUnk_080CA174[] = {
|
||||
1,
|
||||
0,
|
||||
const u8 gOctorokSpitChanceModifier[] = {
|
||||
1, 0,
|
||||
};
|
||||
|
||||
const u8 gUnk_080CA176[] = {
|
||||
0x00,
|
||||
0xFD,
|
||||
0x04,
|
||||
0x00,
|
||||
0x00,
|
||||
0x02,
|
||||
0xFC,
|
||||
0x00,
|
||||
const u8 gOctorokNutOffset[] = {
|
||||
0, -3, 4, 0, 0, 2, -4, 0,
|
||||
};
|
||||
|
||||
const s8 gUnk_080CA17E[] = {
|
||||
0x04,
|
||||
0xFC,
|
||||
4, -4,
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
+108
-90
@@ -1,12 +1,12 @@
|
||||
#include "entity.h"
|
||||
#include "functions.h"
|
||||
|
||||
extern void (*const gUnk_080CA570[])(Entity*);
|
||||
extern void (*const gUnk_080CA588[])(Entity*);
|
||||
extern void (*const gUnk_080CA590[])(Entity*);
|
||||
extern void (*const gPeahatFunctions[])(Entity*);
|
||||
extern void (*const gPeahatPropellerFunctions[])(Entity*);
|
||||
extern void (*const gPeahatActions[])(Entity*);
|
||||
extern void (*const gUnk_080CA5BC[])(Entity*);
|
||||
|
||||
extern const s8 gUnk_080CA5B8[];
|
||||
extern const s8 gPeahatFlightHeights[];
|
||||
extern const s8 gUnk_080CA5D4[];
|
||||
|
||||
void sub_080205F8(Entity*);
|
||||
@@ -18,45 +18,59 @@ extern void sub_0804AA1C(Entity*);
|
||||
|
||||
extern Entity* gUnk_020000B0;
|
||||
|
||||
enum {
|
||||
PeahatForm_Torso,
|
||||
PeahatForm_Propeller,
|
||||
};
|
||||
|
||||
enum {
|
||||
PeahatAnimation_Flying,
|
||||
PeahatAnimation_BrokenPropeller,
|
||||
PeahatAnimation_SlicedPropeller,
|
||||
PeahatAnimation_Propeller,
|
||||
PeahatAnimation_NewPropeller,
|
||||
PeahatAnimation_RepairPropeller,
|
||||
};
|
||||
|
||||
void Peahat(Entity* this) {
|
||||
if (this->entityType.form == 0) {
|
||||
EnemyFunctionHandler(this, gUnk_080CA570);
|
||||
if (this->entityType.form == PeahatForm_Torso) {
|
||||
EnemyFunctionHandler(this, gPeahatFunctions);
|
||||
SetChildOffset(this, 0, 1, -0x10);
|
||||
} else {
|
||||
gUnk_080CA588[this->action](this);
|
||||
gPeahatPropellerFunctions[this->action](this);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0801FF9C(Entity* this) {
|
||||
gUnk_080CA590[this->action](this);
|
||||
void Peahat_OnTick(Entity* this) {
|
||||
gPeahatActions[this->action](this);
|
||||
if (this->field_0x80.HALF.HI)
|
||||
this->height.HALF.HI = gUnk_080CA5B8[(this->field_0xf++ & 0x30) >> 4];
|
||||
this->height.HALF.HI = gPeahatFlightHeights[(this->field_0xf++ & 0x30) >> 4];
|
||||
}
|
||||
|
||||
void sub_0801FFDC(Entity* this) {
|
||||
if (this->field_0x82.HALF.LO) {
|
||||
if (this->bitfield == 0x94) {
|
||||
Entity* ent = CreateEnemy(3, 1);
|
||||
Entity* ent = CreateEnemy(3, PeahatForm_Propeller);
|
||||
if (ent) {
|
||||
CopyPosition(this, ent);
|
||||
ent->height.HALF.HI -= 8;
|
||||
}
|
||||
this->field_0x82.HALF.LO = 0;
|
||||
this->animationState = 2;
|
||||
this->animationState = PeahatAnimation_SlicedPropeller;
|
||||
this->action = 5;
|
||||
this->nonPlanarMovement = 0x80;
|
||||
this->hurtBlinkTime = -30;
|
||||
this->field_0x80.HALF.HI = 0;
|
||||
InitializeAnimation(this, this->animationState);
|
||||
} else if (this->bitfield == 0x9b) {
|
||||
this->animationState = 1;
|
||||
this->animationState = PeahatAnimation_BrokenPropeller;
|
||||
this->action = 5;
|
||||
this->nonPlanarMovement = 0x80;
|
||||
this->hurtBlinkTime = -30;
|
||||
this->field_0x80.HALF.HI = 0;
|
||||
InitializeAnimation(this, this->animationState);
|
||||
} else if (this->bitfield == 0x80) {
|
||||
if (this->animationState == 0) {
|
||||
if (this->animationState == PeahatAnimation_Flying) {
|
||||
this->action = 1;
|
||||
this->actionDelay = 30;
|
||||
this->nonPlanarMovement = 0x80;
|
||||
@@ -70,7 +84,7 @@ void sub_0801FFDC(Entity* this) {
|
||||
if (this->field_0x43)
|
||||
sub_0804A9FC(this, 0x1c);
|
||||
|
||||
sub_0804AA30(this, gUnk_080CA570);
|
||||
sub_0804AA30(this, gPeahatFunctions);
|
||||
}
|
||||
|
||||
void sub_08020088(Entity* this) {
|
||||
@@ -83,8 +97,8 @@ void sub_08020088(Entity* this) {
|
||||
void sub_080200B4(Entity* this) {
|
||||
this->previousActionFlag = 1;
|
||||
this->field_0x1d = 60;
|
||||
if (this->animationState == 0) {
|
||||
this->animationState = 1;
|
||||
if (this->animationState == PeahatAnimation_Flying) {
|
||||
this->animationState = PeahatAnimation_BrokenPropeller;
|
||||
this->action = 5;
|
||||
this->damageType = 0x71;
|
||||
this->field_0x80.HALF.HI = 0;
|
||||
@@ -116,7 +130,7 @@ void sub_08020104(Entity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08020130(Entity* this) {
|
||||
void Peahat_Initialize(Entity* this) {
|
||||
sub_0804A720(this);
|
||||
this->action = 1;
|
||||
this->actionDelay = 16;
|
||||
@@ -126,11 +140,11 @@ void sub_08020130(Entity* this) {
|
||||
this->field_0x80.HALF.LO = (Random() & 1) ? 2 : -2;
|
||||
this->field_0x80.HALF.HI = 1;
|
||||
this->field_0x82.HALF.LO = 1;
|
||||
this->animationState = 0;
|
||||
InitializeAnimation(this, 0);
|
||||
this->animationState = PeahatAnimation_Flying;
|
||||
InitializeAnimation(this, this->animationState);
|
||||
}
|
||||
|
||||
void sub_08020180(Entity* this) {
|
||||
void Peahat_Fly(Entity* this) {
|
||||
if (this->field_0x82.HALF.HI)
|
||||
this->field_0x82.HALF.HI--;
|
||||
|
||||
@@ -155,7 +169,7 @@ void sub_08020180(Entity* this) {
|
||||
GetNextFrame(this);
|
||||
}
|
||||
|
||||
void sub_08020220(Entity* this) {
|
||||
void Peahat_ChargeStart(Entity* this) {
|
||||
if (sub_08049FDC(this, 1)) {
|
||||
if (--this->actionDelay) {
|
||||
UpdateAnimationVariableFrames(this, 4 - ((this->actionDelay >> 4) & 0x3));
|
||||
@@ -173,7 +187,7 @@ void sub_08020220(Entity* this) {
|
||||
UpdateAnimationVariableFrames(this, 4);
|
||||
}
|
||||
|
||||
void sub_08020294(Entity* this) {
|
||||
void Peahat_ChargeTarget(Entity* this) {
|
||||
if (sub_08049FDC(this, 1)) {
|
||||
if (--this->actionDelay == 0) {
|
||||
sub_080205F8(this);
|
||||
@@ -192,7 +206,7 @@ void sub_08020294(Entity* this) {
|
||||
UpdateAnimationVariableFrames(this, 4);
|
||||
}
|
||||
|
||||
void sub_08020308(Entity* this) {
|
||||
void Peahat_ChargeEnd(Entity* this) {
|
||||
if (--this->actionDelay == 0) {
|
||||
this->action = 1;
|
||||
this->actionDelay = 1;
|
||||
@@ -208,32 +222,35 @@ void sub_08020308(Entity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08020350(Entity* this) {
|
||||
if (this->animationState != 2) {
|
||||
if (sub_080044EC(this, 0x1800) == 0) {
|
||||
this->action = 6;
|
||||
this->actionDelay = -0x10;
|
||||
this->field_0xf = 10;
|
||||
this->damageType = 113;
|
||||
}
|
||||
void Peahat_Stunned(Entity* this) {
|
||||
switch (this->animationState) {
|
||||
default:
|
||||
if (sub_080044EC(this, 0x1800) == 0) {
|
||||
this->action = 6;
|
||||
this->actionDelay = 240;
|
||||
this->field_0xf = 10;
|
||||
this->damageType = 0x71;
|
||||
}
|
||||
|
||||
if (this->direction == 0xff)
|
||||
this->direction = this->field_0x3e;
|
||||
if (this->direction == 0xff)
|
||||
this->direction = this->field_0x3e;
|
||||
|
||||
sub_080AEF88(this);
|
||||
GetNextFrame(this);
|
||||
} else {
|
||||
sub_08003FC4(this, 0x1c00);
|
||||
if (this->height.HALF.HI == 0) {
|
||||
this->action = 7;
|
||||
this->actionDelay = -106;
|
||||
this->field_0xf = 10;
|
||||
this->damageType = 113;
|
||||
}
|
||||
}
|
||||
ProcessMovement(this);
|
||||
GetNextFrame(this);
|
||||
break;
|
||||
case PeahatAnimation_SlicedPropeller:
|
||||
sub_08003FC4(this, 0x1c00);
|
||||
if (this->height.HALF.HI == 0) {
|
||||
this->action = 7;
|
||||
this->actionDelay = 150;
|
||||
this->field_0xf = 10;
|
||||
this->damageType = 0x71;
|
||||
}
|
||||
break;
|
||||
};
|
||||
}
|
||||
|
||||
void sub_080203C0(Entity* this) {
|
||||
void Peahat_RepairPropeller(Entity* this) {
|
||||
if (this->field_0xf)
|
||||
if (--this->field_0xf == 0)
|
||||
sub_0804A9FC(this, 0x1c);
|
||||
@@ -245,11 +262,11 @@ void sub_080203C0(Entity* this) {
|
||||
this->field_0x20 = 0x18000;
|
||||
this->direction = Random() & 0x1f;
|
||||
sub_0804AA1C(this);
|
||||
this->animationState = 5;
|
||||
InitializeAnimation(this, 5);
|
||||
this->animationState = PeahatAnimation_RepairPropeller;
|
||||
InitializeAnimation(this, this->animationState);
|
||||
}
|
||||
|
||||
void sub_0802041C(Entity* this) {
|
||||
void Peahat_Recover(Entity* this) {
|
||||
if (this->field_0xf)
|
||||
if (--this->field_0xf == 0)
|
||||
sub_0804A9FC(this, 0x1c);
|
||||
@@ -258,58 +275,56 @@ void sub_0802041C(Entity* this) {
|
||||
return;
|
||||
|
||||
this->action = 8;
|
||||
this->actionDelay = -16;
|
||||
this->actionDelay = 240;
|
||||
this->direction = Random() & 0x1f;
|
||||
sub_0804AA1C(this);
|
||||
}
|
||||
|
||||
void sub_08020468(Entity* this) {
|
||||
void Peahat_Hop(Entity* this) {
|
||||
GetNextFrame(this);
|
||||
if (--this->actionDelay == 0) {
|
||||
if (this->frames.all & 0x80) {
|
||||
this->action = 9;
|
||||
this->field_0x20 = 0x18000;
|
||||
this->animationState = 4;
|
||||
InitializeAnimation(this, 4);
|
||||
this->animationState = PeahatAnimation_NewPropeller;
|
||||
InitializeAnimation(this, this->animationState);
|
||||
} else {
|
||||
this->actionDelay = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (this->frames.all & 2) {
|
||||
this->frames.all &= 0xfd;
|
||||
this->frames.all &= ~2;
|
||||
this->direction = Random() & 0x1f;
|
||||
}
|
||||
|
||||
if (this->frames.all & 1) {
|
||||
sub_0800442E(this);
|
||||
} else {
|
||||
sub_080AEF88(this);
|
||||
ProcessMovement(this);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080204E0(Entity* this) {
|
||||
void Peahat_Takeoff(Entity* this) {
|
||||
GetNextFrame(this);
|
||||
if (this->frames.all & 0x80) {
|
||||
this->action = 1;
|
||||
this->damageType = 0x70;
|
||||
this->field_0x82.HALF.LO = 1;
|
||||
this->field_0x80.HALF.HI = 1;
|
||||
this->animationState = 0;
|
||||
InitializeAnimation(this, 0);
|
||||
this->animationState = PeahatAnimation_Flying;
|
||||
InitializeAnimation(this, this->animationState);
|
||||
} else if (this->frames.all & 1) {
|
||||
sub_0800442E(this);
|
||||
} else {
|
||||
if (this->frames.all & 1) {
|
||||
sub_0800442E(this);
|
||||
} else {
|
||||
sub_08003FC4(this, 0x1c00);
|
||||
sub_080AEF88(this);
|
||||
}
|
||||
sub_08003FC4(this, 0x1c00);
|
||||
ProcessMovement(this);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0802053C(Entity* this) {
|
||||
void PeahatPropeller_Initialize(Entity* this) {
|
||||
this->action = 1;
|
||||
this->actionDelay = -16;
|
||||
this->actionDelay = 240;
|
||||
this->field_0xf = 40;
|
||||
this->spriteSettings.b.draw = 1;
|
||||
this->spriteRendering.b3 = 1;
|
||||
@@ -317,12 +332,12 @@ void sub_0802053C(Entity* this) {
|
||||
this->spriteSettings.b.shadow = 0;
|
||||
this->nonPlanarMovement = 0x20;
|
||||
this->direction = (Random() & 0x10) + 8;
|
||||
InitializeAnimation(this, 3);
|
||||
InitializeAnimation(this, PeahatAnimation_Propeller);
|
||||
}
|
||||
|
||||
void sub_08020590(Entity* this) {
|
||||
void PeahatPropeller_Fly(Entity* this) {
|
||||
GetNextFrame(this);
|
||||
if (--this->actionDelay == '\0') {
|
||||
if (--this->actionDelay == 0) {
|
||||
DeleteEntity(this);
|
||||
} else {
|
||||
if (this->actionDelay < 60)
|
||||
@@ -354,8 +369,8 @@ void sub_08020604(Entity *this){
|
||||
|
||||
|
||||
// clang-format off
|
||||
void (*const gUnk_080CA570[])(Entity*) = {
|
||||
sub_0801FF9C,
|
||||
void (*const gPeahatFunctions[])(Entity*) = {
|
||||
Peahat_OnTick,
|
||||
sub_0801FFDC,
|
||||
sub_08001324,
|
||||
sub_0804A7D4,
|
||||
@@ -363,29 +378,26 @@ void (*const gUnk_080CA570[])(Entity*) = {
|
||||
sub_08020088,
|
||||
};
|
||||
|
||||
void (*const gUnk_080CA588[])(Entity*) = {
|
||||
sub_0802053C,
|
||||
sub_08020590,
|
||||
void (*const gPeahatPropellerFunctions[])(Entity*) = {
|
||||
PeahatPropeller_Initialize,
|
||||
PeahatPropeller_Fly,
|
||||
};
|
||||
|
||||
void (*const gUnk_080CA590[])(Entity*) = {
|
||||
sub_08020130,
|
||||
sub_08020180,
|
||||
sub_08020220,
|
||||
sub_08020294,
|
||||
sub_08020308,
|
||||
sub_08020350,
|
||||
sub_080203C0,
|
||||
sub_0802041C,
|
||||
sub_08020468,
|
||||
sub_080204E0,
|
||||
void (*const gPeahatActions[])(Entity*) = {
|
||||
Peahat_Initialize,
|
||||
Peahat_Fly,
|
||||
Peahat_ChargeStart,
|
||||
Peahat_ChargeTarget,
|
||||
Peahat_ChargeEnd,
|
||||
Peahat_Stunned,
|
||||
Peahat_RepairPropeller,
|
||||
Peahat_Recover,
|
||||
Peahat_Hop,
|
||||
Peahat_Takeoff,
|
||||
};
|
||||
|
||||
const s8 gUnk_080CA5B8[] = {
|
||||
-5,
|
||||
-6,
|
||||
-7,
|
||||
-6,
|
||||
const s8 gPeahatFlightHeights[] = {
|
||||
-5, -6, -7, -6,
|
||||
};
|
||||
|
||||
void (*const gUnk_080CA5BC[])(Entity*) = {
|
||||
@@ -396,5 +408,11 @@ void (*const gUnk_080CA5BC[])(Entity*) = {
|
||||
nullsub_5,
|
||||
sub_08020104,
|
||||
};
|
||||
|
||||
/* Alignment issue
|
||||
const s8 gUnk_080CA5D4[] = {
|
||||
4, -4,
|
||||
};
|
||||
*/
|
||||
// clang-format on
|
||||
|
||||
|
||||
@@ -79,7 +79,7 @@ void sub_08022390(Entity* this) {
|
||||
}
|
||||
|
||||
if (this->field_0xf == 0) {
|
||||
sub_080AEF88(this);
|
||||
ProcessMovement(this);
|
||||
} else {
|
||||
this->field_0xf = this->field_0xf - 1;
|
||||
}
|
||||
|
||||
+51
-54
@@ -1,8 +1,8 @@
|
||||
#include "entity.h"
|
||||
#include "functions.h"
|
||||
|
||||
extern void (*const gUnk_080CA66C[])(Entity*);
|
||||
extern void (*const gUnk_080CA684[])(Entity*);
|
||||
extern void (*const gRollobiteFunctions[])(Entity*);
|
||||
extern void (*const gRollobiteActions[])(Entity*);
|
||||
extern void (*const gUnk_080CA6A4[])(Entity*);
|
||||
extern void (*const gUnk_080CA6BC[])(Entity*);
|
||||
|
||||
@@ -11,57 +11,54 @@ extern const s8 gUnk_080CA6D4[];
|
||||
|
||||
void sub_08020A30(Entity*);
|
||||
void sub_08020A7C(Entity*);
|
||||
u32 sub_08020AD0(Entity*);
|
||||
u32 sub_08020B6C(Entity*);
|
||||
bool32 Rollobite_TryToHoleUp(Entity*);
|
||||
bool32 Rollobite_IsRolledUp(Entity*);
|
||||
|
||||
extern void sub_080AE58C();
|
||||
extern void sub_080AE7E8();
|
||||
extern void sub_08078930();
|
||||
|
||||
void Rollobite(Entity* this) {
|
||||
EnemyFunctionHandler(this, gUnk_080CA66C);
|
||||
EnemyFunctionHandler(this, gRollobiteFunctions);
|
||||
}
|
||||
|
||||
void sub_08020648(Entity* this) {
|
||||
sub_08020AD0(this);
|
||||
gUnk_080CA684[this->action](this);
|
||||
void Rollobite_OnTick(Entity* this) {
|
||||
Rollobite_TryToHoleUp(this);
|
||||
gRollobiteActions[this->action](this);
|
||||
}
|
||||
|
||||
void sub_08020668(Entity* this) {
|
||||
if (this->damageType == 34 && this->currentHealth != 0xff) {
|
||||
this->action = 4;
|
||||
this->field_0x20 = 0x20000;
|
||||
this->direction = -1;
|
||||
this->currentHealth = -1;
|
||||
this->direction = 0xff;
|
||||
this->currentHealth = 0xff;
|
||||
this->damageType = 35;
|
||||
InitializeAnimation(this, this->animationState + 8);
|
||||
}
|
||||
|
||||
if (this->bitfield != 0x80) {
|
||||
u8 tmp = this->action - 4;
|
||||
if (tmp < 2) {
|
||||
if (this->action == 4 || this->action == 5) {
|
||||
this->action = 4;
|
||||
this->actionDelay = -76;
|
||||
this->direction = -1;
|
||||
this->actionDelay = 180;
|
||||
this->direction = 0xff;
|
||||
InitializeAnimation(this, this->animationState + 0x10);
|
||||
}
|
||||
}
|
||||
|
||||
if (this->bitfield == 0x93)
|
||||
sub_08020648(this);
|
||||
Rollobite_OnTick(this);
|
||||
}
|
||||
|
||||
void sub_080206E0(Entity* this) {
|
||||
if (sub_08020AD0(this)) {
|
||||
if (Rollobite_TryToHoleUp(this)) {
|
||||
this->field_0x42 = 0;
|
||||
} else if (Rollobite_IsRolledUp(this)) {
|
||||
this->field_0x42--;
|
||||
sub_080AE58C(this, this->field_0x3e, 10);
|
||||
sub_080AE7E8(this, this->field_0x46, this->field_0x3e, 10);
|
||||
} else {
|
||||
if (sub_08020B6C(this)) {
|
||||
this->field_0x42--;
|
||||
sub_080AE58C(this, this->field_0x3e, 10);
|
||||
sub_080AE7E8(this, this->field_0x46, this->field_0x3e, 10);
|
||||
} else {
|
||||
sub_08001324(this);
|
||||
}
|
||||
sub_08001324(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -69,7 +66,7 @@ void sub_08020734(Entity* this) {
|
||||
if (this->previousActionFlag < 3 && !sub_0806F520(this)) {
|
||||
this->action = 4;
|
||||
this->flags |= 0x80;
|
||||
this->direction = -1;
|
||||
this->direction = 0xff;
|
||||
InitializeAnimation(this, this->animationState + 0x10);
|
||||
} else {
|
||||
gUnk_080CA6A4[this->previousActionFlag](this);
|
||||
@@ -94,6 +91,7 @@ void sub_08020798(Entity* this) {
|
||||
}
|
||||
|
||||
void nullsub_6(Entity* this) {
|
||||
/* ... */
|
||||
}
|
||||
|
||||
void sub_080207A8(Entity* this) {
|
||||
@@ -107,7 +105,7 @@ void sub_080207A8(Entity* this) {
|
||||
InitializeAnimation(this, this->animationState + 0x10);
|
||||
}
|
||||
|
||||
void sub_080207F4(Entity* this) {
|
||||
void Rollobite_Initialize(Entity* this) {
|
||||
sub_0804A720(this);
|
||||
this->field_0x16 = 0x30;
|
||||
this->field_0x1c = 18;
|
||||
@@ -116,11 +114,11 @@ void sub_080207F4(Entity* this) {
|
||||
sub_08020A30(this);
|
||||
}
|
||||
|
||||
void sub_08020820(Entity* this) {
|
||||
void Rollobite_Walk(Entity* this) {
|
||||
GetNextFrame(this);
|
||||
if (this->frames.all & 0x1) {
|
||||
this->frames.all &= ~0x1;
|
||||
if (!sub_080AEF88(this))
|
||||
if (!ProcessMovement(this))
|
||||
this->actionDelay = 1;
|
||||
}
|
||||
|
||||
@@ -164,12 +162,12 @@ void sub_08020904(Entity* this) {
|
||||
InitializeAnimation(this, this->animationState + 0x10);
|
||||
}
|
||||
|
||||
void sub_08020920(Entity* this) {
|
||||
void Rollobite_Turn(Entity* this) {
|
||||
if (--this->actionDelay == 0)
|
||||
sub_08020A30(this);
|
||||
}
|
||||
|
||||
void sub_08020938(Entity* this) {
|
||||
void Rollobite_RolledUp(Entity* this) {
|
||||
u32 unk;
|
||||
|
||||
if ((this->frames.all & 0x80) == 0)
|
||||
@@ -185,14 +183,14 @@ void sub_08020938(Entity* this) {
|
||||
sub_08078930(this);
|
||||
} else {
|
||||
if (unk == 1)
|
||||
sub_08004488(260);
|
||||
EnqueSFX(260);
|
||||
|
||||
if ((this->direction & 0x80) == 0)
|
||||
sub_080AEFE0(this);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080209A0(Entity* this) {
|
||||
void Rollobite_Unroll(Entity* this) {
|
||||
GetNextFrame(this);
|
||||
if (this->frames.all & 0x80) {
|
||||
this->flags |= 0x80;
|
||||
@@ -207,7 +205,7 @@ void sub_080209A0(Entity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080209F4(Entity* this) {
|
||||
void Rollobite_LinedUp(Entity* this) {
|
||||
if (sub_08003FC4(this, 0x1c00) == 0) {
|
||||
this->action = 7;
|
||||
this->spritePriority.b0 = 7;
|
||||
@@ -217,7 +215,7 @@ void sub_080209F4(Entity* this) {
|
||||
GetNextFrame(this);
|
||||
}
|
||||
|
||||
void sub_08020A28(Entity* this) {
|
||||
void Rollobite_Holed(Entity* this) {
|
||||
GetNextFrame(this);
|
||||
}
|
||||
|
||||
@@ -251,8 +249,8 @@ void sub_08020A7C(Entity* this) {
|
||||
InitializeAnimation(this, this->animationState);
|
||||
}
|
||||
|
||||
u32 sub_08020AD0(Entity* this) {
|
||||
if (sub_08020B6C(this) && this->height.HALF.HI == 0) {
|
||||
bool32 Rollobite_TryToHoleUp(Entity* this) {
|
||||
if (Rollobite_IsRolledUp(this) && this->height.HALF.HI == 0) {
|
||||
int tile = COORD_TO_TILE(this);
|
||||
int iVar1 = GetTileType(tile, this->collisionLayer);
|
||||
if ((iVar1 * 0x10000 - 0x710000U) >> 0x10 < 2) {
|
||||
@@ -265,24 +263,24 @@ u32 sub_08020AD0(Entity* this) {
|
||||
this->field_0x20 = 0x20000;
|
||||
InitializeAnimation(this, this->animationState + 0x14);
|
||||
SetTile(0x4034, tile, this->collisionLayer);
|
||||
return 1;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
u32 sub_08020B6C(Entity* this) {
|
||||
u32 tmp = this->animIndex - 0x10;
|
||||
if (tmp < 4) {
|
||||
return 1;
|
||||
bool32 Rollobite_IsRolledUp(Entity* this) {
|
||||
u32 tmp = this->animIndex;
|
||||
if (16 <= tmp && tmp <= 19) {
|
||||
return TRUE;
|
||||
} else {
|
||||
return 0;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
// clang-format off
|
||||
void (*const gUnk_080CA66C[])(Entity*) = {
|
||||
sub_08020648,
|
||||
void (*const gRollobiteFunctions[])(Entity*) = {
|
||||
Rollobite_OnTick,
|
||||
sub_08020668,
|
||||
sub_080206E0,
|
||||
sub_0804A7D4,
|
||||
@@ -290,15 +288,15 @@ void (*const gUnk_080CA66C[])(Entity*) = {
|
||||
sub_08020734,
|
||||
};
|
||||
|
||||
void (*const gUnk_080CA684[])(Entity*) = {
|
||||
sub_080207F4,
|
||||
sub_08020820,
|
||||
void (*const gRollobiteActions[])(Entity*) = {
|
||||
Rollobite_Initialize,
|
||||
Rollobite_Walk,
|
||||
sub_08020874,
|
||||
sub_08020920,
|
||||
sub_08020938,
|
||||
sub_080209A0,
|
||||
sub_080209F4,
|
||||
sub_08020A28,
|
||||
Rollobite_Turn,
|
||||
Rollobite_RolledUp,
|
||||
Rollobite_Unroll,
|
||||
Rollobite_LinedUp,
|
||||
Rollobite_Holed,
|
||||
};
|
||||
|
||||
void (*const gUnk_080CA6A4[])(Entity*) = {
|
||||
@@ -318,7 +316,6 @@ void (*const gUnk_080CA6BC[])(Entity*) = {
|
||||
};
|
||||
|
||||
const u8 gUnk_080CA6CC[] = {
|
||||
0,6,9,0,6,6,0,7
|
||||
0, 6, 9, 0, 6, 6, 0, 7,
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@ void sub_08029318(Entity* this) {
|
||||
this->field_0x82.HALF.HI = 0x41;
|
||||
this->flags2 &= 0xfc;
|
||||
this->field_0x80.HALF.LO = gPlayerEntity.spritePriority.b1;
|
||||
sub_08004488(0x104);
|
||||
EnqueSFX(0x104);
|
||||
} else {
|
||||
if (this->field_0x43 != 0) {
|
||||
sub_0804A9FC(this, 0x1c);
|
||||
@@ -136,7 +136,7 @@ void sub_080294D4(Entity* this) {
|
||||
sub_08004596(this, GetFacingDirection(this, &gPlayerEntity));
|
||||
sub_0802969C(this);
|
||||
}
|
||||
sub_080AEF88(this);
|
||||
ProcessMovement(this);
|
||||
sub_080296C8(this);
|
||||
} else {
|
||||
this->action = 6;
|
||||
|
||||
+1
-1
@@ -87,7 +87,7 @@ void sub_08045018(Entity* this) {
|
||||
}
|
||||
|
||||
void sub_08045088(Entity* this) {
|
||||
sub_080AEF88(this);
|
||||
ProcessMovement(this);
|
||||
GetNextFrame(this);
|
||||
if (--this->actionDelay == 0) {
|
||||
this->action = 1;
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
#include "functions.h"
|
||||
|
||||
extern void sub_08001318(Entity*);
|
||||
extern u32 sub_08049F64(Entity*, u32, u32);
|
||||
extern u32 PlayerInRange(Entity*, u32, u32);
|
||||
extern void sub_0804A4E4(Entity*, Entity*);
|
||||
extern void sub_0804AA1C(Entity*);
|
||||
|
||||
@@ -69,7 +69,7 @@ void sub_0802244C(Entity* this) {
|
||||
if (this->action == 3) {
|
||||
this->action = 4;
|
||||
InitializeAnimation(this, 3);
|
||||
sub_08004488(0x194);
|
||||
EnqueSFX(0x194);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -132,7 +132,7 @@ void sub_08022654(Entity* this) {
|
||||
this->previousActionFlag = 2;
|
||||
this->spriteSettings.b.draw = 1;
|
||||
InitializeAnimation(this, 5);
|
||||
sub_08004488(0x7d);
|
||||
EnqueSFX(0x7d);
|
||||
UpdateSpriteForCollisionLayer(this);
|
||||
/* fallthrough */
|
||||
case 2:
|
||||
@@ -169,7 +169,7 @@ void sub_080226EC(Entity* this) {
|
||||
this->direction = sub_08049F84(this, 1);
|
||||
}
|
||||
|
||||
sub_080AEF88(this);
|
||||
ProcessMovement(this);
|
||||
}
|
||||
|
||||
GetNextFrame(this);
|
||||
@@ -180,7 +180,7 @@ void sub_08022780(Entity* this) {
|
||||
if (this->frames.all & 0x80) {
|
||||
this->action = 4;
|
||||
InitializeAnimation(this, 3);
|
||||
sub_08004488(0x194);
|
||||
EnqueSFX(0x194);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -223,7 +223,7 @@ void sub_08022854(Entity* this) {
|
||||
this->action = 7;
|
||||
this->damageType = 0x5c;
|
||||
InitializeAnimation(this, 5);
|
||||
sub_08004488(0x7d);
|
||||
EnqueSFX(0x7d);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -240,7 +240,7 @@ void sub_0802289C(Entity* this) {
|
||||
|
||||
u32 sub_080228CC(Entity* this) {
|
||||
if (this->field_0xf == 0) {
|
||||
if (sub_08049F64(this, 1, 0x28))
|
||||
if (PlayerInRange(this, 1, 0x28))
|
||||
return 1;
|
||||
} else {
|
||||
this->field_0xf--;
|
||||
@@ -250,7 +250,7 @@ u32 sub_080228CC(Entity* this) {
|
||||
|
||||
u32 sub_080228F0(Entity* this) {
|
||||
if (this->field_0x80.HALF.HI == 0) {
|
||||
if (sub_08049F64(this, 1, 0x40))
|
||||
if (PlayerInRange(this, 1, 0x40))
|
||||
return 1;
|
||||
} else {
|
||||
this->field_0x80.HALF.HI--;
|
||||
|
||||
+1
-1
@@ -113,7 +113,7 @@ void sub_0802F300(Entity* this) {
|
||||
u32 rand;
|
||||
|
||||
GetNextFrame(this);
|
||||
sub_080AEF88(this);
|
||||
ProcessMovement(this);
|
||||
temp = this->height.HALF.HI;
|
||||
rand = Random() & 0xf;
|
||||
|
||||
|
||||
@@ -100,7 +100,7 @@ void sub_08038048(Entity* this) {
|
||||
u32 rand;
|
||||
|
||||
UpdateAnimationVariableFrames(this, 2);
|
||||
sub_080AEF88(this);
|
||||
ProcessMovement(this);
|
||||
temp = this->height.HALF.HI;
|
||||
rand = Random() & 0xf;
|
||||
|
||||
|
||||
+1
-1
@@ -98,7 +98,7 @@ void sub_080336A8(Entity* this) {
|
||||
} else if (this->collisions != 0) {
|
||||
sub_0800417E(this, this->collisions);
|
||||
}
|
||||
sub_080AEF88(this);
|
||||
ProcessMovement(this);
|
||||
GetNextFrame(this);
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -10,7 +10,7 @@
|
||||
|
||||
extern void sub_0807DD50(Entity *);
|
||||
extern void sub_0807DD94(Entity *,u32);
|
||||
extern void sub_08004488(u32);
|
||||
extern void EnqueSFX(u32);
|
||||
extern void sub_08080964(u32,u32);
|
||||
|
||||
|
||||
@@ -25,11 +25,11 @@ void Carlov(Entity *this)
|
||||
}
|
||||
if ((this->frames.all & 0x10) != 0) {
|
||||
this->frames.all = this->frames.all & 0xef;
|
||||
sub_08004488(0x104);
|
||||
EnqueSFX(0x104);
|
||||
sub_08080964(0x10,0);
|
||||
}
|
||||
if ((this->frames.all & 0x20) != 0) {
|
||||
this->frames.all = this->frames.all & 0xdf;
|
||||
sub_08004488(0x7c);
|
||||
EnqueSFX(0x7c);
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -94,7 +94,7 @@ void sub_08069068(Entity* ent) {
|
||||
InitAnimationForceUpdate(ent, ent->animationState + 4);
|
||||
}
|
||||
|
||||
sub_080AEF88(ent);
|
||||
ProcessMovement(ent);
|
||||
UpdateAnimationSingleFrame(ent);
|
||||
|
||||
{
|
||||
|
||||
+2
-2
@@ -12,7 +12,7 @@ extern void sub_0806F118(Entity*);
|
||||
extern void sub_0807DDAC(Entity*, u32);
|
||||
extern void sub_0807DDE4(Entity*);
|
||||
extern u32 sub_080040A8(Entity*);
|
||||
extern void sub_08004488(u32);
|
||||
extern void EnqueSFX(u32);
|
||||
extern u32 sub_0801E99C(Entity*);
|
||||
extern void sub_08078784(Entity*, u32);
|
||||
extern void sub_0807000C(Entity*);
|
||||
@@ -99,7 +99,7 @@ void sub_08068780(Entity* this) {
|
||||
if (sub_080040A8(this) == 0) {
|
||||
PlaySFX(gUnk_0811153E[(s32)Random() % 3]);
|
||||
} else {
|
||||
sub_08004488(gUnk_08111538[(s32)Random() % 3]);
|
||||
EnqueSFX(gUnk_08111538[(s32)Random() % 3]);
|
||||
}
|
||||
ent = CreateFx(this, 0x3d, 0x20);
|
||||
if (ent != NULL) {
|
||||
|
||||
+2
-2
@@ -27,7 +27,7 @@ extern u32 GetFacingDirection(Entity*, Entity*);
|
||||
extern void sub_080606D8(Entity*);
|
||||
extern void sub_0807DD94(Entity*, u32);
|
||||
extern void sub_080788E0(Entity*);
|
||||
extern void sub_08004488(u32);
|
||||
extern void EnqueSFX(u32);
|
||||
extern void sub_080606C0(Entity*);
|
||||
extern void sub_0800451C(Entity*);
|
||||
extern void sub_08078784(Entity*, u32);
|
||||
@@ -178,7 +178,7 @@ void sub_08060528(Entity *this)
|
||||
this->field_0x20 = 0x20000;
|
||||
this->field_0x6c.HALF.HI = 1;
|
||||
sub_080788E0(this);
|
||||
sub_08004488(0x7c);
|
||||
EnqueSFX(0x7c);
|
||||
}
|
||||
else {
|
||||
this->field_0x6a.HWORD -= 1;
|
||||
|
||||
@@ -222,7 +222,7 @@ void sub_08061E90(Entity* this, Entity* arg1) {
|
||||
if (animIndex != this->animIndex) {
|
||||
InitializeAnimation(this, animIndex);
|
||||
}
|
||||
sub_080AEF88(this);
|
||||
ProcessMovement(this);
|
||||
iVar4 = this->x.HALF.HI - *(s16*)&this->field_0x6a.HWORD;
|
||||
if (0x10 < iVar4) {
|
||||
this->x.HALF.HI = this->field_0x6a.HWORD + 0x10;
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
extern void sub_0809EB30(Entity*);
|
||||
extern void sub_0809EAD8(Entity*);
|
||||
extern void sub_0809EABC(Entity*);
|
||||
extern void sub_08004488(u32);
|
||||
extern void EnqueSFX(u32);
|
||||
extern void sub_080A2CC0(Entity*, Entity**, u16*);
|
||||
extern Entity* GetCurrentRoomProperty(u32);
|
||||
extern void SetTile(u32, u32, u32);
|
||||
@@ -50,7 +50,7 @@ void sub_0809EA80(Entity* this) {
|
||||
} else {
|
||||
SetFlag(this->field_0x86);
|
||||
}
|
||||
sub_08004488(0x110);
|
||||
EnqueSFX(0x110);
|
||||
}
|
||||
sub_0809EABC(this);
|
||||
}
|
||||
@@ -123,7 +123,7 @@ void sub_0809EBD8(Entity* this) {
|
||||
this->actionDelay = 0x10;
|
||||
this->frameIndex = 2;
|
||||
SetFlag(this->field_0x86);
|
||||
sub_08004488(0x110);
|
||||
EnqueSFX(0x110);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -137,7 +137,7 @@ void sub_0809EC08(Entity* this) {
|
||||
this->action = 1;
|
||||
this->frameIndex = 3;
|
||||
ClearFlag(this->field_0x86);
|
||||
sub_08004488(0x110);
|
||||
EnqueSFX(0x110);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -20,7 +20,7 @@ extern void sub_08000148(u16, u16, u32);
|
||||
extern s16 sub_080001DA(u16, u32);
|
||||
extern u16 sub_080002E0(u16, u32);
|
||||
|
||||
extern void sub_08004488(u32);
|
||||
extern void EnqueSFX(u32);
|
||||
extern void sub_080044EC(Entity *, u16);
|
||||
extern void sub_0805457C(Entity *, s32);
|
||||
|
||||
@@ -115,7 +115,7 @@ void sub_08092B0C(Entity *this) {
|
||||
switch (this->entityType.parameter & 0xC0)
|
||||
{
|
||||
case 0x80:
|
||||
sub_08004488(0x72);
|
||||
EnqueSFX(0x72);
|
||||
case 0x40:
|
||||
SetFlag(this->field_0x86);
|
||||
break;
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
extern u32 sub_08083734(Entity*, u32);
|
||||
extern void sub_080A080C(Entity*);
|
||||
extern void sub_0806F69C(Entity*);
|
||||
extern void sub_08004488(u32);
|
||||
extern void EnqueSFX(u32);
|
||||
extern void sub_080A0870(Entity*);
|
||||
extern void PlaySFX(u32);
|
||||
extern u32 sub_080001DA(u32, u32);
|
||||
@@ -71,7 +71,7 @@ void sub_080A074C(Entity *this)
|
||||
ent->x.HALF.HI -= 0xc;
|
||||
ent->y.HALF.HI -= 0xc;
|
||||
}
|
||||
sub_08004488(0x10b);
|
||||
EnqueSFX(0x10b);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
extern void sub_08086A6C();
|
||||
extern s32 sub_080044EC();
|
||||
extern void sub_080AEF88();
|
||||
extern void ProcessMovement();
|
||||
extern u32 Random(void);
|
||||
|
||||
extern void (*gUnk_081206C4[99])(Entity*);
|
||||
@@ -42,7 +42,7 @@ void sub_08086A28(Entity* ent) {
|
||||
if (iVar1 == 0) {
|
||||
ent->action = 2;
|
||||
}
|
||||
sub_080AEF88(ent);
|
||||
ProcessMovement(ent);
|
||||
CopyPosition(ent, ent->attachedEntity);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,5 +36,5 @@ void sub_08089B18(Entity *this)
|
||||
return;
|
||||
}
|
||||
}
|
||||
sub_08004488(0x124);
|
||||
EnqueSFX(0x124);
|
||||
}
|
||||
+1
-1
@@ -92,7 +92,7 @@ void sub_08082310(Entity* this) {
|
||||
this->actionDelay = 64;
|
||||
}
|
||||
SetTile((u16)this->field_0x70.HALF.LO, COORD_TO_TILE(this), this->collisionLayer);
|
||||
sub_08004488(0x10F);
|
||||
EnqueSFX(0x10F);
|
||||
break;
|
||||
case 0x4067:
|
||||
SetTile((u16)this->field_0x70.HALF.LO, COORD_TO_TILE(this), this->collisionLayer);
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
extern u32* GetLayerByIndex(u32);
|
||||
extern void sub_08085394(Entity*);
|
||||
extern void sub_0808543C(Entity*);
|
||||
extern void sub_08004488(u32);
|
||||
extern void EnqueSFX(u32);
|
||||
extern u32 sub_080854A8(Entity*);
|
||||
extern void SetTile(u32, u32, u32);
|
||||
|
||||
@@ -54,7 +54,7 @@ void sub_08085264(Entity* this) {
|
||||
this->animationState = (this->animationState + *(u8*)&this->field_0x7c) & 3;
|
||||
InitializeAnimation(this, this->animationState);
|
||||
sub_0808543C(this);
|
||||
sub_08004488(0x151);
|
||||
EnqueSFX(0x151);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,7 +66,7 @@ void sub_080852B4(Entity* this) {
|
||||
this->animationState = (this->animationState + *(u8*)&this->field_0x7c) & 3;
|
||||
InitializeAnimation(this, this->animationState);
|
||||
sub_08085394(this);
|
||||
sub_08004488(0x151);
|
||||
EnqueSFX(0x151);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -96,7 +96,7 @@ void sub_08085308(Entity* this) {
|
||||
this->animationState = (this->animationState + *(u8*)&this->field_0x7c) & 3;
|
||||
InitializeAnimation(this, this->animationState);
|
||||
sub_0808543C(this);
|
||||
sub_08004488(0x151);
|
||||
EnqueSFX(0x151);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user