mirror of https://github.com/zeldaret/tmc.git
Put some const data in npcUtils
This commit is contained in:
parent
18ef0d34b4
commit
807d313e10
|
|
@ -4,32 +4,6 @@
|
|||
.section .rodata
|
||||
.align 2
|
||||
|
||||
|
||||
gNPCHitboxes:: @ 08114EE4
|
||||
.4byte 00000000
|
||||
.4byte gHitbox_2
|
||||
.4byte gHitbox_30
|
||||
.4byte gHitbox_2
|
||||
.4byte gHitbox_3
|
||||
.4byte gHitbox_31
|
||||
|
||||
gUnk_08114EFC:: @ 08114EFC
|
||||
.4byte sub_0806EF88
|
||||
.4byte sub_0806EE70
|
||||
.4byte sub_0806EED0
|
||||
.4byte sub_0806EEF4
|
||||
|
||||
gUnk_08114F0C:: @ 08114F0C
|
||||
.4byte sub_0806EFAC
|
||||
.4byte sub_0806EFBC
|
||||
.4byte sub_0806EFCC
|
||||
.4byte sub_0806EFDC
|
||||
.4byte sub_0806F014
|
||||
.4byte sub_0806F02C
|
||||
.4byte sub_0806F048
|
||||
.4byte sub_0806F050
|
||||
.4byte sub_0806F064
|
||||
|
||||
gUnk_08114F30:: @ 08114F30
|
||||
.incbin "data_081146D0/gUnk_08114F30.bin"
|
||||
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ extern const Hitbox gHitbox_27;
|
|||
extern const Hitbox gHitbox_28;
|
||||
extern const Hitbox gHitbox_29;
|
||||
extern const Hitbox gHitbox_30;
|
||||
extern const Hitbox gHitbox_31;
|
||||
extern const Hitbox gHitbox_32;
|
||||
extern const Hitbox gUnk_080FD190;
|
||||
extern const Hitbox gUnk_080FD1A8;
|
||||
|
|
|
|||
|
|
@ -1268,6 +1268,7 @@ SECTIONS {
|
|||
src/npc/phonograph.o(.rodata);
|
||||
src/npc/npc58.o(.rodata);
|
||||
src/npcDefinitions.o(.rodata);
|
||||
src/npcUtils.o(.rodata);
|
||||
data/data_081146D0.o(.rodata);
|
||||
src/physics.o(.rodata);
|
||||
src/playerHitbox.o(.rodata);
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue