summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/battle_tower.h25
-rw-r--r--include/cable_club.h13
-rw-r--r--include/constants/vars.h79
-rw-r--r--include/decompress.h2
-rw-r--r--include/field_effect.h155
-rw-r--r--include/field_effect_helpers.h2
-rw-r--r--include/field_map_obj.h2
-rw-r--r--include/field_player_avatar.h5
-rw-r--r--include/field_screen.h4
-rw-r--r--include/field_special_scene.h14
-rw-r--r--include/field_tasks.h5
-rw-r--r--include/fieldmap.h4
-rw-r--r--include/fldeff_80F9BCC.h2
-rw-r--r--include/global.h143
-rw-r--r--include/item_menu.h2
-rw-r--r--include/lilycove_lady.h2
-rw-r--r--include/link.h9
-rw-r--r--include/link_rfu.h1
-rw-r--r--include/list_menu.h33
-rw-r--r--include/mauville_old_man.h9
-rw-r--r--include/menu_helpers.h32
-rw-r--r--include/menu_indicators.h37
-rw-r--r--include/overworld.h4
-rw-r--r--include/pokemon.h28
-rw-r--r--include/record_mixing.h35
-rw-r--r--include/rom_8034C54.h26
-rw-r--r--include/save.h3
-rw-r--r--include/secret_base.h3
-rw-r--r--include/sprite.h1
-rw-r--r--include/strings.h2
-rw-r--r--include/tv.h8
31 files changed, 536 insertions, 154 deletions
diff --git a/include/battle_tower.h b/include/battle_tower.h
index 25b439c1b..9d4553132 100644
--- a/include/battle_tower.h
+++ b/include/battle_tower.h
@@ -1,6 +1,31 @@
#ifndef GUARD_BATTLE_TOWER_H
#define GUARD_BATTLE_TOWER_H
+struct RSBattleTowerRecord
+{
+ /*0x00*/ u8 battleTowerLevelType; // 0 = level 50, 1 = level 100
+ /*0x01*/ u8 trainerClass;
+ /*0x02*/ u16 winStreak;
+ /*0x04*/ u8 name[8];
+ /*0x0C*/ u8 trainerId[4];
+ /*0x10*/ struct {
+ u16 easyChat[6];
+ } greeting;
+ /*0x1C*/ struct UnknownPokemonStruct party[3];
+ /*0xA0*/ u32 checksum;
+ /*0xA4*/ u16 unk_11c8;
+};
+
+union BattleTowerRecord
+{
+ struct RSBattleTowerRecord ruby_sapphire;
+ struct EmeraldBattleTowerRecord emerald;
+};
+
u16 sub_8164FCC(u8, u8);
+void sub_81659DC(struct RSBattleTowerRecord *a0, struct RSBattleTowerRecord *a1);
+bool32 sub_816587C(union BattleTowerRecord *, union BattleTowerRecord *);
+void CalcEmeraldBattleTowerChecksum(struct EmeraldBattleTowerRecord *);
+void sub_81628A0(union BattleTowerRecord *);
#endif //GUARD_BATTLE_TOWER_H
diff --git a/include/cable_club.h b/include/cable_club.h
new file mode 100644
index 000000000..44831235c
--- /dev/null
+++ b/include/cable_club.h
@@ -0,0 +1,13 @@
+#ifndef GUARD_CABLE_CLUB_H
+#define GUARD_CABLE_CLUB_H
+
+// Exported type declarations
+
+// Exported RAM declarations
+
+// Exported ROM declarations
+
+void sub_80B37D4(TaskFunc taskFunc);
+u8 sub_80B3050(void);
+
+#endif //GUARD_CABLE_CLUB_H
diff --git a/include/constants/vars.h b/include/constants/vars.h
index be21f1730..976c6a739 100644
--- a/include/constants/vars.h
+++ b/include/constants/vars.h
@@ -3,42 +3,53 @@
#define VAR_0x3F20 0x3F20
-#define VAR_0x4000 0x4000
-#define VAR_0x4001 0x4001
-#define VAR_0x4002 0x4002
-#define VAR_0x4003 0x4003
-#define VAR_0x4004 0x4004
-#define VAR_0x4005 0x4005
-#define VAR_0x4006 0x4006
-#define VAR_0x4007 0x4007
-#define VAR_0x4008 0x4008
-#define VAR_0x4009 0x4009
-#define VAR_0x400A 0x400A
-#define VAR_0x400B 0x400B
-#define VAR_0x400C 0x400C
-#define VAR_0x400D 0x400D
-#define VAR_0x400E 0x400E
-#define VAR_0x400F 0x400F
-#define VAR_0x4010 0x4010
-#define VAR_0x4011 0x4011
-#define VAR_0x4012 0x4012
-#define VAR_0x4013 0x4013
-#define VAR_0x4014 0x4014
-#define VAR_0x4015 0x4015
-#define VAR_0x4016 0x4016
-#define VAR_0x4017 0x4017
-#define VAR_0x4018 0x4018
-#define VAR_0x4019 0x4019
-#define VAR_0x401A 0x401A
-#define VAR_0x401B 0x401B
-#define VAR_0x401C 0x401C
-#define VAR_0x401D 0x401D
-#define VAR_0x401E 0x401E
-#define VAR_0x401F 0x401F
+#define VARS_START 0x4000
+
+// temporary vars
+// The first 0x10 vars are are temporary--they are cleared every time a map is loaded.
+#define VAR_TEMP_0 0x4000
+#define VAR_TEMP_1 0x4001
+#define VAR_TEMP_2 0x4002
+#define VAR_TEMP_3 0x4003
+#define VAR_TEMP_4 0x4004
+#define VAR_TEMP_5 0x4005
+#define VAR_TEMP_6 0x4006
+#define VAR_TEMP_7 0x4007
+#define VAR_TEMP_8 0x4008
+#define VAR_TEMP_9 0x4009
+#define VAR_TEMP_A 0x400A
+#define VAR_TEMP_B 0x400B
+#define VAR_TEMP_C 0x400C
+#define VAR_TEMP_D 0x400D
+#define VAR_TEMP_E 0x400E
+#define VAR_TEMP_F 0x400F
+
+// object gfx id vars
+// These 0x10 vars are used to dynamically control a map object's sprite.
+// For example, the rival's sprite id is dynamically set based on the player's gender.
+// See VarGetFieldObjectGraphicsId().
+#define VAR_OBJ_GFX_ID_0 0x4010
+#define VAR_OBJ_GFX_ID_1 0x4011
+#define VAR_OBJ_GFX_ID_2 0x4012
+#define VAR_OBJ_GFX_ID_3 0x4013
+#define VAR_OBJ_GFX_ID_4 0x4014
+#define VAR_OBJ_GFX_ID_5 0x4015
+#define VAR_OBJ_GFX_ID_6 0x4016
+#define VAR_OBJ_GFX_ID_7 0x4017
+#define VAR_OBJ_GFX_ID_8 0x4018
+#define VAR_OBJ_GFX_ID_9 0x4019
+#define VAR_OBJ_GFX_ID_A 0x401A
+#define VAR_OBJ_GFX_ID_B 0x401B
+#define VAR_OBJ_GFX_ID_C 0x401C
+#define VAR_OBJ_GFX_ID_D 0x401D
+#define VAR_OBJ_GFX_ID_E 0x401E
+#define VAR_OBJ_GFX_ID_F 0x401F
+
+// general purpose vars
#define VAR_RECYCLE_GOODS 0x4020
#define VAR_REPEL_STEP_COUNT 0x4021
#define VAR_ICE_STEP_COUNT 0x4022
-#define VAR_FIRST_POKE 0x4023
+#define VAR_FIRST_POKE 0x4023 // 0=Treecko, 1=Torchic, 2=Mudkip
#define VAR_MIRAGE_RND_H 0x4024
#define VAR_MIRAGE_RND_L 0x4025
#define VAR_SECRET_BASE_MAP 0x4026
@@ -262,6 +273,8 @@
#define VAR_0x40FE 0x40FE
#define VAR_0x40FF 0x40FF
+// special vars
+// They are commonly used as parameters to commands, or return values from commands.
#define VAR_0x8000 0x8000
#define VAR_0x8001 0x8001
#define VAR_0x8002 0x8002
diff --git a/include/decompress.h b/include/decompress.h
index 34a678cda..e98181c82 100644
--- a/include/decompress.h
+++ b/include/decompress.h
@@ -28,6 +28,6 @@ void LoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32
void LoadSpecialPokePic_2(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic);
void LoadSpecialPokePic_DontHandleDeoxys(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic);
-u32 sub_8034974(const u8 *ptr);
+u32 GetDecompressedDataSize(const u8 *ptr);
#endif // GUARD_DECOMPRESS_H
diff --git a/include/field_effect.h b/include/field_effect.h
index 700256f30..9cd26f6b8 100644
--- a/include/field_effect.h
+++ b/include/field_effect.h
@@ -1,6 +1,14 @@
#ifndef GUARD_FIELD_EFFECTS_H
#define GUARD_FIELD_EFFECTS_H
+#include "task.h"
+
+extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[2];
+extern const struct SpritePalette gNewGameBirchObjectPaletteInfo;
+extern const struct CompressedSpriteSheet gTrainerFrontPicTable[2];
+extern const struct SpriteTemplate gNewGameBirchObjectTemplate;
+extern const struct OamData gNewGameBirchOamAttributes;
+
enum FieldEffectScriptIdx
{
FLDEFF_EXCLAMATION_MARK_ICON_1,
@@ -69,7 +77,9 @@ enum FieldEffectScriptIdx
FLDEFF_USE_TELEPORT
};
-extern u32 gFieldEffectArguments[8];
+extern s32 gFieldEffectArguments[8];
+extern void (*gUnknown_0203CEEC)(void);
+extern bool8 (*gUnknown_03005DB0)(void);
u32 FieldEffectStart(u8);
bool8 FieldEffectActiveListContains(u8 id);
@@ -77,10 +87,147 @@ void sub_80B69DC(void);
u8 AddNewGameBirchObject(s16, s16, u8);
void FieldEffectStop(struct Sprite *sprite, u8 id);
u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer);
-void sub_80B7FC8(void);
+void CreateTeleportFieldEffectTask(void);
void FieldEffectActiveListRemove(u8 id);
void MultiplyInvertedPaletteRGBComponents(u16, u8, u8, u8);
-extern void (*gUnknown_0203CEEC)(void);
-extern bool8 (*gUnknown_03005DB0)(void);
+void FieldEffectActiveListAdd(u8 id);
+void FieldEffectScript_LoadTiles(u8 **script);
+void FieldEffectScript_LoadFadedPalette(u8 **script);
+void FieldEffectScript_LoadPalette(u8 **script);
+void FieldEffectScript_CallNative(u8 **script, u32 *val);
+void FieldEffectFreeTilesIfUnused(u16 tileStart);
+void FieldEffectFreePaletteIfUnused(u8 paletteNum);
+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);
+
+void PokecenterHealEffect_0(struct Task *);
+void PokecenterHealEffect_1(struct Task *);
+void PokecenterHealEffect_2(struct Task *);
+void PokecenterHealEffect_3(struct Task *);
+
+void HallOfFameRecordEffect_0(struct Task *);
+void HallOfFameRecordEffect_1(struct Task *);
+void HallOfFameRecordEffect_2(struct Task *);
+void HallOfFameRecordEffect_3(struct Task *);
+
+void PokeballGlowEffect_0(struct Sprite *);
+void PokeballGlowEffect_1(struct Sprite *);
+void PokeballGlowEffect_2(struct Sprite *);
+void PokeballGlowEffect_3(struct Sprite *);
+void PokeballGlowEffect_4(struct Sprite *);
+void PokeballGlowEffect_5(struct Sprite *);
+void PokeballGlowEffect_6(struct Sprite *);
+void PokeballGlowEffect_7(struct Sprite *);
+
+bool8 sub_80B6BCC(struct Task *);
+bool8 sub_80B6C74(struct Task *);
+bool8 sub_80B6C90(struct Task *);
+bool8 sub_80B6D04(struct Task *);
+bool8 sub_80B6DBC(struct Task *);
+bool8 sub_80B6DD8(struct Task *);
+bool8 sub_80B6E18(struct Task *);
+
+bool8 sub_80B6EC0(struct Task *);
+bool8 sub_80B6EE0(struct Task *);
+bool8 sub_80B6F50(struct Task *);
+bool8 sub_80B6F74(struct Task *);
+bool8 sub_80B6F84(struct Task *);
+bool8 sub_80B6FA8(struct Task *);
+
+bool8 sub_80B7114(struct Task *);
+bool8 sub_80B7190(struct Task *);
+bool8 sub_80B71D0(struct Task *);
+bool8 sub_80B7230(struct Task *);
+bool8 sub_80B7270(struct Task *);
+bool8 sub_80B72D0(struct Task *);
+bool8 sub_80B72F4(struct Task *);
+
+bool8 sub_80B73D0(struct Task *, struct MapObject *);
+bool8 waterfall_1_do_anim_probably(struct Task *, struct MapObject *);
+bool8 waterfall_2_wait_anim_finish_probably(struct Task *, struct MapObject *);
+bool8 sub_80B7450(struct Task *, struct MapObject *);
+bool8 sub_80B7478(struct Task *, struct MapObject *);
+
+bool8 dive_1_lock(struct Task *);
+bool8 dive_2_unknown(struct Task *);
+bool8 dive_3_unknown(struct Task *);
+
+bool8 sub_80B764C(struct Task *, struct MapObject *, struct Sprite *);
+bool8 sub_80B7684(struct Task *, struct MapObject *, struct Sprite *);
+bool8 sub_80B76B8(struct Task *, struct MapObject *, struct Sprite *);
+bool8 sub_80B7704(struct Task *, struct MapObject *, struct Sprite *);
+bool8 sub_80B77F8(struct Task *, struct MapObject *, struct Sprite *);
+bool8 sub_80B7814(struct Task *, struct MapObject *, struct Sprite *);
+
+bool8 sub_80B78EC(struct Task *, struct MapObject *, struct Sprite *);
+bool8 sub_80B791C(struct Task *, struct MapObject *, struct Sprite *);
+bool8 sub_80B7968(struct Task *, struct MapObject *, struct Sprite *);
+bool8 sub_80B79BC(struct Task *, struct MapObject *, struct Sprite *);
+
+bool8 sub_80B7AE8(struct Task *, struct MapObject *, struct Sprite *);
+bool8 sub_80B7B18(struct Task *, struct MapObject *, struct Sprite *);
+bool8 sub_80B7B94(struct Task *, struct MapObject *, struct Sprite *);
+bool8 sub_80B7BCC(struct Task *, struct MapObject *, struct Sprite *);
+bool8 sub_80B7BF4(struct Task *, struct MapObject *, struct Sprite *);
+
+void sub_80B7D14(struct Task *);
+void sub_80B7D34(struct Task *);
+
+void sub_80B7EC4(struct Task *);
+void sub_80B7EE8(struct Task *);
+
+void sub_80B8280(struct Task *);
+void sub_80B830C(struct Task *);
+void sub_80B8410(struct Task *);
+
+void sub_80B8584(struct Task *);
+void sub_80B85F8(struct Task *);
+void sub_80B8660(struct Task *);
+void sub_80B86EC(struct Task *);
+void sub_80B871C(struct Task *);
+void sub_80B8770(struct Task *);
+void overworld_bg_setup_2(struct Task *);
+
+void sub_80B88E4(struct Task *);
+void sub_80B8920(struct Task *);
+void sub_80B898C(struct Task *);
+void sub_80B89DC(struct Task *);
+void sub_80B8A0C(struct Task *);
+void sub_80B8A44(struct Task *);
+void sub_80B8A64(struct Task *);
+
+void sub_80B8DB4(struct Task *);
+void sub_80B8E14(struct Task *);
+void sub_80B8E60(struct Task *);
+void sub_80B8EA8(struct Task *);
+void sub_80B8F24(struct Task *);
+
+void sub_80B9204(struct Task *);
+void sub_80B925C(struct Task *);
+void sub_80B92A0(struct Task *);
+void sub_80B92F8(struct Task *);
+void sub_80B933C(struct Task *);
+void sub_80B9390(struct Task *);
+void sub_80B9418(struct Task *);
+void sub_80B9474(struct Task *);
+void sub_80B9494(struct Task *);
+
+void sub_80B9804(struct Task *);
+void sub_80B98B8(struct Task *);
+void sub_80B9924(struct Task *);
+void sub_80B9978(struct Task *);
+void sub_80B99F0(struct Task *);
+void sub_80B9A28(struct Task *);
+void sub_80B9A60(struct Task *);
+
+void sub_80B9C28(s16*, u8);
+void sub_80B9C54(s16*, u8);
+void sub_80B9CDC(s16*, u8);
#endif //GUARD_FIELD_EFFECTS_H
diff --git a/include/field_effect_helpers.h b/include/field_effect_helpers.h
index 15928eba3..3c9e00b62 100644
--- a/include/field_effect_helpers.h
+++ b/include/field_effect_helpers.h
@@ -13,5 +13,7 @@
u8 sub_8154228(void);
bool8 sub_8155DA0(struct MapObject *);
void sub_8155D78(struct MapObject *);
+void sub_81555AC(u8, u8);
+void ash(s16, s16, u16, s16);
#endif //GUARD_FIELD_EFFECT_HELPERS_H
diff --git a/include/field_map_obj.h b/include/field_map_obj.h
index 8f34d4b93..1bf3915e1 100644
--- a/include/field_map_obj.h
+++ b/include/field_map_obj.h
@@ -93,6 +93,8 @@ void npc_coords_shift_still(struct MapObject *pObject);
void FieldObjectMoveDestCoords(struct MapObject *pObject, u32 unk_19, s16 *pInt, s16 *pInt1);
u8 AddCameraObject(u8 linkedSpriteId);
void UpdateFieldObjectsForCameraUpdate(s16 x, s16 y);
+u8 GetSimpleGoAnimId(u32);
+u8 sub_8093514(u32);
// Exported data declarations
diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h
index f616717f2..0b9ea385c 100644
--- a/include/field_player_avatar.h
+++ b/include/field_player_avatar.h
@@ -40,6 +40,9 @@ void sub_808D074(u8);
void GetXYCoordsOneStepInFrontOfPlayer(s16 *xPtr, s16 *yPtr);
u8 GetRivalAvatarGraphicsIdByStateIdAndGender(u8, u8);
void sub_808C114(void);
-u8 GetPlayerAvatarGraphicsIdByCurrentState();
+u8 GetPlayerAvatarGraphicsIdByCurrentState(void);
+void SetPlayerAvatarStateMask(u8 a);
+u8 GetPlayerAvatarGraphicsIdByStateId(u8 a);
+u8 sub_8093540(u32);
#endif // GUARD_FIELD_PLAYER_AVATAR_H
diff --git a/include/field_screen.h b/include/field_screen.h
index 02e0a0a91..d9a2bb5fa 100644
--- a/include/field_screen.h
+++ b/include/field_screen.h
@@ -7,10 +7,12 @@
// Exported ROM declarations
void pal_fill_black(void);
-bool8 sub_80ABDFC(void);
+bool8 IsWeatherNotFadingIn(void);
void sub_80AF168(void);
+void sub_80AF2B4(u8 taskId);
void UpdateWeatherPerDay(u16 days);
void sub_80AC3D0(void);
void sub_80AC3E4(void);
+void PreservePaletteInWeather(u8);
#endif //GUARD_FIELD_SCREEN_H
diff --git a/include/field_special_scene.h b/include/field_special_scene.h
new file mode 100644
index 000000000..240e9ecb6
--- /dev/null
+++ b/include/field_special_scene.h
@@ -0,0 +1,14 @@
+#ifndef GUARD_FIELD_SPECIAL_SCENE_H
+#define GUARD_FIELD_SPECIAL_SCENE_H
+
+s16 GetTruckCameraBobbingY(int a1);
+s16 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(u8);
+void sub_80C791C(void);
+
+#endif // GUARD_FIELD_SPECIAL_SCENE_H
diff --git a/include/field_tasks.h b/include/field_tasks.h
index 2a2a772d8..400ad054d 100644
--- a/include/field_tasks.h
+++ b/include/field_tasks.h
@@ -1,6 +1,9 @@
#ifndef GUARD_FIELD_TASKS_H
#define GUARD_FIELD_TASKS_H
-void ActivatePerStepCallback(u8);
+void SetUpFieldTasks(void);
+void ActivatePerStepCallback(u8 callbackId);
+void ResetFieldTasksArgs(void);
+void SetSootopolisGymCrackedIceMetatiles(void);
#endif // GUARD_FIELD_TASKS_H
diff --git a/include/fieldmap.h b/include/fieldmap.h
index 6e127ce5d..699595580 100644
--- a/include/fieldmap.h
+++ b/include/fieldmap.h
@@ -28,4 +28,8 @@ struct MapConnection *sub_8088950(u8 direction, int x, int y);
bool8 sub_80889A8(u8 direction, int x, int y, struct MapConnection *connection);
bool8 sub_8088A0C(int x, int src_width, int dest_width, int offset);
+void SpriteCB_PokeballGlow(struct Sprite *);
+void SpriteCB_PokecenterMonitor(struct Sprite *);
+void SpriteCB_HallOfFameMonitor(struct Sprite *);
+
#endif //GUARD_FIELDMAP_H
diff --git a/include/fldeff_80F9BCC.h b/include/fldeff_80F9BCC.h
index 84015065e..ba775cd6d 100644
--- a/include/fldeff_80F9BCC.h
+++ b/include/fldeff_80F9BCC.h
@@ -9,6 +9,8 @@
void sub_80FA5E4(s16 id, s16 x, s16 y);
void sub_80FA794(s16 x, s16 y);
+void CreateRecordMixingSprite(void);
+void DestroyRecordMixingSprite(void);
void overworld_poison_effect(void);
bool8 sub_80FADE4(u16, u8);
diff --git a/include/global.h b/include/global.h
index 863bfcee6..4a0fdb70a 100644
--- a/include/global.h
+++ b/include/global.h
@@ -11,10 +11,10 @@
// to help in decompiling
#define asm_comment(x) asm volatile("@ -- " x " -- ")
#define asm_unified(x) asm(".syntax unified\n" x "\n.syntax divided")
-#define ASM_DIRECT __attribute__((naked))
+#define NAKED __attribute__((naked))
// IDE support
-#if defined (__APPLE__) || defined (__CYGWIN__)
+#if defined (__APPLE__) || defined (__CYGWIN__) || defined (_MSC_VER)
#define _(x) x
#define __(x) x
#define INCBIN_U8 {0}
@@ -23,7 +23,7 @@
#define INCBIN_S8 {0}
#define INCBIN_S16 {0}
#define INCBIN_S32 {0}
-#endif // __APPLE__
+#endif // IDE support
#define ARRAY_COUNT(array) (size_t)(sizeof(array) / sizeof((array)[0]))
@@ -107,6 +107,8 @@ enum LanguageId
#define VARS_COUNT 256
#define MAIL_COUNT 16
#define SECRET_BASES_COUNT 20
+#define TV_SHOWS_COUNT 25
+#define POKE_NEWS_COUNT 16
#define PC_ITEMS_COUNT 50
#define BAG_ITEMS_COUNT 30
#define BAG_KEYITEMS_COUNT 30
@@ -262,6 +264,56 @@ struct UnknownSaveBlock2Struct
u8 field_EB;
}; // sizeof = 0xEC
+struct UnkRecordMixingStruct
+{
+ u8 field_0[0x34];
+ u8 playerId[4];
+ u8 field_38[10];
+};
+
+struct UnknownPokemonStruct
+{
+ u16 species;
+ u16 heldItem;
+ u16 moves[4];
+ u8 level;
+ u8 ppBonuses;
+ u8 hpEV;
+ u8 attackEV;
+ u8 defenseEV;
+ u8 speedEV;
+ u8 spAttackEV;
+ u8 spDefenseEV;
+ u32 otId;
+ u32 hpIV:5;
+ u32 attackIV:5;
+ u32 defenseIV:5;
+ u32 speedIV:5;
+ u32 spAttackIV:5;
+ u32 spDefenseIV:5;
+ u32 gap:1;
+ u32 altAbility:1;
+ u32 personality;
+ u8 nickname[POKEMON_NAME_LENGTH + 1];
+ u8 friendship;
+};
+
+struct EmeraldBattleTowerRecord
+{
+ /*0x00*/ u8 battleTowerLevelType; // 0 = level 50, 1 = level 100
+ /*0x01*/ u8 trainerClass;
+ /*0x02*/ u16 winStreak;
+ /*0x04*/ u8 name[8];
+ /*0x0C*/ u8 trainerId[4];
+ /*0x10*/ struct {
+ u16 easyChat[6];
+ } greeting;
+ /*0x1C*/ u8 filler_1c[0x18];
+ /*0x34*/ struct UnknownPokemonStruct party[4];
+ /*0xE4*/ u8 language;
+ /*0xE8*/ u32 checksum;
+};
+
struct SaveBlock2
{
/*0x00*/ u8 playerName[PLAYER_NAME_LENGTH];
@@ -287,7 +339,12 @@ struct SaveBlock2
/*0xAC*/ u32 encryptionKey;
// TODO: fix and verify labels
- /*0xB0*/ u8 field_B0[316];
+ /*0xB0*/ u8 field_B0;
+ /*0xB1*/ u8 field_B1;
+ /*0xB2*/ u8 field_B2_0:3;
+ /*0xB2*/ u8 field_B2_1:2;
+ /*0xB3*/ u8 field_B3[0x29];
+ /*0xDC*/ struct UnkRecordMixingStruct field_DC[4];
/*0x1EC*/ struct BerryCrush berryCrush;
/*0x1FC*/ struct PokemonJumpResults pokeJump;
/*0x20C*/ struct BerryPickingResults berryPick;
@@ -296,7 +353,7 @@ struct SaveBlock2
// All below could be a one giant struct
- /*0x64C*/ u8 field_64C[236];
+ /*0x64C*/ struct EmeraldBattleTowerRecord battleTower;
/*0x738*/ struct UnknownSaveBlock2Struct field_738[5]; // No idea here, it's probably wrong, no clue.
/*0xBD4*/ u16 field_BD4;
/*0xBD6*/ u16 field_BD6;
@@ -313,22 +370,64 @@ struct SaveBlock2
/*0xCA9*/ u8 field_CA9_f : 1; // 0x80
/*0xCAA*/ u16 field_CAA[4];
/*0xCB2*/ u16 battlePyramidWildHeaderId;
- /*0xCB4*/ u16 field_CB4[41];
+ /*0xCB4*/ u16 field_CB4[30];
+ /*0xCF0*/ u16 field_CF0[2];
+ /*0xCF4*/ u16 field_CF4[2];
+ /*0xCF8*/ u16 field_CF8[2];
+ /*0xCFC*/ u16 field_CFC[5];
/*0xD06*/ u8 field_D06;
/*0xD07*/ u8 field_D07;
- /*0xD08*/ u8 filler_D08[0x112];
+ /*0xD08*/ u8 filler_D08;
+ /*0xD09*/ u8 filler_D09;
+ /*0xD0A*/ u8 filler_D0A;
+ /*0xD0B*/ u8 filler_D0B;
+ /*0xD0C*/ u8 filler_D0C;
+ /*0xD0D*/ u8 filler_D0D;
+ /*0xD0E*/ u8 filler_D0E;
+ /*0xD0F*/ u8 filler_D0F;
+ /*0xD10*/ u8 filler_D10;
+ /*0xD11*/ u8 filler_D11;
+ /*0xD12*/ u8 filler_D12;
+ /*0xD13*/ u8 filler_D13;
+ /*0xD14*/ u16 field_D14[2];
+ /*0xD18*/ u8 field_D18[0xB8];
+ /*0xDD0*/ u16 field_DD0[2];
+ /*0xDD4*/ u16 field_DD4[2];
+ /*0xDD8*/ u16 field_DD8;
+ /*0xDDA*/ u16 field_DDA;
+ /*0xDDC*/ u16 field_DDC;
+ /*0xDDE*/ u16 field_DDE[2];
+ /*0xDE2*/ u16 field_DE2;
+ /*0xDE4*/ u16 field_DE4;
+ /*0xDE6*/ u16 field_DE6;
+ /*0xDE8*/ u16 field_DE8;
+ /*0xDEA*/ u16 field_DEA[2];
+ /*0xDEE*/ u16 field_DEE;
+ /*0xDF0*/ u16 field_DF0;
+ /*0xDF2*/ u16 field_DF2;
+ /*0xDF4*/ u16 field_DF4;
+ /*0xDF6*/ u16 field_DF6;
+ /*0xDF8*/ u16 field_DF8;
+ /*0xDFA*/ u16 field_DFA;
+ /*0xDFC*/ u16 field_DFC;
+ /*0xDFE*/ u16 field_DFE;
+ /*0xE00*/ u16 field_E00;
+ /*0xE02*/ u16 field_E02;
+ /*0xE04*/ u16 field_E04;
+ /*0xE06*/ u16 field_E06;
+ /*0xE08*/ u16 field_E08[9];
/*0xE1A*/ u16 battlePyramidFloor; // possibly?
- /*0xE1C*/ u8 field_E1C[16];
+ /*0xE1C*/ u16 field_E1C;
+ /*0xE1E*/ u16 field_E1E[7];
/*0xE2C*/ struct PyramidBag pyramidBag;
/*0x???*/ u8 field_unkown[6];
/*0xE6E*/ u16 battleTentWinStreak;
/*0xE70*/ u8 field_E70[72];
/*0xEB8*/ u16 frontierBattlePoints;
/*0xEBA*/ u8 field_EBA[39];
- /*0xEE1*/ u8 field_EE1;
- /*0xEE2*/ u8 field_EE2[7];
- /*0xEE9*/ u8 field_EE9;
- /*0xEEA*/ u8 field_EEA[66];
+ /*0xEE1*/ u8 field_EE1[2][PLAYER_NAME_LENGTH];
+ /*0xEF1*/ u8 field_EF1[2][4];
+ /*0xEF9*/ u8 field_EF9[51];
// sizeof=0xF2C
};
@@ -564,9 +663,9 @@ struct ContestWinner
u8 contestRank;
};
-struct DaycareMiscMon
+struct DayCareMail
{
- struct MailStruct mail;
+ struct MailStruct message;
u8 OT_name[OT_NAME_LENGTH + 1];
u8 monName[POKEMON_NAME_LENGTH + 1];
u8 gameLanguage:4;
@@ -576,7 +675,7 @@ struct DaycareMiscMon
struct DaycareMon
{
struct BoxPokemon mon;
- struct DaycareMiscMon misc;
+ struct DayCareMail mail;
u32 steps;
};
@@ -587,12 +686,6 @@ struct DayCare
u8 stepCounter;
};
-struct DayCareMail
-{
- /*0x00*/ struct MailStruct message;
- /*0x24*/ u8 names[19];
-};
-
struct RecordMixingDayCareMail
{
struct DayCareMail mail[DAYCARE_MON_COUNT];
@@ -648,12 +741,13 @@ struct LilycoveLadyContest
/*0x00e*/ u8 language;
};
-typedef union // TODO
+typedef union
{
struct LilycoveLadyQuiz quiz;
struct LilycoveLadyFavour favour;
struct LilycoveLadyContest contest;
u8 id;
+ u8 pad[0x40];
} LilycoveLady;
struct WaldaPhrase
@@ -720,8 +814,8 @@ struct SaveBlock1
/*0x????*/ u8 decorDoll[40];
/*0x????*/ u8 decorCushion[10];
/*0x27CA*/ u8 padding_27CA[2];
- /*0x27CC*/ TVShow tvShows[25];
- /*0x2B50*/ PokeNews pokeNews[16];
+ /*0x27CC*/ TVShow tvShows[TV_SHOWS_COUNT];
+ /*0x2B50*/ PokeNews pokeNews[POKE_NEWS_COUNT];
/*0x2B90*/ u16 outbreakPokemonSpecies;
/*0x2B92*/ u8 outbreakLocationMapNum;
/*0x2B93*/ u8 outbreakLocationMapGroup;
@@ -753,7 +847,6 @@ struct SaveBlock1
/*0x3B14*/ struct RecordMixingGift recordMixingGift;
/*0x3B24*/ u8 seen2[DEX_FLAGS_NO];
/*0x3B58*/ LilycoveLady lilycoveLady;
- /*0x3B88*/ u8 filler_3B88[0x10];
/*0x3B98*/ struct UnkSaveSubstruct_3b98 unk_3B98[20];
/*0x3C88*/ u8 filler_3C88[0xE8];
/*0x3D70*/ struct WaldaPhrase waldaPhrase;
diff --git a/include/item_menu.h b/include/item_menu.h
index 40c015a8e..8a474bc0f 100644
--- a/include/item_menu.h
+++ b/include/item_menu.h
@@ -7,7 +7,7 @@ struct BagStruct
void (*bagCallback)(void);
u8 location;
u8 pocket;
- u8 unk6[2];
+ u16 unk6;
u16 cursorPosition[5];
u16 scrollPosition[5];
};
diff --git a/include/lilycove_lady.h b/include/lilycove_lady.h
index 084e5722e..f26285d68 100644
--- a/include/lilycove_lady.h
+++ b/include/lilycove_lady.h
@@ -6,7 +6,7 @@ void SetLilycoveLady(void);
void sub_818DA78(void);
void sub_818DEF4(void);
void sub_818E564(void);
-void sub_818E570(const struct LilycoveLadyQuiz *quiz);
+void sub_818E570(const LilycoveLady *lilycoveLady);
bool8 GivePokeblockToContestLady(struct Pokeblock *pokeblock);
void sub_818E7E0(u8 *dest1, u8 *dest2);
void sub_818E81C(u8 *dest);
diff --git a/include/link.h b/include/link.h
index 051370897..5b3cd26ca 100644
--- a/include/link.h
+++ b/include/link.h
@@ -293,4 +293,13 @@ extern u32 gFiller_03004138;
extern u32 gFiller_0300413C;
extern u32 gFiller_03003080;
+bool32 Link_AnyPartnersPlayingRubyOrSapphire(void);
+bool32 sub_800A03C(void);
+void sub_8009628(u8);
+u8 sub_800AA48(void);
+void sub_8009FAC(void);
+bool8 sub_800A4D8(u8 a0);
+u8 sub_800A9D8(void);
+u8 sub_800A0C8(s32, s32);
+
#endif // GUARD_LINK_H
diff --git a/include/link_rfu.h b/include/link_rfu.h
index a6084b138..ca39c2fb2 100644
--- a/include/link_rfu.h
+++ b/include/link_rfu.h
@@ -231,5 +231,6 @@ struct UnkLinkRfuStruct_02022B14 *sub_800F7DC(void);
void sub_8011068(u8 a0);
void sub_8011170(u32 a0);
void sub_8011A64(u8 a0, u16 a1);
+u8 sub_801048C(bool32 a0);
#endif //GUARD_LINK_RFU_H
diff --git a/include/list_menu.h b/include/list_menu.h
index 0aa66a524..d8b526b61 100644
--- a/include/list_menu.h
+++ b/include/list_menu.h
@@ -58,6 +58,33 @@ struct UnknownListMenuWindowStruct
u8 palNum;
};
+struct ArrowStruct
+{
+ u8 unk0;
+ u8 unk1;
+ u8 unk2;
+ u8 unk3;
+ u8 unk4;
+ u8 unk5;
+ u16 unk6;
+ u16 unk8;
+ u16 tileTag;
+ u16 palTag;
+ u8 palNum;
+};
+
+struct CursorStruct
+{
+ u8 unk0;
+ u8 unk1;
+ u16 unk2;
+ u16 unk4;
+ u16 tileTag;
+ u16 palTag;
+ u8 palNum;
+};
+
+extern struct ArrowStruct gUnknown_0203CE8C;
extern struct ListMenuTemplate gMultiuseListMenuTemplate;
s32 DoMysteryGiftListMenu(struct WindowTemplate *windowTemplate, struct ListMenuTemplate *listMenuTemplate, u8 arg2, u16 tileNum, u16 palNum);
@@ -74,5 +101,11 @@ void ListMenuGetScrollAndRow(u8 listTaskId, u16 *scrollOffset, u16 *selectedRow)
u16 ListMenuGetYCoordForPrintingArrowCursor(u8 listTaskId);
void sub_81AF028(u8 cursorPal, u8 fillValue, u8 cursorShadowPal);
void sub_81AF078(s32 arg0, u8 arg1, struct ListMenu *list);
+s32 sub_81AF08C(u8 taskId, u8 field);
+void sub_81AF15C(u8 taskId, u8 field, s32 value);
+u8 AddScrollIndicatorArrowPair(const struct ArrowStruct *arrowInfo, u16 *arg1);
+u8 AddScrollIndicatorArrowPairParametrized(u32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 tileTag, s32 palTag, void *arg7);
+void RemoveScrollIndicatorArrowPair(u8 taskId);
+void Task_ScrollIndicatorArrowPairOnMainMenu(u8 taskId);
#endif //GUARD_LIST_MENU_H
diff --git a/include/mauville_old_man.h b/include/mauville_old_man.h
index 696f12cc7..e318ac8bb 100644
--- a/include/mauville_old_man.h
+++ b/include/mauville_old_man.h
@@ -11,9 +11,16 @@ enum MauvilleOldManType
MAUVILLE_MAN_GIDDY
};
+extern struct BardSong gBardSong;
+
void SetMauvilleOldMan(void);
u8 GetCurrentMauvilleOldMan(void);
-extern struct BardSong gBardSong;
void ScrSpecial_SetMauvilleOldManMapObjGfx(void);
+u8 sub_81201C8(void);
+void sub_8120B70(OldMan *dest);
+void sub_8120670(void);
+void SanitizeReceivedRubyOldMan(union OldMan * oldMan, u32 r1, u32 r6);
+void SanitizeReceivedEmeraldOldMan(union OldMan * oldMan, u32 unused, u32 a2);
+void ResetMauvilleOldManFlag(void);
#endif // GUARD_MAUVILLE_OLD_MAN_H
diff --git a/include/menu_helpers.h b/include/menu_helpers.h
index 4de6603a3..387a89fdd 100644
--- a/include/menu_helpers.h
+++ b/include/menu_helpers.h
@@ -14,29 +14,27 @@ struct YesNoFuncTable
// Exported RAM declarations
// Exported ROM declarations
-void sub_812220C(struct ItemSlot *, u8, u8 *, u8 *, u8);
-void sub_812225C(u16 *, u16 *, u8, u8);
-void sub_8122298(u16 *, u16 *, u8, u8, u8);
-void sub_8121F68(u8 taskId, const struct YesNoFuncTable *data);
-bool8 sub_81221AC(void);
-bool8 sub_81221EC(void);
void ResetVramOamAndBgCntRegs(void);
-void SetVBlankHBlankCallbacksToNull(void);
void ResetAllBgsCoordinates(void);
+void SetVBlankHBlankCallbacksToNull(void);
+void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 arg2, u8 arg3, u8 fontId, u8 textSpeed, const u8 *string, void *taskFunc);
bool16 RunTextPrintersRetIsActive(u8 textPrinterId);
-void sub_8122344(u8 *arg0, u8 arg1);
-void sub_81223B0(u8 *arg0, u8 arg1);
-void LoadListMenuArrowsGfx(void);
-void sub_81223FC(u8 *a0, u8 count, u8 a2);
-void sub_8122448(u8 *a0, u8 count, u16 x, u16 y);
-void DisplayMessageAndContinueTask(u8 taskId, u8 arg1, u16 arg2, u8 arg3, u8 arg4, u8 textSpeed, const u8 *string, void *taskFunc);
+void sub_8121F68(u8 taskId, const struct YesNoFuncTable *data);
void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 arg2, u8 arg3, u8 arg4, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo);
+bool8 AdjustQuantityAccordingToDPadInput(s16 *arg0, u16 arg1);
u8 GetLRKeysState(void);
u8 sub_812210C(void);
-bool8 sub_81221EC(void);
+bool8 sub_8122148(u16 itemId);
+bool8 itemid_80BF6D8_mail_related(u16 itemId);
bool8 sub_81221AC(void);
-bool8 sub_8122148(u16);
-bool8 AdjustQuantityAccordingToDPadInput(s16*, u16);
-bool8 itemid_80BF6D8_mail_related(u16);
+bool8 sub_81221EC(void);
+void sub_812220C(struct ItemSlot *slots, u8 count, u8 *arg2, u8 *usedSlotsCount, u8 maxUsedSlotsCount);
+void sub_812225C(u16 *arg0, u16 *arg1, u8 arg2, u8 arg3);
+void sub_8122298(u16 *arg0, u16 *arg1, u8 arg2, u8 arg3, u8 arg4);
+void LoadListMenuArrowsGfx(void);
+void sub_8122344(u8 *spriteIds, u8 count);
+void sub_81223B0(u8 *spriteIds, u8 count);
+void sub_81223FC(u8 *spriteIds, u8 count, bool8 invisible);
+void sub_8122448(u8 *spriteIds, u8 count, s16 x, u16 y);
#endif //GUARD_MENU_HELPERS_H
diff --git a/include/menu_indicators.h b/include/menu_indicators.h
deleted file mode 100644
index a099cffab..000000000
--- a/include/menu_indicators.h
+++ /dev/null
@@ -1,37 +0,0 @@
-#ifndef GUARD_MENU_INDICATORS_H
-#define GUARD_MENU_INDICATORS_H
-
-// Exported type declarations
-
-// Exported RAM declarations
-
-// Exported ROM declarations
-
-struct ArrowStruct
-{
- u8 unk0[6];
- u16 unk6[4];
- u8 unkE;
-};
-
-struct CursorStruct
-{
- u8 unk0;
- u8 unk1;
- u16 unk2;
- u16 unk4;
- u16 unk6;
- u16 unk8;
- u8 unkA;
-};
-
-void Task_ScrollIndicatorArrowPairOnMainMenu(u8);
-u8 AddScrollIndicatorArrowPairParametrized(u8, u8, u8, u8, s32, u16, u16, u16 *);
-void RemoveScrollIndicatorArrowPair(u8);
-u8 AddScrollIndicatorArrowPair(const struct ArrowStruct*, void*);
-void sub_81AF15C(u8, u8, u8);
-void ListMenuRemoveCursorObject(u8 taskId, u32 cursorKind);
-void ListMenuUpdateCursorObject(u8 taskId, u16 x, u16 y, u32 cursorKind);
-u8 ListMenuAddCursorObjectInternal(struct CursorStruct *cursor, u32 cursorKind);
-
-#endif //GUARD_MENU_INDICATORS_H
diff --git a/include/overworld.h b/include/overworld.h
index 59d4d6a30..15d7bb362 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -23,6 +23,8 @@ extern u16 *gBGTilemapBuffers1;
extern u16 *gBGTilemapBuffers2;
extern u16 *gBGTilemapBuffers3;
+extern void (*gFieldCallback)(void);
+
// Exported ROM declarations
extern const struct UCoords32 gUnknown_08339D64[];
@@ -101,7 +103,7 @@ u8 GetMapTypeByGroupAndId(s8 mapGroup, s8 mapNum);
u8 GetMapTypeByWarpData(struct WarpData *warp);
u8 Overworld_GetMapTypeOfSaveblockLocation(void);
u8 get_map_light_from_warp0(void);
-bool8 is_light_level_1_2_3_5_or_6(u8 mapType);
+bool8 is_map_type_1_2_3_5_or_6(u8 mapType);
bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 mapType);
bool8 Overworld_MapTypeIsIndoors(u8 mapType);
u8 sav1_saved_warp2_map_get_name(void);
diff --git a/include/pokemon.h b/include/pokemon.h
index cd79a217d..37028821a 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -240,33 +240,6 @@ struct PokemonStorage
/*0x83C2*/ u8 boxWallpapers[14];
};
-struct UnknownPokemonStruct
-{
- u16 species;
- u16 heldItem;
- u16 moves[4];
- u8 level;
- u8 ppBonuses;
- u8 hpEV;
- u8 attackEV;
- u8 defenseEV;
- u8 speedEV;
- u8 spAttackEV;
- u8 spDefenseEV;
- u32 otId;
- u32 hpIV:5;
- u32 attackIV:5;
- u32 defenseIV:5;
- u32 speedIV:5;
- u32 spAttackIV:5;
- u32 spDefenseIV:5;
- u32 gap:1;
- u32 altAbility:1;
- u32 personality;
- u8 nickname[POKEMON_NAME_LENGTH + 1];
- u8 friendship;
-};
-
struct UnknownPokemonSubStruct2
{
u16 species;
@@ -482,6 +455,7 @@ extern const u8 gUnknown_08329D2A[];
extern const u8 gStatStageRatios[][2];
extern const u16 gUnknown_08329D54[];
extern const struct SpriteTemplate gUnknown_08329D98[];
+extern const struct CompressedSpritePalette gMonPaletteTable[];
void ZeroBoxMonData(struct BoxPokemon *boxMon);
void ZeroMonData(struct Pokemon *mon);
diff --git a/include/record_mixing.h b/include/record_mixing.h
new file mode 100644
index 000000000..3cd4d649e
--- /dev/null
+++ b/include/record_mixing.h
@@ -0,0 +1,35 @@
+#ifndef GUARD_RECORD_MIXING_H
+#define GUARD_RECORD_MIXING_H
+
+// Exported type declarations
+struct UnkRecordMixingStruct2a
+{
+ u8 playerId[4];
+ u16 field_4;
+ u8 playerName[PLAYER_NAME_LENGTH];
+ u8 language;
+};
+
+struct UnkRecordMixingStruct2b
+{
+ u8 playerId1[4];
+ u8 playerId2[4];
+ u16 field_8;
+ u8 playerName1[PLAYER_NAME_LENGTH];
+ u8 playerName2[PLAYER_NAME_LENGTH];
+ u8 language;
+};
+
+struct UnkRecordMixingStruct2
+{
+ struct UnkRecordMixingStruct2a field_0[9][2];
+ struct UnkRecordMixingStruct2b field_120[2];
+};
+
+// Exported RAM declarations
+
+// Exported ROM declarations
+void sub_80E6BE8(void);
+void sub_80E8260(struct UnkRecordMixingStruct2 *arg0);
+
+#endif //GUARD_RECORD_MIXING_H
diff --git a/include/rom_8034C54.h b/include/rom_8034C54.h
new file mode 100644
index 000000000..9ad84ca13
--- /dev/null
+++ b/include/rom_8034C54.h
@@ -0,0 +1,26 @@
+#ifndef GUARD_ROM_8034C54_H
+#define GUARD_ROM_8034C54_H
+
+struct UnkStruct3
+{
+ u8 field_0_0:2;
+ u8 shape:2;
+ u8 size:2;
+ u8 priority:2;
+ u8 field_1;
+ u8 xDelta;
+ s16 x;
+ s16 y;
+ const struct SpriteSheet *spriteSheet;
+ const struct SpritePalette *spritePal;
+};
+
+bool32 sub_8034C54(u32 count);
+void sub_8034CC8(void);
+bool32 sub_8034D14(u32 id, s32 arg1, const struct UnkStruct3 *arg2);
+void sub_8035044(u32 id, s32 arg1);
+void sub_80353DC(u32 id);
+void sub_803547C(u32 id, bool32 arg1);
+u8 sub_80355F8(u32 arg0, u32 arg1);
+
+#endif // GUARD_ROM_8034C54_H
diff --git a/include/save.h b/include/save.h
index f06db2955..7b271129a 100644
--- a/include/save.h
+++ b/include/save.h
@@ -90,6 +90,9 @@ u8 sub_8153430(void);
bool8 sub_8153474(void);
u8 Save_LoadGameData(u8 a1);
u16 sub_815355C(void);
+u8 sub_81534D0(u8);
+u8 sub_8153430(void);
+bool8 sub_8153474(void);
u32 TryCopySpecialSaveSection(u8 sector, u8* dst);
u32 sub_8153634(u8 sector, u8* src);
void sub_8153688(u8 taskId);
diff --git a/include/secret_base.h b/include/secret_base.h
index eef48db31..c20533698 100644
--- a/include/secret_base.h
+++ b/include/secret_base.h
@@ -8,10 +8,13 @@
// Exported ROM declarations
void sub_80E9578(void);
void sub_80E980C(void);
+void sub_80EB18C(struct SecretBaseRecord *dest);
+void sub_80E9914(void);
u8 *GetSecretBaseMapName(u8 *dest);
const u8 *GetSecretBaseTrainerLoseText(void);
void sub_80E8EE0(struct MapEvents const *events);
void sub_80E9238(u8 flagIn);
bool8 CurrentMapIsSecretBase(void);
+void sub_80EA3E4(u8 taskId);
#endif //GUARD_SECRET_BASE_H
diff --git a/include/sprite.h b/include/sprite.h
index b5a1b6ae5..4723b66e1 100644
--- a/include/sprite.h
+++ b/include/sprite.h
@@ -229,6 +229,7 @@ struct OamMatrix
extern const struct OamData gDummyOamData;
extern const union AnimCmd *const gDummySpriteAnimTable[];
extern const union AffineAnimCmd *const gDummySpriteAffineAnimTable[];
+extern const struct SpriteTemplate gDummySpriteTemplate;
extern s16 gSpriteCoordOffsetX;
extern s16 gSpriteCoordOffsetY;
diff --git a/include/strings.h b/include/strings.h
index 501cbe510..4736fdc5d 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -110,6 +110,8 @@ extern const u8 gText_MoveCloserToLinkPartner[];
extern const u8 gText_CommErrorCheckConnections[];
extern const u8 gText_ABtnTitleScreen[];
extern const u8 gText_ABtnRegistrationCounter[];
+extern const u8 gText_MixingRecords[];
+extern const u8 gText_RecordMixingComplete[];
extern const u8 gText_EmptyString2[];
extern const u8 gText_Confirm3[];
extern const u8 gText_Cancel4[];
diff --git a/include/tv.h b/include/tv.h
index 1e05a680e..17be8c43c 100644
--- a/include/tv.h
+++ b/include/tv.h
@@ -16,7 +16,7 @@ void sub_80EED10(void);
void sub_80EED34(void);
void sub_80EED60(u16 delta);
void sub_80F01B8(void);
-void sub_80F01E8(void *src, u32 size, u8 masterIdx);
+void ReceiveTvShowsData(void *src, u32 size, u8 masterIdx);
void sub_80EE4DC(struct Pokemon *pokemon, u8 ribbonMonDataIdx);
u32 GetPlayerIDAsU32(void);
bool8 GetPriceReduction(u8 newsKind);
@@ -30,7 +30,7 @@ void sub_80EEA70(void);
void sub_80EDB44(void);
void sub_80EDC60(const u16 *words);
void sub_80EDA80(void);
-void sub_80F0C7C(void *src, u32 size, u8 masterIdx);
+void ReceivePokeNewsData(void *src, u32 size, u8 masterIdx);
void sub_80F0BB8(void);
void sub_80ED950(bool8 flag);
void sub_80EEC80(void);
@@ -39,11 +39,13 @@ void sub_80EECC8(void);
void sub_80EECEC(void);
void sub_80F1208(TVShow *shows);
void sub_80EE44C(u8 nMonsCaught, u8 nPkblkUsed);
+void sub_80F14F8(TVShow *shows);
+size_t sub_80EF370(int value);
+bool8 Put3CheersForPokeblocksOnTheAir(const u8 *partnersName, u8 flavor, u8 unused, u8 sheen, u8 language);
void SetPokemonAnglerSpecies(u16 species);
void UpdateTVShowsPerDay(u16 days);
void PutPokemonTodayCaughtOnAir(void);
void TV_PutSecretBaseVisitOnTheAir(void);
-bool8 Put3CheersForPokeblocksOnTheAir(const u8 *partnersName, u8 flavor, u8 unused, u8 sheen, u8 language);
void PutBattleUpdateOnTheAir(u8 opponentLinkPlayerId, u16 move, u16 speciesPlayer, u16 speciesOpponent);
void UpdateTVScreensOnMap(int, int);