Move some const data into code files

This commit is contained in:
Tal Hayon
2022-04-13 00:02:03 +03:00
parent 02cec8ca8d
commit e809532548
42 changed files with 326 additions and 526 deletions
-1
View File
@@ -9,7 +9,6 @@
#include "functions.h"
extern Entity* gUnk_020000B0;
extern void (*const gUnk_080012C8[])(Entity*);
static void sub_08031E48(Entity* this, Entity* child);
static void sub_08032290(Entity* this);
-2
View File
@@ -22,8 +22,6 @@ bool32 sub_0802B234(Entity*);
Entity* sub_0802B250(Entity*);
void sub_0802B264(Entity*);
extern void (*const gUnk_080012C8[])(Entity*);
extern void (*const BombPeahat_Functions[])(Entity*);
extern void (*const gUnk_080CD108[])(Entity*);
extern void (*const gUnk_080CD120[])(Entity*);
-1
View File
@@ -8,7 +8,6 @@
#include "enemy.h"
#include "functions.h"
extern void (*const gUnk_080012C8[])(Entity*);
extern void (*const Chaser_Functions[])(Entity*);
extern void (*const gUnk_080CD298[])(Entity*);
-1
View File
@@ -26,7 +26,6 @@ void sub_0801FB68(Entity*);
u32 sub_0801FBD0(Entity*);
void Chuchu_JumpAtPlayer(Entity*);
extern void (*const gUnk_080012C8[])(Entity*);
extern void (*const Chuchu_Functions[])(Entity*);
extern void (*const gUnk_080CA234[])(Entity*);
extern void (*const gUnk_080CA25C[])(Entity*);
-2
View File
@@ -11,8 +11,6 @@ typedef struct {
u8 unk_7b;
} CuccoAggrEntity;
extern void (*const gUnk_080012C8[])(Entity*);
typedef struct {
u16 x;
u16 y;
+21 -8
View File
@@ -14,18 +14,28 @@ typedef struct {
extern void sub_08045524(Entity*);
void sub_08045178(Entity*, Entity*, int, int);
void FireballGuy_OnTick(Entity*);
void FireballGuy_OnCollision(Entity*);
void FireballGuy_OnGrabbed(Entity*);
void sub_080453E8(Entity*);
void sub_08045430(Entity*);
void sub_08045454(Entity*);
extern void (*const FireballGuy_Functions[])(Entity*);
extern void (*const gUnk_080D1800[])(Entity*);
extern u8 gUnk_080D180C[4]; // Entity count per form
extern PosOffset gUnk_080D1810[4];
static void (*const FireballGuy_Functions[])(Entity*) = {
FireballGuy_OnTick, FireballGuy_OnCollision, GenericKnockback, GenericDeath, GenericConfused, FireballGuy_OnGrabbed,
};
void FireballGuy(Entity* this) {
EnemyFunctionHandler(this, FireballGuy_Functions);
}
void FireballGuy_OnTick(Entity* this) {
gUnk_080D1800[this->action](this);
static void (*const actionFuncs[])(Entity*) = {
sub_080453E8,
sub_08045430,
sub_08045454,
};
actionFuncs[this->action](this);
}
void FireballGuy_OnCollision(Entity* this) {
@@ -36,7 +46,7 @@ void FireballGuy_OnCollision(Entity* this) {
}
}
void FireballGuy_OnGrabbed(void) {
void FireballGuy_OnGrabbed(Entity* this) {
}
void sub_080453E8(Entity* this) {
@@ -60,14 +70,17 @@ void sub_08045430(Entity* this) {
/* Split FireballGuy into new ones */
void sub_08045454(Entity* this) {
// Entity count per form
static const u8 typeEntityCount[4] = { 2, 3, 4, 5 };
static const PosOffset gUnk_080D1810[4] = { { 6, 0 }, { -6, 0 }, { 0, 6 }, { 0, -6 } };
Entity* entities[4];
Entity* ent;
s32 count, i;
PosOffset* off;
const PosOffset* off;
u32 tmp;
/* Can we create enough new entities? */
count = gUnk_080D180C[this->type];
count = typeEntityCount[this->type];
if (MAX_ENTITIES + 1 - count <= gEntCount)
return;
-1
View File
@@ -11,7 +11,6 @@
#include "player.h"
#include "room.h"
extern void (*const gUnk_080012C8[])(Entity*);
extern Hitbox gUnk_080FD34C;
typedef struct {
-2
View File
@@ -12,8 +12,6 @@ typedef struct {
u8 unk_0x76;
} FlyingSkullEntity;
extern void (*const gUnk_080012C8[])(Entity*);
void (*const FlyingSkull_Functions[])(Entity*);
void (*const gUnk_080CFB9C[])(FlyingSkullEntity*);
void (*const gUnk_080CFBBC[])(FlyingSkullEntity*);
+21 -7
View File
@@ -9,12 +9,19 @@
#include "functions.h"
extern Entity* gUnk_020000B0;
void Keaton_OnTick(Entity*);
void Keaton_OnCollision(Entity*);
void Keaton_OnGrabbed(Entity*);
void sub_08032468(Entity*);
void sub_0803248C(Entity*);
void sub_080324CC(Entity*);
void sub_080324FC(Entity*);
void sub_08032574(Entity*);
void sub_080325C4(Entity*);
extern void (*const Keaton_Functions[])(Entity*);
extern void (*const gUnk_080CE7C8[])(Entity*);
extern u8 gUnk_080CE7E0[];
extern u16 gUnk_080CE7F0[];
extern s8 gUnk_080CE810[];
static void (*const Keaton_Functions[])(Entity*) = {
Keaton_OnTick, Keaton_OnCollision, GenericKnockback, GenericDeath, GenericConfused, Keaton_OnGrabbed,
};
u32 sub_080325E8(Entity* this);
void sub_08032650(Entity* this);
@@ -34,7 +41,10 @@ void Keaton(Entity* this) {
}
void Keaton_OnTick(Entity* this) {
gUnk_080CE7C8[this->action](this);
static void (*const actionFuncs[])(Entity*) = {
sub_08032468, sub_0803248C, sub_080324CC, sub_080324FC, sub_08032574, sub_080325C4,
};
actionFuncs[this->action](this);
}
void Keaton_OnCollision(Entity* this) {
@@ -158,6 +168,7 @@ u32 sub_080325E8(Entity* this) {
}
void sub_08032650(Entity* this) {
static const u8 gUnk_080CE7E0[] = { 60, 60, 90, 90, 90, 90, 120, 120, 120, 120, 120, 120, 120, 120, 150, 150 };
u32 uVar3;
uVar3 = Random();
@@ -189,6 +200,8 @@ void sub_0803269C(Entity* this, u32 direction) {
}
void sub_080326FC(Entity* this) {
static const u16 gUnk_080CE7F0[] = { 0xd2, 0xd2, 0xf0, 0xf0, 0x10e, 0x10e, 0x10e, 0x10e,
0x12c, 0x12c, 0x12c, 0x12c, 0x12c, 0x12c, 0x12c, 0x12c };
this->field_0x74.HWORD = gUnk_080CE7F0[Random() & 0xF];
}
@@ -224,7 +237,8 @@ void sub_08032784(Entity* this) {
void sub_08032794(Entity* this) {
Entity* target;
s8* temp;
const s8* temp;
static const s8 gUnk_080CE810[] = { 0, 2, -4, 0, 0, -11, 4, 0 };
target = CreateFx(this, FX_DASH, 0x40);
if (target != NULL) {
+15 -4
View File
@@ -9,16 +9,28 @@
#include "functions.h"
extern void sub_08045678(Entity*);
void MiniFireballGuy_OnTick(Entity*);
void MiniFireballGuy_OnCollision(Entity*);
void MiniFireballGuy_OnDeath(Entity*);
void MiniFireballGuy_OnGrabbed(Entity*);
void sub_08045618(Entity*);
void sub_08045654(Entity*);
extern void (*const MiniFireballGuy_Functions[])(Entity*);
extern void (*const gUnk_080D1880[])(Entity*);
static void (*const MiniFireballGuy_Functions[])(Entity*) = {
MiniFireballGuy_OnTick, MiniFireballGuy_OnCollision, GenericKnockback, MiniFireballGuy_OnDeath,
GenericConfused, MiniFireballGuy_OnGrabbed,
};
void MiniFireballGuy(Entity* this) {
EnemyFunctionHandler(this, MiniFireballGuy_Functions);
}
void MiniFireballGuy_OnTick(Entity* this) {
gUnk_080D1880[this->action](this);
static void (*const actionFuncs[])(Entity*) = {
sub_08045618,
sub_08045654,
};
actionFuncs[this->action](this);
}
void MiniFireballGuy_OnCollision(Entity* this) {
@@ -56,7 +68,6 @@ void sub_08045654(Entity* this) {
}
void sub_08045678(Entity* this) {
this->zVelocity = Q_16_16(1.75);
if (this->timer != 0) {
this->timer--;
+19 -4
View File
@@ -8,13 +8,22 @@
#include "enemy.h"
#include "physics.h"
void sub_08045374(Entity*);
void MiniSlime_OnTick(Entity*);
void MiniSlime_OnCollision(Entity*);
void MiniSlime_OnDeath(Entity*);
void MiniSlime_OnGrabbed(Entity*);
void sub_080452A4(Entity*);
void sub_080452E4(Entity*);
void sub_080452FC(Entity*);
void sub_08045374(Entity*);
extern void sub_080452E4(Entity*);
extern void ReplaceMonitoredEntity(Entity*, Entity*);
extern void (*const MiniSlime_Functions[])(Entity*);
extern void (*const gUnk_080D17D8[])(Entity*);
static void (*const MiniSlime_Functions[])(Entity*) = {
MiniSlime_OnTick, MiniSlime_OnCollision, GenericKnockback, MiniSlime_OnDeath, GenericConfused, MiniSlime_OnGrabbed,
};
void MiniSlime(Entity* this) {
EnemyFunctionHandler(this, MiniSlime_Functions);
@@ -22,7 +31,13 @@ void MiniSlime(Entity* this) {
}
void MiniSlime_OnTick(Entity* this) {
gUnk_080D17D8[this->action](this);
static void (*const actionFuncs[])(Entity*) = {
sub_080452A4,
sub_080452E4,
sub_080452FC,
sub_08045374,
};
actionFuncs[this->action](this);
}
void MiniSlime_OnCollision(Entity* this) {
@@ -44,7 +59,7 @@ void MiniSlime_OnDeath(Entity* this) {
GenericDeath(this);
}
void MiniSlime_OnGrabbed(void) {
void MiniSlime_OnGrabbed(Entity* this) {
}
void sub_080452A4(Entity* this) {
-1
View File
@@ -5,7 +5,6 @@
void (*const OctorokGolden_Functions[])(Entity*);
void (*const gUnk_080CF484[])(Entity*);
extern void (*const gUnk_080012C8[])(Entity*);
const s8 gUnk_080CF490[];
const u8 gUnk_080CF498[];
+28 -5
View File
@@ -8,9 +8,21 @@
#include "enemy.h"
#include "physics.h"
extern void (*const Rope_Functions[6])(Entity*);
extern void (*const gUnk_080CE460[4])(Entity*);
extern void (*const gUnk_080CE470[3])(Entity*);
void Rope_OnTick(Entity*);
void Rope_OnCollision(Entity*);
void Rope_OnGrabbed(Entity*);
void sub_08031434(Entity*);
void sub_08031480(Entity*);
void sub_080314FC(Entity*);
void sub_080315BC(Entity*);
void sub_0803140C(Entity*);
void sub_08031418(Entity*);
void sub_08031420(Entity*);
static void (*const Rope_Functions[6])(Entity*) = {
Rope_OnTick, Rope_OnCollision, GenericKnockback, GenericDeath, GenericConfused, Rope_OnGrabbed,
};
extern Entity* gUnk_020000B0;
void sub_08031600(Entity*);
@@ -22,7 +34,13 @@ void Rope(Entity* this) {
}
void Rope_OnTick(Entity* this) {
gUnk_080CE460[this->action](this);
static void (*const actionFuncs[4])(Entity*) = {
sub_08031434,
sub_08031480,
sub_080314FC,
sub_080315BC,
};
actionFuncs[this->action](this);
}
void Rope_OnCollision(Entity* this) {
@@ -38,8 +56,13 @@ void Rope_OnCollision(Entity* this) {
}
void Rope_OnGrabbed(Entity* this) {
static void (*const subActionFuncs[3])(Entity*) = {
sub_0803140C,
sub_08031418,
sub_08031420,
};
if (sub_0806F520(this)) {
gUnk_080CE470[this->subAction](this);
subActionFuncs[this->subAction](this);
}
}
+18 -4
View File
@@ -11,9 +11,17 @@
#include "physics.h"
#include "player.h"
extern void (*const gUnk_080012C8[])(Entity*);
extern void (*const RopeGolden_Functions[6])(Entity*);
extern void (*const gUnk_080CF4E0[4])(Entity*);
void RopeGolden_OnTick(Entity*);
void RopeGolden_OnCollision(Entity*);
void RopeGolden_OnDeath(Entity*);
void sub_08038258(Entity*);
void sub_0803827C(Entity*);
void sub_080382EC(Entity*);
void sub_08038304(Entity*);
static void (*const RopeGolden_Functions[6])(Entity*) = {
RopeGolden_OnTick, RopeGolden_OnCollision, GenericKnockback, RopeGolden_OnDeath, GenericConfused, RopeGolden_OnTick,
};
void sub_080383AC(Entity*);
void sub_080383E4(Entity*);
@@ -30,7 +38,13 @@ void RopeGolden(Entity* this) {
}
void RopeGolden_OnTick(Entity* this) {
gUnk_080CF4E0[this->action](this);
static void (*const actionFuncs[4])(Entity*) = {
sub_08038258,
sub_0803827C,
sub_080382EC,
sub_08038304,
};
actionFuncs[this->action](this);
}
void RopeGolden_OnCollision(Entity* this) {
+19 -7
View File
@@ -14,12 +14,19 @@ typedef struct {
} PACKED PosOffset;
void sub_08044FF8(Entity*);
void Slime_OnTick(Entity*);
void Slime_OnCollision(Entity*);
void Slime_OnGrabbed(Entity*);
void sub_08044FC8(Entity*);
void sub_08044FF8(Entity*);
void sub_08045018(Entity*);
void sub_08045088(Entity*);
void sub_080450A8(Entity*);
void sub_08045178(Entity*, Entity*, int, int);
extern void (*const gUnk_080D16BC[])(Entity*);
extern void (*const Slime_Functions[])(Entity*);
extern u8 gUnk_080D16D0[4]; // Entity count per form
extern PosOffset gUnk_080D16D4[4];
static void (*const Slime_Functions[])(Entity*) = {
Slime_OnTick, Slime_OnCollision, GenericKnockback, GenericDeath, GenericConfused, Slime_OnGrabbed,
};
void Slime(Entity* this) {
EnemyFunctionHandler(this, Slime_Functions);
@@ -27,7 +34,10 @@ void Slime(Entity* this) {
}
void Slime_OnTick(Entity* this) {
gUnk_080D16BC[this->action](this);
static void (*const actionFuncs[])(Entity*) = {
sub_08044FC8, sub_08044FF8, sub_08045018, sub_08045088, sub_080450A8,
};
actionFuncs[this->action](this);
}
void Slime_OnCollision(Entity* this) {
@@ -89,10 +99,12 @@ void sub_080450A8(Entity* this) {
Entity* entities[4];
Entity* ent;
s32 count, i;
PosOffset* off;
const PosOffset* off;
static const u8 typeEntityCount[4] = { 2, 2, 4, 2 };
static const PosOffset gUnk_080D16D4[4] = { { 6, 0 }, { -6, 0 }, { 0, 6 }, { 0, -6 } };
/* Can we create enough new entities? */
count = gUnk_080D16D0[this->type];
count = typeEntityCount[this->type];
if (MAX_ENTITIES + 1 - count <= gEntCount)
return;
-2
View File
@@ -12,8 +12,6 @@ void sub_08023E10(Entity*);
void sub_08023E54(Entity*);
void sub_08023E9C(Entity*);
extern void (*const gUnk_080012C8[])(Entity*);
extern void (*const Sluggula_Functions[])(Entity*);
extern void (*const gUnk_080CBDD4[])(Entity*);
extern void (*const gUnk_080CBDEC[])(Entity*);
+27 -9
View File
@@ -8,24 +8,36 @@
#include "enemy.h"
#include "physics.h"
extern void sub_080317F8(Entity*);
void sub_080317F8(Entity*);
void SmallPesto_OnTick(Entity*);
void SmallPesto_OnCollision(Entity*);
void SmallPesto_OnGrabbed(Entity*);
void sub_08031704(Entity*);
void sub_08031714(Entity*);
void sub_08031770(Entity*);
void sub_080316DC(Entity*);
void sub_080316E8(Entity*);
void sub_080316F0(Entity*);
extern void (*SmallPesto_Functions[])(Entity*);
extern void (*gUnk_080CE548[])(Entity*);
extern void (*gUnk_080CE554[])(Entity*);
static void (*const SmallPesto_Functions[])(Entity*) = {
SmallPesto_OnTick, SmallPesto_OnCollision, GenericKnockback, GenericDeath, GenericConfused, SmallPesto_OnGrabbed,
};
void sub_080317B4(Entity*);
void sub_080317E0(Entity*);
void sub_08031840(Entity*);
extern Hitbox gUnk_080CE560;
void SmallPesto(Entity* this) {
SmallPesto_Functions[GetNextFunction(this)](this);
}
void SmallPesto_OnTick(Entity* this) {
gUnk_080CE548[this->action](this);
static void (*const actionFuncs[])(Entity*) = {
sub_08031704,
sub_08031714,
sub_08031770,
};
actionFuncs[this->action](this);
}
void SmallPesto_OnCollision(Entity* this) {
@@ -33,6 +45,11 @@ void SmallPesto_OnCollision(Entity* this) {
void SmallPesto_OnGrabbed(Entity* this) {
s32 iVar1;
static void (*const subActionFuncs[])(Entity*) = {
sub_080316DC,
sub_080316E8,
sub_080316F0,
};
GetNextFrame(this);
iVar1 = sub_0806F520(this);
@@ -43,7 +60,7 @@ void SmallPesto_OnGrabbed(Entity* this) {
this->speed = 0x40;
this->subtimer = 1;
} else {
gUnk_080CE554[this->subAction](this);
subActionFuncs[this->subAction](this);
}
}
@@ -107,6 +124,7 @@ void sub_080317E0(Entity* this) {
}
void sub_080317F8(Entity* this) {
static const Hitbox3D gUnk_080CE560 = { 0, -3, { 3, 2, 2, 3 }, 2, 2, 12, { 0, 0, 0 } };
u8 newDirection = Random() & 0x18;
this->action = 1;
this->z.HALF.HI = 0x0000FFF4;
@@ -114,7 +132,7 @@ void sub_080317F8(Entity* this) {
this->collisionFlags |= 0x10;
this->gustJarFlags = 1;
this->direction = newDirection;
this->hitbox = &gUnk_080CE560;
this->hitbox = (Hitbox*)&gUnk_080CE560;
sub_080317E0(this);
this->timer = 0;
this->subtimer = 0x20;
+24 -4
View File
@@ -10,9 +10,18 @@
#include "functions.h"
static void sub_0802F45C(Entity* this);
static void Tektite_OnTick(Entity*);
static void Tektite_OnCollision(Entity*);
static void Tektite_OnConfused(Entity*);
static void Tektite_OnGrabbed(Entity*);
static void sub_0802F210(Entity*);
static void sub_0802F284(Entity*);
static void sub_0802F300(Entity*);
static void sub_0802F3F4(Entity*);
extern void (*const Tektite_Functions[])(Entity*);
extern void (*const gUnk_080CDEE8[])(Entity*);
static void (*const Tektite_Functions[])(Entity*) = {
Tektite_OnTick, Tektite_OnCollision, GenericKnockback, GenericDeath, Tektite_OnConfused, Tektite_OnGrabbed,
};
void Tektite(Entity* this) {
EnemyFunctionHandler(this, Tektite_Functions);
@@ -20,10 +29,21 @@ void Tektite(Entity* this) {
}
void Tektite_OnTick(Entity* this) {
gUnk_080CDEE8[this->action](this);
static void (*const actionFuncs[])(Entity*) = {
sub_0802F210,
sub_0802F284,
sub_0802F300,
sub_0802F3F4,
};
actionFuncs[this->action](this);
}
extern u8 gUnk_080CDEF8[];
static const u8 gUnk_080CDEF8[] = {
0x18,
0x28,
0x38,
0x48,
};
void Tektite_OnCollision(Entity* this) {
u32 bVar1;
+23 -6
View File
@@ -9,18 +9,35 @@
#include "enemy.h"
#include "functions.h"
extern void sub_08038168(Entity*);
void sub_08038168(Entity*);
void TektiteGolden_OnTick(Entity*);
void TektiteGolden_OnCollision(Entity*);
void TektiteGolden_OnDeath(Entity*);
void TektiteGolden_OnConfused(Entity*);
void TektiteGolden_OnTick(Entity*);
void sub_08037FA0(Entity*);
void sub_08037Fe0(Entity*);
void sub_08038048(Entity*);
void sub_08038110(Entity*);
extern void (*const TektiteGolden_Functions)(Entity*);
extern void (*const gUnk_080CF4B8[])(Entity*);
static void (*const TektiteGolden_Functions[])(Entity*) = {
TektiteGolden_OnTick, TektiteGolden_OnCollision, GenericKnockback,
TektiteGolden_OnDeath, TektiteGolden_OnConfused, TektiteGolden_OnTick,
};
void TektiteGolden(Entity* this) {
EnemyFunctionHandler(this, &TektiteGolden_Functions);
EnemyFunctionHandler(this, TektiteGolden_Functions);
SetChildOffset(this, 0, 1, -0x10);
}
void TektiteGolden_OnTick(Entity* this) {
gUnk_080CF4B8[this->action](this);
static void (*const actionFuncs[])(Entity*) = {
sub_08037FA0,
sub_08037Fe0,
sub_08038048,
sub_08038110,
};
actionFuncs[this->action](this);
}
void TektiteGolden_OnCollision(Entity* this) {
@@ -29,7 +46,7 @@ void TektiteGolden_OnCollision(Entity* this) {
if (this->confusedTime != 0) {
Create0x68FX(this, FX_STARS);
}
EnemyFunctionHandlerAfterCollision(this, &TektiteGolden_Functions);
EnemyFunctionHandlerAfterCollision(this, TektiteGolden_Functions);
if (this->contactFlags == 0x94) {
this->action = 1;
this->subAction = 0;
+18 -6
View File
@@ -15,12 +15,19 @@ typedef struct {
s8 h, v;
} PACKED PosOffset;
extern void (*const gUnk_080D1604[])(Entity*);
extern PosOffset gUnk_080D1620[4];
void sub_0804468C(Entity*);
void sub_080447E0(Entity*);
void sub_08044868(Entity*);
void sub_0804474C(Entity*);
void sub_080449F8(Entity*);
void sub_08044B04(Entity*);
extern void sub_08044E74(Entity*, u32);
void VaatiBall(Entity* this) {
static void (*const actionFuncs[])(Entity*) = {
sub_0804468C, sub_0804474C, sub_080447E0, sub_08044868, sub_0804474C, sub_080449F8, sub_08044B04,
};
Entity* parent;
parent = this->parent;
@@ -29,7 +36,7 @@ void VaatiBall(Entity* this) {
this->y.WORD += parent->y.WORD - parent->field_0x7c.WORD;
}
gUnk_080D1604[this->action](this);
actionFuncs[this->action](this);
if (this->cutsceneBeh.HALF.LO) {
this->health = -1;
@@ -56,7 +63,8 @@ void VaatiBall(Entity* this) {
}
void sub_0804468C(Entity* this) {
PosOffset* off;
const PosOffset* off;
static const PosOffset gUnk_080D1620[4] = { { -48, 0 }, { 0, -48 }, { 48, 0 }, { 0, 48 } };
this->collisionLayer = 3;
this->spriteRendering.b3 = 2;
@@ -447,10 +455,14 @@ void sub_08044B04(Entity* this) {
}
}
extern u8 gUnk_080D1628[4][4];
void sub_08044DEC(Entity* this) {
u32 off;
static const u8 gUnk_080D1628[4][4] = {
{ 16, 24, 0, 8 },
{ 8, 24, 0, 16 },
{ 0, 11, 21, 16 },
{ 16, 24, 0, 8 },
};
if (this->parent->field_0x80.HALF.LO > this->field_0x78.HALF.HI) {
this->spriteSettings.draw = 1;
+25 -7
View File
@@ -12,19 +12,31 @@
#include "functions.h"
static void sub_08033744(Entity* this);
void Wisp_OnTick(Entity* this);
void Wisp_OnCollision(Entity* this);
void Wisp_OnGrabbed(Entity* this);
void sub_08033674(Entity* this);
void sub_080336A8(Entity* this);
void sub_080336DC(Entity* this);
void sub_08033650(Entity* this);
void sub_08033658(Entity* this);
void sub_08033660(Entity* this);
extern void (*const Wisp_Functions[])(Entity*);
extern void (*const gUnk_080CEB8C[])(Entity*);
extern void (*const gUnk_080CEB98[])(Entity*);
extern u8 gUnk_080CEBA4[];
static void (*const Wisp_Functions[])(Entity*) = {
Wisp_OnTick, Wisp_OnCollision, GenericKnockback, GenericDeath, GenericConfused, Wisp_OnGrabbed,
};
void Wisp(Entity* this) {
EnemyFunctionHandler(this, Wisp_Functions);
}
void Wisp_OnTick(Entity* this) {
gUnk_080CEB8C[this->action](this);
static void (*const actionFuncs[])(Entity*) = {
sub_08033674,
sub_080336A8,
sub_080336DC,
};
actionFuncs[this->action](this);
}
void Wisp_OnCollision(Entity* this) {
@@ -70,8 +82,13 @@ void Wisp_OnCollision(Entity* this) {
}
void Wisp_OnGrabbed(Entity* this) {
static void (*const subActionFuncs[])(Entity*) = {
sub_08033650,
sub_08033658,
sub_08033660,
};
if (sub_0806F520(this)) {
gUnk_080CEB98[this->subAction](this);
subActionFuncs[this->subAction](this);
}
}
@@ -133,6 +150,7 @@ void sub_080336DC(Entity* this) {
static void sub_08033744(Entity* this) {
u32 temp;
u32 rand = (u32)Random() % 256;
static const u8 gUnk_080CEBA4[] = { 30, 45, 60, 75, 1, 90, 105, 120 };
// 8 potential options
this->timer = gUnk_080CEBA4[(rand & 0x70) >> 4];