summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarijn van der Werf <marijn.vanderwerf@gmail.com>2016-12-01 03:51:24 +0100
committerYamaArashi <YamaArashi@users.noreply.github.com>2016-11-30 18:51:24 -0800
commit4258e60771aa9fdabd678930eca534423bd371b8 (patch)
treeecca2ee7641abc0562f39b6c7dd907af2184e102
parent831f8cd4fd94613d6b52d87df1b4903bedfaa717 (diff)
Declare more non-static functions in header files (#111)
* Declare more non-static functions in header files * Use `(void)` for functions without arguments. * Move global-included data to seperate headers * Don't import types or global in header * Fix fieldmap imports * Revert in-code changes * Add missing newlines
-rw-r--r--include/asm_fieldmap.h23
-rw-r--r--include/battle_setup.h7
-rw-r--r--include/coins.h12
-rw-r--r--include/decompress.h16
-rw-r--r--include/field_camera.h18
-rw-r--r--include/field_effect.h29
-rw-r--r--include/field_map_obj.h11
-rw-r--r--include/field_message_box.h3
-rw-r--r--include/field_player_avatar.h17
-rw-r--r--include/gba/m4a_internal.h5
-rw-r--r--include/global.berry.h (renamed from include/berry.h)6
-rw-r--r--include/global.fieldmap.h (renamed from include/fieldmap.h)6
-rw-r--r--include/global.h4
-rw-r--r--include/heal_location.h18
-rw-r--r--include/intro.h7
-rw-r--r--include/item.h35
-rw-r--r--include/landmark.h6
-rw-r--r--include/libgncmultiboot.h16
-rw-r--r--include/link.h2
-rw-r--r--include/lottery_corner.h12
-rw-r--r--include/m4a.h13
-rw-r--r--include/main.h1
-rw-r--r--include/map_obj_lock.h16
-rw-r--r--include/menu.h2
-rw-r--r--include/menu_cursor.h24
-rw-r--r--include/mori_debug_menu.h17
-rw-r--r--include/new_game.h16
-rw-r--r--include/option_menu.h6
-rw-r--r--include/palette.h4
-rw-r--r--include/play_time.h9
-rw-r--r--include/pokedex.h156
-rw-r--r--include/pokemon.h4
-rw-r--r--include/pokemon_size_record.h14
-rw-r--r--include/record_mixing.h34
-rw-r--r--include/rom4.h13
-rw-r--r--include/rtc.h24
-rw-r--r--include/safari_zone.h21
-rw-r--r--include/save.h60
-rw-r--r--include/save_menu_util.h16
-rw-r--r--include/script.h2
-rw-r--r--include/siirtc.h8
-rw-r--r--include/start_menu.h23
-rw-r--r--include/starter_choose.h13
-rw-r--r--include/string_util.h2
-rw-r--r--include/task.h6
-rw-r--r--include/text.h2
-rw-r--r--include/text_window.h18
-rw-r--r--include/tileset_anim.h30
-rw-r--r--include/title_screen.h13
-rw-r--r--include/trainer_see.h35
-rw-r--r--include/truck_scene.h13
-rw-r--r--include/var.h2
-rw-r--r--include/wallclock.h14
-rw-r--r--include/weather.h40
-rw-r--r--include/wild_encounter.h14
-rw-r--r--src/battle_setup.c18
-rw-r--r--src/berry.c8
-rw-r--r--src/clear_save_data_menu.c3
-rw-r--r--src/coins.c2
-rw-r--r--src/decompress.c4
-rw-r--r--src/field_camera.c8
-rw-r--r--src/field_door.c1
-rw-r--r--src/field_effect.c2
-rw-r--r--src/field_player_avatar.c39
-rw-r--r--src/fldeff_emotion.c4
-rw-r--r--src/heal_location.c9
-rw-r--r--src/intro.c63
-rw-r--r--src/item.c6
-rw-r--r--src/landmark.c1
-rw-r--r--src/link.c1
-rw-r--r--src/lottery_corner.c4
-rw-r--r--src/main.c6
-rw-r--r--src/main_menu.c11
-rw-r--r--src/map_obj_80643A4.c4
-rw-r--r--src/map_obj_lock.c5
-rw-r--r--src/menu.c9
-rw-r--r--src/menu_cursor.c6
-rw-r--r--src/mori_debug_menu.c6
-rw-r--r--src/new_game.c10
-rw-r--r--src/option_menu.c1
-rw-r--r--src/palette.c2
-rw-r--r--src/play_time.c2
-rw-r--r--src/pokedex.c133
-rw-r--r--src/pokemon_2.c2
-rw-r--r--src/pokemon_size_record.c4
-rw-r--r--src/record_mixing.c19
-rw-r--r--src/rom4.c57
-rw-r--r--src/rtc.c14
-rw-r--r--src/safari_zone.c12
-rw-r--r--src/save.c33
-rw-r--r--src/save_menu_util.c14
-rw-r--r--src/scrcmd.c39
-rw-r--r--src/script.c2
-rw-r--r--src/sound.c3
-rw-r--r--src/sprite.c7
-rw-r--r--src/start_menu.c42
-rw-r--r--src/starter_choose.c10
-rw-r--r--src/text_window.c21
-rw-r--r--src/tileset_anim.c1
-rw-r--r--src/title_screen.c5
-rw-r--r--src/trainer_see.c15
-rw-r--r--src/truck_scene.c7
-rw-r--r--src/wallclock.c7
-rw-r--r--src/weather.c15
-rw-r--r--src/wild_encounter.c16
105 files changed, 1110 insertions, 541 deletions
diff --git a/include/asm_fieldmap.h b/include/asm_fieldmap.h
new file mode 100644
index 000000000..afc1fac7c
--- /dev/null
+++ b/include/asm_fieldmap.h
@@ -0,0 +1,23 @@
+#ifndef GUARD_FIELDMAP_H
+#define GUARD_FIELDMAP_H
+
+void not_trainer_hill_battle_pyramid(void);
+void sub_8055FC0(void);
+u8 MapGridGetZCoordAt();
+bool8 MapGridIsImpassableAt(s16, s16);
+int MapGridGetMetatileIdAt(int, int);
+int MapGridGetMetatileBehaviorAt(int x, int y); // return: (u8|u16|int) args: (int|s16|s32)
+u8 MapGridGetMetatileLayerTypeAt(/*TODO: arg types*/);
+void MapGridSetMetatileIdAt(u32, u32, u16);
+void save_serialize_map(void);
+int CameraMove(int, int);
+void sub_8056C50(u16, u16);
+void sav1_camera_get_focus_coords(s16 *x, s16 *y);
+void GetCameraCoords(s16*, s16*);
+void sub_8056D28(struct MapData *pData);
+void sub_8056D38(struct MapData *pData);
+void apply_map_tileset2_palette(struct MapData *pData);
+void copy_map_tileset1_tileset2_to_vram(/*TODO: arg types*/);
+void apply_map_tileset1_tileset2_palette(/*TODO: arg types*/);
+
+#endif // GUARD_FIELDMAP_H
diff --git a/include/battle_setup.h b/include/battle_setup.h
new file mode 100644
index 000000000..2c9d1d8c5
--- /dev/null
+++ b/include/battle_setup.h
@@ -0,0 +1,7 @@
+#ifndef GUARD_BATTLE_SETUP_H
+#define GUARD_BATTLE_SETUP_H
+
+void CheckForSafariZoneAndProceed(void);
+void sub_8081A5C(void);
+
+#endif // GUARD_BATTLE_SETUP_H
diff --git a/include/coins.h b/include/coins.h
new file mode 100644
index 000000000..d066c2422
--- /dev/null
+++ b/include/coins.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_COINS_H
+#define GUARD_COINS_H
+
+void UpdateCoinsWindow(s32 a, u8 b, u8 c);
+void ShowCoinsWindow(u32 a, u8 b, u8 c);
+void HideCoinsWindow(u8 a, u8 b);
+void PrintCoins(s32 a, u8 b, u8 c, u8 d);
+u16 GetCoins(void);
+bool8 GiveCoins(u16 coins);
+bool8 TakeCoins(u16 coins);
+
+#endif // GUARD_COINS_H
diff --git a/include/decompress.h b/include/decompress.h
new file mode 100644
index 000000000..382e6d76a
--- /dev/null
+++ b/include/decompress.h
@@ -0,0 +1,16 @@
+#ifndef GUARD_DECOMPRESS_H
+#define GUARD_DECOMPRESS_H
+
+#include "sprite.h"
+
+void sub_800D238(const void *src, void *dest);
+void LZDecompressVram(const void *src, void *dest);
+void LoadCompressedObjectPic(const struct SpriteSheet *a);
+void LoadCompressedObjectPicOverrideBuffer(const struct SpriteSheet *a, void *buffer);
+void LoadCompressedObjectPalette(const struct SpritePalette *a);
+void LoadCompressedObjectPaletteOverrideBuffer(const struct SpritePalette *a, void *buffer);
+void DecompressPicFromTable_2(const struct SpriteSheet *a, u8 b, u8 c, void *d, void *e, s32 f);
+void sub_800D334(const struct SpriteSheet *a, u32 b, u32 c, u32 d, void *dest, s32 f, u32 g);
+void sub_800D378(const struct SpriteSheet *a, u32 b, u32 c, u32 d, void *dest, s32 f, u32 g, u32 h);
+
+#endif // GUARD_DECOMPRESS_H
diff --git a/include/field_camera.h b/include/field_camera.h
new file mode 100644
index 000000000..51c370d0a
--- /dev/null
+++ b/include/field_camera.h
@@ -0,0 +1,18 @@
+#ifndef GUARD_FIELD_CAMERA_H
+#define GUARD_FIELD_CAMERA_H
+
+void move_tilemap_camera_to_upper_left_corner(void);
+void sub_8057A58(void);
+void sub_8057B14(u16 *a, u16 *b);
+void DrawWholeMapView(void);
+void CurrentMapDrawMetatileAt(int a, int b);
+void DrawDoorMetatileAt(int x, int y, u16 *arr);
+void ResetCameraUpdateInfo(void);
+u32 InitCameraUpdateCallback(u8 a);
+void CameraUpdate(void);
+void SetCameraPanningCallback(void (*a)(void));
+void SetCameraPanning(s16 a, s16 b);
+void InstallCameraPanAheadCallback(void);
+void UpdateCameraPanning(void);
+
+#endif // GUARD_FIELD_CAMERA_H
diff --git a/include/field_effect.h b/include/field_effect.h
new file mode 100644
index 000000000..a46c048cb
--- /dev/null
+++ b/include/field_effect.h
@@ -0,0 +1,29 @@
+#ifndef GUARD_FIELD_EFFECT_H
+#define GUARD_FIELD_EFFECT_H
+
+#include "sprite.h"
+
+u32 FieldEffectStart(u8 id);
+bool8 FieldEffectCmd_loadtiles(u8 **script, u32 *val);
+bool8 FieldEffectCmd_loadfadedpal(u8 **script, u32 *val);
+bool8 FieldEffectCmd_loadpal(u8 **script, u32 *val);
+bool8 FieldEffectCmd_callnative(u8 **script, u32 *val);
+bool8 FieldEffectCmd_end(u8 **script, u32 *val);
+bool8 FieldEffectCmd_loadgfx_callnative(u8 **script, u32 *val);
+bool8 FieldEffectCmd_loadtiles_callnative(u8 **script, u32 *val);
+bool8 FieldEffectCmd_loadfadedpal_callnative(u8 **script, u32 *val);
+u32 FieldEffectScript_ReadWord(u8 **script);
+void FieldEffectScript_LoadTiles(u8 **script);
+void FieldEffectScript_LoadFadedPalette(u8 **script);
+void FieldEffectScript_LoadPalette(u8 **script);
+void FieldEffectScript_CallNative(u8 **script, u32 *val);
+void FieldEffectFreeGraphicsResources(struct Sprite *sprite);
+void FieldEffectStop(struct Sprite *sprite, u8 id);
+void FieldEffectFreeTilesIfUnused(u16 tileStart);
+void FieldEffectFreePaletteIfUnused(u8 paletteNum);
+void FieldEffectActiveListClear(void);
+void FieldEffectActiveListAdd(u8 id);
+void FieldEffectActiveListRemove(u8 id);
+bool8 FieldEffectActiveListContains(u8 id);
+
+#endif // GUARD_FIELD_EFFECT_H
diff --git a/include/field_map_obj.h b/include/field_map_obj.h
new file mode 100644
index 000000000..c31b0fc2a
--- /dev/null
+++ b/include/field_map_obj.h
@@ -0,0 +1,11 @@
+#ifndef GUARD_FIELD_MAP_OBJ_H
+#define GUARD_FIELD_MAP_OBJ_H
+
+#include "sprite.h"
+
+void sub_805C058(struct MapObject *mapObject, s16 a, s16 b);
+void FieldObjectSetDirection(struct MapObject *pObject, u8 unk_18);
+void MoveCoords(u8 direction, s16 *x, s16 *y);
+void meta_step(struct MapObject *pObject, struct Sprite *pSprite, u32 (*d8)(void));
+
+#endif // GUARD_FIELD_MAP_OBJ_H
diff --git a/include/field_message_box.h b/include/field_message_box.h
index 072a9fd66..50d96ccd1 100644
--- a/include/field_message_box.h
+++ b/include/field_message_box.h
@@ -12,8 +12,11 @@ enum
void InitFieldMessageBox(void);
bool8 ShowFieldMessage(u8 *message);
bool8 ShowFieldAutoScrollMessage(u8 *message);
+bool8 unref_sub_8064BB8(u8 *message);
+bool8 unref_sub_8064BD0(u8 *message);
void HideFieldMessageBox(void);
u8 GetFieldMessageBoxMode(void);
bool8 IsFieldMessageBoxHidden(void);
+void unref_sub_8064CA0(void);
#endif // GUARD_FIELD_MESSAGE_BOX_H
diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h
new file mode 100644
index 000000000..0c9e78a2a
--- /dev/null
+++ b/include/field_player_avatar.h
@@ -0,0 +1,17 @@
+#ifndef GUARD_FIELD_PLAYER_AVATAR_H
+#define GUARD_FIELD_PLAYER_AVATAR_H
+
+void player_step(u8 a, u16 b, u16 c);
+void SetPlayerAvatarTransitionFlags(u16 a);
+void sub_8059204(void);
+void sub_80594C0(void);
+void GetXYCoordsOneStepInFrontOfPlayer(s16 *x, s16 *y);
+void PlayerGetDestCoords(s16 *, s16 *);
+u8 player_get_direction_lower_nybble(void);
+u8 player_get_direction_upper_nybble(void);
+u8 TestPlayerAvatarFlags(u8);
+void sub_80597E8(void);
+void sub_80597F4(void);
+void InitPlayerAvatar(s16 a, s16 b, u8 c, u8 d);
+
+#endif
diff --git a/include/gba/m4a_internal.h b/include/gba/m4a_internal.h
index f5d44de99..572b77711 100644
--- a/include/gba/m4a_internal.h
+++ b/include/gba/m4a_internal.h
@@ -1,3 +1,6 @@
+#ifndef GUARD_M4A_INTERNAL_H
+#define GUARD_M4A_INTERNAL_H
+
#include "gba/gba.h"
// ASCII encoding of 'Smsh' in reverse
@@ -460,3 +463,5 @@ void ply_xleng(struct MusicPlayerInfo *, struct MusicPlayerTrack *);
void ply_xswee(struct MusicPlayerInfo *, struct MusicPlayerTrack *);
void ply_xcmd_0C(struct MusicPlayerInfo *, struct MusicPlayerTrack *);
void ply_xcmd_0D(struct MusicPlayerInfo *, struct MusicPlayerTrack *);
+
+#endif // GUARD_M4A_INTERNAL_H
diff --git a/include/berry.h b/include/global.berry.h
index a80e77512..8b98a5f58 100644
--- a/include/berry.h
+++ b/include/global.berry.h
@@ -1,5 +1,5 @@
-#ifndef GUARD_BERRY_H
-#define GUARD_BERRY_H
+#ifndef GUARD_GLOBAL_BERRY_H
+#define GUARD_GLOBAL_BERRY_H
struct Berry
{
@@ -54,4 +54,4 @@ struct BerryTree
u8 watered4:1;
};
-#endif // GUARD_BERRY_H
+#endif // GUARD_GLOBAL_BERRY_H
diff --git a/include/fieldmap.h b/include/global.fieldmap.h
index 16a80955a..20f28b02f 100644
--- a/include/fieldmap.h
+++ b/include/global.fieldmap.h
@@ -1,5 +1,5 @@
-#ifndef GUARD_FIELDMAP_H
-#define GUARD_FIELDMAP_H
+#ifndef GUARD_GLOBAL_FIELDMAP_H
+#define GUARD_GLOBAL_FIELDMAP_H
enum
{
@@ -289,4 +289,4 @@ extern u8 gSelectedMapObject;
extern struct MapHeader gMapHeader;
extern struct PlayerAvatar gPlayerAvatar;
-#endif // GUARD_FIELDMAP_H
+#endif // GUARD_GLOBAL_FIELDMAP_H
diff --git a/include/global.h b/include/global.h
index b1bfa25ad..7fbf5755b 100644
--- a/include/global.h
+++ b/include/global.h
@@ -95,8 +95,8 @@ struct SecretBaseRecord
};
#include "game_stat.h"
-#include "fieldmap.h"
-#include "berry.h"
+#include "global.fieldmap.h"
+#include "global.berry.h"
#include "pokemon.h"
struct WarpData
diff --git a/include/heal_location.h b/include/heal_location.h
new file mode 100644
index 000000000..785918bd6
--- /dev/null
+++ b/include/heal_location.h
@@ -0,0 +1,18 @@
+#ifndef GUARD_HEAL_LOCATION_H
+#define GUARD_HEAL_LOCATION_H
+
+#include "sprite.h"
+
+struct HealLocation
+{
+ s8 group;
+ s8 map;
+ u16 x;
+ u16 y;
+};
+
+u32 GetHealLocationIndexByMap(u16 mapGroup, u16 mapNum);
+const struct HealLocation *GetHealLocationByMap(u16 mapGroup, u16 mapNum);
+const struct HealLocation *GetHealLocation(u32 index);
+
+#endif // GUARD_HEAL_LOCATION_H
diff --git a/include/intro.h b/include/intro.h
new file mode 100644
index 000000000..a859a9ce4
--- /dev/null
+++ b/include/intro.h
@@ -0,0 +1,7 @@
+#ifndef GUARD_INTRO_H
+#define GUARD_INTRO_H
+
+void c2_copyright_1(void);
+void CB2_InitCopyrightScreen(void);
+
+#endif // GUARD_INTRO_H
diff --git a/include/item.h b/include/item.h
new file mode 100644
index 000000000..cc917dbc8
--- /dev/null
+++ b/include/item.h
@@ -0,0 +1,35 @@
+#ifndef GUARD_ITEM_H
+#define GUARD_ITEM_H
+
+typedef void (*ItemUseFunc)(u8);
+
+void CopyItemName(u16 itemId, u8 *string);
+bool8 IsBagPocketNonEmpty(u8 pocket);
+bool8 CheckBagHasItem(u16 itemId, u16 count);
+bool8 CheckBagHasSpace(u16 itemId, u16 count);
+bool8 AddBagItem(u16 itemId, u16 count);
+bool8 RemoveBagItem(u16 itemId, u16 count);
+u8 GetPocketByItemId(u16 itemId);
+void ClearItemSlots(struct ItemSlot *itemSlots, u8 b);
+u8 CountUsedPCItemSlots(void);
+bool8 CheckPCHasItem(u16 itemId, u16 count);
+bool8 AddPCItem(u16 itemId, u16 count);
+void RemovePCItem(u8 index, u16 count);
+void SwapRegisteredBike(void);
+struct Item *ItemId_GetItem(u16 itemId);
+u16 ItemId_GetId(u16 itemId);
+u16 ItemId_GetPrice(u16 itemId);
+u8 ItemId_GetHoldEffect(u16 itemId);
+u8 ItemId_GetHoldEffectParam(u16 itemId);
+u8 *ItemId_GetDescription(u16 itemId);
+bool8 ItemId_CopyDescription(u8 *a, u32 itemId, u32 c);
+u8 ItemId_GetImportance(u16 itemId);
+u8 ItemId_GetUnknownValue(u16 itemId);
+u8 ItemId_GetPocket(u16 itemId);
+u8 ItemId_GetType(u16 itemId);
+ItemUseFunc ItemId_GetFieldFunc(u16 itemId);
+u8 ItemId_GetBattleUsage(u16 itemId);
+ItemUseFunc ItemId_GetBattleFunc(u16 itemId);
+u8 ItemId_GetSecondaryId(u16 itemId);
+
+#endif // GUARD_ITEM_H
diff --git a/include/landmark.h b/include/landmark.h
new file mode 100644
index 000000000..eee5ac8c2
--- /dev/null
+++ b/include/landmark.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_LANDMARK_H
+#define GUARD_LANDMARK_H
+
+u8 *GetLandmarkName(u8 mapSection, u8 id, u8 count);
+
+#endif // GUARD_LANDMARK_H
diff --git a/include/libgncmultiboot.h b/include/libgncmultiboot.h
new file mode 100644
index 000000000..b4d1cd231
--- /dev/null
+++ b/include/libgncmultiboot.h
@@ -0,0 +1,16 @@
+#ifndef GUARD_LIBGNCMULTIBOOT_H
+#define GUARD_LIBGNCMULTIBOOT_H
+
+struct GcmbStruct
+{
+ u16 gcmb_field_0;
+ u8 gcmb_field_2;
+};
+
+void GameCubeMultiBoot_Main(struct GcmbStruct *pStruct);
+void GameCubeMultiBoot_ExecuteProgram(struct GcmbStruct *pStruct);
+void GameCubeMultiBoot_Init(struct GcmbStruct *pStruct);
+void GameCubeMultiBoot_HandleSerialInterrupt(struct GcmbStruct *pStruct);
+void GameCubeMultiBoot_Quit(void);
+
+#endif // GUARD_LIBGNCMULTIBOOT_H
diff --git a/include/link.h b/include/link.h
index 550102fb9..694339164 100644
--- a/include/link.h
+++ b/include/link.h
@@ -1,8 +1,6 @@
#ifndef GUARD_LINK_H
#define GUARD_LINK_H
-#include "global.h"
-
#define MAX_LINK_PLAYERS 4
#define CMD_LENGTH 8
#define QUEUE_CAPACITY 50
diff --git a/include/lottery_corner.h b/include/lottery_corner.h
new file mode 100644
index 000000000..06f38a5c9
--- /dev/null
+++ b/include/lottery_corner.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_LOTTERY_CORNER_H
+#define GUARD_LOTTERY_CORNER_H
+
+void sub_8145A78(void);
+void sub_8145AA4(u16 a);
+void sub_8145AEC(void);
+void PickLotteryCornerTicket(void);
+void sub_8145D14(u32 a);
+u32 sub_8145D3C(void);
+void unref_sub_8145D64(u16 a);
+
+#endif // GUARD_LOTTERY_CORNER_H
diff --git a/include/m4a.h b/include/m4a.h
new file mode 100644
index 000000000..85cba5d77
--- /dev/null
+++ b/include/m4a.h
@@ -0,0 +1,13 @@
+#ifndef GUARD_M4A_H
+#define GUARD_M4A_H
+
+#include "gba/m4a_internal.h"
+
+void m4aSoundInit(void);
+void m4aSoundMain(void);
+void m4aSongNumStart(u16 n);
+void m4aSoundVSync(void);
+
+void m4aMPlayContinue(struct MusicPlayerInfo *mplayInfo);
+
+#endif //GUARD_M4A_H
diff --git a/include/main.h b/include/main.h
index 67595ac65..054bba901 100644
--- a/include/main.h
+++ b/include/main.h
@@ -50,6 +50,7 @@ extern bool8 gLinkVSyncDisabled;
extern const u8 gGameVersion;
extern const u8 gGameLanguage;
+void AgbMain(void);
void SetMainCallback2(MainCallback callback);
void InitKeys(void);
void SetVBlankCallback(IntrCallback callback);
diff --git a/include/map_obj_lock.h b/include/map_obj_lock.h
new file mode 100644
index 000000000..6d677ad8c
--- /dev/null
+++ b/include/map_obj_lock.h
@@ -0,0 +1,16 @@
+#ifndef GUARD_MAP_OBJ_LOCK_H
+#define GUARD_MAP_OBJ_LOCK_H
+
+bool8 walkrun_is_standing_still(void);
+void sub_8064CDC(u8 taskId);
+bool8 sub_8064CFC(void);
+void sub_8064D20(void);
+void sub_8064D38(u8 taskId);
+bool8 sub_8064DB4(void);
+void sub_8064DD8(void);
+void sub_8064E2C(void);
+void unref_sub_8064E5C(void);
+void sub_8064EAC(void);
+void sub_8064ED4(void);
+
+#endif // GUARD_MAP_OBJ_LOCK_H
diff --git a/include/menu.h b/include/menu.h
index 6df47cf93..7dfe418a9 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -3,7 +3,7 @@
#include "text.h"
-void InitMenuWindow(struct WindowConfig *);
+void InitMenuWindow(const struct WindowConfig *);
void MultistepInitMenuWindowBegin(struct WindowConfig *);
bool32 MultistepInitMenuWindowContinue(void);
void unref_sub_8071DA4(struct WindowConfig *, u16);
diff --git a/include/menu_cursor.h b/include/menu_cursor.h
new file mode 100644
index 000000000..cc6cc16bc
--- /dev/null
+++ b/include/menu_cursor.h
@@ -0,0 +1,24 @@
+#ifndef GUARD_MENU_CURSOR_H
+#define GUARD_MENU_CURSOR_H
+
+#include "sprite.h"
+
+void sub_814A590(void);
+u8 sub_814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5);
+u8 sub_814A758(u8 a1, u8 a2, u8 a3, u8 a4);
+u8 unref_sub_814A7AC(u8 a1, u16 a2, u8 a3);
+void sub_814A7FC(void);
+void sub_814A880(u8 a1, u8 a2);
+void sub_814A904(void);
+void sub_814A958(u8 a1);
+void sub_814AABC(void (*callback)(struct Sprite *));
+void sub_814AAF8(u16 a1);
+void sub_814AB84(void);
+void unref_sub_814ABE4(int a1);
+u8 CreateBlendedOutlineCursor(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5);
+void sub_814AD44(void);
+void sub_814AD7C(u8 a1, u8 a2);
+void sub_814ADC8(void);
+void sub_814ADF4(u8 a1);
+
+#endif // GUARD_MENU_CURSOR_H
diff --git a/include/mori_debug_menu.h b/include/mori_debug_menu.h
new file mode 100644
index 000000000..0d1f49d3b
--- /dev/null
+++ b/include/mori_debug_menu.h
@@ -0,0 +1,17 @@
+#ifndef GUARD_MORI_DEBUG_MENU_H
+#define GUARD_MORI_DEBUG_MENU_H
+
+s8 sub_8083D4C(void);
+u8 MoriDebugMenu_SearchChild(u8 a1, u8 a2, u8 *ptr);
+s8 MoriDebugMenu_Egg(void);
+s8 MoriDebugMenu_MaleEgg(void);
+s8 MoriDebugMenu_1000Steps(void);
+s8 MoriDebugMenu_10000Steps(void);
+s8 MoriDebugMenu_MoveTutor(void);
+s8 MoriDebugMenu_BreedEgg(void);
+s8 MoriDebugMenu_LongName(void);
+s8 MoriDebugMenu_PokeblockCase(void);
+s8 MoriDebugMenuProcessInput(void);
+s8 InitMoriDebugMenu(void);
+
+#endif // GUARD_MORI_DEBUG_MENU_H
diff --git a/include/new_game.h b/include/new_game.h
new file mode 100644
index 000000000..dce42bf52
--- /dev/null
+++ b/include/new_game.h
@@ -0,0 +1,16 @@
+#ifndef GUARD_NEW_GAME_H
+#define GUARD_NEW_GAME_H
+
+void write_word_to_mem(u32 a1, u8 *a2);
+void sub_8052D10(u8 *a1, u8 *a2);
+void set_player_trainer_id(void);
+void SetDefaultOptions(void);
+void sub_8052D78(void);
+void sub_8052DA8(void);
+void sub_8052DE4(void);
+void sub_8052E04(void);
+void ClearSav2(void);
+void sub_8052E4C(void);
+void NewGameInitData(void);
+
+#endif // GUARD_NEW_GAME_H
diff --git a/include/option_menu.h b/include/option_menu.h
new file mode 100644
index 000000000..b23a73c4c
--- /dev/null
+++ b/include/option_menu.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_OPTION_MENU_H
+#define GUARD_OPTION_MENU_H
+
+void CB2_InitOptionMenu(void);
+
+#endif // GUARD_OPTION_MENU_H
diff --git a/include/palette.h b/include/palette.h
index de2cf0083..37fcb4d65 100644
--- a/include/palette.h
+++ b/include/palette.h
@@ -1,8 +1,6 @@
#ifndef GUARD_PALETTE_H
#define GUARD_PALETTE_H
-#include "global.h"
-
#define gPaletteFade_selectedPalettes (gPaletteFade.multipurpose1) // normal and fast fade
#define gPaletteFade_blendCnt (gPaletteFade.multipurpose1) // hardware fade
#define gPaletteFade_delay (gPaletteFade.multipurpose2) // normal and hardware fade
@@ -54,7 +52,7 @@ bool8 unref_sub_8073D3C(u32, u8, u8, u8, u16);
void unref_sub_8073D84(u8, u32 *);
void ResetPaletteStructByUid(u16);
void ResetPaletteStruct(u8);
-void ResetPaletteFadeControl();
+void ResetPaletteFadeControl(void);
void unref_sub_8074168(u16);
void unref_sub_8074194(u16);
void InvertPlttBuffer(u32);
diff --git a/include/play_time.h b/include/play_time.h
index ac64b62fb..49091f4b1 100644
--- a/include/play_time.h
+++ b/include/play_time.h
@@ -1,9 +1,10 @@
#ifndef GUARD_PLAY_TIME_H
#define GUARD_PLAY_TIME_H
-void PlayTimeCounter_Reset();
-void PlayTimeCounter_Start();
-void PlayTimeCounter_Stop();
-void PlayTimeCounter_Update();
+void PlayTimeCounter_Reset(void);
+void PlayTimeCounter_Start(void);
+void PlayTimeCounter_Stop(void);
+void PlayTimeCounter_Update(void);
+void PlayTimeCounter_SetToMax(void);
#endif // GUARD_PLAY_TIME_H
diff --git a/include/pokedex.h b/include/pokedex.h
new file mode 100644
index 000000000..22ba76fc6
--- /dev/null
+++ b/include/pokedex.h
@@ -0,0 +1,156 @@
+#ifndef GUARD_POKEDEX_H
+#define GUARD_POKEDEX_H
+
+#include "sprite.h"
+
+struct PokedexListItem
+{
+ u16 dexNum;
+ u16 seen:1;
+ u16 owned:1;
+};
+
+struct PokedexView
+{
+ struct PokedexListItem unk0[386];
+ u16 unk608;
+ u8 unk60A_1:1;
+ u8 unk60A_2:1;
+ u8 unk60B;
+ u16 unk60C;
+ u16 selectedPokemon;
+ u16 unk610;
+ u16 dexMode; //National or Hoenn
+ u16 unk614;
+ u16 dexOrder;
+ u16 unk618;
+ u16 unk61A;
+ u16 unk61C;
+ u16 unk61E[4];
+ u16 unk626; //sprite id of selected Pokemon
+ u16 unk628;
+ u16 unk62A;
+ u8 unk62C;
+ u8 unk62D;
+ u8 unk62E;
+ u8 unk62F;
+ s16 unk630;
+ s16 unk632;
+ u16 unk634;
+ u16 unk636;
+ u16 unk638;
+ u16 unk63A[4];
+ u8 filler642[8];
+ u8 unk64A;
+ u8 unk64B;
+ u8 unk64C_1:1;
+ u8 selectedScreen;
+ u8 unk64E;
+ u8 unk64F;
+ u8 menuIsOpen; //menuIsOpen
+ u8 unk651;
+ u16 menuCursorPos; //Menu cursor position
+ s16 menuY; //Menu Y position (inverted because we use REG_BG0VOFS for this)
+ u8 unk656[8];
+ u8 unk65E[8];
+};
+
+void sub_808C02C(void);
+void sub_808C0A0(void);
+void sub_808C0B8(void);
+void ClearPokedexView(struct PokedexView *pokedexView);
+void CB2_InitPokedex(void);
+u8 unref_sub_808C540(void (*func)(u8));
+void MainCB(void);
+void Task_PokedexShowMainScreen(u8 taskId);
+void Task_PokedexMainScreen(u8 taskId);
+void sub_808C898(u8 taskId);
+void Task_PokedexMainScreenMenu(u8 taskId);
+void sub_808CA64(u8 taskId);
+void sub_808CAE4(u8 taskId);
+void sub_808CB8C(u8 taskId);
+void Task_ClosePokedex(u8 taskId);
+void sub_808CCC4(u8 taskId);
+void Task_PokedexResultsScreen(u8 taskId);
+void sub_808CEF8(u8 taskId);
+void Task_PokedexResultsScreenMenu(u8 taskId);
+void sub_808D118(u8 taskId);
+void sub_808D198(u8 taskId);
+void Task_PokedexResultsScreenReturnToMainScreen(u8 taskId);
+void Task_PokedexResultsScreenExitPokedex(u8 taskId);
+bool8 sub_808D344(u8 a);
+void sub_808D640(void);
+void SortPokedex(u8 dexMode, u8 sortMode);
+void sub_808DBE8(u8 a, u16 b, u16 c);
+void sub_808DEB0(u16 a, u8 b, u8 c, u16 d);
+void sub_808DF88(u16 a, u8 b, u8 c, u16 d);
+u8 sub_808DFE4(u16 a, u8 b, u8 c);
+void sub_808E090(u8 a, u8 b, u16 c);
+void sub_808E0CC(u16 a, u16 b);
+bool8 sub_808E208(u8 a, u8 b, u8 c);
+void sub_808E398(u8 a, u16 b);
+u16 sub_808E48C(u16 a, u16 b);
+void sub_808E6BC(void);
+u8 sub_808E71C(void);
+u8 sub_808E82C(void);
+u16 sub_808E888(u16 a1);
+u32 sub_808E8C8(u16 a, u16 b, u16 c);
+void sub_808E978(u8 a);
+void nullsub_58(struct Sprite *sprite);
+void sub_808ED94(struct Sprite *sprite);
+void sub_808EDB8(struct Sprite *sprite);
+void sub_808EE28(struct Sprite *sprite);
+void sub_808EF38(struct Sprite *sprite);
+void sub_808EF8C(struct Sprite *sprite);
+void sub_808F08C(struct Sprite *sprite);
+void sub_808F0B4(struct Sprite *sprite);
+void sub_808F168(struct Sprite *sprite);
+u8 sub_808F210(struct PokedexListItem *item, u8 b);
+bool8 sub_808F250(u8 taskId);
+u8 sub_808F284(struct PokedexListItem *item, u8 b);
+void Task_InitPageScreenMultistep(u8 taskId);
+void Task_PageScreenProcessInput(u8 taskId);
+void sub_808F888(u8 taskId);
+void Task_ClosePageScreen(u8 taskId);
+void Task_InitAreaScreenMultistep(u8 taskId);
+void Task_AreaScreenProcessInput(u8 taskId);
+void sub_808FA00(u8 taskId);
+void Task_InitCryScreenMultistep(u8 taskId);
+void Task_CryScreenProcessInput(u8 taskId);
+void sub_808FFBC(u8 taskId);
+void sub_8090040(u8 a);
+void Task_InitSizeScreenMultistep(u8 taskId);
+void Task_SizeScreenProcessInput(u8 taskId);
+void sub_8090498(u8 taskId);
+void sub_80904FC(u16 a);
+void sub_8090540(u16 a);
+void sub_8090584(u8 a, u16 b);
+void sub_8090644(u8 a, u16 b);
+u8 sub_809070C(u16 dexNum, u32 b, u32 c);
+
+// ASM
+void sub_8090750(u8);
+void sub_8090A3C(u8);
+
+void sub_8090C68(void);
+
+bool8 sub_8090D90(u16, u8);
+u16 GetNationalPokedexCount(u8);
+u16 GetHoennPokedexCount(u8);
+
+void sub_8091060(u16);
+void sub_8091154(u16 order, int i, int i1);
+void sub_80911C8(u16 num, int i, int i1);
+void sub_8091260(u16 num, int i, int i1, int i2);
+void sub_8091304(u8 name[12], int i, int i1);
+
+void sub_8091458(u16 height, int i, int i1);
+void sub_8091564(u16 weight, int i, int i1);
+void sub_8091738(u16, u16, u16);
+void sub_80917CC(int i, int i1);
+u16 sub_8091818(u8, u16, u16, u16);
+
+u16 sub_80918EC(u16 a, s16 b, s16 c, u16 d); //Not sure of return type
+u8 sub_8091A4C(u8 gender, int i, int i1, int i2);
+
+#endif // GUARD_POKEDEX_H
diff --git a/include/pokemon.h b/include/pokemon.h
index 450a8174f..956a3984f 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -1,8 +1,6 @@
#ifndef GUARD_POKEMON_H
#define GUARD_POKEMON_H
-#include "global.h"
-
#define MON_DATA_PERSONALITY 0
#define MON_DATA_OT_ID 1
#define MON_DATA_NICKNAME 2
@@ -362,6 +360,8 @@ u16 sub_803B7C8(struct Pokemon *mon, u8 a2);
void DeleteFirstMoveAndGiveMoveToMon(struct Pokemon *mon, u16 move);
void DeleteFirstMoveAndGiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move);
+u8 sub_803C348(u8 a1);
+u8 sub_803C434(u8 a1);
u8 GetMonGender(struct Pokemon *mon);
u8 GetBoxMonGender(struct BoxPokemon *boxMon);
u8 GetGenderFromSpeciesAndPersonality(u16 species, u32 personality);
diff --git a/include/pokemon_size_record.h b/include/pokemon_size_record.h
new file mode 100644
index 000000000..3ccc597bb
--- /dev/null
+++ b/include/pokemon_size_record.h
@@ -0,0 +1,14 @@
+#ifndef GUARD_POKEMON_SIZE_RECORD_H
+#define GUARD_POKEMON_SIZE_RECORD_H
+
+void InitShroomishSizeRecord(void);
+void GetShroomishSizeRecordInfo(void);
+void CompareShroomishSize(void);
+
+void InitBarboachSizeRecord(void);
+void GetBarboachSizeRecordInfo(void);
+void CompareBarboachSize(void);
+
+void GiveGiftRibbonToParty(u8 index, u8 ribbonId);
+
+#endif // GUARD_POKEMON_SIZE_RECORD_H
diff --git a/include/record_mixing.h b/include/record_mixing.h
new file mode 100644
index 000000000..39cf5bd43
--- /dev/null
+++ b/include/record_mixing.h
@@ -0,0 +1,34 @@
+#ifndef GUARD_RECORD_MIXING_H
+#define GUARD_RECORD_MIXING_H
+
+#include <stddef.h>
+
+void sub_80B929C(void);
+void sub_80B92AC(void);
+void sub_80B93B0(u32 a);
+void sub_80B9450(u8 taskId);
+void sub_80B9484(u8 taskId);
+void sub_80B95F0(u8 taskId);
+void sub_80B97DC(u8 taskId);
+void Task_CopyRecvBuffer(u8 taskId);
+void sub_80B99B4(u8 taskId);
+void sub_80B99E8(u8 taskId);
+void sub_80B9A1C(u8 taskId);
+void *LoadPtrFromTaskData(u16 *ptr);
+void StorePtrInTaskData(void *ptr, u16 *data);
+u8 GetMultiplayerId_(void);
+u16 *GetPlayerRecvBuffer(u8 player);
+void sub_80B9A78(void);
+void sub_80B9A88(u8 *a);
+void sub_80B9B1C(u8 *a, size_t size, u8 index);
+void sub_80B9B70(u8 *a, size_t size, u8 index);
+u8 sub_80B9BBC(u16 *a);
+void sub_80B9BC4(u32 a, u32 b, u32 c, u32 d);
+u8 sub_80B9C4C(u8 *a);
+
+// ASM
+void sub_80B9C6C(void *, u32, u8, void *);
+void sub_80B9F3C(void *, u8);
+void sub_80BA00C(u8);
+
+#endif // GUARD_RECORD_MIXING_H
diff --git a/include/rom4.h b/include/rom4.h
new file mode 100644
index 000000000..21a866d02
--- /dev/null
+++ b/include/rom4.h
@@ -0,0 +1,13 @@
+#ifndef GUARD_ROM4_H
+#define GUARD_ROM4_H
+
+void sav12_xor_increment(u8 index);
+void warp_in(void);
+void warp1_set(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
+void sub_805363C(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
+void sav1_reset_battle_music_maybe(void);
+u8 sav1_map_get_light_level(void);
+bool8 is_light_level_1_2_3_5_or_6(u8 a1);
+void CB2_LoadMap(void);
+
+#endif // GUARD_ROM4_H
diff --git a/include/rtc.h b/include/rtc.h
index 4c9d06d31..fdc5ad709 100644
--- a/include/rtc.h
+++ b/include/rtc.h
@@ -1,7 +1,7 @@
#ifndef GUARD_RTC_UTIL_H
#define GUARD_RTC_UTIL_H
-#include "global.h"
+#include "siirtc.h"
#define RTC_INIT_ERROR 0x0001
#define RTC_INIT_WARNING 0x0002
@@ -19,18 +19,30 @@
extern struct Time gLocalTime;
-void RtcInit();
-u16 RtcGetErrorStatus();
-void RtcReset();
+void RtcDisableInterrupts(void);
+void RtcRestoreInterrupts(void);
+u32 ConvertBcdToBinary(u8 bcd);
+bool8 IsLeapYear(u8 year);
+u16 ConvertDateToDayCount(u8 year, u8 month, u8 day);
+u16 RtcGetDayCount(struct SiiRtcInfo *rtc);
+void RtcInit(void);
+u16 RtcGetErrorStatus(void);
+void RtcGetInfo(struct SiiRtcInfo *rtc);
+void RtcGetDateTime(struct SiiRtcInfo *rtc);
+void RtcGetStatus(struct SiiRtcInfo *rtc);
+void RtcGetRawInfo(struct SiiRtcInfo *rtc);
+u16 RtcCheckInfo(struct SiiRtcInfo *rtc);
+void RtcReset(void);
void FormatDecimalTime(u8 *dest, s32 hour, s32 minute, s32 second);
void FormatHexTime(u8 *dest, s32 hour, s32 minute, s32 second);
void FormatHexRtcTime(u8 *dest);
void FormatDecimalDate(u8 *dest, s32 year, s32 month, s32 day);
void FormatHexDate(u8 *dest, s32 year, s32 month, s32 day);
-void RtcCalcLocalTime();
+void RtcCalcTimeDifference(struct SiiRtcInfo *rtc, struct Time *result, struct Time *t);
+void RtcCalcLocalTime(void);
void RtcInitLocalTimeOffset(s32 hour, s32 minute);
void RtcCalcLocalTimeOffset(s32 days, s32 hours, s32 minutes, s32 seconds);
void CalcTimeDifference(struct Time *result, struct Time *t1, struct Time *t2);
-u32 RtcGetMinuteCount();
+u32 RtcGetMinuteCount(void);
#endif // GUARD_RTC_UTIL_H
diff --git a/include/safari_zone.h b/include/safari_zone.h
new file mode 100644
index 000000000..f491be2f1
--- /dev/null
+++ b/include/safari_zone.h
@@ -0,0 +1,21 @@
+#ifndef GUARD_SAFARI_ZONE_H
+#define GUARD_SAFARI_ZONE_H
+
+bool32 GetSafariZoneFlag(void);
+void SetSafariZoneFlag(void);
+void ResetSafariZoneFlag(void);
+
+void EnterSafariMode(void);
+void ExitSafariMode(void);
+
+bool8 SafariZoneTakeStep(void);
+void SafariZoneRetirePrompt(void);
+void sub_80C824C(void);
+
+void SafariZoneGetPokeblockNameInFeeder(void);
+struct Pokeblock *unref_sub_80C8418(void);
+struct Pokeblock *SafariZoneGetActivePokeblock(void);
+void SafariZoneActivatePokeblockFeeder(u8 pokeblock_index);
+bool8 unref_sub_80C853C(void);
+
+#endif // GUARD_SAFARI_ZONE_H
diff --git a/include/save.h b/include/save.h
new file mode 100644
index 000000000..976af77c6
--- /dev/null
+++ b/include/save.h
@@ -0,0 +1,60 @@
+#ifndef GUARD_SAVE_H
+#define GUARD_SAVE_H
+
+struct SaveSectionLocation
+{
+ void *data;
+ u16 size;
+};
+
+struct SaveSection
+{
+ u8 data[0xFF4];
+ u16 id;
+ u16 checksum;
+ u32 unknown;
+ u32 counter;
+};
+
+struct UnkSaveSection
+{
+ u8 data[0xFF4];
+ u32 unknown;
+};
+
+void ClearSaveData(void);
+void sub_81251B8(void);
+bool32 sub_81251D4(u8 op, u8 bit);
+u8 save_write_to_flash(u16 a1, struct SaveSectionLocation *a2);
+u8 sub_81252D8(u16, struct SaveSectionLocation *);
+u8 sub_81253C8(u8 sector, u8 *data, u16 size);
+u8 sub_8125440(u8, u8 *);
+u32 sub_812546C(struct SaveSectionLocation *a1);
+u32 sub_81254C8(struct SaveSectionLocation *a1);
+u8 sub_812550C(u16 a1, struct SaveSectionLocation *a2);
+u8 sub_812556C(u16 a1, struct SaveSectionLocation *a2);
+u8 sub_81255B8(u16, struct SaveSectionLocation *);
+u8 sub_8125758(u16 a1, struct SaveSectionLocation *a2);
+u8 sub_81257F0(u16 a1, struct SaveSectionLocation *a2);
+u8 sub_812587C(u16 a1, struct SaveSectionLocation *a2);
+u8 sub_81258BC(u16, struct SaveSectionLocation *);
+u8 sub_8125974(struct SaveSectionLocation *);
+u8 sub_8125B88(u8 a1, u8 *data, u16 size);
+u8 sub_8125BF8(u8, struct SaveSection *);
+u16 sub_8125C10(void *, u16);
+u8 sub_8125C3C(u8 a1);
+u8 sub_8125D44(u8 a1);
+u8 sub_8125D80(void);
+bool8 sub_8125DA8(void);
+u8 sub_8125DDC(void);
+u8 sub_8125E04(void);
+u8 sub_8125E2C(void);
+u8 sub_8125E6C(void);
+u8 sub_8125EC8(u8 a1);
+bool8 unref_sub_8125F4C(struct UnkSaveSection *a1);
+u8 unref_sub_8125FA0(void);
+u8 unref_sub_8125FF0(u8 *data, u16 size);
+u8 unref_sub_8126068(u8 sector, u8 *data, u32 size);
+u8 unref_sub_8126080(u8 sector, u8 *data);
+
+#endif // GUARD_SAVE_H
diff --git a/include/save_menu_util.h b/include/save_menu_util.h
new file mode 100644
index 000000000..560a39d89
--- /dev/null
+++ b/include/save_menu_util.h
@@ -0,0 +1,16 @@
+#ifndef GUARD_SAVE_MENU_UTIL_H
+#define GUARD_SAVE_MENU_UTIL_H
+
+void HandleDrawSaveWindowInfo(s16 left, s16 top);
+void sub_80946C8(u16 left, u16 top);
+u8 sub_809473C(void);
+void PrintSavePlayerName(s16 x, s16 y);
+void PrintSaveMapName(s16 x, s16 y);
+void PrintSaveBadges(s16 x, s16 y);
+void PrintSavePokedexCount(s16 x, s16 y);
+void PrintSavePlayTime(s16 x, s16 y);
+u8 GetBadgeCount(void);
+u16 GetPokedexSeenCount(void);
+void FormatPlayTime(char *playtime, u16 hours, u16 minutes, bool16 colon);
+
+#endif // GUARD_SAVE_MENU_UTIL_H
diff --git a/include/script.h b/include/script.h
index 9b165bed2..a4c7dd575 100644
--- a/include/script.h
+++ b/include/script.h
@@ -39,7 +39,7 @@ void ScriptContext1_Init(void);
bool8 ScriptContext2_RunScript(void);
void ScriptContext1_SetupScript(u8 *ptr);
void ScriptContext1_Stop(void);
-void EnableBothScriptContexts();
+void EnableBothScriptContexts(void);
void ScriptContext2_RunNewScript(u8 *ptr);
u8 *mapheader_get_tagged_pointer(u8 tag);
void mapheader_run_script_by_tag(u8 tag);
diff --git a/include/siirtc.h b/include/siirtc.h
index 5864f95b8..de4fd634d 100644
--- a/include/siirtc.h
+++ b/include/siirtc.h
@@ -39,10 +39,10 @@ struct SiiRtcInfo
u8 alarmMinute;
};
-void SiiRtcUnprotect();
-void SiiRtcProtect();
-u8 SiiRtcProbe();
-bool8 SiiRtcReset();
+void SiiRtcUnprotect(void);
+void SiiRtcProtect(void);
+u8 SiiRtcProbe(void);
+bool8 SiiRtcReset(void);
bool8 SiiRtcGetStatus(struct SiiRtcInfo *rtc);
bool8 SiiRtcSetStatus(struct SiiRtcInfo *rtc);
bool8 SiiRtcGetDateTime(struct SiiRtcInfo *rtc);
diff --git a/include/start_menu.h b/include/start_menu.h
new file mode 100644
index 000000000..77bfe5d0e
--- /dev/null
+++ b/include/start_menu.h
@@ -0,0 +1,23 @@
+#ifndef GUARD_STARTER_CHOOSE_H
+#define GUARD_STARTER_CHOOSE_H
+
+//Public functions
+void CreateStartMenuTask(void (*func)(u8));
+void sub_80712B4(u8 taskId);
+void sub_8071310(void);
+u8 StartMenu_PokedexCallback(void);
+u8 StartMenu_PokemonCallback(void);
+u8 StartMenu_BagCallback(void);
+u8 StartMenu_PokenavCallback(void);
+u8 StartMenu_PlayerCallback(void);
+u8 StartMenu_SaveCallback(void);
+u8 StartMenu_OptionCallback(void);
+u8 StartMenu_ExitCallback(void);
+u8 StartMenu_RetireCallback(void);
+u8 StartMenu_PlayerLinkCallback(void);
+void InitSaveDialog(void);
+void sub_8071B28(void);
+void sub_8071C20(void);
+void AppendToList(u8 *list, u8 *pindex, u32 value);
+
+#endif // GUARD_STARTER_CHOOSE_H
diff --git a/include/starter_choose.h b/include/starter_choose.h
new file mode 100644
index 000000000..4a7e0514c
--- /dev/null
+++ b/include/starter_choose.h
@@ -0,0 +1,13 @@
+#ifndef GUARD_STARTER_CHOOSE_H
+#define GUARD_STARTER_CHOOSE_H
+
+#include "sprite.h"
+
+u16 GetStarterPokemon(u16);
+void CB2_ChooseStarter(void);
+void nullsub_72(struct Sprite *sprite);
+void sub_810A62C(struct Sprite *sprite);
+void sub_810A68C(struct Sprite *sprite);
+void StarterPokemonSpriteAnimCallback(struct Sprite *sprite);
+
+#endif // GUARD_STARTER_CHOOSE_H
diff --git a/include/string_util.h b/include/string_util.h
index fd7d39045..c20965380 100644
--- a/include/string_util.h
+++ b/include/string_util.h
@@ -1,8 +1,6 @@
#ifndef GUARD_STRING_UTIL_H
#define GUARD_STRING_UTIL_H
-#include "global.h"
-
enum StringConvertMode
{
STR_CONV_MODE_LEFT_ALIGN,
diff --git a/include/task.h b/include/task.h
index a536bcab5..d2b2302cf 100644
--- a/include/task.h
+++ b/include/task.h
@@ -15,15 +15,15 @@ struct Task
extern struct Task gTasks[];
-void ResetTasks();
+void ResetTasks(void);
u8 CreateTask(TaskFunc func, u8 priority);
void DestroyTask(u8 taskId);
-void RunTasks();
+void RunTasks(void);
void TaskDummy(u8 taskId);
void SetTaskFuncWithFollowupFunc(u8 taskId, TaskFunc func, TaskFunc followupFunc);
void SwitchTaskToFollowupFunc(u8 taskId);
bool8 FuncIsActiveTask(TaskFunc func);
u8 FindTaskIdByFunc(TaskFunc func);
-u8 GetTaskCount();
+u8 GetTaskCount(void);
#endif // GUARD_TASK_H
diff --git a/include/text.h b/include/text.h
index d79611f85..fb6dfe915 100644
--- a/include/text.h
+++ b/include/text.h
@@ -1,8 +1,6 @@
#ifndef GUARD_TEXT_H
#define GUARD_TEXT_H
-#include "global.h"
-
#define CHAR_SPACE 0x00
#define CHAR_QUESTION_MARK 0xAC
#define CHAR_HYPHEN 0xAE
diff --git a/include/text_window.h b/include/text_window.h
index f68db005a..6df3f7d33 100644
--- a/include/text_window.h
+++ b/include/text_window.h
@@ -1,15 +1,21 @@
#ifndef GUARD_TEXT_WINDOW_H
#define GUARD_TEXT_WINDOW_H
-#include "global.h"
+#include "text.h"
-u16 SetTextWindowBaseTileNum(u16);
-void LoadTextWindowGraphics(struct Window *);
-void LoadTextWindowGraphics_OverridePalSlot(struct Window *, u8);
-void LoadTextWindowGraphics_OverrideFrameType(struct Window *, u8);
+struct FrameGraphics
+{
+ u8 *tiles;
+ u16 *palette;
+};
+
+u16 SetTextWindowBaseTileNum(u16 baseTileNum);
+void LoadTextWindowGraphics(struct Window *win);
+void LoadTextWindowGraphics_OverridePalSlot(struct Window *win, u8 palSlot);
+void LoadTextWindowGraphics_OverrideFrameType(struct Window *win, u8 frameType);
void DrawTextWindow(struct Window *win, u8 left, u8 top, u8 right, u8 bottom);
const struct FrameGraphics *GetTextWindowFrameGraphics(u8 frameType);
-u16 SetMessageBoxBaseTileNum(u16);
+u16 SetMessageBoxBaseTileNum(u16 baseTileNum);
void unref_sub_80651DC(struct Window *, u8 *);
void DisplayMessageBox(struct Window *);
void DrawStandardMessageBox(struct Window *win);
diff --git a/include/tileset_anim.h b/include/tileset_anim.h
new file mode 100644
index 000000000..7556721d8
--- /dev/null
+++ b/include/tileset_anim.h
@@ -0,0 +1,30 @@
+#ifndef GUARD_TITLE_SCREEN_H
+#define GUARD_TITLE_SCREEN_H
+
+void sub_8072E74(void);
+void cur_mapheader_run_tileset_funcs_after_some_cpuset(void);
+void sub_8072ED0(void);
+void sub_8072EDC(void);
+void TilesetCB_General(void);
+void TilesetCB_Building(void);
+void TilesetCB_Petalburg(void);
+void TilesetCB_Rustboro(void);
+void TilesetCB_Dewford(void);
+void TilesetCB_Slateport(void);
+void TilesetCB_Mauville(void);
+void TilesetCB_Lavaridge(void);
+void TilesetCB_Fallarbor(void);
+void TilesetCB_Fortree(void);
+void TilesetCB_Lilycove(void);
+void TilesetCB_Mossdeep(void);
+void TilesetCB_EverGrande(void);
+void TilesetCB_Pacifidlog(void);
+void TilesetCB_Sootopolis(void);
+void TilesetCB_Underwater(void);
+void TilesetCB_SootopolisGym(void);
+void TilesetCB_Cave(void);
+void TilesetCB_EliteFour(void);
+void TilesetCB_MauvilleGym(void);
+void TilesetCB_BikeShop(void);
+
+#endif // GUARD_TITLE_SCREEN_H
diff --git a/include/title_screen.h b/include/title_screen.h
new file mode 100644
index 000000000..304ec0540
--- /dev/null
+++ b/include/title_screen.h
@@ -0,0 +1,13 @@
+#ifndef GUARD_TITLE_SCREEN_H
+#define GUARD_TITLE_SCREEN_H
+
+#include "sprite.h"
+
+void SpriteCallback_VersionBannerLeft(struct Sprite *sprite);
+void SpriteCallback_VersionBannerRight(struct Sprite *sprite);
+void SpriteCallback_PressStartCopyrightBanner(struct Sprite *sprite);
+void SpriteCallback_PokemonLogoShine(struct Sprite *sprite);
+
+void CB2_InitTitleScreen(void);
+
+#endif // GUARD_TITLE_SCREEN_H
diff --git a/include/trainer_see.h b/include/trainer_see.h
new file mode 100644
index 000000000..281c7b158
--- /dev/null
+++ b/include/trainer_see.h
@@ -0,0 +1,35 @@
+#ifndef GUARD_TRAINER_SEE_H
+#define GUARD_TRAINER_SEE_H
+
+#include "task.h"
+
+bool8 CheckTrainers(void);
+bool8 CheckTrainer(u8);
+u8 TrainerCanApproachPlayer(struct MapObject *);
+bool8 IsTrainerInRangeSouth(struct MapObject *trainerObj, s16 vision, s16 x, s16 y);
+bool8 IsTrainerInRangeNorth(struct MapObject *trainerObj, s16 vision, s16 x, s16 y);
+bool8 IsTrainerInRangeWest(struct MapObject *trainerObj, s16 vision, s16 x, s16 y);
+bool8 IsTrainerInRangeEast(struct MapObject *trainerObj, s16 vision, s16 x, s16 y);
+bool8 CheckPathBetweenTrainerAndPlayer(struct MapObject2 *, u8, u8);
+void sub_80842C8(struct MapObject *, u8);
+void sub_80842FC(void (*func)(u8));
+void RunTrainerSeeFuncList(u8);
+u8 sub_8084394(void);
+s8 sub_8084398(u8 taskId, struct Task *task, struct MapObject *trainerObj);
+s8 sub_80843DC(u8 taskId, struct Task *task, struct MapObject *trainerObj);
+s8 sub_808441C(u8 taskId, struct Task *task, struct MapObject *trainerObj);
+s8 sub_8084478(u8 taskId, struct Task *task, struct MapObject *trainerObj);
+s8 sub_8084534(u8 taskId, struct Task *task, struct MapObject *trainerObj);
+s8 sub_8084578(u8 taskId, struct Task *task, struct MapObject *trainerObj);
+s8 sub_80845AC(u8 taskId, struct Task *task, struct MapObject *trainerObj);
+s8 sub_80845C8(u8 taskId, struct Task *task, struct MapObject *trainerObj);
+s8 sub_80845FC(u8 taskId, struct Task *task, struct MapObject *trainerObj);
+s8 sub_8084654(u8 taskId, struct Task *task, struct MapObject *trainerObj);
+s8 sub_80846C8(u8 taskId, struct Task *task, struct MapObject *trainerObj);
+void sub_80846E4(u8 taskId);
+void sub_8084794(u32 var);
+void sub_80847C8(void);
+void sub_80847D8(u8);
+void sub_80847D8(u8);
+
+#endif // GUARD_TRAINER_SEE_H
diff --git a/include/truck_scene.h b/include/truck_scene.h
new file mode 100644
index 000000000..f55a4ced7
--- /dev/null
+++ b/include/truck_scene.h
@@ -0,0 +1,13 @@
+#ifndef GUARD_TRUCK_SCENE_H
+#define GUARD_TRUCK_SCENE_H
+
+s32 GetTruckCameraBobbingY(int a1);
+s32 GetTruckBoxMovement(int a1);
+void Task_Truck1(u8 taskId);
+void Task_Truck2(u8 taskId);
+void Task_Truck3(u8 taskId);
+void Task_HandleTruckSequence(u8 taskId);
+void ExecuteTruckSequence(void);
+void EndTruckSequence(void);
+
+#endif // GUARD_TRUCK_SCENE_H
diff --git a/include/var.h b/include/var.h
index c76b8c411..ada8caf24 100644
--- a/include/var.h
+++ b/include/var.h
@@ -1,8 +1,6 @@
#ifndef GUARD_VAR_H
#define GUARD_VAR_H
-#include "vars.h"
-
u16 *GetVarPointer(u16 id);
u16 VarGet(u16 id);
bool8 VarSet(u16 id, u16 value);
diff --git a/include/wallclock.h b/include/wallclock.h
new file mode 100644
index 000000000..be3111ab1
--- /dev/null
+++ b/include/wallclock.h
@@ -0,0 +1,14 @@
+#ifndef GUARD_WALLCLOCK_H
+#define GUARD_WALLCLOCK_H
+
+#include "sprite.h"
+
+void Cb2_StartWallClock(void);
+void Cb2_ViewWallClock(void);
+
+void sub_810B05C(struct Sprite *sprite);
+void sub_810B0F4(struct Sprite *sprite);
+void sub_810B18C(struct Sprite *sprite);
+void sub_810B230(struct Sprite *sprite);
+
+#endif // GUARD_WALLCLOCK_H
diff --git a/include/weather.h b/include/weather.h
new file mode 100644
index 000000000..a6ca2262c
--- /dev/null
+++ b/include/weather.h
@@ -0,0 +1,40 @@
+#ifndef GUARD_WEATHER_H
+#define GUARD_WEATHER_H
+
+void sub_807C828(void);
+void DoWeatherEffect(u8 effect);
+void sub_807C988(u8 effect);
+void sub_807C9B4(u8 effect);
+void sub_807C9E4(u8);
+void sub_807CA34(u8);
+void sub_807CAE8(void);
+void nullsub_38(void);
+u32 sub_807CB0C(void);
+void sub_807CB10(void);
+void sub_807CC24(void);
+void sub_807CCAC(void);
+u8 sub_807CDC4(void);
+u8 sub_807CE24(void);
+u8 sub_807CE7C(void);
+void nullsub_39(void);
+
+// ASM
+void sub_807CEBC(u8, u8, s8);
+void sub_807D1BC(u8, u8, u8, u8, u16);
+void sub_807D304(int, u8, u16);
+void sub_807D424(u8, u16);
+// ...
+void fade_screen(u8, u8);
+// ...
+void sub_807D78C(u8 tag);
+void sub_807D874(u8);
+// ...
+void sub_807DB64(u8, u8);
+// ...
+void SetSav1Weather(u32);
+u8 GetSav1Weather(void);
+void sub_80806E4(void);
+// ...
+void sub_808073C(void);
+
+#endif // GUARD_WEATHER_H
diff --git a/include/wild_encounter.h b/include/wild_encounter.h
new file mode 100644
index 000000000..33b7df7b9
--- /dev/null
+++ b/include/wild_encounter.h
@@ -0,0 +1,14 @@
+#ifndef GUARD_WILD_ENCOUNTER_H
+#define GUARD_WILD_ENCOUNTER_H
+
+void DisableWildEncounters(bool8 disabled);
+bool8 StandardWildEncounter(u16 a, u16 b);
+void RockSmashWildEncounter(void);
+bool8 SweetScentWildEncounter(void);
+bool8 GetFishingWildMonListHeader(void);
+void FishingWildEncounter(u8 rod);
+u16 GetLocalWildMon(bool8 *isWaterMon);
+u16 GetMirageIslandMon(void);
+bool8 UpdateRepelCounter(void);
+
+#endif // GUARD_WILD_ENCOUNTER_H
diff --git a/src/battle_setup.c b/src/battle_setup.c
index 15b09645f..fd44d2fc6 100644
--- a/src/battle_setup.c
+++ b/src/battle_setup.c
@@ -1,11 +1,15 @@
#include "global.h"
+#include "battle_setup.h"
+#include "safari_zone.h"
+#include "weather.h"
+#include "palette.h"
+#include "field_player_avatar.h"
+#include "rom4.h"
#include "battle.h"
#include "main.h"
#include "species.h"
-#include "pokemon.h"
#include "songs.h"
#include "task.h"
-#include "fieldmap.h"
#include "string_util.h"
#include "rng.h"
#include "flag.h"
@@ -13,6 +17,7 @@
#include "script.h"
#include "field_message_box.h"
#include "trainer.h"
+#include "starter_choose.h"
#define NUM_TRAINER_EYE_TRAINERS 56
#define TRAINER_REMATCH_STEPS 255
@@ -23,28 +28,28 @@ extern void current_map_music_set__default_for_battle(u16);
extern void c2_exit_to_overworld_1_continue_scripts_restart_music(void);
extern void c2_exit_to_overworld_2_switch(void);
extern void npc_set_running_behaviour_etc(struct MapObject *, u8);
+extern u8 npc_running_behaviour_by_direction(u8);
extern void c2_whiteout(void);
extern void sub_800E7C4(void);
extern void sub_8081AA4(void);
extern void sub_8081A18(void);
extern void sub_8081C8C(void);
-extern void sub_80C824C(void);
extern void sub_8081CEC(void);
extern void sub_8080E44(void);
extern void sub_80821D8(void);
extern void sub_8082228(void);
extern void sub_808260C(void);
extern void sub_8082CB8(void);
+extern void sub_811AAD8(u8);
extern u8 *sub_80BCCE8(void);
-extern void CB2_ChooseStarter(void);
extern void sub_811AABC(u8);
extern u8 sub_811AAE8(void);
extern u8 GetFieldObjectIdByLocalIdAndMap(u8, u8, u8);
extern u8 *sub_8082880(void);
extern u8 sub_803FC58(u16);
extern bool32 FieldPoisonEffectIsRunning(void);
-extern bool32 GetSafariZoneFlag(void);
extern void player_bitmagic(void);
+extern void sub_80408BC();
u8 GetWildBattleTransition(void);
u8 GetTrainerBattleTransition(void);
@@ -99,7 +104,6 @@ struct TrainerEyeTrainer
u16 mapNum;
};
-extern u16 MapGridGetMetatileBehaviorAt(s16, s16);
extern bool8 MetatileBehavior_IsTallGrass(char);
extern bool8 MetatileBehavior_IsLongGrass(char);
extern bool8 MetatileBehavior_IsSandOrDeepSand(char);
@@ -108,9 +112,7 @@ extern bool8 MetatileBehavior_IsBridge(char);
extern bool8 sub_80574C4(char);
extern bool8 sub_80574D8(char);
extern bool8 sub_8057568(char);
-extern u8 TestPlayerAvatarFlags(u8);
extern u8 sub_8057450(u8);
-extern u8 GetSav1Weather(void);
extern void PlayNewMapMusic(u16);
extern u8 ScriptGiveMon(u16, u8, u16, u32, u32, u8);
diff --git a/src/berry.c b/src/berry.c
index e00015477..2d7b50e2b 100644
--- a/src/berry.c
+++ b/src/berry.c
@@ -1,19 +1,17 @@
#include "global.h"
+#include "item.h"
+#include "main.h"
#include "text.h"
+#include "rng.h"
#define FIRST_BERRY 0x85 // ITEM_CHERI_BERRY
#define LAST_BERRY 0xaf // ITEM_ENIGMA_BERRY
extern u8 GetStageByBerryTreeId(u8);
extern u16 GetStageDurationByBerryType(u8);
-extern void SetMainCallback2(void*);
extern void sub_80A68CC();
-extern u16 Random(void);
extern u8 sub_8060234(u8, u8, u8);
-extern u8 AddBagItem(u16, u8);
extern void sub_8060288(u8, u8, u8);
-extern u8 IsBagPocketNonEmpty(u8);
-extern void GetCameraCoords(s16*, s16*);
extern u8 FieldObjectGetBerryTreeId(u8);
extern u8 *GetFieldObjectScriptPointerForComparison();
diff --git a/src/clear_save_data_menu.c b/src/clear_save_data_menu.c
index 22fc8cc13..7e00223ce 100644
--- a/src/clear_save_data_menu.c
+++ b/src/clear_save_data_menu.c
@@ -1,4 +1,6 @@
#include "global.h"
+#include "clear_save_data_menu.h"
+#include "save.h"
#include "task.h"
#include "songs.h"
#include "menu.h"
@@ -6,7 +8,6 @@
#include "sprite.h"
#include "palette.h"
#include "sound.h"
-#include "clear_save_data_menu.h"
extern u8 gSystemText_ClearAllSaveDataPrompt[];
extern u8 gSystemText_ClearingData[];
diff --git a/src/coins.c b/src/coins.c
index acd8c6e10..c07a0c7c7 100644
--- a/src/coins.c
+++ b/src/coins.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "coins.h"
#include "menu.h"
#include "string_util.h"
@@ -6,7 +7,6 @@
extern u8 gOtherText_Coins2[];
-void PrintCoins(s32, u8, u8, u8);
void UpdateCoinsWindow(s32 a, u8 b, u8 c)
{
diff --git a/src/decompress.c b/src/decompress.c
index b38acc7b2..16c9f39ed 100644
--- a/src/decompress.c
+++ b/src/decompress.c
@@ -1,6 +1,6 @@
#include "global.h"
+#include "decompress.h"
#include "species.h"
-#include "sprite.h"
#define WRAM 0x02000000
@@ -10,8 +10,6 @@ extern void *gUnknown_081FAF4C[];
extern void DrawSpindaSpots(u16, u32, void *, u8);
-void sub_800D378(const struct SpriteSheet *a, u32 b, u32 c, u32 d, void *e, s32 f, u32 g, u32 h);
-
void sub_800D238(const void *src, void *dest)
{
LZ77UnCompWram(src, dest);
diff --git a/src/field_camera.c b/src/field_camera.c
index 02db33bf2..1986e33d7 100644
--- a/src/field_camera.c
+++ b/src/field_camera.c
@@ -1,5 +1,7 @@
#include "global.h"
-#include "fieldmap.h"
+#include "field_camera.h"
+#include "field_player_avatar.h"
+#include "asm_fieldmap.h"
#include "sprite.h"
#include "text.h"
@@ -7,12 +9,8 @@ extern u16 gBGTilemapBuffers[4][0x400];
//ToDo: argument types
-extern u8 MapGridGetMetatileLayerTypeAt();
-extern u8 player_get_direction_upper_nybble(void);
extern void ResetBerryTreeSparkleFlags(void);
extern void RotatingGatePuzzleCameraUpdate(s16, s16);
-extern int MapGridGetMetatileIdAt(int, int);
-extern int CameraMove(int, int);
extern u8 gUnknown_0202E854;
diff --git a/src/field_door.c b/src/field_door.c
index 68c884af1..8aac6cce3 100644
--- a/src/field_door.c
+++ b/src/field_door.c
@@ -1,5 +1,6 @@
#include "global.h"
#include "task.h"
+#include "field_camera.h"
extern u8 MetatileBehavior_IsDoor(u8);
diff --git a/src/field_effect.c b/src/field_effect.c
index 97301ab50..480e970ab 100644
--- a/src/field_effect.c
+++ b/src/field_effect.c
@@ -1,4 +1,6 @@
#include "global.h"
+#include "field_effect.h"
+#include "weather.h"
#include "sprite.h"
typedef bool8 (*FldEffCmd)(u8 **, u32 *);
diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c
index 6719f6c3a..be9d07582 100644
--- a/src/field_player_avatar.c
+++ b/src/field_player_avatar.c
@@ -1,5 +1,7 @@
#include "global.h"
-#include "fieldmap.h"
+#include "field_player_avatar.h"
+#include "field_map_obj.h"
+#include "rom4.h"
#include "flag.h"
#include "main.h"
#include "menu.h"
@@ -7,8 +9,10 @@
#include "script.h"
#include "songs.h"
#include "sound.h"
-#include "sprite.h"
#include "task.h"
+#include "field_effect.h"
+#include "wild_encounter.h"
+#include "asm_fieldmap.h"
struct UnknownStruct
{
@@ -34,19 +38,12 @@ extern u8 FieldObjectClearAnimIfSpecialAnimFinished(struct MapObject *);
extern u8 FieldObjectGetSpecialAnim(struct MapObject *);
extern bool8 FieldObjectSetSpecialAnim(struct MapObject *, u8);
extern void FieldObjectClearAnim(struct MapObject *);
-extern u8 sub_80E5DEC(u8);
extern s16 sub_80E6034(void);
-extern u8 player_get_direction_upper_nybble(void);
-extern u8 player_get_direction_lower_nybble(void);
-extern u8 MapGridGetMetatileBehaviorAt(s32, s32);
-extern u32 FieldEffectStart(u8);
-extern void PlayerGetDestCoords(s16 *, s16 *);
extern bool8 MetatileBehavior_IsSurfableFishableWater(u8);
extern bool8 FieldObjectCheckIfSpecialAnimFinishedOrInactive(struct MapObject *);
extern void sub_806451C(void);
extern void sub_805B980(struct MapObject *, u8);
extern void sub_8127ED0(u8, u8);
-extern bool8 player_should_look_direction_be_enforced_upon_movement(void);
extern bool8 is_tile_x69_2_warp_door(u8);
extern bool8 pokemon_has_move(struct Pokemon *, u8);
extern u8 GetSimpleGoAnimId(u8);
@@ -56,19 +53,16 @@ extern u8 GetOppositeDirection(u8);
extern u8 GetFaceDirectionAnimId(u8);
extern u8 sub_80608D0(u8);
extern bool8 GetFishingWildMonListHeader(void);
-extern void FishingWildEncounter(u8);
extern u8 npc_block_way(struct MapObject *, s16, s16, u8);
extern u8 GetFieldObjectIdByXY(s16, s16);
extern u8 sub_8056F08(u8);
extern u8 GetLedgeJumpDirection(s16, s16, u8);
extern u8 GetFieldObjectIdByXYZ(u16, u16, int);
-extern u8 MapGridGetZCoordAt();
extern u32 CheckForRotatingGatePuzzleCollision(u8, s16, s16);
extern u8 sub_805FDF8(u8);
extern void sub_80BE97C(u8);
extern void sub_8127F28(u8, u8, s16);
extern u8 sub_805FE08(u8);
-extern void sav1_reset_battle_music_maybe(void);
extern void FieldObjectClearAnimIfSpecialAnimActive(struct MapObject *);
extern u8 FieldObjectDirectionToImageAnimId(u8);
extern u8 sub_805FD98(u8);
@@ -85,9 +79,28 @@ extern u8 sub_8060AE0(u8);
extern u8 sub_8060B0C(u8);
extern u8 sub_8060B38(u8);
extern u8 sub_8060B64(u8);
-extern void MovePlayerOnBike(u8, u16, u16);
extern void objid_set_invisible(u8);
extern void FieldObjectTurn(struct MapObject *, u8);
+extern u8 sub_8128124(u8 id);
+extern u8 sub_80607F4(u8 a);
+extern u8 GetGoSpeed0AnimId(u8 a);
+extern u8 sub_8060744(u8 a);
+extern u8 d2s_08064034(u8 a);
+extern u8 sub_806079C(u8 a);
+extern void FieldObjectForceSetSpecialAnim(struct MapObject *pObject, u8 a);
+extern u8 GetStepInPlaceDelay8AnimId(u8 a);
+extern u8 GetStepInPlaceDelay32AnimId(u8 a);
+extern u8 GetJumpLedgeAnimId(u8 a);
+
+// Bike
+extern void MovePlayerOnBike(u8, u16, u16);
+extern void sub_80E5B38(u16 i, u16 c);
+extern u8 sub_80E5DEC(u8);
+extern bool8 player_should_look_direction_be_enforced_upon_movement(void);
+extern void sub_80E5FCC(int i, int i1);
+extern void sub_80E6010(int i);
+extern void sub_80E6084();
+extern void sub_8126BC4(u8 unk_1B, u8 r6, s16 x, s16 y);
extern u8 gOtherText_OhABite[];
extern u8 gOtherText_PokeOnHook[];
diff --git a/src/fldeff_emotion.c b/src/fldeff_emotion.c
index 06eb7bd9e..81ab135c4 100644
--- a/src/fldeff_emotion.c
+++ b/src/fldeff_emotion.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "sprite.h"
-#include "fieldmap.h"
+#include "asm_fieldmap.h"
+#include "field_effect.h"
extern u32 gUnknown_0202FF84[];
@@ -9,7 +10,6 @@ extern struct SpriteTemplate gSpriteTemplate_839B528;
bool8 TryGetFieldObjectIdByLocalIdAndMap(u8, u8, u8, u8 *);
-void FieldEffectStop(struct Sprite *sprite, u16 a2);
void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3);
void objc_exclamation_mark_probably(struct Sprite *sprite);
diff --git a/src/heal_location.c b/src/heal_location.c
index da2e466a9..13bb125b6 100644
--- a/src/heal_location.c
+++ b/src/heal_location.c
@@ -1,15 +1,8 @@
#include "global.h"
+#include "heal_location.h"
#define NUM_HEAL_LOCATIONS 22
-struct HealLocation
-{
- s8 group;
- s8 map;
- u16 x;
- u16 y;
-};
-
extern const struct HealLocation gHealLocations[];
u32 GetHealLocationIndexByMap(u16 mapGroup, u16 mapNum)
diff --git a/src/intro.c b/src/intro.c
index ac51e456c..3d32cb18e 100644
--- a/src/intro.c
+++ b/src/intro.c
@@ -1,4 +1,12 @@
#include "global.h"
+#include "intro.h"
+#include "gba/m4a_internal.h"
+#include "m4a.h"
+#include "libgncmultiboot.h"
+#include "save.h"
+#include "decompress.h"
+#include "title_screen.h"
+#include "new_game.h"
#include "link.h"
#include "main.h"
#include "palette.h"
@@ -6,16 +14,9 @@
#include "songs.h"
#include "sound.h"
#include "species.h"
-#include "sprite.h"
#include "task.h"
#include "trig.h"
-struct GcmbStruct
-{
- u16 gcmb_field_0;
- u8 gcmb_field_2;
-};
-
extern u16 gUnknown_02039318;
extern u16 gUnknown_0203931A;
extern u16 gUnknown_02039358;
@@ -59,12 +60,38 @@ extern const u8 gIntroCopyright_Gfx[];
extern const u16 gIntroCopyright_Pal[];
extern const u16 gIntroCopyright_Tilemap[];
-extern void LoadCompressedObjectPic(const struct SpriteSheet *);
-extern void LoadCompressedObjectPalette(const struct SpritePalette *);
-extern void CB2_InitTitleScreen(void);
+// rom_813BA94
+extern void sub_813CAF4(u8);
+extern void intro_reset_and_hide_bgs(void);
+extern void sub_813CCE8(u8);
+extern void sub_813CE30(u16, u16, u16, u16);
+extern u8 sub_813CE88(/*TODO: arg types*/);
+extern u8 sub_813CFA8(/*TODO: arg types*/);
+extern void sub_813D084(/*TODO: arg types*/);
+extern u8 sub_813D584(/*TODO: arg types*/);
+extern void sub_813D788(struct Sprite *);
+extern void sub_813D880(struct Sprite *);
+extern void sub_813D954(/*TODO: arg types*/);
+extern void sub_813DB9C(struct Sprite *);
+extern void sub_813DE70(struct Sprite *);
+extern void sub_813E10C(struct Sprite *);
+extern void sub_813E210(struct Sprite *);
+extern void sub_813E7C0(u8);
+extern void sub_813E930(/*TODO: arg types*/);
+extern void sub_813EB4C(u8);
+extern void sub_813EDBC(/*TODO: arg types*/);
+
+// rom_8148B8C
+extern void load_intro_part2_graphics(/*TODO: arg types*/);
+extern void sub_8148C78(/*TODO: arg types*/);
extern u8 sub_8148EC0(/*TODO: arg types*/);
+extern void sub_8149020(/*TODO: arg types*/);
extern u8 intro_create_brendan_sprite(/*TODO: arg types*/);
extern u8 intro_create_may_sprite(/*TODO: arg types*/);
+extern u8 intro_create_latios_sprite(/*TODO: arg types*/);
+extern u8 intro_create_latias_sprite(/*TODO: arg types*/);
+
+extern void remove_some_task(void);
static void MainCB2_EndIntro(void);
static void Task_IntroLoadPart1Graphics(u8);
@@ -86,22 +113,6 @@ static void task_intro_16(u8);
static void task_intro_17(u8);
static void Task_IntroPokemonBattle(u8);
static void task_intro_19(u8);
-void sub_813CAF4(u8);
-void intro_reset_and_hide_bgs(void);
-void sub_813CCE8(u8);
-void sub_813CE30(u16, u16, u16, u16);
-u8 sub_813CE88(/*TODO: arg types*/);
-u8 sub_813CFA8(/*TODO: arg types*/);
-u8 sub_813D584(/*TODO: arg types*/);
-void sub_813D788(struct Sprite *);
-void sub_813D880(struct Sprite *);
-sub_813D954(/*TODO: arg types*/);
-void sub_813DB9C(struct Sprite *);
-void sub_813DE70(struct Sprite *);
-void sub_813E10C(struct Sprite *);
-void sub_813E210(struct Sprite *);
-void sub_813E7C0(u8);
-void sub_813EB4C(u8);
static void VBlankCB_Intro(void)
{
diff --git a/src/item.c b/src/item.c
index 8bc0cf0f0..84ab4c1c8 100644
--- a/src/item.c
+++ b/src/item.c
@@ -1,5 +1,5 @@
#include "global.h"
-#include "berry.h"
+#include "item.h"
#include "string_util.h"
extern struct Berry *GetBerryInfo(u8 berry);
@@ -7,8 +7,6 @@ extern struct Berry *GetBerryInfo(u8 berry);
extern u8 gOtherText_Berry2[];
extern u8 gUnknown_02038560;
-typedef void (*ItemUseFunc)(u8);
-
struct Item
{
u8 name[14];
@@ -46,8 +44,6 @@ enum
KEYITEMS_POCKET
};
-struct Item *ItemId_GetItem(u16);
-u8 ItemId_GetPocket(u16);
static void CompactPCItems(void);
void CopyItemName(u16 itemId, u8 *string)
diff --git a/src/landmark.c b/src/landmark.c
index aa4d8c6fa..4657a0083 100644
--- a/src/landmark.c
+++ b/src/landmark.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "landmark.h"
#include "flag.h"
#define MAPSEC_NONE 0x58
diff --git a/src/link.c b/src/link.c
index 47820185c..2208390da 100644
--- a/src/link.c
+++ b/src/link.c
@@ -9,6 +9,7 @@
#include "rng.h"
#include "menu.h"
#include "sound.h"
+#include "save.h"
#define SIO_MULTI_CNT ((struct SioMultiCnt *)REG_ADDR_SIOCNT)
diff --git a/src/lottery_corner.c b/src/lottery_corner.c
index c807237af..f073688e0 100644
--- a/src/lottery_corner.c
+++ b/src/lottery_corner.c
@@ -1,5 +1,5 @@
#include "global.h"
-#include "pokemon.h"
+#include "lottery_corner.h"
#include "rng.h"
#include "string_util.h"
#include "var.h"
@@ -14,8 +14,6 @@ extern u16 gSpecialVar_0x8006;
static EWRAM_DATA u16 sWinNumberDigit = 0;
static EWRAM_DATA u16 sOtIdDigit = 0;
-void sub_8145D14(u32);
-u32 sub_8145D3C(void);
static u8 GetMatchingDigits(u16, u16);
void sub_8145A78(void)
diff --git a/src/main.c b/src/main.c
index ef7e76df6..0023925f8 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1,12 +1,15 @@
#include "global.h"
+#include "main.h"
+#include "play_time.h"
+#include "m4a.h"
#include "gba/m4a_internal.h"
#include "gba/flash_internal.h"
#include "siirtc.h"
-#include "main.h"
#include "rtc.h"
#include "link.h"
#include "rng.h"
#include "sound.h"
+#include "intro.h"
extern struct SoundInfo gSoundInfo;
extern u32 gUnknown_3004820;
@@ -64,7 +67,6 @@ EWRAM_DATA void (*gFlashTimerIntrFunc)(void) = NULL;
extern void sub_800C35C(void);
extern void remove_some_task(void);
-extern void c2_copyright_1();
extern u32 sub_80558AC(void);
extern u32 sub_8055910(void);
extern u32 sub_8055940(void);
diff --git a/src/main_menu.c b/src/main_menu.c
index 966f93f0d..eb5867d5d 100644
--- a/src/main_menu.c
+++ b/src/main_menu.c
@@ -1,4 +1,6 @@
#include "global.h"
+#include "save_menu_util.h"
+#include "option_menu.h"
#include "text.h"
#include "sprite.h"
#include "task.h"
@@ -11,6 +13,8 @@
#include "pokemon.h"
#include "menu.h"
#include "sound.h"
+#include "title_screen.h"
+#include "decompress.h"
#define BirchSpeechUpdateWindowText() ((u8)MenuUpdateWindowText_OverrideLineLength(24))
@@ -19,15 +23,8 @@ extern void CreatePokeballSprite(u8 r0, u8 r1, u8 r2, u8 r3, u8 s1, u8 s2, u8 s3
extern bool32 IsMysteryGiftAvailable(void);
extern void CB2_ContinueSavedGame(void);
extern void CB2_InitMysteryEventMenu(void);
-extern void CB2_InitOptionMenu(void);
-extern void CB2_InitTitleScreen(void);
-extern void FormatPlayTime(u8 *str, u16 hours, u16 minutes, bool16 colon);
-extern u16 GetPokedexSeenCount(void);
-extern u8 GetBadgeCount(void);
extern void DoNamingScreen(u8 r0, struct SaveBlock2 *r1, u16 r2, u16 r3, u8 s0, MainCallback s4);
extern void CB2_NewGame(void);
-extern void DecompressPicFromTable_2(const struct SpriteSheet *, u8, u8, void *, void *, u32);
-extern void LoadCompressedObjectPalette(const struct SpritePalette *);
extern u8 CreateBirchSprite(u8, u8, u8);
extern u8 CreateTrainerSprite_BirchSpeech(u8, u16, u16, u8, void *);
diff --git a/src/map_obj_80643A4.c b/src/map_obj_80643A4.c
index 8e2faf268..d30fab49c 100644
--- a/src/map_obj_80643A4.c
+++ b/src/map_obj_80643A4.c
@@ -1,10 +1,10 @@
#include "global.h"
#include "sprite.h"
-#include "fieldmap.h"
+#include "asm_fieldmap.h"
+#include "field_effect.h"
extern void SetObjectSubpriorityByZCoord(u8, struct Sprite *, u8);
extern u8 FieldObjectDirectionToImageAnimId(u8);
-extern u32 FieldEffectStart(u8);
extern void FieldObjectGetLocalIdAndMap(struct MapObject *, u8 *, u8 *, u8 *);
extern struct MapObjectGraphicsInfo *GetFieldObjectGraphicsInfo(u8);
diff --git a/src/map_obj_lock.c b/src/map_obj_lock.c
index 422903a97..bbe08ac37 100644
--- a/src/map_obj_lock.c
+++ b/src/map_obj_lock.c
@@ -1,9 +1,8 @@
#include "global.h"
+#include "map_obj_lock.h"
+#include "field_player_avatar.h"
#include "task.h"
-#include "fieldmap.h"
-extern void sub_80594C0(void);
-extern void sub_80597F4(void);
extern void player_bitmagic(void);
extern void sub_80643A4(struct MapObject *);
extern void sub_8064470(u8);
diff --git a/src/menu.c b/src/menu.c
index 5744df4c1..3b0440afb 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -5,6 +5,7 @@
#include "songs.h"
#include "text_window.h"
#include "sound.h"
+#include "menu_cursor.h"
struct Menu
{
@@ -27,12 +28,6 @@ static u8 sub_80724F4(u8, u8, u8, u8 * const [][2], u8);
static void sub_8072620(u8, u8, u8, u8 * const [][2], u8);
static void sub_8072D18(u8, u8);
-extern void sub_814A5C0(u8, u16, u8, u16, u8);
-extern void sub_814A880(u8, u8);
-extern void sub_814A904(void);
-extern void sub_814A958(u8);
-extern void sub_814A7FC(void);
-
static struct Menu gMenu;
EWRAM_DATA struct Window gMenuWindow = {0};
@@ -46,7 +41,7 @@ EWRAM_DATA u16 gMenuMessageBoxContentTileOffset = 0;
extern const u8 *gUnknown_08376D74[][2];
-void InitMenuWindow(struct WindowConfig *winConfig)
+void InitMenuWindow(const struct WindowConfig *winConfig)
{
InitMenuWindowInternal(winConfig, 1);
}
diff --git a/src/menu_cursor.c b/src/menu_cursor.c
index 21e4d9d58..c87716f01 100644
--- a/src/menu_cursor.c
+++ b/src/menu_cursor.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "menu_cursor.h"
#include "sprite.h"
#include "palette.h"
@@ -29,11 +30,6 @@ extern u8 gUnknown_0203A3D2;
extern u8 gUnknown_0203A3D3;
extern u8 gUnknown_0203A3D4;
-void sub_814A7FC(void);
-void sub_814A958(u8 a1);
-void sub_814AD44(void);
-void sub_814ADF4(u8 a1);
-
void sub_814A590(void)
{
gUnknown_0203A3D0 = 0x40;
diff --git a/src/mori_debug_menu.c b/src/mori_debug_menu.c
index 139650c12..3353ec58e 100644
--- a/src/mori_debug_menu.c
+++ b/src/mori_debug_menu.c
@@ -1,8 +1,10 @@
+#include "global.h"
+#include "mori_debug_menu.h"
+#include "start_menu.h"
+#include "menu.h"
#include "main.h"
#include "string_util.h"
-#include "pokemon.h"
-extern void sub_8071C20(void);
extern u16 sub_8041870(u16);
extern void sub_810CA6C(s32);
extern u8 (*gCallback_03004AE8)(void);
diff --git a/src/new_game.c b/src/new_game.c
index 3225ba2bd..97a6c6ee0 100644
--- a/src/new_game.c
+++ b/src/new_game.c
@@ -1,9 +1,13 @@
#include "global.h"
+#include "new_game.h"
+#include "play_time.h"
+#include "pokemon_size_record.h"
+#include "script.h"
+#include "rom4.h"
+#include "pokedex.h"
+#include "lottery_corner.h"
#include "rng.h"
#include "rtc.h"
-#include "pokemon.h"
-
-extern void warp1_set(s8, s8, s8, s8, s8);
extern u8 gUnknown_020297EC;
diff --git a/src/option_menu.c b/src/option_menu.c
index ede91acf0..6d6310b46 100644
--- a/src/option_menu.c
+++ b/src/option_menu.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "option_menu.h"
#include "main.h"
#include "menu.h"
#include "palette.h"
diff --git a/src/palette.c b/src/palette.c
index 243c0c87b..53ade0105 100644
--- a/src/palette.c
+++ b/src/palette.c
@@ -1,5 +1,6 @@
#include "global.h"
#include "palette.h"
+#include "decompress.h"
enum
{
@@ -37,7 +38,6 @@ struct PaletteStruct
u8 ps_field_9;
};
-extern void sub_800D238(const void *src, void *dest);
extern void BlendPalette(u16, u16, u8, u16);
EWRAM_DATA u16 gPlttBufferUnfaded[0x200] = {0};
diff --git a/src/play_time.c b/src/play_time.c
index 4eabf38cc..9882c9c4b 100644
--- a/src/play_time.c
+++ b/src/play_time.c
@@ -10,8 +10,6 @@ enum
static u8 sPlayTimeCounterState;
-void PlayTimeCounter_SetToMax();
-
void PlayTimeCounter_Reset()
{
sPlayTimeCounterState = STOPPED;
diff --git a/src/pokedex.c b/src/pokedex.c
index 8dfc4212c..c7f3b5f5c 100644
--- a/src/pokedex.c
+++ b/src/pokedex.c
@@ -1,65 +1,16 @@
#include "global.h"
+#include "pokedex.h"
+#include "gba/m4a_internal.h"
+#include "string_util.h"
+#include "m4a.h"
+#include "decompress.h"
#include "main.h"
#include "menu.h"
#include "palette.h"
#include "rng.h"
#include "songs.h"
#include "sound.h"
-#include "sprite.h"
#include "task.h"
-#include "text.h"
-
-struct PokedexListItem
-{
- u16 dexNum;
- u16 seen:1;
- u16 owned:1;
-};
-
-struct PokedexView
-{
- struct PokedexListItem unk0[386];
- u16 unk608;
- u8 unk60A_1:1;
- u8 unk60A_2:1;
- u8 unk60B;
- u16 unk60C;
- u16 selectedPokemon;
- u16 unk610;
- u16 dexMode; //National or Hoenn
- u16 unk614;
- u16 dexOrder;
- u16 unk618;
- u16 unk61A;
- u16 unk61C;
- u16 unk61E[4];
- u16 unk626; //sprite id of selected Pokemon
- u16 unk628;
- u16 unk62A;
- u8 unk62C;
- u8 unk62D;
- u8 unk62E;
- u8 unk62F;
- s16 unk630;
- s16 unk632;
- u16 unk634;
- u16 unk636;
- u16 unk638;
- u16 unk63A[4];
- u8 filler642[8];
- u8 unk64A;
- u8 unk64B;
- u8 unk64C_1:1;
- u8 selectedScreen;
- u8 unk64E;
- u8 unk64F;
- u8 menuIsOpen; //menuIsOpen
- u8 unk651;
- u16 menuCursorPos; //Menu cursor position
- s16 menuY; //Menu Y position (inverted because we use REG_BG0VOFS for this)
- u8 unk656[8];
- u8 unk65E[8];
-};
// I'm #define-ing these just for now so I can keep using the old unkXXX member names
#define unk60E selectedPokemon
@@ -157,11 +108,9 @@ extern void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBi
extern bool8 BeginNormalPaletteFade(u32, s8, u8, u8, u16);
extern void remove_some_task(void);
extern bool32 IsNationalPokedex(void);
-extern u16 GetNationalPokedexCount(u8);
extern u8 sub_8091E3C(void);
extern void sub_80690C8(void);
extern void sub_805469C(void);
-extern void LoadCompressedObjectPic(void *);
extern u16 HoennToNationalOrder(u16);
extern u16 NationalToHoennOrder(u16);
extern u16 gPokedexOrder_Alphabetical[];
@@ -169,73 +118,17 @@ extern u16 gPokedexOrder_Weight[];
extern u16 gPokedexOrder_Height[];
extern u8 gSpeciesNames[][11];
-void ClearPokedexView(struct PokedexView *);
-void Task_PokedexShowMainScreen(u8 taskId);
-void sub_808C0B8(void);
-void MainCB(void);
-bool8 sub_808D344(u8);
-void Task_PokedexMainScreen(u8 taskId);
-void sub_808E6BC(void);
-void sub_808EDB8(struct Sprite *);
-void sub_808CA64(u8 taskId);
-void Task_PokedexMainScreenMenu(u8 taskId);
-void sub_808CB8C(u8 taskId);
-u16 sub_808E48C(u16, u16);
-void sub_808C898(u8 taskId);
-void Task_ClosePokedex(u8 taskId);
-void sub_8091060(u16);
-void sub_808CAE4(u8 taskId);
-void sub_808D198(u8 taskId);
-bool8 sub_808E208(u8, u8, u8);
-u8 sub_808E82C(void);
-void sub_808E0CC(u16, u16);
-u8 sub_808F210(struct PokedexListItem *, u8);
-u8 sub_808F284(struct PokedexListItem *, u8);
-bool8 sub_808F250(u8);
-bool8 sub_808E71C(void);
-void sub_808CCC4(u8 taskId);
-u16 GetHoennPokedexCount(u8);
-void SortPokedex(u8, u8);
-void Task_PokedexResultsScreen(u8 taskId);
-void sub_808D118(u8 taskId);
-void Task_PokedexResultsScreenMenu(u8 taskId);
-void Task_PokedexResultsScreenReturnToMainScreen(u8 taskId);
-void sub_808CEF8(u8 taskId);
-void Task_PokedexResultsScreenExitPokedex(u8 taskId);
-void sub_808D640(void);
-void sub_808E978(u8);
-bool8 sub_8090D90(u16, u8);
-void sub_808E090(u8, u8, u16);
-void sub_808DEB0(u16, u8, u8, u16);
-void sub_808DF88(u16, u8, u8, u16);
-u8 sub_808DFE4(u16, u8, u8);
-u16 sub_808E888(u16);
-u32 sub_808E8C8(u16, u16, u16);
-void sub_808EE28(struct Sprite *sprite);
-u16 sub_8091818(u8, u16, u16, u16);
-u16 sub_80918EC(u16 a, s16 b, s16 c, u16 d); //Not sure of return type
-void Task_InitPageScreenMultistep(u8 taskId);
-void Task_PageScreenProcessInput(u8 taskId);
-void Task_InitCryScreenMultistep(u8 taskId);
-void Task_InitAreaScreenMultistep(u8 taskId);
-void Task_ClosePageScreen(u8 taskId);
-void sub_808F888(u8 taskId);
-void Task_InitSizeScreenMultistep(u8 taskId);
-void Task_AreaScreenProcessInput(u8 taskId);
-void sub_808FA00(u8 taskId);
-void Task_CryScreenProcessInput(u8 taskId);
-void sub_808FFBC(u8 taskId);
-void Task_SizeScreenProcessInput(u8 taskId);
-void sub_8090040(u8);
-void sub_8090498(u8 taskId);
-void sub_80904FC(u16);
-void sub_8090540(u16);
-void sub_8090750(u8);
-void sub_8090A3C(u8);
-void sub_8091738(u16, u16, u16);
u16 NationalPokedexNumToSpecies(u16);
+
+// asm/pokedex_area_screen
+void ShowPokedexAreaScreen(u16 species, u8 *string);
+
+// asm/pokedex_cry_screen
u8 sub_8119E3C(struct CryRelatedStruct *, u8);
+void sub_8119F88(u8 a);
+void sub_811A050(u16 species);
u8 ShowPokedexCryScreen(struct CryRelatedStruct *, u8);
+void DestroyCryMeterNeedleSprite();
void sub_808C02C(void)
{
diff --git a/src/pokemon_2.c b/src/pokemon_2.c
index c8d07f88d..78b394b87 100644
--- a/src/pokemon_2.c
+++ b/src/pokemon_2.c
@@ -5,7 +5,6 @@
#include "species.h"
#include "main.h"
#include "sprite.h"
-#include "berry.h"
#include "flag.h"
extern u8 gPlayerPartyCount;
@@ -54,7 +53,6 @@ extern u8 battle_side_get_owner(u8);
extern u8 battle_get_side_with_given_state(u8);
extern u32 battle_get_per_side_status(u8);
extern u8 sub_8018324(u8, u8, u8, u8, u16);
-extern u8 sub_803C348(u8);
u8 sub_803C348(u8 a1)
{
diff --git a/src/pokemon_size_record.c b/src/pokemon_size_record.c
index 6381881b7..11c00dbe2 100644
--- a/src/pokemon_size_record.c
+++ b/src/pokemon_size_record.c
@@ -1,6 +1,6 @@
-#include "gba/gba.h"
#include "global.h"
-#include "pokemon.h"
+#include "pokemon_size_record.h"
+#include "string_util.h"
#include "species.h"
#include "flag.h"
#include "var.h"
diff --git a/src/record_mixing.c b/src/record_mixing.c
index 4996dc01f..1bcd83882 100644
--- a/src/record_mixing.c
+++ b/src/record_mixing.c
@@ -1,8 +1,7 @@
#include "global.h"
+#include "record_mixing.h"
#include "link.h"
#include "menu.h"
-#include "pokemon.h"
-#include "rng.h"
#include "script.h"
#include "songs.h"
#include "sound.h"
@@ -40,8 +39,6 @@ extern void sub_80BFD44(void *, u32, u8);
extern void sub_80C0514(void *, u32, u8);
// UB: sub_80FA4E4 declared with 3 arguments instead of 2
extern void sub_80FA4E4(void *, u32, u8);
-extern void sub_80B9C6C(void *, u32, u8, void *);
-extern void sub_80B9F3C(void *, u8);
extern u16 sub_8126338(void);
extern u8 sub_8083664(void);
extern void sub_80720B0(void);
@@ -51,20 +48,6 @@ extern u16 sub_8055588(void);
extern void sub_80F7F30(void);
extern void sub_8134AC0(void *);
-void sub_80B9484(u8);
-void sub_80B95F0(u8);
-void sub_80BA00C(u8);
-void sub_80B97DC(u8);
-void Task_CopyRecvBuffer(u8);
-void sub_80B9A1C(u8);
-u8 GetMultiplayerId_(void);
-void StorePtrInTaskData(void *, u16 *);
-void *LoadPtrFromTaskData(u16 *);
-void sub_80B9B1C(u8 *, size_t, u8);
-void sub_80B9B70(u8 *, size_t, u8);
-u16 *GetPlayerRecvBuffer(u8 player);
-void sub_80B9A78(void);
-
#define BUFFER_CHUNK_SIZE 200
void sub_80B929C(void)
diff --git a/src/rom4.c b/src/rom4.c
index 15041cb39..493f37513 100644
--- a/src/rom4.c
+++ b/src/rom4.c
@@ -1,16 +1,29 @@
#include "global.h"
-#include "fieldmap.h"
+#include "rom4.h"
+#include "field_player_avatar.h"
+#include "menu.h"
+#include "weather.h"
+#include "task.h"
+#include "tileset_anim.h"
+#include "start_menu.h"
+#include "play_time.h"
+#include "truck_scene.h"
+#include "new_game.h"
+#include "heal_location.h"
+#include "field_message_box.h"
#include "script.h"
#include "songs.h"
#include "sound.h"
#include "rng.h"
#include "main.h"
#include "palette.h"
-#include "text.h"
#include "link.h"
-#include "sprite.h"
#include "flag.h"
#include "var.h"
+#include "field_camera.h"
+#include "field_effect.h"
+#include "wild_encounter.h"
+#include "asm_fieldmap.h"
#ifdef SAPPHIRE
#define LEGENDARY_MUSIC BGM_OOAME // Heavy Rain
@@ -18,13 +31,6 @@
#define LEGENDARY_MUSIC BGM_HIDERI // Drought
#endif
-struct UnkWarpStruct
-{
- s8 mapGroup;
- s8 mapNum;
- s16 x, y;
-};
-
struct UnkTVStruct
{
u32 tv_field_0;
@@ -134,13 +140,7 @@ extern const struct WarpData gDummyWarpData;
extern s32 gUnknown_0839ACE8;
extern u32 gUnknown_08216694[];
-extern struct UnkWarpStruct *GetHealLocation(u8);
-extern u8 GetSav1Weather(void);
-extern void PlayerGetDestCoords(u16 *, u16 *);
extern u8 sub_810D32C(void);
-extern u16 GetLocalWildMon(bool8 *);
-extern u16 GetMirageIslandMon(void);
-extern void ExecuteTruckSequence(void);
extern void sub_8080B60(void);
extern void sub_810CC80(void);
extern void sub_8080AC4(void);
@@ -149,23 +149,12 @@ extern void atk17_seteffectuser(void);
extern void sub_80809B0(void);
extern void sub_8080990(void);
extern u8 sub_80BBB24(void);
-extern u16 MapGridGetMetatileBehaviorAt(int, int);
extern u8 *sub_80682A8(void *, u8, u8);
extern u8 *sub_8068E24(struct UnkStruct_8054FF8_Substruct *);
-extern bool8 MapGridIsImpassableAt(s16, s16);
extern u8 ZCoordToPriority(u8);
-void sub_8053050(void);
-void warp_in(void);
-void sub_8053570(void);
-u8 sav1_map_get_light_level(void);
-u8 get_map_light_level_by_bank_and_number(s8, s8);
-bool8 is_light_level_1_2_3_5_or_6(u8);
-void sub_805363C(s8, s8, s8, s8, s8);
-void sub_807D874(u8);
void sub_8082BD0(u16, u16);
void player_avatar_init_params_reset(void);
-u8 TestPlayerAvatarFlags(u8);
u8 player_get_direction_lower_nybble(void);
u8 sub_8053B00(struct UnkPlayerStruct *playerStruct, u16, u8);
u8 sub_8053B60(struct UnkPlayerStruct *playerStruct, u8, u16, u8);
@@ -181,7 +170,6 @@ bool8 MetatileBehavior_IsLadder(u8);
u16 cur_mapdata_block_role_at_screen_center_acc_to_sav1(void);
bool32 sub_8053C44(void);
void sub_8053C98(void);
-void sav1_reset_battle_music_maybe(void);
void sub_8053F0C(void);
u8 is_light_level_8_or_9(u8);
void sub_8054164(void);
@@ -245,7 +233,6 @@ u8 npc_something3(u8, u8);
u8 LinkPlayerDetectCollision(u8, u8, s16, s16);
void CreateLinkPlayerSprite(u8);
void SpriteCB_LinkPlayer(struct Sprite *);
-void sub_8056C50(u16, u16);
void sub_8052F5C(void)
{
@@ -515,9 +502,9 @@ void copy_saved_warp2_bank_and_enter_x_to_warp1(void)
void sub_8053538(u8 a1)
{
- struct UnkWarpStruct *warp = GetHealLocation(a1);
+ const struct HealLocation *warp = GetHealLocation(a1);
if (warp)
- warp1_set(warp->mapGroup, warp->mapNum, -1, warp->x, warp->y);
+ warp1_set(warp->group, warp->map, -1, warp->x, warp->y);
}
void sub_8053570(void)
@@ -527,9 +514,9 @@ void sub_8053570(void)
void sub_8053588(u8 a1)
{
- struct UnkWarpStruct *warp = GetHealLocation(a1);
+ const struct HealLocation *warp = GetHealLocation(a1);
if (warp)
- warp_set(&gSaveBlock1.warp3, warp->mapGroup, warp->mapNum, -1, warp->x, warp->y);
+ warp_set(&gSaveBlock1.warp3, warp->group, warp->map, -1, warp->x, warp->y);
}
void sub_80535C4(u16 a1, u16 a2)
@@ -589,9 +576,9 @@ void unref_sub_8053790(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
void sub_80537CC(u8 a1)
{
- struct UnkWarpStruct *warp = GetHealLocation(a1);
+ const struct HealLocation *warp = GetHealLocation(a1);
if (warp)
- warp_set(&gSaveBlock1.warp1, warp->mapGroup, warp->mapNum, -1, warp->x, warp->y);
+ warp_set(&gSaveBlock1.warp1, warp->group, warp->map, -1, warp->x, warp->y);
}
void gpu_sync_bg_hide(void)
diff --git a/src/rtc.c b/src/rtc.c
index 805f2062b..3d24253b9 100644
--- a/src/rtc.c
+++ b/src/rtc.c
@@ -1,5 +1,4 @@
#include "global.h"
-#include "siirtc.h"
#include "rtc.h"
#include "string_util.h"
#include "text.h"
@@ -29,19 +28,6 @@ static const s32 sNumDaysInMonths[12] =
31,
};
-void RtcDisableInterrupts();
-void RtcRestoreInterrupts();
-u32 ConvertBcdToBinary(u8 bcd);
-bool8 IsLeapYear(u8 year);
-u16 ConvertDateToDayCount(u8 year, u8 month, u8 day);
-u16 RtcGetDayCount(struct SiiRtcInfo *rtc);
-void RtcGetInfo(struct SiiRtcInfo *rtc);
-void RtcGetDateTime(struct SiiRtcInfo *rtc);
-void RtcGetStatus(struct SiiRtcInfo *rtc);
-void RtcGetRawInfo(struct SiiRtcInfo *rtc);
-u16 RtcCheckInfo(struct SiiRtcInfo *rtc);
-void RtcCalcTimeDifference(struct SiiRtcInfo *rtc, struct Time *result, struct Time *t);
-
void RtcDisableInterrupts()
{
sSavedIme = REG_IME;
diff --git a/src/safari_zone.c b/src/safari_zone.c
index 600ba95d2..deb8817ec 100644
--- a/src/safari_zone.c
+++ b/src/safari_zone.c
@@ -1,8 +1,11 @@
#include "global.h"
+#include "safari_zone.h"
+#include "field_player_avatar.h"
#include "flag.h"
#include "main.h"
#include "script.h"
#include "string_util.h"
+#include "rom4.h"
struct PokeblockFeeder
{
@@ -15,16 +18,11 @@ struct PokeblockFeeder
#define NUM_POKEBLOCK_FEEDERS 10
-void ClearAllPokeblockFeeders(void);
-void DecrementFeederStepCounters(void);
+static void ClearAllPokeblockFeeders(void);
+static void DecrementFeederStepCounters(void);
extern void c2_exit_to_overworld_2_switch(void);
extern void c2_exit_to_overworld_1_continue_scripts_restart_music(void);
extern void sub_8080E44(void);
-extern void CB2_LoadMap(void);
-extern void sav12_xor_increment(u8);
-extern void warp_in(void);
-extern void GetXYCoordsOneStepInFrontOfPlayer(void *, void *);
-extern void PlayerGetDestCoords(u16 *, u16 *);
extern u8 gUnknown_02024D26;
diff --git a/src/save.c b/src/save.c
index c6b82bc0a..6d9ec8b03 100644
--- a/src/save.c
+++ b/src/save.c
@@ -1,29 +1,10 @@
#include "global.h"
+#include "save.h"
+#include "gba/gba.h"
+#include "rom4.h"
#include "gba/flash_internal.h"
-struct SaveSectionLocation
-{
- void *data;
- u16 size;
-};
-
-struct SaveSection
-{
- u8 data[0xFF4];
- u16 id;
- u16 checksum;
- u32 unknown;
- u32 counter;
-};
-
-struct UnkSaveSection
-{
- u8 data[0xFF4];
- u32 unknown;
-};
-
extern u32 sub_8053108(u8);
-extern void sav12_xor_increment(u8);
extern u32 ProgramFlashSectorAndVerifyNBytes(u16 sectorNum, u8 *src, u32 n);
extern struct SaveSection unk_2000000;
@@ -46,14 +27,6 @@ extern struct SaveSectionLocation gSaveSectionLocations[];
extern struct SaveSectionLocation gHallOfFameSaveSectionLocations[];
extern u8 gUnknown_08401E24[];
-u8 sub_81252D8(u16, struct SaveSectionLocation *);
-u8 sub_8125440(u8, u8 *);
-u8 sub_81255B8(u16, struct SaveSectionLocation *);
-u8 sub_81258BC(u16, struct SaveSectionLocation *);
-u8 sub_8125BF8(u8, struct SaveSection *);
-u8 sub_8125974(struct SaveSectionLocation *);
-u16 sub_8125C10(void *, u16);
-
void ClearSaveData(void)
{
u16 i;
diff --git a/src/save_menu_util.c b/src/save_menu_util.c
index c811f5244..c315acda5 100644
--- a/src/save_menu_util.c
+++ b/src/save_menu_util.c
@@ -1,23 +1,15 @@
#include "global.h"
+#include "save_menu_util.h"
#include "menu.h"
#include "flag.h"
+#include "string_util.h"
+#include "pokedex.h"
extern u8 gOtherText_Player[];
extern u8 gOtherText_Badges[];
extern u8 gOtherText_Pokedex[];
extern u8 gOtherText_PlayTime[];
-extern void ConvertIntToDecimalStringN(u8 *dest, u32 value, int mode, u8 n);
-
-u8 sub_809473C(void);
-u8 GetBadgeCount(void);
-
-void PrintSavePlayerName(s16 x, s16 y);
-void PrintSaveMapName(s16 x, s16 y);
-void PrintSaveBadges(s16 x, s16 y);
-void PrintSavePokedexCount(s16 x, s16 y);
-void PrintSavePlayTime(s16 x, s16 y);
-
void HandleDrawSaveWindowInfo(s16 left, s16 top)
{
u32 width = 12;
diff --git a/src/scrcmd.c b/src/scrcmd.c
index 9d6f36a54..e80777489 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -1,10 +1,12 @@
#include "global.h"
+#include "field_player_avatar.h"
+#include "item.h"
#include "script.h"
#include "rng.h"
#include "palette.h"
#include "rtc.h"
#include "pokemon.h"
-#include "fieldmap.h"
+#include "asm_fieldmap.h"
#include "main.h"
#include "menu.h"
#include "decoration.h"
@@ -13,43 +15,33 @@
#include "string_util.h"
#include "flag.h"
#include "var.h"
+#include "rom4.h"
+#include "weather.h"
+#include "map_obj_lock.h"
+#include "coins.h"
+#include "field_effect.h"
extern void ClearRamScript(void);
extern void sub_8126160(u8);
-extern u8 AddBagItem(u16, u16);
-extern u8 RemoveBagItem(u16, u16);
-extern u8 CheckBagHasSpace(u16, u16);
-extern u8 CheckBagHasItem(u16, u16);
-extern u8 GetPocketByItemId(u16);
-extern u8 AddPCItem(u16, u16);
-extern u8 CheckPCHasItem(u16, u16);
extern u8 IsThereStorageSpaceForDecoration(u8);
extern s8 sub_81340A8(u8);
extern u8 sub_8134074(u8);
extern u8 sub_8133FE4(u8);
-extern void sav12_xor_increment(u8);
extern void sub_8081594(u8);
extern void sub_8053CE4(u32);
-extern void fade_screen(u8, u8);
extern void DoTimeBasedEvents(void);
-extern void SetSav1Weather(u32);
-extern void sub_80806E4(void);
-extern void sub_808073C(void);
extern void activate_per_step_callback(u8);
extern void sub_8053D14(u16);
-extern void warp1_set(s8, s8, s8, s8, s8);
extern void sub_8080E88(void);
extern void player_avatar_init_params_reset(void);
extern void sp13E_warp_to_last_warp(void);
extern void sub_8080EF0(void);
extern void sp13F_fall_to_last_warp(void);
extern void sub_8053720(s16, s16);
-extern void PlayerGetDestCoords(u16 *, u16 *);
extern void sub_8080F68(void);
extern void saved_warp2_set_2(s8, s8, s8, s8, s8, s8);
extern void sub_8053690(s8, s8, s8, s8, s8);
extern void sub_80536E4(s8, s8, s8, s8, s8);
-extern void sub_805363C(s8, s8, s8, s8, s8);
extern void sav1_set_battle_music_maybe(u16);
extern void sub_8053F84(void);
extern void sub_8053FB0(u16);
@@ -63,17 +55,12 @@ extern void sub_805C78C(u8, u8, u8);
extern void npc_by_local_id_and_map_set_field_1_bit_x20(u8, u8, u8, u8);
extern void sub_805BCF0(u8, u8, u8, u8);
extern void sub_805BD48(u8, u8, u8);
-extern u8 player_get_direction_lower_nybble(void);
extern u8 FieldObjectFaceOppositeDirection(void *, u8);
extern void FieldObjectTurnByLocalIdAndMap(u8, u8, u8, u8);
extern void update_saveblock1_field_object_movement_behavior(u8, u8);
extern u8 sub_805B410(u8, u8, s16, s16, u8, u8);
extern void sub_8064990(u8, u8);
extern bool32 is_c1_link_related_active(void);
-extern void sub_8064D20(void);
-extern bool8 sub_8064CFC(void);
-extern void sub_8064DD8(void);
-extern bool8 sub_8064DB4(void);
extern u8 GetFieldObjectIdByLocalIdAndMap(u8, u8, u8);
extern u8 FieldObjectClearAnimIfSpecialAnimFinished(void *);
extern void sub_80A2178(void);
@@ -88,7 +75,6 @@ extern void *picbox_close(void);
extern void sub_8106630(u32);
extern void ShowContestWinner(void);
extern u8 GetLeadMonIndex(void);
-extern void CopyItemName(u16, u8 *);
extern u8 sub_80BF0B8(u32);
extern void sub_80B79B8(u32 *, u32);
extern void sub_80B79E0(u32 *, u32);
@@ -96,9 +82,6 @@ extern bool8 IsEnoughMoney(u32, u32);
extern void sub_80B7C14(u32, u8, u8);
extern void RemoveMoneyLabelObject(u8, u8);
extern void sub_80B7BEC(u32, u8, u8);
-extern void ShowCoinsWindow(u32, u8, u8);
-extern void HideCoinsWindow(u8, u8);
-extern void UpdateCoinsWindow(u32, u8, u8);
extern void *TrainerBattleConfigure(u8 *);
extern void sub_80825E4(void);
extern u8 *sub_80826E8(void);
@@ -118,10 +101,7 @@ extern void sub_80F99CC(void);
extern void sub_80C48C8(void);
extern void sub_80C4940(void);
extern void sub_80C4980(u8);
-extern u32 FieldEffectStart(u8);
-extern bool8 FieldEffectActiveListContains(u8);
extern void sub_8053588(u8);
-extern void MapGridSetMetatileIdAt(u32, u32, u16);
extern u16 sub_8058790(u32, u32);
extern bool8 FieldAnimateDoorOpen(u32, u32);
extern bool8 FieldAnimateDoorClose(u32, u32);
@@ -130,9 +110,6 @@ extern void FieldSetDoorOpened(u32, u32);
extern void FieldSetDoorClosed(u32, u32);
extern void ScriptAddElevatorMenuItem(u8, u8, u8, u8);
extern void ScriptShowElevatorMenu(void);
-extern u16 GetCoins(void);
-extern bool8 GiveCoins(u16);
-extern bool8 TakeCoins(u16);
extern u8 ScriptGiveMon(u16, u8, u16, u32, u32, u8);
extern u8 ScriptGiveEgg(u16);
extern void ScriptSetMonMoveSlot(u8, u16, u8);
diff --git a/src/script.c b/src/script.c
index 8e07a580e..a7aa9c809 100644
--- a/src/script.c
+++ b/src/script.c
@@ -1,6 +1,6 @@
#include "global.h"
#include "script.h"
-#include "fieldmap.h"
+#include "asm_fieldmap.h"
#include "var.h"
#define RAM_SCRIPT_MAGIC 51
diff --git a/src/sound.c b/src/sound.c
index 49ab78cc7..77ad2b9f6 100644
--- a/src/sound.c
+++ b/src/sound.c
@@ -1,8 +1,9 @@
#include "global.h"
+#include "sound.h"
#include "gba/m4a_internal.h"
#include "task.h"
-#include "sound.h"
#include "songs.h"
+#include "m4a.h"
struct Fanfare
{
diff --git a/src/sprite.c b/src/sprite.c
index c91476f51..78a8608ad 100644
--- a/src/sprite.c
+++ b/src/sprite.c
@@ -1,6 +1,8 @@
#include "global.h"
-#include "main.h"
#include "sprite.h"
+#include "main.h"
+#include "palette.h"
+#include "menu_cursor.h"
#define MAX_SPRITE_COPY_REQUESTS 64
@@ -49,9 +51,6 @@ struct OamDimensions
s8 height;
};
-void LoadPalette(u16 *, u16, u32);
-void sub_814A590(void);
-
static void UpdateOamCoords(void);
static void BuildSpritePriorities(void);
static void SortSprites(void);
diff --git a/src/start_menu.c b/src/start_menu.c
index c8e77af66..3237632a8 100644
--- a/src/start_menu.c
+++ b/src/start_menu.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "start_menu.h"
#include "main.h"
#include "menu.h"
#include "palette.h"
@@ -9,37 +10,31 @@
#include "string_util.h"
#include "task.h"
#include "flag.h"
+#include "rom4.h"
+#include "safari_zone.h"
+#include "field_player_avatar.h"
+#include "weather.h"
+#include "save.h"
+#include "option_menu.h"
+#include "map_obj_lock.h"
+#include "save_menu_util.h"
//External functions
-extern void sub_8064E2C(void);
extern void sub_8047A1C(void);
-extern u8 sub_8125E6C(void);
extern void sub_8047A34(void);
-extern void sub_8125E2C(void);
extern void remove_some_task(void);
extern void dp12_8087EA4(void);
-extern void sav12_xor_increment(u8 index);
-extern bool8 sub_8125D44(u8); //Saving related
-extern void HandleDrawSaveWindowInfo(u8, u8);
-extern void sub_80946C8(u8, u8);
-extern void save_serialize_map(void);
-extern void PlayRainSoundEffect(void);
extern void sub_8093130(u8, void (*)(void));
extern void sub_805469C(void);
extern void SafariZoneRetirePrompt(void);
-extern void CB2_InitOptionMenu(void);
extern void sub_8093110(void (*)(void));
extern void sub_80EBA5C(void);
extern void sub_80A53F8(void);
extern void sub_8089A70(void);
extern void CB2_InitPokedex(void);
extern u16 GetNationalPokedexCount(u8);
-extern void fade_screen(u8, u8);
extern bool32 is_c1_link_related_active();
-extern void sub_80594C0(void);
-extern void sub_80597F4(void);
extern void player_bitmagic(void);
-extern bool32 GetSafariZoneFlag(void);
extern u8 *sub_8072C44(u8 *, s32, u8, u8);
extern bool32 is_c1_link_related_active(void);
@@ -88,25 +83,6 @@ extern u8 gSaveText_ThereIsADifferentFile[];
extern u8 gSaveText_WouldYouLikeToSave[];
extern u8 gOtherText_SafariStock[];
-//Public functions
-void CreateStartMenuTask(void (*func)(u8));
-void sub_80712B4(u8 taskId);
-void sub_8071310(void);
-u8 StartMenu_PokedexCallback(void);
-u8 StartMenu_PokemonCallback(void);
-u8 StartMenu_BagCallback(void);
-u8 StartMenu_PokenavCallback(void);
-u8 StartMenu_PlayerCallback(void);
-u8 StartMenu_SaveCallback(void);
-u8 StartMenu_OptionCallback(void);
-u8 StartMenu_ExitCallback(void);
-u8 StartMenu_RetireCallback(void);
-u8 StartMenu_PlayerLinkCallback(void);
-void InitSaveDialog(void);
-void sub_8071B28(void);
-void sub_8071C20(void);
-void AppendToList(u8 *list, u8 *pindex, u32 value);
-
//Private functions
static void BuildStartMenuActions(void);
static void AddStartMenuAction(u8 action);
diff --git a/src/starter_choose.c b/src/starter_choose.c
index a80401e8b..725d481be 100644
--- a/src/starter_choose.c
+++ b/src/starter_choose.c
@@ -1,22 +1,18 @@
#include "global.h"
+#include "starter_choose.h"
#include "main.h"
#include "menu.h"
#include "palette.h"
-#include "pokemon.h"
#include "songs.h"
#include "sound.h"
-#include "sprite.h"
#include "string_util.h"
#include "task.h"
-#include "text.h"
#include "trig.h"
+#include "decompress.h"
//Functions that need to be put in headers
void remove_some_task(void);
-void LoadCompressedObjectPic(void *);
-void LoadCompressedObjectPalette(const struct SpritePalette *);
u16 SpeciesToNationalPokedexNum(u16);
-void DecompressPicFromTable_2(const struct SpriteSheet *, u8, u8, void *, void *, u32);
struct MonCoords
{
@@ -50,7 +46,6 @@ extern struct SpritePalette gUnknown_083F77B4[];
extern struct SpriteTemplate gSpriteTemplate_83F77FC;
extern struct SpriteTemplate gUnknown_02024E8C;
-u16 GetStarterPokemon(u16);
static void MainCallback2(void);
static void Task_StarterChoose1(u8 taskId);
static void Task_StarterChoose2(u8 taskId);
@@ -62,7 +57,6 @@ static void Task_StarterChoose6(u8 taskId);
extern u8 *GetPokemonCategory(u16);
static void CreateStarterPokemonLabel(u8, u8);
static u8 CreatePokemonFrontSprite(u16, u8, u8);
-void StarterPokemonSpriteAnimCallback(struct Sprite *);
//Position of the sprite of the selected starter Pokemon
#define STARTER_PKMN_POS_X 120
diff --git a/src/text_window.c b/src/text_window.c
index e7f72a80b..1ac624dd0 100644
--- a/src/text_window.c
+++ b/src/text_window.c
@@ -1,40 +1,23 @@
#include "global.h"
+#include "text_window.h"
#include "main.h"
#include "text.h"
-#include "text_window.h"
+#include "palette.h"
#define STD_MSG_BOX_LEFT 0
#define STD_MSG_BOX_TOP 14
#define STD_MSG_BOX_WIDTH 26
#define STD_MSG_BOX_HEIGHT 4
-u16 SetTextWindowBaseTileNum(u16);
-void LoadTextWindowGraphics(struct Window *);
-void LoadTextWindowGraphics_OverridePalSlot(struct Window *, u8);
-void LoadTextWindowGraphics_OverrideFrameType(struct Window *, u8);
-void DrawTextWindow(struct Window *win, u8 left, u8 top, u8 right, u8 bottom);
-const struct FrameGraphics *GetTextWindowFrameGraphics(u8 frameType);
static void LoadTextWindowTiles(u8, void *);
static void LoadTextWindowPalette(u8, u8);
static void DrawTextWindowInternal(u16 *dest, u16 baseTileNum, u8 left, u8 top, u8 right, u8 bottom);
-u16 SetMessageBoxBaseTileNum(u16);
-void unref_sub_80651DC(struct Window *, u8 *);
-void DisplayMessageBox(struct Window *);
static u16 GetMessageBoxTilemapEntry(u16 tilemapEntry, u8 x, u8 y, u8 width, u8 height);
static void DrawMessageBox(struct Window *win, u8 left, u8 top, u8 width, u8 height);
-void DrawStandardMessageBox(struct Window *win);
-void LoadMessageBoxTiles(struct Window *win);
-void ClearStandardMessageBox(struct Window *win);
static u16 sTextWindowBaseTileNum;
static u16 sMessageBoxBaseTileNum;
-struct FrameGraphics
-{
- u8 *tiles;
- u16 *palette;
-};
-
extern const struct FrameGraphics gUnknown_083761F0[20];
extern const u16 gMessageBoxTilemap[5][7];
diff --git a/src/tileset_anim.c b/src/tileset_anim.c
index 96030f037..415b69cfe 100644
--- a/src/tileset_anim.c
+++ b/src/tileset_anim.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "tileset_anim.h"
extern u8 *gTilesetAnimTable_General_0[];
extern u8 *gTilesetAnimTable_General_1[];
diff --git a/src/title_screen.c b/src/title_screen.c
index d5cfa032b..72833a4e9 100644
--- a/src/title_screen.c
+++ b/src/title_screen.c
@@ -1,14 +1,15 @@
#include "global.h"
+#include "title_screen.h"
+#include "intro.h"
#include "gba/m4a_internal.h"
#include "main.h"
#include "palette.h"
#include "sound.h"
#include "sprite.h"
#include "task.h"
+#include "decompress.h"
extern void m4aSongNumStart(u16);
-extern void LoadCompressedObjectPic(void *);
-extern void CB2_InitCopyrightScreen(void);
extern void CB2_InitMainMenu(void);
extern void CB2_InitClearSaveDataScreen(void);
extern void CB2_InitResetRtcScreen(void);
diff --git a/src/trainer_see.c b/src/trainer_see.c
index 968f7c0a1..6e2292067 100644
--- a/src/trainer_see.c
+++ b/src/trainer_see.c
@@ -1,18 +1,21 @@
#include "global.h"
-#include "fieldmap.h"
+#include "trainer_see.h"
+#include "field_player_avatar.h"
+#include "field_map_obj.h"
+#include "asm_fieldmap.h"
#include "task.h"
#include "sprite.h"
+#include "field_effect.h"
+#include "script.h"
extern u8 * GetFieldObjectScriptPointerByFieldObjectId(u8);
extern u8 * GetTrainerFlagFromScriptPointer(u8 *);
-extern u8 TrainerCanApproachPlayer(struct MapObject *);
extern u8 sub_8060024(struct MapObject *, s16, s16, u8);
extern u8 npc_block_way(struct MapObject *, s16, s16, u8);
extern u8 npc_running_behaviour_by_direction(u8);
extern u8 GetGoSpeed0AnimId(u8);
extern u8 GetOppositeDirection(u8);
extern u8 GetFaceDirectionAnimId(u8);
-extern bool8 FieldEffectActiveListContains(u8);
extern bool8 FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(struct MapObject *);
extern bool8 FieldObjectCheckIfSpecialAnimFinishedOrInactive(struct MapObject *);
extern bool8 FieldObjectClearAnimIfSpecialAnimFinished(struct MapObject *);
@@ -22,7 +25,6 @@ extern void FieldObjectSetSpecialAnim(struct MapObject *, u8);
extern void LoadWordFromTwoHalfwords(u32, u8 *);
extern void StoreWordInTwoHalfwords(u32, u8 *);
-extern void sub_80842FC(void (*func)(u8));
extern bool8 (*gIsTrainerInRange[])(struct MapObject *, u16, s16, s16);
extern bool8 (*gTrainerSeeFuncList[])(u8, struct Task *, struct MapObject *);
@@ -30,11 +32,6 @@ extern bool8 (*gTrainerSeeFuncList2[])(u8, struct Task *, struct MapObject *);
extern u32 gUnknown_0202FF84[];
-bool8 CheckTrainer(u8);
-bool8 CheckPathBetweenTrainerAndPlayer(struct MapObject2 *, u8, u8);
-void sub_80842C8(struct MapObject *, u8);
-void RunTrainerSeeFuncList(u8);
-void sub_80847D8(u8);
bool8 CheckTrainers(void)
{
diff --git a/src/truck_scene.c b/src/truck_scene.c
index 565851856..c8997a643 100644
--- a/src/truck_scene.c
+++ b/src/truck_scene.c
@@ -1,20 +1,17 @@
#include "global.h"
+#include "truck_scene.h"
#include "palette.h"
#include "task.h"
#include "script.h"
#include "songs.h"
#include "sound.h"
+#include "field_camera.h"
extern s8 gTruckCamera_HorizontalTable[];
extern void SetCameraPanning(s16 a1, s16 a2);
extern void sub_805BD90(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y);
-void Task_Truck1(u8 taskId);
-void Task_Truck2(u8 taskId);
-void Task_Truck3(u8 taskId);
-void ExecuteTruckSequence(void);
-
s32 GetTruckCameraBobbingY(int a1)
{
s32 result;
diff --git a/src/wallclock.c b/src/wallclock.c
index 05e30a8cb..e41bf761d 100644
--- a/src/wallclock.c
+++ b/src/wallclock.c
@@ -1,18 +1,17 @@
#include "global.h"
+#include "wallclock.h"
+#include "decompress.h"
#include "main.h"
#include "menu.h"
#include "palette.h"
#include "rtc.h"
#include "songs.h"
-#include "sprite.h"
#include "task.h"
-#include "text.h"
#include "trig.h"
#include "sound.h"
//Functions that need to be put in headers
void remove_some_task(void);
-void LoadCompressedObjectPic(void *);
extern u16 gSpecialVar_0x8004;
extern u16 gMiscClockMale_Pal[];
@@ -26,8 +25,6 @@ extern u8 gOtherText_CorrectTimePrompt[];
extern u8 * const gUnknown_08376D74[][2];
extern s8 gClockHandCoords[][2];
-extern struct WindowConfig gWindowConfig_81E6C3C;
-extern struct WindowConfig gWindowConfig_81E6CE4;
extern struct SpriteTemplate gSpriteTemplate_83F7AD8;
extern struct SpriteTemplate gSpriteTemplate_83F7AF0;
extern struct SpriteTemplate gSpriteTemplate_83F7B28;
diff --git a/src/weather.c b/src/weather.c
index 5dddb6614..07a8f9f91 100644
--- a/src/weather.c
+++ b/src/weather.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "weather.h"
#include "task.h"
#include "sprite.h"
#include "palette.h"
@@ -58,20 +59,6 @@ extern u8 gUnknown_083970C8;
extern u8 (*gUnknown_0202FC48)[32];
extern u8 (*gUnknown_0202F9E8)[32];
-void sub_807CA34(u8);
-void sub_807C9E4(u8);
-void sub_807CB10(void);
-extern void sub_807DB64(u8, u8);
-u8 sub_807CDC4(void);
-u8 sub_807CE24(void);
-u8 sub_807CE7C(void);
-void sub_807CEBC(u8, u8, s8);
-
-extern void sub_807D1BC(u8, u8, u8, u8, u16);
-extern void sub_807D304(int, u8, u16);
-extern void sub_807D424(u8, u16);
-
-void PlayRainSoundEffect(void);
void sub_807C828(void) {
u8 index;
diff --git a/src/wild_encounter.c b/src/wild_encounter.c
index 151088cd6..d021189e9 100644
--- a/src/wild_encounter.c
+++ b/src/wild_encounter.c
@@ -1,11 +1,15 @@
#include "global.h"
+#include "wild_encounter.h"
+#include "field_player_avatar.h"
+#include "safari_zone.h"
+#include "battle_setup.h"
#include "abilities.h"
-#include "fieldmap.h"
-#include "pokemon.h"
#include "rng.h"
#include "script.h"
#include "flag.h"
#include "var.h"
+#include "rom4.h"
+#include "vars.h"
struct WildPokemon
{
@@ -31,20 +35,12 @@ struct WildPokemonHeader
};
extern bool8 sub_805759C(u8);
-extern void GetXYCoordsOneStepInFrontOfPlayer(void *, void *);
extern s16 sub_810CAE4(u8, struct Pokeblock *);
-extern bool32 GetSafariZoneFlag(void);
-extern u8 TestPlayerAvatarFlags(u8);
extern u8 MetatileBehavior_IsLandWildEncounter(u8);
extern u8 sub_81344CC(void);
extern u8 MetatileBehavior_IsWaterWildEncounter(u8);
-extern void CheckForSafariZoneAndProceed(void);
extern u8 MetatileBehavior_IsBridge(u8);
-extern void PlayerGetDestCoords(u16 *x, u16 *y);
extern void sub_80BEA50(u16);
-extern void sav12_xor_increment(u8);
-extern int MapGridGetMetatileBehaviorAt(int x, int y);
-extern struct Pokeblock *SafariZoneGetActivePokeblock(void);
extern u16 gRoute119WaterTileData[];
extern struct WildPokemonHeader gWildMonHeaders[];