summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authortheo3 <arisstephenson2@gmail.com>2021-12-20 02:02:33 -0800
committertheo3 <arisstephenson2@gmail.com>2021-12-20 10:31:02 -0800
commit6cff332e57b5cc723d9243c2d4667be7c7ca0273 (patch)
treeabfb5dfbbf116cef3f6776df3e242fe37ee0fc8e /include
parent0d5eae8696a70323c0712233913d73ee67823ca4 (diff)
header overhaul
Diffstat (limited to 'include')
-rw-r--r--include/arm_proxy.h6
-rw-r--r--include/asm.h25
-rw-r--r--include/audio.h44
-rw-r--r--include/coord.h4
-rw-r--r--include/cutscene.h16
-rw-r--r--include/enemy.h16
-rw-r--r--include/entity.h13
-rw-r--r--include/fade.h18
-rw-r--r--include/fileScreen.h1
-rw-r--r--include/functions.h72
-rw-r--r--include/game.h8
-rw-r--r--include/greatFairy.h29
-rw-r--r--include/interrupts.h6
-rw-r--r--include/main.h1
-rw-r--r--include/manager.h11
-rw-r--r--include/npc.h47
-rw-r--r--include/object.h17
-rw-r--r--include/overworld.h63
-rw-r--r--include/random.h10
-rw-r--r--include/room.h3
-rw-r--r--include/screen.h1
-rw-r--r--include/utils.h6
22 files changed, 238 insertions, 179 deletions
diff --git a/include/arm_proxy.h b/include/arm_proxy.h
deleted file mode 100644
index 9364ebf0..00000000
--- a/include/arm_proxy.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef ARM_PROXY_H
-#define ARM_PROXY_H
-
-extern void WaitForNextFrame(void);
-
-#endif
diff --git a/include/asm.h b/include/asm.h
new file mode 100644
index 00000000..cd151320
--- /dev/null
+++ b/include/asm.h
@@ -0,0 +1,25 @@
+#ifndef ASM_H
+#define ASM_H
+
+#include "global.h"
+
+struct Entity_;
+
+extern u32 Random(void);
+extern void sub_08000152(u32);
+extern void SetTile(u32 index, u32 position, u32 layer);
+extern void sub_08001242(struct Entity_*);
+extern void sub_08001290(struct Entity_*, u32);
+extern void sub_08001324(struct Entity_*);
+extern u32 sub_08002632(struct Entity_*);
+extern u32 sub_08003FC4(struct Entity_*, u32);
+extern u32 sub_080043E8(struct Entity_*);
+extern void sub_08004484(struct Entity_*, struct Entity_*);
+extern u32 sub_080045D4(s16, s16, u32, u32);
+extern u32 sub_080045DA(s32, s32);
+extern void sub_08004596(struct Entity_*, u32);
+extern u32 sub_080045B4(struct Entity_*, u32, u32);
+extern u32 EntityInRectRadius(struct Entity_*, struct Entity_*, u32, u32);
+extern void UpdateAnimationVariableFrames(struct Entity_*, u32);
+
+#endif // ASM_H
diff --git a/include/audio.h b/include/audio.h
index 2add23dd..e5e4c0e4 100644
--- a/include/audio.h
+++ b/include/audio.h
@@ -5,6 +5,29 @@
#define NUM_BGM 99
+void SoundReq(u32 sound);
+extern void EnqueueSFX(u32);
+
+void InitSound(void);
+void InitSoundPlayingInfo(void);
+void AudioMain(void);
+
+typedef struct SoundPlayingInfo {
+ u16 unk_00;
+ bool8 stopBgm;
+ // u8 unk_03;
+ u16 unk_04;
+ s16 volumeMasterUnk;
+ s16 volumeMaster;
+ s16 volumeMasterTarget;
+ s16 volumeBgmUnk;
+ s16 volumeBgm;
+ s16 volumeBgmTarget;
+ s16 volumeSfx;
+ u16 currentBgm;
+} SoundPlayingInfo;
+extern SoundPlayingInfo gSoundPlayingInfo;
+
typedef enum {
SFX_NONE,
// BGM
@@ -574,25 +597,4 @@ typedef enum {
SONG_BGM_0 = 0x80110000,
} Sound;
-typedef struct SoundPlayingInfo {
- u16 unk_00;
- bool8 stopBgm;
- // u8 unk_03;
- u16 unk_04;
- s16 volumeMasterUnk;
- s16 volumeMaster;
- s16 volumeMasterTarget;
- s16 volumeBgmUnk;
- s16 volumeBgm;
- s16 volumeBgmTarget;
- s16 volumeSfx;
- u16 currentBgm;
-} SoundPlayingInfo;
-
-extern SoundPlayingInfo gSoundPlayingInfo;
-
-void InitSound(void);
-void SoundReq(Sound sound);
-void AudioMain(void);
-
#endif // AUDIO_H
diff --git a/include/coord.h b/include/coord.h
index 52dcf210..4b6556e6 100644
--- a/include/coord.h
+++ b/include/coord.h
@@ -15,6 +15,10 @@ void sub_0806FA90(Entity*, Entity*, s32, s32);
void ResolveEntityOnTop(Entity*, Entity*);
void ResolveEntityBelow(Entity*, Entity*);
+u32 sub_0806F5A4(u32 idx);
+u32 sub_0806F3E4(Entity*);
+void sub_0806F69C(Entity*);
+
extern const s16 gSineTable[64];
extern const s16 gCosineTable[256];
diff --git a/include/cutscene.h b/include/cutscene.h
deleted file mode 100644
index 72d44fef..00000000
--- a/include/cutscene.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef CUTSCENE_H
-#define CUTSCENE_H
-
-#include "global.h"
-
-typedef struct {
- u32* cutsceneData;
- u8 textIndex;
- u8 filler[11];
- u16 pauseTime;
- u8 filler2[2];
- s32 targetX;
- s32 targetY;
-} CutsceneBehavior;
-
-#endif
diff --git a/include/enemy.h b/include/enemy.h
index 6b187642..8595b8f3 100644
--- a/include/enemy.h
+++ b/include/enemy.h
@@ -2,8 +2,21 @@
#define ENEMY_H
#include "global.h"
+#include "asm.h"
+
+#include "audio.h"
+#include "effects.h"
+#include "flags.h"
+#include "utils.h"
+
#include "entity.h"
+extern u32 GetNextFunction(Entity*);
+extern void EnemyFunctionHandler(Entity*, void (*const func[])(Entity*));
+extern void sub_08001324(Entity*);
+
+extern Entity* sub_0804A9FC(Entity*, u32);
+
typedef enum {
/*0x00*/ OCTOROK,
/*0x01*/ CHUCHU,
@@ -213,7 +226,4 @@ extern void Enemy64(Entity*);
extern void TreeItem(Entity*);
extern void Enemy66(Entity*);
-extern u32 GetNextFunction(Entity*);
-extern void EnemyFunctionHandler(Entity*, void (*const func[])(Entity*));
-extern void sub_08001324(Entity*);
#endif
diff --git a/include/entity.h b/include/entity.h
index 83c3a6c5..43c3b721 100644
--- a/include/entity.h
+++ b/include/entity.h
@@ -41,9 +41,9 @@ typedef struct {
u8 unknown2[3];
} Hitbox3D;
-typedef struct Entity {
- /*0x00*/ struct Entity* prev;
- /*0x04*/ struct Entity* next;
+typedef struct Entity_ {
+ /*0x00*/ struct Entity_* prev;
+ /*0x04*/ struct Entity_* next;
/*0x08*/ u8 kind;
/*0x09*/ u8 id;
/*0x0a*/ u8 type;
@@ -118,9 +118,9 @@ typedef struct Entity {
/*0x45*/ u8 health;
/*0x46*/ u16 field_0x46;
/*0x48*/ Hitbox* hitbox;
- /*0x4c*/ struct Entity* field_0x4c;
- /*0x50*/ struct Entity* parent;
- /*0x54*/ struct Entity* child;
+ /*0x4c*/ struct Entity_* field_0x4c;
+ /*0x50*/ struct Entity_* parent;
+ /*0x54*/ struct Entity_* child;
/*0x58*/ u8 animIndex;
/*0x59*/ u8 frameDuration;
/*0x5a*/ u8 frame;
@@ -275,6 +275,7 @@ Entity* FindNextDuplicateID(Entity* ent, int listIndex);
*/
Entity* FindEntity(u32 kind, u32 id, u32 listIndex, u32 type, u32 type2);
+void DeleteManager(void*);
void DeleteEntityAny(Entity* ent);
void UpdateEntities(void);
diff --git a/include/fade.h b/include/fade.h
new file mode 100644
index 00000000..7e71a435
--- /dev/null
+++ b/include/fade.h
@@ -0,0 +1,18 @@
+#ifndef FADE_H
+#define FADE_H
+
+#include "global.h"
+
+void SetBrightness(u32 arg0);
+void DoFade(u32 type, u32 speed);
+
+void sub_08050008(void);
+void sub_08050038(u32);
+void sub_080500F4(u32 arg0);
+void sub_08050110(u32 param_1, u32 param_2, u32 fadeType, u32 fadeSpeed);
+
+void InitFade(void);
+void FadeMain(void);
+void FadeVBlank(void);
+
+#endif // FADE_H
diff --git a/include/fileScreen.h b/include/fileScreen.h
index 8cf2304b..04cfa4ba 100644
--- a/include/fileScreen.h
+++ b/include/fileScreen.h
@@ -59,7 +59,6 @@ extern void sub_0805F46C(u32, void*);
extern void RecoverUI(u32 bottomPt, u32 topPt);
extern void sub_08080668(void);
extern void sub_0805194C(u32);
-extern void LoadPalettes(const u8*, int, int);
extern struct_02036540* sub_0805F2C8(void);
extern void sub_0805F7DC(u32, struct_02036540*);
extern void sub_0805F300(struct_02036540*);
diff --git a/include/functions.h b/include/functions.h
index 293f7e20..cc90e57f 100644
--- a/include/functions.h
+++ b/include/functions.h
@@ -12,21 +12,16 @@
#include "script.h"
// Identified - to be sorted into header files
-extern void ShowNPCDialogue(Entity*, Dialog*);
-extern void DoFade(u32, u32);
extern u32 CheckKinstoneFused(u32);
extern void ForceEquipItem(u32, u32);
extern void LoadRoomEntityList(EntityData* listPtr);
-extern u32 GetAnimationState(Entity*);
extern void SetChildOffset(Entity*, s32, s32, s32);
extern Entity* CreatePlayerItem(u32, u32, u32, u32);
extern u32 GetTileTypeByPos(s32 x, s32 y, u32 layer);
extern u32 GetTileType(u32 pos, u32 layer);
extern void SetTile(u32, u32, u32);
extern void SetDirtTile(u32);
-extern void LoadRoomTileEntities(); // tba
extern Entity* CreateDeathFx(Entity*, u32, u32);
-extern void UpdateAnimationVariableFrames(Entity*, u32);
extern u8* GetSpriteSubEntryOffsetDataPointer(u32, u32);
extern bool32 LoadFixedGFX(Entity*, u32);
extern void CreateItemEntity(u32, u32, u32);
@@ -35,20 +30,14 @@ extern void MenuFadeIn(u32, u32);
extern void LoadResourceAsync(const void*, u32, u32);
extern void LoadPaletteGroup(u32);
extern void TryLoadPrologueHyruleTown(void);
-extern Manager* GetEmptyManager(void);
extern void LoadGfxGroup(u32);
-extern void EnqueueSFX(u32);
extern void ResetPlayer(void);
extern u32 IsItemEquipped(u32);
-extern void DeleteManager(Manager*);
extern bool32 CheckPlayerInRegion(u32 centerX, u32 centerY, u32 radiusX, u32 radiusY);
extern Entity* CreateProjectileWithParent(Entity*, u8, u8);
-extern u32 GetBottleContaining(u32);
extern u32 GetTileTypeByEntity(Entity*);
extern u32 GetSaleItemConfirmMessageID(u32);
extern void FlushSprites(void);
-extern void DispReset(u32);
-extern void InitSoundPlayingInfo(void);
extern Entity* CreateProjectile(u32);
extern void RegisterPlayerHitbox();
extern s32 GetItemPrice();
@@ -58,41 +47,22 @@ extern void PutItemOnSlot(u32 itemID);
extern Entity* CreateSpeechBubbleQuestionMark(Entity*, s32, s32);
extern Entity* CreateSpeechBubbleExclamationMark(Entity*, s32, s32);
extern Entity* CreateSpeechBubbleSleep(Entity*, s32, s32);
-extern u32 CheckPlayerProximity(u32, u32, u32, u32);
-extern void ChangeLightLevel(s32);
// Unidentified
-extern u32 sub_0806ED78(Entity*);
-extern u32 sub_0805ACC0(Entity*);
-extern u32 sub_0801E99C(Entity*);
-extern Entity* sub_080873AC(Entity*, u32, u32);
-extern void sub_08078778(Entity*);
-extern void sub_080787A8(Entity*, u32);
-extern void sub_0806F118(Entity*);
extern void sub_080791D0();
extern void sub_0805EC9C();
extern void sub_0805EC60(Entity*);
-extern u32 sub_080045D4(s16, s16, u32, u32);
-extern void sub_0806F69C(Entity*);
extern void sub_0806D0B0(Entity*);
extern void sub_0806D02C(Entity*);
-extern u32 sub_0806F5A4(u32);
-extern void sub_08078784(Entity*, u32);
-extern s32 sub_0806ED9C(Entity*, u32, u32);
-extern void sub_0807000C(Entity*);
-extern void sub_08068BEC(Entity*, u32);
-extern s32 sub_0806F078(Entity*, s32);
extern void ChangeObjPalette(Entity*, u32);
extern void sub_0806FD3C(Entity*);
extern void sub_0805ED14(u32*);
extern void sub_080A7C18(u32, u32, u32);
extern void sub_0804AA30(Entity*, void (*const funcs[])(Entity*));
-extern Entity* sub_0804A9FC(Entity*, u32);
extern void sub_0804A720(Entity*);
extern u32 sub_080AEFE0(Entity*);
extern u32 sub_08049FA0(Entity*);
extern u32 sub_08049FDC(Entity*, u32);
-extern u32 EntityInRectRadius(Entity*, Entity*, u32, u32);
extern u32 sub_08049EE4(Entity*);
extern void sub_08077E54(ItemBehavior*);
extern void sub_080042BA(Entity*, u32);
@@ -111,8 +81,6 @@ extern void sub_080575C8(u32);
extern void sub_08057688(void);
extern void sub_080580B0(u32);
extern void sub_080751E8(u32, u32, void*);
-extern void sub_08052CA4(u32, u32, u32, u32);
-extern void sub_08052878(void);
extern void sub_0808091C(ScreenTransitionData*, u32);
extern void sub_0805BC4C(void);
extern void sub_0807BB68(u32*, u32, u32);
@@ -120,7 +88,6 @@ extern void sub_08054570(void);
extern void sub_08059278(void);
extern void sub_0804C128(u32);
extern void sub_08058324(u32);
-extern void sub_0804C2F0(void);
extern void sub_0801AFE4(void);
extern u32 sub_08060354(void);
extern void sub_08057E64(void);
@@ -128,7 +95,6 @@ extern void sub_0809F814(u32);
extern void sub_080300E8(void);
extern void sub_08058D34(void);
extern void sub_0807AABC(Entity*);
-extern void UpdateGlobalProgress(void);
extern void sub_0805B4D0(u32);
extern void sub_0804D0B4(void);
extern void sub_080534AC();
@@ -137,7 +103,6 @@ extern void sub_0804D9B0();
extern void sub_0807BB98(u32, u32, u32, u32);
extern void sub_0801D000(u32);
extern void sub_08018C58(u32);
-extern void sub_0804E150(void);
extern void sub_080AF284(void);
extern void sub_080A71C4(u32, u32, u32, u32);
extern void sub_08054564();
@@ -150,7 +115,6 @@ extern s32 sub_0801CFA8(u32);
extern void sub_080ADA14(u32, u32); // trampoline to sub_080B27F4
extern void sub_0801E1B8(u32, u32);
extern void sub_0801E1EC(s32, s32, s32);
-extern void sub_08050008(void);
extern void sub_080A3B74(void);
extern void sub_080A4054(void);
extern void sub_0801C1D4(void);
@@ -161,25 +125,16 @@ extern void sub_080A4528(void);
extern void sub_080A4398(void);
extern void sub_0801E738(u32);
extern void sub_080A7114(u32);
-extern void sub_08001324(Entity*);
-extern void sub_08001242(Entity*);
-extern u32 sub_08003FC4(Entity*, u32);
-extern u32 sub_080043E8(Entity*);
-extern void sub_08001290(Entity*, u32);
-extern void sub_08004596(Entity*, u32);
-extern u32 sub_080045B4(Entity*, u32, u32);
extern u32 sub_0807953C(void);
extern void sub_080AE068(Entity*);
extern u32 sub_0800445C(Entity*);
extern void sub_0807A108(void);
extern u32 sub_0801766C(Entity*);
extern void sub_08004168(Entity*);
-extern u32 sub_08052638(u32);
extern void sub_08056208(void);
extern void sub_08050384();
extern u32 sub_0806F520();
extern void sub_0806F4E8(Entity*);
-extern u32 sub_0806F3E4(Entity*);
extern void sub_0804A7D4(Entity*);
extern void sub_08033744(Entity*);
extern void sub_0800417E(Entity*, u32);
@@ -197,10 +152,8 @@ extern void sub_08079938();
extern void sub_0807ACCC(Entity*);
extern void sub_080A2BE4(Entity*, u32);
extern u32 sub_08097ADC(Entity*);
-extern void sub_08097B24(Entity*);
extern u32 sub_08079F8C(void);
extern void sub_080787CC(Entity*);
-extern void sub_080526F8(s32);
extern u32 sub_080044EC(Entity*, u32);
extern u32 sub_080002B8(Entity*);
extern u32 sub_08049F84(Entity*, u32);
@@ -215,7 +168,6 @@ extern void sub_08080CB4(Entity*);
extern u32 sub_0800442E(Entity*);
extern void sub_08081404(Entity*, u32);
extern void sub_0807B7D8(u32, u32, u32);
-extern void RegisterTransitionManager(void*, void (*)(), void (*)());
extern void sub_0800451C(Entity*);
extern u32 sub_080002F0(u32, u32, u32);
extern u32 sub_080040D8(Entity*, u8*, s32, s32);
@@ -227,7 +179,6 @@ extern void sub_080026C4(u8*, u8*, u8*, u32);
extern void sub_080026F2(u8*, void*, u8*, u32);
extern u32 sub_0805F7A0(u32);
extern u32* sub_0805F25C(u32);
-extern u32 sub_080045DA(s32, s32);
u32 sub_0806FCB8(Entity*, u32, u32, u32);
extern void sub_080A1D70(Entity*, u32);
extern void sub_0806F62C(Entity*, u32, u32);
@@ -235,13 +186,6 @@ extern void sub_080A1ED0(u32, u32, u32);
extern u32 sub_0806F5B0(u32);
extern void sub_0801DFB4(Entity*, u32, u32, u32);
extern void sub_0801E00C();
-extern void sub_08050038(u32);
-extern void sub_080500F4(u32);
-extern void sub_08050110(u32, u32, u32, u32);
-extern u32 sub_08052734(); // has Dungeon Map?
-extern u32 sub_08052764(); // has Dungeon Compass?
-extern u32 sub_0805279C(); // has Dungeon Big Key?
-extern u32 sub_080527CC(); // num Dungeon small keys?
extern void sub_08078790(Entity*, u32);
extern void sub_080788E0(Entity*);
extern void sub_08078AA8(u32, u32);
@@ -259,17 +203,7 @@ extern u32 sub_08079FC4(u32);
extern void sub_0800455E(Entity*);
extern u32* sub_08008790(Entity*, u32);
extern void sub_0804ACF8();
-extern void sub_08073904(Entity*);
-extern u32 CheckHeaderValid(void);
-extern void sub_08004484(Entity*, Entity*);
extern void sub_0805F8E4(u32 r0, WStruct* r1);
-extern u32 sub_08002632(Entity*);
-extern void sub_0807879C(Entity*);
-extern void sub_080787C0(Entity*);
-extern void sub_080787B4(Entity*);
-extern void sub_0808C650(Entity*, u32);
-extern u32 sub_0808C67C(void);
-extern void sub_0808C688(void);
extern Entity* sub_08077C94(ItemBehavior*, u32);
extern Entity* sub_08077C0C(ItemBehavior*, u32);
@@ -287,12 +221,6 @@ extern void sub_080042D0(Entity*, u32, u16);
extern u32 sub_080002A8(u32, u32, u32);
extern void sub_080806BC(u32, u32, u32, u32);
-extern void sub_080186C0(u32);
-extern void sub_0801855C(void);
-
-extern u32 sub_0807CAEC(u32);
-extern void sub_0807CAC8(u32);
extern void LoadObjPalette(Entity*, u32);
-void sub_0804B3C4(void*);
#endif
diff --git a/include/game.h b/include/game.h
deleted file mode 100644
index fb9d486b..00000000
--- a/include/game.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#ifndef GAME_H
-#define GAME_H
-
-#include "gba/types.h"
-
-u32 CheckIsDungeon(void);
-
-#endif // GAME_H
diff --git a/include/greatFairy.h b/include/greatFairy.h
deleted file mode 100644
index 461b83f9..00000000
--- a/include/greatFairy.h
+++ /dev/null
@@ -1,29 +0,0 @@
-#ifndef GREATFAIRY_H
-#define GREATFAIRY_H
-
-#include "entity.h"
-#include "screen.h"
-
-void GreatFairy_InitializeAnimation(Entity*);
-Entity* GreatFairy_CreateForm(Entity*, u32, u32);
-void sub_080873D0();
-extern void (*const GreatFairy_Main[])(Entity*);
-extern void (*const GreatFairy_Behaviors[])(Entity*);
-extern void (*const GreatFairy_WingsBehaviors[])(Entity*);
-extern void (*const GreatFairy_WakeBehaviors[])(Entity*);
-extern void (*const GreatFairy_MiniBehaviors[])(Entity*);
-extern void (*const GreatFairy_MiniAffineBehaviors[])(Entity*);
-extern void (*const GreatFairy_DropletBehaviors[])(Entity*);
-extern void (*const GreatFairy_RippleBehaviors[])(Entity*);
-extern void (*const GreatFairy_BigRippleBehaviors[])(Entity*);
-extern void (*const GreatFairy_EnergyBehaviors[])(Entity*);
-extern void (*const GreatFairy_Form1Behaviors[])(Entity*);
-extern void (*const GreatFairy_Form2Behaviors[])(Entity*);
-extern void (*const gUnk_081207A4[])(Entity*);
-
-extern u32 gUnk_0810C2E4;
-extern const s16 GreatFairy_RippleOffsets[10];
-extern u8 gUnk_0812079C[8];
-extern s8 gUnk_081207AC[];
-
-#endif
diff --git a/include/interrupts.h b/include/interrupts.h
new file mode 100644
index 00000000..b1952acd
--- /dev/null
+++ b/include/interrupts.h
@@ -0,0 +1,6 @@
+#ifndef INTERRUPTS_H
+#define INTERRUPTS_H
+
+extern void WaitForNextFrame(void);
+
+#endif // INTERRUPTS_H
diff --git a/include/main.h b/include/main.h
index c9675bfe..d5ffda2e 100644
--- a/include/main.h
+++ b/include/main.h
@@ -92,7 +92,6 @@ void InitScreen(u32 screen);
void InitDMA(void);
extern void sub_08056208(void);
-extern void InitFade(void);
extern void ResetPalettes(void);
extern void DoSoftReset(void);
diff --git a/include/manager.h b/include/manager.h
index 013678b2..e18c51e8 100644
--- a/include/manager.h
+++ b/include/manager.h
@@ -230,4 +230,15 @@ extern void Manager39_Main();
extern void (*const gManagerFunctions[58])();
+Manager* GetEmptyManager(void);
+
+/**
+ * @brief Set manager responsible for handling room changes
+ */
+extern void RegisterTransitionManager(void* mgr, void (*onEnter)(), void (*onExit)());
+
+extern u32 sub_0805ACC0(Entity*);
+extern void sub_0801855C(void);
+extern void sub_080186C0(u32);
+
#endif
diff --git a/include/npc.h b/include/npc.h
index bf49ef0a..d67652de 100644
--- a/include/npc.h
+++ b/include/npc.h
@@ -1,9 +1,50 @@
+#ifndef NPC_H
+#define NPC_H
+
#include "global.h"
+#include "asm.h"
+#include "utils.h"
+
+#include "audio.h"
+#include "effects.h"
+#include "room.h"
+#include "flags.h"
+#include "coord.h"
+#include "textbox.h"
+#include "script.h"
+#include "save.h"
+
#include "entity.h"
#include "player.h"
-#ifndef NPC_H
-#define NPC_H
+#include "structures.h"
+
+void sub_0806EC20(Entity* ent);
+void sub_0806EC38(void);
+u32 sub_0806ED78(Entity* ent);
+s32 sub_0806ED9C(Entity*, u32, u32);
+u32 GetAnimationState(Entity* ent);
+s32 sub_0806EDD8(Entity* ent, u32 x, u32 y);
+void sub_0806EE04(Entity* ent, void* a2, u32 a3);
+u32 sub_0806EE20(Entity* ent);
+s32 sub_0806F078(Entity* ent, s32 a2);
+void sub_0806F118(Entity* ent);
+void sub_0806F188(Entity* ent);
+void ShowNPCDialogue(Entity* ent, Dialog* dia);
+
+Entity* CreateNPC(u32 subtype, u32 form, u32 parameter);
+u32 UpdateFuseInteraction(Entity*);
+
+void NPCInit(Entity* ent);
+void sub_0806F0A4(void);
+
+// TODO move?
+void sub_08078784(Entity* ent, u32 arg1);
+u32 sub_0806F5A4(u32);
+u32 sub_0801E99C(Entity*);
+void sub_08078778(Entity*);
+void sub_0807000C(Entity*);
+void sub_080787A8(Entity*, u32);
enum NPC {
/*0x00*/ NPC_NONE_0,
@@ -297,8 +338,6 @@ extern void Phonograph(Entity*);
extern void NPC58(Entity*);
extern void NPC58_Head(Entity*);
-extern u32 UpdateFuseInteraction(Entity*);
-
extern void (*const gNPCFunctions[128][3])(Entity*);
#endif
diff --git a/include/object.h b/include/object.h
index 1a219e09..20515a6e 100644
--- a/include/object.h
+++ b/include/object.h
@@ -2,7 +2,24 @@
#define OBJECT_H
#include "global.h"
+#include "asm.h"
+#include "utils.h"
+
+#include "audio.h"
+#include "flags.h"
+#include "effects.h"
+#include "room.h"
+#include "coord.h"
+
#include "entity.h"
+#include "player.h"
+
+extern void sub_0807879C(Entity*);
+extern void sub_080787C0(Entity*);
+extern void sub_080787B4(Entity*);
+extern void sub_0808C650(Entity*, u32);
+extern u32 sub_0808C67C(void);
+extern void sub_0808C688(void);
typedef enum {
GROUND_ITEM,
diff --git a/include/overworld.h b/include/overworld.h
new file mode 100644
index 00000000..2ffa87d9
--- /dev/null
+++ b/include/overworld.h
@@ -0,0 +1,63 @@
+#ifndef OVERWORLD_H
+#define OVERWORLD_H
+
+#include "global.h"
+#include "area.h"
+
+void ChangeLightLevel(s32);
+void SetPopupState(u32 type, u32 choice_idx);
+
+bool32 CheckIsOverworld(void);
+bool32 sub_08052638(u32 r0);
+#ifndef EU
+u32 sub_08052654(void);
+#endif
+u32 CheckIsDungeon(void);
+u32 CheckIsInteriorWithEnemies(void);
+u32 CheckIsInteriorNoEnemies(void);
+u32 CheckHasMap(void);
+
+s32 ModHealth(s32 deltaHealth);
+void ModRupees(s32 rupeeDelta);
+
+void sub_080526F8(s32 a1);
+u32 sub_08052724(void);
+u32 HasDungeonMap(void);
+u32 HasDungeonCompass(void);
+u32 HasDungeonBigKey(void);
+u32 HasDungeonSmallKey(void);
+
+void sub_080527FC(u32 a1, u32 a2);
+#ifndef EU
+void sub_08052878(void);
+#endif
+
+void RoomExitCallback(void);
+void InitParachuteRoom(void);
+u32 sub_08052B24(void);
+void DisplayEzloMessage(void);
+
+void sub_08052CA4(u32 area, u32 room, u32 x, u32 y);
+void sub_08052CD0(u32 area, u32 room, u32 x, u32 y);
+
+void sub_08052CFC(void);
+
+/**
+ * @brief Get bank offset for area
+ */
+u32 GetFlagBankOffset(u32 idx);
+
+RoomResInfo* GetCurrentRoomInfo(void);
+void sub_08052EA0(void);
+void sub_08052FD8(u32 room, u32 area);
+void UpdateGlobalProgress(void);
+void sub_08053250(void);
+void sub_08053320(void);
+void sub_080533CC(void);
+void sub_08053494(void);
+void sub_080534AC(void);
+void sub_08053500(void);
+
+u32 GetBottleContaining(u32);
+
+#endif // OVERWORLD_H
diff --git a/include/random.h b/include/random.h
deleted file mode 100644
index d2c7f3d7..00000000
--- a/include/random.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef RANDOM_H
-#define RANDOM_H
-
-#include "gba/types.h"
-
-extern u32 Random(void);
-
-extern u32 gRand;
-
-#endif
diff --git a/include/room.h b/include/room.h
index fb706547..efaed68b 100644
--- a/include/room.h
+++ b/include/room.h
@@ -175,5 +175,8 @@ extern void SetTileType(u32, u32, u32);
extern void sub_08080964(u32 time, u32 magnitude); // shake screen
extern void* GetCurrentRoomProperty(u32);
+extern void LoadRoomTileEntities();
+
+void sub_0804B3C4(void*);
#endif
diff --git a/include/screen.h b/include/screen.h
index aaca4ef6..18962f80 100644
--- a/include/screen.h
+++ b/include/screen.h
@@ -2,6 +2,7 @@
#define BG_H
#include "global.h"
+#include "fade.h"
typedef struct {
u16 displayControl;
diff --git a/include/utils.h b/include/utils.h
index 19c57f14..8cb3e8d1 100644
--- a/include/utils.h
+++ b/include/utils.h
@@ -38,7 +38,7 @@ void MemCopy(const void* src, void* dest, u32 size);
*/
void ReadKeyInput(void);
-void LoadPalettes(const u8*, int, int);
+void LoadPalettes(const u8*, s32, s32);
void LoadPaletteGroup(u32 group);
void SetColor(u32 colorIndex, u32 color);
void SetFillColor(u32 color, u32 arg1);
@@ -70,4 +70,6 @@ void zFree(void* ptr);
*/
void DispReset(bool32 updateHUD);
-#endif \ No newline at end of file
+u32 CheckPlayerProximity(u32, u32, u32, u32);
+
+#endif