summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTal Hayon <talhayon1@gmail.com>2022-08-07 00:17:12 +0300
committerTal Hayon <talhayon1@gmail.com>2022-08-07 00:17:12 +0300
commit807d313e10be369240a1309f7ffe63c143f87287 (patch)
tree215cd631c2b5ba01a594f2b65ea5c35984bc1e04 /src
parent18ef0d34b4ce9801ae26449e3a32ac9d985e43de (diff)
Put some const data in npcUtils
Diffstat (limited to 'src')
-rw-r--r--src/npcUtils.c46
1 files changed, 40 insertions, 6 deletions
diff --git a/src/npcUtils.c b/src/npcUtils.c
index 9e7fb73e..cf041a0d 100644
--- a/src/npcUtils.c
+++ b/src/npcUtils.c
@@ -6,13 +6,10 @@
#include "save.h"
#include "npc.h"
#include "kinstone.h"
+#include "hitbox.h"
extern const NPCDefinition gNPCDefinitions[];
-extern Hitbox* gNPCHitboxes[];
-extern u32 (*gUnk_08114EFC[])(Entity*);
-extern u32 (*gUnk_08114F0C[])(Entity*, u8*);
-
typedef struct {
u16 textIndex;
u16 _2;
@@ -21,6 +18,18 @@ typedef struct {
extern NPCData* gUnk_08001A7C[];
u32 sub_0806EF88(Entity*);
+u32 sub_0806EE70(Entity*);
+u32 sub_0806EED0(Entity*);
+u32 sub_0806EEF4(Entity*);
+u32 sub_0806EFAC(Entity*, u16*);
+u32 sub_0806EFBC(Entity*, u16*);
+u32 sub_0806EFCC(Entity*, u16*);
+u32 sub_0806EFDC(Entity*, u16*);
+u32 sub_0806F014(Entity*, u16*);
+u32 sub_0806F02C(Entity*, u16*);
+u32 sub_0806F048(Entity*, u16*);
+u32 sub_0806F050(Entity*, u16*);
+u32 sub_0806F064(Entity*, u16*);
static void sub_0806EF14(Entity*);
static void sub_0806EF4C(Entity*, u16*);
@@ -48,6 +57,14 @@ static const NPCDefinition* GetNPCDefinition(Entity* this) {
}
void NPCInit(Entity* this) {
+ static const Hitbox* const gNPCHitboxes[] = {
+ NULL,
+ &gHitbox_2,
+ &gHitbox_30,
+ &gHitbox_2,
+ &gHitbox_3,
+ &gHitbox_31,
+ };
u32 tmp;
u32 tmp2;
@@ -75,7 +92,7 @@ void NPCInit(Entity* this) {
this->spriteSettings.shadow = definition->data.sprite.shadow;
this->spritePriority.b1 = definition->data.sprite.spritePriority;
this->spriteSettings.draw = definition->data.sprite.draw;
- this->hitbox = gNPCHitboxes[definition->bitfield.hitbox];
+ this->hitbox = (Hitbox*) gNPCHitboxes[definition->bitfield.hitbox];
this->flags |= ENT_DID_INIT;
tmp2 = 0xff;
this->animIndex = tmp2;
@@ -135,6 +152,12 @@ void sub_0806EE04(Entity* ent, void* a2, u32 a3) {
}
u32 sub_0806EE20(Entity* ent) {
+ static u32 (*const gUnk_08114EFC[])(Entity*) = {
+ sub_0806EF88,
+ sub_0806EE70,
+ sub_0806EED0,
+ sub_0806EEF4,
+ };
u32 v3;
if (!ent->interactType) {
@@ -203,8 +226,19 @@ static u32 sub_0806EF74(Entity* ent, u32 a2) {
}
u32 sub_0806EF88(Entity* ent) {
+ static u32 (*const gUnk_08114F0C[])(Entity*, u16*) = {
+ sub_0806EFAC,
+ sub_0806EFBC,
+ sub_0806EFCC,
+ sub_0806EFDC,
+ sub_0806F014,
+ sub_0806F02C,
+ sub_0806F048,
+ sub_0806F050,
+ sub_0806F064,
+ };
u8* v1 = (u8*)&((u16*)ent->child)[ent->hitType];
- return gUnk_08114F0C[*v1](ent, v1);
+ return gUnk_08114F0C[*v1](ent, (u16*)v1);
}
u32 sub_0806EFAC(Entity* ent, u16* a2) {