summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/battle.h5
-rw-r--r--include/battle_anim.h13
-rwxr-xr-xinclude/berry_crush.h6
-rwxr-xr-xinclude/berry_powder.h9
-rw-r--r--include/constants/battle_script_commands.h22
-rw-r--r--include/constants/field_effects.h6
-rw-r--r--include/constants/flags.h37
-rw-r--r--include/constants/songs.h4
-rw-r--r--include/constants/vars.h6
-rw-r--r--include/contest_effect.h1
-rwxr-xr-xinclude/ereader_helpers.h20
-rwxr-xr-xinclude/ereader_screen.h6
-rw-r--r--include/event_obj_lock.h1
-rw-r--r--include/event_scripts.h4
-rwxr-xr-xinclude/faraway_island.h10
-rw-r--r--include/field_screen_effect.h2
-rw-r--r--include/gba/types.h23
-rw-r--r--include/global.h76
-rw-r--r--include/graphics.h25
-rw-r--r--include/item_icon.h2
-rw-r--r--include/learn_move.h7
-rw-r--r--include/link.h3
-rw-r--r--include/link_rfu.h5
-rw-r--r--include/list_menu.h4
-rw-r--r--include/main.h2
-rw-r--r--include/menu.h5
-rw-r--r--include/menu_specialized.h67
-rwxr-xr-xinclude/mevent.h63
-rw-r--r--include/mevent2.h6
-rw-r--r--include/mevent_801BAAC.h16
-rwxr-xr-xinclude/mevent_news.h7
-rw-r--r--include/mevent_server.h8
-rw-r--r--include/mevent_server_ish.h10
-rw-r--r--include/move_relearner.h7
-rw-r--r--include/mystery_gift.h8
-rwxr-xr-xinclude/pokemon_summary_screen.h3
-rw-r--r--include/pokenav.h29
-rw-r--r--include/rom_8011DC0.h19
-rw-r--r--include/strings.h133
-rw-r--r--include/text.h2
-rw-r--r--include/title_screen.h2
-rw-r--r--include/union_room.h178
-rwxr-xr-xinclude/union_room_chat.h7
43 files changed, 756 insertions, 113 deletions
diff --git a/include/battle.h b/include/battle.h
index d155ca5a0..13c1851cf 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -564,9 +564,7 @@ struct BattleScripting
};
// rom_80A5C6C
-u8 GetBattlerSide(u8 battler);
-u8 GetBattlerPosition(u8 battler);
-u8 GetBattlerAtPosition(u8 position);
+
struct BattleSpriteInfo
{
@@ -776,5 +774,6 @@ extern u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT];
extern u8 gMultiUsePlayerCursor;
extern u8 gNumberOfMovesToChoose;
extern u8 gUnknown_03005D7C[MAX_BATTLERS_COUNT];
+extern const u8 gTrainerClassNames[][13];
#endif // GUARD_BATTLE_H
diff --git a/include/battle_anim.h b/include/battle_anim.h
index b3350f893..949bc236b 100644
--- a/include/battle_anim.h
+++ b/include/battle_anim.h
@@ -73,7 +73,7 @@ void sub_8118FBC(int bgId, u8 arg1, u8 arg2, u8 battlerPosition, u8 arg4, u8 *ar
void HandleIntroSlide(u8 terrainId);
int GetAnimBgAttribute(u8 bgId, u8 attributeId);
-// battle_anim_80A5C6C.s
+// battle_anim_mons.s
void TranslateSpriteInEllipseOverDuration(struct Sprite *sprite);
void sub_80A8AEC(struct Sprite *sprite);
void sub_80A8A6C(struct Sprite *sprite);
@@ -155,6 +155,9 @@ void sub_80A6DEC(struct Sprite *sprite);
void DestroyAnimVisualTaskAndDisableBlend(u8 taskId);
void DestroySpriteAndFreeResources_(struct Sprite *sprite);
void SetBattlerSpriteYOffsetFromOtherYScale(u8 spriteId, u8 otherSpriteId);
+u8 GetBattlerSide(u8 battler);
+u8 GetBattlerPosition(u8 battler);
+u8 GetBattlerAtPosition(u8 position);
enum
{
@@ -193,7 +196,7 @@ u8 GetSubstituteSpriteDefault_Y(u8 battlerId);
void sub_80A64EC(struct Sprite *sprite);
void sub_80A718C(struct Sprite *sprite);
-// battle_anim_80A9C70.s
+// battle_anim_status_effects.s
#define STAT_ANIM_PLUS1 15
#define STAT_ANIM_PLUS2 39
#define STAT_ANIM_MINUS1 22
@@ -204,13 +207,11 @@ void sub_80A718C(struct Sprite *sprite);
#define STAT_ANIM_MULTIPLE_MINUS2 58
void LaunchStatusAnimation(u8 battlerId, u8 statusAnimId);
-// battle_anim_8170478.c
-void sub_8172EF0(u8 battler, struct Pokemon *mon);
-
// ground.c
void sub_81152DC(u8 taskId);
-// battle_anim_8170478.s
+// battle_anim_special.c
+void sub_8172EF0(u8 battler, struct Pokemon *mon);
u8 ItemIdToBallId(u16 itemId);
u8 AnimateBallOpenParticles(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballId);
u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 selectedPalettes, u8 ballId);
diff --git a/include/berry_crush.h b/include/berry_crush.h
new file mode 100755
index 000000000..101450a33
--- /dev/null
+++ b/include/berry_crush.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_BERRY_CRUSH_H
+#define GUARD_BERRY_CRUSH_H
+
+void sub_8020C70(MainCallback callback);
+
+#endif // GUARD_BERRY_CRUSH_H
diff --git a/include/berry_powder.h b/include/berry_powder.h
new file mode 100755
index 000000000..8deea7ec0
--- /dev/null
+++ b/include/berry_powder.h
@@ -0,0 +1,9 @@
+#ifndef GUARD_BERRY_POWDER_H
+#define GUARD_BERRY_POWDER_H
+
+void SetBerryPowder(u32 *powder, u32 amount);
+void ApplyNewEncryptionKeyToBerryPowder(u32 encryptionKey);
+bool8 GiveBerryPowder(u32 amountToAdd);
+u32 GetBerryPowder(void);
+
+#endif // GUARD_BERRY_POWDER_H
diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h
index e8a2980a5..894bd13b6 100644
--- a/include/constants/battle_script_commands.h
+++ b/include/constants/battle_script_commands.h
@@ -95,8 +95,6 @@
// statchange defines
#define STAT_CHANGE_BS_PTR 0x1
#define STAT_CHANGE_NOT_PROTECT_AFFECTED 0x20
-#define STAT_CHANGE_WORKED 0
-#define STAT_CHANGE_DIDNT_WORK 1
// atk48
#define ATK48_STAT_NEGATIVE 0x1
@@ -104,6 +102,26 @@
#define ATK48_ONLY_MULTIPLE 0x4
#define ATK48_DONT_CHECK_LOWER 0x8
+// atk49, moveend cases
+#define ATK49_RAGE 0
+#define ATK49_DEFROST 1
+#define ATK49_SYNCHRONIZE_TARGET 2
+#define ATK49_MOVE_END_ABILITIES 3
+#define ATK49_STATUS_IMMUNITY_ABILITIES 4
+#define ATK49_SYNCHRONIZE_ATTACKER 5
+#define ATK49_CHOICE_MOVE 6
+#define ATK49_CHANGED_ITEMS 7
+#define ATK49_ATTACKER_INVISIBLE 8
+#define ATK49_ATTACKER_VISIBLE 9
+#define ATK49_TARGET_VISIBLE 10
+#define ATK49_ITEM_EFFECTS_ALL 11
+#define ATK49_KINGSROCK_SHELLBELL 12
+#define ATK49_SUBSTITUTE 13
+#define ATK49_UPDATE_LAST_MOVES 14
+#define ATK49_MIRROR_MOVE 15
+#define ATK49_NEXT_TARGET 16
+#define ATK49_COUNT 17
+
#define BIT_HP 0x1
#define BIT_ATK 0x2
#define BIT_DEF 0x4
diff --git a/include/constants/field_effects.h b/include/constants/field_effects.h
index 282f9ce75..00ca60457 100644
--- a/include/constants/field_effects.h
+++ b/include/constants/field_effects.h
@@ -1,7 +1,7 @@
#ifndef GUARD_FIELD_EFFECT_CONSTANTS_H
#define GUARD_FIELD_EFFECT_CONSTANTS_H
-#define FLDEFF_EXCLAMATION_MARK_ICON 0
+#define FLDEFF_EXCLAMATION_MARK_ICON 0
#define FLDEFF_USE_CUT_ON_GRASS 1
#define FLDEFF_USE_CUT_ON_TREE 2
#define FLDEFF_SHADOW 3
@@ -61,11 +61,11 @@
#define FLDEFF_SECRET_POWER_SHRUB 57
#define FLDEFF_CUT_GRASS 58
#define FLDEFF_FIELD_MOVE_SHOW_MON_INIT 59
-#define FLDEFF_USE_TOMB_PUZZLE_EFFECT 60
+#define FLDEFF_USE_TOMB_PUZZLE_EFFECT 60
#define FLDEFF_PCTURN_ON 61
#define FLDEFF_HALL_OF_FAME_RECORD 62
#define FLDEFF_USE_TELEPORT 63
-#define FLDEFF_64 64
+#define FLDEFF_RAYQUAZA 64
#define FLDEFF_65 65
#define FLDEFF_MOVE_DEOXYS_ROCK 66
diff --git a/include/constants/flags.h b/include/constants/flags.h
index f0759389f..f28af3278 100644
--- a/include/constants/flags.h
+++ b/include/constants/flags.h
@@ -336,24 +336,23 @@
#define FLAG_RECEIVED_AURORA_TICKET 0x13A // RECEIVED Aurora Ticket in Mystery Gift
#define FLAG_RECEIVED_MYSTIC_TICKET 0x13B // RECEIVED Mystic Ticket in Mystery Gift
#define FLAG_RECEIVED_OLD_SEA_MAP 0x13C // RECEIVED Old Sea Map in Mystery Gift
-
-#define FLAG_UNUSED_0x13D 0x13D // Unused Flag
-#define FLAG_UNUSED_0x13E 0x13E // Unused Flag
-#define FLAG_UNUSED_0x13F 0x13F // Unused Flag
-#define FLAG_UNUSED_0x140 0x140 // Unused Flag
-#define FLAG_UNUSED_0x141 0x141 // Unused Flag
-#define FLAG_UNUSED_0x142 0x142 // Unused Flag
-#define FLAG_UNUSED_0x143 0x143 // Unused Flag
-#define FLAG_UNUSED_0x144 0x144 // Unused Flag
-#define FLAG_UNUSED_0x145 0x145 // Unused Flag
-#define FLAG_UNUSED_0x146 0x146 // Unused Flag
-#define FLAG_UNUSED_0x147 0x147 // Unused Flag
-#define FLAG_UNUSED_0x148 0x148 // Unused Flag
-#define FLAG_UNUSED_0x149 0x149 // Unused Flag
-#define FLAG_UNUSED_0x14A 0x14A // Unused Flag
-#define FLAG_UNUSED_0x14B 0x14B // Unused Flag
-#define FLAG_UNUSED_0x14C 0x14C // Unused Flag
-#define FLAG_UNUSED_0x14D 0x14D // Unused Flag
+#define FLAG_UNUSED_MYSTERY_GIFT_0x13D 0x13D
+#define FLAG_UNUSED_MYSTERY_GIFT_0x13E 0x13E
+#define FLAG_UNUSED_MYSTERY_GIFT_0x13F 0x13F
+#define FLAG_UNUSED_MYSTERY_GIFT_0x140 0x140
+#define FLAG_UNUSED_MYSTERY_GIFT_0x141 0x141
+#define FLAG_UNUSED_MYSTERY_GIFT_0x142 0x142
+#define FLAG_UNUSED_MYSTERY_GIFT_0x143 0x143
+#define FLAG_UNUSED_MYSTERY_GIFT_0x144 0x144
+#define FLAG_UNUSED_MYSTERY_GIFT_0x145 0x145
+#define FLAG_UNUSED_MYSTERY_GIFT_0x146 0x146
+#define FLAG_UNUSED_MYSTERY_GIFT_0x147 0x147
+#define FLAG_UNUSED_MYSTERY_GIFT_0x148 0x148
+#define FLAG_UNUSED_MYSTERY_GIFT_0x149 0x149
+#define FLAG_UNUSED_MYSTERY_GIFT_0x14A 0x14A
+#define FLAG_UNUSED_MYSTERY_GIFT_0x14B 0x14B
+#define FLAG_UNUSED_MYSTERY_GIFT_0x14C 0x14C
+#define FLAG_UNUSED_MYSTERY_GIFT_0x14D 0x14D
#define FLAG_MIRAGE_TOWER_VISIBLE 0x14E
#define FLAG_CHOSE_CLAW_FOSSIL 0x14F // Player chose Claw Fossil
@@ -1548,7 +1547,7 @@
// Special Flags (Unknown)
#define SPECIAL_FLAGS_START 0x4000
-#define FLAG_SPECIAL_FLAG_0x4000 0x4000
+#define FLAG_HIDE_MAP_NAME_POPUP 0x4000
#define FLAG_SPECIAL_FLAG_0x4001 0x4001
#define FLAG_SPECIAL_FLAG_0x4002 0x4002
#define FLAG_SPECIAL_FLAG_0x4003 0x4003
diff --git a/include/constants/songs.h b/include/constants/songs.h
index a459edd24..3778d5f08 100644
--- a/include/constants/songs.h
+++ b/include/constants/songs.h
@@ -467,7 +467,7 @@
#define MUS_RG_UNION 539 // Union Room
#define MUS_RG_NETWORK 540 // Network Center
#define MUS_RG_OKURIMONO 541 // Mystery Gift
-#define MUS_RG_KINOMIKUI 542
+#define MUS_RG_KINOMIKUI 542 // Dodrio Berry Picking
#define MUS_RG_NANADUNGEON 543 // Sevii Caves/Altering Cave (Mt. Moon)
#define MUS_RG_OSHIE_TV 544 // Follow Me!
#define MUS_RG_NANASHIMA 545 // Sevii Islands Routes (Lake of Rage)
@@ -538,4 +538,6 @@
#define MUS_ROUTE_118 0x7FFF // map is split into 2 music sections. controlled by GetCurrLocationDefaultMusic().
+#define MUS_NONE 0xFFFF
+
#endif // GUARD_CONSTANTS_SONGS_H
diff --git a/include/constants/vars.h b/include/constants/vars.h
index c025d62fc..20524611b 100644
--- a/include/constants/vars.h
+++ b/include/constants/vars.h
@@ -60,7 +60,7 @@
#define VAR_POISON_STEP_COUNTER 0x402B
#define VAR_RESET_RTC_ENABLE 0x402C
#define VAR_ENIGMA_BERRY_AVAILABLE 0x402D
-#define VAR_UNUSED_0x402E 0x402E // Unused Var
+#define VAR_0x402E 0x402E
#define VAR_FRONTIER_MANIAC_FACILITY 0x402F
#define VAR_FRONTIER_GAMBLER_FACILITY 0x4030
@@ -74,7 +74,7 @@
#define VAR_UNUSUAL_WEATHER_LOCATION 0x4037
#define VAR_UNUSUAL_WEATHER_STEP_COUNTER 0x4038
#define VAR_SHOULD_END_UNUSUAL_WEATHER 0x4039
-#define VAR_NEVER_READ_0x403A 0x403A // Var is written to, but never checked
+#define VAR_FARAWAY_ISLAND_STEP_COUNTER 0x403A
#define VAR_REGICE_STEPS_1 0x403B
#define VAR_REGICE_STEPS_2 0x403C
#define VAR_REGICE_STEPS_3 0x403D
@@ -84,7 +84,7 @@
#define VAR_FANCLUB_UNKNOWN_1 0x4041
#define VAR_FANCLUB_UNKNOWN_2 0x4042
#define VAR_DEPT_STORE_FLOOR 0x4043
-#define VAR_0x4044 0x4044
+#define VAR_TRICK_HOUSE_LEVEL 0x4044
#define VAR_POKELOT_PRIZE_ITEM 0x4045
#define VAR_NATIONAL_DEX 0x4046
#define VAR_SEEDOT_SIZE_RECORD 0x4047
diff --git a/include/contest_effect.h b/include/contest_effect.h
index 5f48e1b8b..0474cb38c 100644
--- a/include/contest_effect.h
+++ b/include/contest_effect.h
@@ -19,6 +19,7 @@ struct ContestEffect
extern const struct ContestMove gContestMoves[];
extern const struct ContestEffect gContestEffects[];
extern const u8 *const gContestEffectDescriptionPointers[];
+extern const u8 *const gContestMoveTypeTextPointers[];
bool8 AreMovesContestCombo(u16 lastMove, u16 nextMove);
diff --git a/include/ereader_helpers.h b/include/ereader_helpers.h
new file mode 100755
index 000000000..54b36ef0f
--- /dev/null
+++ b/include/ereader_helpers.h
@@ -0,0 +1,20 @@
+#ifndef GUARD_EREADER_HELPERS_H
+#define GUARD_EREADER_HELPERS_H
+
+struct Unk81D38FC
+{
+ u8 unk0[0x270];
+ int checksum;
+};
+
+bool8 sub_81D3920(u8 *buffer);
+bool32 sub_81D3AB0(struct Unk81D38FC *arg0);
+bool32 sub_81D3B34(void);
+int sub_81D3D70(u8, u32, u32*, u32*);
+void sub_81D3F9C(void);
+void sub_81D3FAC(void);
+void sub_81D41A0(void);
+void sub_81D41F4(void);
+void sub_81D4238(void);
+
+#endif // GUARD_EREADER_HELPERS_H
diff --git a/include/ereader_screen.h b/include/ereader_screen.h
new file mode 100755
index 000000000..0e3e51c76
--- /dev/null
+++ b/include/ereader_screen.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_EREADER_SCREEN_H
+#define GUARD_EREADER_SCREEN_H
+
+void sub_81D5014(void);
+
+#endif // GUARD_EREADER_SCREEN_H
diff --git a/include/event_obj_lock.h b/include/event_obj_lock.h
index 2f09ad36a..037c0080d 100644
--- a/include/event_obj_lock.h
+++ b/include/event_obj_lock.h
@@ -8,5 +8,6 @@ void LockSelectedEventObject(void);
void sub_8098630(void);
bool8 sub_8098734(void);
void ScriptUnfreezeEventObjects(void);
+void sub_8098524(void);
#endif // GUARD_EVENT_OBJ_LOCK_H
diff --git a/include/event_scripts.h b/include/event_scripts.h
index e3ec8afb4..bf7084326 100644
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -544,9 +544,9 @@ extern const u8 EventScript_RegionMap[];
extern const u8 EventScript_RunningShoesManual[];
extern const u8 EventScript_PictureBookShelf[];
extern const u8 EventScript_BookShelf[];
-extern const u8 EventScript_PokemonCenterBookshelf[];
+extern const u8 EventScript_PokemonCenterBookShelf[];
extern const u8 EventScript_Vase[];
-extern const u8 EventScript_TrashCan[];
+extern const u8 EventScript_EmptyTrashCan[];
extern const u8 EventScript_ShopShelf[];
extern const u8 EventScript_Blueprint[];
extern const u8 EventScript_WirelessBoxResults[];
diff --git a/include/faraway_island.h b/include/faraway_island.h
new file mode 100755
index 000000000..89b4bcd08
--- /dev/null
+++ b/include/faraway_island.h
@@ -0,0 +1,10 @@
+#ifndef GUARD_FARAWAY_ISLAND_H
+#define GUARD_FARAWAY_ISLAND_H
+
+u32 sub_81D427C(void);
+bool8 sub_81D4A58(struct EventObject*);
+void UpdateFarawayIslandStepCounter(void);
+bool8 EventObjectIsFarawayIslandMew(struct EventObject *);
+bool8 IsMewPlayingHideAndSeek(void);
+
+#endif // GUARD_FARAWAY_ISLAND_H
diff --git a/include/field_screen_effect.h b/include/field_screen_effect.h
index b4429c167..a62a76b2a 100644
--- a/include/field_screen_effect.h
+++ b/include/field_screen_effect.h
@@ -5,7 +5,7 @@ void pal_fill_for_maplights(void);
void pal_fill_black(void);
void WarpFadeScreen(void);
void sub_80AF128(void);
-void sub_80AF168(void);
+void FieldCallback_ReturnToEventScript2(void);
void sub_80AF188(void);
void sub_80AF214(void);
void sub_80AF2B4(u8 taskId);
diff --git a/include/gba/types.h b/include/gba/types.h
index 3d78b5b5e..cb370c785 100644
--- a/include/gba/types.h
+++ b/include/gba/types.h
@@ -87,6 +87,29 @@ struct OamData
#define ST_OAM_H_RECTANGLE 1
#define ST_OAM_V_RECTANGLE 2
+#define ST_OAM_SIZE_0 0
+#define ST_OAM_SIZE_1 1
+#define ST_OAM_SIZE_2 2
+#define ST_OAM_SIZE_3 3
+
+#define SPRITE_SIZE_8x8 ((ST_OAM_SIZE_0 << 2) | (ST_OAM_SQUARE))
+#define SPRITE_SIZE_16x16 ((ST_OAM_SIZE_1 << 2) | (ST_OAM_SQUARE))
+#define SPRITE_SIZE_32x32 ((ST_OAM_SIZE_2 << 2) | (ST_OAM_SQUARE))
+#define SPRITE_SIZE_64x64 ((ST_OAM_SIZE_3 << 2) | (ST_OAM_SQUARE))
+
+#define SPRITE_SIZE_16x8 ((ST_OAM_SIZE_0 << 2) | (ST_OAM_H_RECTANGLE))
+#define SPRITE_SIZE_32x8 ((ST_OAM_SIZE_1 << 2) | (ST_OAM_H_RECTANGLE))
+#define SPRITE_SIZE_32x16 ((ST_OAM_SIZE_2 << 2) | (ST_OAM_H_RECTANGLE))
+#define SPRITE_SIZE_64x32 ((ST_OAM_SIZE_3 << 2) | (ST_OAM_H_RECTANGLE))
+
+#define SPRITE_SIZE_8x16 ((ST_OAM_SIZE_0 << 2) | (ST_OAM_V_RECTANGLE))
+#define SPRITE_SIZE_8x32 ((ST_OAM_SIZE_1 << 2) | (ST_OAM_V_RECTANGLE))
+#define SPRITE_SIZE_16x32 ((ST_OAM_SIZE_2 << 2) | (ST_OAM_V_RECTANGLE))
+#define SPRITE_SIZE_32x64 ((ST_OAM_SIZE_3 << 2) | (ST_OAM_V_RECTANGLE))
+
+#define SPRITE_SIZE(dim) (SPRITE_SIZE_##dim >> 2)
+#define SPRITE_SHAPE(dim) (SPRITE_SIZE_##dim & 0xFF)
+
struct BgAffineSrcData
{
s32 texX;
diff --git a/include/global.h b/include/global.h
index 1f9ac5185..0506c036e 100644
--- a/include/global.h
+++ b/include/global.h
@@ -808,6 +808,76 @@ struct SaveTrainerHill
/*0x3D6E*/ u16 tag:2; // x40, x80 = xC0
};
+struct MysteryEventStruct
+{
+ u8 unk_0_0:2;
+ u8 unk_0_2:3;
+ u8 unk_0_5:3;
+ u8 unk_1;
+};
+
+ struct MEventBuffer_3120_Sub
+{
+ u16 unk_00;
+ u8 unk_02;
+ u8 unk_03;
+ u8 unk_04[40];
+ u8 unk_2C[10][40];
+};
+
+ struct MEventBuffer_3120
+{
+ u32 crc;
+ struct MEventBuffer_3120_Sub data;
+};
+
+ struct MEventBuffer_32E0_Sub
+{
+ u16 unk_00;
+ u16 unk_02;
+ u32 unk_04;
+ u8 unk_08_0:2;
+ u8 unk_08_2:4;
+ u8 unk_08_6:2;
+ u8 unk_09;
+ u8 unk_0A[40];
+ u8 unk_32[40];
+ u8 unk_5A[4][40];
+ u8 unk_FA[40];
+ u8 unk_122[40];
+};
+
+ struct MEventBuffer_32E0
+{
+ u32 crc;
+ struct MEventBuffer_32E0_Sub data;
+};
+
+ struct MEventBuffer_3430_Sub
+{
+ u16 unk_00;
+ u16 unk_02;
+ u16 unk_04;
+ u16 unk_06;
+ u16 unk_08[2][7];
+};
+
+ struct MEventBuffer_3430
+{
+ u32 crc;
+ struct MEventBuffer_3430_Sub data;
+};
+
+ struct MEventBuffers
+{
+ /*0x000 0x322C*/ struct MEventBuffer_3120 buffer_000;
+ /*0x1c0 0x33EC*/ struct MEventBuffer_32E0 buffer_1c0;
+ /*0x310 0x353C*/ struct MEventBuffer_3430 buffer_310;
+ /*0x338 0x3564*/ u16 unk_338[4];
+ /*0x340 0x356C*/ struct MysteryEventStruct unk_340;
+ /*0x344 0x3570*/ u32 unk_344[2][5];
+}; // 0x36C 0x3598
+
struct SaveBlock1
{
/*0x00*/ struct Coords16 pos;
@@ -884,14 +954,16 @@ struct SaveBlock1
/*0x31A8*/ u8 giftRibbons[52];
/*0x31DC*/ struct Roamer roamer;
/*0x31F8*/ struct EnigmaBerry enigmaBerry;
- /*0x322C*/ u8 field_322C[1260];
+ /*0x322C*/ struct MEventBuffers unk_322C;
+ /*0x3598*/ u8 field_3598[0x180];
/*0x3718*/ u32 trainerHillTimes[4];
/*0x3728*/ struct RamScript ramScript;
/*0x3B14*/ struct RecordMixingGift recordMixingGift;
/*0x3B24*/ u8 seen2[DEX_FLAGS_NO];
/*0x3B58*/ LilycoveLady lilycoveLady;
/*0x3B98*/ struct TrainerNameRecord trainerNameRecords[20];
- /*0x3C88*/ u8 filler_3C88[0xDC];
+ /*0x3C88*/ u8 unk3C88[10][21];
+ /*0x3D5A*/ u8 filler3D5A[0xA];
/*0x3D64*/ struct SaveTrainerHill trainerHill;
/*0x3D70*/ struct WaldaPhrase waldaPhrase;
// sizeof: 0x3D88
diff --git a/include/graphics.h b/include/graphics.h
index 063f71ee5..2584e713e 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -4783,6 +4783,11 @@ extern const u32 gBattleAnimBackgroundImageMuddyWater_Pal[];
extern const u32 gBattleAnimFogTilemap[];
+extern const u32 gUsePokeblockGraph_Gfx[];
+extern const u32 gUsePokeblockGraph_Tilemap[];
+extern const u16 gUsePokeblockGraph_Pal[];
+extern const u16 gUsePokeblockNatureWin_Pal[];
+
// Berry blender
extern const u32 gBerryBlenderArrowTiles[];
extern const u32 gBerryBlenderStartTiles[];
@@ -4908,4 +4913,24 @@ extern const u16 gEasyChatCursor_Pal[];
extern const u32 gEasyChatRightWindow_Gfx[];
extern const u16 gEasyChatRightWindow_Pal[];
+// Use Pokeblock
+extern const u32 gUsePokeblockCondition_Gfx[];
+
+// Union Room Chat
+extern const u16 gUnknown_08DD4BB0[];
+extern const u16 gUnknown_08DD4BD0[];
+extern const u32 gUnknown_08DD4BF0[];
+extern const u32 gUnknown_08DD4C4C[];
+extern const u16 gLinkMiscMenu_Pal[];
+extern const u32 gLinkMiscMenu_Gfx[];
+extern const u32 gLinkMiscMenu_Tilemap[];
+
+// Use Pokeblock
+extern const u8 gPokenavConditionCancel_Gfx[];
+extern const u16 gPokenavConditionCancel_Pal[];
+
+// Berry Crush
+extern const u32 gUnknown_08DE34B8[];
+extern const u16 gUnknown_08DE3398[];
+
#endif //GUARD_GRAPHICS_H
diff --git a/include/item_icon.h b/include/item_icon.h
index b702b2045..af03473fb 100644
--- a/include/item_icon.h
+++ b/include/item_icon.h
@@ -10,7 +10,7 @@ bool8 AllocItemIconTemporaryBuffers(void);
void FreeItemIconTemporaryBuffers(void);
void CopyItemIconPicTo4x4Buffer(const void *src, void *dest);
u8 AddItemIconSprite(u16 tilesTag, u16 paletteTag, u16 itemId);
-u8 AddCustomItemIconSprite(struct SpriteTemplate *customSpriteTemplate, u16 tilesTag, u16 paletteTag, u16 itemId);
+u8 AddCustomItemIconSprite(const struct SpriteTemplate *customSpriteTemplate, u16 tilesTag, u16 paletteTag, u16 itemId);
const void *GetItemIconPicOrPalette(u16 itemId, u8 which);
#endif //GUARD_ITEM_ICON_H
diff --git a/include/learn_move.h b/include/learn_move.h
deleted file mode 100644
index 542ae6a5a..000000000
--- a/include/learn_move.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef GUARD_LEARN_MOVE_H
-#define GUARD_LEARN_MOVE_H
-
-void TeachMoveTutorMove(void);
-void ShowHideHearts(s32);
-
-#endif //GUARD_LEARN_MOVE_H
diff --git a/include/link.h b/include/link.h
index 24a834c68..719b0f067 100644
--- a/include/link.h
+++ b/include/link.h
@@ -230,14 +230,12 @@ bool8 IsLinkMaster(void);
void CB2_LinkError(void);
u8 GetSioMultiSI(void);
bool8 IsLinkConnectionEstablished(void);
-void SetSuppressLinkErrorMessage(bool8);
bool8 HasLinkErrorOccurred(void);
void ResetSerial(void);
u32 LinkMain1(u8 *shouldAdvanceLinkState, u16 *sendCmd, u16 (*recvCmds)[CMD_LENGTH]);
void LinkVSync(void);
void Timer3Intr(void);
void SerialCB(void);
-u8 GetLinkPlayerCount(void);
bool32 InUnionRoom(void);
void sub_800E0E8(void);
bool8 IsLinkTaskFinished(void);
@@ -307,7 +305,6 @@ void sub_8009FAC(void);
bool8 sub_800A4D8(u8 a0);
u8 sub_800A9D8(void);
u8 sub_800A0C8(s32, s32);
-u16 *GetSaveBlock1Field3564(void);
u8 sub_800A9A8(void);
void sub_800AD10(void);
void sub_800AB18(void);
diff --git a/include/link_rfu.h b/include/link_rfu.h
index 5b8ccd9fb..d8f374ff9 100644
--- a/include/link_rfu.h
+++ b/include/link_rfu.h
@@ -281,8 +281,13 @@ void sub_8011DE0(u32 arg0);
u8 sub_801100C(int a0);
void sub_800EF7C(void);
bool8 sub_800DE7C(struct UnkLinkRfuStruct_02022B14 *buff1, u8 *buff2, u8 idx);
+bool8 sub_800DF34(struct UnkLinkRfuStruct_02022B14 *buff1, u8 *buff2, u8 idx);
s32 sub_800E87C(u8 idx);
void sub_8011BA4(void);
void sub_8010198(void);
+bool32 sub_8011A9C(void);
+void sub_80104B0(void);
+void sub_8011A50(void);
+void sub_80110B8(u32 a0);
#endif //GUARD_LINK_RFU_H
diff --git a/include/list_menu.h b/include/list_menu.h
index ef23688d8..0a54a069a 100644
--- a/include/list_menu.h
+++ b/include/list_menu.h
@@ -4,7 +4,7 @@
#include "window.h"
#define LIST_NOTHING_CHOSEN -1
-#define LIST_B_PRESSED -2
+#define LIST_CANCEL -2
#define LIST_HEADER -3
#define LIST_NO_MULTIPLE_SCROLL 0
@@ -98,7 +98,7 @@ struct CursorStruct
extern struct ScrollArrowsTemplate gTempScrollArrowTemplate;
extern struct ListMenuTemplate gMultiuseListMenuTemplate;
-s32 DoMysteryGiftListMenu(struct WindowTemplate *windowTemplate, struct ListMenuTemplate *listMenuTemplate, u8 arg2, u16 tileNum, u16 palNum);
+s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const struct ListMenuTemplate *listMenuTemplate, u8 arg2, u16 tileNum, u16 palNum);
u8 ListMenuInit(struct ListMenuTemplate *listMenuTemplate, u16 scrollOffset, u16 selectedRow);
u8 ListMenuInitInRect(struct ListMenuTemplate *listMenuTemplate, struct ListMenuWindowRect *arg1, u16 scrollOffset, u16 selectedRow);
s32 ListMenu_ProcessInput(u8 listTaskId);
diff --git a/include/main.h b/include/main.h
index 4f9a9e61a..6c67fbe9f 100644
--- a/include/main.h
+++ b/include/main.h
@@ -42,6 +42,8 @@ struct Main
extern const u8 gGameVersion;
extern const u8 gGameLanguage;
+extern const u8 RomHeaderGameCode[4];
+extern const u8 RomHeaderSoftwareVersion;
extern u16 gKeyRepeatStartDelay;
extern bool8 gLinkTransferringData;
diff --git a/include/menu.h b/include/menu.h
index 947f97a68..b4c3cb2b5 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -31,7 +31,7 @@ u16 AddTextPrinterParameterized2(u8 windowId, u8 fontId, const u8 *str, u8 speed
void PrintPlayerNameOnWindow(u8, const u8*, u16, u16);
void DisplayItemMessageOnField(u8 taskId, const u8 *src, TaskFunc callback);
void ClearDialogWindowAndFrame(u8 windowId, bool8 copyToVram);
-void SetStandardWindowBorderStyle(u8 a0, u8 a1);
+void SetStandardWindowBorderStyle(u8 windowId, bool8 copyToVram);
void DisplayYesNoMenuDefaultYes(void);
u32 GetPlayerTextSpeed(void);
u8 GetPlayerTextSpeedDelay(void);
@@ -99,5 +99,8 @@ void sub_8199CBC(u8 bgId, u16 *dest, u8 left, u8 top, u8 width, u8 height);
u8 sub_81980F0(u8 bg, u8 xPos, u8 yPos, u8 palette, u16 baseTile);
void sub_8198314(void);
void sub_8198180(const u8 *string, u8 a2, bool8 copyToVram);
+void AddTextPrinterWithCustomSpeedForMessage(bool8 allowSkippingDelayWithButtonPress, u8 speed);
+void sub_8198C78(void);
+void PrintTextArray(u8 windowId, u8 fontId, u8 left, u8 top, u8 lineHeight, u8 itemCount, const struct MenuAction *strs);
#endif // GUARD_MENU_H
diff --git a/include/menu_specialized.h b/include/menu_specialized.h
new file mode 100644
index 000000000..d29ac5751
--- /dev/null
+++ b/include/menu_specialized.h
@@ -0,0 +1,67 @@
+#ifndef GUARD_MENU_SPECIALIZED_H
+#define GUARD_MENU_SPECIALIZED_H
+
+#include "sprite.h"
+#include "player_pc.h"
+#include "list_menu.h"
+#include "pokemon.h"
+
+struct UnknownSubStruct_81D1ED4
+{
+ u16 unk0;
+ u16 unk2;
+};
+
+struct UnknownStruct_81D1ED4
+{
+ /*0x000*/ u8 unk0[4][5];
+ /*0x014*/ struct UnknownSubStruct_81D1ED4 unk14[4][5];
+ /*0x064*/ struct UnknownSubStruct_81D1ED4 unk64[10][5];
+ /*0x12C*/ struct UnknownSubStruct_81D1ED4 unk12C[5];
+ /*0x140*/ u16 unk140[66][2];
+ /*0x248*/ u16 unk248[66][2];
+ /*0x350*/ u16 unk350;
+ /*0x352*/ u16 unk352;
+ /*0x354*/ u8 unk354;
+ /*0x355*/ u8 unk355;
+};
+
+bool8 sub_81D1C44(u8 count);
+u8 sub_81D1C84(u8 a0);
+u8 sub_81D1DC0(struct PlayerPCItemPageStruct *page);
+void sub_81D1E90(struct PlayerPCItemPageStruct *page);
+void sub_81D1EC0(void);
+void sub_81D1D04(u8 a0);
+void DrawLevelUpWindowPg1(u16 arg0, void* statStoreLocation1, void* statStoreLocation2, u8 arg3, u8 arg4, u8 arg5);
+void DrawLevelUpWindowPg2(u16 arg0, void* statStoreLocation1, u8 arg2, u8 arg3, u8 arg4);
+void sub_81D1ED4(struct UnknownStruct_81D1ED4 *a0);
+void sub_81D2108(struct UnknownStruct_81D1ED4 *arg0);
+void sub_81D20AC(struct UnknownStruct_81D1ED4 *arg0);
+void sub_81D2230(struct UnknownStruct_81D1ED4 *arg0);
+bool8 sub_81D20BC(struct UnknownStruct_81D1ED4 *arg0);
+bool32 sub_81D2074(struct UnknownStruct_81D1ED4 *a0);
+void sub_81D2754(u8 *arg0, struct UnknownSubStruct_81D1ED4 *arg1);
+void sub_81D1F84(struct UnknownStruct_81D1ED4 *arg0, struct UnknownSubStruct_81D1ED4 *arg1, struct UnknownSubStruct_81D1ED4 *arg2);
+void MoveRelearnerPrintText(u8 *str);
+bool16 MoveRelearnerRunTextPrinters(void);
+void MoveRelearnerCreateYesNoMenu(void);
+u8 LoadMoveRelearnerMovesList(const struct ListMenuItem *items, u16 numChoices);
+void InitMoveRelearnerWindows(bool8 useContextWindow);
+void GetMonLevelUpWindowStats(struct Pokemon* mon, void* statStoreLocation);
+s32 GetBoxOrPartyMonData(u16 boxId, u16 monId, s32 request, u8 *dst);
+void sub_81D2ED4(u8 *dst, u8 *nameDst, u16 boxId, u16 monId, u16 arg5, u16 arg6, bool8 arg7);
+void sub_81D2F78(struct UnknownStruct_81D1ED4 *arg0, u8 *sheen, u16 boxId, u16 monId, u16 arg5, u16 id, u16 arg7, bool8 arg8);
+void sub_81D3094(void *tilesDst, void *palDst, u16 boxId, u16 monId, u16 arg5, u16 arg6, bool8 arg7);
+bool8 sub_81D312C(s16 *var);
+bool8 sub_81D3150(s16 *var);
+bool8 sub_81D3178(struct UnknownStruct_81D1ED4 *arg0, s16 *arg1);
+bool8 sub_81D31A4(struct UnknownStruct_81D1ED4 *arg0, s16 *arg1);
+void sub_81D31D0(struct SpriteSheet *sheet, struct SpriteTemplate *template, struct SpritePalette *pal);
+void sub_81D321C(struct SpriteSheet *sheets, struct SpriteTemplate * template, struct SpritePalette *pals);
+void sub_81D32B0(struct SpriteSheet *sheet, struct SpritePalette *pal);
+void sub_81D3464(struct Sprite **sprites);
+void sub_81D3480(struct Sprite **sprites, u8 arg1, u8 arg2);
+void sub_81D3520(struct Sprite **sprites);
+void sub_81D354C(struct Sprite **sprites);
+
+#endif // GUARD_MENU_SPECIALIZED_H
diff --git a/include/mevent.h b/include/mevent.h
new file mode 100755
index 000000000..7f12f3501
--- /dev/null
+++ b/include/mevent.h
@@ -0,0 +1,63 @@
+#ifndef GUARD_MEVENT_H
+#define GUARD_MEVENT_H
+
+struct MEvent_Str_1
+{
+ u16 unk_000;
+ size_t unk_004;
+ const void * unk_008;
+};
+
+struct MEvent_Str_2
+{
+ u8 fill_00[0x40];
+};
+
+struct MEventStruct_Unk1442CC
+{
+ u32 unk_00;
+ u16 unk_04;
+ u32 unk_08;
+ u16 unk_0C;
+ u32 unk_10;
+ u16 unk_14;
+ u16 unk_16[4];
+ struct MEventBuffer_3430_Sub unk_20;
+ u8 unk_44;
+ u8 unk_45[7];
+ u8 unk_4C[4];
+ u16 unk_50[6];
+ u8 unk_5C[4];
+ u8 unk_60;
+};
+
+void sub_801AFD8(void);
+struct MEventBuffer_3120_Sub *sub_801B00C(void);
+struct MEventBuffer_32E0_Sub *sav1_get_mevent_buffer_1(void);
+struct MEventBuffer_3430_Sub *sav1_get_mevent_buffer_2(void);
+struct MysteryEventStruct *sub_801B044(void);
+u16 *sub_801B058(void);
+void sub_801B06C(void);
+bool32 sub_801B078(const struct MEventBuffer_3120_Sub *src);
+bool32 sub_801B0CC(void);
+bool32 sub_801B128(void);
+bool32 sub_801B1A4(const u8 *src);
+void sub_801B1E8(void);
+bool32 sub_801B21C(const struct MEventBuffer_32E0_Sub *data);
+bool32 sub_801B27C(void);
+bool32 sub_801B308(void);
+u16 sub_801B39C(void);
+void sub_801B3C0(struct MEventBuffer_32E0_Sub *buffer);
+bool32 sub_801B3F8(void);
+bool32 sub_801B508(const u16 *data);
+void sub_801B580(struct MEventStruct_Unk1442CC *data, bool32 a1);
+bool32 sub_801B6A0(const struct MEventStruct_Unk1442CC *data, bool32 a1);
+u32 sub_801B6EC(const u16 *a0, const struct MEventStruct_Unk1442CC *a1, void *unused);
+u32 sub_801B708(const u16 *a0, const struct MEventStruct_Unk1442CC *a1, void *unused);
+bool32 sub_801B748(const struct MEventStruct_Unk1442CC *a0, const u16 *a1);
+u16 sub_801B784(const struct MEventStruct_Unk1442CC *a0, u32 command);
+u16 mevent_081445C0(u32 command);
+void sub_801B940(void);
+bool32 sub_801B94C(u16 a0);
+
+#endif //GUARD_MEVENT_H
diff --git a/include/mevent2.h b/include/mevent2.h
new file mode 100644
index 000000000..80b1fd51b
--- /dev/null
+++ b/include/mevent2.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_MEVENT2_H
+#define GUARD_MEVENT2_H
+
+void sub_801B990(u32, u32);
+
+#endif //GUARD_MEVENT2_H
diff --git a/include/mevent_801BAAC.h b/include/mevent_801BAAC.h
new file mode 100644
index 000000000..2259d3b6d
--- /dev/null
+++ b/include/mevent_801BAAC.h
@@ -0,0 +1,16 @@
+#ifndef GUARD_MEVENT_801BAAC_H
+#define GUARD_MEVENT_801BAAC_H
+
+bool32 sub_801BAAC(struct MEventBuffer_32E0_Sub * r5, struct MEventBuffer_3430_Sub * r6);
+bool32 sub_801C6C8(const struct MEventBuffer_3120_Sub * a0);
+s32 sub_801BB74(void);
+s32 sub_801C758(void);
+s32 sub_801BDA4(bool32 flag);
+void sub_801BB48(void);
+s32 sub_801CA50(bool32 flag);
+void sub_801C72C(void);
+u32 sub_801CCD0(u16 input);
+void sub_801CC80(void);
+void sub_801CC38(void);
+
+#endif //GUARD_MEVENT_801BAAC_H
diff --git a/include/mevent_news.h b/include/mevent_news.h
new file mode 100755
index 000000000..4632edd38
--- /dev/null
+++ b/include/mevent_news.h
@@ -0,0 +1,7 @@
+#ifndef GUARD_MEVENT_NEWS_H
+#define GUARD_MEVENT_NEWS_H
+
+void sub_801DBC0(void);
+void sub_801DB68(u32 a0);
+
+#endif //GUARD_MEVENT_NEWS_H
diff --git a/include/mevent_server.h b/include/mevent_server.h
new file mode 100644
index 000000000..ca3b7091b
--- /dev/null
+++ b/include/mevent_server.h
@@ -0,0 +1,8 @@
+#ifndef GUARD_MEVENT_SERVER_H
+#define GUARD_MEVENT_SERVER_H
+
+void mevent_srv_new_wcard();
+void mevent_srv_init_wnews();
+u32 sub_801D0C4(u16 * a0);
+
+#endif //GUARD_MEVENT_SERVER_H
diff --git a/include/mevent_server_ish.h b/include/mevent_server_ish.h
new file mode 100644
index 000000000..76f5080dc
--- /dev/null
+++ b/include/mevent_server_ish.h
@@ -0,0 +1,10 @@
+#ifndef GUARD_MEVENT_SERVER_ISH_H
+#define GUARD_MEVENT_SERVER_ISH_H
+
+void sub_801D484(u32 arg);
+u32 sub_801D4A8(u16 * a0);
+void sub_801D4E4(void);
+void * sub_801D4F4(void);
+void sub_801D500(u32 a0);
+
+#endif //GUARD_MEVENT_SERVER_ISH_H
diff --git a/include/move_relearner.h b/include/move_relearner.h
new file mode 100644
index 000000000..51b476d25
--- /dev/null
+++ b/include/move_relearner.h
@@ -0,0 +1,7 @@
+#ifndef GUARD_MOVE_RELEARNER_H
+#define GUARD_MOVE_RELEARNER_H
+
+void TeachMoveRelearnerMove(void);
+void MoveRelearnerShowHideHearts(s32);
+
+#endif //GUARD_MOVE_RELEARNER_H
diff --git a/include/mystery_gift.h b/include/mystery_gift.h
new file mode 100644
index 000000000..b43fbe9a9
--- /dev/null
+++ b/include/mystery_gift.h
@@ -0,0 +1,8 @@
+#ifndef GUARD_MYSTERY_GIFT_H
+#define GUARD_MYSTERY_GIFT_H
+
+void sub_8018438(void);
+void sub_80186EC(bool8 isJapanese, bool32 usePickOkCancel);
+void sub_8018798(u32 bg);
+
+#endif //GUARD_MYSTERY_GIFT_H
diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h
index bd99fed0e..19994b77f 100755
--- a/include/pokemon_summary_screen.h
+++ b/include/pokemon_summary_screen.h
@@ -1,7 +1,10 @@
#ifndef GUARD_POKEMON_SUMMARY_SCREEN_H
#define GUARD_POKEMON_SUMMARY_SCREEN_H
+#include "main.h"
+
extern u8 gLastViewedMonIndex;
+extern const u8 *const gMoveDescriptionPointers[];
void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void));
void sub_81C4F98(u8, void(*)(void));
diff --git a/include/pokenav.h b/include/pokenav.h
index 29ccaec3e..4e1648c93 100644
--- a/include/pokenav.h
+++ b/include/pokenav.h
@@ -1,35 +1,6 @@
#ifndef GUARD_POKENAV_H
#define GUARD_POKENAV_H
-#include "player_pc.h"
-#include "list_menu.h"
-bool8 sub_81D20BC(void *arg0);
-bool8 sub_81D312C(void *arg0);
-void sub_81D1ED4(void *arg0);
-void sub_81D2108(void *arg0);
-void sub_81D20AC(void *arg0);
-void sub_81D2230(void *arg0);
-void sub_81D3464(void *arg0);
-void sub_81D3480(void *arg0, u8 arg1);
-void sub_81D2754(void *arg0, void *arg1);
-void sub_81D1F84(void *arg0, void *arg1, void *arg2);
-u8 sub_81D1C84(u8);
-u8 sub_81D1DC0(struct PlayerPCItemPageStruct *);
-void sub_81D1E90(struct PlayerPCItemPageStruct *);
-void sub_81D1EC0(void);
-void sub_81D1D04(u8);
-bool8 sub_81D1C44(u8);
-bool8 sub_81D4A58(struct EventObject*);
-void sub_81D2BF4(u8 *);
-u16 sub_81D2C3C(void);
-void sub_81D2C50(void);
-u8 sub_81D28C8(const struct ListMenuItem *items, u16 numChoices);
-void sub_81D2824(u16);
-bool8 EventObjectIsFarawayIslandMew(struct EventObject *);
-u32 sub_81D427C(void);
-void sub_81D4998(void);
-void sub_81D3640(u16 arg0, void* statStoreLocation1, void* statStoreLocation2, u8 arg3, u8 arg4, u8 arg5);
-void sub_81D3784(u16 arg0, void* statStoreLocation1, u8 arg2, u8 arg3, u8 arg4);
void CB2_InitPokeNav(void);
#endif //GUARD_POKENAV_H
diff --git a/include/rom_8011DC0.h b/include/rom_8011DC0.h
index ac9bbb5c3..ee7397320 100644
--- a/include/rom_8011DC0.h
+++ b/include/rom_8011DC0.h
@@ -1,23 +1,4 @@
#ifndef GUARD_rom_8011DC0_H
#define GUARD_rom_8011DC0_H
-// Exported type declarations
-
-// Exported RAM declarations
-
-extern u8 gUnknown_02022C2C;
-extern struct UnkLinkRfuStruct_02022B14Substruct gUnknown_02022C38;
-extern u16 gUnknown_02022C3C;
-extern u8 gUnknown_02022C3E;
-
-// Exported ROM declarations
-
-void sub_8018438(void);
-u16 mevent_081445C0(u8);
-void sub_801B990(u32, u32);
-u8 sub_8013F78(void);
-bool32 sub_802C908(u16);
-void nullsub_89(u8 taskId);
-void var_800D_set_xB(void);
-
#endif //GUARD_rom_8011DC0_H
diff --git a/include/strings.h b/include/strings.h
index 3899b63aa..1561da26d 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -9,6 +9,12 @@ extern const u8 gText_OpenLevel[];
extern const u8 gText_Mom[];
extern const u8 gText_Dad[];
+extern const u8 gText_GetsAPokeBlockQuestion[];
+extern const u8 gText_WontEatAnymore[];
+extern const u8 gText_WasEnhanced[];
+extern const u8 gText_NothingChanged[];
+extern const u8 gText_NatureSlash[];
+
extern const u8 gText_Cool[];
extern const u8 gText_Beauty[];
extern const u8 gText_Cute[];
@@ -188,6 +194,7 @@ extern const u8 gText_SeeYaDescription[];
extern const u8 gText_EggNickname[];
extern const u8 gText_Pokemon[];
+extern const u8 gText_InParty[];
extern const u8 gText_InGameClockUsable[];
// reset rtc screen texts
@@ -859,15 +866,22 @@ extern const u8 gText_Winona[];
extern const u8 gText_Phoebe[];
extern const u8 gText_Glacia[];
-extern const u8 gText_PkmnLearnedMove4[];
-extern const u8 gText_PkmnTryingToLearnMove[];
-extern const u8 gText_WhichMoveToForget2[];
-extern const u8 gText_StopTryingToTeachMove[];
-extern const u8 gText_12AndPoof[];
-extern const u8 gText_PkmnForgotMoveAndLearnedNew[];
+extern const u8 gText_MoveRelearnerPkmnLearnedMove[];
+extern const u8 gText_MoveRelearnerPkmnTryingToLearnMove[];
+extern const u8 gText_MoveRelearnerWhichMoveToForget[];
+extern const u8 gText_MoveRelearnerStopTryingToTeachMove[];
+extern const u8 gText_MoveRelearnerAndPoof[];
+extern const u8 gText_MoveRelearnerPkmnForgotMoveAndLearnedNew[];
extern const u8 gText_TeachWhichMoveToPkmn[];
-extern const u8 gText_GiveUpTeachingNewMove[];
-extern const u8 gText_TeachX[];
+extern const u8 gText_MoveRelearnerGiveUp[];
+extern const u8 gText_MoveRelearnerTeachMoveConfirm[];
+extern const u8 gText_MoveRelearnerBattleMoves[];
+extern const u8 gText_MoveRelearnerPP[];
+extern const u8 gText_MoveRelearnerPower[];
+extern const u8 gText_MoveRelearnerAccuracy[];
+extern const u8 gText_MoveRelearnerContestMovesTitle[];
+extern const u8 gText_MoveRelearnerAppeal[];
+extern const u8 gText_MoveRelearnerJam[];
extern const u8 gText_Kira[];
extern const u8 gText_Amy[];
@@ -2556,4 +2570,107 @@ extern const u8 gUnknown_0862BAC4[];
extern const u8 gUnknown_0862BACF[];
extern const u8 gUnknown_0862BADA[];
+// E-Reader
+extern const u8 gUnknown_085EDFD6[];
+extern const u8 gUnknown_085EDFF5[];
+extern const u8 gUnknown_085EE014[];
+extern const u8 gUnknown_085EE035[];
+extern const u8 gUnknown_085EE05C[];
+extern const u8 gUnknown_085EE06B[];
+extern const u8 gUnknown_085EE080[];
+extern const u8 gUnknown_085EE097[];
+extern const u8 gUnknown_085EE0A3[];
+extern const u8 gUnknown_085EE0BF[];
+extern const u8 gUnknown_085EE0DC[];
+extern const u8 gUnknown_085EE0FA[];
+extern const u8 gUnknown_085EE107[];
+extern const u8 gUnknown_085EE120[];
+extern const u8 gUnknown_085EE12D[];
+extern const u8 gUnknown_085EE14B[];
+extern const u8 gUnknown_085EE14F[];
+extern const u8 gUnknown_085EE154[];
+
+// Berry Powder Menu
+extern const u8 gText_Powder[];
+
+// Union Room Chat
+extern const u8 gText_F700JoinedChat[];
+extern const u8 gText_F700LeftChat[];
+extern const u8 gText_Hello[];
+extern const u8 gText_Pokemon2[];
+extern const u8 gText_Trade[];
+extern const u8 gText_Battle[];
+extern const u8 gText_Lets[];
+extern const u8 gText_Ok[];
+extern const u8 gText_Sorry[];
+extern const u8 gText_YayUnkF9F9[];
+extern const u8 gText_ThankYou[];
+extern const u8 gText_ByeBye[];
+
+// Mystery Gift
+extern const u8 gText_MysteryGift[];
+extern const u8 gText_PickOKCancel[];
+extern const u8 gText_PickOKExit[];
+extern const u8 gJPText_MysteryGift[];
+extern const u8 gJPText_DecideStop[];
+extern const u8 gText_WonderCards[];
+extern const u8 gText_WonderNews[];
+extern const u8 gText_Exit3[];
+extern const u8 gText_WirelessCommunication[];
+extern const u8 gText_Friend2[];
+extern const u8 gText_Cancel2[];
+extern const u8 gText_Receive[];
+extern const u8 gText_Send[];
+extern const u8 gText_Toss[];
+extern const u8 gText_VarietyOfEventsImportedWireless[];
+extern const u8 gText_WonderCardsInPossession[];
+extern const u8 gText_ReadNewsThatArrived[];
+extern const u8 gText_ReturnToTitle[];
+extern const u8 gText_WhatToDoWithCards[];
+extern const u8 gText_WhatToDoWithNews[];
+extern const u8 gText_IfThrowAwayCardEventWontHappen[];
+extern const u8 gText_OkayToDiscardNews[];
+extern const u8 gText_WonderNewsThrownAway[];
+extern const u8 gText_WonderCardThrownAway[];
+extern const u8 gText_DataWillBeSaved[];
+extern const u8 gText_SaveCompletedPressA[];
+extern const u8 gText_NothingSentOver[];
+extern const u8 gText_RecordUploadedViaWireless[];
+extern const u8 gText_WonderCardReceivedFrom[];
+extern const u8 gText_WonderCardReceived[];
+extern const u8 gText_WonderNewsReceivedFrom[];
+extern const u8 gText_WonderNewsReceived[];
+extern const u8 gText_NewStampReceived[];
+extern const u8 gText_AlreadyHadCard[];
+extern const u8 gText_AlreadyHadStamp[];
+extern const u8 gText_AlreadyHadNews[];
+extern const u8 gText_NoMoreRoomForStamps[];
+extern const u8 gText_CommunicationCanceled[];
+extern const u8 gText_CantAcceptNewsFromTrainer[];
+extern const u8 gText_CantAcceptCardFromTrainer[];
+extern const u8 gText_CommunicationError[];
+extern const u8 gText_NewTrainerReceived[];
+extern const u8 gText_RecordUploadedViaWireless[];
+extern const u8 gText_WonderCardSentTo[];
+extern const u8 gText_WonderNewsSentTo[];
+extern const u8 gText_StampSentTo[];
+extern const u8 gText_OtherTrainerHasCard[];
+extern const u8 gText_OtherTrainerHasStamp[];
+extern const u8 gText_OtherTrainerHasNews[];
+extern const u8 gText_NoMoreRoomForStamps[];
+extern const u8 gText_OtherTrainerCanceled[];
+extern const u8 gText_GiftSentTo[];
+extern const u8 gText_CantSendGiftToTrainer[];
+extern const u8 gText_DontHaveCardNewOneInput[];
+extern const u8 gText_DontHaveNewsNewOneInput[];
+extern const u8 gText_WhereShouldCardBeAccessed[];
+extern const u8 gText_WhereShouldNewsBeAccessed[];
+extern const u8 gText_Communicating[];
+extern const u8 gText_ThrowAwayWonderCard[];
+extern const u8 gText_HaventReceivedCardsGift[];
+extern const u8 gText_CommunicationCompleted[];
+extern const u8 gText_HaventReceivedGiftOkayToDiscard[];
+extern const u8 gText_SendingWonderCard[];
+extern const u8 gText_SendingWonderNews[];
+
#endif // GUARD_STRINGS_H
diff --git a/include/text.h b/include/text.h
index d8f2fd8a3..eba3d0c4e 100644
--- a/include/text.h
+++ b/include/text.h
@@ -99,6 +99,8 @@
//
#define EXT_CTRL_CODE_CLEAR 0x11
//
+#define EXT_CTRL_CODE_CLEAR_TO 0x13
+#define EXT_CTRL_CODE_MIN_LETTER_SPACING 0x14
#define EXT_CTRL_CODE_JPN 0x15
#define EXT_CTRL_CODE_ENG 0x16
diff --git a/include/title_screen.h b/include/title_screen.h
index ad0809ed2..b7100f124 100644
--- a/include/title_screen.h
+++ b/include/title_screen.h
@@ -1,7 +1,7 @@
#ifndef GUARD_TITLE_SCREEN_H
#define GUARD_TITLE_SCREEN_H
-extern const u16 gIntroWaterDropData[];
+extern const u16 gIntroWaterDropAlphaBlend[];
void CB2_InitTitleScreen(void);
diff --git a/include/union_room.h b/include/union_room.h
new file mode 100644
index 000000000..3d60e1432
--- /dev/null
+++ b/include/union_room.h
@@ -0,0 +1,178 @@
+#ifndef GUARD_UNION_ROOM_H
+#define GUARD_UNION_ROOM_H
+
+#include "librfu.h"
+
+// Exported type declarations
+
+struct UnkStruct_Shared
+{
+ struct UnkLinkRfuStruct_02022B14 field_0;
+ u8 ALIGNED(4) playerName[PLAYER_NAME_LENGTH + 1];
+};
+
+struct UnkStruct_x1C
+{
+ struct UnkStruct_Shared unk0;
+ u8 unk18:1;
+};
+
+struct UnkStruct_x20
+{
+ struct UnkStruct_Shared unk;
+ u16 field_18;
+ u8 field_1A_0:2;
+ u8 field_1A_1:1;
+ u8 field_1B;
+ u8 field_1D;
+ u8 field_1E;
+ u8 field_1F;
+};
+
+struct UnkStruct_Main0
+{
+ struct UnkStruct_x20 arr[8];
+};
+
+struct UnkStruct_Main4
+{
+ struct UnkStruct_x1C arr[5];
+};
+
+struct UnkStruct_Main8
+{
+ struct UnkStruct_x20 arr[5];
+};
+
+struct UnkStruct_Leader
+{
+ struct UnkStruct_Main0 *field_0;
+ struct UnkStruct_Main4 *field_4;
+ struct UnkStruct_Main8 *field_8;
+ u8 state;
+ u8 textState;
+ u8 field_E;
+ u8 listWindowId;
+ u8 field_10;
+ u8 field_11;
+ u8 listTaskId;
+ u8 field_13;
+ u8 field_14;
+ u8 field_15;
+ u8 field_16;
+ u8 field_17;
+ u8 field_18;
+ u8 field_19;
+ u16 field_1A;
+};
+
+struct UnkStruct_Group
+{
+ struct UnkStruct_Main0 *field_0;
+ struct UnkStruct_Main4 *field_4;
+ u8 state;
+ u8 textState;
+ u8 field_A;
+ u8 listWindowId;
+ u8 field_C;
+ u8 field_D;
+ u8 listTaskId;
+ u8 field_F;
+ u8 field_10;
+ u8 field_11;
+ u8 field_12;
+ u8 field_13;
+ u8 field_14;
+ u8 field_15;
+};
+
+struct UnkStruct_8019BA8
+{
+ u8 field_0;
+ u8 field_1;
+ u8 field_2;
+ u8 field_3;
+};
+
+struct UnkStruct_URoom
+{
+ struct UnkStruct_Main0 *field_0;
+ struct UnkStruct_Main4 *field_4;
+ struct UnkStruct_Main0 *field_8;
+ struct UnkStruct_Main4 *field_C;
+ u16 field_10;
+ u16 field_12;
+ u8 state;
+ u8 stateAfterPrint;
+ u8 textState;
+ u8 field_17;
+ u8 field_18;
+ u8 field_19;
+ u8 field_1A;
+ u8 field_1B;
+ u8 field_1C;
+ u8 field_1D;
+ u8 field_1E;
+ u8 field_1F;
+ u8 field_20;
+ u8 spriteIds[40];
+ u8 field_49;
+ u8 field_4A;
+ u16 field_4C[6];
+ u8 field_58[0x98 - 0x58];
+ u16 field_98;
+ u16 field_9A[3];
+ struct UnkStruct_8019BA8 field_A0[8];
+ u8 field_C0[12][15];
+ u8 field_174[48];
+ u8 field_1A4[200];
+};
+
+union UnkUnion_Main
+{
+ struct UnkStruct_Leader *leader;
+ struct UnkStruct_Group *group;
+ struct UnkStruct_URoom *uRoom;
+};
+
+struct TradeUnkStruct
+{
+ u16 field_0;
+ u16 type;
+ u32 playerPersonality;
+ u8 field_8;
+ u8 field_9;
+ u16 playerSpecies;
+ u16 playerLevel;
+ u16 species;
+ u16 level;
+ u16 field_12;
+ u32 personality;
+};
+
+// Exported RAM declarations
+
+extern u8 gUnknown_02022C2C;
+extern union UnkUnion_Main gUnknown_02022C30;
+extern struct UnkLinkRfuStruct_02022B14Substruct gUnknown_02022C38;
+
+extern u16 gUnknown_02022C3C;
+extern u8 gUnknown_02022C3E;
+
+// Exported ROM declarations
+
+u8 sub_8013F78(void);
+bool32 sub_802C908(u16);
+void nullsub_89(u8 taskId);
+void var_800D_set_xB(void);
+
+bool32 mevent_0814257C(u8 *textState, const u8 *str);
+void sub_8018884(const u8 *src);
+void sub_80186A4(void);
+void sub_8014EFC(u32 arg0);
+void sub_80152A8(u32 arg0);
+void sub_8014A00(u32 arg0);
+
+extern bool8 gUnknown_02022C60;
+
+#endif //GUARD_UNION_ROOM_H
diff --git a/include/union_room_chat.h b/include/union_room_chat.h
new file mode 100755
index 000000000..17e482525
--- /dev/null
+++ b/include/union_room_chat.h
@@ -0,0 +1,7 @@
+#ifndef GUARD_UNION_ROOM_CHAT_H
+#define GUARD_UNION_ROOM_CHAT_H
+
+void sub_801DD98(void);
+void copy_strings_to_sav1(void);
+
+#endif // GUARD_UNION_ROOM_CHAT_H