diff --git a/include/entity.h b/include/entity.h index c912c917..a1dc11dd 100644 --- a/include/entity.h +++ b/include/entity.h @@ -153,6 +153,23 @@ typedef struct Entity { } Entity; -#define COORD_TO_TILE(entity) ((((entity->x.HALF.HI - gRoomControls.roomOriginX) >> 4) & 0x3fU) | (((entity->y.HALF.HI - gRoomControls.roomOriginY) >> 4) & 0x3fU) << 6) +#define COORD_TO_TILE(entity) \ + ((((entity->x.HALF.HI - gRoomControls.roomOriginX) >> 4) & 0x3fU) | \ + (((entity->y.HALF.HI - gRoomControls.roomOriginY) >> 4) & 0x3fU) << 6) + +extern void InitializeAnimation(Entity*, u32); +extern void InitAnimationForceUpdate(Entity*, u32); +extern void UpdateAnimationSingleFrame(Entity*); +extern void UpdateSpriteOrderAndFlip(Entity*); +extern void GetNextFrame(Entity*); +extern u32 LoadExtraSpriteData(Entity*, SpriteLoadData*); +extern void SetExtraSpriteFrame(Entity*, u32, u32); +extern void SetSpriteSubEntryOffsetData1(Entity*, u32, u32); + +extern Entity* CreateEnemy(u32 subtype, u32 form); +extern Entity* CreateObject(u32 subtype, u32 form, u32 parameter); +extern Entity* CreateNPC(u32 subtype, u32 form, u32 parameter); +extern Entity* CreateObjectWithParent(Entity* parent, u32 subtype, u32 form, u32 parameter); +extern Entity* CreateFx(Entity* parent, u32 form, u32 parameter); #endif diff --git a/include/functions.h b/include/functions.h index 454b8480..c715694d 100644 --- a/include/functions.h +++ b/include/functions.h @@ -9,28 +9,19 @@ // Identified - to be sorted into header files extern u32 Random(void); extern void PlaySFX(u32); -extern void UpdateSpriteOrderAndFlip(Entity*); -extern void InitAnimationForceUpdate(Entity*, u32); extern void ShowNPCDialogue(Entity*, u32*); extern u32 UpdateFuseInteraction(); -extern void InitializeAnimation(Entity*, u32); extern void DeleteEntity(Entity*); extern u32 __modsi3(u32, u32); extern void DoFade(u32, u32); -extern void UpdateAnimationSingleFrame(Entity*); extern u32 GetInventoryValue(u32); -extern Entity* CreateFx(Entity*, u32, u32); extern u32 CheckKinstoneFused(u32); extern void ForceEquipItem(u8, u8); extern void LoadRoomEntityList(); -void ModHealth(s32); void CopyPosition(Entity*, Entity*); extern u32* StartCutscene(Entity*, u8*); -extern void GetNextFrame(Entity*); -extern u32 LoadExtraSpriteData(Entity*, u32*); extern void ResolveEntityOnTop(Entity*, Entity*); -extern void SetExtraSpriteFrame(Entity*, u32, u32); -extern void SetSpriteSubEntryOffsetData1(Entity*, u32, u32); + // Unidentified extern void sub_0806ED78(Entity*); diff --git a/include/link.h b/include/link.h index 8ec7259d..f6ce96be 100644 --- a/include/link.h +++ b/include/link.h @@ -76,4 +76,8 @@ extern LinkState gLinkState; extern Stats gStats; extern Entity gLinkEntity; + +extern u32 GetInventoryValue(u32); +extern s32 ModHealth(s32); + #endif \ No newline at end of file diff --git a/include/npc.h b/include/npc.h index 32b575c9..b1a7c2b5 100644 --- a/include/npc.h +++ b/include/npc.h @@ -4,12 +4,6 @@ #ifndef NPC_H #define NPC_H -typedef struct { - u16 palette; - u8 animIndex; - u8 unk; -} SpriteLoadData; - extern void Gentari(Entity*); extern void Gentari_Fusion(Entity*); extern void Festari(Entity*); @@ -175,4 +169,7 @@ extern void Phonograph(Entity*); extern void NPC58(Entity*); extern void NPC58_Head(Entity*); + +extern u32 UpdateFuseInteraction(Entity*); + #endif \ No newline at end of file diff --git a/include/room.h b/include/room.h index 7a55d58c..ccde88c8 100644 --- a/include/room.h +++ b/include/room.h @@ -60,4 +60,7 @@ typedef struct { extern RoomControls gRoomControls; extern RoomVars gRoomVars; + +extern void SetTileType(u32, u32, u32); + #endif \ No newline at end of file diff --git a/include/sprite.h b/include/sprite.h index 2132d98d..7d2507d7 100644 --- a/include/sprite.h +++ b/include/sprite.h @@ -2,6 +2,7 @@ #define SPRITE_H #include "global.h" +#include "entity.h" typedef struct { u8 index; @@ -28,4 +29,11 @@ typedef struct { u8 numGfxTiles; u16 gfxTileIndex; } FrameGfxData; + +typedef struct { + u16 palette; + u8 animIndex; + u8 unk; +} SpriteLoadData; + #endif \ No newline at end of file diff --git a/linker.ld b/linker.ld index 9b77642b..7586253b 100644 --- a/linker.ld +++ b/linker.ld @@ -450,7 +450,7 @@ SECTIONS { asm/initializeLink.o(.text); src/sub_08052620.o(.text); src/sub_08052638.o(.text); - src/bitGetters.o(.text); + src/area.o(.text); src/modHealth.o(.text); src/modRupees.o(.text); asm/code_080526F8.o(.text); diff --git a/src/archway.c b/src/archway.c index 4596b42c..af72be33 100644 --- a/src/archway.c +++ b/src/archway.c @@ -1,7 +1,7 @@ #include "global.h" #include "entity.h" +#include "sprite.h" -extern void UpdateSpriteOrderAndFlip(); extern u32 CheckIsDungeon(); void Archway(Entity *this) diff --git a/src/bitGetters.c b/src/area.c similarity index 100% rename from src/bitGetters.c rename to src/area.c diff --git a/src/bell.c b/src/bell.c index 5b21eaee..467a6977 100644 --- a/src/bell.c +++ b/src/bell.c @@ -1,12 +1,8 @@ #include "entity.h" #include "global.h" -extern void UpdateAnimationSingleFrame(); extern void (*gUnk_08123384[])(Entity*); -extern void UpdateSpriteOrderAndFlip(Entity*); -extern void InitAnimationForceUpdate(); - void Bell(Entity* ent) { gUnk_08123384[ent->action](ent); } diff --git a/src/bigGoron.c b/src/bigGoron.c index 28405514..0d6b9f3f 100644 --- a/src/bigGoron.c +++ b/src/bigGoron.c @@ -1,10 +1,10 @@ #include "global.h" #include "entity.h" +#include "link.h" extern void (*gUnk_081140D4[])(Entity*); extern u16 gUnk_081140CC[]; -extern Entity gLinkEntity; extern u32 gUnk_030010A0; extern void sub_0805E3A0(Entity*, u32); extern void sub_0806D0B0(Entity*); diff --git a/src/bladeBrothers.c b/src/bladeBrothers.c index 69a981f0..361eea9b 100644 --- a/src/bladeBrothers.c +++ b/src/bladeBrothers.c @@ -22,7 +22,6 @@ extern void (*gUnk_081115D0[])(Entity*); extern struct_030010A0 gUnk_030010A0; extern u16 gUnk_081115DC[]; -extern Entity gLinkEntity; extern u8 gUnk_08111618[]; extern u32* gUnk_081115EC[]; extern struct_02002A40 gUnk_02002A40; diff --git a/src/bombPeahat.c b/src/bombPeahat.c index b5dda939..3921737a 100644 --- a/src/bombPeahat.c +++ b/src/bombPeahat.c @@ -7,7 +7,6 @@ extern s32 sub_080012DC(Entity*); extern u32 GetNextFunction(Entity*); extern void sub_0802AD54(Entity*); extern void sub_0802B048(Entity*); -extern void InitializeAnimation(Entity*, u32); extern void sub_0806F4E8(Entity*); extern void sub_0806F3E4(Entity*); diff --git a/src/chestSpawner.c b/src/chestSpawner.c index ac50a692..b3dcfb4a 100644 --- a/src/chestSpawner.c +++ b/src/chestSpawner.c @@ -1,11 +1,9 @@ #include "global.h" #include "entity.h" +#include "flags.h" extern void sub_080842D8(Entity*); extern void sub_08078828(Entity*); -extern u32 CheckLocalFlag(u32); -extern void InitializeAnimation(Entity*, u32); -extern u32 CheckFlags(u32); extern void sub_08083E20(Entity*); extern void (*const gUnk_0811F7E8[])(Entity*); diff --git a/src/cloud.c b/src/cloud.c index 297fbbc5..6701cf13 100644 --- a/src/cloud.c +++ b/src/cloud.c @@ -2,18 +2,17 @@ #include "entity.h" #include "room.h" #include "link.h" +#include "flags.h" extern void sub_0809F7BC(Entity*); extern void PlaySFX(u32); extern void sub_0809F814(u32); extern void sub_0809F7F4(Entity*); -extern void SetGlobalFlag(u32); extern void LoadRoomEntityList(); extern void DeleteThisEntity(); extern u32 CheckRoomFlag(u32); extern void sub_08078A90(u32); extern void sub_08078B48(void); -extern u32 SetLocalFlag(u32); extern u32 Random(void); extern void sub_0806F69C(Entity*); extern void (*gUnk_08124798[])(Entity*); diff --git a/src/cow.c b/src/cow.c index 9a1ebba3..7422bd28 100644 --- a/src/cow.c +++ b/src/cow.c @@ -4,7 +4,6 @@ extern void sub_0806ED78(Entity*); extern void sub_0806920C(Entity*); -extern void UpdateAnimationSingleFrame(Entity*); extern u32 sub_0805ACC0(Entity*); extern u32 sub_0801E99C(Entity*); extern void sub_0806924C(Entity*); @@ -17,7 +16,6 @@ extern void sub_080791D0(); extern void (*gUnk_08111914[])(Entity*); extern void (*gUnk_08111928[])(Entity*); extern u32 gUnk_08111938[]; -extern void InitAnimationForceUpdate(); extern void PlaySFX(u32); extern u32 Random(); extern u32 UpdateFuseInteraction(Entity*); diff --git a/src/createEnemy.c b/src/createEnemy.c index 7dc492ff..6090da14 100644 --- a/src/createEnemy.c +++ b/src/createEnemy.c @@ -4,14 +4,14 @@ extern Entity* GetEmptyEntity(); extern void sub_0805EA2C(Entity*, u8); -Entity* CreateEnemy(u32 subtype, u32 param1) { +Entity* CreateEnemy(u32 subtype, u32 form) { Entity* enemy; enemy = GetEmptyEntity(); if (enemy != NULL) { (enemy->entityType).type = 3; (enemy->entityType).subtype = subtype; - (enemy->entityType).form = param1; + (enemy->entityType).form = form; sub_0805EA2C(enemy, 4); } return enemy; diff --git a/src/createEntity.c b/src/createEntity.c index 1119b4b7..9d597c4c 100644 --- a/src/createEntity.c +++ b/src/createEntity.c @@ -29,7 +29,6 @@ // sub_0804AEB0(entity,param_1); // if ((param_1->field_0x1 & 240) != 16) { // (entity->entityType).parameter = *(u8 *)¶m_1->entityparameter; -// /* i suspect this is where the entity's behavior is defined. Not sure. */ // entity->actionDelay = (u8)((u32)param_1->entityparameter >> 8); // if ((type != 9) && (sub_0804AF0C(entity,param_1), entity->field_0x4 != NULL)) { // if ((param_1->entityType & 16) == 0) { diff --git a/src/dampe.c b/src/dampe.c index 511acd19..983b030a 100644 --- a/src/dampe.c +++ b/src/dampe.c @@ -2,23 +2,19 @@ #include "entity.h" #include "link.h" #include "room.h" +#include "flags.h" +#include "sprite.h" +#include "textbox.h" +#include "npc.h" extern void sub_0805E3A0(Entity*, u32); extern void sub_0807DD50(Entity*); extern void sub_080045C4(Entity*, Entity*); -extern void InitAnimationForceUpdate(Entity*, u32); extern u32 sub_0806F5A4(void); extern void sub_0806F118(Entity*); extern void sub_0807DD94(Entity*, u32); -extern void UpdateAnimationSingleFrame(Entity*); -extern u32 UpdateFuseInteraction(Entity*); extern u32 sub_0801E99C(void); extern void sub_08078784(Entity*, u32); -extern u32 CheckLocalFlag(u32); -extern void SetLocalFlag(u32); -extern u32 GetInventoryValue(u32); -extern void TextboxNoOverlap(u16, Entity*); -extern void SetTileType(u32, u32, u32); extern u16 gUnk_08113344[]; extern u16 gUnk_0811334A[]; @@ -57,76 +53,66 @@ void Dampe(Entity* this) { } } -void sub_0806BE3C(Entity *this) -{ - this->field_0x68 = sub_0801E99C(); - sub_08078784(this, this->field_0x68); +void sub_0806BE3C(Entity* this) { + this->field_0x68 = sub_0801E99C(); + sub_08078784(this, this->field_0x68); } -void Dampe_Fusion(Entity *this) -{ - if (this->action == 0) { - this->action++; - this->spriteSettings.b.ss0 = 1; - InitAnimationForceUpdate(this, 2); - } - else { - UpdateAnimationSingleFrame(this); - } -} - -void sub_0806BE84(Entity *this, struct_0806BE84* r1) -{ - u32 iVar3; - - r1->unk = 0; - iVar3 = 1; - if (!CheckLocalFlag(0x69)) { - iVar3 = 0; - SetLocalFlag(0x69); - r1->unk = 1; - } - // Graveyard key - if (2 <= GetInventoryValue(0x3C)) { - iVar3 = 2; - } - TextboxNoOverlap(gUnk_08113344[iVar3], this); -} - -void sub_0806BEC8(Entity *this, struct_0806BE84* r1) -{ - u32 uVar1; - u32 iVar2; - - iVar2 = 0; - r1->unk = 0; - uVar1 = GetInventoryValue(0x3C); - if (uVar1 == 1) { - iVar2 = 1; - r1->unk = 1; - } - else { - if (1 < uVar1) { - iVar2 = 2; +void Dampe_Fusion(Entity* this) { + if (this->action == 0) { + this->action++; + this->spriteSettings.b.ss0 = 1; + InitAnimationForceUpdate(this, 2); + } else { + UpdateAnimationSingleFrame(this); } - } - - TextboxNoOverlap(gUnk_0811334A[iVar2], this); } -void sub_0806BEFC(void) -{ - SetTileType(0x17E, 0x58E, 1); - SetTileType(0x17F, 0x58F, 1); - SetTileType(0x180, 0x5cE, 1); - SetTileType(0x181, 0x5cF, 1); +void sub_0806BE84(Entity* this, struct_0806BE84* r1) { + u32 msgIndex; + + r1->unk = 0; + msgIndex = 1; + if (!CheckLocalFlag(0x69)) { + msgIndex = 0; + SetLocalFlag(0x69); + r1->unk = 1; + } + // Graveyard key + if (GetInventoryValue(0x3C) >= 2) { + msgIndex = 2; + } + TextboxNoOverlap(gUnk_08113344[msgIndex], this); } -void sub_0806BF44(Entity *this, struct_0806BE84 *r1) -{ - r1->unk = 0; - if (((this->x.HALF.HI - gRoomControls.roomScrollX) + 0x10U < 0x110) && - ((this->y.HALF.HI - gRoomControls.roomScrollY) + 0x18U < 0xd0)) { - r1->unk = 1; - } +void sub_0806BEC8(Entity* this, struct_0806BE84* r1) { + u32 hasGraveyardKey; + u32 msgIndex; + + msgIndex = 0; + r1->unk = 0; + hasGraveyardKey = GetInventoryValue(0x3C); + if (hasGraveyardKey == 1) { + msgIndex = 1; + r1->unk = 1; + } else if (hasGraveyardKey >= 2) { + msgIndex = 2; + } + + TextboxNoOverlap(gUnk_0811334A[msgIndex], this); +} + +void sub_0806BEFC() { + SetTileType(0x17E, 0x58E, 1); + SetTileType(0x17F, 0x58F, 1); + SetTileType(0x180, 0x5CE, 1); + SetTileType(0x181, 0x5CF, 1); +} + +void sub_0806BF44(Entity* this, struct_0806BE84* r1) { + r1->unk = 0; + if (((this->x.HALF.HI - gRoomControls.roomScrollX) + 0x10U < 0x110) && + ((this->y.HALF.HI - gRoomControls.roomScrollY) + 0x18U < 0xD0)) { + r1->unk = 1; + } } diff --git a/src/hangingSeed.c b/src/hangingSeed.c index 35653f43..ab302f19 100644 --- a/src/hangingSeed.c +++ b/src/hangingSeed.c @@ -2,7 +2,6 @@ #include "entity.h" extern void EnemyFunctionHandler(Entity*, void (*const funcs[])(Entity*)); -extern void CreateFx(Entity*, u32, u32); extern void DeleteThisEntity(); extern void (*const gUnk_080CB570[])(Entity*); diff --git a/src/heartContainer.c b/src/heartContainer.c index 643b87dd..04df84e9 100644 --- a/src/heartContainer.c +++ b/src/heartContainer.c @@ -1,7 +1,7 @@ #include "global.h" #include "entity.h" +#include "flags.h" -extern u32 CheckFlags(u32); extern void DeleteThisEntity(); extern void sub_0808E714(Entity*); diff --git a/src/keese.c b/src/keese.c index a000ab80..953f5b02 100644 --- a/src/keese.c +++ b/src/keese.c @@ -10,13 +10,10 @@ extern u32 sub_0806F3E4(Entity*); extern void sub_0804A7D4(Entity*); extern void sub_0804A720(Entity*); extern u32 Random(); -extern void UpdateSpriteOrderAndFlip(Entity*); extern void sub_08021EF0(Entity*); -extern void GetNextFrame(Entity*); extern void sub_080AEFB4(Entity*); extern void sub_08021F24(Entity*); extern u32 sub_0806FCB8(Entity*, s32, s32, u32); -extern void InitializeAnimation(Entity*, u32); extern void (*gUnk_080CB69C[])(Entity*); extern void (*gUnk_080CB6B4[])(Entity*); diff --git a/src/lakituCloud.c b/src/lakituCloud.c index ab3e36cc..5b5f9fff 100644 --- a/src/lakituCloud.c +++ b/src/lakituCloud.c @@ -1,13 +1,8 @@ #include "global.h" #include "entity.h" +#include "link.h" -extern Entity gLinkEntity; - -extern void UpdateAnimationSingleFrame(Entity *); -extern void InitAnimationForceUpdate(Entity *, s32); extern u32 GetNextFunction(Entity *); -extern void ModHealth(s32); -extern void CreateFx(Entity *, u16, u16); extern void (* const gUnk_080D0418[])(Entity *); extern void (* const gUnk_080D0430[])(Entity *); diff --git a/src/mailbox.c b/src/mailbox.c index c744cc4e..1aca5a34 100644 --- a/src/mailbox.c +++ b/src/mailbox.c @@ -1,12 +1,9 @@ #include "global.h" #include "entity.h" +#include "textbox.h" extern void sub_0806ED78(Entity*); -extern void InitAnimationForceUpdate(); extern void sub_08063280(); -extern void TextboxNoOverlapFollow(u32); -extern void UpdateAnimationSingleFrame(); -extern void CreateFx(); extern void (*gMailboxBehaviors[4])(Entity*); @@ -34,7 +31,7 @@ void sub_08063220(Entity* this) { } if (this->animIndex != bVar1) { - InitAnimationForceUpdate(this); + InitAnimationForceUpdate(this, bVar1); } else { sub_08063280(this, bVar1); } @@ -57,7 +54,7 @@ void sub_08063280(Entity* this, u32 unused) { u8 var; // r2@1 e = this; - UpdateAnimationSingleFrame(); + UpdateAnimationSingleFrame(e); var = e->frames.all & 0x7F; e->frames.all ^= var; if (var == 2) CreateFx(e, 49, 0); diff --git a/src/mask.c b/src/mask.c index bb867761..0d8712bb 100644 --- a/src/mask.c +++ b/src/mask.c @@ -16,8 +16,6 @@ extern void ClearFlag(u16); extern void SetTile(u32, u16, u32); -extern void CreateFx(Entity *, u16, u16); - extern void sub_08000148(u16, u16, u32); extern s16 sub_080001DA(u16, u32); extern u16 sub_080002E0(u16, u32); diff --git a/src/milkCart.c b/src/milkCart.c index 2c1bc52f..2e91ebf7 100644 --- a/src/milkCart.c +++ b/src/milkCart.c @@ -1,10 +1,7 @@ #include "global.h" #include "entity.h" -extern void _call_via_r1(Entity*, u32); extern void sub_0806ED78(); -extern void InitAnimationForceUpdate(); -extern void UpdateAnimationSingleFrame(); extern void (*gMilkCartBehaviors[2])(Entity*); @@ -16,7 +13,7 @@ void MilkCart(Entity* ent) { void sub_08065B6C(Entity* ent) { ent->action++; ent->spriteSettings.b.ss0 = 1; - (ent->y).HALF.LO += -0x8000; + ent->y.HALF.LO += -0x8000; ent->animationState = 6; InitAnimationForceUpdate(ent, 3); } diff --git a/src/miniFireballGuy.c b/src/miniFireballGuy.c index bb9ea593..e8c2744a 100644 --- a/src/miniFireballGuy.c +++ b/src/miniFireballGuy.c @@ -5,10 +5,8 @@ extern void EnemyFunctionHandler(Entity*, void (*const func[])(Entity*)); extern void sub_0804AA30(Entity*, void (*const func[][])(Entity*)); extern void sub_0804A7D4(Entity*); extern void sub_0804A720(Entity*); -extern void InitializeAnimation(Entity*, u32); extern void sub_08045678(Entity*); extern void sub_080AEFE0(void); -extern void GetNextFrame(Entity*); extern u32 sub_08003FC4(Entity*, u32); extern void sub_08045678(Entity*); diff --git a/src/object1A.c b/src/object1A.c index 2cb9d9ff..54da11a9 100644 --- a/src/object1A.c +++ b/src/object1A.c @@ -1,7 +1,6 @@ #include "global.h" #include "entity.h" -extern Entity* CreateObject(); extern void CopyPosition(); extern void sub_08086A6C(); extern s32 sub_080044EC(); diff --git a/src/octorok.c b/src/octorok.c index 5c66b098..ff699ec0 100644 --- a/src/octorok.c +++ b/src/octorok.c @@ -9,14 +9,12 @@ extern void sub_0804A7D4(); extern void CreateDeathFx(); extern void sub_0801ECFC(); extern u32 sub_0806F520(); -extern void InitializeAnimation(); extern void sub_0806F4E8(); extern void sub_0806F3E4(); extern void InitializeAnimationAnimation(); extern void sub_0804A720(); extern u32 Random(); extern void sub_0801ED14(); -extern void GetNextFrame(); extern void(*gOctorok[2]); extern void (*gOctorokIdle[4])(Entity*); diff --git a/src/rem.c b/src/rem.c index 8e3fe38f..2edd917e 100644 --- a/src/rem.c +++ b/src/rem.c @@ -4,7 +4,6 @@ extern void sub_0807DDAC(Entity*, u32); extern void sub_0807DDE4(Entity*); -extern void UpdateAnimationSingleFrame(Entity*); extern void sub_0806ED78(Entity*); extern void PlaySFX(u32); extern void sub_0805E3A0(Entity*, u32); diff --git a/src/simon.c b/src/simon.c index 45046de5..4e01af67 100644 --- a/src/simon.c +++ b/src/simon.c @@ -16,7 +16,6 @@ typedef struct { extern void DoExitTransition(void *); extern void SetTileType(u32, u32, u32); -extern void CreateObjectWithParent(Entity*, u32, u32, u32); extern void DoExitTransition(void *); extern void DoFade(u32, u32); diff --git a/src/slime.c b/src/slime.c index 3738038f..3f2fdd4d 100644 --- a/src/slime.c +++ b/src/slime.c @@ -12,15 +12,12 @@ extern void SetChildOffset(Entity*, u32, u32, u32); extern void sub_0804AA30(Entity*, void*); extern void sub_0804A9FC(Entity*, u32); extern void sub_0804A720(Entity*); -extern void InitializeAnimation(Entity*, u32); extern void sub_08044FF8(Entity*); extern u32 Random(void); -extern void GetNextFrame(Entity*); extern u32 sub_0806FA04(u32, u32); extern u32 sub_08049FA0(Entity*); extern u32 sub_08049EE4(Entity*); extern u32 sub_080AEF88(void); -extern Entity* CreateEnemy(u32, u32); extern void (*gUnk_080D16BC[])(Entity*); extern void (*gUnk_080D16A4[])(Entity*); diff --git a/src/smallPesto.c b/src/smallPesto.c index 5069510c..c29fe80c 100644 --- a/src/smallPesto.c +++ b/src/smallPesto.c @@ -2,7 +2,6 @@ #include "entity.h" extern u32 GetNextFunction(Entity*); -extern u32 GetNextFrame(Entity*); extern u32 sub_0806F520(Entity*); extern void sub_0806F4E8(Entity*); extern u32 sub_0806F3E4(); diff --git a/src/stamp.c b/src/stamp.c index 656fb838..1ee9476b 100644 --- a/src/stamp.c +++ b/src/stamp.c @@ -2,15 +2,11 @@ #include "entity.h" #include "textbox.h" -extern void InitializeAnimation(Entity*, u32); extern void sub_08078778(Entity*); extern void sub_0805E47C(Entity*); -extern void GetNextFrame(Entity*); extern void sub_0806ED78(Entity*); -extern void TextboxNoOverlapFollow(u32); extern void sub_0805E584(); extern void sub_0807DD64(); -extern void CreateFx(); extern void sub_08062CA4(); extern void sub_0807DDAC(); extern void sub_0807DDE4(); @@ -20,29 +16,9 @@ extern void ShowNPCDialogue(); extern void (*gStampBehaviors1[4])(Entity*); extern void (*gStampBehaviors2[2])(Entity*); -extern TextBox gTextBox; extern u32 gUnk_0810C2E4; -extern void InitializeAnimation(Entity*, u32); -extern void sub_08078778(Entity*); -extern void sub_0805E47C(Entity*); -extern void GetNextFrame(Entity*); -extern void sub_0806ED78(Entity*); -extern void TextboxNoOverlapFollow(u32); -extern void sub_0805E584(); -extern void sub_0807DD64(); -extern void CreateFx(); -extern void sub_08062CA4(); -extern void sub_0807DDAC(); -extern void sub_0807DDE4(); -extern u32 CheckKinstoneFused(); -extern void ShowNPCDialogue(); -extern void (*gStampBehaviors1[4])(Entity*); -extern void (*gStampBehaviors2[2])(Entity*); - -extern TextBox gTextBox; -extern u32 gUnk_0810C2E4; void Stamp(Entity* ent) { if ((ent->flags & 2) != 0) { diff --git a/src/syrup.c b/src/syrup.c index 4f0badb4..341c60c8 100644 --- a/src/syrup.c +++ b/src/syrup.c @@ -4,10 +4,8 @@ extern void sub_0807DD50(Entity*); -extern Entity* LoadExtraSpriteData(Entity*, SpriteLoadData*); extern void sub_0806ED78(Entity*); extern void sub_0805E3A0(Entity*, u32); -extern void InitializeAnimation(Entity*, u32); extern void (*gUnk_081121D4[])(Entity*); @@ -26,7 +24,7 @@ void Syrup(Entity *this) void sub_0806A1F8(Entity *this) { - Entity *iVar1; + u32 iVar1; SpriteLoadData *paVar2; (this->entityType).form == 0 ? (paVar2 = &gUnk_081121B4) : (paVar2 = &gUnk_081121C4); diff --git a/src/talon.c b/src/talon.c index 49b7de77..ab9d0b92 100644 --- a/src/talon.c +++ b/src/talon.c @@ -4,11 +4,9 @@ #include "functions.h" #include "link.h" -extern Entity gLinkEntity; - extern void (*gUnk_0810FEC4[])(Entity* this); extern void (*gUnk_0810FEBC[])(Entity* this); -extern u32 gUnk_0810FEB0; +extern SpriteLoadData gUnk_0810FEB0; extern u8 gUnk_0800B41C; extern u8 gUnk_0810FED8[]; diff --git a/src/textbox.c b/src/textbox.c index 1ec017d8..b8b82940 100644 --- a/src/textbox.c +++ b/src/textbox.c @@ -7,8 +7,6 @@ void sub_0801D630(); void ShowTextbox(); void TextboxAtPosition(); -extern TextBox gTextBox; -extern RoomControls gRoomControls; extern u32 gUnk_02022780; extern u32 gUnk_02036A40; extern u32 gUnk_02036A38; diff --git a/src/well.c b/src/well.c index fa387763..9efcd750 100644 --- a/src/well.c +++ b/src/well.c @@ -1,14 +1,13 @@ #include "global.h" #include "entity.h" #include "room.h" +#include "link.h" void SetTile(u32 tileIndex, s32 tilePosition, s32 layerIndex); s32 GetTileType(s32 tilePosition, s32 layerIndex); void sub_08078B48(); void DeleteThisEntity(); -extern Entity gLinkEntity; -extern RoomControls gRoomControls; extern void (*gUnk_08124C08[])(Entity*); void Well(Entity* ent) { diff --git a/src/windTribespeople.c b/src/windTribespeople.c index 9f176c47..01d243cd 100644 --- a/src/windTribespeople.c +++ b/src/windTribespeople.c @@ -2,6 +2,7 @@ #include "entity.h" #include "npc.h" #include "textbox.h" +#include "flags.h" typedef struct { u8 filler[8]; @@ -14,19 +15,13 @@ extern void sub_0806C7D4(Entity*); extern void sub_0806F118(Entity*); extern void sub_0807DD94(Entity*, u32); extern void sub_0807DD80(Entity*, u32*); -extern u32 CheckGlobalFlag(u32); -extern u32 CheckLocalFlag(u32); -extern u32 CheckRoomFlag(u32); extern u32 sub_0801E99C(); -extern void InitializeAnimation(Entity*, u32); -extern u32 UpdateFuseInteraction(); extern void sub_08078784(Entity*, u32); extern void SetExtraSpriteFrame(Entity*, u32, u32); extern void SetSpriteSubEntryOffsetData2(Entity*, u32, u32); extern void SetSpriteSubEntryOffsetData1(Entity*, u32, u32); extern void sub_0807000C(Entity*); extern void ShowNPCDialogue(Entity*, u16*); -extern void TextboxNoOverlap(u32, Entity*); extern void (*const gUnk_08113A7C[])(Entity*); extern void (*const gUnk_08113A8C[])(Entity*, Entity*); @@ -80,7 +75,7 @@ void sub_0806C834(Entity* this) { } void sub_0806C85C(Entity* this) { - if (UpdateFuseInteraction() != 0) { + if (UpdateFuseInteraction(this) != 0) { this->action = 1; } } diff --git a/src/zelda.c b/src/zelda.c index 10cc79cc..a11e244b 100644 --- a/src/zelda.c +++ b/src/zelda.c @@ -1,6 +1,7 @@ #include "global.h" #include "entity.h" #include "room.h" +#include "flags.h" extern void sub_0805EA78(Entity*, u32); extern void sub_0805E3A0(Entity*, u32); @@ -10,14 +11,10 @@ extern Entity* sub_0805EB9C(u32, u32); void CopyPosition(Entity*, Entity*); void sub_08068680(Entity*, Entity*); void sub_08068694(Entity*, Entity*); -extern void SetGlobalFlag(u32); -extern Entity* CreateNPC(u32 subtype, u32 form, u32 parameter); u32 sub_0806EDC4(Entity* ent); void DeleteThisEntity(void); extern Entity* GetEntityByType(u32, u32); extern void sub_080686C4(Entity*, Entity*); -extern void InitAnimationForceUpdate(Entity*, u32); -extern void UpdateAnimationSingleFrame(Entity*); extern void sub_0806F62C(Entity*, u32, u32); extern u32 sub_08003FC4(Entity*, u32); extern void PlaySFX(u32);